<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Ken Imoto — Blog</title><description>Articles on LLMO, AI development, context engineering, and harness engineering.</description><link>https://kenimoto.dev/</link><language>en</language><item><title>Codex CLI vs Claude Code: 7 Real Tasks, Same Repo, 31 Days Later</title><link>https://kenimoto.dev/blog/codex-cli-vs-claude-code-7-real-tasks-31-days/</link><guid isPermaLink="true">https://kenimoto.dev/blog/codex-cli-vs-claude-code-7-real-tasks-31-days/</guid><description>Codex CLI vs Claude Code, same monorepo, 7 tickets, 31 days. Only 4 finished cleanly on either side. Here is the split by task type, the two categories where the loser refused to lose, and the cost delta that decided which one I keep on retainer.</description><pubDate>Fri, 14 Aug 2026 00:00:00 GMT</pubDate><category>codex-cli</category><category>claude-code</category><category>ai-agents</category><category>openai</category><category>anthropic</category><category>developer-tools</category></item><item><title>GitHub Copilot Agent Mode vs Claude Code: 8 Tasks, 31 Days, Real Bills</title><link>https://kenimoto.dev/blog/github-copilot-agent-mode-vs-claude-code-8-tasks-31-days/</link><guid isPermaLink="true">https://kenimoto.dev/blog/github-copilot-agent-mode-vs-claude-code-8-tasks-31-days/</guid><description>GitHub Copilot Agent Mode vs Claude Code across 8 real tasks over 31 days. My invoice: $51 gap per month, 3.4x cost-per-PR spread, and the split isn&apos;t where the marketing says it is.</description><pubDate>Thu, 13 Aug 2026 00:00:00 GMT</pubDate><category>claude-code</category><category>github-copilot</category><category>ai-agents</category><category>benchmarks</category></item><item><title>Claude Code vs Aider on Same 10 Tasks — One Finished 8, the Other 5</title><link>https://kenimoto.dev/blog/claude-code-vs-aider-10-tasks-eight-vs-five/</link><guid isPermaLink="true">https://kenimoto.dev/blog/claude-code-vs-aider-10-tasks-eight-vs-five/</guid><description>Claude Code vs Aider on the same 10 tasks in one repo — 8 vs 5 finished, and the failures didn&apos;t overlap the way you&apos;d expect. Wall-clock, cost, and per-task pass/fail below.</description><pubDate>Wed, 12 Aug 2026 00:00:00 GMT</pubDate><category>claude-code</category><category>aider</category><category>agent-benchmark</category></item><item><title>Claude Code vs Qwen3-35B on RTX 4070: 34.6 tok/s Break-even</title><link>https://kenimoto.dev/blog/claude-code-vs-qwen3-35b-rtx-4070-benchmark/</link><guid isPermaLink="true">https://kenimoto.dev/blog/claude-code-vs-qwen3-35b-rtx-4070-benchmark/</guid><description>Claude Code vs a local Qwen3-35B-A3B on RTX 4070 ($600 street price). I ran 100 agent tasks. Break-even lands at 34.6 tok/s and 4.2 months — not where the hype says.</description><pubDate>Tue, 11 Aug 2026 00:00:00 GMT</pubDate><category>claude-code</category><category>local-llm</category><category>qwen</category><category>rtx-4070</category><category>cost</category></item><item><title>Karpathy&apos;s nanochat on a MacBook: End-to-End runcpu.sh Log from Tokenizer to Chat (2026)</title><link>https://kenimoto.dev/blog/karpathy-nanochat-macbook-runcpu-end-to-end-log/</link><guid isPermaLink="true">https://kenimoto.dev/blog/karpathy-nanochat-macbook-runcpu-end-to-end-log/</guid><description>nanochat runs the full pipeline (tokenizer → pretrain → SFT → chat) on an M-series MacBook via runs/runcpu.sh in ~40 minutes on M3 Max. Here&apos;s a stage-by-stage log of what actually happens, where it stalls, and what the tiny model can say.</description><pubDate>Thu, 06 Aug 2026 00:00:00 GMT</pubDate><category>nanochat</category><category>karpathy</category><category>llm-training</category><category>macbook</category><category>claude-code</category></item><item><title>Claude Code Has Two Authentication Layers. setup-token Is Not the Same as login.</title><link>https://kenimoto.dev/blog/claude-code-two-layer-auth-setup-token/</link><guid isPermaLink="true">https://kenimoto.dev/blog/claude-code-two-layer-auth-setup-token/</guid><description>credentials.json handles login. CLAUDE_CODE_OAUTH_TOKEN takes priority at runtime. Understanding this two-layer design changes how you manage multiple accounts across machines.</description><pubDate>Wed, 05 Aug 2026 00:00:00 GMT</pubDate><category>claude-code</category><category>authentication</category><category>ai-agent</category><category>multi-account</category></item><item><title>The Shai-Hulud npm attack: why signature verification, npm audit, and --ignore-scripts all failed</title><link>https://kenimoto.dev/blog/shai-hulud-npm-supply-chain-why-verification-failed/</link><guid isPermaLink="true">https://kenimoto.dev/blog/shai-hulud-npm-supply-chain-why-verification-failed/</guid><description>On August 4, 2026, the Shai-Hulud worm compromised 868 npm packages with 2 billion monthly installs. Every supply chain security tool passed it. Here&apos;s why, and what the attack says about the limits of verification-based defenses.</description><pubDate>Wed, 05 Aug 2026 00:00:00 GMT</pubDate><category>security</category><category>npm</category><category>supply-chain</category><category>javascript</category><category>nodejs</category></item><item><title>I stopped making Claude Code draw my diagrams and started drawing with it</title><link>https://kenimoto.dev/blog/claude-code-shared-canvas-diagramming/</link><guid isPermaLink="true">https://kenimoto.dev/blog/claude-code-shared-canvas-diagramming/</guid><description>Ask an AI for a relationship map and something plausible comes back, but you can&apos;t fix the one box you want to fix. Turning a diagram from a deliverable into a place where a human and an AI keep thinking together changed how I work with Claude Code.</description><pubDate>Tue, 04 Aug 2026 00:00:00 GMT</pubDate><category>ClaudeCode</category><category>MCP</category><category>Excalidraw</category><category>AI</category></item><item><title>Claude Code: The Operator&apos;s Field Guide</title><link>https://kenimoto.dev/blog/claude-code/</link><guid isPermaLink="true">https://kenimoto.dev/blog/claude-code/</guid><description>Two years of running Claude Code on real repos, compressed into one map. Which agent to pick, what it actually costs, how the harness behaves, and the eight failure modes I measured before I trusted any of it.</description><pubDate>Tue, 04 Aug 2026 00:00:00 GMT</pubDate><category>claude-code</category><category>ai-agents</category><category>developer-tools</category><category>pillar</category><category>guide</category><category>anthropic</category></item><item><title>llms.txt vs Claude Skills manifest: I tested 5 AI engines to see which file they actually read</title><link>https://kenimoto.dev/blog/llms-txt-vs-claude-skills-manifest-5-ai-engines/</link><guid isPermaLink="true">https://kenimoto.dev/blog/llms-txt-vs-claude-skills-manifest-5-ai-engines/</guid><description>llms.txt vs Claude Skills manifest — both are pitched as &apos;AI-readable metadata,&apos; but only 2 of 5 engines fetched the same file on the same domain. Sniffed headers, path diffs, and 3 emerging anti-patterns.</description><pubDate>Mon, 03 Aug 2026 00:00:00 GMT</pubDate><category>llmo</category><category>llms-txt</category><category>claude-skills</category><category>ai-agents</category><category>ai-crawlers</category></item><item><title>When Claude Code&apos;s Auto Mode Blocks Only Bash: Investigating the Safety Classifier Outage, Plus a Fail-Open-on-Outage Hook Design</title><link>https://kenimoto.dev/blog/claude-code-auto-mode-classifier-fail-open-hook/</link><guid isPermaLink="true">https://kenimoto.dev/blog/claude-code-auto-mode-classifier-fail-open-hook/</guid><description>A day of intermittent Bash blocks in auto mode traced back to a server-side safety classifier outage. How the fail-closed design works, the known issues, and a PreToolUse hook design that switches to local judgment only while the classifier is down.</description><pubDate>Sun, 02 Aug 2026 00:00:00 GMT</pubDate><category>claude-code</category><category>hooks</category><category>ai-agent</category><category>automation</category></item><item><title>Chat Models Are Born in the Loss Mask — Reading nanochat&apos;s SFT</title><link>https://kenimoto.dev/blog/nanochat-sft-loss-mask-where-chat-models-are-born/</link><guid isPermaLink="true">https://kenimoto.dev/blog/nanochat-sft-loss-mask-where-chat-models-are-born/</guid><description>A freshly pretrained GPT can only continue text; it cannot hold a conversation. So where does the chat model come from? Reading the SFT loss mask in Karpathy&apos;s nanochat (8,159 lines): the choice of which tokens get graded is what turns a text generator into a chat partner.</description><pubDate>Sun, 02 Aug 2026 00:00:00 GMT</pubDate><category>nanochat</category><category>karpathy</category><category>sft</category><category>llm-training</category><category>machine-learning</category></item><item><title>Five Days of Tracking 346 Aftershocks From 90 km Away — and a Rematch With the 2016 Kumamoto Earthquake</title><link>https://kenimoto.dev/blog/uto-m71-aftershock-five-days-fukuoka/</link><guid isPermaLink="true">https://kenimoto.dev/blog/uto-m71-aftershock-five-days-fukuoka/</guid><description>A M7.1 earthquake hit Kumamoto on July 28. I live in Fukuoka, 90 km away, and tracked every aftershock with a stdlib-only Python CLI: 346 events in five days, 34 of them reaching my city. Includes an Omori-Utsu decay forecast checked against reality, and a same-conditions comparison with the 2016 Kumamoto earthquake.</description><pubDate>Sat, 01 Aug 2026 00:00:00 GMT</pubDate><category>earthquake</category><category>statistics</category><category>python</category><category>forecasting</category><category>data-analysis</category></item><item><title>Karpathy nanochat: How GPT-2-Class Training Fell From $43,000 to $48 in 7 Years (2026 H100 Spot Math)</title><link>https://kenimoto.dev/blog/karpathy-nanochat-gpt-2-training-cost-43000-to-48-h100/</link><guid isPermaLink="true">https://kenimoto.dev/blog/karpathy-nanochat-gpt-2-training-cost-43000-to-48-h100/</guid><description>Karpathy&apos;s nanochat compresses the entire GPT-2 pipeline into 8,159 lines and one 79-line shell script. I traced the 2019 $43K bill to a 2026 $48 8xH100 run, and rebuilt the cost table with current spot prices for Lambda, RunPod, and Vast.ai.</description><pubDate>Fri, 31 Jul 2026 00:00:00 GMT</pubDate><category>karpathy</category><category>nanochat</category><category>gpt-2</category><category>llm-training</category><category>h100-cost</category></item><item><title>Why Earthquake Prediction Is Impossible but Aftershock Forecasting Works: Measured on 130 Noto Aftershocks</title><link>https://kenimoto.dev/blog/earthquake-prediction-vs-aftershock-forecasting/</link><guid isPermaLink="true">https://kenimoto.dev/blog/earthquake-prediction-vs-aftershock-forecasting/</guid><description>Seismology says earthquake prediction is impossible, then confidently warns about the next week of aftershocks. I implemented Gutenberg-Richter and Omori-Utsu in stdlib-only Python, fit both on 130 aftershocks of the 2024 Noto earthquake, forecast day 8, and checked the answer. Includes a live run on the ongoing Kumamoto M7.1 sequence.</description><pubDate>Wed, 29 Jul 2026 00:00:00 GMT</pubDate><category>earthquake</category><category>statistics</category><category>python</category><category>mle</category><category>forecasting</category></item><item><title>llmoframework Audit on 30 Dev Blogs: 4 of Top 5 Fail Same 3 Checks</title><link>https://kenimoto.dev/blog/llmoframework-audit-30-dev-blogs-top-5-fail-same-3-checks/</link><guid isPermaLink="true">https://kenimoto.dev/blog/llmoframework-audit-30-dev-blogs-top-5-fail-same-3-checks/</guid><description>llmoframework audit on 30 dev blogs. 4 of the top 5 by traffic fail the same 3 pillars. I ran the six-pillar checklist on senior engineer sites and recorded which pillar died first.</description><pubDate>Wed, 29 Jul 2026 00:00:00 GMT</pubDate><category>llmo</category><category>audit</category><category>dev-blog</category><category>ai-search</category><category>geo</category></item><item><title>Cursor Composer vs Claude Code: 400k-Token Repo Benchmarked</title><link>https://kenimoto.dev/blog/cursor-composer-vs-claude-code-400k-token-repo/</link><guid isPermaLink="true">https://kenimoto.dev/blog/cursor-composer-vs-claude-code-400k-token-repo/</guid><description>Cursor Composer vs Claude Code on a 400k-token monorepo refactor: completion rate, token cost, edit-diff quality. One agent lost hard on long context.</description><pubDate>Tue, 28 Jul 2026 00:00:00 GMT</pubDate><category>cursor</category><category>claude-code</category><category>ai-agents</category><category>benchmark</category><category>long-context</category></item><item><title>Karpathy Nanochat: $43K GPT-2 Training in 8,000 Lines (2026)</title><link>https://kenimoto.dev/blog/karpathy-nanochat-43k-gpt2-8000-lines/</link><guid isPermaLink="true">https://kenimoto.dev/blog/karpathy-nanochat-43k-gpt2-8000-lines/</guid><description>Karpathy&apos;s nanochat replays the 2019 $43K GPT-2 training pipeline in 8,000 lines and $48 on 8×H100. Full cost table + runcpu.sh MacBook M3 Max timings.</description><pubDate>Sun, 26 Jul 2026 00:00:00 GMT</pubDate><category>nanochat</category><category>karpathy</category><category>gpt-2</category><category>llm-training</category><category>machine-learning</category></item><item><title>PinchTab Only Shoots One Viewport: Teaching a 9.4k-Star Browser Bridge to Capture Full Pages</title><link>https://kenimoto.dev/blog/pinchtab-scroll-shot-full-page-screenshots/</link><guid isPermaLink="true">https://kenimoto.dev/blog/pinchtab-scroll-shot-full-page-screenshots/</guid><description>PinchTab is a 9.4k-star open-source browser-automation bridge (Go, MIT) I run locally to show pages to Claude — it renders SPAs and keeps a logged-in profile, but its /screenshot endpoint only captures one viewport, so long pages get read from the neck up. This walks the scroll+shot fix: drive scrollTo through /evaluate, screenshot each frame with a 200px overlap, settle for lazy-load, flush to the bottom. Plus the snapshot endpoint for text (5-13x cheaper than screenshots) and folding the whole thing into a three-mode skill. Companion to the post on where Berkeley&apos;s pixelshot silently truncates.</description><pubDate>Wed, 22 Jul 2026 00:00:00 GMT</pubDate><category>claude</category><category>playwright</category><category>chromium</category><category>automation</category><category>rag</category></item><item><title>pixelshot Read One Tile of an 18,609px Wikipedia Page: the Lazy-Load Trap Under Visual RAG</title><link>https://kenimoto.dev/blog/pixelshot-1-tile-wikipedia-lazy-load-trap/</link><guid isPermaLink="true">https://kenimoto.dev/blog/pixelshot-1-tile-wikipedia-lazy-load-trap/</guid><description>Berkeley SkyLab&apos;s PixelRAG ships pixelshot, a CLI that screenshots and tiles web pages so a vision model can read them. On a Wikipedia comparison table 18,609px tall, it detected the page height as 1,553px and returned a single tile — five runs out of five. Simon Willison&apos;s blog and OurWorldInData tiled cleanly, so pixelshot isn&apos;t broken; this page&apos;s lazy-loaded TOC and CSS overflow fool its height detection. The portable lesson: naive full-page height detection breaks on lazy-load and overflow, and scroll+shot iteration is the fallback that survives it. pixelshot still wins for PDFs and SPAs.</description><pubDate>Wed, 22 Jul 2026 00:00:00 GMT</pubDate><category>rag</category><category>vlm</category><category>claude</category><category>playwright</category><category>chromium</category></item><item><title>The Machine Accent Travels: AI Text Is Rhythmically Monotone in 70/70 Cells Across 3 Languages</title><link>https://kenimoto.dev/blog/machine-accent-3-languages-70-70-cells/</link><guid isPermaLink="true">https://kenimoto.dev/blog/machine-accent-3-languages-70-70-cells/</guid><description>Yesterday I published a paper showing Japanese AI text has flatter sentence rhythm than human text, on every model I tested. Today&apos;s follow-up: the same monotony appears in English and Portuguese, in all 70 of 70 model-by-metric cells. The English human baseline was 853 pre-ChatGPT Dev.to posts. Field notes from the fourth paper.</description><pubDate>Sat, 18 Jul 2026 00:00:00 GMT</pubDate><category>llm</category><category>ai-text-detection</category><category>stylometry</category><category>research-paper</category></item><item><title>OpenAI Codex AGENTS.md: 1M Lines Shipped, 3 Harness Lessons</title><link>https://kenimoto.dev/blog/openai-codex-agents-md-1m-lines-3-harness-lessons/</link><guid isPermaLink="true">https://kenimoto.dev/blog/openai-codex-agents-md-1m-lines-3-harness-lessons/</guid><description>OpenAI Codex shipped 1 million lines from AGENTS.md between Aug 2025 and Jan 2026. Three findings show why swapping the model fixes nothing when the harness is broken.</description><pubDate>Tue, 14 Jul 2026 00:00:00 GMT</pubDate><category>openai</category><category>codex</category><category>agents-md</category><category>harness-engineering</category></item><item><title>Article Schema Alone Didn&apos;t Make AI Recognize Me as the Author. The Entity Wiring That Did (in 4 JSON-LD Fields).</title><link>https://kenimoto.dev/blog/article-schema-alone-author-entity-4-json-ld-fields/</link><guid isPermaLink="true">https://kenimoto.dev/blog/article-schema-alone-author-entity-4-json-ld-fields/</guid><description>Article schema was on 239 pages. AI still cited kenimoto.dev, not me. The fix was 4 fields: author.@id, sameAs, knowsAbout, and Person schema on /about. Perplexity started using my name in 3 weeks.</description><pubDate>Mon, 13 Jul 2026 00:00:00 GMT</pubDate><category>llmo</category><category>json-ld</category><category>structured-data</category><category>ai-search</category><category>perplexity</category></item><item><title>I Forked OpenCut classic to Put an MCP Server on It — Four Traps I Hit Before Claude Could Drive the Video Editor</title><link>https://kenimoto.dev/blog/opencut-classic-mcp-4-traps-editor-core-fork/</link><guid isPermaLink="true">https://kenimoto.dev/blog/opencut-classic-mcp-4-traps-editor-core-fork/</guid><description>OpenCut classic exposes an EditorCore singleton on the main app boundary. Two dev-mode commits on my fork surface window.__editor and the wasm MediaTime helpers, which is enough for a Playwright + MCP server to drive the timeline from Claude Code. Here are the four traps I hit on the way: reactor-pruned empty tracks, MediaTime ticks vs seconds, a silently-rejecting AudioElement discriminated union, and an always-mounted display:none file input. opencut-mcp v0.1.0 is on GitHub.</description><pubDate>Mon, 13 Jul 2026 00:00:00 GMT</pubDate><category>mcp</category><category>opencut</category><category>playwright</category><category>video-editor</category><category>claude-code</category></item><item><title>Pre-flight your MCP: four layers to grade a server before you publish it</title><link>https://kenimoto.dev/blog/pre-flight-your-mcp-4-layers-scorecard/</link><guid isPermaLink="true">https://kenimoto.dev/blog/pre-flight-your-mcp-4-layers-scorecard/</guid><description>Every tool description and inputSchema in a registered MCP server is sent to the LLM on every turn. I published mcp-scorecard on PyPI to grade that surface across four layers: passive token footprint (tiktoken cl100k), use-case scoping (vague verbs, when-to-use triggers, overlap), security own rules (prompt injection, tool shadowing, hardcoded secrets), and name safety (case collisions, Levenshtein brand similarity, namespace hygiene). One CLI command returns an A–F grade with per-tool findings; the same layers ship as five MCP tools so an LLM can audit another MCP from inside Claude Code. This is the reasoning behind each layer and what the tool caught on the first scan of my own MCPs.</description><pubDate>Mon, 13 Jul 2026 00:00:00 GMT</pubDate><category>mcp</category><category>model-context-protocol</category><category>security</category><category>tokens</category><category>llm</category></item><item><title>The Skill Eval Repo I Didn&apos;t Build: 107 SKILL.md Files, 6 Checks, 21 False Positives</title><link>https://kenimoto.dev/blog/skill-eval-repo-not-built-107-lint/</link><guid isPermaLink="true">https://kenimoto.dev/blog/skill-eval-repo-not-built-107-lint/</guid><description>I set out to build a dedicated eval repo for Claude Code skills. After mapping prior art, I added one static-lint collector to an existing harness instead. Here is the map, the decision, and what linting 107 SKILL.md files actually caught.</description><pubDate>Sun, 12 Jul 2026 00:00:00 GMT</pubDate><category>claude-code</category><category>skills</category><category>lint</category><category>eval</category></item><item><title>Ship a product, get a support button for free: an edge-injected overlay on Cloudflare Workers</title><link>https://kenimoto.dev/blog/edge-injected-support-overlay-cloudflare-workers/</link><guid isPermaLink="true">https://kenimoto.dev/blog/edge-injected-support-overlay-cloudflare-workers/</guid><description>I wanted Ko-fi/Sponsors buttons on every mini-product under my site, without touching any product&apos;s code, and with future products getting them automatically. Here&apos;s the HTMLRewriter edge-injection + loader pattern that does it, plus the run_worker_first trap where Static Assets silently never runs your Worker at all.</description><pubDate>Sat, 11 Jul 2026 00:00:00 GMT</pubDate><category>cloudflare-workers</category><category>indie-dev</category><category>oss</category><category>monetization</category><category>edge-computing</category></item><item><title>FUNDING.yml alone won&apos;t show a Sponsor button: notes from auditing 42 repos</title><link>https://kenimoto.dev/blog/funding-yml-sponsor-button-42-repo-audit/</link><guid isPermaLink="true">https://kenimoto.dev/blog/funding-yml-sponsor-button-42-repo-audit/</guid><description>GitHub&apos;s Sponsor button is a two-layer system: FUNDING.yml plus a per-repo flag that only CLI users ever trip over. The flag doesn&apos;t exist in the REST API: GraphQL only. I audited my 42 public repos, found the button showing on just 12, and left an audit script you can run on your own account.</description><pubDate>Sat, 11 Jul 2026 00:00:00 GMT</pubDate><category>github</category><category>oss</category><category>indie-dev</category><category>graphql</category><category>github-sponsors</category></item><item><title>historymap: one YAML file becomes a corporate-style product-history timeline</title><link>https://kenimoto.dev/blog/historymap-yaml-corporate-timeline-oss/</link><guid isPermaLink="true">https://kenimoto.dev/blog/historymap-yaml-corporate-timeline-oss/</guid><description>First release in the weekly ship series. Edit data.yaml, push, and you get the kind of product-history timeline you see on industrial manufacturers&apos; sites. Self-contained single-file HTML, iframe embeds that resize themselves, and allowlist validation at the front door. Here are the design notes.</description><pubDate>Sat, 11 Jul 2026 00:00:00 GMT</pubDate><category>oss</category><category>javascript</category><category>iframe</category><category>github-pages</category><category>frontend</category></item><item><title>I Trusted Claude Code and Shipped 40% Slower: 3 Places the Speed Actually Died</title><link>https://kenimoto.dev/blog/claude-code-40-slower-3-places/</link><guid isPermaLink="true">https://kenimoto.dev/blog/claude-code-40-slower-3-places/</guid><description>A regret log with timestamps. I thought Claude Code had made me faster this sprint. The math says the opposite, and the METR 2025 study says I am not special.</description><pubDate>Mon, 06 Jul 2026 00:00:00 GMT</pubDate><category>claudecode</category><category>ai</category><category>productivity</category><category>harness</category><category>engineering</category></item><item><title>The 7-Step Test That Told Me When to Switch From RAG to GraphRAG</title><link>https://kenimoto.dev/blog/graphrag-vs-rag-7-step-switch-test/</link><guid isPermaLink="true">https://kenimoto.dev/blog/graphrag-vs-rag-7-step-switch-test/</guid><description>After three months of duct-taping Vector RAG, I finally distilled the check that separates &apos;reranker will fix this&apos; from &apos;you need a graph.&apos; Seven questions, real query shapes, and the two multi-hop benchmarks that actually matter.</description><pubDate>Sat, 04 Jul 2026 00:00:00 GMT</pubDate><category>graphrag</category><category>rag</category><category>knowledge-graph</category><category>ai-engineering</category><category>retrieval</category></item><item><title>I Ran Claude Code, Cursor, and Codex Side by Side for 31 Days. Here Is the Real Monthly Bill.</title><link>https://kenimoto.dev/blog/claude-code-cursor-codex-31-days-real-monthly-bill/</link><guid isPermaLink="true">https://kenimoto.dev/blog/claude-code-cursor-codex-31-days-real-monthly-bill/</guid><description>Three official coding agents, one dev, 31 days of receipts. The subscription tier that looked cheap on paper wasn&apos;t, the API tier that looked scary was actually predictable, and the local GPU I bought to save money made sense for exactly one thing.</description><pubDate>Fri, 03 Jul 2026 00:00:00 GMT</pubDate><category>claude-code</category><category>cursor</category><category>codex</category><category>cost</category><category>comparison</category></item><item><title>Claude Code vs Cursor: 6 Tasks, Measured Latency, and Which One I Uninstalled</title><link>https://kenimoto.dev/blog/claude-code-vs-cursor-6-tasks-uninstalled/</link><guid isPermaLink="true">https://kenimoto.dev/blog/claude-code-vs-cursor-6-tasks-uninstalled/</guid><description>I ran a head-to-head between Claude Code and Cursor across 6 daily engineering tasks, stopwatch in hand. After two weeks I uninstalled one of them. Here are the raw seconds and why.</description><pubDate>Thu, 02 Jul 2026 00:00:00 GMT</pubDate><category>claude-code</category><category>cursor</category><category>ai-coding</category><category>developer-tools</category><category>benchmark</category></item><item><title>Parallel Agents Went Negative at 340k Tokens: The Real Breakeven for Claude+Cursor+Codex</title><link>https://kenimoto.dev/blog/parallel-agents-340k-tokens-breakeven-claude-cursor-codex/</link><guid isPermaLink="true">https://kenimoto.dev/blog/parallel-agents-340k-tokens-breakeven-claude-cursor-codex/</guid><description>I ran Claude Code, Cursor Composer, and Codex CLI in parallel for a week and logged every token. The productivity math flipped from positive to negative at 340k input tokens/day. Here is where.</description><pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate><category>claude-code</category><category>multi-agent</category><category>tokens</category><category>cost</category><category>cursor</category><category>codex</category></item><item><title>RTX 4070 + One llama.cpp Flag = 2.8x Tokens/Sec (Ollama Default Is the Loser)</title><link>https://kenimoto.dev/blog/rtx-4070-cpu-moe-flag-2-8x-tokens/</link><guid isPermaLink="true">https://kenimoto.dev/blog/rtx-4070-cpu-moe-flag-2-8x-tokens/</guid><description>Ollama gave me 12.2 tok/s on a 35B MoE model and I almost bought a 4090. Then one llama.cpp flag, --cpu-moe with -ngl 99, pushed the same card to 34.6 tok/s. Here is the full sweep, the conditions, and why the obvious move was the slowest.</description><pubDate>Tue, 30 Jun 2026 00:00:00 GMT</pubDate><category>llamacpp</category><category>ollama</category><category>localllm</category><category>gpu</category></item><item><title>Your AI Code Review Burns 80% of the Context Window on Files It Never Needed</title><link>https://kenimoto.dev/blog/ai-code-review-80-percent-context-waste/</link><guid isPermaLink="true">https://kenimoto.dev/blog/ai-code-review-80-percent-context-waste/</guid><description>Most AI code reviews load the whole repo and read about a fifth of it for any given diff. A 30-minute Tree-sitter pipeline shaves the waste 8 to 49 times. Here is the measurement, the build, and the part that quietly breaks.</description><pubDate>Mon, 29 Jun 2026 00:00:00 GMT</pubDate><category>ai-code-review</category><category>knowledge-graph</category><category>tree-sitter</category><category>context-engineering</category><category>claude-code</category></item><item><title>LLMO: The Field Guide to Getting Cited by AI Search</title><link>https://kenimoto.dev/blog/llmo/</link><guid isPermaLink="true">https://kenimoto.dev/blog/llmo/</guid><description>A 30-month field study compressed into one guide. How AI crawlers find your page, why JSON-LD beats backlinks, what &apos;passage rank&apos; means in practice, and the eight things I measured before I trusted any of it.</description><pubDate>Mon, 29 Jun 2026 00:00:00 GMT</pubDate><category>llmo</category><category>ai-search</category><category>pillar</category><category>guide</category><category>perplexity</category><category>geo</category></item><item><title>I Made Claude Code Review Only the Blast Radius — Token Bill Dropped 8-49x</title><link>https://kenimoto.dev/blog/claude-code-blast-radius-review-tokens-8-49x/</link><guid isPermaLink="true">https://kenimoto.dev/blog/claude-code-blast-radius-review-tokens-8-49x/</guid><description>Stop feeding the agent your whole repo. A Tree-sitter code knowledge graph cuts review tokens 8-49x by loading only the nodes within Hop ≤ 2 of the diff. Review less, not more.</description><pubDate>Sun, 28 Jun 2026 00:00:00 GMT</pubDate><category>claude-code</category><category>code-review</category><category>knowledge-graph</category><category>tree-sitter</category><category>tokens</category></item><item><title>Anthropic Just Rewrote Their frontend-design Skill — and Named 3 AI Design Clichés (With Hex Codes)</title><link>https://kenimoto.dev/blog/anthropic-frontend-design-skill-rewrite/</link><guid isPermaLink="true">https://kenimoto.dev/blog/anthropic-frontend-design-skill-rewrite/</guid><description>Anthropic quietly shipped a +39 / -26 rewrite of their frontend-design skill on June 18. The new version contradicts the old one, names three specific AI design defaults (one with a hex code), and replaces a list of axes with a critique-loop process. Here&apos;s what changed and why it matters if you ship UI through a model.</description><pubDate>Sat, 27 Jun 2026 00:00:00 GMT</pubDate><category>anthropic</category><category>claude-code</category><category>design</category><category>frontend</category><category>ai-ui</category></item><item><title>I Ran Claude Code, Cursor, and Codex in Parallel for a Day. The Real Cost Was 412 Decisions.</title><link>https://kenimoto.dev/blog/claude-cursor-codex-parallel-decision-fatigue-400/</link><guid isPermaLink="true">https://kenimoto.dev/blog/claude-cursor-codex-parallel-decision-fatigue-400/</guid><description>Three agents in parallel sounded like 3x throughput. I taped my terminal for one workday and counted 412 accept/reject decisions. By 3pm my PR quality was visibly worse, and the dollar bill was the least interesting part.</description><pubDate>Sat, 27 Jun 2026 00:00:00 GMT</pubDate><category>claudecode</category><category>cursor</category><category>codex</category><category>harness</category><category>productivity</category></item><item><title>Measuring AI Citation Half-Life: A 90-Day Methodology With 3 Real Decay Curves</title><link>https://kenimoto.dev/blog/measuring-ai-citation-half-life-90-day-methodology/</link><guid isPermaLink="true">https://kenimoto.dev/blog/measuring-ai-citation-half-life-90-day-methodology/</guid><description>I ran a 90-day measurement protocol on three of my own pages, tracking how fast ChatGPT, Claude, and Perplexity stop citing them. Here is the procedure, the three real decay curves, and the half-life numbers I am willing to defend in public.</description><pubDate>Fri, 26 Jun 2026 00:00:00 GMT</pubDate><category>llmo</category><category>ai-search</category><category>geo</category><category>citation-decay</category><category>measurement</category><category>methodology</category></item><item><title>Multi-Agent Decision Fatigue: I Counted 412 Micro-Choices a Day. The Harness Cut It to 38.</title><link>https://kenimoto.dev/blog/multi-agent-decision-fatigue-412-to-38/</link><guid isPermaLink="true">https://kenimoto.dev/blog/multi-agent-decision-fatigue-412-to-38/</guid><description>Running Claude Code, Cursor, and Codex in parallel sounded productive until I tracked a week of decisions: 412 per day, more than half conflicting. Here is the harness layer that compressed it to 38.</description><pubDate>Thu, 25 Jun 2026 00:00:00 GMT</pubDate><category>claude-code</category><category>cursor</category><category>codex</category><category>multi-agent</category><category>harness</category><category>productivity</category></item><item><title>I Added 3 Numbers to One Paragraph. Perplexity Started Citing It in 11 Days.</title><link>https://kenimoto.dev/blog/perplexity-cited-3-numbers-11d/</link><guid isPermaLink="true">https://kenimoto.dev/blog/perplexity-cited-3-numbers-11d/</guid><description>Princeton&apos;s GEO paper claims raw statistics inside a paragraph lift AI citation rate by 115.1%. I didn&apos;t believe a single-edit benchmark would survive contact with real AI search. So I picked the worst-performing post on this site, added three numbers, and watched Perplexity for two weeks.</description><pubDate>Wed, 24 Jun 2026 00:00:00 GMT</pubDate><category>llmo</category><category>geo</category><category>ai-search</category><category>perplexity</category><category>brave-search</category></item><item><title>AI Mode Just Hit 1 Billion Users, and Opened a Local-Business LLMO Market Most Engineers Are Ignoring</title><link>https://kenimoto.dev/blog/ai-mode-billion-users-local-business-llmo/</link><guid isPermaLink="true">https://kenimoto.dev/blog/ai-mode-billion-users-local-business-llmo/</guid><description>Google AI Mode crossed a billion monthly users in May 2026. While I was polishing my own site&apos;s llms.txt, an entirely separate LLMO market for local businesses was opening up next door. Here&apos;s the size of it, and why engineers keep missing it.</description><pubDate>Tue, 23 Jun 2026 00:00:00 GMT</pubDate><category>llmo</category><category>geo</category><category>local-seo</category><category>ai-search</category><category>market</category></item><item><title>I Wired My Pages Into Topic Hubs, Not a Flat List: AI Citations Consolidated Onto 4 of Them</title><link>https://kenimoto.dev/blog/topic-hubs-ai-citations/</link><guid isPermaLink="true">https://kenimoto.dev/blog/topic-hubs-ai-citations/</guid><description>I had perfect llms.txt, perfect JSON-LD, answer-first sections, and my AI citations were still scattered across random orphan pages. The fix was not another on-page tweak. It was the structure between my pages: I hub-and-spoked my internal links, and the citations consolidated onto four hubs.</description><pubDate>Tue, 23 Jun 2026 00:00:00 GMT</pubDate><category>llmo</category><category>geo</category><category>ai-search</category><category>internal-linking</category></item><item><title>AI Search Is Under 1% of My Traffic and 12% of My Signups. That&apos;s the LLMO Case I Actually Use.</title><link>https://kenimoto.dev/blog/llmo-roi-23x-conversion/</link><guid isPermaLink="true">https://kenimoto.dev/blog/llmo-roi-23x-conversion/</guid><description>I kept deprioritizing LLMO because the traffic numbers were tiny. Then I split AI-sourced visitors out in GA4 and found they were converting at roughly 23 times my organic rate. Volume was the wrong metric the whole time.</description><pubDate>Sat, 20 Jun 2026 00:00:00 GMT</pubDate><category>llmo</category><category>geo</category><category>ai-search</category><category>conversion</category><category>roi</category></item><item><title>GEO&apos;s +115% From Statistics Is Domain-Dependent: It Worked for My Tech Posts and Did Nothing for My How-To Pages</title><link>https://kenimoto.dev/blog/geo-stats-domain-dependent/</link><guid isPermaLink="true">https://kenimoto.dev/blog/geo-stats-domain-dependent/</guid><description>The famous +115.1% citation boost from adding statistics is a single number averaged across very different content types. I went and added numbers to every page on my site, then watched which ones actually got cited. The tech posts climbed. The how-to pages didn&apos;t budge. Here&apos;s why the headline figure is a domain story, not a universal one.</description><pubDate>Fri, 19 Jun 2026 00:00:00 GMT</pubDate><category>llmo</category><category>geo</category><category>ai-search</category><category>content-strategy</category><category>citations</category></item><item><title>AI Reads Your Chunks, Not Your Page: I Promoted 9 Sections from H3 to H2 and Watched Which Ones Got Quoted</title><link>https://kenimoto.dev/blog/ai-reads-chunks-not-pages/</link><guid isPermaLink="true">https://kenimoto.dev/blog/ai-reads-chunks-not-pages/</guid><description>AI search engines don&apos;t quote your page. They quote chunks of it, and your heading hierarchy decides where those chunks get cut. I took 9 buried H3 sections, promoted them to H2, and tracked which ones started showing up in AI answers. Here&apos;s what the headings did.</description><pubDate>Thu, 18 Jun 2026 00:00:00 GMT</pubDate><category>llmo</category><category>ai-search</category><category>content-structure</category><category>chunking</category><category>headings</category></item><item><title>I Wired Claude Code to Real Hardware Over USB Serial. The MCP Tool Was the Easy Part.</title><link>https://kenimoto.dev/blog/claude-code-real-hardware-usb/</link><guid isPermaLink="true">https://kenimoto.dev/blog/claude-code-real-hardware-usb/</guid><description>Writing an MCP server that lets Claude Code drive a USB-connected microcontroller takes an afternoon. The hard part is permission design for irreversible writes and matching an LLM&apos;s second-scale latency to hardware&apos;s microsecond control loop.</description><pubDate>Wed, 17 Jun 2026 00:00:00 GMT</pubDate><category>claude-code</category><category>mcp</category><category>embedded</category><category>hardware</category><category>anthropic</category></item><item><title>I Checked What GPTBot Actually Sees on My JS-Rendered Pages. It Was an Empty `&lt;div&gt;`.</title><link>https://kenimoto.dev/blog/ai-crawlers-dont-execute-javascript-invisible-pages/</link><guid isPermaLink="true">https://kenimoto.dev/blog/ai-crawlers-dont-execute-javascript-invisible-pages/</guid><description>Googlebot renders your JavaScript. The AI crawlers don&apos;t. I fetched my own pages as GPTBot to see the gap, and the client-rendered ones came back as a blank div. Here&apos;s the test and the fix.</description><pubDate>Tue, 16 Jun 2026 00:00:00 GMT</pubDate><category>llmo</category><category>ai-search</category><category>ssr</category><category>javascript</category><category>rendering</category></item><item><title>AI Wrote 100 Passing Tests. Mutation Testing Says They Caught 58% of Real Bugs.</title><link>https://kenimoto.dev/blog/ai-100-tests-mutation-score/</link><guid isPermaLink="true">https://kenimoto.dev/blog/ai-100-tests-mutation-score/</guid><description>My AI agent generated a green test suite with 92% line coverage. Then I ran mutation testing and found it only caught 58% of injected bugs. This isn&apos;t about writing tests before or after the code. It&apos;s about tests that pass and verify almost nothing.</description><pubDate>Mon, 15 Jun 2026 00:00:00 GMT</pubDate><category>testing</category><category>mutation-testing</category><category>claude-code</category><category>ai-coding</category><category>tdd</category></item><item><title>AI Finds Your Page Three Ways. I Published the Same Fact in All Three and Timed Which Reached AI First.</title><link>https://kenimoto.dev/blog/ai-finds-your-page-three-ways/</link><guid isPermaLink="true">https://kenimoto.dev/blog/ai-finds-your-page-three-ways/</guid><description>Training data, RAG, and live agent fetch are three separate doors into AI search, and they run on completely different clocks. Here&apos;s what happened when I pushed one fact through all three and watched the lag.</description><pubDate>Sun, 14 Jun 2026 00:00:00 GMT</pubDate><category>llmo</category><category>ai-search</category><category>rag</category><category>geo</category><category>content-strategy</category></item><item><title>I Priced AI Agents Three Ways: API, Subscription, and Local. Here&apos;s Where the Break-Even Actually Sits.</title><link>https://kenimoto.dev/blog/ai-agent-monthly-cost-api-subscription-local-breakeven/</link><guid isPermaLink="true">https://kenimoto.dev/blog/ai-agent-monthly-cost-api-subscription-local-breakeven/</guid><description>Every AI agent comparison post ranks accuracy and ecosystem. None of them answer the first question your manager asks: how much per month? I ran the numbers for June 2026 across API metering, subscriptions, and a local GPU -- including the June 15 Claude Code billing change.</description><pubDate>Sat, 13 Jun 2026 00:00:00 GMT</pubDate><category>ai-agent</category><category>cost</category><category>claude-code</category><category>local-llm</category><category>pricing</category></item><item><title>My Blog Speaks 4 Languages. AI Search Cited the Wrong One to Most of My Readers.</title><link>https://kenimoto.dev/blog/ai-cites-wrong-language-version-multilingual-llmo/</link><guid isPermaLink="true">https://kenimoto.dev/blog/ai-cites-wrong-language-version-multilingual-llmo/</guid><description>I translated kenimoto.dev into EN, JA, PT and ES. Then I watched ChatGPT and Perplexity hand my Brazilian readers the English version of pages that already exist in Portuguese. Here is what hreflang, canonical and llms.txt actually do (and don&apos;t do) for AI language selection in 2026.</description><pubDate>Fri, 12 Jun 2026 00:00:00 GMT</pubDate><category>llmo</category><category>geo</category><category>multilingual</category><category>hreflang</category><category>ai-search</category></item><item><title>I Rewrote 12 Pages to Answer the Question in the First Sentence. AI Started Quoting 7 of Them.</title><link>https://kenimoto.dev/blog/answer-first-7-of-12-cited/</link><guid isPermaLink="true">https://kenimoto.dev/blog/answer-first-7-of-12-cited/</guid><description>I took 12 of my own pages, deleted the throat-clearing, and made the first sentence the actual answer. Then I watched which ones AI engines started citing. Seven moved. Five didn&apos;t. Here&apos;s what separated them.</description><pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate><category>llmo</category><category>aeo</category><category>ai-search</category><category>answer-first</category><category>measurement</category></item><item><title>I Rank #1 on Google. On Brave I&apos;m Page 5. My Own AI Agents Can&apos;t Find Me.</title><link>https://kenimoto.dev/blog/brave-invisible-to-ai-agents/</link><guid isPermaLink="true">https://kenimoto.dev/blog/brave-invisible-to-ai-agents/</guid><description>I optimized my blog for Google for years and it worked. Then I noticed my AI agents search Brave, not Google, and on Brave my best article is buried on page 5. Here is why that gap quietly makes you invisible to AI.</description><pubDate>Wed, 10 Jun 2026 00:00:00 GMT</pubDate><category>llmo</category><category>brave-search</category><category>ai-agents</category><category>seo</category><category>geo</category></item><item><title>Perplexity Citations Exploded After I Changed 3 Things. Only 1 Was Schema.</title><link>https://kenimoto.dev/blog/perplexity-3-changes-1-schema/</link><guid isPermaLink="true">https://kenimoto.dev/blog/perplexity-3-changes-1-schema/</guid><description>I made three changes to my blog and watched my Perplexity citations roughly triple over six weeks. Everyone assumes the win was structured data. It wasn&apos;t even close. Here&apos;s what actually moved the needle on one engine.</description><pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate><category>llmo</category><category>perplexity</category><category>ai-search</category><category>geo</category><category>measurement</category></item><item><title>I Gave Every Page on My Site a .md Twin. The AI Fetchers Stopped Guessing</title><link>https://kenimoto.dev/blog/every-page-md-twin-llmo/</link><guid isPermaLink="true">https://kenimoto.dev/blog/every-page-md-twin-llmo/</guid><description>llms.txt is one summary file at your root, and Google just called it the new keywords meta tag. So I went the other way: a Markdown twin for every page, served as text/markdown. Here&apos;s the Astro code and what actually changed.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate><category>llmo</category><category>llms-txt</category><category>astro</category><category>ai-search</category><category>markdown</category><category>web-development</category></item><item><title>My Best Page Went Stale in a Month: Why AI Search Rewards Freshness, Not Just Schema</title><link>https://kenimoto.dev/blog/ai-search-rewards-freshness/</link><guid isPermaLink="true">https://kenimoto.dev/blog/ai-search-rewards-freshness/</guid><description>I shipped clean JSON-LD and a tidy llms.txt, then watched my top-cited page lose more than half its AI citations in about a month. Freshness is a ranking input, not a one-time setup. Here is what actually moved the needle, and why changing the date alone made it worse.</description><pubDate>Sun, 07 Jun 2026 00:00:00 GMT</pubDate><category>llmo</category><category>ai-search</category><category>geo</category><category>content-freshness</category><category>citation</category></item><item><title>AI Search Splits Your One Question Into Six. My Pages Answered None of Them.</title><link>https://kenimoto.dev/blog/query-fanout-ai-citations/</link><guid isPermaLink="true">https://kenimoto.dev/blog/query-fanout-ai-citations/</guid><description>Query fan-out means an AI breaks a single question into a handful of sub-queries before it answers. Pages that rank for those sub-queries get cited 161% more often. Here is how I rebuilt my sections to actually answer them.</description><pubDate>Sat, 06 Jun 2026 00:00:00 GMT</pubDate><category>llmo</category><category>geo</category><category>ai-search</category><category>content-design</category></item><item><title>I Stopped Adding Context to My Agent and Pruned Tool Outputs Instead — My 3-Hour Task Stopped Forgetting Its Own Plan</title><link>https://kenimoto.dev/blog/stopped-adding-context-pruned-tool-outputs-accuracy-returned/</link><guid isPermaLink="true">https://kenimoto.dev/blog/stopped-adding-context-pruned-tool-outputs-accuracy-returned/</guid><description>I always believed more context made an agent smarter. Then a 3-hour migration task forgot a design rule it had set for itself in hour one. I pruned raw tool outputs and stale turns, dropped from 140K to 84K tokens, and the plan held to the end. This is about what not to put in.</description><pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate><category>context-engineering</category><category>claude-code</category><category>llm</category><category>ai-agents</category></item><item><title>AI Citations Have a Half-Life. I Tracked Mine for 9 Weeks and Watched Them Decay.</title><link>https://kenimoto.dev/blog/ai-citations-half-life-decay/</link><guid isPermaLink="true">https://kenimoto.dev/blog/ai-citations-half-life-decay/</guid><description>I logged my blog&apos;s AI citations every week for two months. They peaked around week three, then fell by more than half. Google search traffic never moved. SEO and AI citation run on two different clocks.</description><pubDate>Thu, 04 Jun 2026 00:00:00 GMT</pubDate><category>llmo</category><category>ai-search</category><category>geo</category><category>citation-decay</category><category>measurement</category></item><item><title>I Mapped My Codebase as a Graph. The File That Broke Was Two Hops Away.</title><link>https://kenimoto.dev/blog/codebase-graph-two-hops/</link><guid isPermaLink="true">https://kenimoto.dev/blog/codebase-graph-two-hops/</guid><description>A one-line change sailed through local CI and then took down auth in production. The file that actually broke was two hops away in the call graph — somewhere grep never pointed me. Here&apos;s what a Tree-sitter dependency graph caught that my eyes didn&apos;t.</description><pubDate>Wed, 03 Jun 2026 00:00:00 GMT</pubDate><category>tree-sitter</category><category>code-graph</category><category>static-analysis</category><category>developer-tools</category><category>refactoring</category></item><item><title>Link-less Brand Mentions Beat Backlinks for AI Visibility — I Read the Ahrefs 75,000-Brand Study So You Don&apos;t Have To</title><link>https://kenimoto.dev/blog/mentions-beat-backlinks-ai/</link><guid isPermaLink="true">https://kenimoto.dev/blog/mentions-beat-backlinks-ai/</guid><description>Ahrefs studied 75,000 brands and found unlinked web mentions correlate with AI visibility at 0.664 — three times stronger than backlinks at 0.218. I&apos;ve spent this whole blog on on-page LLMO. Today I argue the off-page side that nobody optimizes.</description><pubDate>Tue, 02 Jun 2026 00:00:00 GMT</pubDate><category>LLMO</category><category>GEO</category><category>AEO</category><category>AI search</category></item><item><title>Your Page Rank Is Invisible to AI — Only Your Passages Get Cited</title><link>https://kenimoto.dev/blog/passage-rank-beats-page-rank-ai-citations/</link><guid isPermaLink="true">https://kenimoto.dev/blog/passage-rank-beats-page-rank-ai-citations/</guid><description>AI search doesn&apos;t cite pages, it cites passages. Here&apos;s how I rewrote my own posts as snappable, citation-ready passages — and the four-layer structure I now use for every article.</description><pubDate>Mon, 01 Jun 2026 00:00:00 GMT</pubDate><category>LLMO</category><category>GEO</category><category>AEO</category><category>AI search</category></item><item><title>I Crosspost to 4 Platforms with rel=canonical Pointing Home. AI Search Still Picks the Copy.</title><link>https://kenimoto.dev/blog/crosspost-canonical-ai-picks-the-copy/</link><guid isPermaLink="true">https://kenimoto.dev/blog/crosspost-canonical-ai-picks-the-copy/</guid><description>I set up textbook canonical hygiene: one canonical on kenimoto.dev, copies on Dev.to, Zenn, Qiita, and TabNews, all pointing home. Then I checked which URL AI search actually surfaces. It is not the one I told it to.</description><pubDate>Sun, 31 May 2026 00:00:00 GMT</pubDate><category>llmo</category><category>canonical</category><category>crossposting</category><category>ai-search</category><category>geo</category></item><item><title>Claude Code Skills Cost Tokens Even When They Don&apos;t Fire. I Measured 5 Skills Across 7 Hours. The Bill Was 18%.</title><link>https://kenimoto.dev/blog/skills-loaded-3-never-fired-18/</link><guid isPermaLink="true">https://kenimoto.dev/blog/skills-loaded-3-never-fired-18/</guid><description>Five Skills loaded into one Claude Code session. Three never matched a single prompt. They still ate 18% of my tokens. Here&apos;s the measurement, the receipt, and the audit that brought it back to 7%.</description><pubDate>Sat, 30 May 2026 00:00:00 GMT</pubDate><category>claude-code</category><category>anthropic</category><category>skills</category><category>tokens</category><category>cost-optimization</category></item><item><title>I Cron-Scheduled 7 AI Agents. 2 Silently Failed for 18 Days. Tracing Wouldn&apos;t Have Caught It.</title><link>https://kenimoto.dev/blog/seven-cron-agents-18d-silent/</link><guid isPermaLink="true">https://kenimoto.dev/blog/seven-cron-agents-18d-silent/</guid><description>Seven agents on cron, two never ran from day one, eighteen days of green dashboards. Tracing didn&apos;t catch it. An exit-code contract plus a 24-hour heartbeat did.</description><pubDate>Thu, 28 May 2026 00:00:00 GMT</pubDate><category>claudecode</category><category>ai</category><category>cron</category><category>harness</category><category>devops</category></item><item><title>I Ran 3 Claude Code Sessions in Parallel for 8 Hours. They Overwrote Each Other&apos;s Context Twice.</title><link>https://kenimoto.dev/blog/three-claude-sessions-parallel-8h-context-overwrite/</link><guid isPermaLink="true">https://kenimoto.dev/blog/three-claude-sessions-parallel-8h-context-overwrite/</guid><description>Three Claude Code sessions, three worktrees, one shared .claude/. Eight hours later: two corrupted memory files and $47 of token spend re-doing existing work.</description><pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate><category>claudecode</category><category>ai</category><category>harness</category><category>productivity</category></item><item><title>I Asked 5 AI Search Engines to Cite My Own Blog. Only 3 of 31 Articles Showed Up.</title><link>https://kenimoto.dev/blog/five-ai-engines-cite-my-blog-three-of-thirty-one/</link><guid isPermaLink="true">https://kenimoto.dev/blog/five-ai-engines-cite-my-blog-three-of-thirty-one/</guid><description>I run a blog with 31 English articles. I asked ChatGPT, Claude, Gemini, Perplexity, and Brave AI to cite it. Three articles did all the work.</description><pubDate>Tue, 26 May 2026 00:00:00 GMT</pubDate><category>llmo</category><category>ai-search</category><category>geo</category><category>measurement</category><category>blog-analytics</category></item><item><title>I Added 11 JSON-LD Schemas. Three Months Later, Only 3 Showed Up in AI Citations.</title><link>https://kenimoto.dev/blog/11-json-ld-3-cited-by-ai/</link><guid isPermaLink="true">https://kenimoto.dev/blog/11-json-ld-3-cited-by-ai/</guid><description>Three months ago I bundled 11 JSON-LD schemas into my site&apos;s head. I measured every AI citation since. Eight of those schemas were dead weight. Here&apos;s which three actually carried the freight, and why the other eight didn&apos;t.</description><pubDate>Mon, 25 May 2026 00:00:00 GMT</pubDate><category>llmo</category><category>json-ld</category><category>schema-org</category><category>ai-search</category><category>geo</category></item><item><title>I Refactored 100 Functions With Claude. 7 Got Slower in Production.</title><link>https://kenimoto.dev/blog/claude-refactor-100-functions-7-slower-production/</link><guid isPermaLink="true">https://kenimoto.dev/blog/claude-refactor-100-functions-7-slower-production/</guid><description>Claude Code refactored 100 functions in my codebase. CI was green. Two weeks later, production was 14% slower in seven spots. Here is what the slow seven had in common, and the four checks I now run before merging any AI refactor.</description><pubDate>Sun, 24 May 2026 00:00:00 GMT</pubDate><category>claudecode</category><category>refactoring</category><category>performance</category><category>ai</category></item><item><title>I Told Claude Code to Do TDD. It Wrote the Test AFTER the Code 6 Out of 10 Times.</title><link>https://kenimoto.dev/blog/claude-code-tdd-test-after-code-six-of-ten/</link><guid isPermaLink="true">https://kenimoto.dev/blog/claude-code-tdd-test-after-code-six-of-ten/</guid><description>My CLAUDE.md said `## TDD First`. Claude read it carefully and then carefully ignored it 6 times out of 10. Here is the 30-day git log audit, the reason next-token prediction defaults to implementation-first, and the prompt + hook combo that finally got Claude into a red-green-refactor loop.</description><pubDate>Sat, 23 May 2026 00:00:00 GMT</pubDate><category>claude-code</category><category>tdd</category><category>prompt-engineering</category><category>ai-coding</category><category>hooks</category></item><item><title>I Added a 4th Agent That Audits My Other Agents. It Caught My Strategist Procrastinating for 3 Weeks.</title><link>https://kenimoto.dev/blog/evolver-fourth-agent-caught-strategist-procrastinating/</link><guid isPermaLink="true">https://kenimoto.dev/blog/evolver-fourth-agent-caught-strategist-procrastinating/</guid><description>Observer / Strategist / Marketer were following the rules. My Strategist had been writing &apos;we will evaluate next week&apos; for three weeks straight, and none of the three layers could catch it. The 4th layer caught it on its first run.</description><pubDate>Fri, 22 May 2026 00:00:00 GMT</pubDate><category>harness-engineering</category><category>ai-agent</category><category>claude-code</category><category>self-evolving</category><category>multi-agent</category></item><item><title>I Translated My Blog Into 4 Languages. Portuguese Got Nearly 4× the Traffic of English.</title><link>https://kenimoto.dev/blog/four-languages-thirty-days-portuguese-four-x-traffic/</link><guid isPermaLink="true">https://kenimoto.dev/blog/four-languages-thirty-days-portuguese-four-x-traffic/</guid><description>Over 22 days, PT got 748 pageviews. EN got 195. JA got 27. ES got 7. I shipped 4 languages thinking ES would dominate. Here&apos;s what actually happened, and what it taught me about multi-language LLMO.</description><pubDate>Thu, 21 May 2026 00:00:00 GMT</pubDate><category>llmo</category><category>multi-language</category><category>ga4</category><category>build-in-public</category><category>tabnews</category></item><item><title>TRM&apos;s 8,337% LLMO Playbook on Indie Sites: Only 1 of 4 Pillars Worked</title><link>https://kenimoto.dev/blog/trm-8337-percent-llmo-pillars-indie-test/</link><guid isPermaLink="true">https://kenimoto.dev/blog/trm-8337-percent-llmo-pillars-indie-test/</guid><description>The Rank Masters published a 90-day case study with an 8,337% ChatGPT-referral lift and four LLMO pillars. I copied the playbook onto three indie sites for 90 days. Three of the four pillars produced flat lines. The one that moved was not the one I expected.</description><pubDate>Wed, 20 May 2026 00:00:00 GMT</pubDate><category>llmo</category><category>geo</category><category>ai-search</category><category>case-study</category><category>indie</category></item><item><title>Claude Said &apos;You&apos;re Absolutely Right!&apos; 47 Times Last Week. I Was Only Right 11 Times. Claude Was Wrong 36.</title><link>https://kenimoto.dev/blog/claude-sycophancy-47-times-measured/</link><guid isPermaLink="true">https://kenimoto.dev/blog/claude-sycophancy-47-times-measured/</guid><description>I grepped seven days of Claude Code sessions for every &apos;you&apos;re absolutely right&apos;. Got 47 hits. Reviewed each one. I was actually right in 11 of them. Claude was wrong in 36 of them. Sycophancy, measured.</description><pubDate>Tue, 19 May 2026 00:00:00 GMT</pubDate><category>claude</category><category>sycophancy</category><category>claude-code</category><category>llm-behavior</category><category>ai</category></item><item><title>I Plugged the Same Site Into 7 AI-Citation Trackers. They Reported 7 Different Numbers.</title><link>https://kenimoto.dev/blog/seven-ai-citation-trackers-seven-different-numbers/</link><guid isPermaLink="true">https://kenimoto.dev/blog/seven-ai-citation-trackers-seven-different-numbers/</guid><description>I gave kenimoto.dev to seven AI citation tracking platforms over 15 days. The smallest number was 38. The biggest was 312. Same site, same window, same brand. Here is why the spread happens, and which tracker I would actually pay for.</description><pubDate>Mon, 18 May 2026 00:00:00 GMT</pubDate><category>llmo</category><category>geo</category><category>ai-citations</category><category>seo</category><category>measurement</category></item><item><title>The 5 AI Crawlers That Hit My Sites Most in 30 Days — What Their Logs Told Me About LLMO</title><link>https://kenimoto.dev/blog/five-ai-crawlers-hit-my-site-30-days/</link><guid isPermaLink="true">https://kenimoto.dev/blog/five-ai-crawlers-hit-my-site-30-days/</guid><description>I thought robots.txt was the boundary. Then I started reading my server logs. Thirty days, three sites, 14,300 AI crawler hits. Here&apos;s what the User-Agent column actually told me about LLMO visibility.</description><pubDate>Sun, 17 May 2026 00:00:00 GMT</pubDate><category>llmo</category><category>ai-search</category><category>server-logs</category><category>crawlers</category><category>cloudflare</category></item><item><title>I Plugged Claude into a Chaos Engineering MCP Server. It Killed Staging 4 Times Before Finding a Bug We&apos;d Missed for 6 Months.</title><link>https://kenimoto.dev/blog/claude-chaos-engineering-mcp-killed-staging-4-times/</link><guid isPermaLink="true">https://kenimoto.dev/blog/claude-chaos-engineering-mcp-killed-staging-4-times/</guid><description>Steadybit shipped the industry&apos;s first chaos engineering MCP server in mid-2025. I plugged Claude Code into it and asked for resilience experiments on payment-service. Claude proposed 4 of them. Three came back green. The fourth took staging down completely, and surfaced a real production bug we&apos;d been missing for half a year. Here&apos;s the run, the bug, and the 3 guardrails I now require before letting any AI design chaos experiments.</description><pubDate>Sat, 16 May 2026 00:00:00 GMT</pubDate><category>chaos-engineering</category><category>claude-code</category><category>mcp</category><category>sre</category><category>ai-coding</category></item><item><title>I Caught Claude Hiding My Bug 3 Times in a Row. Then I Turned 10 Debugging Habits Into Prompts.</title><link>https://kenimoto.dev/blog/claude-hid-my-bug-three-times-ten-debugging-prompts/</link><guid isPermaLink="true">https://kenimoto.dev/blog/claude-hid-my-bug-three-times-ten-debugging-prompts/</guid><description>I asked Claude to fix a 500 error. First attempt: try-catch. Second: default return value. Third: retry. The 500 stopped. Two hours later, the same incident hit a different endpoint. The root cause was connection pool exhaustion. Claude was not fixing the bug. It was hiding it. Here are the 10 debugging habits I turned into prompts so it can&apos;t do that anymore.</description><pubDate>Fri, 15 May 2026 00:00:00 GMT</pubDate><category>claude-code</category><category>debugging</category><category>prompt-engineering</category><category>ai-coding</category><category>hooks</category></item><item><title>I Gave My Strategist Agent WebSearch. 5 Topics Took 20 Minutes. Splitting It Into 3 Made It 3.</title><link>https://kenimoto.dev/blog/three-role-separation-observer-strategist-marketer/</link><guid isPermaLink="true">https://kenimoto.dev/blog/three-role-separation-observer-strategist-marketer/</guid><description>I had one agent doing observation, strategy, and execution. Picking 5 topics took 20 minutes and burned 120k tokens. Splitting it into Observer / Strategist / Marketer dropped it to 3 minutes and cut tokens by 60%. The architecture, the allow-list per role, and why WebSearch in the judgment loop is a trap.</description><pubDate>Thu, 14 May 2026 00:00:00 GMT</pubDate><category>claude-code</category><category>agents</category><category>cron</category><category>harness-engineering</category><category>multi-agent</category></item><item><title>I Benchmarked 5 Voice AI Stacks. Only 2 Stayed Under 300ms.</title><link>https://kenimoto.dev/blog/five-voice-ai-stacks-only-two-under-300ms/</link><guid isPermaLink="true">https://kenimoto.dev/blog/five-voice-ai-stacks-only-two-under-300ms/</guid><description>I kept reading that voice agents respond under 300ms. I measured 5 stacks against the same 1-minute conversation. Three of them missed the cliff entirely. Here is the P95 latency table for May 2026.</description><pubDate>Wed, 13 May 2026 00:00:00 GMT</pubDate><category>voice-ai</category><category>latency</category><category>realtime-api</category><category>webrtc</category><category>benchmarks</category></item><item><title>3 Claude Code Sub-agents Reviewed One PR — They Disagreed on 40%</title><link>https://kenimoto.dev/blog/three-sub-agents-reviewed-same-pr-40-percent-disagreement/</link><guid isPermaLink="true">https://kenimoto.dev/blog/three-sub-agents-reviewed-same-pr-40-percent-disagreement/</guid><description>Three Claude Code sub-agents, one 500-line PR, 41% disagreement, and one hour spent figuring out which findings to keep. Brooks&apos;s Law is alive in 2026.</description><pubDate>Tue, 12 May 2026 00:00:00 GMT</pubDate><category>claude-code</category><category>sub-agents</category><category>code-review</category><category>agents</category></item><item><title>I Audited 30 llms.txt Files in the Wild. 5 Anti-Patterns Are Already Forming.</title><link>https://kenimoto.dev/blog/30-llms-txt-files-5-anti-patterns-already-forming/</link><guid isPermaLink="true">https://kenimoto.dev/blog/30-llms-txt-files-5-anti-patterns-already-forming/</guid><description>I shipped my third llms.txt this month and felt productive. Then I opened 30 production llms.txt files from companies like Stripe, Vercel, and Anthropic. Most of them are already broken in the same five ways.</description><pubDate>Mon, 11 May 2026 00:00:00 GMT</pubDate><category>llmo</category><category>llms-txt</category><category>ai-search</category><category>anti-patterns</category><category>audit</category></item><item><title>OpenClaw Hit 250K Stars Faster Than React. I Spent a Day Switching From Claude Code</title><link>https://kenimoto.dev/blog/openclaw-vs-claude-code-24h/</link><guid isPermaLink="true">https://kenimoto.dev/blog/openclaw-vs-claude-code-24h/</guid><description>OpenClaw passed 250K GitHub stars in 60 days. I spent 24 hours moving my dev setup off Claude Code to find out what actually breaks. SOUL.md, Gateway, ClawHub, and a quiet 3pm where I almost gave up.</description><pubDate>Sun, 10 May 2026 00:00:00 GMT</pubDate><category>ai</category><category>openclaw</category><category>claudecode</category><category>agents</category></item><item><title>I Refused to Write Specs Until Claude Code Generated Wrong Code Three Times</title><link>https://kenimoto.dev/blog/spec-driven-development-claude-code-three-failures/</link><guid isPermaLink="true">https://kenimoto.dev/blog/spec-driven-development-claude-code-three-failures/</guid><description>I called spec-driven development &apos;overhead&apos; for six months. Then Claude Code wrote a discount feature that applied coupons to itself, three times in a row. Here is what fifteen minutes of OpenAPI bought me.</description><pubDate>Sat, 09 May 2026 00:00:00 GMT</pubDate><category>ai</category><category>claudecode</category><category>spec</category><category>openapi</category></item><item><title>I Let My Claude Code Agent Run for 24 Hours. The $400 Bill Was the Least Scary Part.</title><link>https://kenimoto.dev/blog/autonomous-agent-24-hours-security-lessons/</link><guid isPermaLink="true">https://kenimoto.dev/blog/autonomous-agent-24-hours-security-lessons/</guid><description>I read &apos;autonomous AI agents&apos; and turned off every permission prompt for a day. Here is the OWASP Agentic Top 10 lesson plan I got back, written in incident reports instead of bullet points.</description><pubDate>Fri, 08 May 2026 00:00:00 GMT</pubDate><category>ai</category><category>agents</category><category>security</category><category>claudecode</category></item><item><title>The og:type Bug Three of My Astro Sites Quietly Shipped</title><link>https://kenimoto.dev/blog/og-type-double-emit-three-astro-sites/</link><guid isPermaLink="true">https://kenimoto.dev/blog/og-type-double-emit-three-astro-sites/</guid><description>I run four Astro sites. Three of them shipped the same SEO bug for months — every blog post told Twitter, Facebook, and LinkedIn it was a website, not an article. Here is what happened, why I did not catch it sooner, and the build-time check that would have caught it on day one.</description><pubDate>Fri, 08 May 2026 00:00:00 GMT</pubDate><category>astro</category><category>seo</category><category>webdev</category><category>ai</category></item><item><title>I Stacked 4 More Context Layers on Top of RAG. The Improvement Was 12%.</title><link>https://kenimoto.dev/blog/full-context-engineering-rag-80-percent/</link><guid isPermaLink="true">https://kenimoto.dev/blog/full-context-engineering-rag-80-percent/</guid><description>I read about Full Context Engineering and immediately added structured output, hierarchical layout, role definition, and few-shot examples to my RAG pipeline. Sonnet got 12% better. Haiku got 14% worse. Here is what the numbers actually mean for your AI architecture in 2026.</description><pubDate>Thu, 07 May 2026 00:00:00 GMT</pubDate><category>context-engineering</category><category>rag</category><category>llm</category><category>ai-architecture</category></item><item><title>Natural-Language Agent Harnesses (arXiv 2603.25723): 4 Concrete Patterns from Reading the Paper Twice</title><link>https://kenimoto.dev/blog/natural-language-agent-harnesses-arxiv/</link><guid isPermaLink="true">https://kenimoto.dev/blog/natural-language-agent-harnesses-arxiv/</guid><description>Natural-Language Agent Harnesses (arXiv 2603.25723) — I read the paper twice and extracted 4 concrete harness patterns you can copy into CLAUDE.md today, plus 3 anti-patterns the paper does not explicitly name but implies.</description><pubDate>Wed, 06 May 2026 00:00:00 GMT</pubDate><category>ai</category><category>claudecode</category><category>harness</category><category>agents</category><category>harness-engineering</category></item><item><title>Claude Code Skills: The Reusable Workflow That Replaced My Commands</title><link>https://kenimoto.dev/blog/claude-code-skills-reusable-workflow-pattern/</link><guid isPermaLink="true">https://kenimoto.dev/blog/claude-code-skills-reusable-workflow-pattern/</guid><description>I copy-pasted the same prompt 47 times last month before noticing Claude Code already had Skills. Here&apos;s the frontmatter that matters and the migration path.</description><pubDate>Tue, 05 May 2026 00:00:00 GMT</pubDate><category>claude-code</category><category>anthropic</category><category>ai-agents</category><category>developer-tools</category><category>skills</category></item><item><title>Your New Domain&apos;s First Week of GA4 Is a Lie: 4 Days of Raw Data from kaoriq.com&apos;s Launch</title><link>https://kenimoto.dev/blog/new-domain-first-week-ga4-is-a-lie/</link><guid isPermaLink="true">https://kenimoto.dev/blog/new-domain-first-week-ga4-is-a-lie/</guid><description>Four days after registering a new domain, GA4 showed 65 PV / 34 users across 9 countries. Before celebrating, I beat the data with 5 signals. What survived: a handful of humans, and a tireless army of crawlers.</description><pubDate>Tue, 05 May 2026 00:00:00 GMT</pubDate><category>ga4</category><category>analytics</category><category>llmo</category><category>build-in-public</category><category>bot-traffic</category></item><item><title>ChatGPT Codex vs Claude Code: 6 Agent Tasks, $297 API Bill, Which One I Kept in 2026</title><link>https://kenimoto.dev/blog/claude-code-vs-chatgpt-codex-official-agents/</link><guid isPermaLink="true">https://kenimoto.dev/blog/claude-code-vs-chatgpt-codex-official-agents/</guid><description>ChatGPT Codex vs Claude Code — I ran 6 real agent tasks (refactor, test-gen, PR review, migration, doc-sync, incident) side by side for 30 days, spent $297 on API, and here is which agent I kept as my default in 2026 and why.</description><pubDate>Mon, 04 May 2026 00:00:00 GMT</pubDate><category>claude-code</category><category>chatgpt-codex</category><category>ai-agents</category><category>developer-tools</category><category>anthropic</category><category>openai</category></item><item><title>One Question, Five AI Search Engines, Five Different Answers</title><link>https://kenimoto.dev/blog/five-ai-search-engines-architecture-llmo/</link><guid isPermaLink="true">https://kenimoto.dev/blog/five-ai-search-engines-architecture-llmo/</guid><description>I asked five AI search engines the same question. The answers were all different. Here&apos;s how each platform decides what gets cited, and what you can do about it.</description><pubDate>Sun, 03 May 2026 00:00:00 GMT</pubDate><category>llmo</category><category>ai-search</category><category>seo</category><category>architecture</category><category>content-strategy</category></item><item><title>Is AI Actually Citing Your Site? How to Measure What Google Rankings Can&apos;t</title><link>https://kenimoto.dev/blog/measure-ai-citations-llmo-kpi/</link><guid isPermaLink="true">https://kenimoto.dev/blog/measure-ai-citations-llmo-kpi/</guid><description>Nothing tracks whether AI is citing your site. Here&apos;s how to measure LLMO visibility with GA4, Python scripts, and a 30-minute monthly protocol.</description><pubDate>Sat, 02 May 2026 00:00:00 GMT</pubDate><category>llmo</category><category>ai-search</category><category>seo</category><category>measurement</category><category>analytics</category></item><item><title>Princeton Tested 9 Ways to Get Cited by AI. Only 3 Worked.</title><link>https://kenimoto.dev/blog/geo-princeton-study-9-ways-ai-cites-you/</link><guid isPermaLink="true">https://kenimoto.dev/blog/geo-princeton-study-9-ways-ai-cites-you/</guid><description>The GEO paper benchmarked 10,000 queries and found that statistics, citations, and technical terms beat every SEO trick in the book. Here&apos;s what actually moves the needle for AI visibility.</description><pubDate>Fri, 01 May 2026 00:00:00 GMT</pubDate><category>llmo</category><category>geo</category><category>ai-search</category><category>seo</category><category>content-optimization</category></item><item><title>9 Bugs in My AI Pipeline: None Were the AI&apos;s Fault</title><link>https://kenimoto.dev/blog/9-bugs-in-my-ai-pipeline/</link><guid isPermaLink="true">https://kenimoto.dev/blog/9-bugs-in-my-ai-pipeline/</guid><description>I tested my autonomous content pipeline 6 times and found 9 bugs. The model caused exactly zero of them. Here&apos;s what actually broke.</description><pubDate>Thu, 30 Apr 2026 00:00:00 GMT</pubDate><category>harness-engineering</category><category>claude-code</category><category>ai-agent</category><category>automation</category><category>devops</category></item><item><title>The Cheap Model That Won: Why Context Beats Parameters</title><link>https://kenimoto.dev/blog/cheap-model-won-context-beats-parameters/</link><guid isPermaLink="true">https://kenimoto.dev/blog/cheap-model-won-context-beats-parameters/</guid><description>Haiku + RAG scored 11.8. Sonnet alone scored 5.3. The cheaper model more than doubled Sonnet&apos;s score, at 1/12th the cost. Here&apos;s why context design matters more than model size.</description><pubDate>Thu, 30 Apr 2026 00:00:00 GMT</pubDate><category>context-engineering</category><category>rag</category><category>llm</category><category>cost-optimization</category><category>ai-architecture</category></item><item><title>llms.txt: The File That Decides Whether AI Can Find Your Site</title><link>https://kenimoto.dev/blog/llms-txt-ai-find-your-site/</link><guid isPermaLink="true">https://kenimoto.dev/blog/llms-txt-ai-find-your-site/</guid><description>robots.txt has been the web&apos;s gatekeeper for 30 years. llms.txt is the new concierge for AI. Here&apos;s how to implement it, who&apos;s already done it, and why the biggest risk is doing nothing.</description><pubDate>Thu, 30 Apr 2026 00:00:00 GMT</pubDate><category>llmo</category><category>ai-search</category><category>seo</category><category>llms-txt</category><category>web-standards</category></item><item><title>Building an Autonomous Content Pipeline with Claude Code</title><link>https://kenimoto.dev/blog/hello-world/</link><guid isPermaLink="true">https://kenimoto.dev/blog/hello-world/</guid><description>I tested my AI article pipeline 6 times and found 9 bugs. None were the model&apos;s fault.</description><pubDate>Wed, 29 Apr 2026 00:00:00 GMT</pubDate><category>harness-engineering</category><category>claude-code</category><category>ai-agent</category></item></channel></rss>