<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[The Generative Programmer]]></title><description><![CDATA[For software builders: the emerging patterns in coding, architecture, and product development in the age of generative AI.]]></description><link>https://generativeprogrammer.com</link><image><url>https://substackcdn.com/image/fetch/$s_!HT3r!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b0115c7-9e59-47d2-8872-d18b6705c74c_256x256.png</url><title>The Generative Programmer</title><link>https://generativeprogrammer.com</link></image><generator>Substack</generator><lastBuildDate>Mon, 15 Jun 2026 17:20:05 GMT</lastBuildDate><atom:link href="https://generativeprogrammer.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Bilgin Ibryam]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[generativeprogrammer@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[generativeprogrammer@substack.com]]></itunes:email><itunes:name><![CDATA[Bilgin Ibryam]]></itunes:name></itunes:owner><itunes:author><![CDATA[Bilgin Ibryam]]></itunes:author><googleplay:owner><![CDATA[generativeprogrammer@substack.com]]></googleplay:owner><googleplay:email><![CDATA[generativeprogrammer@substack.com]]></googleplay:email><googleplay:author><![CDATA[Bilgin Ibryam]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[20+ Agent Skills, Repos, and Marketplaces Worth Bookmarking]]></title><description><![CDATA[An opinionated shelf of agent skills, collections, marketplaces, and adjacent tools worth installing, bookmarking, or using as templates for your own.]]></description><link>https://generativeprogrammer.com/p/20-agent-skills-repos-and-marketplaces</link><guid isPermaLink="false">https://generativeprogrammer.com/p/20-agent-skills-repos-and-marketplaces</guid><dc:creator><![CDATA[Bilgin Ibryam]]></dc:creator><pubDate>Sun, 14 Jun 2026 10:56:13 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/6747882e-bb93-48d0-8454-5a9f0d67edff_1200x627.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Oza5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd01def38-5bcb-466b-8e5b-bcf9625e1721_5400x3336.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Oza5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd01def38-5bcb-466b-8e5b-bcf9625e1721_5400x3336.png 424w, https://substackcdn.com/image/fetch/$s_!Oza5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd01def38-5bcb-466b-8e5b-bcf9625e1721_5400x3336.png 848w, https://substackcdn.com/image/fetch/$s_!Oza5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd01def38-5bcb-466b-8e5b-bcf9625e1721_5400x3336.png 1272w, https://substackcdn.com/image/fetch/$s_!Oza5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd01def38-5bcb-466b-8e5b-bcf9625e1721_5400x3336.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Oza5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd01def38-5bcb-466b-8e5b-bcf9625e1721_5400x3336.png" width="1456" height="899" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d01def38-5bcb-466b-8e5b-bcf9625e1721_5400x3336.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:899,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:670251,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/201968309?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd01def38-5bcb-466b-8e5b-bcf9625e1721_5400x3336.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Oza5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd01def38-5bcb-466b-8e5b-bcf9625e1721_5400x3336.png 424w, https://substackcdn.com/image/fetch/$s_!Oza5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd01def38-5bcb-466b-8e5b-bcf9625e1721_5400x3336.png 848w, https://substackcdn.com/image/fetch/$s_!Oza5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd01def38-5bcb-466b-8e5b-bcf9625e1721_5400x3336.png 1272w, https://substackcdn.com/image/fetch/$s_!Oza5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd01def38-5bcb-466b-8e5b-bcf9625e1721_5400x3336.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>A rough popularity map, not a quality ranking.</em></figcaption></figure></div><p>A skill is the unit of reuse for a coding agent. It is a folder with a <code>SKILL.md</code> that teaches the agent a capability once so you stop re-explaining it in every session, and the agent loads it only when the task calls for it. If you want the background, Anthropic&#8217;s <a href="https://www.anthropic.com/engineering/equipping-agents-for-the-real-world-with-agent-skills">Equipping agents for the real world with Agent Skills</a> and the <a href="https://code.claude.com/docs/en/skills">Claude Code skills docs</a> are the two primary sources worth reading first.</p><p>This is a companion to <a href="https://generativeprogrammer.com/p/the-agentic-coding-reading-list">The Agentic Coding Reading List</a>. That list curated the people worth following. This one curates the capabilities worth installing.</p><p>The thesis: the best skill is usually the one you write for your own codebase. But you should not start from a blank folder. Install the proven ones first, learn the shape, then write your own. Every link below was checked live. Here is the shelf.</p><h2><strong>The short version</strong></h2><p>If you only want the install path, use this order:</p><ol><li><p>Start with the official repositories to learn what a good <code>SKILL.md</code> looks like.</p></li><li><p>Bookmark the marketplaces and awesome lists for discovery.</p></li><li><p>Install one workflow framework before collecting individual tricks.</p></li><li><p>Add vendor skills for the stack you actually use.</p></li><li><p>Write your own skill when you repeat the same instruction three times.</p></li></ol><blockquote><p><strong>Skills are going portable.</strong> They began in the Claude ecosystem, but the <code>SKILL.md</code> format is spreading. OpenAI now documents <a href="https://help.openai.com/en/articles/20001066-skills-in-chatgpt">skills in ChatGPT</a> and <a href="https://developers.openai.com/codex/skills">Agent Skills for Codex</a>, and several collections here already run across Claude Code, Codex, Cursor, and Gemini. Pick skills for what they do, not for one vendor.</p></blockquote><h2><strong>Where to get them</strong></h2><p>Before any single skill, know where they live. Start at the source and work outward.</p><ul><li><p><strong><a href="https://github.com/anthropics/skills">anthropics/skills</a></strong> is the official Claude repository and the right first stop. It holds the document skills that ship with Claude, the <code>mcp-builder</code>, and <code>skill-creator</code>, which appears again at the end of this post. Reading a few of these is the fastest way to learn what a good <code>SKILL.md</code> looks like.</p></li><li><p><strong><a href="https://github.com/openai/skills">openai/skills</a></strong> is the same idea from the other side: the official skills catalog for Codex, including ready-made integrations like a <a href="https://github.com/openai/skills/blob/main/skills/.curated/linear/SKILL.md">Linear skill</a>. Its existence is the clearest signal that skills are becoming a cross-agent format, not just a Claude convention.</p></li><li><p><strong><a href="https://skillsmp.com/">Claude Skills Marketplace</a></strong> is the searchable directory of community skills, where you go when you have a specific job in mind and want to see what already exists before writing anything yourself.</p></li><li><p><strong><a href="https://smithery.ai/">Smithery</a></strong> is a registry for skills and MCP servers with one-command installs, for when you want to wire something up quickly rather than clone and copy files by hand.</p></li><li><p><strong><a href="https://www.agensi.io/">Agensi</a></strong> rounds out the set as a marketplace that includes paid skills. Worth knowing the commercial layer exists, even if most of what you install will be free.</p></li></ul><h2><strong>The collections I keep bookmarked</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gX5b!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd198f3d9-ecf1-401c-8f1e-361370ec27aa_5360x3440.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gX5b!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd198f3d9-ecf1-401c-8f1e-361370ec27aa_5360x3440.png 424w, https://substackcdn.com/image/fetch/$s_!gX5b!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd198f3d9-ecf1-401c-8f1e-361370ec27aa_5360x3440.png 848w, https://substackcdn.com/image/fetch/$s_!gX5b!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd198f3d9-ecf1-401c-8f1e-361370ec27aa_5360x3440.png 1272w, https://substackcdn.com/image/fetch/$s_!gX5b!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd198f3d9-ecf1-401c-8f1e-361370ec27aa_5360x3440.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gX5b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd198f3d9-ecf1-401c-8f1e-361370ec27aa_5360x3440.png" width="1456" height="934" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d198f3d9-ecf1-401c-8f1e-361370ec27aa_5360x3440.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:934,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:735160,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/201968309?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd198f3d9-ecf1-401c-8f1e-361370ec27aa_5360x3440.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!gX5b!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd198f3d9-ecf1-401c-8f1e-361370ec27aa_5360x3440.png 424w, https://substackcdn.com/image/fetch/$s_!gX5b!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd198f3d9-ecf1-401c-8f1e-361370ec27aa_5360x3440.png 848w, https://substackcdn.com/image/fetch/$s_!gX5b!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd198f3d9-ecf1-401c-8f1e-361370ec27aa_5360x3440.png 1272w, https://substackcdn.com/image/fetch/$s_!gX5b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd198f3d9-ecf1-401c-8f1e-361370ec27aa_5360x3440.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>The useful takeaway is not &#8220;install the biggest box,&#8221; but &#8220;study what is gaining traction and why.&#8221;</em></figcaption></figure></div><p>Three curated lists do the filtering for you. When a new skill trends, it usually shows up in one of these before it reaches the official repos.</p><ul><li><p><strong><a href="https://github.com/ComposioHQ/awesome-claude-skills">ComposioHQ/awesome-claude-skills</a></strong> is the broad awesome list for Claude skills, resources, and tools. The first place I check when I want a map of the whole landscape.</p></li><li><p><strong><a href="https://github.com/VoltAgent/awesome-agent-skills">VoltAgent/awesome-agent-skills</a></strong> collects over a thousand skills from official dev teams and the community, tagged by which agents they run on. Stronger on cross-CLI coverage if you are not Claude-only.</p></li><li><p><strong><a href="https://github.com/muratcankoylan/Agent-Skills-for-Context-Engineering">Agent-Skills-for-Context-Engineering</a></strong>, by Murat Can Koylan, is the focused one: skills for context engineering, multi-agent architectures, and production agent systems. Reach for it when you are building agents, not just using them.</p></li></ul><h2><strong>Start with a framework, not a single skill</strong></h2><p>The highest-leverage move is not one skill but a coherent collection that brings a whole way of working. Here is what I run, plus two widely watched collections worth studying.</p><ul><li><p><strong><a href="https://github.com/obra/superpowers">superpowers</a></strong>, by Jesse Vincent, is an agentic skills framework and development methodology rather than a loose bag of tricks. It gives the agent disciplined habits: brainstorming before building, test-driven development, systematic debugging, writing and executing plans, and asking for review at the right moments. This is the one I run daily because it changes how the agent works, not just what it knows.</p></li><li><p><strong><a href="https://github.com/multica-ai/andrej-karpathy-skills">andrej-karpathy-skills</a></strong> distills Andrej Karpathy&#8217;s observations about where language models go wrong when they write code into a single drop-in guardrail. Also installed here, and a small one with an outsized effect: it heads off common failure modes before they reach your diff.</p></li><li><p><strong><a href="https://github.com/garrytan/gstack">gstack</a></strong>, by Garry Tan, is his exact Claude Code setup packaged for anyone to adopt: a couple of dozen opinionated tools standing in for a CEO, designer, engineering manager, release manager, and QA. Reach for it when you want a complete, pre-wired way of working rather than parts to assemble.</p></li><li><p><strong><a href="https://github.com/mattpocock/skills">mattpocock/skills</a></strong>, by Matt Pocock, is &#8220;skills for real engineers, straight from my .claude directory.&#8221; A working practitioner&#8217;s actual setup is often more useful than anything built to be shared.</p></li></ul><h2><strong>Best practices for your stack</strong></h2><p>One of the most useful categories is official skills from the tools you already build on. It points at a real shift in how vendors ship knowledge. Instead of a documentation site you are meant to read, more teams now ship a skill the agent runs: best practices made prescriptive and executable rather than left as a guide you hope someone follows.</p><p>These are the ones I install to match my own stack.</p><ul><li><p><strong><a href="https://github.com/planetscale/database-skills">database-skills</a></strong>, from PlanetScale, teaches the agent to work with databases properly, schemas, queries, and migrations, instead of inventing SQL that looks right and breaks quietly. Pair it with <strong><a href="https://github.com/neondatabase/agent-skills">neondatabase/agent-skills</a></strong> for Neon&#8217;s serverless Postgres, including a <a href="https://github.com/neondatabase/agent-skills/blob/main/skills/claimable-postgres/SKILL.md">claimable Postgres</a> skill that hands the agent a real database, and <strong><a href="https://github.com/redis/agent-skills">redis/agent-skills</a></strong> for caching done right.</p></li><li><p><strong><a href="https://github.com/vercel-labs/next-skills">next-skills</a></strong>, from Vercel&#8217;s engineering team, carries the frontend half, with a <a href="https://github.com/vercel-labs/next-skills/tree/main/skills/next-best-practices">next-best-practices</a> skill that keeps the agent inside the framework&#8217;s intended patterns. <strong><a href="https://github.com/supabase/agent-skills">supabase/agent-skills</a></strong> does the same for the Supabase platform.</p></li><li><p>The vendor roster now reads like a stack diagram: <strong><a href="https://github.com/stripe/ai">Stripe</a></strong> for payments, <strong><a href="https://github.com/cloudflare/skills">Cloudflare</a></strong> for the edge, <strong><a href="https://github.com/hashicorp/agent-skills">HashiCorp</a></strong> for Terraform, <strong><a href="https://github.com/huggingface/skills">Hugging Face</a></strong> for models, and <strong><a href="https://github.com/trailofbits/skills">Trail of Bits</a></strong> for security, alongside Netlify, Sanity, WordPress, and Expo. Check whether the tools you depend on ship one. Increasingly, they do.</p></li></ul><h2><strong>Pick a skill for your job</strong></h2><p>Past the frameworks, the rest is role-specific. Depending on what you do, grab the skill that matches your job. There are far more than these, but four map cleanly to four kinds of work. Follow this far enough and you will want one that does not exist yet, which is the next section.</p><ul><li><p><strong>Software engineers</strong> want <strong><a href="https://github.com/addyosmani/agent-skills">agent-skills</a></strong>, from Addy Osmani: a collection of production-grade engineering skills, less a single trick than a framework for the way careful, maintainable code gets written.</p></li><li><p><strong>Designers</strong> want <strong><a href="https://github.com/nexu-io/open-design">open-design</a></strong>, by Nexu, a local-first, open alternative to Claude&#8217;s design tooling that turns the agent into something that can generate interfaces, prototypes, and slides across several agent CLIs.</p></li><li><p><strong>Anyone who writes</strong> wants <strong><a href="https://github.com/blader/humanizer">humanizer</a></strong>, which strips the tells out of AI-generated prose, the giveaway phrasing and rhythm that make a draft read like a machine wrote it.</p></li><li><p><strong>Researchers and the perpetually curious</strong> want <strong><a href="https://github.com/mvanhorn/last30days-skill">last30days-skill</a></strong>, by Matt Van Horn, which researches any topic across Reddit, X, YouTube, Hacker News, Polymarket, and the open web, then synthesizes a grounded summary. Not writing code, but gathering current signal before you do.</p></li></ul><h2><strong>When none of these fit, build your own</strong></h2><p>Follow the list this far and you will hit the skill that should exist but does not. Once you have seen the shape of a good <code>SKILL.md</code>, your own repeated instructions are the next thing to capture, and two skills exist to help you do exactly that.</p><ul><li><p><strong><a href="https://github.com/anthropics/skills/tree/main/skills/skill-creator">skill-creator</a></strong> is Anthropic&#8217;s skill that builds skills. It scaffolds a new one and, in the spirit of the methodology, has you run it on a few test cases and read the transcripts before you trust it.</p></li><li><p><strong><a href="https://github.com/yusufkaraaslan/Skill_Seekers">Skill_Seekers</a></strong>, by Yusuf Karaaslan, comes at it from the other direction: it converts documentation sites, GitHub repositories, and PDFs into skills automatically, with conflict detection. This is the fast path when the knowledge you want already exists as docs and you just need it packaged.</p></li></ul><h2><strong>Where skills and MCP blur</strong></h2><p>Not everything useful is packaged as a skill yet, and the line between a skill and an MCP server is getting thinner. Two tools make the point better than another definition.</p><ul><li><p><strong><a href="https://github.com/upstash/context7">context7</a></strong>, from Upstash, pulls up-to-date, version-correct documentation and code examples for a library straight into the model&#8217;s context, so the agent stops writing against an API it half-remembers from training. It is also the cleanest example of the shift: it ships as an MCP server, a CLI, and a skill. Same capability, packaged three ways, installed however your setup prefers. I keep it on.</p></li><li><p><strong>Playwright</strong> is the same split caught live. Microsoft&#8217;s <a href="https://github.com/microsoft/playwright-mcp">playwright-mcp</a> is a widely used way to give an agent real browser control for automation and testing, and it is an MCP server. <a href="https://github.com/lackeyjb/playwright-skill">playwright-skill</a>, by Jordan Lackey, rebuilds that capability as a model-invoked skill that writes and runs its own browser automation. Try both: the MCP if you want the mature option today, the skill if you want the load-only-when-needed behavior that context7 already points toward.</p></li></ul><h2><strong>The takeaway</strong></h2><p>The marketplaces will tempt you with thousands of skills. That number is a trap. A handful you actually understand and trust will do more for your work than a directory you never open, the same way a short reading list of durable sources beats an endless feed.</p><p>Bookmark the collections, run a framework that changes how your agent works, add the vendor skills that match your stack, grab the one that fits your job, and then write the one that does not exist yet. That last one is the point of all the others.</p><p>Subscribe to <strong>Generative Programmer</strong> for practical maps, pattern catalogs, and production lessons for AI coding agents and agentic developer tools.</p><p><em>This is a living document. Last checked: 2026-06-14. If a skill here has moved or you think something essential is missing, tell me and I will update it.</em></p>]]></content:encoded></item><item><title><![CDATA[From Test-Driven to Loop-Driven Development]]></title><description><![CDATA[The evolution of AI coding from tests and prompts to agents, harnesses, and supervised loops.]]></description><link>https://generativeprogrammer.com/p/from-test-driven-to-loop-driven-development</link><guid isPermaLink="false">https://generativeprogrammer.com/p/from-test-driven-to-loop-driven-development</guid><dc:creator><![CDATA[Bilgin Ibryam]]></dc:creator><pubDate>Thu, 11 Jun 2026 11:17:55 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/1737fb64-0117-4d4e-928c-dd1dc5c1dca8_1200x630.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Software engineering was always a loop. You change something, run it, check the result, and repeat. <a href="https://martinfowler.com/bliki/TestDrivenDevelopment.html">Test-driven development</a> made this loop explicit: write a failing test, make it pass, then refactor. The loop is small, fast, and grounded in feedback.</p><p>Other development practices widened the same idea. Behaviour-Driven Development (BDD) moved the loop toward shared behavior and examples. Acceptance testing moved it toward user-visible definitions of done. CI moved it into the delivery pipeline. The shape stayed the same: define the next bit of intent, run the system, check the result, and tighten the design.</p><p>AI is widening the loop again. The thing inside one iteration used to be a line, a function, or a failing test. Now it can be a task, a pull request, a migration, or a recurring workflow. That is what I mean by <strong>loop-driven development</strong>: the engineer designs the trigger, goal, context, harness, verifier, and state around an agent loop.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Xmo4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31896dc1-17eb-4a6a-902d-611527fcdf6c_5146x2390.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Xmo4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31896dc1-17eb-4a6a-902d-611527fcdf6c_5146x2390.png 424w, https://substackcdn.com/image/fetch/$s_!Xmo4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31896dc1-17eb-4a6a-902d-611527fcdf6c_5146x2390.png 848w, https://substackcdn.com/image/fetch/$s_!Xmo4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31896dc1-17eb-4a6a-902d-611527fcdf6c_5146x2390.png 1272w, https://substackcdn.com/image/fetch/$s_!Xmo4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31896dc1-17eb-4a6a-902d-611527fcdf6c_5146x2390.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Xmo4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31896dc1-17eb-4a6a-902d-611527fcdf6c_5146x2390.png" width="1456" height="676" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/31896dc1-17eb-4a6a-902d-611527fcdf6c_5146x2390.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:676,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:782293,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/201576805?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31896dc1-17eb-4a6a-902d-611527fcdf6c_5146x2390.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Xmo4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31896dc1-17eb-4a6a-902d-611527fcdf6c_5146x2390.png 424w, https://substackcdn.com/image/fetch/$s_!Xmo4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31896dc1-17eb-4a6a-902d-611527fcdf6c_5146x2390.png 848w, https://substackcdn.com/image/fetch/$s_!Xmo4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31896dc1-17eb-4a6a-902d-611527fcdf6c_5146x2390.png 1272w, https://substackcdn.com/image/fetch/$s_!Xmo4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31896dc1-17eb-4a6a-902d-611527fcdf6c_5146x2390.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>The Evolution of AI Coding. Autocomplete, Prompt Engineering, Context Engineering, Harness Engineering, and Loop Engineering.</em></figcaption></figure></div><p>This is not a claim that agents can safely own arbitrary software delivery. It is the opposite. The more autonomy you give the loop, the stronger the checks have to become. TDD did not remove engineering judgment. It pushed judgment into tests and refactoring. Loop-driven development does the same at a larger scale.</p><h2><strong>The progression is additive</strong></h2><p>The useful parts of each era do not disappear. Each era keeps the previous layer and adds a new control surface.</p><p>The progression looks like this:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;816a9ccf-ce62-4c97-86da-5334bf94b960&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">code completion -&gt; prompt loop -&gt; repo context -&gt; harness -&gt; supervised loop</code></pre></div><p>The unit of work keeps getting wider, and the engineer&#8217;s leverage point keeps moving up.</p><h2><strong>1. Autocomplete</strong></h2><p><strong>2021-2022</strong></p><p>Autocomplete put the model inside the editor. <a href="https://github.blog/news-insights/product-news/introducing-github-copilot-ai-pair-programmer/">GitHub Copilot</a> made this mainstream by drawing context from the code being edited and suggesting whole lines or functions. <a href="https://cursor.com/help/ai-features/tab">Cursor Tab</a> belongs in the same era. It is the completion side of Cursor, where the model predicts the next edit and the developer accepts or rejects it while writing code.</p><p>The loop still lives mostly in the developer&#8217;s hands. You type, inspect the suggestion, accept or reject it, and continue. The benefit is speed: less boilerplate, fewer mechanical edits, and faster movement through familiar code. The limit is scope. The model helps with the next edit, but it does not own the task.</p><p>What got added:</p><ul><li><p>Model</p></li><li><p>Local file context</p></li><li><p>Inline completion</p></li></ul><p>This was the <strong>Autocomplete</strong> era.</p><h2><strong>2. Prompt Engineering</strong></h2><p><strong>2022-2023</strong></p><p>The next step was to move from completion to task steering. <a href="https://arxiv.org/abs/2210.03629">ReAct</a> was not a coding assistant, but it gave agents an important primitive: reason, act, observe, repeat. The model could think about a step, call a tool, read the result, and continue.</p><p><a href="https://github.com/Significant-Gravitas/AutoGPT">AutoGPT</a> made the idea feel autonomous. Instead of asking for one answer, you gave the system a goal and let it prompt itself. That shift created the first native discipline of this era: prompt engineering. The developer was no longer only writing code. The developer was writing instructions that caused code to be written.</p><p>I still believe this skill never fully goes away. You have to know how to talk to these models well, in one form or another, which is what I have been collecting in my <a href="https://leanpub.com/prompt-patterns">Prompt Patterns</a> book.</p><p>The benefit was delegation at the task level. You could ask for a script, a test suite, an investigation, or a migration plan. The limit was convergence. A prompt loop without disciplined context and a reliable stop condition can drift, repeat itself, or optimize for the wrong thing.</p><p>What got added:</p><ul><li><p>&#10003; Model</p></li><li><p>Tools</p></li><li><p>Goal</p></li><li><p>Prompt loop</p></li></ul><p>This was the <strong>Prompt Engineering</strong> era.</p><h2><strong>3. Context Engineering</strong></h2><p><strong>2024-2025</strong></p><p>Once agents could act, the bottleneck became what they could see. A coding agent needs repo context, not only a prompt. It needs files, tests, logs, conventions, architecture notes, issue history, and the current state of the work.</p><p>This is where <a href="https://cursor.com/docs/agent/overview">Cursor Agent</a>, <a href="https://docs.devin.ai/get-started/devin-intro">Devin</a>, and <a href="https://ghuntley.com/loop/">Ralph-style loops</a> fit. Cursor Agent moves beyond tab completion into autonomous coding tasks, terminal commands, and file edits. Devin is positioned as an autonomous software engineer that can write, run, and test code. <a href="https://ghuntley.com/ralph/">Ralph</a> made a narrower but important point: durable state should live in files and git, not only in the chat transcript.</p><p>The benefit is scope. Agents can work across files, run commands, inspect failures, and make repo-aware changes. The limit is that context is not correctness. A well-contextualized agent can still finish the wrong task unless the environment can tell it what done means.</p><p>I wrote about the broader tool landscape in <a href="https://generativeprogrammer.com/p/ai-coding-assistants-landscape">AI Coding Assistants Landscape</a>. The pattern that matters here is the move from assistant-in-editor to agent-in-codebase.</p><p>What got added:</p><ul><li><p>&#10003; Model</p></li><li><p>&#10003; Tools</p></li><li><p>&#10003; Goal</p></li><li><p>Repo context</p></li><li><p>Terminal / files</p></li><li><p>Tests</p></li></ul><p>This was the <strong>Context Engineering</strong> era.</p><h2><strong>4. Harness Engineering</strong></h2><p><strong>2025-2026</strong></p><p>A harness is the environment a single agent runs inside. It includes the prompt, repo context, tools, sandbox, permissions, tests, linters, type checks, CI, evals, and review gates. The point of a harness is not to make the model magically correct. The point is to make the work observable, constrained, and checkable.</p><p><a href="https://openai.com/index/introducing-codex/">OpenAI Codex</a> is a clear example. Codex runs in isolated cloud containers, works against the provided repository, edits files, runs commands, and can propose changes for review. OpenAI&#8217;s own <a href="https://openai.com/index/harness-engineering/">harness engineering</a> write-up describes the role shift directly: engineers design environments, specify intent, and build feedback loops that let agents do reliable work. <a href="https://github.com/anthropics/claude-code">Claude Code</a> fits the same era from the terminal side: it understands a codebase, edits files, runs commands, and handles git workflows.</p><p>This is why I think the harness framing is more useful than another prompt taxonomy. In <a href="https://generativeprogrammer.com/p/12-agentic-harness-patterns-from">12 Agentic Harness Patterns from Claude Code</a>, I broke the harness into reusable patterns: persistent instructions, scoped context, memory tiers, tool permissions, lifecycle hooks, and workflow separation. In <a href="https://generativeprogrammer.com/p/the-missing-quality-layer-for-ai">The Missing Quality Layer for AI Coding Agents</a>, I argued that the next bottleneck is proving the diff is safe to review, not generating the diff.</p><p>The benefit is repeatability. The agent no longer just generates code. It runs inside a system that can reject bad work. Deterministic checks should come first: tests, builds, type checks, lint, contract tests, benchmarks, screenshots, traces, and CI. Model-based judging can help with subjective checks, but maker and checker should be separated. These checks matter most when they push back on the agent in the moment rather than after the fact, giving the loop <a href="https://generativeprogrammer.com/p/stop-babysitting-your-coding-agent">backpressure</a> so it self-corrects before a human has to step in.</p><p>What got added:</p><ul><li><p>&#10003; Model</p></li><li><p>&#10003; Tools</p></li><li><p>&#10003; Goal</p></li><li><p>&#10003; Repo context</p></li><li><p>Sandbox</p></li><li><p>Verifier</p></li><li><p>CI / eval harness</p></li></ul><p>This was the <strong>Harness Engineering</strong> era.</p><h2><strong>5. Loop Engineering</strong></h2><p><strong>Now</strong></p><p>Once the harness is reliable, the next layer is the loop that runs it. A loop is not just an automation. An automation executes fixed steps. A loop has a decision inside it. It checks whether the goal is met and decides whether to continue.</p><p>A practical agent loop has five parts:</p><ul><li><p><strong>Trigger:</strong> human kickoff, schedule, or event</p></li><li><p><strong>Goal:</strong> the desired end state</p></li><li><p><strong>Harness:</strong> the environment the agent runs in</p></li><li><p><strong>Verifier:</strong> the check that decides whether to continue</p></li><li><p><strong>State:</strong> memory outside the current model call</p></li></ul><p>This is where current tools are converging. Codex has <code>/goal</code> for long-running work with a verifiable stopping condition and <a href="https://developers.openai.com/codex/app/automations">Automations</a> for recurring tasks. Claude Code has <code>/goal</code>, <code>/loop</code>, and scheduled tasks for recurring work. <a href="https://modelcontextprotocol.io/docs/getting-started/intro">MCP</a> gives agents a standard way to connect to external tools and data sources. Addy Osmani&#8217;s <a href="https://addyosmani.com/blog/loop-engineering/">Loop Engineering</a> framing captures the same ingredient set: automations, worktrees, skills, connectors, sub-agents, and memory.</p><p>The benefit is leverage. A loop can watch CI, triage issues, update dependencies, fix flaky tests, chase review feedback, prepare PRs, and keep working until a condition holds. The risk grows with the leverage. A bad prompt wastes a turn. A bad loop can waste hours, mutate the repo, and generate a pile of plausible work that still needs human judgment.</p><p>Skills and playbooks become especially important here. A loop that has to rediscover project conventions every run is fragile. A loop that can call well-scoped skills has a better chance of doing the same work consistently. That is why I see skills as part of the loop substrate, not only better prompt files. I wrote more about that in <a href="https://generativeprogrammer.com/p/9-principles-that-separate-useful">9 Principles That Separate Useful Skills from Markdown Essays</a>.</p><p>What got added:</p><ul><li><p>&#10003; Model</p></li><li><p>&#10003; Tools</p></li><li><p>&#10003; Goal</p></li><li><p>&#10003; Repo context</p></li><li><p>&#10003; Verifier</p></li><li><p>Automations</p></li></ul><ul><li><p>Worktrees</p></li></ul><ul><li><p>Skills / playbooks</p></li></ul><ul><li><p>Connectors (MCP)</p></li></ul><ul><li><p>Durable memory</p></li></ul><ul><li><p>Orchestration</p></li></ul><p>This is the <strong>Loop Engineering</strong> era.</p><h2><strong>The Engineering Leverage Stack</strong></h2><p>What the stack below shows is not five tools but a single control point moving up. Each era lets you author less of the code directly and more of the system that produces it, trading fine-grained control for reach. The higher you stand, the more a single decision is worth, and the more it leans on the checks in the layers beneath it.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!v4zr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb8b95e5-f11a-4109-b1db-379af99b7f55_3660x2551.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!v4zr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb8b95e5-f11a-4109-b1db-379af99b7f55_3660x2551.png 424w, https://substackcdn.com/image/fetch/$s_!v4zr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb8b95e5-f11a-4109-b1db-379af99b7f55_3660x2551.png 848w, https://substackcdn.com/image/fetch/$s_!v4zr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb8b95e5-f11a-4109-b1db-379af99b7f55_3660x2551.png 1272w, https://substackcdn.com/image/fetch/$s_!v4zr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb8b95e5-f11a-4109-b1db-379af99b7f55_3660x2551.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!v4zr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb8b95e5-f11a-4109-b1db-379af99b7f55_3660x2551.png" width="1456" height="1015" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/eb8b95e5-f11a-4109-b1db-379af99b7f55_3660x2551.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1015,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:925031,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/201576805?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb8b95e5-f11a-4109-b1db-379af99b7f55_3660x2551.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!v4zr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb8b95e5-f11a-4109-b1db-379af99b7f55_3660x2551.png 424w, https://substackcdn.com/image/fetch/$s_!v4zr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb8b95e5-f11a-4109-b1db-379af99b7f55_3660x2551.png 848w, https://substackcdn.com/image/fetch/$s_!v4zr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb8b95e5-f11a-4109-b1db-379af99b7f55_3660x2551.png 1272w, https://substackcdn.com/image/fetch/$s_!v4zr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb8b95e5-f11a-4109-b1db-379af99b7f55_3660x2551.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>The Engineering Leverage Stack. Each wider loop wraps the previous layer and moves the engineer&#8217;s control point up.</em></figcaption></figure></div><p>A harness is the environment for one agent run. A loop is the control system around that harness. A factory is a system of loops: one loop finds work, another implements it, another verifies it, another opens or updates the PR, and another escalates what needs human judgment.</p><p>That is the leverage shift:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!HQ05!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb11dca77-9fa1-48a6-8805-e22efdd05566_2228x1174.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HQ05!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb11dca77-9fa1-48a6-8805-e22efdd05566_2228x1174.png 424w, https://substackcdn.com/image/fetch/$s_!HQ05!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb11dca77-9fa1-48a6-8805-e22efdd05566_2228x1174.png 848w, https://substackcdn.com/image/fetch/$s_!HQ05!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb11dca77-9fa1-48a6-8805-e22efdd05566_2228x1174.png 1272w, https://substackcdn.com/image/fetch/$s_!HQ05!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb11dca77-9fa1-48a6-8805-e22efdd05566_2228x1174.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HQ05!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb11dca77-9fa1-48a6-8805-e22efdd05566_2228x1174.png" width="1456" height="767" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b11dca77-9fa1-48a6-8805-e22efdd05566_2228x1174.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:767,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:505748,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/201576805?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb11dca77-9fa1-48a6-8805-e22efdd05566_2228x1174.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!HQ05!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb11dca77-9fa1-48a6-8805-e22efdd05566_2228x1174.png 424w, https://substackcdn.com/image/fetch/$s_!HQ05!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb11dca77-9fa1-48a6-8805-e22efdd05566_2228x1174.png 848w, https://substackcdn.com/image/fetch/$s_!HQ05!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb11dca77-9fa1-48a6-8805-e22efdd05566_2228x1174.png 1272w, https://substackcdn.com/image/fetch/$s_!HQ05!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb11dca77-9fa1-48a6-8805-e22efdd05566_2228x1174.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The important word is <strong>wrap</strong>. Prompting did not replace coding. Context did not replace prompting. Harnesses did not replace context. Loops do not replace harnesses. Each layer wraps the one below and changes where engineering judgment is applied.</p><h2><strong>What loop-driven development means</strong></h2><p>Loop-driven development is TDD at a larger unit of intent. In TDD, the loop wraps a unit of behavior: write the failing test, make it pass, refactor. In loop-driven development, the loop can wrap a task, a PR, a migration, or a recurring workflow.</p><p>The verifier is the difference between a loop and a vibe. Without a verifier, you have repeated prompting. With a verifier, the loop can converge. The verifier can be deterministic, like tests and builds, or probabilistic, like a separate reviewer model, but it has to exist outside the agent&#8217;s desire to be done.</p><p>This is also where the human role becomes more important, not less. The engineer chooses the goal, designs the context, sets the permissions, defines the checks, reviews the result, and decides what risks are acceptable. The loop can run faster than you can type, but it cannot decide what should matter.</p><h2><strong>The takeaway</strong></h2><p>Software was always written in a loop. TDD made the loop explicit around behavior. BDD and acceptance testing widened it toward product intent. AI is widening it again around agents, harnesses, and recurring workflows.</p><p>That is the shift from test-driven to loop-driven development.</p><p>Not because tests stop mattering. Because tests, evals, reviewers, sandboxes, worktrees, skills, memory, and CI are becoming parts of a larger loop.</p><p>Build the loop. Stay the engineer.</p><div><hr></div><p><em>Subscribe to <a href="https://generativeprogrammer.com/">The Generative Programmer</a> for practical maps, pattern catalogs, and production notes on AI coding agents.</em></p>]]></content:encoded></item><item><title><![CDATA[Stop Babysitting Your Coding Agent. Give It Backpressure.]]></title><description><![CDATA[Backpressure is feedback that reaches the agent before the agent reaches the human.]]></description><link>https://generativeprogrammer.com/p/stop-babysitting-your-coding-agent</link><guid isPermaLink="false">https://generativeprogrammer.com/p/stop-babysitting-your-coding-agent</guid><dc:creator><![CDATA[Bilgin Ibryam]]></dc:creator><pubDate>Sat, 06 Jun 2026 12:56:02 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/60128a26-f360-4dcd-bea5-4261b024dd89_2400x1260.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The Backpressure Loop is becoming one of the defining patterns for successful coding agents. Agents can generate code quickly, but generation without feedback is still an open loop: the agent produces a diff, yet it cannot tell whether the diff is correct, useful, safe, or ready unless the system pushes back. Backpressure can come from a type checker, a test, a linter, a build, a browser check, logs, traces, structural rules, or evals. The source matters less than the loop: the agent sees the failure, repairs the work, and tries again.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cCoC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1eb4b15-80cb-4d25-ac99-d051f47d4a47_6640x4000.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cCoC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1eb4b15-80cb-4d25-ac99-d051f47d4a47_6640x4000.png 424w, https://substackcdn.com/image/fetch/$s_!cCoC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1eb4b15-80cb-4d25-ac99-d051f47d4a47_6640x4000.png 848w, https://substackcdn.com/image/fetch/$s_!cCoC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1eb4b15-80cb-4d25-ac99-d051f47d4a47_6640x4000.png 1272w, https://substackcdn.com/image/fetch/$s_!cCoC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1eb4b15-80cb-4d25-ac99-d051f47d4a47_6640x4000.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cCoC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1eb4b15-80cb-4d25-ac99-d051f47d4a47_6640x4000.png" width="1456" height="877" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b1eb4b15-80cb-4d25-ac99-d051f47d4a47_6640x4000.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:877,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:340654,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/196319292?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1eb4b15-80cb-4d25-ac99-d051f47d4a47_6640x4000.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!cCoC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1eb4b15-80cb-4d25-ac99-d051f47d4a47_6640x4000.png 424w, https://substackcdn.com/image/fetch/$s_!cCoC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1eb4b15-80cb-4d25-ac99-d051f47d4a47_6640x4000.png 848w, https://substackcdn.com/image/fetch/$s_!cCoC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1eb4b15-80cb-4d25-ac99-d051f47d4a47_6640x4000.png 1272w, https://substackcdn.com/image/fetch/$s_!cCoC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1eb4b15-80cb-4d25-ac99-d051f47d4a47_6640x4000.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The failure mode is simple: the agent produces code faster than the engineering system can push back on bad output. Without that pushback, the human becomes the compiler, the test runner, the linter, the UI checker, and the reviewer. Every trivial mistake waits for a person to notice it, explain it, and send the agent back for another attempt.</p><p>That is not review. That is babysitting.</p><p>In <a href="https://banay.me/dont-waste-your-backpressure/">Don&#8217;t waste your back pressure</a>, Moss Banay describes this as wasted human backpressure: spending attention on mistakes the agent should have been able to detect itself, such as missing imports, broken builds, and visual errors.</p><p>I call this the <strong>Backpressure Loop Pattern</strong>.</p><h2><strong>The problem</strong></h2><p>A coding agent is a fast producer. The human reviewer is a slow consumer.</p><p>That mismatch creates pressure. If the only meaningful feedback comes from the human, every failure becomes review work. The agent writes code, the human spots a broken test, the human explains the failure, and the agent retries.</p><p>That loop does not scale.</p><p>Marc Brooker makes the deeper point in <a href="https://brooker.co.za/blog/2026/05/18/whats-easy-whats-hard.html">What&#8217;s Easy Now? What&#8217;s Hard Now?</a>: agents are feedback loops around a useful but flawed model. The key shift is moving feedback from the human loop into the agent loop: build, test, inspect, repair, and iterate.</p><p>So the question is not only:</p><blockquote><p>How good is the model?</p></blockquote><p>The better question is:</p><blockquote><p>What feedback can the agent use without asking me?</p></blockquote><h2><strong>The pattern</strong></h2><p><strong>Intent:</strong> Move cheap correctness checks out of human review and into the agent loop.</p><p><strong>Context:</strong> A coding agent can edit files, run commands, read failures, and retry.</p><p><strong>Problem:</strong> Agents produce code faster than humans can validate it.</p><p><strong>Solution:</strong> Expose fast, machine-readable feedback sensors to the agent: types, tests, linters, builds, browser checks, logs, traces, and structural rules.</p><p><strong>Result:</strong> The agent fixes mechanical failures before review. The human focuses on intent, design, and trade-offs.</p><h2><strong>What counts as backpressure</strong></h2><p>Backpressure is any signal that can push back on bad agent output before a human spends attention on it.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!s3hA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05fc225c-55a0-46cf-bbad-dbc706ac48ad_4240x3192.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!s3hA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05fc225c-55a0-46cf-bbad-dbc706ac48ad_4240x3192.png 424w, https://substackcdn.com/image/fetch/$s_!s3hA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05fc225c-55a0-46cf-bbad-dbc706ac48ad_4240x3192.png 848w, https://substackcdn.com/image/fetch/$s_!s3hA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05fc225c-55a0-46cf-bbad-dbc706ac48ad_4240x3192.png 1272w, https://substackcdn.com/image/fetch/$s_!s3hA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05fc225c-55a0-46cf-bbad-dbc706ac48ad_4240x3192.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!s3hA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05fc225c-55a0-46cf-bbad-dbc706ac48ad_4240x3192.png" width="1456" height="1096" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/05fc225c-55a0-46cf-bbad-dbc706ac48ad_4240x3192.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1096,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:298407,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/196319292?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05fc225c-55a0-46cf-bbad-dbc706ac48ad_4240x3192.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!s3hA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05fc225c-55a0-46cf-bbad-dbc706ac48ad_4240x3192.png 424w, https://substackcdn.com/image/fetch/$s_!s3hA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05fc225c-55a0-46cf-bbad-dbc706ac48ad_4240x3192.png 848w, https://substackcdn.com/image/fetch/$s_!s3hA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05fc225c-55a0-46cf-bbad-dbc706ac48ad_4240x3192.png 1272w, https://substackcdn.com/image/fetch/$s_!s3hA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05fc225c-55a0-46cf-bbad-dbc706ac48ad_4240x3192.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Thoughtworks calls these <a href="https://www.thoughtworks.com/radar/techniques/feedback-sensors-for-coding-agents">feedback sensors for coding agents</a>: deterministic quality gates wired into agent workflows so failures trigger self-correction.</p><p>That distinction matters:</p><ul><li><p>A CI failure after the agent is done is a gate.</p></li><li><p>A failure the agent sees while working is backpressure.</p></li></ul><h2><strong>A green build is not enough</strong></h2><p>A green build is useful, but narrow.</p><p>It tells you the code compiled, the formatter ran, and the existing tests passed. It does not prove the product rule survived. It does not prove the generated test asserts meaningful behavior. It does not prove the refactor respected the architecture.</p><p>So the goal is not just &#8220;run CI earlier.&#8221;</p><p>The goal is to make feedback fast, specific, and actionable enough for the agent to repair the work.</p><p>Bad feedback:</p><pre><code>The code is wrong.</code></pre><p>Better feedback:</p><pre><code>auth/session.test.ts failed.
Expected expired sessions to redirect to /login.
Received 200 from /dashboard.
Fix the session expiration path.
Do not change the test.</code></pre><p>The second version gives the agent something to do.</p><h2><strong>Effective feedback beats more feedback</strong></h2><p>More output is not the same as better backpressure.</p><p>A recent arXiv preprint, <a href="https://arxiv.org/abs/2605.29682">Scaling Laws for Agent Harnesses via Effective Feedback Compute</a>, makes this point in research terms. The authors argue that agent harnesses scale less with raw tokens, tool calls, wall time, or cost, and more with how efficiently they convert raw budget into useful feedback.</p><p><mark data-color="#cfe2f3" style="background-color: rgb(207, 226, 243); color: rgb(0, 0, 0);">They call this </mark><strong><mark data-color="#cfe2f3" style="background-color: rgb(207, 226, 243); color: rgb(0, 0, 0);">Effective Feedback Compute</mark></strong><mark data-color="#cfe2f3" style="background-color: rgb(207, 226, 243); color: rgb(0, 0, 0);">: feedback that is informative, valid, non-redundant, and retained for later decisions.</mark></p><p>That maps directly to coding agents.</p><p>A test failure is useful only if the agent can understand it, trust it, avoid repeating it, and use it to change the next attempt.</p><p>Useful backpressure has four properties:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!sLbi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1956ca83-4356-4a4b-b548-8df1409f8af0_2658x812.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sLbi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1956ca83-4356-4a4b-b548-8df1409f8af0_2658x812.png 424w, https://substackcdn.com/image/fetch/$s_!sLbi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1956ca83-4356-4a4b-b548-8df1409f8af0_2658x812.png 848w, https://substackcdn.com/image/fetch/$s_!sLbi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1956ca83-4356-4a4b-b548-8df1409f8af0_2658x812.png 1272w, https://substackcdn.com/image/fetch/$s_!sLbi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1956ca83-4356-4a4b-b548-8df1409f8af0_2658x812.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sLbi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1956ca83-4356-4a4b-b548-8df1409f8af0_2658x812.png" width="1456" height="445" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1956ca83-4356-4a4b-b548-8df1409f8af0_2658x812.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:445,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:328514,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/196319292?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1956ca83-4356-4a4b-b548-8df1409f8af0_2658x812.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!sLbi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1956ca83-4356-4a4b-b548-8df1409f8af0_2658x812.png 424w, https://substackcdn.com/image/fetch/$s_!sLbi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1956ca83-4356-4a4b-b548-8df1409f8af0_2658x812.png 848w, https://substackcdn.com/image/fetch/$s_!sLbi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1956ca83-4356-4a4b-b548-8df1409f8af0_2658x812.png 1272w, https://substackcdn.com/image/fetch/$s_!sLbi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1956ca83-4356-4a4b-b548-8df1409f8af0_2658x812.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>That is why a thousand lines of logs can be worse than a short, structured failure.</p><p>The goal is not more agent activity. The goal is more effective feedback.</p><h2><strong>How to implement it</strong></h2><p>Start with the boring checks.</p><p>Put the exact commands in <code>AGENTS.md</code>, <code>CLAUDE.md</code>, or the equivalent project instruction file:</p><pre><code>After changing TypeScript:
- run npm run typecheck
- run npm run lint
- run npm test -- --changed
- fix failures before opening a PR</code></pre><p>Then make the output efficient.</p><p>Do not dump hundreds of lines of passing test output into the agent context. Passing checks should be tiny. Failing checks should show the useful detail.</p><p>HumanLayer describes this as <a href="https://www.humanlayer.dev/blog/context-efficient-backpressure">context-efficient backpressure</a>: replace passing test, build, and lint output with a small success signal, but expose full output when a command fails.</p><p>Example:</p><pre><code>&#10003; typecheck
&#10003; lint
&#10007; auth tests
FAIL auth/session.test.ts
Expected redirect to /login for expired session.
Received 200 from /dashboard.</code></pre><p>That is enough signal for the agent to continue.</p><p>The rule:</p><blockquote><p>Success should be compressed. Failure should be actionable.</p></blockquote><h2><strong>The trade-off</strong></h2><p>Backpressure is not free.</p><p>Fast sensors improve flow, but slow sensors choke it.</p><p>Do not put every possible check inside the inner loop. Layer them.</p><pre><code>In session:
typecheck, lint, focused tests, build, screenshots
Before PR:
full tests, integration tests, structural rules, security checks
Scheduled or explicit:
mutation testing, fuzzing, semantic evals, architecture drift review</code></pre><p>Birgitta B&#246;ckeler&#8217;s <a href="https://martinfowler.com/articles/sensors-for-coding-agents.html">Maintainability sensors for coding agents</a> is useful here because it separates sensors that run during the coding session from sensors that belong in the pipeline, on a schedule, or in production.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!XnrS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0253271a-fac6-4475-ad24-0478ad1d3a3a_4400x2960.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XnrS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0253271a-fac6-4475-ad24-0478ad1d3a3a_4400x2960.png 424w, https://substackcdn.com/image/fetch/$s_!XnrS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0253271a-fac6-4475-ad24-0478ad1d3a3a_4400x2960.png 848w, https://substackcdn.com/image/fetch/$s_!XnrS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0253271a-fac6-4475-ad24-0478ad1d3a3a_4400x2960.png 1272w, https://substackcdn.com/image/fetch/$s_!XnrS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0253271a-fac6-4475-ad24-0478ad1d3a3a_4400x2960.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XnrS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0253271a-fac6-4475-ad24-0478ad1d3a3a_4400x2960.png" width="1456" height="979" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0253271a-fac6-4475-ad24-0478ad1d3a3a_4400x2960.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:979,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:229118,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/196319292?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0253271a-fac6-4475-ad24-0478ad1d3a3a_4400x2960.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!XnrS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0253271a-fac6-4475-ad24-0478ad1d3a3a_4400x2960.png 424w, https://substackcdn.com/image/fetch/$s_!XnrS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0253271a-fac6-4475-ad24-0478ad1d3a3a_4400x2960.png 848w, https://substackcdn.com/image/fetch/$s_!XnrS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0253271a-fac6-4475-ad24-0478ad1d3a3a_4400x2960.png 1272w, https://substackcdn.com/image/fetch/$s_!XnrS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0253271a-fac6-4475-ad24-0478ad1d3a3a_4400x2960.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>That is the right mental model: not every check belongs in the same loop.</p><p>The inner loop should be fast enough that the agent can run it repeatedly. Slower checks belong outside the session unless the task is risky enough to justify the cost.</p><h2><strong>The rule</strong></h2><p>When you correct the same agent mistake twice, turn it into backpressure.</p><p>A test.<br>A type.<br>A linter rule.<br>A build check.<br>A browser assertion.<br>A better error message.<br>A small script the agent can run before it asks for review.</p><p>The future skill is not asking agents to try harder.</p><p>It is designing feedback loops that make bad output harder to accept.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://generativeprogrammer.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Paid subscribers get a free copy of my Prompt Patterns book ($25 value), including all future editions, and updates.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[The Missing Quality Layer for AI Coding Agents]]></title><description><![CDATA[As coding agents get better at writing code, the next challenge is proving the code is safe to merge.]]></description><link>https://generativeprogrammer.com/p/the-missing-quality-layer-for-ai</link><guid isPermaLink="false">https://generativeprogrammer.com/p/the-missing-quality-layer-for-ai</guid><dc:creator><![CDATA[Bilgin Ibryam]]></dc:creator><pubDate>Fri, 29 May 2026 13:36:14 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!GJae!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7824ecb2-2e7f-4e09-a2d7-22615c42c17c_6880x3840.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>There is a growing trend with more experienced teams adopting coding agents. They are moving past the first-order question of whether Claude Code, Cursor, Codex, or similar tools can write useful code. The answer is increasingly yes. The harder question is what has to exist around those agents before teams can trust the code they produce.</p><p>That shift matters because coding agents make the first draft cheaper, but they do not make quality automatic. A green build is still a narrow signal. It tells you the code compiled, the formatter ran, and the existing tests passed. It does not tell you whether the agent preserved the product rule, whether a generated test asserts real behavior, whether a refactor crossed an architectural boundary, or whether an installed MCP server had access to credentials it should never see.</p><p>The trend I&#8217;m seeing is the emergence of a quality layer around agentic coding. It sits between the agent and the pull request. Its job is to give the agent useful feedback while it works, constrain risky changes before they grow, and leave enough evidence behind for humans to understand what happened later.</p><p>This is where <a href="https://martinfowler.com/articles/sensors-for-coding-agents.html">Birgitta B&#246;ckeler&#8217;s work on maintainability sensors for coding agents</a> is useful. She describes how agents can quietly compound inadvertent technical debt when they lack the right feedback signals. OpenAI&#8217;s <a href="https://openai.com/index/harness-engineering/">Codex engineering team describes a similar discipline as harness engineering</a>: custom checks, architectural constraints, and repository-level quality signals become part of the environment agents work inside.</p><p>I think of this as the agent quality layer. It has two jobs: catch mistakes before they become review work, and prove where the work came from after it lands.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!GJae!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7824ecb2-2e7f-4e09-a2d7-22615c42c17c_6880x3840.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GJae!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7824ecb2-2e7f-4e09-a2d7-22615c42c17c_6880x3840.png 424w, https://substackcdn.com/image/fetch/$s_!GJae!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7824ecb2-2e7f-4e09-a2d7-22615c42c17c_6880x3840.png 848w, https://substackcdn.com/image/fetch/$s_!GJae!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7824ecb2-2e7f-4e09-a2d7-22615c42c17c_6880x3840.png 1272w, https://substackcdn.com/image/fetch/$s_!GJae!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7824ecb2-2e7f-4e09-a2d7-22615c42c17c_6880x3840.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GJae!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7824ecb2-2e7f-4e09-a2d7-22615c42c17c_6880x3840.png" width="1456" height="813" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7824ecb2-2e7f-4e09-a2d7-22615c42c17c_6880x3840.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:813,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:848477,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/199442793?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7824ecb2-2e7f-4e09-a2d7-22615c42c17c_6880x3840.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!GJae!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7824ecb2-2e7f-4e09-a2d7-22615c42c17c_6880x3840.png 424w, https://substackcdn.com/image/fetch/$s_!GJae!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7824ecb2-2e7f-4e09-a2d7-22615c42c17c_6880x3840.png 848w, https://substackcdn.com/image/fetch/$s_!GJae!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7824ecb2-2e7f-4e09-a2d7-22615c42c17c_6880x3840.png 1272w, https://substackcdn.com/image/fetch/$s_!GJae!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7824ecb2-2e7f-4e09-a2d7-22615c42c17c_6880x3840.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This post covers five practical controls for that layer. Each one names a failure mode, the control that reduces it, and tools or techniques teams can use today.</p><h2><strong>1. Feedback Sensors</strong></h2><p>A coding agent that produces a diff without compiler feedback turns the human reviewer into the first quality gate. Reviewers end up seeing type errors, broken builds, failing tests, formatting noise, and simple lint violations that should never leave the session.</p><p>Feedback sensors wire deterministic checks directly into the agent&#8217;s loop. Compilers, linters, type checkers, structural tests, and focused test suites run during the session. When a check fails, the agent sees the output and tries again before the human reviews the diff.</p><p>The useful detail is not only running the check, but giving the agent failure messages it can act on. B&#246;ckeler describes embedding self-correction guidance inside lint errors, for example through a custom ESLint formatter. The agent sees what failed, why it failed, and how the team expects the fix to look. OpenAI&#8217;s Codex team describes the same move: custom lint messages carry remediation guidance into the agent context at the point of failure.</p><p><strong>Related tools and techniques.</strong></p><ul><li><p>Start with the compiler, type checker, project-specific lint rules, focused test commands, and build validation for the changed module.</p></li><li><p>Add custom lint formatters for recurring agent mistakes.</p></li><li><p>Use mutation testing tools such as <a href="https://github.com/sourcefrog/cargo-mutants">cargo-mutants</a> when passing tests is not enough evidence that tests assert meaningful behavior.</p></li><li><p>Use fuzzers such as <a href="https://github.com/TNO-S3/WuppieFuzz">WuppieFuzz</a> for API and input-space testing where examples miss edge cases.</p></li><li><p>In Claude Code or Cursor, run fast checks through hooks, tasks, or a reviewer agent so they happen consistently.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ccLp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe47c09cf-9077-4185-b0d4-275ba5e9dcdb_3840x1696.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ccLp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe47c09cf-9077-4185-b0d4-275ba5e9dcdb_3840x1696.png 424w, https://substackcdn.com/image/fetch/$s_!ccLp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe47c09cf-9077-4185-b0d4-275ba5e9dcdb_3840x1696.png 848w, https://substackcdn.com/image/fetch/$s_!ccLp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe47c09cf-9077-4185-b0d4-275ba5e9dcdb_3840x1696.png 1272w, https://substackcdn.com/image/fetch/$s_!ccLp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe47c09cf-9077-4185-b0d4-275ba5e9dcdb_3840x1696.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ccLp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe47c09cf-9077-4185-b0d4-275ba5e9dcdb_3840x1696.png" width="1456" height="643" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e47c09cf-9077-4185-b0d4-275ba5e9dcdb_3840x1696.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:643,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:102539,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/199442793?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe47c09cf-9077-4185-b0d4-275ba5e9dcdb_3840x1696.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ccLp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe47c09cf-9077-4185-b0d4-275ba5e9dcdb_3840x1696.png 424w, https://substackcdn.com/image/fetch/$s_!ccLp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe47c09cf-9077-4185-b0d4-275ba5e9dcdb_3840x1696.png 848w, https://substackcdn.com/image/fetch/$s_!ccLp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe47c09cf-9077-4185-b0d4-275ba5e9dcdb_3840x1696.png 1272w, https://substackcdn.com/image/fetch/$s_!ccLp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe47c09cf-9077-4185-b0d4-275ba5e9dcdb_3840x1696.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>When to use.</strong> Any team using coding agents on production code. Start with fast checks in the session: lint, types, focused tests, and build validation for the changed module.</p><p><strong>The main trade-off.</strong> Slow sensors choke the loop. Keep fast checks in-session, and push slower checks such as mutation testing, fuzzing, and modularity reviews into CI, scheduled runs, or explicit review passes.</p><h2><strong>2. Semantic Evals</strong></h2><p>Deterministic sensors catch mechanical failures, but they do not catch code that compiles, passes tests, and still does the wrong thing. This is common with agent-generated tests, policy logic, tool-use workflows, data transformations, and customer-facing answers where correctness depends on meaning rather than syntax.</p><p>Semantic evals add probabilistic checks that score output against expected behavior. A semantic eval might verify that a generated test fails for the right reason, that an agent used the correct tool sequence, that a response stayed grounded in retrieved evidence, or that a policy decision matches known examples.</p><p>The eval suite should live near the test suite, but it evaluates agent behavior and generated output rather than only deterministic function results.</p><p><strong>Related tools and techniques.</strong></p><ul><li><p>Keep a small golden set of examples for behavior the agent must preserve.</p></li><li><p>Use <a href="https://github.com/confident-ai/deepeval">DeepEval</a> or a similar framework for tool-use, hallucination, answer-quality, and custom use-case checks.</p></li><li><p>Use LLM-as-judge only with reviewed examples, clear thresholds, and failure review.</p></li><li><p>Consider approaches such as <a href="https://www.nature.com/articles/s41586-024-07421-0">semantic entropy</a> when you need to flag fluent answers that may still be uncertain.</p></li><li><p>For code structure, use LLM-assisted analyzers such as <a href="https://github.com/vladikk/modularity">Vlad Khononov&#8217;s modularity plugin</a> to inspect coupling, abstraction boundaries, and semantic duplication.</p></li><li><p>Combine semantic review with deterministic rules. Do not make model judgment the only gate.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bhyh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F516ac7cb-7378-49b9-b723-1fb90ca801b8_3680x2016.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bhyh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F516ac7cb-7378-49b9-b723-1fb90ca801b8_3680x2016.png 424w, https://substackcdn.com/image/fetch/$s_!bhyh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F516ac7cb-7378-49b9-b723-1fb90ca801b8_3680x2016.png 848w, https://substackcdn.com/image/fetch/$s_!bhyh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F516ac7cb-7378-49b9-b723-1fb90ca801b8_3680x2016.png 1272w, https://substackcdn.com/image/fetch/$s_!bhyh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F516ac7cb-7378-49b9-b723-1fb90ca801b8_3680x2016.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bhyh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F516ac7cb-7378-49b9-b723-1fb90ca801b8_3680x2016.png" width="1456" height="798" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/516ac7cb-7378-49b9-b723-1fb90ca801b8_3680x2016.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:798,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:98785,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/199442793?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F516ac7cb-7378-49b9-b723-1fb90ca801b8_3680x2016.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!bhyh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F516ac7cb-7378-49b9-b723-1fb90ca801b8_3680x2016.png 424w, https://substackcdn.com/image/fetch/$s_!bhyh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F516ac7cb-7378-49b9-b723-1fb90ca801b8_3680x2016.png 848w, https://substackcdn.com/image/fetch/$s_!bhyh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F516ac7cb-7378-49b9-b723-1fb90ca801b8_3680x2016.png 1272w, https://substackcdn.com/image/fetch/$s_!bhyh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F516ac7cb-7378-49b9-b723-1fb90ca801b8_3680x2016.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>When to use.</strong> Agent-generated logic that affects business decisions, customer workflows, policy interpretation, migrations, or domains where correctness is hard to verify by reading.</p><p><strong>The main trade-off.</strong> Semantic eval is itself probabilistic. False positives train teams to ignore alerts, while false negatives create a false sense of safety. Treat the eval suite as production code: review examples, tune thresholds, and track failures over time.</p><h2><strong>3. Refactor Boundaries</strong></h2><p>Coding agents can rewrite code faster than humans can review it. That speed is useful in clean modules and risky in old, high-churn parts of the codebase. A 2,000-line god class with twelve years of business logic is exactly the kind of structure an agent may confidently refactor, and exactly the kind of structure where a refactor can delete behavior nobody documented.</p><p>Refactor boundaries classify the codebase by complexity, churn, ownership, and architectural risk before the agent starts rewriting. The output is a practical map: green zones for routine edits, yellow zones for scoped changes with focused tests, and red zones where large rewrites need human design first.</p><p>The point is not to block agents from refactoring. The point is to make safe refactoring cheaper than unconstrained rewriting.</p><p><strong>Related tools and techniques.</strong></p><ul><li><p>Use <a href="https://codescene.com/">CodeScene</a> or a similar tool to combine static complexity metrics with version-control history and surface hotspots.</p></li><li><p>Mark high-risk files with CODEOWNERS, required reviewers, or path-based approval rules.</p></li><li><p>Use <a href="https://github.com/sverweij/dependency-cruiser">dependency-cruiser</a>, ArchUnit, or Spring Modulith to enforce module boundaries and dependency direction.</p></li><li><p>Track a lightweight quality score per domain or module, especially in areas where agents make repeated changes.</p></li><li><p>Let agents make small cleanup PRs in green zones, but require a human design step before broad rewrites in red zones.</p></li></ul><p>OpenAI&#8217;s Codex team applies this shape at scale by splitting business domains into fixed layers, tracking per-domain quality, and enforcing architectural boundaries with custom linters. That is the practical lesson: constraints make speed safer.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wFdH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d9df77b-8cda-426d-b57a-fc337d29ae6e_3360x1776.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wFdH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d9df77b-8cda-426d-b57a-fc337d29ae6e_3360x1776.png 424w, https://substackcdn.com/image/fetch/$s_!wFdH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d9df77b-8cda-426d-b57a-fc337d29ae6e_3360x1776.png 848w, https://substackcdn.com/image/fetch/$s_!wFdH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d9df77b-8cda-426d-b57a-fc337d29ae6e_3360x1776.png 1272w, https://substackcdn.com/image/fetch/$s_!wFdH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d9df77b-8cda-426d-b57a-fc337d29ae6e_3360x1776.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wFdH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d9df77b-8cda-426d-b57a-fc337d29ae6e_3360x1776.png" width="1456" height="770" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1d9df77b-8cda-426d-b57a-fc337d29ae6e_3360x1776.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:770,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:101385,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/199442793?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d9df77b-8cda-426d-b57a-fc337d29ae6e_3360x1776.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!wFdH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d9df77b-8cda-426d-b57a-fc337d29ae6e_3360x1776.png 424w, https://substackcdn.com/image/fetch/$s_!wFdH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d9df77b-8cda-426d-b57a-fc337d29ae6e_3360x1776.png 848w, https://substackcdn.com/image/fetch/$s_!wFdH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d9df77b-8cda-426d-b57a-fc337d29ae6e_3360x1776.png 1272w, https://substackcdn.com/image/fetch/$s_!wFdH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d9df77b-8cda-426d-b57a-fc337d29ae6e_3360x1776.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>When to use.</strong> Any codebase where not every file is equally safe for an agent to touch. This usually starts once the codebase has legacy modules, high-churn hotspots, or undocumented domain rules.</p><p><strong>The main trade-off.</strong> Hotspot maps need calibration. The line between safe and unsafe is judgment, not a constant, so teams should revisit thresholds as the codebase and agent capabilities change.</p><h2><strong>4. Provenance Trails</strong></h2><p>Traditional attribution assumes a human wrote the code. In an AI-assisted codebase, that assumption breaks down because a line may come from a human, an agent, or a mixed session where the human accepted, edited, and committed generated output. <code>git blame</code> shows who committed the line, but not which model, prompt, skill, or tool contributed to it.</p><p>Provenance trails capture attribution for AI-generated changes with enough detail to reconstruct what happened later. At minimum, this means recording whether a change was human-authored, AI-authored, mixed, or unknown. A more useful trace also records the agent, model, prompt or task description, tool calls, installed skills, and the point where a human took over.</p><p>The practical benefit is not only auditability. Humans and agents can query the original intent behind a block of code before changing it again.</p><p><strong>Related tools and techniques.</strong></p><ul><li><p>Start with low-friction provenance in PR metadata: agent used, model, prompt summary, tool summary, and generated files.</p></li><li><p>Use <a href="https://github.com/git-ai-project/git-ai">Git AI</a> when you need commit-level or line-level tracking of AI-generated code.</p></li><li><p>Track attribution with <a href="https://git-scm.com/docs/git-notes">Git Notes</a> or another side channel when you do not want provenance metadata in source files.</p></li><li><p>Watch <a href="https://github.com/cursor/agent-trace">Agent Trace</a>, Cursor&#8217;s proposed format for AI code attribution across version-control systems.</p></li><li><p>Move from PR-level metadata to line-level attribution when audits, compliance, or long-lived generated code justify the cost.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bG7J!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd11b1dc5-e689-4d63-a298-c3f18250e77b_3600x2416.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bG7J!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd11b1dc5-e689-4d63-a298-c3f18250e77b_3600x2416.png 424w, https://substackcdn.com/image/fetch/$s_!bG7J!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd11b1dc5-e689-4d63-a298-c3f18250e77b_3600x2416.png 848w, https://substackcdn.com/image/fetch/$s_!bG7J!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd11b1dc5-e689-4d63-a298-c3f18250e77b_3600x2416.png 1272w, https://substackcdn.com/image/fetch/$s_!bG7J!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd11b1dc5-e689-4d63-a298-c3f18250e77b_3600x2416.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bG7J!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd11b1dc5-e689-4d63-a298-c3f18250e77b_3600x2416.png" width="1456" height="977" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d11b1dc5-e689-4d63-a298-c3f18250e77b_3600x2416.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:977,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:202505,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/199442793?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd11b1dc5-e689-4d63-a298-c3f18250e77b_3600x2416.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!bG7J!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd11b1dc5-e689-4d63-a298-c3f18250e77b_3600x2416.png 424w, https://substackcdn.com/image/fetch/$s_!bG7J!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd11b1dc5-e689-4d63-a298-c3f18250e77b_3600x2416.png 848w, https://substackcdn.com/image/fetch/$s_!bG7J!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd11b1dc5-e689-4d63-a298-c3f18250e77b_3600x2416.png 1272w, https://substackcdn.com/image/fetch/$s_!bG7J!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd11b1dc5-e689-4d63-a298-c3f18250e77b_3600x2416.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>When to use.</strong> Teams that need to audit AI contributions, debug generated code, or reconstruct why a piece of code exists months after it was merged.</p><p><strong>The main trade-off.</strong> Attribution metadata grows with the codebase. Storage, query cost, and developer workflow friction are real, so the harness should record provenance automatically instead of relying on manual discipline.</p><h2><strong>5. Agent Surface Inventory</strong></h2><p>The agent&#8217;s surface area is no longer just the model. It includes skills installed in the plugin directory, MCP servers it can call, marketplaces it pulls from, and credentials it can reach. Each one is a dependency, and some of them have more access than a library imported into application code.</p><p>Agent surface inventory treats that surface like a software supply chain. The team keeps an inventory of installed skills, plugins, MCP servers, versions, owners, permissions, credential scopes, and source locations. New entries go through review before they become part of the approved harness, and existing entries are scanned for risky flows.</p><p>This is the same basic discipline teams already apply to package dependencies: know what is installed, know who owns it, pin versions where possible, and review anything that gets access to internal systems.</p><p><strong>Related tools and techniques.</strong></p><ul><li><p>Maintain an allowlist of approved skills, plugins, and MCP servers.</p></li><li><p>Version-pin what is installed.</p></li><li><p>Use least-privilege credentials for MCP servers.</p></li><li><p>Scan local agent directories in CI or on developer machines.</p></li><li><p>Use <a href="https://github.com/snyk/agent-scan">Snyk Agent Scan</a> to inspect MCP servers, skills, and plugins for risks such as prompt injection, tool poisoning, toxic flows, hardcoded secrets, and unsafe credential handling.</p></li><li><p>Use <a href="https://atlas.mitre.org/">MITRE ATLAS</a> as a shared vocabulary for threat modeling AI systems and agentic attack paths.</p></li><li><p>Treat marketplace installs the same way you treat npm, Maven, or container dependencies: reviewed, versioned, and owned.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hpe5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a836818-83f9-446d-8465-9e9cd7798b2f_3280x1776.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hpe5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a836818-83f9-446d-8465-9e9cd7798b2f_3280x1776.png 424w, https://substackcdn.com/image/fetch/$s_!hpe5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a836818-83f9-446d-8465-9e9cd7798b2f_3280x1776.png 848w, https://substackcdn.com/image/fetch/$s_!hpe5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a836818-83f9-446d-8465-9e9cd7798b2f_3280x1776.png 1272w, https://substackcdn.com/image/fetch/$s_!hpe5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a836818-83f9-446d-8465-9e9cd7798b2f_3280x1776.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hpe5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a836818-83f9-446d-8465-9e9cd7798b2f_3280x1776.png" width="1456" height="788" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1a836818-83f9-446d-8465-9e9cd7798b2f_3280x1776.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:788,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:157421,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/199442793?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a836818-83f9-446d-8465-9e9cd7798b2f_3280x1776.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!hpe5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a836818-83f9-446d-8465-9e9cd7798b2f_3280x1776.png 424w, https://substackcdn.com/image/fetch/$s_!hpe5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a836818-83f9-446d-8465-9e9cd7798b2f_3280x1776.png 848w, https://substackcdn.com/image/fetch/$s_!hpe5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a836818-83f9-446d-8465-9e9cd7798b2f_3280x1776.png 1272w, https://substackcdn.com/image/fetch/$s_!hpe5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a836818-83f9-446d-8465-9e9cd7798b2f_3280x1776.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>When to use.</strong> Any team that allows skills, plugins, or MCP servers from sources the team did not author, or any team where agents can reach internal systems through credentials.</p><p><strong>The main trade-off.</strong> Scanners produce noise. Validate signal quality and false-positive rates in the team&#8217;s own environment before scan results become a hard gate, otherwise developers learn to ignore the output.</p><h2><strong>The takeaway</strong></h2><p>AI coding agents make first drafts cheaper, but trust still comes from engineering controls: fast feedback, semantic evals, refactor boundaries, provenance, and agent-surface inventory.</p><p>The <a href="https://www.thoughtworks.com/radar">Thoughtworks Technology Radar</a> is a useful signal that these practices are becoming normal engineering hygiene, not a separate AI ritual. The tools will change, but the quality layer will remain.</p><p>This builds on the foundation I covered in <strong><a href="https://generativeprogrammer.com/p/how-teams-scale-claude-code-across">How Teams Scale Claude Code Across Monorepos and Large Codebases</a></strong><a href="https://generativeprogrammer.com/p/how-teams-scale-claude-code-across">:</a> context, maps, skills, hooks, and shared harnesses. Once agents can find the right code, the next question is whether teams can trust what they change.</p>]]></content:encoded></item><item><title><![CDATA[How Teams Scale Claude Code Across Monorepos and Large Codebases]]></title><description><![CDATA[Thirteen patterns for making Claude Code work across monorepos, shared conventions, generated files, and organizational rollout.]]></description><link>https://generativeprogrammer.com/p/how-teams-scale-claude-code-across</link><guid isPermaLink="false">https://generativeprogrammer.com/p/how-teams-scale-claude-code-across</guid><dc:creator><![CDATA[Bilgin Ibryam]]></dc:creator><pubDate>Sun, 24 May 2026 13:49:54 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/ddd979fa-99f3-4394-a736-d516a26ce104_1200x630.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Large codebases expose different failure modes for AI coding assistants. They span teams, conventions, build systems, and naming rules. Generated files can outnumber source files, and the most useful answers often live outside the repo. An agent that reads files like a person can work in a starter project, but at scale it needs stronger signals about where to start, what to ignore, which commands apply, and which knowledge lives outside the codebase.</p><p>This post follows my <a href="https://generativeprogrammer.com/p/12-agentic-harness-patterns-from">12 Agentic Harness Patterns</a>. It looks at how engineering organizations adapt Claude Code for large codebases, based on Anthropic&#8217;s post on <a href="https://claude.com/blog/how-claude-code-works-in-large-codebases-best-practices-and-where-to-start?utm_source=generativeprogrammer&amp;utm_medium=referral&amp;utm_campaign=claude-code-large-codebases">how Claude Code works in large codebases</a>.</p><p>The 13 patterns fall into three groups:</p><ol><li><p>How Claude finds the right code context.</p></li><li><p>How the harness keeps a session effective.</p></li><li><p>How a working setup reaches every developer and stays maintained.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RR58!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa925cc57-169d-4129-884b-4b25461a3459_5200x3640.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RR58!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa925cc57-169d-4129-884b-4b25461a3459_5200x3640.png 424w, https://substackcdn.com/image/fetch/$s_!RR58!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa925cc57-169d-4129-884b-4b25461a3459_5200x3640.png 848w, https://substackcdn.com/image/fetch/$s_!RR58!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa925cc57-169d-4129-884b-4b25461a3459_5200x3640.png 1272w, https://substackcdn.com/image/fetch/$s_!RR58!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa925cc57-169d-4129-884b-4b25461a3459_5200x3640.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RR58!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa925cc57-169d-4129-884b-4b25461a3459_5200x3640.png" width="1456" height="1019" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a925cc57-169d-4129-884b-4b25461a3459_5200x3640.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1019,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1076396,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/199064873?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa925cc57-169d-4129-884b-4b25461a3459_5200x3640.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!RR58!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa925cc57-169d-4129-884b-4b25461a3459_5200x3640.png 424w, https://substackcdn.com/image/fetch/$s_!RR58!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa925cc57-169d-4129-884b-4b25461a3459_5200x3640.png 848w, https://substackcdn.com/image/fetch/$s_!RR58!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa925cc57-169d-4129-884b-4b25461a3459_5200x3640.png 1272w, https://substackcdn.com/image/fetch/$s_!RR58!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa925cc57-169d-4129-884b-4b25461a3459_5200x3640.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em><strong>Pattern map for scaling Claude Code in large engineering organizations</strong></em></figcaption></figure></div></li></ol><h2><strong>Navigating the Codebase</strong></h2><p>In a large codebase, Claude is only as useful as its ability to find the right context. Loading too much context slows it down and distracts it, while loading too little leaves it guessing. These four patterns make the repo legible before Claude starts reading files.</p><h3><strong>1. Context Cascade Pattern</strong></h3><p>A single root-level <code>CLAUDE.md</code> becomes either bloated or too vague. In a large repo, one file cannot carry every team&#8217;s conventions, commands, and gotchas without turning into noise.</p><p>The Context Cascade pattern puts <code>CLAUDE.md</code> files at multiple levels of the tree. The root file contains global rules, pointers, and critical gotchas. Subdirectory files hold local commands, conventions, and domain terms. Claude loads the files along the path from the working directory to the root, so guidance gets more specific near the code being edited.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!q6tq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7189e89e-2f60-41f2-ad2c-54adaae7bcac_3780x2936.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!q6tq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7189e89e-2f60-41f2-ad2c-54adaae7bcac_3780x2936.png 424w, https://substackcdn.com/image/fetch/$s_!q6tq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7189e89e-2f60-41f2-ad2c-54adaae7bcac_3780x2936.png 848w, https://substackcdn.com/image/fetch/$s_!q6tq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7189e89e-2f60-41f2-ad2c-54adaae7bcac_3780x2936.png 1272w, https://substackcdn.com/image/fetch/$s_!q6tq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7189e89e-2f60-41f2-ad2c-54adaae7bcac_3780x2936.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!q6tq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7189e89e-2f60-41f2-ad2c-54adaae7bcac_3780x2936.png" width="1456" height="1131" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7189e89e-2f60-41f2-ad2c-54adaae7bcac_3780x2936.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1131,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:393668,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/199064873?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7189e89e-2f60-41f2-ad2c-54adaae7bcac_3780x2936.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!q6tq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7189e89e-2f60-41f2-ad2c-54adaae7bcac_3780x2936.png 424w, https://substackcdn.com/image/fetch/$s_!q6tq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7189e89e-2f60-41f2-ad2c-54adaae7bcac_3780x2936.png 848w, https://substackcdn.com/image/fetch/$s_!q6tq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7189e89e-2f60-41f2-ad2c-54adaae7bcac_3780x2936.png 1272w, https://substackcdn.com/image/fetch/$s_!q6tq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7189e89e-2f60-41f2-ad2c-54adaae7bcac_3780x2936.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Start the session where the work happens.</strong> Running <code>claude</code> from <code>services/payments/</code> picks up the payments-specific tests, lint rules, and build commands. Starting from the repo root may only load the root guidance. This works well in service-oriented monorepos, while compiled-language monorepos with deep cross-directory dependencies may also need project-level build configuration.</p><p><strong>When to use.</strong> Any monorepo with multiple team conventions, or any codebase where subtrees follow different rules.</p><p><strong>The main trade-off.</strong> The cascade only works if teams keep each level focused. Session-level notes in the root file, or universal rules buried in a leaf directory, undo the benefit.</p><h3><strong>2. Repo Map Pattern</strong></h3><p>When directory names are opaque, Claude cannot infer where to start. Legacy partitions, internal codenames, domain slices, and years of reorgs all create the same problem: the right code exists, but the tree gives weak clues.</p><p>The Repo Map pattern adds a lightweight Markdown file at the repo root. It lists each top-level folder with a one-line description. Claude scans the map before opening folders, which reduces blind search.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!stWW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7bce2ba-f6ab-43aa-9dd2-9e1b253ffb30_3840x2456.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!stWW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7bce2ba-f6ab-43aa-9dd2-9e1b253ffb30_3840x2456.png 424w, https://substackcdn.com/image/fetch/$s_!stWW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7bce2ba-f6ab-43aa-9dd2-9e1b253ffb30_3840x2456.png 848w, https://substackcdn.com/image/fetch/$s_!stWW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7bce2ba-f6ab-43aa-9dd2-9e1b253ffb30_3840x2456.png 1272w, https://substackcdn.com/image/fetch/$s_!stWW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7bce2ba-f6ab-43aa-9dd2-9e1b253ffb30_3840x2456.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!stWW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7bce2ba-f6ab-43aa-9dd2-9e1b253ffb30_3840x2456.png" width="1456" height="931" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f7bce2ba-f6ab-43aa-9dd2-9e1b253ffb30_3840x2456.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:931,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:247153,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/199064873?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7bce2ba-f6ab-43aa-9dd2-9e1b253ffb30_3840x2456.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!stWW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7bce2ba-f6ab-43aa-9dd2-9e1b253ffb30_3840x2456.png 424w, https://substackcdn.com/image/fetch/$s_!stWW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7bce2ba-f6ab-43aa-9dd2-9e1b253ffb30_3840x2456.png 848w, https://substackcdn.com/image/fetch/$s_!stWW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7bce2ba-f6ab-43aa-9dd2-9e1b253ffb30_3840x2456.png 1272w, https://substackcdn.com/image/fetch/$s_!stWW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7bce2ba-f6ab-43aa-9dd2-9e1b253ffb30_3840x2456.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Keep the map boring and factual: folder name, owner if useful, purpose, and main entry points. Avoid architecture prose that will go stale.</p><p><strong>When to use.</strong> Repos with unconventional layouts, legacy partitions, internal codenames, or many top-level folders. It also helps new engineers orient themselves.</p><p><strong>The main trade-off.</strong> This adds one more file to maintain. Stale entries actively mislead Claude and send it down the wrong path with confidence.</p><h3><strong>3. Noise Filter Pattern</strong></h3><p>Generated files, build artifacts, and vendor code distract Claude in every session. A blanket exclusion rule helps most developers, but it can hurt the team that owns the generator and needs to inspect those files.</p><p>The Noise Filter pattern commits default exclusions in <code>.claude/settings.json</code>. Every developer inherits the same search and read defaults on clone. Developers who need exceptions override them locally without changing the team baseline.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!e-pV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F505c1364-ecc8-4efe-ae39-795344f50894_4000x2536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!e-pV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F505c1364-ecc8-4efe-ae39-795344f50894_4000x2536.png 424w, https://substackcdn.com/image/fetch/$s_!e-pV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F505c1364-ecc8-4efe-ae39-795344f50894_4000x2536.png 848w, https://substackcdn.com/image/fetch/$s_!e-pV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F505c1364-ecc8-4efe-ae39-795344f50894_4000x2536.png 1272w, https://substackcdn.com/image/fetch/$s_!e-pV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F505c1364-ecc8-4efe-ae39-795344f50894_4000x2536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!e-pV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F505c1364-ecc8-4efe-ae39-795344f50894_4000x2536.png" width="1456" height="923" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/505c1364-ecc8-4efe-ae39-795344f50894_4000x2536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:923,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:298615,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/199064873?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F505c1364-ecc8-4efe-ae39-795344f50894_4000x2536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!e-pV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F505c1364-ecc8-4efe-ae39-795344f50894_4000x2536.png 424w, https://substackcdn.com/image/fetch/$s_!e-pV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F505c1364-ecc8-4efe-ae39-795344f50894_4000x2536.png 848w, https://substackcdn.com/image/fetch/$s_!e-pV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F505c1364-ecc8-4efe-ae39-795344f50894_4000x2536.png 1272w, https://substackcdn.com/image/fetch/$s_!e-pV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F505c1364-ecc8-4efe-ae39-795344f50894_4000x2536.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>When to use.</strong> Any repo where generated code, vendor folders, or build outputs would otherwise pollute Claude&#8217;s searches.</p><p><strong>The main trade-off.</strong> Over-aggressive exclusions hide files that downstream code depends on. Local overrides are the safety valve, but only for developers who know they exist.</p><h3><strong>4. Symbol Lookup Pattern</strong></h3><p>A text search for <code>handleRequest</code> in a million-line codebase can return thousands of matches. Claude then burns context opening files just to find the relevant symbol. It can also pick the wrong one, such as two <code>User</code> classes in different modules or two functions with the same name in different languages.</p><p>The Symbol Lookup pattern exposes Language Server Protocol capabilities to Claude. Text matching becomes symbol resolution, and filtering happens before Claude reads files. This is especially valuable in strongly typed, multi-language codebases where mature language servers already exist.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dvhC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadb11b97-d6bd-4d7e-947e-15fc2b332b0a_4000x2376.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dvhC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadb11b97-d6bd-4d7e-947e-15fc2b332b0a_4000x2376.png 424w, https://substackcdn.com/image/fetch/$s_!dvhC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadb11b97-d6bd-4d7e-947e-15fc2b332b0a_4000x2376.png 848w, https://substackcdn.com/image/fetch/$s_!dvhC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadb11b97-d6bd-4d7e-947e-15fc2b332b0a_4000x2376.png 1272w, https://substackcdn.com/image/fetch/$s_!dvhC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadb11b97-d6bd-4d7e-947e-15fc2b332b0a_4000x2376.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dvhC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadb11b97-d6bd-4d7e-947e-15fc2b332b0a_4000x2376.png" width="1456" height="865" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/adb11b97-d6bd-4d7e-947e-15fc2b332b0a_4000x2376.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:865,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:373007,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/199064873?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadb11b97-d6bd-4d7e-947e-15fc2b332b0a_4000x2376.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!dvhC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadb11b97-d6bd-4d7e-947e-15fc2b332b0a_4000x2376.png 424w, https://substackcdn.com/image/fetch/$s_!dvhC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadb11b97-d6bd-4d7e-947e-15fc2b332b0a_4000x2376.png 848w, https://substackcdn.com/image/fetch/$s_!dvhC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadb11b97-d6bd-4d7e-947e-15fc2b332b0a_4000x2376.png 1272w, https://substackcdn.com/image/fetch/$s_!dvhC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadb11b97-d6bd-4d7e-947e-15fc2b332b0a_4000x2376.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>When to use.</strong> Multi-language codebases, repos with common function names, and ecosystems with mature LSP support such as C, C++, Java, C#, and TypeScript.</p><p><strong>The main trade-off.</strong> The setup cost is real. Each language needs the right code-intelligence plugin and language server binary, and ecosystems with weak LSP support will return less value.</p><h2><strong>Scaling the Harness</strong></h2><p>The harness, not the model alone, determines how well Claude Code performs in a large repo. Here, harness means <code>CLAUDE.md</code>, hooks, skills, plugins, MCP servers, and subagents. These five patterns keep sessions useful as the codebase grows.</p><h3><strong>5. Just-in-Time Skill Pattern</strong></h3><p>A large codebase carries many task types: security review, docs, deploys, migrations, release checks, and more. Only one or two matter in a given session, so loading every workflow into <code>CLAUDE.md</code> makes every session pay for knowledge it does not need.</p><p>The Just-in-Time Skill pattern packages each specialized workflow as a skill that loads only when the task calls for it. The base context stays small, and task-specific knowledge appears when needed.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!x58W!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc26bbbcf-c9ca-4a58-9b31-efa79f067b10_3960x2376.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!x58W!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc26bbbcf-c9ca-4a58-9b31-efa79f067b10_3960x2376.png 424w, https://substackcdn.com/image/fetch/$s_!x58W!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc26bbbcf-c9ca-4a58-9b31-efa79f067b10_3960x2376.png 848w, https://substackcdn.com/image/fetch/$s_!x58W!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc26bbbcf-c9ca-4a58-9b31-efa79f067b10_3960x2376.png 1272w, https://substackcdn.com/image/fetch/$s_!x58W!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc26bbbcf-c9ca-4a58-9b31-efa79f067b10_3960x2376.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!x58W!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc26bbbcf-c9ca-4a58-9b31-efa79f067b10_3960x2376.png" width="1456" height="874" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c26bbbcf-c9ca-4a58-9b31-efa79f067b10_3960x2376.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:874,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:317714,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/199064873?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc26bbbcf-c9ca-4a58-9b31-efa79f067b10_3960x2376.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!x58W!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc26bbbcf-c9ca-4a58-9b31-efa79f067b10_3960x2376.png 424w, https://substackcdn.com/image/fetch/$s_!x58W!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc26bbbcf-c9ca-4a58-9b31-efa79f067b10_3960x2376.png 848w, https://substackcdn.com/image/fetch/$s_!x58W!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc26bbbcf-c9ca-4a58-9b31-efa79f067b10_3960x2376.png 1272w, https://substackcdn.com/image/fetch/$s_!x58W!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc26bbbcf-c9ca-4a58-9b31-efa79f067b10_3960x2376.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Keep each skill narrow: when it should trigger, what steps it follows, which commands it runs, and what common failures mean.</p><p><strong>When to use.</strong> Any codebase with more than a handful of distinct task types, especially when workflows would dwarf the actual coding context.</p><p><strong>The main trade-off.</strong> Activation logic needs care. Skills that trigger too eagerly bloat context; skills that trigger too narrowly stay dormant when they would have helped.</p><h3><strong>6. Scoped Skill Pattern</strong></h3><p>In a monorepo, a payments deployment skill should not load while someone edits the inventory service. Generic skill activation ignores where the work is happening, which turns useful expertise into noise.</p><p>The Scoped Skill pattern binds skills to specific subtrees. Teams can place skill files under a subtree&#8217;s <code>.claude/skills/</code> directory or use <code>paths</code> globs in the skill frontmatter. A payments deployment skill becomes visible in payments sessions and invisible elsewhere.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yT6L!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c626d3e-26f2-4977-a316-e244c6d2b653_3680x2276.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yT6L!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c626d3e-26f2-4977-a316-e244c6d2b653_3680x2276.png 424w, https://substackcdn.com/image/fetch/$s_!yT6L!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c626d3e-26f2-4977-a316-e244c6d2b653_3680x2276.png 848w, https://substackcdn.com/image/fetch/$s_!yT6L!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c626d3e-26f2-4977-a316-e244c6d2b653_3680x2276.png 1272w, https://substackcdn.com/image/fetch/$s_!yT6L!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c626d3e-26f2-4977-a316-e244c6d2b653_3680x2276.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yT6L!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c626d3e-26f2-4977-a316-e244c6d2b653_3680x2276.png" width="1456" height="901" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7c626d3e-26f2-4977-a316-e244c6d2b653_3680x2276.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:901,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:345121,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/199064873?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c626d3e-26f2-4977-a316-e244c6d2b653_3680x2276.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!yT6L!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c626d3e-26f2-4977-a316-e244c6d2b653_3680x2276.png 424w, https://substackcdn.com/image/fetch/$s_!yT6L!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c626d3e-26f2-4977-a316-e244c6d2b653_3680x2276.png 848w, https://substackcdn.com/image/fetch/$s_!yT6L!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c626d3e-26f2-4977-a316-e244c6d2b653_3680x2276.png 1272w, https://substackcdn.com/image/fetch/$s_!yT6L!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c626d3e-26f2-4977-a316-e244c6d2b653_3680x2276.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>When to use.</strong> Multi-team monorepos where subtree-specific procedures differ enough that cross-loading them is harmful.</p><p><strong>The main trade-off.</strong> Skill ownership can outlive team ownership. When a path changes hands, its skill bindings need review.</p><h3><strong>7. Scout Subagent Pattern</strong></h3><p>Mapping a subsystem and editing code are different jobs. Doing both in one session burns the same context window on exploration, notes, and implementation. By the time editing starts, the context may already be polluted with irrelevant detail.</p><p>The Scout Subagent pattern uses a read-only subagent for exploration. The scout maps the subsystem in its own context, writes findings to a file, and returns the path. The main agent then reads the findings and edits with a cleaner context.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hQ_x!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddc47bcc-ca95-44fd-a3a6-940b3f000359_3800x2456.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hQ_x!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddc47bcc-ca95-44fd-a3a6-940b3f000359_3800x2456.png 424w, https://substackcdn.com/image/fetch/$s_!hQ_x!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddc47bcc-ca95-44fd-a3a6-940b3f000359_3800x2456.png 848w, https://substackcdn.com/image/fetch/$s_!hQ_x!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddc47bcc-ca95-44fd-a3a6-940b3f000359_3800x2456.png 1272w, https://substackcdn.com/image/fetch/$s_!hQ_x!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddc47bcc-ca95-44fd-a3a6-940b3f000359_3800x2456.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hQ_x!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddc47bcc-ca95-44fd-a3a6-940b3f000359_3800x2456.png" width="1456" height="941" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ddc47bcc-ca95-44fd-a3a6-940b3f000359_3800x2456.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:941,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:307299,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/199064873?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddc47bcc-ca95-44fd-a3a6-940b3f000359_3800x2456.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!hQ_x!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddc47bcc-ca95-44fd-a3a6-940b3f000359_3800x2456.png 424w, https://substackcdn.com/image/fetch/$s_!hQ_x!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddc47bcc-ca95-44fd-a3a6-940b3f000359_3800x2456.png 848w, https://substackcdn.com/image/fetch/$s_!hQ_x!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddc47bcc-ca95-44fd-a3a6-940b3f000359_3800x2456.png 1272w, https://substackcdn.com/image/fetch/$s_!hQ_x!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddc47bcc-ca95-44fd-a3a6-940b3f000359_3800x2456.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>A useful scout output is concrete: relevant files, ownership boundaries, important call paths, tests to run, and risks to avoid.</p><p><strong>When to use.</strong> Refactors, cross-cutting bug fixes, security audits, or integrations with code Claude has not seen before.</p><p><strong>The main trade-off.</strong> This adds another round-trip, and the scout&#8217;s findings are only a snapshot. If later edits invalidate an assumption, the main agent must notice and re-check.</p><h3><strong>8. Search-as-a-Tool Pattern</strong></h3><p>Claude&#8217;s default tools work inside the repo, but much of the knowledge a developer needs does not. Design docs, postmortems, runbooks, tickets, dashboards, and incident notes often contain the answer Claude needs.</p><p>The Search-as-a-Tool pattern wraps the organization&#8217;s existing search infrastructure as a tool Claude can call. That search backend might be Elasticsearch, Glean, an internal knowledge graph, or another system. MCP is only the mechanism; the pattern is making institutional knowledge accessible from the coding session.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cVQG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21f8d721-df47-40bd-a1e8-75c6b01065da_3720x2496.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cVQG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21f8d721-df47-40bd-a1e8-75c6b01065da_3720x2496.png 424w, https://substackcdn.com/image/fetch/$s_!cVQG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21f8d721-df47-40bd-a1e8-75c6b01065da_3720x2496.png 848w, https://substackcdn.com/image/fetch/$s_!cVQG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21f8d721-df47-40bd-a1e8-75c6b01065da_3720x2496.png 1272w, https://substackcdn.com/image/fetch/$s_!cVQG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21f8d721-df47-40bd-a1e8-75c6b01065da_3720x2496.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cVQG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21f8d721-df47-40bd-a1e8-75c6b01065da_3720x2496.png" width="1456" height="977" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/21f8d721-df47-40bd-a1e8-75c6b01065da_3720x2496.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:977,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:257779,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/199064873?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21f8d721-df47-40bd-a1e8-75c6b01065da_3720x2496.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!cVQG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21f8d721-df47-40bd-a1e8-75c6b01065da_3720x2496.png 424w, https://substackcdn.com/image/fetch/$s_!cVQG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21f8d721-df47-40bd-a1e8-75c6b01065da_3720x2496.png 848w, https://substackcdn.com/image/fetch/$s_!cVQG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21f8d721-df47-40bd-a1e8-75c6b01065da_3720x2496.png 1272w, https://substackcdn.com/image/fetch/$s_!cVQG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21f8d721-df47-40bd-a1e8-75c6b01065da_3720x2496.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>When to use.</strong> Organizations where Claude routinely needs information outside the repo and where internal search already exists.</p><p><strong>The main trade-off.</strong> The search tool becomes critical infrastructure, so outages affect every session that depends on it. Access control also matters because Claude inherits the permissions behind the tool.</p><h3><strong>9. Deterministic Checks Pattern</strong></h3><p>Instructions such as &#8220;always run the linter before committing&#8221; are easy to forget. They compete with every other instruction in context and produce inconsistent behavior across sessions.</p><p>The Deterministic Checks pattern moves quality enforcement from instructions into hooks. Linting, formatting, type-checking, and targeted tests run on defined events whether Claude remembers them or not.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!GuME!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09b50329-0170-4250-a0a1-3fee6f46fde7_3760x2216.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GuME!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09b50329-0170-4250-a0a1-3fee6f46fde7_3760x2216.png 424w, https://substackcdn.com/image/fetch/$s_!GuME!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09b50329-0170-4250-a0a1-3fee6f46fde7_3760x2216.png 848w, https://substackcdn.com/image/fetch/$s_!GuME!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09b50329-0170-4250-a0a1-3fee6f46fde7_3760x2216.png 1272w, https://substackcdn.com/image/fetch/$s_!GuME!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09b50329-0170-4250-a0a1-3fee6f46fde7_3760x2216.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GuME!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09b50329-0170-4250-a0a1-3fee6f46fde7_3760x2216.png" width="1456" height="858" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/09b50329-0170-4250-a0a1-3fee6f46fde7_3760x2216.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:858,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:212145,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/199064873?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09b50329-0170-4250-a0a1-3fee6f46fde7_3760x2216.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!GuME!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09b50329-0170-4250-a0a1-3fee6f46fde7_3760x2216.png 424w, https://substackcdn.com/image/fetch/$s_!GuME!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09b50329-0170-4250-a0a1-3fee6f46fde7_3760x2216.png 848w, https://substackcdn.com/image/fetch/$s_!GuME!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09b50329-0170-4250-a0a1-3fee6f46fde7_3760x2216.png 1272w, https://substackcdn.com/image/fetch/$s_!GuME!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09b50329-0170-4250-a0a1-3fee6f46fde7_3760x2216.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>When to use.</strong> Any rule that can be expressed as &#8220;this check must always run on this event&#8221;: lint on save, format before commit, type-check after file write, or run a focused test after a generated change.</p><p><strong>The main trade-off.</strong> Slow hooks drag every session, and hooks that fail noisily interrupt Claude&#8217;s flow. Checks should be fast, focused, and easy to interpret.</p><h2><strong>Rolling Out the Harness</strong></h2><p>The technical patterns only matter if they reach developers and stay maintained. These four patterns cover packaging, rollout, governance, and continuous improvement. In most organizations, a single DRI owns the harness. In larger ones, this becomes an &#8220;agent manager&#8221; role: a hybrid PM and engineer responsible for settings, permissions, plugin catalogs, and <code>CLAUDE.md</code> conventions.</p><h3><strong>10. Harness Bundle Pattern</strong></h3><p>Good Claude Code setups often stay tribal. One engineer wires up a useful mix of skills, hooks, and MCP servers on their machine. Another team rebuilds the same thing months later, usually worse. New engineers start from zero.</p><p>The Harness Bundle pattern packages skills, hooks, and MCP configuration into a single installable plugin. New engineers install it on day one and inherit the team&#8217;s working setup. Updates flow through a managed channel instead of copy-pasted local config.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cEfQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03810b18-62b6-44f0-a854-e280566705a1_3800x2536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cEfQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03810b18-62b6-44f0-a854-e280566705a1_3800x2536.png 424w, https://substackcdn.com/image/fetch/$s_!cEfQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03810b18-62b6-44f0-a854-e280566705a1_3800x2536.png 848w, https://substackcdn.com/image/fetch/$s_!cEfQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03810b18-62b6-44f0-a854-e280566705a1_3800x2536.png 1272w, https://substackcdn.com/image/fetch/$s_!cEfQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03810b18-62b6-44f0-a854-e280566705a1_3800x2536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cEfQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03810b18-62b6-44f0-a854-e280566705a1_3800x2536.png" width="1456" height="972" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/03810b18-62b6-44f0-a854-e280566705a1_3800x2536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:972,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:285562,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/199064873?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03810b18-62b6-44f0-a854-e280566705a1_3800x2536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!cEfQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03810b18-62b6-44f0-a854-e280566705a1_3800x2536.png 424w, https://substackcdn.com/image/fetch/$s_!cEfQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03810b18-62b6-44f0-a854-e280566705a1_3800x2536.png 848w, https://substackcdn.com/image/fetch/$s_!cEfQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03810b18-62b6-44f0-a854-e280566705a1_3800x2536.png 1272w, https://substackcdn.com/image/fetch/$s_!cEfQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03810b18-62b6-44f0-a854-e280566705a1_3800x2536.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>When to use.</strong> Whenever a useful configuration exists on one machine and the team would benefit from sharing it. Most teams reach that point within weeks of adoption.</p><p><strong>The main trade-off.</strong> Bundles ossify. A plugin that everyone installs becomes hard to change without coordinating across consumers, just like any shared library.</p><h3><strong>11. Day-One Harness Pattern</strong></h3><p>A developer&#8217;s first Claude Code session strongly shapes adoption. If they must assemble the harness before getting value, many bounce. Bottom-up enthusiasm can also fragment into incompatible local setups.</p><p>The Day-One Harness pattern builds the harness before broad access opens. A small team prepares the core plugins, MCP servers, skills, hooks, and docs so a developer&#8217;s first session works with the codebase, not against it.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wdR1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c865736-bdb6-4ef5-9c6d-c3768089fca5_3880x2536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wdR1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c865736-bdb6-4ef5-9c6d-c3768089fca5_3880x2536.png 424w, https://substackcdn.com/image/fetch/$s_!wdR1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c865736-bdb6-4ef5-9c6d-c3768089fca5_3880x2536.png 848w, https://substackcdn.com/image/fetch/$s_!wdR1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c865736-bdb6-4ef5-9c6d-c3768089fca5_3880x2536.png 1272w, https://substackcdn.com/image/fetch/$s_!wdR1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c865736-bdb6-4ef5-9c6d-c3768089fca5_3880x2536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wdR1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c865736-bdb6-4ef5-9c6d-c3768089fca5_3880x2536.png" width="1456" height="952" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0c865736-bdb6-4ef5-9c6d-c3768089fca5_3880x2536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:952,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:323583,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/199064873?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c865736-bdb6-4ef5-9c6d-c3768089fca5_3880x2536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!wdR1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c865736-bdb6-4ef5-9c6d-c3768089fca5_3880x2536.png 424w, https://substackcdn.com/image/fetch/$s_!wdR1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c865736-bdb6-4ef5-9c6d-c3768089fca5_3880x2536.png 848w, https://substackcdn.com/image/fetch/$s_!wdR1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c865736-bdb6-4ef5-9c6d-c3768089fca5_3880x2536.png 1272w, https://substackcdn.com/image/fetch/$s_!wdR1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c865736-bdb6-4ef5-9c6d-c3768089fca5_3880x2536.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>When to use.</strong> Any organization rolling out Claude Code beyond a pilot, especially when the codebase has non-obvious conventions.</p><p><strong>The main trade-off.</strong> Pre-rollout work costs time and people. Skipping it is cheaper at first, but usually creates a long tail of fragmented setups to clean up later.</p><h3><strong>12. Curated Starter Set Pattern</strong></h3><p>Open access to every skill and plugin creates security, governance, and consistency problems. A misconfigured MCP server can read too much. An unreviewed skill can push developers toward unsafe workflows. Blocking everything kills adoption.</p><p>The Curated Starter Set pattern starts narrow: approved skills and plugins, required review processes, and limited initial access. The set expands as confidence grows and edge cases become clear.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KRk4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7a4d5bd-f78e-472d-8553-10ed9582903c_3960x2456.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KRk4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7a4d5bd-f78e-472d-8553-10ed9582903c_3960x2456.png 424w, https://substackcdn.com/image/fetch/$s_!KRk4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7a4d5bd-f78e-472d-8553-10ed9582903c_3960x2456.png 848w, https://substackcdn.com/image/fetch/$s_!KRk4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7a4d5bd-f78e-472d-8553-10ed9582903c_3960x2456.png 1272w, https://substackcdn.com/image/fetch/$s_!KRk4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7a4d5bd-f78e-472d-8553-10ed9582903c_3960x2456.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KRk4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7a4d5bd-f78e-472d-8553-10ed9582903c_3960x2456.png" width="1456" height="903" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e7a4d5bd-f78e-472d-8553-10ed9582903c_3960x2456.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:903,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:331349,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/199064873?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7a4d5bd-f78e-472d-8553-10ed9582903c_3960x2456.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!KRk4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7a4d5bd-f78e-472d-8553-10ed9582903c_3960x2456.png 424w, https://substackcdn.com/image/fetch/$s_!KRk4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7a4d5bd-f78e-472d-8553-10ed9582903c_3960x2456.png 848w, https://substackcdn.com/image/fetch/$s_!KRk4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7a4d5bd-f78e-472d-8553-10ed9582903c_3960x2456.png 1272w, https://substackcdn.com/image/fetch/$s_!KRk4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7a4d5bd-f78e-472d-8553-10ed9582903c_3960x2456.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>When to use.</strong> Regulated industries such as finance, healthcare, and defense. It is also useful in any large organization where security review comes before broad adoption.</p><p><strong>The main trade-off.</strong> An overly conservative starter set frustrates early advocates. The expansion cadence matters as much as the starting set; slow curation makes the rollout feel blocked.</p><h3><strong>13. Self-Improving Hook Pattern</strong></h3><p>Claude&#8217;s mistakes are visible during a session and then easy to forget. The next session repeats them. <code>CLAUDE.md</code> improves only if someone updates it while the lesson is still fresh.</p><p>The Self-Improving Hook pattern runs a stop hook at session end. The hook reviews the transcript and proposes <code>CLAUDE.md</code> updates, including additions and retirements. It also surfaces drift as models and tools improve. A workaround that helped an older model may constrain the current one; a shim for a missing tool may become dead weight once native support lands.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IV-R!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a1a49d8-8dc7-467a-903c-beea2b69e530_3600x2776.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IV-R!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a1a49d8-8dc7-467a-903c-beea2b69e530_3600x2776.png 424w, https://substackcdn.com/image/fetch/$s_!IV-R!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a1a49d8-8dc7-467a-903c-beea2b69e530_3600x2776.png 848w, https://substackcdn.com/image/fetch/$s_!IV-R!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a1a49d8-8dc7-467a-903c-beea2b69e530_3600x2776.png 1272w, https://substackcdn.com/image/fetch/$s_!IV-R!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a1a49d8-8dc7-467a-903c-beea2b69e530_3600x2776.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IV-R!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a1a49d8-8dc7-467a-903c-beea2b69e530_3600x2776.png" width="1456" height="1123" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2a1a49d8-8dc7-467a-903c-beea2b69e530_3600x2776.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1123,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:327569,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/199064873?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a1a49d8-8dc7-467a-903c-beea2b69e530_3600x2776.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!IV-R!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a1a49d8-8dc7-467a-903c-beea2b69e530_3600x2776.png 424w, https://substackcdn.com/image/fetch/$s_!IV-R!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a1a49d8-8dc7-467a-903c-beea2b69e530_3600x2776.png 848w, https://substackcdn.com/image/fetch/$s_!IV-R!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a1a49d8-8dc7-467a-903c-beea2b69e530_3600x2776.png 1272w, https://substackcdn.com/image/fetch/$s_!IV-R!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a1a49d8-8dc7-467a-903c-beea2b69e530_3600x2776.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>When to use.</strong> Teams that actively maintain <code>CLAUDE.md</code> and benefit from small, frequent improvements. It pairs especially well with the Context Cascade pattern.</p><p><strong>The main trade-off.</strong> Without curation, suggestions pile up and noise overtakes signal. The hook proposes changes, but humans still decide what to merge.</p><h2><strong>The takeaway</strong></h2><p>Claude Code can work well in large codebases, but not because it magically understands the whole repo. It works when the codebase gives it the same advantages a good engineer has: a clear starting point, local conventions near the code, a map when the structure is not obvious, and tools that expose knowledge outside the repo.</p><p>The practical setup is not one giant <code>CLAUDE.md</code>. It is a fitted harness around the existing codebase: a small root file, local <code>CLAUDE.md</code> files, repository maps, path-scoped skills, fast hooks, LSP-backed symbol lookup, and search tools for internal knowledge. Together, these narrow the work before Claude spends context.</p><p>The best large-codebase setups look ordinary from the outside. They reduce search waste, load context just in time, enforce checks consistently, and make one good configuration available to every developer. The goal is not more agent infrastructure. It is a codebase that Claude Code can enter at the right place, read with the right hints, and change without dragging the whole repository into the session.</p>]]></content:encoded></item><item><title><![CDATA[9 Principles That Separate Useful Skills from Markdown Essays]]></title><description><![CDATA[A practical framework for deciding when a skill should fire, how it should run, and how it should survive over time.]]></description><link>https://generativeprogrammer.com/p/9-principles-that-separate-useful</link><guid isPermaLink="false">https://generativeprogrammer.com/p/9-principles-that-separate-useful</guid><dc:creator><![CDATA[Bilgin Ibryam]]></dc:creator><pubDate>Sun, 10 May 2026 15:21:44 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/eda9f72b-e2bc-40f3-be15-cd2710766da3_4480x2252.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Software engineering settled long ago on a small set of higher-level principles that sit above specific implementation patterns: SOLID, KISS, YAGNI, separation of concerns. They tell you what to value when designing a system, not what to type. They have outlasted dozens of pattern catalogues because they operate at a different altitude.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9R4Z!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2591d2ae-6935-4493-a75d-9cea7556e4a8_4480x2252.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9R4Z!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2591d2ae-6935-4493-a75d-9cea7556e4a8_4480x2252.png 424w, https://substackcdn.com/image/fetch/$s_!9R4Z!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2591d2ae-6935-4493-a75d-9cea7556e4a8_4480x2252.png 848w, https://substackcdn.com/image/fetch/$s_!9R4Z!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2591d2ae-6935-4493-a75d-9cea7556e4a8_4480x2252.png 1272w, https://substackcdn.com/image/fetch/$s_!9R4Z!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2591d2ae-6935-4493-a75d-9cea7556e4a8_4480x2252.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9R4Z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2591d2ae-6935-4493-a75d-9cea7556e4a8_4480x2252.png" width="1456" height="732" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2591d2ae-6935-4493-a75d-9cea7556e4a8_4480x2252.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:732,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:499162,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/197111813?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2591d2ae-6935-4493-a75d-9cea7556e4a8_4480x2252.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!9R4Z!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2591d2ae-6935-4493-a75d-9cea7556e4a8_4480x2252.png 424w, https://substackcdn.com/image/fetch/$s_!9R4Z!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2591d2ae-6935-4493-a75d-9cea7556e4a8_4480x2252.png 848w, https://substackcdn.com/image/fetch/$s_!9R4Z!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2591d2ae-6935-4493-a75d-9cea7556e4a8_4480x2252.png 1272w, https://substackcdn.com/image/fetch/$s_!9R4Z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2591d2ae-6935-4493-a75d-9cea7556e4a8_4480x2252.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Skills come in many shapes: task workflows, reference guides, persona prompts, tool wrappers. The tactical advice for each is in my <a href="https://generativeprogrammer.com/p/skill-authoring-patterns-from-anthropics">previous post</a> on skill authoring patterns. Underneath those tactics sits the same kind of higher-level layer: a small set of principles that cut across every skill type. They are not rules about what to put inside a <code>SKILL.md</code>. They are the questions you ask <em>before</em> reaching for any specific pattern: should this skill exist at all, can it be found when it matters, and will it still be useful six months from now?</p><p>Nine principles in three acts: getting selected, running reliably, and surviving contact with reality.</p><h2><strong>Act 1: Getting Selected</strong></h2><p>These principles apply at the moment a request arrives, before the skill body has run. They cover whether the skill is recognised at all, what it costs to bring into context, and what shape its content needs to take to actually drive work. A skill that fails here never gets the chance to be useful.</p><h3><strong>1. Metadata is the gate</strong></h3><p>At session start, Claude does not read every <code>SKILL.md</code>. It sees the skill listing: metadata such as the <code>name</code> and <code>description</code>; in Claude Code, any <code>when_to_use</code> text can also be included in that listing. A vague description (&#8221;helps with documents&#8221;) never fires when it should, fires when it shouldn&#8217;t, or competes with three other skills for the same trigger.</p><p>The principle: <strong>the description is not a summary; it is the main signal at selection time.</strong> A skill that fails the metadata-only round never runs.</p><p>Two of the <a href="https://generativeprogrammer.com/p/skill-authoring-patterns-from-anthropics">skill authoring patterns</a> serve this principle from opposite sides. <em>Activation Metadata</em> is how you pull the right skill in: positive triggers, domain keywords, and the &#8220;pushy&#8221; framing Anthropic&#8217;s <code>skill-creator</code> recommends. <em>Exclusion Clause</em> is how you push the wrong ones out: &#8220;Do NOT use for blog articles, newsletters, or long-form content.&#8221; Same goal, opposite directions.</p><p>The same skill, weak and strong:</p><blockquote><p><em>Weak:</em> &#8220;Helps with dashboards and visualization.&#8221;</p><p><em>Strong:</em> &#8220;Use whenever the user mentions dashboards, internal metrics, or data visualisation, even if they do not explicitly ask for a dashboard. Do NOT use for blog charts, marketing graphics, or one-off notebook plots.&#8221;</p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!GCQY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b657640-6919-419a-8eac-ada6658da099_4080x1840.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GCQY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b657640-6919-419a-8eac-ada6658da099_4080x1840.png 424w, https://substackcdn.com/image/fetch/$s_!GCQY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b657640-6919-419a-8eac-ada6658da099_4080x1840.png 848w, https://substackcdn.com/image/fetch/$s_!GCQY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b657640-6919-419a-8eac-ada6658da099_4080x1840.png 1272w, https://substackcdn.com/image/fetch/$s_!GCQY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b657640-6919-419a-8eac-ada6658da099_4080x1840.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GCQY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b657640-6919-419a-8eac-ada6658da099_4080x1840.png" width="1456" height="657" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8b657640-6919-419a-8eac-ada6658da099_4080x1840.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:657,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:167641,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/197111813?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b657640-6919-419a-8eac-ada6658da099_4080x1840.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!GCQY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b657640-6919-419a-8eac-ada6658da099_4080x1840.png 424w, https://substackcdn.com/image/fetch/$s_!GCQY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b657640-6919-419a-8eac-ada6658da099_4080x1840.png 848w, https://substackcdn.com/image/fetch/$s_!GCQY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b657640-6919-419a-8eac-ada6658da099_4080x1840.png 1272w, https://substackcdn.com/image/fetch/$s_!GCQY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b657640-6919-419a-8eac-ada6658da099_4080x1840.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This principle guides the trade-off between <em>discoverability</em> and <em>budget</em>. The <a href="https://platform.claude.com/docs/en/agents-and-tools/agent-skills/overview">Agent Skills docs</a> cap <code>description</code> at 1024 characters; <a href="https://code.claude.com/docs/en/skills">Claude Code</a> truncates <code>description</code> plus <code>when_to_use</code> at 1536 characters in the skill listing. Every sentence competes with positive triggers, exclusions, and domain keywords for the same finite slot, so being precise about the skill&#8217;s intent matters more than covering every edge case. Write the description as if those characters cost real money. In practice, they do.</p><h3><strong>2. Disclose progressively</strong></h3><p>Context is a shared budget. Every token your skill spends is a token unavailable to every other skill, the conversation history, and the user&#8217;s actual request. A skill that re-explains what JSON is, what a database is, or how an API works wastes that budget on things Claude already knows. Multiply verbose metadata across many installed skills, or bloated <code>SKILL.md</code> bodies across a multi-skill task, and useful context disappears before the hard work begins.</p><p>The principle: <strong>load only what the current task needs, and load it only when it needs it.</strong> Metadata loads at session start; <code>SKILL.md</code> loads only when the skill is triggered; reference files load only when the current task points to them. Scripts in <code>scripts/</code> can be invoked via Bash, so their source never has to enter context. Only their output does.</p><p>Two of the 14 skill patterns serve this principle. <em>Context Budget</em> is the discipline of being frugal with the words you do load. <em>Progressive Disclosure</em> is the structural technique of tiering what gets loaded when. The halves are inseparable: frugality without tiering still loads everything in full; tiering without frugality just spreads the bloat across more files.</p><p>A bloated and a frugal opening for the same skill:</p><blockquote><p><em>Bloated:</em> &#8220;A database is a structured collection of data... Migrations are scripts that update the schema... PostgreSQL is a relational database...&#8221;</p><p><em>Frugal:</em> &#8220;Schema changes go in <code>supabase/migrations/</code>, named <code>YYYYMMDDHHMMSS_description.sql</code>. See <code>references/migration-format.md</code> for the four required artifacts.&#8221;</p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Dz0b!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1181e5b2-b6ac-4c4f-b874-8b1407645d69_4080x2200.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Dz0b!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1181e5b2-b6ac-4c4f-b874-8b1407645d69_4080x2200.png 424w, https://substackcdn.com/image/fetch/$s_!Dz0b!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1181e5b2-b6ac-4c4f-b874-8b1407645d69_4080x2200.png 848w, https://substackcdn.com/image/fetch/$s_!Dz0b!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1181e5b2-b6ac-4c4f-b874-8b1407645d69_4080x2200.png 1272w, https://substackcdn.com/image/fetch/$s_!Dz0b!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1181e5b2-b6ac-4c4f-b874-8b1407645d69_4080x2200.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Dz0b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1181e5b2-b6ac-4c4f-b874-8b1407645d69_4080x2200.png" width="1456" height="785" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1181e5b2-b6ac-4c4f-b874-8b1407645d69_4080x2200.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:785,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:158118,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/197111813?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1181e5b2-b6ac-4c4f-b874-8b1407645d69_4080x2200.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Dz0b!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1181e5b2-b6ac-4c4f-b874-8b1407645d69_4080x2200.png 424w, https://substackcdn.com/image/fetch/$s_!Dz0b!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1181e5b2-b6ac-4c4f-b874-8b1407645d69_4080x2200.png 848w, https://substackcdn.com/image/fetch/$s_!Dz0b!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1181e5b2-b6ac-4c4f-b874-8b1407645d69_4080x2200.png 1272w, https://substackcdn.com/image/fetch/$s_!Dz0b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1181e5b2-b6ac-4c4f-b874-8b1407645d69_4080x2200.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This principle guides the trade-off between <em>frugality</em> and <em>model strength</em>. What reads as crisply concise to Sonnet may be too terse for Haiku, which needs more guidance to reach the same outcome. If you target multiple models, write to the level the weakest one needs and let stronger models skim. Frugality that breaks weaker models is false economy: you saved the tokens, then paid them back in retries and corrections.</p><h3><strong>3. Process over prose</strong></h3><p>A skill that opens with two thousand words on the philosophy of testing gets read, generates a plausible summary, and still lets the agent skip the actual testing. Reference essays are not actionable. Many &#8220;AI rules&#8221; repos that ship as long markdown files do little in practice because they describe good behaviour instead of making the agent perform it.</p><p>The principle, from <a href="https://addyosmani.com/blog/agent-skills/">Addy Osmani</a>: <strong>a skill is a workflow with checkpoints, not reference documentation.</strong> If a junior engineer reading it would not know what to <em>do</em> next, it is an essay, not a skill. Steps with exit criteria beat essays without them.</p><p>Several patterns from the previous post relate to this principle from different angles. <em>Template Scaffold</em> gives the skill a fixed shape to fill in. <em>Execution Checklist</em> gives it ordered steps with checkboxes. The whole <em>Workflow control</em> family, including self-correcting loops and plan-validate-execute, only makes sense once the skill is a workflow in the first place.</p><p>The same TDD content in two shapes:</p><blockquote><p><em>Prose (rejected):</em> &#8220;Test-driven development is the practice of writing tests before implementation. It produces better-designed code by forcing the author to consider the interface before the internals...&#8221;</p><p><em>Process (kept):</em> &#8220;1. Write the failing test. 2. Run it. 3. Verify it fails for the expected reason. 4. Implement the minimum to pass. 5. Run it. 6. Refactor. 7. Commit.&#8221;</p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yWaD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F699150b8-3d5a-4c99-9385-e16e1d3737ff_4080x2076.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yWaD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F699150b8-3d5a-4c99-9385-e16e1d3737ff_4080x2076.png 424w, https://substackcdn.com/image/fetch/$s_!yWaD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F699150b8-3d5a-4c99-9385-e16e1d3737ff_4080x2076.png 848w, https://substackcdn.com/image/fetch/$s_!yWaD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F699150b8-3d5a-4c99-9385-e16e1d3737ff_4080x2076.png 1272w, https://substackcdn.com/image/fetch/$s_!yWaD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F699150b8-3d5a-4c99-9385-e16e1d3737ff_4080x2076.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yWaD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F699150b8-3d5a-4c99-9385-e16e1d3737ff_4080x2076.png" width="1456" height="741" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/699150b8-3d5a-4c99-9385-e16e1d3737ff_4080x2076.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:741,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:173024,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/197111813?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F699150b8-3d5a-4c99-9385-e16e1d3737ff_4080x2076.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!yWaD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F699150b8-3d5a-4c99-9385-e16e1d3737ff_4080x2076.png 424w, https://substackcdn.com/image/fetch/$s_!yWaD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F699150b8-3d5a-4c99-9385-e16e1d3737ff_4080x2076.png 848w, https://substackcdn.com/image/fetch/$s_!yWaD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F699150b8-3d5a-4c99-9385-e16e1d3737ff_4080x2076.png 1272w, https://substackcdn.com/image/fetch/$s_!yWaD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F699150b8-3d5a-4c99-9385-e16e1d3737ff_4080x2076.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This principle guides the trade-off between <em>actionability</em> and <em>coverage</em>. Workflows are actionable but narrow: each step is a specific thing to do. References are broad but inert: the model has to decide what to apply and when. Most skills should be workflows, but reference skills (style guides, domain glossaries, persona prompts) are the legitimate exception. Forcing a workflow shape onto them produces brittle, awkward content. The right question is not &#8220;is this a workflow?&#8221; but &#8220;does the reader of this skill know what to do next?&#8221; If the answer is no, the principle is being violated regardless of shape.</p><h2><strong>Act 2: Running Reliably</strong></h2><p>Once the skill is selected and loaded, the question shifts to whether it actually drives the behaviour the author intended. These principles cover two halves of that problem: how rules should be phrased, so the model both generalises from what is written and complies under pressure to skip, and how much freedom the skill grants, so the model&#8217;s autonomy matches the task&#8217;s tolerance for variance.</p><h3><strong>4. Explain the why</strong></h3><p>A skill written as strings of <code>ALWAYS</code>, <code>NEVER</code>, and <code>MUST</code> in capital letters gives Claude rigid rules with no context. The model follows the letter and misses edge cases the author did not anticipate, or over-applies a rule where a judgement call was needed. Anthropic&#8217;s <code>skill-creator</code> flags all-caps imperatives as a yellow flag for exactly this reason.</p><p>The principle: <strong>state the rule, then state the reason.</strong> Reasoning becomes the rubric for cases the skill did not spell out.</p><p>Two patterns from the previous post connect to this principle, for different reasons. <em>Explain-the-Why</em> is the direct technique: pair every rule with its reason in the <code>SKILL.md</code> text. <em>Control Tuning</em> is about where to apply that pairing: rule-with-reason where the model needs to exercise judgement, narrow imperative where one wrong move is catastrophic and judgement is the wrong tool.</p><p>A Spring style-guide rule in two forms:</p><blockquote><p><em>Rule alone:</em> &#8220;Use constructor injection. Never field injection.&#8221;</p><p><em>Rule with reason:</em> &#8220;Use constructor injection. Field injection breaks testability; we cannot mock the field without spinning up a Spring context.&#8221;</p></blockquote><p>The first covers the canonical case and stumbles on variants. The second lets the model score options the skill never names: a builder that passes deps in <code>build()</code> passes (parameters, mockable without Spring); setter injection on a <code>@Component</code> fails (same testability problem); a service locator inside the method fails (hidden dependency). The rule covers one case. The reason covers all four.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5lnP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c48ebc1-cafa-4ab2-a476-d66e0a4e86a9_4080x1720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5lnP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c48ebc1-cafa-4ab2-a476-d66e0a4e86a9_4080x1720.png 424w, https://substackcdn.com/image/fetch/$s_!5lnP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c48ebc1-cafa-4ab2-a476-d66e0a4e86a9_4080x1720.png 848w, https://substackcdn.com/image/fetch/$s_!5lnP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c48ebc1-cafa-4ab2-a476-d66e0a4e86a9_4080x1720.png 1272w, https://substackcdn.com/image/fetch/$s_!5lnP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c48ebc1-cafa-4ab2-a476-d66e0a4e86a9_4080x1720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5lnP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c48ebc1-cafa-4ab2-a476-d66e0a4e86a9_4080x1720.png" width="1456" height="614" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1c48ebc1-cafa-4ab2-a476-d66e0a4e86a9_4080x1720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:614,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:259741,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/197111813?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c48ebc1-cafa-4ab2-a476-d66e0a4e86a9_4080x1720.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!5lnP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c48ebc1-cafa-4ab2-a476-d66e0a4e86a9_4080x1720.png 424w, https://substackcdn.com/image/fetch/$s_!5lnP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c48ebc1-cafa-4ab2-a476-d66e0a4e86a9_4080x1720.png 848w, https://substackcdn.com/image/fetch/$s_!5lnP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c48ebc1-cafa-4ab2-a476-d66e0a4e86a9_4080x1720.png 1272w, https://substackcdn.com/image/fetch/$s_!5lnP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c48ebc1-cafa-4ab2-a476-d66e0a4e86a9_4080x1720.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This principle guides the trade-off between <em>generalisation</em> and <em>length</em>. Adding reasoning to every rule helps the model handle cases the skill never named, but explanations cost tokens. For genuinely fragile steps, such as DB migrations, cryptographic operations, or anything where one wrong move is catastrophic, a narrow imperative may still be the better tool. Reserve prose-with-reasoning for the steps where you actually want the model to think. For the rest, terseness is a feature, not a flaw.</p><p>This principle addresses a <em>knowledge gap</em>: the model that does not know enough to handle the variant. A separate gap shows up when the model knows the rule and the reason, then argues itself out of compliance anyway. That one needs a different tool.</p><h3><strong>5. Anticipate the excuse</strong></h3><p>Imagine a <code>database-migration</code> skill with a non-negotiable: <em>&#8220;Always run the migration on a staging clone first.&#8221;</em> The why is documented: staging catches what the SQL diff does not show, including default ordering, type coercion, and unintended index rebuilds. The model has the rule and the reason. Given a small migration and a user who wants to move fast, here is what it produces anyway:</p><blockquote><p><em>&#8220;This migration adds a single nullable column. Staging clones take 4 minutes to spin up. The change is additive, the user is in a hurry, and the SQL is short and reviewable. Running on production directly is acceptable here.&#8221;</em></p></blockquote><p>That paragraph is plausible. It cites real reasoning. It even acknowledges the rule before talking past it. That is rationalisation: a confident excuse for <em>this particular case</em>. Adding more rules does not fix it. Adding more reasons does not fix it. The model already accepts the why and dismisses it for this case.</p><p>The principle, from <a href="https://addyosmani.com/blog/agent-skills/">Addy Osmani</a>: <strong>anticipate the excuse. Write the rebuttal next to the rule, in the skill itself.</strong> The model is excellent at rationalising; it is poor at arguing past pre-written counters that sit in its own context.</p><p>No pattern in the previous post directly serves this principle. Its closest cousin is <em>Known Gotchas</em>, but Gotchas catches <em>external</em> surprises (the world surprising the agent), while rebuttals catch <em>internal</em> ones (the agent surprising itself). The two complement each other but address different forces.</p><p>The rebuttal table for the migration rule, written into the <code>SKILL.md</code>:</p><p><strong>ExcuseRebuttal</strong>&#8220;This migration is additive / nullable / small.&#8221;Small migrations are where staging catches low-level mistakes. Default ordering, type coercion, unintended index rebuilds. Four minutes is cheap insurance.&#8221;User is in a hurry.&#8221;User is in a hurry to ship working code, not to run a migration twice. Run staging.&#8221;I reviewed the SQL manually; it looks safe.&#8221;Manual review is not a substitute for running it. You are not the database engine.</p><p>When the model reaches for the rationalisation, it has to produce text that argues past three rebuttals it just read. That is a much higher bar than arguing past a one-line rule.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8WAN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2524d8f0-9b9b-4a0c-ae21-678c0801b6ab_4080x2140.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8WAN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2524d8f0-9b9b-4a0c-ae21-678c0801b6ab_4080x2140.png 424w, https://substackcdn.com/image/fetch/$s_!8WAN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2524d8f0-9b9b-4a0c-ae21-678c0801b6ab_4080x2140.png 848w, https://substackcdn.com/image/fetch/$s_!8WAN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2524d8f0-9b9b-4a0c-ae21-678c0801b6ab_4080x2140.png 1272w, https://substackcdn.com/image/fetch/$s_!8WAN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2524d8f0-9b9b-4a0c-ae21-678c0801b6ab_4080x2140.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8WAN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2524d8f0-9b9b-4a0c-ae21-678c0801b6ab_4080x2140.png" width="1456" height="764" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2524d8f0-9b9b-4a0c-ae21-678c0801b6ab_4080x2140.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:764,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:277208,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/197111813?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2524d8f0-9b9b-4a0c-ae21-678c0801b6ab_4080x2140.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!8WAN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2524d8f0-9b9b-4a0c-ae21-678c0801b6ab_4080x2140.png 424w, https://substackcdn.com/image/fetch/$s_!8WAN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2524d8f0-9b9b-4a0c-ae21-678c0801b6ab_4080x2140.png 848w, https://substackcdn.com/image/fetch/$s_!8WAN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2524d8f0-9b9b-4a0c-ae21-678c0801b6ab_4080x2140.png 1272w, https://substackcdn.com/image/fetch/$s_!8WAN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2524d8f0-9b9b-4a0c-ae21-678c0801b6ab_4080x2140.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Where do the rebuttals come from? Three places:</p><ol><li><p><strong>Universal rationalisation archetypes.</strong> A small set recurs everywhere: <em>&#8220;this case is too small&#8221;</em>, <em>&#8220;I&#8217;ll do it later&#8221;</em>, <em>&#8220;I checked manually&#8221;</em>, <em>&#8220;risk is minimal here&#8221;</em>, <em>&#8220;user is in a hurry&#8221;</em>. One or two often apply to any non-trivial rule.</p></li><li><p><strong>Observed runs.</strong> The first time the agent skips a step, it produces a paragraph explaining why. Copy it. The next version has a rebuttal for it.</p></li><li><p><strong>Post-incident learnings.</strong> The last time someone skipped step X and got burned, that incident becomes a rebuttal.</p></li></ol><p>This principle guides the trade-off between <em>defensive coverage</em> and <em>credibility</em>. The temptation, once you accept the principle, is to write a rebuttal table for every rule in the skill. Speculative rebuttals based on imagined failure modes read as paranoid filler and inflate the <code>SKILL.md</code> without earning their tokens. Rebuttals only land when they answer real excuses you have actually watched the model produce, or your team produce under pressure. Write them sparingly, for the two or three steps that are most tempting to skip, and grow the list from observed runs rather than from imagination.</p><h3><strong>6. Code over inference</strong></h3><p>Asking the model to generate a validation script, a PDF extractor, or a JSON normaliser from scratch on every invocation is slower, less reliable, and burns tokens on code the user never sees. Each run rediscovers the same logic with small variations.</p><p>The principle: <strong>where a step can be a deterministic program, it should be.</strong> Move work out of the inference loop into code that runs and returns only its output.</p><p>Two patterns from the previous post connect to this principle, for different reasons. <em>Utility Bundle</em> is how you ship pre-built scripts alongside the <code>SKILL.md</code>: purpose-built helpers the model invokes via Bash. <em>Autonomy Calibration</em> is how you constrain what the model can do at all, narrowing the tool surface so the script becomes the path of least resistance.</p><p>A schema-validation step in two forms:</p><blockquote><p><em>Re-derive each time:</em> model writes a 60-line validation snippet inline, runs it, parses the output, decides whether the schema passes. Source enters context. Logic varies between runs.</p><p><em>Pre-built script:</em> <code>python scripts/validate.py schema.json</code>. The script&#8217;s output (&#8221;OK&#8221; or a structured error list) enters context. Source does not. Logic is identical every run, testable independently, and the model invokes it via Bash without having to think about how it works.</p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Sf5L!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0b020ba-90b3-4596-9c7a-9fed54152bd7_4080x1840.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Sf5L!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0b020ba-90b3-4596-9c7a-9fed54152bd7_4080x1840.png 424w, https://substackcdn.com/image/fetch/$s_!Sf5L!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0b020ba-90b3-4596-9c7a-9fed54152bd7_4080x1840.png 848w, https://substackcdn.com/image/fetch/$s_!Sf5L!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0b020ba-90b3-4596-9c7a-9fed54152bd7_4080x1840.png 1272w, https://substackcdn.com/image/fetch/$s_!Sf5L!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0b020ba-90b3-4596-9c7a-9fed54152bd7_4080x1840.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Sf5L!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0b020ba-90b3-4596-9c7a-9fed54152bd7_4080x1840.png" width="1456" height="657" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d0b020ba-90b3-4596-9c7a-9fed54152bd7_4080x1840.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:657,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:195168,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/197111813?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0b020ba-90b3-4596-9c7a-9fed54152bd7_4080x1840.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Sf5L!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0b020ba-90b3-4596-9c7a-9fed54152bd7_4080x1840.png 424w, https://substackcdn.com/image/fetch/$s_!Sf5L!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0b020ba-90b3-4596-9c7a-9fed54152bd7_4080x1840.png 848w, https://substackcdn.com/image/fetch/$s_!Sf5L!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0b020ba-90b3-4596-9c7a-9fed54152bd7_4080x1840.png 1272w, https://substackcdn.com/image/fetch/$s_!Sf5L!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0b020ba-90b3-4596-9c7a-9fed54152bd7_4080x1840.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This principle guides the trade-off between <em>determinism</em> and <em>portability</em>. A script gives you reliable behaviour and lower context cost, but introduces a runtime dependency the inference path does not have. Python may be missing, a library version may differ, and paths may be Windows where the author wrote them for Unix. Validate preconditions in the <code>SKILL.md</code>, prefer forward slashes in paths, and have the script exit with a clear error rather than a stack trace when something is missing. For skills shipping to mixed environments, some logic is genuinely better off staying in inference, despite the cost.</p><h3><strong>7. Stay in scope</strong></h3><p>You ask the agent to fix one off-by-one in a function, and it returns a forty-line diff across three files: the fix, a <code>var</code> to <code>const</code> modernisation, a helper rename, and a <code>TODO</code> cleared up on the way past. The fix is mergeable. The PR is not. Unwinding the unrelated changes costs more than the original task.</p><p>The principle, from <a href="https://addyosmani.com/blog/agent-skills/">Addy Osmani</a>: <strong>touch only what the skill is asked to touch.</strong> Don&#8217;t refactor adjacent systems. Don&#8217;t rewrite files you brushed against. Don&#8217;t expand the diff. Addy ranks this as the single biggest determinant of whether an agent&#8217;s PR is mergeable or has to be unwound.</p><p>No pattern in the <a href="https://generativeprogrammer.com/p/skill-authoring-patterns-from-anthropics">previous post</a> directly serves this principle. <em>Exclusion Clause</em> is adjacent but operates at the metadata layer, deciding whether the skill fires at all; this principle operates inside the skill, governing what the agent does once it has fired. Scope discipline is closer to a cultural rule than a markdown technique. It has to be enforced at every step the skill takes, not declared once.</p><p>The same <code>parseRange()</code> off-by-one fix in two diffs:</p><blockquote><p><em>Out of scope (47 lines, 3 files):</em> off-by-one, <code>var</code> to <code>const</code> modernisation, <code>helperFunc</code> to <code>parseHelper</code> rename, and <code>// TODO</code> cleanup.</p><p><em>In scope (3 lines, 1 file):</em> off-by-one.</p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bBHd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8672dcdd-01ff-4228-b81c-923a0b4f752a_4080x1760.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bBHd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8672dcdd-01ff-4228-b81c-923a0b4f752a_4080x1760.png 424w, https://substackcdn.com/image/fetch/$s_!bBHd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8672dcdd-01ff-4228-b81c-923a0b4f752a_4080x1760.png 848w, https://substackcdn.com/image/fetch/$s_!bBHd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8672dcdd-01ff-4228-b81c-923a0b4f752a_4080x1760.png 1272w, https://substackcdn.com/image/fetch/$s_!bBHd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8672dcdd-01ff-4228-b81c-923a0b4f752a_4080x1760.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bBHd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8672dcdd-01ff-4228-b81c-923a0b4f752a_4080x1760.png" width="1456" height="628" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8672dcdd-01ff-4228-b81c-923a0b4f752a_4080x1760.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:628,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:211360,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/197111813?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8672dcdd-01ff-4228-b81c-923a0b4f752a_4080x1760.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!bBHd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8672dcdd-01ff-4228-b81c-923a0b4f752a_4080x1760.png 424w, https://substackcdn.com/image/fetch/$s_!bBHd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8672dcdd-01ff-4228-b81c-923a0b4f752a_4080x1760.png 848w, https://substackcdn.com/image/fetch/$s_!bBHd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8672dcdd-01ff-4228-b81c-923a0b4f752a_4080x1760.png 1272w, https://substackcdn.com/image/fetch/$s_!bBHd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8672dcdd-01ff-4228-b81c-923a0b4f752a_4080x1760.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This principle guides the trade-off between <em>helpfulness</em> and <em>reviewability</em>. A wider diff feels more helpful because the agent saw a related issue and addressed it on the way past. A wider diff is also harder to trust because review cost grows with diff size, and reviewers stop trusting any of the changes once one of them looks unrelated. Build in a fallback for genuine ambiguity: <em>&#8220;if the fix demonstrably requires another file, name that file before editing it and explain why&#8221;</em>. The principle should block silent expansion, not legitimate cross-file work.</p><h2><strong>Act 3: Surviving Contact with Reality</strong></h2><p>The first two acts assume the skill exists at a single moment in time. The world is not constant. The codebase changes, the libraries update, the team turns over, and the model the skill was authored against gets replaced by a stronger one that interprets its instructions slightly differently. These principles cover what happens to a skill over time, and how authoring practice itself has to anticipate that drift from the start.</p><h3><strong>8. Skills decay</strong></h3><p>Libraries update. APIs change. Conventions evolve. A skill written six months ago against last quarter&#8217;s framework now points at a renamed function, a deprecated flag, or an API surface that has moved. Unlike a stale comment an engineer skims past, the agent invokes the stale skill <em>confidently</em> and produces wrong output that looks right.</p><p>The principle: <strong>skills are living artefacts, not frozen docs.</strong> A skill you have not re-run in months is a liability you have not measured.</p><p>No single pattern in the <a href="https://generativeprogrammer.com/p/skill-authoring-patterns-from-anthropics">previous post</a> serves this principle directly. Decay is a property of the system over time rather than something you fix inside a <code>SKILL.md</code>. The trade-off note attached to <em>Known Gotchas</em>, &#8220;gotchas are a moving target&#8221;, is a special case. A skill that pinned a deprecated framework flag will write code the framework refuses to compile, with the agent citing the stale skill as justification. Pattern catalogues rarely catch that failure mode because the failure happens months after the skill was correct.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zvc0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47bcc9fb-bc49-401b-a1c2-13edf4491743_4080x2040.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zvc0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47bcc9fb-bc49-401b-a1c2-13edf4491743_4080x2040.png 424w, https://substackcdn.com/image/fetch/$s_!zvc0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47bcc9fb-bc49-401b-a1c2-13edf4491743_4080x2040.png 848w, https://substackcdn.com/image/fetch/$s_!zvc0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47bcc9fb-bc49-401b-a1c2-13edf4491743_4080x2040.png 1272w, https://substackcdn.com/image/fetch/$s_!zvc0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47bcc9fb-bc49-401b-a1c2-13edf4491743_4080x2040.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zvc0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47bcc9fb-bc49-401b-a1c2-13edf4491743_4080x2040.png" width="1456" height="728" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/47bcc9fb-bc49-401b-a1c2-13edf4491743_4080x2040.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:728,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:155483,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/197111813?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47bcc9fb-bc49-401b-a1c2-13edf4491743_4080x2040.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!zvc0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47bcc9fb-bc49-401b-a1c2-13edf4491743_4080x2040.png 424w, https://substackcdn.com/image/fetch/$s_!zvc0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47bcc9fb-bc49-401b-a1c2-13edf4491743_4080x2040.png 848w, https://substackcdn.com/image/fetch/$s_!zvc0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47bcc9fb-bc49-401b-a1c2-13edf4491743_4080x2040.png 1272w, https://substackcdn.com/image/fetch/$s_!zvc0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47bcc9fb-bc49-401b-a1c2-13edf4491743_4080x2040.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This principle guides the trade-off between <em>stability</em> and <em>staleness</em>. A skill you never touch is stable, but stability is not the same as correctness. The world it describes drifts away from the skill faster than the skill drifts from itself. Treat skills the way you treat any piece of code that can drift from the system it touches: assign an owner, exercise them periodically against current tasks, and retire them honestly when they stop earning their keep. The principle does not prescribe a calendar. What matters is that someone is watching, not how often.</p><h3><strong>9. Run before you ship</strong></h3><p>A skill written from imagination at authoring time describes the world the author <em>hoped for</em>, not the world the agent encounters. It ships with the wrong rebuttals, the wrong gotchas, and helper scripts the author guessed at. The first real invocation reveals all three at once.</p><p>The principle, from Anthropic&#8217;s <code>skill-creator</code>: <strong>the skill is debugged from observed runs, not from your imagination at authoring time.</strong> Run it on two or three realistic test cases. Read the transcripts. If multiple runs wrote the same helper independently, promote that helper into <code>scripts/</code>. If the model produced the same rationalisation twice, write the rebuttal. If the same gotcha tripped two different runs, document it.</p><p>No pattern in the <a href="https://generativeprogrammer.com/p/skill-authoring-patterns-from-anthropics">previous post</a> serves this principle in isolation. Running a skill is not a thing you put inside the <code>SKILL.md</code>; it is a thing you do <em>to</em> the <code>SKILL.md</code>. But this principle is upstream of several others: the rebuttals in <em>Anticipate the excuse</em>, the gotcha entries any mature skill accumulates, and the helper scripts that get promoted into <code>scripts/</code>. None of these should be guessed at the desk. They are <em>observed</em> during test runs and added back into the skill afterwards.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!idjZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa60df272-ef9c-4980-a6e8-bff4b0156b4a_4080x1876.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!idjZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa60df272-ef9c-4980-a6e8-bff4b0156b4a_4080x1876.png 424w, https://substackcdn.com/image/fetch/$s_!idjZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa60df272-ef9c-4980-a6e8-bff4b0156b4a_4080x1876.png 848w, https://substackcdn.com/image/fetch/$s_!idjZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa60df272-ef9c-4980-a6e8-bff4b0156b4a_4080x1876.png 1272w, https://substackcdn.com/image/fetch/$s_!idjZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa60df272-ef9c-4980-a6e8-bff4b0156b4a_4080x1876.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!idjZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa60df272-ef9c-4980-a6e8-bff4b0156b4a_4080x1876.png" width="1456" height="669" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a60df272-ef9c-4980-a6e8-bff4b0156b4a_4080x1876.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:669,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:154297,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/197111813?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa60df272-ef9c-4980-a6e8-bff4b0156b4a_4080x1876.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!idjZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa60df272-ef9c-4980-a6e8-bff4b0156b4a_4080x1876.png 424w, https://substackcdn.com/image/fetch/$s_!idjZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa60df272-ef9c-4980-a6e8-bff4b0156b4a_4080x1876.png 848w, https://substackcdn.com/image/fetch/$s_!idjZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa60df272-ef9c-4980-a6e8-bff4b0156b4a_4080x1876.png 1272w, https://substackcdn.com/image/fetch/$s_!idjZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa60df272-ef9c-4980-a6e8-bff4b0156b4a_4080x1876.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>This principle guides the trade-off between <em>speed</em> and <em>correctness</em>. Imagination-authoring is fast. You can ship the first version of a skill in an afternoon, and on simple skills the difference rarely matters. Real-run authoring is slower on the first version, and only pays back from the second version onward, when the rebuttals and gotchas you observed in the test runs save the user from hitting them in production. For genuinely tiny skills, such as a one-line alias or a five-line reference, the loop is overkill. For anything with a workflow, a non-negotiable rule, or a script, the loop is what separates a skill that compounds from one that ships broken and stays broken because no one watched it run.</p><h2><strong>The takeaway</strong></h2><p>The nine principles compose, but they also prioritise. <em>Metadata is the gate</em>, <em>Process over prose</em>, and <em>Run before you ship</em> are the foundations: a skill that does not fire never runs the workflow; a skill that is an essay never enforces the workflow; a skill that ships from imagination has the wrong workflow. The other six are corrective. They fix specific failure modes inside a skill that is otherwise structurally sound, but none of them can save a skill that gets the foundations wrong.</p><p>Skills are starting to become a well-understood building block for agents. My earlier posts looked at the mechanics: <a href="https://generativeprogrammer.com/p/12-agentic-harness-patterns-from">12 Agentic Harness Patterns from Claude Code</a> covered the runtime around the agent, and <a href="https://generativeprogrammer.com/p/skill-authoring-patterns-from-anthropics">14 Skill Authoring Patterns</a> covered what to put inside a skill. This post is about the next layer: the principles that make a skill worth building, worth loading, and worth maintaining.</p><p>Software engineering has SOLID, KISS, YAGNI, and separation of concerns. Skill authoring needs the same kind of shared language. These nine principles are my proposal, drawn from working skills, popular skills, and the failure modes that show up once agents start using them for real.</p>]]></content:encoded></item><item><title><![CDATA[Distribution vs Escalation: When to Use Subagents or Advisors]]></title><description><![CDATA[Two patterns for scaling a Claude agent. Both add a second model to the loop, each with different trade offs. Here&#8217;s when to reach for each, and when to use both.]]></description><link>https://generativeprogrammer.com/p/subagents-vs-advisor-distribution</link><guid isPermaLink="false">https://generativeprogrammer.com/p/subagents-vs-advisor-distribution</guid><dc:creator><![CDATA[Bilgin Ibryam]]></dc:creator><pubDate>Sat, 02 May 2026 14:48:41 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/da00dd13-8357-442b-a708-8e46af3135ac_1200x630.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>The one-line difference</h2><p><strong>&gt; Subagents isolate context. Advisors unblock execution.</strong></p><p>Both patterns add a second model inside a Claude agent, each with different strengths. A subagent takes a piece of the work off the main agent&#8217;s hands and runs it in its own context window. An advisor never touches the work. It reads the shared transcript and returns guidance on what to do next. One scales throughput and context. The other scales judgment.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Ljr2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9381ec84-d870-4d10-8f07-bc8dec7c437b_3475x2322.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Ljr2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9381ec84-d870-4d10-8f07-bc8dec7c437b_3475x2322.png 424w, https://substackcdn.com/image/fetch/$s_!Ljr2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9381ec84-d870-4d10-8f07-bc8dec7c437b_3475x2322.png 848w, https://substackcdn.com/image/fetch/$s_!Ljr2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9381ec84-d870-4d10-8f07-bc8dec7c437b_3475x2322.png 1272w, https://substackcdn.com/image/fetch/$s_!Ljr2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9381ec84-d870-4d10-8f07-bc8dec7c437b_3475x2322.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Ljr2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9381ec84-d870-4d10-8f07-bc8dec7c437b_3475x2322.png" width="1456" height="973" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9381ec84-d870-4d10-8f07-bc8dec7c437b_3475x2322.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:973,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:606427,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/196204987?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9381ec84-d870-4d10-8f07-bc8dec7c437b_3475x2322.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Ljr2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9381ec84-d870-4d10-8f07-bc8dec7c437b_3475x2322.png 424w, https://substackcdn.com/image/fetch/$s_!Ljr2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9381ec84-d870-4d10-8f07-bc8dec7c437b_3475x2322.png 848w, https://substackcdn.com/image/fetch/$s_!Ljr2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9381ec84-d870-4d10-8f07-bc8dec7c437b_3475x2322.png 1272w, https://substackcdn.com/image/fetch/$s_!Ljr2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9381ec84-d870-4d10-8f07-bc8dec7c437b_3475x2322.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>Left: a main agent delegates a scoped task to a subagent, which runs independently and returns a result. Right: an executor stays in control and consults a stronger advisor when it hits a decision it can&#8217;t reasonably solve.</em></p><h2>The subagent pattern</h2><p><strong>In one line.</strong> A main agent delegates a scoped task to a separate subagent, which runs independently in its own context window and returns a result.</p><p>Subagents are defined in Markdown files with YAML frontmatter, stored in <code>.claude/agents/</code> (project) or <code>~/.claude/agents/</code> (user). Each one <a href="https://code.claude.com/docs/en/sub-agents">runs in its own context window with a custom system prompt, specific tool access, and independent permissions</a>. When Claude encounters a task that matches a subagent&#8217;s description, it delegates, the subagent works independently, and the summary returns to the parent conversation.</p><p>The docs are direct on when to reach for one: <em>&#8220;a side task would flood your main conversation with search results, logs, or file contents you won&#8217;t reference again.&#8221;</em> Running tests, fetching documentation, processing log files. The verbose output stays in the subagent&#8217;s context; only the relevant summary comes back.</p><p>You can restrict tools with an allowlist or denylist, pick the model (<code>sonnet</code>, <code>opus</code>, <code>haiku</code>, or <code>inherit</code>), set permission modes, scope MCP servers, attach skills, enable persistent memory, run in an isolated git worktree. Claude Code ships with three <a href="https://code.claude.com/docs/en/sub-agents#built-in-subagents">built-in subagents</a>: <strong>Explore</strong> (Haiku, read-only, for codebase search), <strong>Plan</strong> (read-only, for plan mode), and <strong>general-purpose</strong> (all tools).</p><p>One structural constraint: subagents cannot spawn other subagents as nested delegation is not supported. If you need it, the docs point at <a href="https://code.claude.com/docs/en/skills">skills</a> or chaining subagents from the main conversation.</p><p><strong>There are two flavors of subagents: fresh-start vs forked.</strong> </p><ul><li><p>The default subagent starts with empty context. </p></li><li><p>A <a href="https://code.claude.com/docs/en/sub-agents#fork-the-current-conversation">forked subagent</a>, behind the experimental <code>CLAUDE_CODE_FORK_SUBAGENT=1</code> flag, inherits the parent&#8217;s full transcript, system prompt, tools, and model instead. Tool calls still stay out of the parent&#8217;s view and only the final result returns, so the context-window benefit holds. Because the system prompt and tool definitions match the parent, the first request reuses the parent&#8217;s prompt cache, which makes a fork cheaper than a fresh subagent for context-heavy side work. Reach for forked subagents when re-explaining the situation to a fresh subagent would cost more than it saves, or when you want to try several approaches in parallel from the same starting point.</p></li></ul><p><strong>The main trade-off.</strong> A default subagent starts fresh, trading conversation continuity for isolation and tool restrictions. A fork keeps the continuity but gives up the ability to swap models, restrict tools, or override the system prompt. In both cases, returns add back to the main context window, so running many subagents that each return detailed results can re-flood the context you were trying to keep clean.</p><h2>The advisor pattern</h2><p><strong>In one line.</strong> A faster and cheaper executor (Sonnet or Haiku) consults a stronger advisor (Opus) model mid-generation, inside a single <code>/v1/messages</code> request.</p><p>The advisor tool ships as <code>advisor_20260301</code> on the Claude Platform. You declare it alongside your other tools in the Messages API, and the executor decides when to invoke it. The advisor <a href="https://claude.com/blog/the-advisor-strategy">never calls tools or produces user-facing output</a>. It reads the shared transcript, returns a plan, a correction, or a stop signal, and the executor resumes.</p><p>The handoff is a server-side sub-inference inside one <code>/v1/messages</code> request. No extra round-trips. Advisor responses are short, typically 400 to 700 text tokens, and <code>max_uses</code> caps them per request. Executor and advisor tokens bill at their own rates, so the overall run costs well below running the advisor model end-to-end.</p><p>In Anthropic&#8217;s evaluations, <a href="https://claude.com/blog/the-advisor-strategy">Sonnet with an Opus advisor gained 2.7 percentage points on SWE-bench Multilingual and reduced cost per task by 11.9%</a>. The framing is deliberate: the advisor strategy <em>&#8220;inverts a common sub-agent pattern, where a larger orchestrator model decomposes work and delegates to smaller worker models.&#8221;</em> Here, the smaller model drives and escalates. Frontier reasoning applies only when the executor needs it.</p><p>The pattern has academic precedent. UC Berkeley researchers <a href="https://arxiv.org/abs/2510.02453">formalised it in late 2025</a> as &#8220;advisor models&#8221;: small policies trained to generate per-instance natural-language steering for larger black-box models. The paper found that advice generalises across model families (advisors trained on GPT transferred to Claude without retraining), which is why this is an architecture pattern, not a Claude feature. Anthropic&#8217;s contribution is making it a one-line tool declaration experience.</p><p><strong>The main trade-off.</strong> Every escalation is a synchronous pause in the executor&#8217;s stream while the advisor runs. The advice is one-shot. No iteration, no debate. If the advisor is wrong on a specific point, the executor&#8217;s only recourse is another advisor call to reconcile, which burns more of the <code>max_uses</code> budget.</p><h2>A decision framework</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!g9hx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c91590c-b4b9-47e6-a44e-5ee58dea41e8_1708x1372.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!g9hx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c91590c-b4b9-47e6-a44e-5ee58dea41e8_1708x1372.png 424w, https://substackcdn.com/image/fetch/$s_!g9hx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c91590c-b4b9-47e6-a44e-5ee58dea41e8_1708x1372.png 848w, https://substackcdn.com/image/fetch/$s_!g9hx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c91590c-b4b9-47e6-a44e-5ee58dea41e8_1708x1372.png 1272w, https://substackcdn.com/image/fetch/$s_!g9hx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c91590c-b4b9-47e6-a44e-5ee58dea41e8_1708x1372.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!g9hx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c91590c-b4b9-47e6-a44e-5ee58dea41e8_1708x1372.png" width="1456" height="1170" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7c91590c-b4b9-47e6-a44e-5ee58dea41e8_1708x1372.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1170,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:606571,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/196204987?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c91590c-b4b9-47e6-a44e-5ee58dea41e8_1708x1372.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!g9hx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c91590c-b4b9-47e6-a44e-5ee58dea41e8_1708x1372.png 424w, https://substackcdn.com/image/fetch/$s_!g9hx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c91590c-b4b9-47e6-a44e-5ee58dea41e8_1708x1372.png 848w, https://substackcdn.com/image/fetch/$s_!g9hx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c91590c-b4b9-47e6-a44e-5ee58dea41e8_1708x1372.png 1272w, https://substackcdn.com/image/fetch/$s_!g9hx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c91590c-b4b9-47e6-a44e-5ee58dea41e8_1708x1372.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Comparison of subagent and advisor patterns</figcaption></figure></div><p>Questions separate them:</p><ol><li><p><strong>Does the work split into specialized, distinct tasks with well-defined inputs and outputs?</strong> Subagents. Distribution pays when each unit of work has a clear start, a clear end, and doesn&#8217;t need a back-and-forth conversation with the main agent in the middle.</p></li><li><p><strong>Does the work mostly need better judgment, not more hands?</strong> Advisor. One model can usually handle a task if someone smarter checks in at the hard moments.</p></li><li><p><strong>Is a side task about to flood the main context with output you won&#8217;t reuse?</strong> Subagent, read-only, summarize back. This is the pattern&#8217;s textbook case.</p></li></ol><p>When none of these fire cleanly, the work is probably small enough to stay in the main conversation.</p><h2>When to use both</h2><p>The two patterns compose. A Sonnet executor can consult an Opus advisor on hard decisions and spawn Haiku subagents for bounded or parallelizable subtasks in the same run. Distribution handles breadth, escalation handles depth, and the cost shape composes too: Haiku does the cheap bulk, Opus applies frontier reasoning only where it changes the outcome, and Sonnet carries the rest.</p><p>A subagent is its own Claude run, so it can carry its own advisor too. Anthropic has only benchmarked the top-level composition publicly; treat nested advisor-inside-subagent as an op</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!EuOX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F689d1043-3346-4358-aa54-20d061b3c6aa_1884x1014.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EuOX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F689d1043-3346-4358-aa54-20d061b3c6aa_1884x1014.png 424w, https://substackcdn.com/image/fetch/$s_!EuOX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F689d1043-3346-4358-aa54-20d061b3c6aa_1884x1014.png 848w, https://substackcdn.com/image/fetch/$s_!EuOX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F689d1043-3346-4358-aa54-20d061b3c6aa_1884x1014.png 1272w, https://substackcdn.com/image/fetch/$s_!EuOX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F689d1043-3346-4358-aa54-20d061b3c6aa_1884x1014.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EuOX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F689d1043-3346-4358-aa54-20d061b3c6aa_1884x1014.png" width="1456" height="784" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/689d1043-3346-4358-aa54-20d061b3c6aa_1884x1014.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:784,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:160401,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/196204987?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F689d1043-3346-4358-aa54-20d061b3c6aa_1884x1014.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!EuOX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F689d1043-3346-4358-aa54-20d061b3c6aa_1884x1014.png 424w, https://substackcdn.com/image/fetch/$s_!EuOX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F689d1043-3346-4358-aa54-20d061b3c6aa_1884x1014.png 848w, https://substackcdn.com/image/fetch/$s_!EuOX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F689d1043-3346-4358-aa54-20d061b3c6aa_1884x1014.png 1272w, https://substackcdn.com/image/fetch/$s_!EuOX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F689d1043-3346-4358-aa54-20d061b3c6aa_1884x1014.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>A Sonnet executor consults an Opus advisor on hard decisions and spawns Haiku subagents for bounded subtasks</em></p><div><hr></div><h2>One more shape: agent teams</h2><p>There is also a third shape worth naming: <a href="https://code.claude.com/docs/en/agent-teams">agent teams</a>. Use them when subagents need to talk to each other directly, not just report back to a parent. They are more experimental, more complex, and harder to reason about than either pattern here. Reach for them only when the coordination overhead is justified. For a deeper comparison between subagents and agent teams, <a href="https://medium.com/@han.heloir/sub-agent-vs-agent-team-in-claude-code-pick-the-right-pattern-in-60-seconds-e856e5b4e5cc">Han HELOIR YAN&#8217;s write-up</a> is the clearest one I&#8217;ve found.</p><h2>The takeaway</h2><p>Subagents break a complex task into smaller blocks, each with its own context, tools, and specialization. The advisor makes each block more autonomous: when the cheaper model hits a hard call, the stronger one is a tool call away. Together, they give you specialization plus depth, a real step toward long-horizon agent runs that a single model  in a single context cannot sustain.</p><p><em>Sources: <a href="https://claude.com/blog/the-advisor-strategy">The advisor strategy</a>, Anthropic, April 9, 2026. <a href="https://code.claude.com/docs/en/sub-agents">Create custom subagents</a>, Claude Code documentation.</em></p>]]></content:encoded></item><item><title><![CDATA[12 MCP Patterns Behind Production Agents]]></title><description><![CDATA[A practical breakdown of the recurring design patterns behind real-world agent and mcp integrations.]]></description><link>https://generativeprogrammer.com/p/12-mcp-patterns-behind-production</link><guid isPermaLink="false">https://generativeprogrammer.com/p/12-mcp-patterns-behind-production</guid><dc:creator><![CDATA[Bilgin Ibryam]]></dc:creator><pubDate>Sat, 25 Apr 2026 14:11:11 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/24153e2b-0e73-4f79-81e8-81d0193b4b7b_8408x4402.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>A few weeks ago I pulled <a href="https://generativeprogrammer.com/p/12-agentic-harness-patterns-from">12 agentic harness patterns</a> from the Claude Code leak. Then I wrote about <a href="https://generativeprogrammer.com/p/skill-authoring-patterns-from-anthropics">14 patterns for authoring Skills</a>, the layer that extends the agent. Anthropic keeps dropping excellent posts where they share what they are learning from building and running agents in the real world. After reading the latest one, I could not resist doing the same thing again: study the recurring ideas, reformulate them as patterns, give each one a name, and support them with visuals that make the trade-offs easier to see.</p><p>This post goes one layer further out. Once an agent has a harness and a way to load Skills, the next question is more practical: how does it reach the production systems it needs to do real work?</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ijrv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F236f3485-2b21-427f-91ec-5ce611343b6b_5280x3300.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ijrv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F236f3485-2b21-427f-91ec-5ce611343b6b_5280x3300.png 424w, https://substackcdn.com/image/fetch/$s_!ijrv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F236f3485-2b21-427f-91ec-5ce611343b6b_5280x3300.png 848w, https://substackcdn.com/image/fetch/$s_!ijrv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F236f3485-2b21-427f-91ec-5ce611343b6b_5280x3300.png 1272w, https://substackcdn.com/image/fetch/$s_!ijrv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F236f3485-2b21-427f-91ec-5ce611343b6b_5280x3300.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ijrv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F236f3485-2b21-427f-91ec-5ce611343b6b_5280x3300.png" width="1456" height="910" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/236f3485-2b21-427f-91ec-5ce611343b6b_5280x3300.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:910,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1159074,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/195426893?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F236f3485-2b21-427f-91ec-5ce611343b6b_5280x3300.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ijrv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F236f3485-2b21-427f-91ec-5ce611343b6b_5280x3300.png 424w, https://substackcdn.com/image/fetch/$s_!ijrv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F236f3485-2b21-427f-91ec-5ce611343b6b_5280x3300.png 848w, https://substackcdn.com/image/fetch/$s_!ijrv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F236f3485-2b21-427f-91ec-5ce611343b6b_5280x3300.png 1272w, https://substackcdn.com/image/fetch/$s_!ijrv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F236f3485-2b21-427f-91ec-5ce611343b6b_5280x3300.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">12 MCP Integration Patterns from Anthropic</figcaption></figure></div><p>Anthropic&#8217;s post, <a href="https://claude.com/blog/building-agents-that-reach-production-systems-with-mcp">Building agents that reach production systems with MCP</a>, is about exactly that. It compares direct API calls, CLIs, and MCP, then explains why production agents increasingly land on MCP: agents are moving to the cloud, the systems they need are remote, and auth, discovery, and rich interaction need a common layer. Anthropic says they are seeing this across more than 200 MCP servers, millions of daily Claude users, and fast-growing MCP SDK usage.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://generativeprogrammer.com/p/12-mcp-patterns-behind-production?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://generativeprogrammer.com/p/12-mcp-patterns-behind-production?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p>The original post is written as practical guidance for MCP servers and clients. I am taking a slightly different angle: the pattern view. What are the reusable shapes behind the advice? What problems do they solve? When should you use them? And what are the trade-offs? I see 12 core patterns spread across five groups.</p><h2><strong>Tool surface</strong></h2><p>The shape of your tool set is the first architectural choice, and it is rarely &#8220;one tool per endpoint.&#8221; Three default moves cover the span from small services to hundreds-of-endpoints monsters.</p><h3><strong>1. Remote-First Server Pattern</strong></h3><p>The first foundational architectural choice for an MCP server is where it runs.</p><p>Local MCP servers over stdio work only when the agent can spawn a child process on the same machine: desktop Claude, local IDE agents, and some CLIs. That excludes agents running in browsers, mobile apps, or cloud execution environments, which is where most production agent traffic is heading.</p><p>Build the server as a remote HTTP endpoint from day one, not as a local-only module the team might &#8220;put on the network later&#8221;. Every other production concern in this post (auth, elicitation, discovery) assumes the server is reachable over the network. A local-only server has to rebuild each of those the moment it needs to scale beyond the local machine.</p><p>Remote-first also makes distribution portable. One server, one auth flow, many clients. No per-client bundle to ship, no machine-level install to maintain.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ETOA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1ce50a1-6753-4eea-ad60-fa84c98f925e_4520x1640.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ETOA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1ce50a1-6753-4eea-ad60-fa84c98f925e_4520x1640.png 424w, https://substackcdn.com/image/fetch/$s_!ETOA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1ce50a1-6753-4eea-ad60-fa84c98f925e_4520x1640.png 848w, https://substackcdn.com/image/fetch/$s_!ETOA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1ce50a1-6753-4eea-ad60-fa84c98f925e_4520x1640.png 1272w, https://substackcdn.com/image/fetch/$s_!ETOA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1ce50a1-6753-4eea-ad60-fa84c98f925e_4520x1640.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ETOA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1ce50a1-6753-4eea-ad60-fa84c98f925e_4520x1640.png" width="1456" height="528" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d1ce50a1-6753-4eea-ad60-fa84c98f925e_4520x1640.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:528,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:198552,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/195426893?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1ce50a1-6753-4eea-ad60-fa84c98f925e_4520x1640.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ETOA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1ce50a1-6753-4eea-ad60-fa84c98f925e_4520x1640.png 424w, https://substackcdn.com/image/fetch/$s_!ETOA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1ce50a1-6753-4eea-ad60-fa84c98f925e_4520x1640.png 848w, https://substackcdn.com/image/fetch/$s_!ETOA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1ce50a1-6753-4eea-ad60-fa84c98f925e_4520x1640.png 1272w, https://substackcdn.com/image/fetch/$s_!ETOA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1ce50a1-6753-4eea-ad60-fa84c98f925e_4520x1640.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>When to use.</strong> Any time the agent on the other side might not run on the same machine as the server. In practice, this is the default for most production integrations.</p><p><strong>The main trade-off.</strong> Network transport raises the bar on reliability, latency budgeting, and auth. You have to engineer a public surface where a local process would have been enough, and you carry the operational weight of every internet-facing service.</p><h3><strong>2. Intent-Grouped Tools Pattern</strong></h3><p>This is probably the most common MCP server design mistake: exposing one tool per API endpoint. It feels like the fastest and most faithful implementation, but it creates the wrong interface for agents.</p><p>The agent does not think in API endpoints. It thinks in tasks. A 1:1 API wrapper leaves the agent assembling long chains of primitives. More tool definitions in context, more round-trips per task, more ways to get the chain wrong.</p><p>Group tools around user intent, not around the endpoints they happen to hit. </p><p>A single <code>create_issue_from_thread</code> tool is better than </p><p><code>get_thread</code> + <code>parse_messages</code> + <code>create_issue</code> + <code>link_attachment</code>. </p><p>The agent goes from a four-call chain to a one-call intent, and each intent is something a human reviewer can reason about directly.</p><p>The implication is that your MCP server is not a proxy. It is a new surface. Expect to write wrapper tools that compose multiple endpoints, normalise half-formed IDs, retry on rate-limited calls, and return the output the agent will actually use, not the output the endpoint happened to produce. Anthropic has a <a href="https://www.anthropic.com/engineering/writing-tools-for-agents">companion post on writing effective tools</a> that covers the craft details.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7GOT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f629a4f-ff2d-4050-994e-ca3526d99c93_3180x2200.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7GOT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f629a4f-ff2d-4050-994e-ca3526d99c93_3180x2200.png 424w, https://substackcdn.com/image/fetch/$s_!7GOT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f629a4f-ff2d-4050-994e-ca3526d99c93_3180x2200.png 848w, https://substackcdn.com/image/fetch/$s_!7GOT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f629a4f-ff2d-4050-994e-ca3526d99c93_3180x2200.png 1272w, https://substackcdn.com/image/fetch/$s_!7GOT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f629a4f-ff2d-4050-994e-ca3526d99c93_3180x2200.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7GOT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f629a4f-ff2d-4050-994e-ca3526d99c93_3180x2200.png" width="1456" height="1007" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9f629a4f-ff2d-4050-994e-ca3526d99c93_3180x2200.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1007,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:176377,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/195426893?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f629a4f-ff2d-4050-994e-ca3526d99c93_3180x2200.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!7GOT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f629a4f-ff2d-4050-994e-ca3526d99c93_3180x2200.png 424w, https://substackcdn.com/image/fetch/$s_!7GOT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f629a4f-ff2d-4050-994e-ca3526d99c93_3180x2200.png 848w, https://substackcdn.com/image/fetch/$s_!7GOT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f629a4f-ff2d-4050-994e-ca3526d99c93_3180x2200.png 1272w, https://substackcdn.com/image/fetch/$s_!7GOT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f629a4f-ff2d-4050-994e-ca3526d99c93_3180x2200.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>When to use.</strong> Default for any service with roughly fifty or fewer tools. When you find yourself inventing a fifth parameter to keep tool count down, you have probably outgrown this pattern.</p><p><strong>The main trade-off.</strong> Every new intent is new code on your side, not a schema export. The server stops being a thin translation layer and becomes a product surface you have to design, test, and version.</p><h3><strong>3. Thin Surface Pattern</strong></h3><p>Some services have hundreds, sometimes thousands, of operations: Cloudflare, AWS, Kubernetes. Even grouped by intent, the full toolset blows past what fits in context, and any given agent task touches only a sliver of it.</p><p>Drop the intent-grouped model and expose a deliberately thin surface that accepts code. Two tools suffice: a <code>search</code> tool that lets the agent find the right API operation, and an <code>execute</code> tool that runs a short script written by the agent against the underlying API in a server-side sandbox. Only the result returns to the model.</p><p><a href="https://github.com/cloudflare/mcp">Cloudflare&#8217;s MCP server</a> is the reference implementation: two tools cover roughly 2,500 endpoints in about 1,000 tokens of definitions. The agent gets the full expressive power of the API without paying to have every operation described upfront. The sandbox contains the blast radius. Scripts cannot reach past what the server hands them. This pattern compounds with <a href="https://platform.claude.com/docs/en/agents-and-tools/tool-use/programmatic-tool-calling">Programmatic Tool Calling</a> on the client side: the client processes results in its sandbox, the server executes calls in its sandbox, and raw data never needs to reach the model.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nYm-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84159d1f-fc6d-4388-9639-341b4cc0614d_4360x2200.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nYm-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84159d1f-fc6d-4388-9639-341b4cc0614d_4360x2200.png 424w, https://substackcdn.com/image/fetch/$s_!nYm-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84159d1f-fc6d-4388-9639-341b4cc0614d_4360x2200.png 848w, https://substackcdn.com/image/fetch/$s_!nYm-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84159d1f-fc6d-4388-9639-341b4cc0614d_4360x2200.png 1272w, https://substackcdn.com/image/fetch/$s_!nYm-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84159d1f-fc6d-4388-9639-341b4cc0614d_4360x2200.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nYm-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84159d1f-fc6d-4388-9639-341b4cc0614d_4360x2200.png" width="1456" height="735" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/84159d1f-fc6d-4388-9639-341b4cc0614d_4360x2200.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:735,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:158990,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/195426893?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84159d1f-fc6d-4388-9639-341b4cc0614d_4360x2200.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!nYm-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84159d1f-fc6d-4388-9639-341b4cc0614d_4360x2200.png 424w, https://substackcdn.com/image/fetch/$s_!nYm-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84159d1f-fc6d-4388-9639-341b4cc0614d_4360x2200.png 848w, https://substackcdn.com/image/fetch/$s_!nYm-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84159d1f-fc6d-4388-9639-341b4cc0614d_4360x2200.png 1272w, https://substackcdn.com/image/fetch/$s_!nYm-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84159d1f-fc6d-4388-9639-341b4cc0614d_4360x2200.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>When to use.</strong> When an intent-grouped surface would need more than roughly thirty to fifty tools to be useful, or when the underlying service is API-shaped (Cloudflare, AWS) rather than intent-shaped (Linear, Slack).</p><p><strong>The main trade-off.</strong> You inherit sandbox operations. Script isolation, resource limits, timeout policies, and API-key handling inside the sandbox are all your problem. The agent has more power, which means you have more to defend.</p><h2><strong>Interaction Semantics</strong></h2><p>A tool that only returns text pushes the UI problem to the model. That is fine for small answers, but a poor fit for dashboards, tables, forms, previews, confirmations, and anything else the user needs to inspect or act on.</p><p>MCP adds interaction primitives that let the server take back some of that responsibility. Instead of asking the model to describe everything in prose, the server can return UI, ask for structured input, or hand the user to an external flow when needed.</p><h3><strong>4. Inline UI Pattern</strong></h3><p>A tool that returns a wall of JSON leaves the user reading compressed prose about their own data. For anything dashboard-shaped, such as charts, tables, forms, and interactive confirmations, the agent is the wrong rendering layer.</p><p>Ship UI with the tool response. <a href="https://modelcontextprotocol.io/extensions/apps/overview">MCP Apps</a> let the server return an interactive interface that the client renders inline in chat: charts, forms, dashboards, and mini-views built from your product&#8217;s real components.</p><p>The bar is not &#8220;build a full web app.&#8221; The bar is simpler: if the tool&#8217;s result is something a user wants to look at rather than hear described, return a view, not a paragraph. Your product&#8217;s design system is more readable than any Markdown the model can synthesise.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!YQge!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b7ca77e-ecde-4348-b1d9-462b1616ddc0_4520x1700.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YQge!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b7ca77e-ecde-4348-b1d9-462b1616ddc0_4520x1700.png 424w, https://substackcdn.com/image/fetch/$s_!YQge!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b7ca77e-ecde-4348-b1d9-462b1616ddc0_4520x1700.png 848w, https://substackcdn.com/image/fetch/$s_!YQge!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b7ca77e-ecde-4348-b1d9-462b1616ddc0_4520x1700.png 1272w, https://substackcdn.com/image/fetch/$s_!YQge!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b7ca77e-ecde-4348-b1d9-462b1616ddc0_4520x1700.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YQge!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b7ca77e-ecde-4348-b1d9-462b1616ddc0_4520x1700.png" width="1456" height="548" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7b7ca77e-ecde-4348-b1d9-462b1616ddc0_4520x1700.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:548,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:181570,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/195426893?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b7ca77e-ecde-4348-b1d9-462b1616ddc0_4520x1700.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!YQge!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b7ca77e-ecde-4348-b1d9-462b1616ddc0_4520x1700.png 424w, https://substackcdn.com/image/fetch/$s_!YQge!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b7ca77e-ecde-4348-b1d9-462b1616ddc0_4520x1700.png 848w, https://substackcdn.com/image/fetch/$s_!YQge!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b7ca77e-ecde-4348-b1d9-462b1616ddc0_4520x1700.png 1272w, https://substackcdn.com/image/fetch/$s_!YQge!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b7ca77e-ecde-4348-b1d9-462b1616ddc0_4520x1700.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>When to use.</strong> Any tool whose output is fundamentally visual or tabular: search results, dashboards, file previews, status views.</p><p><strong>The main trade-off.</strong> You now ship UI alongside your API, which means component versioning, accessibility, and design review. The MCP server is no longer backend-only.</p><h3><strong>5. Elicited Input Pattern</strong></h3><p>Agents hit real-world ambiguity constantly: missing parameters, destructive actions that need confirmation, multiple matches that need disambiguation. The usual fallback is to guess, or to ask the user to restart the conversation with more detail. Both cost trust.</p><p>Pause the tool call and ask the user directly. MCP elicitation, specifically <a href="https://modelcontextprotocol.io/specification/2025-11-25/client/elicitation#form-mode-elicitation-requests">Form Mode</a>, lets the server return a form schema mid-call. The client renders it natively. The user fills it. Control returns to the server, and the tool completes.</p><p>This keeps the user in the flow instead of sending them back to model output with &#8220;please specify the region.&#8221; The agent&#8217;s job stays the same; the server gets to be honest about what it does not yet know.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!H89C!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4e1c1dd-b685-423f-8871-df2f8864614f_4400x1420.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!H89C!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4e1c1dd-b685-423f-8871-df2f8864614f_4400x1420.png 424w, https://substackcdn.com/image/fetch/$s_!H89C!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4e1c1dd-b685-423f-8871-df2f8864614f_4400x1420.png 848w, https://substackcdn.com/image/fetch/$s_!H89C!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4e1c1dd-b685-423f-8871-df2f8864614f_4400x1420.png 1272w, https://substackcdn.com/image/fetch/$s_!H89C!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4e1c1dd-b685-423f-8871-df2f8864614f_4400x1420.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!H89C!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4e1c1dd-b685-423f-8871-df2f8864614f_4400x1420.png" width="1456" height="470" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a4e1c1dd-b685-423f-8871-df2f8864614f_4400x1420.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:470,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:124565,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/195426893?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4e1c1dd-b685-423f-8871-df2f8864614f_4400x1420.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!H89C!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4e1c1dd-b685-423f-8871-df2f8864614f_4400x1420.png 424w, https://substackcdn.com/image/fetch/$s_!H89C!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4e1c1dd-b685-423f-8871-df2f8864614f_4400x1420.png 848w, https://substackcdn.com/image/fetch/$s_!H89C!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4e1c1dd-b685-423f-8871-df2f8864614f_4400x1420.png 1272w, https://substackcdn.com/image/fetch/$s_!H89C!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4e1c1dd-b685-423f-8871-df2f8864614f_4400x1420.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>When to use.</strong> When the missing information is structured, such as a region, an ID, or a confirmation, and the user is the only source of truth.</p><p><strong>The main trade-off.</strong> Every elicitation is a UX moment your server now owns. Poor form design turns a helpful pause into an annoying interrogation, and the pattern is untested in headless or batch agents where no human is available to fill it.</p><h3><strong>6. External Handoff Pattern</strong></h3><p>Some steps should never transit the MCP client at all. Downstream OAuth against a third party, taking a payment, collecting a credential that the agent&#8217;s context window must not see. If the client sees it, your threat model just widened.</p><p>This is not for authorizing the MCP client to access the MCP server. That belongs to MCP authorization. URL Mode is for sensitive downstream flows the server needs to complete on the user&#8217;s behalf.</p><p>Hand the user to a browser URL with <a href="https://modelcontextprotocol.io/specification/2025-11-25/client/elicitation#url-mode-elicitation-requests">URL-Mode elicitation</a>. The server returns a link; the client opens it in the user&#8217;s browser; the user completes the sensitive flow out-of-band; control returns to the server once it is done. The MCP client never sees the secret. This is the right shape for downstream OAuth, payments, or any credential that should never transit the MCP client.</p><p>The distinguishing question between this and Form-Mode elicitation is <em>where the secret lives after the interaction</em>. Data the server can legitimately hold goes to Form Mode. Data a third party should hold goes to URL Mode.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PDy8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f427380-90e3-4c24-adff-d8c0cf90cca4_4520x1948.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PDy8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f427380-90e3-4c24-adff-d8c0cf90cca4_4520x1948.png 424w, https://substackcdn.com/image/fetch/$s_!PDy8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f427380-90e3-4c24-adff-d8c0cf90cca4_4520x1948.png 848w, https://substackcdn.com/image/fetch/$s_!PDy8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f427380-90e3-4c24-adff-d8c0cf90cca4_4520x1948.png 1272w, https://substackcdn.com/image/fetch/$s_!PDy8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f427380-90e3-4c24-adff-d8c0cf90cca4_4520x1948.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PDy8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f427380-90e3-4c24-adff-d8c0cf90cca4_4520x1948.png" width="1456" height="627" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1f427380-90e3-4c24-adff-d8c0cf90cca4_4520x1948.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:627,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:141356,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/195426893?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f427380-90e3-4c24-adff-d8c0cf90cca4_4520x1948.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!PDy8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f427380-90e3-4c24-adff-d8c0cf90cca4_4520x1948.png 424w, https://substackcdn.com/image/fetch/$s_!PDy8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f427380-90e3-4c24-adff-d8c0cf90cca4_4520x1948.png 848w, https://substackcdn.com/image/fetch/$s_!PDy8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f427380-90e3-4c24-adff-d8c0cf90cca4_4520x1948.png 1272w, https://substackcdn.com/image/fetch/$s_!PDy8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f427380-90e3-4c24-adff-d8c0cf90cca4_4520x1948.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>When to use.</strong> Third-party OAuth flows, payments, and anything governed by compliance rules that say the credential never hits your infrastructure.</p><p><strong>The main trade-off.</strong> The user leaves the agent interface. Every handoff is a chance for them to drop off, and you have to design resume-after-redirect cleanly.</p><h2><strong>Auth and Credential Flow</strong></h2><p>Production agents run in the cloud, against systems protected by OAuth. Two patterns replace custom per-server authentication with standard plumbing.</p><h3><strong>7. Discoverable Auth Pattern</strong></h3><p>Every MCP server that invents its own auth adds friction at install time: configuration screens, token pastes, stale credentials. First-time failure rates climb, and re-auth prompts wear users down.</p><p>Publish and support standard OAuth metadata so the client can discover how authentication should work. For client registration, MCP supports <a href="https://modelcontextprotocol.io/specification/2025-11-25/basic/authorization#client-id-metadata-documents">Client ID Metadata Documents</a>: the client uses an HTTPS URL as its <code>client_id</code>, and that URL points to a JSON document describing the client, its redirect URIs, and related metadata.</p><p>The practical effect: a user adds the server, the client discovers the auth flow, OAuth starts with the right client metadata, and the user does not have to paste tokens or manually configure client IDs.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Hycv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c8633ef-af10-49bf-b3d2-7b9fbc4e0368_5100x2760.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Hycv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c8633ef-af10-49bf-b3d2-7b9fbc4e0368_5100x2760.png 424w, https://substackcdn.com/image/fetch/$s_!Hycv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c8633ef-af10-49bf-b3d2-7b9fbc4e0368_5100x2760.png 848w, https://substackcdn.com/image/fetch/$s_!Hycv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c8633ef-af10-49bf-b3d2-7b9fbc4e0368_5100x2760.png 1272w, https://substackcdn.com/image/fetch/$s_!Hycv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c8633ef-af10-49bf-b3d2-7b9fbc4e0368_5100x2760.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Hycv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c8633ef-af10-49bf-b3d2-7b9fbc4e0368_5100x2760.png" width="1456" height="788" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8c8633ef-af10-49bf-b3d2-7b9fbc4e0368_5100x2760.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:788,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:238705,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/195426893?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c8633ef-af10-49bf-b3d2-7b9fbc4e0368_5100x2760.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Hycv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c8633ef-af10-49bf-b3d2-7b9fbc4e0368_5100x2760.png 424w, https://substackcdn.com/image/fetch/$s_!Hycv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c8633ef-af10-49bf-b3d2-7b9fbc4e0368_5100x2760.png 848w, https://substackcdn.com/image/fetch/$s_!Hycv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c8633ef-af10-49bf-b3d2-7b9fbc4e0368_5100x2760.png 1272w, https://substackcdn.com/image/fetch/$s_!Hycv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c8633ef-af10-49bf-b3d2-7b9fbc4e0368_5100x2760.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p><strong>When to use.</strong> Every production MCP server with user-scoped data. It is not optional if the goal is cross-client adoption.</p><p><strong>The main trade-off.</strong> You are committing to standard OAuth behavior rather than a shortcut that works only for your own client. That means metadata endpoints, scope discipline, redirect URI validation, token validation, and the operational discipline to keep the flow working across clients.</p><h3><strong>8. Vault-Held Credentials Pattern</strong></h3><p>Even with discoverable auth, OAuth tokens still need a home. If every MCP server handles tokens directly, every integration ends up rebuilding the same secret store, refresh loop, rotation policy, and revocation path.</p><p>Offload token lifecycle to a platform <a href="https://platform.claude.com/docs/en/managed-agents/vaults#mcp-oauth-credential">vault</a>. In Claude Managed Agents, OAuth credentials can be registered once, referenced by vault ID at session creation, and injected into the right MCP connections by the platform.</p><p>The practical effect: the MCP server does not need to receive tokens in tool calls or implement its own token storage. Refresh, revocation, and credential handling move one layer up.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zXhp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4f3a247-e5b8-4444-81b9-e7b130f67ebd_4520x1960.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zXhp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4f3a247-e5b8-4444-81b9-e7b130f67ebd_4520x1960.png 424w, https://substackcdn.com/image/fetch/$s_!zXhp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4f3a247-e5b8-4444-81b9-e7b130f67ebd_4520x1960.png 848w, https://substackcdn.com/image/fetch/$s_!zXhp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4f3a247-e5b8-4444-81b9-e7b130f67ebd_4520x1960.png 1272w, https://substackcdn.com/image/fetch/$s_!zXhp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4f3a247-e5b8-4444-81b9-e7b130f67ebd_4520x1960.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zXhp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4f3a247-e5b8-4444-81b9-e7b130f67ebd_4520x1960.png" width="1456" height="631" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f4f3a247-e5b8-4444-81b9-e7b130f67ebd_4520x1960.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:631,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:154499,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/195426893?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4f3a247-e5b8-4444-81b9-e7b130f67ebd_4520x1960.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!zXhp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4f3a247-e5b8-4444-81b9-e7b130f67ebd_4520x1960.png 424w, https://substackcdn.com/image/fetch/$s_!zXhp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4f3a247-e5b8-4444-81b9-e7b130f67ebd_4520x1960.png 848w, https://substackcdn.com/image/fetch/$s_!zXhp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4f3a247-e5b8-4444-81b9-e7b130f67ebd_4520x1960.png 1272w, https://substackcdn.com/image/fetch/$s_!zXhp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4f3a247-e5b8-4444-81b9-e7b130f67ebd_4520x1960.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>When to use.</strong> Whenever you are shipping on a managed-agent platform that offers a vault. At a minimum, design your server so that credentials could be injected from one. Do not bake token handling into tool calls.</p><p><strong>The main trade-off.</strong> You are trusting a platform vault with production credentials. Its uptime, security posture, and export policy become part of your production story. Self-hosted servers outside a managed platform have to rebuild the pattern themselves.</p><h2><strong>Context Economy</strong></h2><p>The agent&#8217;s context window is finite. Two client-side patterns keep it lean even when the tool population and tool results are large.</p><h3><strong>9. On-Demand Tool Loading Pattern</strong></h3><p>A client connected to several MCP servers can easily have hundreds of tool definitions in play. Loading all of them upfront blows the context budget before the first tool even fires.</p><p>Load tool definitions lazily through a tool-search meta-tool. The agent searches for tools by description; only matching definitions are loaded into context; everything else stays out. Tool search can cut tool-definition tokens significantly while maintaining high selection accuracy (<a href="https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-search-tool">docs</a>).</p><p>This is the client-side complement to Intent-Grouped Tools and Thin Surface on the server side. Good server design keeps the total tool count manageable. Good client design keeps only the needed subset in context.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6ooc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52391048-661c-4a46-8c79-f30d2a53f982_4200x2180.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6ooc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52391048-661c-4a46-8c79-f30d2a53f982_4200x2180.png 424w, https://substackcdn.com/image/fetch/$s_!6ooc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52391048-661c-4a46-8c79-f30d2a53f982_4200x2180.png 848w, https://substackcdn.com/image/fetch/$s_!6ooc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52391048-661c-4a46-8c79-f30d2a53f982_4200x2180.png 1272w, https://substackcdn.com/image/fetch/$s_!6ooc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52391048-661c-4a46-8c79-f30d2a53f982_4200x2180.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6ooc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52391048-661c-4a46-8c79-f30d2a53f982_4200x2180.png" width="1456" height="756" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/52391048-661c-4a46-8c79-f30d2a53f982_4200x2180.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:756,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:239297,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/195426893?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52391048-661c-4a46-8c79-f30d2a53f982_4200x2180.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!6ooc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52391048-661c-4a46-8c79-f30d2a53f982_4200x2180.png 424w, https://substackcdn.com/image/fetch/$s_!6ooc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52391048-661c-4a46-8c79-f30d2a53f982_4200x2180.png 848w, https://substackcdn.com/image/fetch/$s_!6ooc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52391048-661c-4a46-8c79-f30d2a53f982_4200x2180.png 1272w, https://substackcdn.com/image/fetch/$s_!6ooc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52391048-661c-4a46-8c79-f30d2a53f982_4200x2180.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>When to use.</strong> Any agent with more than a handful of tool sources, or any cross-cutting task that might touch tools from several MCP servers.</p><p><strong>The main trade-off.</strong> The search step adds a round-trip and depends on description quality. Tools with vague descriptions will not surface when they should, and the cost of a miss is the agent picking a neighbouring tool that looks close.</p><h3><strong>10. Programmatic Tool Calling Pattern</strong></h3><p>Tool results, such as long lists, nested JSON, logs, traces, or large document payloads, often land in the model&#8217;s context window raw. The agent pays tokens to read them, even when the task is only to filter, count, aggregate, or join the data.</p><p>Process tool results in a code-execution sandbox before they reach the model. <a href="https://platform.claude.com/docs/en/agents-and-tools/tool-use/programmatic-tool-calling">Programmatic tool calling</a> lets the agent loop, filter, and aggregate across calls in code, with only the final useful output entering context. The same idea is described in more detail in the engineering post on <a href="https://www.anthropic.com/engineering/code-execution-with-mcp">code execution with MCP</a>.</p><p>This cuts token usage on complex multi-step workflows and compounds with On-Demand Tool Loading. Fewer tool definitions go in, less raw data comes back, and the model reasons over the result rather than the full payload.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-jXg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89adc740-4942-412a-841e-ce69e0b04d7e_4360x1760.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-jXg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89adc740-4942-412a-841e-ce69e0b04d7e_4360x1760.png 424w, https://substackcdn.com/image/fetch/$s_!-jXg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89adc740-4942-412a-841e-ce69e0b04d7e_4360x1760.png 848w, https://substackcdn.com/image/fetch/$s_!-jXg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89adc740-4942-412a-841e-ce69e0b04d7e_4360x1760.png 1272w, https://substackcdn.com/image/fetch/$s_!-jXg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89adc740-4942-412a-841e-ce69e0b04d7e_4360x1760.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-jXg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89adc740-4942-412a-841e-ce69e0b04d7e_4360x1760.png" width="1456" height="588" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/89adc740-4942-412a-841e-ce69e0b04d7e_4360x1760.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:588,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:157566,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/195426893?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89adc740-4942-412a-841e-ce69e0b04d7e_4360x1760.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!-jXg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89adc740-4942-412a-841e-ce69e0b04d7e_4360x1760.png 424w, https://substackcdn.com/image/fetch/$s_!-jXg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89adc740-4942-412a-841e-ce69e0b04d7e_4360x1760.png 848w, https://substackcdn.com/image/fetch/$s_!-jXg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89adc740-4942-412a-841e-ce69e0b04d7e_4360x1760.png 1272w, https://substackcdn.com/image/fetch/$s_!-jXg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89adc740-4942-412a-841e-ce69e0b04d7e_4360x1760.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>When to use.</strong> Multi-step workflows that chain several tool calls and transform results before the model needs to see them.</p><p><strong>The main trade-off.</strong> You need a sandbox environment, sandbox debugging, and a mental model that includes code the agent writes against your results. Simple single-call tools do not benefit.</p><h2><strong>Packaging and Distribution</strong></h2><p>A server on its own is rarely the whole integration. Two patterns ship servers with the skills, hooks, and subagents that make them useful.</p><h3><strong>11. Plugin Bundle Pattern</strong></h3><p>A real integration rarely ships as a single MCP server. It is usually an MCP server plus a Skill that teaches the agent how to use it, a subagent for specialised work, and hooks for lifecycle events. Distributing them separately creates configuration drift and version skew.</p><p>In Claude Code, ship them as one plugin. <a href="https://code.claude.com/docs/en/plugins-reference#plugin-components-reference">Plugins</a> bundle Skills, MCP servers, hooks, LSP servers, and specialised subagents into one distribution unit. One install, one version, one name.</p><p>The <a href="https://claude.ai/directory/plugins/data%40knowledge-work-plugins">data plugin for Cowork</a> is a good reference example: 10 Skills and 8 MCP servers covering Snowflake, Databricks, BigQuery, Hex, and more, installable as a unit.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VcKf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3262c44-a1ca-4648-b226-0b846237d282_4360x2060.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VcKf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3262c44-a1ca-4648-b226-0b846237d282_4360x2060.png 424w, https://substackcdn.com/image/fetch/$s_!VcKf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3262c44-a1ca-4648-b226-0b846237d282_4360x2060.png 848w, https://substackcdn.com/image/fetch/$s_!VcKf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3262c44-a1ca-4648-b226-0b846237d282_4360x2060.png 1272w, https://substackcdn.com/image/fetch/$s_!VcKf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3262c44-a1ca-4648-b226-0b846237d282_4360x2060.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VcKf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3262c44-a1ca-4648-b226-0b846237d282_4360x2060.png" width="1456" height="688" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d3262c44-a1ca-4648-b226-0b846237d282_4360x2060.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:688,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:212253,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/195426893?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3262c44-a1ca-4648-b226-0b846237d282_4360x2060.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!VcKf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3262c44-a1ca-4648-b226-0b846237d282_4360x2060.png 424w, https://substackcdn.com/image/fetch/$s_!VcKf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3262c44-a1ca-4648-b226-0b846237d282_4360x2060.png 848w, https://substackcdn.com/image/fetch/$s_!VcKf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3262c44-a1ca-4648-b226-0b846237d282_4360x2060.png 1272w, https://substackcdn.com/image/fetch/$s_!VcKf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3262c44-a1ca-4648-b226-0b846237d282_4360x2060.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>When to use.</strong> Whenever your integration needs more than a bare MCP server to be genuinely useful, which in practice is most real-world integrations.</p><p><strong>The main trade-off.</strong> Bundling couples release cadences. An update to any component ships the whole plugin, and teams with independent release cycles per component will feel the drag.</p><h3><strong>12. Server-Distributed Skills Pattern</strong></h3><p>An MCP server gives the agent access to tools, but access is not the same as expertise. The server provider usually knows the best workflows, safe sequences, common mistakes, and domain-specific conventions. Without a way to share that knowledge, each client has to rediscover it, and each agent has to improvise.</p><p>Ship Skills from the MCP server itself. The client gets both the raw tool access and the procedural knowledge for using those tools well. In practice, the server does not only expose capabilities; it also ships the playbook for using them. Canva, Notion, and Sentry already do this in Claude today.</p><p>The MCP community is working on a portable <a href="https://github.com/modelcontextprotocol/experimental-ext-skills">extension</a> so that Skill delivery can work across compliant clients, versioned with the API the Skill depends on. Today the pattern is client-specific; the experimental extension makes it protocol-level.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FTp3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F765b9778-fc1d-43ac-9d0e-1a707361c4c4_4840x1980.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FTp3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F765b9778-fc1d-43ac-9d0e-1a707361c4c4_4840x1980.png 424w, https://substackcdn.com/image/fetch/$s_!FTp3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F765b9778-fc1d-43ac-9d0e-1a707361c4c4_4840x1980.png 848w, https://substackcdn.com/image/fetch/$s_!FTp3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F765b9778-fc1d-43ac-9d0e-1a707361c4c4_4840x1980.png 1272w, https://substackcdn.com/image/fetch/$s_!FTp3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F765b9778-fc1d-43ac-9d0e-1a707361c4c4_4840x1980.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FTp3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F765b9778-fc1d-43ac-9d0e-1a707361c4c4_4840x1980.png" width="1456" height="596" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/765b9778-fc1d-43ac-9d0e-1a707361c4c4_4840x1980.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:596,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:193441,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/195426893?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F765b9778-fc1d-43ac-9d0e-1a707361c4c4_4840x1980.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!FTp3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F765b9778-fc1d-43ac-9d0e-1a707361c4c4_4840x1980.png 424w, https://substackcdn.com/image/fetch/$s_!FTp3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F765b9778-fc1d-43ac-9d0e-1a707361c4c4_4840x1980.png 848w, https://substackcdn.com/image/fetch/$s_!FTp3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F765b9778-fc1d-43ac-9d0e-1a707361c4c4_4840x1980.png 1272w, https://substackcdn.com/image/fetch/$s_!FTp3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F765b9778-fc1d-43ac-9d0e-1a707361c4c4_4840x1980.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>When to use.</strong> When your MCP server wraps a surface rich enough that &#8220;how to use it well&#8221; is a real Skill, not a one-paragraph hint.</p><p><strong>The main trade-off.</strong> Experimental today. Early adopters of portable server-distributed Skills commit to spec changes; sitting out means losing the adoption advantage that comes with shipping expertise alongside capabilities.</p><h2><strong>The takeaway</strong></h2><p>These patterns are not only about MCP as a protocol. They show the shape production agent integrations are starting to take:</p><ul><li><p><strong>MCP servers are becoming agent-facing product surfaces.</strong> The useful ones expose intent-based tools, not endpoint mirrors. They hide API choreography, return agent-ready outputs, and sometimes return UI instead of prose.</p></li><li><p><strong>Interaction is moving beyond text.</strong> The server can ask for structured input, request confirmation, show inline UI, or hand the user to an external flow when secrets, payments, or third-party auth are involved.</p></li><li><p><strong>Auth is becoming standard plumbing.</strong> Discoverable OAuth flows and vault-held credentials move production agents away from custom token handling inside every tool call.</p></li><li><p><strong>Context is now an architectural constraint.</strong> Tool definitions need on-demand loading, and large tool results need filtering, joining, and aggregation before they hit the model. Otherwise, the context window becomes the bottleneck.</p></li><li><p><strong>Distribution is becoming richer than &#8220;ship an MCP server.&#8221;</strong> Real integrations include servers, Skills, hooks, subagents, and product-specific playbooks. The raw capability matters, but the instructions for using it well matter just as much.</p></li></ul><p>Some of these extensions are still early, and the patterns will keep evolving. But they are already visible in real MCP usage, and several are gaining traction across production servers and clients. That is why they are worth naming.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!csJd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93818b36-e55f-41aa-b4d2-b4e4ef42d797_4896x1316.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!csJd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93818b36-e55f-41aa-b4d2-b4e4ef42d797_4896x1316.png 424w, https://substackcdn.com/image/fetch/$s_!csJd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93818b36-e55f-41aa-b4d2-b4e4ef42d797_4896x1316.png 848w, https://substackcdn.com/image/fetch/$s_!csJd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93818b36-e55f-41aa-b4d2-b4e4ef42d797_4896x1316.png 1272w, https://substackcdn.com/image/fetch/$s_!csJd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93818b36-e55f-41aa-b4d2-b4e4ef42d797_4896x1316.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!csJd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93818b36-e55f-41aa-b4d2-b4e4ef42d797_4896x1316.png" width="1456" height="391" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/93818b36-e55f-41aa-b4d2-b4e4ef42d797_4896x1316.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:391,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:847811,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/195426893?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93818b36-e55f-41aa-b4d2-b4e4ef42d797_4896x1316.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!csJd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93818b36-e55f-41aa-b4d2-b4e4ef42d797_4896x1316.png 424w, https://substackcdn.com/image/fetch/$s_!csJd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93818b36-e55f-41aa-b4d2-b4e4ef42d797_4896x1316.png 848w, https://substackcdn.com/image/fetch/$s_!csJd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93818b36-e55f-41aa-b4d2-b4e4ef42d797_4896x1316.png 1272w, https://substackcdn.com/image/fetch/$s_!csJd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93818b36-e55f-41aa-b4d2-b4e4ef42d797_4896x1316.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>If you want to read the earlier parts of this series, start with these two posts:</p><ul><li><p><a href="https://generativeprogrammer.com/p/12-agentic-harness-patterns-from">12 Agentic Harness Patterns from Claude Code</a></p></li><li><p><a href="https://generativeprogrammer.com/p/skill-authoring-patterns-from-anthropics">Skill Authoring Patterns from Anthropic&#8217;s Best Practices</a></p></li></ul>]]></content:encoded></item><item><title><![CDATA[Skill Authoring Patterns from Anthropic’s Best Practices]]></title><description><![CDATA[A practical breakdown of the recurring design patterns behind effective Claude Skills, from activation metadata to executable helpers.]]></description><link>https://generativeprogrammer.com/p/skill-authoring-patterns-from-anthropics</link><guid isPermaLink="false">https://generativeprogrammer.com/p/skill-authoring-patterns-from-anthropics</guid><dc:creator><![CDATA[Bilgin Ibryam]]></dc:creator><pubDate>Sun, 19 Apr 2026 00:15:01 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/e81de257-b636-429e-989a-9f09ccccb334_4108x2292.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>My <a href="https://generativeprogrammer.com/p/12-agentic-harness-patterns-from">previous post</a> pulled 12 patterns from the Claude Code harness itself, how the agent works under the hood. This one looks one layer up: when you author a Skill to extend Claude, what patterns recur?</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Fq1M!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbd771ce-e301-40d9-9341-40e07ceefe40_2688x3576.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Fq1M!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbd771ce-e301-40d9-9341-40e07ceefe40_2688x3576.png 424w, https://substackcdn.com/image/fetch/$s_!Fq1M!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbd771ce-e301-40d9-9341-40e07ceefe40_2688x3576.png 848w, https://substackcdn.com/image/fetch/$s_!Fq1M!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbd771ce-e301-40d9-9341-40e07ceefe40_2688x3576.png 1272w, https://substackcdn.com/image/fetch/$s_!Fq1M!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbd771ce-e301-40d9-9341-40e07ceefe40_2688x3576.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Fq1M!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbd771ce-e301-40d9-9341-40e07ceefe40_2688x3576.png" width="1456" height="1937" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dbd771ce-e301-40d9-9341-40e07ceefe40_2688x3576.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1937,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1098577,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/194494067?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbd771ce-e301-40d9-9341-40e07ceefe40_2688x3576.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Fq1M!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbd771ce-e301-40d9-9341-40e07ceefe40_2688x3576.png 424w, https://substackcdn.com/image/fetch/$s_!Fq1M!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbd771ce-e301-40d9-9341-40e07ceefe40_2688x3576.png 848w, https://substackcdn.com/image/fetch/$s_!Fq1M!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbd771ce-e301-40d9-9341-40e07ceefe40_2688x3576.png 1272w, https://substackcdn.com/image/fetch/$s_!Fq1M!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbd771ce-e301-40d9-9341-40e07ceefe40_2688x3576.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Skills come in two rough types. <em>Task skills (often as disable-model-invocation: true)</em> are step-by-step workflows (deploy, commit, security-review) that a user often invokes directly via <code>/skill-name</code>. <em>Reference skills (user-invocable: false)</em> are passive knowledge (style guides, domain vocabulary) that Claude applies inline whenever a relevant request matches. Most of the patterns below apply to both, but where emphasis shifts I will call it out.</p><p>The 14 patterns fall into five categories: discovery and selection, context economy, instruction calibration, workflow control, and executable code.</p><h2><strong>Discovery and selection</strong></h2><p>Two patterns decide whether a skill fires at all. At session start Claude sees only metadata: the <code>name</code> and <code>description</code> of every installed skill. A skill that cannot survive this metadata-only round never runs.</p><h3><strong>1. Activation Metadata pattern</strong></h3><p>With dozens of installed skills, Claude picks the wrong one, or none at all, when descriptions are vague like &#8220;helps with documents&#8221;. The <code>description</code> field is not just a summary; it is the only signal Claude has at selection time.</p><p>This pattern packs the description with both what the skill does and the specific triggers or contexts that should fire it, written in third person. Anthropic&#8217;s skill-creator goes further and recommends writing descriptions that are a little &#8220;pushy&#8221;, since Claude has a measured tendency to <em>under</em>-trigger skills: &#8220;Make sure to use this skill whenever the user mentions dashboards, data visualization, or internal metrics, even if they do not explicitly ask for a dashboard.&#8221;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!grB9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b7fe462-334d-40d7-a694-9bc363e5b1ec_2320x1512.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!grB9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b7fe462-334d-40d7-a694-9bc363e5b1ec_2320x1512.png 424w, https://substackcdn.com/image/fetch/$s_!grB9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b7fe462-334d-40d7-a694-9bc363e5b1ec_2320x1512.png 848w, https://substackcdn.com/image/fetch/$s_!grB9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b7fe462-334d-40d7-a694-9bc363e5b1ec_2320x1512.png 1272w, https://substackcdn.com/image/fetch/$s_!grB9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b7fe462-334d-40d7-a694-9bc363e5b1ec_2320x1512.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!grB9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b7fe462-334d-40d7-a694-9bc363e5b1ec_2320x1512.png" width="1456" height="949" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7b7fe462-334d-40d7-a694-9bc363e5b1ec_2320x1512.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:949,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:160995,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/194494067?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b7fe462-334d-40d7-a694-9bc363e5b1ec_2320x1512.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!grB9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b7fe462-334d-40d7-a694-9bc363e5b1ec_2320x1512.png 424w, https://substackcdn.com/image/fetch/$s_!grB9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b7fe462-334d-40d7-a694-9bc363e5b1ec_2320x1512.png 848w, https://substackcdn.com/image/fetch/$s_!grB9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b7fe462-334d-40d7-a694-9bc363e5b1ec_2320x1512.png 1272w, https://substackcdn.com/image/fetch/$s_!grB9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b7fe462-334d-40d7-a694-9bc363e5b1ec_2320x1512.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Use this pattern on every skill. Nothing else matters if the skill fails at selection. The trade-off is budget: in the open Agent Skills spec, the <code>description</code> field caps at 1024 characters; in Claude Code, the combined <code>description</code> and optional <code>when_to_use</code> text is truncated at 1536 characters in the skill listing. So every sentence competes with positive triggers, exclusion clauses, and domain keywords for space.</p><h3><strong>2. Exclusion Clause pattern</strong></h3><p>A description that only says when to fire misses half the job. The skill triggers on tangentially related requests, hijacks work that belongs to another skill, or steps in when bare Claude would have done fine.</p><p>This pattern ends the description with explicit exclusions: &#8220;Do NOT use for blog articles, newsletters, emails, tweets, or long-form content.&#8221; Ruben Hassid calls this <a href="https://ruben.substack.com/p/claude-skills">the single most important line in the description</a>, above the positive trigger. Positive triggers pull a skill in; exclusions push it out. Both are needed and they compete for the same budget.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pyVm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F316b86fc-f729-4749-9397-c56a85c4942e_2640x1784.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pyVm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F316b86fc-f729-4749-9397-c56a85c4942e_2640x1784.png 424w, https://substackcdn.com/image/fetch/$s_!pyVm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F316b86fc-f729-4749-9397-c56a85c4942e_2640x1784.png 848w, https://substackcdn.com/image/fetch/$s_!pyVm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F316b86fc-f729-4749-9397-c56a85c4942e_2640x1784.png 1272w, https://substackcdn.com/image/fetch/$s_!pyVm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F316b86fc-f729-4749-9397-c56a85c4942e_2640x1784.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pyVm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F316b86fc-f729-4749-9397-c56a85c4942e_2640x1784.png" width="1456" height="984" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/316b86fc-f729-4749-9397-c56a85c4942e_2640x1784.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:984,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:211012,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/194494067?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F316b86fc-f729-4749-9397-c56a85c4942e_2640x1784.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!pyVm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F316b86fc-f729-4749-9397-c56a85c4942e_2640x1784.png 424w, https://substackcdn.com/image/fetch/$s_!pyVm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F316b86fc-f729-4749-9397-c56a85c4942e_2640x1784.png 848w, https://substackcdn.com/image/fetch/$s_!pyVm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F316b86fc-f729-4749-9397-c56a85c4942e_2640x1784.png 1272w, https://substackcdn.com/image/fetch/$s_!pyVm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F316b86fc-f729-4749-9397-c56a85c4942e_2640x1784.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Use this for any skill that shares vocabulary with other skills or with bare Claude (most of them). The trade-off is maintenance: as your skill library grows, exclusion clauses must be kept in sync so two skills do not both claim or both reject the same territory.</p><h2><strong>Context economy</strong></h2><p>Two patterns exist because the context window is a shared budget. Every token in your skill crowds out tokens from other skills, the conversation history, and the user&#8217;s actual request.</p><h3><strong>3. Context Budget pattern</strong></h3><p>A skill that re-explains what a PDF is, what a library is, or how JSON works spends tokens teaching Claude things Claude already knows. Multiply that waste across a library of 20 skills and the context window is half-full before the user has said anything.</p><p>This pattern demands each paragraph justify its token cost. Default assumption: Claude is smart. If removing a sentence would not confuse a competent reader, remove it. Consistent terminology matters too: pick one term (always &#8220;field&#8221;, never &#8220;field / box / element&#8221;) to reduce cognitive load. And avoid time-sensitive phrasing (&#8221;before August 2025...&#8221;) that dates the skill; put legacy information in an &#8220;old patterns&#8221; appendix instead.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zMxz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90dd7ab9-10c5-4c49-8527-9f0c2752e703_2880x1432.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zMxz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90dd7ab9-10c5-4c49-8527-9f0c2752e703_2880x1432.png 424w, https://substackcdn.com/image/fetch/$s_!zMxz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90dd7ab9-10c5-4c49-8527-9f0c2752e703_2880x1432.png 848w, https://substackcdn.com/image/fetch/$s_!zMxz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90dd7ab9-10c5-4c49-8527-9f0c2752e703_2880x1432.png 1272w, https://substackcdn.com/image/fetch/$s_!zMxz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90dd7ab9-10c5-4c49-8527-9f0c2752e703_2880x1432.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zMxz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90dd7ab9-10c5-4c49-8527-9f0c2752e703_2880x1432.png" width="1456" height="724" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/90dd7ab9-10c5-4c49-8527-9f0c2752e703_2880x1432.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:724,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:145621,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/194494067?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90dd7ab9-10c5-4c49-8527-9f0c2752e703_2880x1432.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!zMxz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90dd7ab9-10c5-4c49-8527-9f0c2752e703_2880x1432.png 424w, https://substackcdn.com/image/fetch/$s_!zMxz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90dd7ab9-10c5-4c49-8527-9f0c2752e703_2880x1432.png 848w, https://substackcdn.com/image/fetch/$s_!zMxz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90dd7ab9-10c5-4c49-8527-9f0c2752e703_2880x1432.png 1272w, https://substackcdn.com/image/fetch/$s_!zMxz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90dd7ab9-10c5-4c49-8527-9f0c2752e703_2880x1432.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Use this pattern on every skill; it is a baseline discipline. The trade-off shows up with less-capable models: what reads as crisply concise to Sonnet may be too terse for Haiku. If you target multiple models, aim for the level of detail that works for the weakest one you plan to support.</p><h3><strong>4. Progressive Disclosure pattern</strong></h3><p>Stuffing every detail into SKILL.md burns context on material most invocations never need. An 800-line SKILL.md with forms, API references, and examples costs the same whether the user asked about forms or about something else entirely.</p><p>This pattern treats SKILL.md as a table of contents. The body stays under 500 lines and links to domain files (<code>FORMS.md</code>, <code>REFERENCE.md</code>, <code>reference/finance.md</code>). Claude reads the metadata on every session; loads SKILL.md only when the skill is triggered; and pulls in detail files only when the current task references them. Scripts in <code>scripts/</code> can execute without loading, so their internal code usually stays out of the context window. Keep the reference graph shallow: every file one hop from SKILL.md. Nested chains like <code>SKILL.md -&gt; advanced.md -&gt; details.md</code> increase the odds Claude only partially reads the target and misses the rest. Long reference files, especially those over a few hundred lines, get a table of contents at the top so Claude can see the full scope even from a truncated read.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!66kK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a6cab25-1ed9-4b90-a8fd-b9df11fb094f_2720x1824.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!66kK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a6cab25-1ed9-4b90-a8fd-b9df11fb094f_2720x1824.png 424w, https://substackcdn.com/image/fetch/$s_!66kK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a6cab25-1ed9-4b90-a8fd-b9df11fb094f_2720x1824.png 848w, https://substackcdn.com/image/fetch/$s_!66kK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a6cab25-1ed9-4b90-a8fd-b9df11fb094f_2720x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!66kK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a6cab25-1ed9-4b90-a8fd-b9df11fb094f_2720x1824.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!66kK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a6cab25-1ed9-4b90-a8fd-b9df11fb094f_2720x1824.png" width="1456" height="976" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1a6cab25-1ed9-4b90-a8fd-b9df11fb094f_2720x1824.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:976,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:155544,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/194494067?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a6cab25-1ed9-4b90-a8fd-b9df11fb094f_2720x1824.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!66kK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a6cab25-1ed9-4b90-a8fd-b9df11fb094f_2720x1824.png 424w, https://substackcdn.com/image/fetch/$s_!66kK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a6cab25-1ed9-4b90-a8fd-b9df11fb094f_2720x1824.png 848w, https://substackcdn.com/image/fetch/$s_!66kK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a6cab25-1ed9-4b90-a8fd-b9df11fb094f_2720x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!66kK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a6cab25-1ed9-4b90-a8fd-b9df11fb094f_2720x1824.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Use this for any skill pushing past ~300 lines in SKILL.md. The trade-off is fragmentation: splitting content across files makes it harder for authors to hold the whole skill in their head, and Claude has to make correct routing decisions about which file to load next. Mis-routing costs turns.</p><h2><strong>Instruction calibration</strong></h2><p>Five patterns dial instruction specificity up or down. <em>Control Tuning</em> is the meta-rule for how tightly to constrain Claude. <em>Explain-the-Why</em> shapes how that specificity is phrased. <em>Template Scaffold</em>, <em>In-Skill Examples</em>, and <em>Known Gotchas</em> are concrete techniques at the low-freedom end of the dial.</p><h3><strong>5. Control Tuning pattern</strong></h3><p>A skill that rigidly scripts every action strangles Claude on tasks where context should shape the approach. A skill that gives only loose guidance fails on fragile procedures where one wrong step breaks everything.</p><p>This pattern matches instruction freedom to task fragility. <em>High freedom</em> (text instructions, &#8220;use your judgement&#8221;) fits open-field tasks like code review where many valid approaches exist. <em>Medium freedom</em> (pseudocode, parameterised scripts) fits preferred-but-flexible flows like a deploy runbook. <em>Low freedom</em> (exact scripts, no flags, &#8220;do not modify this command&#8221;) fits fragile operations like database migrations where one wrong step is catastrophic. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5ZYJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b8e3753-42a6-40a6-b8bd-5783c713f8db_2840x2144.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5ZYJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b8e3753-42a6-40a6-b8bd-5783c713f8db_2840x2144.png 424w, https://substackcdn.com/image/fetch/$s_!5ZYJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b8e3753-42a6-40a6-b8bd-5783c713f8db_2840x2144.png 848w, https://substackcdn.com/image/fetch/$s_!5ZYJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b8e3753-42a6-40a6-b8bd-5783c713f8db_2840x2144.png 1272w, https://substackcdn.com/image/fetch/$s_!5ZYJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b8e3753-42a6-40a6-b8bd-5783c713f8db_2840x2144.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5ZYJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b8e3753-42a6-40a6-b8bd-5783c713f8db_2840x2144.png" width="1456" height="1099" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1b8e3753-42a6-40a6-b8bd-5783c713f8db_2840x2144.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1099,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:165448,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/194494067?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b8e3753-42a6-40a6-b8bd-5783c713f8db_2840x2144.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!5ZYJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b8e3753-42a6-40a6-b8bd-5783c713f8db_2840x2144.png 424w, https://substackcdn.com/image/fetch/$s_!5ZYJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b8e3753-42a6-40a6-b8bd-5783c713f8db_2840x2144.png 848w, https://substackcdn.com/image/fetch/$s_!5ZYJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b8e3753-42a6-40a6-b8bd-5783c713f8db_2840x2144.png 1272w, https://substackcdn.com/image/fetch/$s_!5ZYJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b8e3753-42a6-40a6-b8bd-5783c713f8db_2840x2144.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Tone is part of the dial too: opening with a persona (&#8221;You are a senior code reviewer focused on correctness over style&#8221;) sets the judgement rubric for the whole skill and is common in reference skills that shape voice.</p><p>Use this pattern by asking, for each step in the skill, how much variance is acceptable. The trade-off is judgement: authors consistently err toward over-constraining, because rigid instructions feel safer. They are not; they just fail differently.</p><h3><strong>6. Explain-the-Why pattern</strong></h3><p>Skills written as strings of ALWAYS, NEVER, MUST in capital letters give Claude rigid rules with no context. The model follows the letter but misses edge cases the author did not anticipate, or over-applies a rule in situations where a judgement call was needed. Anthropic&#8217;s skill-creator explicitly flags all-caps MUST/ALWAYS/NEVER as a yellow flag to reframe.</p><p>This pattern states the rule, then explains <em>why</em> so Claude can generalise to cases the skill did not spell out. &#8220;Use constructor injection. Field injection breaks testability because we cannot mock the field without Spring context&#8221; beats &#8220;MUST use constructor injection. NEVER use field injection.&#8221; The reasoning becomes the rubric for unanticipated cases.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8FvS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0daddfc-1c8e-4128-bb74-d4ceb9b8a0db_2720x1744.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8FvS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0daddfc-1c8e-4128-bb74-d4ceb9b8a0db_2720x1744.png 424w, https://substackcdn.com/image/fetch/$s_!8FvS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0daddfc-1c8e-4128-bb74-d4ceb9b8a0db_2720x1744.png 848w, https://substackcdn.com/image/fetch/$s_!8FvS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0daddfc-1c8e-4128-bb74-d4ceb9b8a0db_2720x1744.png 1272w, https://substackcdn.com/image/fetch/$s_!8FvS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0daddfc-1c8e-4128-bb74-d4ceb9b8a0db_2720x1744.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8FvS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0daddfc-1c8e-4128-bb74-d4ceb9b8a0db_2720x1744.png" width="1456" height="934" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b0daddfc-1c8e-4128-bb74-d4ceb9b8a0db_2720x1744.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:934,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:197790,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/194494067?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0daddfc-1c8e-4128-bb74-d4ceb9b8a0db_2720x1744.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!8FvS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0daddfc-1c8e-4128-bb74-d4ceb9b8a0db_2720x1744.png 424w, https://substackcdn.com/image/fetch/$s_!8FvS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0daddfc-1c8e-4128-bb74-d4ceb9b8a0db_2720x1744.png 848w, https://substackcdn.com/image/fetch/$s_!8FvS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0daddfc-1c8e-4128-bb74-d4ceb9b8a0db_2720x1744.png 1272w, https://substackcdn.com/image/fetch/$s_!8FvS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0daddfc-1c8e-4128-bb74-d4ceb9b8a0db_2720x1744.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Use this pattern wherever you catch yourself reaching for capitalised imperatives. The trade-off is length: explanations cost tokens, and for genuinely fragile steps (see <em>Control Tuning</em>), a bare imperative is still correct. Reserve prose-with-reasoning for the cases where Claude will need to exercise judgement.</p><h3><strong>7. Template Scaffold pattern</strong></h3><p>When output structure matters, reports, commit messages, API payloads, release notes, Claude produces inconsistent shapes across invocations. The shape is implicit in examples elsewhere, but the skill does not make it explicit, and each run rediscovers a slightly different structure.</p><p>This pattern ships a template in the skill body with placeholders Claude fills in. Templates come in two strictness levels. <em>Strict</em>: &#8220;ALWAYS use this exact template structure&#8221; for data contracts or machine-parsed output. <em>Flexible</em>: &#8220;A sensible default; adapt sections as needed&#8221; for documents where the author trusts Claude to judge.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!32Am!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21347a72-83da-472f-b79b-09dd8a64ca7f_1760x1704.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!32Am!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21347a72-83da-472f-b79b-09dd8a64ca7f_1760x1704.png 424w, https://substackcdn.com/image/fetch/$s_!32Am!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21347a72-83da-472f-b79b-09dd8a64ca7f_1760x1704.png 848w, https://substackcdn.com/image/fetch/$s_!32Am!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21347a72-83da-472f-b79b-09dd8a64ca7f_1760x1704.png 1272w, https://substackcdn.com/image/fetch/$s_!32Am!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21347a72-83da-472f-b79b-09dd8a64ca7f_1760x1704.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!32Am!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21347a72-83da-472f-b79b-09dd8a64ca7f_1760x1704.png" width="1456" height="1410" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/21347a72-83da-472f-b79b-09dd8a64ca7f_1760x1704.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1410,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:125887,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/194494067?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21347a72-83da-472f-b79b-09dd8a64ca7f_1760x1704.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!32Am!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21347a72-83da-472f-b79b-09dd8a64ca7f_1760x1704.png 424w, https://substackcdn.com/image/fetch/$s_!32Am!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21347a72-83da-472f-b79b-09dd8a64ca7f_1760x1704.png 848w, https://substackcdn.com/image/fetch/$s_!32Am!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21347a72-83da-472f-b79b-09dd8a64ca7f_1760x1704.png 1272w, https://substackcdn.com/image/fetch/$s_!32Am!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21347a72-83da-472f-b79b-09dd8a64ca7f_1760x1704.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Use this whenever output structure has downstream readers or parsers. The trade-off is creative flatness: strict templates suppress the structural variation that can make output more useful in edge cases, so prefer flexible templates unless a machine is reading the output.</p><h3><strong>8. In-Skill Examples pattern</strong></h3><p>Description alone rarely conveys tone, formatting conventions, or the right level of detail. Claude hits the right shape but the wrong style: commit messages that use the correct conventional-commit prefix but miss the tone the team writes in.</p><p>This pattern embeds concrete input/output pairs in the skill body, the same few-shot trick used in prompting. Two or three examples, each labelled <code>Input:</code> and <code>Output:</code>, show the desired pattern directly. Claude matches on the examples instead of inferring from prose. Templates (previous pattern) show the <em>skeleton</em>; examples show <em>populated instances</em>. The two compose well, with the template defining shape and examples calibrating style.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!opo9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a4af117-7d8d-49cc-89de-24e6efe38af6_2560x1664.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!opo9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a4af117-7d8d-49cc-89de-24e6efe38af6_2560x1664.png 424w, https://substackcdn.com/image/fetch/$s_!opo9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a4af117-7d8d-49cc-89de-24e6efe38af6_2560x1664.png 848w, https://substackcdn.com/image/fetch/$s_!opo9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a4af117-7d8d-49cc-89de-24e6efe38af6_2560x1664.png 1272w, https://substackcdn.com/image/fetch/$s_!opo9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a4af117-7d8d-49cc-89de-24e6efe38af6_2560x1664.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!opo9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a4af117-7d8d-49cc-89de-24e6efe38af6_2560x1664.png" width="1456" height="946" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9a4af117-7d8d-49cc-89de-24e6efe38af6_2560x1664.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:946,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:189002,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/194494067?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a4af117-7d8d-49cc-89de-24e6efe38af6_2560x1664.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!opo9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a4af117-7d8d-49cc-89de-24e6efe38af6_2560x1664.png 424w, https://substackcdn.com/image/fetch/$s_!opo9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a4af117-7d8d-49cc-89de-24e6efe38af6_2560x1664.png 848w, https://substackcdn.com/image/fetch/$s_!opo9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a4af117-7d8d-49cc-89de-24e6efe38af6_2560x1664.png 1272w, https://substackcdn.com/image/fetch/$s_!opo9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a4af117-7d8d-49cc-89de-24e6efe38af6_2560x1664.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Use this for skills where output quality depends on style as much as structure: commit messages, release notes, changelog entries, review summaries. The trade-off is drift toward the examples. If the three examples share a subtle bias, Claude reproduces that bias across all invocations, so the examples need to span the variation the skill should support.</p><h3><strong>9. Known Gotchas pattern</strong></h3><p>Skills that document only the happy path teach Claude what to do, not what to watch for. The first time the skill hits a real-world edge case, a form field that does not exist, a command that works on macOS but fails on Linux, a library that silently returns empty results, Claude has no prior and invents a fix.</p><p>This pattern adds a dedicated section to SKILL.md listing concrete failure modes previously seen: &#8220;Scanned PDFs return [] silently. Check page type first.&#8221; &#8220;Rotated pages need <code>page.rotation=0</code> before column extraction.&#8221; One <a href="https://medium.com/@tort_mario/skills-for-claude-code-the-ultimate-guide-from-an-anthropic-engineer-bcd66faaa2d6">practitioner guide</a> calls the gotchas section the most valuable content of a mature skill.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-yIw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F606b02ec-ec84-45c9-884a-ca439d16c221_2720x1864.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-yIw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F606b02ec-ec84-45c9-884a-ca439d16c221_2720x1864.png 424w, https://substackcdn.com/image/fetch/$s_!-yIw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F606b02ec-ec84-45c9-884a-ca439d16c221_2720x1864.png 848w, https://substackcdn.com/image/fetch/$s_!-yIw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F606b02ec-ec84-45c9-884a-ca439d16c221_2720x1864.png 1272w, https://substackcdn.com/image/fetch/$s_!-yIw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F606b02ec-ec84-45c9-884a-ca439d16c221_2720x1864.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-yIw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F606b02ec-ec84-45c9-884a-ca439d16c221_2720x1864.png" width="1456" height="998" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/606b02ec-ec84-45c9-884a-ca439d16c221_2720x1864.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:998,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:231050,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/194494067?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F606b02ec-ec84-45c9-884a-ca439d16c221_2720x1864.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!-yIw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F606b02ec-ec84-45c9-884a-ca439d16c221_2720x1864.png 424w, https://substackcdn.com/image/fetch/$s_!-yIw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F606b02ec-ec84-45c9-884a-ca439d16c221_2720x1864.png 848w, https://substackcdn.com/image/fetch/$s_!-yIw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F606b02ec-ec84-45c9-884a-ca439d16c221_2720x1864.png 1272w, https://substackcdn.com/image/fetch/$s_!-yIw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F606b02ec-ec84-45c9-884a-ca439d16c221_2720x1864.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Use this pattern on mature skills, populated from observing real runs. The trade-off is that gotchas are a moving target: libraries update, APIs change, and a stale gotcha can send Claude chasing a problem that no longer exists.</p><h2><strong>Workflow control</strong></h2><p>Three patterns structure multi-step procedures. <em>Execution Checklist</em> is the linear case. <em>Self-Correcting Loop</em> introduces iteration. <em>Plan-Validate-Execute</em> adds a verifiable artifact <em>before any side effects</em>.</p><h3><strong>10. Execution Checklist pattern</strong></h3><p>In long multi-step procedures Claude skips validation steps, loses track of which step it is on, or declares done prematurely. &#8220;I think we are finished&#8221; at step four of a six-step process is a common failure mode.</p><p>This pattern provides a copyable checklist Claude pastes into its response and ticks off as it works. The checklist lives in the conversation, so skipping a step is now visible to both Claude and the user. The act of rendering unchecked items each turn raises the bar for declaring completion.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!SrBJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F841b4c7f-43a0-49ea-9d7f-1c9a09e82d40_2560x1704.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SrBJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F841b4c7f-43a0-49ea-9d7f-1c9a09e82d40_2560x1704.png 424w, https://substackcdn.com/image/fetch/$s_!SrBJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F841b4c7f-43a0-49ea-9d7f-1c9a09e82d40_2560x1704.png 848w, https://substackcdn.com/image/fetch/$s_!SrBJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F841b4c7f-43a0-49ea-9d7f-1c9a09e82d40_2560x1704.png 1272w, https://substackcdn.com/image/fetch/$s_!SrBJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F841b4c7f-43a0-49ea-9d7f-1c9a09e82d40_2560x1704.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!SrBJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F841b4c7f-43a0-49ea-9d7f-1c9a09e82d40_2560x1704.png" width="1456" height="969" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/841b4c7f-43a0-49ea-9d7f-1c9a09e82d40_2560x1704.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:969,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:151095,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/194494067?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F841b4c7f-43a0-49ea-9d7f-1c9a09e82d40_2560x1704.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!SrBJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F841b4c7f-43a0-49ea-9d7f-1c9a09e82d40_2560x1704.png 424w, https://substackcdn.com/image/fetch/$s_!SrBJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F841b4c7f-43a0-49ea-9d7f-1c9a09e82d40_2560x1704.png 848w, https://substackcdn.com/image/fetch/$s_!SrBJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F841b4c7f-43a0-49ea-9d7f-1c9a09e82d40_2560x1704.png 1272w, https://substackcdn.com/image/fetch/$s_!SrBJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F841b4c7f-43a0-49ea-9d7f-1c9a09e82d40_2560x1704.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Use this for any workflow with more than three steps, especially where a skipped validation step is costly. The trade-off is verbosity: the checklist is rendered in full on every turn, so in long sessions it multiplies tokens, and for very short flows it is overkill.</p><h3><strong>11. Self-Correcting Loop pattern</strong></h3><p>When Claude generates code, edits XML, or drafts against a style guide, a single forward pass often ships mistakes the skill could have caught. The skill describes the correct output but has no mechanism to verify what Claude actually produced.</p><p>This pattern wires in an explicit loop: produce output, run a validator, if it fails, fix and revalidate. The validator can be a script (<code>python validate.py fields.json</code>) or a document (re-read STYLE_GUIDE.md and check each rule). The loop terminates only when validation passes.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LtUQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15d6aead-bedb-4628-ae05-2471289f9107_2108x1312.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LtUQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15d6aead-bedb-4628-ae05-2471289f9107_2108x1312.png 424w, https://substackcdn.com/image/fetch/$s_!LtUQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15d6aead-bedb-4628-ae05-2471289f9107_2108x1312.png 848w, https://substackcdn.com/image/fetch/$s_!LtUQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15d6aead-bedb-4628-ae05-2471289f9107_2108x1312.png 1272w, https://substackcdn.com/image/fetch/$s_!LtUQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15d6aead-bedb-4628-ae05-2471289f9107_2108x1312.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LtUQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15d6aead-bedb-4628-ae05-2471289f9107_2108x1312.png" width="1456" height="906" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/15d6aead-bedb-4628-ae05-2471289f9107_2108x1312.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:906,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:100841,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/194494067?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15d6aead-bedb-4628-ae05-2471289f9107_2108x1312.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!LtUQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15d6aead-bedb-4628-ae05-2471289f9107_2108x1312.png 424w, https://substackcdn.com/image/fetch/$s_!LtUQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15d6aead-bedb-4628-ae05-2471289f9107_2108x1312.png 848w, https://substackcdn.com/image/fetch/$s_!LtUQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15d6aead-bedb-4628-ae05-2471289f9107_2108x1312.png 1272w, https://substackcdn.com/image/fetch/$s_!LtUQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15d6aead-bedb-4628-ae05-2471289f9107_2108x1312.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Use this for quality-critical tasks where mistakes are expensive and programmatic verification is feasible. The trade-off is non-termination: a weak validator (or a Claude that keeps making the same mistake) can loop indefinitely, so the pattern needs a retry cap and a fallback to the user.</p><h3><strong>12. Plan-Validate-Execute pattern</strong></h3><p>For batch or destructive operations, updating 50 form fields, migrating rows, rewriting a document, a direct &#8220;just do it&#8221; pass lets errors cascade silently. By the time you notice Claude referenced non-existent fields, the changes are already applied.</p><p>This pattern inserts a verifiable intermediate artifact, typically a JSON plan, between understanding the task and acting on it. A script validates the plan <em>before any side effects</em>. That is the distinction from <em>Self-Correcting Loop</em>, which iterates after the work has already landed. Claude iterates on the plan freely; the real target is only touched once the plan passes validation.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!em41!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7c6e2e9-2426-49af-8a10-08d0f0a2b864_3064x1032.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!em41!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7c6e2e9-2426-49af-8a10-08d0f0a2b864_3064x1032.png 424w, https://substackcdn.com/image/fetch/$s_!em41!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7c6e2e9-2426-49af-8a10-08d0f0a2b864_3064x1032.png 848w, https://substackcdn.com/image/fetch/$s_!em41!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7c6e2e9-2426-49af-8a10-08d0f0a2b864_3064x1032.png 1272w, https://substackcdn.com/image/fetch/$s_!em41!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7c6e2e9-2426-49af-8a10-08d0f0a2b864_3064x1032.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!em41!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7c6e2e9-2426-49af-8a10-08d0f0a2b864_3064x1032.png" width="1456" height="490" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d7c6e2e9-2426-49af-8a10-08d0f0a2b864_3064x1032.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:490,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:112657,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/194494067?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7c6e2e9-2426-49af-8a10-08d0f0a2b864_3064x1032.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!em41!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7c6e2e9-2426-49af-8a10-08d0f0a2b864_3064x1032.png 424w, https://substackcdn.com/image/fetch/$s_!em41!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7c6e2e9-2426-49af-8a10-08d0f0a2b864_3064x1032.png 848w, https://substackcdn.com/image/fetch/$s_!em41!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7c6e2e9-2426-49af-8a10-08d0f0a2b864_3064x1032.png 1272w, https://substackcdn.com/image/fetch/$s_!em41!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7c6e2e9-2426-49af-8a10-08d0f0a2b864_3064x1032.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Use this for batch, destructive, or high-stakes operations. The trade-off is ceremony: for a two-field edit the plan-validate-execute loop is more process than the task deserves, so reserve it for operations where &#8220;undo&#8221; is costly or impossible.</p><h2><strong>Executable code</strong></h2><p>Two patterns apply to skills that ship runnable helpers alongside SKILL.md. Together they shift work out of Claude&#8217;s inference loop and into deterministic scripts that run, succeed or fail, and return only their output.</p><h3><strong>13. Utility Bundle pattern</strong></h3><p>Asking Claude to generate a validation script, a PDF extractor, or a data-normaliser from scratch every invocation is slower, less reliable, and burns tokens on code the user never sees. Each run rediscovers the same logic with small variations.</p><p>This pattern ships purpose-built scripts in <code>scripts/</code> alongside SKILL.md. Claude invokes them via bash, so only their <em>output</em> consumes context. Scripts should handle common failure modes cleanly instead of dumping ambiguity back on Claude. Sometimes that means creating a missing file with a sensible default. Sometimes it means failing fast with a clear error. Constants need justifying comments (&#8221;30s timeout covers slow connections&#8221;), not magic numbers. When in doubt about which helpers to bundle, <a href="https://github.com/anthropics/skills/blob/main/skills/skill-creator/SKILL.md">run the skill on three test cases and read the transcripts</a>: if subagents all wrote the same helper independently, promote it to <code>scripts/</code>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6b8F!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F790a9513-77d5-4672-808d-060024170cd5_2160x1584.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6b8F!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F790a9513-77d5-4672-808d-060024170cd5_2160x1584.png 424w, https://substackcdn.com/image/fetch/$s_!6b8F!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F790a9513-77d5-4672-808d-060024170cd5_2160x1584.png 848w, https://substackcdn.com/image/fetch/$s_!6b8F!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F790a9513-77d5-4672-808d-060024170cd5_2160x1584.png 1272w, https://substackcdn.com/image/fetch/$s_!6b8F!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F790a9513-77d5-4672-808d-060024170cd5_2160x1584.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6b8F!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F790a9513-77d5-4672-808d-060024170cd5_2160x1584.png" width="1456" height="1068" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/790a9513-77d5-4672-808d-060024170cd5_2160x1584.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1068,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:140725,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/194494067?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F790a9513-77d5-4672-808d-060024170cd5_2160x1584.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!6b8F!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F790a9513-77d5-4672-808d-060024170cd5_2160x1584.png 424w, https://substackcdn.com/image/fetch/$s_!6b8F!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F790a9513-77d5-4672-808d-060024170cd5_2160x1584.png 848w, https://substackcdn.com/image/fetch/$s_!6b8F!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F790a9513-77d5-4672-808d-060024170cd5_2160x1584.png 1272w, https://substackcdn.com/image/fetch/$s_!6b8F!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F790a9513-77d5-4672-808d-060024170cd5_2160x1584.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Use this for any operation that is deterministic, frequently repeated, and worth testing independently. The trade-off is environment dependence: scripts need a runtime, and platform-specific helpers fail differently on user machines than on the author&#8217;s, so validate package availability in SKILL.md and prefer forward slashes in every path.</p><h3><strong>14. Autonomy Calibration pattern</strong></h3><p>A skill that runs with the full default tool set can do anything: write files, shell out, call MCP servers, even when its task only needs read access. A security-audit skill with <code>Write</code> and <code>Bash</code> permissions is still a standing risk, regardless of what SKILL.md says.</p><p>This pattern declares an <code>allowed-tools</code> list in the skill&#8217;s YAML frontmatter to pre-approve only the capabilities it actually needs. A security audit gets <code>Read, Grep, Glob</code>; a documentation generator gets <code>Read, Write</code>; a deploy skill gets <code>Bash</code> with a narrow command matcher. That reduces approval friction, but it does not by itself restrict which tools are available. In Claude Code, actual restrictions come from permission rules, not from <code>allowed-tools</code> alone.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Xk0a!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe30173f4-2c43-4ac3-86bd-17e43aff6de3_3096x1584.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Xk0a!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe30173f4-2c43-4ac3-86bd-17e43aff6de3_3096x1584.png 424w, https://substackcdn.com/image/fetch/$s_!Xk0a!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe30173f4-2c43-4ac3-86bd-17e43aff6de3_3096x1584.png 848w, https://substackcdn.com/image/fetch/$s_!Xk0a!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe30173f4-2c43-4ac3-86bd-17e43aff6de3_3096x1584.png 1272w, https://substackcdn.com/image/fetch/$s_!Xk0a!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe30173f4-2c43-4ac3-86bd-17e43aff6de3_3096x1584.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Xk0a!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe30173f4-2c43-4ac3-86bd-17e43aff6de3_3096x1584.png" width="1456" height="745" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e30173f4-2c43-4ac3-86bd-17e43aff6de3_3096x1584.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:745,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:158960,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/194494067?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe30173f4-2c43-4ac3-86bd-17e43aff6de3_3096x1584.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Xk0a!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe30173f4-2c43-4ac3-86bd-17e43aff6de3_3096x1584.png 424w, https://substackcdn.com/image/fetch/$s_!Xk0a!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe30173f4-2c43-4ac3-86bd-17e43aff6de3_3096x1584.png 848w, https://substackcdn.com/image/fetch/$s_!Xk0a!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe30173f4-2c43-4ac3-86bd-17e43aff6de3_3096x1584.png 1272w, https://substackcdn.com/image/fetch/$s_!Xk0a!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe30173f4-2c43-4ac3-86bd-17e43aff6de3_3096x1584.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Use this for any skill where a narrow pre-approved tool set is genuinely sufficient, especially security, audit, review, and analysis skills. The trade-off is confusion: an over-broad <code>allowed-tools</code> list quietly grants more hands-off autonomy than intended, and it is easy to mistake pre-approval for sandboxing. If you need real restrictions, pair this with permission rules.</p><h2><strong>The takeaway</strong></h2><p>These 14 patterns are essential. The description field decides whether the skill even runs; progressive disclosure decides how much context it costs; explain-the-why and known gotchas decide whether Claude handles the edge cases; plan-validate-execute and autonomy calibration decide how much can go wrong when something breaks. Each pattern addresses a failure mode that shows up across authors and domains.</p><p>As with the <a href="https://generativeprogrammer.com/p/12-agentic-harness-patterns-from">harness patterns</a> in the previous post, these are not product-specific tricks. They are becoming the cornerstones of how agents get extended, and they will remain relevant as the models and tools change underneath them.</p><p>The source material for this post is Anthropic&#8217;s own <a href="https://platform.claude.com/docs/en/agents-and-tools/agent-skills/best-practices">Skill authoring best practices</a>, their <code>skill-creator</code><a href="https://github.com/anthropics/skills/blob/main/skills/skill-creator/SKILL.md"> SKILL.md</a> (Anthropic eating their own dog food), the <a href="https://resources.anthropic.com/hubfs/The-Complete-Guide-to-Building-Skill-for-Claude.pdf">33-page Complete Guide</a>, plus community writing from <a href="https://x.com/akshay_pachaar/status/2035341800739877091">Akshay Pachaar</a>, <a href="https://ruben.substack.com/p/claude-skills">Ruben Hassid</a>, <a href="https://medium.com/@tort_mario/skills-for-claude-code-the-ultimate-guide-from-an-anthropic-engineer-bcd66faaa2d6">Tort Mario</a>, <a href="https://x.com/alexxubyte/status/2039016933333610881">Alex Xu</a>, and <a href="https://x.com/sivalabs/status/2006937997028241806">Siva</a>. </p>]]></content:encoded></item><item><title><![CDATA[12 Agentic Harness Patterns from Claude Code]]></title><description><![CDATA[The leaked source revealed how a production coding agent is actually assembled. Here are the design patterns behind it.]]></description><link>https://generativeprogrammer.com/p/12-agentic-harness-patterns-from</link><guid isPermaLink="false">https://generativeprogrammer.com/p/12-agentic-harness-patterns-from</guid><dc:creator><![CDATA[Bilgin Ibryam]]></dc:creator><pubDate>Sun, 05 Apr 2026 21:01:56 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!-QCT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dba753c-9631-416d-bfe5-d4b10472dc7f_3780x2520.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>There are many things to learn from the Claude Code leak, and I covered a few <a href="https://generativeprogrammer.com/p/practical-lessons-from-the-claude">in my previous post</a>. But formulating learnings as patterns is my passion.  I loved doing it with <a href="https://k8spatterns.com/">Kubernetes Patterns</a>, now exploring it with <a href="https://promptpatterns.dev/">Prompt Patterns</a>, and when I looked at the leaked harness, I could not help seeing patterns there too. Here I am framing them as reusable design patterns for anyone building agentic applications.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-QCT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dba753c-9631-416d-bfe5-d4b10472dc7f_3780x2520.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-QCT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dba753c-9631-416d-bfe5-d4b10472dc7f_3780x2520.png 424w, https://substackcdn.com/image/fetch/$s_!-QCT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dba753c-9631-416d-bfe5-d4b10472dc7f_3780x2520.png 848w, https://substackcdn.com/image/fetch/$s_!-QCT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dba753c-9631-416d-bfe5-d4b10472dc7f_3780x2520.png 1272w, https://substackcdn.com/image/fetch/$s_!-QCT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dba753c-9631-416d-bfe5-d4b10472dc7f_3780x2520.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-QCT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dba753c-9631-416d-bfe5-d4b10472dc7f_3780x2520.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1dba753c-9631-416d-bfe5-d4b10472dc7f_3780x2520.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:435291,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/193249897?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dba753c-9631-416d-bfe5-d4b10472dc7f_3780x2520.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!-QCT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dba753c-9631-416d-bfe5-d4b10472dc7f_3780x2520.png 424w, https://substackcdn.com/image/fetch/$s_!-QCT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dba753c-9631-416d-bfe5-d4b10472dc7f_3780x2520.png 848w, https://substackcdn.com/image/fetch/$s_!-QCT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dba753c-9631-416d-bfe5-d4b10472dc7f_3780x2520.png 1272w, https://substackcdn.com/image/fetch/$s_!-QCT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dba753c-9631-416d-bfe5-d4b10472dc7f_3780x2520.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Overview diagram showing 12 agentic harness patterns organized in four categories: Memory &amp; Context, Workflow &amp; Orchestration, Tools &amp; Permissions, and Automation.</figcaption></figure></div><p>The patterns fall into four categories: memory and context, workflow and orchestration, tools and permissions, and automation.</p><h2><strong>Memory and Context</strong></h2><p>These five patterns form a progression: from giving the agent a static file of rules, to scoping those rules by directory, to organizing memory into tiers, to cleaning that memory in the background, to compressing the conversation itself when the context window fills up.</p><h3><strong>1. Persistent Instruction File Pattern</strong></h3><p>Without a persistent instruction file, every agent session starts blank. The user repeats the same conventions, commands, and boundaries each time. The agent makes the same mistakes in session five that it made in session one.</p><p>This pattern introduces a durable project-level configuration file loaded automatically at the start of every session. It defines build commands, test commands, architecture rules, naming conventions, and coding standards. It ships with the repo, not with the user&#8217;s clipboard.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-gcZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32a08a61-8c35-4611-ad80-2bd3e1d21987_1454x1158.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-gcZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32a08a61-8c35-4611-ad80-2bd3e1d21987_1454x1158.png 424w, https://substackcdn.com/image/fetch/$s_!-gcZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32a08a61-8c35-4611-ad80-2bd3e1d21987_1454x1158.png 848w, https://substackcdn.com/image/fetch/$s_!-gcZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32a08a61-8c35-4611-ad80-2bd3e1d21987_1454x1158.png 1272w, https://substackcdn.com/image/fetch/$s_!-gcZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32a08a61-8c35-4611-ad80-2bd3e1d21987_1454x1158.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-gcZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32a08a61-8c35-4611-ad80-2bd3e1d21987_1454x1158.png" width="1454" height="1158" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/32a08a61-8c35-4611-ad80-2bd3e1d21987_1454x1158.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1158,&quot;width&quot;:1454,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:142678,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/193249897?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32a08a61-8c35-4611-ad80-2bd3e1d21987_1454x1158.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!-gcZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32a08a61-8c35-4611-ad80-2bd3e1d21987_1454x1158.png 424w, https://substackcdn.com/image/fetch/$s_!-gcZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32a08a61-8c35-4611-ad80-2bd3e1d21987_1454x1158.png 848w, https://substackcdn.com/image/fetch/$s_!-gcZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32a08a61-8c35-4611-ad80-2bd3e1d21987_1454x1158.png 1272w, https://substackcdn.com/image/fetch/$s_!-gcZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32a08a61-8c35-4611-ad80-2bd3e1d21987_1454x1158.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Use this when your agent works on a codebase across multiple sessions. The main trade-off is the maintenance burden: the file must stay current as the project evolves, and a stale instruction file can be worse than none if it teaches the agent outdated rules.</p><h3><strong>2. Scoped Context Assembly Pattern</strong></h3><p>A single instruction file works for small projects. As a codebase grows, one file either becomes a giant blob that gets ignored, or stays too generic to be useful for any specific directory.</p><p>This pattern loads instructions dynamically from multiple files at different scopes: organization, user, project root, parent directories, and child directories. The agent sees different rules depending on where in the codebase it is working. Import syntax allows splitting large instruction sets across files without duplication.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!F9b0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7614b409-ebef-4c5b-9475-1aeb8776d6e2_1454x918.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!F9b0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7614b409-ebef-4c5b-9475-1aeb8776d6e2_1454x918.png 424w, https://substackcdn.com/image/fetch/$s_!F9b0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7614b409-ebef-4c5b-9475-1aeb8776d6e2_1454x918.png 848w, https://substackcdn.com/image/fetch/$s_!F9b0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7614b409-ebef-4c5b-9475-1aeb8776d6e2_1454x918.png 1272w, https://substackcdn.com/image/fetch/$s_!F9b0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7614b409-ebef-4c5b-9475-1aeb8776d6e2_1454x918.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!F9b0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7614b409-ebef-4c5b-9475-1aeb8776d6e2_1454x918.png" width="1454" height="918" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7614b409-ebef-4c5b-9475-1aeb8776d6e2_1454x918.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:918,&quot;width&quot;:1454,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:146799,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/193249897?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7614b409-ebef-4c5b-9475-1aeb8776d6e2_1454x918.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!F9b0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7614b409-ebef-4c5b-9475-1aeb8776d6e2_1454x918.png 424w, https://substackcdn.com/image/fetch/$s_!F9b0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7614b409-ebef-4c5b-9475-1aeb8776d6e2_1454x918.png 848w, https://substackcdn.com/image/fetch/$s_!F9b0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7614b409-ebef-4c5b-9475-1aeb8776d6e2_1454x918.png 1272w, https://substackcdn.com/image/fetch/$s_!F9b0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7614b409-ebef-4c5b-9475-1aeb8776d6e2_1454x918.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Use this in monorepos, multi-language projects, or any codebase where different directories follow different conventions. The main trade-off is discoverability: when instructions live in many files, it becomes harder to understand what the agent actually sees. Conflicting rules across scopes can produce surprising behavior.</p><h3><strong>3. Tiered Memory Pattern</strong></h3><p>An agent that remembers everything the same way ends up remembering nothing well. Loading all memory into the context window every session wastes tokens, hits size limits, and buries useful information under noise.</p><p>This pattern organizes agent memory into distinct layers with different loading strategies. A compact index (capped at 200 lines in Claude Code) stays in context at all times. Topic-specific files load on demand when the current task matches them. Full session transcripts stay on disk and are only searched when needed. One of the most <a href="https://x.com/himanshustwts/status/2038924027411222533">detailed breakdowns</a> of the leaked code confirmed this three-layer design.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ltad!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ce989d-a8e7-4602-a33b-65bfd1c3be8f_1454x867.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ltad!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ce989d-a8e7-4602-a33b-65bfd1c3be8f_1454x867.png 424w, https://substackcdn.com/image/fetch/$s_!ltad!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ce989d-a8e7-4602-a33b-65bfd1c3be8f_1454x867.png 848w, https://substackcdn.com/image/fetch/$s_!ltad!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ce989d-a8e7-4602-a33b-65bfd1c3be8f_1454x867.png 1272w, https://substackcdn.com/image/fetch/$s_!ltad!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ce989d-a8e7-4602-a33b-65bfd1c3be8f_1454x867.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ltad!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ce989d-a8e7-4602-a33b-65bfd1c3be8f_1454x867.png" width="1454" height="867" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b4ce989d-a8e7-4602-a33b-65bfd1c3be8f_1454x867.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:867,&quot;width&quot;:1454,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:111185,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/193249897?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ce989d-a8e7-4602-a33b-65bfd1c3be8f_1454x867.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ltad!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ce989d-a8e7-4602-a33b-65bfd1c3be8f_1454x867.png 424w, https://substackcdn.com/image/fetch/$s_!ltad!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ce989d-a8e7-4602-a33b-65bfd1c3be8f_1454x867.png 848w, https://substackcdn.com/image/fetch/$s_!ltad!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ce989d-a8e7-4602-a33b-65bfd1c3be8f_1454x867.png 1272w, https://substackcdn.com/image/fetch/$s_!ltad!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ce989d-a8e7-4602-a33b-65bfd1c3be8f_1454x867.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Use this when your agent runs across multiple sessions and needs to retain preferences, decisions, or workflow state. The main trade-off is the added complexity in deciding what goes where, when to promote or demote information between layers, and how to keep the index in sync with the underlying files.</p><h3><strong>4. Dream Consolidation Pattern</strong></h3><p>Even with tiered memory, agent memory degrades over time. Duplicate entries accumulate, outdated facts contradict new ones, and the index grows until it is no longer compact.</p><p>This pattern runs a background process that periodically reviews, deduplicates, prunes, and reorganizes agent memory during idle time. Think of it as garbage collection for agent state. The leaked code revealed an <a href="https://x.com/troyhua/status/2039052328070734102">&#8220;autoDream&#8221; mode</a> that merges duplicates, prunes contradictions, and keeps the index tight. A separate <a href="https://x.com/ellen_in_sf/status/2039098050837463504">analysis</a> found 8 phases of memory management and 5 types of context compaction.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jo-X!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02855a6a-252f-42d9-be62-a9ac1c361e26_1454x521.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jo-X!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02855a6a-252f-42d9-be62-a9ac1c361e26_1454x521.png 424w, https://substackcdn.com/image/fetch/$s_!jo-X!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02855a6a-252f-42d9-be62-a9ac1c361e26_1454x521.png 848w, https://substackcdn.com/image/fetch/$s_!jo-X!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02855a6a-252f-42d9-be62-a9ac1c361e26_1454x521.png 1272w, https://substackcdn.com/image/fetch/$s_!jo-X!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02855a6a-252f-42d9-be62-a9ac1c361e26_1454x521.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jo-X!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02855a6a-252f-42d9-be62-a9ac1c361e26_1454x521.png" width="1454" height="521" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/02855a6a-252f-42d9-be62-a9ac1c361e26_1454x521.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:521,&quot;width&quot;:1454,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:93997,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/193249897?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02855a6a-252f-42d9-be62-a9ac1c361e26_1454x521.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!jo-X!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02855a6a-252f-42d9-be62-a9ac1c361e26_1454x521.png 424w, https://substackcdn.com/image/fetch/$s_!jo-X!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02855a6a-252f-42d9-be62-a9ac1c361e26_1454x521.png 848w, https://substackcdn.com/image/fetch/$s_!jo-X!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02855a6a-252f-42d9-be62-a9ac1c361e26_1454x521.png 1272w, https://substackcdn.com/image/fetch/$s_!jo-X!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02855a6a-252f-42d9-be62-a9ac1c361e26_1454x521.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Use this when your agent accumulates memory across many sessions and you cannot rely on users to curate it manually. The main trade-off is that the consolidation process itself uses tokens and can make mistakes. An overly aggressive prune might delete something the user still needs.</p><h3><strong>5. Progressive Context Compaction Pattern</strong></h3><p>Long agent sessions eventually hit the context window limit. The agent either loses its earliest context entirely or stops working. Neither is acceptable for tasks that require sustained reasoning across many turns.</p><p>This pattern applies multiple stages of compression tuned for different ages of the conversation. Recent turns stay at full detail. Older turns get lightly summarized. Very old turns get aggressively collapsed. The leaked code used four layers: HISTORY_SNIP, Microcompact, CONTEXT_COLLAPSE, and Autocompact, each progressively more aggressive.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!YZn3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fb2508c-b784-42ab-aac6-3926416eccf1_1454x534.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YZn3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fb2508c-b784-42ab-aac6-3926416eccf1_1454x534.png 424w, https://substackcdn.com/image/fetch/$s_!YZn3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fb2508c-b784-42ab-aac6-3926416eccf1_1454x534.png 848w, https://substackcdn.com/image/fetch/$s_!YZn3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fb2508c-b784-42ab-aac6-3926416eccf1_1454x534.png 1272w, https://substackcdn.com/image/fetch/$s_!YZn3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fb2508c-b784-42ab-aac6-3926416eccf1_1454x534.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YZn3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fb2508c-b784-42ab-aac6-3926416eccf1_1454x534.png" width="1454" height="534" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8fb2508c-b784-42ab-aac6-3926416eccf1_1454x534.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:534,&quot;width&quot;:1454,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:42655,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/193249897?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fb2508c-b784-42ab-aac6-3926416eccf1_1454x534.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!YZn3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fb2508c-b784-42ab-aac6-3926416eccf1_1454x534.png 424w, https://substackcdn.com/image/fetch/$s_!YZn3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fb2508c-b784-42ab-aac6-3926416eccf1_1454x534.png 848w, https://substackcdn.com/image/fetch/$s_!YZn3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fb2508c-b784-42ab-aac6-3926416eccf1_1454x534.png 1272w, https://substackcdn.com/image/fetch/$s_!YZn3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fb2508c-b784-42ab-aac6-3926416eccf1_1454x534.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Use this when sessions regularly exceed 20-30 turns. The main trade-off is lossy compression: every summarization step discards detail, and if the agent later needs something from a collapsed segment, it may hallucinate rather than admit it forgot.</p><h2><strong>Workflow and Orchestration</strong></h2><p>The common theme here is separation: separating reading from writing, research context from editing context, and sequential work from parallel work. These patterns matter because the default behavior of most agents is to mix everything together, and that mixing degrades quality as the task grows.</p><h3><strong>6. Explore-Plan-Act Loop Pattern</strong></h3><p>When an agent jumps straight to editing files, it makes changes based on incomplete understanding. The result is edits to the wrong files, missed dependencies, and approaches that ignore existing patterns.</p><p>This pattern separates the workflow into three phases with increasing write permissions. In the explore phase, the agent can only read, search, and map the codebase. In the plan phase, it discusses the approach with the user. Only in the act phase does it get full tool access. The leaked code showed <a href="https://x.com/DharmiKumbhani/status/2038917827462308308">distinct plan and act phases</a> with system prompts that steer the agent away from editing before it understands the codebase.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!n6iF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ad9fd49-cec4-4db7-b75d-98b0786ddb39_1454x457.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!n6iF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ad9fd49-cec4-4db7-b75d-98b0786ddb39_1454x457.png 424w, https://substackcdn.com/image/fetch/$s_!n6iF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ad9fd49-cec4-4db7-b75d-98b0786ddb39_1454x457.png 848w, https://substackcdn.com/image/fetch/$s_!n6iF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ad9fd49-cec4-4db7-b75d-98b0786ddb39_1454x457.png 1272w, https://substackcdn.com/image/fetch/$s_!n6iF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ad9fd49-cec4-4db7-b75d-98b0786ddb39_1454x457.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!n6iF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ad9fd49-cec4-4db7-b75d-98b0786ddb39_1454x457.png" width="1454" height="457" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1ad9fd49-cec4-4db7-b75d-98b0786ddb39_1454x457.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:457,&quot;width&quot;:1454,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:64254,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/193249897?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ad9fd49-cec4-4db7-b75d-98b0786ddb39_1454x457.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!n6iF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ad9fd49-cec4-4db7-b75d-98b0786ddb39_1454x457.png 424w, https://substackcdn.com/image/fetch/$s_!n6iF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ad9fd49-cec4-4db7-b75d-98b0786ddb39_1454x457.png 848w, https://substackcdn.com/image/fetch/$s_!n6iF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ad9fd49-cec4-4db7-b75d-98b0786ddb39_1454x457.png 1272w, https://substackcdn.com/image/fetch/$s_!n6iF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ad9fd49-cec4-4db7-b75d-98b0786ddb39_1454x457.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Use this for any task that touches an unfamiliar codebase or involves non-trivial changes across multiple files. The main trade-off is speed: enforcing exploration and planning adds turns before the agent produces output, which feels slow for simple tasks.</p><h3><strong>7. Context-Isolated Subagents Pattern</strong></h3><p>In a long agentic session, the context window accumulates everything: research findings, planning discussions, code edits, test output, error logs. By the time the agent is deep into editing, its context is polluted with irrelevant material from earlier phases.</p><p>This pattern runs separate agents with their own context windows, system prompts, and restricted tool access. Research agents cannot edit code. Planning agents cannot execute commands. Each subagent sees only what it needs for its specific task.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!tv-_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf70b367-ad8b-43c0-866f-c9dce9ceabc1_1454x545.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tv-_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf70b367-ad8b-43c0-866f-c9dce9ceabc1_1454x545.png 424w, https://substackcdn.com/image/fetch/$s_!tv-_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf70b367-ad8b-43c0-866f-c9dce9ceabc1_1454x545.png 848w, https://substackcdn.com/image/fetch/$s_!tv-_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf70b367-ad8b-43c0-866f-c9dce9ceabc1_1454x545.png 1272w, https://substackcdn.com/image/fetch/$s_!tv-_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf70b367-ad8b-43c0-866f-c9dce9ceabc1_1454x545.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!tv-_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf70b367-ad8b-43c0-866f-c9dce9ceabc1_1454x545.png" width="1454" height="545" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cf70b367-ad8b-43c0-866f-c9dce9ceabc1_1454x545.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:545,&quot;width&quot;:1454,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:102435,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/193249897?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf70b367-ad8b-43c0-866f-c9dce9ceabc1_1454x545.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!tv-_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf70b367-ad8b-43c0-866f-c9dce9ceabc1_1454x545.png 424w, https://substackcdn.com/image/fetch/$s_!tv-_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf70b367-ad8b-43c0-866f-c9dce9ceabc1_1454x545.png 848w, https://substackcdn.com/image/fetch/$s_!tv-_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf70b367-ad8b-43c0-866f-c9dce9ceabc1_1454x545.png 1272w, https://substackcdn.com/image/fetch/$s_!tv-_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf70b367-ad8b-43c0-866f-c9dce9ceabc1_1454x545.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Use this when sessions are long, multi-phase, or involve tasks with very different context needs. The main trade-off is coordination overhead: the main agent must decide what to pass to each subagent, and important nuance from an earlier phase can get lost in the handoff.</p><h3><strong>8. Fork-Join Parallelism Pattern</strong></h3><p>Large tasks that could be split into independent units still run sequentially if the agent can only work on one thing at a time. A migration across 20 files takes 20 sequential steps even though most of those files have no dependencies on each other.</p><p>This pattern spawns multiple subagents in parallel, each working in an isolated git worktree on an independent copy of the repo. The parent&#8217;s cached context is reused by each fork, making parallel branching essentially free in token cost. Results merge when all branches complete.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Pf2k!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c6a16c7-6856-4c66-9658-a7040811edc9_1454x790.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Pf2k!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c6a16c7-6856-4c66-9658-a7040811edc9_1454x790.png 424w, https://substackcdn.com/image/fetch/$s_!Pf2k!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c6a16c7-6856-4c66-9658-a7040811edc9_1454x790.png 848w, https://substackcdn.com/image/fetch/$s_!Pf2k!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c6a16c7-6856-4c66-9658-a7040811edc9_1454x790.png 1272w, https://substackcdn.com/image/fetch/$s_!Pf2k!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c6a16c7-6856-4c66-9658-a7040811edc9_1454x790.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Pf2k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c6a16c7-6856-4c66-9658-a7040811edc9_1454x790.png" width="1454" height="790" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5c6a16c7-6856-4c66-9658-a7040811edc9_1454x790.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:790,&quot;width&quot;:1454,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:97124,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/193249897?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c6a16c7-6856-4c66-9658-a7040811edc9_1454x790.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Pf2k!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c6a16c7-6856-4c66-9658-a7040811edc9_1454x790.png 424w, https://substackcdn.com/image/fetch/$s_!Pf2k!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c6a16c7-6856-4c66-9658-a7040811edc9_1454x790.png 848w, https://substackcdn.com/image/fetch/$s_!Pf2k!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c6a16c7-6856-4c66-9658-a7040811edc9_1454x790.png 1272w, https://substackcdn.com/image/fetch/$s_!Pf2k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c6a16c7-6856-4c66-9658-a7040811edc9_1454x790.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Use this when a task decomposes into independent units that do not depend on each other&#8217;s output. The main trade-off is merge complexity: when parallel branches touch overlapping files, the merge can produce conflicts harder to resolve than sequential work would have been.</p><h2><strong>Tools and Permissions</strong></h2><p>If the memory patterns are about what the agent knows, and the workflow patterns are about how it works, these patterns are about what it is allowed to do. The leaked code showed a level of tool design and permission granularity that goes well beyond what most agent frameworks implement today.</p><h3><strong>9. Progressive Tool Expansion Pattern</strong></h3><p>Giving an agent access to every available tool at once creates a selection problem. With 60 tools visible, the model spends more time deciding which to use and is more likely to pick the wrong one.</p><p>This pattern starts with a small default set (fewer than 20 tools in Claude Code) and activates additional tools on demand. <a href="https://x.com/jpschroeder/status/2038960058499768427">Justin Schroeder noted</a> the deliberately small default set. The agent starts with Read, Edit, Write, Bash, Grep, Glob, and a handful of others. MCP tools, remote tools, and custom skills activate only when needed.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!E3HP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1970e01d-4e61-45b2-bc97-c1e072874b44_1454x455.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!E3HP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1970e01d-4e61-45b2-bc97-c1e072874b44_1454x455.png 424w, https://substackcdn.com/image/fetch/$s_!E3HP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1970e01d-4e61-45b2-bc97-c1e072874b44_1454x455.png 848w, https://substackcdn.com/image/fetch/$s_!E3HP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1970e01d-4e61-45b2-bc97-c1e072874b44_1454x455.png 1272w, https://substackcdn.com/image/fetch/$s_!E3HP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1970e01d-4e61-45b2-bc97-c1e072874b44_1454x455.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!E3HP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1970e01d-4e61-45b2-bc97-c1e072874b44_1454x455.png" width="1454" height="455" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1970e01d-4e61-45b2-bc97-c1e072874b44_1454x455.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:455,&quot;width&quot;:1454,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:77471,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/193249897?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1970e01d-4e61-45b2-bc97-c1e072874b44_1454x455.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!E3HP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1970e01d-4e61-45b2-bc97-c1e072874b44_1454x455.png 424w, https://substackcdn.com/image/fetch/$s_!E3HP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1970e01d-4e61-45b2-bc97-c1e072874b44_1454x455.png 848w, https://substackcdn.com/image/fetch/$s_!E3HP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1970e01d-4e61-45b2-bc97-c1e072874b44_1454x455.png 1272w, https://substackcdn.com/image/fetch/$s_!E3HP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1970e01d-4e61-45b2-bc97-c1e072874b44_1454x455.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Use this when your agent has access to many tools but most tasks only need a few. The main trade-off is that the expansion logic adds complexity: the harness must decide when to activate tools, and activating too late means the agent wastes turns without the right capability.</p><h3><strong>10. Command Risk Classification Pattern</strong></h3><p>Letting an agent run arbitrary shell commands without inspection is dangerous. But asking the user to approve every command creates fatigue, and users end up clicking &#8220;yes&#8221; to everything.</p><p>This pattern applies deterministic pre-parsing and per-tool permission gating before execution. Each tool has individual allow, ask, and deny rules with pattern matching. Shell commands pass through a classification layer that parses the verb, flags, and target to assess risk. The <a href="https://x.com/S0nne123/status/2038979121267495277">auto-mode classifier</a> found in the code auto-approves low-risk actions while keeping a safety classifier for anything dangerous.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!XutZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2733371f-3598-4020-a3f9-9d2f83c4bb3d_1454x622.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XutZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2733371f-3598-4020-a3f9-9d2f83c4bb3d_1454x622.png 424w, https://substackcdn.com/image/fetch/$s_!XutZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2733371f-3598-4020-a3f9-9d2f83c4bb3d_1454x622.png 848w, https://substackcdn.com/image/fetch/$s_!XutZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2733371f-3598-4020-a3f9-9d2f83c4bb3d_1454x622.png 1272w, https://substackcdn.com/image/fetch/$s_!XutZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2733371f-3598-4020-a3f9-9d2f83c4bb3d_1454x622.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XutZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2733371f-3598-4020-a3f9-9d2f83c4bb3d_1454x622.png" width="1454" height="622" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2733371f-3598-4020-a3f9-9d2f83c4bb3d_1454x622.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:622,&quot;width&quot;:1454,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:82039,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/193249897?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2733371f-3598-4020-a3f9-9d2f83c4bb3d_1454x622.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!XutZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2733371f-3598-4020-a3f9-9d2f83c4bb3d_1454x622.png 424w, https://substackcdn.com/image/fetch/$s_!XutZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2733371f-3598-4020-a3f9-9d2f83c4bb3d_1454x622.png 848w, https://substackcdn.com/image/fetch/$s_!XutZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2733371f-3598-4020-a3f9-9d2f83c4bb3d_1454x622.png 1272w, https://substackcdn.com/image/fetch/$s_!XutZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2733371f-3598-4020-a3f9-9d2f83c4bb3d_1454x622.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Use this when your agent can execute shell commands or interact with external systems. The main trade-off is rigidity: a deterministic classifier cannot anticipate every safe or dangerous command, so the rules need ongoing tuning.</p><h3><strong>11. Single-Purpose Tool Design Pattern</strong></h3><p>When an agent routes every file operation through a general shell (cat, sed, grep, find), the commands are harder to review, harder to permission, and harder for the model to use correctly. A sed command that edits a file looks identical in structure to one that corrupts it.</p><p>This pattern replaces the general shell with purpose-built tools for each common operation: FileReadTool, FileEditTool, GrepTool, GlobTool. Each tool has typed inputs, a constrained scope, and its own permission rules. Raschka calls this out explicitly: the harness provides &#8220;predefined tools with validated inputs and clear boundaries&#8221; rather than allowing improvised commands.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!SV84!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faba2d390-5198-4fad-9471-faf0fef9c549_1454x529.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SV84!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faba2d390-5198-4fad-9471-faf0fef9c549_1454x529.png 424w, https://substackcdn.com/image/fetch/$s_!SV84!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faba2d390-5198-4fad-9471-faf0fef9c549_1454x529.png 848w, https://substackcdn.com/image/fetch/$s_!SV84!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faba2d390-5198-4fad-9471-faf0fef9c549_1454x529.png 1272w, https://substackcdn.com/image/fetch/$s_!SV84!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faba2d390-5198-4fad-9471-faf0fef9c549_1454x529.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!SV84!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faba2d390-5198-4fad-9471-faf0fef9c549_1454x529.png" width="1454" height="529" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/aba2d390-5198-4fad-9471-faf0fef9c549_1454x529.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:529,&quot;width&quot;:1454,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:83594,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/193249897?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faba2d390-5198-4fad-9471-faf0fef9c549_1454x529.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!SV84!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faba2d390-5198-4fad-9471-faf0fef9c549_1454x529.png 424w, https://substackcdn.com/image/fetch/$s_!SV84!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faba2d390-5198-4fad-9471-faf0fef9c549_1454x529.png 848w, https://substackcdn.com/image/fetch/$s_!SV84!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faba2d390-5198-4fad-9471-faf0fef9c549_1454x529.png 1272w, https://substackcdn.com/image/fetch/$s_!SV84!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faba2d390-5198-4fad-9471-faf0fef9c549_1454x529.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Use this when your agent performs common file and search operations frequently. The main trade-off is flexibility: purpose-built tools cannot cover every edge case, so you still need a general shell as a fallback.</p><h2><strong>Automation</strong></h2><p>The final pattern stands alone because it cuts across all other categories. It addresses a problem that applies equally to memory, workflow, and tools: the model cannot be trusted to remember procedural steps that must happen every time.</p><h3><strong>12. Deterministic Lifecycle Hooks Pattern</strong></h3><p>Some actions must happen every time without exception: run the formatter after every edit, validate commands before execution, reload configuration when the working directory changes. Relying on the model to remember these through prompt instructions is unreliable. The model will forget, skip, or reinterpret the instruction depending on context pressure.</p><p>This pattern runs shell commands or other actions automatically at specific points in the agent lifecycle, outside the prompt entirely. The leaked code includes 25+ hook points such as PreToolUse, PostToolUse, SessionStart, and CwdChanged. Anything that must happen every time belongs in a hook, not in an instruction.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7yZs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd29d38c6-392b-44c9-8686-bf7728947ea5_1454x680.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7yZs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd29d38c6-392b-44c9-8686-bf7728947ea5_1454x680.png 424w, https://substackcdn.com/image/fetch/$s_!7yZs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd29d38c6-392b-44c9-8686-bf7728947ea5_1454x680.png 848w, https://substackcdn.com/image/fetch/$s_!7yZs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd29d38c6-392b-44c9-8686-bf7728947ea5_1454x680.png 1272w, https://substackcdn.com/image/fetch/$s_!7yZs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd29d38c6-392b-44c9-8686-bf7728947ea5_1454x680.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7yZs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd29d38c6-392b-44c9-8686-bf7728947ea5_1454x680.png" width="1454" height="680" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d29d38c6-392b-44c9-8686-bf7728947ea5_1454x680.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:680,&quot;width&quot;:1454,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:85228,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/193249897?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd29d38c6-392b-44c9-8686-bf7728947ea5_1454x680.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!7yZs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd29d38c6-392b-44c9-8686-bf7728947ea5_1454x680.png 424w, https://substackcdn.com/image/fetch/$s_!7yZs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd29d38c6-392b-44c9-8686-bf7728947ea5_1454x680.png 848w, https://substackcdn.com/image/fetch/$s_!7yZs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd29d38c6-392b-44c9-8686-bf7728947ea5_1454x680.png 1272w, https://substackcdn.com/image/fetch/$s_!7yZs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd29d38c6-392b-44c9-8686-bf7728947ea5_1454x680.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Use this when you have invariant behaviors that should never be skipped. The main trade-off is debugging difficulty: when something goes wrong in a hook, it can be harder to diagnose than a prompt-level instruction because hooks run outside the conversation.</p><h2><strong>The Takeaway</strong></h2><p> I believe these patterns are not temporary tricks or product-specific features. They are cornerstones of agentic harness design. Memory tiering, context compaction, permission gating, lifecycle hooks: these are the kinds of architectural decisions that will remain relevant as the models and tools evolve underneath them.</p><p>The Claude Code leak gave us a rare opportunity to see how these patterns are implemented at the cutting edge, in a production agent used by hundreds of thousands of developers. That visibility will not last, but the patterns will.</p>]]></content:encoded></item><item><title><![CDATA[Practical Lessons From the Claude Code Leak]]></title><description><![CDATA[The most useful part of the Claude Code leak was not the drama. It was the architecture.]]></description><link>https://generativeprogrammer.com/p/practical-lessons-from-the-claude</link><guid isPermaLink="false">https://generativeprogrammer.com/p/practical-lessons-from-the-claude</guid><dc:creator><![CDATA[Bilgin Ibryam]]></dc:creator><pubDate>Fri, 03 Apr 2026 16:26:12 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/c0d73220-6c8d-481e-b4af-5221d2f205cb_1972x1112.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>On March 31, 2026, security researcher <a href="https://x.com/Fried_rice/status/2038894956459290963">Chaofan Shou posted</a> (more than 34 million views) that Claude Code&#8217;s entire source had leaked through a sourcemap left in Anthropic&#8217;s public npm package. Roughly 500,000 lines of TypeScript across about 1,900 files. Not the model or weights, but the harness around them: system prompts, tool routing, memory, permissions, hooks, subagents, and a large amount of product wiring.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FEZx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51752f98-e6c0-4eb0-b5ee-3d0d264d849b_965x1200.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FEZx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51752f98-e6c0-4eb0-b5ee-3d0d264d849b_965x1200.jpeg 424w, https://substackcdn.com/image/fetch/$s_!FEZx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51752f98-e6c0-4eb0-b5ee-3d0d264d849b_965x1200.jpeg 848w, https://substackcdn.com/image/fetch/$s_!FEZx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51752f98-e6c0-4eb0-b5ee-3d0d264d849b_965x1200.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!FEZx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51752f98-e6c0-4eb0-b5ee-3d0d264d849b_965x1200.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FEZx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51752f98-e6c0-4eb0-b5ee-3d0d264d849b_965x1200.jpeg" width="965" height="1200" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/51752f98-e6c0-4eb0-b5ee-3d0d264d849b_965x1200.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1200,&quot;width&quot;:965,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!FEZx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51752f98-e6c0-4eb0-b5ee-3d0d264d849b_965x1200.jpeg 424w, https://substackcdn.com/image/fetch/$s_!FEZx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51752f98-e6c0-4eb0-b5ee-3d0d264d849b_965x1200.jpeg 848w, https://substackcdn.com/image/fetch/$s_!FEZx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51752f98-e6c0-4eb0-b5ee-3d0d264d849b_965x1200.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!FEZx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51752f98-e6c0-4eb0-b5ee-3d0d264d849b_965x1200.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em><strong>Chaofan Shou&#8217;s original tweet</strong></em></figcaption></figure></div><p>The leak handed everyone a blueprint for how a production coding agent is assembled. That blueprint is more interesting than the drama around it, and this post is about the practical lessons I took from it, things Claude Code users and agent builders can apply.</p><h2><strong>What happened</strong></h2><p>If you want a video walkthrough, <a href="https://www.youtube.com/watch?v=dYG8JxtSgmM">Matthew Berman&#8217;s coverage</a> is the fastest entry point. Anthropic confirmed this was a release packaging mistake caused by human error, not a hack. No customer data, API credentials, or model weights were exposed.</p><p>One surprising detail, <a href="https://x.com/jpschroeder/status/2038960058499768427">noted by Justin Schroeder</a>, is that much of the system prompting lives in the client-side source rather than behind a server-side API. For a company like Anthropic, shipping prompts, which are important IP, inside a distributed npm package was unexpected. The codebase is TypeScript and React with Bun bindings, and the code is full of comments written for LLMs, not humans, so that agents working on the codebase can understand each section. A <a href="https://ccunpacked.dev/">technical breakdown at ccunpacked.dev</a> mapped the full structure.</p><h2><strong>What happened next</strong></h2><p>The code escaped almost immediately. Mirrors spread across GitHub, takedowns followed, and community rewrites appeared within hours.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!HxRk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59a5acf0-c535-43f6-852b-20f1a3637dab_1546x1254.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HxRk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59a5acf0-c535-43f6-852b-20f1a3637dab_1546x1254.png 424w, https://substackcdn.com/image/fetch/$s_!HxRk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59a5acf0-c535-43f6-852b-20f1a3637dab_1546x1254.png 848w, https://substackcdn.com/image/fetch/$s_!HxRk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59a5acf0-c535-43f6-852b-20f1a3637dab_1546x1254.png 1272w, https://substackcdn.com/image/fetch/$s_!HxRk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59a5acf0-c535-43f6-852b-20f1a3637dab_1546x1254.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HxRk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59a5acf0-c535-43f6-852b-20f1a3637dab_1546x1254.png" width="1456" height="1181" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/59a5acf0-c535-43f6-852b-20f1a3637dab_1546x1254.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1181,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:154530,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/193081510?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59a5acf0-c535-43f6-852b-20f1a3637dab_1546x1254.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!HxRk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59a5acf0-c535-43f6-852b-20f1a3637dab_1546x1254.png 424w, https://substackcdn.com/image/fetch/$s_!HxRk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59a5acf0-c535-43f6-852b-20f1a3637dab_1546x1254.png 848w, https://substackcdn.com/image/fetch/$s_!HxRk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59a5acf0-c535-43f6-852b-20f1a3637dab_1546x1254.png 1272w, https://substackcdn.com/image/fetch/$s_!HxRk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59a5acf0-c535-43f6-852b-20f1a3637dab_1546x1254.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The chart is real, but the repos are different: one tracks the leaked-source fork, the other tracks Anthropic&#8217;s public Claude Code plugin repo.</figcaption></figure></div><p>The most visible follow-on project was <a href="https://github.com/instructkr/claw-code">Claw Code</a>, presented as a clean-room Python rewrite of the harness. The repository now includes a Rust port and frames itself as &#8220;better harness tools&#8221; rather than an archive of leaked code. That &#8220;clean-room&#8221; phrasing matters, but it is not a magic legal shield. Whether a rewrite is actually lawful <a href="https://www.law.cornell.edu/wex/clean_room">depends on how it was produced</a>, not on what the README says.</p><p>There is also a security warning. <a href="https://www.bleepingcomputer.com/news/security/claude-code-leak-used-to-push-infostealer-malware-on-github/">BleepingComputer reported</a> fake GitHub repositories using the leak as bait for infostealer malware. Attackers also <a href="https://x.com/Butanium_/status/2039079715823128964">registered malicious npm packages</a> targeting anyone who tried to compile the leaked source. The sensible stance: study the incident, learn from it, do not run random &#8220;leaked Claude Code&#8221; repos.</p><p>The more interesting signal is how quickly open-source projects started absorbing the patterns. You can see it directly in <a href="https://github.com/anomalyco/opencode/issues/20475">OpenCode&#8217;s issue tracker</a>, where users asked whether the harness design should be incorporated. The community treated the leak as a public architecture review, not gossip.</p><h2><strong>What Claude Code users can learn from this</strong></h2><p>Below are ten lessons. They are useful whether you use Claude Code or you are building your own agentic application.</p><h3><strong>1. Treat CLAUDE.md like a config file</strong></h3><p>The leak confirmed that <code>CLAUDE.md</code> is not an optional README. It is a control file loaded at the start of every session. A <a href="https://x.com/ziwenxu_/status/2039002226018984333">community analysis</a> showed how the harness treats it as persistent project memory that shapes every interaction. Build commands, test commands, architecture boundaries, naming rules. It all belongs there.</p><p>Run <code>/init</code> once to generate a starting version, then edit it by hand. A good <code>CLAUDE.md</code> reads more like a <code>.eslintrc</code> than a README:</p><p></p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;markdown&quot;,&quot;nodeId&quot;:&quot;ca360d12-32ef-45d4-acca-165e7951869b&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-markdown"># CLAUDE.md

## Build &amp; test
- Run tests: `npm test`
- Lint: `npm run lint`
- Build: `npm run build`

## Architecture rules
- All API handlers go in `src/api/`
- Never import from `src/internal/` outside that directory
- Use Zod for all request validation, no manual parsing

## Conventions
- Use `snake_case` for database columns, `camelCase` for TypeScript
- Every new endpoint needs a test in `tests/api/`</code></pre></div><p>If you are building your own agent, the same principle applies. Give it a structured instruction file that loads every session, not a prompt you paste each time.</p><h3><strong>2. Keep memory selective, not exhaustive</strong></h3><p>One of the most <a href="https://x.com/himanshustwts/status/2038924027411222533">detailed breakdowns of the memory system</a> showed a three-layer design: <code>MEMORY.md</code> as a compact index always loaded into context, topic-specific memory files loaded on demand, and session transcripts only searched when needed. Auto memory is capped at the first 200 lines. The code also revealed an &#8220;autoDream&#8221; mode, a background process that <a href="https://x.com/troyhua/status/2039052328070734102">consolidates memories during idle periods</a>, merging duplicates, pruning contradictions, and keeping the index tight. A separate <a href="https://x.com/ellen_in_sf/status/2039098050837463504">mem0 analysis</a> found 8 phases of memory management and 5 types of context compaction.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!adfX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0be3d689-4693-40ea-ae0d-ffc912bf2dc0_3469x3742.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!adfX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0be3d689-4693-40ea-ae0d-ffc912bf2dc0_3469x3742.jpeg 424w, https://substackcdn.com/image/fetch/$s_!adfX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0be3d689-4693-40ea-ae0d-ffc912bf2dc0_3469x3742.jpeg 848w, https://substackcdn.com/image/fetch/$s_!adfX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0be3d689-4693-40ea-ae0d-ffc912bf2dc0_3469x3742.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!adfX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0be3d689-4693-40ea-ae0d-ffc912bf2dc0_3469x3742.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!adfX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0be3d689-4693-40ea-ae0d-ffc912bf2dc0_3469x3742.jpeg" width="1456" height="1571" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0be3d689-4693-40ea-ae0d-ffc912bf2dc0_3469x3742.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1571,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!adfX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0be3d689-4693-40ea-ae0d-ffc912bf2dc0_3469x3742.jpeg 424w, https://substackcdn.com/image/fetch/$s_!adfX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0be3d689-4693-40ea-ae0d-ffc912bf2dc0_3469x3742.jpeg 848w, https://substackcdn.com/image/fetch/$s_!adfX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0be3d689-4693-40ea-ae0d-ffc912bf2dc0_3469x3742.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!adfX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0be3d689-4693-40ea-ae0d-ffc912bf2dc0_3469x3742.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Cloude Code Memory Architecture</figcaption></figure></div><p>The takeaway: memory should be curated. Store stable preferences, recurring workflow hints, and things that are not obvious from the code. Do not store stack traces, logs, or facts Claude can derive by reading the repo. If a memory note would not help in a future session, it should not exist.</p><h3><strong>3. Split instructions by scope</strong></h3><p>The leaked code showed context <a href="https://x.com/k1rallik/status/2038978638381531486">assembled from multiple files dynamically</a>, not crammed into one prompt. Claude Code supports multiple instruction scopes: org-level, user-level, project root, local overrides, parent and child directories. </p><p>Keep one short root <code>CLAUDE.md</code> with broad project rules. Put language-specific or module-specific instructions closer to the code they govern. </p><h3><strong>4. Explore first, then plan, then code</strong></h3><p>The leak revealed how seriously Anthropic treats the <a href="https://x.com/DharmiKumbhani/status/2038917827462308308">separation between planning and execution</a>. The harness has distinct plan and act phases, and the system prompts steer the agent away from editing before it understands the codebase.</p><p>In practice: first ask Claude to map the codebase. Then ask for a plan. Only then let it edit or run commands. This one habit eliminates most &#8220;random edits to the wrong files&#8221; problems. The impulse to jump straight to coding is strong, but exploration first is always faster.</p><h3><strong>5. Use subagents to isolate context</strong></h3><p>The leaked source showed a <a href="https://x.com/rasbt/status/2038980345316413862">modular multi-agent architecture</a> with separate system prompts and cache boundaries for each subagent type. The Explore agent is read-only. It can search and analyze but cannot mutate anything. Each subagent runs in its own context window with restricted tool access.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!D-PQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40d4b1f3-5eb1-4aed-8d95-b56bff8e0636_1200x480.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!D-PQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40d4b1f3-5eb1-4aed-8d95-b56bff8e0636_1200x480.jpeg 424w, https://substackcdn.com/image/fetch/$s_!D-PQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40d4b1f3-5eb1-4aed-8d95-b56bff8e0636_1200x480.jpeg 848w, https://substackcdn.com/image/fetch/$s_!D-PQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40d4b1f3-5eb1-4aed-8d95-b56bff8e0636_1200x480.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!D-PQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40d4b1f3-5eb1-4aed-8d95-b56bff8e0636_1200x480.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!D-PQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40d4b1f3-5eb1-4aed-8d95-b56bff8e0636_1200x480.jpeg" width="1200" height="480" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/40d4b1f3-5eb1-4aed-8d95-b56bff8e0636_1200x480.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:480,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!D-PQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40d4b1f3-5eb1-4aed-8d95-b56bff8e0636_1200x480.jpeg 424w, https://substackcdn.com/image/fetch/$s_!D-PQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40d4b1f3-5eb1-4aed-8d95-b56bff8e0636_1200x480.jpeg 848w, https://substackcdn.com/image/fetch/$s_!D-PQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40d4b1f3-5eb1-4aed-8d95-b56bff8e0636_1200x480.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!D-PQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40d4b1f3-5eb1-4aed-8d95-b56bff8e0636_1200x480.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em><strong>Claude Code Strengths</strong></em></figcaption></figure></div><p>Context contamination is one of the main failure modes in long agentic sessions. Research, planning, and editing have different context needs. Mixing them degrades all three. Use separate agents or modes for each phase. If you are building your own agents, treat context isolation as a design decision, not a side effect.</p><h3><strong>6. Use worktrees for parallel work</strong></h3><p>More analysis of the subagent system showed that subagents leverage cached context for fork-join operations, making parallel execution essentially free in terms of repeated context loading. Claude Code spawns background agents in isolated git worktrees, one per unit of work.</p><p>When you have multiple independent tasks, use separate worktrees. Do not let several agents edit the same branch. If a task is large, split it into chunks with clear outputs. And stop starting fresh sessions for everything. Continue sessions when working on related code.</p><h3><strong>7. Configure permissions at the tool level</strong></h3><p>One of the <a href="https://x.com/jpschroeder/status/2038960058499768427">most concrete findings</a> was the tool count: Claude Code runs fewer than 20 default tools. AgentTool, BashTool, FileReadTool, FileEditTool, FileWriteTool, WebFetchTool, WebSearchTool, and a handful of others. A <a href="https://x.com/mal_shaik/status/2038918662489510273">deeper inventory</a> showed the system can expand to 60+, but the default set is deliberately small. Fewer tools, better results.</p><h3><strong>8. Reduce approval fatigue</strong></h3><p>The leaked source confirmed that Claude Code users approve 93% of permission prompts. The <a href="https://x.com/S0nne123/status/2038979121267495277">auto-mode classifier</a> found in the code is Anthropic&#8217;s answer: a layered system that auto-approves low-risk actions while keeping a safety classifier for anything dangerous.</p><p>When you approve almost everything, the permission system becomes a speed bump, not a safety mechanism. You stop reading what you approve. Move repetitive safe actions into allow rules. Use Plan mode or Accept Edits mode where appropriate. Use Auto mode when the task is bounded and the direction is clear. The goal is not fewer safety checks. It is better-placed checks you actually pay attention to.</p><h3><strong>9. Use hooks for repeatable automation</strong></h3><p>The community found <a href="https://x.com/grok/status/2039236199559184536">25+ event-driven hook points</a> in the leaked code, including <code>PreToolUse</code>, <code>PostToolUse</code>, <code>SessionStart</code>, <code>CwdChanged</code>, and more. Hooks are one of the most powerful features in Claude Code and probably the most underused.</p><p>A hook that runs tests after every file edit:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;json&quot;,&quot;nodeId&quot;:&quot;a8d05653-d0b0-4c86-875a-11a8cc118d29&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-json">{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "FileEditTool",
        "command": "npm test --silent 2&gt;&amp;1 | tail -5"
      }
    ]
  }
}</code></pre></div><p>The general principle: if you repeat the same instruction in every prompt, it should be a hook.</p><h3><strong>10. The harness matters more than the prompt</strong></h3><p>This is the lesson: Sebastian Raschka put it well: <a href="https://x.com/rasbt/status/2038980345316413862">Claude Code&#8217;s secret sauce is probably not the model</a>.  If you are building your own agent, spend less time polishing one giant system prompt. Spend more time on tool boundaries, context loading, review loops, and memory discipline. The best coding agent is not the one with the cleverest instructions. It is the one with the best workflow design.</p><h3><strong>Bonus: the small details</strong></h3><p>The leak also surfaced things that are not actionable but say a lot about how the product is built. Wes Bos found <a href="https://x.com/wesbos/status/2038958747200962952">187 hardcoded spinner verbs</a>, the loading messages you see while Claude thinks. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3UpL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2d6ba22-7870-401b-b8d3-fd4fa1770820_1200x706.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3UpL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2d6ba22-7870-401b-b8d3-fd4fa1770820_1200x706.jpeg 424w, https://substackcdn.com/image/fetch/$s_!3UpL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2d6ba22-7870-401b-b8d3-fd4fa1770820_1200x706.jpeg 848w, https://substackcdn.com/image/fetch/$s_!3UpL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2d6ba22-7870-401b-b8d3-fd4fa1770820_1200x706.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!3UpL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2d6ba22-7870-401b-b8d3-fd4fa1770820_1200x706.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3UpL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2d6ba22-7870-401b-b8d3-fd4fa1770820_1200x706.jpeg" width="1200" height="706" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e2d6ba22-7870-401b-b8d3-fd4fa1770820_1200x706.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:706,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!3UpL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2d6ba22-7870-401b-b8d3-fd4fa1770820_1200x706.jpeg 424w, https://substackcdn.com/image/fetch/$s_!3UpL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2d6ba22-7870-401b-b8d3-fd4fa1770820_1200x706.jpeg 848w, https://substackcdn.com/image/fetch/$s_!3UpL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2d6ba22-7870-401b-b8d3-fd4fa1770820_1200x706.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!3UpL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2d6ba22-7870-401b-b8d3-fd4fa1770820_1200x706.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Claude Code spinner words :)</figcaption></figure></div><p>Someone found <a href="https://x.com/Rahatcodes/status/2038995503141065145">Boris&#8217;s WTF counter</a>, an internal metric tracking unexpected states. Good agent products are not only inference. They are interface, orchestration, trust, and taste.</p><h2><strong>The bottom line</strong></h2><p>The takeaway is straightforward: use the product more deliberately: write a better <code>CLAUDE.md</code>, keep memory tight, split exploration from editing, move repeated behavior into hooks, configure permissions properly, and use worktrees when parallelism matters. Most of these features were already documented. It took seeing the internals to realize how seriously the team behind Claude Code takes them.</p><p>For anyone building agentic applications, the lesson is the same. The moat is not the model, it is the harness.</p>]]></content:encoded></item><item><title><![CDATA[State of AI-Assisted Coding in 2026]]></title><description><![CDATA[AI coding is converging on three domains: planning, code generation, and confidence building]]></description><link>https://generativeprogrammer.com/p/state-of-ai-assisted-coding-in-2026</link><guid isPermaLink="false">https://generativeprogrammer.com/p/state-of-ai-assisted-coding-in-2026</guid><dc:creator><![CDATA[Bilgin Ibryam]]></dc:creator><pubDate>Sun, 29 Mar 2026 10:41:30 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!UiRV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4451ee7d-d18e-4df8-b53f-b8765d238c71_2000x1820.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2><strong>Key takeaways</strong></h2><ul><li><p>AI-assisted coding moved from autocomplete to agentic code generation.</p></li><li><p>That shift made planning a first-class step. Serious teams now start with a spec or a plan before the agent touches the codebase.</p></li><li><p>Build split into two paths: full-stack app builders for prompt-to-product flows, and local developer agents for working inside real repos.</p></li><li><p>The biggest new category is local developer agents, especially CLI-native ones.</p></li><li><p>Async cloud agents are still early, but they point to a delegated model where coding work runs in the background or overnight.</p></li><li><p>AI-assisted review is becoming the only practical way to keep up with the volume of AI-generated code.</p></li></ul><p>I wrote about this landscape last year in <a href="https://generativeprogrammer.com/p/ai-coding-assistants-landscape">AI Coding Assistants Landscape (03/2025)</a>. The picture is simpler now. The big change is not only that the tools got better. The workflow changed. Not long ago, the center of the story was autocomplete and inline suggestions. In 2026, the center is agentic code generation guided by a plan, followed by stronger review before code ships.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UiRV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4451ee7d-d18e-4df8-b53f-b8765d238c71_2000x1820.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UiRV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4451ee7d-d18e-4df8-b53f-b8765d238c71_2000x1820.png 424w, https://substackcdn.com/image/fetch/$s_!UiRV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4451ee7d-d18e-4df8-b53f-b8765d238c71_2000x1820.png 848w, https://substackcdn.com/image/fetch/$s_!UiRV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4451ee7d-d18e-4df8-b53f-b8765d238c71_2000x1820.png 1272w, https://substackcdn.com/image/fetch/$s_!UiRV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4451ee7d-d18e-4df8-b53f-b8765d238c71_2000x1820.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UiRV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4451ee7d-d18e-4df8-b53f-b8765d238c71_2000x1820.png" width="1456" height="1325" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4451ee7d-d18e-4df8-b53f-b8765d238c71_2000x1820.png&quot;,&quot;srcNoWatermark&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a7aac1e5-1e37-443b-8bcb-2710b66a7954_2000x1820.png&quot;,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1325,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:582606,&quot;alt&quot;:&quot;State of AI-Assisted Coding in 2026&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/192440132?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7aac1e5-1e37-443b-8bcb-2710b66a7954_2000x1820.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="State of AI-Assisted Coding in 2026" title="State of AI-Assisted Coding in 2026" srcset="https://substackcdn.com/image/fetch/$s_!UiRV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4451ee7d-d18e-4df8-b53f-b8765d238c71_2000x1820.png 424w, https://substackcdn.com/image/fetch/$s_!UiRV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4451ee7d-d18e-4df8-b53f-b8765d238c71_2000x1820.png 848w, https://substackcdn.com/image/fetch/$s_!UiRV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4451ee7d-d18e-4df8-b53f-b8765d238c71_2000x1820.png 1272w, https://substackcdn.com/image/fetch/$s_!UiRV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4451ee7d-d18e-4df8-b53f-b8765d238c71_2000x1820.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em><strong>State of AI-Assisted Coding in 2026</strong></em></figcaption></figure></div><p>This is an opinionated map of how the market is organizing itself. The easiest way to understand the ecosystem now is through a simple sequence: plan the work, build it with agents, then review what they produced.</p><h2><strong>1. Plan</strong></h2><p>The first major shift is that planning stopped being optional. Teams learned the same lesson from multiple directions: if the plan is weak, the build drifts, the review catches more noise than signal, and the whole agent loop becomes harder to trust.</p><p>This planning layer now shows up in two forms. There are dedicated spec-driven tools that formalize planning as a standalone practice, and there are build tools that pulled planning into their core workflow.</p><h3><strong>1A. Dedicated planning and spec-driven systems</strong></h3><p>Spec-driven development is the clearest expression of this change. These tools turn vague prompts into requirements, acceptance criteria, design notes, and implementation tasks before code generation begins. If vibe coding is &#8220;start building and see what happens,&#8221; spec-driven development is the counterweight: decide what you are building first, then let the agent execute.</p><ul><li><p><a href="https://kiro.dev/?utm_source=generativeprogrammer.com">Kiro</a>, a productized example of spec-driven development that turns prompts into structured requirements, design artifacts, and task plans.</p></li><li><p><a href="https://github.com/github/spec-kit?utm_source=generativeprogrammer.com">GitHub Spec Kit</a>, GitHub&#8217;s open source toolkit for spec-first workflows and implementation planning.</p></li><li><p><a href="https://github.com/Fission-AI/OpenSpec?utm_source=generativeprogrammer.com">OpenSpec</a>, a lighter open source framework for writing reusable specs for coding agents.</p></li></ul><p>Beyond coding-specific spec tools, broader frameworks such as <a href="https://github.com/bmad-code-org/BMAD-METHOD?utm_source=generativeprogrammer.com">BMAD-METHOD</a> show that structured AI-assisted planning is also expanding into higher-level delivery and agile workflows. The pattern is the same: teams that invest more in upstream intent get more predictable downstream results.</p><h3><strong>2B. Planning modes inside build agents</strong></h3><p>Planning is not confined to dedicated planning tools anymore. The stronger signal is that serious build tools now expose ask, plan, explore, or read-only modes before they touch the codebase. That is the clearest sign that planning became part of the agent loop itself, not something attached later.</p><ul><li><p><a href="https://docs.anthropic.com/en/docs/claude-code/tutorials?utm_source=generativeprogrammer.com">Claude Code</a>, exposes Plan Mode for safe code analysis before editing.</p></li><li><p><a href="https://docs.cursor.com/chat/ask?utm_source=generativeprogrammer.com">Cursor</a>, uses Ask mode for exploration, questions, and planning before execution.</p></li><li><p><a href="https://docs.windsurf.com/windsurf/cascade/cascade?utm_source=generativeprogrammer.com">Windsurf</a>, treats planning as a built-in part of the Cascade workflow.</p></li><li><p><a href="https://docs.cline.bot/features/plan-and-act?utm_source=generativeprogrammer.com">Cline</a>, makes the split explicit with a Plan and Act workflow.</p></li><li><p><a href="https://openai.com/index/introducing-codex/?utm_source=generativeprogrammer.com">Codex</a>, separates Ask mode from Code mode.</p></li><li><p><a href="https://www.jetbrains.com/help/junie/ask-mode.html?utm_source=generativeprogrammer.com">Junie</a>, uses Ask mode to collaborate on an action plan before making changes.</p></li></ul><p>One related shift worth noting is that planning is no longer only text. Screenshots, Figma files, and mockups are increasingly becoming structured inputs into the coding workflow. I would not treat that as a separate category yet, but it matters as a bridge from planning into building. <a href="https://v0.dev/docs/screenshots?utm_source=generativeprogrammer.com">v0 screenshots and files</a> is one obvious example, and the broader full-stack app builders category is also moving in this direction by making design artifacts directly usable for PMs, designers, and non-technical builders.</p><h2><strong>2. Build</strong></h2><p>This is where the market split most visibly. It is no longer useful to talk about &#8220;AI coding tools&#8221; as one bucket. Build is now best understood through three practical categories: full-stack app builders, local developer agents, and async cloud coding agents.</p><p><strong>The most important change for developers is that local developer agents became the default serious workflow</strong>. But before getting there, it is worth separating them from the other branch: full-stack app builders.</p><h3><strong>2A. Full-stack app builders</strong></h3><p>This is the category where vibe coding became productized. These tools combine generation, iteration, preview, runtime, and deployment in one surface. They are not just code generators. They are prompt-to-product environments, closer to &#8220;build me the product&#8221; than &#8220;work with me inside my repo.&#8221;</p><p>This category matters because it serves a broader audience than professional developers: founders, PMs, designers, mixed-role teams, and non-technical builders. It is the closest thing we have to software creation for everyone, and it is expanding the definition of who can build software in a meaningful way.</p><ul><li><p><a href="https://lovable.dev/?utm_source=generativeprogrammer.com">Lovable</a>, full-stack app builder aimed at turning prompts into working products quickly.</p></li><li><p><a href="https://bolt.new/?utm_source=generativeprogrammer.com">Bolt</a>, browser-based full-stack builder with generation, preview, and deployment in one loop.</p></li><li><p><a href="https://v0.dev/docs?utm_source=generativeprogrammer.com">v0</a>, Vercel&#8217;s AI full-stack app builder with strong UI, design, and production handoff workflows.</p></li><li><p><a href="https://replit.com/ai?utm_source=generativeprogrammer.com">Replit Agent</a>, browser-native environment that can generate, run, debug, and deploy applications.</p></li><li><p><a href="https://bubble.io/ai/?utm_source=generativeprogrammer.com">Bubble AI</a>, AI-assisted visual app builder closer to no-code product creation than to local repo development.</p></li></ul><h3><strong>2B. Local developer agents</strong></h3><p><strong>This is the biggest change in the market.</strong> The story is no longer &#8220;which autocomplete tool is best?&#8221; It is &#8220;which agent loop do you want to build your workflow around?&#8221;</p><p>Claude Code helped make this category mainstream, especially on the terminal-native side. But the larger shift is broader than any single tool. The strongest open source and commercial energy now clusters around local agents that can plan, edit, run commands, inspect outputs, and iterate, all inside a real development environment, with the developer supervising the loop. This is where professional software engineering lives in 2026.</p><h4><strong>CLI-native developer agents</strong></h4><p>Terminal-based development is now a category in its own right. This is the branch where agentic coding feels most explicit and most professional. It keeps the repo, the terminal, the test loop, and the engineering workflow at the center, rather than wrapping them behind a simplified interface. Not long ago, terminal-native agents were a niche. Today, some of the fastest-growing open source projects in the AI-assisted coding space are terminal-first.</p><ul><li><p><a href="https://docs.anthropic.com/en/docs/claude-code/overview?utm_source=generativeprogrammer.com">Claude Code</a>, the terminal-native coding agent that made the category mainstream.</p></li><li><p><a href="https://openai.com/codex/?utm_source=generativeprogrammer.com">Codex</a>, OpenAI&#8217;s local coding agent that also extends into cloud delegation.</p></li><li><p><a href="https://github.com/google-gemini/gemini-cli?utm_source=generativeprogrammer.com">Gemini CLI</a>, Google&#8217;s open source terminal agent with strong community adoption.</p></li><li><p><a href="https://github.com/anomalyco/opencode?utm_source=generativeprogrammer.com">OpenCode</a>, a fast-growing open source coding agent with built-in plan and build agents.</p></li><li><p><a href="https://github.com/block/goose?utm_source=generativeprogrammer.com">Goose</a>, open source local agent for install, execute, edit, and test loops.</p></li><li><p><a href="https://aider.chat/?utm_source=generativeprogrammer.com">Aider</a>, Git-first terminal coding assistant that remains highly popular with working developers.</p></li><li><p><a href="https://sourcegraph.com/amp?utm_source=generativeprogrammer.com">Amp</a>, Sourcegraph&#8217;s terminal agent with deep code intelligence and codebase-wide context.</p></li><li><p><a href="https://github.com/plandex-ai/plandex?utm_source=generativeprogrammer.com">Plandex</a>, a terminal agent designed for larger tasks, planning, and sandboxed diffs.</p></li></ul><h4><strong>IDE-native developer agents</strong></h4><p>The IDE-native tools matter just as much, but their mental model changed too. Even in IDEs, the direction moved away from inline completion and toward planning, tool use, command execution, multi-file edits, and local review. The IDE is still the surface, but the agent loop is now the core interaction, not the autocomplete dropdown.</p><ul><li><p><a href="https://cursor.com/?utm_source=generativeprogrammer.com">Cursor</a>, the bridge product from AI-native IDE to full local agent workflow.</p></li><li><p><a href="https://docs.windsurf.com/windsurf/cascade/cascade?utm_source=generativeprogrammer.com">Windsurf</a>, an IDE-native agent centered on planning, editing, execution, and verification.</p></li><li><p><a href="https://github.com/RooCodeInc/Roo-Code?utm_source=generativeprogrammer.com">Roo Code</a>, a popular open source editor agent with architect, ask, code, and debug modes.</p></li><li><p><a href="https://docs.cline.bot/features/plan-and-act?utm_source=generativeprogrammer.com">Cline</a>, an open source IDE agent with a clear plan-then-act workflow.</p></li><li><p><a href="https://docs.augmentcode.com/introduction?utm_source=generativeprogrammer.com">Augment</a>, a context-heavy developer agent that also stretches into review.</p></li><li><p><a href="https://junie.jetbrains.com/?utm_source=generativeprogrammer.com">Junie</a>, JetBrains-native coding agent for planning and implementation inside the existing IDE workflow.</p></li></ul><h3><strong>2C. Async cloud coding agents</strong></h3><p>This is the delegated branch of the build step. If local agents are &#8220;pair with me,&#8221; cloud agents are &#8220;go do this and come back.&#8221; These tools run in remote sandboxes, often triggered from issues or pull request workflows, and return with patches, branches, or pull requests.</p><p>This category is smaller than local agents today, but the workflow matters. It is the beginning of a mode where you hand work to an agent from GitHub, or at the end of the day, and let it run while you are doing something else or simply sleeping. That is why I expect this category to grow even if it still feels early.</p><ul><li><p><a href="https://docs.devin.ai/?utm_source=generativeprogrammer.com">Devin</a>, the flagship async remote coding agent for delegated engineering work.</p></li><li><p><a href="https://platform.openai.com/docs/codex/overview?utm_source=generativeprogrammer.com">Codex cloud</a>, OpenAI&#8217;s sandboxed remote execution model for delegated coding tasks.</p></li><li><p><a href="https://docs.github.com/en/copilot/using-github-copilot/coding-agent/about-assigning-tasks-to-copilot?utm_source=generativeprogrammer.com">GitHub Copilot coding agent</a>, GitHub-native delegation from issues and pull request workflows.</p></li><li><p><a href="https://docs.all-hands.dev/?utm_source=generativeprogrammer.com">OpenHands</a>, the open source alternative for issue-to-patch and cloud-agent workflows.</p></li><li><p><a href="https://github.com/SWE-agent/SWE-agent?utm_source=generativeprogrammer.com">SWE-agent</a>, an influential open source issue-to-patch system that bridges research and practice.</p></li></ul><p>If you want to go deeper on the delegated, async side of this market, this <a href="https://background-agents.com/landscape?utm_source=https://generativeprogrammer.com">background agents landscape </a>is worth reviewing. It offers a curated map of tools and infrastructure layers behind these workflows.</p><h2><strong>3. Review</strong></h2><p>Once agents started writing much more code, review became the new bottleneck. The point of this step is simple: keep the speed of AI code generation without letting quality collapse.</p><p>Code generation accelerated faster than our ability to inspect the output manually. That gap is what pulled review into its own category. The strongest part of this layer today is code review. Testing and verification are still lighter, but they are growing quickly as browser-based agents and cloud runtimes become more capable.</p><h3><strong>3A. Review agents</strong></h3><p>The most interesting shift in review is timing. AI review is no longer only something that happens after a pull request exists. The stronger tools now review code locally, before commit or before the PR is opened, and then review again once the PR is live.</p><p>That creates a two-stage loop: local review first, shared PR review second. It is one of the clearest signs that review is becoming part of the development loop itself and not only a separate final gate.</p><ul><li><p><a href="https://docs.qodo.ai/qodo-documentation/qodo-gen/code-review/review-uncommitted-changes?utm_source=generativeprogrammer.com">Qodo</a>, is built for enterprise-scale review, using dedicated agents, codebase context, PR history, and team rules to review changes before they reach the PR and again at review time.</p></li><li><p><a href="https://docs.coderabbit.ai/overview/ide-cli-review?utm_source=generativeprogrammer.com">CodeRabbit</a>, an AI reviewer that now spans pull requests, IDE reviews, and CLI reviews before commit.</p></li><li><p><a href="https://docs.github.com/en/copilot/using-github-copilot/code-review?utm_source=generativeprogrammer.com">GitHub Copilot code review</a>, GitHub-native review in pull requests, now complemented by local review in supported tools.</p></li><li><p><a href="https://docs.augmentcode.com/codereview/overview?utm_source=generativeprogrammer.com">Augment Code Review</a>, a PR reviewer that routes findings back into the IDE or CLI for fixing.</p></li><li><p><a href="https://docs.cursor.com/en/bugbot?utm_source=generativeprogrammer.com">Cursor Bugbot</a>, a mostly PR-native automated reviewer focused on catching real bugs with low noise.</p></li><li><p><a href="https://www.greptile.com/docs/code-review/key-features?utm_source=generativeprogrammer.com">Greptile</a>, a context-aware reviewer focused on repo-wide reasoning over pull requests.</p></li><li><p><a href="https://graphite.dev/features/agent?utm_source=generativeprogrammer.com">Graphite Agent</a>, an AI reviewer integrated into Graphite&#8217;s stacked pull request workflow.</p></li></ul><h3><strong>3B. Testing and verification agents</strong></h3><p>This is a lighter category than review today, but it is easy to see why it could become much bigger. As browser-based agents, cloud Chromium environments, and agentic end-to-end testing get stronger, more of the validation work that currently lives in manual QA can move into automated review loops.</p><p>For now, testing and verification still belong inside the same review step. If review agents inspect diffs, this emerging branch inspects behavior. That distinction will matter more as the code being generated grows in scope and complexity.</p><ul><li><p><a href="https://www.testsprite.com/use-cases/en/ai-software-testing-tool?utm_source=generativeprogrammer.com">TestSprite</a>, an intent-to-tests workflow that generates, runs, and explains tests.</p></li><li><p><a href="https://momentic.ai/?utm_source=generativeprogrammer.com">Momentic</a>, a browser testing agent focused on end-to-end validation.</p></li><li><p><a href="https://www.lambdatest.com/kane-ai/?utm_source=generativeprogrammer.com">KaneAI</a>, an AI testing agent for browser and workflow automation.</p></li><li><p><a href="https://www.mabl.com/agentic-testing-for-software-development-mabl?utm_source=generativeprogrammer.com">mabl Agentic Testing</a>, agentic test creation and maintenance for UI flows.</p></li></ul><p>There are also benchmarks starting to emerge around this review layer. <a href="https://codereview.withmartian.com/?utm_source=generativeprogrammer.com">Code Review Bench</a> from Martian is worth watching because it treats code review as a useful foundation for measuring code generation quality and validation, combining an offline benchmark with real developer behavior from open source pull requests.</p><h2><strong>Appendix: enterprise incumbents and platform suites</strong></h2><p>These tools still matter, especially in enterprise buying conversations, but they are not the sharpest lens for explaining how the market changed:</p><ul><li><p><a href="https://aws.amazon.com/q/developer/?utm_source=generativeprogrammer.com">Amazon Q Developer</a>, an AWS-integrated developer assistant and terminal agent.</p></li><li><p><a href="https://cloud.google.com/products/gemini/code-assist?utm_source=generativeprogrammer.com">Gemini Code Assist</a>, Google&#8217;s enterprise coding assistant across IDEs and cloud workflows.</p></li><li><p><a href="https://about.gitlab.com/gitlab-duo/?utm_source=generativeprogrammer.com">GitLab Duo</a>, GitLab&#8217;s integrated AI layer across the software delivery lifecycle.</p></li><li><p><a href="https://www.tabnine.com/?utm_source=generativeprogrammer.com">Tabnine</a>, a long-running enterprise AI coding assistant focused on controlled deployments.</p></li><li><p><a href="https://www.ibm.com/products/watsonx-code-assistant?utm_source=generativeprogrammer.com">watsonx Code Assistant</a>, IBM&#8217;s enterprise tool for code generation and modernization.</p></li><li><p><a href="https://www.alibabacloud.com/en/product/lingma?utm_source=generativeprogrammer.com">TONGYI Lingma</a>, Alibaba&#8217;s coding assistant for enterprise and cloud workflows.</p></li><li><p><a href="https://refact.ai/?utm_source=generativeprogrammer.com">Refact.ai</a>, a self-hostable coding assistant with strong enterprise positioning.</p></li></ul><h2><strong>Implications</strong></h2><p>If this framing is right, a few implications follow for how we work and what we invest in.</p><p><strong>&#8594;</strong> <strong>Planning will increasingly become the starting point, not an afterthought</strong>. The best coding tools already start with a plan before generation, and teams that skip this step will find themselves debugging drift rather than building features.</p><p><strong>&#8594;</strong> <strong>Full-stack app builders will keep pulling in design, product, and prototyping workflows.</strong> This is expanding who can create software, and that expansion is not slowing down. For product managers, designers, and founders, these tools are becoming the default way to go from idea to working prototype.</p><p><strong>&#8594;</strong> <strong>Local developer agents will keep taking share from autocomplete-first tools</strong> because they fit better with how professional developers already work, inside a real repo, with real tests, in a real terminal or IDE. Developers who learn to work effectively with agent loops will have a meaningful advantage over those still treating AI as a smarter autocomplete.</p><p><strong>&#8594;Async cloud coding agents will grow as delegation becomes more natural.</strong> Send work from GitHub or at the end of the day, and let it run in the background. This mode is still early, but it is the beginning of a shift where engineering work does not have to be synchronous.</p><p><strong>&#8594; Review is becoming the next bottleneck and the real quality gate in software delivery.</strong> As code generation gets better, review will have to become far more sophisticated too. That is where the next major gains in software quality will come from<strong>.</strong></p><p><strong>&#8594; Testing is still earlier than review, but it is the clearest next expansion area for agentic tooling.</strong> As browser-based testing agents improve and cloud runtimes become cheaper, this is where confidence will grow fastest.<br><br>My takeaway: AI-assisted coding is no longer one tool category. It is becoming a connected workflow from planning, to building, to gaining confidence in the result. Teams that understand these layers will be better positioned to adopt the right tools at each step. I share similar analysis on X: <a href="https://x.com/bibryam">https://x.com/bibryam</a> and in this newsletter.</p><div class="embedded-publication-wrap" data-attrs="{&quot;id&quot;:3411919,&quot;name&quot;:&quot;The Generative Programmer&quot;,&quot;logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!TXD9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0826fe93-5348-44e0-9ae7-bbf6feb0c62c_364x364.png&quot;,&quot;base_url&quot;:&quot;https://generativeprogrammer.com&quot;,&quot;hero_text&quot;:&quot;A developer-focused digest revealing how generative AI is transforming coding, architecture, and product development.&quot;,&quot;author_name&quot;:&quot;Bilgin Ibryam&quot;,&quot;show_subscribe&quot;:true,&quot;logo_bg_color&quot;:&quot;#ffffff&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="EmbeddedPublicationToDOMWithSubscribe"><div class="embedded-publication show-subscribe"><a class="embedded-publication-link-part" native="true" href="https://generativeprogrammer.com?utm_source=substack&amp;utm_campaign=publication_embed&amp;utm_medium=web"><img class="embedded-publication-logo" src="https://substackcdn.com/image/fetch/$s_!TXD9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0826fe93-5348-44e0-9ae7-bbf6feb0c62c_364x364.png" width="56" height="56" style="background-color: rgb(255, 255, 255);"><span class="embedded-publication-name">The Generative Programmer</span><div class="embedded-publication-hero-text">A developer-focused digest revealing how generative AI is transforming coding, architecture, and product development.</div><div class="embedded-publication-author-name">By Bilgin Ibryam</div></a><form class="embedded-publication-subscribe" method="GET" action="https://generativeprogrammer.com/subscribe?"><input type="hidden" name="source" value="publication-embed"><input type="hidden" name="autoSubmit" value="true"><input type="email" class="email-input" name="email" placeholder="Type your email..."><input type="submit" class="button primary" value="Subscribe"></form></div></div>]]></content:encoded></item><item><title><![CDATA[Applying Kubernetes Patterns to LLM Workloads]]></title><description><![CDATA[How Kubernetes patterns you already know carry over to LLMs, with a few important twists.]]></description><link>https://generativeprogrammer.com/p/applying-kubernetes-patterns-to-llm</link><guid isPermaLink="false">https://generativeprogrammer.com/p/applying-kubernetes-patterns-to-llm</guid><dc:creator><![CDATA[Bilgin Ibryam]]></dc:creator><pubDate>Sat, 21 Mar 2026 17:15:03 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/15ad38ce-ef0c-4d51-a006-8b729d28baa5_2149x1316.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>A few years ago, <a href="https://www.linkedin.com/in/ro14nd/">Roland Huss </a>and I wrote <a href="https://www.oreilly.com/library/view/kubernetes-patterns-2nd/9781098131678/">Kubernetes Patterns</a>, a catalogue of repeatable solutions for building cloud-native applications on Kubernetes. The book covers patterns across six categories: foundational, behavioral, structural, configuration, security, and advanced, everything from health probes and init containers to controllers, operators, and elastic scaling. Recently, Roland and Daniele Zonca co-authored a new book, <a href="https://learning.oreilly.com/library/view/generative-ai-on/9781098171919/">Generative AI on Kubernetes</a>, which covers the operational side of running LLMs on Kubernetes. I was a reviewer on that book, and the more I read through it, the more I recognized patterns from our original work, just applied to a very different class of workload. Deployments, StatefulSets, Init Containers, DaemonSets. They were all there. Just with bigger numbers.</p><p>Here is a high-level summary of how Kubernetes patterns apply to LLM workloads, which Roland and I will cover in more detail in our <a href="https://sched.co/2CVyl">upcoming KubeCon + CloudNativeCon Europe 2026 talk </a>in Amsterdam.</p><h2>Same Kubernetes, Different Workload</h2><p>A typical cloud-native application on Kubernetes follows a well-known stack. </p><ul><li><p>An Ingress routes HTTP traffic to stateless App Pods managed by a Deployment. </p></li><li><p>An init container runs database migrations before the app starts. </p></li><li><p>PostgreSQL runs as a StatefulSet with persistent storage. </p></li><li><p>A CronJob generates reports on a schedule. </p></li><li><p>A layer of DaemonSets, such as Prometheus Node Exporter and Fluentd, provides</p></li></ul><p>That is six Kubernetes patterns at work: Controller, Stateless Service, Init Container, Stateful Service, Batch Job, Daemon Service.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bE08!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ab796b8-755f-4472-9ccd-a0d23f591e2f_5303x2179.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bE08!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ab796b8-755f-4472-9ccd-a0d23f591e2f_5303x2179.png 424w, https://substackcdn.com/image/fetch/$s_!bE08!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ab796b8-755f-4472-9ccd-a0d23f591e2f_5303x2179.png 848w, https://substackcdn.com/image/fetch/$s_!bE08!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ab796b8-755f-4472-9ccd-a0d23f591e2f_5303x2179.png 1272w, https://substackcdn.com/image/fetch/$s_!bE08!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ab796b8-755f-4472-9ccd-a0d23f591e2f_5303x2179.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bE08!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ab796b8-755f-4472-9ccd-a0d23f591e2f_5303x2179.png" width="728" height="299" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5ab796b8-755f-4472-9ccd-a0d23f591e2f_5303x2179.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:598,&quot;width&quot;:1456,&quot;resizeWidth&quot;:728,&quot;bytes&quot;:896606,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/191668763?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ab796b8-755f-4472-9ccd-a0d23f591e2f_5303x2179.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!bE08!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ab796b8-755f-4472-9ccd-a0d23f591e2f_5303x2179.png 424w, https://substackcdn.com/image/fetch/$s_!bE08!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ab796b8-755f-4472-9ccd-a0d23f591e2f_5303x2179.png 848w, https://substackcdn.com/image/fetch/$s_!bE08!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ab796b8-755f-4472-9ccd-a0d23f591e2f_5303x2179.png 1272w, https://substackcdn.com/image/fetch/$s_!bE08!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ab796b8-755f-4472-9ccd-a0d23f591e2f_5303x2179.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Traditional vs LLM workloads on Kubernetes</figcaption></figure></div><p>An LLM workload uses the same patterns, but is a fundamentally different kind of workload.</p><ul><li><p>A model is not an application binary. It is tens to hundreds of gigabytes of learned parameters, read-only data that must be loaded into GPU memory before a server can handle a single request. Meta&#8217;s Llama 70B weighs around 140 GB in full precision (FP16), or 35&#8211;40 GB with 4-bit quantization. Loading takes minutes, not seconds. </p></li><li><p>It requires specific hardware: a node with the right GPU, enough VRAM (Video RAM, the memory on the GPU where weights and intermediate computations live), and sometimes a specific GPU interconnect topology.</p></li><li><p>Initialization looks different too. In a traditional app, an init container fetches a config file or runs a migration, a few megabytes, done in seconds. In an LLM stack, the equivalent step stages tens to hundreds of gigabytes of model weights. Once the weights are in place, the model server (<a href="https://docs.vllm.ai/">vLLM</a>, <a href="https://huggingface.co/docs/text-generation-inference">TGI</a>) goes through a multi-phase startup: loading weights into GPU VRAM, compiling <a href="https://developer.nvidia.com/blog/cuda-graphs/">CUDA graphs</a>, and pre-allocating the KV cache (the memory region where the model stores computed attention states so it doesn&#8217;t recompute them for every new token). This takes minutes. Your startup probe needs <code>failureThreshold: 60</code> with <code>periodSeconds: 10</code>, a 10-minute budget.</p></li><li><p>The request profile differs too. In a traditional web service, requests have roughly uniform cost. Round-robin load balancing works. LLM inference breaks this assumption: a 10-token request completes in 200 ms while a 4,000-token request occupies a GPU for 30 seconds. Both arrive as identical <code>POST /v1/chat/completions</code> requests. Round-robin creates hot spots.</p></li><li><p>Scaling signals break down. Out-of-the-box HPA on CPU is not a good fit for GPU inference workloads. You need scaling on LLM-specific metrics: token queue depth (<code>vllm:num_requests_waiting</code>), time-to-first-token, KV cache utilization. </p></li><li><p>Scale-to-zero is impractical when model loading takes five minutes.</p></li><li><p>The infrastructure layer changes. Where you had Node Exporter and Fluentd, you now run <a href="https://kubernetes-sigs.github.io/node-feature-discovery/">NFD</a> (Node Feature Discovery) to label hardware, <a href="https://github.com/NVIDIA/gpu-feature-discovery">GFD</a> (GPU Feature Discovery) to add GPU model and VRAM labels, the <a href="https://github.com/NVIDIA/k8s-device-plugin">NVIDIA device plugin</a> to expose <code>nvidia.com/gpu</code> as a schedulable resource, and the <a href="https://github.com/NVIDIA/dcgm-exporter">DCGM exporter</a> (Data Center GPU Manager) to feed GPU metrics to Prometheus. That is your new stack of DaemonSets forming the GPU infrastructure layer.</p></li></ul><p>Projects like <a href="https://kserve.github.io/">KServe</a> (incubating at CNCF) address these by applying the Controller pattern to model serving. You write an InferenceService CRD, declare the model, the runtime, the scaling policy, and KServe reconciles: Deployment, Service, storage initializer, startup probes, GPU scheduling. </p><p>Despite all this, the fundamentals are the same. Controller, Stateless Service, Init Container, Stateful Service, Batch Job, Daemon Service, all present. The parameters changed, but the patterns held.</p><h2>What stays the same in GenAI on Kubernetes</h2><p>Many Kubernetes patterns apply to LLM workloads without fundamental modification. The pattern works as-is, you only point it at a different workload.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TtOq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd601b247-96c6-488d-86d1-caf0caf4d5b2_1836x1284.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TtOq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd601b247-96c6-488d-86d1-caf0caf4d5b2_1836x1284.png 424w, https://substackcdn.com/image/fetch/$s_!TtOq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd601b247-96c6-488d-86d1-caf0caf4d5b2_1836x1284.png 848w, https://substackcdn.com/image/fetch/$s_!TtOq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd601b247-96c6-488d-86d1-caf0caf4d5b2_1836x1284.png 1272w, https://substackcdn.com/image/fetch/$s_!TtOq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd601b247-96c6-488d-86d1-caf0caf4d5b2_1836x1284.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TtOq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd601b247-96c6-488d-86d1-caf0caf4d5b2_1836x1284.png" width="1456" height="1018" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d601b247-96c6-488d-86d1-caf0caf4d5b2_1836x1284.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1018,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:658871,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/191668763?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd601b247-96c6-488d-86d1-caf0caf4d5b2_1836x1284.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!TtOq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd601b247-96c6-488d-86d1-caf0caf4d5b2_1836x1284.png 424w, https://substackcdn.com/image/fetch/$s_!TtOq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd601b247-96c6-488d-86d1-caf0caf4d5b2_1836x1284.png 848w, https://substackcdn.com/image/fetch/$s_!TtOq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd601b247-96c6-488d-86d1-caf0caf4d5b2_1836x1284.png 1272w, https://substackcdn.com/image/fetch/$s_!TtOq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd601b247-96c6-488d-86d1-caf0caf4d5b2_1836x1284.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><strong>Patterns that map directly to GenAI</strong></figcaption></figure></div><p>These are the direct mappings. The Kubernetes primitive stays the same, but the workload behind it changes from web apps and databases to model servers, vector databases, and GPU infrastructure.</p><h2><strong>What changes in GenAI on Kubernetes</strong></h2><p>These patterns still apply to GenAI, but something fundamental changes about how they work. The pattern skeleton is the same; the parameters, scale, or semantics push them beyond their original design.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-eT1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e359db4-f711-425b-b007-94e88e7c0629_1554x1354.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-eT1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e359db4-f711-425b-b007-94e88e7c0629_1554x1354.png 424w, https://substackcdn.com/image/fetch/$s_!-eT1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e359db4-f711-425b-b007-94e88e7c0629_1554x1354.png 848w, https://substackcdn.com/image/fetch/$s_!-eT1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e359db4-f711-425b-b007-94e88e7c0629_1554x1354.png 1272w, https://substackcdn.com/image/fetch/$s_!-eT1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e359db4-f711-425b-b007-94e88e7c0629_1554x1354.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-eT1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e359db4-f711-425b-b007-94e88e7c0629_1554x1354.png" width="1456" height="1269" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4e359db4-f711-425b-b007-94e88e7c0629_1554x1354.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1269,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:630138,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/191668763?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e359db4-f711-425b-b007-94e88e7c0629_1554x1354.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!-eT1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e359db4-f711-425b-b007-94e88e7c0629_1554x1354.png 424w, https://substackcdn.com/image/fetch/$s_!-eT1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e359db4-f711-425b-b007-94e88e7c0629_1554x1354.png 848w, https://substackcdn.com/image/fetch/$s_!-eT1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e359db4-f711-425b-b007-94e88e7c0629_1554x1354.png 1272w, https://substackcdn.com/image/fetch/$s_!-eT1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e359db4-f711-425b-b007-94e88e7c0629_1554x1354.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><strong>Patterns that change for GenAI</strong></figcaption></figure></div><p>This is where LLM workloads start to stretch familiar Kubernetes patterns. The abstraction still holds, but the operational reality changes. Seconds become minutes. Megabytes become gigabytes. CPU-centric assumptions stop working.</p><h2><strong>Emerging Patterns for AI Workloads</strong></h2><p>Some patterns do not have clear ancestors in the Kubernetes pattern catalogue. They emerge from the specific characteristics of LLM workloads.</p><ul><li><p><strong>Model Data Staging</strong> addresses the challenge of delivering hundreds of gigabytes of model weights to Pods without turning every scale-up into a multi-minute outage.</p></li><li><p><strong>Token-Aware Routing</strong> replaces round-robin with metric-driven endpoint selection based on queue depth and KV cache state. This is being implemented through the Gateway API Inference Extension and projects like llm-d.</p></li><li><p><strong>RAG Composition</strong> wires together four distinct workload types into a coherent application: the orchestrator, the LLM, the vector database, and the ingestion pipeline. Each maps to its natural Kubernetes primitive.</p></li><li><p><strong>Disaggregated Serving</strong> separates the compute-intensive prefill phase from the memory-intensive decode phase, runs them on different hardware, and lets them scale independently. Projects like llm-d are enabling this model.</p></li><li><p><strong>Agentic Workflows</strong> introduce LLM agents that plan, use tools, and iterate. They are also driving new protocols such as MCP (Model Context Protocol) for agent-to-tool integration and A2A (Agent-to-Agent Protocol) for inter-agent communication. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pmEs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bb0657e-1a96-44b9-b3ca-140fe72691fc_1280x640.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pmEs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bb0657e-1a96-44b9-b3ca-140fe72691fc_1280x640.png 424w, https://substackcdn.com/image/fetch/$s_!pmEs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bb0657e-1a96-44b9-b3ca-140fe72691fc_1280x640.png 848w, https://substackcdn.com/image/fetch/$s_!pmEs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bb0657e-1a96-44b9-b3ca-140fe72691fc_1280x640.png 1272w, https://substackcdn.com/image/fetch/$s_!pmEs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bb0657e-1a96-44b9-b3ca-140fe72691fc_1280x640.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pmEs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bb0657e-1a96-44b9-b3ca-140fe72691fc_1280x640.png" width="1280" height="640" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5bb0657e-1a96-44b9-b3ca-140fe72691fc_1280x640.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:640,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:181041,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/191668763?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bb0657e-1a96-44b9-b3ca-140fe72691fc_1280x640.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!pmEs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bb0657e-1a96-44b9-b3ca-140fe72691fc_1280x640.png 424w, https://substackcdn.com/image/fetch/$s_!pmEs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bb0657e-1a96-44b9-b3ca-140fe72691fc_1280x640.png 848w, https://substackcdn.com/image/fetch/$s_!pmEs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bb0657e-1a96-44b9-b3ca-140fe72691fc_1280x640.png 1272w, https://substackcdn.com/image/fetch/$s_!pmEs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bb0657e-1a96-44b9-b3ca-140fe72691fc_1280x640.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Building Production-Ready Agent Systems with MCP</figcaption></figure></div><p><strong>Something related:</strong> Our friends at Deep Engineering are hosting a workshop, Building MCP Servers in Production, with Peder Holdgaard Pedersen. If you are exploring MCP beyond demos and into real production systems, this is  worth a look, <strong><a href="https://www.eventbrite.com/e/building-production-ready-agent-systems-with-mcp-tickets-1982519419953?aff=thegenerativeprogrammer">register here</a></strong>.</p></li></ul><p>These patterns are covered in depth in Roland and Daniele&#8217;s book <a href="https://learning.oreilly.com/library/view/generative-ai-on/9781098171919/">Generative AI on Kubernetes</a>. Roland and I will be walking through three of them: Model Data Staging, Token-Aware Routing, and RAG Composition at <a href="https://sched.co/2CVyl">KubeCon Amsterdam this week</a>.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://generativeprogrammer.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://generativeprogrammer.com/subscribe?"><span>Subscribe now</span></a></p><p>If you&#8217;d like more posts like this on Kubernetes, cloud-native patterns, and how they intersect with AI workloads, subscribe to my newsletter.</p>]]></content:encoded></item><item><title><![CDATA[Best Prompt Engineering Resources (2026 Edition)]]></title><description><![CDATA[A curated list of the best prompt engineering books, papers, tools, and courses]]></description><link>https://generativeprogrammer.com/p/best-prompt-engineering-resources</link><guid isPermaLink="false">https://generativeprogrammer.com/p/best-prompt-engineering-resources</guid><dc:creator><![CDATA[Bilgin Ibryam]]></dc:creator><pubDate>Sun, 28 Dec 2025 15:28:45 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!k9Q6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F749a72a0-b578-4f7b-8fe2-24d47137d1bf_3783x2719.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I&#8217;ve been <strong>researching, learning, and regularly sharing prompt engineering resources for the past 2+ years</strong> through <em>The Generative Programmer</em>.  During that time, I&#8217;ve read countless guides, papers, tools, and courses. This post is a <strong>curated top list of the best prompt engineering resources I&#8217;ve found so far</strong>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!k9Q6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F749a72a0-b578-4f7b-8fe2-24d47137d1bf_3783x2719.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!k9Q6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F749a72a0-b578-4f7b-8fe2-24d47137d1bf_3783x2719.png 424w, https://substackcdn.com/image/fetch/$s_!k9Q6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F749a72a0-b578-4f7b-8fe2-24d47137d1bf_3783x2719.png 848w, https://substackcdn.com/image/fetch/$s_!k9Q6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F749a72a0-b578-4f7b-8fe2-24d47137d1bf_3783x2719.png 1272w, https://substackcdn.com/image/fetch/$s_!k9Q6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F749a72a0-b578-4f7b-8fe2-24d47137d1bf_3783x2719.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!k9Q6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F749a72a0-b578-4f7b-8fe2-24d47137d1bf_3783x2719.png" width="1456" height="1046" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/749a72a0-b578-4f7b-8fe2-24d47137d1bf_3783x2719.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1046,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:6677371,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/182758868?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F749a72a0-b578-4f7b-8fe2-24d47137d1bf_3783x2719.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!k9Q6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F749a72a0-b578-4f7b-8fe2-24d47137d1bf_3783x2719.png 424w, https://substackcdn.com/image/fetch/$s_!k9Q6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F749a72a0-b578-4f7b-8fe2-24d47137d1bf_3783x2719.png 848w, https://substackcdn.com/image/fetch/$s_!k9Q6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F749a72a0-b578-4f7b-8fe2-24d47137d1bf_3783x2719.png 1272w, https://substackcdn.com/image/fetch/$s_!k9Q6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F749a72a0-b578-4f7b-8fe2-24d47137d1bf_3783x2719.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em><strong>Top Prompt Engineering Resources 2026</strong></em></figcaption></figure></div><p>&#128073; If you&#8217;re building with LLMs, agents, or generative AI, bookmark this. It&#8217;s a living list. </p><div><hr></div><h2>&#128218; Books</h2><p><em>There are many books on AI, but these go deep and explain how prompting actually works in real systems.</em></p><ul><li><p><strong><a href="https://amzn.to/4jfXenF">Prompt Engineering for LLMs</a></strong> &#8211; O&#8217;Reilly, John Berryman, Albert Ziegler</p></li><li><p><strong><a href="https://amzn.to/4pTubsn">Prompt Engineering for Generative AI</a></strong> &#8211; O&#8217;Reilly, James Phoenix, Mike Taylor</p></li><li><p><strong><a href="https://amzn.to/4pWLKYH">Generative AI Design Patterns</a></strong> &#8211; O&#8217;Reilly, Valliappa Lakshmanan, Hannes Hapke</p></li><li><p><strong><a href="https://amzn.to/49bCTv7">Prompt Design Patterns</a></strong> &#8211; Yi Zhou</p></li><li><p><strong><a href="https://amzn.to/3MTBBxf">Unlocking Secrets of Prompt Engineering</a></strong> &#8211; Packt, Gilbert Mizrahi</p></li><li><p><strong><a href="https://amzn.to/4s7Juzc">LLM Design Patterns</a></strong> &#8211; Packt, Ken Huang</p></li><li><p><strong><a href="https://leanpub.com/patterns-of-application-development-using-ai">Patterns of Application Development Using AI</a></strong> &#8211; Leanpub, Obie Fernandez</p></li></ul><div><hr></div><h2>&#127891; Courses</h2><p><em>Most popular learning paths from beginner to advanced prompt engineering.</em></p><ul><li><p><strong><a href="https://learnprompting.thinkific.com/enrollments">Learn Prompting</a></strong> &#8211; LearnPrompting</p></li><li><p><strong><a href="https://maven.com/dair-ai/prompt-engineering-llms?utm_campaign=NDUxMzEz&amp;utm_medium=clp_share_link&amp;utm_source=maven">Advanced Prompt Engineering for LLMs</a></strong> &#8211; Elvis Saravia (DAIR.AI)</p></li><li><p><strong><a href="https://www.udemy.com/share/108nx03@WTllLbrIpjp-yVEQC0YwepcW_5lSFaVV7szZhNvdBuSB4CcpuqNBi43EaJt_6w3D/">Prompt Engineering for Everybody</a></strong> &#8211; Udemy</p></li><li><p><strong><a href="https://github.com/anthropics/prompt-eng-interactive-tutorial">Anthropic&#8217;s Prompt Engineering Interactive Tutorial</a></strong> -Anthropic</p></li></ul><div><hr></div><h2>&#127909; Videos</h2><p><em>Overview, discussions, workshops, and real-world explanations of prompt engineering.</em></p><ul><li><p><strong><a href="https://www.youtube.com/watch?v=ysPbXH0LpIE">Prompting 101 | Code w/ Claude</a></strong><a href="https://www.youtube.com/watch?v=ysPbXH0LpIE"> &#8211; Anthropic</a></p></li><li><p><strong><a href="https://www.youtube.com/watch?v=DL82mGde6wo">State-Of-The-Art Prompting for AI Agents</a></strong><a href="https://www.youtube.com/watch?v=DL82mGde6wo"> &#8211; Y Combinator</a></p></li><li><p><strong><a href="https://www.youtube.com/watch?v=hkhDdcM5V94">Building with Anthropic Claude: Prompt Workshop</a></strong><a href="https://www.youtube.com/watch?v=hkhDdcM5V94"> &#8211; AI Engineer</a></p></li><li><p><strong><a href="https://www.youtube.com/watch?v=_ZvnD73m40o">Prompt Engineering Tutorial &#8211; Master ChatGPT</a></strong><a href="https://www.youtube.com/watch?v=_ZvnD73m40o"> &#8211; freeCodeCamp</a></p></li><li><p><strong><a href="https://www.youtube.com/watch?v=p09yRj47kNM">Google&#8217;s 9 Hour AI Prompt Engineering Course in 20 Minutes</a></strong><a href="https://www.youtube.com/watch?v=p09yRj47kNM"> &#8211; Tina Huang</a></p></li><li><p><strong><a href="https://www.youtube.com/watch?v=htBTho6oEJA">Prompt Engineering Workshop</a></strong><a href="https://www.youtube.com/watch?v=htBTho6oEJA"> &#8211; Hamel Husain</a></p></li><li><p><strong><a href="https://learning.oreilly.com/videos/prompt-engineering/9781835881521/9781835881521-video1_1/">Prompt Engineering &#8211; For Optimal LLM Performance</a></strong><a href="https://learning.oreilly.com/videos/prompt-engineering/9781835881521/9781835881521-video1_1/"> &#8211; Valentina Alto</a></p></li><li><p><strong><a href="https://www.youtube.com/watch?v=5ef83Wljm-M">CMU Advanced NLP 2022 (9): Prompting - </a></strong><a href="https://www.youtube.com/watch?v=5ef83Wljm-M">Graham Neubig</a></p></li></ul><div><hr></div><h2>&#128196; Whitepapers</h2><p><em>Research that introduced modern prompting techniques like CoT, ToT, self-consistency, tool use, and reflection.</em></p><ul><li><p><strong>The Prompt Report: A Systematic Survey of Prompt Engineering Techniques</strong> &#8211; Schulhoff et al<br><a href="https://arxiv.org/abs/2406.06608">https://arxiv.org/abs/2406.06608</a></p></li><li><p><strong>A Prompt Pattern Catalog to Enhance Prompt Engineering with ChatGPT</strong> &#8211; Jules White et al<br><a href="https://arxiv.org/abs/2302.11382">https://arxiv.org/abs/2302.11382</a></p></li><li><p><strong>A Systematic Survey of Prompt Engineering in Large Language Models</strong> &#8211; Pranab Sahoo et al<br><a href="https://arxiv.org/abs/2402.07927">https://arxiv.org/abs/2402.07927</a></p></li><li><p><strong>Buffer of Thoughts: Thought-Augmented Reasoning with LLMs</strong> &#8211; Ling Yang et al<br><a href="https://arxiv.org/abs/2406.04271">https://arxiv.org/abs/2406.04271</a></p></li><li><p><strong>Lost in the Middle: How Language Models Use Long Contexts</strong> &#8211; Nelson F. Liu et al<br><a href="https://arxiv.org/abs/2307.03172">https://arxiv.org/abs/2307.03172</a></p></li><li><p><strong>Toolformer: Language Models Can Teach Themselves to Use Tools</strong> &#8211; Timo Schick et al<br><a href="https://arxiv.org/abs/2302.04761">https://arxiv.org/abs/2302.04761</a></p></li><li><p><strong>Prompting in the Wild</strong> &#8211; Mahan Tafreshipour et al<br><a href="https://arxiv.org/abs/2412.17298">https://arxiv.org/abs/2412.17298</a></p></li><li><p><strong>PromptSource</strong> &#8211; Stephen H. Bach et al<br><a href="https://arxiv.org/abs/2202.01279">https://arxiv.org/abs/2202.01279</a></p></li><li><p><strong>Repository-Level Prompt Generation for LLMs of Code</strong> &#8211; Disha Shrivastava et al<br><a href="https://arxiv.org/abs/2206.12839">https://arxiv.org/abs/2206.12839</a></p></li><li><p><strong>Conversing with Copilot</strong> &#8211; Paul Denny et al<br><a href="https://arxiv.org/abs/2210.15157">https://arxiv.org/abs/2210.15157</a></p></li><li><p><strong>Tree of Thoughts</strong> &#8211; Shunyu Yao et al<br><a href="https://arxiv.org/abs/2305.10601">https://arxiv.org/abs/2305.10601</a></p></li><li><p><strong>Chain-of-Thought Prompting</strong> &#8211; Jason Wei et al<br><a href="https://arxiv.org/abs/2201.11903">https://arxiv.org/abs/2201.11903</a></p></li><li><p><strong>Reflexion</strong> &#8211; Noah Shinn et al<br><a href="https://arxiv.org/abs/2303.11366">https://arxiv.org/abs/2303.11366</a></p></li><li><p><strong>Reprompting</strong> &#8211; Weijia Xu et al<br><a href="https://arxiv.org/abs/2305.09993">https://arxiv.org/abs/2305.09993</a></p></li><li><p><strong>LLMs Are Human-Level Prompt Engineers</strong> &#8211; Yongchao Zhou et al<br><a href="https://arxiv.org/abs/2211.01910">https://arxiv.org/abs/2211.01910</a></p></li><li><p><strong>Self-Consistency Improves Chain-of-Thought Reasoning</strong> &#8211; Xuezhi Wang et al<br><a href="https://arxiv.org/abs/2203.11171">https://arxiv.org/abs/2203.11171</a></p></li><li><p><strong>Language Models Are Zero-Shot Reasoners</strong> &#8211; Takeshi Kojima et al<br><a href="https://arxiv.org/abs/2205.11916">https://arxiv.org/abs/2205.11916</a></p></li><li><p><strong>Prompt Engineering (Whitepaper)</strong> &#8211; Lee Boonstra<br><a href="https://www.kaggle.com/whitepaper-prompt-engineering">https://www.kaggle.com/whitepaper-prompt-engineering</a></p></li><li><p><strong>The DALL&#183;E 2 Prompt Book (PDF)</strong> &#8211; dallery.gallery<br><a href="https://dallery.gallery/wp-content/uploads/2022/07/The-DALL%C2%B7E-2-prompt-book.pdf">https://dallery.gallery/wp-content/uploads/2022/07/The-DALL%C2%B7E-2-prompt-book.pdf</a></p></li></ul><div><hr></div><h2>&#127760; Websites &amp; Roadmaps</h2><p><em>Living documentation, continuously updated guides, and structured learning paths.</em></p><ul><li><p><strong>Prompt Engineering Guide</strong> &#8211; Sander Schulhoff<br><a href="https://learnprompting.org/docs/introduction">https://learnprompting.org/docs/introduction</a></p></li><li><p><strong>Prompting Guide AI</strong> &#8211; DAIR.AI</p><p><a href="https://www.promptingguide.ai/">https://www.promptingguide.ai/</a></p></li><li><p><strong>Prompt Engineering Overview</strong> &#8211; Anthropic<br><a href="https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/overview">https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/overview</a></p></li></ul><div><hr></div><h2>&#9997;&#65039; Articles</h2><p><em>Practical write-ups from teams actively shipping LLM-powered systems.</em></p><ul><li><p><strong>Prompt Engineering Best Practices</strong> - Sarah Chieng<br><a href="https://milksandmatcha.notion.site/Prompt-Engineering-Best-Practices-5aab1f04fce246ad9a39d3b69e80ed99">https://milksandmatcha.notion.site/Prompt-Engineering-Best-Practices-5aab1f04fce246ad9a39d3b69e80ed99</a></p></li><li><p><strong>Lilian Weng Prompt Engineering Guide</strong> &#8211; Lilian Weng<br><a href="https://lilianweng.github.io/posts/2023-03-15-prompt-engineering/">https://lilianweng.github.io/posts/2023-03-15-prompt-engineering/</a></p></li><li><p><strong>Anthropic Claude Code Best Practices</strong> &#8211; Anthropic<br><a href="https://www.anthropic.com/engineering/claude-code-best-practices">https://www.anthropic.com/engineering/claude-code-best-practices</a></p></li><li><p><strong>OpenAI Best Practices for Prompt Engineering</strong> &#8211; OpenAI<br><a href="https://help.openai.com/en/articles/6654000-best-practices-for-prompt-engineering-with-the-openai-api">https://help.openai.com/en/articles/6654000-best-practices-for-prompt-engineering-with-the-openai-api</a></p></li><li><p><strong>OpenAI Prompt Engineering Guide</strong> &#8211; OpenAI<br><a href="https://platform.openai.com/docs/guides/prompt-engineering">https://platform.openai.com/docs/guides/prompt-engineering</a></p></li><li><p><strong>OpenAI Cookbook Related Resources</strong> &#8211; OpenAI<br><a href="https://cookbook.openai.com/articles/related_resources">https://cookbook.openai.com/articles/related_resources</a></p></li><li><p><strong>Mistral Prompting Capabilities</strong> &#8211; Mistral AI<br><a href="https://docs.mistral.ai/capabilities/completion/prompting_capabilities">https://docs.mistral.ai/capabilities/completion/prompting_capabilities</a></p></li><li><p><strong>ParaHelp Prompt Design Blog</strong> &#8211; ParaHelp<br><a href="https://parahelp.com/blog/prompt-design">https://parahelp.com/blog/prompt-design</a></p></li><li><p><strong>OpenAI Techniques to Improve Reliability</strong> &#8211; OpenAI<br><a href="https://cookbook.openai.com/articles/techniques_to_improve_reliability">https://cookbook.openai.com/articles/techniques_to_improve_reliability</a></p></li><li><p><strong>OpenAI Guides: Optimizing LLM Accuracy</strong> &#8211; OpenAI<br><a href="https://platform.openai.com/docs/guides/optimizing-llm-accuracy">https://platform.openai.com/docs/guides/optimizing-llm-accuracy</a></p></li><li><p><strong>Wikipedia: Prompt Engineering</strong> &#8211; Wikipedia<br><a href="https://en.wikipedia.org/wiki/Prompt_engineering">https://en.wikipedia.org/wiki/Prompt_engineering</a></p></li><li><p><strong>Automated Prompt Engineering: Hands-On Guide</strong> &#8211; Towards Data Science<br><a href="https://towardsdatascience.com/automated-prompt-engineering-the-definitive-hands-on-guide-1476c8cd3c50/">https://towardsdatascience.com/automated-prompt-engineering-the-definitive-hands-on-guide-1476c8cd3c50/</a></p></li><li><p><strong>Advanced Prompt Engineering (Chain-of-Thought)</strong> &#8211; Towards Data Science<br><a href="https://towardsdatascience.com/advanced-prompt-engineering-chain-of-thought-cot-8d8b090bf699/">https://towardsdatascience.com/advanced-prompt-engineering-chain-of-thought-cot-8d8b090bf699/</a></p></li><li><p><strong>5 Prompt Engineering Tips for Developers</strong> &#8211; Slobodan Mehmedovic<br><a href="https://slobodan.me/posts/5-prompt-engineering-tips-for-developers/">https://slobodan.me/posts/5-prompt-engineering-tips-for-developers/</a></p></li><li><p><strong>Anatomy of a Prompt</strong> &#8211; Gyorgy Bakocs<br><a href="https://www.linkedin.com/pulse/anatomy-prompt-gyorgy-bakocs/">https://www.linkedin.com/pulse/anatomy-prompt-gyorgy-bakocs/</a></p></li><li><p><strong>Gemini 3 Prompt Practices</strong> &#8211; Phil Schmid<br><a href="https://www.philschmid.de/gemini-3-prompt-practices">https://www.philschmid.de/gemini-3-prompt-practices</a></p></li><li><p><strong>Prompt Engineering vs Blind Prompting</strong> &#8211; Mitchell Hashimoto<br><a href="https://mitchellh.com/writing/prompt-engineering-vs-blind-prompting">https://mitchellh.com/writing/prompt-engineering-vs-blind-prompting</a></p></li><li><p><strong>Deterministic Quoting</strong> &#8211; Matty Yeung<br><a href="https://mattyyeung.github.io/deterministic-quoting">https://mattyyeung.github.io/deterministic-quoting</a></p></li><li><p><strong>Rewrite Your Prompts</strong> &#8211; Max Leiter<br><a href="https://maxleiter.com/blog/rewrite-your-prompts">https://maxleiter.com/blog/rewrite-your-prompts</a></p></li><li><p><strong>Prompt Engineering 101</strong> &#8211; Amatria<br><a href="https://amatria.in/blog/PromptEngineering">https://amatria.in/blog/PromptEngineering</a></p></li><li><p><strong>Prompt Engineering 201</strong> &#8211; Amatria<br><a href="https://amatria.in/blog/prompt201">https://amatria.in/blog/prompt201</a></p></li><li><p><strong>AI Tools Up: Prompt Engineering Resources</strong> &#8211; aiToolsUp<br><a href="https://aitoolsup.com/best-resources-to-become-prompt-engineer/">https://aitoolsup.com/best-resources-to-become-prompt-engineer/</a></p></li><li><p><strong>Prompt Examples</strong> &#8211; OpenAI<br><a href="https://platform.openai.com/docs/examples">https://platform.openai.com/docs/examples</a></p></li><li><p><strong>Prompt Engineering Roadmap</strong> &#8211; Roadmap.sh<br><a href="https://roadmap.sh/prompt-engineering">https://roadmap.sh/prompt-engineering</a></p></li></ul><div><hr></div><h2>&#129520; GitHub Repositories</h2><p><em>Hands-on prompt examples, tooling, collections, and experiments.</em></p><ul><li><p><a href="https://github.com/PromptLabs/Prompt-Hacking-Resources">https://github.com/PromptLabs/Prompt-Hacking-Resources</a></p></li><li><p><a href="https://github.com/brexhq/prompt-engineering">https://github.com/brexhq/prompt-engineering</a></p></li><li><p><a href="https://github.com/anthropics/prompt-eng-interactive-tutorial">https://github.com/anthropics/prompt-eng-interactive-tutorial</a></p></li><li><p><a href="https://github.com/openai/openai-cookbook">https://github.com/openai/openai-cookbook</a></p></li><li><p><a href="https://github.com/dair-ai/Prompt-Engineering-Guide">https://github.com/dair-ai/Prompt-Engineering-Guide</a></p></li><li><p><a href="https://github.com/promptslab/Awesome-Prompt-Engineering">https://github.com/promptslab/Awesome-Prompt-Engineering</a></p></li><li><p><a href="https://github.com/thunlp/PromptPapers">https://github.com/thunlp/PromptPapers</a></p></li><li><p><a href="https://github.com/thunlp/OpenPrompt">https://github.com/thunlp/OpenPrompt</a></p></li><li><p><a href="https://github.com/guidance-ai/guidance">https://github.com/guidance-ai/guidance</a></p></li><li><p><a href="https://github.com/microsoft/PromptWizard">https://github.com/microsoft/PromptWizard</a></p></li><li><p><a href="https://github.com/swyxio/ai-notes">https://github.com/swyxio/ai-notes</a></p></li></ul><div><hr></div><h2>&#9881;&#65039; Tools &amp; Services</h2><p><em>Playgrounds, prompt testing tools, optimizers, and prompt management platforms.</em></p><ul><li><p><strong>OpenAI Chat Playground </strong><a href="https://platform.openai.com/chat/edit">https://platform.openai.com/chat/edit</a></p></li><li><p><strong>OpenAI Tokenizer </strong><a href="https://platform.openai.com/tokenizer">https://platform.openai.com/tokenizer</a></p></li><li><p><strong>PromptPerfect </strong><a href="https://promptperfect.xyz/">https://promptperfect.xyz/</a></p></li><li><p><strong>FlowGPT Guide </strong><a href="https://guide.flowgpt.com/">https://guide.flowgpt.com/</a></p></li><li><p><strong>PromptPort </strong><a href="https://promptport.ai/">https://promptport.ai/</a></p></li><li><p><strong>Prompt Optimizer </strong><a href="https://promptoptimizer.tools/">https://promptoptimizer.tools/</a></p></li><li><p><strong>TextSynth Completion Playground </strong><a href="https://textsynth.com/completion.html">https://textsynth.com/completion.html</a></p></li><li><p><strong>PromptLayer </strong><a href="https://www.promptlayer.com/platform/prompt-management">https://www.promptlayer.com/platform/prompt-management</a></p></li><li><p><strong>Reverse Prompt Engineer</strong> <a href="https://www.agenticworkers.com/reverse-prompt-engineer">https://www.agenticworkers.com/reverse-prompt-engineer</a></p></li></ul><div><hr></div><h2>&#128172; Communities</h2><p><em>Where prompt engineers share techniques, failures, and experiments.</em></p><ul><li><p><a href="https://www.reddit.com/r/PromptEngineering/">https://www.reddit.com/r/PromptEngineering/</a></p></li><li><p><a href="https://www.reddit.com/r/PromptDesign/">https://www.reddit.com/r/PromptDesign/</a></p></li><li><p><a href="https://www.reddit.com/r/GenAI4all/">https://www.reddit.com/r/GenAI4all/</a></p></li><li><p><a href="https://www.reddit.com/r/PromptSharing/">https://www.reddit.com/r/PromptSharing/</a></p></li><li><p><a href="https://www.reddit.com/r/ChatGPTPromptGenius/">https://www.reddit.com/r/ChatGPTPromptGenius/</a></p></li><li><p><a href="https://www.reddit.com/r/OpenAI/">https://www.reddit.com/r/OpenAI/</a></p></li><li><p></p></li></ul><div><hr></div><p><strong>Thanks for reading </strong><em><strong>The Generative Programmer</strong></em><strong> &#129302;</strong><br>Subscribe for more curated AI resources, agent patterns, and practical lessons from building with LLMs.</p>]]></content:encoded></item><item><title><![CDATA[🤖 Generative Programmer | Issue #17]]></title><description><![CDATA[Curated insights, tools, and techniques for AI-assisted development and building agentic systems]]></description><link>https://generativeprogrammer.com/p/generative-programmer-issue-17</link><guid isPermaLink="false">https://generativeprogrammer.com/p/generative-programmer-issue-17</guid><dc:creator><![CDATA[Bilgin Ibryam]]></dc:creator><pubDate>Sun, 07 Dec 2025 23:05:26 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!15Zr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F598c1be3-9dd5-4fe7-b00a-37f5849bee47_923x481.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>&#128227; Welcome back! Here&#8217;s everything I came across in <strong>November</strong> on agentic systems and AI-assisted coding, all in one post. Support me by sharing on your networks, and let&#8217;s dive in.</p><h2>&#128293; Top Picks from Issue #17</h2><p>&#128272; <a href="https://securetrajectories.substack.com/p/claude-skill-hijack-invisible-sentence">How We Hijacked a Claude Skill with an Invisible Sentence</a> - Josh Devon<br>&#129504; <a href="https://engineeringagents.substack.com/p/domain-driven-agent-design">Why your AI agents need domain awareness</a> - Russ Miles<br>&#128295; <a href="https://blog.sshh.io/p/how-i-use-every-claude-code-feature">How I Use Every Claude Code Feature</a> - Shrivu Shankar<br>&#128202; <a href="https://medium.com/google-cloud/genai-in-production-mlops-or-genaiops-25691c9becd0">GenAI in Production: MLOps or GenAIOps?</a> - Dr. Kartakis<br>&#128076; <a href="https://weaviate.io/ebooks/the-context-engineering-guide">The Context Engineering Guide</a> - Weaviate<br>&#128269; <a href="https://www.newsletter.swirlai.com/p/building-deep-research-agent-from">Building a Deep Research Agent from scratch</a> - Aurimas Grici&#363;nas<br>&#128737;&#65039; <a href="https://arxiv.org/abs/2506.08837">Design Patterns for Securing LLM Agents against Prompt Injections</a> - Luca Beurer<br>&#128200; <a href="https://leadershiplighthouse.substack.com/p/i-went-all-in-on-ai-the-mit-study">I Went All-In on AI. The MIT Study Is Right.</a> - Josh Anderson</p><h2>&#127919; Featured Article</h2><p><a href="https://www.newsletter.swirlai.com/p/building-deep-research-agent-from">This in-depth tutorial</a> by <strong>Aurimas Grici&#363;nas</strong> walks you through building a <strong>Deep Research Agent</strong> from scratch using the open-source <strong>DeepSeek R1</strong> model. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Uwxe!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae2194f5-e847-4f07-9bf4-cf5f5c3baa0f_1673x1028.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Uwxe!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae2194f5-e847-4f07-9bf4-cf5f5c3baa0f_1673x1028.png 424w, https://substackcdn.com/image/fetch/$s_!Uwxe!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae2194f5-e847-4f07-9bf4-cf5f5c3baa0f_1673x1028.png 848w, https://substackcdn.com/image/fetch/$s_!Uwxe!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae2194f5-e847-4f07-9bf4-cf5f5c3baa0f_1673x1028.png 1272w, https://substackcdn.com/image/fetch/$s_!Uwxe!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae2194f5-e847-4f07-9bf4-cf5f5c3baa0f_1673x1028.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Uwxe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae2194f5-e847-4f07-9bf4-cf5f5c3baa0f_1673x1028.png" width="1456" height="895" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ae2194f5-e847-4f07-9bf4-cf5f5c3baa0f_1673x1028.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:895,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!Uwxe!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae2194f5-e847-4f07-9bf4-cf5f5c3baa0f_1673x1028.png 424w, https://substackcdn.com/image/fetch/$s_!Uwxe!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae2194f5-e847-4f07-9bf4-cf5f5c3baa0f_1673x1028.png 848w, https://substackcdn.com/image/fetch/$s_!Uwxe!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae2194f5-e847-4f07-9bf4-cf5f5c3baa0f_1673x1028.png 1272w, https://substackcdn.com/image/fetch/$s_!Uwxe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae2194f5-e847-4f07-9bf4-cf5f5c3baa0f_1673x1028.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>It covers every step, from planning and web search to summarization and reflection, without relying on any orchestration frameworks. Highly recommended to check it out!</p><h2><strong>&#129302; Building Agentic Systems</strong></h2><p><a href="https://securetrajectories.substack.com/p/claude-skill-hijack-invisible-sentence">How We Hijacked a Claude Skill with an Invisible Sentence</a> - Josh Devon reveals a critical security vulnerability in Claude Skills that allows attackers to override instructions with invisible text! </p><p><a href="https://www.linkedin.com/feed/update/urn:li:activity:7363981883606478849/">Agent IAM in Cloud Native World with SPIFFE and Istio</a> - Mr Posta&#8217;s slides on cloud-native identity management with SPIFFE. &#128293;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Dcph!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93dff080-e057-45b4-a80e-5918c85ba437_2932x1548.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Dcph!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93dff080-e057-45b4-a80e-5918c85ba437_2932x1548.png 424w, https://substackcdn.com/image/fetch/$s_!Dcph!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93dff080-e057-45b4-a80e-5918c85ba437_2932x1548.png 848w, https://substackcdn.com/image/fetch/$s_!Dcph!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93dff080-e057-45b4-a80e-5918c85ba437_2932x1548.png 1272w, https://substackcdn.com/image/fetch/$s_!Dcph!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93dff080-e057-45b4-a80e-5918c85ba437_2932x1548.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Dcph!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93dff080-e057-45b4-a80e-5918c85ba437_2932x1548.png" width="1456" height="769" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/93dff080-e057-45b4-a80e-5918c85ba437_2932x1548.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:769,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2317152,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/180967691?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93dff080-e057-45b4-a80e-5918c85ba437_2932x1548.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Dcph!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93dff080-e057-45b4-a80e-5918c85ba437_2932x1548.png 424w, https://substackcdn.com/image/fetch/$s_!Dcph!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93dff080-e057-45b4-a80e-5918c85ba437_2932x1548.png 848w, https://substackcdn.com/image/fetch/$s_!Dcph!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93dff080-e057-45b4-a80e-5918c85ba437_2932x1548.png 1272w, https://substackcdn.com/image/fetch/$s_!Dcph!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93dff080-e057-45b4-a80e-5918c85ba437_2932x1548.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Securing Agents and MCP servers</figcaption></figure></div><p><a href="https://engineeringagents.substack.com/p/domain-driven-agent-design">Domain Driven Agent Design - by Russ Miles</a> - Miles explains why AI agents fail when deployed without domain context, creating impressive demos that collapse in production environments.</p><p><a href="https://simonw.substack.com/p/new-prompt-injection-papers-agents">New prompt injection papers: Agents Rule of Two and The Attacker Moves Second</a> - <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Simon Willison&quot;,&quot;id&quot;:5753967,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/5a30d45c-fcba-407a-bebf-96f51a8944a4_48x48.jpeg&quot;,&quot;uuid&quot;:&quot;f02b66e6-5f3a-4ef8-be2a-fc8e2c9e35e4&quot;}" data-component-name="MentionToDOM"></span> highlights new research on prompt injection vulnerabilities along with WiFi-enabled conference badge hacking and other tech links.</p><p><a href="https://arxiv.org/abs/2506.08837">Design Patterns for Securing LLM Agents against Prompt Injections</a> - Luca Beurer&#8217;s paper on security framework for LLM agent protection.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ViR_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc6313e6-c1e0-4c39-af08-4b65251eab78_4096x2814.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ViR_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc6313e6-c1e0-4c39-af08-4b65251eab78_4096x2814.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ViR_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc6313e6-c1e0-4c39-af08-4b65251eab78_4096x2814.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ViR_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc6313e6-c1e0-4c39-af08-4b65251eab78_4096x2814.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ViR_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc6313e6-c1e0-4c39-af08-4b65251eab78_4096x2814.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ViR_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc6313e6-c1e0-4c39-af08-4b65251eab78_4096x2814.jpeg" width="1456" height="1000" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cc6313e6-c1e0-4c39-af08-4b65251eab78_4096x2814.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1000,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!ViR_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc6313e6-c1e0-4c39-af08-4b65251eab78_4096x2814.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ViR_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc6313e6-c1e0-4c39-af08-4b65251eab78_4096x2814.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ViR_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc6313e6-c1e0-4c39-af08-4b65251eab78_4096x2814.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ViR_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc6313e6-c1e0-4c39-af08-4b65251eab78_4096x2814.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Security Patterns Collection</figcaption></figure></div><p><a href="https://achan2013.medium.com/how-many-tools-functions-can-an-ai-agent-has-21e0a82b7847">How Many Tools Functions Can An AI Agent Have</a> - to do</p><p>&#128171; <a href="https://weaviate.io/ebooks/the-context-engineering-guide">The Context Engineering Guide</a> - Learn to optimize LLM performance through context engineering patterns that overcome hallucinations and build reliable AI applications with real-world context.</p><p><a href="https://medium.com/@mhockelberg/why-model-context-protocol-and-agentic-workflows-are-shaking-up-how-we-build-apps-0dbe760b9fb2">Why Model Context Protocol and Agentic Workflows Are Shaking Up How We Build Apps</a> - Monica Hockelberg explains how MCP and agentic workflows transform rigid development into more fluid, adaptable systems for the AI era.</p><p><a href="https://techcommunity.microsoft.com/blog/appsonazureblog/bulletproof-agents-with-the-durable-task-extension-for-microsoft-agent-framework/4467122">Bulletproof agents with the durable task extension for Microsoft Agent Framework</a> - New extension enables resilient agent workflows that can survive interruptions and automatically resume processing.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9SBg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78652e6e-200e-4663-8303-fc27a1d7d4e9_2662x976.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9SBg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78652e6e-200e-4663-8303-fc27a1d7d4e9_2662x976.png 424w, https://substackcdn.com/image/fetch/$s_!9SBg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78652e6e-200e-4663-8303-fc27a1d7d4e9_2662x976.png 848w, https://substackcdn.com/image/fetch/$s_!9SBg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78652e6e-200e-4663-8303-fc27a1d7d4e9_2662x976.png 1272w, https://substackcdn.com/image/fetch/$s_!9SBg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78652e6e-200e-4663-8303-fc27a1d7d4e9_2662x976.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9SBg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78652e6e-200e-4663-8303-fc27a1d7d4e9_2662x976.png" width="1456" height="534" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/78652e6e-200e-4663-8303-fc27a1d7d4e9_2662x976.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:534,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:278001,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/180967691?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78652e6e-200e-4663-8303-fc27a1d7d4e9_2662x976.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!9SBg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78652e6e-200e-4663-8303-fc27a1d7d4e9_2662x976.png 424w, https://substackcdn.com/image/fetch/$s_!9SBg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78652e6e-200e-4663-8303-fc27a1d7d4e9_2662x976.png 848w, https://substackcdn.com/image/fetch/$s_!9SBg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78652e6e-200e-4663-8303-fc27a1d7d4e9_2662x976.png 1272w, https://substackcdn.com/image/fetch/$s_!9SBg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78652e6e-200e-4663-8303-fc27a1d7d4e9_2662x976.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><strong>Built-in agent observability in MAF</strong></figcaption></figure></div><p><a href="https://buildermethods.com/agent-os/workflow">Agent OS Workflow for Spec-Driven Development</a> - Brian Casel proposes a six-phase AI agent workflow for spec-driven development.</p><p><a href="https://portkey.ai/blog/the-complete-guide-to-llm-observability/">The complete guide to LLM observability for 2026</a> - Ghost explains how to implement comprehensive LLM monitoring systems with frameworks for tracing, guardrails, cost management, and governance.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xazU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb70c98da-5032-45e8-a849-9ca74b1b7cc2_1536x670.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xazU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb70c98da-5032-45e8-a849-9ca74b1b7cc2_1536x670.png 424w, https://substackcdn.com/image/fetch/$s_!xazU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb70c98da-5032-45e8-a849-9ca74b1b7cc2_1536x670.png 848w, https://substackcdn.com/image/fetch/$s_!xazU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb70c98da-5032-45e8-a849-9ca74b1b7cc2_1536x670.png 1272w, https://substackcdn.com/image/fetch/$s_!xazU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb70c98da-5032-45e8-a849-9ca74b1b7cc2_1536x670.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xazU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb70c98da-5032-45e8-a849-9ca74b1b7cc2_1536x670.png" width="1536" height="670" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b70c98da-5032-45e8-a849-9ca74b1b7cc2_1536x670.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:670,&quot;width&quot;:1536,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1315471,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!xazU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb70c98da-5032-45e8-a849-9ca74b1b7cc2_1536x670.png 424w, https://substackcdn.com/image/fetch/$s_!xazU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb70c98da-5032-45e8-a849-9ca74b1b7cc2_1536x670.png 848w, https://substackcdn.com/image/fetch/$s_!xazU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb70c98da-5032-45e8-a849-9ca74b1b7cc2_1536x670.png 1272w, https://substackcdn.com/image/fetch/$s_!xazU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb70c98da-5032-45e8-a849-9ca74b1b7cc2_1536x670.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">End-to-End LLM Observability Overview</figcaption></figure></div><p><a href="https://rlancemartin.github.io/2025/10/15/manus/">Context Engineering in Manus</a> - Erik explores how Manus handles context management for AI agents, addressing challenges of context windows filling up during extended tool-calling sessions.</p><p><a href="https://medium.com/@joshua.v.sanger/implementing-toolformer-with-openai-and-remix-22997dd46499">Building a Toolformer model with OpenAI and Remix</a> - Josh Sanger shows how to build a weather assistant using Toolformer, enabling AI to use external tools via API calls.</p><p><a href="https://www.diagrid.io/blog/making-agent-to-agent-a2a-communication-secure-and-reliable-with-dapr">Making Agent-to-Agent (A2A) Secure and Reliable with Dapr</a> - I tried A2A with Dapr and saw how easily it adds mTLS, policy enforcement, tracing, and self-healing behavior to any agent workflow. <a href="https://www.diagrid.io/blog/durable-agentic-workflows-with-dapr">Then showed step-by-step</a> how to turn a deterministic workflow into an agentic one.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!15Zr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F598c1be3-9dd5-4fe7-b00a-37f5849bee47_923x481.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!15Zr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F598c1be3-9dd5-4fe7-b00a-37f5849bee47_923x481.png 424w, https://substackcdn.com/image/fetch/$s_!15Zr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F598c1be3-9dd5-4fe7-b00a-37f5849bee47_923x481.png 848w, https://substackcdn.com/image/fetch/$s_!15Zr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F598c1be3-9dd5-4fe7-b00a-37f5849bee47_923x481.png 1272w, https://substackcdn.com/image/fetch/$s_!15Zr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F598c1be3-9dd5-4fe7-b00a-37f5849bee47_923x481.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!15Zr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F598c1be3-9dd5-4fe7-b00a-37f5849bee47_923x481.png" width="923" height="481" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/598c1be3-9dd5-4fe7-b00a-37f5849bee47_923x481.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:481,&quot;width&quot;:923,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!15Zr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F598c1be3-9dd5-4fe7-b00a-37f5849bee47_923x481.png 424w, https://substackcdn.com/image/fetch/$s_!15Zr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F598c1be3-9dd5-4fe7-b00a-37f5849bee47_923x481.png 848w, https://substackcdn.com/image/fetch/$s_!15Zr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F598c1be3-9dd5-4fe7-b00a-37f5849bee47_923x481.png 1272w, https://substackcdn.com/image/fetch/$s_!15Zr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F598c1be3-9dd5-4fe7-b00a-37f5849bee47_923x481.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">From deterministic to agentic workflows</figcaption></figure></div><p>&#128640; <a href="https://cloud.google.com/architecture/choose-design-pattern-agentic-ai-system">Choose a design pattern for your agentic AI system</a> - Google&#8217;s guidance for selecting appropriate agent design patterns to build AI systems that can handle autonomous decision-making and complex workflows.</p><p><a href="https://blog.modelcontextprotocol.io/posts/2025-11-21-mcp-apps/">MCP Apps: Extending servers with interactive user interfaces</a> - Ido Salomon introduces a new extension enabling MCP servers to deliver interactive UIs to hosts, addressing a top community request.</p><h2><strong>&#128187; Coding with AI</strong></h2><p><a href="https://blog.sshh.io/p/how-i-use-every-claude-code-feature">How I Use Every Claude Code Feature</a> - Shrivu Shankar shares detailed insights on leveraging Claude Code for both hobbyist projects and professional development with high-volume token usage.</p><p><a href="https://words.filippo.io/claude-debugging/">Claude Code Can Debug Low-level Cryptography</a> - Filippo Valsorda describes how Claude Code successfully identified a complex bug in his post-quantum signature algorithm implementation when he was stuck.</p><p><a href="https://packagemain.tech/p/evolution-of-code-review-practices-code-rabbit">The evolution of code review practices in the world of AI</a> - Alex Pliutau examines how AI tools are transforming code reviews, improving efficiency while maintaining human oversight.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Lbgo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbd4fdf5-30fb-49a1-913d-49ebe253b670_2073x1150.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Lbgo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbd4fdf5-30fb-49a1-913d-49ebe253b670_2073x1150.png 424w, https://substackcdn.com/image/fetch/$s_!Lbgo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbd4fdf5-30fb-49a1-913d-49ebe253b670_2073x1150.png 848w, https://substackcdn.com/image/fetch/$s_!Lbgo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbd4fdf5-30fb-49a1-913d-49ebe253b670_2073x1150.png 1272w, https://substackcdn.com/image/fetch/$s_!Lbgo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbd4fdf5-30fb-49a1-913d-49ebe253b670_2073x1150.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Lbgo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbd4fdf5-30fb-49a1-913d-49ebe253b670_2073x1150.png" width="1456" height="808" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cbd4fdf5-30fb-49a1-913d-49ebe253b670_2073x1150.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:808,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Lbgo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbd4fdf5-30fb-49a1-913d-49ebe253b670_2073x1150.png 424w, https://substackcdn.com/image/fetch/$s_!Lbgo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbd4fdf5-30fb-49a1-913d-49ebe253b670_2073x1150.png 848w, https://substackcdn.com/image/fetch/$s_!Lbgo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbd4fdf5-30fb-49a1-913d-49ebe253b670_2073x1150.png 1272w, https://substackcdn.com/image/fetch/$s_!Lbgo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbd4fdf5-30fb-49a1-913d-49ebe253b670_2073x1150.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><strong>AI-powered and human code reviews</strong></figcaption></figure></div><p>&#128293; <a href="https://github.com/github/awesome-copilot">GitHub - github/awesome-copilot</a> - github - Curated toolkit to supercharge Copilot.</p><p>&#128293; <a href="https://github.com/hesreallyhim/awesome-claude-code">GitHub - hesreallyhim/awesome-claude-code</a> - Community-curated collection of commands, files, and workflows to enhance productivity with Anthropic&#8217;s CLI-based coding assistant.</p><p><a href="https://ben.stolovitz.com/posts/how_use_ai_oct_2025/">How I use AI (Oct 2025)</a> - Stolovitz reflects on his AI usage as a software engineer, highlighting Copilot&#8217;s impact on coding productivity since its early days.</p><p><a href="https://ainativedev.io/news/rulebook-ai-wants-to-elevate-vibe-coding-to-vibe-engineering-by-generating-assistant-specific-configs">Rulebook-AI wants to &#8220;elevate vibe coding to vibe engineering&#8221;</a> - Tool transforms AI coding assistant configurations into structured guidance, eliminating fragmentation and inconsistency in development workflows.</p><h2><strong>&#128240; Long-Form Reads</strong></h2><p><a href="https://arxiv.org/abs/2507.13334">A Survey of Context Engineering for Large Language Models</a> - Lingrui Mei&#8217;s comprehensive overview of techniques to optimize LLM context usage, from retrieval methods to context compression.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-iEA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67941acc-3415-434e-8fcb-31260b0a07b5_1458x1446.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-iEA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67941acc-3415-434e-8fcb-31260b0a07b5_1458x1446.png 424w, https://substackcdn.com/image/fetch/$s_!-iEA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67941acc-3415-434e-8fcb-31260b0a07b5_1458x1446.png 848w, https://substackcdn.com/image/fetch/$s_!-iEA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67941acc-3415-434e-8fcb-31260b0a07b5_1458x1446.png 1272w, https://substackcdn.com/image/fetch/$s_!-iEA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67941acc-3415-434e-8fcb-31260b0a07b5_1458x1446.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-iEA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67941acc-3415-434e-8fcb-31260b0a07b5_1458x1446.png" width="1456" height="1444" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/67941acc-3415-434e-8fcb-31260b0a07b5_1458x1446.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1444,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:774953,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/180967691?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67941acc-3415-434e-8fcb-31260b0a07b5_1458x1446.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!-iEA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67941acc-3415-434e-8fcb-31260b0a07b5_1458x1446.png 424w, https://substackcdn.com/image/fetch/$s_!-iEA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67941acc-3415-434e-8fcb-31260b0a07b5_1458x1446.png 848w, https://substackcdn.com/image/fetch/$s_!-iEA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67941acc-3415-434e-8fcb-31260b0a07b5_1458x1446.png 1272w, https://substackcdn.com/image/fetch/$s_!-iEA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67941acc-3415-434e-8fcb-31260b0a07b5_1458x1446.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The taxonomy of Context Engineering in Large Language Models</figcaption></figure></div><p><a href="https://www.mckinsey.com/capabilities/quantumblack/our-insights/the-state-of-ai">The State of AI</a> - McKinsey&#8217;s report on current AI adoption trends, business impact, and implementation challenges across industries.</p><p>&#128300; <a href="https://leadershiplighthouse.substack.com/p/i-went-all-in-on-ai-the-mit-study">I Went All-In on AI. The MIT Study Is Right.</a> - Josh Anderson shares firsthand experience using Claude Code exclusively for three months to understand why 95% of corporate AI initiatives fail.</p><p><a href="https://medium.com/google-cloud/genai-in-production-mlops-or-genaiops-25691c9becd0">GenAI in Production: MLOps or GenAIOps?</a> - Dr. Kartakis analyzes various operational frameworks for deploying GenAI solutions, clarifying differences between MLOps, LLMOps, and other emerging approaches.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Gjj6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F915bd0b6-a0d0-4b13-9286-a1e9b5c55caa_1400x686.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Gjj6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F915bd0b6-a0d0-4b13-9286-a1e9b5c55caa_1400x686.png 424w, https://substackcdn.com/image/fetch/$s_!Gjj6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F915bd0b6-a0d0-4b13-9286-a1e9b5c55caa_1400x686.png 848w, https://substackcdn.com/image/fetch/$s_!Gjj6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F915bd0b6-a0d0-4b13-9286-a1e9b5c55caa_1400x686.png 1272w, https://substackcdn.com/image/fetch/$s_!Gjj6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F915bd0b6-a0d0-4b13-9286-a1e9b5c55caa_1400x686.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Gjj6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F915bd0b6-a0d0-4b13-9286-a1e9b5c55caa_1400x686.png" width="1400" height="686" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/915bd0b6-a0d0-4b13-9286-a1e9b5c55caa_1400x686.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:686,&quot;width&quot;:1400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Gjj6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F915bd0b6-a0d0-4b13-9286-a1e9b5c55caa_1400x686.png 424w, https://substackcdn.com/image/fetch/$s_!Gjj6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F915bd0b6-a0d0-4b13-9286-a1e9b5c55caa_1400x686.png 848w, https://substackcdn.com/image/fetch/$s_!Gjj6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F915bd0b6-a0d0-4b13-9286-a1e9b5c55caa_1400x686.png 1272w, https://substackcdn.com/image/fetch/$s_!Gjj6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F915bd0b6-a0d0-4b13-9286-a1e9b5c55caa_1400x686.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><strong>Primary domains in GenAI development: model and application</strong></figcaption></figure></div><p><a href="https://gist.github.com/igorcosta/bb40cdab6b1468c373d647164afae7ef">What would you do if you had a chance to sneak peak in the year 2030 and you were a Hubber?</a> - A developer&#8217;s 2025 forecast of AI&#8217;s rapid takeover of coding jobs, driven by economics and efficiency gains across most software domains.</p><p><a href="https://www.jasonscheirer.com/weblog/vignettes/">The Death of Software Engineering as a Profession</a> - Jason Scheirer reflects on incorrect predictions about programming careers and how specialized knowledge remains valuable despite technological advances.</p><p>&#127912; <a href="https://minimaxir.com/2025/11/nano-banana-prompts/">Nano Banana can be prompt engineered for extremely nuanced AI image generation</a> - Max Woolf explores how Nano Banana offers sophisticated image generation amid competition from FLUX.1-dev, Seedream, and ChatGPT&#8217;s viral features.</p><h2><strong>&#127897;&#65039; YouTube &amp; Podcasts</strong></h2><p><a href="https://www.youtube.com/watch?v=IDSAMqip6ms">The Secrets of Claude Code From the Engineers Who Built It</a> - Explains how Claude Code enables developers to ship features in unfamiliar codebases more efficiently, with each new feature making subsequent development easier.</p><p><a href="https://practicalai.fm/">Practical AI</a> - Podcast making AI accessible through real-world applications.</p><h2><strong>&#128478;&#65039; News and Updates</strong></h2><p><a href="https://x.com/akshay_pachaar/status/1964978158782095778">Akshay on X</a> - Who is a Full-stack AI Engineer?</p><p><a href="https://x.com/PawelHuryn/status/1943611413320093880">Pawe&#322; Huryn on X</a> - 10 Principles of Building AI Agents:</p><p><a href="https://x.com/PawelHuryn/status/1949925078562721863">Pawe&#322; Huryn on X</a> - Context engineering is the new prompt engineering.</p><p><a href="https://x.com/Aurimas_Gr/status/1957790537118851262">Aurimas on X</a> - AI Engineering Learning Roadmap </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hNkj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4afd4152-e5c4-4855-bc92-b2b6a59ddf2d_3792x3475.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hNkj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4afd4152-e5c4-4855-bc92-b2b6a59ddf2d_3792x3475.jpeg 424w, https://substackcdn.com/image/fetch/$s_!hNkj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4afd4152-e5c4-4855-bc92-b2b6a59ddf2d_3792x3475.jpeg 848w, https://substackcdn.com/image/fetch/$s_!hNkj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4afd4152-e5c4-4855-bc92-b2b6a59ddf2d_3792x3475.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!hNkj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4afd4152-e5c4-4855-bc92-b2b6a59ddf2d_3792x3475.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hNkj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4afd4152-e5c4-4855-bc92-b2b6a59ddf2d_3792x3475.jpeg" width="1456" height="1334" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4afd4152-e5c4-4855-bc92-b2b6a59ddf2d_3792x3475.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1334,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!hNkj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4afd4152-e5c4-4855-bc92-b2b6a59ddf2d_3792x3475.jpeg 424w, https://substackcdn.com/image/fetch/$s_!hNkj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4afd4152-e5c4-4855-bc92-b2b6a59ddf2d_3792x3475.jpeg 848w, https://substackcdn.com/image/fetch/$s_!hNkj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4afd4152-e5c4-4855-bc92-b2b6a59ddf2d_3792x3475.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!hNkj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4afd4152-e5c4-4855-bc92-b2b6a59ddf2d_3792x3475.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>&#120276;&#120284; &#120280;&#120315;&#120308;&#120310;&#120315;&#120306;&#120306;&#120319;&#120310;&#120315;&#120308; &#120287;&#120306;&#120302;&#120319;&#120315;&#120310;&#120315;&#120308; &#120293;&#120316;&#120302;&#120305;&#120314;&#120302;&#120317;.</em> </figcaption></figure></div><p><a href="https://www.linkedin.com/feed/update/urn:li:activity:7394694132197298176/">TOON (Token-Oriented Object Notation)</a> - Aurimas Grici&#363;nas briefly explains how TOON increases model accuracy while reducing token count, critical for optimizing agentic systems.</p><h2><strong>&#128736;&#65039; Tech &amp; Tools</strong></h2><p><a href="https://llmtext.com/">llmtext</a> - Turn any llms.txt into a dedicated MCP server</p><p><a href="https://github.com/agentregistry-dev/agentregistry">GitHub - agentregistry-dev/agentregistry</a> - Centralized registry for AI artifact governance.</p><p><a href="https://www.remote-mcp.com/">AI Connectors Directory</a> - Directory of Remote MCP servers for AI custom connectors.</p><p><a href="https://github.com/HKUDS/DeepCode">DeepCode: Open Agentic Coding</a> - Open-source tool offering terminal-based and web interfaces for AI-powered code generation from papers and text.</p><p><a href="https://github.com/PromptLabs/Prompt-Hacking-Resources">Prompt-Hacking-Resources</a> - PromptLabs&#8217; curated collection of resources for AI red teaming, jailbreaking, and prompt injection, designed for those interested in AI/ML security and safety.</p><p><a href="https://opencode.ai/">OpenCode | The open source AI coding agent</a> - A privacy-focused AI coding assistant offering free models with no account required and integrations across multiple platforms.</p><p><a href="https://github.com/toon-format/toon">GitHub - toon-format/toon: &#127890; Token-Oriented Object Notation (TOON)</a> - A compact JSON alternative optimized for LLMs that combines YAML&#8217;s indentation structure with CSV-like layouts for efficient token usage while maintaining readability.</p><p><a href="https://github.com/Portkey-AI/gateway">GitHub - Portkey-AI/gateway</a> - Open-source AI gateway providing fast routing to 1600+ language, vision, audio, and image models with integrated guardrails and enterprise-ready security.</p><p><a href="https://github.com/metatool-ai/metamcp">GitHub - metatool-ai/metamcp</a> - MCP proxy that aggregates multiple MCP servers into a unified endpoint with middleware support, enabling developers to build agents on this infrastructure.</p><p><a href="https://medium.com/@writertripathi/youre-burning-0-02-per-1k-json-tokens-you-don-t-need-to-136c2bc7101b">You&#8217;re Burning 0.02 Per 1K JSON Tokens You Don&#8217;t Need To</a> - Ankita Tripathi explains how to optimize JSON structures in API calls to reduce token usage and lower costs when working with AI models.</p><p>&#128176; <a href="https://frugal.co/">Frugal AI - Intelligent Application Cost Engineering</a> - AI-powered tool that optimizes application code across major cloud platforms by automatically identifying and fixing inefficiencies in code rather than just resizing infrastructure.</p><p><a href="https://www.thoughtworks.com/radar">Technology Radar</a> - Thoughtworks&#8217; biannual guide tracking emerging tools, techniques, and frameworks is AI-dominated.</p><p><a href="https://medium.com/demohub-tutorials/17-top-mcp-registries-and-directories-explore-the-best-sources-for-server-discovery-integration-0f748c72c34a">17 Top MCP Registries and Directories</a> - Comprehensive guide to the best MCP registries for server discovery.</p><p><a href="https://cto.new/pricing">cto.new</a> - Free AI code agent offering access to frontier models from Anthropic and OpenAI without requiring credit cards or API keys.</p><p><a href="https://skillsmp.com/">Claude Skills Marketplace</a> - Directory for browsing, searching and installing Claude skills from GitHub, including official Anthropic skills, code skills, and AI automation workflows.</p><p><a href="https://github.com/anthropics/skills">GitHub - anthropics/skills</a> - Anthropics&#8217; repository of reusable Claude skills that enable specialized tasks across creative, technical, and enterprise workflows with clear documentation.</p><p><a href="https://github.com/langwatch/better-agents">GitHub - langwatch/better-agents</a> - CLI tool and standards that enhance coding assistants to build production-ready agents with industry best practices.</p><p><a href="https://github.com/ruvnet/claude-flow">GitHub - ruvnet/claude-flow</a> - Enterprise-grade AI orchestration platform using swarm intelligence with persistent memory and MCP tools for enhanced development workflows.</p><p><a href="https://kagenti.github.io/.github/">Kagenti</a> - Kubernetes-based control plane for AI agents that works with any framework, providing modular components to streamline production deployments.</p><p><a href="https://github.com/kubernetes-sigs/agent-sandbox">GitHub - kubernetes-sigs/agent-sandbox</a> - Kubernetes CRD for managing isolated, stateful singleton workloads with stable identity, designed for AI agent runtimes and similar use cases.</p><p>&#9889;<a href="https://codewiki.google/">Code Wiki</a> - Google&#8217;s new Gemini-generated documentation.</p><h2><strong>&#128218; Learning Picks</strong></h2><p>&#127891; <a href="https://www.kaggle.com/learn-guide/5-day-agents">5-Day AI Agents Intensive Course</a> - A 5-day Google course on Kaggle to build, evaluate, and deploy real-world AI agents.</p><p>&#128077; <a href="https://www.linkedin.com/feed/update/urn:li:activity:7386296644419510274/">Google, OpenAI, Anthropic Offer Free AI Guides</a> -  Here are ten free AI guides worth bookmarking.</p><h2><strong>&#127917; AI Humor</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UFVD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d65d6b0-0c7d-48b5-903f-cce089c4def5_957x1213.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UFVD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d65d6b0-0c7d-48b5-903f-cce089c4def5_957x1213.jpeg 424w, https://substackcdn.com/image/fetch/$s_!UFVD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d65d6b0-0c7d-48b5-903f-cce089c4def5_957x1213.jpeg 848w, https://substackcdn.com/image/fetch/$s_!UFVD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d65d6b0-0c7d-48b5-903f-cce089c4def5_957x1213.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!UFVD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d65d6b0-0c7d-48b5-903f-cce089c4def5_957x1213.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UFVD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d65d6b0-0c7d-48b5-903f-cce089c4def5_957x1213.jpeg" width="957" height="1213" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1d65d6b0-0c7d-48b5-903f-cce089c4def5_957x1213.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1213,&quot;width&quot;:957,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:173730,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/180967691?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60d02162-e4b9-4d23-82f1-049502371437_1080x1299.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!UFVD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d65d6b0-0c7d-48b5-903f-cce089c4def5_957x1213.jpeg 424w, https://substackcdn.com/image/fetch/$s_!UFVD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d65d6b0-0c7d-48b5-903f-cce089c4def5_957x1213.jpeg 848w, https://substackcdn.com/image/fetch/$s_!UFVD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d65d6b0-0c7d-48b5-903f-cce089c4def5_957x1213.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!UFVD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d65d6b0-0c7d-48b5-903f-cce089c4def5_957x1213.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Source: https://www.reddit.com/r/OpenAI/comments/1pere3t/lol/</figcaption></figure></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://generativeprogrammer.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share The Generative Programmer&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://generativeprogrammer.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share The Generative Programmer</span></a></p><h2>&#128075; See You Next Time</h2><p>That wraps this issue. If it helped you, pass it along or subscribe. &#128591; </p>]]></content:encoded></item><item><title><![CDATA[7 Steps to Make Your OSS Project AI-Ready]]></title><description><![CDATA[A maintainer&#8217;s guide to enabling seamless onboarding, contribution, and collaboration for humans and AI.]]></description><link>https://generativeprogrammer.com/p/7-steps-to-make-your-oss-project</link><guid isPermaLink="false">https://generativeprogrammer.com/p/7-steps-to-make-your-oss-project</guid><dc:creator><![CDATA[Bilgin Ibryam]]></dc:creator><pubDate>Sun, 09 Nov 2025 23:24:42 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/9b460559-9058-4188-925f-c1e2b75dd66a_773x712.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Generative AI is changing how developers discover and consume open source software. It&#8217;s no longer enough to have a good readme and contributor guide for humans, you also need to make your project welcoming for AI. Large Language Models (LLMs) are now the new distributors and consumers of software. They can read your code, parse your docs, write examples, and even explain your project to developers worldwide. As a maintainer, your project&#8217;s visibility and adoption will depend on how well it&#8217;s represented in these AI systems.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mM5b!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1545fe7c-60f4-47ac-910a-75d29e50aa65_771x959.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mM5b!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1545fe7c-60f4-47ac-910a-75d29e50aa65_771x959.png 424w, https://substackcdn.com/image/fetch/$s_!mM5b!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1545fe7c-60f4-47ac-910a-75d29e50aa65_771x959.png 848w, https://substackcdn.com/image/fetch/$s_!mM5b!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1545fe7c-60f4-47ac-910a-75d29e50aa65_771x959.png 1272w, https://substackcdn.com/image/fetch/$s_!mM5b!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1545fe7c-60f4-47ac-910a-75d29e50aa65_771x959.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mM5b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1545fe7c-60f4-47ac-910a-75d29e50aa65_771x959.png" width="771" height="959" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1545fe7c-60f4-47ac-910a-75d29e50aa65_771x959.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:959,&quot;width&quot;:771,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:148148,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/178306550?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1545fe7c-60f4-47ac-910a-75d29e50aa65_771x959.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!mM5b!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1545fe7c-60f4-47ac-910a-75d29e50aa65_771x959.png 424w, https://substackcdn.com/image/fetch/$s_!mM5b!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1545fe7c-60f4-47ac-910a-75d29e50aa65_771x959.png 848w, https://substackcdn.com/image/fetch/$s_!mM5b!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1545fe7c-60f4-47ac-910a-75d29e50aa65_771x959.png 1272w, https://substackcdn.com/image/fetch/$s_!mM5b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1545fe7c-60f4-47ac-910a-75d29e50aa65_771x959.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em><strong>OSS Maintainers checklist</strong></em></figcaption></figure></div><p>In this post, I&#8217;ll share a practical guide on how to make your open source project easier for LLMs to understand, and for humans to use through AI tools.</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://generativeprogrammer.com/p/7-steps-to-make-your-oss-project?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption"><em>Thanks for reading The Generative Programmer! This post is public so feel free to share it.</em></p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://generativeprogrammer.com/p/7-steps-to-make-your-oss-project?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://generativeprogrammer.com/p/7-steps-to-make-your-oss-project?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div><h2>1. Make Your Project Discoverable by AI</h2><p>When developers face a problem, or research a topic, they don&#8217;t go any longer to Stack Overflow or Google first &#8212; they ask an LLM through ChatGPT, Claude, or a similar service. Questions such as <em>&#8220;How to tune Kafka for low-latency?&#8221; or &#8220;What&#8217;s the best open-source MCP implementation for Kubernetes?&#8221;</em> are now answered directly by LLMs.</p><p>When a developer is in the zone within their IDE and faces a common issue, like a <em>Python dependency error: &#8220;cannot import module x&#8221;</em>, they ask their AI assistant inside the IDE how to fix it.</p><p>Modern AI systems combine their training data with live web search, scanning documentation, repos, and blogs to generate the best up-to-date responses. But most project sites are designed for people, not machines, they are full of menus, ads, and nested pages. Critical details like installation flags, version notes, or API parameters are often buried deep and hard for AI crawlers to find. As a result, your project may be misunderstood or overlooked even if it&#8217;s well-known.</p><p><strong>Using llms.txt to Help AI Find the Right Docs</strong></p><p><a href="https://llmstxt.org/">llms.txt</a> is a simple Markdown file placed at the root of your project&#8217;s site that gives AI models a clean, structured map of your most relevant documentation. Think of it as a robots.txt for language models, but instead of blocking crawlers, it guides them to the right content. It lists a short summary, key links (docs, APIs, SDKs, examples), and optional secondary sections.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dR3S!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd828c7b-35ad-40ab-9594-780b9195815e_2048x1712.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dR3S!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd828c7b-35ad-40ab-9594-780b9195815e_2048x1712.png 424w, https://substackcdn.com/image/fetch/$s_!dR3S!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd828c7b-35ad-40ab-9594-780b9195815e_2048x1712.png 848w, https://substackcdn.com/image/fetch/$s_!dR3S!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd828c7b-35ad-40ab-9594-780b9195815e_2048x1712.png 1272w, https://substackcdn.com/image/fetch/$s_!dR3S!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd828c7b-35ad-40ab-9594-780b9195815e_2048x1712.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dR3S!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd828c7b-35ad-40ab-9594-780b9195815e_2048x1712.png" width="1456" height="1217" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dd828c7b-35ad-40ab-9594-780b9195815e_2048x1712.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1217,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:544216,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/178306550?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd828c7b-35ad-40ab-9594-780b9195815e_2048x1712.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!dR3S!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd828c7b-35ad-40ab-9594-780b9195815e_2048x1712.png 424w, https://substackcdn.com/image/fetch/$s_!dR3S!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd828c7b-35ad-40ab-9594-780b9195815e_2048x1712.png 848w, https://substackcdn.com/image/fetch/$s_!dR3S!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd828c7b-35ad-40ab-9594-780b9195815e_2048x1712.png 1272w, https://substackcdn.com/image/fetch/$s_!dR3S!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd828c7b-35ad-40ab-9594-780b9195815e_2048x1712.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>Extract from https://docs.claude.com/llms.txt</em></figcaption></figure></div><p>Add /llms.txt to the root of the project website, keep it updated alongside your docs, and every AI-powered search or assistant will instantly understand what your project is and where to look next.<strong> </strong>The file makes your project easier to find, quote, and recommend in AI-driven tools like ChatGPT, Copilot, and Sourcegraph. There are hundreds of websites already using with it: <a href="https://supabase.com/llms.txt">Supabase</a>, <a href="https://duckdb.org/llms.txt">DuckDB</a>, <a href="https://docs.turso.tech/llms.txt">Turso</a>, <a href="https://huggingface-projects-docs-llms-txt.hf.space/hub/llms.txt">Hugging Face</a>, <a href="https://langfuse.com/llms.txt">Langfuse</a>, and many more in <a href="https://llmstxt.site/">various</a> <a href="https://directory.llmstxt.cloud/">directories</a>.</p><p>llms.txt is an easy addition that can give visibility to your project in a world where LLMs are becoming the primary way of discovering and consuming information. As shown by the tracking site<a href="https://llmstxt.ryanhoward.dev/"> llmstxt.ryanhoward.dev</a>, it&#8217;s not yet widely adopted, but the fact that Anthropic <a href="https://docs.claude.com/llms-full.txt">themselves</a> use llms.txt and recommend it as part of agentic documentation is a strong signal that it&#8217;s the right direction to follow.</p><p>There are plenty of tools and plugins that can help you create and validate these files easily, such as<a href="https://github.com/answerdotai/llms_txt"> llms_txt2ctx</a>,<a href="https://github.com/answerdotai/vitepress-plugin-llms"> vitepress-plugin-llms</a>, and<a href="https://github.com/answerdotai/docusaurus-plugin-llms"> docusaurus-plugin-llms</a>. To learn, check out<a href="https://llmstxt.org/"> llmstxt.org</a>.</p><h2>2. Onboard AI Agents to Your Project</h2><p>Open source projects today communicate their community policies and expectations through a variety of simple text files, for example, README.md, INSTALL.md, CONTRIBUTING.md, CODE_OF_CONDUCT.md, DEVELOPMENT.md, and ISSUE_TEMPLATE.md. These files explain how to set up the project, contribute, follow coding guidelines, or report issues. This structure has worked well for years when humans were the primary readers.</p><p>In the meantime, the number of developers using <strong>AI&#8209;enabled IDEs and CLI tools</strong> is growing rapidly. Millions of developers rely on <strong><a href="https://cursor.com/">Cursor</a></strong> (now surpassing a million users), <strong><a href="https://www.claude.com/product/claude-code">Claude Code</a> CLI</strong>, and <strong><a href="https://openai.com/codex/">OpenAI Codex</a></strong><a href="https://openai.com/codex/"> </a>daily. Yet these users are underserved, their IDEs can&#8217;t easily interpret the project&#8217;s policies, build steps, contribution rules and community best practices. As a result, contributing through AI&#8209;assisted tools often leads to manual onboarding, lower&#8209;quality pull requests, and contributor-maintainer tension.</p><p><strong>Teaching Coding Assistants Your Project&#8217;s Way of Working</strong></p><p>This is where <strong>agent context files</strong> come in. The idea started with different IDEs introducing more advanced ways of sharing project context &#8212; for example, <a href="https://cursor.com/docs/context/rules">.cursor/rules</a> files in Cursor, which began as simple rules and later evolved into structured folder hierarchies, or <a href="https://www.anthropic.com/engineering/claude-code-best-practices">CLAUDE.md</a>, used by Claude CLI to encode build and contribution instructions. These formats help AI-enabled tools understand how to build, test, and navigate a codebase.</p><p>As the space grew fragmented with various formats,<a href="https://github.com/openai/agents.md"> AGENTS.md</a> led by OpenAI began to emerge as the <strong>most widely adopted standard</strong> for defining project context. Today, it&#8217;s becoming the common denominator across AI-assisted environments, with over<a href="https://github.com/search?q=AGENTS.md+in%3Afile%2Cpr%2Cissue&amp;type=pullrequests&amp;s=comments&amp;o=desc"> 30,000 pull requests</a> on GitHub contributing AGENTS.md files in open-source projects.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!aQZW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07af6001-3902-4571-8cf5-2dfcf45a50a6_2048x1302.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!aQZW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07af6001-3902-4571-8cf5-2dfcf45a50a6_2048x1302.png 424w, https://substackcdn.com/image/fetch/$s_!aQZW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07af6001-3902-4571-8cf5-2dfcf45a50a6_2048x1302.png 848w, https://substackcdn.com/image/fetch/$s_!aQZW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07af6001-3902-4571-8cf5-2dfcf45a50a6_2048x1302.png 1272w, https://substackcdn.com/image/fetch/$s_!aQZW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07af6001-3902-4571-8cf5-2dfcf45a50a6_2048x1302.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!aQZW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07af6001-3902-4571-8cf5-2dfcf45a50a6_2048x1302.png" width="1456" height="926" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/07af6001-3902-4571-8cf5-2dfcf45a50a6_2048x1302.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:926,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:400338,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/178306550?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07af6001-3902-4571-8cf5-2dfcf45a50a6_2048x1302.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!aQZW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07af6001-3902-4571-8cf5-2dfcf45a50a6_2048x1302.png 424w, https://substackcdn.com/image/fetch/$s_!aQZW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07af6001-3902-4571-8cf5-2dfcf45a50a6_2048x1302.png 848w, https://substackcdn.com/image/fetch/$s_!aQZW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07af6001-3902-4571-8cf5-2dfcf45a50a6_2048x1302.png 1272w, https://substackcdn.com/image/fetch/$s_!aQZW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07af6001-3902-4571-8cf5-2dfcf45a50a6_2048x1302.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>AGENTS.md is an open format for guiding coding agents</em></figcaption></figure></div><p>AGENTS.md files act as a README for AI agents. They summarize how to build, test, and contribute to your project, covering environment setup, dependency installation, code style, test execution, and commit message rules &#8212; but in a way that AI tools can parse and follow. Supported by major IDEs and CLI tools such as Cursor, VS Code, GitHub Copilot, Aider, RooCode, Gemini CLI, Jules, Factory, and Devin, these files help AI agents understand your project&#8217;s structure and workflow.</p><p>With these files, AI assistants can follow project conventions, and produce contributions that align with human developers&#8217; expectations, reducing friction in collaborative development.</p><p>These files are often paired with AI-assisted development guides that show contributors how to configure their IDEs and CLIs for the best experience &#8212; such as<a href="https://angular.dev/ai/develop-with-ai"> Angular&#8217;s AI development guide</a> and<a href="https://docs.convex.dev/ai/using-cursor"> Convex&#8217;s guide for Cursor</a>.</p><p>In short, AGENTS.md and accompanying IDE setup guides provide the missing layer of context between your code and the growing ecosystem of AI-powered development tools. It&#8217;s a lightweight addition that helps AI understand your project&#8217;s workflow &#8212; and makes your repository ready for the era of AI-assisted coding.</p><p>In short, AGENTS.md and accompanying IDE setup guides provide the missing layer of context between your code and the growing ecosystem of AI-powered development tools. It&#8217;s not just about onboarding developers anymore &#8212; it&#8217;s also about onboarding AI agents. This file acts as an <strong><a href="https://www.fuzzycomputer.com/posts/onboarding">onboarding guide for agents</a></strong>, helping them understand your project&#8217;s structure, style, and expectations, so they can contribute effectively and make every developer more productive from day one.</p><h2>3. Define Your AI Contribution Policy</h2><p>AI coding tools are now part of everyday development, but most open&#8209;source projects still lack clear policies on how and when they can be used. Without guidance, contributors interpret &#8220;acceptable AI use&#8221; differently, leading to inconsistent pull requests, hidden AI&#8209;generated code, and extra work for maintainers who must assess both quality and authenticity.</p><p><strong>Setting Ground Rules for AI&#8209;Assisted Contributions</strong></p><p>Projects like<a href="https://github.com/mitchellh/ghostty"> Ghostty</a>,<a href="https://gramps.discourse.group/t/update-to-our-code-contribution-policy/8225"> Gramps</a>,<a href="https://github.com/servo/servo/discussions/36379"> Servo</a>, and<a href="https://discuss.scientific-python.org/t/a-policy-on-generative-ai-assisted-contributions/1702"> Scientific Python</a> illustrate different approaches, from allowing AI with disclosure, to banning it outright. These examples show that there&#8217;s no universal answer, but various efforts to help avoid tension and maintain trust. A great reference comes from the <em><a href="https://openinfra.org/legal/ai-policy">Open Infrastructure Foundation&#8217;s</a></em><a href="https://openinfra.org/legal/ai-policy"> policy</a> on AI&#8209;generated content:</p><blockquote><h5><em>&#8220;As a contributor, you are responsible for the code you submit, whether you use AI tools or write it yourself. Some AI tools offer settings, features, or modes that can help, but these are no substitute for your own review of code quality, correctness, style, security, and licensing.&#8221;</em></h5></blockquote><p>It&#8217;s worth emphasizing that every pull request is still reviewed and maintained by humans, not machines. Contributors must ensure that AI&#8209;assisted code meets the same quality, readability, and consistency expectations as any manually written code.</p><p>There&#8217;s also a broader movement around structured, transparent AI collaboration, such as the<a href="https://vibe-coding-manifesto.com/"> Vibe Coding Manifesto</a>. It advocates for integrating AI into open source responsibly, not rejecting it, but managing it through clear PR rules, contributor transparency, and supporting documents like PROMPTING.md. The manifesto also outlines practical steps such as creating small, focused PRs, running self&#8209;reviews and tests before submission, adding clear AI attributions, and limiting concurrent PRs to avoid &#8220;PR spam.&#8221; These concrete recommendations help maintain quality while keeping the review workload manageable.</p><p>Explicit AI contribution guidelines help maintain a healthy balance between speed and quality. Whether your project allows, restricts, or just tracks AI use, defining the rules early prevents confusion and keeps your contributor community aligned.</p><h2>4. Scale Code Reviews with AI</h2><p>Once your project becomes more discoverable and contributor&#8209;friendly with clear guidelines, agents onboarded, you&#8217;ll start seeing more AI-assisted activity and more pull requests. Reviewing those PRs becomes one of the primary jobs of maintainers. Some PRs might come from bots or low&#8209;quality AI output and can be easily rejected, but many will vary significantly in quality and completeness. The only scalable way to keep up with this volume of <strong>AI&#8209;assisted contributions</strong> and maintain quality is to <strong>use AI for reviewing, too</strong>!</p><h3><strong>Bringing AI into the Review Process</strong></h3><p>AI can perform first&#8209;pass reviews, freeing human maintainers to focus on architecture, design, and logic rather than repetitive or stylistic feedback. Such tools act as automated reviewers that integrate directly with GitHub. They can:</p><ul><li><p><strong>Issue Triage &amp; Labeling</strong> &#8211; Categorize issues automatically</p></li><li><p><strong>Documentation Sync</strong> &#8211; Ensure code and docs remain aligned</p></li><li><p><strong>External Contributor Reviews</strong> &#8211; Apply stricter checks for new contributors</p></li><li><p><strong>Custom Review Checklists</strong> &#8211; Enforce team standards and consistency</p></li><li><p><strong>Path&#8209;Specific Reviews</strong> &#8211; Trigger deeper analysis on critical file changes</p></li><li><p><strong>Scheduled Maintenance</strong> &#8211; Automate repository health checks</p></li><li><p><strong>Security&#8209;Focused Reviews</strong> &#8211; Detect vulnerabilities with OWASP&#8209;aligned checks</p></li></ul><p>Among the most popular AI tools for code reviews are:</p><ul><li><p><strong><a href="https://coderabbit.ai/">CodeRabbit</a></strong> &#8211; the most widely adopted open&#8209;source&#8209;friendly AI code review tool.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VPJo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5a78a72-7a7a-4411-bd6b-9f03d7733b76_3840x1694.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VPJo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5a78a72-7a7a-4411-bd6b-9f03d7733b76_3840x1694.webp 424w, https://substackcdn.com/image/fetch/$s_!VPJo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5a78a72-7a7a-4411-bd6b-9f03d7733b76_3840x1694.webp 848w, https://substackcdn.com/image/fetch/$s_!VPJo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5a78a72-7a7a-4411-bd6b-9f03d7733b76_3840x1694.webp 1272w, https://substackcdn.com/image/fetch/$s_!VPJo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5a78a72-7a7a-4411-bd6b-9f03d7733b76_3840x1694.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VPJo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5a78a72-7a7a-4411-bd6b-9f03d7733b76_3840x1694.webp" width="696" height="306.8901098901099" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b5a78a72-7a7a-4411-bd6b-9f03d7733b76_3840x1694.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:642,&quot;width&quot;:1456,&quot;resizeWidth&quot;:696,&quot;bytes&quot;:70644,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/178306550?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5a78a72-7a7a-4411-bd6b-9f03d7733b76_3840x1694.webp&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!VPJo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5a78a72-7a7a-4411-bd6b-9f03d7733b76_3840x1694.webp 424w, https://substackcdn.com/image/fetch/$s_!VPJo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5a78a72-7a7a-4411-bd6b-9f03d7733b76_3840x1694.webp 848w, https://substackcdn.com/image/fetch/$s_!VPJo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5a78a72-7a7a-4411-bd6b-9f03d7733b76_3840x1694.webp 1272w, https://substackcdn.com/image/fetch/$s_!VPJo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5a78a72-7a7a-4411-bd6b-9f03d7733b76_3840x1694.webp 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>CodeRabbit code review options</em></figcaption></figure></div><p>CodeRabbit integrates directly with GitHub and offers <a href="https://www.coderabbit.ai/pricing">free plans for open&#8209;source projects.</a> It supports both IDE&#8209;based inline reviews and PR&#8209;based multi&#8209;file reviews, giving teams flexibility for internal and external contributions. Its context&#8209;aware reviews understand file dependencies and coding patterns, and it can review uncommitted changes directly in the IDE before a PR is even created, reducing friction and catching issues early.</p></li><li><p><strong><a href="https://github.com/anthropics/claude-code-action">Claude Code Action</a></strong> &#8211; integrates Anthropic&#8217;s Claude for PR review and comment generation, providing natural&#8209;language insights and feedback.</p></li><li><p><strong><a href="https://developers.openai.com/codex/cloud/code-review/">OpenAI Codex Cloud Review</a></strong> &#8211; runs as a GitHub Action to automate AI&#8209;based feedback on pull requests and highlight potential issues.</p></li></ul><p>As AI assistants generate more code, the number of incoming PRs will rise. Having AI review these PRs first ensures consistent quality without overloading maintainers. The workflow becomes: AI writes &#8594; AI reviews &#8594; humans approve. That loop keeps velocity high while maintaining the standards as expected.</p><h2>5. Make Your APIs Agent-Ready</h2><p>If your project already exposes an API, CLI, or has a client SDK, it&#8217;s time to think about how AI agents can interact with it directly. Developers are no longer the only consumers of APIs, <strong>AI assistants are becoming first&#8209;class users, too</strong>. Yet most APIs today are not agent&#8209;ready: assistants can read about them but not interact in a structured, safe way.</p><p><strong>Opening Your APIs to AI Agents with MCP</strong></p><p>The<a href="https://modelcontextprotocol.io/docs/getting-started/intro"> </a><strong><a href="https://modelcontextprotocol.io/docs/getting-started/intro">Model Context Protocol (MCP)</a></strong> is an emerging open standard that lets AI agents connect to tools, APIs, and data sources. Exposing your API or CLI via MCP makes your project agent&#8209;ready, enabling AI systems to query, test, and trigger actions contextually instead of copy&#8209;pasting examples. It improves discoverability, automation, and supports AI&#8209;native workflows where agents use your project the same way as developers do. It also connects your project to the growing MCP ecosystem of compatible tools, browsers, and registries.</p><p>Projects like<a href="https://github.com/tursodatabase/turso"> </a><a href="https://github.com/kanapuli/mcp-kafka">Apache Kafka</a>, <a href="https://github.com/tursodatabase/turso">Turso</a>,<a href="https://github.com/duckdb/duckdb"> DuckDB</a>, and<a href="https://github.com/redis/mcp-redis"> Redis</a> are early examples of being agent&#8209;ready. Some already expose MCP endpoints that let assistants query data or perform operations directly. Cloud services such as <a href="https://github.com/confluentinc/mcp-confluent">Confluent Cloud</a>,<a href="https://supabase.com/blog/remote-mcp-server"> Supabase</a> have gone further, hosting full MCP servers that make their APIs seamlessly accessible to AI tools.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!tv8z!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ab29ece-94fe-4145-93cc-2d2f741cff31_1244x1004.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tv8z!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ab29ece-94fe-4145-93cc-2d2f741cff31_1244x1004.png 424w, https://substackcdn.com/image/fetch/$s_!tv8z!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ab29ece-94fe-4145-93cc-2d2f741cff31_1244x1004.png 848w, https://substackcdn.com/image/fetch/$s_!tv8z!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ab29ece-94fe-4145-93cc-2d2f741cff31_1244x1004.png 1272w, https://substackcdn.com/image/fetch/$s_!tv8z!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ab29ece-94fe-4145-93cc-2d2f741cff31_1244x1004.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!tv8z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ab29ece-94fe-4145-93cc-2d2f741cff31_1244x1004.png" width="1244" height="1004" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1ab29ece-94fe-4145-93cc-2d2f741cff31_1244x1004.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1004,&quot;width&quot;:1244,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:168546,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/178306550?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ab29ece-94fe-4145-93cc-2d2f741cff31_1244x1004.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!tv8z!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ab29ece-94fe-4145-93cc-2d2f741cff31_1244x1004.png 424w, https://substackcdn.com/image/fetch/$s_!tv8z!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ab29ece-94fe-4145-93cc-2d2f741cff31_1244x1004.png 848w, https://substackcdn.com/image/fetch/$s_!tv8z!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ab29ece-94fe-4145-93cc-2d2f741cff31_1244x1004.png 1272w, https://substackcdn.com/image/fetch/$s_!tv8z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ab29ece-94fe-4145-93cc-2d2f741cff31_1244x1004.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Redis MCP Server https://github.com/redis/mcp-redis</figcaption></figure></div><p>To get started, tools like<a href="https://gofastmcp.com/integrations/openapi"> FastMCP</a> can automatically generate MCP servers from any OpenAPI specification,  instantly turning your existing API into one that AI models can use through MCP. Over time, you can evolve toward a purpose&#8209;built MCP server. Platforms such as<a href="https://www.speakeasy.com"> Speakeasy</a> also provide MCP server generators with free plans for open&#8209;source projects, making it easy to experiment.</p><p>In short, if your project has an API, offering MCP&#8209;based access is becoming table stakes. Adding MCP support transforms your project from something AI agents can only read about into something they can use directly, unlocking the next phase of open&#8209;source and AI integration.</p><h2>6. Turn Docs into Conversational Interfaces</h2><p>Developers don&#8217;t have the time to dig through endless documentation pages or wait for answers in Discord. They expect instant help, the same experience they are used to from AI tools. Yet, most open&#8209;source documentation is static and unresponsive to real&#8209;time questions, and even outdated as the code changes faster.</p><p><strong>How Conversational Docs Improve Developer Onboarding</strong></p><p>Adding an <strong>AI&#8209;powered chat interface</strong> to your docs lets users ask questions directly, based on your project&#8217;s documentation, issues, and source code. Tools like<a href="https://www.kapa.ai"> Kapa.ai</a>, <a href="https://docs.inkeep.com/overview">Inkeep</a>, <a href="https://crawlchat.app/">CrawlChat</a> can index your site, GitHub repo, or forums and deliver answers instantly inside your website, Slack, or Discord. Such services improve onboarding, reduce repeated support requests, and help users learn faster through natural conversation.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!GfGi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa746e6b1-70b5-4b59-b3c6-2f178b96d0fe_1840x1068.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GfGi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa746e6b1-70b5-4b59-b3c6-2f178b96d0fe_1840x1068.png 424w, https://substackcdn.com/image/fetch/$s_!GfGi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa746e6b1-70b5-4b59-b3c6-2f178b96d0fe_1840x1068.png 848w, https://substackcdn.com/image/fetch/$s_!GfGi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa746e6b1-70b5-4b59-b3c6-2f178b96d0fe_1840x1068.png 1272w, https://substackcdn.com/image/fetch/$s_!GfGi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa746e6b1-70b5-4b59-b3c6-2f178b96d0fe_1840x1068.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GfGi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa746e6b1-70b5-4b59-b3c6-2f178b96d0fe_1840x1068.png" width="1456" height="845" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a746e6b1-70b5-4b59-b3c6-2f178b96d0fe_1840x1068.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:845,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:106175,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/178306550?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa746e6b1-70b5-4b59-b3c6-2f178b96d0fe_1840x1068.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!GfGi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa746e6b1-70b5-4b59-b3c6-2f178b96d0fe_1840x1068.png 424w, https://substackcdn.com/image/fetch/$s_!GfGi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa746e6b1-70b5-4b59-b3c6-2f178b96d0fe_1840x1068.png 848w, https://substackcdn.com/image/fetch/$s_!GfGi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa746e6b1-70b5-4b59-b3c6-2f178b96d0fe_1840x1068.png 1272w, https://substackcdn.com/image/fetch/$s_!GfGi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa746e6b1-70b5-4b59-b3c6-2f178b96d0fe_1840x1068.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">CrewAI Chat with the Docs (custom GPT)</figcaption></figure></div><p>If these tools are not affordable for your project, you can also build a simple in&#8209;house alternative like<a href="https://chatg.pt/DWjSBZn"> CrewAI&#8217;s &#8220;Chat with the Docs&#8221;</a>, or index your documentation with<a href="https://context7.com/"> Context7</a> and expose it as an MCP server, allowing users to query your docs directly from their IDE.</p><p>This is an evolving space, but it&#8217;s likely that in the future, <strong>all open&#8209;source projects will have built&#8209;in AI chat interfaces</strong>, offered for free, either sponsored by their open&#8209;source foundations or integrated directly into platforms like GitHub. For now, you have to find ways to cover this cost.</p><h2>7. Automate Community Tasks with AI</h2><p>As open-source communities grow and AI-assisted development accelerates, maintainers face a constant flow of new issues, PRs, and support questions. Repetitive tasks, triaging, labeling, answering common questions, or closing stale tickets, can consume hours that could be spent improving the project itself.</p><p><strong>Let AI Handle the Repetitive Work</strong></p><p>AI maintainers like<a href="https://app.dosu.dev/9affd04a-e6a9-452c-b927-c639e979994c/documents/cd620933-5c00-4bee-a9d5-9c0698310eba"> Dosu</a> automate many of these repetitive tasks. They can triage issues, answer contributor questions, close inactive discussions, remind authors about missing documentation, and enforce contribution guidelines &#8212; all while keeping conversations active and polite. Dosu already works with major projects like LangChain, Prisma, Strapi, Apache Airflow, and several CNCF initiatives, and <a href="https://dosu.dev/pricing">is free for open-source</a> use (with CNCF and ASF partnerships in place).</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!oyQy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3aa275e6-ac5e-4ad7-bdaa-17454c8fcfbe_3038x1922.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oyQy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3aa275e6-ac5e-4ad7-bdaa-17454c8fcfbe_3038x1922.png 424w, https://substackcdn.com/image/fetch/$s_!oyQy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3aa275e6-ac5e-4ad7-bdaa-17454c8fcfbe_3038x1922.png 848w, https://substackcdn.com/image/fetch/$s_!oyQy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3aa275e6-ac5e-4ad7-bdaa-17454c8fcfbe_3038x1922.png 1272w, https://substackcdn.com/image/fetch/$s_!oyQy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3aa275e6-ac5e-4ad7-bdaa-17454c8fcfbe_3038x1922.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!oyQy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3aa275e6-ac5e-4ad7-bdaa-17454c8fcfbe_3038x1922.png" width="1456" height="921" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3aa275e6-ac5e-4ad7-bdaa-17454c8fcfbe_3038x1922.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:921,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:247411,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/178306550?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3aa275e6-ac5e-4ad7-bdaa-17454c8fcfbe_3038x1922.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!oyQy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3aa275e6-ac5e-4ad7-bdaa-17454c8fcfbe_3038x1922.png 424w, https://substackcdn.com/image/fetch/$s_!oyQy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3aa275e6-ac5e-4ad7-bdaa-17454c8fcfbe_3038x1922.png 848w, https://substackcdn.com/image/fetch/$s_!oyQy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3aa275e6-ac5e-4ad7-bdaa-17454c8fcfbe_3038x1922.png 1272w, https://substackcdn.com/image/fetch/$s_!oyQy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3aa275e6-ac5e-4ad7-bdaa-17454c8fcfbe_3038x1922.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Dosu Auto-Labeling issues</figcaption></figure></div><p>In short, AI maintainers act as 24x7 project maintainers, handling the administrative overhead so human maintainers can focus on technical leadership, community growth, and long-term vision.</p><h2>AI-Ready Project Checklist for Maintainers</h2><p>Every open-source project has its own culture, workflows, and pace of change. Yet as AI rapidly reshapes how developers build and collaborate, standing still is the worst option. The right move is to adapt early and use AI as an advantage, not a disruption. This checklist helps maintainers identify where to start.</p><h3>For Users</h3><ol><li><p><strong>Make your project discoverable:</strong> Create <code>llms.txt</code> listing key docs, APIs, and examples so LLMs can index your project. This is a top-of-funnel lever, but with still-unproven impact; treat it as a follow-on step after the other core items.</p></li><li><p><strong>Turn docs into conversations:</strong> Deploy a tool like Kapa.ai trained on your documentation and community resources to answer user questions instantly. This is no longer a luxury: users now expect conversational help, and it significantly improves new user experience.</p></li><li><p><strong>Open your project APIs to agent use:</strong> If you have a CLI, SDK, or API, create an MCP server so AI agents can call and use it directly. Comprehensive MCP support makes your project easier to integrate with AI tools and stand out among alternatives.</p></li></ol><h3>For Contributors</h3><ol start="4"><li><p><strong>Onboard AI-assisted tools to your project:</strong> Add <code>AGENTS.md</code> with build, test, and style instructions so AI tools can quickly figure out how to work with your code. Thousands of projects already use it, making it one of the easiest and highest-impact improvements.</p></li><li><p><strong>Define a clear AI contribution policy:</strong> Update <code>CONTRIBUTING.md</code> and PR templates with a reminder that contributors are responsible for submission quality and correctness, regardless of which tools they use. This reinforces human accountability while promoting transparency as AI-assisted contributions grow.</p></li></ol><h3>For Maintainers</h3><ol start="6"><li><p><strong>Scale code reviews with AI:</strong> Connect CodeRabbit or a similar asynchronous AI bot to automatically review pull requests and provide feedback for free on open-source projects. A small setup effort here pays back quickly by reducing reviewer fatigue and catching early issues.</p></li><li><p><strong>Automate repetitive community tasks:</strong> Install Dosu or a similar GitHub bot to triage issues, answer questions, and keep discussions organized. Automation beyond code reviews helps sustain healthy collaboration and saves maintainers valuable time.</p></li></ol><p>Together, these practices ensure your project is set up to benefit from AI at every level: users can discover it, get answers instantly, and use it with their AI tools; contributors have clear onboarding and AI usage guidelines; and maintainers gain automation for reviews and community operations. The space is evolving fast, keep an eye on relevant tools and practices, subscribe, and share how you&#8217;re using AI in open source.</p>]]></content:encoded></item><item><title><![CDATA[🤖 Generative Programmer | Issue #16]]></title><description><![CDATA[Autumn 2025: Patterns, Frameworks, and Productivity in AI Development]]></description><link>https://generativeprogrammer.com/p/generative-programmer-issue-16</link><guid isPermaLink="false">https://generativeprogrammer.com/p/generative-programmer-issue-16</guid><dc:creator><![CDATA[Bilgin Ibryam]]></dc:creator><pubDate>Sun, 02 Nov 2025 09:41:25 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!D5jK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb913efc5-1e30-4318-8b53-31588a8891d3_1920x1080.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>&#128227; Welcome back! Here&#8217;s everything that happened in the last two months in agentic systems and AI-assisted coding, all in one post.  Support by sharing: <a href="https://twitter.com/intent/tweet?text=Checkout%20this%20newsletter%20with%20the%20latest%20AI%20news%20for%20developers%3A%20https%3A%2F%2Fgenerativeprogrammer.com%2F">X</a> &#183; <a href="https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fgenerativeprogrammer.com%2F&amp;summary=Checkout%20this%20newsletter%20with%20the%20latest%20AI%20news%20for%20developers">LinkedIn</a> &#183; <a href="https://bsky.app/intent/compose?text=Checkout%20this%20newsletter%20with%20the%20latest%20AI%20news%20for%20developers%3A%20https%3A%2F%2Fgenerativeprogrammer.com%2F">BlueSky</a> &#183; <a href="mailto:?subject=Check%20out%20this%20newsletter&amp;body=Checkout%20this%20newsletter%20with%20the%20latest%20AI%20news%20for%20developers%3A%20https%3A%2F%2Fgenerativeprogrammer.com%2F">Email</a> and let&#8217;s dive in.</p><h2><strong>&#128293; Top Picks from This Issue</strong></h2><p>&#129504; <a href="https://www.anthropic.com/engineering/writing-tools-for-agents">Writing Effective Tools for AI Agents</a> &#8211; Anthropic  &#128293;<br>&#129513; <a href="https://www.anthropic.com/engineering/effective-context-engineering-for-ai-agents">Effective Context Engineering for AI Agents</a> &#8211; Anthropic again<br>&#127959;&#65039; <a href="https://shopify.engineering/building-production-ready-agentic-systems">Building Production-Ready Agentic Systems</a> &#8211; Shopify&#8217;s lessons <br>&#129516; <a href="https://nlp.elvissaravia.com/p/deep-agents">Deep Agents: From Shallow to Deep...</a> &#8211; Elvis Saravia<br>&#128187; <a href="https://blog.alexmaccaw.com/how-to-vibe-code-as-a-senior-engineer/">How to Vibe Code as a Senior Engineer</a> &#8211; Alex Maccaw <br>&#128640; <a href="https://addyo.substack.com/p/the-ai-native-software-engineer?utm_source=ai-native-dev-newsletter">The AI-Native Software Engineer</a> &#8211; Addy Osmani <br>&#129504; <a href="https://blog.fsck.com/2025/10/05/how-im-using-coding-agents-in-september-2025/">How I&#8217;m Using Coding Agents in September 2025</a> &#8211; Jesse Vincent<br>&#129517; <a href="https://medium.com/@springrod/context-engineering-needs-domain-understanding-b4387e8e4bf8">Context Engineering Needs Domain Understanding</a> &#8211; Rod Johnson <br>&#9889; <a href="https://magazine.sebastianraschka.com/p/from-gpt-2-to-gpt-oss-analyzing-the">From GPT-2 to gpt-oss: Architectural Advances</a> &#8211; Sebastian Raschka  &#128293;<br>&#128161; <a href="https://maxleiter.com/blog/rewrite-your-prompts">You Should Be Rewriting Your Prompts</a> &#8211; Max Leiter<br>&#129521; <a href="https://x.com/DataChaz/status/1969281035562303676">Google&#8217;s MCP Toolbox for Databases Is Now Open Source</a> <br>&#128293;&#128293;&#128293; <a href="https://www.youtube.com/watch?v=ysPbXH0LpIE">Prompting 101</a> - Hannah &amp; Christian from Anthropic</p><p>&#8230;and if you dare, <em>100+ updates</em> to explore &#128071;</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://generativeprogrammer.com/p/generative-programmer-issue-16?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://generativeprogrammer.com/p/generative-programmer-issue-16?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><h2>&#127919; Featured Article</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!D5jK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb913efc5-1e30-4318-8b53-31588a8891d3_1920x1080.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!D5jK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb913efc5-1e30-4318-8b53-31588a8891d3_1920x1080.webp 424w, https://substackcdn.com/image/fetch/$s_!D5jK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb913efc5-1e30-4318-8b53-31588a8891d3_1920x1080.webp 848w, https://substackcdn.com/image/fetch/$s_!D5jK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb913efc5-1e30-4318-8b53-31588a8891d3_1920x1080.webp 1272w, https://substackcdn.com/image/fetch/$s_!D5jK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb913efc5-1e30-4318-8b53-31588a8891d3_1920x1080.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!D5jK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb913efc5-1e30-4318-8b53-31588a8891d3_1920x1080.webp" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b913efc5-1e30-4318-8b53-31588a8891d3_1920x1080.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;This is an image depicting how an engineer might use Claude Code to evaluate the efficacy of agentic tools.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="This is an image depicting how an engineer might use Claude Code to evaluate the efficacy of agentic tools." title="This is an image depicting how an engineer might use Claude Code to evaluate the efficacy of agentic tools." srcset="https://substackcdn.com/image/fetch/$s_!D5jK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb913efc5-1e30-4318-8b53-31588a8891d3_1920x1080.webp 424w, https://substackcdn.com/image/fetch/$s_!D5jK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb913efc5-1e30-4318-8b53-31588a8891d3_1920x1080.webp 848w, https://substackcdn.com/image/fetch/$s_!D5jK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb913efc5-1e30-4318-8b53-31588a8891d3_1920x1080.webp 1272w, https://substackcdn.com/image/fetch/$s_!D5jK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb913efc5-1e30-4318-8b53-31588a8891d3_1920x1080.webp 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><a href="https://www.anthropic.com/engineering/writing-tools-for-agents">Writing effective tools for AI agents</a> - Anthropic outlines techniques for creating effective tools for LLM agents using the Model Context Protocol, sharing key principles for writing high-quality tools that bridge deterministic and non-deterministic systems.</p><h2><strong>&#128240; Building Agentic Systems</strong></h2><p>&#128293;&#128293;&#128293; <a href="https://www.anthropic.com/engineering/effective-context-engineering-for-ai-agents">Effective context engineering for AI agents</a> - Anthropic explains how context engineering is replacing prompt engineering, focusing on optimizing the entire token context to achieve consistent LLM performance rather than just finding the right prompt phrases.</p><p><a href="https://www.infoq.com/articles/agentic-ai-architecture-framework/">Agentic AI Architecture Framework for Enterprises - InfoQ</a> - A framework for building autonomous AI systems with architectural components and implementation patterns.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LfXq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F257a4e16-154e-4bfc-b3f6-0534ecce58f1_1200x751.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LfXq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F257a4e16-154e-4bfc-b3f6-0534ecce58f1_1200x751.jpeg 424w, https://substackcdn.com/image/fetch/$s_!LfXq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F257a4e16-154e-4bfc-b3f6-0534ecce58f1_1200x751.jpeg 848w, https://substackcdn.com/image/fetch/$s_!LfXq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F257a4e16-154e-4bfc-b3f6-0534ecce58f1_1200x751.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!LfXq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F257a4e16-154e-4bfc-b3f6-0534ecce58f1_1200x751.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LfXq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F257a4e16-154e-4bfc-b3f6-0534ecce58f1_1200x751.jpeg" width="1200" height="751" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/257a4e16-154e-4bfc-b3f6-0534ecce58f1_1200x751.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:751,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Diagram titled AI Agent Orchestration Patterns displays five patterns: sequential with chained agents, concurrent with parallel agents, group chat with multiple agents in discussion, maker-checker loops with validation steps, handoff with agent transfer, and magentic with central coordinator, each illustrated by flowcharts showing agent interactions and data flows.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Diagram titled AI Agent Orchestration Patterns displays five patterns: sequential with chained agents, concurrent with parallel agents, group chat with multiple agents in discussion, maker-checker loops with validation steps, handoff with agent transfer, and magentic with central coordinator, each illustrated by flowcharts showing agent interactions and data flows." title="Diagram titled AI Agent Orchestration Patterns displays five patterns: sequential with chained agents, concurrent with parallel agents, group chat with multiple agents in discussion, maker-checker loops with validation steps, handoff with agent transfer, and magentic with central coordinator, each illustrated by flowcharts showing agent interactions and data flows." srcset="https://substackcdn.com/image/fetch/$s_!LfXq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F257a4e16-154e-4bfc-b3f6-0534ecce58f1_1200x751.jpeg 424w, https://substackcdn.com/image/fetch/$s_!LfXq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F257a4e16-154e-4bfc-b3f6-0534ecce58f1_1200x751.jpeg 848w, https://substackcdn.com/image/fetch/$s_!LfXq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F257a4e16-154e-4bfc-b3f6-0534ecce58f1_1200x751.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!LfXq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F257a4e16-154e-4bfc-b3f6-0534ecce58f1_1200x751.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><a href="https://x.com/bibryam/status/1981639800802414976">https://x.com/bibryam/status/1981639800802414976</a></figcaption></figure></div><p>&#128293; <a href="https://learn.microsoft.com/en-us/azure/architecture/ai-ml/guide/ai-agent-design-patterns">AI Agent Orchestration Patterns</a> - Guide to designing multi-agent systems that handle complex tasks collaboratively by Microsoft.</p><p>&#128293; <a href="https://shopify.engineering/building-production-ready-agentic-systems">Building production-ready agentic systems</a> - Shopify&#8217;s journey building a production-ready AI assistant with practical lessons learned.</p><p><a href="https://www.anthropic.com/engineering/equipping-agents-for-the-real-world-with-agent-skills">Equipping agents for the real world with Agent Skills</a> - Anthropic: AgentSkills packages domain expertise for more capable AI assistants.</p><p><a href="https://www.microsoft.com/en-us/research/articles/magentic-one-a-generalist-multi-agent-system-for-solving-complex-tasks/">Magentic-One: A Generalist Multi-Agent System for Solving Complex Tasks </a>- Microsoft&#8217;s multi-agent system that solves complex tasks through collaborative AI agents.</p><p><a href="https://muratbuffalo.blogspot.com/2025/09/supporting-our-ai-overlords-redesigning.html">Supporting our AI overlords: Redesigning data systems to be Agent-first</a> - Berkeley researchers propose redesigning databases for LLM agents&#8217; unique query patterns.</p><p><a href="https://www.anthropic.com/news/context-management?utm_source=substack&amp;utm_medium=email">Managing context on the Claude Developer Platform</a> - Anthropic introduces new context management capabilities that help developers build AI agents capable of handling complex, long-running tasks without hitting context limits or losing critical information.</p><p><a href="https://arxiv.org/abs/2405.10467">Agent Design Pattern Catalogue: A Collection of Architectural Patterns</a> - Yue Liu - A collection of design patterns for building foundation model agents.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ayYd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fa27e15-0779-46c4-9d34-7b02de139e42_1492x1174.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ayYd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fa27e15-0779-46c4-9d34-7b02de139e42_1492x1174.png 424w, https://substackcdn.com/image/fetch/$s_!ayYd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fa27e15-0779-46c4-9d34-7b02de139e42_1492x1174.png 848w, https://substackcdn.com/image/fetch/$s_!ayYd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fa27e15-0779-46c4-9d34-7b02de139e42_1492x1174.png 1272w, https://substackcdn.com/image/fetch/$s_!ayYd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fa27e15-0779-46c4-9d34-7b02de139e42_1492x1174.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ayYd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fa27e15-0779-46c4-9d34-7b02de139e42_1492x1174.png" width="1456" height="1146" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4fa27e15-0779-46c4-9d34-7b02de139e42_1492x1174.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1146,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ayYd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fa27e15-0779-46c4-9d34-7b02de139e42_1492x1174.png 424w, https://substackcdn.com/image/fetch/$s_!ayYd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fa27e15-0779-46c4-9d34-7b02de139e42_1492x1174.png 848w, https://substackcdn.com/image/fetch/$s_!ayYd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fa27e15-0779-46c4-9d34-7b02de139e42_1492x1174.png 1272w, https://substackcdn.com/image/fetch/$s_!ayYd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fa27e15-0779-46c4-9d34-7b02de139e42_1492x1174.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The 5 levels of autonomy: Self-driving cars vs. AI dev agents</figcaption></figure></div><p><a href="https://ainativedev.io/news/the-5-levels-of-ai-agent-autonomy-learning-from-self-driving-cars">The 5 levels of AI agent autonomy: learning from self-driving cars</a> - Maps coding agents to self-driving car autonomy levels, from manual to fully autonomous.</p><p>&#128293; <a href="https://nlp.elvissaravia.com/p/deep-agents">Deep Agents </a>- AI systems evolving from shallow to deep agents with strategic planning capabilities.</p><h2><strong>&#128240; Coding with AI</strong></h2><p>&#128293;&#128293;&#128293; <a href="https://blog.alexmaccaw.com/how-to-vibe-code-as-a-senior-engineer/">How to Vibe Code as a Senior Engineer</a> - Alex Maccaw explains how &#8220;vibe coding&#8221; leverages AI models to dramatically accelerate software development, turning traditionally expensive and time-consuming coding processes into rapid, efficient workflows for senior engineers.</p><p><a href="https://etsd.tech/posts/rtfc">Read That F*cking Code!</a> - Developers need to actually read the code that AI generates for them.</p><p>&#128293; <a href="https://addyo.substack.com/p/the-ai-native-software-engineer?utm_source=ai-native-dev-newsletter">The AI-Native Software Engineer</a> - <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Addy Osmani&quot;,&quot;id&quot;:11623675,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cee7ba66-e656-4450-a0ed-c951c27ee228_1080x1080.jpeg&quot;,&quot;uuid&quot;:&quot;5221083f-afa2-44b7-9f58-6b7a7f32c96f&quot;}" data-component-name="MentionToDOM"></span> : Engineers who embrace AI as partners can multiply their productivity.</p><p><a href="https://www.fuzzycomputer.com/posts/onboarding">Onboarding for coding agents</a> - Simplified context delivery for AI coding assistants.</p><p><a href="https://simonw.substack.com/p/claudes-new-code-interpreter">Claude&#8217;s new Code Interpreter</a> - <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Simon Willison&quot;,&quot;id&quot;:5753967,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/5a30d45c-fcba-407a-bebf-96f51a8944a4_48x48.jpeg&quot;,&quot;uuid&quot;:&quot;a3c5dc74-971f-4e64-b9c4-3150118773dc&quot;}" data-component-name="MentionToDOM"></span> reviews Claude&#8217;s Code Interpreter and showcases various AI development tools.</p><p><a href="https://www.augmentcode.com/guides/ai-coding-assistants-for-large-codebases-a-complete-guide">AI Coding Assistants for Large Codebases: A Complete Guide</a> - Molisha Shah explains how effective AI coding assistants for large codebases need to understand entire repositories and architectural patterns, not just provide simple autocomplete functionality.</p><p><a href="https://simonwillison.net/2025/Sep/30/designing-agentic-loops/">Designing agentic loops</a> - <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Simon Willison&quot;,&quot;id&quot;:5753967,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/5a30d45c-fcba-407a-bebf-96f51a8944a4_48x48.jpeg&quot;,&quot;uuid&quot;:&quot;777bae8d-d36b-4c20-88c2-80c7ddf75b0d&quot;}" data-component-name="MentionToDOM"></span> explains how to maximize the potential of coding agents like Claude Code and Codex CLI by designing effective agentic loops that enable these AI tools to iterate toward solutions.</p><p><a href="https://simonw.substack.com/p/embracing-the-parallel-coding-agent">Embracing the parallel coding agent lifestyle</a> - Simon Willison: Developer&#8217;s shift toward using multiple AI coding assistants at once.</p><p>&#128293; <a href="https://blog.fsck.com/2025/10/05/how-im-using-coding-agents-in-september-2025/">How I&#8217;m using coding agents in September, 2025</a> - Developer&#8217;s workflow using Claude Code with git worktrees for parallel project management.</p><p><a href="https://addyo.substack.com/p/vibe-coding-is-not-the-same-as-ai">Vibe coding is not the same as AI-Assisted engineering.</a> - <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Addy Osmani&quot;,&quot;id&quot;:11623675,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cee7ba66-e656-4450-a0ed-c951c27ee228_1080x1080.jpeg&quot;,&quot;uuid&quot;:&quot;43241d4f-b9b8-411e-8e5a-7a3fef11f77d&quot;}" data-component-name="MentionToDOM"></span>  clarifies the critical distinction between casual &#8220;vibe coding&#8221; and professional &#8220;AI-assisted engineering,&#8221; emphasizing that conflating these approaches risks devaluing engineering discipline and misleading newcomers about production software requirements.</p><p><a href="https://tidyfirst.substack.com/p/beyond-the-ide">Beyond the IDE</a> - <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Kent Beck&quot;,&quot;id&quot;:24333739,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F000da410-0ed6-4a25-80b1-6a46e964ae0b_242x242.jpeg&quot;,&quot;uuid&quot;:&quot;b210ce59-5a8a-4da4-bbe0-fe88a5d56a92&quot;}" data-component-name="MentionToDOM"></span> explores programming&#8217;s evolution from hardware to AI-assisted environments.</p><p><a href="https://medium.com/nick-tune-tech-strategy-blog/reverse-engineering-your-software-architecture-with-claude-code-to-help-claude-code-1746a7b941bc">Reverse Engineering your Software Architecture with Claude Code to Help Claude Code</a> - Nick Tune: Claude Code works best when it understands your system&#8217;s full functionality.</p><p><a href="https://thoughtworks.medium.com/beyond-vibe-coding-how-ai-can-transform-pull-requests-afef51eae137">Beyond vibe coding: How AI can transform pull requests</a> - Thoughtworks: Enterprise coding needs more than AI prompts due to regulatory and legacy constraints.</p><p><a href="https://ainativedev.io/news/exploring-cursor-windsurf-and-copilot-with-gpt-5">Exploring Cursor, Windsurf and Copilot with GPT-5 </a>  - Comparative analysis of GPT-5 coding tools across different development scenarios.</p><p><a href="https://ainativedev.io/news/the-rule-maker-pattern">The Rule Maker Pattern: Creating Deterministic Execution with AI Probabilistic Generation</a> - Guy Podjarny explains how developers can establish clear rules and guidelines to transform AI&#8217;s unpredictable outputs into reliable, deterministic execution for more consistent results.</p><p><a href="https://newsletter.pragmaticengineer.com/p/how-tech-companies-measure-the-impact-of-ai">How tech companies measure the impact of AI on software development</a> - Orosz: Companies tracking whether AI coding tools justify their increasing costs.</p><p><a href="https://www.latent.space/p/gpt5-codex">How GPT5 + Codex took over Agentic Coding &#8212; ft. Greg Brockman, OpenAI</a> - OpenAI&#8217;s GPT-5-Codex disrupts Anthropic&#8217;s coding dominance.</p><h2><strong>&#128240; Long-Form Reads</strong></h2><p>&#128293;&#128293;&#128293; <a href="https://medium.com/@springrod/context-engineering-needs-domain-understanding-b4387e8e4bf8">Context Engineering Needs Domain Understanding</a> - Rod Johnson: Context engineering replaces prompt engineering with more precision.</p><p>&#128293; <a href="https://maxleiter.com/blog/rewrite-your-prompts">You should be rewriting your prompts</a> - Max Leiter: Different LLMs require different prompting approaches for best results.</p><p><a href="https://icepanel.io/blog/2025-08-18-comparison-llms-for-creating-software-architecture-diagrams/">Comparison - LLMs for Creating Software Architecture Diagrams</a> -  Testing if AI can create architecture diagrams but not replace architects.</p><p><a href="https://www.oneusefulthing.org/p/against-brain-damage">Against &#8220;Brain Damage&#8221;</a> - <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Ethan Mollick&quot;,&quot;id&quot;:846835,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7c05cdbc-40fd-459b-915d-f8bc8ac8bf01_3509x5263.jpeg&quot;,&quot;uuid&quot;:&quot;78863640-5af4-4685-a8da-a6b76c8e217d&quot;}" data-component-name="MentionToDOM"></span>  debunks fears that AI harms cognition, suggesting productive AI use instead.</p><p><a href="https://simonw.substack.com/p/gpt-5-key-characteristics-pricing">GPT-5: Key characteristics, pricing and model card</a> - <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Simon Willison&quot;,&quot;id&quot;:5753967,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/5a30d45c-fcba-407a-bebf-96f51a8944a4_48x48.jpeg&quot;,&quot;uuid&quot;:&quot;ac08d6b1-8e1e-4ac2-ae24-5cdd2c225625&quot;}" data-component-name="MentionToDOM"></span>: Brief notes on OpenAI&#8217;s new models and ChatGPT features.</p><p><a href="https://www.coderabbit.ai/blog/the-art-and-science-of-context-engineering">The art and science of context engineering</a> - CodeRabbit examines how effective AI code review tools require sophisticated context engineering to understand specific codebases deeply rather than simply pattern-matching against general rules.</p><p>&#128293;&#128293;&#128293; <a href="https://magazine.sebastianraschka.com/p/from-gpt-2-to-gpt-oss-analyzing-the">From GPT-2 to gpt-oss: Analyzing the Architectural Advances</a> - Technical breakdown of OpenAI&#8217;s new open-weight models and their architectural improvements.</p><p><a href="https://www.meta.com/superintelligence/?utm_source=substack&amp;utm_medium=email">Superintelligence</a> - Meta&#8217;s roadmap for developing safe, advanced AI systems beyond human intelligence.</p><p><a href="https://www.promptmonitor.io/blog/how-to-get-brand-mentioned-in-ai">10 Proven Ways to Get Your Brand Mentioned in AI Answers</a> - Strategies for brand visibility in AI responses through quality content placement.</p><p><a href="https://martinfowler.com/articles/pushing-ai-autonomy.html">How far can we push AI autonomy in code generation?</a> - B&#246;ckeler: AI can build simple apps but still requires human supervision.</p><p><a href="https://jaxlondon.com/blog/data-machine-learning/mastering-mcp-server-with-spring-boot-and-ai/">Mastering MCP Server with Spring Boot &amp; AI</a> -  Standardized protocol for AI model-application communication.</p><p><a href="https://simonw.substack.com/p/prompt-injections-as-far-as-the-eye">Prompt injections as far as the eye can see</a> - Researcher documents daily AI prompt injection vulnerabilities across multiple tools.</p><p><a href="https://www.reillywood.com/blog/apis-dont-make-good-mcp-tools/">APIs don&#8217;t make good MCP tools</a> - Reilly Wood explains why automatically converting existing APIs into Model Context Protocol tools often works poorly due to context window limitations and the fact that web APIs weren&#8217;t designed with these constraints in mind.</p><p><a href="https://medium.com/@elliotgraebert/agentic-ai-has-changed-my-career-2c6e3dd29708">Agentic AI has changed my career. I don&#8217;t write code&#8230;</a> - Elliot Graebert: Manager who stopped coding after early career promotion.</p><p><a href="https://arxiv.org/abs/2411.15399">Less is More: Optimizing Function Calling for LLM Execution on Edge Devices</a> -  Streamlining LLM function calls for better edge device performance.</p><p><a href="https://giansegato.com/essays/probabilistic-era">Building AI Products In The Probabilistic Era</a> - AI systems work in ways we can&#8217;t fully predict or understand.</p><p><a href="https://www.growthunhinged.com/p/your-next-job-will-require-ai-skills">Your next job will require AI skills</a> - <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Kyle Poyar&quot;,&quot;id&quot;:3477063,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!ySdz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e6176aa-0699-4dfc-af3b-561d987c6632_3600x2401.jpeg&quot;,&quot;uuid&quot;:&quot;b3c3d993-7cc9-4de2-ab06-87aeb2b62265&quot;}" data-component-name="MentionToDOM"></span> : AI fluency becoming essential across all job functions.</p><p><a href="https://reeganalward.com/master-the-blueprint-llm-prompts-for-perfect-product-requirements-documents-prd-192b23835462">Master the Blueprint: LLM Prompts for Perfect  PRD</a>s - Alward shares template for creating LLM-generated PRDs optimized for coding agents.</p><p><a href="https://medium.com/@sean.shoffstall/revolutionizing-product-development-how-ai-is-transforming-the-prd-process-4dbb66cba77d">How AI is Transforming the PRD Process</a> - Sean Shoffstall reflects on how AI tools are revolutionizing product requirements documents, addressing the longstanding problems of traditional PRDs that tend to be either too vague or overly detailed.</p><p><a href="https://mustafakapadia.substack.com/p/writing-product-requirements-with">Writing product requirements with AI</a> - Kapadia examines why PMs struggle with requirements documentation and AI limitations.</p><p><a href="https://arxiv.org/html/2404.17842v1">Using LLMs in Software Requirements Specifications: An Empirical Evaluation</a> - Study comparing LLMs to humans in creating software requirement documents.</p><p><a href="https://lukebechtel.com/blog/vibe-speccing">Vibe Specs: Vibe Coding That Actually Works</a> - Luke Bechtel advocates for making AI write requirements before code, arguing this 5-minute investment saves hours of confusion and improves productivity.</p><p><a href="https://booking.ai/llm-evaluation-practical-tips-at-booking-com-1b038a0d6662">LLM Evaluation: Practical Tips at Booking.com</a> - George Chouliaras shares Booking.com&#8217;s methods for evaluating generative AI applications.</p><p><a href="https://martinfowler.com/articles/exploring-gen-ai/to-vibe-or-not-vibe.html">To vibe or not to vibe</a> - Birgitta B&#246;ckeler examines the nuanced debate around AI-generated code review, challenging binary perspectives and suggesting that the appropriate level of review depends on various contextual factors.</p><p><a href="https://brooker.co.za/blog/2025/08/12/llms-as-components.html">LLMs as Parts of Systems - Marc&#8217;s Blog</a> - Systems built with LLMs matter more than LLMs&#8217; theoretical capabilities alone.</p><p><a href="https://alexchesser.medium.com/attention-is-the-new-big-o-9c68e1ae9b27">Attention Is the New Big-O</a> - Alex Chesser explains how LLMs process text differently than humans, emphasizing that structural choices in prompts can impact results more significantly than word choice.</p><p><a href="https://www.dbreunig.com/2025/06/10/let-the-model-write-the-prompt.html">Let the Model Write the Prompt</a> - Drew Breunig demonstrates how DSPy can be used to define and optimize LLM tasks, using a geospatial conflation problem as an example to show how the framework simplifies, improves, and future-proofs AI implementations.</p><p><a href="https://www.koi.ai/blog/postmark-mcp-npm-malicious-backdoor-email-theft">First Malicious MCP in the Wild: The Postmark Backdoor That&#8217;s Stealing Your Emails </a>- Koi reveals details about the first discovered malicious Model Composition Protocol (MCP) backdoor in the Postmark npm package that steals users&#8217; email data.</p><p><a href="https://mbleigh.dev/posts/context-engineering-with-links/">Context engineering is sleeping on the humble hyperlink </a>- the overlooked solution for efficient LLM context management.</p><p>Agentic Lessons learn after 300 agents - <a href="https://www.saiyashwanth.com/ai_agent_lessons">Sai Yashwanth</a> - I have built around 300 agents, worked at 5 startups. Here&#8217;s what I learnt about AI Agent</p><p><a href="https://theengineeringmanager.substack.com/p/leadership-co-processing-with-llms">Leadership co-processing with LLMs</a> - James Stanier examines how large language models are transforming management practices through techniques for prioritization, communication, and cognitive offloading.</p><h2><strong>&#127897;&#65039; YouTube &amp; Podcasts</strong></h2><p>&#128293;<a href="https://www.ycombinator.com/library/MN-how-to-get-the-most-out-of-vibe-coding">How To Get The Most Out Of Vibe Coding</a> - Guide to using AI as a coding partner to build faster by Y Combinator.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!43ob!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b686bb4-cecf-43a6-b03a-d027ef048aef_742x866.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!43ob!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b686bb4-cecf-43a6-b03a-d027ef048aef_742x866.png 424w, https://substackcdn.com/image/fetch/$s_!43ob!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b686bb4-cecf-43a6-b03a-d027ef048aef_742x866.png 848w, https://substackcdn.com/image/fetch/$s_!43ob!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b686bb4-cecf-43a6-b03a-d027ef048aef_742x866.png 1272w, https://substackcdn.com/image/fetch/$s_!43ob!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b686bb4-cecf-43a6-b03a-d027ef048aef_742x866.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!43ob!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b686bb4-cecf-43a6-b03a-d027ef048aef_742x866.png" width="742" height="866" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7b686bb4-cecf-43a6-b03a-d027ef048aef_742x866.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:866,&quot;width&quot;:742,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:477936,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/177761840?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b686bb4-cecf-43a6-b03a-d027ef048aef_742x866.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!43ob!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b686bb4-cecf-43a6-b03a-d027ef048aef_742x866.png 424w, https://substackcdn.com/image/fetch/$s_!43ob!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b686bb4-cecf-43a6-b03a-d027ef048aef_742x866.png 848w, https://substackcdn.com/image/fetch/$s_!43ob!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b686bb4-cecf-43a6-b03a-d027ef048aef_742x866.png 1272w, https://substackcdn.com/image/fetch/$s_!43ob!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b686bb4-cecf-43a6-b03a-d027ef048aef_742x866.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><a href="https://www.youtube.com/watch?v=ysPbXH0LpIE">Prompting 101</a></figcaption></figure></div><p>&#128293;&#128293;&#128293; <a href="https://www.youtube.com/watch?v=ysPbXH0LpIE">Prompting 101 | Code w/ Claude</a> - Hannah Moran and Christian Ryan from Anthropic present fundamental prompting techniques for effectively working with Claude, covering essential strategies developers can use to improve AI interactions.</p><p><a href="https://www.youtube.com/watch?v=qdmxApz3EJI">On Engineering AI Systems that Endure The Bitter Lesson </a>- Building AI systems that last through principled engineering approaches.</p><h2><strong>&#128478;&#65039; News and Social</strong></h2><p><a href="https://openai.com/index/introducing-gpt-oss/">Introducing gpt-oss </a>- OpenAI releases Apache-licensed reasoning models optimized for consumer hardware.</p><p><a href="https://www.anthropic.com/engineering/building-agents-with-the-claude-agent-sdk">Building agents with the Claude Agent SDK</a> - Anthropic rebrands Claude Code SDK to reflect its broader agent capabilities beyond coding.</p><p><a href="https://x.com/GoogleLabs/status/1948430715432976802">Google Labs introduces Opal</a> -  a new way to help you build and share AI mini-apps by linking together prompts, models, and tools&#8212; all while using simple, natural language</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fzWa!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feaacef76-0d06-4f9e-b98e-0482cdc0d47f_1125x1500.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fzWa!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feaacef76-0d06-4f9e-b98e-0482cdc0d47f_1125x1500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!fzWa!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feaacef76-0d06-4f9e-b98e-0482cdc0d47f_1125x1500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!fzWa!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feaacef76-0d06-4f9e-b98e-0482cdc0d47f_1125x1500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!fzWa!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feaacef76-0d06-4f9e-b98e-0482cdc0d47f_1125x1500.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fzWa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feaacef76-0d06-4f9e-b98e-0482cdc0d47f_1125x1500.jpeg" width="1125" height="1500" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/eaacef76-0d06-4f9e-b98e-0482cdc0d47f_1125x1500.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1500,&quot;width&quot;:1125,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Principles of Building AI Agents&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Principles of Building AI Agents" title="Principles of Building AI Agents" srcset="https://substackcdn.com/image/fetch/$s_!fzWa!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feaacef76-0d06-4f9e-b98e-0482cdc0d47f_1125x1500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!fzWa!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feaacef76-0d06-4f9e-b98e-0482cdc0d47f_1125x1500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!fzWa!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feaacef76-0d06-4f9e-b98e-0482cdc0d47f_1125x1500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!fzWa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feaacef76-0d06-4f9e-b98e-0482cdc0d47f_1125x1500.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">https://x.com/PawelHuryn/status/1943611413320093880</figcaption></figure></div><p><a href="https://x.com/PawelHuryn/status/1943611413320093880">10 Principles of Building AI Agents:</a> -  by Pawel Huryn.</p><p><a href="https://www.testingcatalog.com/openai-experiments-with-new-study-together-tool-on-chatgpt/">OpenAI experiments with new &#8220;Study together&#8221; tool on ChatGPT</a> - ChatGPT&#8217;s new feature creates interactive learning experiences with guided study sessions.</p><p><a href="https://x.com/AnthropicAI/status/1925926102725202163">THE WAY OF CODE</a> - a project by <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Rick Rubin&quot;,&quot;id&quot;:322455116,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/808958e5-0d43-498a-8c95-12b9e6dad6de_1874x1874.jpeg&quot;,&quot;uuid&quot;:&quot;59358e3b-c622-4752-916a-5518519f8c3f&quot;}" data-component-name="MentionToDOM"></span> n in collaboration with Anthropic:</p><p><a href="https://ainativedev.io/news/tessl-launches-spec-driven-framework-and-registry">Tessl launches spec-driven development tools for reliable AI coding agents </a> </p><p><a href="https://x.com/akshay_pachaar/status/1969379375582945474">8 RAG architectures for AI engineers</a></p><p><a href="https://x.com/DataChaz/status/1969281035562303676">Google&#8217;s MCP Toolbox for Databases is now open source! &#128293;</a> </p><p><a href="https://github.com/ghostty-org/ghostty/pull/8289">AI tooling must be disclosed for contributions </a> - AI disclosure requirement for contributions to ghostty-org.</p><h2><strong>&#128736;&#65039; Tech &amp; Tools</strong></h2><p><a href="https://ainativedev.io/news/the-rise-of-agents-md-an-open-standard-and-single-source-of-truth-for-ai-coding-agents">Agents.md: an open standard for AI coding agents</a> - A file standard for consistent AI assistant instructions across projects.</p><p><a href="https://github.com/openai/gpt-oss?utm_source=ai-native-dev-newsletter">GitHub - openai/gpt-oss: gpt-oss-120b and gpt-oss-20b</a> - Open-weight models for reasoning and agentic tasks.</p><p><a href="https://opencode.ai/">OpenCode | The AI coding agent built for the terminal</a> - Open-source AI coding assistant for terminal that respects privacy.</p><p><a href="https://huggingface.co/spaces/galileo-ai/agent-leaderboard">Agent Leaderboard - a Hugging Face Space by galileo-ai</a> - Comparative tool for AI agent performance with filterable metrics.</p><p><a href="https://github.com/traceloop/openllmetry">GitHub - traceloop/openllmetry</a> - traceloop - OpenTelemetry-based observability for LLM applications.</p><p><a href="https://github.com/terryso/claude-auto-resume">GitHub - terryso/claude-auto-resume</a> - Script that auto-resumes Claude CLI tasks after usage limits expire.</p><p><a href="https://github.com/f/awesome-chatgpt-prompts">GitHub - f/awesome-chatgpt-prompts</a> - A curated collection of prompts designed for ChatGPT and other LLM tools to help users get better responses from AI language models.</p><p><a href="https://kilocode.ai/">Kilo Code - coding agent for VS Code and JetBrains</a> - AI coding assistant with project management capabilities serving 500k+ users.</p><p><a href="https://github.com/marcelsud/spec-driven-agentic-development">GitHub - marcelsud/spec-driven-agentic-development</a> - Specification-driven development framework for AI-assisted software building.</p><p><a href="https://github.com/charmbracelet/crush">GitHub - charmbracelet/crush: &#128152;</a>  - Terminal-based AI coding assistant for your workflow.</p><p><a href="https://github.com/pimzino/claude-code-spec-workflow?tab=readme-ov-file">GitHub - Pimzino/claude-code-spec-workflow</a> - Structured AI-powered development workflows for features and bug fixes.</p><p><a href="https://github.com/docker/cagent">GitHub - docker/cagent: Agent Builder and Runtime by Docker</a> - AI agent orchestration tool for building collaborative virtual expert teams.</p><p><a href="https://github.com/kirodotdev/Kiro">GitHub - kirodotdev/Kiro: Kiro is an agentic IDE that works alongside you</a> - AI-powered IDE that understands your codebase and automates development tasks.</p><p><a href="https://gist.github.com/Dowwie/151d8efea738ea486ddec9208ddb3a19">Product requirement document generation using LLM task oriented dialogue &#183; GitHub</a> - LLM-powered PRD generation through guided dialogue.</p><p><a href="https://github.com/davidkimai/Context-Engineering">GitHub - davidkimai/Context-Engineering</a>  - First-principles handbook for AI context design and optimization.</p><p><a href="https://github.com/ashishpatel26/500-AI-Agents-Projects">GitHub - ashishpatel26/500-AI-Agents-Projects</a> - Curated collection of AI agent applications with implementation resources.</p><p><a href="https://github.com/GoogleCloudPlatform/kubectl-ai">GitHub - GoogleCloudPlatform/kubectl-ai: AI powered Kubernetes Assistant</a> - AI-powered tool that simplifies Kubernetes management.</p><p><a href="https://github.com/hesreallyhim/awesome-claude-code">GitHub - hesreallyhim/awesome-claude-code</a> - A curated resource list for maximizing Claude Code&#8217;s capabilities.</p><p><a href="https://bloomberry.com/coding-tools.html">AI Coding Tools: Install Trends (based on Visual Studio Code)</a> - Visual tracking of AI coding extension popularity in VS Code.</p><p><a href="https://github.com/invariantlabs-ai/mcp-scan/">GitHub - invariantlabs-ai/mcp-scan: Constrain, log and scan your MCP connections </a>- Security scanner for MCP servers detecting vulnerabilities across various configurations.</p><h2><strong>&#128218; Learning Picks</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!u5Ad!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F921119d1-a4f9-4769-a906-e7c8feabd99a_762x1000.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!u5Ad!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F921119d1-a4f9-4769-a906-e7c8feabd99a_762x1000.jpeg 424w, https://substackcdn.com/image/fetch/$s_!u5Ad!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F921119d1-a4f9-4769-a906-e7c8feabd99a_762x1000.jpeg 848w, https://substackcdn.com/image/fetch/$s_!u5Ad!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F921119d1-a4f9-4769-a906-e7c8feabd99a_762x1000.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!u5Ad!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F921119d1-a4f9-4769-a906-e7c8feabd99a_762x1000.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!u5Ad!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F921119d1-a4f9-4769-a906-e7c8feabd99a_762x1000.jpeg" width="728" height="955.3805774278215" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/921119d1-a4f9-4769-a906-e7c8feabd99a_762x1000.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:1000,&quot;width&quot;:762,&quot;resizeWidth&quot;:728,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!u5Ad!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F921119d1-a4f9-4769-a906-e7c8feabd99a_762x1000.jpeg 424w, https://substackcdn.com/image/fetch/$s_!u5Ad!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F921119d1-a4f9-4769-a906-e7c8feabd99a_762x1000.jpeg 848w, https://substackcdn.com/image/fetch/$s_!u5Ad!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F921119d1-a4f9-4769-a906-e7c8feabd99a_762x1000.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!u5Ad!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F921119d1-a4f9-4769-a906-e7c8feabd99a_762x1000.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">https://allendowney.github.io/ThinkPython/</figcaption></figure></div><p><a href="https://allendowney.github.io/ThinkPython/">Think Python</a> - Free, beginner-friendly Python programming book with interactive Jupyter notebooks.</p><p><a href="https://github.com/Asabeneh/30-Days-Of-Python">GitHub - Asabeneh/30-Days-Of-Python: 30 days of Python programming challenge</a> - Self-paced Python learning challenge with daily exercises.</p><p><a href="https://learn.microsoft.com/en-us/shows/generative-ai-for-beginners/">Generative AI for Beginner</a>s - Microsoft&#8217;s 18-lesson course on building Generative AI applications.</p><p><a href="https://github.com/microsoft/ai-agents-for-beginners">GitHub - microsoft/ai-agents-for-beginners: 12 Lessons to Get Started Building AI Agents</a> - Beginner-friendly AI agent development course .</p><h2><strong>&#127917; AI Humor</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ApyU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F687f9d65-337b-47be-bc32-21c58221d344_439x512.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ApyU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F687f9d65-337b-47be-bc32-21c58221d344_439x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ApyU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F687f9d65-337b-47be-bc32-21c58221d344_439x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ApyU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F687f9d65-337b-47be-bc32-21c58221d344_439x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ApyU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F687f9d65-337b-47be-bc32-21c58221d344_439x512.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ApyU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F687f9d65-337b-47be-bc32-21c58221d344_439x512.jpeg" width="439" height="512" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/687f9d65-337b-47be-bc32-21c58221d344_439x512.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&quot;width&quot;:439,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;text&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="text" title="text" srcset="https://substackcdn.com/image/fetch/$s_!ApyU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F687f9d65-337b-47be-bc32-21c58221d344_439x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ApyU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F687f9d65-337b-47be-bc32-21c58221d344_439x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ApyU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F687f9d65-337b-47be-bc32-21c58221d344_439x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ApyU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F687f9d65-337b-47be-bc32-21c58221d344_439x512.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Source: https://www.linkedin.com/feed/update/urn:li:activity:7373951080134746113/</figcaption></figure></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://generativeprogrammer.com/p/generative-programmer-issue-16?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://generativeprogrammer.com/p/generative-programmer-issue-16?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><h2>&#128075; See You Next Time</h2><p>Thanks for reading <em>Generative Programmer</em>! &#128591;  If you like the content please support my newsletter by subscribing and sharing with your network: <a href="https://twitter.com/intent/tweet?text=Checkout%20this%20newsletter%20with%20the%20latest%20AI%20news%20for%20developers%3A%20https%3A%2F%2Fgenerativeprogrammer.com%2F">X</a> &#183; <a href="https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fgenerativeprogrammer.com%2F&amp;summary=Checkout%20this%20newsletter%20with%20the%20latest%20AI%20news%20for%20developers">LinkedIn</a> &#183; <a href="https://bsky.app/intent/compose?text=Checkout%20this%20newsletter%20with%20the%20latest%20AI%20news%20for%20developers%3A%20https%3A%2F%2Fgenerativeprogrammer.com%2F">BlueSky</a> &#183; <a href="mailto:?subject=Check%20out%20this%20newsletter&amp;body=Checkout%20this%20newsletter%20with%20the%20latest%20AI%20news%20for%20developers%3A%20https%3A%2F%2Fgenerativeprogrammer.com%2F">Email</a>. Have a great rest of the week! </p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://generativeprogrammer.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://generativeprogrammer.com/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item><item><title><![CDATA[Taxonomy of AI Agents: Headless, Ambient, Durable, and Beyond]]></title><description><![CDATA[A Practical guide to the new agentic vocabulary]]></description><link>https://generativeprogrammer.com/p/taxonomy-of-ai-agents-headless-ambient</link><guid isPermaLink="false">https://generativeprogrammer.com/p/taxonomy-of-ai-agents-headless-ambient</guid><dc:creator><![CDATA[Bilgin Ibryam]]></dc:creator><pubDate>Sat, 01 Nov 2025 17:10:11 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Nlj7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F143cd2e9-6b70-44bc-9920-58e053f02cff_3174x1862.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Terms like <em>headless</em>, <em>ambient</em>, and <em>durable agents</em> are popping up everywhere, but often used inconsistently. Before we get lost in the hype, it&#8217;s worth aligning on what these terms actually mean and what they truly emphasize. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Nlj7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F143cd2e9-6b70-44bc-9920-58e053f02cff_3174x1862.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Nlj7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F143cd2e9-6b70-44bc-9920-58e053f02cff_3174x1862.png 424w, https://substackcdn.com/image/fetch/$s_!Nlj7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F143cd2e9-6b70-44bc-9920-58e053f02cff_3174x1862.png 848w, https://substackcdn.com/image/fetch/$s_!Nlj7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F143cd2e9-6b70-44bc-9920-58e053f02cff_3174x1862.png 1272w, https://substackcdn.com/image/fetch/$s_!Nlj7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F143cd2e9-6b70-44bc-9920-58e053f02cff_3174x1862.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Nlj7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F143cd2e9-6b70-44bc-9920-58e053f02cff_3174x1862.png" width="1456" height="854" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/143cd2e9-6b70-44bc-9920-58e053f02cff_3174x1862.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:854,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:483443,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/177186772?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F143cd2e9-6b70-44bc-9920-58e053f02cff_3174x1862.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Nlj7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F143cd2e9-6b70-44bc-9920-58e053f02cff_3174x1862.png 424w, https://substackcdn.com/image/fetch/$s_!Nlj7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F143cd2e9-6b70-44bc-9920-58e053f02cff_3174x1862.png 848w, https://substackcdn.com/image/fetch/$s_!Nlj7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F143cd2e9-6b70-44bc-9920-58e053f02cff_3174x1862.png 1272w, https://substackcdn.com/image/fetch/$s_!Nlj7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F143cd2e9-6b70-44bc-9920-58e053f02cff_3174x1862.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Agent Types and Their Core Emphasis</figcaption></figure></div><h1>&#129302; What is an Agent?</h1><p>The concept of <strong>software agents</strong> is not new. One of the earliest formal definitions comes from the influential 1996 paper <em><a href="https://cse-robotics.engr.tamu.edu/dshell/cs631/papers/franklingraesser96agents.pdf">&#8220;Is it an Agent, or just a Program? A Taxonomy for Autonomous Agents&#8221;</a></em> by Stan Franklin and Art Graesser. In it, the authors proposed a formal distinction between agents and traditional programs, describing agents as:</p><blockquote><p><em>&#8220;...autonomous systems that perceive their environment, act upon it, and pursue goals.&#8221;</em><br><em>(Franklin &amp; Graesser, 1996, Third International Workshop on Agent Theories, Architectures, and Languages)</em></p></blockquote><p>Fast forward nearly three decades, and the concept of an &#8220;agent&#8221; has become central to AI system design, especially with the rise of <strong>LLM-based agents</strong>.</p><p>A short and practical definition comes from <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Simon Willison&quot;,&quot;id&quot;:5753967,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/5a30d45c-fcba-407a-bebf-96f51a8944a4_48x48.jpeg&quot;,&quot;uuid&quot;:&quot;9d1fe005-fbd9-44b7-8bc0-d063ac500fca&quot;}" data-component-name="MentionToDOM"></span>  in his post <em><a href="https://simonw.substack.com/p/i-think-agent-may-finally-have-a">&#8216;agent&#8217; may finally have a meaning&#8221;</a></em>:</p><blockquote><p><em>&#8220;An LLM agent runs tools in a loop to achieve a goal.&#8221;</em></p></blockquote><p>This is also my favourite definition and it captures the essence of modern AI agents: they combine language models with external tools to reason, act, and iterate toward objectives.</p><p>Meanwhile, <strong>Gartner</strong> offers a more enterprise-aligned definition in their 2024 report <em><a href="https://www.gartner.com/en/documents/6650134">&#8220;When to Use or Not to Use AI Agents&#8221;</a></em>:</p><blockquote><p><em>&#8220;AI agents are autonomous or semiautonomous software entities that use AI techniques to perceive, make decisions, take actions, and achieve goals in their digital or physical environments.&#8221;</em></p></blockquote><p>In practice today, agents are often built on loop-based architectures, capable of planning, executing actions (e.g., calling APIs or tools), and learning over time. From LLM-powered assistants to multi-agent ecosystems, the agent model is a foundational pattern in building goal-driven AI systems.</p><h1>&#129513; Headless Agents</h1><p>Headless agents emphasize a specific aspect of intelligence &#8212; <em>decoupling it from any fixed (usually a chat) interface. </em>As commonly <a href="https://www.arionresearch.com/blog/f0cl762e75x6icp6psj4dgdbewp4ik">defined</a>:</p><blockquote><p>&#8220;Headless AI agents are intelligent systems that <strong>operate without a fixed user interface,</strong> with their functionality exposed primarily through APIs or embedded directly into business systems and workflows.&#8221;</p></blockquote><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xpOo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6980267-b785-46ce-bc86-0b767564d6b0_891x550.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xpOo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6980267-b785-46ce-bc86-0b767564d6b0_891x550.webp 424w, https://substackcdn.com/image/fetch/$s_!xpOo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6980267-b785-46ce-bc86-0b767564d6b0_891x550.webp 848w, https://substackcdn.com/image/fetch/$s_!xpOo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6980267-b785-46ce-bc86-0b767564d6b0_891x550.webp 1272w, https://substackcdn.com/image/fetch/$s_!xpOo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6980267-b785-46ce-bc86-0b767564d6b0_891x550.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xpOo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6980267-b785-46ce-bc86-0b767564d6b0_891x550.webp" width="891" height="550" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c6980267-b785-46ce-bc86-0b767564d6b0_891x550.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:550,&quot;width&quot;:891,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:25506,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/177186772?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6980267-b785-46ce-bc86-0b767564d6b0_891x550.webp&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!xpOo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6980267-b785-46ce-bc86-0b767564d6b0_891x550.webp 424w, https://substackcdn.com/image/fetch/$s_!xpOo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6980267-b785-46ce-bc86-0b767564d6b0_891x550.webp 848w, https://substackcdn.com/image/fetch/$s_!xpOo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6980267-b785-46ce-bc86-0b767564d6b0_891x550.webp 1272w, https://substackcdn.com/image/fetch/$s_!xpOo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6980267-b785-46ce-bc86-0b767564d6b0_891x550.webp 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Headless Agent</figcaption></figure></div><p>Just like a headless CMS separates content from presentation, headless AI agents separate intelligence from interaction. This allows developers and organizations to build AI capabilities once and deploy them invisibly across channels, web apps, backend services, IoT devices, and more, without duplicating logic or tying intelligence to a specific UI.</p><p><strong>Key characteristics:</strong></p><ul><li><p><strong>Interface-agnostic intelligence:</strong> Reasoning and decision-making not tied to any specific UI, enabling reuse across channels.</p></li><li><p><strong>API-first operation:</strong> Invoked via APIs, events, or embedded logic, often running invisibly within larger workflows.</p></li><li><p><strong>Functionality over conversation:</strong> Unlike chatbots, their focus is performing tasks, not holding conversations.</p></li></ul><p>Salesforce was among first to introduce a <a href="https://developer.salesforce.com/blogs/2025/04/build-headless-agents-with-the-agent-api">Headless Agent API</a>, making this concept mainstream for enterprise-grade automation.</p><h1>&#128225; Ambient Agents </h1><p>Ambient agents are a specific type of headless agent that emphasize <strong>operating in the background</strong>, <strong>autonomous initiation, and context awareness</strong>.</p><p>As described by <a href="https://blog.langchain.com/introducing-ambient-agents/">LangChain</a>:</p><blockquote><p>&#8220;Ambient agents listen to an event stream and act on it accordingly, potentially acting on multiple events at a time.&#8221;</p></blockquote><p>These agents run quietly in the background, activated by signals, incoming emails, data updates, system triggers, or scheduled events, rather than human prompts.<br>They maintain full context awareness, tracking both current system states and past interactions to make informed, autonomous decisions.</p><p>When necessary, they introduce a human-in-the-loop through structured prompts such as:</p><ul><li><p><strong>Notify:</strong> &#8220;Here&#8217;s something important you should see.&#8221;</p></li><li><p><strong>Question:</strong> &#8220;I need your input to proceed.&#8221;</p></li><li><p><strong>Review:</strong> &#8220;Here&#8217;s what I plan to do &#8212; approve or edit?&#8221;</p></li></ul><p>Other key characteristics include persistent memory, tool-driven actions, multi-agent orchestration, and durability across long-running workflows.</p><p>In essence, <em><strong>ambient</strong></em><strong> and </strong><em><strong>headless</strong></em><strong> agents <a href="https://www.walturn.com/insights/chat-agents-vs-ambient-agents-two-paths-to-ai-driven-assistance">share the same foundation</a></strong> of interface-free intelligence, but ambient agents place stronger emphasis on <strong>proactive, event-driven operation</strong> and <strong>human collaboration</strong> &#8212; making the two terms largely interchangeable in practice.</p><h1>&#128190; Durable Agents </h1><p>Durable agents emphasize <strong>durable execution</strong>, in contrast to non-durable agents, where execution state is typically held in memory and lost on failure or restart.</p><p>Durable agents persist their full execution history, allowing them to recover gracefully from crashes, restarts, or API failures without restarting the task or repeating actions.</p><p>As described by <strong>Pydantic AI</strong>:</p><blockquote><p>&#8220;Durable agents can preserve their progress across transient API failures and application errors or restarts, and handle long-running, asynchronous, and human-in-the-loop workflows with production-grade reliability.&#8221;</p></blockquote><p>Durability involves persisting not only the conversation history, but also every LLM call and tool invocation &#8212; so the agent can resume exactly where it left off. This avoids re-executing steps that may have side effects or lead to duplication which is a common problem in non-durable frameworks.</p><p>Different agentic frameworks achieve durability differently. For example, <strong><a href="https://ai.pydantic.dev/durable_execution/overview/">Pydantic integrates</a> </strong>with systems such as Temporal, DBOS, and Prefect. In contrast, <strong><a href="https://github.com/dapr/dapr-agents">Dapr Agents</a></strong>, offer native support for durability via a built-in <code>DurableAgent</code> type. This agent type combine multiple traits:</p><ul><li><p><strong>Headless</strong> &#8211; invokable via REST APIs, with no fixed interface</p></li><li><p><strong>Ambient</strong> &#8211; can be triggered by an event stream</p></li><li><p><strong>Durable</strong> &#8211; backed by a persistent workflow engine</p></li></ul><p>Other frameworks offering durability include: <a href="https://stack.convex.dev/durable-workflows-and-strong-guarantees">Convex</a> and <a href="https://www.restate.dev/blog/durable-ai-loops-fault-tolerance-across-frameworks-and-without-handcuffs">Restate</a>.</p><h1>&#129504; Deep Agents</h1><p>Deep agents are an evolution of traditional (shallow?) agents with a goal to handle <strong>complex, multi-step tasks</strong> by combining planning, memory, and delegation. In reality, these are multi-agent systems with specialized sub-agents, and that&#8217;s an implementation detail.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nfMA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6818daa7-c79c-4fa9-afc0-5198590d3e17_1548x1114.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nfMA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6818daa7-c79c-4fa9-afc0-5198590d3e17_1548x1114.png 424w, https://substackcdn.com/image/fetch/$s_!nfMA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6818daa7-c79c-4fa9-afc0-5198590d3e17_1548x1114.png 848w, https://substackcdn.com/image/fetch/$s_!nfMA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6818daa7-c79c-4fa9-afc0-5198590d3e17_1548x1114.png 1272w, https://substackcdn.com/image/fetch/$s_!nfMA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6818daa7-c79c-4fa9-afc0-5198590d3e17_1548x1114.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nfMA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6818daa7-c79c-4fa9-afc0-5198590d3e17_1548x1114.png" width="1456" height="1048" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6818daa7-c79c-4fa9-afc0-5198590d3e17_1548x1114.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1048,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:198620,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/177186772?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6818daa7-c79c-4fa9-afc0-5198590d3e17_1548x1114.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!nfMA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6818daa7-c79c-4fa9-afc0-5198590d3e17_1548x1114.png 424w, https://substackcdn.com/image/fetch/$s_!nfMA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6818daa7-c79c-4fa9-afc0-5198590d3e17_1548x1114.png 848w, https://substackcdn.com/image/fetch/$s_!nfMA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6818daa7-c79c-4fa9-afc0-5198590d3e17_1548x1114.png 1272w, https://substackcdn.com/image/fetch/$s_!nfMA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6818daa7-c79c-4fa9-afc0-5198590d3e17_1548x1114.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Deep Agent</figcaption></figure></div><p>As  <a href="https://www.philschmid.de/agents-2.0-deep-agents">Philipp Schmid</a> summarizes:</p><blockquote><p>&#8220;These systems do not just react in a loop. They combine agentic patterns to plan, manage persistent memory/state, and delegate work to specialized sub-agents to solve multi-step, complex problems.&#8221;</p></blockquote><p><strong>Core components:</strong></p><ul><li><p>&#128506;&#65039; <strong>Planning:</strong> Maintain an explicit task plan (a to-do list) that updates dynamically.</p></li><li><p>&#129513; <strong>Sub-agents:</strong> A central orchestrator delegates tasks to specialized sub-agents (researcher, coder, writer, etc.).</p></li><li><p>&#128190; <strong>Persistent memory:</strong> Use external stores (files, vector DBs) to retain state and share results across steps.</p></li></ul><p>This architecture makes deep agents more robust and modular, <strong>shifting design from reactive prompting to proactive problem solving.</strong></p><h1>&#9881;&#65039; Agentic Workflow</h1><p>This is not an agent type, but how some agents operate. There are still conflicting definitions of <em>Agentic Workflows</em>. I <a href="https://x.com/bibryam/status/1984010451370299425">ran</a> a poll asking:</p><blockquote><p>What is an Agentic Workflow?<br>1&#65039;&#8419; A deterministic workflow where agents execute predefined steps.<br>2&#65039;&#8419; A human-defined goal, where an agent dynamically plans and executes a workflow to reach it.</p></blockquote><p>After the discussion, the consensus leaned strongly toward <strong>option 2</strong> &#8212; <em>a human-defined goal where an agent dynamically plans and executes a workflow to reach that goal.</em></p><p>Here is a concise definition from <strong>IBM (with </strong><a href="https://weaviate.io/blog/what-are-agentic-workflows">Weaviate</a> offering a similar one):</p><blockquote><p>&#8220;Agentic workflows are AI-driven processes in which autonomous AI agents make decisions, take actions, and coordinate tasks with minimal human intervention. They use reasoning, planning, and tool use to execute complex, dynamic, multistep workflows that adapt to real-time data and changing conditions, unlike traditional rule-based automation.&#8221;<br>&#8212; <a href="https://www.ibm.com/think/topics/agentic-workflows">IBM</a>, </p></blockquote><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Y1OJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F021975fa-8ee4-4f4a-8346-db51902cfa8e_2560x1440.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Y1OJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F021975fa-8ee4-4f4a-8346-db51902cfa8e_2560x1440.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Y1OJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F021975fa-8ee4-4f4a-8346-db51902cfa8e_2560x1440.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Y1OJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F021975fa-8ee4-4f4a-8346-db51902cfa8e_2560x1440.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Y1OJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F021975fa-8ee4-4f4a-8346-db51902cfa8e_2560x1440.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Y1OJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F021975fa-8ee4-4f4a-8346-db51902cfa8e_2560x1440.jpeg" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/021975fa-8ee4-4f4a-8346-db51902cfa8e_2560x1440.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;types-of-workflows.jpg&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="types-of-workflows.jpg" title="types-of-workflows.jpg" srcset="https://substackcdn.com/image/fetch/$s_!Y1OJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F021975fa-8ee4-4f4a-8346-db51902cfa8e_2560x1440.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Y1OJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F021975fa-8ee4-4f4a-8346-db51902cfa8e_2560x1440.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Y1OJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F021975fa-8ee4-4f4a-8346-db51902cfa8e_2560x1440.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Y1OJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F021975fa-8ee4-4f4a-8346-db51902cfa8e_2560x1440.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Agentic Workflow</figcaption></figure></div><p>In short, <strong>agentic workflows</strong> are when <em>agents define a plan (workflow) and runs itself</em>, reasoning, adapting, and acting toward a defined goal. </p><div><hr></div><p>This is a fast-moving space and new terms appear weekly. If you come across a new <em>agentic</em> concept or definition that deserves to be added here, share it. I&#8217;ll keep updating this post as the vocabulary evolves.</p>]]></content:encoded></item><item><title><![CDATA[🤖 Generative Programmer | Issue #15]]></title><description><![CDATA[Summer 2025: Patterns, Frameworks, and Productivity in AI Development]]></description><link>https://generativeprogrammer.com/p/generative-programmer-issue-15</link><guid isPermaLink="false">https://generativeprogrammer.com/p/generative-programmer-issue-15</guid><dc:creator><![CDATA[Bilgin Ibryam]]></dc:creator><pubDate>Sun, 07 Sep 2025 14:18:02 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!iV47!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8846c214-37f5-44fb-9d87-21b6245d3d3d_1344x1300.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>&#128227; Welcome back! Here&#8217;s everything that happened this summer in agentic systems and AI-assisted coding, all in one post. &#128279; Share: <a href="https://twitter.com/intent/tweet?text=Checkout%20this%20newsletter%20with%20the%20latest%20AI%20news%20for%20developers%3A%20https%3A%2F%2Fgenerativeprogrammer.com%2F">X</a> &#183; <a href="https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fgenerativeprogrammer.com%2F&amp;summary=Checkout%20this%20newsletter%20with%20the%20latest%20AI%20news%20for%20developers">LinkedIn</a> &#183; <a href="https://bsky.app/intent/compose?text=Checkout%20this%20newsletter%20with%20the%20latest%20AI%20news%20for%20developers%3A%20https%3A%2F%2Fgenerativeprogrammer.com%2F">BlueSky</a> &#183; <a href="mailto:?subject=Check%20out%20this%20newsletter&amp;body=Checkout%20this%20newsletter%20with%20the%20latest%20AI%20news%20for%20developers%3A%20https%3A%2F%2Fgenerativeprogrammer.com%2F">Email</a> and let&#8217;s dive in.</p><h2>&#128293; Top Picks from Summer of 2025</h2><p>&#128216; <a href="https://arxiv.org/abs/2405.10467">Agent Design Pattern Catalogue</a> -Yue Liu &#128293;<br>&#129504; <a href="https://www.dbreunig.com/2025/06/26/how-to-fix-your-context.html">How to Fix Your Context</a> &#8211; Drew Breunig<br>&#9881;&#65039; <a href="https://medium.com/binome/ai-agent-workflow-design-patterns-an-overview-cf9e1f609696">AI Agent Workflow Design Patterns</a> &#8211; Craig Li<br>&#127959;&#65039; <a href="https://magazine.sebastianraschka.com/p/the-big-llm-architecture-comparison">The Big LLM Architecture Comparison</a> &#8211; Sebastian Raschka &#128293;<br>&#128161; <a href="https://www.dbreunig.com/2025/06/10/let-the-model-write-the-prompt.html">Why Applications &amp; Pipelines Should Use DSPy</a> &#8211; Drew Breunig<br>&#128736;&#65039; <a href="https://secondthoughts.ai/p/ai-coding-slowdown">AI Coding Tools Can Actually Reduce Productivity</a> &#8211; Second Thoughts<br>&#127970; <a href="https://www.infoq.com/articles/agentic-ai-architecture-framework/">Agentic AI Architecture Framework for Enterprises</a> &#8211; InfoQ<br>&#9889; <a href="https://magazine.sebastianraschka.com/p/coding-the-kv-cache-in-llms">Understanding the KV Cache in LLMs from Scratch</a> &#8211; Sebastian Raschka<br>&#127909; <a href="https://www.youtube.com/watch?v=6eBSHbLKuN0">Mastering Claude Code in 30 minutes</a> &#8211; Claude Code team<br>&#9760;&#65039; <a href="https://x.com/jasonlk/status/1946069562723897802">Replit goes rogue during a code freeze and deletes an entire prod database</a>  </p><p>&#8230;and if you dare, <em>100+ updates</em> to explore &#128071;</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://generativeprogrammer.com/p/generative-programmer-issue-15?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://generativeprogrammer.com/p/generative-programmer-issue-15?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><h2>&#127919; Featured Article</h2><p><a href="https://arxiv.org/abs/2405.10467">Agent Design Pattern Catalogue</a> &#8211; Yue Liu and colleagues present 18 architectural patterns for building foundation model-based agents. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!iV47!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8846c214-37f5-44fb-9d87-21b6245d3d3d_1344x1300.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!iV47!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8846c214-37f5-44fb-9d87-21b6245d3d3d_1344x1300.png 424w, https://substackcdn.com/image/fetch/$s_!iV47!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8846c214-37f5-44fb-9d87-21b6245d3d3d_1344x1300.png 848w, https://substackcdn.com/image/fetch/$s_!iV47!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8846c214-37f5-44fb-9d87-21b6245d3d3d_1344x1300.png 1272w, https://substackcdn.com/image/fetch/$s_!iV47!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8846c214-37f5-44fb-9d87-21b6245d3d3d_1344x1300.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!iV47!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8846c214-37f5-44fb-9d87-21b6245d3d3d_1344x1300.png" width="1344" height="1300" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8846c214-37f5-44fb-9d87-21b6245d3d3d_1344x1300.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1300,&quot;width&quot;:1344,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:388214,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/173013557?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8846c214-37f5-44fb-9d87-21b6245d3d3d_1344x1300.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!iV47!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8846c214-37f5-44fb-9d87-21b6245d3d3d_1344x1300.png 424w, https://substackcdn.com/image/fetch/$s_!iV47!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8846c214-37f5-44fb-9d87-21b6245d3d3d_1344x1300.png 848w, https://substackcdn.com/image/fetch/$s_!iV47!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8846c214-37f5-44fb-9d87-21b6245d3d3d_1344x1300.png 1272w, https://substackcdn.com/image/fetch/$s_!iV47!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8846c214-37f5-44fb-9d87-21b6245d3d3d_1344x1300.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>Agentic systems and architectural patterns ecosystems</em></p><p><a href="https://arxiv.org/abs/2405.10467">The catalogue</a> covers context, forces, and trade-offs in agent design, and introduces a decision model to help practitioners address challenges like hallucinations, explainability, and accountability. A comprehensive guide for anyone architecting agentic systems. &#128293;</p><h2><strong>&#128240; Building Agentic Systems</strong></h2><p><a href="https://www.dbreunig.com/2025/06/26/how-to-fix-your-context.html">How to Fix Your Context | Drew Breunig</a> - Techniques for managing context in AI to avoid "garbage in, garbage out" problems.</p><p><a href="https://medium.com/@mkipcak/the-power-of-agentic-mesh-in-modern-banking-architecture-a8b749fe13a3">Agentic Mesh for Regulatory Compliance: EU AI Act &amp; DORA Integration</a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IRaS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6550ed92-9840-4ac1-adda-0373ffc570ba_1400x3913.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IRaS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6550ed92-9840-4ac1-adda-0373ffc570ba_1400x3913.webp 424w, https://substackcdn.com/image/fetch/$s_!IRaS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6550ed92-9840-4ac1-adda-0373ffc570ba_1400x3913.webp 848w, https://substackcdn.com/image/fetch/$s_!IRaS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6550ed92-9840-4ac1-adda-0373ffc570ba_1400x3913.webp 1272w, https://substackcdn.com/image/fetch/$s_!IRaS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6550ed92-9840-4ac1-adda-0373ffc570ba_1400x3913.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IRaS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6550ed92-9840-4ac1-adda-0373ffc570ba_1400x3913.webp" width="1400" height="3913" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6550ed92-9840-4ac1-adda-0373ffc570ba_1400x3913.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:3913,&quot;width&quot;:1400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:235436,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/173013557?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6550ed92-9840-4ac1-adda-0373ffc570ba_1400x3913.webp&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!IRaS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6550ed92-9840-4ac1-adda-0373ffc570ba_1400x3913.webp 424w, https://substackcdn.com/image/fetch/$s_!IRaS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6550ed92-9840-4ac1-adda-0373ffc570ba_1400x3913.webp 848w, https://substackcdn.com/image/fetch/$s_!IRaS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6550ed92-9840-4ac1-adda-0373ffc570ba_1400x3913.webp 1272w, https://substackcdn.com/image/fetch/$s_!IRaS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6550ed92-9840-4ac1-adda-0373ffc570ba_1400x3913.webp 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>Agent ReAct design pattern implementation</em></figcaption></figure></div><p><a href="https://medium.com/binome/ai-agent-workflow-design-patterns-an-overview-cf9e1f609696">AI Agent Workflow Design Patterns</a> - Craig Li introduces the implementation of an agent framework based on AI Agent Design Patterns while researching various workflow patterns that combine LLM reasoning capabilities, memory, and task execution.</p><p><a href="https://zed.dev/blog/agentic-engineering-with-mitchell-hashimoto">Agentic Engineering in Action</a> - Mitchell Hashimoto explains his AI-assisted development approach for Ghostty.</p><p><a href="https://www.llamaindex.ai/blog/context-engineering-what-it-is-and-techniques-to-consider">Context Engineering - What it is, and techniques to consider</a> - A guide to providing AI agents with relevant context for effective task performance.</p><p><a href="https://lalitgehani.medium.com/when-ai-needs-a-helping-hand-pydantic-agents-and-human-in-the-loop-0f5a4bd54c78">Pydantic Agents and Human-in-the-Loop</a> - Lalit demonstrates how to build AI agents with PydanticAI that incorporate human feedback when faced with ambiguous situations, using a weather information system as a practical example.</p><p><a href="https://www.googlecloudcommunity.com/gc/Community-Blogs/Agents-are-not-tools/ba-p/922716?utm_source=substack&amp;utm_medium=email">Agents are not tools - Google Developer forums</a> - This post examines the crucial distinction between agents and tools, highlighting how their different decision-making control flows require unique interaction approaches.</p><p><a href="https://muthuishere.medium.com/understanding-tool-function-calling-in-llms-step-by-step-examples-in-rest-and-spring-ai-2149ecd6b18b">Understanding Tool Calling with Step-by-Step Examples in REST and Spring AI</a> - Muthukumaran Navaneethakrishnan provides a comprehensive guide on implementing OpenAI-style tool calling in LLMs, with practical code examples in both REST and Spring AI, complete with diagrams and end-to-end implementation flows.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1HJv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F001ca3a2-620d-4244-a3c6-2aeee215bcec_1456x1334.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1HJv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F001ca3a2-620d-4244-a3c6-2aeee215bcec_1456x1334.webp 424w, https://substackcdn.com/image/fetch/$s_!1HJv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F001ca3a2-620d-4244-a3c6-2aeee215bcec_1456x1334.webp 848w, https://substackcdn.com/image/fetch/$s_!1HJv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F001ca3a2-620d-4244-a3c6-2aeee215bcec_1456x1334.webp 1272w, https://substackcdn.com/image/fetch/$s_!1HJv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F001ca3a2-620d-4244-a3c6-2aeee215bcec_1456x1334.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1HJv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F001ca3a2-620d-4244-a3c6-2aeee215bcec_1456x1334.webp" width="1456" height="1334" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/001ca3a2-620d-4244-a3c6-2aeee215bcec_1456x1334.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1334,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:89054,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/173013557?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F001ca3a2-620d-4244-a3c6-2aeee215bcec_1456x1334.webp&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!1HJv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F001ca3a2-620d-4244-a3c6-2aeee215bcec_1456x1334.webp 424w, https://substackcdn.com/image/fetch/$s_!1HJv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F001ca3a2-620d-4244-a3c6-2aeee215bcec_1456x1334.webp 848w, https://substackcdn.com/image/fetch/$s_!1HJv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F001ca3a2-620d-4244-a3c6-2aeee215bcec_1456x1334.webp 1272w, https://substackcdn.com/image/fetch/$s_!1HJv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F001ca3a2-620d-4244-a3c6-2aeee215bcec_1456x1334.webp 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A2A + MCP </figcaption></figure></div><p><a href="https://www.newsletter.swirlai.com/p/mcp-vs-a2a-friends-or-foes">MCP vs. A2A: Friends or Foes?</a> - Aurimas Grici&#363;nas examines how Google's new A2A protocol competes with Anthropic's MCP in the race to establish standards for multi-agent AI system communication.</p><p><a href="https://www.infoq.com/articles/agentic-ai-architecture-framework/">Agentic AI Architecture Framework for Enterprises - InfoQ</a> - Enterprise framework for building autonomous AI systems that can plan and execute tasks independently.</p><p><a href="https://addyo.substack.com/p/context-engineering-bringing-engineering">Context Engineering: Bringing Engineering Discipline to Prompts</a> - Osmani: Give AI complete context, not just clever prompts.</p><p><a href="https://machinelearning.apple.com/research/codeact">CodeAct</a> - Apple researchers propose using executable Python code as a unified action space for LLM agents, enabling more flexible tool composition and dynamic action revision compared to traditional JSON or text-based formats.</p><p><a href="https://www.aitidbits.ai/p/open-source-agents-updated">The Open-Source Toolkit for Building AI Agents v2</a> - Updated toolkit overview for AI agent developers.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!HeWF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56046338-0bd9-4c59-b261-2c8c17c43639_1000x1000.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HeWF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56046338-0bd9-4c59-b261-2c8c17c43639_1000x1000.png 424w, https://substackcdn.com/image/fetch/$s_!HeWF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56046338-0bd9-4c59-b261-2c8c17c43639_1000x1000.png 848w, https://substackcdn.com/image/fetch/$s_!HeWF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56046338-0bd9-4c59-b261-2c8c17c43639_1000x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!HeWF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56046338-0bd9-4c59-b261-2c8c17c43639_1000x1000.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HeWF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56046338-0bd9-4c59-b261-2c8c17c43639_1000x1000.png" width="1000" height="1000" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/56046338-0bd9-4c59-b261-2c8c17c43639_1000x1000.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1000,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1089245,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/173013557?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56046338-0bd9-4c59-b261-2c8c17c43639_1000x1000.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!HeWF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56046338-0bd9-4c59-b261-2c8c17c43639_1000x1000.png 424w, https://substackcdn.com/image/fetch/$s_!HeWF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56046338-0bd9-4c59-b261-2c8c17c43639_1000x1000.png 848w, https://substackcdn.com/image/fetch/$s_!HeWF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56046338-0bd9-4c59-b261-2c8c17c43639_1000x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!HeWF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56046338-0bd9-4c59-b261-2c8c17c43639_1000x1000.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>Context Engineering Overview</em></figcaption></figure></div><p><a href="https://www.linkedin.com/pulse/from-prompt-engineer-context-architect-designing-future-gill-geuzc/">Context Is the New Compute: Designing the Future of Agentic</a> - Gill: Context engineering replaces prompt engineering as AI agents grow more complex.</p><p><a href="https://manus.im/blog/Context-Engineering-for-AI-Agents-Lessons-from-Building-Manus">Context Engineering for AI Agents: Lessons from Building Manus</a> - Manus team shares optimized principles for AI agent development based on their own experiences, offering valuable shortcuts for developers building similar systems.</p><p><a href="https://arxiv.org/abs/2402.01030">Executable Code Actions Elicit Better LLM Agents</a> - Xingyao Wang: Code-based actions enhance LLM agent effectiveness.</p><h2><strong>&#128240; Coding with AI</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LqDR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73b3aab4-e3a8-4b48-acd2-90dd7937ae53_1132x1458.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LqDR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73b3aab4-e3a8-4b48-acd2-90dd7937ae53_1132x1458.png 424w, https://substackcdn.com/image/fetch/$s_!LqDR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73b3aab4-e3a8-4b48-acd2-90dd7937ae53_1132x1458.png 848w, https://substackcdn.com/image/fetch/$s_!LqDR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73b3aab4-e3a8-4b48-acd2-90dd7937ae53_1132x1458.png 1272w, https://substackcdn.com/image/fetch/$s_!LqDR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73b3aab4-e3a8-4b48-acd2-90dd7937ae53_1132x1458.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LqDR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73b3aab4-e3a8-4b48-acd2-90dd7937ae53_1132x1458.png" width="1132" height="1458" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/73b3aab4-e3a8-4b48-acd2-90dd7937ae53_1132x1458.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1458,&quot;width&quot;:1132,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:252051,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/173013557?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73b3aab4-e3a8-4b48-acd2-90dd7937ae53_1132x1458.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!LqDR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73b3aab4-e3a8-4b48-acd2-90dd7937ae53_1132x1458.png 424w, https://substackcdn.com/image/fetch/$s_!LqDR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73b3aab4-e3a8-4b48-acd2-90dd7937ae53_1132x1458.png 848w, https://substackcdn.com/image/fetch/$s_!LqDR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73b3aab4-e3a8-4b48-acd2-90dd7937ae53_1132x1458.png 1272w, https://substackcdn.com/image/fetch/$s_!LqDR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73b3aab4-e3a8-4b48-acd2-90dd7937ae53_1132x1458.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>Outline for training a product engineering team covered bellow</em></figcaption></figure></div><p><a href="https://blog.thepete.net/blog/2025/06/26/leading-your-engineers-towards-an-ai-assisted-future/">Leading your engineers towards an AI-assisted future</a> - Pete Hodgson questions whether the team is leveraging AI coding tools enough.</p><p><a href="https://addyo.substack.com/p/coding-for-the-future-agentic-world">Coding for the Future Agentic World</a> - <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Addy Osmani&quot;,&quot;id&quot;:11623675,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cee7ba66-e656-4450-a0ed-c951c27ee228_1080x1080.jpeg&quot;,&quot;uuid&quot;:&quot;0c2a3e21-90c8-4456-b2db-7e116983eb11&quot;}" data-component-name="MentionToDOM"></span> examines how AI agents are transforming software development workflows.</p><p><a href="https://www.notcheckmark.com/2025/07/rethinking-cli-interfaces-for-ai/">Rethinking CLI interfaces for AI</a> - CLI tools need AI-friendly redesigns to balance context windows and information needs.</p><p><a href="https://antirez.com/news/154">Coding with LLMs in the summer of 2025</a> - Antirez: A forward-looking analysis of AI-assisted programming in 2025.</p><p><a href="https://secondthoughts.ai/p/ai-coding-slowdown">AI Coding Tools Can Actually Reduce Productivity</a> - Study shows AI coding tools may hinder experienced developers' productivity.</p><p><a href="https://metr.org/blog/2025-07-10-early-2025-ai-experienced-os-dev-study/">Measuring the Impact of Early-2025 AI on Experienced Open-Source Developer Productivity - METR</a> - Joel Becker's overview of the report.</p><p><a href="https://newsletter.pragmaticengineer.com/p/software-engineering-with-llms-in-2025">Software engineering with LLMs in 2025: reality check</a> - Gergely Orosz shares insights from discussions with engineers at leading AI companies about current AI tool usage patterns and emerging trends in software development.</p><p><a href="https://www.martinfowler.com/articles/2025-nature-abstraction.html">LLMs bring new nature of abstraction</a> - Martin Fowler: LLMs fundamentally change programming by introducing non-deterministic abstraction.</p><p><a href="https://atomic14.substack.com/p/vibe-coding-a-pcb-surprisingly-good">Vibe-Coding a PCB - surprisingly good</a> - Chris Greening demonstrates how AI can successfully design functional hardware</p><p><a href="https://andrewkchan.dev/posts/systems.html">Vibecoding a high performance system</a> - AI-assisted development of a billion-page web crawler with minimal manual coding.</p><p><a href="https://blog.thepete.net/blog/2025/06/26/leading-your-engineers-towards-an-ai-assisted-future/">Leading your engineers towards an AI-assisted future | Pete Hodgson</a> - A conversation about balancing AI hype with practical engineering value.</p><p><a href="https://www.linkedin.com/posts/brianpwhite_%F0%9D%97%9B%F0%9D%97%BC%F0%9D%98%84-%F0%9D%98%81%F0%9D%97%BC-%F0%9D%98%80%F0%9D%97%BD%F0%9D%97%BC%F0%9D%98%81-%F0%9D%97%94%F0%9D%97%9C-%F0%9D%97%9A%F0%9D%97%B2%F0%9D%97%BB%F0%9D%97%B2%F0%9D%97%BF%F0%9D%97%AE%F0%9D%98%81%F0%9D%97%B2%F0%9D%97%B1-activity-7353385252502794240-uVkP/">How to spot AI Generated Code</a> - Brian White-Starrs on LinkedIn</p><p><a href="https://ainativedev.io/news/from-vibe-coding-to-vibe-planning">From vibe coding to vibe planning</a> - AI Native Dev's article examines a real-world incident where an AI coding assistant deleted a production database during "vibe coding," highlighting the dangers of unleashing AI on live codebases and Replit's subsequent response to improve safety.</p><p><a href="https://ainativedev.io/news/how-to-parallelize-ai-coding-agents">Parallelizing AI Coding Agents | AI Native Dev</a> - The author examines the evolution of AI coding from simple prompting to autonomous agents, highlighting how parallel agent architecture creates faster but more complex workflows similar to asynchronous programming models.</p><p><a href="https://blog.singleton.io/posts/2025-06-14-coding-agents-cross-a-chasm/">Coding agents have crossed a chasm</a></p><p><a href="https://www.latent.space/p/anita-tdd">AI Agents, meet Test Driven Development</a> - Applying TDD principles to AI agent development workflows.</p><p><a href="https://lucumr.pocoo.org/2025/6/12/agentic-coding/">Agentic Coding Recommendations</a> - Armin Ronacher shares his practical workflow for agentic coding, detailing his preference for Claude Code with the Max subscription and how he optimizes for token efficiency while giving agents full permissions.</p><p><a href="https://newsletter.pragmaticengineer.com/p/two-years-of-using-ai">Learnings from two years of using AI tools for software engineering</a> - Practical insights from a Thoughtworks engineer's two-year AI tools exploration.</p><h2><strong>&#128240; Long-Form Reads</strong></h2><p><a href="https://www.dbreunig.com/2025/05/06/you-got-commands-in-my-prompt.html">You Got Commands in My Prompt!</a> - Breunig: New Qwen 3 models let you control reasoning with simple prompt commands.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xcMz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43cb8f95-5a3b-4877-8bb5-cec6caf96890_1456x1016.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xcMz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43cb8f95-5a3b-4877-8bb5-cec6caf96890_1456x1016.webp 424w, https://substackcdn.com/image/fetch/$s_!xcMz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43cb8f95-5a3b-4877-8bb5-cec6caf96890_1456x1016.webp 848w, https://substackcdn.com/image/fetch/$s_!xcMz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43cb8f95-5a3b-4877-8bb5-cec6caf96890_1456x1016.webp 1272w, https://substackcdn.com/image/fetch/$s_!xcMz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43cb8f95-5a3b-4877-8bb5-cec6caf96890_1456x1016.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xcMz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43cb8f95-5a3b-4877-8bb5-cec6caf96890_1456x1016.webp" width="1456" height="1016" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/43cb8f95-5a3b-4877-8bb5-cec6caf96890_1456x1016.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1016,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:122528,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/173013557?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43cb8f95-5a3b-4877-8bb5-cec6caf96890_1456x1016.webp&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!xcMz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43cb8f95-5a3b-4877-8bb5-cec6caf96890_1456x1016.webp 424w, https://substackcdn.com/image/fetch/$s_!xcMz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43cb8f95-5a3b-4877-8bb5-cec6caf96890_1456x1016.webp 848w, https://substackcdn.com/image/fetch/$s_!xcMz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43cb8f95-5a3b-4877-8bb5-cec6caf96890_1456x1016.webp 1272w, https://substackcdn.com/image/fetch/$s_!xcMz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43cb8f95-5a3b-4877-8bb5-cec6caf96890_1456x1016.webp 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>A subset of the architectures covered in the article bellow.</em></figcaption></figure></div><p><a href="https://magazine.sebastianraschka.com/p/the-big-llm-architecture-comparison">The Big LLM Architecture Comparison</a> - Raschka analyzes LLM evolution: incremental tweaks or true innovation?</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!HaH7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faffb115a-9e10-4684-b9da-b0eabcdbcb9e_1024x576.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HaH7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faffb115a-9e10-4684-b9da-b0eabcdbcb9e_1024x576.jpeg 424w, https://substackcdn.com/image/fetch/$s_!HaH7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faffb115a-9e10-4684-b9da-b0eabcdbcb9e_1024x576.jpeg 848w, https://substackcdn.com/image/fetch/$s_!HaH7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faffb115a-9e10-4684-b9da-b0eabcdbcb9e_1024x576.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!HaH7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faffb115a-9e10-4684-b9da-b0eabcdbcb9e_1024x576.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HaH7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faffb115a-9e10-4684-b9da-b0eabcdbcb9e_1024x576.jpeg" width="1024" height="576" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/affb115a-9e10-4684-b9da-b0eabcdbcb9e_1024x576.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:576,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:51238,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/173013557?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faffb115a-9e10-4684-b9da-b0eabcdbcb9e_1024x576.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!HaH7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faffb115a-9e10-4684-b9da-b0eabcdbcb9e_1024x576.jpeg 424w, https://substackcdn.com/image/fetch/$s_!HaH7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faffb115a-9e10-4684-b9da-b0eabcdbcb9e_1024x576.jpeg 848w, https://substackcdn.com/image/fetch/$s_!HaH7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faffb115a-9e10-4684-b9da-b0eabcdbcb9e_1024x576.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!HaH7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faffb115a-9e10-4684-b9da-b0eabcdbcb9e_1024x576.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Gift or a Curse?</figcaption></figure></div><p><a href="https://www.dbreunig.com/2025/06/10/let-the-model-write-the-prompt.html">Why Applications &amp; Pipelines Should Use DSPy</a> - Breunig explains using DSPy to let models write their own prompts.</p><p><a href="https://www.scalekit.com/blog/mcp-stack">MCP market map</a> - Finsweet examines how the Model Context Protocol (MCP) is evolving from a technical specification into a thriving ecosystem with commercial opportunities similar to the API economy, but accelerated by AI integration.</p><p><a href="https://www.seangoedecke.com/building-tiny-ai-tools/">Building tiny AI tools for developer productivity</a> - Title says it all</p><p><a href="https://rdel.substack.com/p/rdel-99-how-has-ai-impacted-engineering">How has AI impacted engineering leadership in 2025?</a> - Lizzie Matusov examines the 2025 Engineering Leadership Report which surveyed 617 engineering leaders</p><p><a href="https://www.growthunhinged.com/p/boltnew-growth-journey">How Bolt hit 40M ARR in 5 months</a> - Kyle Poyar: AI app builder goes from near-shutdown to $40M ARR overnight.</p><p><a href="https://www.readysetcloud.io/blog/allen.helton/your-api-might-be-someone-elses-model/">Your API might be someone else's model</a>- CORS protects APIs from unauthorized use, similar to emerging AI model protection needs.</p><p><a href="https://substack.com/inbox/post/167957141">Autonomy Sliders</a> - <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Andrew Miller&quot;,&quot;id&quot;:15850934,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/860b5731-f47b-469b-9d58-86fcad8a1563_675x675.jpeg&quot;,&quot;uuid&quot;:&quot;7c870fa8-b28f-4635-87fb-651c24e4c932&quot;}" data-component-name="MentionToDOM"></span> examines the concept of autonomy sliders, likely discussing how to balance AI system independence with human oversight and control.</p><p><a href="https://www.strangeloopcanon.com/p/seeing-like-an-llm">Seeing like an LLM</a> - Krishnan compares LLM functionality to human learning and knowledge limitations.</p><p><a href="https://workos.com/blog/mcp-authorization-in-5-easy-oauth-specs">MCP Authorization in 5 easy OAuth specs - WorkOS</a> - OAuth standards for secure MCP authorization with LLMs.</p><p><a href="https://internetaddictsanonymous.org/internet-and-technology-addiction/signs-of-an-addiction-to-ai/">Recovering from AI Addiction &#8211; Internet and Technology Addicts Anonymous</a> - Stanford: A support community for overcoming technology addiction.</p><p><a href="https://www.latent.space/p/tiny">The Tiny Teams Playbook - by Shawn swyx Wang</a> - Framework for building small, hyper-efficient AI-powered teams that prioritize efficiency over scale.</p><p><a href="https://www.thoughtworks.com/insights/blog/generative-ai/do-developers-need-think-less-ai">Do developers need to think less with AI?</a> - Thoughtworks' author challenges the common assumption that AI tools require more developer thinking, not less.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wrMr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb2dec9b-0de0-4d3b-b380-2d6b1e22057c_1600x1354.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wrMr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb2dec9b-0de0-4d3b-b380-2d6b1e22057c_1600x1354.png 424w, https://substackcdn.com/image/fetch/$s_!wrMr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb2dec9b-0de0-4d3b-b380-2d6b1e22057c_1600x1354.png 848w, https://substackcdn.com/image/fetch/$s_!wrMr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb2dec9b-0de0-4d3b-b380-2d6b1e22057c_1600x1354.png 1272w, https://substackcdn.com/image/fetch/$s_!wrMr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb2dec9b-0de0-4d3b-b380-2d6b1e22057c_1600x1354.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wrMr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb2dec9b-0de0-4d3b-b380-2d6b1e22057c_1600x1354.png" width="1456" height="1232" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/db2dec9b-0de0-4d3b-b380-2d6b1e22057c_1600x1354.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1232,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:460709,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/173013557?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb2dec9b-0de0-4d3b-b380-2d6b1e22057c_1600x1354.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!wrMr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb2dec9b-0de0-4d3b-b380-2d6b1e22057c_1600x1354.png 424w, https://substackcdn.com/image/fetch/$s_!wrMr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb2dec9b-0de0-4d3b-b380-2d6b1e22057c_1600x1354.png 848w, https://substackcdn.com/image/fetch/$s_!wrMr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb2dec9b-0de0-4d3b-b380-2d6b1e22057c_1600x1354.png 1272w, https://substackcdn.com/image/fetch/$s_!wrMr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb2dec9b-0de0-4d3b-b380-2d6b1e22057c_1600x1354.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>Event-Driven Agent2Agent Messaging and Event Fan-Out via Kafka</em></figcaption></figure></div><p><a href="https://www.confluent.io/blog/google-agent2agent-protocol-needs-kafka/">Why Google's Agent2Agent Protocol Needs Apache Kafka</a> - Kafka offers critical messaging capabilities for Google's multi-agent AI communication protocol.</p><p><a href="https://pair.withgoogle.com/explorables/grokking/">Do Machine Learning Models Memorize or Generalize?</a> - Explores how models transition from memorization to genuine understanding during extended training.</p><p><a href="https://simonw.substack.com/p/phoenixnew-is-flys-entry-into-the">Phoenix.new is Fly's entry into the prompt-driven app development space</a> - Fly.io launches tool that creates Phoenix apps from text prompts.</p><p><a href="https://asia.nikkei.com/Business/Technology/Artificial-intelligence/Positive-review-only-Researchers-hide-AI-prompts-in-papers">Researchers hide AI prompts in papers</a> - Researchers caught hiding instructions for AI to give favorable paper reviews.</p><p><a href="http://plo.ug/llms,/typescript,/testing/2025/06/26/LLMs-for-testing.html">Experimenting with LLMs for semantic testing</a> - Semantic testing validates content meaning beyond functional correctness.</p><p><a href="https://magazine.sebastianraschka.com/p/coding-the-kv-cache-in-llms">Understanding and Coding the KV Cache in LLMs from Scratch</a> - Sebastian Raschka breaks down KV caches: how they speed up LLM inference by storing key-value computations.</p><p><a href="https://www.ai-supremacy.com/p/survey-2025-ai-newsletters-resource-listicle">A Survey: 2025 AI Newsletters</a> - Michael Spencer's extensive list of AI newsletters with upcoming LinkedIn influencer guide.</p><p><a href="https://daniel.haxx.se/blog/2025/07/14/death-by-a-thousand-slops/">Death by a thousand slops</a> - Daniel Stenberg: Curl project drowning in AI-generated vulnerability report spam.</p><p><a href="https://utkarshkanwat.com/writing/betting-against-agents/?">Why I'm Betting Against AI Agents in 2025 (Despite Building Them)</a> - Experienced agent builder explains why autonomous AI agents won't deliver on 2025 promises.</p><p><a href="https://www.ai-supremacy.com/p/how-to-use-ai-to-optimize-your-personal-life-free-time">How to use AI to Optimize your Personal Life and Free Time</a> - Daria Cupareanu: AI strategies for reclaiming time and enhancing personal life quality.</p><p><a href="https://theengineeringmanager.substack.com/p/leadership-co-processing-with-llms">Leadership co-processing with LLMs</a> - James Stanier discusses how LLMs are changing management roles and practices. </p><h2><strong>&#127897;&#65039; YouTube &amp; Podcasts</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QhWb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f479be6-e668-422d-bc3e-e26b2f57121e_2710x1404.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QhWb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f479be6-e668-422d-bc3e-e26b2f57121e_2710x1404.png 424w, https://substackcdn.com/image/fetch/$s_!QhWb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f479be6-e668-422d-bc3e-e26b2f57121e_2710x1404.png 848w, https://substackcdn.com/image/fetch/$s_!QhWb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f479be6-e668-422d-bc3e-e26b2f57121e_2710x1404.png 1272w, https://substackcdn.com/image/fetch/$s_!QhWb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f479be6-e668-422d-bc3e-e26b2f57121e_2710x1404.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QhWb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f479be6-e668-422d-bc3e-e26b2f57121e_2710x1404.png" width="1456" height="754" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7f479be6-e668-422d-bc3e-e26b2f57121e_2710x1404.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:754,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1049979,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/173013557?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f479be6-e668-422d-bc3e-e26b2f57121e_2710x1404.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!QhWb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f479be6-e668-422d-bc3e-e26b2f57121e_2710x1404.png 424w, https://substackcdn.com/image/fetch/$s_!QhWb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f479be6-e668-422d-bc3e-e26b2f57121e_2710x1404.png 848w, https://substackcdn.com/image/fetch/$s_!QhWb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f479be6-e668-422d-bc3e-e26b2f57121e_2710x1404.png 1272w, https://substackcdn.com/image/fetch/$s_!QhWb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f479be6-e668-422d-bc3e-e26b2f57121e_2710x1404.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Software evolution: From 1.0 to 3.0</figcaption></figure></div><p><a href="https://www.youtube.com/watch?v=LCEmiRjPEtQ">Andrej Karpathy: Software Is Changing (Again) - YouTube</a> - Karpathy explores AI's revolutionary impact on software development paradigms.  &#128293;&#128293;&#128293;</p><p><a href="https://www.youtube.com/watch?v=6eBSHbLKuN0">Mastering Claude Code in 30 minutes - YouTube</a> - Quick guide to Claude Code's advanced features and shortcuts. &#128293;</p><p><a href="https://www.youtube.com/watch?v=EO3_qN_Ynsk">Software engineering with LLMs in 2025: reality check - YouTube</a> - The Pragmatic Engineer&#8217;s Gergely Orosz presents a comprehensive overview of how developers at AI startups and Big Tech companies are currently using AI tools, featuring projections about the future landscape of software engineering.</p><h2><strong>&#128478;&#65039; News and Updates</strong></h2><p> <a href="https://x.com/GergelyOrosz/status/1942299871572062350">Gergely Orosz's take on X</a> - Being able to specify what software you want to build, how it should be structured, and how <em>exactly</em> it should work is... programming. And getting into the weeds, when needed.</p><p><a href="https://developers.googleblog.com/en/scale-your-ai-workloads-batch-mode-gemini-api/">Batch Mode in the Gemini API: Process more for less</a> - New Gemini API feature offers discounted batch processing for non-urgent AI tasks.</p><p><a href="https://www.reddit.com/r/ClaudeAI/comments/1lcwuny/whats_your_best_advice_for_using_claude_code/">Whats Your Best Advice For Using Claude Code [Reddit]</a> - Reddit thread collecting Claude code usage tips.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2iLA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e56017c-9707-4cdf-946c-cff10bc9b0cb_1125x1500.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2iLA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e56017c-9707-4cdf-946c-cff10bc9b0cb_1125x1500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!2iLA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e56017c-9707-4cdf-946c-cff10bc9b0cb_1125x1500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!2iLA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e56017c-9707-4cdf-946c-cff10bc9b0cb_1125x1500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!2iLA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e56017c-9707-4cdf-946c-cff10bc9b0cb_1125x1500.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2iLA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e56017c-9707-4cdf-946c-cff10bc9b0cb_1125x1500.jpeg" width="1125" height="1500" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9e56017c-9707-4cdf-946c-cff10bc9b0cb_1125x1500.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1500,&quot;width&quot;:1125,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:256585,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/173013557?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e56017c-9707-4cdf-946c-cff10bc9b0cb_1125x1500.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!2iLA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e56017c-9707-4cdf-946c-cff10bc9b0cb_1125x1500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!2iLA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e56017c-9707-4cdf-946c-cff10bc9b0cb_1125x1500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!2iLA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e56017c-9707-4cdf-946c-cff10bc9b0cb_1125x1500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!2iLA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e56017c-9707-4cdf-946c-cff10bc9b0cb_1125x1500.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><a href="https://x.com/PawelHuryn/status/1943611413320093880">10 Principles of Building AI Agents</a></figcaption></figure></div><p><a href="https://x.com/PawelHuryn/status/1943611413320093880">10 Principles of Building AI Agents - Pawe&#322; Huryn on X</a></p><p><a href="https://x.com/christianposta/status/1944854988049506425">MCP Authorization specs - Christian Posta on X</a></p><p><a href="https://www.testingcatalog.com/openai-experiments-with-new-study-together-tool-on-chatgpt/">OpenAI experiments with new "Study together" tool on ChatGPT</a> - New ChatGPT feature creates interactive learning with step-by-step guidance.</p><p><a href="https://x.com/ajassy/status/1944785963663966633">AWS introduced Kiro on X</a> -Introducing Kiro, an all-new agentic IDE that has a chance to transform how developers build software.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QzeA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b97c739-3581-4787-8bb9-ac04daf4a902_1194x1088.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QzeA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b97c739-3581-4787-8bb9-ac04daf4a902_1194x1088.png 424w, https://substackcdn.com/image/fetch/$s_!QzeA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b97c739-3581-4787-8bb9-ac04daf4a902_1194x1088.png 848w, https://substackcdn.com/image/fetch/$s_!QzeA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b97c739-3581-4787-8bb9-ac04daf4a902_1194x1088.png 1272w, https://substackcdn.com/image/fetch/$s_!QzeA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b97c739-3581-4787-8bb9-ac04daf4a902_1194x1088.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QzeA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b97c739-3581-4787-8bb9-ac04daf4a902_1194x1088.png" width="1194" height="1088" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1b97c739-3581-4787-8bb9-ac04daf4a902_1194x1088.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1088,&quot;width&quot;:1194,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:698241,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/173013557?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b97c739-3581-4787-8bb9-ac04daf4a902_1194x1088.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!QzeA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b97c739-3581-4787-8bb9-ac04daf4a902_1194x1088.png 424w, https://substackcdn.com/image/fetch/$s_!QzeA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b97c739-3581-4787-8bb9-ac04daf4a902_1194x1088.png 848w, https://substackcdn.com/image/fetch/$s_!QzeA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b97c739-3581-4787-8bb9-ac04daf4a902_1194x1088.png 1272w, https://substackcdn.com/image/fetch/$s_!QzeA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b97c739-3581-4787-8bb9-ac04daf4a902_1194x1088.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">AI gone rogue tweet</figcaption></figure></div><p><a href="https://x.com/jasonlk/status/1946069562723897802">Replit goes rogue during a code freeze and shutdown and deletes our entire database </a></p><h2><strong>&#128736;&#65039; Tech &amp; Tools</strong></h2><p><a href="https://github.com/MrLesk/Backlog.md">Backlog.md</a> - Git-based Markdown task manager with Kanban visualization.</p><p><a href="https://install.md/?utm_source=ai-native-developer-newsletter">install.md</a> - Tools that help coding agents integrate various software components into codebases through MCP server technology.</p><p><a href="https://www.browserbase.com/">Browserbase</a> - A specialized web browser designed specifically for AI agents and applications to interact with web content.</p><p><a href="https://github.com/marcelsud/spec-driven-agentic-development">spec-driven-agentic-development</a> - A specification-based workflow for AI-assisted software development.</p><p><a href="https://www.browserstack.com/test-management/ai-agents">BrowserStack</a> - AI-powered test case generation from requirements documents.</p><p><a href="https://github.com/mozilla-ai/any-agent">any-agent</a> - mozilla-ai - A unified interface that allows developers to use and evaluate different AI agent frameworks through a single implementation.</p><h2><strong>&#128218; Learning Picks</strong></h2><p> <a href="https://anthropic.skilljar.com/claude-code-in-action?utm_source=ai-native-developer-newsletter">Claude Code in Action</a> - Skilljar hosts Anthropic course materials for organized, interactive learning.</p><p><a href="https://github.com/microsoft/ai-agents-for-beginners?&amp;aid=recOfw7lpa5TCr8GX&amp;_bhlid=adfd7f5dcebd49a5fd6c6440dd97aa6bb4f77934">ai-agents-for-beginners</a> - Microsoft's beginner-friendly AI agent development curriculum with multilingual support.</p><h2><strong>&#127917; AI Humor</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Eh9B!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91d0ec26-c3c1-4810-a2f8-9ac4d09738f7_800x1249.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Eh9B!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91d0ec26-c3c1-4810-a2f8-9ac4d09738f7_800x1249.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Eh9B!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91d0ec26-c3c1-4810-a2f8-9ac4d09738f7_800x1249.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Eh9B!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91d0ec26-c3c1-4810-a2f8-9ac4d09738f7_800x1249.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Eh9B!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91d0ec26-c3c1-4810-a2f8-9ac4d09738f7_800x1249.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Eh9B!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91d0ec26-c3c1-4810-a2f8-9ac4d09738f7_800x1249.jpeg" width="800" height="1249" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/91d0ec26-c3c1-4810-a2f8-9ac4d09738f7_800x1249.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1249,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:132441,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/173013557?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91d0ec26-c3c1-4810-a2f8-9ac4d09738f7_800x1249.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Eh9B!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91d0ec26-c3c1-4810-a2f8-9ac4d09738f7_800x1249.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Eh9B!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91d0ec26-c3c1-4810-a2f8-9ac4d09738f7_800x1249.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Eh9B!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91d0ec26-c3c1-4810-a2f8-9ac4d09738f7_800x1249.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Eh9B!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91d0ec26-c3c1-4810-a2f8-9ac4d09738f7_800x1249.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Source: <em><a href="https://www.linkedin.com/feed/update/urn:li:activity:7349734190180982784/">https://www.linkedin.com/feed/update/urn:li:activity:7349734190180982784/</a></em> </figcaption></figure></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://generativeprogrammer.com/p/generative-programmer-issue-15?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://generativeprogrammer.com/p/generative-programmer-issue-15?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><h2>&#128075; See You Next Time</h2><p>Thanks for reading <em>Generative Programmer</em>! &#128591; </p><p>If you like the content please support my newsletter by subscribing and sharing with your network: <a href="https://twitter.com/intent/tweet?text=Checkout%20this%20newsletter%20with%20the%20latest%20AI%20news%20for%20developers%3A%20https%3A%2F%2Fgenerativeprogrammer.com%2F">X</a> &#183; <a href="https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fgenerativeprogrammer.com%2F&amp;summary=Checkout%20this%20newsletter%20with%20the%20latest%20AI%20news%20for%20developers">LinkedIn</a> &#183; <a href="https://bsky.app/intent/compose?text=Checkout%20this%20newsletter%20with%20the%20latest%20AI%20news%20for%20developers%3A%20https%3A%2F%2Fgenerativeprogrammer.com%2F">BlueSky</a> &#183; <a href="mailto:?subject=Check%20out%20this%20newsletter&amp;body=Checkout%20this%20newsletter%20with%20the%20latest%20AI%20news%20for%20developers%3A%20https%3A%2F%2Fgenerativeprogrammer.com%2F">Email</a>. Have a great rest of the week! </p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://generativeprogrammer.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://generativeprogrammer.com/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item><item><title><![CDATA[10 Practical Ways I Use AI in Product Management]]></title><description><![CDATA[Using ChatGPT, Claude, Cursor and Grok every day product management to speed up research, create better docs, and make better decisions.]]></description><link>https://generativeprogrammer.com/p/ai-in-product-management-10-practical-ways</link><guid isPermaLink="false">https://generativeprogrammer.com/p/ai-in-product-management-10-practical-ways</guid><dc:creator><![CDATA[Bilgin Ibryam]]></dc:creator><pubDate>Fri, 15 Aug 2025 10:13:32 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/4db2ccf0-b564-4b8b-a59b-3ca7820a40d1_2504x1222.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I run <a href="https://x.com/bibryam/status/1956268688140583330">tens of thousands of prompts</a> a year across ChatGPT, Claude, Cursor, Grok, and more. The cost is high, but the ROI is higher. Here are 10 ways AI powers my PM work.</p><p><strong>1. Rapid User Story Creation via Custom GPT</strong></p><p>One of the most common tasks a PM has to do is create user stories, <a href="https://www.productplan.com/glossary/product-requirements-document/">PRDs</a>, log bugs and tasks. There are many <a href="https://chatgpt.com/gpts?q=prd">custom GPTs</a> for PRD creation, from services to sophisticated custom prompt templates. But each company and team has its own preferred format and style. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mmbX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28982c5c-a450-4796-a0d6-bf5d4a00a2a8_1278x972.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mmbX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28982c5c-a450-4796-a0d6-bf5d4a00a2a8_1278x972.png 424w, https://substackcdn.com/image/fetch/$s_!mmbX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28982c5c-a450-4796-a0d6-bf5d4a00a2a8_1278x972.png 848w, https://substackcdn.com/image/fetch/$s_!mmbX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28982c5c-a450-4796-a0d6-bf5d4a00a2a8_1278x972.png 1272w, https://substackcdn.com/image/fetch/$s_!mmbX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28982c5c-a450-4796-a0d6-bf5d4a00a2a8_1278x972.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mmbX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28982c5c-a450-4796-a0d6-bf5d4a00a2a8_1278x972.png" width="1278" height="972" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/28982c5c-a450-4796-a0d6-bf5d4a00a2a8_1278x972.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:972,&quot;width&quot;:1278,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:140152,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/170859930?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28982c5c-a450-4796-a0d6-bf5d4a00a2a8_1278x972.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!mmbX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28982c5c-a450-4796-a0d6-bf5d4a00a2a8_1278x972.png 424w, https://substackcdn.com/image/fetch/$s_!mmbX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28982c5c-a450-4796-a0d6-bf5d4a00a2a8_1278x972.png 848w, https://substackcdn.com/image/fetch/$s_!mmbX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28982c5c-a450-4796-a0d6-bf5d4a00a2a8_1278x972.png 1272w, https://substackcdn.com/image/fetch/$s_!mmbX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28982c5c-a450-4796-a0d6-bf5d4a00a2a8_1278x972.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Custom GPT for User Story Creation</figcaption></figure></div><p>For this purpose I use custom GPTs from ChatGPT and created my own <a href="https://chatgpt.com/g/g-67c058bbf6388191b671f0e642030c2d-lean-user-story-assistant-simple-prd-creator">custom GPT</a>. This lets me go from a short text or Slack message to ready-to-copy text for issue tracking systems. The template handles the formatting, ensures I don't miss edge cases, and maintains consistency across the backlog. For any repetitive task done on ChatGPT, consider creating a custom GPT with the desired context and prompt. I use many custom GPTs, a few are pubic such as <a href="https://chatgpt.com/g/g-CWjaCNy9T-title-generator">Title Generator</a>, <a href="https://chatgpt.com/g/g-frzXhZKIU-jargon-cleaner">Jargon Cleaner</a>, and many more are private and used in professional setting. </p><p><strong>2. Dictation Over Typing for Richer Context</strong></p><p>I use ChatGPT for all kinds of quick searches (instead of googling) or writing short messages, or taking notes. For short interactions, starting ChatGPT, telling AI what you want and passing the context is the bottleneck. The best way to do that is through voice input rather than typing. However, the default workflow requires multiple clicks: open ChatGPT, click on voice, talk, stop voice, then send the text. I use it so much that I vibe coded a <a href="https://x.com/bibryam/status/1941495112816607269">Chrome plugin to automate that</a>. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dh9O!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23d88943-2930-4642-a689-e3dab537d7ff_984x1108.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dh9O!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23d88943-2930-4642-a689-e3dab537d7ff_984x1108.png 424w, https://substackcdn.com/image/fetch/$s_!dh9O!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23d88943-2930-4642-a689-e3dab537d7ff_984x1108.png 848w, https://substackcdn.com/image/fetch/$s_!dh9O!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23d88943-2930-4642-a689-e3dab537d7ff_984x1108.png 1272w, https://substackcdn.com/image/fetch/$s_!dh9O!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23d88943-2930-4642-a689-e3dab537d7ff_984x1108.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dh9O!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23d88943-2930-4642-a689-e3dab537d7ff_984x1108.png" width="727.9948120117188" height="819.7339956392118" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/23d88943-2930-4642-a689-e3dab537d7ff_984x1108.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:1108,&quot;width&quot;:984,&quot;resizeWidth&quot;:727.9948120117188,&quot;bytes&quot;:77973,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/170859930?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23d88943-2930-4642-a689-e3dab537d7ff_984x1108.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!dh9O!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23d88943-2930-4642-a689-e3dab537d7ff_984x1108.png 424w, https://substackcdn.com/image/fetch/$s_!dh9O!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23d88943-2930-4642-a689-e3dab537d7ff_984x1108.png 848w, https://substackcdn.com/image/fetch/$s_!dh9O!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23d88943-2930-4642-a689-e3dab537d7ff_984x1108.png 1272w, https://substackcdn.com/image/fetch/$s_!dh9O!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23d88943-2930-4642-a689-e3dab537d7ff_984x1108.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Chrome plugin for starting dictation mode</figcaption></figure></div><p>With <a href="https://chromewebstore.google.com/detail/chatgpt-web-voice-shortcu/jmfecjpbhdkoecbjdebgoiofbdngbnoe">this plugin</a>, I can use a single keyboard shortcut to start ChatGPT and start talking immediately. Hit <em><strong>ALT + SHIFT + SPACE</strong></em> to open a new ChatGPT tab, with dictation started. This eliminates the friction and makes voice input as fast as opening any other native app.</p><p><strong>3. Brainstorming and Problem Solving via Voice Mode</strong></p><p>I use ChatGPT mobile app <strong>voice mode </strong>(notice this is different than dictation input mentioned above) primarily when I'm out walking or at the gym and have an idea that needs development. Instead of just asking for a list of suggestions, I have actual conversations where I ask ChatGPT to challenge me back and forth. For example, when writing this blog post, I asked ChatGPT to "<em>act as an expert in AI adoption, be critical of my thinking, and challenge my ideas until we come up with a solid plan</em>&#8230;" I use this for brainstorming content ideas, preparing for meetings, working through problems I don't have a clear solution for, or exploring new domains and discovering blindspots with back-and-forth discussion. The voice interaction lets me think out loud and get immediate pushback on weak concepts, making it like having a sparring partner who helps refine ideas in real-time.</p><p><strong>4. Deep Search and Extended Thinking</strong></p><p>This is one of the methods that saves me the most time since using AI for research. I use AI to do comprehensive research where I give very detailed, specific tasks with clear goals and outcomes. For example, I can perform competitive product analysis, deep project/technology comparisons, marketing plans for product launches, or ecosystem mapping with different players and get very detailed and structured write-ups. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wwpa!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67d858d8-411c-4356-8a87-c7437d7a3f2e_639x484.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wwpa!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67d858d8-411c-4356-8a87-c7437d7a3f2e_639x484.png 424w, https://substackcdn.com/image/fetch/$s_!wwpa!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67d858d8-411c-4356-8a87-c7437d7a3f2e_639x484.png 848w, https://substackcdn.com/image/fetch/$s_!wwpa!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67d858d8-411c-4356-8a87-c7437d7a3f2e_639x484.png 1272w, https://substackcdn.com/image/fetch/$s_!wwpa!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67d858d8-411c-4356-8a87-c7437d7a3f2e_639x484.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wwpa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67d858d8-411c-4356-8a87-c7437d7a3f2e_639x484.png" width="639" height="484" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/67d858d8-411c-4356-8a87-c7437d7a3f2e_639x484.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:484,&quot;width&quot;:639,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2354094,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/170859930?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67d858d8-411c-4356-8a87-c7437d7a3f2e_639x484.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!wwpa!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67d858d8-411c-4356-8a87-c7437d7a3f2e_639x484.png 424w, https://substackcdn.com/image/fetch/$s_!wwpa!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67d858d8-411c-4356-8a87-c7437d7a3f2e_639x484.png 848w, https://substackcdn.com/image/fetch/$s_!wwpa!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67d858d8-411c-4356-8a87-c7437d7a3f2e_639x484.png 1272w, https://substackcdn.com/image/fetch/$s_!wwpa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67d858d8-411c-4356-8a87-c7437d7a3f2e_639x484.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Parallel deep search exploration in ChatGPT, Claude, and Grok </figcaption></figure></div><p>A trick I use here is to perform the same research across 2-3 AI products simultaneously - ChatGPT, Claude, and Grok from X - then compare their outputs. Each AI often surfaces different angles or insights, giving me a more complete picture than relying on a single source. This parallel approach catches blindspots and validates findings.</p><p><strong>5. Data Analysis and User Feedback Mining</strong></p><p>I use AI to process large amounts of unstructured text data to extract insights. I identify trends, challenges, and bugs by gathering feedback not directly, but from large datasets and synthesizing insights. For example, if you work in a company, you know where users are hanging out - community forums, Discord channels, Reddit discussions, support tickets, or social media mentions. I paste all that data into AI and ask it to identify challenges, trends, or specific issues people are unhappy with. You can also do this by exporting data from various systems you have, and ask AI to identify trends or even generate graphs to show these trends and so forth. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xUPp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41ed66d3-b5bf-48e2-b04c-ec36b1f2e6cf_1364x784.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xUPp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41ed66d3-b5bf-48e2-b04c-ec36b1f2e6cf_1364x784.png 424w, https://substackcdn.com/image/fetch/$s_!xUPp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41ed66d3-b5bf-48e2-b04c-ec36b1f2e6cf_1364x784.png 848w, https://substackcdn.com/image/fetch/$s_!xUPp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41ed66d3-b5bf-48e2-b04c-ec36b1f2e6cf_1364x784.png 1272w, https://substackcdn.com/image/fetch/$s_!xUPp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41ed66d3-b5bf-48e2-b04c-ec36b1f2e6cf_1364x784.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xUPp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41ed66d3-b5bf-48e2-b04c-ec36b1f2e6cf_1364x784.png" width="1364" height="784" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/41ed66d3-b5bf-48e2-b04c-ec36b1f2e6cf_1364x784.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:784,&quot;width&quot;:1364,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:133864,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/170859930?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41ed66d3-b5bf-48e2-b04c-ec36b1f2e6cf_1364x784.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!xUPp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41ed66d3-b5bf-48e2-b04c-ec36b1f2e6cf_1364x784.png 424w, https://substackcdn.com/image/fetch/$s_!xUPp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41ed66d3-b5bf-48e2-b04c-ec36b1f2e6cf_1364x784.png 848w, https://substackcdn.com/image/fetch/$s_!xUPp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41ed66d3-b5bf-48e2-b04c-ec36b1f2e6cf_1364x784.png 1272w, https://substackcdn.com/image/fetch/$s_!xUPp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41ed66d3-b5bf-48e2-b04c-ec36b1f2e6cf_1364x784.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">ChatGPT can generate graphs from raw data</figcaption></figure></div><p>A typical prompt would be: "<em>Analyze this data and give me the top three challenges users are facing, the top three feature requests, and the top three things people are most satisfied with.</em>" Extracting insights and displaying trends from raw and unstructured data is a core PM task that AI excels in, helping me prioritize roadmap items based on real-world signals rather than assumptions.</p><p><strong>6. Docs from Engineering Notes and Code</strong></p><p>As a product manager, you often have tight deadlines with limited input from the busy engineering teams. For example, you may have new features launching soon but insufficient documentation from the platform team. What you can do is feed AI with engineering notes, PRs, and even source code to describe what has been implemented in a specific release. For instance, when a major feature ships, you can also provide additional context by uploading existing product documentation. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!WzH5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F335b0914-c8c6-4dc4-aeb3-7905d5a793d8_1830x1000.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WzH5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F335b0914-c8c6-4dc4-aeb3-7905d5a793d8_1830x1000.png 424w, https://substackcdn.com/image/fetch/$s_!WzH5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F335b0914-c8c6-4dc4-aeb3-7905d5a793d8_1830x1000.png 848w, https://substackcdn.com/image/fetch/$s_!WzH5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F335b0914-c8c6-4dc4-aeb3-7905d5a793d8_1830x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!WzH5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F335b0914-c8c6-4dc4-aeb3-7905d5a793d8_1830x1000.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WzH5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F335b0914-c8c6-4dc4-aeb3-7905d5a793d8_1830x1000.png" width="1456" height="796" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/335b0914-c8c6-4dc4-aeb3-7905d5a793d8_1830x1000.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:796,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:237262,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/170859930?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F335b0914-c8c6-4dc4-aeb3-7905d5a793d8_1830x1000.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!WzH5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F335b0914-c8c6-4dc4-aeb3-7905d5a793d8_1830x1000.png 424w, https://substackcdn.com/image/fetch/$s_!WzH5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F335b0914-c8c6-4dc4-aeb3-7905d5a793d8_1830x1000.png 848w, https://substackcdn.com/image/fetch/$s_!WzH5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F335b0914-c8c6-4dc4-aeb3-7905d5a793d8_1830x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!WzH5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F335b0914-c8c6-4dc4-aeb3-7905d5a793d8_1830x1000.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Claude&#8217;s project feature with custom context</figcaption></figure></div><p>Claude&#8217;s Projects feature allows you to attach context from Github repositories, specific files, or documentation that can be referenced multiple times. You can attach this context to a project, and once created, that project can be reused across multiple chats with all the relevant context automatically available. This Projects feature is particularly useful for writing documentation or content that needs to follow a specific format and requires lots of context to maintain consistency.</p><p><strong>7. Screenshot Reviews and Visual Analysis</strong></p><p>AI is good not only with text and voice, but also with visual inputs. One input method that's not used as much is the imaging. This is particularly useful for getting feedback on UI designs. For example, you can feed in a design mockup or screenshot and ask it to review the text, layout, and suggest improvements from a UX perspective. Another way to use visual input is for data analysis - you can upload charts, graphs, or dashboards and ask AI to interpret trends or suggest better ways to visualize the data. </p><p><strong>8. Code Explanation via Cursor and AI Tools</strong></p><p>I use AI tools to understand code when documentation is lacking, but for this purpose, I find that tools specialized in code creation - IDEs and CLIs - are much better generic AI tools like ChatGPT and Claude. That's why my preferred option here is to use something like <a href="https://cursor.com/en">Cursor</a> (in asking mode rather than agent mode), which can give me very detailed explanations with proper context. I can give these specialized tools a specific file from a project, a specific package, or ask them to analyze a whole project and explain various aspects. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zu_j!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0578061-085c-428f-9fbd-9deafd6e4f76_2598x1108.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zu_j!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0578061-085c-428f-9fbd-9deafd6e4f76_2598x1108.png 424w, https://substackcdn.com/image/fetch/$s_!zu_j!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0578061-085c-428f-9fbd-9deafd6e4f76_2598x1108.png 848w, https://substackcdn.com/image/fetch/$s_!zu_j!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0578061-085c-428f-9fbd-9deafd6e4f76_2598x1108.png 1272w, https://substackcdn.com/image/fetch/$s_!zu_j!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0578061-085c-428f-9fbd-9deafd6e4f76_2598x1108.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zu_j!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0578061-085c-428f-9fbd-9deafd6e4f76_2598x1108.png" width="1456" height="621" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f0578061-085c-428f-9fbd-9deafd6e4f76_2598x1108.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:621,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:585410,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/170859930?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0578061-085c-428f-9fbd-9deafd6e4f76_2598x1108.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!zu_j!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0578061-085c-428f-9fbd-9deafd6e4f76_2598x1108.png 424w, https://substackcdn.com/image/fetch/$s_!zu_j!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0578061-085c-428f-9fbd-9deafd6e4f76_2598x1108.png 848w, https://substackcdn.com/image/fetch/$s_!zu_j!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0578061-085c-428f-9fbd-9deafd6e4f76_2598x1108.png 1272w, https://substackcdn.com/image/fetch/$s_!zu_j!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0578061-085c-428f-9fbd-9deafd6e4f76_2598x1108.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Asking Cursor for code explanation</figcaption></figure></div><p>For example, I might ask "How does DurableAgent class work?" <a href="https://github.com/dapr/dapr-agents/tree/main">in Dapr Agents</a>,  or "what are the edge cases and exception scenarios?" The AI can analyze the code and give a detailed description of how it works, which I use for my own understanding, testing strategy, or when discussing feature requirements with engineering teams.</p><p><strong>9. Mockup Prototyping via AI Code Generation</strong></p><p>Tools like <a href="https://v0.app/">v0</a> from Vercel, <a href="https://lovable.dev/">Lovable</a>, <a href="https://bolt.new/">Bolt</a> (and <a href="https://generativeprogrammer.com/p/ai-coding-assistants-landscape">many others</a>) have created a new wave of AI-powered prototyping that can generate actual working code. You can describe a feature concept and get a functional prototype that demonstrates the user flow and basic interactions. This serves almost as a specification that explains how a component should be built, which the engineering team can then take and recreate in a proper production environment. While this is the most talked about use case for PMs and AI, for me this is too wasteful an approach to recreate a whole app to explain a requirement and concept. This approach works best when the complexity is in the UI rather than the backend behaviour.</p><p> <strong>10. Creating Examples, Quickstarts, and Non-Critical Code</strong></p><p>As a product manager, you sometimes need to write code, and even if you're not comfortable or working with newer languages and frameworks you don't know. While you're not an engineer writing production code, AI is perfect for creating examples, quickstarts, demos, and non-critical automation scripts. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8O5H!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43971bcd-0bd4-4e4a-a39a-c5655aa6632a_2108x1256.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8O5H!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43971bcd-0bd4-4e4a-a39a-c5655aa6632a_2108x1256.png 424w, https://substackcdn.com/image/fetch/$s_!8O5H!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43971bcd-0bd4-4e4a-a39a-c5655aa6632a_2108x1256.png 848w, https://substackcdn.com/image/fetch/$s_!8O5H!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43971bcd-0bd4-4e4a-a39a-c5655aa6632a_2108x1256.png 1272w, https://substackcdn.com/image/fetch/$s_!8O5H!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43971bcd-0bd4-4e4a-a39a-c5655aa6632a_2108x1256.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8O5H!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43971bcd-0bd4-4e4a-a39a-c5655aa6632a_2108x1256.png" width="1456" height="868" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/43971bcd-0bd4-4e4a-a39a-c5655aa6632a_2108x1256.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:868,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:464825,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generativeprogrammer.com/i/170859930?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43971bcd-0bd4-4e4a-a39a-c5655aa6632a_2108x1256.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!8O5H!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43971bcd-0bd4-4e4a-a39a-c5655aa6632a_2108x1256.png 424w, https://substackcdn.com/image/fetch/$s_!8O5H!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43971bcd-0bd4-4e4a-a39a-c5655aa6632a_2108x1256.png 848w, https://substackcdn.com/image/fetch/$s_!8O5H!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43971bcd-0bd4-4e4a-a39a-c5655aa6632a_2108x1256.png 1272w, https://substackcdn.com/image/fetch/$s_!8O5H!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43971bcd-0bd4-4e4a-a39a-c5655aa6632a_2108x1256.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Dapr Agent Quickstarts</figcaption></figure></div><p>For instance, I wrote (generated) bash scripts to automate the creation of reports from API calls, or generate examples for documentation, <a href="https://github.com/dapr/dapr-agents/tree/main/quickstarts">quickstarts</a>, even <a href="https://github.com/diagrid-labs/dapr-university-instruqt/tree/main/dapr-agents">training materials</a>. You can ask AI to generate the code, then have an engineer review it before implementation. This approach speeds up the development process and actually helps you use your own product from a user's perspective. It can even help you learn a new language or a framework by doing rather than only reading.</p><div><hr></div><p>That&#8217;s my playbook for putting AI to work in product management. I&#8217;m always looking for new ideas. How are you using AI to get the biggest gains in your work?</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://generativeprogrammer.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading The Generative Programmer! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>If you like the content please support my newsletter by subscribing and sharing with your network: <a href="https://twitter.com/intent/tweet?text=Checkout%20this%20newsletter%20with%20the%20latest%20AI%20news%20for%20developers%3A%20https%3A%2F%2Fgenerativeprogrammer.com%2F">X</a> &#183; <a href="https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fgenerativeprogrammer.com%2F&amp;summary=Checkout%20this%20newsletter%20with%20the%20latest%20AI%20news%20for%20developers">LinkedIn</a> &#183; <a href="https://bsky.app/intent/compose?text=Checkout%20this%20newsletter%20with%20the%20latest%20AI%20news%20for%20developers%3A%20https%3A%2F%2Fgenerativeprogrammer.com%2F">BlueSky</a> &#183; <a href="mailto:?subject=Check%20out%20this%20newsletter&amp;body=Checkout%20this%20newsletter%20with%20the%20latest%20AI%20news%20for%20developers%3A%20https%3A%2F%2Fgenerativeprogrammer.com%2F">Email</a>. Have a great rest of the week!</p>]]></content:encoded></item></channel></rss>