<?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[Claude Code Masterclass]]></title><description><![CDATA[Claude Code Course & Weekly Insights - Designed to master in-depth workflows, patterns, techniques, and new features. Join 1,000+ other pro users and subscribe today!
]]></description><link>https://newsletter.claudecodemasterclass.com</link><image><url>https://substackcdn.com/image/fetch/$s_!dohD!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01f210ec-104f-41b4-a788-08711339922c_500x500.png</url><title>Claude Code Masterclass</title><link>https://newsletter.claudecodemasterclass.com</link></image><generator>Substack</generator><lastBuildDate>Sun, 06 Sep 2026 07:11:32 GMT</lastBuildDate><atom:link href="https://newsletter.claudecodemasterclass.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Joe]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[claudecodemasterclass@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[claudecodemasterclass@substack.com]]></itunes:email><itunes:name><![CDATA[Joe]]></itunes:name></itunes:owner><itunes:author><![CDATA[Joe]]></itunes:author><googleplay:owner><![CDATA[claudecodemasterclass@substack.com]]></googleplay:owner><googleplay:email><![CDATA[claudecodemasterclass@substack.com]]></googleplay:email><googleplay:author><![CDATA[Joe]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Last Week In Claude Code #6 — Design Mode, Concise Output, Fork Mode & More]]></title><description><![CDATA[Draft UIs From the CLI, Kill Fluff Responses, and Try a Wild FREE Claude Code Alternative]]></description><link>https://newsletter.claudecodemasterclass.com/p/last-week-in-claude-code-6-design</link><guid isPermaLink="false">https://newsletter.claudecodemasterclass.com/p/last-week-in-claude-code-6-design</guid><dc:creator><![CDATA[Joe]]></dc:creator><pubDate>Mon, 24 Aug 2026 15:13:29 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!6J28!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f4a94e5-2132-45c8-ab76-4eb969ef8866_1200x600.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_!6J28!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f4a94e5-2132-45c8-ab76-4eb969ef8866_1200x600.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6J28!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f4a94e5-2132-45c8-ab76-4eb969ef8866_1200x600.png 424w, https://substackcdn.com/image/fetch/$s_!6J28!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f4a94e5-2132-45c8-ab76-4eb969ef8866_1200x600.png 848w, https://substackcdn.com/image/fetch/$s_!6J28!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f4a94e5-2132-45c8-ab76-4eb969ef8866_1200x600.png 1272w, https://substackcdn.com/image/fetch/$s_!6J28!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f4a94e5-2132-45c8-ab76-4eb969ef8866_1200x600.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6J28!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f4a94e5-2132-45c8-ab76-4eb969ef8866_1200x600.png" width="1200" height="600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9f4a94e5-2132-45c8-ab76-4eb969ef8866_1200x600.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:600,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:104033,&quot;alt&quot;:&quot;Last Week In Claude Code&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://newsletter.claudecodemasterclass.com/i/212552128?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f4a94e5-2132-45c8-ab76-4eb969ef8866_1200x600.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Last Week In Claude Code" title="Last Week In Claude Code" srcset="https://substackcdn.com/image/fetch/$s_!6J28!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f4a94e5-2132-45c8-ab76-4eb969ef8866_1200x600.png 424w, https://substackcdn.com/image/fetch/$s_!6J28!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f4a94e5-2132-45c8-ab76-4eb969ef8866_1200x600.png 848w, https://substackcdn.com/image/fetch/$s_!6J28!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f4a94e5-2132-45c8-ab76-4eb969ef8866_1200x600.png 1272w, https://substackcdn.com/image/fetch/$s_!6J28!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f4a94e5-2132-45c8-ab76-4eb969ef8866_1200x600.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 aria-hidden="true" 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><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>Hello, thank you again for being part of our Claude Code Masterclass community. We are still growing, and <em><strong>I am grateful for every one of you.</strong></em></p><p>This is <strong>Issue #6 </strong>of the <strong><a href="https://newsletter.claudecodemasterclass.com/t/last-week-in-claude-code">Last Week In Claude Code</a> </strong>series.</p><div class="callout-block" data-callout="true"><p><strong>Your Support:</strong> I&#8217;m still requesting you to support the newsletter through our <em><strong><a href="https://claudecodemasterclass.com/pricing/">Claude Code Masterclass Pro</a></strong></em> where you can access premium tutorials, newsletters, and upcoming course as modules are released.</p><p><em><strong>Thanks to all new members &#8212;Let&#8217;s keep this going.</strong></em></p></div><p>Last week had important updates:</p><ul><li><p><em><strong>Claude Code can now draft UI designs from the CLI</strong></em></p></li><li><p><em><strong>A new built-in output style cuts response verbosity</strong></em></p></li><li><p><em><strong>Fork mode is now on by default: subagents inherit full conversation context</strong></em></p></li><li><p><em><strong>I tested the DeepSeek Harness, an open-source Claude Code alternative</strong></em></p></li></ul><p>I have tested, documented, and linked everything I&#8217; m sharing in this issue to save your time. </p><div><hr></div><h1><strong>What Happened Last Week In Claude Code?</strong></h1><div><hr></div><h2>#1) Design Mode &#8212; Draft UI Artboards From the CLI</h2><p><strong>Version:</strong> Research Preview &#8212; v2.1.233+</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vCSp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab2c6cb4-5d34-46f7-9ec3-190ed14e6490_1515x891.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vCSp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab2c6cb4-5d34-46f7-9ec3-190ed14e6490_1515x891.gif 424w, https://substackcdn.com/image/fetch/$s_!vCSp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab2c6cb4-5d34-46f7-9ec3-190ed14e6490_1515x891.gif 848w, https://substackcdn.com/image/fetch/$s_!vCSp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab2c6cb4-5d34-46f7-9ec3-190ed14e6490_1515x891.gif 1272w, https://substackcdn.com/image/fetch/$s_!vCSp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab2c6cb4-5d34-46f7-9ec3-190ed14e6490_1515x891.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vCSp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab2c6cb4-5d34-46f7-9ec3-190ed14e6490_1515x891.gif" width="1456" height="856" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ab2c6cb4-5d34-46f7-9ec3-190ed14e6490_1515x891.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:856,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:312340,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/212552128?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab2c6cb4-5d34-46f7-9ec3-190ed14e6490_1515x891.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!vCSp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab2c6cb4-5d34-46f7-9ec3-190ed14e6490_1515x891.gif 424w, https://substackcdn.com/image/fetch/$s_!vCSp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab2c6cb4-5d34-46f7-9ec3-190ed14e6490_1515x891.gif 848w, https://substackcdn.com/image/fetch/$s_!vCSp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab2c6cb4-5d34-46f7-9ec3-190ed14e6490_1515x891.gif 1272w, https://substackcdn.com/image/fetch/$s_!vCSp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab2c6cb4-5d34-46f7-9ec3-190ed14e6490_1515x891.gif 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 aria-hidden="true" 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><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>Claude Code can now design your UI before it builds it.</p><blockquote><p><strong>The </strong><code>/design</code><strong> skill brings Claude Design&#8217;s artboard workflow into the CLI and Claude Code Desktop. </strong></p></blockquote><p>Give it a brief, and Claude publishes a canvas of editable artboards for you to pick from, then builds the one you choose.</p><div><hr></div><h3>What It Does</h3><pre><code><code>/design a few options for a developer dashboard that shows API usage , active sessions , an recent errors 
</code></code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qrF7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a7df52e-0497-423b-bb7d-5ab96b9631b6_1515x891.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qrF7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a7df52e-0497-423b-bb7d-5ab96b9631b6_1515x891.gif 424w, https://substackcdn.com/image/fetch/$s_!qrF7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a7df52e-0497-423b-bb7d-5ab96b9631b6_1515x891.gif 848w, https://substackcdn.com/image/fetch/$s_!qrF7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a7df52e-0497-423b-bb7d-5ab96b9631b6_1515x891.gif 1272w, https://substackcdn.com/image/fetch/$s_!qrF7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a7df52e-0497-423b-bb7d-5ab96b9631b6_1515x891.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qrF7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a7df52e-0497-423b-bb7d-5ab96b9631b6_1515x891.gif" width="1456" height="856" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9a7df52e-0497-423b-bb7d-5ab96b9631b6_1515x891.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:856,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:288289,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/212552128?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a7df52e-0497-423b-bb7d-5ab96b9631b6_1515x891.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!qrF7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a7df52e-0497-423b-bb7d-5ab96b9631b6_1515x891.gif 424w, https://substackcdn.com/image/fetch/$s_!qrF7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a7df52e-0497-423b-bb7d-5ab96b9631b6_1515x891.gif 848w, https://substackcdn.com/image/fetch/$s_!qrF7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a7df52e-0497-423b-bb7d-5ab96b9631b6_1515x891.gif 1272w, https://substackcdn.com/image/fetch/$s_!qrF7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a7df52e-0497-423b-bb7d-5ab96b9631b6_1515x891.gif 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 aria-hidden="true" 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><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>Claude generates multiple UI options and publishes them as a <em><strong>shareable canvas link</strong></em>. You pick one, tell Claude which to implement, and it builds it.</p><p>This removes the back-and-forth of describing UI in words.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dCiO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9ede943-d02f-47b4-82fc-8cb94a5136f6_1063x1154.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dCiO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9ede943-d02f-47b4-82fc-8cb94a5136f6_1063x1154.gif 424w, https://substackcdn.com/image/fetch/$s_!dCiO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9ede943-d02f-47b4-82fc-8cb94a5136f6_1063x1154.gif 848w, https://substackcdn.com/image/fetch/$s_!dCiO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9ede943-d02f-47b4-82fc-8cb94a5136f6_1063x1154.gif 1272w, https://substackcdn.com/image/fetch/$s_!dCiO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9ede943-d02f-47b4-82fc-8cb94a5136f6_1063x1154.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dCiO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9ede943-d02f-47b4-82fc-8cb94a5136f6_1063x1154.gif" width="1063" height="1154" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b9ede943-d02f-47b4-82fc-8cb94a5136f6_1063x1154.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1154,&quot;width&quot;:1063,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:495014,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/212552128?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9ede943-d02f-47b4-82fc-8cb94a5136f6_1063x1154.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!dCiO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9ede943-d02f-47b4-82fc-8cb94a5136f6_1063x1154.gif 424w, https://substackcdn.com/image/fetch/$s_!dCiO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9ede943-d02f-47b4-82fc-8cb94a5136f6_1063x1154.gif 848w, https://substackcdn.com/image/fetch/$s_!dCiO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9ede943-d02f-47b4-82fc-8cb94a5136f6_1063x1154.gif 1272w, https://substackcdn.com/image/fetch/$s_!dCiO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9ede943-d02f-47b4-82fc-8cb94a5136f6_1063x1154.gif 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 aria-hidden="true" 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><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><div><hr></div><h3>What to Know</h3><ul><li><p>Available on Pro, Max, Team, and Enterprise plans</p></li><li><p>Requires v2.1.233 or later <em><strong>( I tested on v2.1.234) </strong></em></p></li><li><p>Built on Claude Code artifacts</p></li><li><p>Works in both the CLI and Claude Code Desktop</p></li></ul><div><hr></div><h3>How to Use It</h3><pre><code><code>/design { Your description of the design you want } </code></code></pre><p>Claude prints a link to the published canvas. Open it, pick an artboard, and tell Claude which option to implement.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ngXn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd90d210-e4aa-4047-96d4-a3260c6a9458_991x599.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ngXn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd90d210-e4aa-4047-96d4-a3260c6a9458_991x599.gif 424w, https://substackcdn.com/image/fetch/$s_!ngXn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd90d210-e4aa-4047-96d4-a3260c6a9458_991x599.gif 848w, https://substackcdn.com/image/fetch/$s_!ngXn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd90d210-e4aa-4047-96d4-a3260c6a9458_991x599.gif 1272w, https://substackcdn.com/image/fetch/$s_!ngXn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd90d210-e4aa-4047-96d4-a3260c6a9458_991x599.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ngXn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd90d210-e4aa-4047-96d4-a3260c6a9458_991x599.gif" width="991" height="599" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bd90d210-e4aa-4047-96d4-a3260c6a9458_991x599.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:599,&quot;width&quot;:991,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:926909,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/212552128?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd90d210-e4aa-4047-96d4-a3260c6a9458_991x599.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ngXn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd90d210-e4aa-4047-96d4-a3260c6a9458_991x599.gif 424w, https://substackcdn.com/image/fetch/$s_!ngXn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd90d210-e4aa-4047-96d4-a3260c6a9458_991x599.gif 848w, https://substackcdn.com/image/fetch/$s_!ngXn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd90d210-e4aa-4047-96d4-a3260c6a9458_991x599.gif 1272w, https://substackcdn.com/image/fetch/$s_!ngXn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd90d210-e4aa-4047-96d4-a3260c6a9458_991x599.gif 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 aria-hidden="true" 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><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><div><hr></div><blockquote><p><strong> I shared a detailed walkthrough</strong> of <code>/design</code> in my latest tutorial<strong><a href="https://medium.com/@joe.njenga/claude-code-design-i-tried-the-new-design-command-stop-coding-first-8e11be8d1977"> read it here</a></strong><a href="https://medium.com/@joe.njenga/claude-code-design-i-tried-the-new-design-command-stop-coding-first-8e11be8d1977"> </a></p></blockquote><div><hr></div><h2>#2) Concise Output Style &#8212; The New Way to Kill Fluff</h2><p><strong>Version:</strong> 2.1.237</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ifGV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c6e50a1-253b-47be-9a82-aab9de59e9f1_917x551.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ifGV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c6e50a1-253b-47be-9a82-aab9de59e9f1_917x551.gif 424w, https://substackcdn.com/image/fetch/$s_!ifGV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c6e50a1-253b-47be-9a82-aab9de59e9f1_917x551.gif 848w, https://substackcdn.com/image/fetch/$s_!ifGV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c6e50a1-253b-47be-9a82-aab9de59e9f1_917x551.gif 1272w, https://substackcdn.com/image/fetch/$s_!ifGV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c6e50a1-253b-47be-9a82-aab9de59e9f1_917x551.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ifGV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c6e50a1-253b-47be-9a82-aab9de59e9f1_917x551.gif" width="917" height="551" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3c6e50a1-253b-47be-9a82-aab9de59e9f1_917x551.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:551,&quot;width&quot;:917,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:306176,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/212552128?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c6e50a1-253b-47be-9a82-aab9de59e9f1_917x551.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ifGV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c6e50a1-253b-47be-9a82-aab9de59e9f1_917x551.gif 424w, https://substackcdn.com/image/fetch/$s_!ifGV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c6e50a1-253b-47be-9a82-aab9de59e9f1_917x551.gif 848w, https://substackcdn.com/image/fetch/$s_!ifGV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c6e50a1-253b-47be-9a82-aab9de59e9f1_917x551.gif 1272w, https://substackcdn.com/image/fetch/$s_!ifGV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c6e50a1-253b-47be-9a82-aab9de59e9f1_917x551.gif 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 aria-hidden="true" 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><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>Claude Code v2.1.237 introduced a <em><strong>built-in Concise output style</strong></em> that cuts the verbose reponses. </p><blockquote><p><strong>If you don't like long Claude explanations before it starts working on a task or after completion, concise mode removes that narration.  </strong></p></blockquote><div><hr></div><p><strong>Five Built-In Output Styles</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_!tWQ5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F269dd70b-8375-42b7-87cc-c9aebab1c35b_1322x503.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tWQ5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F269dd70b-8375-42b7-87cc-c9aebab1c35b_1322x503.png 424w, https://substackcdn.com/image/fetch/$s_!tWQ5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F269dd70b-8375-42b7-87cc-c9aebab1c35b_1322x503.png 848w, https://substackcdn.com/image/fetch/$s_!tWQ5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F269dd70b-8375-42b7-87cc-c9aebab1c35b_1322x503.png 1272w, https://substackcdn.com/image/fetch/$s_!tWQ5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F269dd70b-8375-42b7-87cc-c9aebab1c35b_1322x503.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!tWQ5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F269dd70b-8375-42b7-87cc-c9aebab1c35b_1322x503.png" width="1322" height="503" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/269dd70b-8375-42b7-87cc-c9aebab1c35b_1322x503.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:503,&quot;width&quot;:1322,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:42248,&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://newsletter.claudecodemasterclass.com/i/212552128?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F269dd70b-8375-42b7-87cc-c9aebab1c35b_1322x503.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_!tWQ5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F269dd70b-8375-42b7-87cc-c9aebab1c35b_1322x503.png 424w, https://substackcdn.com/image/fetch/$s_!tWQ5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F269dd70b-8375-42b7-87cc-c9aebab1c35b_1322x503.png 848w, https://substackcdn.com/image/fetch/$s_!tWQ5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F269dd70b-8375-42b7-87cc-c9aebab1c35b_1322x503.png 1272w, https://substackcdn.com/image/fetch/$s_!tWQ5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F269dd70b-8375-42b7-87cc-c9aebab1c35b_1322x503.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 aria-hidden="true" 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><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><blockquote><p><strong>Concise is the new addition. It does the work as Default but skips all narration before and after.</strong></p></blockquote><div><hr></div><h3>How to Enable It</h3><p><strong>Option 1 &#8212; /config (project-scoped):</strong></p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;3c4ad238-8c75-4ac9-866d-9808eb1d1be8&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">/config &#8594; Output style &#8594; Concise</code></pre></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6bm7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44b791eb-de98-4923-92aa-0e4fcf93280c_900x681.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6bm7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44b791eb-de98-4923-92aa-0e4fcf93280c_900x681.png 424w, https://substackcdn.com/image/fetch/$s_!6bm7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44b791eb-de98-4923-92aa-0e4fcf93280c_900x681.png 848w, https://substackcdn.com/image/fetch/$s_!6bm7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44b791eb-de98-4923-92aa-0e4fcf93280c_900x681.png 1272w, https://substackcdn.com/image/fetch/$s_!6bm7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44b791eb-de98-4923-92aa-0e4fcf93280c_900x681.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6bm7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44b791eb-de98-4923-92aa-0e4fcf93280c_900x681.png" width="900" height="681" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/44b791eb-de98-4923-92aa-0e4fcf93280c_900x681.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:681,&quot;width&quot;:900,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:49774,&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://newsletter.claudecodemasterclass.com/i/212552128?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44b791eb-de98-4923-92aa-0e4fcf93280c_900x681.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_!6bm7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44b791eb-de98-4923-92aa-0e4fcf93280c_900x681.png 424w, https://substackcdn.com/image/fetch/$s_!6bm7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44b791eb-de98-4923-92aa-0e4fcf93280c_900x681.png 848w, https://substackcdn.com/image/fetch/$s_!6bm7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44b791eb-de98-4923-92aa-0e4fcf93280c_900x681.png 1272w, https://substackcdn.com/image/fetch/$s_!6bm7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44b791eb-de98-4923-92aa-0e4fcf93280c_900x681.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 aria-hidden="true" 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><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>Option 2 &#8212; Global settings (applies everywhere):</strong></p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;8ea8e148-cdec-4123-9073-c15a825e6865&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">// ~/.claude/settings.json

{ "outputStyle": "Concise" }</code></pre></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mWVD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd38c42d4-232c-4178-9b9c-bce068f87c1d_917x690.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mWVD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd38c42d4-232c-4178-9b9c-bce068f87c1d_917x690.gif 424w, https://substackcdn.com/image/fetch/$s_!mWVD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd38c42d4-232c-4178-9b9c-bce068f87c1d_917x690.gif 848w, https://substackcdn.com/image/fetch/$s_!mWVD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd38c42d4-232c-4178-9b9c-bce068f87c1d_917x690.gif 1272w, https://substackcdn.com/image/fetch/$s_!mWVD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd38c42d4-232c-4178-9b9c-bce068f87c1d_917x690.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mWVD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd38c42d4-232c-4178-9b9c-bce068f87c1d_917x690.gif" width="917" height="690" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d38c42d4-232c-4178-9b9c-bce068f87c1d_917x690.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:690,&quot;width&quot;:917,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:160130,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/212552128?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd38c42d4-232c-4178-9b9c-bce068f87c1d_917x690.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!mWVD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd38c42d4-232c-4178-9b9c-bce068f87c1d_917x690.gif 424w, https://substackcdn.com/image/fetch/$s_!mWVD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd38c42d4-232c-4178-9b9c-bce068f87c1d_917x690.gif 848w, https://substackcdn.com/image/fetch/$s_!mWVD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd38c42d4-232c-4178-9b9c-bce068f87c1d_917x690.gif 1272w, https://substackcdn.com/image/fetch/$s_!mWVD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd38c42d4-232c-4178-9b9c-bce068f87c1d_917x690.gif 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 aria-hidden="true" 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><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>Run <code>/clear</code> after enabling for the change to take effect in your current session.</p><p><strong>Note :</strong> </p><blockquote><p><strong>Output styles load once at session start if you change a style mid-session and nothing changes until you run /clear.</strong></p></blockquote><p>Custom styles are also supported, you can create and save a Markdown file with frontmatter to: </p><p> <strong>~/.claude/output-styles/ for personal styles or .claude/output-styles/ for project-level styles shared with your team.</strong></p><p><strong>For Example :</strong> </p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;1750d18c-cefa-47a2-8187-04de81f01a59&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">---
name: API Impact
description: Frame every change in terms of its API surface effect
keep-coding-instructions: true
---
For every code change, lead with one of three labels: Breaking, Additive, or Internal.
Follow with a one-sentence summary of how the change affects API consumers.
Keep implementation detail in a separate section below.</code></pre></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!oTB9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1ef9431-a4fd-487e-84dd-dc6150b3f487_917x634.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oTB9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1ef9431-a4fd-487e-84dd-dc6150b3f487_917x634.gif 424w, https://substackcdn.com/image/fetch/$s_!oTB9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1ef9431-a4fd-487e-84dd-dc6150b3f487_917x634.gif 848w, https://substackcdn.com/image/fetch/$s_!oTB9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1ef9431-a4fd-487e-84dd-dc6150b3f487_917x634.gif 1272w, https://substackcdn.com/image/fetch/$s_!oTB9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1ef9431-a4fd-487e-84dd-dc6150b3f487_917x634.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!oTB9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1ef9431-a4fd-487e-84dd-dc6150b3f487_917x634.gif" width="917" height="634" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e1ef9431-a4fd-487e-84dd-dc6150b3f487_917x634.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:634,&quot;width&quot;:917,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:351400,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/212552128?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1ef9431-a4fd-487e-84dd-dc6150b3f487_917x634.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!oTB9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1ef9431-a4fd-487e-84dd-dc6150b3f487_917x634.gif 424w, https://substackcdn.com/image/fetch/$s_!oTB9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1ef9431-a4fd-487e-84dd-dc6150b3f487_917x634.gif 848w, https://substackcdn.com/image/fetch/$s_!oTB9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1ef9431-a4fd-487e-84dd-dc6150b3f487_917x634.gif 1272w, https://substackcdn.com/image/fetch/$s_!oTB9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1ef9431-a4fd-487e-84dd-dc6150b3f487_917x634.gif 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 aria-hidden="true" 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><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><blockquote><p><strong>I tested Concise mode and documented all five styles in detail &#8212; <a href="https://medium.com/@joe.njenga/i-tried-claude-code-concise-mode-the-new-way-to-kill-fluff-4b60661cf6c8">I Tried Claude Code Concise Mode (The New Way to Kill Fluff)</a></strong></p></blockquote><div><hr></div><h2>#3) Fork Mode On by Default &#8212; Subagents Now Inherit Your Full Context</h2><p><strong>Version:</strong> 2.1.232</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-htU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9335192b-c5cd-4620-ba47-c7748df9bfdf_1538x825.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-htU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9335192b-c5cd-4620-ba47-c7748df9bfdf_1538x825.gif 424w, https://substackcdn.com/image/fetch/$s_!-htU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9335192b-c5cd-4620-ba47-c7748df9bfdf_1538x825.gif 848w, https://substackcdn.com/image/fetch/$s_!-htU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9335192b-c5cd-4620-ba47-c7748df9bfdf_1538x825.gif 1272w, https://substackcdn.com/image/fetch/$s_!-htU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9335192b-c5cd-4620-ba47-c7748df9bfdf_1538x825.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-htU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9335192b-c5cd-4620-ba47-c7748df9bfdf_1538x825.gif" width="1456" height="781" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9335192b-c5cd-4620-ba47-c7748df9bfdf_1538x825.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:781,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:241969,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/212552128?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9335192b-c5cd-4620-ba47-c7748df9bfdf_1538x825.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!-htU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9335192b-c5cd-4620-ba47-c7748df9bfdf_1538x825.gif 424w, https://substackcdn.com/image/fetch/$s_!-htU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9335192b-c5cd-4620-ba47-c7748df9bfdf_1538x825.gif 848w, https://substackcdn.com/image/fetch/$s_!-htU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9335192b-c5cd-4620-ba47-c7748df9bfdf_1538x825.gif 1272w, https://substackcdn.com/image/fetch/$s_!-htU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9335192b-c5cd-4620-ba47-c7748df9bfdf_1538x825.gif 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 aria-hidden="true" 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><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>Fork mode is now on by default in interactive sessions.</p><div><hr></div><h3>What Changed</h3><p>Before this, when Claude spawned a subagent, it started fresh without memory of your conversation, and context from the session.</p><blockquote><p><strong>Now subagents inherit the full conversation and prompt cache from the parent session. </strong></p></blockquote><p>Start a fork with any task that needs everything discussed so far:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;3f3c6db5-a74e-4bf8-85dd-84ad3484edd6&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">/subtask draft unit tests</code></pre></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!YxMw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73d005fe-e8af-4f11-8e84-c1a75a3a3490_1538x621.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YxMw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73d005fe-e8af-4f11-8e84-c1a75a3a3490_1538x621.gif 424w, https://substackcdn.com/image/fetch/$s_!YxMw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73d005fe-e8af-4f11-8e84-c1a75a3a3490_1538x621.gif 848w, https://substackcdn.com/image/fetch/$s_!YxMw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73d005fe-e8af-4f11-8e84-c1a75a3a3490_1538x621.gif 1272w, https://substackcdn.com/image/fetch/$s_!YxMw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73d005fe-e8af-4f11-8e84-c1a75a3a3490_1538x621.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YxMw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73d005fe-e8af-4f11-8e84-c1a75a3a3490_1538x621.gif" width="1456" height="588" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/73d005fe-e8af-4f11-8e84-c1a75a3a3490_1538x621.gif&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;:198567,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/212552128?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73d005fe-e8af-4f11-8e84-c1a75a3a3490_1538x621.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!YxMw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73d005fe-e8af-4f11-8e84-c1a75a3a3490_1538x621.gif 424w, https://substackcdn.com/image/fetch/$s_!YxMw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73d005fe-e8af-4f11-8e84-c1a75a3a3490_1538x621.gif 848w, https://substackcdn.com/image/fetch/$s_!YxMw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73d005fe-e8af-4f11-8e84-c1a75a3a3490_1538x621.gif 1272w, https://substackcdn.com/image/fetch/$s_!YxMw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73d005fe-e8af-4f11-8e84-c1a75a3a3490_1538x621.gif 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 aria-hidden="true" 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><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 fork appears in the panel below your prompt.<em><strong> Its result arrives in your conversation when it finishes.</strong></em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5-xZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18bb8e87-9a38-46b7-8087-3d1a74a4dc56_1164x370.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5-xZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18bb8e87-9a38-46b7-8087-3d1a74a4dc56_1164x370.png 424w, https://substackcdn.com/image/fetch/$s_!5-xZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18bb8e87-9a38-46b7-8087-3d1a74a4dc56_1164x370.png 848w, https://substackcdn.com/image/fetch/$s_!5-xZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18bb8e87-9a38-46b7-8087-3d1a74a4dc56_1164x370.png 1272w, https://substackcdn.com/image/fetch/$s_!5-xZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18bb8e87-9a38-46b7-8087-3d1a74a4dc56_1164x370.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5-xZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18bb8e87-9a38-46b7-8087-3d1a74a4dc56_1164x370.png" width="1164" height="370" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/18bb8e87-9a38-46b7-8087-3d1a74a4dc56_1164x370.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:370,&quot;width&quot;:1164,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:21048,&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://newsletter.claudecodemasterclass.com/i/212552128?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18bb8e87-9a38-46b7-8087-3d1a74a4dc56_1164x370.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_!5-xZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18bb8e87-9a38-46b7-8087-3d1a74a4dc56_1164x370.png 424w, https://substackcdn.com/image/fetch/$s_!5-xZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18bb8e87-9a38-46b7-8087-3d1a74a4dc56_1164x370.png 848w, https://substackcdn.com/image/fetch/$s_!5-xZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18bb8e87-9a38-46b7-8087-3d1a74a4dc56_1164x370.png 1272w, https://substackcdn.com/image/fetch/$s_!5-xZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18bb8e87-9a38-46b7-8087-3d1a74a4dc56_1164x370.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 aria-hidden="true" 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><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>Subagents Claude spawns in interactive sessions now also run in the background by default.</p><div><hr></div><h4>Turn It Off</h4><p>If you prefer the old behavior:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;7c0129f7-2639-444b-ad4d-ed9f7af5e764&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">CLAUDE_CODE_FORK_SUBAGENT=0</code></pre></div><div><hr></div><h2>#4) Quick Wins &#8212; @ Sessions, &amp; Auto-Continue</h2><h4>@ Mention Another Session</h4><p><strong>Version:</strong> 2.1.232</p><p>Type <strong>@</strong> in the prompt to mention another Claude session by name. Claude messages it directly with <code>SendMessage</code></p><pre><code><code>@my-backend-session check if the API changes break anything
</code></code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ni6e!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4235d554-e095-465a-9769-2b72f2b818af_1405x474.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ni6e!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4235d554-e095-465a-9769-2b72f2b818af_1405x474.gif 424w, https://substackcdn.com/image/fetch/$s_!ni6e!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4235d554-e095-465a-9769-2b72f2b818af_1405x474.gif 848w, https://substackcdn.com/image/fetch/$s_!ni6e!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4235d554-e095-465a-9769-2b72f2b818af_1405x474.gif 1272w, https://substackcdn.com/image/fetch/$s_!ni6e!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4235d554-e095-465a-9769-2b72f2b818af_1405x474.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ni6e!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4235d554-e095-465a-9769-2b72f2b818af_1405x474.gif" width="1405" height="474" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4235d554-e095-465a-9769-2b72f2b818af_1405x474.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:474,&quot;width&quot;:1405,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:88769,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/212552128?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4235d554-e095-465a-9769-2b72f2b818af_1405x474.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ni6e!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4235d554-e095-465a-9769-2b72f2b818af_1405x474.gif 424w, https://substackcdn.com/image/fetch/$s_!ni6e!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4235d554-e095-465a-9769-2b72f2b818af_1405x474.gif 848w, https://substackcdn.com/image/fetch/$s_!ni6e!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4235d554-e095-465a-9769-2b72f2b818af_1405x474.gif 1272w, https://substackcdn.com/image/fetch/$s_!ni6e!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4235d554-e095-465a-9769-2b72f2b818af_1405x474.gif 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 aria-hidden="true" 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><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><div><hr></div><h4>Auto-Continue After Usage Limit</h4><p><strong>Desktop</strong></p><p>When you hit your session limit in the Claude Code Desktop Code tab, a new<strong> </strong><em><strong>Auto-continue when limits reset</strong></em><strong> </strong>checkbox appears on the limit card.</p><blockquote><p><strong>Check it and leave the session open. </strong><em>The Desktop app retries the interrupted turn automatically after the limit resets and shows you the retry time.</em></p></blockquote><div><hr></div><h2>External Models Testing &amp; Tools</h2><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rnig!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e7c7bac-3352-4ebf-ac53-b90c645024f9_1607x884.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rnig!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e7c7bac-3352-4ebf-ac53-b90c645024f9_1607x884.gif 424w, https://substackcdn.com/image/fetch/$s_!rnig!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e7c7bac-3352-4ebf-ac53-b90c645024f9_1607x884.gif 848w, https://substackcdn.com/image/fetch/$s_!rnig!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e7c7bac-3352-4ebf-ac53-b90c645024f9_1607x884.gif 1272w, https://substackcdn.com/image/fetch/$s_!rnig!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e7c7bac-3352-4ebf-ac53-b90c645024f9_1607x884.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rnig!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e7c7bac-3352-4ebf-ac53-b90c645024f9_1607x884.gif" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4e7c7bac-3352-4ebf-ac53-b90c645024f9_1607x884.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1119259,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/212552128?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e7c7bac-3352-4ebf-ac53-b90c645024f9_1607x884.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!rnig!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e7c7bac-3352-4ebf-ac53-b90c645024f9_1607x884.gif 424w, https://substackcdn.com/image/fetch/$s_!rnig!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e7c7bac-3352-4ebf-ac53-b90c645024f9_1607x884.gif 848w, https://substackcdn.com/image/fetch/$s_!rnig!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e7c7bac-3352-4ebf-ac53-b90c645024f9_1607x884.gif 1272w, https://substackcdn.com/image/fetch/$s_!rnig!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e7c7bac-3352-4ebf-ac53-b90c645024f9_1607x884.gif 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p></p><h3>DeepSeek Harness &#8212; A Free, Fully Modular Claude Code Alternative</h3><p>DeepSeek open-sourced its agent harness  an open-source alternative to Claude Code that hit 170k+ stars in just a few days after launch.</p><blockquote><p><strong>It is a terminal agent that reads your codebase, runs tools, and writes code autonomously. The difference from Claude Code is that everything inside it is a replaceable plugin.</strong></p></blockquote><p>You can replace the model, sandbox, filesystem layer, shell execution, and agent loop. Claude Code is powerful <em><strong>but its control flow is locked. </strong></em></p><div><hr></div><h3><strong>How to Install</strong></h3><pre><code><code>npx @deepseek-ai/dsh web</code></code></pre><p>Or from the repo:</p><pre><code><code>git clone https://github.com/deepseek-ai/deepseek-harness.git
cd deepseek-harness
pnpm install &amp;&amp; pnpm run build &amp;&amp; pnpm dsh web
</code></code></pre><p>The Web UI opens at http://127.0.0.1:3080.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Jvjb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32d5ede5-02cc-4a74-a4ad-741917d8f429_932x677.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Jvjb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32d5ede5-02cc-4a74-a4ad-741917d8f429_932x677.gif 424w, https://substackcdn.com/image/fetch/$s_!Jvjb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32d5ede5-02cc-4a74-a4ad-741917d8f429_932x677.gif 848w, https://substackcdn.com/image/fetch/$s_!Jvjb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32d5ede5-02cc-4a74-a4ad-741917d8f429_932x677.gif 1272w, https://substackcdn.com/image/fetch/$s_!Jvjb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32d5ede5-02cc-4a74-a4ad-741917d8f429_932x677.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Jvjb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32d5ede5-02cc-4a74-a4ad-741917d8f429_932x677.gif" width="932" height="677" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/32d5ede5-02cc-4a74-a4ad-741917d8f429_932x677.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:677,&quot;width&quot;:932,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:865058,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/212552128?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32d5ede5-02cc-4a74-a4ad-741917d8f429_932x677.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Jvjb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32d5ede5-02cc-4a74-a4ad-741917d8f429_932x677.gif 424w, https://substackcdn.com/image/fetch/$s_!Jvjb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32d5ede5-02cc-4a74-a4ad-741917d8f429_932x677.gif 848w, https://substackcdn.com/image/fetch/$s_!Jvjb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32d5ede5-02cc-4a74-a4ad-741917d8f429_932x677.gif 1272w, https://substackcdn.com/image/fetch/$s_!Jvjb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32d5ede5-02cc-4a74-a4ad-741917d8f429_932x677.gif 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 aria-hidden="true" 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><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>I tested it as a Claude Code alternative and documented the full results. </p><blockquote><p><strong>I Tried the (New) Claude Code Rival DeepSeek Harness &#8212; <a href="https://medium.com/@joe.njenga/i-tried-the-new-claude-code-rival-deepseek-harness-thats-wild-free-6e195f2ae7ae">read the full breakdown here</a></strong></p></blockquote><div><hr></div><blockquote><p><strong>You are now up to date with the latest major Claude Code updates.</strong></p></blockquote><div class="callout-block" data-callout="true"><p><span>I appreciate your support, and feel free to reach out. </span><em><strong><span>You can access the premium tutorials, newsletters, and course updates or modules as they are released in </span><a href="https://claudecodemasterclass.com/pricing/">our membership area</a></strong><span>.</span></em><span> You can also get in touch with me anytime in our private community, via email, or direct message here on Substack. </span><strong><a href="https://claudecodemasterclass.com/pricing/">Claude Code Masterclass Pro</a><span> </span></strong><span>is live; join us today and </span><em><strong>let&#8217;s keep this going.</strong></em></p><p></p></div><div class="pullquote"><p>Finally, this newsletter belongs to all of us. If there&#8217;s anything that can make it better or something you don&#8217;t like, please let me know.</p></div><h2 style="text-align: center;"><strong>Claude Code Masterclass</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_!3tqZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb30b2e42-efa1-4f5e-9b97-3451dd622afc_1478x780.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3tqZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb30b2e42-efa1-4f5e-9b97-3451dd622afc_1478x780.png 424w, https://substackcdn.com/image/fetch/$s_!3tqZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb30b2e42-efa1-4f5e-9b97-3451dd622afc_1478x780.png 848w, https://substackcdn.com/image/fetch/$s_!3tqZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb30b2e42-efa1-4f5e-9b97-3451dd622afc_1478x780.png 1272w, https://substackcdn.com/image/fetch/$s_!3tqZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb30b2e42-efa1-4f5e-9b97-3451dd622afc_1478x780.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3tqZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb30b2e42-efa1-4f5e-9b97-3451dd622afc_1478x780.png" width="1456" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b30b2e42-efa1-4f5e-9b97-3451dd622afc_1478x780.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:51395,&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://newsletter.claudecodemasterclass.com/i/212552128?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb30b2e42-efa1-4f5e-9b97-3451dd622afc_1478x780.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_!3tqZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb30b2e42-efa1-4f5e-9b97-3451dd622afc_1478x780.png 424w, https://substackcdn.com/image/fetch/$s_!3tqZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb30b2e42-efa1-4f5e-9b97-3451dd622afc_1478x780.png 848w, https://substackcdn.com/image/fetch/$s_!3tqZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb30b2e42-efa1-4f5e-9b97-3451dd622afc_1478x780.png 1272w, https://substackcdn.com/image/fetch/$s_!3tqZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb30b2e42-efa1-4f5e-9b97-3451dd622afc_1478x780.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 aria-hidden="true" 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><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 style="text-align: center;"><strong>Let&#8217;s Build It Together</strong></p><p style="text-align: center;"><strong>&#8212; Joe Njenga</strong></p><p></p>]]></content:encoded></item><item><title><![CDATA[Claude Code Graph Engineering Masterclass: Build AI Systems That Think in Graphs]]></title><description><![CDATA[Architecture That Takes Claude Code Beyond Prompts, Loops, to Diamond Graph Agents]]></description><link>https://newsletter.claudecodemasterclass.com/p/claude-code-graph-engineering-masterclass</link><guid isPermaLink="false">https://newsletter.claudecodemasterclass.com/p/claude-code-graph-engineering-masterclass</guid><dc:creator><![CDATA[Joe]]></dc:creator><pubDate>Wed, 19 Aug 2026 20:01:18 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Xc_z!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb02f2122-c40d-4d4c-9572-dcc33ea7aceb_1200x600.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_!Xc_z!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb02f2122-c40d-4d4c-9572-dcc33ea7aceb_1200x600.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Xc_z!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb02f2122-c40d-4d4c-9572-dcc33ea7aceb_1200x600.png 424w, https://substackcdn.com/image/fetch/$s_!Xc_z!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb02f2122-c40d-4d4c-9572-dcc33ea7aceb_1200x600.png 848w, https://substackcdn.com/image/fetch/$s_!Xc_z!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb02f2122-c40d-4d4c-9572-dcc33ea7aceb_1200x600.png 1272w, https://substackcdn.com/image/fetch/$s_!Xc_z!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb02f2122-c40d-4d4c-9572-dcc33ea7aceb_1200x600.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Xc_z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb02f2122-c40d-4d4c-9572-dcc33ea7aceb_1200x600.png" width="1200" height="600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b02f2122-c40d-4d4c-9572-dcc33ea7aceb_1200x600.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:600,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:83755,&quot;alt&quot;:&quot;Claude Code Graph Engineering&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://newsletter.claudecodemasterclass.com/i/211587508?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb02f2122-c40d-4d4c-9572-dcc33ea7aceb_1200x600.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Claude Code Graph Engineering" title="Claude Code Graph Engineering" srcset="https://substackcdn.com/image/fetch/$s_!Xc_z!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb02f2122-c40d-4d4c-9572-dcc33ea7aceb_1200x600.png 424w, https://substackcdn.com/image/fetch/$s_!Xc_z!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb02f2122-c40d-4d4c-9572-dcc33ea7aceb_1200x600.png 848w, https://substackcdn.com/image/fetch/$s_!Xc_z!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb02f2122-c40d-4d4c-9572-dcc33ea7aceb_1200x600.png 1272w, https://substackcdn.com/image/fetch/$s_!Xc_z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb02f2122-c40d-4d4c-9572-dcc33ea7aceb_1200x600.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 aria-hidden="true" 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><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>Welcome back to the Claude Code Masterclass. <em><strong>Special thanks </strong>to all new members who <strong>have joined to support the newsletter</strong>. </em></p><div class="callout-block" data-callout="true"><p><strong>Thousands</strong> of you pledged to support the newsletter from last year to date, and I couldn&#8217;t turn on payments until now. I have built a membership site where you can support the newsletter and access the course as modules ship.</p><p><em><strong><a href="https://claudecodemasterclass.com/pricing/">Claude Code Masterclass Pro</a></strong></em><strong> </strong>is live; <strong><a href="https://claudecodemasterclass.com/pricing/">join here</a></strong> &#8212; <em><strong>Let&#8217;s keep this going</strong></em></p></div><div><hr></div><p>In the last issue, we covered <em><strong><a href="https://newsletter.claudecodemasterclass.com/p/claude-code-loop-and-graph-engineering">loop engineering from first principles</a></strong></em>: what a loop is, the four phases every loop runs through, and the three things that make one work in production. </p><blockquote><p><strong>We also showed all three Claude Code loop commands, /goal, /loop, and /schedule, running on real projects.</strong></p></blockquote><p>By the end of that issue, one question was left unanswered: <em><strong>what happens when a single loop is not enough?</strong></em><span>.</span></p><p>Some tasks cannot be done well by only one agent. </p><p>When your loop starts reviewing its own work, running tasks sequentially that could run in parallel, or producing control flow that you cannot audit, <em><strong>that loop has hit the ceiling.</strong></em></p><p>In this issue, we will cover graph engineering and testing in a real project that proves the difference between a loop and a graph. </p><div><hr></div><h2><strong>Graph Engineering</strong></h2><p>One of the most common misconceptions is that loops are replacing graphs. It&#8217;s not true that you throw away the loops when you build graphs. </p><p>The best way to understand how the two work together is one line: </p><blockquote><p><strong>A loop is a node in a graph</strong></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_!q5Ok!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F485a8118-d233-481e-937f-d64dce60958b_1217x482.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!q5Ok!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F485a8118-d233-481e-937f-d64dce60958b_1217x482.png 424w, https://substackcdn.com/image/fetch/$s_!q5Ok!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F485a8118-d233-481e-937f-d64dce60958b_1217x482.png 848w, https://substackcdn.com/image/fetch/$s_!q5Ok!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F485a8118-d233-481e-937f-d64dce60958b_1217x482.png 1272w, https://substackcdn.com/image/fetch/$s_!q5Ok!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F485a8118-d233-481e-937f-d64dce60958b_1217x482.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!q5Ok!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F485a8118-d233-481e-937f-d64dce60958b_1217x482.png" width="1217" height="482" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/485a8118-d233-481e-937f-d64dce60958b_1217x482.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:482,&quot;width&quot;:1217,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:41993,&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://newsletter.claudecodemasterclass.com/i/211587508?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F485a8118-d233-481e-937f-d64dce60958b_1217x482.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_!q5Ok!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F485a8118-d233-481e-937f-d64dce60958b_1217x482.png 424w, https://substackcdn.com/image/fetch/$s_!q5Ok!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F485a8118-d233-481e-937f-d64dce60958b_1217x482.png 848w, https://substackcdn.com/image/fetch/$s_!q5Ok!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F485a8118-d233-481e-937f-d64dce60958b_1217x482.png 1272w, https://substackcdn.com/image/fetch/$s_!q5Ok!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F485a8118-d233-481e-937f-d64dce60958b_1217x482.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 aria-hidden="true" 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><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>Each node inside a graph is still running a loop. </p><blockquote><p><strong>The graph is the structure that connects those loops, routes work between them, and manages what they pass to each other.</strong></p></blockquote><div><hr></div><h3>Loops to Graphs </h3><p>Not every loop should become a graph. Most should stay as loops, but there are reasons to consider turning a loop into a graph.  </p><ol><li><p><strong>Same agent is reviewing its own work</strong></p></li></ol><p>If the loop writes a report and then reviews in the same context, the reviewer already knows why every decision was made. You will see this as outputs that pass review but contain errors that an outside reader would immediately catch.</p><ol start="2"><li><p><strong>Two things could run simultaneously but must run one after the other</strong></p></li></ol><p>If the loop checks security vulnerabilities, then checks logic errors, then checks test coverage, those three checks are independent. </p><ol start="3"><li><p><strong>You cannot explain what the loop did without reading the entire transcript</strong></p></li></ol><p> In a graph, you can point to the diagram and explain every routing decision.</p><div><hr></div><h3>What Is a Graph? </h3><p>Graph engineering is building multiple specialized agents (nodes) connected by edges, with shared structured state flowing between them, where the routing logic between nodes is explicit and readable as a diagram.</p><blockquote><p>The three words:<strong> specialized, explicit, and readable.</strong></p></blockquote><ul><li><p><strong>Specialized:</strong> each node has one job and its own clean context</p></li><li><p><strong>Explicit:</strong> every routing decision is defined in code or in the graph structure</p></li><li><p><strong>Readable:</strong> you can explain the control flow by pointing to the diagram</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_!1Uc0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F011e696b-95eb-4f8d-85e4-15d421507430_1057x532.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1Uc0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F011e696b-95eb-4f8d-85e4-15d421507430_1057x532.png 424w, https://substackcdn.com/image/fetch/$s_!1Uc0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F011e696b-95eb-4f8d-85e4-15d421507430_1057x532.png 848w, https://substackcdn.com/image/fetch/$s_!1Uc0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F011e696b-95eb-4f8d-85e4-15d421507430_1057x532.png 1272w, https://substackcdn.com/image/fetch/$s_!1Uc0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F011e696b-95eb-4f8d-85e4-15d421507430_1057x532.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1Uc0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F011e696b-95eb-4f8d-85e4-15d421507430_1057x532.png" width="1057" height="532" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/011e696b-95eb-4f8d-85e4-15d421507430_1057x532.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:532,&quot;width&quot;:1057,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:25556,&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://newsletter.claudecodemasterclass.com/i/211587508?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F011e696b-95eb-4f8d-85e4-15d421507430_1057x532.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_!1Uc0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F011e696b-95eb-4f8d-85e4-15d421507430_1057x532.png 424w, https://substackcdn.com/image/fetch/$s_!1Uc0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F011e696b-95eb-4f8d-85e4-15d421507430_1057x532.png 848w, https://substackcdn.com/image/fetch/$s_!1Uc0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F011e696b-95eb-4f8d-85e4-15d421507430_1057x532.png 1272w, https://substackcdn.com/image/fetch/$s_!1Uc0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F011e696b-95eb-4f8d-85e4-15d421507430_1057x532.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 aria-hidden="true" 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><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><ul><li><p><strong>Node:</strong> The unit of work that gets clean input, does one thing, produces structured output. If you cannot describe a node&#8217;s job in five words or fewer, it is doing too much.</p></li></ul><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;2e52cbce-773c-472d-ada4-9aa39af22a2d&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">Good node: collect_context analyze_security write_report 

Bad node: research_and_write_and_review_and_approve</code></pre></div><ul><li><p><strong>Edge:</strong> What is allowed to happen next. A fixed edge means Node A always goes to Node B. The question every edge answers: <em><strong>what is allowed to run after this?</strong></em></p></li><li><p><strong>Conditional Edge:</strong> The decision point. When the output of Node A determines which node runs next, that is a conditional edge. The routing decision can be made by code (deterministic rules) or by an LLM (uncertain decisions that require reasoning). </p></li><li><p><strong>State Machine:</strong> The complete shape of the graph. Every node is a state the work can be in. A check at each node decides the next hop. <em><strong>When you draw the graph on paper, you are drawing the state machine.</strong></em></p></li><li><p><strong>Shared State:</strong> The structured object that flows between nodes. Every node reads from it, writes its findings to it, and passes it to the next node. This is the backbone of the graph.<em><strong> What belongs in shared state: brief, evidence, node status, retry counts, severity, findings. </strong></em></p></li><li><p><strong>Agent Loops:</strong> The loop engine running inside each node. Each node is not a single call. It is a small loop that discovers, plans, executes, and verifies until the node&#8217;s specific job is done. <em><strong>The internal loop stop condition is different from the graph routing condition.</strong></em></p></li></ul><blockquote><p><strong>It helps to understand the layers of AI engineering that position the graph as the outermost layer.  </strong></p></blockquote><div><hr></div><h2>Five Layers of AI Engineering</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!K-Qx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ba0e6b3-522d-41bd-86f8-b9cbd5e96870_910x579.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!K-Qx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ba0e6b3-522d-41bd-86f8-b9cbd5e96870_910x579.png 424w, https://substackcdn.com/image/fetch/$s_!K-Qx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ba0e6b3-522d-41bd-86f8-b9cbd5e96870_910x579.png 848w, https://substackcdn.com/image/fetch/$s_!K-Qx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ba0e6b3-522d-41bd-86f8-b9cbd5e96870_910x579.png 1272w, https://substackcdn.com/image/fetch/$s_!K-Qx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ba0e6b3-522d-41bd-86f8-b9cbd5e96870_910x579.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!K-Qx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ba0e6b3-522d-41bd-86f8-b9cbd5e96870_910x579.png" width="910" height="579" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0ba0e6b3-522d-41bd-86f8-b9cbd5e96870_910x579.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:579,&quot;width&quot;:910,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:20854,&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://newsletter.claudecodemasterclass.com/i/211587508?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ba0e6b3-522d-41bd-86f8-b9cbd5e96870_910x579.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_!K-Qx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ba0e6b3-522d-41bd-86f8-b9cbd5e96870_910x579.png 424w, https://substackcdn.com/image/fetch/$s_!K-Qx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ba0e6b3-522d-41bd-86f8-b9cbd5e96870_910x579.png 848w, https://substackcdn.com/image/fetch/$s_!K-Qx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ba0e6b3-522d-41bd-86f8-b9cbd5e96870_910x579.png 1272w, https://substackcdn.com/image/fetch/$s_!K-Qx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ba0e6b3-522d-41bd-86f8-b9cbd5e96870_910x579.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 aria-hidden="true" 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><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>Graph engineering has been evolving for the last two years. </p><p>LangGraph shipped the <a href="https://reference.langchain.com/python/langgraph/graph/state/StateGraph">StateGraph pattern</a> in 2024. </p><p><strong><a href="https://github.com/microsoft/autogen">AutoGen</a>, <a href="https://adk.dev/">Google ADK</a></strong>, and the<strong> <a href="https://github.com/a2aproject/A2A">A2A protocol</a> </strong>were building <em><strong>graph orchestration before "graph engineering"</strong></em> became a trend.</p><p><strong>But what&#8217;s new : </strong></p><ul><li><p>Parallel specialized nodes with clean contexts</p></li><li><p>Fan-out then fan-in as a first-class architectural move</p></li><li><p>Control flow you can draw as a diagram before writing the first prompt</p></li></ul><div><hr></div><h2>Three Problems a Graph Solves</h2><p>A graph is the right tool when a loop fails at one of three things. Here is each problem with its visual and its graph solution</p><p><strong>Context Pollution</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_!zjJM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee407f32-0ba2-4eae-afc3-da1c1979ac6b_994x526.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zjJM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee407f32-0ba2-4eae-afc3-da1c1979ac6b_994x526.png 424w, https://substackcdn.com/image/fetch/$s_!zjJM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee407f32-0ba2-4eae-afc3-da1c1979ac6b_994x526.png 848w, https://substackcdn.com/image/fetch/$s_!zjJM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee407f32-0ba2-4eae-afc3-da1c1979ac6b_994x526.png 1272w, https://substackcdn.com/image/fetch/$s_!zjJM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee407f32-0ba2-4eae-afc3-da1c1979ac6b_994x526.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zjJM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee407f32-0ba2-4eae-afc3-da1c1979ac6b_994x526.png" width="994" height="526" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ee407f32-0ba2-4eae-afc3-da1c1979ac6b_994x526.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:526,&quot;width&quot;:994,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:32259,&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://newsletter.claudecodemasterclass.com/i/211587508?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee407f32-0ba2-4eae-afc3-da1c1979ac6b_994x526.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_!zjJM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee407f32-0ba2-4eae-afc3-da1c1979ac6b_994x526.png 424w, https://substackcdn.com/image/fetch/$s_!zjJM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee407f32-0ba2-4eae-afc3-da1c1979ac6b_994x526.png 848w, https://substackcdn.com/image/fetch/$s_!zjJM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee407f32-0ba2-4eae-afc3-da1c1979ac6b_994x526.png 1272w, https://substackcdn.com/image/fetch/$s_!zjJM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee407f32-0ba2-4eae-afc3-da1c1979ac6b_994x526.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 aria-hidden="true" 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><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>Solution </strong></p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;d7ca278f-2167-44ab-95ee-5a9399346304&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">&#9556;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9559;
&#9553;         THE GRAPH SOLUTION                           &#9553;
&#9568;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9571;
&#9553;                                                      &#9553;
&#9553;  Node 1 [context: full codebase + task]              &#9553;
&#9553;     &#9474; writes structured findings to shared state     &#9553;
&#9553;     &#9660;                                                &#9553;
&#9553;  Node 2 [context: findings only. Never saw the code] &#9553;
&#9553;     &#9474; writes the report                              &#9553;
&#9553;     &#9660;                                                &#9553;
&#9553;  Node 3 [context: report only. Never saw findings or &#9553;
&#9553;           the code. Reads cold like a stranger]      &#9553;
&#9553;     &#9474; catches what Node 1 missed                     &#9553;
&#9553;     &#9660;                                                &#9553;
&#9553;                   REAL REVIEW &#10003;                      &#9553;
&#9562;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9565;</code></pre></div><p></p><div><hr></div><p><strong>Sequential vs Parallel Execution</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_!ysoj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa84a5d3-92ac-4522-adb3-8aefa3545e77_1314x561.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ysoj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa84a5d3-92ac-4522-adb3-8aefa3545e77_1314x561.png 424w, https://substackcdn.com/image/fetch/$s_!ysoj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa84a5d3-92ac-4522-adb3-8aefa3545e77_1314x561.png 848w, https://substackcdn.com/image/fetch/$s_!ysoj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa84a5d3-92ac-4522-adb3-8aefa3545e77_1314x561.png 1272w, https://substackcdn.com/image/fetch/$s_!ysoj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa84a5d3-92ac-4522-adb3-8aefa3545e77_1314x561.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ysoj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa84a5d3-92ac-4522-adb3-8aefa3545e77_1314x561.png" width="1314" height="561" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/aa84a5d3-92ac-4522-adb3-8aefa3545e77_1314x561.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:561,&quot;width&quot;:1314,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:48856,&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://newsletter.claudecodemasterclass.com/i/211587508?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa84a5d3-92ac-4522-adb3-8aefa3545e77_1314x561.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_!ysoj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa84a5d3-92ac-4522-adb3-8aefa3545e77_1314x561.png 424w, https://substackcdn.com/image/fetch/$s_!ysoj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa84a5d3-92ac-4522-adb3-8aefa3545e77_1314x561.png 848w, https://substackcdn.com/image/fetch/$s_!ysoj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa84a5d3-92ac-4522-adb3-8aefa3545e77_1314x561.png 1272w, https://substackcdn.com/image/fetch/$s_!ysoj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa84a5d3-92ac-4522-adb3-8aefa3545e77_1314x561.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 aria-hidden="true" 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><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><div><hr></div><p><strong>Invisible Control Flow</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_!8Shs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46160666-1bf9-462b-b191-ab6905681222_1181x430.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8Shs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46160666-1bf9-462b-b191-ab6905681222_1181x430.png 424w, https://substackcdn.com/image/fetch/$s_!8Shs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46160666-1bf9-462b-b191-ab6905681222_1181x430.png 848w, https://substackcdn.com/image/fetch/$s_!8Shs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46160666-1bf9-462b-b191-ab6905681222_1181x430.png 1272w, https://substackcdn.com/image/fetch/$s_!8Shs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46160666-1bf9-462b-b191-ab6905681222_1181x430.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8Shs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46160666-1bf9-462b-b191-ab6905681222_1181x430.png" width="1181" height="430" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/46160666-1bf9-462b-b191-ab6905681222_1181x430.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:430,&quot;width&quot;:1181,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:36631,&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://newsletter.claudecodemasterclass.com/i/211587508?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46160666-1bf9-462b-b191-ab6905681222_1181x430.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_!8Shs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46160666-1bf9-462b-b191-ab6905681222_1181x430.png 424w, https://substackcdn.com/image/fetch/$s_!8Shs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46160666-1bf9-462b-b191-ab6905681222_1181x430.png 848w, https://substackcdn.com/image/fetch/$s_!8Shs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46160666-1bf9-462b-b191-ab6905681222_1181x430.png 1272w, https://substackcdn.com/image/fetch/$s_!8Shs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46160666-1bf9-462b-b191-ab6905681222_1181x430.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 aria-hidden="true" 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><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><div><hr></div><h2>Real Graph Example: Incident Intelligence System</h2><p>I thought about a real graph running in Claude Code to solve one of the most common engineering problems. </p><blockquote><p><strong>Suppose it&#8217;s 2 AM, five microservices are down, and you have 1000 lines of error logs from five different services all firing at once. </strong></p></blockquote><p>A basic approach is to paste everything into Claude Code and ask it to find the root cause.</p><p><strong>The loop version can&#8217;t handle this mess; this is the sequence </strong></p><ul><li><p>All five service logs in one context. Service A errors mix with Service B errors</p></li><li><p>The database errors look most severe and appear most frequently</p></li><li><p>The loop identifies database connection pool exhaustion as the root cause.</p></li></ul><p>When you fix the database, <em><strong>nothing improves because the database was not the problem. </strong></em></p><blockquote><p><strong>What happened was this:</strong></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_!mWkU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F123509d6-152e-409c-b0a0-d3696ab689a5_805x739.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mWkU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F123509d6-152e-409c-b0a0-d3696ab689a5_805x739.png 424w, https://substackcdn.com/image/fetch/$s_!mWkU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F123509d6-152e-409c-b0a0-d3696ab689a5_805x739.png 848w, https://substackcdn.com/image/fetch/$s_!mWkU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F123509d6-152e-409c-b0a0-d3696ab689a5_805x739.png 1272w, https://substackcdn.com/image/fetch/$s_!mWkU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F123509d6-152e-409c-b0a0-d3696ab689a5_805x739.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mWkU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F123509d6-152e-409c-b0a0-d3696ab689a5_805x739.png" width="805" height="739" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/123509d6-152e-409c-b0a0-d3696ab689a5_805x739.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:739,&quot;width&quot;:805,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:27122,&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://newsletter.claudecodemasterclass.com/i/211587508?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F123509d6-152e-409c-b0a0-d3696ab689a5_805x739.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_!mWkU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F123509d6-152e-409c-b0a0-d3696ab689a5_805x739.png 424w, https://substackcdn.com/image/fetch/$s_!mWkU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F123509d6-152e-409c-b0a0-d3696ab689a5_805x739.png 848w, https://substackcdn.com/image/fetch/$s_!mWkU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F123509d6-152e-409c-b0a0-d3696ab689a5_805x739.png 1272w, https://substackcdn.com/image/fetch/$s_!mWkU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F123509d6-152e-409c-b0a0-d3696ab689a5_805x739.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 aria-hidden="true" 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><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>To build the best graph solution, you should design the graph before writing any 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_!mXax!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13bba67a-6f60-4e33-bec0-62a1d8a29e55_731x826.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mXax!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13bba67a-6f60-4e33-bec0-62a1d8a29e55_731x826.png 424w, https://substackcdn.com/image/fetch/$s_!mXax!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13bba67a-6f60-4e33-bec0-62a1d8a29e55_731x826.png 848w, https://substackcdn.com/image/fetch/$s_!mXax!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13bba67a-6f60-4e33-bec0-62a1d8a29e55_731x826.png 1272w, https://substackcdn.com/image/fetch/$s_!mXax!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13bba67a-6f60-4e33-bec0-62a1d8a29e55_731x826.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mXax!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13bba67a-6f60-4e33-bec0-62a1d8a29e55_731x826.png" width="731" height="826" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/13bba67a-6f60-4e33-bec0-62a1d8a29e55_731x826.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:826,&quot;width&quot;:731,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:32158,&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://newsletter.claudecodemasterclass.com/i/211587508?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13bba67a-6f60-4e33-bec0-62a1d8a29e55_731x826.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_!mXax!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13bba67a-6f60-4e33-bec0-62a1d8a29e55_731x826.png 424w, https://substackcdn.com/image/fetch/$s_!mXax!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13bba67a-6f60-4e33-bec0-62a1d8a29e55_731x826.png 848w, https://substackcdn.com/image/fetch/$s_!mXax!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13bba67a-6f60-4e33-bec0-62a1d8a29e55_731x826.png 1272w, https://substackcdn.com/image/fetch/$s_!mXax!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13bba67a-6f60-4e33-bec0-62a1d8a29e55_731x826.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 aria-hidden="true" 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><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><h3>Shared State Schema</h3><p>Every node reads from and writes to one structured object:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;2d4583ac-a67b-45df-8bd0-573b7d5593ae&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python">class IncidentState(TypedDict):
    raw_logs: dict          # Parser writes, everyone reads
    parsed_events: dict     # Parser writes by service name
    service_findings: dict  # Each Analyzer writes its own entry
    correlations: list      # Correlator writes
    cascade_chain: list     # Correlator writes (ordered)
    root_cause: dict        # Root Cause node writes
    severity: str           # P0, P1, or P2
    remediation: dict       # Remediation node writes
    node_trace: list        # Every node appends its execution record</code></pre></div><p>The key rule: <strong>each node owns one section of state.</strong></p><ul><li><p> <span>Parser writes </span><code>raw_logs</code></p></li><li><p><span> Analyzers write </span><code>service_findings[service_name]</code></p></li><li><p><span>Correlator writes </span><code>correlations</code><span> and </span><code>cascade_chain</code></p></li></ul><div><hr></div><h2>Loop vs Graph on Claude Code Testing </h2><p>I ran the same codebase through two loop vs graph agents , the project is our test project.</p><blockquote><p><strong>Claude Code Tracker a FastAPI application with JWT authentication, SQLAlchemy database layer, and a pytest test suite. </strong></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_!4Wt4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9840c40f-13fa-443d-be6e-0e872fd59263_1388x827.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4Wt4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9840c40f-13fa-443d-be6e-0e872fd59263_1388x827.gif 424w, https://substackcdn.com/image/fetch/$s_!4Wt4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9840c40f-13fa-443d-be6e-0e872fd59263_1388x827.gif 848w, https://substackcdn.com/image/fetch/$s_!4Wt4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9840c40f-13fa-443d-be6e-0e872fd59263_1388x827.gif 1272w, https://substackcdn.com/image/fetch/$s_!4Wt4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9840c40f-13fa-443d-be6e-0e872fd59263_1388x827.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4Wt4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9840c40f-13fa-443d-be6e-0e872fd59263_1388x827.gif" width="1388" height="827" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9840c40f-13fa-443d-be6e-0e872fd59263_1388x827.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:827,&quot;width&quot;:1388,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:264037,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/211587508?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9840c40f-13fa-443d-be6e-0e872fd59263_1388x827.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!4Wt4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9840c40f-13fa-443d-be6e-0e872fd59263_1388x827.gif 424w, https://substackcdn.com/image/fetch/$s_!4Wt4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9840c40f-13fa-443d-be6e-0e872fd59263_1388x827.gif 848w, https://substackcdn.com/image/fetch/$s_!4Wt4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9840c40f-13fa-443d-be6e-0e872fd59263_1388x827.gif 1272w, https://substackcdn.com/image/fetch/$s_!4Wt4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9840c40f-13fa-443d-be6e-0e872fd59263_1388x827.gif 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 aria-hidden="true" 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><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 codebase has bugs, security gaps, and code quality problems scattered across four files. </p><blockquote><p><strong>T</strong><em><strong>he goal for both architectures: find everything wrong with this codebase.</strong></em></p></blockquote><div><hr></div><h2>Claude Code Loop Session</h2><p>We can test the loop version in Claude Code by running one loop to review the code which we <em><strong>obviously know its the same that wrote the code and it cant be objective </strong></em></p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;3073917e-51db-4c6e-b389-7f9134ce7dce&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">You are a senior code reviewer doing a full security and quality audit.

Your job has four steps and you must complete all four in order:

STEP 1 &#8212; READ THE CODEBASE
Read every file in the app/ directory. Understand the architecture,
the authentication system, the database layer, and the API endpoints.
Do not write any findings yet.

STEP 2 &#8212; FIND ALL BUGS
Go through every file again and list every bug, security vulnerability,
and code quality problem you find. Number each finding. Include the
file name, line number, severity (critical/high/medium/low), and a
one-line explanation of the problem.

STEP 3 &#8212; WRITE THE REPORT
Write a structured bug report with an executive summary, the numbered
findings grouped by severity, and a recommended fix for each one.
Save the report to a file called loop_report.md in the project root.

STEP 4 &#8212; REVIEW YOUR OWN REPORT
Read loop_report.md and check whether the report is accurate,
complete, and well-reasoned. State whether you stand by every
finding or whether you want to change anything.

When all four steps are complete, run /cost and report the total.</code></pre></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LDR7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0aa62feb-f0a5-44f9-85df-0c40c2fadb55_1341x842.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LDR7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0aa62feb-f0a5-44f9-85df-0c40c2fadb55_1341x842.gif 424w, https://substackcdn.com/image/fetch/$s_!LDR7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0aa62feb-f0a5-44f9-85df-0c40c2fadb55_1341x842.gif 848w, https://substackcdn.com/image/fetch/$s_!LDR7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0aa62feb-f0a5-44f9-85df-0c40c2fadb55_1341x842.gif 1272w, https://substackcdn.com/image/fetch/$s_!LDR7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0aa62feb-f0a5-44f9-85df-0c40c2fadb55_1341x842.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LDR7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0aa62feb-f0a5-44f9-85df-0c40c2fadb55_1341x842.gif" width="1341" height="842" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0aa62feb-f0a5-44f9-85df-0c40c2fadb55_1341x842.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:842,&quot;width&quot;:1341,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:660342,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/211587508?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0aa62feb-f0a5-44f9-85df-0c40c2fadb55_1341x842.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!LDR7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0aa62feb-f0a5-44f9-85df-0c40c2fadb55_1341x842.gif 424w, https://substackcdn.com/image/fetch/$s_!LDR7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0aa62feb-f0a5-44f9-85df-0c40c2fadb55_1341x842.gif 848w, https://substackcdn.com/image/fetch/$s_!LDR7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0aa62feb-f0a5-44f9-85df-0c40c2fadb55_1341x842.gif 1272w, https://substackcdn.com/image/fetch/$s_!LDR7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0aa62feb-f0a5-44f9-85df-0c40c2fadb55_1341x842.gif 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 aria-hidden="true" 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><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><blockquote><p><strong>It produced a detailed report bit this cannot be fully trusted since it&#8217;s a self agent review. </strong></p></blockquote><p>In the loop version, one Claude Code session reads the entire codebase, identifies bugs, writes the report, and then reviews its own report.</p><p>This is how most developers use Claude Code for code review today. It is the natural single-session approach but has a fundamental problem</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!GmHV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F661b865a-ba89-4297-a4fc-aa7835fd7f25_1341x842.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GmHV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F661b865a-ba89-4297-a4fc-aa7835fd7f25_1341x842.gif 424w, https://substackcdn.com/image/fetch/$s_!GmHV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F661b865a-ba89-4297-a4fc-aa7835fd7f25_1341x842.gif 848w, https://substackcdn.com/image/fetch/$s_!GmHV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F661b865a-ba89-4297-a4fc-aa7835fd7f25_1341x842.gif 1272w, https://substackcdn.com/image/fetch/$s_!GmHV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F661b865a-ba89-4297-a4fc-aa7835fd7f25_1341x842.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GmHV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F661b865a-ba89-4297-a4fc-aa7835fd7f25_1341x842.gif" width="1341" height="842" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/661b865a-ba89-4297-a4fc-aa7835fd7f25_1341x842.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:842,&quot;width&quot;:1341,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2148973,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/211587508?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F661b865a-ba89-4297-a4fc-aa7835fd7f25_1341x842.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!GmHV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F661b865a-ba89-4297-a4fc-aa7835fd7f25_1341x842.gif 424w, https://substackcdn.com/image/fetch/$s_!GmHV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F661b865a-ba89-4297-a4fc-aa7835fd7f25_1341x842.gif 848w, https://substackcdn.com/image/fetch/$s_!GmHV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F661b865a-ba89-4297-a4fc-aa7835fd7f25_1341x842.gif 1272w, https://substackcdn.com/image/fetch/$s_!GmHV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F661b865a-ba89-4297-a4fc-aa7835fd7f25_1341x842.gif 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 aria-hidden="true" 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><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>By the time the agent reaches the review step, it has already processed every file.</p><p> The agent knows why it included each finding and reasoning behind every severity rating. It cannot evaluate the report the way an independent reviewer agent can.</p><div class="pullquote"><p>A better approach is to use the graph engineering concept of three agents working together towards a common goal and each handling one task in a clean context. </p></div><h2>Claude Code Graph Session (Agent Teams)</h2><p>The graph approach is to spawn three agents each with clean content and <strong>a</strong><em><strong>gent 3 reviews the report without ever seeing the code one the findings</strong></em> which gives it an independent review. </p><div><hr></div><h3><strong>Setup</strong></h3><ol><li><p><em>Open Claude Code</em></p></li><li><p><em>Navigate to your project </em></p></li><li><p><em>Confirm agent teams are enabled in your </em><code>settings.json</code><em>: </em><code>&#8220;CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS&#8221;: &#8220;1&#8221;</code></p></li><li><p><em>Set effort to high: </em><code>/effort high</code></p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nf_g!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bd10fad-5d20-4c94-bb34-c82bb2ac9d59_915x561.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nf_g!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bd10fad-5d20-4c94-bb34-c82bb2ac9d59_915x561.gif 424w, https://substackcdn.com/image/fetch/$s_!nf_g!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bd10fad-5d20-4c94-bb34-c82bb2ac9d59_915x561.gif 848w, https://substackcdn.com/image/fetch/$s_!nf_g!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bd10fad-5d20-4c94-bb34-c82bb2ac9d59_915x561.gif 1272w, https://substackcdn.com/image/fetch/$s_!nf_g!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bd10fad-5d20-4c94-bb34-c82bb2ac9d59_915x561.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nf_g!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bd10fad-5d20-4c94-bb34-c82bb2ac9d59_915x561.gif" width="915" height="561" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0bd10fad-5d20-4c94-bb34-c82bb2ac9d59_915x561.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:561,&quot;width&quot;:915,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:394771,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/211587508?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bd10fad-5d20-4c94-bb34-c82bb2ac9d59_915x561.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!nf_g!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bd10fad-5d20-4c94-bb34-c82bb2ac9d59_915x561.gif 424w, https://substackcdn.com/image/fetch/$s_!nf_g!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bd10fad-5d20-4c94-bb34-c82bb2ac9d59_915x561.gif 848w, https://substackcdn.com/image/fetch/$s_!nf_g!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bd10fad-5d20-4c94-bb34-c82bb2ac9d59_915x561.gif 1272w, https://substackcdn.com/image/fetch/$s_!nf_g!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bd10fad-5d20-4c94-bb34-c82bb2ac9d59_915x561.gif 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 aria-hidden="true" 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><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><div><hr></div><h3>Step 1 &#8212; Spawn Agent 1: The Context Gatherer</h3><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;e0cbbd27-b66b-4bbe-a6a2-24c339caff85&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">You are Agent 1: Context Gatherer.

Your only job is to read the codebase and produce a structured
summary. You must not find bugs, form opinions, or make judgments.
Only structure what you see.

Read every file in the app/ directory and produce a JSON file
called agent1_context.json with this exact structure:

{
  "project_name": "",
  "tech_stack": [],
  "file_inventory": [
    {
      "file": "",
      "purpose": "",
      "key_functions": [],
      "dependencies": []
    }
  ],
  "authentication_system": "",
  "database_layer": "",
  "api_endpoints": [],
  "external_integrations": []
}

Save agent1_context.json to the project root.
Do not write any bug findings. Do not evaluate quality.
Only document what exists.
When done say: AGENT 1 COMPLETE</code></pre></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BXea!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98b6ed34-3ab0-4df4-97e4-31d867be26d4_915x753.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BXea!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98b6ed34-3ab0-4df4-97e4-31d867be26d4_915x753.gif 424w, https://substackcdn.com/image/fetch/$s_!BXea!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98b6ed34-3ab0-4df4-97e4-31d867be26d4_915x753.gif 848w, https://substackcdn.com/image/fetch/$s_!BXea!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98b6ed34-3ab0-4df4-97e4-31d867be26d4_915x753.gif 1272w, https://substackcdn.com/image/fetch/$s_!BXea!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98b6ed34-3ab0-4df4-97e4-31d867be26d4_915x753.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BXea!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98b6ed34-3ab0-4df4-97e4-31d867be26d4_915x753.gif" width="915" height="753" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/98b6ed34-3ab0-4df4-97e4-31d867be26d4_915x753.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:753,&quot;width&quot;:915,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:335645,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/211587508?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98b6ed34-3ab0-4df4-97e4-31d867be26d4_915x753.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!BXea!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98b6ed34-3ab0-4df4-97e4-31d867be26d4_915x753.gif 424w, https://substackcdn.com/image/fetch/$s_!BXea!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98b6ed34-3ab0-4df4-97e4-31d867be26d4_915x753.gif 848w, https://substackcdn.com/image/fetch/$s_!BXea!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98b6ed34-3ab0-4df4-97e4-31d867be26d4_915x753.gif 1272w, https://substackcdn.com/image/fetch/$s_!BXea!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98b6ed34-3ab0-4df4-97e4-31d867be26d4_915x753.gif 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 aria-hidden="true" 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><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><blockquote><p>Wait until you see <strong>AGENT 1 COMPLETE</strong> in the output. </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_!i3xD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecc836cb-672e-41cf-b76e-fac08acc8c91_915x501.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!i3xD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecc836cb-672e-41cf-b76e-fac08acc8c91_915x501.gif 424w, https://substackcdn.com/image/fetch/$s_!i3xD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecc836cb-672e-41cf-b76e-fac08acc8c91_915x501.gif 848w, https://substackcdn.com/image/fetch/$s_!i3xD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecc836cb-672e-41cf-b76e-fac08acc8c91_915x501.gif 1272w, https://substackcdn.com/image/fetch/$s_!i3xD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecc836cb-672e-41cf-b76e-fac08acc8c91_915x501.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!i3xD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecc836cb-672e-41cf-b76e-fac08acc8c91_915x501.gif" width="915" height="501" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ecc836cb-672e-41cf-b76e-fac08acc8c91_915x501.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:501,&quot;width&quot;:915,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:156253,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/211587508?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecc836cb-672e-41cf-b76e-fac08acc8c91_915x501.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!i3xD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecc836cb-672e-41cf-b76e-fac08acc8c91_915x501.gif 424w, https://substackcdn.com/image/fetch/$s_!i3xD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecc836cb-672e-41cf-b76e-fac08acc8c91_915x501.gif 848w, https://substackcdn.com/image/fetch/$s_!i3xD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecc836cb-672e-41cf-b76e-fac08acc8c91_915x501.gif 1272w, https://substackcdn.com/image/fetch/$s_!i3xD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecc836cb-672e-41cf-b76e-fac08acc8c91_915x501.gif 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 aria-hidden="true" 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><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><div><hr></div><h3>Step 2 &#8212; Spawn Agent 2: The Bug Hunter</h3><p>Open a NEW Claude Code session or spawn a sub-agent. Navigate to the same project folder. Use this prompt:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;494a72bf-a1c1-4c5b-952c-4bf75b3665cc&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">You are Agent 2: Bug Hunter.

You have not seen the codebase. You will receive a context
summary from Agent 1 that tells you what the project contains.
Your job is to use that context to guide a fresh read of the
codebase and find every bug, security vulnerability, and code
quality problem.

First read agent1_context.json to understand the project structure.
Then read each source file listed in the inventory.

For each problem you find, produce a structured finding:

{
  "id": 1,
  "file": "",
  "line": 0,
  "severity": "critical | high | medium | low",
  "category": "security | logic | quality | performance",
  "title": "",
  "description": "",
  "impact": ""
}

Save all findings to agent2_findings.json in the project root.
When done say: AGENT 2 COMPLETE &#8212; X findings recorded</code></pre></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Clb7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fe33bdd-6ff1-4130-8ecf-d179ddf56d75_915x683.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Clb7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fe33bdd-6ff1-4130-8ecf-d179ddf56d75_915x683.gif 424w, https://substackcdn.com/image/fetch/$s_!Clb7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fe33bdd-6ff1-4130-8ecf-d179ddf56d75_915x683.gif 848w, https://substackcdn.com/image/fetch/$s_!Clb7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fe33bdd-6ff1-4130-8ecf-d179ddf56d75_915x683.gif 1272w, https://substackcdn.com/image/fetch/$s_!Clb7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fe33bdd-6ff1-4130-8ecf-d179ddf56d75_915x683.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Clb7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fe33bdd-6ff1-4130-8ecf-d179ddf56d75_915x683.gif" width="915" height="683" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9fe33bdd-6ff1-4130-8ecf-d179ddf56d75_915x683.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:683,&quot;width&quot;:915,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:296450,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/211587508?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fe33bdd-6ff1-4130-8ecf-d179ddf56d75_915x683.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Clb7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fe33bdd-6ff1-4130-8ecf-d179ddf56d75_915x683.gif 424w, https://substackcdn.com/image/fetch/$s_!Clb7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fe33bdd-6ff1-4130-8ecf-d179ddf56d75_915x683.gif 848w, https://substackcdn.com/image/fetch/$s_!Clb7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fe33bdd-6ff1-4130-8ecf-d179ddf56d75_915x683.gif 1272w, https://substackcdn.com/image/fetch/$s_!Clb7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fe33bdd-6ff1-4130-8ecf-d179ddf56d75_915x683.gif 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 aria-hidden="true" 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><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>Wait for <strong>AGENT 2 COMPLETE</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_!_Ag3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9aabe42-35df-4d0c-ba95-db8d029ff286_915x447.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_Ag3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9aabe42-35df-4d0c-ba95-db8d029ff286_915x447.gif 424w, https://substackcdn.com/image/fetch/$s_!_Ag3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9aabe42-35df-4d0c-ba95-db8d029ff286_915x447.gif 848w, https://substackcdn.com/image/fetch/$s_!_Ag3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9aabe42-35df-4d0c-ba95-db8d029ff286_915x447.gif 1272w, https://substackcdn.com/image/fetch/$s_!_Ag3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9aabe42-35df-4d0c-ba95-db8d029ff286_915x447.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_Ag3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9aabe42-35df-4d0c-ba95-db8d029ff286_915x447.gif" width="915" height="447" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e9aabe42-35df-4d0c-ba95-db8d029ff286_915x447.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:447,&quot;width&quot;:915,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:105773,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/211587508?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9aabe42-35df-4d0c-ba95-db8d029ff286_915x447.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!_Ag3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9aabe42-35df-4d0c-ba95-db8d029ff286_915x447.gif 424w, https://substackcdn.com/image/fetch/$s_!_Ag3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9aabe42-35df-4d0c-ba95-db8d029ff286_915x447.gif 848w, https://substackcdn.com/image/fetch/$s_!_Ag3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9aabe42-35df-4d0c-ba95-db8d029ff286_915x447.gif 1272w, https://substackcdn.com/image/fetch/$s_!_Ag3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9aabe42-35df-4d0c-ba95-db8d029ff286_915x447.gif 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 aria-hidden="true" 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><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><div><hr></div><h3>Step 3 &#8212; Spawn Agent 3: The Independent Reviewer</h3><p>Open another NEW Claude Code session or spawn another sub-agent. Navigate to the same project folder. Use this prompt:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;4336a0a7-a49c-455f-a967-89e8f6e1217b&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">You are Agent 3: Independent Reviewer.

You have not seen the codebase. You have not seen the bug hunting
process. You are reading a completed bug report cold, the way an
external auditor would.

Read agent2_findings.json. For each finding evaluate:

1. Is the severity rating appropriate or is it over or under stated?
2. Is the description accurate and specific enough to act on?
3. Is there anything in this finding that seems wrong or questionable?
4. Are there categories of issues that appear to be missing entirely?

Produce a review file called agent3_review.json:

{
  "total_findings_reviewed": 0,
  "severity_adjustments": [],
  "questionable_findings": [],
  "missing_categories": [],
  "overall_assessment": "",
  "confidence_in_report": "high | medium | low"
}

Save agent3_review.json to the project root.
When done say: AGENT 3 COMPLETE</code></pre></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Vs83!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f277800-e370-400f-93f0-86b529de785c_915x781.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Vs83!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f277800-e370-400f-93f0-86b529de785c_915x781.gif 424w, https://substackcdn.com/image/fetch/$s_!Vs83!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f277800-e370-400f-93f0-86b529de785c_915x781.gif 848w, https://substackcdn.com/image/fetch/$s_!Vs83!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f277800-e370-400f-93f0-86b529de785c_915x781.gif 1272w, https://substackcdn.com/image/fetch/$s_!Vs83!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f277800-e370-400f-93f0-86b529de785c_915x781.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Vs83!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f277800-e370-400f-93f0-86b529de785c_915x781.gif" width="915" height="781" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3f277800-e370-400f-93f0-86b529de785c_915x781.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:781,&quot;width&quot;:915,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:260765,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/211587508?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f277800-e370-400f-93f0-86b529de785c_915x781.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Vs83!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f277800-e370-400f-93f0-86b529de785c_915x781.gif 424w, https://substackcdn.com/image/fetch/$s_!Vs83!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f277800-e370-400f-93f0-86b529de785c_915x781.gif 848w, https://substackcdn.com/image/fetch/$s_!Vs83!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f277800-e370-400f-93f0-86b529de785c_915x781.gif 1272w, https://substackcdn.com/image/fetch/$s_!Vs83!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f277800-e370-400f-93f0-86b529de785c_915x781.gif 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 aria-hidden="true" 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><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>After all three finish</strong>, your project root should have:</p><ul><li><p><code>agent1_context.json</code> &#8212; codebase map</p></li><li><p><code>agent2_findings.json</code> &#8212; bug/security findings</p></li><li><p><code>agent3_review.json</code> &#8212; independent audit of those findings</p></li></ul><p>The graph version ran as three separate Claude Code sessions. Each agent saw only what it needed to see.</p><ul><li><p><strong>Agent 1: Context Gatherer</strong> Reads every file in the codebase. Produces a structured JSON map of the architecture, endpoints, authentication system, database layer, and file inventory. <em><strong>Output: </strong></em><code>agent1_context.json</code><em><strong> is a precise architectural summary of the project.</strong></em></p></li><li><p><strong>Agent 2: Bug Hunter</strong> Receives only <code>agent1_context.json</code>. Never sees the raw source files. Uses the architecture map to guide a fresh read of the codebase and produces structured findings</p><p></p><p><strong>It found 12 issues:</strong></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_!Dhwz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F541a9d18-5860-479d-ad94-9775b0d62cdf_1245x450.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Dhwz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F541a9d18-5860-479d-ad94-9775b0d62cdf_1245x450.png 424w, https://substackcdn.com/image/fetch/$s_!Dhwz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F541a9d18-5860-479d-ad94-9775b0d62cdf_1245x450.png 848w, https://substackcdn.com/image/fetch/$s_!Dhwz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F541a9d18-5860-479d-ad94-9775b0d62cdf_1245x450.png 1272w, https://substackcdn.com/image/fetch/$s_!Dhwz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F541a9d18-5860-479d-ad94-9775b0d62cdf_1245x450.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Dhwz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F541a9d18-5860-479d-ad94-9775b0d62cdf_1245x450.png" width="1245" height="450" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/541a9d18-5860-479d-ad94-9775b0d62cdf_1245x450.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:450,&quot;width&quot;:1245,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:34975,&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://newsletter.claudecodemasterclass.com/i/211587508?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F541a9d18-5860-479d-ad94-9775b0d62cdf_1245x450.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_!Dhwz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F541a9d18-5860-479d-ad94-9775b0d62cdf_1245x450.png 424w, https://substackcdn.com/image/fetch/$s_!Dhwz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F541a9d18-5860-479d-ad94-9775b0d62cdf_1245x450.png 848w, https://substackcdn.com/image/fetch/$s_!Dhwz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F541a9d18-5860-479d-ad94-9775b0d62cdf_1245x450.png 1272w, https://substackcdn.com/image/fetch/$s_!Dhwz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F541a9d18-5860-479d-ad94-9775b0d62cdf_1245x450.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 aria-hidden="true" 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><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><ul><li><p><strong>Agent 3: Independent Reviewer</strong> Receives only <code>agent2_findings.json</code>. Never saw the codebase, architecture map and Agent 2's reasoning process. </p></li></ul><blockquote><p><strong>In comparison graph approach is more independent, reliable and ideal for large codebases. </strong></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_!3PF0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf114d61-3997-4e3e-9267-d4fd499d69a6_988x468.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3PF0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf114d61-3997-4e3e-9267-d4fd499d69a6_988x468.png 424w, https://substackcdn.com/image/fetch/$s_!3PF0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf114d61-3997-4e3e-9267-d4fd499d69a6_988x468.png 848w, https://substackcdn.com/image/fetch/$s_!3PF0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf114d61-3997-4e3e-9267-d4fd499d69a6_988x468.png 1272w, https://substackcdn.com/image/fetch/$s_!3PF0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf114d61-3997-4e3e-9267-d4fd499d69a6_988x468.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3PF0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf114d61-3997-4e3e-9267-d4fd499d69a6_988x468.png" width="988" height="468" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cf114d61-3997-4e3e-9267-d4fd499d69a6_988x468.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:468,&quot;width&quot;:988,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:35334,&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://newsletter.claudecodemasterclass.com/i/211587508?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf114d61-3997-4e3e-9267-d4fd499d69a6_988x468.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_!3PF0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf114d61-3997-4e3e-9267-d4fd499d69a6_988x468.png 424w, https://substackcdn.com/image/fetch/$s_!3PF0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf114d61-3997-4e3e-9267-d4fd499d69a6_988x468.png 848w, https://substackcdn.com/image/fetch/$s_!3PF0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf114d61-3997-4e3e-9267-d4fd499d69a6_988x468.png 1272w, https://substackcdn.com/image/fetch/$s_!3PF0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf114d61-3997-4e3e-9267-d4fd499d69a6_988x468.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 aria-hidden="true" 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><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><div><hr></div><h2>Final Thoughts</h2><p>Graph engineering shows us that the benefit of using more than one agent is real.</p><p>While loops are reliable at small tasks, they cannot be relied on when you are building something that requires independent evaluation. </p><blockquote><p><strong>The Claude Code example we ran was a small demo to show what is possible. In a large production project with hundreds of files and multiple services, this approach becomes very useful. </strong></p></blockquote><p>The four missing categories Agent 3 caught in a small codebase would be multiplied in a large codebase. </p><p>The next step is to see <em><strong>how this works in <a href="https://www.langchain.com/langgraph">LangGraph</a></strong></em>, because that is where graph engineering shows its true production benefits. </p><blockquote><p><em><strong>You define the nodes, edges, and shared state in code and the graph becomes something you can version, test, and deploy. </strong></em></p></blockquote><div class="pullquote"><p>We will build the graph engineering demo in LangGraph in the next issue</p></div><div class="callout-block" data-callout="true"><p><span>Thanks for the support: reach me anytime (community, email, or Substack DM). Premium issues, tutorials, and course modules unlock in the membership area as they are released. </span><strong><span>Masterclass Pro is live &#8212; </span><a href="https://claudecodemasterclass.com/pricing/"><span>join us today</span></a><span>.</span></strong></p><p><strong><span>Let&#8217;s keep this going.</span></strong></p></div><div><hr></div><h3><strong>Resources</strong></h3><p><strong>For this issue, these are the resources available:</strong></p><ul><li><p><strong><a href="https://github.com/Njengah/claude-code-tracker">Testing Repo</a></strong></p></li><li><p><span>Tested Loop Templates Prompt (</span><strong><a href="https://claudecodemasterclass.com/pricing/">Members Resource Library</a></strong><span>)</span></p></li></ul><div><hr></div><h3><strong>Next Upcoming Masterclass Issues</strong></h3><p>The next issues in this Masterclass Series will cover:</p><ul><li><p><strong>Claude Code Subagents Masterclass </strong><span>&#8212; Building your AI team</span></p></li><li><p><strong>Claude Code MCP Masterclass </strong><span>&#8212; Extending Claude&#8217;s capabilities</span></p></li></ul><div><hr></div><p><strong>If you found this useful, do not forget to like share and subscribe for more insights. Let me know your thoughts and questions in the comments below. </strong></p><div class="pullquote"><p style="text-align: center;"><em><strong>Finally, this newsletter belongs to all of us. If there&#8217;s something that can make it better or something you don&#8217;t like, please let me know.</strong></em></p><p style="text-align: center;"><em><strong>See you in the next one.</strong></em></p></div><h1 style="text-align: center;"><strong>Claude Code Masterclass</strong></h1><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!M4PA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febaa313e-aa1a-46d9-8cc1-f89f01ec73d0_1478x780.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!M4PA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febaa313e-aa1a-46d9-8cc1-f89f01ec73d0_1478x780.png 424w, https://substackcdn.com/image/fetch/$s_!M4PA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febaa313e-aa1a-46d9-8cc1-f89f01ec73d0_1478x780.png 848w, https://substackcdn.com/image/fetch/$s_!M4PA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febaa313e-aa1a-46d9-8cc1-f89f01ec73d0_1478x780.png 1272w, https://substackcdn.com/image/fetch/$s_!M4PA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febaa313e-aa1a-46d9-8cc1-f89f01ec73d0_1478x780.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!M4PA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febaa313e-aa1a-46d9-8cc1-f89f01ec73d0_1478x780.png" width="1456" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ebaa313e-aa1a-46d9-8cc1-f89f01ec73d0_1478x780.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:51395,&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://newsletter.claudecodemasterclass.com/i/211587508?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febaa313e-aa1a-46d9-8cc1-f89f01ec73d0_1478x780.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_!M4PA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febaa313e-aa1a-46d9-8cc1-f89f01ec73d0_1478x780.png 424w, https://substackcdn.com/image/fetch/$s_!M4PA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febaa313e-aa1a-46d9-8cc1-f89f01ec73d0_1478x780.png 848w, https://substackcdn.com/image/fetch/$s_!M4PA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febaa313e-aa1a-46d9-8cc1-f89f01ec73d0_1478x780.png 1272w, https://substackcdn.com/image/fetch/$s_!M4PA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febaa313e-aa1a-46d9-8cc1-f89f01ec73d0_1478x780.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 aria-hidden="true" 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><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 style="text-align: center;"><span>Let&#8217;s Build It Together</span></p><p style="text-align: center;"><span>&#8212; </span><strong>Joe Njenga</strong></p>]]></content:encoded></item><item><title><![CDATA[Claude Code Loop Engineering Masterclass: Your First Automation Toolkit ]]></title><description><![CDATA[From Manual Prompting to Building Loop & Graph Automation Pipelines]]></description><link>https://newsletter.claudecodemasterclass.com/p/claude-code-loop-and-graph-engineering</link><guid isPermaLink="false">https://newsletter.claudecodemasterclass.com/p/claude-code-loop-and-graph-engineering</guid><dc:creator><![CDATA[Joe]]></dc:creator><pubDate>Thu, 13 Aug 2026 21:00:43 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Xgtt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe15db60e-2f69-4409-8283-70a5f277df20_1200x600.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_!Xgtt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe15db60e-2f69-4409-8283-70a5f277df20_1200x600.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Xgtt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe15db60e-2f69-4409-8283-70a5f277df20_1200x600.png 424w, https://substackcdn.com/image/fetch/$s_!Xgtt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe15db60e-2f69-4409-8283-70a5f277df20_1200x600.png 848w, https://substackcdn.com/image/fetch/$s_!Xgtt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe15db60e-2f69-4409-8283-70a5f277df20_1200x600.png 1272w, https://substackcdn.com/image/fetch/$s_!Xgtt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe15db60e-2f69-4409-8283-70a5f277df20_1200x600.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Xgtt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe15db60e-2f69-4409-8283-70a5f277df20_1200x600.png" width="1200" height="600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e15db60e-2f69-4409-8283-70a5f277df20_1200x600.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:600,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:75030,&quot;alt&quot;:&quot;Claude Code Loop Engineering Masterclass&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://newsletter.claudecodemasterclass.com/i/209122324?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe15db60e-2f69-4409-8283-70a5f277df20_1200x600.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Claude Code Loop Engineering Masterclass" title="Claude Code Loop Engineering Masterclass" srcset="https://substackcdn.com/image/fetch/$s_!Xgtt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe15db60e-2f69-4409-8283-70a5f277df20_1200x600.png 424w, https://substackcdn.com/image/fetch/$s_!Xgtt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe15db60e-2f69-4409-8283-70a5f277df20_1200x600.png 848w, https://substackcdn.com/image/fetch/$s_!Xgtt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe15db60e-2f69-4409-8283-70a5f277df20_1200x600.png 1272w, https://substackcdn.com/image/fetch/$s_!Xgtt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe15db60e-2f69-4409-8283-70a5f277df20_1200x600.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 aria-hidden="true" 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><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>Welcome back to the Claude Code Masterclass. We are still keeping the fire burning; thank you to all our new premium members who keep this going. </p><p><strong>I am eternally grateful &#8212; thank you! </strong></p><div class="callout-block" data-callout="true"><p><strong>Your Support: </strong><span>Many of you pledged to support the newsletter, and I couldn't turn on payments until now. I have built a membership site where you can support the newsletter and access the course as modules ship.</span></p><p><span> </span><em><strong><a href="https://claudecodemasterclass.com/pricing/">Claude Code Masterclass Pro</a></strong></em><strong> </strong><span>is live; </span><strong><a href="https://claudecodemasterclass.com/pricing/">join here</a></strong><span>. Let&#8217;s keep this going.</span></p></div><p>Occasionally, we will interrupt the ordered masterclass to cover new topics that require your urgent attention and in-depth understanding. </p><p>One such topic is loop engineering vs graph engineering. How does this apply in Claude Code?  </p><blockquote><p><strong>Over the past few weeks, two terms appeared everywhere in the Claude Code community: loop engineering and graph engineering. </strong></p></blockquote><p>If you missed both or only half-understood one, this masterclass covers everything from first principles to a working project you can run today.</p><p>By the end of this issue, you will know:</p><ul><li><p><em><strong>What loop engineering is and how to build one in Claude Code with /goal, /loop, and /schedule</strong></em></p></li><li><p><em><strong>Why loops break and what the three failures are</strong></em></p></li><li><p><em><strong>What graph engineering is and the six terms you need to understand it</strong></em></p></li><li><p><em><strong>How to build a real graph on Claude Code using agent teams</strong></em></p></li><li><p><em><strong>When to use a loop and when to build a graph</strong></em></p></li></ul><p><strong>Note:</strong> This is long by design <em><strong>(and split into part 1 and 2)</strong></em>  since we want to understand these concepts as we move on to our other masterclasses. <em>You can save  and come back to it later.</em></p><div><hr></div><h2>Loop Engineering In Claude Code </h2><p>On June 30, 2026, Boris Cherny, the engineer who built Claude Code at Anthropic, said:</p><blockquote><p><strong>&#8220;I no longer prompt Claude anymore. I have loops running that prompt Claude and figure out what to do next. My job is to write loops.&#8221;</strong></p></blockquote><p>If you have used Claude Code seriously, you have already been creating loops and  graphs.  </p><ul><li><p>Every time you used<code> /goal </code>and Claude kept iterating without you, that is loop engineering</p></li><li><p> Every time Claude spawned a sub-agent to handle a specific task, you were right at the start of graph engineering</p></li></ul><p>To summarize this in one line </p><blockquote><p><strong>A loop is a node in a graph.</strong></p></blockquote><div><hr></div><h2>What is a Loop?</h2><p>When you work with an LLM like Claude, the basic pattern looks like this:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;fc77c961-c6ca-4fbf-ba2b-27468a1f7339&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">Step 1: You write a prompt
Step 2: Claude returns an output
Step 3: You read the output
Step 4: If it is not what you wanted: tweak the prompt and try again</code></pre></div><p>This is prompt engineering, and if you look at it carefully, you are running a loop. </p><blockquote><p><strong>You are the loop operator since in every iteration you decide what to change, send the next prompt, and evaluate the result.</strong></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_!f2vt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea470e87-c4df-456f-9079-fb5931dd22d3_538x507.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!f2vt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea470e87-c4df-456f-9079-fb5931dd22d3_538x507.png 424w, https://substackcdn.com/image/fetch/$s_!f2vt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea470e87-c4df-456f-9079-fb5931dd22d3_538x507.png 848w, https://substackcdn.com/image/fetch/$s_!f2vt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea470e87-c4df-456f-9079-fb5931dd22d3_538x507.png 1272w, https://substackcdn.com/image/fetch/$s_!f2vt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea470e87-c4df-456f-9079-fb5931dd22d3_538x507.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!f2vt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea470e87-c4df-456f-9079-fb5931dd22d3_538x507.png" width="538" height="507" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ea470e87-c4df-456f-9079-fb5931dd22d3_538x507.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:507,&quot;width&quot;:538,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:19765,&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://newsletter.claudecodemasterclass.com/i/209122324?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea470e87-c4df-456f-9079-fb5931dd22d3_538x507.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_!f2vt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea470e87-c4df-456f-9079-fb5931dd22d3_538x507.png 424w, https://substackcdn.com/image/fetch/$s_!f2vt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea470e87-c4df-456f-9079-fb5931dd22d3_538x507.png 848w, https://substackcdn.com/image/fetch/$s_!f2vt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea470e87-c4df-456f-9079-fb5931dd22d3_538x507.png 1272w, https://substackcdn.com/image/fetch/$s_!f2vt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea470e87-c4df-456f-9079-fb5931dd22d3_538x507.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 aria-hidden="true" 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><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 is the starting point for all of us, and the next level is to replace your input with an agent, which introduces the concept of running loops.</p><div class="pullquote"><p> If you read our<strong> <a href="https://newsletter.claudecodemasterclass.com/p/claude-code-ralph-loop-from-basic">Ralph Loop Deep Dive guide</a>, </strong>it's the same concept. </p></div><p>So, </p><blockquote><p><strong>Loop engineering is building a cycle that an agent runs autonomously, repeating until a stop condition is met.</strong></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_!niRV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bced59b-0866-4070-b300-8daf8c0026af_534x519.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!niRV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bced59b-0866-4070-b300-8daf8c0026af_534x519.png 424w, https://substackcdn.com/image/fetch/$s_!niRV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bced59b-0866-4070-b300-8daf8c0026af_534x519.png 848w, https://substackcdn.com/image/fetch/$s_!niRV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bced59b-0866-4070-b300-8daf8c0026af_534x519.png 1272w, https://substackcdn.com/image/fetch/$s_!niRV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bced59b-0866-4070-b300-8daf8c0026af_534x519.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!niRV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bced59b-0866-4070-b300-8daf8c0026af_534x519.png" width="534" height="519" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9bced59b-0866-4070-b300-8daf8c0026af_534x519.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:519,&quot;width&quot;:534,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:20860,&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://newsletter.claudecodemasterclass.com/i/209122324?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bced59b-0866-4070-b300-8daf8c0026af_534x519.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_!niRV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bced59b-0866-4070-b300-8daf8c0026af_534x519.png 424w, https://substackcdn.com/image/fetch/$s_!niRV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bced59b-0866-4070-b300-8daf8c0026af_534x519.png 848w, https://substackcdn.com/image/fetch/$s_!niRV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bced59b-0866-4070-b300-8daf8c0026af_534x519.png 1272w, https://substackcdn.com/image/fetch/$s_!niRV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bced59b-0866-4070-b300-8daf8c0026af_534x519.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 aria-hidden="true" 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><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 change here is about <em><strong>who operates the cycle</strong></em>: in <em>prompt engineering</em>, you operate it turn by turn, but in loop engineering, you define the cycle, and the agent operates it.</p><div><hr></div><h3 style="text-align: center;">Prompt Engineering vs Loop Engineering</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-tqp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3661e9f1-83d3-400a-b505-257c240a1e04_1084x525.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-tqp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3661e9f1-83d3-400a-b505-257c240a1e04_1084x525.png 424w, https://substackcdn.com/image/fetch/$s_!-tqp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3661e9f1-83d3-400a-b505-257c240a1e04_1084x525.png 848w, https://substackcdn.com/image/fetch/$s_!-tqp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3661e9f1-83d3-400a-b505-257c240a1e04_1084x525.png 1272w, https://substackcdn.com/image/fetch/$s_!-tqp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3661e9f1-83d3-400a-b505-257c240a1e04_1084x525.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-tqp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3661e9f1-83d3-400a-b505-257c240a1e04_1084x525.png" width="1084" height="525" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3661e9f1-83d3-400a-b505-257c240a1e04_1084x525.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:525,&quot;width&quot;:1084,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:37174,&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://newsletter.claudecodemasterclass.com/i/209122324?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3661e9f1-83d3-400a-b505-257c240a1e04_1084x525.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_!-tqp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3661e9f1-83d3-400a-b505-257c240a1e04_1084x525.png 424w, https://substackcdn.com/image/fetch/$s_!-tqp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3661e9f1-83d3-400a-b505-257c240a1e04_1084x525.png 848w, https://substackcdn.com/image/fetch/$s_!-tqp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3661e9f1-83d3-400a-b505-257c240a1e04_1084x525.png 1272w, https://substackcdn.com/image/fetch/$s_!-tqp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3661e9f1-83d3-400a-b505-257c240a1e04_1084x525.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 aria-hidden="true" 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><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> Every loop goes through different phases. </p><div><hr></div><h3>Four Phases Every Loop Runs Through</h3><p>Every well-built loop has four phases that apply whether you are fixing a bug, writing a report, or reviewing a PR.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8s0e!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7187a606-4594-4f38-a839-2316743cc43f_1146x500.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8s0e!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7187a606-4594-4f38-a839-2316743cc43f_1146x500.png 424w, https://substackcdn.com/image/fetch/$s_!8s0e!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7187a606-4594-4f38-a839-2316743cc43f_1146x500.png 848w, https://substackcdn.com/image/fetch/$s_!8s0e!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7187a606-4594-4f38-a839-2316743cc43f_1146x500.png 1272w, https://substackcdn.com/image/fetch/$s_!8s0e!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7187a606-4594-4f38-a839-2316743cc43f_1146x500.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8s0e!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7187a606-4594-4f38-a839-2316743cc43f_1146x500.png" width="1146" height="500" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7187a606-4594-4f38-a839-2316743cc43f_1146x500.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:500,&quot;width&quot;:1146,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:27249,&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://newsletter.claudecodemasterclass.com/i/209122324?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7187a606-4594-4f38-a839-2316743cc43f_1146x500.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_!8s0e!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7187a606-4594-4f38-a839-2316743cc43f_1146x500.png 424w, https://substackcdn.com/image/fetch/$s_!8s0e!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7187a606-4594-4f38-a839-2316743cc43f_1146x500.png 848w, https://substackcdn.com/image/fetch/$s_!8s0e!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7187a606-4594-4f38-a839-2316743cc43f_1146x500.png 1272w, https://substackcdn.com/image/fetch/$s_!8s0e!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7187a606-4594-4f38-a839-2316743cc43f_1146x500.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 aria-hidden="true" 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><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><ul><li><p><strong>Discover:</strong> The agent gathers what it needs before acting. In Claude Code, this means reading files, checking git status, and running a test suite to see the current state. </p></li><li><p><strong>Plan:</strong> The agent decides its own steps. The quality of this plan determines how many iterations the loop needs. </p></li><li><p><strong>Execute:</strong>  In Claude Code, this means tool calls, file writes, and bash commands. A well-built loop treats errors as inputs to the next iteration.</p></li><li><p><strong>Verify:</strong> The agent checks whether the goal was met.  A weak verifier produces a loop that exits early, claiming success. A strong verifier produces a loop that  finishes the job.</p></li></ul><blockquote><p><strong>So, what makes a good loop? </strong></p></blockquote><div><hr></div><h2>Three Qualities of a Good Loop</h2><p>Every loop that works in production has three things, and if you miss one, your loop is likely to fail. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5nd-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2803502-7773-480d-9690-11d7ede898d8_1171x395.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5nd-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2803502-7773-480d-9690-11d7ede898d8_1171x395.png 424w, https://substackcdn.com/image/fetch/$s_!5nd-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2803502-7773-480d-9690-11d7ede898d8_1171x395.png 848w, https://substackcdn.com/image/fetch/$s_!5nd-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2803502-7773-480d-9690-11d7ede898d8_1171x395.png 1272w, https://substackcdn.com/image/fetch/$s_!5nd-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2803502-7773-480d-9690-11d7ede898d8_1171x395.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5nd-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2803502-7773-480d-9690-11d7ede898d8_1171x395.png" width="1171" height="395" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d2803502-7773-480d-9690-11d7ede898d8_1171x395.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:395,&quot;width&quot;:1171,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:26302,&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://newsletter.claudecodemasterclass.com/i/209122324?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2803502-7773-480d-9690-11d7ede898d8_1171x395.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_!5nd-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2803502-7773-480d-9690-11d7ede898d8_1171x395.png 424w, https://substackcdn.com/image/fetch/$s_!5nd-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2803502-7773-480d-9690-11d7ede898d8_1171x395.png 848w, https://substackcdn.com/image/fetch/$s_!5nd-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2803502-7773-480d-9690-11d7ede898d8_1171x395.png 1272w, https://substackcdn.com/image/fetch/$s_!5nd-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2803502-7773-480d-9690-11d7ede898d8_1171x395.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 aria-hidden="true" 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><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><h4># 1: A Clear Stop Condition</h4><p>Without a stop condition, the loop runs until your API credits expire or you manually stop it. </p><p>A stop condition has two parts:</p><p><strong>Success condition:</strong> the measurable state that means the job is done.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;73f03f39-49b4-4112-a458-e0c1515f8697&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">all tests passing
coverage above 80%
PR checks green
zero lint errors</code></pre></div><p><strong>Safety cap:</strong> a maximum turn count that stops the loop no matter the result. </p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;a05d60b6-3f03-4bb1-b536-53a66d2e5fde&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">stop after 10 tries
stop after 5 attempts
stop after 15 runs</code></pre></div><blockquote><p><strong>The safety cap protects you from an agent that is stuck and burns through your Claude Code budget.</strong></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_!prV0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49437d66-7008-43ea-a5b8-6f68ab4b09ad_1467x816.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!prV0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49437d66-7008-43ea-a5b8-6f68ab4b09ad_1467x816.gif 424w, https://substackcdn.com/image/fetch/$s_!prV0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49437d66-7008-43ea-a5b8-6f68ab4b09ad_1467x816.gif 848w, https://substackcdn.com/image/fetch/$s_!prV0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49437d66-7008-43ea-a5b8-6f68ab4b09ad_1467x816.gif 1272w, https://substackcdn.com/image/fetch/$s_!prV0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49437d66-7008-43ea-a5b8-6f68ab4b09ad_1467x816.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!prV0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49437d66-7008-43ea-a5b8-6f68ab4b09ad_1467x816.gif" width="1456" height="809" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/49437d66-7008-43ea-a5b8-6f68ab4b09ad_1467x816.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:809,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:519051,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/209122324?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49437d66-7008-43ea-a5b8-6f68ab4b09ad_1467x816.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!prV0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49437d66-7008-43ea-a5b8-6f68ab4b09ad_1467x816.gif 424w, https://substackcdn.com/image/fetch/$s_!prV0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49437d66-7008-43ea-a5b8-6f68ab4b09ad_1467x816.gif 848w, https://substackcdn.com/image/fetch/$s_!prV0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49437d66-7008-43ea-a5b8-6f68ab4b09ad_1467x816.gif 1272w, https://substackcdn.com/image/fetch/$s_!prV0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49437d66-7008-43ea-a5b8-6f68ab4b09ad_1467x816.gif 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 aria-hidden="true" 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><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><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;f17bf781-2af7-4ef0-ac67-4697c789e91f&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">/goal all tests passing and coverage above 80%, stop after 10 tries</code></pre></div><div><hr></div><h4>2: Context Management</h4><p>After a dozen iterations, the agent&#8217;s context window fills with test logs, error messages, old file states, and intermediate reasoning.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!aaAw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9ac4689-37a4-4af9-96bb-a38493426aa5_1215x445.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!aaAw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9ac4689-37a4-4af9-96bb-a38493426aa5_1215x445.png 424w, https://substackcdn.com/image/fetch/$s_!aaAw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9ac4689-37a4-4af9-96bb-a38493426aa5_1215x445.png 848w, https://substackcdn.com/image/fetch/$s_!aaAw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9ac4689-37a4-4af9-96bb-a38493426aa5_1215x445.png 1272w, https://substackcdn.com/image/fetch/$s_!aaAw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9ac4689-37a4-4af9-96bb-a38493426aa5_1215x445.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!aaAw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9ac4689-37a4-4af9-96bb-a38493426aa5_1215x445.png" width="1215" height="445" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d9ac4689-37a4-4af9-96bb-a38493426aa5_1215x445.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:445,&quot;width&quot;:1215,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:26562,&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://newsletter.claudecodemasterclass.com/i/209122324?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9ac4689-37a4-4af9-96bb-a38493426aa5_1215x445.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_!aaAw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9ac4689-37a4-4af9-96bb-a38493426aa5_1215x445.png 424w, https://substackcdn.com/image/fetch/$s_!aaAw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9ac4689-37a4-4af9-96bb-a38493426aa5_1215x445.png 848w, https://substackcdn.com/image/fetch/$s_!aaAw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9ac4689-37a4-4af9-96bb-a38493426aa5_1215x445.png 1272w, https://substackcdn.com/image/fetch/$s_!aaAw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9ac4689-37a4-4af9-96bb-a38493426aa5_1215x445.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 aria-hidden="true" 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><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>To fix context pollution in Claude Code:</p><ul><li><p><strong> Keep the latest error and the file in question.</strong> Everything else from previous iterations should be stripped </p></li><li><p><strong>Summarize old steps into a short note.</strong> Claude Code&#8217;s <code>/compact</code> command does this automatically. <em>It compresses the conversation history into a brief summary and keeps only the essential context for the next iteration</em>.</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_!hNnj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02d2bf47-7517-46e5-ba9b-dbca7649034d_1467x816.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hNnj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02d2bf47-7517-46e5-ba9b-dbca7649034d_1467x816.gif 424w, https://substackcdn.com/image/fetch/$s_!hNnj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02d2bf47-7517-46e5-ba9b-dbca7649034d_1467x816.gif 848w, https://substackcdn.com/image/fetch/$s_!hNnj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02d2bf47-7517-46e5-ba9b-dbca7649034d_1467x816.gif 1272w, https://substackcdn.com/image/fetch/$s_!hNnj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02d2bf47-7517-46e5-ba9b-dbca7649034d_1467x816.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hNnj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02d2bf47-7517-46e5-ba9b-dbca7649034d_1467x816.gif" width="1456" height="810" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/02d2bf47-7517-46e5-ba9b-dbca7649034d_1467x816.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:810,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:463177,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/209122324?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02d2bf47-7517-46e5-ba9b-dbca7649034d_1467x816.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!hNnj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02d2bf47-7517-46e5-ba9b-dbca7649034d_1467x816.gif 424w, https://substackcdn.com/image/fetch/$s_!hNnj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02d2bf47-7517-46e5-ba9b-dbca7649034d_1467x816.gif 848w, https://substackcdn.com/image/fetch/$s_!hNnj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02d2bf47-7517-46e5-ba9b-dbca7649034d_1467x816.gif 1272w, https://substackcdn.com/image/fetch/$s_!hNnj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02d2bf47-7517-46e5-ba9b-dbca7649034d_1467x816.gif 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 aria-hidden="true" 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><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><ul><li><p><strong> Remind the agent of the goal on every cycle.</strong> Your CLAUDE.md file is the right place for this. Whatever you put in CLAUDE.md is included at the start of every session and every sub-agent context.</p></li></ul><div class="pullquote"><p>You can reference the <a href="https://newsletter.claudecodemasterclass.com/p/claudemd-masterclass-from-start-to">Claude.MD Masterclass</a> to learn how to use it properly</p></div><h4>3: Error Recovery</h4><p>When the agent runs a command and it fails, something in the loop must decide what to do next. </p><blockquote><p><strong>Without a plan, the agent stops at the first failure and waits for you. That defeats the purpose of the loop.</strong></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_!8UhI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F789da4a4-f749-44dc-b6a9-a03ccfadd3d5_1220x412.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8UhI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F789da4a4-f749-44dc-b6a9-a03ccfadd3d5_1220x412.png 424w, https://substackcdn.com/image/fetch/$s_!8UhI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F789da4a4-f749-44dc-b6a9-a03ccfadd3d5_1220x412.png 848w, https://substackcdn.com/image/fetch/$s_!8UhI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F789da4a4-f749-44dc-b6a9-a03ccfadd3d5_1220x412.png 1272w, https://substackcdn.com/image/fetch/$s_!8UhI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F789da4a4-f749-44dc-b6a9-a03ccfadd3d5_1220x412.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8UhI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F789da4a4-f749-44dc-b6a9-a03ccfadd3d5_1220x412.png" width="1220" height="412" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/789da4a4-f749-44dc-b6a9-a03ccfadd3d5_1220x412.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:412,&quot;width&quot;:1220,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:31750,&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://newsletter.claudecodemasterclass.com/i/209122324?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F789da4a4-f749-44dc-b6a9-a03ccfadd3d5_1220x412.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_!8UhI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F789da4a4-f749-44dc-b6a9-a03ccfadd3d5_1220x412.png 424w, https://substackcdn.com/image/fetch/$s_!8UhI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F789da4a4-f749-44dc-b6a9-a03ccfadd3d5_1220x412.png 848w, https://substackcdn.com/image/fetch/$s_!8UhI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F789da4a4-f749-44dc-b6a9-a03ccfadd3d5_1220x412.png 1272w, https://substackcdn.com/image/fetch/$s_!8UhI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F789da4a4-f749-44dc-b6a9-a03ccfadd3d5_1220x412.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 aria-hidden="true" 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><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>In Claude Code, error recovery is built in. When a bash command fails, Claude reads the error output and uses it to choose the next action. </p><p>You do not need to build this yourself, but you do need to know it exists so you can write prompts that expect errors.</p><blockquote><p><strong>The key insight: design your loop assuming commands will fail. Your stop condition should be based on the goal being met, not on commands running without errors.</strong></p></blockquote><div><hr></div><h2>Three Claude Code Loop Commands</h2><p>Claude Code has three native loop commands. Each one handles a different trigger and use case.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!88HK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F731f99fe-ff72-49c4-8628-e29abbd76bcb_1384x379.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!88HK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F731f99fe-ff72-49c4-8628-e29abbd76bcb_1384x379.png 424w, https://substackcdn.com/image/fetch/$s_!88HK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F731f99fe-ff72-49c4-8628-e29abbd76bcb_1384x379.png 848w, https://substackcdn.com/image/fetch/$s_!88HK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F731f99fe-ff72-49c4-8628-e29abbd76bcb_1384x379.png 1272w, https://substackcdn.com/image/fetch/$s_!88HK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F731f99fe-ff72-49c4-8628-e29abbd76bcb_1384x379.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!88HK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F731f99fe-ff72-49c4-8628-e29abbd76bcb_1384x379.png" width="1384" height="379" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/731f99fe-ff72-49c4-8628-e29abbd76bcb_1384x379.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:379,&quot;width&quot;:1384,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:37172,&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://newsletter.claudecodemasterclass.com/i/209122324?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F731f99fe-ff72-49c4-8628-e29abbd76bcb_1384x379.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_!88HK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F731f99fe-ff72-49c4-8628-e29abbd76bcb_1384x379.png 424w, https://substackcdn.com/image/fetch/$s_!88HK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F731f99fe-ff72-49c4-8628-e29abbd76bcb_1384x379.png 848w, https://substackcdn.com/image/fetch/$s_!88HK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F731f99fe-ff72-49c4-8628-e29abbd76bcb_1384x379.png 1272w, https://substackcdn.com/image/fetch/$s_!88HK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F731f99fe-ff72-49c4-8628-e29abbd76bcb_1384x379.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 aria-hidden="true" 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><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><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!b5JS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2b1536d-2a63-49cd-9b03-8b8ef01b0f22_1467x816.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!b5JS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2b1536d-2a63-49cd-9b03-8b8ef01b0f22_1467x816.gif 424w, https://substackcdn.com/image/fetch/$s_!b5JS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2b1536d-2a63-49cd-9b03-8b8ef01b0f22_1467x816.gif 848w, https://substackcdn.com/image/fetch/$s_!b5JS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2b1536d-2a63-49cd-9b03-8b8ef01b0f22_1467x816.gif 1272w, https://substackcdn.com/image/fetch/$s_!b5JS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2b1536d-2a63-49cd-9b03-8b8ef01b0f22_1467x816.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!b5JS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2b1536d-2a63-49cd-9b03-8b8ef01b0f22_1467x816.gif" width="1456" height="810" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b2b1536d-2a63-49cd-9b03-8b8ef01b0f22_1467x816.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:810,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:961890,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/209122324?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2b1536d-2a63-49cd-9b03-8b8ef01b0f22_1467x816.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!b5JS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2b1536d-2a63-49cd-9b03-8b8ef01b0f22_1467x816.gif 424w, https://substackcdn.com/image/fetch/$s_!b5JS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2b1536d-2a63-49cd-9b03-8b8ef01b0f22_1467x816.gif 848w, https://substackcdn.com/image/fetch/$s_!b5JS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2b1536d-2a63-49cd-9b03-8b8ef01b0f22_1467x816.gif 1272w, https://substackcdn.com/image/fetch/$s_!b5JS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2b1536d-2a63-49cd-9b03-8b8ef01b0f22_1467x816.gif 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 aria-hidden="true" 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><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><h3>1) /goal: The Outcome-Based Loop</h3><p><code>/goal</code> is what you use <em><strong>when you know what done looks like</strong></em>. You define the success condition and a safety cap, and Claude Code handles the rest.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;c94171f5-e464-4810-9425-a563c8aef956&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">/goal all tests passing and no type errors, stop after 10 tries</code></pre></div><p><strong>After you run this, Claude Code:</strong></p><ol><li><p><em>Runs the test suite</em></p></li><li><p><em>Reads the failures</em></p></li><li><p><em>Fixes the failing code</em></p></li><li><p><em>Runs tests again</em></p></li><li><p><em>Checks whether the goal condition is now true</em></p></li><li><p><em>If yes: exits with a success message</em></p></li><li><p><em>If no: loops again up to the turn cap</em></p></li></ol><blockquote><p><strong>An evaluator model checks your goal condition after each iteration. This is a separate model call, not the one used in the session. </strong></p></blockquote><div><hr></div><p><strong>Writing a good /goal condition:</strong></p><p>Strong conditions are <em><strong>measurable and binary:</strong></em></p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;b6833c43-63d3-4f14-82e9-1819ada83105&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">/goal all 47 tests passing, stop after 8 tries
/goal coverage above 80% and no lint warnings, stop after 5 tries
/goal PR checks all green and no TODO comments in changed files, stop after 10 tries</code></pre></div><p><strong>Weak conditions produce loops that never exit:</strong></p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;19086c18-c7c3-4e26-af2e-0859109905b9&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">/goal make the code better               &#8592; not measurable
/goal fix the issues you find            &#8592; not binary
/goal improve test coverage              &#8592; no threshold</code></pre></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!G5yV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ef30564-7466-4f8f-9415-86c71581894a_1467x816.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!G5yV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ef30564-7466-4f8f-9415-86c71581894a_1467x816.gif 424w, https://substackcdn.com/image/fetch/$s_!G5yV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ef30564-7466-4f8f-9415-86c71581894a_1467x816.gif 848w, https://substackcdn.com/image/fetch/$s_!G5yV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ef30564-7466-4f8f-9415-86c71581894a_1467x816.gif 1272w, https://substackcdn.com/image/fetch/$s_!G5yV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ef30564-7466-4f8f-9415-86c71581894a_1467x816.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!G5yV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ef30564-7466-4f8f-9415-86c71581894a_1467x816.gif" width="1456" height="810" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7ef30564-7466-4f8f-9415-86c71581894a_1467x816.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:810,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:582148,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/209122324?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ef30564-7466-4f8f-9415-86c71581894a_1467x816.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!G5yV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ef30564-7466-4f8f-9415-86c71581894a_1467x816.gif 424w, https://substackcdn.com/image/fetch/$s_!G5yV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ef30564-7466-4f8f-9415-86c71581894a_1467x816.gif 848w, https://substackcdn.com/image/fetch/$s_!G5yV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ef30564-7466-4f8f-9415-86c71581894a_1467x816.gif 1272w, https://substackcdn.com/image/fetch/$s_!G5yV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ef30564-7466-4f8f-9415-86c71581894a_1467x816.gif 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 aria-hidden="true" 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><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><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;68d36673-8383-4bf3-b88f-4a0f81d83a12&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">/goal all tests passing, stop after 5 tries</code></pre></div><div><hr></div><h3>2) /loop: The Time-Based Loop</h3><p><code>/loop</code> is what you use <em><strong>when the work is recurring and reacts to external events</strong></em> rather than working toward a single goal</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;a7cb7acb-859e-4e34-a155-a9ef1857869d&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">/loop 5m check the PR for new review comments and address them</code></pre></div><p>This runs every 5 minutes; Claude checks the PR, reads any new comments since the last check, addresses them, and waits for the next interval.</p><blockquote><p><strong>The difference from /goal: /loop does not have a stop condition. It keeps running until you close the terminal. Use it for tasks that are ongoing</strong></p></blockquote><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;cb5d0459-d18f-4e9e-be48-ba6e503388ac&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">/loop 2m check for failing CI and fix the errors
/loop 10m read #project-feedback and triage new issues
/loop 30m check if any deploys failed and roll them back</code></pre></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fbdP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43564fd9-17c3-462c-a40d-8749702c1223_1467x816.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fbdP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43564fd9-17c3-462c-a40d-8749702c1223_1467x816.gif 424w, https://substackcdn.com/image/fetch/$s_!fbdP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43564fd9-17c3-462c-a40d-8749702c1223_1467x816.gif 848w, https://substackcdn.com/image/fetch/$s_!fbdP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43564fd9-17c3-462c-a40d-8749702c1223_1467x816.gif 1272w, https://substackcdn.com/image/fetch/$s_!fbdP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43564fd9-17c3-462c-a40d-8749702c1223_1467x816.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fbdP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43564fd9-17c3-462c-a40d-8749702c1223_1467x816.gif" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/43564fd9-17c3-462c-a40d-8749702c1223_1467x816.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:672152,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/209122324?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43564fd9-17c3-462c-a40d-8749702c1223_1467x816.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!fbdP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43564fd9-17c3-462c-a40d-8749702c1223_1467x816.gif 424w, https://substackcdn.com/image/fetch/$s_!fbdP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43564fd9-17c3-462c-a40d-8749702c1223_1467x816.gif 848w, https://substackcdn.com/image/fetch/$s_!fbdP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43564fd9-17c3-462c-a40d-8749702c1223_1467x816.gif 1272w, https://substackcdn.com/image/fetch/$s_!fbdP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43564fd9-17c3-462c-a40d-8749702c1223_1467x816.gif 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;9f3cb28e-5cb3-4b94-b093-e42563448b0d&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">/loop 2m check for any failing tests and fix them</code></pre></div><div><hr></div><h3>3) /schedule: The Cloud-Based Loop</h3><p><code>/schedule</code> is <code>/loop</code> that <em><strong>keeps running after you close the laptop</strong></em>. It moves the <em><strong>loop to the cloud.</strong></em></p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;5d8572a8-0fad-4f19-b4e0-fa99f09ef222&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">/schedule every morning: check #project-feedback for new bugs and triage them</code></pre></div><p><strong>The difference from /loop:</strong></p><ul><li><p><code>/loop </code>stops when you close the terminal</p></li><li><p><code>/schedule</code> keeps running on Anthropic&#8217;s infrastructure</p></li></ul><blockquote><p><strong>Use </strong><code>/schedule</code><strong> for daily digests, nightly CI runs, and any task that needs to happen on a fixed schedule whether you are at your desk or not.</strong></p></blockquote><div><hr></div><h3><strong>4) Proactive loop: combining /schedule and /goal</strong></h3><p>The most powerful pattern in Claude Code is combining both commands:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;365d54da-c76b-4644-b183-020ca255076e&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">/schedule every hour: check #project-feedback for bug reports
/goal do not stop until every report found this run is triaged, 
actioned, and responded to</code></pre></div><p>This creates a fully autonomous loop: </p><ul><li><p>The schedule triggers every hour</p></li><li><p> The goal runs until every bug report in that batch is handled</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_!K3uC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe82bd289-77b5-41c6-9b65-d7aa8d75547a_1467x816.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!K3uC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe82bd289-77b5-41c6-9b65-d7aa8d75547a_1467x816.gif 424w, https://substackcdn.com/image/fetch/$s_!K3uC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe82bd289-77b5-41c6-9b65-d7aa8d75547a_1467x816.gif 848w, https://substackcdn.com/image/fetch/$s_!K3uC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe82bd289-77b5-41c6-9b65-d7aa8d75547a_1467x816.gif 1272w, https://substackcdn.com/image/fetch/$s_!K3uC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe82bd289-77b5-41c6-9b65-d7aa8d75547a_1467x816.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!K3uC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe82bd289-77b5-41c6-9b65-d7aa8d75547a_1467x816.gif" width="1456" height="810" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e82bd289-77b5-41c6-9b65-d7aa8d75547a_1467x816.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:810,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:304706,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/209122324?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe82bd289-77b5-41c6-9b65-d7aa8d75547a_1467x816.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!K3uC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe82bd289-77b5-41c6-9b65-d7aa8d75547a_1467x816.gif 424w, https://substackcdn.com/image/fetch/$s_!K3uC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe82bd289-77b5-41c6-9b65-d7aa8d75547a_1467x816.gif 848w, https://substackcdn.com/image/fetch/$s_!K3uC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe82bd289-77b5-41c6-9b65-d7aa8d75547a_1467x816.gif 1272w, https://substackcdn.com/image/fetch/$s_!K3uC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe82bd289-77b5-41c6-9b65-d7aa8d75547a_1467x816.gif 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 aria-hidden="true" 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><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><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;a57451ba-7339-4eb7-9b0f-194386aa1b6f&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">/schedule every morning: check the PR queue and generate a daily digest of what needs review</code></pre></div><div><hr></div><h2>Real Loop in Claude Code: PR Readiness Loop</h2><p>Here is the complete loop engineering example using Claude Code on a real example. </p><p>Suppose this is the case: </p><blockquote><p><strong>You have a branch ready to merge, but the CI is failing because three tests are broken, coverage has dropped below 80%, and there are two lint errors.</strong> </p></blockquote><p>Normally, you would fix these <em><strong>manually, turn by turn</strong></em>. Loop engineering lets the agent handle the entire cycle.</p><div><hr></div><h3>Step 1: Design the Loop</h3><p>Before you start designing the loop, you need to answer these four questions:</p><ol><li><p><strong> What does done look like?</strong> All tests passing, coverage above 80%, zero lint errors.</p></li><li><p><strong>What is the safety cap?</strong> 10 iterations maximum. After that, something structural is wrong, and you need to look.</p></li><li><p><strong> What context management does the agent need?</strong> The CLAUDE.md in this project already documents the test command and the coverage threshold. The agent will not drift if it keeps re-reading CLAUDE.md at the start of each iteration.</p></li><li><p><strong>What errors should the agent recover from vs stop on?</strong> Recover from: test failures, lint errors, coverage gaps. These are the job. Stop on: syntax errors that prevent the test suite from running at all. That requires human eyes.</p></li></ol><div><hr></div><h3>Step 2: Run the Loop</h3><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;be1e8b58-fcce-4d33-a55f-53c963d3fdc5&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">/goal all tests passing, coverage above 80%, no lint errors, stop after 10 tries</code></pre></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Cbo5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb32b0a83-157d-4a3f-b947-88eec0ac2640_978x874.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Cbo5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb32b0a83-157d-4a3f-b947-88eec0ac2640_978x874.gif 424w, https://substackcdn.com/image/fetch/$s_!Cbo5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb32b0a83-157d-4a3f-b947-88eec0ac2640_978x874.gif 848w, https://substackcdn.com/image/fetch/$s_!Cbo5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb32b0a83-157d-4a3f-b947-88eec0ac2640_978x874.gif 1272w, https://substackcdn.com/image/fetch/$s_!Cbo5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb32b0a83-157d-4a3f-b947-88eec0ac2640_978x874.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Cbo5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb32b0a83-157d-4a3f-b947-88eec0ac2640_978x874.gif" width="978" height="874" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b32b0a83-157d-4a3f-b947-88eec0ac2640_978x874.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:874,&quot;width&quot;:978,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:531148,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/209122324?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb32b0a83-157d-4a3f-b947-88eec0ac2640_978x874.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Cbo5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb32b0a83-157d-4a3f-b947-88eec0ac2640_978x874.gif 424w, https://substackcdn.com/image/fetch/$s_!Cbo5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb32b0a83-157d-4a3f-b947-88eec0ac2640_978x874.gif 848w, https://substackcdn.com/image/fetch/$s_!Cbo5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb32b0a83-157d-4a3f-b947-88eec0ac2640_978x874.gif 1272w, https://substackcdn.com/image/fetch/$s_!Cbo5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb32b0a83-157d-4a3f-b947-88eec0ac2640_978x874.gif 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 aria-hidden="true" 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><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><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;f87a8468-b319-4c86-9d6f-c8d7101f470d&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">Iteration 1:
- Runs: pytest --cov=app tests/
- Reads: 3 failures, coverage 71%, 2 lint errors
- Plans: fix the three failing tests first
- Writes: updated test fixtures
- Re-runs: pytest
- Evaluates: still failing, loops again

Iteration 2:
- Runs: pytest
- Reads: 1 failure remaining, coverage 74%
- Plans: fix the remaining test
- Writes: fixes the edge case in auth validation
- Re-runs: pytest
- Evaluates: all passing now, checks coverage

Iteration 3:
- Runs: pytest --cov=app
- Reads: all passing, coverage 76%, 2 lint warnings still
- Plans: fix lint errors
- Writes: reformats two functions
- Re-runs: pylint
- Evaluates: zero warnings, coverage 77%, not above 80% yet

Iteration 4:
- Adds missing test cases to reach 80%
- Re-runs full suite
- Evaluates: all conditions met
- EXITS: goal reached in 4 iterations</code></pre></div><div><hr></div><h3>Step 3: Find the Loop Limitations  </h3><p>The PR readiness loop works because one agent does one thing (fix the PR), but it cannot :</p><ul><li><p><em><strong>Review its own fixes independently&#8212;</strong>The agent that wrote the test fix is the same agent that evaluates whether the fix is correct. It cannot be a credible skeptic of its own work.</em></p></li><li><p><em><strong>Parallelize&#8212;</strong> If there are five categories of issues (tests, coverage, lint, types, security), the loop handles them one category at a time. They cannot run simultaneously.</em></p></li><li><p><em><strong>Visualize the flow&#8212;</strong> If you read the transcript, you see 47 tool calls in sequence. You cannot quickly tell which iteration caught the coverage gap or which fix introduced a new issue.</em></p></li></ul><blockquote><p><strong>These three limitations can be fixed by one solution that we will build next. </strong></p></blockquote><div class="pullquote"><p>In the next Masterclass issue, we&#8217;ll cover <strong>Graph Engineering in Claude Code, which is Part II of this masterclass issue (Due for release next week) </strong></p></div><div class="callout-block" data-callout="true"><p><span>Thanks for the support: reach me anytime (community, email, or Substack DM). Premium issues, tutorials, and course modules unlock in the membership area as they are released. </span><strong><span>Masterclass Pro is live &#8212; </span><a href="https://claudecodemasterclass.com/pricing/"><span>join us today</span></a><span>. </span></strong></p><p><strong><span>Let&#8217;s keep this going.</span></strong></p></div><div><hr></div><h3><strong>Resources</strong></h3><p><strong>For this issue, these are the resources available: </strong></p><ul><li><p><strong> <a href="https://github.com/Njengah/claude-code-tracker">Testing Repo</a></strong></p></li><li><p>Tested Loop Templates Prompt (<strong><a href="https://claudecodemasterclass.com/pricing/">Members Resource Library</a></strong>) </p><p></p></li></ul><div><hr></div><h3><strong>Other: Coming Up Issues</strong></h3><p>The next issues in this Masterclass Series will cover:</p><ul><li><p><strong>Claude Code Subagents Masterclass </strong><span>&#8212; Building your AI team</span></p></li><li><p><strong>Claude Code MCP Masterclass </strong><span>&#8212; Extending Claude&#8217;s capabilities</span></p></li></ul><div><hr></div><p><strong>How are You Using Loops in Claude Code?</strong></p><p>Let me know your thoughts, tips, and any questions in the comments below. </p><div class="pullquote"><p><em><strong>Finally, this newsletter belongs to all of us. If there&#8217;s something that can make it better or something you don&#8217;t like, please let me know.</strong></em></p><p style="text-align: center;"><em><strong>See you in the next one.</strong></em></p></div><h1 style="text-align: center;"><strong>Claude Code Masterclass</strong></h1><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wx5_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc66fc8c3-84e9-4b0f-8487-4df4642f6df0_1478x780.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wx5_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc66fc8c3-84e9-4b0f-8487-4df4642f6df0_1478x780.png 424w, https://substackcdn.com/image/fetch/$s_!wx5_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc66fc8c3-84e9-4b0f-8487-4df4642f6df0_1478x780.png 848w, https://substackcdn.com/image/fetch/$s_!wx5_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc66fc8c3-84e9-4b0f-8487-4df4642f6df0_1478x780.png 1272w, https://substackcdn.com/image/fetch/$s_!wx5_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc66fc8c3-84e9-4b0f-8487-4df4642f6df0_1478x780.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wx5_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc66fc8c3-84e9-4b0f-8487-4df4642f6df0_1478x780.png" width="1456" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c66fc8c3-84e9-4b0f-8487-4df4642f6df0_1478x780.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:62678,&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://newsletter.claudecodemasterclass.com/i/209122324?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc66fc8c3-84e9-4b0f-8487-4df4642f6df0_1478x780.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_!wx5_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc66fc8c3-84e9-4b0f-8487-4df4642f6df0_1478x780.png 424w, https://substackcdn.com/image/fetch/$s_!wx5_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc66fc8c3-84e9-4b0f-8487-4df4642f6df0_1478x780.png 848w, https://substackcdn.com/image/fetch/$s_!wx5_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc66fc8c3-84e9-4b0f-8487-4df4642f6df0_1478x780.png 1272w, https://substackcdn.com/image/fetch/$s_!wx5_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc66fc8c3-84e9-4b0f-8487-4df4642f6df0_1478x780.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 aria-hidden="true" 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><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 style="text-align: center;"><span>Let&#8217;s Build It Together</span></p><p style="text-align: center;"><span>&#8212; </span><strong>Joe Njenga</strong></p>]]></content:encoded></item><item><title><![CDATA[Last Week In Claude Code #5 — Cross-Session Message, MCP Stateless, DeepSeek V4 & More]]></title><description><![CDATA[Agents That Talk to Each Other, MCP's Biggest Update, and Free Model Testing]]></description><link>https://newsletter.claudecodemasterclass.com/p/last-week-in-claude-code-5-cross</link><guid isPermaLink="false">https://newsletter.claudecodemasterclass.com/p/last-week-in-claude-code-5-cross</guid><dc:creator><![CDATA[Joe]]></dc:creator><pubDate>Tue, 11 Aug 2026 16:05:38 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!qzYQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e972d43-e798-4caa-9c33-bea6a3b048ea_1200x600.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_!qzYQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e972d43-e798-4caa-9c33-bea6a3b048ea_1200x600.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qzYQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e972d43-e798-4caa-9c33-bea6a3b048ea_1200x600.png 424w, https://substackcdn.com/image/fetch/$s_!qzYQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e972d43-e798-4caa-9c33-bea6a3b048ea_1200x600.png 848w, https://substackcdn.com/image/fetch/$s_!qzYQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e972d43-e798-4caa-9c33-bea6a3b048ea_1200x600.png 1272w, https://substackcdn.com/image/fetch/$s_!qzYQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e972d43-e798-4caa-9c33-bea6a3b048ea_1200x600.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qzYQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e972d43-e798-4caa-9c33-bea6a3b048ea_1200x600.png" width="1200" height="600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5e972d43-e798-4caa-9c33-bea6a3b048ea_1200x600.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:600,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:117237,&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://newsletter.claudecodemasterclass.com/i/210758007?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e972d43-e798-4caa-9c33-bea6a3b048ea_1200x600.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_!qzYQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e972d43-e798-4caa-9c33-bea6a3b048ea_1200x600.png 424w, https://substackcdn.com/image/fetch/$s_!qzYQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e972d43-e798-4caa-9c33-bea6a3b048ea_1200x600.png 848w, https://substackcdn.com/image/fetch/$s_!qzYQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e972d43-e798-4caa-9c33-bea6a3b048ea_1200x600.png 1272w, https://substackcdn.com/image/fetch/$s_!qzYQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e972d43-e798-4caa-9c33-bea6a3b048ea_1200x600.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 aria-hidden="true" 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><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>Hello, thank you for being part of our Claude Code Masterclass community. <em>We are still growing past <strong>79k members, and I am grateful for every one of you.</strong></em></p><p>This is Issue #5 of the<a href="https://newsletter.claudecodemasterclass.com/t/last-week-in-claude-code"> </a><strong><a href="https://newsletter.claudecodemasterclass.com/t/last-week-in-claude-code">Last Week In Claude Code</a> </strong>series.  </p><div class="callout-block" data-callout="true"><p><strong>Your Support:</strong> We have made progress towards the course release; the most important step has been rolling out the membership site where you can support the newsletter and access the course as modules are released. </p><p><em><strong><a href="https://claudecodemasterclass.com/pricing/">Claude Code Masterclass Pro</a></strong></em><strong> </strong><span>is live; </span><em><strong><span>let's keep this going.</span></strong></em></p></div><p>The last week had a lot going on:  </p><ul><li><p><em><strong>Agents can now message each other across machines</strong></em></p></li><li><p><em><strong>MCP shipped its biggest update since launch</strong></em></p></li><li><p><em><strong>Claude Code can now run on your own servers</strong></em></p></li><li><p><em><strong>I tested DeepSeek V4-Flash against Fable 5 with some surprising results</strong></em></p></li></ul><p>We are also adding a new section starting this week: <strong>External Models Testing &amp; Tools</strong>, where I share what I am <em>testing outside of Anthropic models and what is worth your time.</em></p><div><hr></div><h1>What Happened Last Week In Claude Code?</h1><div><hr></div><h2>#1) Cross-Session SendMessage &#8212; Agents Can Now Talk to Each Other</h2><p><strong>Version:</strong> 2.1.224 </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9unk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f275825-3fc7-4ea4-b9e4-a0b631b92421_1056x532.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9unk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f275825-3fc7-4ea4-b9e4-a0b631b92421_1056x532.gif 424w, https://substackcdn.com/image/fetch/$s_!9unk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f275825-3fc7-4ea4-b9e4-a0b631b92421_1056x532.gif 848w, https://substackcdn.com/image/fetch/$s_!9unk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f275825-3fc7-4ea4-b9e4-a0b631b92421_1056x532.gif 1272w, https://substackcdn.com/image/fetch/$s_!9unk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f275825-3fc7-4ea4-b9e4-a0b631b92421_1056x532.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9unk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f275825-3fc7-4ea4-b9e4-a0b631b92421_1056x532.gif" width="1056" height="532" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4f275825-3fc7-4ea4-b9e4-a0b631b92421_1056x532.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:532,&quot;width&quot;:1056,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:297311,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/210758007?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f275825-3fc7-4ea4-b9e4-a0b631b92421_1056x532.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!9unk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f275825-3fc7-4ea4-b9e4-a0b631b92421_1056x532.gif 424w, https://substackcdn.com/image/fetch/$s_!9unk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f275825-3fc7-4ea4-b9e4-a0b631b92421_1056x532.gif 848w, https://substackcdn.com/image/fetch/$s_!9unk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f275825-3fc7-4ea4-b9e4-a0b631b92421_1056x532.gif 1272w, https://substackcdn.com/image/fetch/$s_!9unk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f275825-3fc7-4ea4-b9e4-a0b631b92421_1056x532.gif 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 aria-hidden="true" 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><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>Claude Code sessions can now send messages to each other  across tabs, machines, and projects</p><div><hr></div><h3>What It Does</h3><p>Before this, agents were isolated. You could run parallel sessions, but no way  for sessions to coordinate without your input</p><p><em><strong>Now one session can message another directly using </strong></em><code>SendMessage </code><em><strong>and use </strong></em><code>ListAgents</code><em><strong> to discover all available sessions across your machines.</strong></em></p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;fabe7c9e-1cdd-4513-aef3-a73d131b904f&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext"># List all available sessions (including other machines)
ListAgents

# Sessions appear as:
# name [ref] &#8212; local or remote</code></pre></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ToN4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52adbfbe-3cbc-498f-8993-bf189b7dc170_1779x855.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ToN4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52adbfbe-3cbc-498f-8993-bf189b7dc170_1779x855.gif 424w, https://substackcdn.com/image/fetch/$s_!ToN4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52adbfbe-3cbc-498f-8993-bf189b7dc170_1779x855.gif 848w, https://substackcdn.com/image/fetch/$s_!ToN4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52adbfbe-3cbc-498f-8993-bf189b7dc170_1779x855.gif 1272w, https://substackcdn.com/image/fetch/$s_!ToN4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52adbfbe-3cbc-498f-8993-bf189b7dc170_1779x855.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ToN4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52adbfbe-3cbc-498f-8993-bf189b7dc170_1779x855.gif" width="1456" height="700" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/52adbfbe-3cbc-498f-8993-bf189b7dc170_1779x855.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:700,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:583641,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/210758007?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52adbfbe-3cbc-498f-8993-bf189b7dc170_1779x855.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ToN4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52adbfbe-3cbc-498f-8993-bf189b7dc170_1779x855.gif 424w, https://substackcdn.com/image/fetch/$s_!ToN4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52adbfbe-3cbc-498f-8993-bf189b7dc170_1779x855.gif 848w, https://substackcdn.com/image/fetch/$s_!ToN4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52adbfbe-3cbc-498f-8993-bf189b7dc170_1779x855.gif 1272w, https://substackcdn.com/image/fetch/$s_!ToN4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52adbfbe-3cbc-498f-8993-bf189b7dc170_1779x855.gif 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 aria-hidden="true" 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><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>SendMessage can also start a new conversation with a Remote Control session on another machine by name.</p><p>Auto mode now evaluates messages sent between agents via SendMessage before dispatch, <em><strong>so one compromised agent cannot instruct another to bypass permissions.</strong></em></p><p>Multi-agent workflows just got coordination. A parent agent can now delegate to a specialist agent, check its progress, and act on the result.</p><div><hr></div><blockquote><p><strong>I shared the complete test results in my Medium tutorial;  <a href="https://medium.com/@joe.njenga/claude-code-sessions-can-now-talk-to-each-other-i-just-tested-and-its-wild-694388b254ee?source=user_profile_page---------8-------------15bfc6bce2c9----------------------">learn more here </a></strong></p></blockquote><div><hr></div><h2>#2) Auto Mode &#8212; Now the Default for Everyone</h2><p><strong>Version:</strong> 2.1.207+ </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!M_j2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fbc7103-3416-418b-941e-4daf8bf30eca_1056x532.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!M_j2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fbc7103-3416-418b-941e-4daf8bf30eca_1056x532.gif 424w, https://substackcdn.com/image/fetch/$s_!M_j2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fbc7103-3416-418b-941e-4daf8bf30eca_1056x532.gif 848w, https://substackcdn.com/image/fetch/$s_!M_j2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fbc7103-3416-418b-941e-4daf8bf30eca_1056x532.gif 1272w, https://substackcdn.com/image/fetch/$s_!M_j2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fbc7103-3416-418b-941e-4daf8bf30eca_1056x532.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!M_j2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fbc7103-3416-418b-941e-4daf8bf30eca_1056x532.gif" width="1056" height="532" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5fbc7103-3416-418b-941e-4daf8bf30eca_1056x532.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:532,&quot;width&quot;:1056,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:97666,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/210758007?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fbc7103-3416-418b-941e-4daf8bf30eca_1056x532.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!M_j2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fbc7103-3416-418b-941e-4daf8bf30eca_1056x532.gif 424w, https://substackcdn.com/image/fetch/$s_!M_j2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fbc7103-3416-418b-941e-4daf8bf30eca_1056x532.gif 848w, https://substackcdn.com/image/fetch/$s_!M_j2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fbc7103-3416-418b-941e-4daf8bf30eca_1056x532.gif 1272w, https://substackcdn.com/image/fetch/$s_!M_j2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fbc7103-3416-418b-941e-4daf8bf30eca_1056x532.gif 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 aria-hidden="true" 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><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>Auto mode is now the <em><strong>default permission mode across all Claude Code sessions.</strong></em></p><div><hr></div><h3>What Changed</h3><p>Previously, you had to opt in or configure auto mode manually using the<code> shift+tab</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_!wMQK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1a6a318-4552-4e26-afbc-b4550ace571f_1056x344.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wMQK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1a6a318-4552-4e26-afbc-b4550ace571f_1056x344.gif 424w, https://substackcdn.com/image/fetch/$s_!wMQK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1a6a318-4552-4e26-afbc-b4550ace571f_1056x344.gif 848w, https://substackcdn.com/image/fetch/$s_!wMQK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1a6a318-4552-4e26-afbc-b4550ace571f_1056x344.gif 1272w, https://substackcdn.com/image/fetch/$s_!wMQK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1a6a318-4552-4e26-afbc-b4550ace571f_1056x344.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wMQK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1a6a318-4552-4e26-afbc-b4550ace571f_1056x344.gif" width="1056" height="344" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d1a6a318-4552-4e26-afbc-b4550ace571f_1056x344.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:344,&quot;width&quot;:1056,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:194035,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/210758007?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1a6a318-4552-4e26-afbc-b4550ace571f_1056x344.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!wMQK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1a6a318-4552-4e26-afbc-b4550ace571f_1056x344.gif 424w, https://substackcdn.com/image/fetch/$s_!wMQK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1a6a318-4552-4e26-afbc-b4550ace571f_1056x344.gif 848w, https://substackcdn.com/image/fetch/$s_!wMQK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1a6a318-4552-4e26-afbc-b4550ace571f_1056x344.gif 1272w, https://substackcdn.com/image/fetch/$s_!wMQK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1a6a318-4552-4e26-afbc-b4550ace571f_1056x344.gif 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 aria-hidden="true" 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><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>Now, it is on by default for all users.</p><p>Auto mode classifies every tool call before it runs,  deciding automatically whether it is safe to allow or needs your approval. The goal is fewer interruptions on routine work.</p><h3>What You Can Still Control</h3><p>Auto mode does not mean Claude does everything without asking. It means the classifier makes the call instead of defaulting to a prompt.</p><p>You can still:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;22f49618-0a5b-4a48-bf3a-c804113fc6f2&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext"># Switch to manual at any time
/config &#8594; Permission mode &#8594; Manual

# Or via settings
{ "defaultMode": "manual" }

# Disable auto mode entirely
{ "disableAutoMode": true }</code></pre></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!m_7j!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18928106-38ed-4697-bd1f-274563209ee1_817x499.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!m_7j!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18928106-38ed-4697-bd1f-274563209ee1_817x499.gif 424w, https://substackcdn.com/image/fetch/$s_!m_7j!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18928106-38ed-4697-bd1f-274563209ee1_817x499.gif 848w, https://substackcdn.com/image/fetch/$s_!m_7j!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18928106-38ed-4697-bd1f-274563209ee1_817x499.gif 1272w, https://substackcdn.com/image/fetch/$s_!m_7j!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18928106-38ed-4697-bd1f-274563209ee1_817x499.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!m_7j!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18928106-38ed-4697-bd1f-274563209ee1_817x499.gif" width="817" height="499" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/18928106-38ed-4697-bd1f-274563209ee1_817x499.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:499,&quot;width&quot;:817,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:298716,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/210758007?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18928106-38ed-4697-bd1f-274563209ee1_817x499.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!m_7j!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18928106-38ed-4697-bd1f-274563209ee1_817x499.gif 424w, https://substackcdn.com/image/fetch/$s_!m_7j!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18928106-38ed-4697-bd1f-274563209ee1_817x499.gif 848w, https://substackcdn.com/image/fetch/$s_!m_7j!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18928106-38ed-4697-bd1f-274563209ee1_817x499.gif 1272w, https://substackcdn.com/image/fetch/$s_!m_7j!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18928106-38ed-4697-bd1f-274563209ee1_817x499.gif 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 aria-hidden="true" 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><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>Recent improvements to auto mode worth knowing:</p><ul><li><p><strong>Parallel tool call checks are now cache-efficient</strong>; faster decisions when multiple tools run at once</p></li><li><p><strong>Safety filter refusals no longer count toward the consecutive-block limit</strong>; Claude moves on instead of retrying</p></li><li><p><strong>SendMessage between agents now goes through the classifier</strong> before delivery</p></li></ul><div><hr></div><blockquote><p><strong>I shared a quick tutorial on Medium to help you<a href="https://medium.com/@joe.njenga/anthropic-just-made-claude-code-auto-mode-the-default-so-adjust-3742dd47f9f4"> learn how Auto mode works</a>.</strong></p></blockquote><div><hr></div><h2>#3) Anthropic MCP Stateless &#8212; The Biggest MCP Update Since Launch</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lwPV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff79538ef-6976-4073-a743-f2ede34b6579_1870x813.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lwPV!,w_424,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff79538ef-6976-4073-a743-f2ede34b6579_1870x813.gif 424w, https://substackcdn.com/image/fetch/$s_!lwPV!,w_848,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff79538ef-6976-4073-a743-f2ede34b6579_1870x813.gif 848w, https://substackcdn.com/image/fetch/$s_!lwPV!,w_1272,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff79538ef-6976-4073-a743-f2ede34b6579_1870x813.gif 1272w, https://substackcdn.com/image/fetch/$s_!lwPV!,w_1456,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff79538ef-6976-4073-a743-f2ede34b6579_1870x813.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lwPV!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff79538ef-6976-4073-a743-f2ede34b6579_1870x813.gif" width="1456" height="633" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f79538ef-6976-4073-a743-f2ede34b6579_1870x813.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:633,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:12157549,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/210758007?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff79538ef-6976-4073-a743-f2ede34b6579_1870x813.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!lwPV!,w_424,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff79538ef-6976-4073-a743-f2ede34b6579_1870x813.gif 424w, https://substackcdn.com/image/fetch/$s_!lwPV!,w_848,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff79538ef-6976-4073-a743-f2ede34b6579_1870x813.gif 848w, https://substackcdn.com/image/fetch/$s_!lwPV!,w_1272,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff79538ef-6976-4073-a743-f2ede34b6579_1870x813.gif 1272w, https://substackcdn.com/image/fetch/$s_!lwPV!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff79538ef-6976-4073-a743-f2ede34b6579_1870x813.gif 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 aria-hidden="true" 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><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>Spec:</strong> MCP 2026-07-28 </p><p>The Model Context Protocol just shipped its most significant update since it launched.</p><blockquote><p><strong>MCP is now stateless.</strong></p></blockquote><div><hr></div><h3>What Changed? </h3><p>The old MCP used a bidirectional stateful protocol;  every connection needed a persistent session, a handshake, and a session ID. Servers had to maintain state between calls.</p><p><strong> MCP is now a request/response model like HTTP:</strong></p><ul><li><p>MCP servers can now run on serverless and edge infrastructure (Cloudflare Workers, AWS Lambda)</p></li><li><p>No more session management to work around</p></li><li><p>Easier to scale, easier to deploy, easier to build</p></li></ul><p>MCP recently surpassed <strong>400 million monthly SDK downloads</strong>. There are now over 950 MCP servers in the Claude connector directory.</p><div><hr></div><h3>What is Deprecated?  </h3><p>The old spec is not going away immediately, but they gave a 12-month deprecation window, so you should  start planning:</p><ul><li><p><code>Roots</code>, <code>Sampling</code>, <code>Logging</code>, and <code>SSE</code> are deprecated</p></li><li><p>The <code>initialize/initialized</code> handshake is removed</p></li><li><p>The <code>Mcp-Session-Id</code> header is removed</p></li></ul><blockquote><p><strong>I created a complete Stateless MCP demo that you can follow to see how to carry out the updates or build your new MCP using the stateless protocol</strong></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_!Qeu-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a51f590-1757-4743-b236-edb5aa735c27_1052x748.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Qeu-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a51f590-1757-4743-b236-edb5aa735c27_1052x748.gif 424w, https://substackcdn.com/image/fetch/$s_!Qeu-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a51f590-1757-4743-b236-edb5aa735c27_1052x748.gif 848w, https://substackcdn.com/image/fetch/$s_!Qeu-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a51f590-1757-4743-b236-edb5aa735c27_1052x748.gif 1272w, https://substackcdn.com/image/fetch/$s_!Qeu-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a51f590-1757-4743-b236-edb5aa735c27_1052x748.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Qeu-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a51f590-1757-4743-b236-edb5aa735c27_1052x748.gif" width="1052" height="748" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1a51f590-1757-4743-b236-edb5aa735c27_1052x748.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:748,&quot;width&quot;:1052,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:318635,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/210758007?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a51f590-1757-4743-b236-edb5aa735c27_1052x748.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Qeu-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a51f590-1757-4743-b236-edb5aa735c27_1052x748.gif 424w, https://substackcdn.com/image/fetch/$s_!Qeu-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a51f590-1757-4743-b236-edb5aa735c27_1052x748.gif 848w, https://substackcdn.com/image/fetch/$s_!Qeu-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a51f590-1757-4743-b236-edb5aa735c27_1052x748.gif 1272w, https://substackcdn.com/image/fetch/$s_!Qeu-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a51f590-1757-4743-b236-edb5aa735c27_1052x748.gif 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 aria-hidden="true" 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><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><div><hr></div><h3>For Claude Code Users</h3><p>If you use MCP servers in your workflows, check whether your servers have been updated to the new spec.</p><div><hr></div><blockquote><p><strong>Many MCP servers will need a refactor; check out my full walkthrough on Medium: <a href="https://medium.com/ai-software-engineer/anthropic-just-overhauled-mcp-i-built-my-first-stateless-mcp-server-e0eff2d1df05">Anthropic Just Overhauled MCP (I Built My First Stateless MCP Server)</a></strong></p></blockquote><div><hr></div><h2>#4) Self-Hosted Runner &#8212; Run Claude Code on Your Own Machines</h2><p><strong>Version:</strong> 2.1.224 </p><p>You can now turn your own machines or containers into a place where Claude Code sessions run.</p><blockquote><p><strong>Available on Team and Enterprise plans.</strong></p></blockquote><div><hr></div><h3>What It Does</h3><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;19451d7c-e34d-45f0-84aa-fe1e98e2a660&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">claude self-hosted-runner</code></pre></div><p>This registers your machine as a runner. <em><strong>Claude Code web, mobile, and desktop sessions can then execute on it instead of Anthropic&#8217;s cloud infrastructure.</strong></em></p><p>For teams with compliance requirements, air-gapped environments, or sensitive codebases, running Claude Code on your own infrastructure changes what is possible.</p><h3>What to Know</h3><ul><li><p>Available on <strong>Team and Enterprise</strong> plans only</p></li><li><p>If the <code>--base-dir</code> cannot be created or written, it exits at startup with a clear error instead of registering and failing every session</p></li><li><p>Archive plugin installs (zip over HTTPS) are also supported in this version;  useful for air-gapped setups</p></li></ul><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;79dd59e3-eedb-4634-9a20-bbd6b0cab4cf&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext"># Register your machine as a runner
claude self-hosted-runner

# With a custom base directory
claude self-hosted-runner --base-dir /path/to/dir</code></pre></div><div><hr></div><div><hr></div><blockquote><p><strong>I have not yet tested the self-hosted runner since I don&#8217;t have a team or max plan; in the future, I will demonstrate how this works. </strong></p></blockquote><div><hr></div><h2>#5) Quick Wins &#8212; Subagent Cap Removed &amp; Plugins Activate Immediately</h2><p>Two smaller changes that improve Claude Code daily workflows.</p><p><strong>Subagent Cap Removed</strong></p><p>The 200-subagent-per-session spawn limit is gone. Long-running sessions no longer refuse to spawn new agents after hitting the cap. </p><p><strong>Plugins Activate Immediately</strong></p><p>Installing a plugin no longer requires <code>/reload-plugins</code> to take effect.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RmS-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46267afd-4e12-43b7-849f-3785529fd652_817x499.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RmS-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46267afd-4e12-43b7-849f-3785529fd652_817x499.gif 424w, https://substackcdn.com/image/fetch/$s_!RmS-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46267afd-4e12-43b7-849f-3785529fd652_817x499.gif 848w, https://substackcdn.com/image/fetch/$s_!RmS-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46267afd-4e12-43b7-849f-3785529fd652_817x499.gif 1272w, https://substackcdn.com/image/fetch/$s_!RmS-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46267afd-4e12-43b7-849f-3785529fd652_817x499.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RmS-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46267afd-4e12-43b7-849f-3785529fd652_817x499.gif" width="817" height="499" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/46267afd-4e12-43b7-849f-3785529fd652_817x499.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:499,&quot;width&quot;:817,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:87211,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/210758007?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46267afd-4e12-43b7-849f-3785529fd652_817x499.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!RmS-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46267afd-4e12-43b7-849f-3785529fd652_817x499.gif 424w, https://substackcdn.com/image/fetch/$s_!RmS-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46267afd-4e12-43b7-849f-3785529fd652_817x499.gif 848w, https://substackcdn.com/image/fetch/$s_!RmS-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46267afd-4e12-43b7-849f-3785529fd652_817x499.gif 1272w, https://substackcdn.com/image/fetch/$s_!RmS-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46267afd-4e12-43b7-849f-3785529fd652_817x499.gif 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 aria-hidden="true" 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><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><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;ee92f6cc-0512-4c9f-b2b4-2c3ec15bcd79&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext"># Before: install, then reload
/plugin install my-plugin
/reload-plugins

# Now: install and it is live
/plugin install my-plugin</code></pre></div><div><hr></div><h2>External Models Testing &amp; Tools</h2><p><em>A new section where I share what I am testing outside of Anthropic models and what is worth your time.</em></p><p><strong>DeepSeek V4-Flash on Claude Code &#8212; 71x Cheaper Than Fable 5</strong></p><p>DeepSeek just released the V4-Flash API into public beta, and I ran it on Claude 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_!JoNa!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F259ca8f1-5b71-4c6c-b24c-9ce21f4d0b4e_1557x912.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JoNa!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F259ca8f1-5b71-4c6c-b24c-9ce21f4d0b4e_1557x912.gif 424w, https://substackcdn.com/image/fetch/$s_!JoNa!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F259ca8f1-5b71-4c6c-b24c-9ce21f4d0b4e_1557x912.gif 848w, https://substackcdn.com/image/fetch/$s_!JoNa!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F259ca8f1-5b71-4c6c-b24c-9ce21f4d0b4e_1557x912.gif 1272w, https://substackcdn.com/image/fetch/$s_!JoNa!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F259ca8f1-5b71-4c6c-b24c-9ce21f4d0b4e_1557x912.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!JoNa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F259ca8f1-5b71-4c6c-b24c-9ce21f4d0b4e_1557x912.gif" width="1456" height="853" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/259ca8f1-5b71-4c6c-b24c-9ce21f4d0b4e_1557x912.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:853,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:553884,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/210758007?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F259ca8f1-5b71-4c6c-b24c-9ce21f4d0b4e_1557x912.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!JoNa!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F259ca8f1-5b71-4c6c-b24c-9ce21f4d0b4e_1557x912.gif 424w, https://substackcdn.com/image/fetch/$s_!JoNa!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F259ca8f1-5b71-4c6c-b24c-9ce21f4d0b4e_1557x912.gif 848w, https://substackcdn.com/image/fetch/$s_!JoNa!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F259ca8f1-5b71-4c6c-b24c-9ce21f4d0b4e_1557x912.gif 1272w, https://substackcdn.com/image/fetch/$s_!JoNa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F259ca8f1-5b71-4c6c-b24c-9ce21f4d0b4e_1557x912.gif 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 aria-hidden="true" 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><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>The benchmark:</strong> Terminal-Bench 2.1, the evaluation for agentic coding &#8212; DeepSeek V4-Flash scores 82.7. That beats Fable 5 on this benchmark.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!J73_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46e21d2d-6108-444f-852e-5a7522bb1c29_575x143.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!J73_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46e21d2d-6108-444f-852e-5a7522bb1c29_575x143.png 424w, https://substackcdn.com/image/fetch/$s_!J73_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46e21d2d-6108-444f-852e-5a7522bb1c29_575x143.png 848w, https://substackcdn.com/image/fetch/$s_!J73_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46e21d2d-6108-444f-852e-5a7522bb1c29_575x143.png 1272w, https://substackcdn.com/image/fetch/$s_!J73_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46e21d2d-6108-444f-852e-5a7522bb1c29_575x143.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!J73_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46e21d2d-6108-444f-852e-5a7522bb1c29_575x143.png" width="575" height="143" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/46e21d2d-6108-444f-852e-5a7522bb1c29_575x143.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:143,&quot;width&quot;:575,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:11254,&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://newsletter.claudecodemasterclass.com/i/210758007?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46e21d2d-6108-444f-852e-5a7522bb1c29_575x143.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_!J73_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46e21d2d-6108-444f-852e-5a7522bb1c29_575x143.png 424w, https://substackcdn.com/image/fetch/$s_!J73_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46e21d2d-6108-444f-852e-5a7522bb1c29_575x143.png 848w, https://substackcdn.com/image/fetch/$s_!J73_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46e21d2d-6108-444f-852e-5a7522bb1c29_575x143.png 1272w, https://substackcdn.com/image/fetch/$s_!J73_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46e21d2d-6108-444f-852e-5a7522bb1c29_575x143.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><blockquote><p><strong>71x cheaper on input. 178x cheaper on output.</strong></p></blockquote><p><strong>My real session cost:</strong> Built a full Windows screen time monitor app;  background tracker, dashboard with three tabs, alerts, SQLite storage. Total cost: <strong>$0.13</strong>.</p><p><strong>Two ways to run it:</strong></p><p>Via Ollama:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;6969cdf0-0cc1-4823-a677-6c40473e15b0&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">ollama launch claude --model deepseek-v4-flash</code></pre></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!AFNk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedfeebbb-281c-4d62-a59d-dbe5905334d3_1558x893.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!AFNk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedfeebbb-281c-4d62-a59d-dbe5905334d3_1558x893.gif 424w, https://substackcdn.com/image/fetch/$s_!AFNk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedfeebbb-281c-4d62-a59d-dbe5905334d3_1558x893.gif 848w, https://substackcdn.com/image/fetch/$s_!AFNk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedfeebbb-281c-4d62-a59d-dbe5905334d3_1558x893.gif 1272w, https://substackcdn.com/image/fetch/$s_!AFNk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedfeebbb-281c-4d62-a59d-dbe5905334d3_1558x893.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!AFNk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedfeebbb-281c-4d62-a59d-dbe5905334d3_1558x893.gif" width="1456" height="835" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/edfeebbb-281c-4d62-a59d-dbe5905334d3_1558x893.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:835,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:655704,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/210758007?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedfeebbb-281c-4d62-a59d-dbe5905334d3_1558x893.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!AFNk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedfeebbb-281c-4d62-a59d-dbe5905334d3_1558x893.gif 424w, https://substackcdn.com/image/fetch/$s_!AFNk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedfeebbb-281c-4d62-a59d-dbe5905334d3_1558x893.gif 848w, https://substackcdn.com/image/fetch/$s_!AFNk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedfeebbb-281c-4d62-a59d-dbe5905334d3_1558x893.gif 1272w, https://substackcdn.com/image/fetch/$s_!AFNk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedfeebbb-281c-4d62-a59d-dbe5905334d3_1558x893.gif 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 aria-hidden="true" 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><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>Via Direct API:</strong></p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;fdb15c4b-81aa-4ae9-84bc-3f2e1ca180e8&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">export ANTHROPIC_BASE_URL="https://api.deepseek.com/v1"
export ANTHROPIC_API_KEY="your-deepseek-api-key"
export ANTHROPIC_DEFAULT_SONNET_MODEL="deepseek-v4-flash"
claude</code></pre></div><p>The direct API gives you lower latency and the full 1M context window.</p><div><hr></div><blockquote><p><strong>You can see my full test of DeepSeek v4 Flash on Claude Code here &#8212; <a href="https://medium.com/@joe.njenga/i-tried-deepseek-v4-flash-on-claude-code-it-beats-fable-5-at-71x-lower-cost-fa5b74669412">I Tried DeepSeek V4-Flash on Claude Code (It Beats Fable 5 at 71x Lower Cost)</a></strong></p></blockquote><div><hr></div><p>Finally, I built and open-sourced a framework for structured AI coding that works across Claude Code, Codex, Cursor, and OpenCode. We will feature it in next week's issue. </p><div><hr></div><blockquote><p><strong>You are now up to date with the latest major Claude Code updates. </strong></p></blockquote><div class="callout-block" data-callout="true"><p>I appreciate your support, and feel free to reach out. <em><strong>You can access the premium tutorials, newsletters, and course updates or modules as they are released in <a href="https://claudecodemasterclass.com/pricing/">our membership area</a></strong>.</em> You can also get in touch with me anytime in our private community, via email, or direct message here on Substack. <strong><a href="https://claudecodemasterclass.com/pricing/">Claude Code Masterclass Pro</a> </strong>is live; join us today and  <em><strong>let&#8217;s keep this going.</strong></em></p></div><div class="pullquote"><p><strong>Finally, this newsletter belongs to all of us. If there&#8217;s anything that can make it better or something you don&#8217;t like, please let me know.</strong></p></div><h1 style="text-align: center;"><strong>Claude Code Masterclass</strong></h1><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!t9MB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c6c4b37-2098-4218-866a-9c9ef16b78b2_1478x780.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!t9MB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c6c4b37-2098-4218-866a-9c9ef16b78b2_1478x780.png 424w, https://substackcdn.com/image/fetch/$s_!t9MB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c6c4b37-2098-4218-866a-9c9ef16b78b2_1478x780.png 848w, https://substackcdn.com/image/fetch/$s_!t9MB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c6c4b37-2098-4218-866a-9c9ef16b78b2_1478x780.png 1272w, https://substackcdn.com/image/fetch/$s_!t9MB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c6c4b37-2098-4218-866a-9c9ef16b78b2_1478x780.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!t9MB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c6c4b37-2098-4218-866a-9c9ef16b78b2_1478x780.png" width="1456" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5c6c4b37-2098-4218-866a-9c9ef16b78b2_1478x780.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:62678,&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://newsletter.claudecodemasterclass.com/i/210758007?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c6c4b37-2098-4218-866a-9c9ef16b78b2_1478x780.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_!t9MB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c6c4b37-2098-4218-866a-9c9ef16b78b2_1478x780.png 424w, https://substackcdn.com/image/fetch/$s_!t9MB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c6c4b37-2098-4218-866a-9c9ef16b78b2_1478x780.png 848w, https://substackcdn.com/image/fetch/$s_!t9MB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c6c4b37-2098-4218-866a-9c9ef16b78b2_1478x780.png 1272w, https://substackcdn.com/image/fetch/$s_!t9MB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c6c4b37-2098-4218-866a-9c9ef16b78b2_1478x780.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 aria-hidden="true" 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><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 style="text-align: center;"><strong>Let&#8217;s Build It Together</strong></p><p style="text-align: center;"><strong>&#8212; Joe Njenga</strong></p>]]></content:encoded></item><item><title><![CDATA[Claude Code Hooks Masterclass: From Manual Clicks to Fully Autonomous Pipeline]]></title><description><![CDATA[The invisible enforcer running between Claude's intent and your codebase]]></description><link>https://newsletter.claudecodemasterclass.com/p/claude-code-hooks-masterclass-from</link><guid isPermaLink="false">https://newsletter.claudecodemasterclass.com/p/claude-code-hooks-masterclass-from</guid><dc:creator><![CDATA[Joe]]></dc:creator><pubDate>Wed, 29 Jul 2026 19:56:40 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!J2Uy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbeaf2f1f-ec4d-482d-a1a5-86877ae5944d_1200x600.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_!J2Uy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbeaf2f1f-ec4d-482d-a1a5-86877ae5944d_1200x600.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!J2Uy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbeaf2f1f-ec4d-482d-a1a5-86877ae5944d_1200x600.png 424w, https://substackcdn.com/image/fetch/$s_!J2Uy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbeaf2f1f-ec4d-482d-a1a5-86877ae5944d_1200x600.png 848w, https://substackcdn.com/image/fetch/$s_!J2Uy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbeaf2f1f-ec4d-482d-a1a5-86877ae5944d_1200x600.png 1272w, https://substackcdn.com/image/fetch/$s_!J2Uy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbeaf2f1f-ec4d-482d-a1a5-86877ae5944d_1200x600.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!J2Uy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbeaf2f1f-ec4d-482d-a1a5-86877ae5944d_1200x600.png" width="1200" height="600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/beaf2f1f-ec4d-482d-a1a5-86877ae5944d_1200x600.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:600,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:75626,&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://newsletter.claudecodemasterclass.com/i/187703515?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbeaf2f1f-ec4d-482d-a1a5-86877ae5944d_1200x600.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_!J2Uy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbeaf2f1f-ec4d-482d-a1a5-86877ae5944d_1200x600.png 424w, https://substackcdn.com/image/fetch/$s_!J2Uy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbeaf2f1f-ec4d-482d-a1a5-86877ae5944d_1200x600.png 848w, https://substackcdn.com/image/fetch/$s_!J2Uy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbeaf2f1f-ec4d-482d-a1a5-86877ae5944d_1200x600.png 1272w, https://substackcdn.com/image/fetch/$s_!J2Uy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbeaf2f1f-ec4d-482d-a1a5-86877ae5944d_1200x600.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 aria-hidden="true" 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><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>First, welcome to all new subscribers. We have finally reached more than <em><strong>79,000 </strong>members. <strong> I&#8217;m very grateful for every one of you</strong> and </em>am still overwhelmed by the support and pledges you have sent &#8212;<em><strong> Thank you once again.</strong></em></p><div class="callout-block" data-callout="true"><p><strong>Your Support: </strong>Many of you have pledged, and I couldn't turn payments on since Substack payments aren't available in my country. That's now sorted: <em><strong><a href="https://pro.claudecodemasterclass.com/l/pro">Claude Code Masterclass Pro</a></strong></em><strong> </strong>is live; let's keep this going. </p></div><div class="pullquote"><p><strong><a href="https://newsletter.claudecodemasterclass.com/p/claudemd-masterclass-from-start-to">In the last Masterclass issue, we covered CLAUDE.md</a>, </strong>the file that provides Claude with persistent memory of your project<strong>. It defines what Claude should know and how it should behave.</strong></p></div><p>This issue brings you the <strong>#3 issue</strong> in the Claude Code <em><strong><a href="https://newsletter.claudecodemasterclass.com/t/masterclass">Masterclass Series</a>  &#8212; Claude Code Hooks Masterclass</strong></em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.claudecodemasterclass.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 Claude Code Masterclass! 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><div><hr></div><p>CLAUDE.md only defines rules but doesn&#8217;t enforce them.</p><blockquote><p><em><strong>You can tell Claude, &#8220;always run tests before committing&#8221; in your CLAUDE.md. Claude will read it, acknowledge it, and then... ask you if you want to run test again and again. </strong></em></p></blockquote><p>To enforce these rules, we need to run automatic actions that fire at specific points or events. </p><p>That&#8217;s why Claude Code introduced hooks. </p><p><em><strong>Hooks are not as complicated as many new users think; they are simple to use once you understand the basics. </strong></em></p><p>They are automated actions that trigger at specific points in Claude&#8217;s workflow: </p><ul><li><p>Hooks run without asking</p></li><li><p>Hooks can allow, deny, or modify what happens next</p></li><li><p>Hook examples: When a file changes, a command executes, or  a session starts</p><p></p></li></ul><blockquote><p><em><strong>In this issue, you will learn the fundamentals of why we need hooks, show you the hooks events, basic hooks examples, and advanced hooks patterns in real projects.</strong></em> </p></blockquote><p>I will take you from understanding basics to implementing production-ready automation. </p><p>You&#8217;ll master:</p><ul><li><p><em><strong>What hooks are and when they trigger</strong></em></p></li><li><p><em><strong>Hook types  </strong></em></p></li><li><p><em><strong>How to configure hooks in </strong></em><code>.claude/settings.json</code></p></li><li><p><em><strong>Exit codes and decision control</strong></em></p></li><li><p><em><strong>Production-ready hook patterns you can use</strong></em></p></li><li><p><em><strong>How hooks and CLAUDE.md work together</strong></em></p></li></ul><p>Let&#8217;s start with understanding the basics. </p><div><hr></div><h2>What Are Hooks?</h2><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!enSy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2a8c7ff-8bf1-41ee-b817-3c61aea0f62a_1016x586.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!enSy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2a8c7ff-8bf1-41ee-b817-3c61aea0f62a_1016x586.gif 424w, https://substackcdn.com/image/fetch/$s_!enSy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2a8c7ff-8bf1-41ee-b817-3c61aea0f62a_1016x586.gif 848w, https://substackcdn.com/image/fetch/$s_!enSy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2a8c7ff-8bf1-41ee-b817-3c61aea0f62a_1016x586.gif 1272w, https://substackcdn.com/image/fetch/$s_!enSy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2a8c7ff-8bf1-41ee-b817-3c61aea0f62a_1016x586.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!enSy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2a8c7ff-8bf1-41ee-b817-3c61aea0f62a_1016x586.gif" width="1016" height="586" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f2a8c7ff-8bf1-41ee-b817-3c61aea0f62a_1016x586.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:586,&quot;width&quot;:1016,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:258209,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/187703515?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2a8c7ff-8bf1-41ee-b817-3c61aea0f62a_1016x586.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!enSy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2a8c7ff-8bf1-41ee-b817-3c61aea0f62a_1016x586.gif 424w, https://substackcdn.com/image/fetch/$s_!enSy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2a8c7ff-8bf1-41ee-b817-3c61aea0f62a_1016x586.gif 848w, https://substackcdn.com/image/fetch/$s_!enSy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2a8c7ff-8bf1-41ee-b817-3c61aea0f62a_1016x586.gif 1272w, https://substackcdn.com/image/fetch/$s_!enSy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2a8c7ff-8bf1-41ee-b817-3c61aea0f62a_1016x586.gif 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 aria-hidden="true" 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><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>Hooks are <em><strong>event listeners</strong></em> for Claude Code&#8217;s workflow.</p><p>When Claude performs an action such as running a command, modifying a file, or starting a session, it fires events. Hooks <em><strong>listen for these events</strong></em> and execute automated responses. </p><blockquote><p><em><strong>Hooks are like middleware in a web framework, where a request comes in, middleware intercepts it, decides whether to allow it, modify it, or block it entirely.</strong></em></p></blockquote><p>In summary : </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!N-Ne!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff178f837-aded-4394-97de-2900ed9726b3_1056x366.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!N-Ne!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff178f837-aded-4394-97de-2900ed9726b3_1056x366.png 424w, https://substackcdn.com/image/fetch/$s_!N-Ne!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff178f837-aded-4394-97de-2900ed9726b3_1056x366.png 848w, https://substackcdn.com/image/fetch/$s_!N-Ne!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff178f837-aded-4394-97de-2900ed9726b3_1056x366.png 1272w, https://substackcdn.com/image/fetch/$s_!N-Ne!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff178f837-aded-4394-97de-2900ed9726b3_1056x366.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!N-Ne!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff178f837-aded-4394-97de-2900ed9726b3_1056x366.png" width="1056" height="366" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f178f837-aded-4394-97de-2900ed9726b3_1056x366.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:366,&quot;width&quot;:1056,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:17992,&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://newsletter.claudecodemasterclass.com/i/187703515?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff178f837-aded-4394-97de-2900ed9726b3_1056x366.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_!N-Ne!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff178f837-aded-4394-97de-2900ed9726b3_1056x366.png 424w, https://substackcdn.com/image/fetch/$s_!N-Ne!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff178f837-aded-4394-97de-2900ed9726b3_1056x366.png 848w, https://substackcdn.com/image/fetch/$s_!N-Ne!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff178f837-aded-4394-97de-2900ed9726b3_1056x366.png 1272w, https://substackcdn.com/image/fetch/$s_!N-Ne!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff178f837-aded-4394-97de-2900ed9726b3_1056x366.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 aria-hidden="true" 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><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>For our practical example, we will use a reference project: an <strong>AI PDF Chat &#8212; </strong>SaaS, where users upload PDFs and chat with the docs. </p><div class="pullquote"><p><em><strong>It&#8217;s a realistic project with real engineering challenges: file uploads, PDF parsing, vector embeddings, API rate limiting, and streaming chat responses.</strong></em></p></div><p>I will demonstrate each hook concept with <strong>AI PDF Chat project </strong>scenarios that mirror what you&#8217;d encounter 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_!V7a0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1d3a5f8-d1b2-4abe-afff-965f2b747e19_1683x903.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!V7a0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1d3a5f8-d1b2-4abe-afff-965f2b747e19_1683x903.gif 424w, https://substackcdn.com/image/fetch/$s_!V7a0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1d3a5f8-d1b2-4abe-afff-965f2b747e19_1683x903.gif 848w, https://substackcdn.com/image/fetch/$s_!V7a0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1d3a5f8-d1b2-4abe-afff-965f2b747e19_1683x903.gif 1272w, https://substackcdn.com/image/fetch/$s_!V7a0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1d3a5f8-d1b2-4abe-afff-965f2b747e19_1683x903.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!V7a0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1d3a5f8-d1b2-4abe-afff-965f2b747e19_1683x903.gif" width="1456" height="781" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a1d3a5f8-d1b2-4abe-afff-965f2b747e19_1683x903.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:781,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4756648,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/187703515?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1d3a5f8-d1b2-4abe-afff-965f2b747e19_1683x903.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!V7a0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1d3a5f8-d1b2-4abe-afff-965f2b747e19_1683x903.gif 424w, https://substackcdn.com/image/fetch/$s_!V7a0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1d3a5f8-d1b2-4abe-afff-965f2b747e19_1683x903.gif 848w, https://substackcdn.com/image/fetch/$s_!V7a0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1d3a5f8-d1b2-4abe-afff-965f2b747e19_1683x903.gif 1272w, https://substackcdn.com/image/fetch/$s_!V7a0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1d3a5f8-d1b2-4abe-afff-965f2b747e19_1683x903.gif 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 aria-hidden="true" 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><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>Here&#8217;s the project structure:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;68e80b8d-e0ee-43f9-95e1-756ee5e630f6&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">pdfchat/
&#9500;&#9472;&#9472; .claude/
&#9474;   &#9500;&#9472;&#9472; settings.json          # Where project hooks live
&#9474;   &#9492;&#9472;&#9472; hooks/                 # Custom hook scripts
&#9500;&#9472;&#9472; CLAUDE.md
&#9500;&#9472;&#9472; backend/
&#9474;   &#9500;&#9472;&#9472; api/
&#9474;   &#9474;   &#9500;&#9472;&#9472; auth.py
&#9474;   &#9474;   &#9500;&#9472;&#9472; documents.py       # PDF upload endpoints
&#9474;   &#9474;   &#9492;&#9472;&#9472; chat.py            # Chat endpoints
&#9474;   &#9500;&#9472;&#9472; services/
&#9474;   &#9474;   &#9500;&#9472;&#9472; pdf_parser.py      # Extract text from PDFs
&#9474;   &#9474;   &#9500;&#9472;&#9472; embeddings.py      # Chunk and embed content
&#9474;   &#9474;   &#9492;&#9472;&#9472; chat_engine.py     # RAG + LLM responses
&#9474;   &#9492;&#9472;&#9472; models/
&#9500;&#9472;&#9472; frontend/
&#9474;   &#9492;&#9472;&#9472; src/
&#9500;&#9472;&#9472; tests/
&#9492;&#9472;&#9472; requirements.txt</code></pre></div><p>Imagine you&#8217;ve <em><strong><a href="https://newsletter.claudecodemasterclass.com/p/claudemd-masterclass-from-start-to">written a perfect CLAUDE.md</a> </strong></em>for this AI PDF Chat project that includes these rules:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9sDx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2ccaa54-bf7d-455c-82cd-a316c418204c_909x442.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9sDx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2ccaa54-bf7d-455c-82cd-a316c418204c_909x442.gif 424w, https://substackcdn.com/image/fetch/$s_!9sDx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2ccaa54-bf7d-455c-82cd-a316c418204c_909x442.gif 848w, https://substackcdn.com/image/fetch/$s_!9sDx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2ccaa54-bf7d-455c-82cd-a316c418204c_909x442.gif 1272w, https://substackcdn.com/image/fetch/$s_!9sDx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2ccaa54-bf7d-455c-82cd-a316c418204c_909x442.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9sDx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2ccaa54-bf7d-455c-82cd-a316c418204c_909x442.gif" width="909" height="442" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a2ccaa54-bf7d-455c-82cd-a316c418204c_909x442.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:442,&quot;width&quot;:909,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:201709,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/187703515?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2ccaa54-bf7d-455c-82cd-a316c418204c_909x442.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!9sDx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2ccaa54-bf7d-455c-82cd-a316c418204c_909x442.gif 424w, https://substackcdn.com/image/fetch/$s_!9sDx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2ccaa54-bf7d-455c-82cd-a316c418204c_909x442.gif 848w, https://substackcdn.com/image/fetch/$s_!9sDx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2ccaa54-bf7d-455c-82cd-a316c418204c_909x442.gif 1272w, https://substackcdn.com/image/fetch/$s_!9sDx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2ccaa54-bf7d-455c-82cd-a316c418204c_909x442.gif 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 aria-hidden="true" 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><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><ul><li><p><em><strong>Always run tests after changing API endpoints</strong></em></p></li><li><p><em><strong>Never commit without formatting Python files</strong></em></p></li><li><p><em><strong>Check the database connection before starting work</strong></em></p></li><li><p><em><strong>Block direct edits to migration files</strong></em></p></li></ul><p>But there is a problem: </p><p><em><strong>Claude reads these rules and understands them, but still asks:</strong></em></p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;da94a673-1e32-41d7-b1cc-8c386a977b28&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">I've updated the chat endpoint. Would you like me to run the tests now?</code></pre></div><div class="pullquote"><p>The problem is we lack the enforcement to turn supervision into automation. Let&#8217;s visualize this problem : </p></div><p><strong>Without hooks:</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_!ZesU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e42a27b-eda3-4fb9-8714-d15351fa1c1d_455x847.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZesU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e42a27b-eda3-4fb9-8714-d15351fa1c1d_455x847.png 424w, https://substackcdn.com/image/fetch/$s_!ZesU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e42a27b-eda3-4fb9-8714-d15351fa1c1d_455x847.png 848w, https://substackcdn.com/image/fetch/$s_!ZesU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e42a27b-eda3-4fb9-8714-d15351fa1c1d_455x847.png 1272w, https://substackcdn.com/image/fetch/$s_!ZesU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e42a27b-eda3-4fb9-8714-d15351fa1c1d_455x847.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZesU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e42a27b-eda3-4fb9-8714-d15351fa1c1d_455x847.png" width="455" height="847" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2e42a27b-eda3-4fb9-8714-d15351fa1c1d_455x847.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:847,&quot;width&quot;:455,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:40926,&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://newsletter.claudecodemasterclass.com/i/187703515?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e42a27b-eda3-4fb9-8714-d15351fa1c1d_455x847.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_!ZesU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e42a27b-eda3-4fb9-8714-d15351fa1c1d_455x847.png 424w, https://substackcdn.com/image/fetch/$s_!ZesU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e42a27b-eda3-4fb9-8714-d15351fa1c1d_455x847.png 848w, https://substackcdn.com/image/fetch/$s_!ZesU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e42a27b-eda3-4fb9-8714-d15351fa1c1d_455x847.png 1272w, https://substackcdn.com/image/fetch/$s_!ZesU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e42a27b-eda3-4fb9-8714-d15351fa1c1d_455x847.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 aria-hidden="true" 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><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>With hooks:</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_!fi2-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd823c8b9-157f-4b0a-956a-19813dbeb8f9_643x642.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fi2-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd823c8b9-157f-4b0a-956a-19813dbeb8f9_643x642.png 424w, https://substackcdn.com/image/fetch/$s_!fi2-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd823c8b9-157f-4b0a-956a-19813dbeb8f9_643x642.png 848w, https://substackcdn.com/image/fetch/$s_!fi2-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd823c8b9-157f-4b0a-956a-19813dbeb8f9_643x642.png 1272w, https://substackcdn.com/image/fetch/$s_!fi2-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd823c8b9-157f-4b0a-956a-19813dbeb8f9_643x642.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fi2-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd823c8b9-157f-4b0a-956a-19813dbeb8f9_643x642.png" width="643" height="642" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d823c8b9-157f-4b0a-956a-19813dbeb8f9_643x642.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:642,&quot;width&quot;:643,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:45336,&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://newsletter.claudecodemasterclass.com/i/187703515?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd823c8b9-157f-4b0a-956a-19813dbeb8f9_643x642.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_!fi2-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd823c8b9-157f-4b0a-956a-19813dbeb8f9_643x642.png 424w, https://substackcdn.com/image/fetch/$s_!fi2-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd823c8b9-157f-4b0a-956a-19813dbeb8f9_643x642.png 848w, https://substackcdn.com/image/fetch/$s_!fi2-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd823c8b9-157f-4b0a-956a-19813dbeb8f9_643x642.png 1272w, https://substackcdn.com/image/fetch/$s_!fi2-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd823c8b9-157f-4b0a-956a-19813dbeb8f9_643x642.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 aria-hidden="true" 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><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>With hooks, we achieved zero manual intervention, reduced the steps, improved efficiency, and made the process faster.  </p><div class="pullquote"><p><em><strong>But hooks cannot work unless we anticipate where they will fire and enforce the action, so always remember &#8212; hooks are event-driven.</strong></em> </p></div><h3>Event-Driven Automation</h3><div><hr></div><p>Hooks operate on a <em><strong>trigger-and-response model</strong></em>. Each hook type responds to a specific event in Claude&#8217;s lifecycle.</p><p></p><h4 style="text-align: center;">Claude Code Hooks Lifecycle</h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NbgE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd14ecf9-3c99-4714-b9f7-117161ac6c21_1040x880.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NbgE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd14ecf9-3c99-4714-b9f7-117161ac6c21_1040x880.png 424w, https://substackcdn.com/image/fetch/$s_!NbgE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd14ecf9-3c99-4714-b9f7-117161ac6c21_1040x880.png 848w, https://substackcdn.com/image/fetch/$s_!NbgE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd14ecf9-3c99-4714-b9f7-117161ac6c21_1040x880.png 1272w, https://substackcdn.com/image/fetch/$s_!NbgE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd14ecf9-3c99-4714-b9f7-117161ac6c21_1040x880.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NbgE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd14ecf9-3c99-4714-b9f7-117161ac6c21_1040x880.png" width="1040" height="880" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fd14ecf9-3c99-4714-b9f7-117161ac6c21_1040x880.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:880,&quot;width&quot;:1040,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:60866,&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://newsletter.claudecodemasterclass.com/i/187703515?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd14ecf9-3c99-4714-b9f7-117161ac6c21_1040x880.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_!NbgE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd14ecf9-3c99-4714-b9f7-117161ac6c21_1040x880.png 424w, https://substackcdn.com/image/fetch/$s_!NbgE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd14ecf9-3c99-4714-b9f7-117161ac6c21_1040x880.png 848w, https://substackcdn.com/image/fetch/$s_!NbgE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd14ecf9-3c99-4714-b9f7-117161ac6c21_1040x880.png 1272w, https://substackcdn.com/image/fetch/$s_!NbgE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd14ecf9-3c99-4714-b9f7-117161ac6c21_1040x880.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 aria-hidden="true" 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><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>These are the events Claude fires:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qSLA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fded9744f-d7cb-4631-9e16-514bcc91dd9c_1048x857.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qSLA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fded9744f-d7cb-4631-9e16-514bcc91dd9c_1048x857.png 424w, https://substackcdn.com/image/fetch/$s_!qSLA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fded9744f-d7cb-4631-9e16-514bcc91dd9c_1048x857.png 848w, https://substackcdn.com/image/fetch/$s_!qSLA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fded9744f-d7cb-4631-9e16-514bcc91dd9c_1048x857.png 1272w, https://substackcdn.com/image/fetch/$s_!qSLA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fded9744f-d7cb-4631-9e16-514bcc91dd9c_1048x857.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qSLA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fded9744f-d7cb-4631-9e16-514bcc91dd9c_1048x857.png" width="1048" height="857" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ded9744f-d7cb-4631-9e16-514bcc91dd9c_1048x857.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:857,&quot;width&quot;:1048,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:91050,&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://newsletter.claudecodemasterclass.com/i/187703515?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fded9744f-d7cb-4631-9e16-514bcc91dd9c_1048x857.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_!qSLA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fded9744f-d7cb-4631-9e16-514bcc91dd9c_1048x857.png 424w, https://substackcdn.com/image/fetch/$s_!qSLA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fded9744f-d7cb-4631-9e16-514bcc91dd9c_1048x857.png 848w, https://substackcdn.com/image/fetch/$s_!qSLA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fded9744f-d7cb-4631-9e16-514bcc91dd9c_1048x857.png 1272w, https://substackcdn.com/image/fetch/$s_!qSLA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fded9744f-d7cb-4631-9e16-514bcc91dd9c_1048x857.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 aria-hidden="true" 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><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><blockquote><p><em><strong>But, you don&#8217;t need all hooks, for most projects 3-5 strategically placed hooks is all you need! </strong></em></p></blockquote><p>For AI PDFChat, we might use:</p><ul><li><p><em><strong>SessionStart</strong> - Check connections before work starts</em></p></li><li><p><em><strong>PreToolUse</strong> - Block dangerous operations on production config</em></p></li><li><p><em><strong>PostToolUse</strong> - Auto-format and test after code changes</em></p></li><li><p><em><strong>Notification </strong>- Desktop alert when Claude is waiting on you</em></p></li></ul><p>The next question is, <em><strong>how do these hooks fire? </strong></em></p><div><hr></div><h3>Hooks Execution</h3><div><hr></div><p>Hooks run as shell commands. </p><p><em><strong>When an event fires, Claude:</strong></em></p><ol><li><p><em>Checks your settings files for matching hooks</em></p></li><li><p><em>Executes the hook command (or multiple commands in parallel)</em></p></li><li><p><em>Reads the exit code and any JSON the hook printed</em></p></li><li><p><em>Decides what to do next based on the result</em></p></li></ol><blockquote><p><em><strong>You can see your existing hooks inside the </strong></em><code>.claude/settings.json</code></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_!em6T!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa205a704-7ff8-4b65-8599-2a104eaee46c_909x442.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!em6T!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa205a704-7ff8-4b65-8599-2a104eaee46c_909x442.gif 424w, https://substackcdn.com/image/fetch/$s_!em6T!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa205a704-7ff8-4b65-8599-2a104eaee46c_909x442.gif 848w, https://substackcdn.com/image/fetch/$s_!em6T!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa205a704-7ff8-4b65-8599-2a104eaee46c_909x442.gif 1272w, https://substackcdn.com/image/fetch/$s_!em6T!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa205a704-7ff8-4b65-8599-2a104eaee46c_909x442.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!em6T!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa205a704-7ff8-4b65-8599-2a104eaee46c_909x442.gif" width="909" height="442" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a205a704-7ff8-4b65-8599-2a104eaee46c_909x442.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:442,&quot;width&quot;:909,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:495064,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/187703515?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa205a704-7ff8-4b65-8599-2a104eaee46c_909x442.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!em6T!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa205a704-7ff8-4b65-8599-2a104eaee46c_909x442.gif 424w, https://substackcdn.com/image/fetch/$s_!em6T!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa205a704-7ff8-4b65-8599-2a104eaee46c_909x442.gif 848w, https://substackcdn.com/image/fetch/$s_!em6T!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa205a704-7ff8-4b65-8599-2a104eaee46c_909x442.gif 1272w, https://substackcdn.com/image/fetch/$s_!em6T!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa205a704-7ff8-4b65-8599-2a104eaee46c_909x442.gif 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 aria-hidden="true" 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><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>Here&#8217;s a simple PostToolUse hook that formats Python files:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;json&quot;,&quot;nodeId&quot;:&quot;4c3b3aaf-50ee-450e-bbc7-73fc31f09e2e&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-json">{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "if": "Edit(backend/**/*.py)",
            "command": "bash .claude/hooks/format_python.sh"
          }
        ]
      }
    ]
  }
}</code></pre></div><blockquote><p><strong>And the script, which reads the path from stdin:</strong></p></blockquote><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;8d35e381-8a7d-4188-8f11-fe80e0879474&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">#!/bin/bash
# .claude/hooks/format_python.sh
FILE=$(jq -r '.tool_input.file_path')
[[ "$FILE" == *.py ]] &amp;&amp; black "$FILE"
exit 0</code></pre></div><p><strong>Execution Steps:</strong></p><ul><li><p><em>Claude edits a Python file in </em><code>backend/</code></p></li><li><p><em>The </em><code>Edit</code><em> tool triggers</em></p></li><li><p><em>The matcher matches the tool name, and </em><code>if</code><em> narrows it to the path</em></p></li><li><p><em>The hook script runs </em><code>black</code></p></li><li><p><em>File gets formatted</em></p></li><li><p><em>Claude continues without asking</em></p></li></ul><p>Hooks also have types based on how they work, and it&#8217;s important to differentiate.</p><div><hr></div><h3>Command Hooks vs Prompt Hooks</h3><div><hr></div><p>The two hook handler types you'll use most are command hooks and prompt hooks.</p><p><strong>Command hooks</strong> execute bash commands:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;json&quot;,&quot;nodeId&quot;:&quot;8a333fc7-981e-4fe4-968a-f310182c627b&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-json">{
  "type": "command",
  "command": "bash .claude/hooks/format_python.sh"
}</code></pre></div><p><strong>Prompt hooks</strong> use Claude&#8217;s LLM to evaluate (advanced):</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;json&quot;,&quot;nodeId&quot;:&quot;52d43696-c761-4bb7-9e3f-62a929af3560&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-json">{
  "type": "prompt",
  "prompt": "Does this change affect user authentication? Respond with YES or NO."
}</code></pre></div><blockquote><p><em><strong>Prompt hooks are powerful but slower and cost more tokens. Most production hooks use commands.</strong></em></p></blockquote><p>For our AI PDF Chat project, we&#8217;ll stick with command hooks because they&#8217;re fast and deterministic.</p><blockquote><p><em><strong>Now that you understand hooks fire at specific triggers, the next question is: what is the process that a hook goes through before it stops &#8212;</strong>from start to finish? </em></p></blockquote><p>This is what we refer to as a <em><strong>hook lifecycle. </strong></em></p><p>Here&#8217;s what happens when you ask Claude to modify <code>backend/api/chat.py</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_!Od-Q!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F085bdf98-8fbf-4c05-b208-3dafc8f34656_797x953.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Od-Q!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F085bdf98-8fbf-4c05-b208-3dafc8f34656_797x953.png 424w, https://substackcdn.com/image/fetch/$s_!Od-Q!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F085bdf98-8fbf-4c05-b208-3dafc8f34656_797x953.png 848w, https://substackcdn.com/image/fetch/$s_!Od-Q!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F085bdf98-8fbf-4c05-b208-3dafc8f34656_797x953.png 1272w, https://substackcdn.com/image/fetch/$s_!Od-Q!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F085bdf98-8fbf-4c05-b208-3dafc8f34656_797x953.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Od-Q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F085bdf98-8fbf-4c05-b208-3dafc8f34656_797x953.png" width="797" height="953" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/085bdf98-8fbf-4c05-b208-3dafc8f34656_797x953.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:953,&quot;width&quot;:797,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:35794,&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://newsletter.claudecodemasterclass.com/i/187703515?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F085bdf98-8fbf-4c05-b208-3dafc8f34656_797x953.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_!Od-Q!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F085bdf98-8fbf-4c05-b208-3dafc8f34656_797x953.png 424w, https://substackcdn.com/image/fetch/$s_!Od-Q!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F085bdf98-8fbf-4c05-b208-3dafc8f34656_797x953.png 848w, https://substackcdn.com/image/fetch/$s_!Od-Q!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F085bdf98-8fbf-4c05-b208-3dafc8f34656_797x953.png 1272w, https://substackcdn.com/image/fetch/$s_!Od-Q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F085bdf98-8fbf-4c05-b208-3dafc8f34656_797x953.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 aria-hidden="true" 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><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>Multiple hooks can fire during a single interaction, and run in parallel when multiple hooks match the same event.</p><div><hr></div><h2>Complete Hook Lifecycle (Practical Examples) </h2><div><hr></div><p>Claude Code provides a variety of hooks. </p><blockquote><p><strong>Each one fires at a different point in the workflow. Understanding when each hook triggers is the key to effective automation.</strong></p></blockquote><p>Let&#8217;s walk through all the hook types in chronological order, following our project development 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_!lMru!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F612e3bed-73d9-4f41-9a48-22256c08827b_760x1114.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lMru!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F612e3bed-73d9-4f41-9a48-22256c08827b_760x1114.png 424w, https://substackcdn.com/image/fetch/$s_!lMru!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F612e3bed-73d9-4f41-9a48-22256c08827b_760x1114.png 848w, https://substackcdn.com/image/fetch/$s_!lMru!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F612e3bed-73d9-4f41-9a48-22256c08827b_760x1114.png 1272w, https://substackcdn.com/image/fetch/$s_!lMru!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F612e3bed-73d9-4f41-9a48-22256c08827b_760x1114.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lMru!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F612e3bed-73d9-4f41-9a48-22256c08827b_760x1114.png" width="760" height="1114" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/612e3bed-73d9-4f41-9a48-22256c08827b_760x1114.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1114,&quot;width&quot;:760,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:38923,&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://newsletter.claudecodemasterclass.com/i/187703515?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F612e3bed-73d9-4f41-9a48-22256c08827b_760x1114.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_!lMru!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F612e3bed-73d9-4f41-9a48-22256c08827b_760x1114.png 424w, https://substackcdn.com/image/fetch/$s_!lMru!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F612e3bed-73d9-4f41-9a48-22256c08827b_760x1114.png 848w, https://substackcdn.com/image/fetch/$s_!lMru!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F612e3bed-73d9-4f41-9a48-22256c08827b_760x1114.png 1272w, https://substackcdn.com/image/fetch/$s_!lMru!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F612e3bed-73d9-4f41-9a48-22256c08827b_760x1114.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 aria-hidden="true" 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><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><h3>1. Setup Hook</h3><p><strong>When it fires:</strong> The very first time Claude Code runs in a project directory.</p><p><strong>Runs:</strong> Once per project.</p><p><strong>Use case:</strong> Initialize project dependencies, create config files, and set up databases.</p><p>For our project, set up handles for first-time initialization:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;json&quot;,&quot;nodeId&quot;:&quot;0bab7218-8e7c-4f7b-9e01-a7974e44bf82&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-json">{
  "hooks": {
    "SessionStart": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "bash .claude/hooks/session_start.sh"
          }
        ]
      }
    ]
  }
}</code></pre></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!eOh6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd2550fc-0605-4dcc-9d33-c344b4b0d60d_1416x904.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!eOh6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd2550fc-0605-4dcc-9d33-c344b4b0d60d_1416x904.gif 424w, https://substackcdn.com/image/fetch/$s_!eOh6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd2550fc-0605-4dcc-9d33-c344b4b0d60d_1416x904.gif 848w, https://substackcdn.com/image/fetch/$s_!eOh6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd2550fc-0605-4dcc-9d33-c344b4b0d60d_1416x904.gif 1272w, https://substackcdn.com/image/fetch/$s_!eOh6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd2550fc-0605-4dcc-9d33-c344b4b0d60d_1416x904.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!eOh6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd2550fc-0605-4dcc-9d33-c344b4b0d60d_1416x904.gif" width="1416" height="904" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fd2550fc-0605-4dcc-9d33-c344b4b0d60d_1416x904.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:904,&quot;width&quot;:1416,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:198381,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/187703515?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd2550fc-0605-4dcc-9d33-c344b4b0d60d_1416x904.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!eOh6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd2550fc-0605-4dcc-9d33-c344b4b0d60d_1416x904.gif 424w, https://substackcdn.com/image/fetch/$s_!eOh6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd2550fc-0605-4dcc-9d33-c344b4b0d60d_1416x904.gif 848w, https://substackcdn.com/image/fetch/$s_!eOh6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd2550fc-0605-4dcc-9d33-c344b4b0d60d_1416x904.gif 1272w, https://substackcdn.com/image/fetch/$s_!eOh6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd2550fc-0605-4dcc-9d33-c344b4b0d60d_1416x904.gif 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 aria-hidden="true" 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><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 setup script:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;ea57a952-94de-402a-991a-346197dc7c51&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">#!/bin/bash
# .claude/hooks/setup.sh

# Create .env from template
if [ ! -f .env ]; then
  cp .env.example .env
  echo "Created .env file"
fi

# Install Python dependencies
pip install -r requirements.txt

# Initialize database
python -m alembic upgrade head # Runs alembic upgrade head which could apply migrations to the wrong database without meaning to

# Create uploads directory
mkdir -p storage/uploads

echo "PDFChat setup complete"</code></pre></div><p><strong>When you&#8217;d see this:</strong> The first time you run Claude Code in a freshly cloned  repo. </p><div class="pullquote"><p><strong>If you examine my script, I&#8217;ve added an instruction to create a </strong><code>.env</code><strong> file if it doesn&#8217;t exist. The hook calls this bash script automatically when a session starts.</strong></p></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!aC78!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97681640-601c-4918-bf1b-6b4698dada9c_923x955.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!aC78!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97681640-601c-4918-bf1b-6b4698dada9c_923x955.gif 424w, https://substackcdn.com/image/fetch/$s_!aC78!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97681640-601c-4918-bf1b-6b4698dada9c_923x955.gif 848w, https://substackcdn.com/image/fetch/$s_!aC78!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97681640-601c-4918-bf1b-6b4698dada9c_923x955.gif 1272w, https://substackcdn.com/image/fetch/$s_!aC78!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97681640-601c-4918-bf1b-6b4698dada9c_923x955.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!aC78!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97681640-601c-4918-bf1b-6b4698dada9c_923x955.gif" width="923" height="955" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/97681640-601c-4918-bf1b-6b4698dada9c_923x955.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:955,&quot;width&quot;:923,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:466305,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/187703515?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97681640-601c-4918-bf1b-6b4698dada9c_923x955.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!aC78!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97681640-601c-4918-bf1b-6b4698dada9c_923x955.gif 424w, https://substackcdn.com/image/fetch/$s_!aC78!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97681640-601c-4918-bf1b-6b4698dada9c_923x955.gif 848w, https://substackcdn.com/image/fetch/$s_!aC78!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97681640-601c-4918-bf1b-6b4698dada9c_923x955.gif 1272w, https://substackcdn.com/image/fetch/$s_!aC78!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97681640-601c-4918-bf1b-6b4698dada9c_923x955.gif 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 aria-hidden="true" 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><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>Here&#8217;s what happens:</p><ol><li><p><em>The </em><code>SessionStart</code><em> hook fires when Claude Code opens the project</em></p></li><li><p><em>The hook runs </em><code>.claude/hooks/setup.sh</code></p></li><li><p><em>The script checks if </em><code>.env</code><em> exists &#8212; if not, it copies from </em><code>.env.example</code></p></li><li><p><em>It also creates the </em><code>storage/uploads</code><em> directory for PDF uploads</em></p></li></ol><blockquote><p><em><strong>When I ran Claude Code for the first time in this project, the hook fired and created the </strong></em><code>.env</code><em><strong> file using the template I provided in the project root.</strong></em></p></blockquote><div><hr></div><h3>2. SessionStart Hook</h3><p><strong>When it fires:</strong> Every time you start a new Claude Code session.</p><p><strong>Runs:</strong> Once per session.</p><p><strong>Use case:</strong> Verify connections, check environment, validate prerequisites. </p><blockquote><p><strong>Whatever a SessionStart hook prints to stdout is added to Claude's context before your first message. That makes it the right place to inject live state: current branch, uncommitted files, which services are up.</strong></p></blockquote><p>For our project, SessionStart checks that critical services are available:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;json&quot;,&quot;nodeId&quot;:&quot;a30bf021-8fa9-4dd9-8784-41ccee1e2373&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-json">{
  "hooks": {
    "SessionStart": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "python .claude/hooks/session_start.py"
          }
        ]
      }
    ]
  }
}</code></pre></div><p>The session start script example for production:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;fcbb9beb-7707-4c27-a0f8-8e07b516d9e9&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python">#!/usr/bin/env python3
# .claude/hooks/session_start.py

import sys
import os
from sqlalchemy import create_engine
from pinecone import Pinecone

def check_database():
    """Verify PostgreSQL connection"""
    try:
        engine = create_engine(os.getenv('DATABASE_URL'))
        engine.connect()
        return True
    except Exception as e:
        print(f"Database connection failed: {e}")
        return False

def check_vector_db():
    """Verify Pinecone connection"""
    try:
        pc = Pinecone(api_key=os.getenv('PINECONE_API_KEY'))
        pc.list_indexes()
        return True
    except Exception as e:
        print(f"Pinecone connection failed: {e}")
        return False

def check_openai_key():
    """Verify OpenAI API key exists"""
    if not os.getenv('OPENAI_API_KEY'):
        print("OPENAI_API_KEY not set")
        return False
    return True

if __name__ == "__main__":
    checks = [
        check_database(),
        check_vector_db(),
        check_openai_key()
    ]
    
    if all(checks):
        print("All systems ready")
        sys.exit(0)
    else:
        print("Some services unavailable")
        sys.exit(0)  
</code></pre></div><p>For my test, I will run a simple script to check the environment on session start :</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vYkZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F952c768c-ee06-4aa6-a5ce-ba629845cdbd_923x955.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vYkZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F952c768c-ee06-4aa6-a5ce-ba629845cdbd_923x955.gif 424w, https://substackcdn.com/image/fetch/$s_!vYkZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F952c768c-ee06-4aa6-a5ce-ba629845cdbd_923x955.gif 848w, https://substackcdn.com/image/fetch/$s_!vYkZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F952c768c-ee06-4aa6-a5ce-ba629845cdbd_923x955.gif 1272w, https://substackcdn.com/image/fetch/$s_!vYkZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F952c768c-ee06-4aa6-a5ce-ba629845cdbd_923x955.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vYkZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F952c768c-ee06-4aa6-a5ce-ba629845cdbd_923x955.gif" width="923" height="955" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/952c768c-ee06-4aa6-a5ce-ba629845cdbd_923x955.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:955,&quot;width&quot;:923,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:454888,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/187703515?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F952c768c-ee06-4aa6-a5ce-ba629845cdbd_923x955.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!vYkZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F952c768c-ee06-4aa6-a5ce-ba629845cdbd_923x955.gif 424w, https://substackcdn.com/image/fetch/$s_!vYkZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F952c768c-ee06-4aa6-a5ce-ba629845cdbd_923x955.gif 848w, https://substackcdn.com/image/fetch/$s_!vYkZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F952c768c-ee06-4aa6-a5ce-ba629845cdbd_923x955.gif 1272w, https://substackcdn.com/image/fetch/$s_!vYkZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F952c768c-ee06-4aa6-a5ce-ba629845cdbd_923x955.gif 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 aria-hidden="true" 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><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 script verifies that:</p><ul><li><p><em>The </em><code>.env</code><em> file exists</em></p></li><li><p><em>Required API keys are configured</em></p></li><li><p><em>It logs the session start time for debuggin</em>g</p></li></ul><blockquote><p><em><strong>When you&#8217;d see this: Every time you open Claude Code. It runs before Claude processes your first message.</strong></em></p><p><strong>Note:</strong> SessionStart hooks should be fast, and network checks add startup latency</p></blockquote><div><hr></div><h3>3. UserPromptSubmit Hook</h3><p><strong>When it fires:</strong> Every time you send a message to Claude.</p><p><strong>Runs:</strong> Before Claude processes your request.</p><p><strong>Use case:</strong> Logging, context tracking, request validation.</p><p>For our project, we might log all requests for debugging:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;json&quot;,&quot;nodeId&quot;:&quot;f70d1c76-360d-4d12-9ac4-e78bd09e8590&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-json">{
  "hooks": {
    "UserPromptSubmit": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "bash .claude/hooks/log_prompt.sh"
          }
        ]
      }
    ]
  }
}</code></pre></div><p>For my test, I'll log every message I send to Claude. </p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;33f0480a-2b83-4b8e-98e2-d2c1d03055d4&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">#!/bin/bash
# .claude/hooks/log_prompt.sh
PROMPT=$(jq -r '.prompt')
echo "[$(date)] User: $PROMPT" &gt;&gt; .claude/conversation.log
exit 0</code></pre></div><p>This hook fires before Claude processes the request &#8212; useful for debugging or tracking conversation flow.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xJvl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ac924ea-64a6-4015-b2ed-19575dd664ae_923x955.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xJvl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ac924ea-64a6-4015-b2ed-19575dd664ae_923x955.gif 424w, https://substackcdn.com/image/fetch/$s_!xJvl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ac924ea-64a6-4015-b2ed-19575dd664ae_923x955.gif 848w, https://substackcdn.com/image/fetch/$s_!xJvl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ac924ea-64a6-4015-b2ed-19575dd664ae_923x955.gif 1272w, https://substackcdn.com/image/fetch/$s_!xJvl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ac924ea-64a6-4015-b2ed-19575dd664ae_923x955.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xJvl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ac924ea-64a6-4015-b2ed-19575dd664ae_923x955.gif" width="923" height="955" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0ac924ea-64a6-4015-b2ed-19575dd664ae_923x955.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:955,&quot;width&quot;:923,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:684386,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/187703515?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ac924ea-64a6-4015-b2ed-19575dd664ae_923x955.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!xJvl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ac924ea-64a6-4015-b2ed-19575dd664ae_923x955.gif 424w, https://substackcdn.com/image/fetch/$s_!xJvl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ac924ea-64a6-4015-b2ed-19575dd664ae_923x955.gif 848w, https://substackcdn.com/image/fetch/$s_!xJvl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ac924ea-64a6-4015-b2ed-19575dd664ae_923x955.gif 1272w, https://substackcdn.com/image/fetch/$s_!xJvl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ac924ea-64a6-4015-b2ed-19575dd664ae_923x955.gif 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 aria-hidden="true" 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><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>Quick Notes: </strong></p><ul><li><p>UserPromptSubmit hooks time out after 30 seconds. This hook blocks your prompt until it finishes, so keep it fast.</p></li></ul><ul><li><p>Anything a UserPromptSubmit hook prints to stdout is added to Claude's context alongside your message. Redirect to a file if you only want a log.</p></li></ul><blockquote><p><em><strong>Most projects don&#8217;t need this hook, but it&#8217;s invaluable when debugging complex workflows or tracking how long tasks take between prompts.</strong></em></p></blockquote><div><hr></div><h3>4. PreToolUse Hook</h3><p><strong>When it fires:</strong> Before Claude executes any tool <strong>(bash, edit, write, etc)</strong>.</p><p><strong>Runs:</strong> Every time a tool is about to execute.</p><p><strong>Use case:</strong> Block dangerous operations, validate inputs, and enforce policies.</p><p>For our project, PreToolUse prevents accidental edits to database migrations:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;json&quot;,&quot;nodeId&quot;:&quot;81976f74-9535-4a69-9cd5-67ea4f169993&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-json">{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "bash .claude/hooks/block_migrations.sh"
          }
        ]
      }
    ]
  }
}</code></pre></div><p>The blocking script:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;878db98d-c7e7-4e9b-8afc-be83c9e7eef8&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">#!/bin/bash
# .claude/hooks/block_migrations.sh
FILE=$(jq -r '.tool_input.file_path')

if [[ "$FILE" == *migrations/* ]]; then
  echo "Direct migration edits are blocked." &gt;&amp;2
  echo "Use: alembic revision --autogenerate -m 'description'" &gt;&amp;2
  exit 2
fi

exit 0
</code></pre></div><p>For my test, I'll block direct edits to migration files. The hook checks if the file path contains "migrations" and blocks the edit with exit code 2.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!G_1K!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb7a8a00-594a-4243-ab2b-7311b7ec6913_923x955.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!G_1K!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb7a8a00-594a-4243-ab2b-7311b7ec6913_923x955.gif 424w, https://substackcdn.com/image/fetch/$s_!G_1K!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb7a8a00-594a-4243-ab2b-7311b7ec6913_923x955.gif 848w, https://substackcdn.com/image/fetch/$s_!G_1K!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb7a8a00-594a-4243-ab2b-7311b7ec6913_923x955.gif 1272w, https://substackcdn.com/image/fetch/$s_!G_1K!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb7a8a00-594a-4243-ab2b-7311b7ec6913_923x955.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!G_1K!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb7a8a00-594a-4243-ab2b-7311b7ec6913_923x955.gif" width="923" height="955" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/db7a8a00-594a-4243-ab2b-7311b7ec6913_923x955.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:955,&quot;width&quot;:923,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:731579,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/187703515?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb7a8a00-594a-4243-ab2b-7311b7ec6913_923x955.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!G_1K!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb7a8a00-594a-4243-ab2b-7311b7ec6913_923x955.gif 424w, https://substackcdn.com/image/fetch/$s_!G_1K!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb7a8a00-594a-4243-ab2b-7311b7ec6913_923x955.gif 848w, https://substackcdn.com/image/fetch/$s_!G_1K!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb7a8a00-594a-4243-ab2b-7311b7ec6913_923x955.gif 1272w, https://substackcdn.com/image/fetch/$s_!G_1K!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb7a8a00-594a-4243-ab2b-7311b7ec6913_923x955.gif 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 aria-hidden="true" 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><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>When I asked Claude to edit <code>migrations/001_init.py</code> &#8212;the hook intercepted the request and blocked it. <br><br>Claude understood the restriction and suggested the correct workflow, using Alembic to generate migrations properly.</p><blockquote><p><em><strong>Claude tries to edit a migration file. Hook fires and Exit code 2 blocks it. Claude sees the error and suggests the correct approach. You would see this when you ask Claude to &#8220;fix that migration file,&#8221; and it tries to edit it directly.</strong></em></p></blockquote><div><hr></div><h3>5. PostToolUse Hook</h3><p><strong>When it fires:</strong> After Claude successfully executes a tool.</p><p><strong>Runs:</strong> Every time a tool completes.</p><p><strong>Use case:</strong> Auto-formatting, running tests, validation, and cleanup.</p><p>For our project, PostToolUse auto-formats Python files after any edit:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;json&quot;,&quot;nodeId&quot;:&quot;eb644cfd-ff38-489c-b75d-cc54769516c6&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-json">{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          { "type": "command", "command": "bash .claude/hooks/format_python.sh" }
        ]
      }
    ]
  }
}</code></pre></div><p>Script:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;json&quot;,&quot;nodeId&quot;:&quot;89032fab-9f97-4039-b8e6-7d1176f8110d&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-json">INPUT=$(cat)
FILE=$(echo "$INPUT" | grep -o '"file_path":"[^"]*"' | cut -d'"' -f4)
if [[ "$FILE" == *.py ]]; then
  black "$FILE" 2&gt;/dev/null
  echo "[$(date)] Formatted: $FILE" &gt;&gt; .claude/format.log
fi</code></pre></div><p>For my test, I'll auto-format Python files after every edit. The hook runs <code>black</code> on any Python file Claude creates or modifies.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VXmF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58167fe8-04ad-4dcd-a435-d76034b1bec6_923x955.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VXmF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58167fe8-04ad-4dcd-a435-d76034b1bec6_923x955.gif 424w, https://substackcdn.com/image/fetch/$s_!VXmF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58167fe8-04ad-4dcd-a435-d76034b1bec6_923x955.gif 848w, https://substackcdn.com/image/fetch/$s_!VXmF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58167fe8-04ad-4dcd-a435-d76034b1bec6_923x955.gif 1272w, https://substackcdn.com/image/fetch/$s_!VXmF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58167fe8-04ad-4dcd-a435-d76034b1bec6_923x955.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VXmF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58167fe8-04ad-4dcd-a435-d76034b1bec6_923x955.gif" width="923" height="955" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/58167fe8-04ad-4dcd-a435-d76034b1bec6_923x955.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:955,&quot;width&quot;:923,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:578935,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/187703515?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58167fe8-04ad-4dcd-a435-d76034b1bec6_923x955.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!VXmF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58167fe8-04ad-4dcd-a435-d76034b1bec6_923x955.gif 424w, https://substackcdn.com/image/fetch/$s_!VXmF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58167fe8-04ad-4dcd-a435-d76034b1bec6_923x955.gif 848w, https://substackcdn.com/image/fetch/$s_!VXmF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58167fe8-04ad-4dcd-a435-d76034b1bec6_923x955.gif 1272w, https://substackcdn.com/image/fetch/$s_!VXmF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58167fe8-04ad-4dcd-a435-d76034b1bec6_923x955.gif 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 aria-hidden="true" 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><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>I asked Claude to create a poorly formatted function: <code>def hello( x,y, z ): return x+y+z</code></p><blockquote><p><em><strong>The moment the file was written, the hook ran black and reformatted it : indentation, spacing, PEP 8 compliant. You would see this every time Claude edits a Python file in backend/. </strong></em></p></blockquote><div><hr></div><h3>6. Notification Hook</h3><p><strong>When it fires:</strong> When Claude wants to notify you of something.</p><p><strong>Runs:</strong> On informational events (not blocking).</p><p><strong>Use case:</strong> Send alerts to Slack, log important events, or trigger webhooks.</p><p>For PDFChat, we might alert when tests fail:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;json&quot;,&quot;nodeId&quot;:&quot;09774923-5742-4e85-b347-c8bf3687c9ba&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-json">{
  "hooks": {
    "Notification": [
      {
        "matcher": "permission_prompt|idle_prompt",
        "hooks": [
          { "type": "command", "command": "bash .claude/hooks/notify_slack.sh" }
        ]
      }
    ]
  }
}</code></pre></div><p>For my test, I tested logging every notification Claude Code sends. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rlFF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ef91c15-dc7f-4c02-b37c-e1b4a07abb8b_923x955.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rlFF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ef91c15-dc7f-4c02-b37c-e1b4a07abb8b_923x955.gif 424w, https://substackcdn.com/image/fetch/$s_!rlFF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ef91c15-dc7f-4c02-b37c-e1b4a07abb8b_923x955.gif 848w, https://substackcdn.com/image/fetch/$s_!rlFF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ef91c15-dc7f-4c02-b37c-e1b4a07abb8b_923x955.gif 1272w, https://substackcdn.com/image/fetch/$s_!rlFF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ef91c15-dc7f-4c02-b37c-e1b4a07abb8b_923x955.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rlFF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ef91c15-dc7f-4c02-b37c-e1b4a07abb8b_923x955.gif" width="923" height="955" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3ef91c15-dc7f-4c02-b37c-e1b4a07abb8b_923x955.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:955,&quot;width&quot;:923,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:613593,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/187703515?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ef91c15-dc7f-4c02-b37c-e1b4a07abb8b_923x955.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!rlFF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ef91c15-dc7f-4c02-b37c-e1b4a07abb8b_923x955.gif 424w, https://substackcdn.com/image/fetch/$s_!rlFF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ef91c15-dc7f-4c02-b37c-e1b4a07abb8b_923x955.gif 848w, https://substackcdn.com/image/fetch/$s_!rlFF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ef91c15-dc7f-4c02-b37c-e1b4a07abb8b_923x955.gif 1272w, https://substackcdn.com/image/fetch/$s_!rlFF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ef91c15-dc7f-4c02-b37c-e1b4a07abb8b_923x955.gif 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 aria-hidden="true" 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><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>Notifications fire when Claude needs permission, goes idle, or completes authentication.</p><blockquote><p><em><strong>You would use it for integrations like Slack alerts or desktop notifications when Claude is waiting for you.</strong></em></p></blockquote><div><hr></div><h3>7. PermissionRequest Hook</h3><p><strong>When it fires:</strong> When Claude needs explicit permission for an operation.</p><p><strong>Runs:</strong> On sensitive operations that require approval.</p><p><strong>Use case:</strong> Add additional validation before destructive actions.</p><p>A good example for our project: we require confirmation before deleting user documents:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;json&quot;,&quot;nodeId&quot;:&quot;69ff7d3e-cb30-4768-893c-7cecf74c036b&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-json">{
  "hooks": {
    "PermissionRequest": [
      {
        "matcher": "Bash",
        "hooks": [
          { "type": "command", "command": "bash .claude/hooks/guard_uploads.sh" }
        ]
      }
    ]
  }
}
</code></pre></div><p>When Claude tries to delete a PDF from user storage, you will see this hook in action. </p><blockquote><p><strong>For my test, I'll log every time Claude asks for permission. This fires when Claude needs approval for sensitive operations, such as running commands or deleting files.</strong></p></blockquote><p>I created a permission logger script, then asked Claude to do something requiring permission: <code>run ls -la</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_!eJ9-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75727f24-5567-42af-bbfa-9033be3eabb9_912x883.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!eJ9-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75727f24-5567-42af-bbfa-9033be3eabb9_912x883.gif 424w, https://substackcdn.com/image/fetch/$s_!eJ9-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75727f24-5567-42af-bbfa-9033be3eabb9_912x883.gif 848w, https://substackcdn.com/image/fetch/$s_!eJ9-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75727f24-5567-42af-bbfa-9033be3eabb9_912x883.gif 1272w, https://substackcdn.com/image/fetch/$s_!eJ9-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75727f24-5567-42af-bbfa-9033be3eabb9_912x883.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!eJ9-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75727f24-5567-42af-bbfa-9033be3eabb9_912x883.gif" width="912" height="883" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/75727f24-5567-42af-bbfa-9033be3eabb9_912x883.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:883,&quot;width&quot;:912,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:365437,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/187703515?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75727f24-5567-42af-bbfa-9033be3eabb9_912x883.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!eJ9-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75727f24-5567-42af-bbfa-9033be3eabb9_912x883.gif 424w, https://substackcdn.com/image/fetch/$s_!eJ9-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75727f24-5567-42af-bbfa-9033be3eabb9_912x883.gif 848w, https://substackcdn.com/image/fetch/$s_!eJ9-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75727f24-5567-42af-bbfa-9033be3eabb9_912x883.gif 1272w, https://substackcdn.com/image/fetch/$s_!eJ9-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75727f24-5567-42af-bbfa-9033be3eabb9_912x883.gif 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 aria-hidden="true" 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><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><blockquote><p><em><strong>You can use it to auto-approve certain operations, add extra validation before destructive actions, or log all permission requests for audit trails.</strong></em></p></blockquote><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;53215cda-7aa2-4742-bf28-765c71815599&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">#!/bin/bash
# Auto-approve read-only git commands
CMD=$(jq -r '.tool_input.command')

if [[ "$CMD" =~ ^git\ (status|log|diff|branch) ]]; then
  jq -n '{
    hookSpecificOutput: {
      hookEventName: "PermissionRequest",
      decision: { behavior: "allow" }
    }
  }'
fi

exit 0</code></pre></div><div><hr></div><h3>8. Stop Hook</h3><p><strong>When it fires:</strong> When Claude completes a task.</p><p><strong>Runs:</strong> At the end of Claude&#8217;s response.</p><p><strong>Use case:</strong> Generate summaries, update logs, clean up temp files.</p><p>For our project, we might summarize what changed:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;json&quot;,&quot;nodeId&quot;:&quot;557e27f4-3de9-46e5-a1ac-400491907ba6&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-json">{
  "hooks": {
    "Stop": [
      {
        "hooks": [
          { "type": "command", "command": "bash .claude/hooks/stop_logger.sh" }
        ]
      }
    ]
  }
}</code></pre></div><p>For my test, I'll log every time Claude completes a task.<br><br>The Stop hook fires when Claude finishes responding;  useful for summaries, cleanup, or triggering follow-up actions.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!R2Yt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4646d915-624f-4408-b386-e61c2fa51f65_923x955.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!R2Yt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4646d915-624f-4408-b386-e61c2fa51f65_923x955.gif 424w, https://substackcdn.com/image/fetch/$s_!R2Yt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4646d915-624f-4408-b386-e61c2fa51f65_923x955.gif 848w, https://substackcdn.com/image/fetch/$s_!R2Yt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4646d915-624f-4408-b386-e61c2fa51f65_923x955.gif 1272w, https://substackcdn.com/image/fetch/$s_!R2Yt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4646d915-624f-4408-b386-e61c2fa51f65_923x955.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!R2Yt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4646d915-624f-4408-b386-e61c2fa51f65_923x955.gif" width="923" height="955" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4646d915-624f-4408-b386-e61c2fa51f65_923x955.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:955,&quot;width&quot;:923,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:472458,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/187703515?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4646d915-624f-4408-b386-e61c2fa51f65_923x955.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!R2Yt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4646d915-624f-4408-b386-e61c2fa51f65_923x955.gif 424w, https://substackcdn.com/image/fetch/$s_!R2Yt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4646d915-624f-4408-b386-e61c2fa51f65_923x955.gif 848w, https://substackcdn.com/image/fetch/$s_!R2Yt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4646d915-624f-4408-b386-e61c2fa51f65_923x955.gif 1272w, https://substackcdn.com/image/fetch/$s_!R2Yt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4646d915-624f-4408-b386-e61c2fa51f65_923x955.gif 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 aria-hidden="true" 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><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><blockquote><p><em><strong>This would be useful after Claude finishes implementing a feature. You could extend this to generate git diffs, run a final test suite, or send a "task complete" notification to Slack.</strong></em></p></blockquote><p>Careful with Stop hooks. Exit 2 stops Claude from stopping and continues the turn. Check <code>stop_hook_active</code> in the hook input before returning a blocking exit, or you'll loop:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;68693f8e-5637-4df5-8cb5-b2446a6da2fd&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">ACTIVE=$(jq -r '.stop_hook_active')
[[ "$ACTIVE" == "true" ]] &amp;&amp; exit 0</code></pre></div><div><hr></div><h3>9. SubagentStop Hook</h3><p><strong>When it fires:</strong> When a subagent (parallel task) completes.</p><p><strong>Runs:</strong> After delegated tasks finish.</p><p><strong>Use case:</strong> Aggregate results, merge outputs, and clean up subagent artifacts.</p><p>When Claude delegates a codebase exploration to a subagent, SubagentStop lets you capture what it found before that context is discarded.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;json&quot;,&quot;nodeId&quot;:&quot;2cf1c7d6-f924-4828-a98f-4f9fd0d74d98&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-json">{
  "hooks": {
    "SubagentStop": [
      {
        "matcher": "Explore",
        "hooks": [
          { "type": "command", "command": "bash .claude/hooks/subagent_stop.sh" }
        ]
      }
    ]
  }
}</code></pre></div><p>For my test, I log the time when the subagent completes a 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_!5GQJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3680d3e-8eba-4825-afd3-6481c5292d8e_923x955.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5GQJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3680d3e-8eba-4825-afd3-6481c5292d8e_923x955.gif 424w, https://substackcdn.com/image/fetch/$s_!5GQJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3680d3e-8eba-4825-afd3-6481c5292d8e_923x955.gif 848w, https://substackcdn.com/image/fetch/$s_!5GQJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3680d3e-8eba-4825-afd3-6481c5292d8e_923x955.gif 1272w, https://substackcdn.com/image/fetch/$s_!5GQJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3680d3e-8eba-4825-afd3-6481c5292d8e_923x955.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5GQJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3680d3e-8eba-4825-afd3-6481c5292d8e_923x955.gif" width="923" height="955" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a3680d3e-8eba-4825-afd3-6481c5292d8e_923x955.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:955,&quot;width&quot;:923,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:705553,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/187703515?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3680d3e-8eba-4825-afd3-6481c5292d8e_923x955.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!5GQJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3680d3e-8eba-4825-afd3-6481c5292d8e_923x955.gif 424w, https://substackcdn.com/image/fetch/$s_!5GQJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3680d3e-8eba-4825-afd3-6481c5292d8e_923x955.gif 848w, https://substackcdn.com/image/fetch/$s_!5GQJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3680d3e-8eba-4825-afd3-6481c5292d8e_923x955.gif 1272w, https://substackcdn.com/image/fetch/$s_!5GQJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3680d3e-8eba-4825-afd3-6481c5292d8e_923x955.gif 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 aria-hidden="true" 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><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><blockquote><p><em><strong>You would use this when Claude processes multiple PDFs in parallel and needs to combine results.</strong></em></p></blockquote><div><hr></div><h4>10. SubagentStart Hook</h4><p>There's a matching <code>SubagentStart</code> event that fires when a subagent spawns</p><div><hr></div><h3>11. SessionEnd Hook</h3><p><strong>When it fires:</strong> When a session terminates: closing Claude Code, <code>/clear</code>, or logout</p><p><strong>Runs:</strong> Once, at session termination.</p><p><strong>Use case:</strong> Final cleanup, save logs, backup state.</p><p>For PDFChat, save the session transcript:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;json&quot;,&quot;nodeId&quot;:&quot;3ffaf6b7-1c6b-4b88-a754-f671fa6716e9&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-json">{
  "hooks": {
    "SessionEnd": [
      {
        "hooks": [
          { "type": "command", "command": "bash .claude/hooks/session_end.sh" }
        ]
      }
    ]
  }
}</code></pre></div><p><strong>Script Example : </strong></p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;bf211ea8-4d2e-4a28-94aa-29ab62b2e35d&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">#!/bin/bash
# .claude/hooks/session_end.sh
TRANSCRIPT=$(jq -r '.transcript_path')
mkdir -p .claude/backups
cp "$TRANSCRIPT" ".claude/backups/session_$(date +%s).jsonl"
exit 0</code></pre></div><p>For my test, I'll log when I close Claude Code. The SessionEnd hook fires once when the session terminates &#8212; perfect for cleanup and final logging.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5haX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca640003-7c8b-41d2-8b68-d9f7b33ec5c5_930x883.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5haX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca640003-7c8b-41d2-8b68-d9f7b33ec5c5_930x883.gif 424w, https://substackcdn.com/image/fetch/$s_!5haX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca640003-7c8b-41d2-8b68-d9f7b33ec5c5_930x883.gif 848w, https://substackcdn.com/image/fetch/$s_!5haX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca640003-7c8b-41d2-8b68-d9f7b33ec5c5_930x883.gif 1272w, https://substackcdn.com/image/fetch/$s_!5haX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca640003-7c8b-41d2-8b68-d9f7b33ec5c5_930x883.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5haX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca640003-7c8b-41d2-8b68-d9f7b33ec5c5_930x883.gif" width="930" height="883" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ca640003-7c8b-41d2-8b68-d9f7b33ec5c5_930x883.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:883,&quot;width&quot;:930,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:718270,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/187703515?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca640003-7c8b-41d2-8b68-d9f7b33ec5c5_930x883.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!5haX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca640003-7c8b-41d2-8b68-d9f7b33ec5c5_930x883.gif 424w, https://substackcdn.com/image/fetch/$s_!5haX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca640003-7c8b-41d2-8b68-d9f7b33ec5c5_930x883.gif 848w, https://substackcdn.com/image/fetch/$s_!5haX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca640003-7c8b-41d2-8b68-d9f7b33ec5c5_930x883.gif 1272w, https://substackcdn.com/image/fetch/$s_!5haX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca640003-7c8b-41d2-8b68-d9f7b33ec5c5_930x883.gif 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 aria-hidden="true" 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><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><blockquote><p><em><strong>When I </strong></em><code>/exit</code><em><strong> or close Claude Code, this hook runs. You can use it to backup the session transcript, save final state, or log total session time. </strong></em></p></blockquote><div><hr></div><p>But as I mentioned earlier, you do not need all these hooks in one project. For our project, the most useful hooks are: </p><ol><li><p><strong>SessionStart</strong> - Verify services are ready</p></li><li><p><strong>PreToolUse</strong> - Block dangerous operations</p></li><li><p><strong>PostToolUse</strong> - Auto-format and test</p></li><li><p><strong>UserPromptSubmit</strong> - Inject live context into every prompt</p></li><li><p><strong>Stop</strong> - Summarize changes</p></li></ol><blockquote><p><em><strong>The others exist for specialized use cases. For your start, I recommend these five.</strong></em></p></blockquote><p>The next step: when you need to run more than one hook at a time, you apply <em><strong>parallel execution.</strong></em> </p><div><hr></div><h2>Parallel Execution</h2><div><hr></div><p>This is useful when multiple hooks match the same event; they all run in parallel. For our project, I can run these two hooks in parallel :</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;json&quot;,&quot;nodeId&quot;:&quot;12f9ce19-aa20-4b7a-a379-8f307cee48d5&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-json">{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          { "type": "command", "command": "bash .claude/hooks/format_python.sh" },
          { "type": "command", "command": "bash .claude/hooks/lint_python.sh" }
        ]
      }
    ]
  }
}
</code></pre></div><p>Both hooks fire simultaneously after editing a Python file.</p><blockquote><p><em><strong>Next, let&#8217;s look at the hooks configuration syntax and how to write these hooks in </strong></em><code>.claude/settings.json</code><em><strong>.</strong></em></p></blockquote><p>Identical handlers are automatically deduplicated: command hooks by command string; HTTP hooks by URL. <em>If two settings files register the same hook, the hook runs only once.</em></p><div><hr></div><h2>Hook Configuration Anatomy</h2><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RiJz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d000e8e-3e13-4da2-b3b0-bdfcb0f70b76_1044x722.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RiJz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d000e8e-3e13-4da2-b3b0-bdfcb0f70b76_1044x722.png 424w, https://substackcdn.com/image/fetch/$s_!RiJz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d000e8e-3e13-4da2-b3b0-bdfcb0f70b76_1044x722.png 848w, https://substackcdn.com/image/fetch/$s_!RiJz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d000e8e-3e13-4da2-b3b0-bdfcb0f70b76_1044x722.png 1272w, https://substackcdn.com/image/fetch/$s_!RiJz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d000e8e-3e13-4da2-b3b0-bdfcb0f70b76_1044x722.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RiJz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d000e8e-3e13-4da2-b3b0-bdfcb0f70b76_1044x722.png" width="1044" height="722" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0d000e8e-3e13-4da2-b3b0-bdfcb0f70b76_1044x722.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:722,&quot;width&quot;:1044,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:33725,&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://newsletter.claudecodemasterclass.com/i/187703515?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d000e8e-3e13-4da2-b3b0-bdfcb0f70b76_1044x722.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_!RiJz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d000e8e-3e13-4da2-b3b0-bdfcb0f70b76_1044x722.png 424w, https://substackcdn.com/image/fetch/$s_!RiJz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d000e8e-3e13-4da2-b3b0-bdfcb0f70b76_1044x722.png 848w, https://substackcdn.com/image/fetch/$s_!RiJz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d000e8e-3e13-4da2-b3b0-bdfcb0f70b76_1044x722.png 1272w, https://substackcdn.com/image/fetch/$s_!RiJz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d000e8e-3e13-4da2-b3b0-bdfcb0f70b76_1044x722.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 aria-hidden="true" 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><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>Hooks come from six places:</p><ul><li><p><code>~/.claude/settings.json</code>  &#8212; All your projects</p></li><li><p><code>.claude/settings.json</code>  &#8212; This project, committed</p></li><li><p><code>.claude/settings.local.json</code> &#8212;This project, gitignored</p></li><li><p><code>Managed policy settings</code> &#8212;Organization-wide</p></li><li><p><code>Plugin hooks/hooks.json </code>&#8212;While the plugin is enabled</p></li><li><p><code>Skill or agent frontmatter</code> &#8212; While that component is active</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_!L8y0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff80a2382-806a-4033-8bc6-2a9940ca5c5b_1368x660.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!L8y0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff80a2382-806a-4033-8bc6-2a9940ca5c5b_1368x660.gif 424w, https://substackcdn.com/image/fetch/$s_!L8y0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff80a2382-806a-4033-8bc6-2a9940ca5c5b_1368x660.gif 848w, https://substackcdn.com/image/fetch/$s_!L8y0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff80a2382-806a-4033-8bc6-2a9940ca5c5b_1368x660.gif 1272w, https://substackcdn.com/image/fetch/$s_!L8y0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff80a2382-806a-4033-8bc6-2a9940ca5c5b_1368x660.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!L8y0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff80a2382-806a-4033-8bc6-2a9940ca5c5b_1368x660.gif" width="1368" height="660" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f80a2382-806a-4033-8bc6-2a9940ca5c5b_1368x660.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:660,&quot;width&quot;:1368,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:284120,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/187703515?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff80a2382-806a-4033-8bc6-2a9940ca5c5b_1368x660.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!L8y0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff80a2382-806a-4033-8bc6-2a9940ca5c5b_1368x660.gif 424w, https://substackcdn.com/image/fetch/$s_!L8y0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff80a2382-806a-4033-8bc6-2a9940ca5c5b_1368x660.gif 848w, https://substackcdn.com/image/fetch/$s_!L8y0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff80a2382-806a-4033-8bc6-2a9940ca5c5b_1368x660.gif 1272w, https://substackcdn.com/image/fetch/$s_!L8y0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff80a2382-806a-4033-8bc6-2a9940ca5c5b_1368x660.gif 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 aria-hidden="true" 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><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><div class="pullquote"><p style="text-align: justify;"><code>/hooks</code><em> opens a read-only browser showing every configured hook, its type, and which file it came from. </em></p></div><p>The best example of hooks is those that in <code>.claude/settings.json.</code></p><blockquote><p><strong>This file is located in your project root and defines every hook Claude Code will execute; this is the best place to begin learning how to write your custom hooks. </strong></p></blockquote><p>Let&#8217;s break down the configuration syntax so you can write your own hooks confidently.</p><blockquote><p><strong>To master the hooks syntax, you need to understand these six things : </strong></p></blockquote><ul><li><p><em>Basic structure</em></p></li><li><p><em>Matcher object </em></p></li><li><p><em>Matcher Fields </em></p></li><li><p><em>Path Patterns </em></p></li><li><p><em>Environmental variables</em></p></li><li><p><em>Timeout configuration</em></p></li></ul><p>Let&#8217;s cover each with an example: </p><div><hr></div><h3>1. Basic Structure</h3><div><hr></div><p>Here&#8217;s what <code>.claude/settings.json</code> looks like for our project:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;json&quot;,&quot;nodeId&quot;:&quot;5c85d2d7-6752-4fbf-84ff-e547495e4a1b&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-json">{
  "hooks": {
    "SessionStart": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "bash .claude/hooks/session_start.sh"
          }
        ]
      }
    ]
  }
}</code></pre></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!YNZ4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7fe2699-abe3-4e30-820e-a0f5a3a44a6a_909x517.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YNZ4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7fe2699-abe3-4e30-820e-a0f5a3a44a6a_909x517.gif 424w, https://substackcdn.com/image/fetch/$s_!YNZ4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7fe2699-abe3-4e30-820e-a0f5a3a44a6a_909x517.gif 848w, https://substackcdn.com/image/fetch/$s_!YNZ4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7fe2699-abe3-4e30-820e-a0f5a3a44a6a_909x517.gif 1272w, https://substackcdn.com/image/fetch/$s_!YNZ4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7fe2699-abe3-4e30-820e-a0f5a3a44a6a_909x517.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YNZ4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7fe2699-abe3-4e30-820e-a0f5a3a44a6a_909x517.gif" width="909" height="517" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d7fe2699-abe3-4e30-820e-a0f5a3a44a6a_909x517.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:517,&quot;width&quot;:909,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:187178,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/187703515?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7fe2699-abe3-4e30-820e-a0f5a3a44a6a_909x517.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!YNZ4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7fe2699-abe3-4e30-820e-a0f5a3a44a6a_909x517.gif 424w, https://substackcdn.com/image/fetch/$s_!YNZ4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7fe2699-abe3-4e30-820e-a0f5a3a44a6a_909x517.gif 848w, https://substackcdn.com/image/fetch/$s_!YNZ4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7fe2699-abe3-4e30-820e-a0f5a3a44a6a_909x517.gif 1272w, https://substackcdn.com/image/fetch/$s_!YNZ4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7fe2699-abe3-4e30-820e-a0f5a3a44a6a_909x517.gif 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 aria-hidden="true" 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><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>Every hook configuration has three levels:</p><ul><li><p><strong>The event name</strong> &#8212; the key under <code>hooks</code>, like <code>PreToolUse</code> or <code>Stop</code></p></li><li><p><strong>A matcher group</strong> &#8212; filters when it fires</p></li><li><p><strong>One or more handlers</strong> &#8212; each with a <code>type</code> (<code>command</code>, <code>http</code>, <code>mcp_tool</code>, <code>prompt</code>, <code>agent</code>) and what to run</p></li></ul><div><hr></div><h3>2. Matcher Object</h3><div><hr></div><blockquote><p><em><strong>Matchers filter when hooks execute. Without a matcher, the hook fires on every instance of that event type. With a matcher, it only fires when conditions match.</strong></em></p></blockquote><p>For our project, we only want to format Python files when they're edited or written:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;json&quot;,&quot;nodeId&quot;:&quot;a43b1ddb-55ef-4c90-9080-5234ce977505&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-json">{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "bash .claude/hooks/format_python.sh"
          }
        ]
      }
    ]
  }
}</code></pre></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4eBR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62ae7302-5926-4aed-8b44-7cc24484546e_909x517.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4eBR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62ae7302-5926-4aed-8b44-7cc24484546e_909x517.gif 424w, https://substackcdn.com/image/fetch/$s_!4eBR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62ae7302-5926-4aed-8b44-7cc24484546e_909x517.gif 848w, https://substackcdn.com/image/fetch/$s_!4eBR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62ae7302-5926-4aed-8b44-7cc24484546e_909x517.gif 1272w, https://substackcdn.com/image/fetch/$s_!4eBR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62ae7302-5926-4aed-8b44-7cc24484546e_909x517.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4eBR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62ae7302-5926-4aed-8b44-7cc24484546e_909x517.gif" width="909" height="517" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/62ae7302-5926-4aed-8b44-7cc24484546e_909x517.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:517,&quot;width&quot;:909,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:144312,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/187703515?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62ae7302-5926-4aed-8b44-7cc24484546e_909x517.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!4eBR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62ae7302-5926-4aed-8b44-7cc24484546e_909x517.gif 424w, https://substackcdn.com/image/fetch/$s_!4eBR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62ae7302-5926-4aed-8b44-7cc24484546e_909x517.gif 848w, https://substackcdn.com/image/fetch/$s_!4eBR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62ae7302-5926-4aed-8b44-7cc24484546e_909x517.gif 1272w, https://substackcdn.com/image/fetch/$s_!4eBR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62ae7302-5926-4aed-8b44-7cc24484546e_909x517.gif 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 aria-hidden="true" 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><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>The hook fires only when:</strong></p><ul><li><p>Tool is <code>Edit or Write (not Bash, Read, etc.)</code></p></li></ul><p><strong>Note:</strong> To filter by file path, your script reads the JSON input from stdin and checks the path itself; there's no <code>pathPattern</code> field in the matcher.</p><div><hr></div><h3>3. Matcher Fields</h3><div><hr></div><p>Different hook types support different matchers :</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9Kpj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae6a7abe-bc49-4e6a-89d9-8286020b3d35_912x517.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9Kpj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae6a7abe-bc49-4e6a-89d9-8286020b3d35_912x517.gif 424w, https://substackcdn.com/image/fetch/$s_!9Kpj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae6a7abe-bc49-4e6a-89d9-8286020b3d35_912x517.gif 848w, https://substackcdn.com/image/fetch/$s_!9Kpj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae6a7abe-bc49-4e6a-89d9-8286020b3d35_912x517.gif 1272w, https://substackcdn.com/image/fetch/$s_!9Kpj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae6a7abe-bc49-4e6a-89d9-8286020b3d35_912x517.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9Kpj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae6a7abe-bc49-4e6a-89d9-8286020b3d35_912x517.gif" width="912" height="517" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ae6a7abe-bc49-4e6a-89d9-8286020b3d35_912x517.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:517,&quot;width&quot;:912,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:437596,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/187703515?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae6a7abe-bc49-4e6a-89d9-8286020b3d35_912x517.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!9Kpj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae6a7abe-bc49-4e6a-89d9-8286020b3d35_912x517.gif 424w, https://substackcdn.com/image/fetch/$s_!9Kpj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae6a7abe-bc49-4e6a-89d9-8286020b3d35_912x517.gif 848w, https://substackcdn.com/image/fetch/$s_!9Kpj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae6a7abe-bc49-4e6a-89d9-8286020b3d35_912x517.gif 1272w, https://substackcdn.com/image/fetch/$s_!9Kpj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae6a7abe-bc49-4e6a-89d9-8286020b3d35_912x517.gif 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 aria-hidden="true" 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><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>For PreToolUse and PostToolUse:</strong></p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;json&quot;,&quot;nodeId&quot;:&quot;320797ee-579b-459c-b8a6-0254f149ba33&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-json">{
  "matcher": "Edit|Write"
}
</code></pre></div><p>Matches tool names: <code>Edit</code>, <code>Write</code>, <code>Bash</code>, <code>Read</code>, <code>Glob</code>, <code>Grep</code>, <code>Task</code>, <code>NotebookEdit</code>, <code>WebFetch</code>, <code>WebSearch</code></p><p><strong>For Notification:</strong></p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;json&quot;,&quot;nodeId&quot;:&quot;caafb106-12ab-47cf-b937-a31f3995b490&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-json">{
  "matcher": "permission_prompt"
}</code></pre></div><p>Matches notification types: <code>permission_prompt, idle_prompt, auth_success, elicitation_dialog,elicitation_complete</code>, <code>elicitation_response</code>, <code>agent_needs_input</code>, <code>agent_completed</code></p><p><strong>For SessionStart:</strong></p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;1d088c6c-e280-4863-b082-449658cfd2ce&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">{
  "matcher": "startup|resume"
}</code></pre></div><p>Matches how the session started: <code>startup, resume, clear, compact </code>and <code>fork</code> (a session forked from another).</p><p><strong>For SessionEnd:</strong></p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;bcc4663c-c3b6-4249-a4cd-18386696c2c5&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">{
  "matcher": "clear|logout"
}</code></pre></div><p>Matches why the session ended: <code>clear, resume, logout, prompt_input_exit, bypass_permissions_disabled</code> and <code>other</code>.</p><div><hr></div><h4>How a Matcher is Evaluated </h4><p>How the matcher is read depends on what's in it:</p><ul><li><p><code>*, "", or omitted: </code>Matches everything</p></li><li><p><code>Letters, digits, _, -, spaces, ,, | : </code>Exact string, or a list &#8212; <code>Edit|Write</code> matches either</p></li><li><p><code>Anything else</code> : A regular expression, unanchored</p></li></ul><p><strong>Two things to watch:</strong></p><ul><li><p><code>Edit.*</code><em> also matches </em><code>NotebookEdit</code><em>, so anchor it as </em><code>^Edit$</code><em> if you mean only Edit.</em></p></li><li><p><em>And matching every tool from an MCP server needs the </em><code>.*</code><em> &#8212; </em><code>mcp__memory</code><em> matches nothing, </em><code>mcp__memory__.*</code><em> matches all of them</em></p></li></ul><p><strong>Some event ignore matchers: </strong></p><ul><li><p><code>UserPromptSubmit</code>, <code>Stop</code>, <code>PostToolBatch</code>, <code>MessageDisplay</code>, <code>CwdChanged</code>, <code>TaskCreated</code>, <code>TaskCompleted</code>, <code>WorktreeCreate</code> and <code>WorktreeRemove</code> don't support matchers.</p></li></ul><div><hr></div><h3>4. Path Patterns (Globs)</h3><div><hr></div><p>Path patterns use glob syntax to match files. </p><p>However, <em><strong>path filtering happens inside your script</strong></em>, not in the matcher field. The matcher only filters by tool name.</p><blockquote><p><em><strong>Here are the patterns you&#8217;ll use most with examples:</strong></em></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_!Zyy6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73990d8d-36b3-4639-8e9f-6c6f7d46fabc_1554x809.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Zyy6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73990d8d-36b3-4639-8e9f-6c6f7d46fabc_1554x809.png 424w, https://substackcdn.com/image/fetch/$s_!Zyy6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73990d8d-36b3-4639-8e9f-6c6f7d46fabc_1554x809.png 848w, https://substackcdn.com/image/fetch/$s_!Zyy6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73990d8d-36b3-4639-8e9f-6c6f7d46fabc_1554x809.png 1272w, https://substackcdn.com/image/fetch/$s_!Zyy6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73990d8d-36b3-4639-8e9f-6c6f7d46fabc_1554x809.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Zyy6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73990d8d-36b3-4639-8e9f-6c6f7d46fabc_1554x809.png" width="1456" height="758" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/73990d8d-36b3-4639-8e9f-6c6f7d46fabc_1554x809.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:758,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:72401,&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://newsletter.claudecodemasterclass.com/i/187703515?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73990d8d-36b3-4639-8e9f-6c6f7d46fabc_1554x809.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_!Zyy6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73990d8d-36b3-4639-8e9f-6c6f7d46fabc_1554x809.png 424w, https://substackcdn.com/image/fetch/$s_!Zyy6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73990d8d-36b3-4639-8e9f-6c6f7d46fabc_1554x809.png 848w, https://substackcdn.com/image/fetch/$s_!Zyy6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73990d8d-36b3-4639-8e9f-6c6f7d46fabc_1554x809.png 1272w, https://substackcdn.com/image/fetch/$s_!Zyy6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73990d8d-36b3-4639-8e9f-6c6f7d46fabc_1554x809.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 aria-hidden="true" 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><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>For our project, filtering by path in the script:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;json&quot;,&quot;nodeId&quot;:&quot;114f2f06-d8e5-427c-a9f1-e5d758316b0d&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-json">#!/bin/bash
# .claude/hooks/format_by_path.sh

INPUT=$(cat)
FILE=$(echo "$INPUT" | grep -o '"file_path":"[^"]*"' | cut -d'"' -f4)

# Match backend/**/*.py
if [[ "$FILE" == *"backend/"* &amp;&amp; "$FILE" == *.py ]]; then
  black "$FILE"
fi

# Match migrations/**/*.py - block with exit 2
if [[ "$FILE" == *"migrations/"* &amp;&amp; "$FILE" == *.py ]]; then
  echo "Use alembic instead" &gt;&amp;2
  exit 2
fi

# Match frontend/**/*.js or frontend/**/*.jsx
if [[ "$FILE" == *"frontend/"* &amp;&amp; ("$FILE" == *.js || "$FILE" == *.jsx) ]]; then
  prettier --write "$FILE"
fi

exit 0</code></pre></div><div><hr></div><h3>5. Environment Variables</h3><div><hr></div><p>Hooks have access to special environment variables:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cu23!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e32215f-ff24-4d8a-b243-a70fec0ba4de_1366x745.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cu23!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e32215f-ff24-4d8a-b243-a70fec0ba4de_1366x745.png 424w, https://substackcdn.com/image/fetch/$s_!cu23!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e32215f-ff24-4d8a-b243-a70fec0ba4de_1366x745.png 848w, https://substackcdn.com/image/fetch/$s_!cu23!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e32215f-ff24-4d8a-b243-a70fec0ba4de_1366x745.png 1272w, https://substackcdn.com/image/fetch/$s_!cu23!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e32215f-ff24-4d8a-b243-a70fec0ba4de_1366x745.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cu23!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e32215f-ff24-4d8a-b243-a70fec0ba4de_1366x745.png" width="1366" height="745" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3e32215f-ff24-4d8a-b243-a70fec0ba4de_1366x745.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:745,&quot;width&quot;:1366,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:73615,&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://newsletter.claudecodemasterclass.com/i/187703515?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e32215f-ff24-4d8a-b243-a70fec0ba4de_1366x745.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_!cu23!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e32215f-ff24-4d8a-b243-a70fec0ba4de_1366x745.png 424w, https://substackcdn.com/image/fetch/$s_!cu23!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e32215f-ff24-4d8a-b243-a70fec0ba4de_1366x745.png 848w, https://substackcdn.com/image/fetch/$s_!cu23!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e32215f-ff24-4d8a-b243-a70fec0ba4de_1366x745.png 1272w, https://substackcdn.com/image/fetch/$s_!cu23!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e32215f-ff24-4d8a-b243-a70fec0ba4de_1366x745.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 aria-hidden="true" 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><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>For our project, SessionStart hook:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;json&quot;,&quot;nodeId&quot;:&quot;1a5e35c9-075f-4b5d-827e-c8927ae08f65&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-json">{
  "hooks": {
    "SessionStart": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "cd ${CLAUDE_PROJECT_DIR} &amp;&amp; python .claude/hooks/session_start.py"
          }
        ]
      }
    ]
  }
}</code></pre></div><p>For PostToolUse hooks, the file path arrives on stdin. Read it in your script:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;ad2a6f7a-d3f6-441b-9c60-33533c1f4b25&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">#!/bin/bash
# .claude/hooks/format_python.sh
FILE=$(jq -r '.tool_input.file_path')
black "$FILE" &amp;&amp; pylint "$FILE"
exit 0</code></pre></div><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;json&quot;,&quot;nodeId&quot;:&quot;e19caee2-1e49-4f47-8ded-1587931df56c&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-json">{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "bash .claude/hooks/format_python.sh"
          }
        ]
      }
    ]
  }
}</code></pre></div><p>So far, we&#8217;ve only used command-type hooks, which execute bash commands.</p><blockquote><p><em><strong>As I mentioned earlier, there are also prompt-type hooks . Here is a simple example: </strong></em></p></blockquote><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;json&quot;,&quot;nodeId&quot;:&quot;f3a0df9b-9380-44c4-8cc2-cb63c193c0c0&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-json">{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "prompt",
            "if": "Edit(backend/models/**/*.py)",
            "prompt": "Does this change alter the database schema? If yes, block it and tell the user to generate a migration instead."
          }
        ]
      }
    ]
  }
}</code></pre></div><ol><li><p><em>Hook fires</em></p></li><li><p><em>Claude analyzes the change using the prompt</em></p></li><li><p><em>Claude responds YES or NO</em></p></li><li><p><em>Appropriate commands run based on the response</em></p></li></ol><div><hr></div><h3>6. Timeout Configuration</h3><div><hr></div><p>By default, hooks timeout after 600 seconds. For most projects that's long &#8212; but for slow operations you may want to cap it sooner or raise it :</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;json&quot;,&quot;nodeId&quot;:&quot;4d9538db-cb03-4ef8-b791-dd6166b1fefa&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-json">{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "pytest tests/",
            "timeout": 300
          }
        ]
      }
    ]
  }
}</code></pre></div><p>This caps the test suite at 5 minutes.</p><p><em><strong>We can implement this in our project&#8217;s embedding tests (which can be slow):</strong></em></p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;json&quot;,&quot;nodeId&quot;:&quot;243a9618-d058-482a-af22-2c3ea006054f&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-json">{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "if": "Edit(backend/services/embeddings.py)",
            "command": "pytest tests/test_embeddings.py -v",
            "timeout": 180
          }
        ]
      }
    ]
  }
}</code></pre></div><div><hr></div><h2> Decision Control</h2><div><hr></div><p>Hooks don&#8217;t just run commands. They make decisions that control what Claude does next.</p><blockquote><p><em><strong>Every hook returns an exit code. That exit code tells Claude whether to proceed, block, or handle the situation differently.</strong></em></p></blockquote><p></p><h3>Exit Codes: The Control Mechanism</h3><p>When a hook finishes executing, it returns an exit code. <em><strong>Only 0 and 2 are special</strong></em>: any other value is a non-blocking error.</p><p> Claude reads this code and acts accordingly.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8OGJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ce1a206-2ec7-4221-ba95-e467770e1077_958x936.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8OGJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ce1a206-2ec7-4221-ba95-e467770e1077_958x936.png 424w, https://substackcdn.com/image/fetch/$s_!8OGJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ce1a206-2ec7-4221-ba95-e467770e1077_958x936.png 848w, https://substackcdn.com/image/fetch/$s_!8OGJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ce1a206-2ec7-4221-ba95-e467770e1077_958x936.png 1272w, https://substackcdn.com/image/fetch/$s_!8OGJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ce1a206-2ec7-4221-ba95-e467770e1077_958x936.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8OGJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ce1a206-2ec7-4221-ba95-e467770e1077_958x936.png" width="958" height="936" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1ce1a206-2ec7-4221-ba95-e467770e1077_958x936.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:936,&quot;width&quot;:958,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:70137,&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://newsletter.claudecodemasterclass.com/i/187703515?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ce1a206-2ec7-4221-ba95-e467770e1077_958x936.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_!8OGJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ce1a206-2ec7-4221-ba95-e467770e1077_958x936.png 424w, https://substackcdn.com/image/fetch/$s_!8OGJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ce1a206-2ec7-4221-ba95-e467770e1077_958x936.png 848w, https://substackcdn.com/image/fetch/$s_!8OGJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ce1a206-2ec7-4221-ba95-e467770e1077_958x936.png 1272w, https://substackcdn.com/image/fetch/$s_!8OGJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ce1a206-2ec7-4221-ba95-e467770e1077_958x936.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 aria-hidden="true" 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><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><blockquote><p><strong>For PDFChat, this is how we enforce it.</strong></p></blockquote><h4>Exit Code 0: Allow</h4><p>Exit code 0 means <strong>&#8220;everything is fine, proceed.&#8221;</strong></p><p>For a SessionStart hook that checks database connectivity:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;abdb9200-b710-47f2-ae37-7c4b663c7332&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">#!/bin/bash
# .claude/hooks/session_start.sh

# Check if PostgreSQL is running
pg_isready -h localhost -p 5432

if [ $? -eq 0 ]; then
  echo "Database connected"
  exit 0  # Allow session to continue
else
  echo "Database not running"
  exit 0  # Still allow (just warn)
fi</code></pre></div><p><strong>What happens:</strong> Hook runs, prints status, session continues regardless. Useful for informational checks.</p><h4>Exit Code 2: Deny</h4><p>Exit code 2 means <strong>&#8220;block this operation.&#8221;</strong></p><p>For PDFChat, we never want Claude editing migration files directly:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;a6dccd08-f308-410b-8f86-e901088da14c&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">#!/bin/bash
# .claude/hooks/block_migrations.sh

echo "Direct migration edits are blocked." &gt;&amp;2
echo "Use: alembic revision --autogenerate -m 'description'" &gt;&amp;2
exit 2</code></pre></div><p>Hook configuration:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;json&quot;,&quot;nodeId&quot;:&quot;29a817dd-4473-45bd-8407-8e5797d2b7ba&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-json">{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "if": "Bash(rm *)",
            "command": "bash .claude/hooks/protect_uploads.sh"
          }
        ]
      }
    ]
  }
}</code></pre></div><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;36920e62-721a-474f-afbd-b6892fb73236&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">#!/bin/bash
CMD=$(jq -r '.tool_input.command')
if [[ "$CMD" == *storage/uploads* ]]; then
  echo "Cannot delete user uploads directly." &gt;&amp;2
  echo "Use: python scripts/cleanup_uploads.py --safe" &gt;&amp;2
  exit 2
fi
exit 0</code></pre></div><p><strong>What happens:</strong> Claude tries to edit a migration file. Hook fires. Exit code 2 blocks it. Claude sees the error message and suggests an alternative. </p><div><hr></div><h3>Conditional Logic in Hooks</h3><p>Use exit codes to implement smart decisions.</p><p>For PDFChat, only run tests if the change affects API logic:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;38625da5-95bd-439e-a0b7-13a5c996eda6&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">#!/bin/bash
FILE=$(jq -r '.tool_input.file_path')

if [[ "$FILE" == *backend/api/* || "$FILE" == *backend/services/* ]]; then
  pytest tests/ -v || {
    echo "Tests failed after editing $FILE" &gt;&amp;2
    exit 2
  }
fi
exit 0</code></pre></div><p><strong>What happens:</strong> Edit a config file? No tests. Edit the chat API? Tests run. Hook decides dynamically.</p><div><hr></div><h3>Chaining Decisions</h3><p>Use <code>&amp;&amp;</code> and <code>||</code> for sequential logic. If any step fails, the chain stops.</p><p>For PDFChat, ensure formatting succeeds before testing:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;697fae4a-c470-494b-a2e9-d8d862fd87f3&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">#!/bin/bash
# .claude/hooks/format_and_test.sh
FILE=$(jq -r '.tool_input.file_path')

black "$FILE" &amp;&amp; pytest tests/api/ -v || {
  echo "Pipeline failed on $FILE" &gt;&amp;2
  exit 2
}

exit 0</code></pre></div><p></p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;json&quot;,&quot;nodeId&quot;:&quot;e60094ac-850a-43b9-a0d5-5857fb5e1119&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-json">{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "if": "Edit(backend/api/**/*.py)",
            "command": "bash .claude/hooks/format_and_test.sh"
          }
        ]
      }
    ]
  }
}</code></pre></div><p><strong>What happens:</strong> Black formats the file. If formatting fails, pytest never runs. The error goes to Claude via stderr so it knows what to fix.</p><div><hr></div><h3>JSON Responses (Advanced)</h3><p>Some hooks can return JSON for richer control: allowing, denying, escalating to you, or rewriting a tool&#8217;s arguments. This is the way to go beyond a simple block.</p><p>The rule is simple: <strong>always exit 0 when returning JSON. The JSON carries the decision, not the exit code.</strong></p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;json&quot;,&quot;nodeId&quot;:&quot;2db8b888-8352-4455-b7fc-fa3152250b79&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-json">{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "if": "Edit(backend/models/**/*.py)",
            "command": "python .claude/hooks/validate_change.py"
          }
        ]
      }
    ]
  }
}</code></pre></div><p>Example script:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;56d2cff2-678b-47ae-b80f-4c3d1379cd44&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python">#!/usr/bin/env python3
import json
import sys

is_safe = validate_operation()

if is_safe:
    sys.exit(0)  # No decision needed &#8212; normal permission flow continues

# Deny and tell Claude why
print(json.dumps({
    "hookSpecificOutput": {
        "hookEventName": "PreToolUse",
        "permissionDecision": "deny",
        "permissionDecisionReason": "This change affects the database schema. Generate a migration with: alembic revision --autogenerate -m 'description'"
    }
}))

sys.exit(0)  # Exit 0 &#8212; the JSON carries the deny decision</code></pre></div><blockquote><p><code>permissionDecision</code><strong> accepts four values: </strong><code>allow</code><strong>, </strong><code>deny</code><strong>, </strong><code>ask</code><strong> (escalate to you), and </strong><code>defer</code><strong> (pass to the next hook).</strong></p></blockquote><p>Claude reads the reason and knows what to do instead.</p><div><hr></div><h3>Key Takeaways</h3><p>Exit codes are how hooks enforce decisions:</p><ul><li><p><strong>0 = Success</strong> &#8212; no decision, unless your JSON says otherwise</p></li><li><p><strong>2 = Block</strong> &#8212; stderr is sent back to Claude</p></li><li><p><strong>Anything else</strong> &#8212; a non-blocking error. The action still happens</p></li></ul><p><strong>For PDFChat:</strong></p><ul><li><p><em>Use <strong>exit 2</strong> to protect migrations, uploads, production files</em></p></li><li><p><em>Use exit 0 for informational hooks (logging, notifications)</em></p></li><li><p><em>Put your error message on <strong>stderr</strong>;  that&#8217;s the only channel Claude reads</em></p></li></ul><p>Next, we&#8217;ll look at production-ready hook patterns you can copy directly into PDFChat.</p><div><hr></div><h2>Production Hook Patterns</h2><div><hr></div><p>The PDFChat examples in this issue are a starting point. </p><blockquote><p><strong>In production, hooks are the  automation layer that runs your entire engineering workflow:  formatting, testing, protecting, alerting, and much more.</strong></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_!7Si2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90125c78-5255-471c-9fcc-1b9ed2b76b47_1064x1080.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7Si2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90125c78-5255-471c-9fcc-1b9ed2b76b47_1064x1080.png 424w, https://substackcdn.com/image/fetch/$s_!7Si2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90125c78-5255-471c-9fcc-1b9ed2b76b47_1064x1080.png 848w, https://substackcdn.com/image/fetch/$s_!7Si2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90125c78-5255-471c-9fcc-1b9ed2b76b47_1064x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!7Si2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90125c78-5255-471c-9fcc-1b9ed2b76b47_1064x1080.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7Si2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90125c78-5255-471c-9fcc-1b9ed2b76b47_1064x1080.png" width="1064" height="1080" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/90125c78-5255-471c-9fcc-1b9ed2b76b47_1064x1080.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1080,&quot;width&quot;:1064,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:48439,&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://newsletter.claudecodemasterclass.com/i/187703515?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90125c78-5255-471c-9fcc-1b9ed2b76b47_1064x1080.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_!7Si2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90125c78-5255-471c-9fcc-1b9ed2b76b47_1064x1080.png 424w, https://substackcdn.com/image/fetch/$s_!7Si2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90125c78-5255-471c-9fcc-1b9ed2b76b47_1064x1080.png 848w, https://substackcdn.com/image/fetch/$s_!7Si2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90125c78-5255-471c-9fcc-1b9ed2b76b47_1064x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!7Si2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90125c78-5255-471c-9fcc-1b9ed2b76b47_1064x1080.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 aria-hidden="true" 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><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>Any rule your team currently enforces through code review, documentation, or habit can become a hook.</p><div class="pullquote"><p><em>Here are the five categories that cover most production use cases:</em></p></div><h3>1. Enforce Team Standards</h3><p>If your team has a rule in a doc or gets caught in PR review, it belongs in a hook.</p><ul><li><p><em>A fintech team runs security linting on every file that touches payment logic</em></p></li><li><p><em>A data team enforces schema validation before any model file is saved</em></p></li><li><p><em>An agency enforces client-specific coding conventions per project</em></p></li></ul><blockquote><p><strong>Hook type:</strong> PostToolUse: runs after every edit, before Claude moves on</p></blockquote><div><hr></div><h3>2. Protect Sensitive Files </h3><p>Some files and operations should never happen. Production configs, database migrations, generated code, deployment scripts.</p><ul><li><p><em>Block direct edits to migration files and tell Claude to use the migration tool instead</em></p></li><li><p><em>Prevent any write to </em><code>.env.production</code><em> outside a deployment pipeline</em></p></li><li><p><em>Stop </em><code>rm -rf</code><em> commands that target anything outside a temp directory</em></p></li></ul><blockquote><p><strong>Hook type:</strong> PreToolUse:  intercepts before the action happens</p></blockquote><div><hr></div><h3>3. Gate Expensive Operations</h3><p>When an action costs money or triggers external services, a hook can check conditions before it runs.</p><ul><li><p><em>Check today&#8217;s OpenAI token spend before running a large embedding job</em></p></li><li><p><em>Verify the staging environment is healthy before running an integration test suite</em></p></li><li><p><em>Block API calls to third-party services when a rate limit is approaching</em></p></li></ul><blockquote><p><strong>Hook type:</strong> PreToolUse with exit 2:  blocks and gives Claude a reason</p></blockquote><div><hr></div><h3>4. Inject Live Context</h3><p> Claude starts every session already knowing things it can&#8217;t see in your codebase.</p><ul><li><p><em>Which services are up or down</em></p></li><li><p><em>What&#8217;s been deployed since the last session</em></p></li><li><p><em>Current branch, open PRs, failing CI jobs</em></p></li><li><p><em>Outstanding tickets assigned to you</em></p></li></ul><blockquote><p><strong>Hook type:</strong> SessionStart:  runs once, shapes the whole session</p></blockquote><div><hr></div><h3>5. Close the Feedback Loop</h3><p>Claude edits a file and doesn&#8217;t know if the tests passed, the build broke, or the linter found issues. PostToolUse can fix this behaviour: </p><ul><li><p><em>Run the affected test file after every code change</em></p></li><li><p><em>Check the build after modifying a config</em></p></li><li><p><em>Validate an API response schema after editing an endpoint</em></p></li></ul><blockquote><p><strong>Hook type:</strong> PostToolUse &#8212; turns Claude from a one-shot editor into one that sees consequences</p></blockquote><div class="pullquote"><p style="text-align: justify;">The full scripts for the PDFChat patterns are in the companion repo, organised by section. Use them as a starting point to learn and customize them to fit your needs. </p></div><p>As I mentioned in the previous Claude.MD issue, hooks and CLAUDE.md work together to build on the Claude Code complete automation system. </p><div><hr></div><h2> Hooks + CLAUDE.md</h2><div><hr></div><p>CLAUDE.md defines the rules, and hooks enforce them.</p><blockquote><p><em><strong>Together, they create a self-documenting, self-enforcing development environment. Claude knows what to do and can&#8217;t deviate from it.</strong></em></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_!0CAY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6a774ce-f92a-4dd7-953b-25f5fcf9b6fb_961x1085.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0CAY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6a774ce-f92a-4dd7-953b-25f5fcf9b6fb_961x1085.png 424w, https://substackcdn.com/image/fetch/$s_!0CAY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6a774ce-f92a-4dd7-953b-25f5fcf9b6fb_961x1085.png 848w, https://substackcdn.com/image/fetch/$s_!0CAY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6a774ce-f92a-4dd7-953b-25f5fcf9b6fb_961x1085.png 1272w, https://substackcdn.com/image/fetch/$s_!0CAY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6a774ce-f92a-4dd7-953b-25f5fcf9b6fb_961x1085.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0CAY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6a774ce-f92a-4dd7-953b-25f5fcf9b6fb_961x1085.png" width="961" height="1085" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f6a774ce-f92a-4dd7-953b-25f5fcf9b6fb_961x1085.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1085,&quot;width&quot;:961,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:69510,&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://newsletter.claudecodemasterclass.com/i/187703515?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6a774ce-f92a-4dd7-953b-25f5fcf9b6fb_961x1085.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_!0CAY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6a774ce-f92a-4dd7-953b-25f5fcf9b6fb_961x1085.png 424w, https://substackcdn.com/image/fetch/$s_!0CAY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6a774ce-f92a-4dd7-953b-25f5fcf9b6fb_961x1085.png 848w, https://substackcdn.com/image/fetch/$s_!0CAY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6a774ce-f92a-4dd7-953b-25f5fcf9b6fb_961x1085.png 1272w, https://substackcdn.com/image/fetch/$s_!0CAY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6a774ce-f92a-4dd7-953b-25f5fcf9b6fb_961x1085.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 aria-hidden="true" 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><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>In the last Masterclass issue, we covered CLAUDE.md;  the file that gives Claude persistent memory of your project and defines how it should behave.</p><p>CLAUDE.md only tells Claude what to do; it doesn&#8217;t make sure it happens.  </p><blockquote><p><strong>Hooks are the enforcement layer. Since their introduction, they have become the core step towards building a complete Claude Code automated system. </strong></p></blockquote><div><hr></div><h2>Final Thoughts</h2><p>Hooks are the feature that takes you from Level 2 to Level 3 on the mastery scale from Issue #1. </p><blockquote><p><strong>You now have the thing that puts you ahead of 90% of Claude Code users: automation that runs without asking.</strong></p></blockquote><p><strong>Key takeaways:</strong></p><ul><li><p>Hooks are event listeners; they fire at specific points in Claude&#8217;s workflow, not on a schedule</p></li><li><p>Exit 2 blocks. Exit 1 does not, even though it&#8217;s the conventional Unix failure code</p></li><li><p>The file path arrives on stdin; read it with <code>jq</code>. There is no <code>${filePath}</code></p></li><li><p>Most projects need 3&#8211;5 hooks. Start with auto-format, session checks, and protected files</p></li><li><p>SessionStart stdout goes directly into Claude&#8217;s context; use it to inject live state</p></li><li><p>PreToolUse prevents. PostToolUse reacts. Know which one you need before you write the hook</p></li><li><p>CLAUDE.md sets the rules while Hooks enforces them</p></li></ul><div class="pullquote"><p style="text-align: center;">In the next Masterclass issue, we'll cover Subagents: how to delegate entire tasks to Claude, coordinate parallel work, and build an AI team that operates around your codebase.</p></div><h3>Resources</h3><p>The companion repo for this issue is now live. </p><p>Every hook, every script, and the complete settings.json are organised by section: copy what you need and drop it into <code>.claude/hooks/</code></p><p>For this issue, the repo includes:</p><ul><li><p>All seven production hook scripts</p></li><li><p>The complete <code>.claude/settings.json</code> for PDFChat</p></li><li><p>The event reference table</p></li><li><p>A starter three-hook config you can add to any project in five minutes</p></li></ul><div><hr></div><h2>Support Our Newsletter </h2><div class="callout-block" data-callout="true"><p>Be the first to support this newsletter </p><ul><li><p>Get the scripts from this issue, tested and ready to run</p></li><li><p>Access all future premium newsletters </p></li><li><p>Early access to upcoming course (14 modules) free when it launches: $297 on its own</p></li><li><p>Version-break alerts when a Claude Code release breaks a config</p></li><li><p>Access our private community </p></li><li><p>Join all upcoming live cohorts</p></li></ul><p><strong><mark data-color="#ffffff" style="background-color: rgb(255, 255, 255); color: rgb(0, 0, 0);">$80/year |  $8/month |</mark></strong><mark data-color="#ffffff" style="background-color: rgb(255, 255, 255); color: rgb(0, 0, 0);"> </mark><strong><mark data-color="#ffffff" style="background-color: rgb(255, 255, 255); color: rgb(0, 0, 0);">$150 /year</mark></strong><mark data-color="#ffffff" style="background-color: rgb(255, 255, 255); color: rgb(0, 0, 0);"> </mark><strong><mark data-color="#ffffff" style="background-color: rgb(255, 255, 255); color: rgb(0, 0, 0);">Founding Members (Limited Slots) </mark></strong></p><h2>&#8594;<span> </span><strong><a href="https://pro.claudecodemasterclass.com/l/pro"><span data-color="#d97706" style="color: rgb(217, 119, 6);">Join Claude Code Masterclass Pro</span></a></strong></h2></div><div><hr></div><h3>Next: Coming Up Issues</h3><p>The next issues in this Masterclass Series will cover:</p><ul><li><p><strong>Claude Code Subagents Masterclass</strong> &#8212; Building your AI team</p></li><li><p><strong>Claude Code MCP Masterclass</strong> &#8212; Extending Claude&#8217;s capabilities</p></li><li><p><strong>Claude Code in Production</strong> &#8212; CI/CD, team configuration, enterprise deployment</p></li></ul><p>Your hooks are the automation layer, while subagents are the delegation layer. Both take your setup towards a complete autonomous development pipeline.  </p><div><hr></div><p><strong>What&#8217;s the first hook you wrote?</strong></p><p>Reply to this email and tell me. I&#8217;ll share the most interesting ones in a future issue.</p><div class="pullquote"><p><em><strong>Finally, this newsletter belongs to all of us. If there&#8217;s something that can make it better or something you don&#8217;t like, please let me know.</strong></em></p><p style="text-align: center;"><em><strong>See you in the next one.</strong></em></p></div><h1 style="text-align: center;"><strong>Claude Code Masterclass</strong></h1><p style="text-align: center;"><span>Let&#8217;s Build It Together</span></p><p style="text-align: center;"><span>&#8212; </span><strong>Joe Njenga</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_!00yc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a58f838-9e5d-459c-91d4-e0598593b7cf_1478x780.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!00yc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a58f838-9e5d-459c-91d4-e0598593b7cf_1478x780.png 424w, https://substackcdn.com/image/fetch/$s_!00yc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a58f838-9e5d-459c-91d4-e0598593b7cf_1478x780.png 848w, https://substackcdn.com/image/fetch/$s_!00yc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a58f838-9e5d-459c-91d4-e0598593b7cf_1478x780.png 1272w, https://substackcdn.com/image/fetch/$s_!00yc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a58f838-9e5d-459c-91d4-e0598593b7cf_1478x780.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!00yc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a58f838-9e5d-459c-91d4-e0598593b7cf_1478x780.png" width="1456" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1a58f838-9e5d-459c-91d4-e0598593b7cf_1478x780.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:62678,&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://newsletter.claudecodemasterclass.com/i/187703515?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a58f838-9e5d-459c-91d4-e0598593b7cf_1478x780.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_!00yc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a58f838-9e5d-459c-91d4-e0598593b7cf_1478x780.png 424w, https://substackcdn.com/image/fetch/$s_!00yc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a58f838-9e5d-459c-91d4-e0598593b7cf_1478x780.png 848w, https://substackcdn.com/image/fetch/$s_!00yc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a58f838-9e5d-459c-91d4-e0598593b7cf_1478x780.png 1272w, https://substackcdn.com/image/fetch/$s_!00yc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a58f838-9e5d-459c-91d4-e0598593b7cf_1478x780.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 aria-hidden="true" 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><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><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.claudecodemasterclass.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 Claude Code Masterclass! 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>]]></content:encoded></item><item><title><![CDATA[Last Week In Claude Code #4 — Fable 5, Sonnet 5, Background Subagents & More ]]></title><description><![CDATA[Catch-Up Cumulative Updates Edition]]></description><link>https://newsletter.claudecodemasterclass.com/p/last-week-in-claude-code-4-catch</link><guid isPermaLink="false">https://newsletter.claudecodemasterclass.com/p/last-week-in-claude-code-4-catch</guid><dc:creator><![CDATA[Joe]]></dc:creator><pubDate>Tue, 21 Jul 2026 18:36:15 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!uVCH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94a5995a-dc1b-47b1-b612-fed316966c5a_1200x600.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_!uVCH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94a5995a-dc1b-47b1-b612-fed316966c5a_1200x600.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uVCH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94a5995a-dc1b-47b1-b612-fed316966c5a_1200x600.png 424w, https://substackcdn.com/image/fetch/$s_!uVCH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94a5995a-dc1b-47b1-b612-fed316966c5a_1200x600.png 848w, https://substackcdn.com/image/fetch/$s_!uVCH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94a5995a-dc1b-47b1-b612-fed316966c5a_1200x600.png 1272w, https://substackcdn.com/image/fetch/$s_!uVCH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94a5995a-dc1b-47b1-b612-fed316966c5a_1200x600.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uVCH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94a5995a-dc1b-47b1-b612-fed316966c5a_1200x600.png" width="1200" height="600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/94a5995a-dc1b-47b1-b612-fed316966c5a_1200x600.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:600,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:172275,&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://newsletter.claudecodemasterclass.com/i/207942281?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94a5995a-dc1b-47b1-b612-fed316966c5a_1200x600.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_!uVCH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94a5995a-dc1b-47b1-b612-fed316966c5a_1200x600.png 424w, https://substackcdn.com/image/fetch/$s_!uVCH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94a5995a-dc1b-47b1-b612-fed316966c5a_1200x600.png 848w, https://substackcdn.com/image/fetch/$s_!uVCH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94a5995a-dc1b-47b1-b612-fed316966c5a_1200x600.png 1272w, https://substackcdn.com/image/fetch/$s_!uVCH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94a5995a-dc1b-47b1-b612-fed316966c5a_1200x600.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 aria-hidden="true" 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><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>Hello, thank you for being part of our Claude Code Masterclass community.</p><p><em><strong>We are now 78k members; it&#8217;s unbelievable</strong></em>, and I am grateful for every one of you.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.claudecodemasterclass.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 Claude Code Masterclass! 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>Last Week In Claude Code is back.</p><div class="pullquote"><p><em><strong>I have been heads down building the ultimate masterclass course, and I owe you continued updates; let's keep this going. </strong></em></p></div><p>The good news is that Claude Code has matured a lot since last issue. </p><p>The pace of breaking changes has slowed, workflows are more stable, and the updates that have shipped are mostly features you layer on top of what already works.</p><p>This issue covers everything significant that was released since Issue #3: <em>late June through mid-July 2026.</em></p><blockquote><p><em><strong>I have tested what matters, skipped trivial additions or fixes,  and organized it so you can get up to speed fast.</strong></em></p></blockquote><div><hr></div><h2><strong>What Happened: Last Few Weeks?</strong></h2><div><hr></div><h2>#1) Claude Fable 5 &#8212; The Most Capable Model Anthropic Has Ever Released to the Public</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VvSN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5404dcd-7f4a-4c93-9092-1d39a025366b_1364x846.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VvSN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5404dcd-7f4a-4c93-9092-1d39a025366b_1364x846.gif 424w, https://substackcdn.com/image/fetch/$s_!VvSN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5404dcd-7f4a-4c93-9092-1d39a025366b_1364x846.gif 848w, https://substackcdn.com/image/fetch/$s_!VvSN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5404dcd-7f4a-4c93-9092-1d39a025366b_1364x846.gif 1272w, https://substackcdn.com/image/fetch/$s_!VvSN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5404dcd-7f4a-4c93-9092-1d39a025366b_1364x846.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VvSN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5404dcd-7f4a-4c93-9092-1d39a025366b_1364x846.gif" width="1364" height="846" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e5404dcd-7f4a-4c93-9092-1d39a025366b_1364x846.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:846,&quot;width&quot;:1364,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:529674,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/207942281?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5404dcd-7f4a-4c93-9092-1d39a025366b_1364x846.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!VvSN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5404dcd-7f4a-4c93-9092-1d39a025366b_1364x846.gif 424w, https://substackcdn.com/image/fetch/$s_!VvSN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5404dcd-7f4a-4c93-9092-1d39a025366b_1364x846.gif 848w, https://substackcdn.com/image/fetch/$s_!VvSN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5404dcd-7f4a-4c93-9092-1d39a025366b_1364x846.gif 1272w, https://substackcdn.com/image/fetch/$s_!VvSN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5404dcd-7f4a-4c93-9092-1d39a025366b_1364x846.gif 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 aria-hidden="true" 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><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>Version:</strong> 2.1.170 &#8212; June 9, 2026</p><p>Anthropic released Claude Fable 5 &#8212; a Mythos-class model that they have made safe for general use. Their words: &#8220;<em><strong>Fable&#8217;s capabilities exceed those of any model we&#8217;ve ever made generally available.&#8221;</strong></em></p><p>Mythos was previously only available to a small number of trusted organizations through Project Glasswing due to cybersecurity concerns. </p><p>Fable 5 is the first time that level of capability has been opened to the public.</p><div><hr></div><h3><strong>How to Access It</strong></h3><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;093b8704-548d-4b7d-b2ac-f84ee9940837&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">claude update
</code></pre></div><p>Update to version 2.1.170 or later, and you will see Fable 5 in your model picker.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;fcd45209-56a4-48a5-9284-ba1cfbe4a6d8&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">/model</code></pre></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!D9xN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5791e20e-d731-493c-ab56-ca6e474d8370_1353x808.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!D9xN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5791e20e-d731-493c-ab56-ca6e474d8370_1353x808.gif 424w, https://substackcdn.com/image/fetch/$s_!D9xN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5791e20e-d731-493c-ab56-ca6e474d8370_1353x808.gif 848w, https://substackcdn.com/image/fetch/$s_!D9xN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5791e20e-d731-493c-ab56-ca6e474d8370_1353x808.gif 1272w, https://substackcdn.com/image/fetch/$s_!D9xN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5791e20e-d731-493c-ab56-ca6e474d8370_1353x808.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!D9xN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5791e20e-d731-493c-ab56-ca6e474d8370_1353x808.gif" width="1353" height="808" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5791e20e-d731-493c-ab56-ca6e474d8370_1353x808.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:808,&quot;width&quot;:1353,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:279980,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/207942281?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5791e20e-d731-493c-ab56-ca6e474d8370_1353x808.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!D9xN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5791e20e-d731-493c-ab56-ca6e474d8370_1353x808.gif 424w, https://substackcdn.com/image/fetch/$s_!D9xN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5791e20e-d731-493c-ab56-ca6e474d8370_1353x808.gif 848w, https://substackcdn.com/image/fetch/$s_!D9xN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5791e20e-d731-493c-ab56-ca6e474d8370_1353x808.gif 1272w, https://substackcdn.com/image/fetch/$s_!D9xN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5791e20e-d731-493c-ab56-ca6e474d8370_1353x808.gif 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 aria-hidden="true" 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><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><div><hr></div><h3>What to Know</h3><ul><li><p>Available on <strong>Max, Team, and Enterprise</strong> plans</p></li><li><p>Uses <strong>usage credits</strong> &#8212; check your balance before running heavy tasks</p></li><li><p>The usage limit keeps getting reset, so ensure you follow the updates before using it heavily. </p></li></ul><h4>My Take</h4><blockquote><p><strong>This is the model to reach for on your hardest problems:  architecture decisions, complex debugging, security-critical code reviews.</strong></p><p><strong> Tasks where you previously used </strong><code>ultrathink</code><strong> and still felt like something was missing.</strong></p></blockquote><div><hr></div><h2>#2) Claude Sonnet 5 &amp; Subagents in Background &#8212; The Default Stack Changed</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Fjdi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F891d3b9c-cad8-4b5f-ae20-7f3c42643a40_1331x640.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Fjdi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F891d3b9c-cad8-4b5f-ae20-7f3c42643a40_1331x640.gif 424w, https://substackcdn.com/image/fetch/$s_!Fjdi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F891d3b9c-cad8-4b5f-ae20-7f3c42643a40_1331x640.gif 848w, https://substackcdn.com/image/fetch/$s_!Fjdi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F891d3b9c-cad8-4b5f-ae20-7f3c42643a40_1331x640.gif 1272w, https://substackcdn.com/image/fetch/$s_!Fjdi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F891d3b9c-cad8-4b5f-ae20-7f3c42643a40_1331x640.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Fjdi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F891d3b9c-cad8-4b5f-ae20-7f3c42643a40_1331x640.gif" width="1331" height="640" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/891d3b9c-cad8-4b5f-ae20-7f3c42643a40_1331x640.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:640,&quot;width&quot;:1331,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:583976,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/207942281?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F891d3b9c-cad8-4b5f-ae20-7f3c42643a40_1331x640.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Fjdi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F891d3b9c-cad8-4b5f-ae20-7f3c42643a40_1331x640.gif 424w, https://substackcdn.com/image/fetch/$s_!Fjdi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F891d3b9c-cad8-4b5f-ae20-7f3c42643a40_1331x640.gif 848w, https://substackcdn.com/image/fetch/$s_!Fjdi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F891d3b9c-cad8-4b5f-ae20-7f3c42643a40_1331x640.gif 1272w, https://substackcdn.com/image/fetch/$s_!Fjdi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F891d3b9c-cad8-4b5f-ae20-7f3c42643a40_1331x640.gif 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 aria-hidden="true" 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><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>Two big changes were released back-to-back at the end of June.</p><h3>Claude Sonnet 5 &#8212; New Default Model</h3><p><strong>Version:</strong> 2.1.197 &#8212; June 30, 2026</p><blockquote><p><strong>Sonnet 5 is now the default model in Claude Code. If you open Claude Code today without picking a model, you are running Sonnet 5.</strong></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_!IBNV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd224d578-9d14-4d34-be24-ca1b9266d994_1332x697.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IBNV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd224d578-9d14-4d34-be24-ca1b9266d994_1332x697.png 424w, https://substackcdn.com/image/fetch/$s_!IBNV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd224d578-9d14-4d34-be24-ca1b9266d994_1332x697.png 848w, https://substackcdn.com/image/fetch/$s_!IBNV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd224d578-9d14-4d34-be24-ca1b9266d994_1332x697.png 1272w, https://substackcdn.com/image/fetch/$s_!IBNV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd224d578-9d14-4d34-be24-ca1b9266d994_1332x697.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IBNV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd224d578-9d14-4d34-be24-ca1b9266d994_1332x697.png" width="1332" height="697" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d224d578-9d14-4d34-be24-ca1b9266d994_1332x697.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:697,&quot;width&quot;:1332,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:61676,&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://newsletter.claudecodemasterclass.com/i/207942281?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd224d578-9d14-4d34-be24-ca1b9266d994_1332x697.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_!IBNV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd224d578-9d14-4d34-be24-ca1b9266d994_1332x697.png 424w, https://substackcdn.com/image/fetch/$s_!IBNV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd224d578-9d14-4d34-be24-ca1b9266d994_1332x697.png 848w, https://substackcdn.com/image/fetch/$s_!IBNV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd224d578-9d14-4d34-be24-ca1b9266d994_1332x697.png 1272w, https://substackcdn.com/image/fetch/$s_!IBNV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd224d578-9d14-4d34-be24-ca1b9266d994_1332x697.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 aria-hidden="true" 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><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>What changed:</strong></p><ul><li><p><strong>1M token context window</strong> &#8212; native, not an add-on</p></li><li><p><strong>128k max output tokens</strong></p></li><li><p><strong>Promotional pricing</strong> &#8212; $2/$10 per million tokens through August 31, 2026</p></li></ul><p>At that price, with that context, this is the best value model Anthropic has put in Claude Code.</p><div><hr></div><h3>Subagents Now Run in the Background by Default</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0MNA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bc3f24a-7ab6-424f-b1b3-fe9cbd2c74d1_1353x807.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0MNA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bc3f24a-7ab6-424f-b1b3-fe9cbd2c74d1_1353x807.gif 424w, https://substackcdn.com/image/fetch/$s_!0MNA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bc3f24a-7ab6-424f-b1b3-fe9cbd2c74d1_1353x807.gif 848w, https://substackcdn.com/image/fetch/$s_!0MNA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bc3f24a-7ab6-424f-b1b3-fe9cbd2c74d1_1353x807.gif 1272w, https://substackcdn.com/image/fetch/$s_!0MNA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bc3f24a-7ab6-424f-b1b3-fe9cbd2c74d1_1353x807.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0MNA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bc3f24a-7ab6-424f-b1b3-fe9cbd2c74d1_1353x807.gif" width="1353" height="807" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6bc3f24a-7ab6-424f-b1b3-fe9cbd2c74d1_1353x807.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:807,&quot;width&quot;:1353,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:186106,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/207942281?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bc3f24a-7ab6-424f-b1b3-fe9cbd2c74d1_1353x807.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!0MNA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bc3f24a-7ab6-424f-b1b3-fe9cbd2c74d1_1353x807.gif 424w, https://substackcdn.com/image/fetch/$s_!0MNA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bc3f24a-7ab6-424f-b1b3-fe9cbd2c74d1_1353x807.gif 848w, https://substackcdn.com/image/fetch/$s_!0MNA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bc3f24a-7ab6-424f-b1b3-fe9cbd2c74d1_1353x807.gif 1272w, https://substackcdn.com/image/fetch/$s_!0MNA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bc3f24a-7ab6-424f-b1b3-fe9cbd2c74d1_1353x807.gif 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 aria-hidden="true" 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><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>Version:</strong> 2.1.198 &#8212; July 1, 2026</p><p>This one changes how multi-agent work  feels.</p><blockquote><p><strong>Before this, when Claude spawned a subagent, you waited. The main session sat there while the subagent ran.</strong></p></blockquote><p>Now subagents run in the background automatically. </p><p>Claude keeps working on other tasks while they run and gets notified when they finish. You can also view the agents by opening the agents panel. </p><p>Run this command</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;c37a7b97-7f72-4634-af05-b4ac66a60374&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">claude agents </code></pre></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9wpi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d973ea0-372c-4ecf-8123-66a17652f981_1326x555.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9wpi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d973ea0-372c-4ecf-8123-66a17652f981_1326x555.png 424w, https://substackcdn.com/image/fetch/$s_!9wpi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d973ea0-372c-4ecf-8123-66a17652f981_1326x555.png 848w, https://substackcdn.com/image/fetch/$s_!9wpi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d973ea0-372c-4ecf-8123-66a17652f981_1326x555.png 1272w, https://substackcdn.com/image/fetch/$s_!9wpi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d973ea0-372c-4ecf-8123-66a17652f981_1326x555.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9wpi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d973ea0-372c-4ecf-8123-66a17652f981_1326x555.png" width="1326" height="555" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7d973ea0-372c-4ecf-8123-66a17652f981_1326x555.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:555,&quot;width&quot;:1326,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:27481,&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://newsletter.claudecodemasterclass.com/i/207942281?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d973ea0-372c-4ecf-8123-66a17652f981_1326x555.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_!9wpi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d973ea0-372c-4ecf-8123-66a17652f981_1326x555.png 424w, https://substackcdn.com/image/fetch/$s_!9wpi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d973ea0-372c-4ecf-8123-66a17652f981_1326x555.png 848w, https://substackcdn.com/image/fetch/$s_!9wpi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d973ea0-372c-4ecf-8123-66a17652f981_1326x555.png 1272w, https://substackcdn.com/image/fetch/$s_!9wpi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d973ea0-372c-4ecf-8123-66a17652f981_1326x555.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 aria-hidden="true" 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><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>Background Agents :</strong></p><ul><li><p><em>Claude no longer blocks waiting for a subagent to complete</em></p></li><li><p><em>You see progress in </em><code>claude agents</code><em> while the main session stays active</em></p></li><li><p><em>Background agents that finish code work in a worktree now automatically commit, push, and open a draft PR &#8212; without stopping to ask</em></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_!vcCA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3effca6-1a98-4dc5-8c03-cdbd2bca0e71_1608x903.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vcCA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3effca6-1a98-4dc5-8c03-cdbd2bca0e71_1608x903.gif 424w, https://substackcdn.com/image/fetch/$s_!vcCA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3effca6-1a98-4dc5-8c03-cdbd2bca0e71_1608x903.gif 848w, https://substackcdn.com/image/fetch/$s_!vcCA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3effca6-1a98-4dc5-8c03-cdbd2bca0e71_1608x903.gif 1272w, https://substackcdn.com/image/fetch/$s_!vcCA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3effca6-1a98-4dc5-8c03-cdbd2bca0e71_1608x903.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vcCA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3effca6-1a98-4dc5-8c03-cdbd2bca0e71_1608x903.gif" width="1456" height="818" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b3effca6-1a98-4dc5-8c03-cdbd2bca0e71_1608x903.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:818,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:108859,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/207942281?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3effca6-1a98-4dc5-8c03-cdbd2bca0e71_1608x903.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!vcCA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3effca6-1a98-4dc5-8c03-cdbd2bca0e71_1608x903.gif 424w, https://substackcdn.com/image/fetch/$s_!vcCA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3effca6-1a98-4dc5-8c03-cdbd2bca0e71_1608x903.gif 848w, https://substackcdn.com/image/fetch/$s_!vcCA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3effca6-1a98-4dc5-8c03-cdbd2bca0e71_1608x903.gif 1272w, https://substackcdn.com/image/fetch/$s_!vcCA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3effca6-1a98-4dc5-8c03-cdbd2bca0e71_1608x903.gif 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 aria-hidden="true" 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><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><blockquote><p><strong>These two together: a faster default model with 1M context, and subagents that don't block your session make parallel workflows significantly smoother.</strong></p></blockquote><div><hr></div><h2>#3) /fork, /subtask &amp; Session Caps &#8212; Multi-Agent Just Got Guardrails</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Beti!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3904e4a5-31d6-45e8-a3c0-441c0b5c6d37_1353x807.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Beti!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3904e4a5-31d6-45e8-a3c0-441c0b5c6d37_1353x807.gif 424w, https://substackcdn.com/image/fetch/$s_!Beti!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3904e4a5-31d6-45e8-a3c0-441c0b5c6d37_1353x807.gif 848w, https://substackcdn.com/image/fetch/$s_!Beti!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3904e4a5-31d6-45e8-a3c0-441c0b5c6d37_1353x807.gif 1272w, https://substackcdn.com/image/fetch/$s_!Beti!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3904e4a5-31d6-45e8-a3c0-441c0b5c6d37_1353x807.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Beti!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3904e4a5-31d6-45e8-a3c0-441c0b5c6d37_1353x807.gif" width="1353" height="807" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3904e4a5-31d6-45e8-a3c0-441c0b5c6d37_1353x807.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:807,&quot;width&quot;:1353,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:279601,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/207942281?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3904e4a5-31d6-45e8-a3c0-441c0b5c6d37_1353x807.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Beti!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3904e4a5-31d6-45e8-a3c0-441c0b5c6d37_1353x807.gif 424w, https://substackcdn.com/image/fetch/$s_!Beti!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3904e4a5-31d6-45e8-a3c0-441c0b5c6d37_1353x807.gif 848w, https://substackcdn.com/image/fetch/$s_!Beti!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3904e4a5-31d6-45e8-a3c0-441c0b5c6d37_1353x807.gif 1272w, https://substackcdn.com/image/fetch/$s_!Beti!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3904e4a5-31d6-45e8-a3c0-441c0b5c6d37_1353x807.gif 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 aria-hidden="true" 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><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>Version:</strong> 2.1.212 &#8212; July 17, 2026</p><p>Three changes in one release that affect how you manage parallel work.</p><h4>/fork Now Creates a Background Session</h4><blockquote><p><code>/fork</code><em><strong> used to spin up an in-session subagent &#8212; it ran inside your current session, and you watched it work.</strong></em></p></blockquote><p>Now <code>/fork</code> copies your conversation into a <strong>new background session</strong> with its own row in <code>claude agents</code>, while you keep working in your current session.</p><p><em><strong>The in-session subagent that </strong></em><code>/fork</code><em><strong> used to launch is now </strong></em><code>/subtask</code></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Ebfc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb11e377-e9b0-4105-9918-0db21ab127f6_823x185.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Ebfc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb11e377-e9b0-4105-9918-0db21ab127f6_823x185.png 424w, https://substackcdn.com/image/fetch/$s_!Ebfc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb11e377-e9b0-4105-9918-0db21ab127f6_823x185.png 848w, https://substackcdn.com/image/fetch/$s_!Ebfc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb11e377-e9b0-4105-9918-0db21ab127f6_823x185.png 1272w, https://substackcdn.com/image/fetch/$s_!Ebfc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb11e377-e9b0-4105-9918-0db21ab127f6_823x185.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Ebfc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb11e377-e9b0-4105-9918-0db21ab127f6_823x185.png" width="823" height="185" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/db11e377-e9b0-4105-9918-0db21ab127f6_823x185.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:185,&quot;width&quot;:823,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:14182,&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://newsletter.claudecodemasterclass.com/i/207942281?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb11e377-e9b0-4105-9918-0db21ab127f6_823x185.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_!Ebfc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb11e377-e9b0-4105-9918-0db21ab127f6_823x185.png 424w, https://substackcdn.com/image/fetch/$s_!Ebfc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb11e377-e9b0-4105-9918-0db21ab127f6_823x185.png 848w, https://substackcdn.com/image/fetch/$s_!Ebfc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb11e377-e9b0-4105-9918-0db21ab127f6_823x185.png 1272w, https://substackcdn.com/image/fetch/$s_!Ebfc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb11e377-e9b0-4105-9918-0db21ab127f6_823x185.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><div><hr></div><h3>Session-Wide Caps on WebSearch and Subagents</h3><p>Runaway loops are now stopped automatically.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;2a9f781d-d9e5-47cb-8e46-ee5e64260adf&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext"># WebSearch calls per session (default 200)
CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION=200

# Subagent spawns per session (default 200)
CLAUDE_CODE_MAX_SUBAGENTS_PER_SESSION=200</code></pre></div><p>Run <code>/clear</code> to reset the budget mid-session.</p><div><hr></div><h4>MCP Tool Calls Auto-Background After 2 Minutes</h4><blockquote><p><strong>A slow MCP tool call used to freeze your entire session. Now it moves to the background automatically after 2 minutes so your session stays usable.</strong></p></blockquote><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;ceffec68-708b-4c9d-9d4e-37ca059cfb67&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext"># Change the threshold (milliseconds)
CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS=120000

# Disable entirely
CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS=0</code></pre></div><div><hr></div><h2>#4) Performance &amp; Stability &#8212; July Cleaned Up a Lot</h2><p>Versions 2.1.200 through 2.1.216 (July 3&#8211;20) shipped the heaviest round of performance and <em><strong>stability fixes since Claude Code launched.</strong></em></p><h4>7x Faster Tool Rounds</h4><p><strong>Version:</strong> 2.1.208 &#8212; July 14</p><blockquote><p><strong>Per-tool-call CPU overhead is now cached instead of rebuilt on every call: up to 7x faster at high MCP tool counts. Update, and it works automatically.</strong></p></blockquote><div><hr></div><h4>Multiple Memory Leaks Fixed</h4><p><strong>Version:</strong> 2.1.208 &#8212; July 14</p><ul><li><p>MCP stdio server stderr accumulating up to <strong>64 MB per server</strong></p></li><li><p>LSP documents staying open indefinitely &#8212; now capped at 50</p></li><li><p>Async hook output retained after backgrounding</p></li><li><p>Unbounded growth in SDK sessions from large tool-result payloads</p></li></ul><blockquote><p><strong>If you have been hitting slowdowns in long sessions, this is the update.</strong></p></blockquote><div><hr></div><h4>Live Elapsed-Time Counter on Tool Calls</h4><p><strong>Version:</strong> 2.1.210 &#8212; July 14</p><p>Long-running tool calls now show a live ticking counter. </p><blockquote><p><strong>Before this, a slow tool call looked completely frozen with no indication it was still running.</strong></p></blockquote><div><hr></div><h4>/verify and /code-review Now Manual Only</h4><p><strong>Version:</strong> 2.1.215 &#8212; July 19</p><p>Claude no longer runs these on its own: you invoke them directly when you want them:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;da89cd2f-6ef7-474c-9f08-5c33ece21156&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">/verify
/code-review</code></pre></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!tBF2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f7bc61c-ff27-4118-ab09-f4b8caa15178_1353x807.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tBF2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f7bc61c-ff27-4118-ab09-f4b8caa15178_1353x807.gif 424w, https://substackcdn.com/image/fetch/$s_!tBF2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f7bc61c-ff27-4118-ab09-f4b8caa15178_1353x807.gif 848w, https://substackcdn.com/image/fetch/$s_!tBF2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f7bc61c-ff27-4118-ab09-f4b8caa15178_1353x807.gif 1272w, https://substackcdn.com/image/fetch/$s_!tBF2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f7bc61c-ff27-4118-ab09-f4b8caa15178_1353x807.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!tBF2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f7bc61c-ff27-4118-ab09-f4b8caa15178_1353x807.gif" width="1353" height="807" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3f7bc61c-ff27-4118-ab09-f4b8caa15178_1353x807.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:807,&quot;width&quot;:1353,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:936521,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/207942281?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f7bc61c-ff27-4118-ab09-f4b8caa15178_1353x807.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!tBF2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f7bc61c-ff27-4118-ab09-f4b8caa15178_1353x807.gif 424w, https://substackcdn.com/image/fetch/$s_!tBF2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f7bc61c-ff27-4118-ab09-f4b8caa15178_1353x807.gif 848w, https://substackcdn.com/image/fetch/$s_!tBF2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f7bc61c-ff27-4118-ab09-f4b8caa15178_1353x807.gif 1272w, https://substackcdn.com/image/fetch/$s_!tBF2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f7bc61c-ff27-4118-ab09-f4b8caa15178_1353x807.gif 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 aria-hidden="true" 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><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><div><hr></div><h4>Permission Mode Renamed to &#8220;Manual&#8221;</h4><p><strong>Version:</strong> 2.1.200 &#8212; July 3</p><p>Update your config to stay current:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;2469357c-e4a9-4bd0-b8c0-f8289fb6a66a&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">{ "defaultMode": "manual" }</code></pre></div><div><hr></div><h3>--safe-mode &#8212; Troubleshoot Without Your Config</h3><p><strong>Version:</strong> 2.1.169 &#8212; June 8</p><p>Start Claude Code with everything disabled: CLAUDE.md, plugins, skills, hooks, and MCP servers; all turned off in one flag.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;b87973a5-1335-47e1-bffd-3bd61622e7e5&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">claude --safe-mode

# Or via environment variable
export CLAUDE_CODE_SAFE_MODE=1</code></pre></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!r6yx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ea423ee-e178-4278-a4d9-a28eb0179300_1407x663.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!r6yx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ea423ee-e178-4278-a4d9-a28eb0179300_1407x663.gif 424w, https://substackcdn.com/image/fetch/$s_!r6yx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ea423ee-e178-4278-a4d9-a28eb0179300_1407x663.gif 848w, https://substackcdn.com/image/fetch/$s_!r6yx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ea423ee-e178-4278-a4d9-a28eb0179300_1407x663.gif 1272w, https://substackcdn.com/image/fetch/$s_!r6yx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ea423ee-e178-4278-a4d9-a28eb0179300_1407x663.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!r6yx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ea423ee-e178-4278-a4d9-a28eb0179300_1407x663.gif" width="1407" height="663" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4ea423ee-e178-4278-a4d9-a28eb0179300_1407x663.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:663,&quot;width&quot;:1407,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1971418,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/207942281?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ea423ee-e178-4278-a4d9-a28eb0179300_1407x663.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!r6yx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ea423ee-e178-4278-a4d9-a28eb0179300_1407x663.gif 424w, https://substackcdn.com/image/fetch/$s_!r6yx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ea423ee-e178-4278-a4d9-a28eb0179300_1407x663.gif 848w, https://substackcdn.com/image/fetch/$s_!r6yx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ea423ee-e178-4278-a4d9-a28eb0179300_1407x663.gif 1272w, https://substackcdn.com/image/fetch/$s_!r6yx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ea423ee-e178-4278-a4d9-a28eb0179300_1407x663.gif 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 aria-hidden="true" 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><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>Useful when something is broken, and you need to isolate whether it is your configuration or Claude Code itself.</p><blockquote><p><strong>Before this, debugging a broken session meant manually disabling things one by one. Now you start clean in one command and add things back until you find the problem.</strong></p></blockquote><p>I shared a detailed review <em><strong><a href="https://medium.com/@joe.njenga/the-only-claude-code-debugging-tool-you-need-stop-wasting-time-630f84b25587">here on the Medium tutorial. </a></strong></em></p><div class="pullquote"><p><strong>That&#8217;s everything significant since Issue #3.</strong></p><p style="text-align: justify;">I know it&#8217;s been a while. I appreciate the patience and the messages from those of you who reached out, asking when the next issue is coming. That means more than you know.</p></div><p>The plan from here is back to weekly issues, no more gaps. If there is a feature you want me to test and break down, reply to this email and let me know.</p><blockquote><p><strong>Tomorrow I will publish the Hooks Masterclass, which has been long-time coming &#8212; Thank you once again!</strong></p><p><strong>See you next week in Last Week In Claude Code</strong></p></blockquote><div class="pullquote"><p>Finally, this newsletter belongs to all of us. If there&#8217;s anything that can make it better or something you don&#8217;t like, please let me know.</p></div><h1 style="text-align: center;"><strong>Claude Code Masterclass</strong></h1><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hZ3W!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F812cc455-550d-43a3-9ab8-f87974b8f50c_1478x780.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hZ3W!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F812cc455-550d-43a3-9ab8-f87974b8f50c_1478x780.png 424w, https://substackcdn.com/image/fetch/$s_!hZ3W!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F812cc455-550d-43a3-9ab8-f87974b8f50c_1478x780.png 848w, https://substackcdn.com/image/fetch/$s_!hZ3W!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F812cc455-550d-43a3-9ab8-f87974b8f50c_1478x780.png 1272w, https://substackcdn.com/image/fetch/$s_!hZ3W!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F812cc455-550d-43a3-9ab8-f87974b8f50c_1478x780.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hZ3W!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F812cc455-550d-43a3-9ab8-f87974b8f50c_1478x780.png" width="1456" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/812cc455-550d-43a3-9ab8-f87974b8f50c_1478x780.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:62678,&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://newsletter.claudecodemasterclass.com/i/207942281?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F812cc455-550d-43a3-9ab8-f87974b8f50c_1478x780.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_!hZ3W!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F812cc455-550d-43a3-9ab8-f87974b8f50c_1478x780.png 424w, https://substackcdn.com/image/fetch/$s_!hZ3W!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F812cc455-550d-43a3-9ab8-f87974b8f50c_1478x780.png 848w, https://substackcdn.com/image/fetch/$s_!hZ3W!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F812cc455-550d-43a3-9ab8-f87974b8f50c_1478x780.png 1272w, https://substackcdn.com/image/fetch/$s_!hZ3W!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F812cc455-550d-43a3-9ab8-f87974b8f50c_1478x780.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 aria-hidden="true" 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><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 style="text-align: center;"><strong>Let&#8217;s Build It Together</strong></p><p style="text-align: center;"><strong>&#8212; Joe Njenga</strong></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.claudecodemasterclass.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 Claude Code Masterclass! 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>]]></content:encoded></item><item><title><![CDATA[Claude Code Ralph Loop: From Basic Prompts to Autonomous Overnight Builds]]></title><description><![CDATA[The looping technique that turns Claude's biggest flaw into your unfair advantage]]></description><link>https://newsletter.claudecodemasterclass.com/p/claude-code-ralph-loop-from-basic</link><guid isPermaLink="false">https://newsletter.claudecodemasterclass.com/p/claude-code-ralph-loop-from-basic</guid><dc:creator><![CDATA[Joe]]></dc:creator><pubDate>Wed, 01 Apr 2026 19:49:44 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!bP7i!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad1bec4a-a081-4b4a-a593-27c72f4c920d_1280x720.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_!bP7i!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad1bec4a-a081-4b4a-a593-27c72f4c920d_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bP7i!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad1bec4a-a081-4b4a-a593-27c72f4c920d_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!bP7i!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad1bec4a-a081-4b4a-a593-27c72f4c920d_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!bP7i!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad1bec4a-a081-4b4a-a593-27c72f4c920d_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!bP7i!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad1bec4a-a081-4b4a-a593-27c72f4c920d_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bP7i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad1bec4a-a081-4b4a-a593-27c72f4c920d_1280x720.png" width="1280" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ad1bec4a-a081-4b4a-a593-27c72f4c920d_1280x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:446937,&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://newsletter.claudecodemasterclass.com/i/186188688?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad1bec4a-a081-4b4a-a593-27c72f4c920d_1280x720.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_!bP7i!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad1bec4a-a081-4b4a-a593-27c72f4c920d_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!bP7i!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad1bec4a-a081-4b4a-a593-27c72f4c920d_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!bP7i!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad1bec4a-a081-4b4a-a593-27c72f4c920d_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!bP7i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad1bec4a-a081-4b4a-a593-27c72f4c920d_1280x720.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 aria-hidden="true" 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><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>First, welcome to all new subscribers. We have finally made it to 39,000+<em><strong>. I am very grateful to each of you and am still overwhelmed by the support, pledges, and encouragement you have sent &#8212; Thank you once again.</strong></em></p><div class="pullquote"><p><strong>In the previous issue, I covered the CLAUDE.md masterclass and, in the introduction to the masterclass series, mentioned the Deep Dive series, which covers important non-core topics. </strong></p></div><p>This issue brings you the first article in the Claude Code <em><strong>Deep Dive series  &#8212; Claude Code Ralph Loop Deep Dive</strong></em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.claudecodemasterclass.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 Claude Code Masterclass! 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><div><hr></div><p>Every Claude Code session has the same hidden flaw; <em><strong>Claude stops when it thinks the job is done. </strong></em></p><ul><li><p>Tests broken</p></li><li><p> API half-implemented, </p></li><li><p>Edge cases untouched </p></li></ul><p>But it declares complete and exits. And the longer and more complex the task, the worse it gets. </p><blockquote><p><em><strong>There is a technique designed to fix this problem. You have probably heard the word &#8220;Ralph&#8221; thrown around. </strong></em></p></blockquote><p>It&#8217;s a simple idea that forces Claude to keep iterating until the work is genuinely completed.</p><p>Surprisingly, this technique has been used to ship entire projects overnight at a fraction of the actual cost.</p><blockquote><p><em><strong>In this newsletter, I&#8217;ll take you from understanding why Claude fails on complex tasks to building the full Ralph Loop system and running it on real projects.</strong></em></p></blockquote><p>We&#8217;ll cover the Ralph core mechanism, the PRD and memory architecture, and everything you need to put Ralph Loop to work.</p><p>Let&#8217;s start with the basics.</p><div><hr></div><h3>What is Ralph Loop? </h3><p>Let me start with something that might surprise you.</p><blockquote><p><em><strong>Ralph Loop isn&#8217;t a framework, and it is not a sophisticated AI orchestration system. At the core, it&#8217;s a Bash while loop.</strong></em></p></blockquote><pre><code>while true; do
  cat prompt.md | claude
done</code></pre><p>The technique was created by <a href="https://github.com/ghuntley">Jeffrey Huntley</a></p><div class="pullquote"><p><strong>The name comes from <a href="https://en.wikipedia.org/wiki/Ralph_Wiggum">Ralph Wiggum</a>, arguably the dumbest character in <a href="https://en.wikipedia.org/wiki/The_Simpsons">The Simpsons</a>. Ralph fails constantly, making silly mistakes. But stubbornly continues in an endless loop until he eventually succeeds.</strong></p></div><p>This childlike persistence is the philosophy behind the technique.</p><blockquote><p><em><strong>With Ralph Loop, Claude is no longer allowed to exit when it thinks it&#8217;s done. It&#8217;s forced to keep working until the task is truly finished.</strong></em></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_!tpUt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05c9438d-43eb-4f83-92d3-a9968e00c809_811x824.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tpUt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05c9438d-43eb-4f83-92d3-a9968e00c809_811x824.png 424w, https://substackcdn.com/image/fetch/$s_!tpUt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05c9438d-43eb-4f83-92d3-a9968e00c809_811x824.png 848w, https://substackcdn.com/image/fetch/$s_!tpUt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05c9438d-43eb-4f83-92d3-a9968e00c809_811x824.png 1272w, https://substackcdn.com/image/fetch/$s_!tpUt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05c9438d-43eb-4f83-92d3-a9968e00c809_811x824.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!tpUt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05c9438d-43eb-4f83-92d3-a9968e00c809_811x824.png" width="811" height="824" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/05c9438d-43eb-4f83-92d3-a9968e00c809_811x824.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:824,&quot;width&quot;:811,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:21578,&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://newsletter.claudecodemasterclass.com/i/186188688?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05c9438d-43eb-4f83-92d3-a9968e00c809_811x824.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_!tpUt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05c9438d-43eb-4f83-92d3-a9968e00c809_811x824.png 424w, https://substackcdn.com/image/fetch/$s_!tpUt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05c9438d-43eb-4f83-92d3-a9968e00c809_811x824.png 848w, https://substackcdn.com/image/fetch/$s_!tpUt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05c9438d-43eb-4f83-92d3-a9968e00c809_811x824.png 1272w, https://substackcdn.com/image/fetch/$s_!tpUt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05c9438d-43eb-4f83-92d3-a9968e00c809_811x824.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 aria-hidden="true" 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><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 key insight is that Ralph Loop treats failure as expected, not exceptional. </p><p><em><strong>Each iteration builds on the last. The AI sees what it did before, recognizes what&#8217;s still broken, and improves.</strong></em></p><div><hr></div><h3>Why Claude Code Needs Ralph</h3><p>Claude Code has a limitation that most developers don&#8217;t recognize until they&#8217;ve hit it repeatedly.</p><p><em>It operates in single-pass mode.</em></p><p>Even though Claude reasons extremely well, it stops as soon as it believes the output is &#8220;good enough.&#8221; </p><blockquote><p><em><strong>The model has what you might call an implicit execution budget. Once it feels like it&#8217;s done reasonable work, it wraps up and exits.</strong></em></p></blockquote><p>The problem is that &#8220; good enough&#8221;, according to Claude, often isn&#8217;t  good enough.</p><p>I&#8217;ve seen this pattern dozens of times:</p><ul><li><p><em>C<strong>laude builds a feature, declares it complete, but the edge cases are broken</strong></em></p></li><li><p><em><strong>Claude writes tests, says they pass, but they don&#8217;t actually run</strong></em></p></li><li><p><em><strong>Claude implements an API, marks it done, but forgot error handling</strong></em></p></li></ul><p>It believes it&#8217;s finished,  but it&#8217;s making that judgment based on what the code looks like, not whether it works.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!SMta!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6863c54c-0a57-4938-814f-358de84601ee_826x711.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SMta!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6863c54c-0a57-4938-814f-358de84601ee_826x711.png 424w, https://substackcdn.com/image/fetch/$s_!SMta!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6863c54c-0a57-4938-814f-358de84601ee_826x711.png 848w, https://substackcdn.com/image/fetch/$s_!SMta!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6863c54c-0a57-4938-814f-358de84601ee_826x711.png 1272w, https://substackcdn.com/image/fetch/$s_!SMta!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6863c54c-0a57-4938-814f-358de84601ee_826x711.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!SMta!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6863c54c-0a57-4938-814f-358de84601ee_826x711.png" width="826" height="711" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6863c54c-0a57-4938-814f-358de84601ee_826x711.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:711,&quot;width&quot;:826,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:22694,&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://newsletter.claudecodemasterclass.com/i/186188688?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6863c54c-0a57-4938-814f-358de84601ee_826x711.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_!SMta!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6863c54c-0a57-4938-814f-358de84601ee_826x711.png 424w, https://substackcdn.com/image/fetch/$s_!SMta!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6863c54c-0a57-4938-814f-358de84601ee_826x711.png 848w, https://substackcdn.com/image/fetch/$s_!SMta!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6863c54c-0a57-4938-814f-358de84601ee_826x711.png 1272w, https://substackcdn.com/image/fetch/$s_!SMta!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6863c54c-0a57-4938-814f-358de84601ee_826x711.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 aria-hidden="true" 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><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><blockquote><p><em><strong>Another problem that makes this worse is the context rot.</strong></em></p></blockquote><p>As the conversation with Claude gets longer, the context window fills up. The model&#8217;s reasoning quality degrades as it has to juggle more information.</p><div class="pullquote"><p>Jeffrey Huntley calls this &#8220;compaction&#8221; &#8212; when the context gets summarized and loses important details. The model starts forgetting things it knew earlier in the conversation. It makes mistakes it wouldn&#8217;t have made with a fresh context.</p></div><p>This is why the single-pass approach fails for complex tasks.</p><p>By the time Claude reaches the end of a big feature, its context is bloated with attempts, errors, and fixes. The quality of its reasoning has degraded.</p><p>Ralph Loop solves both problems:</p><ol><li><p><em><strong>Forces verification</strong> &#8212; Claude can&#8217;t exit until it proves the work is done</em></p></li><li><p><em><strong>Fresh context</strong> &#8212; Each iteration starts clean, avoiding context </em>rot</p></li></ol><div><hr></div><h3>Core Mechanism</h3><p>Let me break down how Ralph Loop works.</p><blockquote><p><em><strong>The Anthropic plugin uses the stop hook. This is a feature in Claude Code that runs whenever Claude finishes responding and tries to end the session.</strong></em></p></blockquote><p><strong>Here&#8217;s the flow:</strong></p><ol><li><p><em>You give Ralph your prompt and a completion promise (like &#8220;DONE&#8221; or &#8220;COMPLETE&#8221;)</em></p></li><li><p><em>Claude works on the task</em></p></li><li><p><em>Claude tries to exit</em></p></li><li><p><em>The stop hook intercepts the exit</em></p></li><li><p><em>It scans the output for the completion promise</em></p></li><li><p><em>If no promise is found, it feeds the same prompt back to Claude</em></p></li><li><p><em>Claude sees its previous work in the files and improves it</em></p></li><li><p><em>Repeat until the completion promise appears</em></p></li></ol><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_!IOUc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe49aaf7-a481-4c34-be3f-d6abbfce4bdf_838x1434.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IOUc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe49aaf7-a481-4c34-be3f-d6abbfce4bdf_838x1434.png 424w, https://substackcdn.com/image/fetch/$s_!IOUc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe49aaf7-a481-4c34-be3f-d6abbfce4bdf_838x1434.png 848w, https://substackcdn.com/image/fetch/$s_!IOUc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe49aaf7-a481-4c34-be3f-d6abbfce4bdf_838x1434.png 1272w, https://substackcdn.com/image/fetch/$s_!IOUc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe49aaf7-a481-4c34-be3f-d6abbfce4bdf_838x1434.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IOUc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe49aaf7-a481-4c34-be3f-d6abbfce4bdf_838x1434.png" width="838" height="1434" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/be49aaf7-a481-4c34-be3f-d6abbfce4bdf_838x1434.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1434,&quot;width&quot;:838,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:47844,&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://newsletter.claudecodemasterclass.com/i/186188688?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe49aaf7-a481-4c34-be3f-d6abbfce4bdf_838x1434.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_!IOUc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe49aaf7-a481-4c34-be3f-d6abbfce4bdf_838x1434.png 424w, https://substackcdn.com/image/fetch/$s_!IOUc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe49aaf7-a481-4c34-be3f-d6abbfce4bdf_838x1434.png 848w, https://substackcdn.com/image/fetch/$s_!IOUc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe49aaf7-a481-4c34-be3f-d6abbfce4bdf_838x1434.png 1272w, https://substackcdn.com/image/fetch/$s_!IOUc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe49aaf7-a481-4c34-be3f-d6abbfce4bdf_838x1434.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 aria-hidden="true" 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><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 magic happens in those state files at the bottom.</p><ul><li><p><em><strong>prd.json</strong> &#8212; Contains your task list with passes: true/false flags. Claude reads this to know what&#8217;s done and what&#8217;s left.</em></p></li><li><p><em><strong>progress.txt</strong> &#8212; Short-term memory. Claude appends learnings after each iteration. The next iteration reads this to avoid repeating mistakes.</em></p></li><li><p><em><strong>agents.md</strong> &#8212; Long-term memory. Patterns and knowledge that persist beyond the current sprint.</em></p></li></ul><p>When Claude starts a new iteration, it reads these files and sees the code it wrote. It sees what passed and what failed, and it sees notes from previous iterations.</p><blockquote><p><em><strong>This is what makes Ralph Loop more than just &#8220;run it again.&#8221; Each iteration is informed by all previous iterations. </strong></em></p></blockquote><p></p><div><hr></div><h3>Completion Promise</h3><p>The completion promise is how Ralph knows when to stop.</p><p><em><strong>You define a specific word or phrase &#8212; typically &#8220;DONE&#8221; or &#8220;COMPLETE&#8221;. Claude must output this wrapped in a specific format:</strong></em></p><pre><code>&lt;promise&gt;COMPLETE&lt;/promise&gt;</code></pre><p>The stop hook scans for this pattern. If it finds it, the loop exits. If not, the loop continues.</p><p>This creates a contract between you and Claude:</p><ul><li><p><em><strong>You define what &#8220;done&#8221; means (clear criteria in your prompt)</strong></em></p></li><li><p><em><strong>Claude works until those criteria are met</strong></em></p></li><li><p><em><strong>Claude signals completion with the promise</strong></em></p></li><li><p><em><strong>Ralph verifies and exits</strong></em></p></li></ul><p>The promise should represent actual completion. Your prompt needs to define what must be true before Claude outputs the promise.</p><p><strong>Bad prompt:</strong></p><pre><code>Build a todo API. Output COMPLETE when done.</code></pre><p><strong>Good prompt:</strong></p><pre><code>Build a REST API for todos.

Requirements:
- CRUD endpoints for todos
- Input validation
- Error handling
- Tests with 80% coverage

Run tests after implementation. 
Only output &lt;promise&gt;COMPLETE&lt;/promise&gt; when ALL tests pass.</code></pre><p>The second prompt gives Claude binary criteria that  can be verified. </p><div><hr></div><h3>What Ralph Loop Is NOT</h3><p>Before we go deeper, let me clear up some misconceptions.</p><ol><li><p><strong>Ralph is not the Anthropic plugin.</strong></p></li></ol><p>The plugin is convenient, but it&#8217;s a simplified implementation. It doesn&#8217;t fully reset context between iterations the way the original bash loop approach does. For simple tasks, the plugin works fine. For complex projects, you&#8217;ll want the full approach.</p><ol start="2"><li><p><strong>Ralph is not magic.</strong></p></li></ol><p>It amplifies whatever you feed it. Good planning and clear criteria produce great results. Vague prompts produce expensive loops that go nowhere.</p><ol start="3"><li><p><strong>Ralph is not a replacement for thinking.</strong></p></li></ol><p>You still need to design your tasks, write clear criteria, and review the output. Ralph automates the iteration cycle, not the engineering judgment.</p><ol start="4"><li><p><strong>Ralph is not always the right tool.</strong></p></li></ol><p>Some tasks need human judgment at every step. Some tasks are one-shot and simple. Ralph is ideal for complex, multi-step work that has verifiable completion criteria.</p><div><hr></div><h2>Ralph Architecture</h2><div><hr></div><h4>1) PRD (Product Requirements Document)</h4><p>Everything starts with the PRD.</p><p>Before you run a single iteration, you need a clear definition of what you&#8217;re building. The PRD is the definition that guides every Ralph Loop iteration.</p><p><em><strong>Most developers get it wrong: they try to write the PRD themselves.</strong></em></p><p>I don&#8217;t do that.</p><p>Generate it through a conversation with Claude. </p><div class="pullquote"><p><strong>Describe your idea, let Claude ask clarifying questions, then have it produce a structured document. This approach is faster and often produces better results than writing from scratch.</strong></p></div><p>Here's a PRD generator prompt you can use:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;c28e6790-e699-455d-b501-ab27359abde0&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">I want to build [DESCRIBE YOUR FEATURE/PROJECT].

Interview me about this. Ask 3-5 clarifying questions about:
- Target users
- Core functionality
- Technical requirements
- Success criteria

After I answer, generate a PRD with:
- Project overview
- User stories (who does what, why)
- Feature requirements
- Success criteria (binary, testable)
- Technical stack
- Out of scope (what we're NOT building)</code></pre></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9vAM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68c83512-3a62-4c45-8c2f-00c3117808b7_851x544.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9vAM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68c83512-3a62-4c45-8c2f-00c3117808b7_851x544.gif 424w, https://substackcdn.com/image/fetch/$s_!9vAM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68c83512-3a62-4c45-8c2f-00c3117808b7_851x544.gif 848w, https://substackcdn.com/image/fetch/$s_!9vAM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68c83512-3a62-4c45-8c2f-00c3117808b7_851x544.gif 1272w, https://substackcdn.com/image/fetch/$s_!9vAM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68c83512-3a62-4c45-8c2f-00c3117808b7_851x544.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9vAM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68c83512-3a62-4c45-8c2f-00c3117808b7_851x544.gif" width="851" height="544" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/68c83512-3a62-4c45-8c2f-00c3117808b7_851x544.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:544,&quot;width&quot;:851,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:871520,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/186188688?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68c83512-3a62-4c45-8c2f-00c3117808b7_851x544.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!9vAM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68c83512-3a62-4c45-8c2f-00c3117808b7_851x544.gif 424w, https://substackcdn.com/image/fetch/$s_!9vAM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68c83512-3a62-4c45-8c2f-00c3117808b7_851x544.gif 848w, https://substackcdn.com/image/fetch/$s_!9vAM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68c83512-3a62-4c45-8c2f-00c3117808b7_851x544.gif 1272w, https://substackcdn.com/image/fetch/$s_!9vAM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68c83512-3a62-4c45-8c2f-00c3117808b7_851x544.gif 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 aria-hidden="true" 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><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>Key principle: <strong>Every success criterion must be binary and testable.</strong></p><p><em>Not &#8220;the UI should look good&#8221; &#8212; that&#8217;s subjective. Instead: &#8220;the dashboard loads in under 2 seconds,&#8221; or &#8220;all buttons have hover states,&#8221; or &#8220;accessibility score is 90+.</em>&#8221;</p><div><hr></div><h4>2) Task List (prd.json)</h4><p>The PRD describes what you&#8217;re building. The task list breaks it into atomic pieces.</p><p>This is where Ralph Loop gets its power. </p><blockquote><p><em><strong>Instead of asking Claude to build an entire feature in one shot, you give it a sequence of small, focused tasks. Each task completes in one iteration with a fresh context.</strong></em></p></blockquote><p>The format follows Anthropic&#8217;s recommendation from their long-running agents documentation:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;json&quot;,&quot;nodeId&quot;:&quot;f657f495-4d14-4be1-9f37-e884aee9b7d5&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-json">{
  "projectName": "Todo API",
  "tasks": [
    {
      "id": "US-001",
      "title": "Set up project structure",
      "acceptanceCriteria": [
        "package.json exists with dependencies",
        "TypeScript configured",
        "npm run build succeeds"
      ],
      "passes": false
    },
    {
      "id": "US-002", 
      "title": "Create todo database schema",
      "acceptanceCriteria": [
        "todos table with id, title, completed, created_at",
        "Migration runs successfully",
        "Schema matches specification"
      ],
      "passes": false
    },
    {
      "id": "US-003",
      "title": "Implement GET /todos endpoint",
      "acceptanceCriteria": [
        "Returns array of todos",
        "Supports pagination",
        "Tests pass for endpoint"
      ],
      "passes": false
    }
  ]
}</code></pre></div><p>The <code>passes: false</code> flag is crucial. As Ralph completes each task, it sets this to <code>true</code>. The loop continues until all tasks pass.</p><p>Task sizing is critical. Each task must:</p><ul><li><p><em>Complete in ONE iteration</em></p></li><li><p><em>Fit comfortably in the context window</em></p></li><li><p><em>Have verifiable acceptance criteria</em></p></li><li><p><em>Result in a working, committable chang</em>e</p></li></ul><blockquote><p><em><strong>If a task feels big, split it. &#8220;Build authentication&#8221; is too big. Split into: &#8220;Add users table&#8221; &#8594; &#8220;Create signup endpoint&#8221; &#8594; &#8220;Create login endpoint&#8221; &#8594; &#8220;Implement JWT tokens&#8221; &#8594; &#8220;Write auth tests.&#8221;</strong></em></p></blockquote><div><hr></div><h4>3) Memory System</h4><p>Ralph Loop has memory, both short-term and long-term.</p><p><strong>Short-term memory: progress.txt</strong></p><p>This file tracks what happened during the current sprint. </p><p>After each iteration, Claude appends:</p><ul><li><p><em>What was implemented</em></p></li><li><p><em>What files were changed</em></p></li><li><p><em>Any learnings or patterns discovered</em></p></li><li><p><em>Blockers encountered</em></p></li></ul><p>The next iteration reads this file. It knows what the previous iteration did, what worked, and what didn&#8217;t.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;markdown&quot;,&quot;nodeId&quot;:&quot;d66c7a4c-3f71-4d3f-a5ee-ac74c2f188fd&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-markdown">## Iteration 3 - 2024-01-15 14:32

**Task:** US-003 - Implement GET /todos endpoint

**Implemented:**
- Created routes/todos.ts
- Added GET /todos with pagination
- Added tests for endpoint

**Files Changed:**
- src/routes/todos.ts (new)
- src/routes/index.ts (updated)
- tests/todos.test.ts (new)

**Learnings:**
- Pagination requires offset and limit params
- Need to handle empty results case

**Next:** US-004 - POST endpoint</code></pre></div><p><strong>Long-term memory: agents.md</strong></p><p>This is permanent knowledge. Things that should persist beyond the current sprint.</p><blockquote><p><em><strong>You can have agents.md files in any folder. Claude reads them when working in that folder. They&#8217;re like sticky notes for future iterations (and future sprints)</strong></em></p></blockquote><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;markdown&quot;,&quot;nodeId&quot;:&quot;5dd4e5c8-49fe-45aa-a5cd-4e1ad68170cb&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-markdown"># Project Patterns

## API Routes
- All routes use Express Router
- Validation middleware goes before handler
- Error responses follow { error: string, code: number } format

## Testing
- Use vitest, not jest
- Mock database with in-memory SQLite
- Each test file needs afterEach cleanup

## Gotchas
- Don't use `any` type - breaks type checking
- Always await database operations
- Rate limiting middleware must be first</code></pre></div><p>The memory system is why Ralph gets smarter over iterations instead of repeating mistakes. Each iteration learns from the last.</p><div><hr></div><h4>4) Feedback Loop System</h4><p>Without feedback loops, Ralph Loop is just <em><strong>expensive guessing.</strong></em></p><p>Claude needs automated ways to verify its own work. </p><blockquote><p><em><strong>It can&#8217;t just look at code and decide it&#8217;s correct &#8212; it needs to run tests, check types, and execute builds, which is the real verification.</strong></em></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_!0BE5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20737a19-0953-4eeb-9bcc-e5a138172ea2_850x1567.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0BE5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20737a19-0953-4eeb-9bcc-e5a138172ea2_850x1567.png 424w, https://substackcdn.com/image/fetch/$s_!0BE5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20737a19-0953-4eeb-9bcc-e5a138172ea2_850x1567.png 848w, https://substackcdn.com/image/fetch/$s_!0BE5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20737a19-0953-4eeb-9bcc-e5a138172ea2_850x1567.png 1272w, https://substackcdn.com/image/fetch/$s_!0BE5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20737a19-0953-4eeb-9bcc-e5a138172ea2_850x1567.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0BE5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20737a19-0953-4eeb-9bcc-e5a138172ea2_850x1567.png" width="850" height="1567" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/20737a19-0953-4eeb-9bcc-e5a138172ea2_850x1567.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1567,&quot;width&quot;:850,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:47668,&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://newsletter.claudecodemasterclass.com/i/186188688?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20737a19-0953-4eeb-9bcc-e5a138172ea2_850x1567.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_!0BE5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20737a19-0953-4eeb-9bcc-e5a138172ea2_850x1567.png 424w, https://substackcdn.com/image/fetch/$s_!0BE5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20737a19-0953-4eeb-9bcc-e5a138172ea2_850x1567.png 848w, https://substackcdn.com/image/fetch/$s_!0BE5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20737a19-0953-4eeb-9bcc-e5a138172ea2_850x1567.png 1272w, https://substackcdn.com/image/fetch/$s_!0BE5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20737a19-0953-4eeb-9bcc-e5a138172ea2_850x1567.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 aria-hidden="true" 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><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>Build verification into every prompt:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;3cf5383a-b5fc-4f57-8eb3-a7bd085153d3&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">After implementing:
1. Run `npm run typecheck` &#8212; fix any errors
2. Run `npm run lint` &#8212; fix any warnings  
3. Run `npm test` &#8212; all tests must pass
4. Run `npm run build` &#8212; must compile

Only mark task complete when ALL checks pass.
If any fail, debug and fix before continuing.</code></pre></div><p><strong>Feedback types and what they catch:</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_!Atyv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c7067e0-091c-4fef-b7a2-8dff1ae8ed3e_1045x361.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Atyv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c7067e0-091c-4fef-b7a2-8dff1ae8ed3e_1045x361.png 424w, https://substackcdn.com/image/fetch/$s_!Atyv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c7067e0-091c-4fef-b7a2-8dff1ae8ed3e_1045x361.png 848w, https://substackcdn.com/image/fetch/$s_!Atyv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c7067e0-091c-4fef-b7a2-8dff1ae8ed3e_1045x361.png 1272w, https://substackcdn.com/image/fetch/$s_!Atyv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c7067e0-091c-4fef-b7a2-8dff1ae8ed3e_1045x361.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Atyv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c7067e0-091c-4fef-b7a2-8dff1ae8ed3e_1045x361.png" width="1045" height="361" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0c7067e0-091c-4fef-b7a2-8dff1ae8ed3e_1045x361.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:361,&quot;width&quot;:1045,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:21488,&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://newsletter.claudecodemasterclass.com/i/186188688?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c7067e0-091c-4fef-b7a2-8dff1ae8ed3e_1045x361.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_!Atyv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c7067e0-091c-4fef-b7a2-8dff1ae8ed3e_1045x361.png 424w, https://substackcdn.com/image/fetch/$s_!Atyv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c7067e0-091c-4fef-b7a2-8dff1ae8ed3e_1045x361.png 848w, https://substackcdn.com/image/fetch/$s_!Atyv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c7067e0-091c-4fef-b7a2-8dff1ae8ed3e_1045x361.png 1272w, https://substackcdn.com/image/fetch/$s_!Atyv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c7067e0-091c-4fef-b7a2-8dff1ae8ed3e_1045x361.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 aria-hidden="true" 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><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>For backend work, types + tests + build are usually sufficient.</p><blockquote><p><em><strong>For frontend work, add browser automation. Claude can&#8217;t &#8220;see&#8221; a UI by reading code. It needs to render pages and interact with elements to verify they work.</strong></em></p></blockquote><p>The feedback loop creates self-correction. Claude writes code, runs checks, sees failures, fixes them, runs checks again. </p><p></p><div class="pullquote"><p><strong>Next, let&#8217;s move from architecture to execution, the progression from manual runs to overnight autonomous operation.</strong></p></div><h2>Ralph Execution</h2><div><hr></div><p>There&#8217;s a right way and a wrong way to start using Ralph Loop.</p><blockquote><p><em><strong>The wrong way: install the plugin, fire off a complex prompt, go to sleep, wake up to chaos.</strong></em></p></blockquote><p>The right way: progress through levels, building understanding at each stage.</p><p>Jeffrey Huntley, the creator of Ralph, puts it simply: <strong>&#8220;Don&#8217;t start with the jackhammer. Learn the screwdriver first.&#8221;</strong></p><p>The screwdriver is a manual single runs while the jackhammer is an overnight autonomous operation.</p><p> You need to master each level before moving to the next.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ebwM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1142b442-54d4-4cb5-a6ad-70acf0341fcc_941x1011.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ebwM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1142b442-54d4-4cb5-a6ad-70acf0341fcc_941x1011.png 424w, https://substackcdn.com/image/fetch/$s_!ebwM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1142b442-54d4-4cb5-a6ad-70acf0341fcc_941x1011.png 848w, https://substackcdn.com/image/fetch/$s_!ebwM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1142b442-54d4-4cb5-a6ad-70acf0341fcc_941x1011.png 1272w, https://substackcdn.com/image/fetch/$s_!ebwM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1142b442-54d4-4cb5-a6ad-70acf0341fcc_941x1011.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ebwM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1142b442-54d4-4cb5-a6ad-70acf0341fcc_941x1011.png" width="941" height="1011" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1142b442-54d4-4cb5-a6ad-70acf0341fcc_941x1011.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1011,&quot;width&quot;:941,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:29958,&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://newsletter.claudecodemasterclass.com/i/186188688?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1142b442-54d4-4cb5-a6ad-70acf0341fcc_941x1011.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_!ebwM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1142b442-54d4-4cb5-a6ad-70acf0341fcc_941x1011.png 424w, https://substackcdn.com/image/fetch/$s_!ebwM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1142b442-54d4-4cb5-a6ad-70acf0341fcc_941x1011.png 848w, https://substackcdn.com/image/fetch/$s_!ebwM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1142b442-54d4-4cb5-a6ad-70acf0341fcc_941x1011.png 1272w, https://substackcdn.com/image/fetch/$s_!ebwM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1142b442-54d4-4cb5-a6ad-70acf0341fcc_941x1011.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 aria-hidden="true" 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><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><strong>Each level teaches you something you can't learn at the next level.</strong></em> </p><div><hr></div><h4>Level 1: Manual Single Runs (The Screwdriver)</h4><p>Start here with every new project.</p><p>At Level 1, you run one iteration at a time and watch everything. <br>You see what Claude does, what it gets right, what it gets wrong.</p><p><strong>Run Level 1:</strong></p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;b0f25177-61cd-4155-83f7-843ac62d6c30&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash"># Option 1: Direct command
cat prompt.md | claude

# Option 2: Using the plugin with max-iterations 1
/ralph-loop "your task" --completion-promise "DONE" --max-iterations 1</code></pre></div><p>After each iteration:</p><ul><li><p><em>Read the code Claude wrote</em></p></li><li><p><em>Check if it was committed properly</em></p></li><li><p><em>Verify the prd.json was updated</em></p></li><li><p><em>Look at progress.txt entries</em></p></li><li><p><em>Run the tests yourself</em></p></li></ul><p>Then run the next iteration.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5aFa!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4f90b6d-5ca9-4f8b-b2a7-4540b0779fb9_733x1048.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5aFa!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4f90b6d-5ca9-4f8b-b2a7-4540b0779fb9_733x1048.png 424w, https://substackcdn.com/image/fetch/$s_!5aFa!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4f90b6d-5ca9-4f8b-b2a7-4540b0779fb9_733x1048.png 848w, https://substackcdn.com/image/fetch/$s_!5aFa!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4f90b6d-5ca9-4f8b-b2a7-4540b0779fb9_733x1048.png 1272w, https://substackcdn.com/image/fetch/$s_!5aFa!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4f90b6d-5ca9-4f8b-b2a7-4540b0779fb9_733x1048.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5aFa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4f90b6d-5ca9-4f8b-b2a7-4540b0779fb9_733x1048.png" width="733" height="1048" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a4f90b6d-5ca9-4f8b-b2a7-4540b0779fb9_733x1048.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1048,&quot;width&quot;:733,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:23755,&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://newsletter.claudecodemasterclass.com/i/186188688?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4f90b6d-5ca9-4f8b-b2a7-4540b0779fb9_733x1048.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_!5aFa!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4f90b6d-5ca9-4f8b-b2a7-4540b0779fb9_733x1048.png 424w, https://substackcdn.com/image/fetch/$s_!5aFa!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4f90b6d-5ca9-4f8b-b2a7-4540b0779fb9_733x1048.png 848w, https://substackcdn.com/image/fetch/$s_!5aFa!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4f90b6d-5ca9-4f8b-b2a7-4540b0779fb9_733x1048.png 1272w, https://substackcdn.com/image/fetch/$s_!5aFa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4f90b6d-5ca9-4f8b-b2a7-4540b0779fb9_733x1048.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 aria-hidden="true" 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><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>What you&#8217;re learning at Level 1:</strong></p><ul><li><p>How Claude interprets your prompts</p></li><li><p>What patterns does your codebase trigger?</p></li><li><p>Where Claude gets confused</p></li><li><p>How long does each iteration take?</p></li><li><p>What the token cost looks like</p></li><li><p>Whether your criteria are clear enough</p></li></ul><div class="pullquote"><p><strong>This is important knowledge. You can&#8217;t debug overnight runs if you&#8217;ve never watched a single iteration complete.</strong></p></div><p><strong>When to move to Level 2:</strong></p><ul><li><p>You&#8217;ve run 10+ manual iterations</p></li><li><p>You understand the flow completely</p></li><li><p>You can predict what Claude will do</p></li><li><p>You know what success looks like</p></li><li><p>You know what failure looks like</p></li></ul><div><hr></div><h3>Level 2: Attended Loops (Power Drill)</h3><p>At Level 2, you let Ralph run multiple iterations</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;7ecb9b39-ffbe-49d6-b2f4-1d03366d3c90&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">/ralph-loop "your task" --completion-promise "DONE" --max-iterations 10</code></pre></div><p>Every few iterations, you look at:</p><ul><li><p><em>Is it picking tasks in the right order?</em></p></li><li><p><em>Are commits happening after each task?</em></p></li><li><p><em>Is progress.txt being updated?</em></p></li><li><p><em>Are the tests actually passing?</em></p></li><li><p><em>Any strange patterns emerging?</em></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_!jTxz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F396b1577-ab76-478e-90c5-be4e38b5e9ea_725x1099.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jTxz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F396b1577-ab76-478e-90c5-be4e38b5e9ea_725x1099.png 424w, https://substackcdn.com/image/fetch/$s_!jTxz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F396b1577-ab76-478e-90c5-be4e38b5e9ea_725x1099.png 848w, https://substackcdn.com/image/fetch/$s_!jTxz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F396b1577-ab76-478e-90c5-be4e38b5e9ea_725x1099.png 1272w, https://substackcdn.com/image/fetch/$s_!jTxz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F396b1577-ab76-478e-90c5-be4e38b5e9ea_725x1099.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jTxz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F396b1577-ab76-478e-90c5-be4e38b5e9ea_725x1099.png" width="725" height="1099" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/396b1577-ab76-478e-90c5-be4e38b5e9ea_725x1099.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1099,&quot;width&quot;:725,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:28123,&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://newsletter.claudecodemasterclass.com/i/186188688?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F396b1577-ab76-478e-90c5-be4e38b5e9ea_725x1099.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_!jTxz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F396b1577-ab76-478e-90c5-be4e38b5e9ea_725x1099.png 424w, https://substackcdn.com/image/fetch/$s_!jTxz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F396b1577-ab76-478e-90c5-be4e38b5e9ea_725x1099.png 848w, https://substackcdn.com/image/fetch/$s_!jTxz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F396b1577-ab76-478e-90c5-be4e38b5e9ea_725x1099.png 1272w, https://substackcdn.com/image/fetch/$s_!jTxz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F396b1577-ab76-478e-90c5-be4e38b5e9ea_725x1099.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 aria-hidden="true" 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><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 key at Level 2 is <strong>catching problems early.</strong></p><div class="pullquote"><p><strong>If something&#8217;s going wrong at iteration 3, you want to know before iteration 15. Pause, fix the issue (usually in the prompt or PRD), then resume.</strong></p></div><p><strong>What you&#8217;re learning at Level 2:</strong></p><ul><li><p>How the loop handles your specific codebase over time</p></li><li><p>What failure patterns look like in your setup</p></li><li><p>How quickly issues compound if not caught</p></li><li><p>What is your actual token cost per task</p></li><li><p>Whether your max-iterations is set appropriately</p></li></ul><p><strong>When to move to Level 3:</strong></p><ul><li><p>You&#8217;ve run 3-5 attended loops (50+ total iterations)</p></li><li><p>No surprises in the last 2-3 runs</p></li><li><p>You trust the setup</p></li><li><p>You know exactly what to check in the morning</p></li><li><p>You have a recovery plan if things go wrong</p></li></ul><div><hr></div><h3>Level 3: Unattended Overnight (Jackhammer)</h3><p>The goal is to set it running before bed, wake up to completed work.</p><p>But you only get here after mastering Levels 1 and 2.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!If5S!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe3be8f4-45b2-4c1e-bc75-f9d9b024104b_662x1025.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!If5S!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe3be8f4-45b2-4c1e-bc75-f9d9b024104b_662x1025.png 424w, https://substackcdn.com/image/fetch/$s_!If5S!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe3be8f4-45b2-4c1e-bc75-f9d9b024104b_662x1025.png 848w, https://substackcdn.com/image/fetch/$s_!If5S!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe3be8f4-45b2-4c1e-bc75-f9d9b024104b_662x1025.png 1272w, https://substackcdn.com/image/fetch/$s_!If5S!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe3be8f4-45b2-4c1e-bc75-f9d9b024104b_662x1025.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!If5S!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe3be8f4-45b2-4c1e-bc75-f9d9b024104b_662x1025.png" width="662" height="1025" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/be3be8f4-45b2-4c1e-bc75-f9d9b024104b_662x1025.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1025,&quot;width&quot;:662,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:32348,&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://newsletter.claudecodemasterclass.com/i/186188688?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe3be8f4-45b2-4c1e-bc75-f9d9b024104b_662x1025.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_!If5S!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe3be8f4-45b2-4c1e-bc75-f9d9b024104b_662x1025.png 424w, https://substackcdn.com/image/fetch/$s_!If5S!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe3be8f4-45b2-4c1e-bc75-f9d9b024104b_662x1025.png 848w, https://substackcdn.com/image/fetch/$s_!If5S!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe3be8f4-45b2-4c1e-bc75-f9d9b024104b_662x1025.png 1272w, https://substackcdn.com/image/fetch/$s_!If5S!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe3be8f4-45b2-4c1e-bc75-f9d9b024104b_662x1025.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 aria-hidden="true" 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><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>The overnight checklist:</strong></p><p>Before starting an unattended run:</p><ul><li><p><em><strong>PRD is complete and reviewed</strong></em></p></li><li><p><em><strong>All tasks are atomic with clear criteria</strong></em></p></li><li><p><em><strong>Feedback loops built into prompt (tests, types, lint)</strong></em></p></li><li><p><em><strong>Max iterations set (30-50 for overnight)</strong></em></p></li><li><p><em><strong>Git branch is clean and ready</strong></em></p></li><li><p><em><strong>Notification system configured (optional but helpful)</strong></em></p></li><li><p><em><strong>You know what &#8220;success&#8221; looks like in the morning</strong></em></p></li></ul><p><strong>Morning review process:</strong></p><ol><li><p>Check prd.json &#8212; how many tasks passed?</p></li><li><p>Read progress.txt &#8212; any errors or blockers?</p></li><li><p>Review git log &#8212; are commits sensible?</p></li><li><p>Run tests manually &#8212; do they pass?</p></li><li><p>Test the feature yourself &#8212; does it work?</p></li></ol><p>Expect 80-95% completion on a good run. Some edge cases always need human attention. </p><blockquote><p><em><strong>The goal isn&#8217;t perfect code but 8 hours of work done while you slept, with 1-2 hours of cleanup in the morning.</strong></em></p></blockquote><p><strong>Setting up notifications:</strong></p><p>You can add a notification when Ralph completes:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;52139657-2b65-4098-a927-13496edade22&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash"># Simple approach: notify after loop exits
/ralph-loop "task" --max-iterations 30 --completion-promise "DONE" &amp;&amp; \
  notify-send "Ralph complete" || notify-send "Ralph failed"</code></pre></div><p>Some developers set up WhatsApp or Slack notifications using simple scripts. Useful if you want to check progress before morning.</p><div><hr></div><h2>Ralph Practical Examples </h2><div><hr></div><p>Different projects need different approaches. Here are four patterns that work for specific use cases.</p><h3>Pattern 1: The Feature Builder</h3><p>Building new features from a PRD</p><blockquote><p><em><strong>This is the classic Ralph Loop use case. You have a feature to build, you break it into tasks, and Ralph builds it piece by piece.</strong></em></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_!-aCo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecb53ecb-2342-4b2b-bf23-d3e9a05368ca_662x1025.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-aCo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecb53ecb-2342-4b2b-bf23-d3e9a05368ca_662x1025.png 424w, https://substackcdn.com/image/fetch/$s_!-aCo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecb53ecb-2342-4b2b-bf23-d3e9a05368ca_662x1025.png 848w, https://substackcdn.com/image/fetch/$s_!-aCo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecb53ecb-2342-4b2b-bf23-d3e9a05368ca_662x1025.png 1272w, https://substackcdn.com/image/fetch/$s_!-aCo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecb53ecb-2342-4b2b-bf23-d3e9a05368ca_662x1025.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-aCo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecb53ecb-2342-4b2b-bf23-d3e9a05368ca_662x1025.png" width="662" height="1025" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ecb53ecb-2342-4b2b-bf23-d3e9a05368ca_662x1025.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1025,&quot;width&quot;:662,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:32348,&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://newsletter.claudecodemasterclass.com/i/186188688?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecb53ecb-2342-4b2b-bf23-d3e9a05368ca_662x1025.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_!-aCo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecb53ecb-2342-4b2b-bf23-d3e9a05368ca_662x1025.png 424w, https://substackcdn.com/image/fetch/$s_!-aCo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecb53ecb-2342-4b2b-bf23-d3e9a05368ca_662x1025.png 848w, https://substackcdn.com/image/fetch/$s_!-aCo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecb53ecb-2342-4b2b-bf23-d3e9a05368ca_662x1025.png 1272w, https://substackcdn.com/image/fetch/$s_!-aCo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecb53ecb-2342-4b2b-bf23-d3e9a05368ca_662x1025.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 aria-hidden="true" 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><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>Prompt template:</strong></p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;markdown&quot;,&quot;nodeId&quot;:&quot;402182bc-567c-4f79-a150-d513c8f5411e&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-markdown">You are an autonomous coding agent working on this project.

Your task:
1. Read prd.json to find the highest priority task where passes is false
2. Implement that single task
3. Run tests to verify: npm run typecheck &amp;&amp; npm test &amp;&amp; npm run build
4. If tests pass, update prd.json to set passes: true
5. Append progress to progress.txt
6. Commit your changes with a descriptive message

Only work on ONE task per iteration.

When ALL tasks in prd.json have passes: true, output &lt;promise&gt;COMPLETE&lt;/promise&gt;</code></pre></div><p><strong>Example project:</strong> REST API with 15 endpoints</p><ul><li><p>Task 1-3: Project setup, database, basic structure</p></li><li><p>Task 4-10: Individual endpoints (one per task)</p></li><li><p>Task 11-13: Validation, error handling, edge cases</p></li><li><p>Task 14-15: Documentation, final tests</p></li></ul><p><strong>Expected:</strong> 15-20 iterations, 2-4 hours unattended</p><div><hr></div><h3>Pattern 2: Test-Until-Green</h3><p>Improving test coverage on existing code</p><blockquote><p><em><strong>You have code that works but lacks tests. Ralph writes tests until coverage hits your target.</strong></em></p></blockquote><p><strong>Prompt template:</strong></p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;markdown&quot;,&quot;nodeId&quot;:&quot;694a25f3-b0ce-4add-8855-1b9912cdc8c2&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-markdown">Your task: Improve test coverage for this codebase.

Current coverage: Check with `npm run coverage`
Target coverage: 80%

Process:
1. Run coverage report to identify untested code
2. Write tests for the most critical untested function
3. Run tests to verify they pass
4. Check new coverage percentage
5. Append progress to progress.txt

Only write tests for ONE function per iteration.

Output &lt;promise&gt;COMPLETE&lt;/promise&gt; when coverage reaches 80% or higher.</code></pre></div><p><strong>What makes this pattern work:</strong></p><ul><li><p>Clear binary goal (coverage &gt;= 80%)</p></li><li><p>Claude can verify progress with each iteration</p></li><li><p>Natural small units (one function = one iteration)</p></li><li><p>Built-in feedback loop (coverage report)</p></li></ul><p><strong>Expected:</strong> Varies by codebase. 10-30 iterations typically.</p><div><hr></div><h3>Pattern 3: Multi-Persona Review</h3><p><strong>Best for:</strong> Code quality and production readiness</p><blockquote><p><em><strong>Instead of just building, Claude rotates through different reviewer personas. Each persona catches different issues.</strong></em></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_!NI2X!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5781fd21-a731-4246-8b9c-5796391969b0_670x780.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NI2X!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5781fd21-a731-4246-8b9c-5796391969b0_670x780.png 424w, https://substackcdn.com/image/fetch/$s_!NI2X!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5781fd21-a731-4246-8b9c-5796391969b0_670x780.png 848w, https://substackcdn.com/image/fetch/$s_!NI2X!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5781fd21-a731-4246-8b9c-5796391969b0_670x780.png 1272w, https://substackcdn.com/image/fetch/$s_!NI2X!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5781fd21-a731-4246-8b9c-5796391969b0_670x780.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NI2X!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5781fd21-a731-4246-8b9c-5796391969b0_670x780.png" width="670" height="780" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5781fd21-a731-4246-8b9c-5796391969b0_670x780.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:780,&quot;width&quot;:670,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:29284,&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://newsletter.claudecodemasterclass.com/i/186188688?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5781fd21-a731-4246-8b9c-5796391969b0_670x780.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_!NI2X!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5781fd21-a731-4246-8b9c-5796391969b0_670x780.png 424w, https://substackcdn.com/image/fetch/$s_!NI2X!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5781fd21-a731-4246-8b9c-5796391969b0_670x780.png 848w, https://substackcdn.com/image/fetch/$s_!NI2X!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5781fd21-a731-4246-8b9c-5796391969b0_670x780.png 1272w, https://substackcdn.com/image/fetch/$s_!NI2X!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5781fd21-a731-4246-8b9c-5796391969b0_670x780.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 aria-hidden="true" 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><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>Prompt template:</strong></p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;markdown&quot;,&quot;nodeId&quot;:&quot;2f9f73a0-373b-4598-8464-08dd06071182&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-markdown">You are reviewing and improving this codebase by rotating through personas.

Personas:
1. Code Reviewer: Check for bugs, edge cases, code quality
2. Solution Architect: Check structure, dependencies, patterns  
3. QA Engineer: Check test coverage, error handling
4. Security Reviewer: Check for vulnerabilities, input validation
5. Front End Dev: Check UI/UX, accessibility, responsiveness

For each iteration:
1. Select the next persona in rotation
2. Review the codebase from that persona's perspective
3. Identify ONE issue to fix
4. Fix the issue
5. Commit with message: "[Persona] - description of fix"
6. Log the review in progress.txt

Continue until ALL personas complete 2 full cycles finding no issues.

When that condition is met, output &lt;promise&gt;COMPLETE&lt;/promise&gt;</code></pre></div><p><strong>Why this works:</strong></p><p>Different personas catch different problems. </p><ul><li><p>Code reviewer sees bugs. </p></li><li><p>Security reviewer sees vulnerabilities. </p></li><li><p>QA engineer sees missing tests.</p></li></ul><p>Rotating through all of them creates comprehensive coverage that single-pass reviews miss.</p><p><strong>Expected:</strong> 15-30 iterations for thorough review</p><div><hr></div><h3>Pattern 4: Proof of Concept Validator</h3><p><strong>Best for:</strong> Quickly validating ideas, testing tech stacks</p><blockquote><p><em><strong>You want to see if an idea works before committing to full implementation. Ralph builds a rough version fast.</strong></em></p></blockquote><p><strong>Prompt template:</strong></p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;markdown&quot;,&quot;nodeId&quot;:&quot;7458659b-3ab3-45b3-bd3e-a5ca1274b1a1&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-markdown">Build a proof of concept for: [IDEA]

Tech stack: [YOUR CHOICES]

This is a POC, not production code. Priorities:
1. Core functionality works
2. Happy path is complete  
3. Basic error handling
4. Demonstrates the concept

NOT priorities (skip for now):
- Comprehensive tests
- Edge case handling
- Production security
- Perfect code quality

Tasks:
1. Set up project structure
2. Implement core feature
3. Add basic UI (if applicable)
4. Verify it works end-to-end

Output &lt;promise&gt;COMPLETE&lt;/promise&gt; when the POC demonstrates the core concept working.</code></pre></div><p><strong>When to use this pattern:</strong></p><ul><li><p>Validating a new architecture</p></li><li><p>Testing if a tech stack works for your use case</p></li><li><p>Building a demo for stakeholders</p></li><li><p>Exploring a new API or service</p></li></ul><p><strong>Key difference:</strong> Lower quality bar. You&#8217;re not building production code. You&#8217;re answering the question &#8220;Does this approach work?&#8221;</p><p><strong>Expected:</strong> 5-10 iterations for basic POC</p><div><hr></div><p><strong>Choosing the Right Pattern</strong></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ydOw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d03b36c-21ff-4686-ada5-680537010464_700x226.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ydOw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d03b36c-21ff-4686-ada5-680537010464_700x226.png 424w, https://substackcdn.com/image/fetch/$s_!ydOw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d03b36c-21ff-4686-ada5-680537010464_700x226.png 848w, https://substackcdn.com/image/fetch/$s_!ydOw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d03b36c-21ff-4686-ada5-680537010464_700x226.png 1272w, https://substackcdn.com/image/fetch/$s_!ydOw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d03b36c-21ff-4686-ada5-680537010464_700x226.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ydOw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d03b36c-21ff-4686-ada5-680537010464_700x226.png" width="700" height="226" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4d03b36c-21ff-4686-ada5-680537010464_700x226.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:226,&quot;width&quot;:700,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:8223,&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://newsletter.claudecodemasterclass.com/i/186188688?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d03b36c-21ff-4686-ada5-680537010464_700x226.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_!ydOw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d03b36c-21ff-4686-ada5-680537010464_700x226.png 424w, https://substackcdn.com/image/fetch/$s_!ydOw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d03b36c-21ff-4686-ada5-680537010464_700x226.png 848w, https://substackcdn.com/image/fetch/$s_!ydOw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d03b36c-21ff-4686-ada5-680537010464_700x226.png 1272w, https://substackcdn.com/image/fetch/$s_!ydOw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d03b36c-21ff-4686-ada5-680537010464_700x226.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><blockquote><p><em><strong>You can also combine patterns. Build with Feature Builder, then polish with Multi-Persona Review.</strong></em></p></blockquote><div><hr></div><h2>Final Thoughts</h2><p>Ralph Loop is simple at its core - <em><strong>a while loop, a  stop hook, and a completion promise.</strong></em></p><p>But mastery requires:</p><ul><li><p>Understanding the fundamentals</p></li><li><p>Building the right architecture</p></li><li><p>Progressing through the levels</p></li><li><p>Choosing the right pattern</p></li></ul><div><hr></div><p></p><h3>Resources</h3><blockquote><p><strong>PS:  I launched the <a href="https://github.com/Njengah/claude-code-masterclass">Claude Code Masterclass Git repo</a>, where I will be adding all these code snippets and templates for quick and easy access.</strong></p></blockquote><p></p><div class="pullquote"><p><em><strong>Finally, this newsletter belongs to all of us. If there&#8217;s something that can make it better or something you don&#8217;t like, please let me know.</strong></em></p><p style="text-align: center;"><em><strong>See you in the next one.</strong></em></p></div><h1><strong>Claude Code Masterclass</strong></h1><p>Let&#8217;s Build It Together</p><p>&#8212; <strong>Joe Njenga</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_!omEw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ae0adc7-1d78-4ba6-952f-b35ba7afd0b3_1478x780.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!omEw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ae0adc7-1d78-4ba6-952f-b35ba7afd0b3_1478x780.png 424w, https://substackcdn.com/image/fetch/$s_!omEw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ae0adc7-1d78-4ba6-952f-b35ba7afd0b3_1478x780.png 848w, https://substackcdn.com/image/fetch/$s_!omEw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ae0adc7-1d78-4ba6-952f-b35ba7afd0b3_1478x780.png 1272w, https://substackcdn.com/image/fetch/$s_!omEw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ae0adc7-1d78-4ba6-952f-b35ba7afd0b3_1478x780.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!omEw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ae0adc7-1d78-4ba6-952f-b35ba7afd0b3_1478x780.png" width="1456" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1ae0adc7-1d78-4ba6-952f-b35ba7afd0b3_1478x780.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:62678,&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://newsletter.claudecodemasterclass.com/i/186188688?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ae0adc7-1d78-4ba6-952f-b35ba7afd0b3_1478x780.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_!omEw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ae0adc7-1d78-4ba6-952f-b35ba7afd0b3_1478x780.png 424w, https://substackcdn.com/image/fetch/$s_!omEw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ae0adc7-1d78-4ba6-952f-b35ba7afd0b3_1478x780.png 848w, https://substackcdn.com/image/fetch/$s_!omEw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ae0adc7-1d78-4ba6-952f-b35ba7afd0b3_1478x780.png 1272w, https://substackcdn.com/image/fetch/$s_!omEw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ae0adc7-1d78-4ba6-952f-b35ba7afd0b3_1478x780.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 aria-hidden="true" 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><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><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.claudecodemasterclass.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 Claude Code Masterclass! 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>]]></content:encoded></item><item><title><![CDATA[Last Week In Claude Code #3 — /btw, /voice, 1M Context, Diagrams & Charts]]></title><description><![CDATA[Chat While Coding, Talk to Build, and Create Stunning Visuals]]></description><link>https://newsletter.claudecodemasterclass.com/p/last-week-in-claude-code-3-btw-voice</link><guid isPermaLink="false">https://newsletter.claudecodemasterclass.com/p/last-week-in-claude-code-3-btw-voice</guid><dc:creator><![CDATA[Joe]]></dc:creator><pubDate>Tue, 17 Mar 2026 21:35:08 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!JXTw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e38c356-4660-4e8c-a5c4-a656a7283d1c_1200x600.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_!JXTw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e38c356-4660-4e8c-a5c4-a656a7283d1c_1200x600.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JXTw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e38c356-4660-4e8c-a5c4-a656a7283d1c_1200x600.png 424w, https://substackcdn.com/image/fetch/$s_!JXTw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e38c356-4660-4e8c-a5c4-a656a7283d1c_1200x600.png 848w, https://substackcdn.com/image/fetch/$s_!JXTw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e38c356-4660-4e8c-a5c4-a656a7283d1c_1200x600.png 1272w, https://substackcdn.com/image/fetch/$s_!JXTw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e38c356-4660-4e8c-a5c4-a656a7283d1c_1200x600.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!JXTw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e38c356-4660-4e8c-a5c4-a656a7283d1c_1200x600.png" width="1200" height="600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1e38c356-4660-4e8c-a5c4-a656a7283d1c_1200x600.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:600,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:87638,&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://newsletter.claudecodemasterclass.com/i/191279894?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e38c356-4660-4e8c-a5c4-a656a7283d1c_1200x600.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_!JXTw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e38c356-4660-4e8c-a5c4-a656a7283d1c_1200x600.png 424w, https://substackcdn.com/image/fetch/$s_!JXTw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e38c356-4660-4e8c-a5c4-a656a7283d1c_1200x600.png 848w, https://substackcdn.com/image/fetch/$s_!JXTw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e38c356-4660-4e8c-a5c4-a656a7283d1c_1200x600.png 1272w, https://substackcdn.com/image/fetch/$s_!JXTw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e38c356-4660-4e8c-a5c4-a656a7283d1c_1200x600.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 aria-hidden="true" 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><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>Hello, thank you for being part of our Claude Code Masterclass community.</p><blockquote><p><em><strong>We are now 28k+ members </strong>(and I&#8217;m honestly blown away by your support, your pledges, and the incredible energy you&#8217;ve brought) <strong>&#8212; I&#8217;m grateful for every single one of you!</strong></em></p></blockquote><p>I am working day and night to deliver the best practical Claude Code education material.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.claudecodemasterclass.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 Claude Code Masterclass! 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><div class="pullquote"><p style="text-align: center;"><strong>This is the #3 issue in the <a href="https://newsletter.claudecodemasterclass.com/t/last-week-in-claude-code">Last Week In Claude Code series</a> &#8212; /btw, /voice full test, 1M context window, and diagrams &amp; charts.</strong></p></div><p>Last week brought some useful Claude Code updates: <em><strong>a command to chat while Claude works, voice mode now rolled out to everyone (I built a full app with it), a 1 million context window for Opus and Sonnet, and a diagrams feature that might replace Canva for technical visuals.</strong></em></p><div><hr></div><h2>What Happened Last Week In Claude Code?</h2><div><hr></div><h3>#1) /btw Command &#8212; Chat While Claude Works</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9Msd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff91483bb-da05-4da7-99dc-50970a003815_1548x846.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9Msd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff91483bb-da05-4da7-99dc-50970a003815_1548x846.gif 424w, https://substackcdn.com/image/fetch/$s_!9Msd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff91483bb-da05-4da7-99dc-50970a003815_1548x846.gif 848w, https://substackcdn.com/image/fetch/$s_!9Msd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff91483bb-da05-4da7-99dc-50970a003815_1548x846.gif 1272w, https://substackcdn.com/image/fetch/$s_!9Msd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff91483bb-da05-4da7-99dc-50970a003815_1548x846.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9Msd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff91483bb-da05-4da7-99dc-50970a003815_1548x846.gif" width="1456" height="796" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f91483bb-da05-4da7-99dc-50970a003815_1548x846.gif&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;:181319,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/191279894?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff91483bb-da05-4da7-99dc-50970a003815_1548x846.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!9Msd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff91483bb-da05-4da7-99dc-50970a003815_1548x846.gif 424w, https://substackcdn.com/image/fetch/$s_!9Msd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff91483bb-da05-4da7-99dc-50970a003815_1548x846.gif 848w, https://substackcdn.com/image/fetch/$s_!9Msd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff91483bb-da05-4da7-99dc-50970a003815_1548x846.gif 1272w, https://substackcdn.com/image/fetch/$s_!9Msd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff91483bb-da05-4da7-99dc-50970a003815_1548x846.gif 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 aria-hidden="true" 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><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>Claude Code /btw lets you ask side questions while Claude is working on a task.</p><blockquote><p><strong>If you&#8217;ve been mid-task, watching Claude work through a complex operation, and suddenly have a question, you either wait or interrupt. </strong></p></blockquote><p>The /btw command fixes this.</p><h4>How It Works</h4><pre><code><code>/btw &lt;question&gt;</code></code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DNCQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc18310f6-cdfd-46d2-8238-a3b942f8a200_1548x846.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DNCQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc18310f6-cdfd-46d2-8238-a3b942f8a200_1548x846.gif 424w, https://substackcdn.com/image/fetch/$s_!DNCQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc18310f6-cdfd-46d2-8238-a3b942f8a200_1548x846.gif 848w, https://substackcdn.com/image/fetch/$s_!DNCQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc18310f6-cdfd-46d2-8238-a3b942f8a200_1548x846.gif 1272w, https://substackcdn.com/image/fetch/$s_!DNCQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc18310f6-cdfd-46d2-8238-a3b942f8a200_1548x846.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DNCQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc18310f6-cdfd-46d2-8238-a3b942f8a200_1548x846.gif" width="1456" height="796" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c18310f6-cdfd-46d2-8238-a3b942f8a200_1548x846.gif&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;:90703,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/191279894?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc18310f6-cdfd-46d2-8238-a3b942f8a200_1548x846.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!DNCQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc18310f6-cdfd-46d2-8238-a3b942f8a200_1548x846.gif 424w, https://substackcdn.com/image/fetch/$s_!DNCQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc18310f6-cdfd-46d2-8238-a3b942f8a200_1548x846.gif 848w, https://substackcdn.com/image/fetch/$s_!DNCQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc18310f6-cdfd-46d2-8238-a3b942f8a200_1548x846.gif 1272w, https://substackcdn.com/image/fetch/$s_!DNCQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc18310f6-cdfd-46d2-8238-a3b942f8a200_1548x846.gif 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 aria-hidden="true" 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><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>For example:</p><pre><code><code>/btw what does retry logic do?</code></code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PTr5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5738ef3a-402c-4cc4-86fe-b57921f1cca4_1581x888.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PTr5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5738ef3a-402c-4cc4-86fe-b57921f1cca4_1581x888.gif 424w, https://substackcdn.com/image/fetch/$s_!PTr5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5738ef3a-402c-4cc4-86fe-b57921f1cca4_1581x888.gif 848w, https://substackcdn.com/image/fetch/$s_!PTr5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5738ef3a-402c-4cc4-86fe-b57921f1cca4_1581x888.gif 1272w, https://substackcdn.com/image/fetch/$s_!PTr5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5738ef3a-402c-4cc4-86fe-b57921f1cca4_1581x888.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PTr5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5738ef3a-402c-4cc4-86fe-b57921f1cca4_1581x888.gif" width="1456" height="818" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5738ef3a-402c-4cc4-86fe-b57921f1cca4_1581x888.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:818,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:677418,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/191279894?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5738ef3a-402c-4cc4-86fe-b57921f1cca4_1581x888.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!PTr5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5738ef3a-402c-4cc4-86fe-b57921f1cca4_1581x888.gif 424w, https://substackcdn.com/image/fetch/$s_!PTr5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5738ef3a-402c-4cc4-86fe-b57921f1cca4_1581x888.gif 848w, https://substackcdn.com/image/fetch/$s_!PTr5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5738ef3a-402c-4cc4-86fe-b57921f1cca4_1581x888.gif 1272w, https://substackcdn.com/image/fetch/$s_!PTr5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5738ef3a-402c-4cc4-86fe-b57921f1cca4_1581x888.gif 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 aria-hidden="true" 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><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>Claude opens an overlay with the answer. Your main task continues running in the background.</p><p>Press Space, Enter, or Escape to dismiss it and return to your session.</p><h4>Key Features</h4><ul><li><p><strong>Runs in parallel</strong> &#8212; Your main task doesn&#8217;t pause or wait</p></li><li><p><strong>Overlay response</strong> &#8212; Answer appears in a pop-up, not inline</p></li><li><p><strong>No history pollution</strong> &#8212; The side question doesn&#8217;t get added to your main conversation context</p></li><li><p><strong>Single-turn only</strong> &#8212; You get one response, no back-and-forth</p></li><li><p><strong>No tool access</strong> &#8212; The response comes from Claude&#8217;s knowledge and current session context</p></li></ul><h4>Requirements</h4><p>Available in Claude Code version 2.1.72 and later.</p><pre><code><code>claude --version
claude update
</code></code></pre><p>I tested /btw with real examples and documented the setup and use cases.</p><p><em><strong>You can learn more here &#8212; <a href="https://medium.com/@joe.njenga/i-tried-new-claude-code-btw-command-now-you-can-chat-as-you-code-fbcbd80de7c6">I Tried (New) Claude Code /btw Command (Now You Can Chat As You Code)</a></strong></em></p><div><hr></div><h2>#2) /voice Full Test &#8212; I Built a Complete App With Voice</h2><p>Anthropic rolled out Claude Code /voice to all users. I put it through a real build.</p><div><hr></div><blockquote><p><em><strong>Last week I introduced /voice, but didn&#8217;t have access. Now I do &#8212; and I built a food ordering system entirely with voice.</strong></em></p></blockquote><h4>The Build</h4><ul><li><p><strong>Backend:</strong> FastAPI with menu and order endpoints</p></li><li><p><strong>Frontend:</strong> Vanilla JavaScript to display the menu and place orders</p></li></ul><p>This forced me to dictate real code, handle multiple files, and see how fast voice coding is.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jK91!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F425831f0-0095-41fe-ae74-4716d23b4233_1872x927.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jK91!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F425831f0-0095-41fe-ae74-4716d23b4233_1872x927.gif 424w, https://substackcdn.com/image/fetch/$s_!jK91!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F425831f0-0095-41fe-ae74-4716d23b4233_1872x927.gif 848w, https://substackcdn.com/image/fetch/$s_!jK91!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F425831f0-0095-41fe-ae74-4716d23b4233_1872x927.gif 1272w, https://substackcdn.com/image/fetch/$s_!jK91!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F425831f0-0095-41fe-ae74-4716d23b4233_1872x927.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jK91!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F425831f0-0095-41fe-ae74-4716d23b4233_1872x927.gif" width="1456" height="721" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/425831f0-0095-41fe-ae74-4716d23b4233_1872x927.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:721,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:228206,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/191279894?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F425831f0-0095-41fe-ae74-4716d23b4233_1872x927.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!jK91!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F425831f0-0095-41fe-ae74-4716d23b4233_1872x927.gif 424w, https://substackcdn.com/image/fetch/$s_!jK91!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F425831f0-0095-41fe-ae74-4716d23b4233_1872x927.gif 848w, https://substackcdn.com/image/fetch/$s_!jK91!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F425831f0-0095-41fe-ae74-4716d23b4233_1872x927.gif 1272w, https://substackcdn.com/image/fetch/$s_!jK91!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F425831f0-0095-41fe-ae74-4716d23b4233_1872x927.gif 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 aria-hidden="true" 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><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><h4>How It Works</h4><p>Type <code>/voice</code> to toggle it on.</p><ul><li><p><strong>Push-to-Talk:</strong> Hold Space, speak, release. Your words stream in real-time at your cursor.</p></li><li><p><strong>Hybrid Prompts:</strong> Type half a prompt, hold Space to voice the messy middle, keep typing.</p></li></ul><pre><code><code>Fix the auth middleware in [hold Space] &#8212; the token validation 
is failing silently when the expiry timestamp is malformed, 
it should throw a proper 401 [release] &#8212; and add a test for it.
</code></code></pre><h4>What I Found</h4><p>The transcription picked up &#8220;manual endpoint&#8221; instead of &#8220;menu endpoint&#8221; <em><strong>&#8212; but Claude understood the intent and generated the correct code.</strong></em></p><blockquote><p><em><strong>25 lines of clean backend code with proper type hints. The frontend came together just as fast.</strong></em></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_!xw1a!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7acda7a6-7443-4f56-a5e3-8f4225477773_1054x1246.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xw1a!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7acda7a6-7443-4f56-a5e3-8f4225477773_1054x1246.gif 424w, https://substackcdn.com/image/fetch/$s_!xw1a!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7acda7a6-7443-4f56-a5e3-8f4225477773_1054x1246.gif 848w, https://substackcdn.com/image/fetch/$s_!xw1a!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7acda7a6-7443-4f56-a5e3-8f4225477773_1054x1246.gif 1272w, https://substackcdn.com/image/fetch/$s_!xw1a!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7acda7a6-7443-4f56-a5e3-8f4225477773_1054x1246.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xw1a!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7acda7a6-7443-4f56-a5e3-8f4225477773_1054x1246.gif" width="1054" height="1246" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7acda7a6-7443-4f56-a5e3-8f4225477773_1054x1246.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1246,&quot;width&quot;:1054,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:207651,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/191279894?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7acda7a6-7443-4f56-a5e3-8f4225477773_1054x1246.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!xw1a!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7acda7a6-7443-4f56-a5e3-8f4225477773_1054x1246.gif 424w, https://substackcdn.com/image/fetch/$s_!xw1a!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7acda7a6-7443-4f56-a5e3-8f4225477773_1054x1246.gif 848w, https://substackcdn.com/image/fetch/$s_!xw1a!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7acda7a6-7443-4f56-a5e3-8f4225477773_1054x1246.gif 1272w, https://substackcdn.com/image/fetch/$s_!xw1a!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7acda7a6-7443-4f56-a5e3-8f4225477773_1054x1246.gif 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 aria-hidden="true" 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><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><h4>What You Get</h4><ul><li><p><strong>No extra cost</strong> &#8212; Voice transcription doesn&#8217;t count against rate limits</p></li><li><p><strong>Cross-platform</strong> &#8212; Works on macOS, Linux, and Windows</p></li><li><p><strong>No cloud dependency</strong> &#8212; Runs locally inside your Claude Code session</p></li></ul><p>Voice mode is now available to everyone. Check your Claude Code welcome screen.</p><blockquote><p><em><strong>You can learn more here &#8212; <a href="https://medium.com/@joe.njenga/i-finally-tested-claude-code-voice-its-faster-than-typing-don-t-waste-time-96b4acf7faf1">I Finally Tested Claude Code /voice &#8212; It&#8217;s Faster than Typing (Don&#8217;t Waste Time)</a></strong></em></p></blockquote><div><hr></div><h2>#3) 1 Million Context Window &#8212; Opus 4.6 &amp; Sonnet 4.6</h2><p>Anthropic added a 1-million-context window to Opus 4.6 and Sonnet 4.6.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ffzU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c8dadff-779a-40c6-9b81-ebaeb69f74a7_1045x597.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ffzU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c8dadff-779a-40c6-9b81-ebaeb69f74a7_1045x597.png 424w, https://substackcdn.com/image/fetch/$s_!ffzU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c8dadff-779a-40c6-9b81-ebaeb69f74a7_1045x597.png 848w, https://substackcdn.com/image/fetch/$s_!ffzU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c8dadff-779a-40c6-9b81-ebaeb69f74a7_1045x597.png 1272w, https://substackcdn.com/image/fetch/$s_!ffzU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c8dadff-779a-40c6-9b81-ebaeb69f74a7_1045x597.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ffzU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c8dadff-779a-40c6-9b81-ebaeb69f74a7_1045x597.png" width="1045" height="597" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9c8dadff-779a-40c6-9b81-ebaeb69f74a7_1045x597.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:597,&quot;width&quot;:1045,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:105123,&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://newsletter.claudecodemasterclass.com/i/191279894?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c8dadff-779a-40c6-9b81-ebaeb69f74a7_1045x597.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_!ffzU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c8dadff-779a-40c6-9b81-ebaeb69f74a7_1045x597.png 424w, https://substackcdn.com/image/fetch/$s_!ffzU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c8dadff-779a-40c6-9b81-ebaeb69f74a7_1045x597.png 848w, https://substackcdn.com/image/fetch/$s_!ffzU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c8dadff-779a-40c6-9b81-ebaeb69f74a7_1045x597.png 1272w, https://substackcdn.com/image/fetch/$s_!ffzU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c8dadff-779a-40c6-9b81-ebaeb69f74a7_1045x597.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 aria-hidden="true" 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><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><div><hr></div><blockquote><p><em><strong>This is now available by default for Max, Team, and Enterprise plans.</strong></em></p></blockquote><h4>What Changed</h4><ul><li><p><strong>Opus 4.6</strong> &#8212; 1M context window by default (previously required extra usage)</p></li><li><p><strong>Sonnet 4.6</strong> &#8212; Also gets 1M context</p></li><li><p><strong>Output tokens</strong> &#8212; Opus 4.6 now outputs 64k tokens by default, up to 128k max</p></li></ul><p>1 million tokens is <em><strong>roughly 700,000 words or about 2,500 pages of text.</strong></em></p><p>You can now:</p><ul><li><p>Load entire codebases into a single session</p></li><li><p>Work with massive documentation without truncation</p></li><li><p>Maintain longer conversation history without compaction</p></li></ul><h4>Who Gets It</h4><ul><li><p><strong>Max plan</strong> &#8212; Yes</p></li><li><p><strong>Team plan</strong> &#8212; Yes</p></li><li><p><strong>Enterprise plan</strong> &#8212; Yes</p></li><li><p><strong>Pro plan</strong> &#8212; Check your settings</p></li></ul><h4>Version</h4><p>Available in Claude Code 2.1.75 and later.</p><blockquote><p><em><strong>You can learn more here &#8212; <a href="https://medium.com/ai-software-engineer/anthropic-adds-1-million-context-window-to-opus-4-6-sonnet-4-6-now-you-can-code-at-scale-f5a932ba347c">Anthropic Adds 1 Million Context Window to Opus 4.6 &amp; Sonnet 4.6</a></strong></em></p></blockquote><div><hr></div><h2>#4) Diagrams &amp; Charts &#8212; I Tested 21 Prompts (Goodbye Canva)</h2><div><hr></div><blockquote><p>Claude can now create complex diagrams and charts. <em><strong>I tested 21 prompts, from simple to complex.</strong></em></p></blockquote><p>The results were impressive.</p><h4>One Line Prompt</h4><pre><code><code>Show me how a JWT authentication flow works from login to protected API access</code></code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dFQE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43c187c0-626e-493c-b9a9-796044a939aa_1009x1055.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dFQE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43c187c0-626e-493c-b9a9-796044a939aa_1009x1055.gif 424w, https://substackcdn.com/image/fetch/$s_!dFQE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43c187c0-626e-493c-b9a9-796044a939aa_1009x1055.gif 848w, https://substackcdn.com/image/fetch/$s_!dFQE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43c187c0-626e-493c-b9a9-796044a939aa_1009x1055.gif 1272w, https://substackcdn.com/image/fetch/$s_!dFQE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43c187c0-626e-493c-b9a9-796044a939aa_1009x1055.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dFQE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43c187c0-626e-493c-b9a9-796044a939aa_1009x1055.gif" width="1009" height="1055" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/43c187c0-626e-493c-b9a9-796044a939aa_1009x1055.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1055,&quot;width&quot;:1009,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:906735,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/191279894?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43c187c0-626e-493c-b9a9-796044a939aa_1009x1055.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!dFQE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43c187c0-626e-493c-b9a9-796044a939aa_1009x1055.gif 424w, https://substackcdn.com/image/fetch/$s_!dFQE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43c187c0-626e-493c-b9a9-796044a939aa_1009x1055.gif 848w, https://substackcdn.com/image/fetch/$s_!dFQE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43c187c0-626e-493c-b9a9-796044a939aa_1009x1055.gif 1272w, https://substackcdn.com/image/fetch/$s_!dFQE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43c187c0-626e-493c-b9a9-796044a939aa_1009x1055.gif 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 aria-hidden="true" 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><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>Claude generated a complete visual diagram. This will change how I approach technical content.</p><h4>What I Tested</h4><p><strong>Flowcharts &amp; System Architecture</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_!Jh_W!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22fdb74a-ce63-49ee-9f2d-3313491117ee_1009x1055.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Jh_W!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22fdb74a-ce63-49ee-9f2d-3313491117ee_1009x1055.gif 424w, https://substackcdn.com/image/fetch/$s_!Jh_W!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22fdb74a-ce63-49ee-9f2d-3313491117ee_1009x1055.gif 848w, https://substackcdn.com/image/fetch/$s_!Jh_W!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22fdb74a-ce63-49ee-9f2d-3313491117ee_1009x1055.gif 1272w, https://substackcdn.com/image/fetch/$s_!Jh_W!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22fdb74a-ce63-49ee-9f2d-3313491117ee_1009x1055.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Jh_W!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22fdb74a-ce63-49ee-9f2d-3313491117ee_1009x1055.gif" width="1009" height="1055" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/22fdb74a-ce63-49ee-9f2d-3313491117ee_1009x1055.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1055,&quot;width&quot;:1009,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:628948,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/191279894?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22fdb74a-ce63-49ee-9f2d-3313491117ee_1009x1055.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Jh_W!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22fdb74a-ce63-49ee-9f2d-3313491117ee_1009x1055.gif 424w, https://substackcdn.com/image/fetch/$s_!Jh_W!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22fdb74a-ce63-49ee-9f2d-3313491117ee_1009x1055.gif 848w, https://substackcdn.com/image/fetch/$s_!Jh_W!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22fdb74a-ce63-49ee-9f2d-3313491117ee_1009x1055.gif 1272w, https://substackcdn.com/image/fetch/$s_!Jh_W!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22fdb74a-ce63-49ee-9f2d-3313491117ee_1009x1055.gif 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 aria-hidden="true" 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><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><ul><li><p>CI/CD pipeline from commit to production</p></li><li><p>Microservices order flow for e-commerce</p></li><li><p>AWS serverless architecture for real-time chat</p></li><li><p>Three-tier web architecture with caching and CDN</p></li><li><p>Kubernetes container orchestration</p></li></ul><div><hr></div><p><strong>Data Visualizations</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_!YuVX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79600c20-b381-4195-9e1f-08623f1abd97_1009x1055.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YuVX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79600c20-b381-4195-9e1f-08623f1abd97_1009x1055.gif 424w, https://substackcdn.com/image/fetch/$s_!YuVX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79600c20-b381-4195-9e1f-08623f1abd97_1009x1055.gif 848w, https://substackcdn.com/image/fetch/$s_!YuVX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79600c20-b381-4195-9e1f-08623f1abd97_1009x1055.gif 1272w, https://substackcdn.com/image/fetch/$s_!YuVX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79600c20-b381-4195-9e1f-08623f1abd97_1009x1055.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YuVX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79600c20-b381-4195-9e1f-08623f1abd97_1009x1055.gif" width="1009" height="1055" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/79600c20-b381-4195-9e1f-08623f1abd97_1009x1055.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1055,&quot;width&quot;:1009,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:379678,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/191279894?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79600c20-b381-4195-9e1f-08623f1abd97_1009x1055.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!YuVX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79600c20-b381-4195-9e1f-08623f1abd97_1009x1055.gif 424w, https://substackcdn.com/image/fetch/$s_!YuVX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79600c20-b381-4195-9e1f-08623f1abd97_1009x1055.gif 848w, https://substackcdn.com/image/fetch/$s_!YuVX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79600c20-b381-4195-9e1f-08623f1abd97_1009x1055.gif 1272w, https://substackcdn.com/image/fetch/$s_!YuVX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79600c20-b381-4195-9e1f-08623f1abd97_1009x1055.gif 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 aria-hidden="true" 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><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><ul><li><p>Performance benchmark bar charts (Python, Go, Rust, Node.js)</p></li><li><p>Cloud costs pie chart by service category</p></li><li><p>JavaScript framework popularity line chart </p></li></ul><div><hr></div><p><strong>Database &amp; Data Flow</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_!h18G!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa9c53a5-0ab4-4125-8073-4bdaf2cd4604_1009x1055.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!h18G!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa9c53a5-0ab4-4125-8073-4bdaf2cd4604_1009x1055.gif 424w, https://substackcdn.com/image/fetch/$s_!h18G!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa9c53a5-0ab4-4125-8073-4bdaf2cd4604_1009x1055.gif 848w, https://substackcdn.com/image/fetch/$s_!h18G!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa9c53a5-0ab4-4125-8073-4bdaf2cd4604_1009x1055.gif 1272w, https://substackcdn.com/image/fetch/$s_!h18G!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa9c53a5-0ab4-4125-8073-4bdaf2cd4604_1009x1055.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!h18G!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa9c53a5-0ab4-4125-8073-4bdaf2cd4604_1009x1055.gif" width="1009" height="1055" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/aa9c53a5-0ab4-4125-8073-4bdaf2cd4604_1009x1055.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1055,&quot;width&quot;:1009,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:596493,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/191279894?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa9c53a5-0ab4-4125-8073-4bdaf2cd4604_1009x1055.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!h18G!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa9c53a5-0ab4-4125-8073-4bdaf2cd4604_1009x1055.gif 424w, https://substackcdn.com/image/fetch/$s_!h18G!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa9c53a5-0ab4-4125-8073-4bdaf2cd4604_1009x1055.gif 848w, https://substackcdn.com/image/fetch/$s_!h18G!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa9c53a5-0ab4-4125-8073-4bdaf2cd4604_1009x1055.gif 1272w, https://substackcdn.com/image/fetch/$s_!h18G!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa9c53a5-0ab4-4125-8073-4bdaf2cd4604_1009x1055.gif 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 aria-hidden="true" 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><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><ul><li><p>Event sourcing and CQRS for banking systems</p></li><li><p>Social media ERD (users, posts, comments, followers)</p></li><li><p>Real-time analytics pipeline with Kafka and Spark</p></li></ul><div><hr></div><p><strong>Algorithm &amp; Concept Explainers</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_!hiYb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb123b7c5-c58a-4ed4-b451-9cd63e16ba90_1009x1055.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hiYb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb123b7c5-c58a-4ed4-b451-9cd63e16ba90_1009x1055.gif 424w, https://substackcdn.com/image/fetch/$s_!hiYb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb123b7c5-c58a-4ed4-b451-9cd63e16ba90_1009x1055.gif 848w, https://substackcdn.com/image/fetch/$s_!hiYb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb123b7c5-c58a-4ed4-b451-9cd63e16ba90_1009x1055.gif 1272w, https://substackcdn.com/image/fetch/$s_!hiYb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb123b7c5-c58a-4ed4-b451-9cd63e16ba90_1009x1055.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hiYb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb123b7c5-c58a-4ed4-b451-9cd63e16ba90_1009x1055.gif" width="1009" height="1055" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b123b7c5-c58a-4ed4-b451-9cd63e16ba90_1009x1055.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1055,&quot;width&quot;:1009,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3215884,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/191279894?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb123b7c5-c58a-4ed4-b451-9cd63e16ba90_1009x1055.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!hiYb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb123b7c5-c58a-4ed4-b451-9cd63e16ba90_1009x1055.gif 424w, https://substackcdn.com/image/fetch/$s_!hiYb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb123b7c5-c58a-4ed4-b451-9cd63e16ba90_1009x1055.gif 848w, https://substackcdn.com/image/fetch/$s_!hiYb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb123b7c5-c58a-4ed4-b451-9cd63e16ba90_1009x1055.gif 1272w, https://substackcdn.com/image/fetch/$s_!hiYb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb123b7c5-c58a-4ed4-b451-9cd63e16ba90_1009x1055.gif 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 aria-hidden="true" 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><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><ul><li><p>Binary search tree balancing</p></li><li><p>OAuth 2.0 authorization flow</p></li><li><p>DNS resolution step by step</p></li></ul><div><hr></div><p><strong>Interactive Explainers</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_!tjNc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95889609-fae6-4428-9f00-d126e21ada54_1009x997.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tjNc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95889609-fae6-4428-9f00-d126e21ada54_1009x997.gif 424w, https://substackcdn.com/image/fetch/$s_!tjNc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95889609-fae6-4428-9f00-d126e21ada54_1009x997.gif 848w, https://substackcdn.com/image/fetch/$s_!tjNc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95889609-fae6-4428-9f00-d126e21ada54_1009x997.gif 1272w, https://substackcdn.com/image/fetch/$s_!tjNc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95889609-fae6-4428-9f00-d126e21ada54_1009x997.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!tjNc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95889609-fae6-4428-9f00-d126e21ada54_1009x997.gif" width="1009" height="997" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/95889609-fae6-4428-9f00-d126e21ada54_1009x997.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:997,&quot;width&quot;:1009,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:544181,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/191279894?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95889609-fae6-4428-9f00-d126e21ada54_1009x997.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!tjNc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95889609-fae6-4428-9f00-d126e21ada54_1009x997.gif 424w, https://substackcdn.com/image/fetch/$s_!tjNc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95889609-fae6-4428-9f00-d126e21ada54_1009x997.gif 848w, https://substackcdn.com/image/fetch/$s_!tjNc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95889609-fae6-4428-9f00-d126e21ada54_1009x997.gif 1272w, https://substackcdn.com/image/fetch/$s_!tjNc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95889609-fae6-4428-9f00-d126e21ada54_1009x997.gif 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 aria-hidden="true" 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><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><ul><li><p>JavaScript garbage collection</p></li><li><p>Neural network backpropagation</p></li><li><p>Hash map collision handling</p></li><li><p>SQL vs NoSQL decision tree</p></li></ul><p>For developers, technical writers, and content creators &#8212; this is what you need.</p><p>No more switching to Canva or Figma for technical diagrams. One prompt, instant visual.</p><div><hr></div><blockquote><p><em><strong>You can learn more here &#8212; <a href="https://medium.com/ai-software-engineer/claude-can-now-create-sophisticated-diagrams-charts-goodbye-canva-600d8c524b1c">Claude Can Now Create Complex Diagrams &#8212; I Tested 21 Prompts (Goodbye Canva!</a></strong></em></p></blockquote><div><hr></div><p style="text-align: center;"><em><strong>Finally, this newsletter belongs to all of us. If there&#8217;s something that can make it better or something you don&#8217;t like, please let me know. </strong></em></p><div class="pullquote"><p><strong>See you in the next issue of Last Week In Claude Code</strong>.</p></div><h1><strong>Claude Code Masterclass</strong></h1><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!w6KM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e961bd2-21ba-40f9-9cd4-d678b29f2c13_1478x780.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!w6KM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e961bd2-21ba-40f9-9cd4-d678b29f2c13_1478x780.png 424w, https://substackcdn.com/image/fetch/$s_!w6KM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e961bd2-21ba-40f9-9cd4-d678b29f2c13_1478x780.png 848w, https://substackcdn.com/image/fetch/$s_!w6KM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e961bd2-21ba-40f9-9cd4-d678b29f2c13_1478x780.png 1272w, https://substackcdn.com/image/fetch/$s_!w6KM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e961bd2-21ba-40f9-9cd4-d678b29f2c13_1478x780.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!w6KM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e961bd2-21ba-40f9-9cd4-d678b29f2c13_1478x780.png" width="1456" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5e961bd2-21ba-40f9-9cd4-d678b29f2c13_1478x780.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:62678,&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://newsletter.claudecodemasterclass.com/i/191279894?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e961bd2-21ba-40f9-9cd4-d678b29f2c13_1478x780.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_!w6KM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e961bd2-21ba-40f9-9cd4-d678b29f2c13_1478x780.png 424w, https://substackcdn.com/image/fetch/$s_!w6KM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e961bd2-21ba-40f9-9cd4-d678b29f2c13_1478x780.png 848w, https://substackcdn.com/image/fetch/$s_!w6KM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e961bd2-21ba-40f9-9cd4-d678b29f2c13_1478x780.png 1272w, https://substackcdn.com/image/fetch/$s_!w6KM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e961bd2-21ba-40f9-9cd4-d678b29f2c13_1478x780.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 aria-hidden="true" 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><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>Let&#8217;s Build It Together</p><p><strong>&#8212; Joe Njenga</strong></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.claudecodemasterclass.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 Claude Code Masterclass! 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></p>]]></content:encoded></item><item><title><![CDATA[Last Week In Claude Code #2 — Skill-Creator, Ultrathink, /voice, Ollama Subagents]]></title><description><![CDATA[Test Your Skills, Talk to Claude, and Run Free Parallel Agents]]></description><link>https://newsletter.claudecodemasterclass.com/p/last-week-in-claude-code-2-skill</link><guid isPermaLink="false">https://newsletter.claudecodemasterclass.com/p/last-week-in-claude-code-2-skill</guid><dc:creator><![CDATA[Joe]]></dc:creator><pubDate>Tue, 10 Mar 2026 17:01:48 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!v_wC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f35ec92-3c3b-4a29-ba4d-0ec15e58d43f_1200x600.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_!v_wC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f35ec92-3c3b-4a29-ba4d-0ec15e58d43f_1200x600.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!v_wC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f35ec92-3c3b-4a29-ba4d-0ec15e58d43f_1200x600.png 424w, https://substackcdn.com/image/fetch/$s_!v_wC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f35ec92-3c3b-4a29-ba4d-0ec15e58d43f_1200x600.png 848w, https://substackcdn.com/image/fetch/$s_!v_wC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f35ec92-3c3b-4a29-ba4d-0ec15e58d43f_1200x600.png 1272w, https://substackcdn.com/image/fetch/$s_!v_wC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f35ec92-3c3b-4a29-ba4d-0ec15e58d43f_1200x600.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!v_wC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f35ec92-3c3b-4a29-ba4d-0ec15e58d43f_1200x600.png" width="1200" height="600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4f35ec92-3c3b-4a29-ba4d-0ec15e58d43f_1200x600.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:600,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:99227,&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://newsletter.claudecodemasterclass.com/i/190520706?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f35ec92-3c3b-4a29-ba4d-0ec15e58d43f_1200x600.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_!v_wC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f35ec92-3c3b-4a29-ba4d-0ec15e58d43f_1200x600.png 424w, https://substackcdn.com/image/fetch/$s_!v_wC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f35ec92-3c3b-4a29-ba4d-0ec15e58d43f_1200x600.png 848w, https://substackcdn.com/image/fetch/$s_!v_wC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f35ec92-3c3b-4a29-ba4d-0ec15e58d43f_1200x600.png 1272w, https://substackcdn.com/image/fetch/$s_!v_wC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f35ec92-3c3b-4a29-ba4d-0ec15e58d43f_1200x600.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 aria-hidden="true" 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><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>Hello, thank you for being part of our Claude Code Masterclass community. </p><blockquote><p><em><strong>We are now 21k+ members </strong>(still overwhelmed by your support, your pledges, and good vibes) <strong>&#8212; it&#8217;s unbelievable, and I&#8217;m grateful for every one of you!</strong></em></p></blockquote><p>I am working day and night to deliver the best practical Claude Code education material.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.claudecodemasterclass.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 Claude Code Masterclass! 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><div class="pullquote"><p><strong>This is the #2 issue in the <a href="https://newsletter.claudecodemasterclass.com/t/last-week-in-claude-code">Last Week In Claude Code series </a>&#8212; Claude Code skill-creator, /ultrathink, /voice, and Ollama subagents</strong></p></div><p>Last week brought some major Claude Code updates:  a framework to<em><strong> test if your agent skills work, Ultrathink made a comeback, native voice input, and a way to run subagents</strong></em> without burning tokens.</p><div><hr></div><h2>What Happened Last Week In Claude Code?</h2><div><hr></div><h3>#1) Skill-Creator Plugin &#8212; Finally Test If Your Agent Skills Work</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!SfmS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe54e0a42-b725-4444-889a-ad9bc137ba10_1249x703.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SfmS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe54e0a42-b725-4444-889a-ad9bc137ba10_1249x703.png 424w, https://substackcdn.com/image/fetch/$s_!SfmS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe54e0a42-b725-4444-889a-ad9bc137ba10_1249x703.png 848w, https://substackcdn.com/image/fetch/$s_!SfmS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe54e0a42-b725-4444-889a-ad9bc137ba10_1249x703.png 1272w, https://substackcdn.com/image/fetch/$s_!SfmS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe54e0a42-b725-4444-889a-ad9bc137ba10_1249x703.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!SfmS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe54e0a42-b725-4444-889a-ad9bc137ba10_1249x703.png" width="1249" height="703" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e54e0a42-b725-4444-889a-ad9bc137ba10_1249x703.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:703,&quot;width&quot;:1249,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:140542,&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://newsletter.claudecodemasterclass.com/i/190520706?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe54e0a42-b725-4444-889a-ad9bc137ba10_1249x703.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_!SfmS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe54e0a42-b725-4444-889a-ad9bc137ba10_1249x703.png 424w, https://substackcdn.com/image/fetch/$s_!SfmS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe54e0a42-b725-4444-889a-ad9bc137ba10_1249x703.png 848w, https://substackcdn.com/image/fetch/$s_!SfmS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe54e0a42-b725-4444-889a-ad9bc137ba10_1249x703.png 1272w, https://substackcdn.com/image/fetch/$s_!SfmS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe54e0a42-b725-4444-889a-ad9bc137ba10_1249x703.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 aria-hidden="true" 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><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>Agent skills are notorious for fooling you into believing they work &#8212; but sometimes they fail, and the next day they work fine.</p><blockquote><p><em><strong>Anthropic released the Skill-Creator plugin &#8212; a testing framework to measure and refine your agent skills.</strong></em></p></blockquote><div><hr></div><h3>What It Does</h3><ul><li><p><strong>Evals</strong> &#8212; Define test prompts and expectations, then check if outputs match</p></li><li><p><strong>Benchmarks</strong> &#8212; Track pass rate, elapsed time, and token usage</p></li><li><p><strong>A/B Comparisons</strong> &#8212; Blind testing between skill versions</p></li><li><p><strong>Description Optimizer</strong> &#8212; Improves skill triggering accuracy</p></li></ul><div><hr></div><h3>Two Types of Skills</h3><ul><li><p><strong>Capability Uplift Skills</strong> &#8212; Help Claude do something the base model can&#8217;t do consistently (PDF, DOCX, PPTX creation)</p></li><li><p><strong>Encoded Preference Skills</strong> &#8212; Document your team&#8217;s workflows so Claude follows your process every time</p></li></ul><div><hr></div><h3>Real Results</h3><p>Anthropic tested the PDF skill on non-fillable forms:</p><ul><li><p>Test With Skill Without Skill Pass Rate 5/5 (100%) 2/5 (40%)</p></li><li><p>The skill clearly adds value where the base model fails.</p></li></ul><div class="pullquote"><p><strong>I ran the same test on PDFs and found similar results, which was eye-opening: </strong></p></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!O4U7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51e2309b-714e-4633-8930-d188bcb1b4a8_1063x802.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!O4U7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51e2309b-714e-4633-8930-d188bcb1b4a8_1063x802.gif 424w, https://substackcdn.com/image/fetch/$s_!O4U7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51e2309b-714e-4633-8930-d188bcb1b4a8_1063x802.gif 848w, https://substackcdn.com/image/fetch/$s_!O4U7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51e2309b-714e-4633-8930-d188bcb1b4a8_1063x802.gif 1272w, https://substackcdn.com/image/fetch/$s_!O4U7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51e2309b-714e-4633-8930-d188bcb1b4a8_1063x802.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!O4U7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51e2309b-714e-4633-8930-d188bcb1b4a8_1063x802.gif" width="1063" height="802" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/51e2309b-714e-4633-8930-d188bcb1b4a8_1063x802.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:802,&quot;width&quot;:1063,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:299331,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/190520706?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51e2309b-714e-4633-8930-d188bcb1b4a8_1063x802.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!O4U7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51e2309b-714e-4633-8930-d188bcb1b4a8_1063x802.gif 424w, https://substackcdn.com/image/fetch/$s_!O4U7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51e2309b-714e-4633-8930-d188bcb1b4a8_1063x802.gif 848w, https://substackcdn.com/image/fetch/$s_!O4U7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51e2309b-714e-4633-8930-d188bcb1b4a8_1063x802.gif 1272w, https://substackcdn.com/image/fetch/$s_!O4U7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51e2309b-714e-4633-8930-d188bcb1b4a8_1063x802.gif 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 aria-hidden="true" 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><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><div><hr></div><h3>Installing the Plugin</h3><pre><code><code># Add the marketplace
/plugin marketplace add anthropics/skills

# Install skill-creator
/plugin install skill-creator@anthropic-agent-skills
</code></code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!iI5c!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fef220e-b851-4c93-9ddf-e67721fa63a4_1039x575.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!iI5c!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fef220e-b851-4c93-9ddf-e67721fa63a4_1039x575.gif 424w, https://substackcdn.com/image/fetch/$s_!iI5c!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fef220e-b851-4c93-9ddf-e67721fa63a4_1039x575.gif 848w, https://substackcdn.com/image/fetch/$s_!iI5c!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fef220e-b851-4c93-9ddf-e67721fa63a4_1039x575.gif 1272w, https://substackcdn.com/image/fetch/$s_!iI5c!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fef220e-b851-4c93-9ddf-e67721fa63a4_1039x575.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!iI5c!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fef220e-b851-4c93-9ddf-e67721fa63a4_1039x575.gif" width="1039" height="575" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3fef220e-b851-4c93-9ddf-e67721fa63a4_1039x575.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:575,&quot;width&quot;:1039,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:182182,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/190520706?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fef220e-b851-4c93-9ddf-e67721fa63a4_1039x575.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!iI5c!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fef220e-b851-4c93-9ddf-e67721fa63a4_1039x575.gif 424w, https://substackcdn.com/image/fetch/$s_!iI5c!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fef220e-b851-4c93-9ddf-e67721fa63a4_1039x575.gif 848w, https://substackcdn.com/image/fetch/$s_!iI5c!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fef220e-b851-4c93-9ddf-e67721fa63a4_1039x575.gif 1272w, https://substackcdn.com/image/fetch/$s_!iI5c!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fef220e-b851-4c93-9ddf-e67721fa63a4_1039x575.gif 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 aria-hidden="true" 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><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><div><hr></div><p>I tested the PDF skill on a job application form and documented the entire process &#8212; what worked, what broke, and how the plugin measures it.</p><p><em><strong>You can learn more here &#8212; <a href="https://medium.com/ai-software-engineer/anthropic-new-skill-creator-measures-if-your-agent-skills-work-no-more-guesswork-840a108e505f">Claude Code Skill-Creator Measures If Your Agent Skills Work</a></strong></em></p><div><hr></div><h2>#2) Ultrathink Is Back &#8212; Version 2.1.68</h2><p>A fresh Claude Code update reintroduced Ultrathink, changing how you manage thinking effort.</p><div><hr></div><h3>What Changed in 2.1.68</h3><ul><li><p><em><strong>Opus 4.6</strong> now defaults to medium effort for Max and Team subscribers</em></p></li><li><p><em><strong>Opus 4 and 4.1</strong> are gone from the first-party API &#8212; users are moved to Opus 4.6</em></p></li><li><p><em><strong>Ultrathink</strong> is back after being removed in an earlier release</em></p></li></ul><blockquote><p><em><strong>High effort on every prompt was overkill. Renaming a variable doesn&#8217;t need deep thinking.</strong></em></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_!W0uE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa38ef534-1c19-46d2-a1d0-6edf7f2709a8_1023x496.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!W0uE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa38ef534-1c19-46d2-a1d0-6edf7f2709a8_1023x496.gif 424w, https://substackcdn.com/image/fetch/$s_!W0uE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa38ef534-1c19-46d2-a1d0-6edf7f2709a8_1023x496.gif 848w, https://substackcdn.com/image/fetch/$s_!W0uE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa38ef534-1c19-46d2-a1d0-6edf7f2709a8_1023x496.gif 1272w, https://substackcdn.com/image/fetch/$s_!W0uE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa38ef534-1c19-46d2-a1d0-6edf7f2709a8_1023x496.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!W0uE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa38ef534-1c19-46d2-a1d0-6edf7f2709a8_1023x496.gif" width="1023" height="496" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a38ef534-1c19-46d2-a1d0-6edf7f2709a8_1023x496.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:496,&quot;width&quot;:1023,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:191987,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/190520706?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa38ef534-1c19-46d2-a1d0-6edf7f2709a8_1023x496.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!W0uE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa38ef534-1c19-46d2-a1d0-6edf7f2709a8_1023x496.gif 424w, https://substackcdn.com/image/fetch/$s_!W0uE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa38ef534-1c19-46d2-a1d0-6edf7f2709a8_1023x496.gif 848w, https://substackcdn.com/image/fetch/$s_!W0uE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa38ef534-1c19-46d2-a1d0-6edf7f2709a8_1023x496.gif 1272w, https://substackcdn.com/image/fetch/$s_!W0uE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa38ef534-1c19-46d2-a1d0-6edf7f2709a8_1023x496.gif 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 aria-hidden="true" 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><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><blockquote><p><em><strong>Medium effort handles 90% of daily tasks. But that other 10% &#8212; architecture decisions, complex debugging, security-critical code &#8212; needs more.</strong></em></p></blockquote><p>That&#8217;s where Ultrathink makes sense. </p><div><hr></div><h3>Effort Levels</h3><p>Method Effort Level Duration Default (2.1.68) Medium Permanent /model &#8594; High High Permanent ultrathink High One turn only</p><div><hr></div><h3>How Ultrathink Works</h3><blockquote><p><em><strong>Type </strong></em><code>ultrathink</code><em><strong> before your prompt. Claude switches to high effort for that one turn, then returns to your default.</strong></em></p></blockquote><p>It only works if your current effort is medium or low. If you&#8217;re already on high, it does nothing.</p><div><hr></div><h3>My Test</h3><p>I gave Claude Code the same debugging task:  <em><strong>Node.js API with a race condition.</strong></em></p><ul><li><p><em><strong>Medium effort:</strong> Identified the cause, suggested a fix. </em></p></li><li><p><em><strong>Ultrathink:</strong> Walked through the entire request lifecycle, found two separate issues (the race condition + a token expiry edge case), and outlined a testing strategy.</em></p></li></ul><blockquote><p><em><strong>From my findings, Medium gives you the answer. Ultrathink gives you the answer, plus things you didn&#8217;t ask about.</strong></em></p></blockquote><div><hr></div><p><em><strong>You can learn more here &#8212; <a href="https://medium.com/@joe.njenga/claude-code-ultrathink-is-back-in-new-update-i-just-tested-it-f54d938d382f">Claude Code Ultrathink Is Back In New Update (I Just Tested It)</a></strong></em></p><div><hr></div><h2>#3) Native /voice Mode &#8212; Stop Typing, Start Talking</h2><p>Claude Code introduced voice mode last week. You can now use the <code>/voice</code> command.</p><div class="pullquote"><p><strong>You no longer need MCP workarounds or paying for OpenAI Whisper API calls. It&#8217;s built in.</strong></p></div><h3>How It Works</h3><p>Type <code>/voice</code> to toggle it on.</p><ul><li><p><strong>Push-to-Talk:</strong> Hold Space, speak, release. Your words stream in real-time at your cursor.</p></li><li><p><strong>Hybrid Prompts:</strong> Type half a prompt, hold Space to voice the messy middle, keep typing.</p></li></ul><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;a0dc5aec-61ca-4abb-aefd-2b27d8aa5ceb&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">Fix the auth middleware in [hold Space] &#8212; the token validation 
is failing silently when the expiry timestamp is malformed, 
it should throw a proper 401 [release] &#8212; and add a test for it.
</code></pre></div><div><hr></div><h3>What You Get</h3><ul><li><p><em><strong>No extra cost</strong> &#8212; Voice transcription doesn&#8217;t count against rate limits</em></p></li><li><p><em><strong>Cross-platform</strong> &#8212; Works on macOS, Linux, and Windows</em></p></li><li><p><em><strong>No cloud dependency</strong> &#8212; Runs locally inside your Claude Code sessio</em>n</p></li></ul><div><hr></div><h3>Roll Out </h3><p>It&#8217;s rolling out to ~5% of users first.</p><blockquote><p><em><strong>Check your Claude Code welcome screen &#8212; if you&#8217;re in the rollout, you&#8217;ll see a note confirming voice mode is available.</strong></em></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_!xLmN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F941c9138-d98c-4e6a-82ca-1e703c598b34_1548x847.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xLmN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F941c9138-d98c-4e6a-82ca-1e703c598b34_1548x847.gif 424w, https://substackcdn.com/image/fetch/$s_!xLmN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F941c9138-d98c-4e6a-82ca-1e703c598b34_1548x847.gif 848w, https://substackcdn.com/image/fetch/$s_!xLmN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F941c9138-d98c-4e6a-82ca-1e703c598b34_1548x847.gif 1272w, https://substackcdn.com/image/fetch/$s_!xLmN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F941c9138-d98c-4e6a-82ca-1e703c598b34_1548x847.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xLmN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F941c9138-d98c-4e6a-82ca-1e703c598b34_1548x847.gif" width="1456" height="797" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/941c9138-d98c-4e6a-82ca-1e703c598b34_1548x847.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:797,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:164504,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/190520706?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F941c9138-d98c-4e6a-82ca-1e703c598b34_1548x847.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!xLmN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F941c9138-d98c-4e6a-82ca-1e703c598b34_1548x847.gif 424w, https://substackcdn.com/image/fetch/$s_!xLmN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F941c9138-d98c-4e6a-82ca-1e703c598b34_1548x847.gif 848w, https://substackcdn.com/image/fetch/$s_!xLmN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F941c9138-d98c-4e6a-82ca-1e703c598b34_1548x847.gif 1272w, https://substackcdn.com/image/fetch/$s_!xLmN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F941c9138-d98c-4e6a-82ca-1e703c598b34_1548x847.gif 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 aria-hidden="true" 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><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><blockquote><p><em><strong>If not, as in my case above, the rollout is expanding over the coming weeks. I&#8217;ll run a full build test to show you how it works. </strong></em></p></blockquote><div><hr></div><p><em><strong>You can learn more here &#8212; <a href="https://medium.com/@joe.njenga/claude-code-voice-is-here-voice-you-can-now-talk-stop-typing-43a586f26f56">Claude Code Voice Is Here /voice (You Can Now Talk &amp; Stop Typing)</a></strong></em></p><div><hr></div><h2>#4) Ollama Subagents &amp; Web Search &#8212; Run Parallel Agents at No Cost</h2><p>You can now run Claude Code subagents and web search using Ollama cloud models &#8212; without burning your Anthropic tokens.</p><div><hr></div><h3>One Command to Launch</h3><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;7cf8b93a-5d73-494c-8704-7926d1398387&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">ollama launch claude --model minimax-m2.5:cloud
</code></pre></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mnZ9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a463294-e151-4ee1-8d76-6078f3756dd9_1029x582.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mnZ9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a463294-e151-4ee1-8d76-6078f3756dd9_1029x582.gif 424w, https://substackcdn.com/image/fetch/$s_!mnZ9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a463294-e151-4ee1-8d76-6078f3756dd9_1029x582.gif 848w, https://substackcdn.com/image/fetch/$s_!mnZ9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a463294-e151-4ee1-8d76-6078f3756dd9_1029x582.gif 1272w, https://substackcdn.com/image/fetch/$s_!mnZ9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a463294-e151-4ee1-8d76-6078f3756dd9_1029x582.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mnZ9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a463294-e151-4ee1-8d76-6078f3756dd9_1029x582.gif" width="1029" height="582" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9a463294-e151-4ee1-8d76-6078f3756dd9_1029x582.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:582,&quot;width&quot;:1029,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:110567,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/190520706?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a463294-e151-4ee1-8d76-6078f3756dd9_1029x582.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!mnZ9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a463294-e151-4ee1-8d76-6078f3756dd9_1029x582.gif 424w, https://substackcdn.com/image/fetch/$s_!mnZ9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a463294-e151-4ee1-8d76-6078f3756dd9_1029x582.gif 848w, https://substackcdn.com/image/fetch/$s_!mnZ9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a463294-e151-4ee1-8d76-6078f3756dd9_1029x582.gif 1272w, https://substackcdn.com/image/fetch/$s_!mnZ9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a463294-e151-4ee1-8d76-6078f3756dd9_1029x582.gif 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 aria-hidden="true" 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><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>Works with any model on Ollama&#8217;s cloud.</p><div><hr></div><h3>Subagents in Action</h3><p>I built an expense tracker using three parallel subagents:</p><ul><li><p><em><strong>frontend-ui-expert</strong> &#8212; HTML, CSS, vanilla JS (11.4k tokens)</em></p></li><li><p><em><strong>Backend agent</strong> &#8212; FastAPI routes and models (11.0k tokens)</em></p></li><li><p><em><strong>Project structure agent</strong> &#8212; Files and README (10.8k tokens)</em></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_!EmAu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4db4039-a7d1-48c6-8fb6-30cb39f303cd_1029x1216.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EmAu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4db4039-a7d1-48c6-8fb6-30cb39f303cd_1029x1216.gif 424w, https://substackcdn.com/image/fetch/$s_!EmAu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4db4039-a7d1-48c6-8fb6-30cb39f303cd_1029x1216.gif 848w, https://substackcdn.com/image/fetch/$s_!EmAu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4db4039-a7d1-48c6-8fb6-30cb39f303cd_1029x1216.gif 1272w, https://substackcdn.com/image/fetch/$s_!EmAu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4db4039-a7d1-48c6-8fb6-30cb39f303cd_1029x1216.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EmAu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4db4039-a7d1-48c6-8fb6-30cb39f303cd_1029x1216.gif" width="1029" height="1216" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c4db4039-a7d1-48c6-8fb6-30cb39f303cd_1029x1216.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1216,&quot;width&quot;:1029,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:211808,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/190520706?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4db4039-a7d1-48c6-8fb6-30cb39f303cd_1029x1216.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!EmAu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4db4039-a7d1-48c6-8fb6-30cb39f303cd_1029x1216.gif 424w, https://substackcdn.com/image/fetch/$s_!EmAu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4db4039-a7d1-48c6-8fb6-30cb39f303cd_1029x1216.gif 848w, https://substackcdn.com/image/fetch/$s_!EmAu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4db4039-a7d1-48c6-8fb6-30cb39f303cd_1029x1216.gif 1272w, https://substackcdn.com/image/fetch/$s_!EmAu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4db4039-a7d1-48c6-8fb6-30cb39f303cd_1029x1216.gif 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 aria-hidden="true" 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><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>All three ran simultaneously. Project completed in minutes.</p><p>Then I spun up three more subagents to audit the code. They found real issues:</p><ul><li><p><em><strong>CORS vulnerability (allow_credentials=True with wildcard origins)</strong></em></p></li><li><p><em><strong>Deprecated datetime. utcnow</strong></em></p></li><li><p><em><strong>Float for monetary values instead of Decimal</strong></em></p></li></ul><div><hr></div><h3>Web Search Works Too</h3><p>Subagents can research topics in parallel:</p><pre><code><code>spawn research agents to find the latest FastAPI 0.115 release features,
research best practices for expense tracker API design, and summarize
Python REST API security guidelines
</code></code></pre><p>Three research agents returned structured tables with actionable recommendations.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!l3sD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facd585e2-a69e-41bf-982b-a88f881c7e3a_1063x611.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!l3sD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facd585e2-a69e-41bf-982b-a88f881c7e3a_1063x611.png 424w, https://substackcdn.com/image/fetch/$s_!l3sD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facd585e2-a69e-41bf-982b-a88f881c7e3a_1063x611.png 848w, https://substackcdn.com/image/fetch/$s_!l3sD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facd585e2-a69e-41bf-982b-a88f881c7e3a_1063x611.png 1272w, https://substackcdn.com/image/fetch/$s_!l3sD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facd585e2-a69e-41bf-982b-a88f881c7e3a_1063x611.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!l3sD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facd585e2-a69e-41bf-982b-a88f881c7e3a_1063x611.png" width="1063" height="611" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/acd585e2-a69e-41bf-982b-a88f881c7e3a_1063x611.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:611,&quot;width&quot;:1063,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:269290,&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://newsletter.claudecodemasterclass.com/i/190520706?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facd585e2-a69e-41bf-982b-a88f881c7e3a_1063x611.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_!l3sD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facd585e2-a69e-41bf-982b-a88f881c7e3a_1063x611.png 424w, https://substackcdn.com/image/fetch/$s_!l3sD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facd585e2-a69e-41bf-982b-a88f881c7e3a_1063x611.png 848w, https://substackcdn.com/image/fetch/$s_!l3sD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facd585e2-a69e-41bf-982b-a88f881c7e3a_1063x611.png 1272w, https://substackcdn.com/image/fetch/$s_!l3sD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facd585e2-a69e-41bf-982b-a88f881c7e3a_1063x611.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 aria-hidden="true" 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><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><div><hr></div><h3>Recommended Models</h3><p>Not all Ollama models support subagents and web search. These three work:</p><ul><li><p><code>minimax-m2.5:cloud</code></p></li><li><p><code>glm-5:cloud</code></p></li><li><p><code>kimi-k2.5:cloud</code></p></li></ul><blockquote><p><em><strong>This setup works best for prototypes and learning. For production work or sensitive codebases, stick with the paid API</strong></em>.</p></blockquote><p>But for experimenting without watching your bill &#8212; or when Anthropic has an outage &#8212; this is the move.</p><div><hr></div><p><em><strong>You can learn more here &#8212; <a href="https://medium.com/@joe.njenga/how-im-running-claude-code-subagents-web-search-at-no-cost-4cd945d382bd">How I&#8217;m Running Claude Code Subagents &amp; Web Search (At No Cost)</a></strong></em></p><div><hr></div><p></p><p>Finally, this newsletter belongs to all of us. If there&#8217;s something that can make it better or something you don&#8217;t like, please let me know.</p><p>See you in the next issue of Last Week In Claude Code.</p><div><hr></div><h1><strong>Claude Code Masterclass</strong></h1><p>Let&#8217;s Build It Together</p><p>&#8212; <strong>Joe Njenga</strong></p><div class="image-gallery-embed" data-attrs="{&quot;gallery&quot;:{&quot;images&quot;:[{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/773d0d8f-a6d9-4922-9875-c153400d289d_1478x780.png&quot;}],&quot;caption&quot;:&quot;&quot;,&quot;alt&quot;:&quot;&quot;,&quot;staticGalleryImage&quot;:{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/773d0d8f-a6d9-4922-9875-c153400d289d_1478x780.png&quot;}},&quot;isEditorNode&quot;:true}"></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.claudecodemasterclass.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 Claude Code Masterclass! 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>]]></content:encoded></item><item><title><![CDATA[Last Week In Claude Code #1 — /simplify, /batch, Auto-Memory, /remote-control]]></title><description><![CDATA[Code Reviews Got 10x Faster & Claude Finally Remembers You!]]></description><link>https://newsletter.claudecodemasterclass.com/p/last-week-in-claude-code-1-simplify</link><guid isPermaLink="false">https://newsletter.claudecodemasterclass.com/p/last-week-in-claude-code-1-simplify</guid><dc:creator><![CDATA[Joe]]></dc:creator><pubDate>Tue, 03 Mar 2026 16:40:20 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!yjvP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57266a54-0d00-480b-b402-f4bf6fb8fda6_1200x600.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_!yjvP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57266a54-0d00-480b-b402-f4bf6fb8fda6_1200x600.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yjvP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57266a54-0d00-480b-b402-f4bf6fb8fda6_1200x600.png 424w, https://substackcdn.com/image/fetch/$s_!yjvP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57266a54-0d00-480b-b402-f4bf6fb8fda6_1200x600.png 848w, https://substackcdn.com/image/fetch/$s_!yjvP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57266a54-0d00-480b-b402-f4bf6fb8fda6_1200x600.png 1272w, https://substackcdn.com/image/fetch/$s_!yjvP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57266a54-0d00-480b-b402-f4bf6fb8fda6_1200x600.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yjvP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57266a54-0d00-480b-b402-f4bf6fb8fda6_1200x600.png" width="1200" height="600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/57266a54-0d00-480b-b402-f4bf6fb8fda6_1200x600.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:600,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:91859,&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://newsletter.claudecodemasterclass.com/i/189775421?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57266a54-0d00-480b-b402-f4bf6fb8fda6_1200x600.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_!yjvP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57266a54-0d00-480b-b402-f4bf6fb8fda6_1200x600.png 424w, https://substackcdn.com/image/fetch/$s_!yjvP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57266a54-0d00-480b-b402-f4bf6fb8fda6_1200x600.png 848w, https://substackcdn.com/image/fetch/$s_!yjvP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57266a54-0d00-480b-b402-f4bf6fb8fda6_1200x600.png 1272w, https://substackcdn.com/image/fetch/$s_!yjvP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57266a54-0d00-480b-b402-f4bf6fb8fda6_1200x600.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 aria-hidden="true" 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><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>Hello, thanks for being part of our Claude Code Masterclass community. <em><strong>We are now headed to 20k members &#8212; I am eternally grateful for every one of you!</strong></em></p><p>I have updated the quick updates to be<em><a href="https://newsletter.claudecodemasterclass.com/t/last-week-in-claude-code"> </a><strong><a href="https://newsletter.claudecodemasterclass.com/t/last-week-in-claude-code">Last Week in Claude Code</a></strong></em> so that I can write a summary of updates once a week. </p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.claudecodemasterclass.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 Claude Code Masterclass! 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>This conforms to our original content structure, as I shared in the <em><strong><a href="https://newsletter.claudecodemasterclass.com/p/claude-code-masterclass-introduction">Claude Code Masterclass Introduction. </a></strong></em></p><blockquote><p><strong>In this series, I will be sharing the Claude Code updates from the previous week in a quick summary after I have tested and documented them.</strong></p></blockquote><p> The goal is to save your time and help you learn new Claude Code updates faster.</p><div class="pullquote"><p><strong>This is the first issue #1 in the Last Week In Claude Code series &#8212;/simplify, /batch, auto-memory, and /remote-control</strong></p></div><blockquote><p><strong>Quick Note: </strong><em>I apologize for taking longer to release the Hooks Masterclass. As you may already know, testing and creating comprehensive content takes a lot of time, especially for hooks. </em></p></blockquote><div class="pullquote"><p><strong>The Claude Code Hooks masterclass is ready for release later this week, and I can guarantee you will like it &#8212; it covers everything you need to learn about hooks with practical examples, packed in one issue.</strong></p></div><p>I&#8217;m also slightly behind the publishing calendar, but I am doing my best to keep up with the pace at which things are changing.</p><div><hr></div><h2>What Happened Last Week In Claude Code? </h2><div><hr></div><h3>#1) /simplify &amp; /batch &#8212; Code Reviews Just Got 10x Faster</h3><p><strong>Version:</strong> 2.1.63</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yQFV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9de6b00-2bd4-4a73-ad5a-fc70e95bc0e4_1024x617.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yQFV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9de6b00-2bd4-4a73-ad5a-fc70e95bc0e4_1024x617.gif 424w, https://substackcdn.com/image/fetch/$s_!yQFV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9de6b00-2bd4-4a73-ad5a-fc70e95bc0e4_1024x617.gif 848w, https://substackcdn.com/image/fetch/$s_!yQFV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9de6b00-2bd4-4a73-ad5a-fc70e95bc0e4_1024x617.gif 1272w, https://substackcdn.com/image/fetch/$s_!yQFV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9de6b00-2bd4-4a73-ad5a-fc70e95bc0e4_1024x617.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yQFV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9de6b00-2bd4-4a73-ad5a-fc70e95bc0e4_1024x617.gif" width="1024" height="617" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f9de6b00-2bd4-4a73-ad5a-fc70e95bc0e4_1024x617.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:617,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:219214,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/189775421?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9de6b00-2bd4-4a73-ad5a-fc70e95bc0e4_1024x617.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!yQFV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9de6b00-2bd4-4a73-ad5a-fc70e95bc0e4_1024x617.gif 424w, https://substackcdn.com/image/fetch/$s_!yQFV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9de6b00-2bd4-4a73-ad5a-fc70e95bc0e4_1024x617.gif 848w, https://substackcdn.com/image/fetch/$s_!yQFV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9de6b00-2bd4-4a73-ad5a-fc70e95bc0e4_1024x617.gif 1272w, https://substackcdn.com/image/fetch/$s_!yQFV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9de6b00-2bd4-4a73-ad5a-fc70e95bc0e4_1024x617.gif 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 aria-hidden="true" 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><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>Claude Code introduced two commands to simplify code reviews - <em><strong>/simplify and /batch</strong></em></p><div><hr></div><p><strong>/simplify &#8212; Automated Code Quality Pass</strong></p><p>Spins up <strong>parallel agents</strong> that review your code against your CLAUDE.md standards and fix issues automatically.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hCwL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23a9009e-417a-4a44-bbf6-a297c1a0f36b_1034x917.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hCwL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23a9009e-417a-4a44-bbf6-a297c1a0f36b_1034x917.png 424w, https://substackcdn.com/image/fetch/$s_!hCwL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23a9009e-417a-4a44-bbf6-a297c1a0f36b_1034x917.png 848w, https://substackcdn.com/image/fetch/$s_!hCwL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23a9009e-417a-4a44-bbf6-a297c1a0f36b_1034x917.png 1272w, https://substackcdn.com/image/fetch/$s_!hCwL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23a9009e-417a-4a44-bbf6-a297c1a0f36b_1034x917.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hCwL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23a9009e-417a-4a44-bbf6-a297c1a0f36b_1034x917.png" width="1034" height="917" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/23a9009e-417a-4a44-bbf6-a297c1a0f36b_1034x917.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:917,&quot;width&quot;:1034,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:70829,&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://newsletter.claudecodemasterclass.com/i/189775421?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23a9009e-417a-4a44-bbf6-a297c1a0f36b_1034x917.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_!hCwL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23a9009e-417a-4a44-bbf6-a297c1a0f36b_1034x917.png 424w, https://substackcdn.com/image/fetch/$s_!hCwL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23a9009e-417a-4a44-bbf6-a297c1a0f36b_1034x917.png 848w, https://substackcdn.com/image/fetch/$s_!hCwL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23a9009e-417a-4a44-bbf6-a297c1a0f36b_1034x917.png 1272w, https://substackcdn.com/image/fetch/$s_!hCwL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23a9009e-417a-4a44-bbf6-a297c1a0f36b_1034x917.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 aria-hidden="true" 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><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>What it catches:</strong></p><ul><li><p><em><strong>Dead code and commented-out blocks</strong></em></p></li><li><p><em><strong>Inefficient patterns and code smells</strong></em></p></li><li><p><em><strong>CLAUDE.md rule violations</strong></em></p></li><li><p><em><strong>Duplicate logic across files</strong></em></p></li></ul><p><strong>My test:</strong> 69 lines of messy code &#8594; 33 clean lines in <strong>1 minute 29 seconds</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_!WJ9b!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04ce4829-c0b6-480b-b2bb-593b5c18f126_1046x547.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WJ9b!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04ce4829-c0b6-480b-b2bb-593b5c18f126_1046x547.gif 424w, https://substackcdn.com/image/fetch/$s_!WJ9b!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04ce4829-c0b6-480b-b2bb-593b5c18f126_1046x547.gif 848w, https://substackcdn.com/image/fetch/$s_!WJ9b!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04ce4829-c0b6-480b-b2bb-593b5c18f126_1046x547.gif 1272w, https://substackcdn.com/image/fetch/$s_!WJ9b!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04ce4829-c0b6-480b-b2bb-593b5c18f126_1046x547.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WJ9b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04ce4829-c0b6-480b-b2bb-593b5c18f126_1046x547.gif" width="1046" height="547" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/04ce4829-c0b6-480b-b2bb-593b5c18f126_1046x547.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:547,&quot;width&quot;:1046,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:242399,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/189775421?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04ce4829-c0b6-480b-b2bb-593b5c18f126_1046x547.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!WJ9b!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04ce4829-c0b6-480b-b2bb-593b5c18f126_1046x547.gif 424w, https://substackcdn.com/image/fetch/$s_!WJ9b!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04ce4829-c0b6-480b-b2bb-593b5c18f126_1046x547.gif 848w, https://substackcdn.com/image/fetch/$s_!WJ9b!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04ce4829-c0b6-480b-b2bb-593b5c18f126_1046x547.gif 1272w, https://substackcdn.com/image/fetch/$s_!WJ9b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04ce4829-c0b6-480b-b2bb-593b5c18f126_1046x547.gif 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 aria-hidden="true" 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><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><div><hr></div><p><strong>/batch &#8212; Parallel Migration Engine</strong></p><p>Plans and executes large-scale migrations using <strong>isolated agents in git worktrees</strong>.</p><pre><code><code>/batch migrate src/ from Jest to Vitest
/batch migrate src/ from CommonJS to ES modules
</code></code></pre><p><strong>How it works:</strong></p><ol><li><p><em><strong>Scans your directory and creates a migration plan</strong></em></p></li><li><p><em><strong>Shows you exactly what will change before touching code</strong></em></p></li><li><p><em><strong>Spins up isolated agents per folder</strong></em></p></li><li><p><em><strong>Each agent tests its work before opening a PR</strong></em></p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!l6RW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e43d039-53fc-4b80-8d0c-3ba9851b5b83_1046x1789.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!l6RW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e43d039-53fc-4b80-8d0c-3ba9851b5b83_1046x1789.gif 424w, https://substackcdn.com/image/fetch/$s_!l6RW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e43d039-53fc-4b80-8d0c-3ba9851b5b83_1046x1789.gif 848w, https://substackcdn.com/image/fetch/$s_!l6RW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e43d039-53fc-4b80-8d0c-3ba9851b5b83_1046x1789.gif 1272w, https://substackcdn.com/image/fetch/$s_!l6RW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e43d039-53fc-4b80-8d0c-3ba9851b5b83_1046x1789.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!l6RW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e43d039-53fc-4b80-8d0c-3ba9851b5b83_1046x1789.gif" width="1046" height="1789" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5e43d039-53fc-4b80-8d0c-3ba9851b5b83_1046x1789.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1789,&quot;width&quot;:1046,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1974330,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/189775421?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e43d039-53fc-4b80-8d0c-3ba9851b5b83_1046x1789.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!l6RW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e43d039-53fc-4b80-8d0c-3ba9851b5b83_1046x1789.gif 424w, https://substackcdn.com/image/fetch/$s_!l6RW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e43d039-53fc-4b80-8d0c-3ba9851b5b83_1046x1789.gif 848w, https://substackcdn.com/image/fetch/$s_!l6RW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e43d039-53fc-4b80-8d0c-3ba9851b5b83_1046x1789.gif 1272w, https://substackcdn.com/image/fetch/$s_!l6RW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e43d039-53fc-4b80-8d0c-3ba9851b5b83_1046x1789.gif 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 aria-hidden="true" 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><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>I tested both commands on a real project and documented everything</strong> &#8212; the setup, the results, and what Claude actually changed.</p><p><strong>You can learn more here</strong> <strong>&#8212; </strong><em><strong><a href="https://medium.com/p/888780a6a42a">How I&#8217;m Using Claude Code /simplify &amp; /batch to x10 My Code Reviews</a></strong></em></p><div><hr></div><h2>#2) Auto-Memory (MEMORY.md) &#8212; Claude Now Remembers Your Project</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qePG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad59dab9-2e4e-4cad-8815-6124d6411e83_1013x256.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qePG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad59dab9-2e4e-4cad-8815-6124d6411e83_1013x256.gif 424w, https://substackcdn.com/image/fetch/$s_!qePG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad59dab9-2e4e-4cad-8815-6124d6411e83_1013x256.gif 848w, https://substackcdn.com/image/fetch/$s_!qePG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad59dab9-2e4e-4cad-8815-6124d6411e83_1013x256.gif 1272w, https://substackcdn.com/image/fetch/$s_!qePG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad59dab9-2e4e-4cad-8815-6124d6411e83_1013x256.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qePG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad59dab9-2e4e-4cad-8815-6124d6411e83_1013x256.gif" width="1013" height="256" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ad59dab9-2e4e-4cad-8815-6124d6411e83_1013x256.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:256,&quot;width&quot;:1013,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:129744,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/189775421?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad59dab9-2e4e-4cad-8815-6124d6411e83_1013x256.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!qePG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad59dab9-2e4e-4cad-8815-6124d6411e83_1013x256.gif 424w, https://substackcdn.com/image/fetch/$s_!qePG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad59dab9-2e4e-4cad-8815-6124d6411e83_1013x256.gif 848w, https://substackcdn.com/image/fetch/$s_!qePG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad59dab9-2e4e-4cad-8815-6124d6411e83_1013x256.gif 1272w, https://substackcdn.com/image/fetch/$s_!qePG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad59dab9-2e4e-4cad-8815-6124d6411e83_1013x256.gif 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 aria-hidden="true" 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><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>Claude now builds and maintains its own memory as it works with you, quietly taking notes on your build commands, code style, architecture decisions, and the bugs you solved together.</p><p><strong>How It Works</strong></p><ul><li><p><em><strong>Auto-enabled</strong> &#8212; No configuration needed, works out of the box</em></p></li><li><p><em><strong>Claude writes it</strong> &#8212; You don&#8217;t touch MEMORY.md; Claude does</em></p></li><li><p><em><strong>200-line limit</strong> &#8212; Only the first 200 lines load at session start</em></p><p></p></li></ul><p><strong>Where it&#8217;s located:</strong></p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;35bfa91a-3da7-47b3-9cb8-c8069ef92073&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">~/.claude/projects/&lt;project&gt;/memory/
&#9500;&#9472;&#9472; MEMORY.md          # Main index, loaded every session
&#9500;&#9472;&#9472; debugging.md       # Detailed debugging notes
&#9492;&#9472;&#9472; api-conventions.md # API decisions</code></pre></div><div><hr></div><p><strong>CLAUDE.md vs MEMORY.md &#8212; What's the Difference?</strong></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!i3BY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4771061e-2f6e-4fad-af40-2282f7f84160_547x148.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!i3BY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4771061e-2f6e-4fad-af40-2282f7f84160_547x148.png 424w, https://substackcdn.com/image/fetch/$s_!i3BY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4771061e-2f6e-4fad-af40-2282f7f84160_547x148.png 848w, https://substackcdn.com/image/fetch/$s_!i3BY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4771061e-2f6e-4fad-af40-2282f7f84160_547x148.png 1272w, https://substackcdn.com/image/fetch/$s_!i3BY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4771061e-2f6e-4fad-af40-2282f7f84160_547x148.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!i3BY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4771061e-2f6e-4fad-af40-2282f7f84160_547x148.png" width="547" height="148" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4771061e-2f6e-4fad-af40-2282f7f84160_547x148.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:148,&quot;width&quot;:547,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4629,&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://newsletter.claudecodemasterclass.com/i/189775421?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4771061e-2f6e-4fad-af40-2282f7f84160_547x148.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_!i3BY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4771061e-2f6e-4fad-af40-2282f7f84160_547x148.png 424w, https://substackcdn.com/image/fetch/$s_!i3BY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4771061e-2f6e-4fad-af40-2282f7f84160_547x148.png 848w, https://substackcdn.com/image/fetch/$s_!i3BY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4771061e-2f6e-4fad-af40-2282f7f84160_547x148.png 1272w, https://substackcdn.com/image/fetch/$s_!i3BY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4771061e-2f6e-4fad-af40-2282f7f84160_547x148.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Both load at session start. Together, they give Claude full context before you start coding. </p><p><strong>Managing Memory</strong></p><p>Use the <code>/memory</code> command to:</p><ul><li><p>Toggle auto-memory on/off</p></li><li><p>Open your memory folder</p></li><li><p>Access user and project memory files</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_!R3n2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78856947-ee81-40fc-842d-17417faf796d_1024x561.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!R3n2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78856947-ee81-40fc-842d-17417faf796d_1024x561.gif 424w, https://substackcdn.com/image/fetch/$s_!R3n2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78856947-ee81-40fc-842d-17417faf796d_1024x561.gif 848w, https://substackcdn.com/image/fetch/$s_!R3n2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78856947-ee81-40fc-842d-17417faf796d_1024x561.gif 1272w, https://substackcdn.com/image/fetch/$s_!R3n2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78856947-ee81-40fc-842d-17417faf796d_1024x561.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!R3n2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78856947-ee81-40fc-842d-17417faf796d_1024x561.gif" width="1024" height="561" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/78856947-ee81-40fc-842d-17417faf796d_1024x561.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:561,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:60544,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/189775421?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78856947-ee81-40fc-842d-17417faf796d_1024x561.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!R3n2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78856947-ee81-40fc-842d-17417faf796d_1024x561.gif 424w, https://substackcdn.com/image/fetch/$s_!R3n2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78856947-ee81-40fc-842d-17417faf796d_1024x561.gif 848w, https://substackcdn.com/image/fetch/$s_!R3n2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78856947-ee81-40fc-842d-17417faf796d_1024x561.gif 1272w, https://substackcdn.com/image/fetch/$s_!R3n2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78856947-ee81-40fc-842d-17417faf796d_1024x561.gif 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 aria-hidden="true" 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><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>Turn It Off (If Needed)</strong></p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;80fbe62e-5189-49b3-a479-28064a792afe&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">// Disable for one project (.claude/settings.json)
{ "autoMemoryEnabled": false }

// Disable globally (~/.claude/settings.json)
{ "autoMemoryEnabled": false }

// Force off in CI environments
export CLAUDE_CODE_DISABLE_AUTO_MEMORY=1</code></pre></div><p><em><strong>I tested auto-memory from scratch</strong> &#8212; created a project, worked a session, closed it, and came back cold. Claude remembered everything.</em></p><p><strong>You can learn more here</strong> <strong>&#8212;</strong> <em><strong><a href="https://medium.com/p/0ab8422754d2">Anthropic Just Added Auto-Memory to Claude Code &#8212; MEMORY.md (I Tested It)</a></strong></em></p><div><hr></div><h2>#3) Remote Control &#8212; Code From Your Phone </h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jzt_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80e2c498-99cf-4b8c-9f71-3b9c1b5cfbfd_1024x561.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jzt_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80e2c498-99cf-4b8c-9f71-3b9c1b5cfbfd_1024x561.gif 424w, https://substackcdn.com/image/fetch/$s_!jzt_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80e2c498-99cf-4b8c-9f71-3b9c1b5cfbfd_1024x561.gif 848w, https://substackcdn.com/image/fetch/$s_!jzt_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80e2c498-99cf-4b8c-9f71-3b9c1b5cfbfd_1024x561.gif 1272w, https://substackcdn.com/image/fetch/$s_!jzt_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80e2c498-99cf-4b8c-9f71-3b9c1b5cfbfd_1024x561.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jzt_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80e2c498-99cf-4b8c-9f71-3b9c1b5cfbfd_1024x561.gif" width="1024" height="561" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/80e2c498-99cf-4b8c-9f71-3b9c1b5cfbfd_1024x561.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:561,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:143264,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/189775421?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80e2c498-99cf-4b8c-9f71-3b9c1b5cfbfd_1024x561.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!jzt_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80e2c498-99cf-4b8c-9f71-3b9c1b5cfbfd_1024x561.gif 424w, https://substackcdn.com/image/fetch/$s_!jzt_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80e2c498-99cf-4b8c-9f71-3b9c1b5cfbfd_1024x561.gif 848w, https://substackcdn.com/image/fetch/$s_!jzt_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80e2c498-99cf-4b8c-9f71-3b9c1b5cfbfd_1024x561.gif 1272w, https://substackcdn.com/image/fetch/$s_!jzt_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80e2c498-99cf-4b8c-9f71-3b9c1b5cfbfd_1024x561.gif 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 aria-hidden="true" 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><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>Control your local Claude Code session from any device &#8212; phone, tablet, or another browser.</p><blockquote><p><strong>Your laptop stays at your desk running Claude Code. Remote Control creates a secure connection so you can control that session from anywhere.</strong></p></blockquote><p>This is <strong>not</strong> Claude Code on the web (which runs in Anthropic&#8217;s cloud).</p><p>Remote Control runs on <strong>your machine</strong>:</p><ul><li><p><em>MCP servers stay active</em></p></li><li><p><em>Project context stays intact</em></p></li><li><p><em>Your filesystem is fully available</em></p></li><li><p><em>All your tools and permissions persist</em></p></li></ul><h3>Three Ways to Connect</h3><ol><li><p><strong>Session URL</strong> &#8212; Copy from terminal, paste in any browser</p></li><li><p><strong>QR Code</strong> &#8212; Press spacebar in terminal, scan with Claude mobile app</p></li><li><p><strong>Session List</strong> &#8212; Find it at claude.ai/code with a green status dot</p></li></ol><h3>Requirements</h3><ul><li><p><strong>Pro or Max plan</strong> (not Team/Enterprise yet)</p></li><li><p>Authenticated via claude.ai (API keys won&#8217;t work)</p></li><li><p>Workspace trust accepted</p></li></ul><blockquote><p><em><strong>I documented the setup, the flags, multi-device workflows, and managing multiple projects &#8212; so you&#8217;re ready when it rolls out to you.</strong></em></p></blockquote><p><strong>You can learn more here</strong> <strong>&#8212;</strong> <em><strong><a href="https://medium.com/p/c829a83417f7">I Tried (New) Claude Code Remote-Control (Before You Waste Your Time)</a></strong></em></p><div><hr></div><p><em><strong>Finally, this newsletter belongs to all of us. If there&#8217;s something that can make it better or something you don&#8217;t like, please let me know.</strong></em></p><p style="text-align: center;"><em><strong>See you in the next issue of Last Week In Claude Code.</strong></em></p><div><hr></div><h1><strong>Claude Code Masterclass</strong></h1><p>Let&#8217;s Build It Together</p><p>&#8212; <strong>Joe Njenga</strong></p><div class="image-gallery-embed" data-attrs="{&quot;gallery&quot;:{&quot;images&quot;:[{&quot;type&quot;:&quot;image/webp&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/70684c7a-659c-4a0a-82e8-40617d7a1ed9_1272x671.webp&quot;}],&quot;caption&quot;:&quot;&quot;,&quot;alt&quot;:&quot;&quot;,&quot;staticGalleryImage&quot;:{&quot;type&quot;:&quot;image/webp&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/70684c7a-659c-4a0a-82e8-40617d7a1ed9_1272x671.webp&quot;}},&quot;isEditorNode&quot;:true}"></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.claudecodemasterclass.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 Claude Code Masterclass! 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>]]></content:encoded></item><item><title><![CDATA[CLAUDE.md Masterclass: From Start to Pro-Level User with Hooks & Subagents]]></title><description><![CDATA[The Claude Code brain most developers ignore (and why it&#8217;s a huge mistake)]]></description><link>https://newsletter.claudecodemasterclass.com/p/claudemd-masterclass-from-start-to</link><guid isPermaLink="false">https://newsletter.claudecodemasterclass.com/p/claudemd-masterclass-from-start-to</guid><dc:creator><![CDATA[Joe]]></dc:creator><pubDate>Wed, 28 Jan 2026 15:03:26 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!rju5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7a5534d-8bf4-470a-905e-5d26a11b1bfd_1200x600.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_!rju5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7a5534d-8bf4-470a-905e-5d26a11b1bfd_1200x600.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rju5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7a5534d-8bf4-470a-905e-5d26a11b1bfd_1200x600.png 424w, https://substackcdn.com/image/fetch/$s_!rju5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7a5534d-8bf4-470a-905e-5d26a11b1bfd_1200x600.png 848w, https://substackcdn.com/image/fetch/$s_!rju5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7a5534d-8bf4-470a-905e-5d26a11b1bfd_1200x600.png 1272w, https://substackcdn.com/image/fetch/$s_!rju5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7a5534d-8bf4-470a-905e-5d26a11b1bfd_1200x600.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rju5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7a5534d-8bf4-470a-905e-5d26a11b1bfd_1200x600.png" width="1200" height="600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b7a5534d-8bf4-470a-905e-5d26a11b1bfd_1200x600.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:600,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:66887,&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://newsletter.claudecodemasterclass.com/i/185975468?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7a5534d-8bf4-470a-905e-5d26a11b1bfd_1200x600.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_!rju5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7a5534d-8bf4-470a-905e-5d26a11b1bfd_1200x600.png 424w, https://substackcdn.com/image/fetch/$s_!rju5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7a5534d-8bf4-470a-905e-5d26a11b1bfd_1200x600.png 848w, https://substackcdn.com/image/fetch/$s_!rju5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7a5534d-8bf4-470a-905e-5d26a11b1bfd_1200x600.png 1272w, https://substackcdn.com/image/fetch/$s_!rju5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7a5534d-8bf4-470a-905e-5d26a11b1bfd_1200x600.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 aria-hidden="true" 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><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>Since the first issue of <a href="https://newsletter.claudecodemasterclass.com/p/claude-code-masterclass-introduction">Claude Code Masterclass Introduction,</a> <em><strong>I&#8217;ve been overwhelmed by your response &#8212; encouragement, support, and so many new pledges. Thank you.</strong></em></p><p>Your feedback made one thing clear: <em>you want structure.</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.claudecodemasterclass.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 Claude Code Masterclass! 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><div class="pullquote"><p><strong>So I&#8217;ve organized this newsletter into three tracks &#8212; Masterclass Series, Deep Dive Series, and Quick Updates. Check the <a href="https://newsletter.claudecodemasterclass.com/about">About page for the full breakdown</a>.</strong></p></div><p>This issue brings you the second article in the Claude Code <em><strong>Masterclass series. &#8212; Mastering CLAUDE.md File </strong></em></p><div><hr></div><p>Every Claude Code session starts the same way &#8212; <em><strong>Claude knows nothing about your project.</strong></em></p><ul><li><p>It doesn&#8217;t know your tech stack. </p></li><li><p>It doesn&#8217;t know your folder structure.</p></li><li><p>It doesn&#8217;t know that you prefer tabs over spaces or that your team uses a specific branch naming convention.</p></li></ul><p><em><strong>So you should explain your project every single time.</strong></em></p><pre><code>&#8220;This is a FastAPI project. We use SQLAlchemy for the database. Tests are in the /tests folder. Run pytest to execute them. Oh, and we follow PEP 8 with 100-character lines.&#8221;</code></pre><blockquote><p><em><strong>This creates a problem of constantly explaining your project details, and that is the problem CLAUDE.md solves.</strong></em></p></blockquote><p>CLAUDE.md is a markdown file that gives Claude persistent memory about your project. Create it once, and Claude reads it automatically at the start of every session. </p><blockquote><p><em><strong>In this guide, I&#8217;ll take you from creating your first CLAUDE.md to building pro-level configurations that compound with hooks and subagents. </strong></em></p></blockquote><p>We&#8217;ll cover the hierarchy system, the anatomy of a well-structured file, and everything you should know about the CLAUDE.md file. </p><p>Let&#8217;s start with the basics. </p><div><hr></div><h2>What is CLAUDE.md?</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xtSM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6310cdf3-8a1c-4645-9642-035305014d95_1285x810.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xtSM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6310cdf3-8a1c-4645-9642-035305014d95_1285x810.gif 424w, https://substackcdn.com/image/fetch/$s_!xtSM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6310cdf3-8a1c-4645-9642-035305014d95_1285x810.gif 848w, https://substackcdn.com/image/fetch/$s_!xtSM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6310cdf3-8a1c-4645-9642-035305014d95_1285x810.gif 1272w, https://substackcdn.com/image/fetch/$s_!xtSM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6310cdf3-8a1c-4645-9642-035305014d95_1285x810.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xtSM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6310cdf3-8a1c-4645-9642-035305014d95_1285x810.gif" width="1285" height="810" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6310cdf3-8a1c-4645-9642-035305014d95_1285x810.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:810,&quot;width&quot;:1285,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:884796,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/185975468?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6310cdf3-8a1c-4645-9642-035305014d95_1285x810.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!xtSM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6310cdf3-8a1c-4645-9642-035305014d95_1285x810.gif 424w, https://substackcdn.com/image/fetch/$s_!xtSM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6310cdf3-8a1c-4645-9642-035305014d95_1285x810.gif 848w, https://substackcdn.com/image/fetch/$s_!xtSM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6310cdf3-8a1c-4645-9642-035305014d95_1285x810.gif 1272w, https://substackcdn.com/image/fetch/$s_!xtSM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6310cdf3-8a1c-4645-9642-035305014d95_1285x810.gif 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 aria-hidden="true" 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><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>Most developers think of CLAUDE.md as a documentation file, <strong>which is wrong! </strong></p><blockquote><p><em>CLAUDE.md is a <strong>configuration file </strong>that becomes part of <strong>Claude&#8217;s system prompt</strong>. </em></p></blockquote><p>This distinction matters because Claude treats system-level instructions differently from user prompts. Here is an illustration : </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!YbEz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F633c4dfc-2322-40d6-97a5-fb3c0795bcbb_705x556.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YbEz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F633c4dfc-2322-40d6-97a5-fb3c0795bcbb_705x556.png 424w, https://substackcdn.com/image/fetch/$s_!YbEz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F633c4dfc-2322-40d6-97a5-fb3c0795bcbb_705x556.png 848w, https://substackcdn.com/image/fetch/$s_!YbEz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F633c4dfc-2322-40d6-97a5-fb3c0795bcbb_705x556.png 1272w, https://substackcdn.com/image/fetch/$s_!YbEz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F633c4dfc-2322-40d6-97a5-fb3c0795bcbb_705x556.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YbEz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F633c4dfc-2322-40d6-97a5-fb3c0795bcbb_705x556.png" width="705" height="556" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/633c4dfc-2322-40d6-97a5-fb3c0795bcbb_705x556.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:556,&quot;width&quot;:705,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:19580,&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://newsletter.claudecodemasterclass.com/i/185975468?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F633c4dfc-2322-40d6-97a5-fb3c0795bcbb_705x556.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_!YbEz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F633c4dfc-2322-40d6-97a5-fb3c0795bcbb_705x556.png 424w, https://substackcdn.com/image/fetch/$s_!YbEz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F633c4dfc-2322-40d6-97a5-fb3c0795bcbb_705x556.png 848w, https://substackcdn.com/image/fetch/$s_!YbEz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F633c4dfc-2322-40d6-97a5-fb3c0795bcbb_705x556.png 1272w, https://substackcdn.com/image/fetch/$s_!YbEz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F633c4dfc-2322-40d6-97a5-fb3c0795bcbb_705x556.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 aria-hidden="true" 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><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>When you put instructions in CLAUDE.md, Claude follows them more strictly than anything you type in the chat. </p><div class="pullquote"><p>This is why a well-crafted CLAUDE.md transforms your entire workflow, and it sets the operational boundaries for every conversation.</p></div><h3>Why Claude Will Ignore Your CLAUDE.md</h3><p>Claude Code wraps your CLAUDE.md with a system reminder that tells Claude to ignore irrelevant content.</p><p>The actual wrapper looks like this:</p><pre><code><code>&lt;system-reminder&gt;
  IMPORTANT: this context may or may not be relevant to your tasks. 
  You should not respond to this context unless it is highly relevant to your task.
&lt;/system-reminder&gt;
</code></code></pre><p>This means if you stuff your CLAUDE.md with instructions that aren&#8217;t universally applicable, Claude will ignore them. </p><blockquote><p><em><strong>This is why &#8220;less is more&#8221; is the best trick when creating your CLAUDE.md file. </strong></em></p></blockquote><p><strong>Mental Model</strong></p><p>Think of CLAUDE.md as three things:</p><ol><li><p><strong>Project Memory</strong> &#8212; Claude remembers your setup across sessions</p></li><li><p><strong>Operational Boundaries</strong> &#8212; Rules Claude won&#8217;t break</p></li><li><p><strong>Context Primer</strong> &#8212; Claude starts informed, not blank</p></li></ol><p>When you understand this mental model, you stop treating CLAUDE.md like a README since it&#8217;s the best leverage configuration point you have in Claude Code.</p><div><hr></div><h2>CLAUDE.md Hierarchy System</h2><p>CLAUDE.md files can live in multiple locations, and Claude reads them in a specific order. </p><blockquote><p><em><strong>Understanding this hierarchy lets you create global rules that apply everywhere and project-specific rules that apply only where needed.</strong></em></p></blockquote><p></p><h3>Three Levels</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KeyV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b97f38b-b36a-4ce4-857b-22907aa92434_813x810.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KeyV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b97f38b-b36a-4ce4-857b-22907aa92434_813x810.png 424w, https://substackcdn.com/image/fetch/$s_!KeyV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b97f38b-b36a-4ce4-857b-22907aa92434_813x810.png 848w, https://substackcdn.com/image/fetch/$s_!KeyV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b97f38b-b36a-4ce4-857b-22907aa92434_813x810.png 1272w, https://substackcdn.com/image/fetch/$s_!KeyV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b97f38b-b36a-4ce4-857b-22907aa92434_813x810.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KeyV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b97f38b-b36a-4ce4-857b-22907aa92434_813x810.png" width="813" height="810" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7b97f38b-b36a-4ce4-857b-22907aa92434_813x810.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:810,&quot;width&quot;:813,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:24938,&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://newsletter.claudecodemasterclass.com/i/185975468?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b97f38b-b36a-4ce4-857b-22907aa92434_813x810.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_!KeyV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b97f38b-b36a-4ce4-857b-22907aa92434_813x810.png 424w, https://substackcdn.com/image/fetch/$s_!KeyV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b97f38b-b36a-4ce4-857b-22907aa92434_813x810.png 848w, https://substackcdn.com/image/fetch/$s_!KeyV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b97f38b-b36a-4ce4-857b-22907aa92434_813x810.png 1272w, https://substackcdn.com/image/fetch/$s_!KeyV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b97f38b-b36a-4ce4-857b-22907aa92434_813x810.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 aria-hidden="true" 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><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>                                             How Each Level Loads</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_!oDzt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91008896-8bba-4e2e-abed-7605640e5bce_1135x490.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oDzt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91008896-8bba-4e2e-abed-7605640e5bce_1135x490.png 424w, https://substackcdn.com/image/fetch/$s_!oDzt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91008896-8bba-4e2e-abed-7605640e5bce_1135x490.png 848w, https://substackcdn.com/image/fetch/$s_!oDzt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91008896-8bba-4e2e-abed-7605640e5bce_1135x490.png 1272w, https://substackcdn.com/image/fetch/$s_!oDzt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91008896-8bba-4e2e-abed-7605640e5bce_1135x490.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!oDzt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91008896-8bba-4e2e-abed-7605640e5bce_1135x490.png" width="1135" height="490" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/91008896-8bba-4e2e-abed-7605640e5bce_1135x490.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:490,&quot;width&quot;:1135,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:23470,&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://newsletter.claudecodemasterclass.com/i/185975468?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91008896-8bba-4e2e-abed-7605640e5bce_1135x490.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_!oDzt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91008896-8bba-4e2e-abed-7605640e5bce_1135x490.png 424w, https://substackcdn.com/image/fetch/$s_!oDzt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91008896-8bba-4e2e-abed-7605640e5bce_1135x490.png 848w, https://substackcdn.com/image/fetch/$s_!oDzt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91008896-8bba-4e2e-abed-7605640e5bce_1135x490.png 1272w, https://substackcdn.com/image/fetch/$s_!oDzt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91008896-8bba-4e2e-abed-7605640e5bce_1135x490.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 aria-hidden="true" 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><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>Let&#8217;s look at a practical example: </p><p><strong>Monorepo Setup</strong></p><pre><code><code>my-monorepo/
&#9500;&#9472;&#9472; CLAUDE.md                    # Monorepo-wide rules
&#9500;&#9472;&#9472; apps/
&#9474;   &#9500;&#9472;&#9472; web/
&#9474;   &#9474;   &#9492;&#9472;&#9472; CLAUDE.md            # Frontend-specific rules
&#9474;   &#9492;&#9472;&#9472; api/
&#9474;       &#9492;&#9472;&#9472; CLAUDE.md            # Backend-specific rules
&#9500;&#9472;&#9472; packages/
&#9474;   &#9492;&#9472;&#9472; shared/
&#9474;       &#9492;&#9472;&#9472; CLAUDE.md            # Shared library rules
&#9492;&#9472;&#9472; tests/
    &#9492;&#9472;&#9472; CLAUDE.md                # Testing conventions
</code></code></pre><p>The nested files only load when Claude accesses files in those directories. This keeps your main context lean until Claude needs that specialized knowledge.</p><p><strong>File Naming Options</strong></p><ul><li><p><code>CLAUDE.md</code> &#8212; Standard, commit to git, share with the team</p></li><li><p><code>CLAUDE.local.md</code> &#8212; Add to <code>.gitignore</code>, personal overrides</p></li></ul><blockquote><p><em><strong> Use </strong></em><code>.local.md</code><em><strong> for personal preferences, you don&#8217;t want to push to the repo.</strong></em></p></blockquote><div><hr></div><h2>Anatomy of a Great CLAUDE.md</h2><p>A well-structured CLAUDE.md answers three questions for Claude:</p><ul><li><p><strong>WHAT</strong> &#8212; The tech stack, project structure, key files</p></li><li><p><strong>WHY</strong> &#8212; The purpose of the project, what each part does</p></li><li><p><strong>HOW</strong> &#8212; Commands to run, workflows to follow, conventions to respect</p><p></p></li></ul><h3>Core Sections</h3><pre><code><code># Project Context

Brief description of what this project is and your working philosophy.

## About This Project

Tech stack, architecture pattern, key dependencies.

## Key Directories

- `src/` &#8212; Source code
- `tests/` &#8212; Test files
- `docs/` &#8212; Documentation

## Commands

```bash
npm run dev      # Start development server
npm run test     # Run tests
npm run build    # Production build
</code></code></pre><p><strong>Standards</strong></p><ul><li><p>Coding conventions</p></li><li><p>Testing requirements</p></li><li><p>Commit message format</p></li></ul><p><strong>Workflows</strong></p><p>Step-by-step processes for common tasks.</p><p><strong>Notes</strong></p><p>Gotchas, warnings, things Claude should know. </p><p>Here is an example:</p><pre><code><code>
### A Real Example

Here's a CLAUDE.md for a FastAPI project:

```markdown
# Project Context

When working with this codebase, prioritize readability over cleverness. 
Ask clarifying questions before making architectural changes.

## About This Project

FastAPI REST API for user authentication and profiles. 
Uses SQLAlchemy for database operations and Pydantic for validation.

## Key Directories

- `app/models/` &#8212; Database models
- `app/api/` &#8212; Route handlers
- `app/core/` &#8212; Configuration and utilities
- `tests/` &#8212; Test files (fixtures in `tests/conftest.py`)

## Commands

```bash
uvicorn app.main:app --reload  # Dev server
pytest tests/ -v               # Run tests
alembic upgrade head           # Run migrations
</code></code></pre><p><strong>Standards</strong></p><ul><li><p>Type hints required on all functions</p></li><li><p>pytest for testing</p></li><li><p>PEP 8 with 100-character lines</p></li><li><p>All routes use <code>/api/v1</code> prefix</p></li></ul><p><strong>Notes</strong></p><ul><li><p>JWT tokens expire after 24 hours</p></li><li><p>Rate limiting is 100 requests/minute per IP</p></li><li><p>Never commit .env files</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_!8_iE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F443f7d30-fddb-46d6-98ed-491e2c09cb2e_1133x696.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8_iE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F443f7d30-fddb-46d6-98ed-491e2c09cb2e_1133x696.png 424w, https://substackcdn.com/image/fetch/$s_!8_iE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F443f7d30-fddb-46d6-98ed-491e2c09cb2e_1133x696.png 848w, https://substackcdn.com/image/fetch/$s_!8_iE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F443f7d30-fddb-46d6-98ed-491e2c09cb2e_1133x696.png 1272w, https://substackcdn.com/image/fetch/$s_!8_iE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F443f7d30-fddb-46d6-98ed-491e2c09cb2e_1133x696.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8_iE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F443f7d30-fddb-46d6-98ed-491e2c09cb2e_1133x696.png" width="1133" height="696" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/443f7d30-fddb-46d6-98ed-491e2c09cb2e_1133x696.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:696,&quot;width&quot;:1133,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:34157,&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://newsletter.claudecodemasterclass.com/i/185975468?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F443f7d30-fddb-46d6-98ed-491e2c09cb2e_1133x696.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_!8_iE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F443f7d30-fddb-46d6-98ed-491e2c09cb2e_1133x696.png 424w, https://substackcdn.com/image/fetch/$s_!8_iE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F443f7d30-fddb-46d6-98ed-491e2c09cb2e_1133x696.png 848w, https://substackcdn.com/image/fetch/$s_!8_iE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F443f7d30-fddb-46d6-98ed-491e2c09cb2e_1133x696.png 1272w, https://substackcdn.com/image/fetch/$s_!8_iE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F443f7d30-fddb-46d6-98ed-491e2c09cb2e_1133x696.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 aria-hidden="true" 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><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><blockquote><p><em><strong>The best approach is to keep each section focused. If a section grows too long, it&#8217;s a sign you should move that content to a separate file and reference it</strong></em></p></blockquote><div><hr></div><h2>Claude.md Content </h2><p>Most CLAUDE.md problems come from including too much, not too little. It&#8217;s a delicate balance that can only be measured by my four rules : </p><h3>1) 150-200 Instruction Limit </h3><p>Research shows that frontier LLMs can reliably follow approximately 150-200 instructions. </p><blockquote><p><em><strong>Beyond that, instruction-following quality degrades; not just for new instructions, but uniformly across all of them.</strong></em></p></blockquote><p>Claude Code&#8217;s system prompt already contains ~50 instructions. </p><p>That leaves you with roughly 100-150 instructions before Claude starts ignoring things.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!07Zz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee30c862-3d73-42e4-9eb1-7aac419cf5d7_729x421.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!07Zz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee30c862-3d73-42e4-9eb1-7aac419cf5d7_729x421.png 424w, https://substackcdn.com/image/fetch/$s_!07Zz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee30c862-3d73-42e4-9eb1-7aac419cf5d7_729x421.png 848w, https://substackcdn.com/image/fetch/$s_!07Zz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee30c862-3d73-42e4-9eb1-7aac419cf5d7_729x421.png 1272w, https://substackcdn.com/image/fetch/$s_!07Zz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee30c862-3d73-42e4-9eb1-7aac419cf5d7_729x421.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!07Zz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee30c862-3d73-42e4-9eb1-7aac419cf5d7_729x421.png" width="729" height="421" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ee30c862-3d73-42e4-9eb1-7aac419cf5d7_729x421.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:421,&quot;width&quot;:729,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:11090,&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://newsletter.claudecodemasterclass.com/i/185975468?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee30c862-3d73-42e4-9eb1-7aac419cf5d7_729x421.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_!07Zz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee30c862-3d73-42e4-9eb1-7aac419cf5d7_729x421.png 424w, https://substackcdn.com/image/fetch/$s_!07Zz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee30c862-3d73-42e4-9eb1-7aac419cf5d7_729x421.png 848w, https://substackcdn.com/image/fetch/$s_!07Zz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee30c862-3d73-42e4-9eb1-7aac419cf5d7_729x421.png 1272w, https://substackcdn.com/image/fetch/$s_!07Zz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee30c862-3d73-42e4-9eb1-7aac419cf5d7_729x421.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 aria-hidden="true" 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><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><blockquote><p><em><strong>This is why less is more, since every unnecessary instruction reduces Claude&#8217;s ability to follow the important ones.</strong></em></p></blockquote><p><strong>Always include:</strong></p><ul><li><p><em>Project overview (1-2 sentences)</em></p></li><li><p><em>Tech stack and key dependencies</em></p></li><li><p><em>Essential commands (build, test, run)</em></p></li><li><p><em>Directory structure (key folders only)</em></p></li><li><p><em>Critical conventions that cause bugs if missed</em></p></li></ul><p><strong>Include if universally applicable:</strong></p><ul><li><p><em>Branch naming conventions</em></p></li><li><p><em>Commit message format</em></p></li><li><p><em>Testing requirements</em></p></li><li><p><em>Deployment process</em></p></li></ul><p><strong>Never include:</strong></p><ul><li><p><em>Sensitive information (API keys, credentials, connection strings)</em></p></li><li><p><em>Detailed code style guidelines (use a linter instead)</em></p></li><li><p><em>Task-specific instructions (use separate files)</em></p></li><li><p><em>Everything Claude could figure out by reading your cod</em>e</p></li></ul><p><strong>Move to separate files:</strong></p><ul><li><p><em>Database schema details</em></p></li><li><p><em>Complex workflow procedures</em></p></li><li><p><em>Architecture deep-dives</em></p></li><li><p><em>Onboarding documentation</em></p><p></p></li></ul><h3>2) Progressive Disclosure</h3><p>Instead of adding everything into CLAUDE.md, keep task-specific instructions in separate files and tell Claude where to find them. </p><p><strong>As an example : </strong></p><pre><code><code>project/
&#9500;&#9472;&#9472; CLAUDE.md                        # Core instructions only
&#9492;&#9472;&#9472; agent_docs/
    &#9500;&#9472;&#9472; building_the_project.md
    &#9500;&#9472;&#9472; running_tests.md
    &#9500;&#9472;&#9472; code_conventions.md
    &#9500;&#9472;&#9472; database_schema.md
    &#9492;&#9472;&#9472; deployment_process.md
</code></code></pre><p>In your CLAUDE.md, reference these files:</p><pre><code><code>## Additional Documentation

Before starting specific tasks, read the relevant documentation:

- Building: `agent_docs/building_the_project.md`
- Testing: `agent_docs/running_tests.md`
- Database work: `agent_docs/database_schema.md`
- Deployment: `agent_docs/deployment_process.md`

Read only what's relevant to your current task.
</code></code></pre><p>Claude loads these files only when needed, keeping your main context lean.</p><p></p><h3>3) Don&#8217;t Use CLAUDE.md as a Linter</h3><p>This is a common mistake I see many developers make: adding <em><strong>extensive code style guidelines.</strong></em></p><pre><code><code># Don't do this

## Code Style
- Use 2 spaces for indentation
- Always use semicolons
- Prefer const over let
- Use arrow functions for callbacks
- Add trailing commas in arrays
- Use single quotes for strings
...50 more rules
</code></code></pre><p>Use proper tools:</p><ul><li><p><strong><a href="https://github.com/prettier/eslint-plugin-prettier">ESLint/Prettier</a></strong> for JavaScript</p></li><li><p><strong><a href="https://github.com/astral-sh/ruff">Black/Ruff</a></strong> for Python</p></li><li><p><strong><a href="https://github.com/rust-lang/rustfmt">rustfmt</a></strong> for Rust</p></li></ul><blockquote><p><em><strong>My approach for this problem is to set up a pre-commit hook or use Claude Code hooks to run your linter automatically. </strong></em></p></blockquote><p></p><h3>4) My Golden Rule</h3><p>If an instruction isn&#8217;t relevant to 80%+ of my Claude Code sessions, it doesn&#8217;t belong in CLAUDE.md. I move it to a separate file or a custom slash command.</p><blockquote><p><em><strong>Before we move to the advanced patterns, let&#8217;s see how to create the CLAUDE.md file.</strong></em> </p></blockquote><p></p><div><hr></div><h2>How to Create Your CLAUDE.md</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!p7iv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F281c2944-1db9-4a27-bc2d-9ac17df9d2e6_1284x810.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!p7iv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F281c2944-1db9-4a27-bc2d-9ac17df9d2e6_1284x810.gif 424w, https://substackcdn.com/image/fetch/$s_!p7iv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F281c2944-1db9-4a27-bc2d-9ac17df9d2e6_1284x810.gif 848w, https://substackcdn.com/image/fetch/$s_!p7iv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F281c2944-1db9-4a27-bc2d-9ac17df9d2e6_1284x810.gif 1272w, https://substackcdn.com/image/fetch/$s_!p7iv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F281c2944-1db9-4a27-bc2d-9ac17df9d2e6_1284x810.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!p7iv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F281c2944-1db9-4a27-bc2d-9ac17df9d2e6_1284x810.gif" width="1284" height="810" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/281c2944-1db9-4a27-bc2d-9ac17df9d2e6_1284x810.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:810,&quot;width&quot;:1284,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:165618,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/185975468?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F281c2944-1db9-4a27-bc2d-9ac17df9d2e6_1284x810.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!p7iv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F281c2944-1db9-4a27-bc2d-9ac17df9d2e6_1284x810.gif 424w, https://substackcdn.com/image/fetch/$s_!p7iv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F281c2944-1db9-4a27-bc2d-9ac17df9d2e6_1284x810.gif 848w, https://substackcdn.com/image/fetch/$s_!p7iv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F281c2944-1db9-4a27-bc2d-9ac17df9d2e6_1284x810.gif 1272w, https://substackcdn.com/image/fetch/$s_!p7iv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F281c2944-1db9-4a27-bc2d-9ac17df9d2e6_1284x810.gif 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 aria-hidden="true" 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><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><blockquote><p><strong>You have three ways to create a CLAUDE.md file. Each serves a different purpose.</strong></p></blockquote><h3>Method 1: The /init Command</h3><p>The fastest way to get started. Claude analyzes your entire codebase and generates a starter CLAUDE.md.</p><pre><code><code>cd your-project
claude
/init
</code></code></pre><p>Claude examines your package files, existing documentation, configuration files, and code structure. It generates a CLAUDE.md with:</p><ul><li><p><em>Build commands</em></p></li><li><p><em>Test instructions</em></p></li><li><p><em>Key directories</em></p></li><li><p><em>Coding conventions it detected</em></p></li></ul><div class="pullquote"><p><strong>Important:</strong> treat <code>/init</code> as a starting point, not a finished product. The generated file captures obvious patterns but misses nuances specific to your workflow. Always review and refine.</p></div><p>You can also run <code>/init</code> On projects that already have a CLAUDE.md. Claude will suggest improvements based on what it learns from exploring your codebase.</p><p></p><h3>Method 2: Manual Creation</h3><p>Create the file yourself in any markdown editor:</p><pre><code><code>touch CLAUDE.md</code></code></pre><blockquote><p><strong>Or use your editor of choice. There&#8217;s no required format &#8212; save it as </strong><code>CLAUDE.md</code><strong> (all caps) in your project root.</strong></p></blockquote><p>When to use manual creation:</p><ul><li><p><em>You want full control from the start</em></p></li><li><p><em>You&#8217;re following a specific template</em></p></li><li><p><em>You want to avoid the bloat that </em><code>/init</code><em> sometimes generates</em></p><p></p></li></ul><h3>Method 3: The # Memory Shortcut</h3><p>Add instructions on the fly while working in Claude Code. Type <code>#</code> followed by your instruction:</p><pre><code><code># Always run tests before committing</code></code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!XEc9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed6cf526-d4e7-46a9-a9e9-0dcad0cbd0bd_1284x810.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XEc9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed6cf526-d4e7-46a9-a9e9-0dcad0cbd0bd_1284x810.gif 424w, https://substackcdn.com/image/fetch/$s_!XEc9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed6cf526-d4e7-46a9-a9e9-0dcad0cbd0bd_1284x810.gif 848w, https://substackcdn.com/image/fetch/$s_!XEc9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed6cf526-d4e7-46a9-a9e9-0dcad0cbd0bd_1284x810.gif 1272w, https://substackcdn.com/image/fetch/$s_!XEc9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed6cf526-d4e7-46a9-a9e9-0dcad0cbd0bd_1284x810.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XEc9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed6cf526-d4e7-46a9-a9e9-0dcad0cbd0bd_1284x810.gif" width="1284" height="810" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ed6cf526-d4e7-46a9-a9e9-0dcad0cbd0bd_1284x810.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:810,&quot;width&quot;:1284,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:321810,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.claudecodemasterclass.com/i/185975468?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed6cf526-d4e7-46a9-a9e9-0dcad0cbd0bd_1284x810.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!XEc9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed6cf526-d4e7-46a9-a9e9-0dcad0cbd0bd_1284x810.gif 424w, https://substackcdn.com/image/fetch/$s_!XEc9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed6cf526-d4e7-46a9-a9e9-0dcad0cbd0bd_1284x810.gif 848w, https://substackcdn.com/image/fetch/$s_!XEc9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed6cf526-d4e7-46a9-a9e9-0dcad0cbd0bd_1284x810.gif 1272w, https://substackcdn.com/image/fetch/$s_!XEc9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed6cf526-d4e7-46a9-a9e9-0dcad0cbd0bd_1284x810.gif 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 aria-hidden="true" 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><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><blockquote><p><em><strong>This is powerful for capturing insights as you work. When you find a new potential addition to CLAUDE.md, add it with </strong></em><code>#</code><em><strong>. </strong></em></p></blockquote><p></p><h3>My Recommendation</h3><div class="pullquote"><p>Start with <code>/init</code> to get a baseline, then refine manually. Use <code>#</code> to add instructions as you discover new ideas, and keep this in mind: the best CLAUDE.md files are built iteratively.<br></p></div><h2>Advanced CLAUDE.md Patterns</h2><p>Once you&#8217;ve mastered the basics, these patterns take your CLAUDE.md to the next level.</p><h3>Pattern 1: Index Files for Large Codebases</h3><p>For large or unfamiliar codebases, create index files that help Claude navigate efficiently.</p><p><strong>Step 1:</strong> Generate a general index</p><pre><code><code># general_index.md

## /src/api/
- `auth.py` &#8212; Authentication endpoints, JWT handling
- `users.py` &#8212; User CRUD operations
- `products.py` &#8212; Product catalog endpoints

## /src/models/
- `user.py` &#8212; User model, relationships to orders
- `product.py` &#8212; Product model, inventory tracking

## /src/utils/
- `validators.py` &#8212; Input validation helpers
- `formatters.py` &#8212; Response formatting utilities
</code></code></pre><p><strong>Step 2:</strong> Reference it in CLAUDE.md</p><pre><code><code>## Navigation

I have provided index files to help you navigate:

- `general_index.md` &#8212; File descriptions for each module
- `detailed_index.md` &#8212; Function signatures and docstrings

These indexes may or may not be up to date. Verify by checking 
the actual files when needed.
</code></code></pre><p>The &#8220;may or may not be up to date&#8221; line is important &#8212; it prevents Claude from relying solely on the index and encourages verification.</p><h3>Pattern 2: Modular CLAUDE.md Design</h3><p>Break your CLAUDE.md into clear sections with markdown headers. This prevents instruction bleeding between different functional areas.</p><pre><code><code># CLAUDE.md

## Development Commands
&lt;!-- Build, test, run instructions --&gt;

## Code Standards  
&lt;!-- Conventions that apply everywhere --&gt;

## Workflow Procedures
&lt;!-- How to complete common tasks --&gt;

## File Boundaries
&lt;!-- What Claude can and cannot modify --&gt;

## Tool Integration
&lt;!-- MCP servers, custom commands --&gt;
</code></code></pre><p>Each section is self-contained. Claude can focus on the relevant section without other instructions interfering.</p><h3>Pattern 3: Workflow Definitions</h3><p>Define step-by-step workflows for complex tasks. </p><p>This prevents Claude from jumping straight into code without planning.</p><pre><code><code>## Workflows

### Adding a New API Endpoint

1. Check if similar endpoint exists in `src/api/`
2. Create schema in `src/schemas/` if new data types needed
3. Implement endpoint in appropriate router file
4. Add tests in `tests/api/`
5. Update API documentation
6. Run full test suite before committing

### Database Schema Changes

1. Describe the change and why it's needed
2. Create migration: `alembic revision --autogenerate -m "description"`
3. Review generated migration file
4. Test migration: `alembic upgrade head`
5. Test rollback: `alembic downgrade -1`
6. Update relevant models and schemas
</code></code></pre><h3>Pattern 4: Context Swapping</h3><p>For projects with distinct phases (development vs. deployment, frontend vs. backend), maintain multiple CLAUDE.md variants:</p><pre><code><code>project/
&#9500;&#9472;&#9472; CLAUDE.md                 # Active configuration
&#9500;&#9472;&#9472; .claude/
&#9474;   &#9500;&#9472;&#9472; CLAUDE.development.md # Development focus
&#9474;   &#9500;&#9472;&#9472; CLAUDE.deployment.md  # Deployment focus
&#9474;   &#9492;&#9472;&#9472; CLAUDE.debugging.md   # Debugging focus</code></code></pre><p>Swap them as needed:</p><pre><code><code>cp .claude/CLAUDE.deployment.md CLAUDE.md</code></code></pre><p>This keeps Claude&#8217;s focus tight and task-specific.</p><h3>Pattern 5: Conditional Instructions</h3><p>Tell Claude to behave differently based on what it&#8217;s working on:</p><pre><code><code>## Conditional Rules

When working in `src/api/`:
- All endpoints must have OpenAPI documentation
- Use dependency injection for database sessions
- Return appropriate HTTP status codes

When working in `tests/`:
- Use fixtures from `conftest.py`
- Mock external services, never call them
- Each test file mirrors the source file structure

When working in `scripts/`:
- Scripts must be idempotent (safe to run multiple times)
- Include --dry-run option for destructive operations
- Log all actions for debugging
</code></code></pre><h3>Pattern 6: MCP Server Documentation</h3><p>If you use MCP servers, document them in CLAUDE.md so Claude knows when and how to use them:</p><pre><code><code>## MCP Integrations

### Slack MCP
- Posts to #dev-notifications channel only
- Use for deployment notifications and build failures
- Do not use for individual PR updates
- Rate limited to 10 messages per hour

### Database MCP
- Read-only access to production replica
- Use for data exploration, never for writes
- Prefer this over raw SQL when possible
</code></code></pre><p>This connects to our upcoming issue on the <em><strong>Claude Code MCP Masterclass</strong></em>.</p><div><hr></div><h2>CLAUDE.md + Hooks &amp; Subagents</h2><p>CLAUDE.md becomes  more powerful when combined with other Claude Code features. Here&#8217;s a preview of how they work together.</p><p></p><h3>CLAUDE.md + Hooks</h3><p>Hooks are automated actions that run at specific points in Claude&#8217;s workflow. Your CLAUDE.md can reference and coordinate with them.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Y5F5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecddb4bc-c0e7-45e1-9ea9-e4b33a5b48a4_806x372.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Y5F5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecddb4bc-c0e7-45e1-9ea9-e4b33a5b48a4_806x372.png 424w, https://substackcdn.com/image/fetch/$s_!Y5F5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecddb4bc-c0e7-45e1-9ea9-e4b33a5b48a4_806x372.png 848w, https://substackcdn.com/image/fetch/$s_!Y5F5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecddb4bc-c0e7-45e1-9ea9-e4b33a5b48a4_806x372.png 1272w, https://substackcdn.com/image/fetch/$s_!Y5F5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecddb4bc-c0e7-45e1-9ea9-e4b33a5b48a4_806x372.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Y5F5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecddb4bc-c0e7-45e1-9ea9-e4b33a5b48a4_806x372.png" width="806" height="372" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ecddb4bc-c0e7-45e1-9ea9-e4b33a5b48a4_806x372.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:372,&quot;width&quot;:806,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:10638,&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://newsletter.claudecodemasterclass.com/i/185975468?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecddb4bc-c0e7-45e1-9ea9-e4b33a5b48a4_806x372.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_!Y5F5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecddb4bc-c0e7-45e1-9ea9-e4b33a5b48a4_806x372.png 424w, https://substackcdn.com/image/fetch/$s_!Y5F5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecddb4bc-c0e7-45e1-9ea9-e4b33a5b48a4_806x372.png 848w, https://substackcdn.com/image/fetch/$s_!Y5F5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecddb4bc-c0e7-45e1-9ea9-e4b33a5b48a4_806x372.png 1272w, https://substackcdn.com/image/fetch/$s_!Y5F5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecddb4bc-c0e7-45e1-9ea9-e4b33a5b48a4_806x372.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 aria-hidden="true" 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><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>Instead of asking Claude to check formatting (slow, expensive), set up a hook:</p><pre><code><code>## Standards

Code must pass linting before commit. 
A pre-commit hook runs `npm run lint` automatically.
Do not manually check formatting &#8212; the hook handles it.
</code></code></pre><p>The CLAUDE.md tells Claude the rule exists. The hook enforces it. Claude focuses on actual coding.</p><p></p><h3>CLAUDE.md + Subagents</h3><p>Subagents are isolated Claude instances that handle specific tasks. They have their own context window, preventing information from one task from polluting another.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LALW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5822ea22-beb3-47f2-af65-209e74eec8b0_739x504.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LALW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5822ea22-beb3-47f2-af65-209e74eec8b0_739x504.png 424w, https://substackcdn.com/image/fetch/$s_!LALW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5822ea22-beb3-47f2-af65-209e74eec8b0_739x504.png 848w, https://substackcdn.com/image/fetch/$s_!LALW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5822ea22-beb3-47f2-af65-209e74eec8b0_739x504.png 1272w, https://substackcdn.com/image/fetch/$s_!LALW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5822ea22-beb3-47f2-af65-209e74eec8b0_739x504.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LALW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5822ea22-beb3-47f2-af65-209e74eec8b0_739x504.png" width="739" height="504" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5822ea22-beb3-47f2-af65-209e74eec8b0_739x504.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:504,&quot;width&quot;:739,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:14251,&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://newsletter.claudecodemasterclass.com/i/185975468?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5822ea22-beb3-47f2-af65-209e74eec8b0_739x504.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_!LALW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5822ea22-beb3-47f2-af65-209e74eec8b0_739x504.png 424w, https://substackcdn.com/image/fetch/$s_!LALW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5822ea22-beb3-47f2-af65-209e74eec8b0_739x504.png 848w, https://substackcdn.com/image/fetch/$s_!LALW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5822ea22-beb3-47f2-af65-209e74eec8b0_739x504.png 1272w, https://substackcdn.com/image/fetch/$s_!LALW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5822ea22-beb3-47f2-af65-209e74eec8b0_739x504.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 aria-hidden="true" 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><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>Your CLAUDE.md helps subagents understand the project quickly without needing the full conversation history.</p><pre><code><code>## Subagent Guidelines

When delegating tasks to subagents:
- Security reviews: Use fresh subagent, don't carry implementation context
- Code exploration: Subagent should read general_index.md first
- Documentation: Subagent can access docs/ freely
</code></code></pre><p>CLAUDE.md alone is powerful. Combined with hooks and subagents, it becomes a complete automation system:</p><ul><li><p><strong>CLAUDE.md</strong> defines the rules</p></li><li><p><strong>Hooks</strong> enforce them automatically</p></li><li><p><strong>Subagents</strong> handle specialized tasks with a clean context</p></li></ul><div><hr></div><h2> Claude.md Maintenance </h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!h9vv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabb60890-4225-49ac-85fb-6f1cfe550c52_862x495.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!h9vv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabb60890-4225-49ac-85fb-6f1cfe550c52_862x495.png 424w, https://substackcdn.com/image/fetch/$s_!h9vv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabb60890-4225-49ac-85fb-6f1cfe550c52_862x495.png 848w, https://substackcdn.com/image/fetch/$s_!h9vv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabb60890-4225-49ac-85fb-6f1cfe550c52_862x495.png 1272w, https://substackcdn.com/image/fetch/$s_!h9vv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabb60890-4225-49ac-85fb-6f1cfe550c52_862x495.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!h9vv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabb60890-4225-49ac-85fb-6f1cfe550c52_862x495.png" width="862" height="495" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/abb60890-4225-49ac-85fb-6f1cfe550c52_862x495.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:495,&quot;width&quot;:862,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:12032,&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://newsletter.claudecodemasterclass.com/i/185975468?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabb60890-4225-49ac-85fb-6f1cfe550c52_862x495.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_!h9vv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabb60890-4225-49ac-85fb-6f1cfe550c52_862x495.png 424w, https://substackcdn.com/image/fetch/$s_!h9vv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabb60890-4225-49ac-85fb-6f1cfe550c52_862x495.png 848w, https://substackcdn.com/image/fetch/$s_!h9vv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabb60890-4225-49ac-85fb-6f1cfe550c52_862x495.png 1272w, https://substackcdn.com/image/fetch/$s_!h9vv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabb60890-4225-49ac-85fb-6f1cfe550c52_862x495.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 aria-hidden="true" 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><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>CLAUDE.md isn&#8217;t a &#8220;set and forget&#8221; file. </p><blockquote><p><em><strong>Projects change, teams learn better patterns, and new tools enter your workflow. Here&#8217;s how to keep it current.</strong></em></p></blockquote><h3>Maintenance Best Practices</h3><p><strong>1. Update with your PRs</strong></p><p>Add CLAUDE.md to your PR checklist:</p><ul><li><p>[ ]Code changes complete</p></li><li><p>[ ] Tests passing</p></li><li><p>[ ] Documentation updated</p></li><li><p>[ ] <strong>CLAUDE.md updated if workflows changed</strong></p></li></ul><p><strong>2. Use the # shortcut continuously</strong></p><p>When you discover something Claude keeps missing, add it immediately:</p><pre><code><code># Always run database migrations before starting the dev server</code></code></pre><p>These small additions compound into a CLAUDE.md that reflects reality.</p><p><strong>3. Review quarterly</strong></p><p>Set a reminder to review your CLAUDE.md every few months:</p><ul><li><p>Are all commands still accurate?</p></li><li><p>Have any workflows changed?</p></li><li><p>Is anything outdated or redundant?</p></li><li><p>Can anything be removed?</p></li></ul><p><strong>4. Version control it</strong></p><p>Commit CLAUDE.md to git. Your team benefits from improvements, and you can track what changed when.</p><div><hr></div><h2>Final Thoughts </h2><p>CLAUDE.md is the foundation of everything in Claude Code. When you get this right, every other feature <em><strong>(hooks, subagents, and MCP) </strong></em>works better.</p><p><strong>Key takeaways:</strong></p><ul><li><p>CLAUDE.md is a configuration file, not documentation</p></li><li><p>Claude treats it as system-level rules, stricter than your prompts</p></li><li><p>Less is more &#8212; if it exceeds 100-150 instructions, you're doing too much</p></li><li><p>Use the hierarchy: global &#8594; project &#8594; nested</p></li><li><p>Progressive disclosure is better than bloated files</p></li><li><p>Iterate continuously with the # shortcut</p></li></ul><div class="pullquote"><p>In the next Masterclass issue, we&#8217;ll cover <strong>Hooks</strong> automation. Your CLAUDE.md will set the rules, and the hooks will enforce them.</p></div><h3>Resources  </h3><blockquote><p><strong>PS: I am working on our main Claude Code Masterclass Git repo, where I will add all these code snippets and templates for quick and easy access. </strong> </p></blockquote><p>For this issue, I have these resources that will be added to the repo soon: </p><ul><li><p><strong>Claude.md Templates by Project Type</strong></p></li><li><p><strong>Claude.md Common Mistakes</strong></p></li><li><p><strong>All the Code Snippets Shared In This Newsletter </strong></p></li></ul><div><hr></div><h3>Next: Coming Up Issues </h3><p>The next issues in this Masterclass Series will cover:</p><ul><li><p><strong>Claude Code Hooks Masterclass </strong> &#8212; Automation that runs without asking</p></li><li><p><strong>Claude Code Subagents Masterclass </strong>&#8212; Building your AI team</p></li><li><p><strong>Claude Code MCP Masterclass </strong>&#8212; Extending Claude&#8217;s capabilities</p></li></ul><p>Your CLAUDE.md is the foundation you need before moving to hooks, MCP servers, and subagents. </p><div><hr></div><p><strong>What&#8217;s your CLAUDE.md look like?</strong></p><p>Reply to this email with your current setup. I&#8217;ll share interesting patterns in a future issue.</p><div class="pullquote"><p><em>Finally, this newsletter belongs to all of us. If there's something that can make it better or something you don&#8217;t like, please let me know.  </em></p><p><em><strong>See you in the next one. </strong></em></p></div><div><hr></div><h1>              Claude Code Masterclass</h1><p><strong>                                                     </strong>Let&#8217;s Build It Together</p><p>                                                         &#8212; <strong>Joe Njenga</strong></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.claudecodemasterclass.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://newsletter.claudecodemasterclass.com/subscribe?"><span>Subscribe now</span></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_!7Qdr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9592624e-3d7f-495c-9dda-04c805466e95_1478x780.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7Qdr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9592624e-3d7f-495c-9dda-04c805466e95_1478x780.png 424w, https://substackcdn.com/image/fetch/$s_!7Qdr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9592624e-3d7f-495c-9dda-04c805466e95_1478x780.png 848w, https://substackcdn.com/image/fetch/$s_!7Qdr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9592624e-3d7f-495c-9dda-04c805466e95_1478x780.png 1272w, https://substackcdn.com/image/fetch/$s_!7Qdr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9592624e-3d7f-495c-9dda-04c805466e95_1478x780.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7Qdr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9592624e-3d7f-495c-9dda-04c805466e95_1478x780.png" width="1456" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9592624e-3d7f-495c-9dda-04c805466e95_1478x780.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:62678,&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://newsletter.claudecodemasterclass.com/i/185975468?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9592624e-3d7f-495c-9dda-04c805466e95_1478x780.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_!7Qdr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9592624e-3d7f-495c-9dda-04c805466e95_1478x780.png 424w, https://substackcdn.com/image/fetch/$s_!7Qdr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9592624e-3d7f-495c-9dda-04c805466e95_1478x780.png 848w, https://substackcdn.com/image/fetch/$s_!7Qdr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9592624e-3d7f-495c-9dda-04c805466e95_1478x780.png 1272w, https://substackcdn.com/image/fetch/$s_!7Qdr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9592624e-3d7f-495c-9dda-04c805466e95_1478x780.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 aria-hidden="true" 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><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><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.claudecodemasterclass.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 Claude Code Masterclass! 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>]]></content:encoded></item><item><title><![CDATA[Claude Code Masterclass Introduction ]]></title><description><![CDATA[State of Claude Code in 2026 &#8212; Issue #1 &#8212; January 2026]]></description><link>https://newsletter.claudecodemasterclass.com/p/claude-code-masterclass-introduction</link><guid isPermaLink="false">https://newsletter.claudecodemasterclass.com/p/claude-code-masterclass-introduction</guid><dc:creator><![CDATA[Joe]]></dc:creator><pubDate>Tue, 20 Jan 2026 15:00:00 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/6a31eaeb-8a7e-475b-8622-93ddae898a24_1200x600.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Claude Code has changed more in the last 11 months than most tools change in 5 years.</p><p>You signed up because you wanted to master it.</p><blockquote><p><em><strong>Over 3,000 of you came from my Medium articles because I promised something deeper&#8212;advanced workflows, production systems, the stuff I couldn&#8217;t fit into a 10-minute read.</strong></em></p></blockquote><p>You&#8217;ve been waiting. Now I&#8217;m delivering.</p><p>This newsletter will keep you updated with practical tutorials and guides as new Claude Code features are released. </p><p>I&#8217;m also working on the course and a private community&#8212;more details on both in future issues.</p><p><strong>Why a newsletter?</strong></p><p>Medium limits me to 2 posts per day, and my feed mixes Claude Code with other AI topics. </p><blockquote><p><em><strong>Here, the focus is 100% Claude Code&#8212;deep dives, quick tutorials, and production-ready configurations.</strong></em></p></blockquote><p><strong>If you&#8217;re a complete beginner,</strong> start with my <a href="https://github.com/Njengah/claude-code-cheat-sheet">Claude Code Cheat Sheet</a> and my <a href="https://medium.com/@joe.njenga/list/claude-code-bd02c285e37f">Medium tutorial collection</a>, which covers features as they have developed over the past year.</p><p>Now, let&#8217;s look at where Claude Code stands today.</p><div><hr></div><h2>State of Claude Code: January 2026</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dOfB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29ecd9e1-1bc8-4f71-9980-6d92252375de_1627x563.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dOfB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29ecd9e1-1bc8-4f71-9980-6d92252375de_1627x563.png 424w, https://substackcdn.com/image/fetch/$s_!dOfB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29ecd9e1-1bc8-4f71-9980-6d92252375de_1627x563.png 848w, https://substackcdn.com/image/fetch/$s_!dOfB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29ecd9e1-1bc8-4f71-9980-6d92252375de_1627x563.png 1272w, https://substackcdn.com/image/fetch/$s_!dOfB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29ecd9e1-1bc8-4f71-9980-6d92252375de_1627x563.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dOfB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29ecd9e1-1bc8-4f71-9980-6d92252375de_1627x563.png" width="1456" height="504" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/29ecd9e1-1bc8-4f71-9980-6d92252375de_1627x563.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:504,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:43166,&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://newsletter.claudecodemasterclass.com/i/169337429?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29ecd9e1-1bc8-4f71-9980-6d92252375de_1627x563.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_!dOfB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29ecd9e1-1bc8-4f71-9980-6d92252375de_1627x563.png 424w, https://substackcdn.com/image/fetch/$s_!dOfB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29ecd9e1-1bc8-4f71-9980-6d92252375de_1627x563.png 848w, https://substackcdn.com/image/fetch/$s_!dOfB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29ecd9e1-1bc8-4f71-9980-6d92252375de_1627x563.png 1272w, https://substackcdn.com/image/fetch/$s_!dOfB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29ecd9e1-1bc8-4f71-9980-6d92252375de_1627x563.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 aria-hidden="true" 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><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>When Claude Code launched in February 2025, it was a simple terminal tool. <em><strong>You could chat with Claude, edit files, and run bash commands. </strong></em></p><p>Eleven months later, it&#8217;s an entirely different beast.</p><pre><code>&#128994; FOUNDATION ERA
   Feb 2025 &#8594; Launch: Terminal, Files, Bash
   Mar 2025 &#8594; CLAUDE.md &amp; Project Context  
   Apr 2025 &#8594; MCP + Custom Commands

&#128993; EXPANSION ERA
   May 2025 &#8594; Hooks &amp; Automation
   Jun 2025 &#8594; Extended Thinking + Plan Mode
   Jul 2025 &#8594; Subagents &amp; Delegation

&#128992; MATURITY ERA
   Aug 2025 &#8594; Background Tasks + Parallel
   Sep-Dec 2025 &#8594; Skills, Sandbox, Checkpoints

&#128308; NOW
   Jan 2026 &#8594; Production-Ready Platform
</code></pre><ul><li><p><strong>Foundation Era (Feb-Apr 2025)</strong> &#8212; Claude Code could help you code. You talked, and it edited files. Useful, but limited.</p></li><li><p><strong>Expansion Era (May-Jul 2025)</strong> &#8212; Hooks meant automation. Extended thinking meant complex reasoning. Subagents meant building an AI team.</p></li><li><p><strong>Maturity Era (Aug-Dec 2025)</strong> &#8212; Background tasks, parallel execution, sandboxing, checkpointing. Production-ready.</p></li><li><p><strong>Current State (Jan 2026)</strong> &#8212; Full multi-agent orchestration, enterprise deployment, team collaboration. Not an assistant&#8212;a platform.</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_!tEcO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc95a74ec-63e5-45cf-bdfa-f5f32a94f275_1507x820.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tEcO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc95a74ec-63e5-45cf-bdfa-f5f32a94f275_1507x820.png 424w, https://substackcdn.com/image/fetch/$s_!tEcO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc95a74ec-63e5-45cf-bdfa-f5f32a94f275_1507x820.png 848w, https://substackcdn.com/image/fetch/$s_!tEcO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc95a74ec-63e5-45cf-bdfa-f5f32a94f275_1507x820.png 1272w, https://substackcdn.com/image/fetch/$s_!tEcO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc95a74ec-63e5-45cf-bdfa-f5f32a94f275_1507x820.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!tEcO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc95a74ec-63e5-45cf-bdfa-f5f32a94f275_1507x820.png" width="1456" height="792" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c95a74ec-63e5-45cf-bdfa-f5f32a94f275_1507x820.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:792,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:87912,&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://newsletter.claudecodemasterclass.com/i/169337429?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc95a74ec-63e5-45cf-bdfa-f5f32a94f275_1507x820.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_!tEcO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc95a74ec-63e5-45cf-bdfa-f5f32a94f275_1507x820.png 424w, https://substackcdn.com/image/fetch/$s_!tEcO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc95a74ec-63e5-45cf-bdfa-f5f32a94f275_1507x820.png 848w, https://substackcdn.com/image/fetch/$s_!tEcO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc95a74ec-63e5-45cf-bdfa-f5f32a94f275_1507x820.png 1272w, https://substackcdn.com/image/fetch/$s_!tEcO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc95a74ec-63e5-45cf-bdfa-f5f32a94f275_1507x820.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 aria-hidden="true" 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><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><div><hr></div><p></p><h2>Where Are You on the Learning Curve?</h2><p>Claude Code has a steeper learning curve than most tools because the features compound.</p><p>Hooks become 10x more powerful when combined with subagents. MCP servers unlock new possibilities for custom commands.</p><p>Here&#8217;s my honest assessment of the skill levels:</p><h2>5 Stages of Claude Code Mastery</h2><p><br><strong>Self-Assessment: Where Do You Stand?</strong></p><p><strong>&#128994; Level 1: Foundation</strong> <em>(Most developers stop here)</em></p><ul><li><p>I can install and run Claude Code</p></li><li><p>I know the basic slash commands (/help, /clear, /config)</p></li><li><p>I can ask Claude to edit files and run commands<br></p></li></ul><p><strong>&#128993; Level 2: Configuration</strong> <em>(You&#8217;re getting serious)</em></p><ul><li><p>I have a CLAUDE.md file in my projects</p></li><li><p>I&#8217;ve created custom slash commands</p></li><li><p>I&#8217;ve configured permission modes<br></p></li></ul><p><strong>&#128992; Level 3: Automation</strong> <em>(You&#8217;re ahead of 90% of users)</em></p><ul><li><p>I have hooks running automatically</p></li><li><p>I&#8217;ve connected at least one MCP server</p></li><li><p>I use extended thinking for complex problems<br></p></li></ul><p><strong>&#128308; Level 4: Orchestration</strong> <em>(You&#8217;re in the top 5%)</em></p><ul><li><p>I&#8217;ve created custom subagents</p></li><li><p>I coordinate multiple agents on complex tasks</p></li><li><p>I use background tasks for parallel work<br></p></li></ul><p><strong>&#128995; Level 5: Production</strong> <em>(You&#8217;re teaching others)</em></p><ul><li><p>I&#8217;ve deployed Claude Code in CI/CD pipelines</p></li><li><p>I manage team-wide configurations</p></li><li><p>I&#8217;ve integrated with AWS Bedrock or Google Vertex</p></li></ul><blockquote><p><em><strong>Most developers who&#8217;ve used Claude Code for months are still at Level 1 or 2. Not because they&#8217;re not smart&#8212;but because the docs and most tutorials don&#8217;t show how features combine.</strong></em></p></blockquote><p>This newsletter takes you from Level 2 to Level 5.</p><p></p><div><hr></div><p></p><h2>What is the Claude Code Masterclass Newsletter? </h2><p>Your complete path to Claude Code mastery.</p><blockquote><p><em><strong>Whether you&#8217;re writing your first CLAUDE.md file or orchestrating multi-agent workflows, every issue gives you something you can implement that day.</strong></em></p></blockquote><p><strong>What to expect:</strong></p><ul><li><p>Foundational tips for newcomers</p></li><li><p>Advanced systems for power users</p></li><li><p>Complete configurations you can copy and use</p></li><li><p>Tested workflows with the reasoning behind them</p></li><li><p>New features covered as they&#8217;re released</p></li></ul><p>I cover Claude Code on Medium, but here I go deeper and more practical&#8212;100% focused on helping you build real systems.</p><div><hr></div><h1>Claude Code Masterclass Ecosystem</h1><p>This newsletter is part of something bigger. </p><blockquote><p><em><strong>I&#8217;m building a complete learning ecosystem around Claude Code&#8212;each piece designed to meet you where you are and take you further.</strong></em></p></blockquote><ul><li><p>The newsletter delivers weekly insights. </p></li><li><p>Medium covers tutorials and new features. </p></li><li><p>The course (coming soon) provides structured, hands-on training.</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_!k_su!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff274d4fc-b307-4b7e-97a3-069439ff04f5_437x762.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!k_su!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff274d4fc-b307-4b7e-97a3-069439ff04f5_437x762.png 424w, https://substackcdn.com/image/fetch/$s_!k_su!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff274d4fc-b307-4b7e-97a3-069439ff04f5_437x762.png 848w, https://substackcdn.com/image/fetch/$s_!k_su!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff274d4fc-b307-4b7e-97a3-069439ff04f5_437x762.png 1272w, https://substackcdn.com/image/fetch/$s_!k_su!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff274d4fc-b307-4b7e-97a3-069439ff04f5_437x762.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!k_su!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff274d4fc-b307-4b7e-97a3-069439ff04f5_437x762.png" width="437" height="762" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f274d4fc-b307-4b7e-97a3-069439ff04f5_437x762.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:762,&quot;width&quot;:437,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:19682,&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://newsletter.claudecodemasterclass.com/i/169337429?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff274d4fc-b307-4b7e-97a3-069439ff04f5_437x762.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_!k_su!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff274d4fc-b307-4b7e-97a3-069439ff04f5_437x762.png 424w, https://substackcdn.com/image/fetch/$s_!k_su!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff274d4fc-b307-4b7e-97a3-069439ff04f5_437x762.png 848w, https://substackcdn.com/image/fetch/$s_!k_su!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff274d4fc-b307-4b7e-97a3-069439ff04f5_437x762.png 1272w, https://substackcdn.com/image/fetch/$s_!k_su!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff274d4fc-b307-4b7e-97a3-069439ff04f5_437x762.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 aria-hidden="true" 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><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><blockquote><p><strong>Everything connects. Start anywhere, and grow from there.</strong></p></blockquote><h2></h2><div><hr></div><h2><br> What I Need From You</h2><p>Reply to this email and tell me:</p><ol><li><p><em><strong>Where are you on the skill assessment? (Levels 1-5)</strong></em></p></li><li><p><em><strong>What&#8217;s the single biggest thing you want to learn?</strong></em></p></li><li><p><em><strong>What&#8217;s frustrating you right now?</strong></em></p></li></ol><p>I read every reply. Your answers shape what I write next.</p><div><hr></div><h1>     Welcome to Claude Code Masterclass</h1><p><strong>                                                  </strong>Let&#8217;s build it together</p><p>                                                         &#8212; Joe Njenga</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.claudecodemasterclass.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://newsletter.claudecodemasterclass.com/subscribe?"><span>Subscribe now</span></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_!agnJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f958c9e-b75d-4a90-b090-b3dae0fa112a_1478x780.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!agnJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f958c9e-b75d-4a90-b090-b3dae0fa112a_1478x780.png 424w, https://substackcdn.com/image/fetch/$s_!agnJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f958c9e-b75d-4a90-b090-b3dae0fa112a_1478x780.png 848w, https://substackcdn.com/image/fetch/$s_!agnJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f958c9e-b75d-4a90-b090-b3dae0fa112a_1478x780.png 1272w, https://substackcdn.com/image/fetch/$s_!agnJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f958c9e-b75d-4a90-b090-b3dae0fa112a_1478x780.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!agnJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f958c9e-b75d-4a90-b090-b3dae0fa112a_1478x780.png" width="1456" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9f958c9e-b75d-4a90-b090-b3dae0fa112a_1478x780.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:59055,&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://newsletter.claudecodemasterclass.com/i/169337429?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f958c9e-b75d-4a90-b090-b3dae0fa112a_1478x780.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_!agnJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f958c9e-b75d-4a90-b090-b3dae0fa112a_1478x780.png 424w, https://substackcdn.com/image/fetch/$s_!agnJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f958c9e-b75d-4a90-b090-b3dae0fa112a_1478x780.png 848w, https://substackcdn.com/image/fetch/$s_!agnJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f958c9e-b75d-4a90-b090-b3dae0fa112a_1478x780.png 1272w, https://substackcdn.com/image/fetch/$s_!agnJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f958c9e-b75d-4a90-b090-b3dae0fa112a_1478x780.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 aria-hidden="true" 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><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>]]></content:encoded></item></channel></rss>