<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Claude Code Club Blog</title>
    <link>https://www.claudecodeclub.ai/blog</link>
    <atom:link href="https://www.claudecodeclub.ai/rss.xml" rel="self" type="application/rss+xml" />
    <description>Guides, workflows, and field notes for building and shipping with Claude Code, from the largest Claude Code community.</description>
    <language>en</language>
    <lastBuildDate>Sun, 11 Oct 2026 16:14:16 GMT</lastBuildDate>
    <generator>Claude Code Club build pipeline</generator>
    <item>
      <title>Claude Code in JetBrains: Plugin Setup for IntelliJ, PyCharm and WebStorm</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-jetbrains</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-jetbrains</guid>
      <pubDate>Sun, 11 Oct 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Getting Started</category>
      <category>Tools</category>
      <description><![CDATA[Claude Code works inside JetBrains IDEs like IntelliJ IDEA, PyCharm, WebStorm, PhpStorm, GoLand and Android Studio through an official plugin. Unlike the VS Code extension, the JetBrains plugin does not bundle Claude Code, so you install the CLI first, then the plugin, then run claude from the IDE's built-in terminal. You get diffs in the IDE's diff viewer, your selection shared automatically, file-reference shortcuts and lint errors Claude can read. Here is the setup, the fixes for the common snags, and when I would use it.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Claude Code runs in JetBrains IDEs (IntelliJ IDEA, PyCharm, WebStorm, PhpStorm, GoLand, Android Studio and more) through the official Claude Code plugin from the JetBrains Marketplace.</li><li>Install two things: the Claude Code CLI first, then the plugin, then restart the IDE. The plugin does not include its own copy of Claude Code. It runs claude in the IDE's terminal and connects to it. Any paid Claude plan or a Claude Console account works, no API key needed.</li><li>Cmd+Esc (Mac) or Ctrl+Esc opens Claude Code from the editor. Edits show in the IDE's diff viewer, your selection is shared automatically, and Claude can read the IDE's lint and syntax errors. If you do not already work in a JetBrains IDE, start with the desktop app instead.</li></ul>
<h2>How Claude Code works in JetBrains IDEs</h2>
<p>Claude Code connects to JetBrains IDEs through an official plugin published on the JetBrains Marketplace. The official docs list IntelliJ IDEA, PyCharm, Android Studio, WebStorm, PhpStorm and GoLand, and say it works with most JetBrains IDEs. Once it is connected, Claude shows its proposed edits in the IDE's own diff viewer, sees the file or code you have selected, and can read the inspection warnings your IDE already shows, like lint and syntax errors.</p>
<p>The big difference from the [Claude Code VS Code extension](/blog/claude-code-vscode-extension) is how it is built. The VS Code extension gives you a chat panel with Claude Code bundled inside. The JetBrains plugin does not bundle anything. It runs the regular claude command in the IDE's integrated terminal and wires it into the editor. So you are using the same terminal Claude Code, with the IDE doing the parts it is good at: diffs, navigation and inspections.</p>
<blockquote><strong>NOTE:</strong> If you are not a JetBrains user already, do not switch editors for this. The [Claude Code desktop app](/blog/claude-code-desktop-app) is still where I tell most people in the club to start. This guide is for people who already have IntelliJ, PyCharm or WebStorm open all day.</blockquote>
<h2>How to install the Claude Code JetBrains plugin</h2>
<ol><li>Install the Claude Code CLI first. The plugin needs the claude command on your PATH, and without it you get a &quot;Cannot launch Claude Code&quot; notification. Check it worked by running claude --version in any terminal.</li><li>Install the plugin. In your IDE open Settings, then Plugins, then Marketplace, search for &quot;Claude Code&quot; and install the one published by Anthropic. Restart the IDE.</li><li>Open your project from its root folder, so Claude sees the same files your IDE does.</li><li>Open the IDE's integrated terminal and run claude. The first time, you are asked to log in. Any paid Claude plan (Pro, Max, Team or Enterprise) or a Claude Console account works, and you do not need an API key.</li><li>Press Cmd+Esc (Mac) or Ctrl+Esc (Windows/Linux) from the editor, or click the Claude Code button, to jump straight to Claude from now on.</li></ol>
<p>Not sure which plan to sign in with? [Which Claude plan for Claude Code](/blog/which-claude-plan-for-claude-code) walks through it. On Windows, read [Claude Code on Windows](/blog/claude-code-on-windows) before you install the CLI.</p>
<blockquote><strong>TIP:</strong> Already run Claude Code in a separate terminal app? You can keep doing that. Start claude from your project root, type /ide, and it connects to the running JetBrains IDE. If the IDE does not have the plugin yet, /ide offers to install it and asks you to restart.</blockquote>
<h2>What you get once it is connected</h2>
<ul><li>Diffs in the IDE: proposed changes open in the JetBrains diff viewer instead of scrolling past in the terminal. You can switch this with the Diff tool setting in /config: auto shows diffs in the IDE, terminal keeps them in the terminal. That setting only appears while Claude Code is connected to the IDE.</li><li>Selection context: the code you highlight, or the tab you have open, is shared with Claude automatically. Files blocked by a Read deny rule in your permissions are not shared.</li><li>File references: Cmd+Option+K (Mac) or Alt+Ctrl+K (Windows/Linux) drops a precise reference like @src/auth.ts#L1-99 into your prompt.</li><li>IDE diagnostics: Claude can read the lint and syntax errors your IDE's inspections already found. It asks for them when it needs them, not automatically after every edit, so if you want a check, tell it to look at the IDE's errors before it finishes.</li></ul>
<p>The diagnostics part is the one I like most. JetBrains IDEs are strong at inspections, and letting Claude read those warnings directly beats copying error text into the chat. A prompt like &quot;fix the change, then check the IDE errors for this file and clean up anything you introduced&quot; puts that to work.</p>
<h2>Fixes for the common snags</h2>
<table><caption>Common Claude Code JetBrains problems and fixes from the official docs</caption><thead><tr><th>Problem</th><th>Fix</th></tr></thead><tbody><tr><td>&quot;Cannot launch Claude Code&quot; or &quot;command not found&quot;</td><td>The CLI is missing or not on the PATH your IDE sees. Run claude --version in a terminal, then set the full path under Settings, Tools, Claude Code [Beta], Claude command.</td></tr><tr><td>Esc does not stop Claude</td><td>Go to Settings, Tools, Terminal and untick &quot;Move focus to the editor with Escape&quot;, or delete the &quot;Switch focus to Editor&quot; terminal shortcut.</td></tr><tr><td>/ide says &quot;No available IDEs detected&quot;</td><td>Check the plugin is installed and enabled, fully restart the IDE, and make sure you launched claude from the IDE's terminal or the project root.</td></tr><tr><td>Plugin features do not appear</td><td>Run Claude Code from the project root, confirm the plugin is enabled, and restart the IDE completely, sometimes more than once.</td></tr><tr><td>Using JetBrains Remote Development</td><td>Install the plugin on the remote host (Settings, Plugin (Host)), not on your local machine.</td></tr><tr><td>Using WSL2 on Windows</td><td>Set the Claude command to run through WSL, and if the IDE is not detected, allow WSL2 traffic through Windows Firewall or switch WSL2 to mirrored networking.</td></tr></tbody></table>
<p>On a Mac there is also an optional setting to use Option+Enter for new lines in your prompt. If the Option key starts behaving oddly in the terminal, that setting is the first thing to turn off.</p>
<h2>One security setting to change</h2>
<p>The official docs flag a specific risk for JetBrains users. In acceptEdits mode, and in auto mode, Claude can edit files in your project without asking, and that can include IDE configuration files your IDE runs automatically. In plain terms, an edit to one of those files could run commands without the usual permission prompt.</p>
<p>My recommendation: in a JetBrains IDE, use Manual mode for edits, so you approve each change in the diff viewer. You already have a good diff viewer open, so the cost is small. [Claude Code permissions explained](/blog/claude-code-permissions-explained) covers the modes, and [Claude Code settings.json](/blog/claude-code-settings-json) shows where to set them.</p>
<h2>JetBrains plugin, VS Code extension or desktop app</h2>
<table><caption>Where to run Claude Code</caption><thead><tr><th>If you...</th><th>Use</th></tr></thead><tbody><tr><td>Already work in IntelliJ, PyCharm, WebStorm or another JetBrains IDE</td><td>The JetBrains plugin</td></tr><tr><td>Already work in VS Code or Cursor</td><td>The VS Code extension</td></tr><tr><td>Are new to code and mostly describe what you want</td><td>The desktop app</td></tr><tr><td>Want the IDE's inspections to catch Claude's mistakes</td><td>The JetBrains plugin, with Manual mode</td></tr></tbody></table>
<p>My take: the JetBrains plugin is the most &quot;terminal&quot; of the editor options, because it really is the terminal Claude Code with the IDE plugged in. That suits people who already know their IDE well and want Claude to fit their workflow, not replace it. If that is not you, the desktop app is less to learn and does the same work. All of them share the same settings file, so moving between them later is easy.</p>
<blockquote><strong>TIP:</strong> Whatever you pick, the first hour matters more than the tool. [Claude Code day one setup](/blog/claude-code-day-one-setup) covers the CLAUDE.md file, permissions and the habits that keep sessions clean.</blockquote>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club, members share the setups they actually use day to day, in JetBrains IDEs, VS Code, the desktop app and the terminal. It is $9 a month at https://www.skool.com/claudecodeclub/about, and the [curriculum](/curriculum) walks through the desktop app step by step.</blockquote>
<h2>FAQ</h2>
<p><strong>Is there an official Claude Code plugin for JetBrains?</strong></p><p>Yes. Anthropic publishes the Claude Code plugin on the JetBrains Marketplace. It works with most JetBrains IDEs, including IntelliJ IDEA, PyCharm, Android Studio, WebStorm, PhpStorm and GoLand.</p>
<p><strong>Do I need to install Claude Code separately for the JetBrains plugin?</strong></p><p>Yes. The JetBrains plugin does not bundle Claude Code. Install the Claude Code CLI first so the claude command is on your PATH, then install the plugin and restart the IDE.</p>
<p><strong>Do I need an API key to use Claude Code in IntelliJ or PyCharm?</strong></p><p>No. Any paid Claude plan (Pro, Max, Team or Enterprise) or a Claude Console account works. You log in the first time you run claude.</p>
<p><strong>How do I connect Claude Code to a JetBrains IDE from an outside terminal?</strong></p><p>Start claude from your project root and run /ide. It connects to the running IDE, and if the plugin is missing it offers to install it and asks you to restart the IDE.</p>
<p><strong>Why won't the Esc key stop Claude Code in the JetBrains terminal?</strong></p><p>The IDE's terminal uses Esc to jump back to the editor. In Settings, Tools, Terminal, untick &quot;Move focus to the editor with Escape&quot; or remove the &quot;Switch focus to Editor&quot; shortcut.</p>]]></content:encoded>
    </item>
    <item>
      <title>How Much to Charge for a Booking System (Price the Empty Slots, Not the Calendar)</title>
      <link>https://www.claudecodeclub.ai/blog/how-much-to-charge-for-a-booking-system</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/how-much-to-charge-for-a-booking-system</guid>
      <pubDate>Sun, 11 Oct 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Monetization</category>
      <category>Agency</category>
      <category>Freelancing</category>
      <description><![CDATA[How much to charge for a custom booking system depends on what a missed or empty appointment costs the business, how bookings get paid for, how many staff, rooms or locations it has to juggle, and what it must connect to. The calendar screen is the small part. Price the build on the admin time and lost bookings it fixes, add lines for payments, scheduling rules and each connection, and always quote a monthly plan. Here is the method and how to present it.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Price a custom booking system on what it fixes for the business: the hours spent booking by phone, text and email, the slots that sit empty, and the no-shows that cost money. Not on the number of screens or your hours.</li><li>Use the CCC Booking Quote: a base build priced on that value, plus a line for payments and deposits, a line for scheduling rules (staff, rooms, locations, buffers), a line for each connection like calendars and reminders, and a monthly Keep plan.</li><li>Ask first whether an off-the-shelf booking tool already fits. If it does, say so. A custom build earns its price when the business has rules those tools cannot handle, and those rules are what you are really pricing.</li></ul>
<h2>How much to charge for a booking system</h2>
<p>How much to charge for a booking system comes down to one question: what does an empty or missed appointment cost this business, and how much time goes into filling the calendar today? A salon, a clinic, a studio or a rental business does not want a calendar. It wants fewer gaps, fewer no-shows, and nobody stuck on the phone moving bookings around. Price the build on a share of that value, add lines for payments, scheduling rules and each system it connects to, and quote a monthly plan for upkeep. Do not price it on the number of pages or on hours.</p>
<p>Booking systems are good work to sell with Claude Code because a working first version comes together fast. You can show a client their own services, staff and time slots early. The trap is that a booking page looks done the moment someone can pick a time. The hard part is everything behind it: double bookings, time zones, cancellations, refunds, and the owner's rule that one service needs a specific room. That is where the unpaid work hides if you priced the screen.</p>
<blockquote><strong>NOTE:</strong> This post is part of the pricing series. If you have not built one yet, [how to build a booking system with Claude Code](/blog/build-a-booking-system-with-claude-code) walks through the build so you know what you are quoting.</blockquote>
<h2>Should they buy a booking tool instead?</h2>
<p>Ask this before you quote anything. Plenty of businesses are well served by an off-the-shelf scheduling tool, and if one fits, telling the client so builds more trust than any proposal. I would rather lose that build and keep the client for the next one.</p>
<p>A custom booking system earns its price when the business has rules those tools handle badly. Bookings that need a specific person and a specific room at the same time. Prices that change by day, season or customer type. Packages and memberships that use up sessions. Deposits that depend on the service. A booking flow that has to sit inside their existing site, app or customer records. When you hear those, you are not pricing a calendar. You are pricing their rules, and that is where the value sits.</p>
<h2>The CCC Booking Quote</h2>
<table><caption>Five parts of a booking system quote</caption><thead><tr><th>Part</th><th>What it prices</th><th>Question to ask the client</th></tr></thead><tbody><tr><td>Base build</td><td>The admin time and lost bookings it fixes</td><td>How do people book today, who handles it, and how often do slots go empty or people not show up?</td></tr><tr><td>Payments and deposits</td><td>Taking money at booking, deposits, refunds and cancellation rules</td><td>Do you take payment or a deposit up front, and what happens when someone cancels late?</td></tr><tr><td>Scheduling rules</td><td>Staff, rooms, equipment, locations, buffers and opening hours</td><td>What has to be free at the same time for a booking to work?</td></tr><tr><td>Connections</td><td>Each calendar, reminder channel or system it syncs with</td><td>Where do bookings need to show up, and how should customers be reminded?</td></tr><tr><td>Keep plan</td><td>Monthly checks, fixes and small changes</td><td>What happens if bookings stop coming through on a Saturday?</td></tr></tbody></table>
<p>Base build. Work out what booking costs the client today: the hours someone spends answering calls and messages to book and move appointments, and what an empty slot or a no-show is worth to them. Price the build at a fraction of one year of that value, so they can see it pay for itself.</p>
<p>Payments and deposits. Taking money is its own line, because it brings refunds, partial refunds, failed payments and cancellation rules with it. Deposits are often the feature that cuts no-shows, so this line is easy to justify. Any payment key lives on the server, never in the page, and the client's payment account is in their name, not yours.</p>
<p>Scheduling rules. This is the line builders forget and clients never mention until launch. Ask what has to be free for a booking to work: a person, a room, a piece of equipment. Ask about buffers between appointments, different hours per location, and time zones if customers book from elsewhere. Every rule is a place for a double booking, so price them on what you find.</p>
<p>Connections. Each outside system is its own line: staff calendars, email or text reminders, their CRM or customer list. Each one has its own access and its own way of changing. If the bookings need to land in customer records, [how to build a CRM with Claude Code](/blog/build-a-crm-with-claude-code) shows what that side involves.</p>
<blockquote><strong>TIP:</strong> When a client says the number is too high, do not cut the price. Start with one location, take payment at the visit instead of online, or launch reminders by email first, and show which line moved. [The &quot;can you do it cheaper&quot; objection](/blog/can-you-do-it-cheaper-objection) has the wording.</blockquote>
<h2>Ask these before you quote</h2>
<ul><li>Walk me through one booking from first message to the appointment. Every step they describe is a step the system has to handle.</li><li>What happens when someone cancels or moves a booking? Late-cancel rules and refunds change the payments line.</li><li>Who can book what? Customers booking themselves, staff booking for customers, and admins overriding the rules are three different jobs.</li><li>Where does it live? On their current website, in an app, or as a standalone page. Settle it before you quote.</li><li>Who owns the accounts? Payment, email and hosting should be in the client's name, so the system keeps working if you part ways. [How to hand off a Claude Code project](/blog/how-to-hand-off-a-claude-code-project) covers the checklist.</li></ul>
<p>More questions that save a bad quote are in [client discovery questions before you quote](/blog/client-discovery-questions-before-you-quote).</p>
<h2>Always quote the Keep plan</h2>
<p>A booking system is live revenue. When it breaks, the business finds out from an angry customer at the front desk, or from a quiet weekend that should have been full. Reminder services change, calendar connections expire, payment settings get updated, and the owner adds a new service with a new rule.</p>
<p>Quote a monthly plan in the original proposal. Say what it covers: checking bookings and payments go through, fixing breaks when a connected service changes, keeping access current, and small changes like new services or new hours. Say what it does not cover: new locations, new payment types and new features, which are quoted separately. [How to price a maintenance retainer](/blog/how-to-price-a-maintenance-retainer) covers the structure. Few clients argue with paying to keep the thing that fills their calendar working.</p>
<h2>How to present the booking system quote</h2>
<ul><li>Lead with the outcome in their words. One line on fewer phone calls and fewer empty slots, then the price.</li><li>Itemize it. Base build, payments and deposits, scheduling rules, each connection, then the Keep plan. Itemized quotes get trimmed, not rejected.</li><li>Gate payments on proof. A deposit to start, a payment when real test bookings and payments go through end to end, and the final payment once customers are booking live. [How to structure milestone payments for an AI project](/blog/how-to-structure-milestone-payments-for-an-ai-project) covers the schedule.</li><li>Write the rules into the proposal. A short list of the scheduling, cancellation and refund rules, signed off by the client, ends the &quot;it should have known that&quot; argument before it starts.</li></ul>
<p>And skip hourly. Claude Code makes the build fast, so hourly pricing turns that speed into a pay cut. I covered why in [why I stopped charging hourly for AI builds](/blog/stopped-charging-hourly-for-ai-builds). If the client's team mostly needs to manage work inside the tool rather than take bookings, [how much to charge for an internal tool](/blog/how-much-to-charge-for-an-internal-tool) is the better guide.</p>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club, members share the booking and scheduling quotes they actually sent and how clients responded to each line. It is $9 a month at https://www.skool.com/claudecodeclub/about, and it is the fastest way to sanity-check a number before it goes out.</blockquote>
<h2>FAQ</h2>
<p><strong>How much should I charge for a custom booking system?</strong></p><p>Price it on what it fixes: the admin hours spent booking by hand, the empty slots and the no-shows. Charge a fraction of one year of that value for the build, add lines for payments, scheduling rules and each connection, and quote a monthly plan for upkeep.</p>
<p><strong>Should I build a custom booking system or recommend an existing tool?</strong></p><p>If an off-the-shelf booking tool fits the business, recommend it. A custom build is worth it when the business has rules those tools handle badly, like bookings that need a person and a room at once, packages, or pricing that changes by day or customer.</p>
<p><strong>Should I charge a monthly fee for a booking system?</strong></p><p>Yes. Bookings are live revenue, and reminders, calendar connections and payment settings change over time. A monthly plan covers checking bookings and payments go through, fixing breaks and small changes like new services or hours.</p>
<p><strong>Should payments and deposits be priced separately?</strong></p><p>Yes. Taking money brings refunds, failed payments and cancellation rules with it. Put it on its own line so the client can see what it costs and choose to start without it if needed.</p>
<p><strong>Should I charge hourly for a booking system?</strong></p><p>No. Claude Code makes the build fast, so hourly pricing punishes you for that speed. Price on the value of the bookings and admin time it fixes, with each part itemized.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code VS Code Extension: Setup, Shortcuts, and When to Use It</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-vscode-extension</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-vscode-extension</guid>
      <pubDate>Sat, 10 Oct 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Getting Started</category>
      <category>Tools</category>
      <description><![CDATA[The Claude Code VS Code extension puts Claude in a chat panel inside your editor. You install it from the Extensions view, sign in with a paid Claude plan or a Console account, and Claude sees the file you have open and any code you select. It shows edits as side-by-side diffs, lets you rewind with checkpoints, and shares settings and history with the rest of Claude Code. Here is how to set it up, the shortcuts worth learning, what it cannot do, and when I would pick the desktop app instead.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>The Claude Code VS Code extension is the official way to use Claude Code inside VS Code. Search &quot;Claude Code&quot; in the Extensions view, install it, sign in with any paid Claude plan or a Claude Console account, and open it from the Spark icon. No API key is needed.</li><li>Claude sees the file you have open and the code you select. Option+K (Mac) or Alt+K (Windows/Linux) drops an exact file-and-line reference into your prompt, and Cmd+Esc or Ctrl+Esc jumps between the editor and Claude.</li><li>Use it if you already live in VS Code. If you do not, the desktop app is the simpler home. Some features stay CLI-only, like the ! Bash shortcut and the full command list, so install the standalone CLI too if you want claude in the integrated terminal.</li></ul>
<h2>What the Claude Code VS Code extension is</h2>
<p>The Claude Code VS Code extension is Anthropic's own graphical panel for Claude Code, built into VS Code. Instead of chatting in a separate window, you talk to Claude in a panel next to your code. It reads the file you have open, sees the lines you highlight, and shows every edit it wants to make as a side-by-side diff you can accept or reject. It is the same Claude Code underneath: the extension bundles its own copy of the CLI, and it shares your settings, MCP servers, plugins and conversation history with the rest of Claude Code.</p>
<p>My default advice to most people in the club is still to start in the [Claude Code desktop app](/blog/claude-code-desktop-app). But a lot of people already have VS Code open all day, and for them the extension is the better fit, because the code and the conversation sit in one window.</p>
<blockquote><strong>NOTE:</strong> The extension also installs in VS Code forks such as Cursor. If you are deciding between editors rather than adding Claude to the one you have, read [Claude Code vs Cursor](/blog/claude-code-vs-cursor) first.</blockquote>
<h2>How to install and sign in</h2>
<ol><li>Check your VS Code version. The official docs list VS Code 1.94.0 or later as the minimum.</li><li>Open the Extensions view with Cmd+Shift+X (Mac) or Ctrl+Shift+X (Windows/Linux), search for &quot;Claude Code&quot;, and click Install. Make sure the publisher is Anthropic.</li><li>Open the panel. Click the Spark icon in the top-right of the editor (it only shows when a file is open), the Spark icon in the left Activity Bar, or &quot;Claude Code&quot; in the bottom-right status bar.</li><li>Sign in. Click Sign in and finish in your browser. Any paid Claude plan (Pro, Max, Team or Enterprise) or a Claude Console account works, and you do not need an API key.</li><li>Open a project folder, not a single file, so Claude can see the whole codebase. Then run &quot;Claude Code: Open Walkthrough&quot; from the Command Palette if you want the built-in tour.</li></ol>
<p>If the extension does not appear after installing, restart VS Code or run &quot;Developer: Reload Window&quot; from the Command Palette. Not sure which plan to sign in with? [Which Claude plan for Claude Code](/blog/which-claude-plan-for-claude-code) walks through the choice.</p>
<h2>The features that make it worth using</h2>
<p>The reason to use the extension instead of a separate window is context. You stop explaining where things are, because Claude already knows what you are looking at.</p>
<ul><li>Selection and open file: Claude sees the file you have open and any code you highlight. You can turn the open-file part off in the extension settings if you only want the selection sent.</li><li>@-mentions: type @ and part of a file or folder name to pull it in. Fuzzy matching means @auth finds auth.js or AuthService.ts.</li><li>@terminal: reference a terminal by its title, like @terminal:name, so Claude sees the error output without you copying it.</li><li>Diffs you can edit: in Manual mode every proposed edit opens side by side. You can accept or reject it, accept or reject one change at a time, or edit the proposal before accepting, and Claude is told you changed it.</li><li>Plan mode: Claude writes the plan as a full document you can comment on before it touches a file. Type /plan to switch into it. More on why that matters in [Claude Code plan mode](/blog/claude-code-plan-mode).</li><li>Checkpoints: hover over any message to rewind the code, fork the conversation, or both. [Checkpoints and rewind](/blog/claude-code-checkpoints-and-rewind) covers how far you can trust them.</li><li>Several conversations: open extra tabs or windows for side tasks while your main session runs in the sidebar.</li></ul>
<h2>Shortcuts worth learning</h2>
<table><caption>Claude Code VS Code extension shortcuts from the official docs</caption><thead><tr><th>What it does</th><th>Mac</th><th>Windows / Linux</th></tr></thead><tbody><tr><td>Jump between the editor and Claude</td><td>Cmd+Esc</td><td>Ctrl+Esc</td></tr><tr><td>Insert an @-mention of your selected lines</td><td>Option+K</td><td>Alt+K</td></tr><tr><td>New line in the prompt without sending</td><td>Shift+Enter</td><td>Shift+Enter</td></tr><tr><td>Reopen the last closed Claude tab</td><td>Cmd+Shift+T</td><td>Ctrl+Shift+T</td></tr><tr><td>Hide or show tool activity (Focus view)</td><td>Ctrl+Option+F</td><td>Ctrl+Alt+F</td></tr><tr><td>Expand or collapse all thinking blocks</td><td>Ctrl+O</td><td>Ctrl+O</td></tr></tbody></table>
<p>If you learn one, make it the selection shortcut. Highlighting the broken function and pressing Option+K gives Claude an exact reference like @app.ts#5-10, which beats describing the code in words every time.</p>
<h2>What the extension cannot do</h2>
<p>The extension covers most of what you need, but the official docs are clear that some features are CLI-only. Knowing them saves you a confused half hour.</p>
<ul><li>Commands and skills: the extension shows a subset. Type / to see which ones are available.</li><li>The ! Bash shortcut and tab completion are CLI-only.</li><li>Installing the extension does not put claude on your PATH. To run claude in VS Code's integrated terminal, install the standalone CLI as well. After that, terminal sessions connect to VS Code for diffs and diagnostics.</li><li>The extension and the CLI share history, so you can start in the panel and pick the same conversation up in a terminal with claude --resume.</li></ul>
<p>The settings file at ~/.claude/settings.json is shared between the extension and the CLI, so your allowed commands, hooks and MCP servers carry over. [Claude Code settings.json](/blog/claude-code-settings-json) explains what goes in it, and you can manage MCP servers from inside the panel with /mcp.</p>
<h2>VS Code extension or desktop app: which I would use</h2>
<table><caption>Where to run Claude Code</caption><thead><tr><th>If you...</th><th>Use</th></tr></thead><tbody><tr><td>Already write or read code in VS Code every day</td><td>The VS Code extension</td></tr><tr><td>Are new to code and mostly describe what you want</td><td>The desktop app</td></tr><tr><td>Want to review every edit line by line before it lands</td><td>The VS Code extension, in Manual mode</td></tr><tr><td>Run several projects and long sessions side by side</td><td>The desktop app</td></tr><tr><td>Need a CLI-only feature</td><td>claude in the integrated terminal, with the standalone CLI installed</td></tr></tbody></table>
<p>My take: the extension shines when you are reading the code with Claude, not just asking for it. If you open the files, check the diffs and nudge the work as it goes, the extension is the best seat in the house. If you mostly describe the outcome and test the result, an editor full of panels is more than you need, and the desktop app keeps it simpler. Neither is a downgrade. They share the same engine, the same settings and the same history, so you can move between them on the same project.</p>
<blockquote><strong>TIP:</strong> Whichever you pick, the first hour matters more than the tool. [Claude Code day one setup](/blog/claude-code-day-one-setup) covers the CLAUDE.md file, permissions and the habits that keep sessions clean.</blockquote>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club, members share the setups they actually use day to day, in VS Code, the desktop app and the terminal, and what they changed after the first week. It is $9 a month at https://www.skool.com/claudecodeclub/about, and the [curriculum](/curriculum) walks through the desktop app step by step.</blockquote>
<h2>FAQ</h2>
<p><strong>Is there an official Claude Code extension for VS Code?</strong></p><p>Yes. Anthropic publishes the Claude Code extension for VS Code. Search &quot;Claude Code&quot; in the Extensions view and install the one from Anthropic. It also installs in VS Code forks such as Cursor.</p>
<p><strong>Do I need an API key to use Claude Code in VS Code?</strong></p><p>No. You sign in with any paid Claude plan (Pro, Max, Team or Enterprise) or a Claude Console account. An API key is only one option, not a requirement.</p>
<p><strong>Why does claude say command not found in the VS Code terminal?</strong></p><p>The extension bundles a private copy of Claude Code for its chat panel and does not add claude to your PATH. Install the standalone CLI once and the claude command works in the integrated terminal and any other terminal.</p>
<p><strong>Can I switch between the VS Code extension and the terminal mid-project?</strong></p><p>Yes. They share conversation history and the same settings file. Run claude --resume in a terminal to pick up a conversation you started in the extension.</p>
<p><strong>Should I use the VS Code extension or the Claude Code desktop app?</strong></p><p>Use the extension if you already work in VS Code and like to review code and diffs as Claude works. Use the desktop app if you are newer to code and mostly describe outcomes. Both run the same Claude Code underneath.</p>]]></content:encoded>
    </item>
    <item>
      <title>How Much to Charge for a Dashboard (Price the Decision, Not the Charts)</title>
      <link>https://www.claudecodeclub.ai/blog/how-much-to-charge-for-a-dashboard</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/how-much-to-charge-for-a-dashboard</guid>
      <pubDate>Sat, 10 Oct 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Monetization</category>
      <category>Agency</category>
      <category>Freelancing</category>
      <description><![CDATA[How much to charge for a custom dashboard depends on the decisions it helps the business make, how many places the data comes from, how messy that data is, and who keeps the numbers right after launch. The charts are the small part. Price the build on the value of the decisions and the reporting time it replaces, add lines for each data source and for cleaning and defining the numbers, and always quote a monthly plan. Here is the method and how to present it.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Price a custom dashboard on what it changes for the business: the hours someone spends building reports by hand today, and the better decisions that come from seeing the numbers sooner. The number of charts and your hours are the wrong yardsticks.</li><li>Use the CCC Dashboard Quote: a base build priced on that value, plus a line for each data source, a line for cleaning the data and agreeing what each number means, and a line for access and sharing. Then a monthly Keep plan, because data sources change and someone has to notice when a number goes wrong.</li><li>Settle the definitions before you quote. If the client cannot tell you exactly what counts as a sale, an active customer or a lead, that work is the real project, and it belongs on the quote.</li></ul>
<h2>How much to charge for a dashboard</h2>
<p>How much to charge for a dashboard comes down to one question: what decisions will the client make with it, and what does getting the numbers cost them today? Nobody buys a dashboard for the charts. They buy it so the owner stops waiting until the end of the month to see which channel is losing money, so a manager stops spending Monday morning pasting exports into a spreadsheet, or so the team argues about what to do instead of whose numbers are right. Price the build on a share of that value, add lines for each data source and for the work of cleaning and defining the data, and quote a monthly plan for upkeep. Do not price it on the number of charts or on hours.</p>
<p>Dashboards are good work to sell with Claude Code because the first version comes together fast. Point Claude at the data, describe the views, and you can show something real early. That is also the trap. A dashboard looks finished the moment the charts render, so builders price it like a quick job, and then the client finds a number that does not match their accounting software and the real work starts, unpaid.</p>
<blockquote><strong>NOTE:</strong> This post is part of the pricing series. If the client's team needs to do work inside the tool, approving, editing or entering data, rather than just reading numbers, it is an internal tool, and [how much to charge for an internal tool](/blog/how-much-to-charge-for-an-internal-tool) is the better guide.</blockquote>
<h2>Why the charts are the wrong yardstick</h2>
<p>A dashboard with three charts can be worth far more than one with thirty. If those three numbers tell an owner where to spend next month's budget, they matter. Thirty charts nobody opens matter to nobody. Charging per chart rewards you for clutter and punishes you for doing the hard thinking about what actually needs to be on the screen.</p>
<p>Hours are worse. Claude Code makes the build itself quick, so pricing on hours turns every bit of speed into a pay cut. I covered why in [why I stopped charging hourly for AI builds](/blog/stopped-charging-hourly-for-ai-builds). The real costs of a dashboard sit around the charts: getting access to the data, fixing it, agreeing what each number means, and keeping it right when a source changes.</p>
<h2>The CCC Dashboard Quote</h2>
<table><caption>Five parts of a dashboard quote</caption><thead><tr><th>Part</th><th>What it prices</th><th>Question to ask the client</th></tr></thead><tbody><tr><td>Base build</td><td>The value of the decisions and the reporting time it replaces</td><td>Who builds these numbers today, how long does it take, and what do you decide with them?</td></tr><tr><td>Data sources</td><td>Each system the data comes from</td><td>Where does each number live today, and can we get access to it?</td></tr><tr><td>Cleaning and definitions</td><td>Fixing messy data and agreeing what each number means</td><td>When two reports disagree, which one do you trust, and why?</td></tr><tr><td>Access and sharing</td><td>Logins, who sees what, and scheduled reports</td><td>Who needs to see this, and should everyone see everything?</td></tr><tr><td>Keep plan</td><td>Monthly checks, fixes and small changes</td><td>What happens if a number on this is wrong for a week and nobody notices?</td></tr></tbody></table>
<p>Base build. Work out with the client what the reporting costs today: how many hours someone spends pulling exports and building the report, multiplied by what their time costs. Then ask what they would decide differently if they saw the numbers daily instead of monthly. Price the build at a fraction of one year of that value, so the client can see it pay for itself.</p>
<p>Data sources. Each place the data comes from is its own line: the payment system, the CRM, the ad accounts, a shared spreadsheet. Each one has its own access, its own limits and its own way of changing without warning. Ask for access before you send the final number. If a source needs a paid API, the key lives on the server, never in the page, with a spending limit, and that setup is part of the quote. [How to connect Claude Code to a database](/blog/connect-claude-code-to-a-database) shows what one connection involves.</p>
<p>Cleaning and definitions. This is the line builders forget and clients never expect. The same customer appears twice under different emails. Refunds are counted in one system and not the other. Two managers mean different things by &quot;active customer&quot;. Agreeing those definitions in writing and making the data match them is often the biggest part of the job, so price it on what you find, not on a guess.</p>
<blockquote><strong>TIP:</strong> When a client says the number is too high, do not cut the price. Drop a data source, start with a weekly refresh instead of a live one, or ship the owner's view first and the team views later, and show which line moved. [The &quot;can you do it cheaper&quot; objection](/blog/can-you-do-it-cheaper-objection) has the wording.</blockquote>
<h2>Ask these before you quote</h2>
<ul><li>Which three numbers would you check first every morning? If they cannot name them, the first paid step is working that out with them, not building.</li><li>How fresh do the numbers need to be? Daily, hourly and live are different jobs with different costs. Most owners need daily.</li><li>Who sees it? One owner is simple. A team where each person should only see their own region or clients adds an access line.</li><li>Where does it live? A hosted page with a login, a view inside a tool they already use, or a scheduled email report. Settle it before you quote.</li><li>Who owns the data accounts? Access should run through accounts in the client's name, so the dashboard keeps working if you part ways. [How to hand off a Claude Code project](/blog/how-to-hand-off-a-claude-code-project) covers the checklist.</li></ul>
<p>More questions that save a bad quote are in [client discovery questions before you quote](/blog/client-discovery-questions-before-you-quote).</p>
<h2>Always quote the Keep plan</h2>
<p>Dashboards break quietly. A software tool renames a field, an ad platform changes what it reports, the client adds a new sales channel, or a login expires. The page still loads, the charts still render, and the numbers are wrong. That is worse than a dashboard that is down, because people make decisions on it.</p>
<p>Quote a monthly plan in the original proposal. Say what it covers: checking the numbers against the sources, fixing breaks when a source changes, keeping access current, and small changes to existing views. Say what it does not cover: new data sources and new dashboards, which are quoted separately. [How to price a maintenance retainer](/blog/how-to-price-a-maintenance-retainer) covers the structure. A dashboard the owner checks every morning is one of the easiest retainers to justify, because they notice the first day it is wrong.</p>
<h2>How to present the dashboard quote</h2>
<ul><li>Lead with the decision in their words. One line on what they will be able to see and decide, then the price.</li><li>Itemize it. Base build, each data source, cleaning and definitions, access and sharing, then the Keep plan. Itemized quotes get trimmed, not rejected.</li><li>Gate payments on proof. A deposit to start, a payment when the numbers match their own records for an agreed period, and the final payment once the team is using it. [How to structure milestone payments for an AI project](/blog/how-to-structure-milestone-payments-for-an-ai-project) covers the schedule.</li><li>Put the definitions in the proposal. A short list of what each number means, signed off by the client, ends the &quot;this number is wrong&quot; argument before it starts.</li></ul>
<p>If you have not built one yet, [how to build a dashboard with Claude Code](/blog/how-to-build-a-dashboard-with-claude-code) walks through the build so you know what you are quoting.</p>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club, members share the dashboard and reporting quotes they actually sent and how clients responded to each line. It is $9 a month at https://www.skool.com/claudecodeclub/about, and it is the fastest way to sanity-check a number before it goes out.</blockquote>
<h2>FAQ</h2>
<p><strong>How much should I charge for a custom dashboard?</strong></p><p>Price it on what it changes for the business: the reporting hours it replaces and the better decisions that come from seeing the numbers sooner. Charge a fraction of one year of that value for the build, add a line for each data source, a line for cleaning and defining the data, and quote a monthly plan for upkeep.</p>
<p><strong>Should I charge per chart for a dashboard?</strong></p><p>No. A few charts that drive real decisions are worth more than dozens nobody opens. Per-chart pricing rewards clutter and ignores the data access, cleaning and upkeep that make up most of the work.</p>
<p><strong>Should I charge a monthly fee for a dashboard?</strong></p><p>Yes. Data sources change, fields get renamed, logins expire and the client adds new channels. A monthly plan covers checking the numbers, fixing breaks and small changes, with new data sources and dashboards quoted separately.</p>
<p><strong>What is the difference between a dashboard and an internal tool?</strong></p><p>A dashboard is mostly for reading numbers and making decisions. An internal tool is where the team does work: entering, approving or editing data. If the client's team needs to act inside it, price it as an internal tool.</p>
<p><strong>What if the client's data is a mess?</strong></p><p>That is common, and it is part of the job. Look at the data before you send the final number, price the cleaning and definitions as their own line, and get the client to sign off on what each number means.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code Ultrareview: When the Deep Cloud Review Is Worth Paying For</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-ultrareview</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-ultrareview</guid>
      <pubDate>Fri, 09 Oct 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Workflows</category>
      <category>Building</category>
      <description><![CDATA[Claude Code ultrareview is a deep code review that runs in the cloud. You type /code-review ultra, a fleet of reviewer agents works through your branch or pull request in a sandbox, and every finding is reproduced before it reaches you. Pro and Max accounts get three free runs, then each review bills as usage credits. Here is how to run it, what it costs, the limits, and when I think it is worth the money.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Ultrareview is the deep version of /code-review. Type /code-review ultra (or /ultrareview) and Claude Code sends your branch or pull request to a cloud sandbox where a fleet of reviewer agents looks for bugs and verifies each one before reporting it.</li><li>It takes roughly 5 to 10 minutes and runs in the background. Pro and Max accounts get three free runs, one time only. After that, the official docs put a typical review at $5 to $25 in usage credits, and the launch dialog shows the estimate before you confirm.</li><li>Use the normal /code-review while you work and save ultrareview for the merge that would hurt if it broke: payments, logins, data changes, or a big client release. Do not wire it into every pull request in CI, because every run costs money.</li></ul>
<h2>What Claude Code ultrareview is</h2>
<p>Claude Code ultrareview is a deep code review that runs in the cloud instead of on your computer. You type /code-review ultra, and Claude Code launches a group of reviewer agents in a sandbox on Anthropic's infrastructure. They work through your changes in parallel, and every bug they report has been reproduced and checked first, so what comes back is a short list of real problems rather than style notes. It takes roughly 5 to 10 minutes, it runs in the background while you keep working, and after three free runs it costs usage credits.</p>
<p>The plain way to think about it: the regular /code-review is a quick second pair of eyes you use all day. Ultrareview is the careful senior reviewer you book before a release that matters. Both look for bugs. They differ in depth, where they run, and who pays.</p>
<blockquote><strong>NOTE:</strong> Everything in this post comes from the official Claude Code ultrareview and commands documentation, checked on the date at the bottom. Ultrareview is a research preview, so the command, pricing and limits can change. If something does not match what you see, check the docs and your Claude Code version.</blockquote>
<h2>Ultrareview vs /code-review</h2>
<table><caption>The two Claude Code reviews side by side (from the official docs)</caption><thead><tr><th></th><th>/code-review</th><th>/code-review ultra</th></tr></thead><tbody><tr><td>Where it runs</td><td>Locally in your session</td><td>In a cloud sandbox</td></tr><tr><td>What it reviews</td><td>Your working diff, a pull request, a branch or a path</td><td>Your working diff or a pull request</td></tr><tr><td>Depth</td><td>Scales with the effort level you pass</td><td>A fleet of reviewer agents, with each finding verified</td></tr><tr><td>How long</td><td>Seconds to a few minutes</td><td>Roughly 5 to 10 minutes</td></tr><tr><td>Cost</td><td>Counts toward your normal plan usage</td><td>Free runs, then roughly $5 to $25 per review as usage credits</td></tr><tr><td>Best for</td><td>Quick feedback while you build</td><td>Confidence before merging a big change</td></tr></tbody></table>
<p>If you have not used the regular review yet, start there. [Claude Code code review](/blog/claude-code-code-review) explains the local command and the managed pull request reviewer, and in the desktop app the local review comes back as a card you can step through and fix line by line. Ultrareview sits on top of that, for the moments when a quick pass is not enough.</p>
<h2>How to run ultrareview</h2>
<ol><li>Sign in with your claude.ai account. Ultrareview runs as a cloud session, so an API key on its own is not enough. Run /login if you need to switch.</li><li>Open your project and make sure you are on the branch with your work. With no arguments, ultrareview compares your current branch to the default branch, and it includes uncommitted and staged changes.</li><li>Type /code-review ultra and send it. /ultrareview is an alias for the same thing.</li><li>Read the confirmation dialog. It shows what will be reviewed, how many free runs you have left and the estimated cost. Nothing runs until you confirm.</li><li>Keep working. The review runs in the background. Use /tasks to see it, open its details, or stop it. When it finishes, the verified findings arrive in your session with the file and an explanation for each, and you can ask Claude to fix them.</li></ol>
<p>A few useful variations from the docs. To compare against a branch other than the default, pass it: /code-review ultra develop. To review a pull request on GitHub instead of your local branch, pass its number: /code-review ultra 1234. And you can add a note in plain words, such as /code-review ultra check my auth changes, which still reviews your current branch but tells the reviewers what you care about.</p>
<blockquote><strong>TIP:</strong> The docs describe ultrareview as a command you type, and the desktop app takes slash commands in its prompt box. If ultrareview is not available on your account, /code-review ultra quietly runs a normal local review instead, so check the confirmation dialog: if it does not show free runs or a cost estimate, you did not get the cloud review. [The Claude Code desktop app](/blog/claude-code-desktop-app) covers the prompt box and sessions.</blockquote>
<h2>What ultrareview costs</h2>
<p>Ultrareview does not come out of your plan's normal usage. Pro and Max accounts get three free runs, and those three are a one-time allowance per account that does not refresh. After that, each review bills as usage credits. The official docs say a typical review lands between $5 and $25 depending on the size of the change, and the launch dialog shows the estimate for your specific diff before you confirm.</p>
<ul><li>A run counts as soon as the cloud session starts. If you stop it early or it fails, it still uses a free run. A paid review that stops early bills only for the part that ran.</li><li>Usage credits have to be turned on before you can launch a paid review. If they are off, Claude Code blocks the launch. /usage-credits opens the setting.</li><li>Claude Code asks you to confirm usage-credits billing once per conversation, so after /clear you confirm again.</li></ul>
<p>My rule on this: spend the three free runs on real releases, not on testing what the feature does. And before you turn on usage credits, know how they are capped on your account. A $5 to $25 review is a good deal before a client launch. The same review fired off out of habit on every small change adds up fast.</p>
<h2>Limits to know before you run it</h2>
<ul><li>Size: a branch review covers up to 500 changed files and 8,000 changed lines by default. Those values can change, and if your diff is too big ultrareview refuses and tells you which files are the largest.</li><li>Where it works: it needs a claude.ai sign-in. It is not available through Amazon Bedrock, Google Cloud or Microsoft Foundry, or for organizations with Zero Data Retention or the HIPAA configuration.</li><li>Pull request reviews need the repository on github.com, and the GitHub account connected to your Claude account needs read access to it.</li><li>Branch reviews upload a bundle of your repository to the cloud sandbox. Pull request reviews upload nothing from your machine, because the sandbox clones the pull request from GitHub instead. If your repository is too big to bundle, push the branch, open a draft pull request and review that.</li><li>If you stop a review before it finishes, you get nothing back. Claude Code does not return partial findings.</li></ul>
<h2>Post the findings to the pull request</h2>
<p>On a GitHub pull request you can have Claude post the finished findings as one plain comment from your own GitHub account. It is not an approval, and it ends with a note that Claude Code generated it. Nothing is posted unless you choose it for that run: pick Run and post the findings to the PR as me in the launch dialog, or add --post to the command to preselect it. Keep the session open until the review finishes, because if the session ends first, nothing gets posted.</p>
<p>For client work this is the part I like most. The findings sit on the pull request where the client or their developer can see them, which makes [handing off the project](/blog/how-to-hand-off-a-claude-code-project) cleaner and shows the work was checked, without you writing a review summary by hand.</p>
<h2>When ultrareview is worth it</h2>
<p>Here is how I would use it. Keep /code-review as the everyday habit, the thing you run before every commit. Book ultrareview for the changes where a missed bug costs real money or trust:</p>
<ul><li>Anything that touches payments, sign-in, permissions or customer data.</li><li>Database changes that are hard to undo.</li><li>A big release to a client, right before you send them the link.</li><li>Code Claude wrote across many files in one long session, where you could not read every line yourself.</li></ul>
<p>There is also a claude ultrareview command for scripts and CI that waits for the review and prints the findings. It is tempting to run it on every pull request. I would not. Each run past the free three bills usage credits, so an automatic review on every push is an open-ended cost. If you want automatic reviews on every pull request, the managed Code Review service is built for that, and [Claude Code security review](/blog/claude-code-security-review) covers the security-focused check. Treat ultrareview as the expensive specialist you call in on purpose.</p>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club, members share how they check Claude's work before it ships to a client, and which reviews actually caught something. It is $9 a month at https://www.skool.com/claudecodeclub/about, and the [curriculum](/curriculum) walks through the desktop app step by step.</blockquote>
<h2>FAQ</h2>
<p><strong>What is Claude Code ultrareview?</strong></p><p>A deep code review that runs in a cloud sandbox. You type /code-review ultra, a fleet of reviewer agents looks for bugs in your branch or pull request, and each finding is reproduced and verified before it reaches you. It takes roughly 5 to 10 minutes and runs in the background.</p>
<p><strong>How much does Claude Code ultrareview cost?</strong></p><p>Pro and Max accounts get three free runs, one time only. After that, each review bills as usage credits, typically $5 to $25 depending on the size of the change according to the official docs. The launch dialog shows the estimate before you confirm.</p>
<p><strong>What is the difference between /code-review and /code-review ultra?</strong></p><p>/code-review runs locally in your session, takes seconds to a few minutes and counts toward your normal plan usage. /code-review ultra runs in the cloud with a fleet of agents that verify every finding, takes roughly 5 to 10 minutes, and bills as usage credits after the free runs.</p>
<p><strong>Can ultrareview review a GitHub pull request?</strong></p><p>Yes. Pass the pull request number, for example /code-review ultra 1234. The repository has to be on github.com and the GitHub account connected to your Claude account needs read access. You can also choose to post the findings to the pull request as one comment from your account.</p>
<p><strong>Why did /code-review ultra run a normal review?</strong></p><p>When ultrareview is not available, for example when you are signed in with an API key only or using Amazon Bedrock, Google Cloud or Microsoft Foundry, /code-review ultra runs a local review instead. Sign in with your claude.ai account and check the launch dialog shows free runs or a cost estimate.</p>]]></content:encoded>
    </item>
    <item>
      <title>How Much to Charge for a WordPress Plugin (Price the Problem, Not the PHP)</title>
      <link>https://www.claudecodeclub.ai/blog/how-much-to-charge-for-a-wordpress-plugin</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/how-much-to-charge-for-a-wordpress-plugin</guid>
      <pubDate>Fri, 09 Oct 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Monetization</category>
      <category>Agency</category>
      <category>Freelancing</category>
      <description><![CDATA[How much to charge for a custom WordPress plugin depends on what it does for the business, which other plugins and systems it has to work with, how the client's site is set up, and who keeps it working after WordPress and PHP update. The code is the small part. Price the build on the value of the problem it solves, add lines for integrations and site setup, and always quote a monthly plan. Here is the method and how to present it.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Price a custom WordPress plugin on the problem it solves for the business: the hours it saves, the sales it unlocks, or the mistakes it stops. Lines of PHP and your hours are the wrong yardsticks.</li><li>Use the CCC Plugin Quote: a base build priced on that value, plus a line for each plugin or outside system it has to work with, a line for the client's site setup, and a line for testing and going live. Then a monthly Keep plan, because WordPress, PHP and the plugins around yours keep updating.</li><li>Settle where the plugin lives before you quote. A private plugin for one client is a different job from one listed on WordPress.org, which requires a GPL-compatible license and does not allow locked trial features in the code it hosts.</li></ul>
<h2>How much to charge for a WordPress plugin</h2>
<p>How much to charge for a WordPress plugin comes down to one question: what problem does it solve for the business, and what is that problem costing them today? Nobody buys a plugin for the PHP. They buy it so orders stop getting copied by hand into their stock system, so members see the right content without someone checking every account, or so a booking form stops sending leads into a dead inbox. Price the build on a share of that value, add lines for the plugins and systems it has to work with and for the client's site setup, and quote a monthly plan for upkeep. Do not price it on lines of code or hours.</p>
<p>WordPress plugins are good work to sell with Claude Code because WordPress already gives you the login, the database, the admin screens and the theme. Your plugin only adds the missing behaviour. That is also the trap. The first version can be small and quick, so builders price it like a favour, and then a WordPress update, a PHP upgrade on the host or an update to another plugin breaks it, and nobody is paid to fix it.</p>
<blockquote><strong>NOTE:</strong> This post is part of the pricing series. If the client really needs a page that sells rather than new behaviour on their site, read [how much to charge for a landing page](/blog/how-much-to-charge-for-a-landing-page). If what they describe is a separate tool their team logs into, read [how much to charge for an internal tool](/blog/how-much-to-charge-for-an-internal-tool).</blockquote>
<h2>Why the code is the wrong yardstick</h2>
<p>A plugin that adds one shortcode to a hobby blog and a plugin that sends every order from a busy shop into the warehouse system can be close to the same amount of code. Charging the same for both makes no sense. The shop is paying for what the plugin does to their business, not for how many files are in the folder.</p>
<p>Hours are worse. Claude Code makes the first build fast, so if your price follows your hours, every bit of speed you gain becomes a pay cut. I covered this in [why I stopped charging hourly for AI builds](/blog/stopped-charging-hourly-for-ai-builds). The real costs of a plugin sit around the code: fitting it into a site you did not build, testing it next to everything else installed there, and keeping it working as WordPress moves.</p>
<h2>The CCC Plugin Quote</h2>
<table><caption>Five parts of a WordPress plugin quote</caption><thead><tr><th>Part</th><th>What it prices</th><th>Question to ask the client</th></tr></thead><tbody><tr><td>Base build</td><td>The value of the problem the plugin solves</td><td>What happens today without it, how often, and what does it cost you?</td></tr><tr><td>Integrations</td><td>Each plugin or outside system it has to work with</td><td>Which plugins does it need to talk to, and which outside tools?</td></tr><tr><td>Site setup</td><td>Fitting it into the client's theme, hosting and existing plugins</td><td>Who built the site, where is it hosted, and is there a staging copy?</td></tr><tr><td>Testing and launch</td><td>Testing on a copy of the site and going live safely</td><td>When is the quietest time to switch it on?</td></tr><tr><td>Keep plan</td><td>Monthly checks, fixes and compatibility updates</td><td>What does it cost you if this stops working for a day?</td></tr></tbody></table>
<p>Base build. Work out with the client what the problem costs today. That is the hours someone spends doing the task by hand multiplied by what their time costs, plus the sales lost or the mistakes made when it goes wrong. Price the build at a fraction of one year of that value, so the client can see it pay for itself early.</p>
<p>Integrations. Every plugin or system yours has to work with is its own line. A plugin that only adds something to a page is one job. One that hooks into the shop plugin, the membership plugin and an outside CRM is three more lines, each with its own updates and its own way of breaking. If it calls a paid API, the key lives in the server settings, never in the page, with a spending limit, and that setup is part of the quote. [How to build a WordPress plugin with Claude Code](/blog/build-a-wordpress-plugin-with-claude-code) shows what a single integration involves.</p>
<p>Site setup. You are building inside someone else's house. An old theme, a crowded plugin list or a host that limits what you can change all add work you will not see until you look. Ask for access to a copy of the site before you send the final number, and price this line on what you find.</p>
<blockquote><strong>TIP:</strong> When a client says the number is too high, do not cut the price. Drop an integration, start with the manual version of one step, or skip the settings screen for version one, and show which line moved. [The &quot;can you do it cheaper&quot; objection](/blog/can-you-do-it-cheaper-objection) has the wording.</blockquote>
<h2>Private plugin or WordPress.org listing</h2>
<p>Settle where the plugin will live before you quote, because it changes the job. Most client work is a private plugin: it is installed on their site only, and nobody else ever sees it. That is the simple case.</p>
<ul><li>Listing on WordPress.org: the plugin directory's guidelines require GPL-compatible licensing for everything hosted there, and they do not allow trialware, meaning locked or expiring features inside the plugin. Paid features have to live in a separate service or add-on. If the client wants a public listing, quote that as its own line, along with answering support questions from the public.</li><li>Ownership: the code and any listing should be the client's. Hand over the code in their repository and any accounts in their name. [How to hand off a Claude Code project](/blog/how-to-hand-off-a-claude-code-project) covers the checklist.</li><li>Selling it to others: if the client wants to sell the plugin to other businesses, it is no longer a plugin job. It is a product, and [how much to charge for an MVP](/blog/how-much-to-charge-for-an-mvp) is the right post.</li></ul>
<h2>Always quote the Keep plan</h2>
<p>Plugins break for reasons that have nothing to do with your code. WordPress releases updates. Hosts move sites to newer versions of PHP. The shop or membership plugin yours depends on changes how it works. None of that is your fault, and all of it can take the client's site or checkout down.</p>
<p>Quote a monthly plan in the original proposal. Say what it covers: checking the plugin after WordPress and major plugin updates, fixing breakages from those updates, keeping it working on newer PHP versions, and small tweaks. Say what it does not cover: new integrations and new features, which are quoted separately. [How to price a maintenance retainer](/blog/how-to-price-a-maintenance-retainer) covers the structure. A plugin that sits in the middle of a client's orders or bookings is one of the easiest retainers to justify, because they feel it the first day it stops working.</p>
<h2>How to present the WordPress plugin quote</h2>
<ul><li>Lead with the problem in their words. One line on what it costs them today, then the price.</li><li>Itemize it. Base build, each integration, site setup, testing and launch, then the Keep plan. Itemized quotes get trimmed, not rejected.</li><li>Gate payments on proof. A deposit to start, a payment when it works on a copy of their site, and the final payment once it is live. [How to structure milestone payments for an AI project](/blog/how-to-structure-milestone-payments-for-an-ai-project) covers the schedule.</li><li>Name what breaks it. Say plainly that WordPress, PHP and plugin updates will break it at some point, and that the Keep plan is how it gets fixed fast.</li></ul>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club, members share the plugin and website quotes they actually sent and how clients responded to each line. It is $9 a month at https://www.skool.com/claudecodeclub/about, and it is the fastest way to sanity-check a number before it goes out.</blockquote>
<h2>FAQ</h2>
<p><strong>How much should I charge for a custom WordPress plugin?</strong></p><p>Price it on the problem it solves: the hours it saves, the sales it unlocks or the mistakes it stops. Charge a fraction of one year of that value for the build, add a line for each plugin or system it works with, add site setup and testing, and quote a monthly plan for upkeep.</p>
<p><strong>Should I charge hourly for a WordPress plugin?</strong></p><p>No. Claude Code makes the first build fast, so hourly pricing turns every gain in speed into a pay cut, and it ignores the site setup, testing and upkeep that come with the code. Price on the value of the problem instead.</p>
<p><strong>Should I charge a monthly fee for a WordPress plugin?</strong></p><p>Yes. WordPress updates, hosts move to newer PHP versions, and the plugins yours depends on change. A monthly plan covers checks, fixes and compatibility updates, with new integrations and features quoted separately.</p>
<p><strong>Can a client's plugin be listed on WordPress.org?</strong></p><p>Yes, if it follows the directory's guidelines. Everything hosted there has to be GPL-compatible, and locked or expiring trial features are not allowed in the plugin itself. Most client plugins stay private and are installed on the client's site only.</p>
<p><strong>Who owns a custom WordPress plugin I build for a client?</strong></p><p>Agree it in writing before you start. The usual setup is that the client owns the code once they have paid, it lives in their repository, and any accounts or listings are in their name.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code Remote Control: Steer a Desktop Session From Your Phone</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-remote-control</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-remote-control</guid>
      <pubDate>Thu, 08 Oct 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Workflows</category>
      <category>Setup</category>
      <description><![CDATA[Claude Code Remote Control lets you pick up a session running on your computer from your phone or any browser. In the desktop app you type /remote-control in a session, then open it from the Claude app or claude.ai/code. Your code, files and tools stay on your machine. Here is how to turn it on, what works from the phone, how it differs from cloud sessions and Dispatch, and the limits to know first.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Claude Code Remote Control connects a session running on your computer to the Claude mobile app or claude.ai/code, so you can keep steering it from your phone or another browser. In the desktop app, type /remote-control in the session's prompt box.</li><li>Nothing moves to the cloud. Claude keeps running on your machine with your files, MCP servers and project setup, and the phone is a window into that session. Your computer has to stay on and the app has to stay open.</li><li>It needs a Pro, Max, Team or Enterprise plan and a claude.ai login, not an API key. On Team and Enterprise an Owner has to switch it on first. Turn on push notifications so the phone tells you when Claude finishes or needs an answer.</li></ul>
<h2>What Claude Code Remote Control does</h2>
<p>Claude Code Remote Control connects a Claude Code session running on your computer to the Claude app on your phone or to claude.ai/code in any browser. You start a task at your desk, walk away, and keep reading, answering and redirecting it from another device. The session never leaves your machine: Claude keeps running locally with your files, MCP servers, tools and project configuration, and the phone or browser is just a second screen into it.</p>
<p>This is the feature for the long task that does not need you every minute but does need you sometimes. A build that will ask for a permission halfway through, a refactor you want to check before it touches the next folder, or a test run you want to hear about the moment it fails. Without Remote Control, that session sits waiting at your desk until you come back. With it, you answer from wherever you are and it keeps going.</p>
<blockquote><strong>NOTE:</strong> Everything in this post comes from the official Claude Code Remote Control and desktop documentation, checked on the date at the bottom. Remote Control is still changing quickly, so if a menu name does not match, check the version of the app you are on.</blockquote>
<h2>How to turn on Remote Control in the desktop app</h2>
<ol><li>Open the Claude desktop app, go to the Code tab and start or open a local session on your project.</li><li>Type /remote-control (or the short form /rc) in the prompt box and send it. The first time, a dialog asks you to confirm. Select Enable Remote Control.</li><li>On your phone, open the Claude app, tap Code in the navigation and find the session in the list. Remote Control sessions show a computer icon with a green dot when they are online. In a browser, go to claude.ai/code instead.</li><li>Send a message from the phone. It lands in the same conversation on your computer, and Claude's replies show up on both screens.</li></ol>
<p>To turn it off for that session, run /remote-control again. In the desktop app you can also see whether a session is connected from the laptop icon before the session title in the toolbar: it is highlighted while the session is connected, and clicking it opens the session's Remote Control switch.</p>
<p>If you want every new session to be reachable from your phone without typing anything, turn on Connect new sessions to Remote Control in Settings, under Claude Code. My recommendation is to leave that off at first and turn Remote Control on per session. It keeps your session list on the phone short, and it makes you decide which work you actually want to be reachable. [The Claude Code desktop app](/blog/claude-code-desktop-app) covers the rest of the app.</p>
<blockquote><strong>TIP:</strong> Prefer the terminal? Run claude --remote-control to start a normal session that is also reachable remotely, or claude remote-control to run a server that waits for connections and shows a QR code you can scan with your phone. Both lead to the same place as /remote-control in the desktop app.</blockquote>
<h2>What you can do from your phone</h2>
<p>The phone is not a reduced view. You can send messages, answer permission prompts and questions, and watch progress as it happens. Typing @ autocompletes file paths from the project on your computer. You can attach a photo or a file from your phone too: Claude sees photos directly, and other files are downloaded to your machine and passed in as file references. That makes it easy to send a screenshot of a bug you spotted on your phone straight into the session working on it.</p>
<ul><li>Change the model or effort for the session, for example /model sonnet or /effort high, with the value typed as part of the command.</li><li>Run text commands such as /compact, /clear, /context and /usage. [Claude Code clear vs compact](/blog/claude-code-clear-vs-compact) explains which to reach for.</li><li>See the diff of your changes when the project is in a git repository.</li><li>Watch subagents and workflows the session already has running, and stop one from the phone, which stops it on your computer.</li></ul>
<p>A few commands only work at the computer itself, including /plugin and /resume. If you need one of those, it waits until you are back at the desk.</p>
<h2>Turn on push notifications</h2>
<p>Remote Control is only half useful if you have to keep checking the app. With push notifications on, Claude sends a notification to your phone, usually when a long task finishes or when it needs a decision from you. You can also ask for one directly in your prompt, such as notify me when the tests finish.</p>
<ol><li>Install the Claude app on your phone and sign in with the same account and organization you use for Claude Code.</li><li>Allow notifications when your phone asks.</li><li>Run /config in the session and turn on Push when Claude decides, Push when actions required, or both. The second one covers permission prompts and questions, which is the one that saves the most waiting.</li></ol>
<blockquote><strong>TIP:</strong> If /config shows No mobile registered, open the Claude app on your phone so it can refresh, then reconnect. On iPhone, Focus modes and notification summaries can hold pushes back. On Android, battery optimization can delay them.</blockquote>
<h2>Remote Control vs cloud sessions vs Dispatch</h2>
<p>Claude Code has a few ways to work when you are away from the desk, and they are easy to mix up. The difference is where Claude runs and what starts the work.</p>
<table><caption>Ways to work with Claude Code away from your computer</caption><thead><tr><th>Option</th><th>Where Claude runs</th><th>Best for</th></tr></thead><tbody><tr><td>Remote Control</td><td>Your computer, in a session you already started</td><td>Steering work that is already in progress, with your local files and tools</td></tr><tr><td>Cloud session</td><td>Anthropic's cloud, not your computer</td><td>Starting a task with no local setup, or running several in parallel while your laptop is closed</td></tr><tr><td>Dispatch</td><td>Your computer, in a new desktop session it opens for you</td><td>Messaging a fresh task from your phone with minimal setup (Pro and Max only)</td></tr><tr><td>Scheduled tasks</td><td>Your computer or the cloud, on a timer</td><td>Recurring jobs like a daily review</td></tr></tbody></table>
<p>My rule: if the work depends on something only your computer has, such as a local database, a private MCP server or a client repo you have not pushed, use Remote Control. If the work can run anywhere and you want your laptop closed, use a cloud session. [Claude Code on the web](/blog/claude-code-on-the-web) covers cloud sessions, and [Claude Code scheduled tasks](/blog/claude-code-scheduled-tasks) covers the timer option.</p>
<h2>Requirements and limits to know first</h2>
<ul><li>Plan: Pro, Max, Team or Enterprise. API keys are not supported. On Team and Enterprise, Remote Control is off by default and an Owner turns it on in the Claude Code admin settings.</li><li>Login: you need to be signed in with your claude.ai account. If an API key is set in your environment or settings, Remote Control refuses to start and names the key it found. Remove it, then sign in again.</li><li>Your computer stays on: Claude runs locally, so if you quit the app or shut the laptop down, the session goes offline until you bring it back. If the laptop sleeps or the network drops, it reconnects on its own when the machine is back online.</li><li>One remote session per session window: each open session connects as its own remote session. To run many from one place, the terminal's server mode is built for that.</li><li>Gateways and other providers: Remote Control does not work through Amazon Bedrock, Google Cloud, Microsoft Foundry or a custom API base URL. It has to talk to Anthropic's API directly.</li></ul>
<p>If something does not connect, run claude doctor. It reports which eligibility check failed instead of leaving you to guess. [Claude Code doctor](/blog/claude-code-doctor) walks through reading its output.</p>
<h2>Is Claude Code Remote Control safe?</h2>
<p>The connection is outbound only. Your computer makes HTTPS requests to Anthropic and never opens an inbound port, so nothing on the internet can reach into your machine through it. Traffic runs over TLS through the Anthropic API, using short-lived credentials that each do one job and expire on their own. A session that connects automatically uses your own claude.ai account, so it only appears in your own Claude apps.</p>
<p>Two things to weigh for client work. While Remote Control is connected, the session transcript is stored on Anthropic's servers so it can stay in sync across devices, under Anthropic's data usage policy. And a phone is easier to lose than a laptop. If you are on a Pro or Max plan, turn on Require trusted devices in your account settings, which makes each phone or browser enroll and ties access to a recent sign-in or a Face ID, Touch ID or passkey check. [Is Claude Code safe for client work?](/blog/is-claude-code-safe-for-client-work) covers the wider question.</p>
<blockquote><strong>WARNING:</strong> Approving a permission prompt from your phone is still approving it. Read what Claude is about to run before you tap, the same as you would at the desk. [Claude Code permissions explained](/blog/claude-code-permissions-explained) covers which actions to keep behind approval.</blockquote>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club, members share how they run long sessions while away from the desk, and which setups kept them out of trouble. It is $9 a month at https://www.skool.com/claudecodeclub/about, and the [curriculum](/curriculum) walks through the desktop app step by step.</blockquote>
<h2>FAQ</h2>
<p><strong>What is Claude Code Remote Control?</strong></p><p>It connects a Claude Code session running on your computer to the Claude mobile app or claude.ai/code, so you can keep working in it from your phone or another browser. Claude keeps running on your machine with your files and tools the whole time.</p>
<p><strong>How do I use Claude Code Remote Control in the desktop app?</strong></p><p>Open a local session in the Code tab and type /remote-control or /rc in the prompt box. Then open the Claude app on your phone, tap Code, and pick the session from the list, or open claude.ai/code in a browser.</p>
<p><strong>Does Claude Code Remote Control work with an API key?</strong></p><p>No. Remote Control needs a Pro, Max, Team or Enterprise plan and a claude.ai login. If an API key is set in your environment or settings, remove it and sign in with your claude.ai account.</p>
<p><strong>Does my computer need to stay on for Remote Control?</strong></p><p>Yes. The session runs on your computer, so it goes offline if you quit the app or shut down. If the laptop sleeps or the network drops, Claude Code reconnects automatically when the machine comes back online.</p>
<p><strong>What is the difference between Remote Control and Claude Code on the web?</strong></p><p>Remote Control runs on your computer and gives you a remote window into it, with your local files, MCP servers and settings. A cloud session runs on Anthropic's infrastructure, so it keeps going with your laptop closed but does not see anything that only exists on your machine.</p>]]></content:encoded>
    </item>
    <item>
      <title>How Much to Charge for a Chrome Extension (Price the Workflow, Not the Popup)</title>
      <link>https://www.claudecodeclub.ai/blog/how-much-to-charge-for-a-chrome-extension</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/how-much-to-charge-for-a-chrome-extension</guid>
      <pubDate>Thu, 08 Oct 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Monetization</category>
      <category>Agency</category>
      <category>Freelancing</category>
      <description><![CDATA[How much to charge for a Chrome extension depends on the workflow it speeds up, how many sites it has to work on, what it connects to, and who handles the Chrome Web Store and the updates after launch. The popup is the cheap part. Price the build on the time it saves the people using it, add lines for sites, connections and store publishing, and always quote a monthly plan. Here is the method and how to present it.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Price a Chrome extension on the workflow it speeds up: how many people use it, how often, and how much time or how many mistakes it saves them. The size of the code and your hours are the wrong yardsticks.</li><li>Use the CCC Extension Quote: a base build priced on that value, plus a line for each site the extension has to work on, a line for each system it connects to, and a line for getting it through the Chrome Web Store. Then a monthly Keep plan, because the sites it runs on will change.</li><li>Settle who owns the store listing before you quote. Publishing under the client's own developer account keeps the extension theirs, and the store's review can take anywhere from a few days to a few weeks, so it belongs in the timeline.</li></ul>
<h2>How much to charge for a Chrome extension</h2>
<p>How much to charge for a Chrome extension comes down to one question: how much faster or cleaner does this make the work the client's people already do in the browser? Nobody buys an extension for the popup. They buy it so a sales rep stops copying details from a profile into the CRM, so a support agent gets the right reply with one click, or so a team stops making the same mistake on a web form. Price the build on a share of that value, add lines for the sites it runs on, the systems it connects to and the store publishing, and quote a monthly plan for upkeep. Do not price it on the size of the code or on hours.</p>
<p>Extensions are good work to sell with Claude Code because the result is right there in front of the user every day. The trap is that a first version can be small and fast to build, so builders price it like a weekend job. Then the client's CRM changes its page layout, the button the extension depends on moves, and the extension quietly stops working with nobody paid to fix it.</p>
<blockquote><strong>NOTE:</strong> This post is part of the pricing series. If the client really needs a screen their team logs into rather than a tool inside their browser, read [how much to charge for an internal tool](/blog/how-much-to-charge-for-an-internal-tool). If the extension is meant to be sold to the public as a product, read [how much to charge for an MVP](/blog/how-much-to-charge-for-an-mvp), because that is what it is.</blockquote>
<h2>Why the popup is the wrong yardstick</h2>
<p>An extension that tidies one page for one person and an extension that every rep on a sales team uses dozens of times a day can be close to the same amount of code. Charging the same for both makes no sense. The client is paying for what the extension does to their team's day, not for how many files it has.</p>
<p>Hours are worse. Claude Code makes the first build fast, and if your price follows your hours, every bit of speed you gain becomes a pay cut. I covered this in [why I stopped charging hourly for AI builds](/blog/stopped-charging-hourly-for-ai-builds). The real costs of an extension sit around the code: getting it through the store, rolling it out to the team, and keeping it working when the sites underneath it change.</p>
<h2>The CCC Extension Quote</h2>
<table><caption>Five parts of a Chrome extension quote</caption><thead><tr><th>Part</th><th>What it prices</th><th>Question to ask the client</th></tr></thead><tbody><tr><td>Base build</td><td>The value of the workflow it speeds up</td><td>Who does this task today, how often, and what goes wrong?</td></tr><tr><td>Sites</td><td>Each website or web app the extension has to work on</td><td>Which sites does it need to run on, and which pages?</td></tr><tr><td>Connections</td><td>Each system it reads from or writes to</td><td>Where should the data come from and where should it go?</td></tr><tr><td>Store and rollout</td><td>Publishing, the listing, and getting it onto the team's browsers</td><td>Public, unlisted, or only for your team? Whose account publishes it?</td></tr><tr><td>Keep plan</td><td>Monthly monitoring, fixes and store updates</td><td>What happens to the team's day if it stops working?</td></tr></tbody></table>
<p>Base build. Work out with the client what the workflow costs today. That is people multiplied by how often multiplied by how long multiplied by what their time costs, plus whatever the mistakes cost when someone copies a field wrong. Price the build at a fraction of one year of that value, so the client can see it pay for itself early.</p>
<p>Sites. Every site is its own line. An extension that reads and changes a page depends on how that page is built, and each site has its own layout and its own way of breaking. One that works on a single CRM is a different job from one that has to work across a CRM, an inbox and a support desk. Pricing per site makes the quote easy to trim. [How to build a Chrome extension with Claude Code](/blog/build-a-chrome-extension-with-claude-code) shows what a single site involves.</p>
<p>Connections. An extension that only changes the page in front of the user is one thing. One that pulls data from the client's database, writes it into their CRM and calls an AI model on the way is three more lines, each with its own keys, permissions and failure points. If it calls a paid API, the key never ships inside the extension. It goes behind a server the client controls, with a login and a spending limit, and that server is part of the quote.</p>
<blockquote><strong>TIP:</strong> When a client says the number is too high, do not cut the price. Drop a site, remove a connection, or replace the live AI call with a simple template, and show which line moved. [The &quot;can you do it cheaper&quot; objection](/blog/can-you-do-it-cheaper-objection) has the wording.</blockquote>
<h2>Price the Chrome Web Store work</h2>
<p>Getting an extension into the client's browsers is real work, and builders forget to quote it. Publishing through the Chrome Web Store needs a developer account with a one-time registration fee, a listing, and a review by Google before anything goes live. Google's own guidance is that most reviews finish within a few days but some take a few weeks, and that extensions asking for broad access to websites or sensitive permissions can take longer to review.</p>
<ul><li>Visibility: the store offers public, unlisted (anyone with the link can install it) and private (only named testers or a group the client manages). Most client tools for one team should be private or unlisted. Every option goes through the same review.</li><li>Ownership: publish under the client's own developer account, or move it to them at handoff. An extension living in your account is a problem for both of you the day the project ends. [How to hand off a Claude Code project](/blog/how-to-hand-off-a-claude-code-project) covers the checklist.</li><li>Permissions: ask for only the sites and permissions the extension really needs. It is safer for the client's team, and it keeps the review simpler.</li><li>Timeline: put the review window in the schedule, and never promise a go-live date that depends on the store answering in a day.</li></ul>
<h2>Always quote the Keep plan</h2>
<p>Extensions break for reasons that have nothing to do with your code. The site the extension runs on changes a page, renames a field or moves a button. A connected tool changes how its data comes back. Chrome itself changes how extensions are allowed to work, which it has done before. None of that is your fault, and all of it stops the tool the team relies on.</p>
<p>Quote a monthly plan in the original proposal. Say what it covers: checking it still works on each site, fixing breakages from site changes, pushing updates through the store, and small tweaks. Say what it does not cover: new sites, new connections and new features, which are quoted separately. [How to price a maintenance retainer](/blog/how-to-price-a-maintenance-retainer) covers the structure. An extension the whole team uses every day is one of the easiest retainers to justify, because they feel it the first morning it stops working.</p>
<h2>How to present the Chrome extension quote</h2>
<ul><li>Lead with the workflow in their words. One line on what the team does today and what it costs them, then the price.</li><li>Itemize it. Base build, each site, each connection, store and rollout, then the Keep plan. Itemized quotes get trimmed, not rejected.</li><li>Gate payments on proof. A deposit to start, a payment when a working version is running in the team's own browsers, and the final payment once it is live through the store. [How to structure milestone payments for an AI project](/blog/how-to-structure-milestone-payments-for-an-ai-project) covers the schedule.</li><li>Name what breaks it. Say plainly that changes to the sites underneath will break the extension at some point, and that the Keep plan is how it gets fixed fast.</li></ul>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club, members share the extension and browser-tool quotes they actually sent and how clients responded to each line. It is $9 a month at https://www.skool.com/claudecodeclub/about, and it is the fastest way to sanity-check a number before it goes out.</blockquote>
<h2>FAQ</h2>
<p><strong>How much should I charge for a Chrome extension?</strong></p><p>Price it on the workflow it speeds up: how many people use it, how often, and the time and mistakes it saves them. Charge a fraction of one year of that value for the build, add a line for each site and each connected system, add the store publishing, and quote a monthly plan for upkeep.</p>
<p><strong>Should I charge hourly for a Chrome extension?</strong></p><p>No. Claude Code makes the first build fast, so hourly pricing turns every gain in speed into a pay cut, and it ignores the store work and the upkeep that come after the code. Price on the value of the workflow instead.</p>
<p><strong>Should I charge a monthly fee for a Chrome extension?</strong></p><p>Yes. The sites the extension runs on change their pages, connected tools change, and Chrome changes its rules for extensions. A monthly plan covers checks, fixes and store updates, with new sites and features quoted separately.</p>
<p><strong>Who should publish a client's Chrome extension?</strong></p><p>The client, under their own Chrome Web Store developer account, or you move it to them at handoff. For a tool used by one team, publish it as private or unlisted rather than public. Every visibility option goes through the same Google review.</p>
<p><strong>How long does Chrome Web Store review take?</strong></p><p>Google says most extensions are reviewed within a few days, but it can take up to a few weeks, and extensions that ask for broad access to websites or sensitive permissions can take longer. Build that window into the timeline you quote.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code Multiple Repos: Work Across Two Projects in One Session With /add-dir</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-multiple-repos</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-multiple-repos</guid>
      <pubDate>Wed, 07 Oct 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Workflows</category>
      <category>Setup</category>
      <description><![CDATA[Claude Code can work across multiple repos in one session. Add the second project with /add-dir, keep it permanently with additionalDirectories in your settings, or add more repositories with the + button in a desktop cloud session. Here is how each option works, what an added folder does and does not load, and when to open a parent folder or move the session instead.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>To use Claude Code across multiple repos, start in the main project and add the second one with /add-dir followed by its path. Claude can then read and edit files in both for the rest of that session.</li><li>An added folder gives file access, not full setup. Its skills, commands and subagents load, but its CLAUDE.md only loads if you turn that on, and most of its settings never apply. Put shared instructions in the main project.</li><li>In the desktop app, cloud sessions have a + button next to the selected repository to add more repositories, each with its own branch. For a folder you always need, add it to permissions.additionalDirectories in your settings so you stop re-adding it.</li></ul>
<h2>How Claude Code works across multiple repos</h2>
<p>Claude Code works across multiple repos by adding extra working directories to a session. Every session has one primary folder, the project you opened. You can add more with the /add-dir command, the --add-dir flag at launch, or the permissions.additionalDirectories setting. Once a folder is added, Claude can read and edit files in it alongside the main project, so one conversation can change a shared library and the app that uses it.</p>
<p>This comes up the moment real work spans two codebases: a frontend and a separate API, a website and the shared component kit it pulls from, or a client app plus the internal tool that feeds it. Without an added directory, Claude stays inside the folder you opened and asks before reaching outside it. With one, the cross-project change happens in a single pass instead of two sessions copying notes to each other.</p>
<blockquote><strong>NOTE:</strong> Everything in this post comes from the official Claude Code command, permissions and desktop documentation, checked on the date at the bottom. If one codebase holds several apps in one repository, that is a different setup: read [Claude Code in a monorepo](/blog/claude-code-monorepo) instead.</blockquote>
<h2>Option 1: /add-dir for one session</h2>
<ol><li>Open the project you will spend most of the time in. That becomes the primary folder, and its CLAUDE.md, settings and hooks are the ones that apply.</li><li>In the prompt box, type /add-dir followed by the path to the second project, for example /add-dir ../api. Start typing a partial path and Claude Code suggests matching folders.</li><li>Confirm the folder when asked. From then on Claude can read and edit files there for the rest of the session.</li><li>Tell Claude what lives where in your first message: which folder is the app, which is the API, and which one the change starts in. It does not guess the relationship between two folders on its own.</li></ol>
<p>If you start sessions from the terminal, the same thing at launch is claude --add-dir ../api, and you can pass more than one path. Added directories are remembered with the session too: resuming from the added folder still finds a session that added it with /add-dir.</p>
<blockquote><strong>TIP:</strong> Two limits worth knowing: the path has to be a real folder that exists, and most network paths, such as a Windows \\server\share location, cannot be added. Clone the second repo locally first.</blockquote>
<h2>Option 2: make the extra folder permanent in settings</h2>
<p>If you add the same folder every day, stop typing it. Add the path to permissions.additionalDirectories in a settings file, and every new session in that project gets file access to it automatically. The desktop app reads the same settings files as the terminal, so this works in both. [Claude Code settings.json explained](/blog/claude-code-settings-json) covers where those files live and which one to use.</p>
<p>Put it in the project's local settings file if the path only makes sense on your machine, and in the shared project file only if every teammate keeps the repos in the same place. One catch: folders listed in this setting get file access only. Unlike /add-dir, they do not load the added folder's skills, commands or subagents.</p>
<h2>What an added folder loads, and what it does not</h2>
<p>This is where most cross-repo confusion comes from. Adding a directory widens where Claude can read and write. It does not turn that folder into a second project with its own full setup.</p>
<table><caption>What Claude Code picks up from a folder added with /add-dir or --add-dir</caption><thead><tr><th>From the added folder</th><th>Loaded?</th></tr></thead><tbody><tr><td>Skills in .claude/skills/</td><td>Yes, and edits to them are picked up live</td></tr><tr><td>Commands in .claude/commands/</td><td>Yes. If both projects define the same command name, the main project's wins</td></tr><tr><td>Subagents in .claude/agents/</td><td>Yes</td></tr><tr><td>CLAUDE.md and .claude/rules/</td><td>Only if the CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD environment variable is set to 1</td></tr><tr><td>Settings in .claude/settings.json</td><td>Only the plugin keys (enabledPlugins and extraKnownMarketplaces). Permissions, hooks and the rest stay with the main project</td></tr></tbody></table>
<p>My recommendation: keep the instructions that matter for the joint work in the main project's CLAUDE.md, including a short line on what the second repo is and its rules. That way the context loads every time without an environment variable, and it is obvious which project is in charge. [The Claude Code CLAUDE.md file](/blog/claude-code-claude-md-file) covers what to write.</p>
<h2>Multiple repos in the desktop app's cloud sessions</h2>
<p>Cloud sessions in the desktop app support several repositories directly. After you pick a cloud environment, click the + button next to the selected repository to add more. Each repository gets its own branch selector, so you can work on a feature branch in the library and a matching branch in the app that consumes it. This is the desktop equivalent of --add-dir for work that runs in the cloud rather than on your machine.</p>
<p>Cloud sessions suit long, cross-repo jobs you want running while you do something else, such as updating a shared package and every project that depends on it. [Claude Code on the web](/blog/claude-code-on-the-web) covers how cloud sessions work, and [the Claude Code desktop app](/blog/claude-code-desktop-app) covers the rest of the app.</p>
<h2>When to open a parent folder or move the session instead</h2>
<ul><li>Open the parent folder when both repos sit side by side and you want each one's CLAUDE.md to count. Claude loads a subfolder's CLAUDE.md when it reads or edits a file in that subfolder, so each repo's rules apply when Claude works there. The tradeoff: settings, hooks and the dev server preview come from the parent folder you opened, not from each repo.</li><li>Use /cd when the work is finished in one repo and continues in another. It moves the session to the new folder and keeps the conversation, then applies that folder's CLAUDE.md, settings and hooks, asking you to trust the folder first if it is new.</li><li>Use two separate sessions when the projects belong to different clients. Keeping client code, keys and history apart matters more than saving a few minutes. [Claude Code worktrees](/blog/claude-code-worktrees) covers the related case of two sessions in the same repo.</li></ul>
<blockquote><strong>WARNING:</strong> An added folder is fully writable for the session. Before adding a repo you only need to read, commit or back up its current state, and check the diff in both projects before you ship. [Claude Code permissions explained](/blog/claude-code-permissions-explained) covers how to keep edits behind approval.</blockquote>
<h2>A simple cross-repo routine</h2>
<ol><li>Open the project where the change starts. Add the other with /add-dir.</li><li>Say in plain words which folder is which and what has to change in each.</li><li>Ask for a plan first and check that it names files in both folders. [Claude Code plan mode](/blog/claude-code-plan-mode) is built for this.</li><li>Let Claude make the change, then run each project and its tests separately.</li><li>Commit in each repo on its own, with a message that mentions the other, so the two changes can be traced together later. [Use Claude Code with Git](/blog/use-claude-code-with-git) covers the commit habit.</li></ol>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club, members share how they lay out frontend, backend and shared code across repos, and which setup kept their sessions clean. It is $9 a month at https://www.skool.com/claudecodeclub/about, and the [curriculum](/curriculum) walks through project setup step by step.</blockquote>
<h2>FAQ</h2>
<p><strong>Can Claude Code work on multiple repos at once?</strong></p><p>Yes. Open one project, then add the other with /add-dir and its path, or start with the --add-dir flag. Claude can read and edit files in both folders for the rest of the session.</p>
<p><strong>How do I permanently add a directory in Claude Code?</strong></p><p>Add the folder path to permissions.additionalDirectories in a settings file. New sessions in that project get file access to it automatically. It grants file access only and does not load the folder's skills, commands or subagents.</p>
<p><strong>Does Claude Code read the CLAUDE.md in an added directory?</strong></p><p>Not by default. A folder added with --add-dir or /add-dir only loads its CLAUDE.md and rules when the CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD environment variable is set to 1. The simpler route is to describe the second repo in the main project's CLAUDE.md.</p>
<p><strong>How do I add multiple repositories in the Claude Code desktop app?</strong></p><p>In a cloud session, pick a cloud environment and click the + button next to the selected repository to add more. Each repository gets its own branch selector. For local sessions, use /add-dir or the additionalDirectories setting, which the desktop app reads from the same settings files as the terminal.</p>
<p><strong>What is the difference between /add-dir and /cd in Claude Code?</strong></p><p>/add-dir keeps your current project as the main one and adds file access to another folder. /cd moves the whole session to a new folder, keeps the conversation, and applies that folder's CLAUDE.md, settings and hooks.</p>]]></content:encoded>
    </item>
    <item>
      <title>How Much to Charge for a Web Scraper (Price the Data Feed, Not the Script)</title>
      <link>https://www.claudecodeclub.ai/blog/how-much-to-charge-for-a-web-scraper</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/how-much-to-charge-for-a-web-scraper</guid>
      <pubDate>Wed, 07 Oct 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Monetization</category>
      <category>Agency</category>
      <category>Freelancing</category>
      <description><![CDATA[How much to charge for a web scraper depends on what the data is worth to the client, how many sources it pulls from, how often it runs, and who fixes it when a site changes. The script is the cheap part. Price the build on the value of the data, add a line per source and per delivery, and always quote a monthly plan, because every scraper breaks eventually. Here is the method, the line items, and how to present it.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Price a web scraper on what the data does for the client: the hours of manual copying it replaces, the decisions it feeds, and how fresh it needs to be. The length of the script and your hours are the wrong yardsticks.</li><li>Use the CCC Data Feed Quote: a base build priced on the value of the data, plus a line for each source site, plus a line for each place the data has to land. Then a monthly Keep plan, because sites change their pages and scrapers break.</li><li>Make the client confirm they are allowed to collect the data before you quote. Public data, the site's terms and robots.txt, and no logins you are not entitled to. That check protects both of you.</li></ul>
<h2>How much to charge for a web scraper</h2>
<p>How much to charge for a web scraper comes down to one question: what is this data worth to the client, delivered on time, every time? A client never wants a script. They want competitor prices every morning, new listings before anyone else sees them, or a clean list they stop building by hand. Price the build on a share of that value, add a line for each source and each delivery, and quote a monthly plan for upkeep. Do not price it on lines of code or hours.</p>
<p>Scrapers are good work to sell with Claude Code because the result is easy to see: a spreadsheet or dashboard that fills itself. The trap is that the first version can be quick to build, so builders price it like a small one-off job. Then a site changes its layout, the feed goes quiet, and the client blames you for a breakage nobody priced.</p>
<blockquote><strong>NOTE:</strong> This post is part of the pricing series. If the job is moving data between tools the client already owns rather than pulling it from websites, read [how much to charge for an AI automation](/blog/how-much-to-charge-for-an-ai-automation). If the scraper feeds a screen the team works in every day, read [how much to charge for an internal tool](/blog/how-much-to-charge-for-an-internal-tool).</blockquote>
<h2>Why the script is the wrong yardstick</h2>
<p>A scraper for one simple page and a scraper behind a pricing decision worth a lot to the business can be close to the same amount of code. Charging the same for both makes no sense. The client is paying for what the data lets them do, not for what the code looks like.</p>
<p>Hours are worse. Claude Code makes the first build fast, and if your price follows your hours, every bit of speed you gain becomes a pay cut. I covered this in [why I stopped charging hourly for AI builds](/blog/stopped-charging-hourly-for-ai-builds). The real cost of a scraper sits after launch, in keeping it running, and an hourly quote never sees that coming.</p>
<h2>The CCC Data Feed Quote</h2>
<table><caption>Four parts of a web scraper quote</caption><thead><tr><th>Part</th><th>What it prices</th><th>Question to ask the client</th></tr></thead><tbody><tr><td>Base build</td><td>The value of the data and the job it replaces</td><td>What do you do with this data today, and how do you get it?</td></tr><tr><td>Sources</td><td>Each website the scraper reads from</td><td>Which sites, and how many pages or listings on each?</td></tr><tr><td>Deliveries</td><td>Each place the clean data has to land</td><td>Where should it end up: a sheet, a database, an email, an alert?</td></tr><tr><td>Keep plan</td><td>Monthly monitoring and repairs when sites change</td><td>What happens to your process if the data stops for a day?</td></tr></tbody></table>
<p>Base build. Work out with the client what the data is worth. If someone copies it by hand today, that is people multiplied by how often multiplied by how long multiplied by what their time costs. If it feeds a decision, such as pricing, sourcing or lead lists, ask what a better or faster decision is worth. Price the build at a fraction of one year of that value, so the client can see it pay for itself early.</p>
<p>Sources. Every site is its own line. Each one has its own page layout, its own rules and its own way of breaking. A scraper that reads one site is a different job from one that reads five and merges the results into one clean format. Pricing per source makes the quote easy to trim. [How to build a web scraper with Claude Code](/blog/build-a-web-scraper-with-claude-code) shows what a single source involves.</p>
<p>Deliveries. Clean data in a spreadsheet is one line. The same data written into the client's database, pushed to a team chat when something changes, and emailed as a weekly summary is three. Each delivery adds setup, permissions and another place to check. [Automate your spreadsheets with Claude Code](/blog/automate-your-spreadsheets-with-claude-code) covers the most common landing spot.</p>
<blockquote><strong>TIP:</strong> When a client says the number is too high, do not cut the price. Drop a source, run it less often, or replace a live alert with a weekly file, and show which line moved. [The &quot;can you do it cheaper&quot; objection](/blog/can-you-do-it-cheaper-objection) has the wording.</blockquote>
<h2>Frequency and freshness change the price</h2>
<p>A scraper that runs once a week and one that runs every hour are different products. Running more often means more requests to the source site, more chance of being blocked, more storage and more monitoring. It also means the client is relying on it for something time-sensitive, which raises the stakes when it fails.</p>
<p>Ask how fresh the data really needs to be, and price faster schedules higher. Many clients ask for hourly and are happy with daily once they see the difference in the quote. Running slowly is also the polite way to scrape: it keeps load on the source site low, which keeps the scraper working longer.</p>
<h2>Always quote the Keep plan</h2>
<p>Every scraper breaks eventually. A site redesigns a page, renames a field, adds a cookie banner or starts blocking automated visits. None of that is your fault, and all of it stops the feed. If there is no plan for it, you either fix it for free or the client goes back to copying by hand. Both are bad outcomes.</p>
<p>Quote a monthly plan in the original proposal. Say what it covers: checking the feed is healthy, repairing breakages from site changes, and small tweaks to fields. Say what it does not cover: new sources, new deliveries and big changes, which are quoted separately. [How to price a maintenance retainer](/blog/how-to-price-a-maintenance-retainer) covers the structure. Scrapers are one of the easiest projects to justify a retainer on, because the client can see why it exists.</p>
<h2>Confirm the client can collect the data</h2>
<p>Before you quote, ask the client to confirm they are allowed to collect what they are asking for. The safe default: public data only, the site's terms of use and robots.txt respected, no scraping behind logins they are not entitled to use, and no personal data they have no right to hold. Put that confirmation in writing and in the contract. [What to put in an AI project contract](/blog/what-to-put-in-an-ai-project-contract) covers where it goes.</p>
<blockquote><strong>WARNING:</strong> If a source has an official API or a data export, quote that instead of scraping. It is more stable, usually within the rules, and cheaper for the client to keep running. A scraper is the fallback when no clean source exists, not the first choice.</blockquote>
<h2>How to present the web scraper quote</h2>
<ul><li>Lead with the value in their words. One line on what the data does for them today, then the price.</li><li>Itemize it. Base build, each source, each delivery, the schedule, then the Keep plan. Itemized quotes get trimmed, not rejected.</li><li>Gate payments on proof. A deposit to start, a payment when the first full run lands clean data where they want it, and the final payment after a week of runs. [How to structure milestone payments for an AI project](/blog/how-to-structure-milestone-payments-for-an-ai-project) covers the schedule.</li><li>Name what breaks it. Say plainly that site changes will break the scraper at some point, and that the Keep plan is how it gets fixed fast.</li></ul>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club, members share the scraper and data-feed quotes they actually sent and how clients responded to each line. It is $9 a month at https://www.skool.com/claudecodeclub/about, and it is the fastest way to sanity-check a number before it goes out.</blockquote>
<h2>FAQ</h2>
<p><strong>How much should I charge for a web scraper?</strong></p><p>Price it on what the data is worth to the client: the manual work it replaces and the decisions it feeds. Charge a fraction of one year of that value for the build, add a line for each source site and each delivery, and quote a monthly plan for upkeep.</p>
<p><strong>Should I charge hourly for a web scraper?</strong></p><p>No. Claude Code makes the first build fast, so hourly pricing turns every gain in speed into a pay cut, and it ignores the real cost of keeping the scraper running after launch. Price on the value of the data instead.</p>
<p><strong>Should I charge a monthly fee for a web scraper?</strong></p><p>Yes, every time. Sites change their pages and start blocking automated visits, and each change can stop the feed. A monthly plan covers monitoring and repairs, with new sources and big changes quoted separately.</p>
<p><strong>Does a scraper that runs more often cost more?</strong></p><p>It should. Running hourly instead of weekly means more requests, more chance of being blocked, more storage and more monitoring, and the client is relying on it for something time-sensitive. Price the schedule as its own line.</p>
<p><strong>Is it legal to build a web scraper for a client?</strong></p><p>It depends on the data and the site. Stick to public data, respect the site's terms of use and robots.txt, avoid logins the client is not entitled to use, and get the client to confirm in writing that they are allowed to collect the data. When in doubt, the client should get legal advice before you build.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code Security Review: Run /security-review Before a Client Build Ships</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-security-review</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-security-review</guid>
      <pubDate>Sun, 04 Oct 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Security</category>
      <category>Workflows</category>
      <description><![CDATA[Claude Code security review is a built-in command, /security-review, that checks the changes on your current branch for vulnerabilities like injection, broken auth and exposed data. It reviews the diff against your remote's default branch, so it works best as the last step before you merge or ship. Here is how to run it in the desktop app, what it does and does not cover, and how to fix the origin/HEAD error.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Claude Code security review is the built-in /security-review command. It analyzes the changes on your current branch, compared with your origin remote's default branch, and flags risks such as injection, authentication problems and data exposure.</li><li>Run it in the desktop app by typing /security-review in the prompt box, after the feature is finished and before you merge or deploy. It only reviews the branch diff, not your whole codebase and not your live site.</li><li>If it fails with an &quot;ambiguous argument 'origin/HEAD'&quot; error, your clone is missing the origin/HEAD ref. Run git fetch origin, then git remote set-head origin --auto, and try again.</li></ul>
<h2>What Claude Code security review is</h2>
<p>Claude Code security review is a built-in command, /security-review, that analyzes the changes on your current branch for security vulnerabilities. It looks at the difference between your branch and your origin remote's default branch, then reports risks such as injection, authentication and authorization problems, and data exposure. You run it on demand, once, when the work is ready. It is not a background scanner and it does not touch your deployed app.</p>
<p>I treat it as the security half of the final check before anything goes to a client. [Claude Code code review](/blog/claude-code-code-review) catches correctness bugs. /security-review asks a different question: if someone hostile used this, what could they get? Those are different reviews, and on client work I want both.</p>
<blockquote><strong>NOTE:</strong> Everything in this post comes from running the command and from the official Claude Code command reference. If you are new to the app itself, start with [the Claude Code desktop app](/blog/claude-code-desktop-app) and come back.</blockquote>
<h2>How to run /security-review in the desktop app</h2>
<ol><li>Finish the feature on its own branch. The review compares your branch with the default branch on your origin remote, so the work you want checked needs to be on a branch, not committed straight to main. [Use Claude Code with Git](/blog/use-claude-code-with-git) covers the branch habit if it is new to you.</li><li>Make sure the project has an origin remote and that you have fetched from it recently. The review needs that remote to know what &quot;before&quot; looks like.</li><li>In the desktop app, type / in the prompt box (or click the + button and choose Slash commands) and pick security-review. You can send it on its own; it already knows to look at the branch diff.</li><li>Read the findings. Each one should name the file, the risk and why it matters. Ask Claude to explain any finding you do not understand in plain words before you touch it.</li><li>Fix what is real, one finding at a time, then run the review again on the updated branch. Stop when it comes back clean or when what remains is a decision you have made on purpose and written down.</li></ol>
<p>The terminal works the same way: type /security-review in a session. The desktop app is just where I run it, because I can keep the findings open next to the diff view and work through them in order.</p>
<h2>What it covers, and what it does not</h2>
<p>The most common mistake with this command is assuming it reviewed more than it did. It reads the changes on your branch. It does not audit the code that was already on main, it does not test the running site, and it does not check your hosting settings, your database rules or your API key dashboard.</p>
<table><caption>Where /security-review sits among Claude Code's security layers</caption><thead><tr><th>Layer</th><th>When it runs</th><th>What it covers</th></tr></thead><tbody><tr><td>Security guidance plugin</td><td>Automatically, while Claude writes code</td><td>Common vulnerabilities in code Claude is writing, fixed in the same session</td></tr><tr><td>/security-review</td><td>When you ask, once</td><td>The changes on your current branch versus origin's default branch</td></tr><tr><td>Claude Security plugin</td><td>When you ask, deep scan</td><td>A multi-agent scan of a repository or diff, with reviewed findings and patches</td></tr><tr><td>Code Review on pull requests</td><td>On every PR (Team and Enterprise plans)</td><td>Correctness and security review with full codebase context</td></tr><tr><td>Your CI scanners</td><td>On every push</td><td>Language-specific rules and dependency checks</td></tr></tbody></table>
<p>To check code that already exists rather than new changes, ask Claude in a session to review a specific file or folder for vulnerabilities. For anything that is live, the review only ever sees source code in your checkout, so settings that live in a dashboard are still yours to check by hand.</p>
<h2>When I run it</h2>
<ul><li>Before merging anything that touches login, sign-up, passwords or user roles. [Add authentication with Claude Code](/blog/add-authentication-with-claude-code) covers building those pieces; this is the check after.</li><li>Before shipping any form, upload or search box that takes input from strangers. Input from outside is where injection risks live.</li><li>Before deploying anything that holds a paid API key. A key on the server is not safe if the endpoint around it has no authentication, no rate limit and an open origin policy. Our free guide on [keeping API keys safe with Claude Code](/free-resources/keep-api-keys-safe-claude-code) covers the setup side.</li><li>Before handing a client build over. It goes into the same pre-flight list as [reviewing Claude Code output before you ship](/blog/review-claude-code-output-before-you-ship).</li></ul>
<blockquote><strong>WARNING:</strong> A clean review is not a guarantee. It is one pass by one tool over one diff. Treat it as a strong filter, not a sign-off, and keep anything that can spend money behind authentication and limits regardless of what the review says.</blockquote>
<h2>Fixing the &quot;ambiguous argument 'origin/HEAD'&quot; error</h2>
<p>If /security-review stops straight away with an error mentioning origin/HEAD and &quot;unknown revision or path not in the working tree&quot;, the command could not find your remote's default branch. It builds its context by diffing against a local ref called origin/HEAD, and some setups never create it: single-branch or CI checkouts, a repository with no origin remote, or one you never fetched.</p>
<ol><li>Run git fetch origin, then git remote set-head origin --auto. That asks the remote which branch is its default and records it.</li><li>If that fails, name the branch yourself: git remote set-head origin main (use your real default branch name).</li><li>If the project has no remote at all, add one with git remote add origin followed by the repository URL, fetch, then set the head.</li><li>Run /security-review again.</li></ol>
<p>You can also just ask Claude in the desktop app to run those commands for you and explain each one. [Claude Code permissions explained](/blog/claude-code-permissions-explained) covers how to approve them without opening the floodgates.</p>
<h2>How to act on the findings without breaking the build</h2>
<p>Do not paste the whole findings list back and say &quot;fix all of this&quot;. That produces one large change that is hard to check. Take the findings one at a time, highest risk first. For each: ask Claude to restate the risk in one sentence, ask what the smallest fix is, apply it, and run the app to confirm nothing else broke. Commit after each fix so you can roll back a single change if needed.</p>
<p>Some findings will be about risk you accepted on purpose, such as an internal tool that only runs on a private network. Write that down in your project notes or CLAUDE.md so the next review and the next person understand the decision. If you are handing the project to a client, the same note belongs in the handover. [How to hand off a Claude Code project](/blog/how-to-hand-off-a-claude-code-project) covers what to include.</p>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club, members post their /security-review findings and get a second pair of eyes on which ones are real before they ship. It is $9 a month at https://www.skool.com/claudecodeclub/about, and the [curriculum](/curriculum) walks through the full pre-ship checklist step by step.</blockquote>
<h2>FAQ</h2>
<p><strong>What does /security-review do in Claude Code?</strong></p><p>It analyzes the changes on your current branch for security vulnerabilities. It reviews the difference between your branch and your origin remote's default branch and reports risks such as injection, authentication problems and data exposure.</p>
<p><strong>Does /security-review work in the Claude Code desktop app?</strong></p><p>Yes. Type / in the prompt box, or click the + button and choose Slash commands, then pick security-review. Built-in commands are available in the desktop app as well as the terminal.</p>
<p><strong>Does Claude Code security review scan my whole codebase?</strong></p><p>No. It reviews only the changes on your current branch compared with origin's default branch. To check existing code, ask Claude to review a specific file or folder for vulnerabilities, or use a deeper scanning tool across the repository.</p>
<p><strong>Why does /security-review say ambiguous argument origin/HEAD?</strong></p><p>Your clone is missing the origin/HEAD ref that records the remote's default branch. Run git fetch origin and then git remote set-head origin --auto, or name the branch directly with git remote set-head origin main, then run the review again.</p>
<p><strong>Is /security-review enough before shipping client work?</strong></p><p>It is a strong filter, not a guarantee. Pair it with a correctness review, test the running app yourself, and check settings that live outside the code, such as hosting, database rules and API key limits.</p>]]></content:encoded>
    </item>
    <item>
      <title>How Much to Charge for an Internal Tool (Price the Team's Week, Not the Screens)</title>
      <link>https://www.claudecodeclub.ai/blog/how-much-to-charge-for-an-internal-tool</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/how-much-to-charge-for-an-internal-tool</guid>
      <pubDate>Sun, 04 Oct 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Monetization</category>
      <category>Agency</category>
      <category>Freelancing</category>
      <description><![CDATA[How much to charge for an internal tool depends on the time it gives back to the team that uses it every week, the mistakes it stops, and how many systems it has to connect to, not on how many screens it has. Price the build on that value, add a line for each connection and each kind of user, and always quote a monthly plan for upkeep. Here is the method, the line items, and how to present it.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Price an internal tool on what it gives back to the team: the hours of repetitive work it removes every week, the errors it prevents, and the person it frees up. The number of screens and the hours it takes you to build are the wrong yardsticks.</li><li>Use the CCC Team-Week Quote: a base build priced on the value of the job it replaces, plus a line for each system it connects to, plus a line for each kind of user with different access. Then a monthly plan for upkeep, because internal tools live as long as the business process does.</li><li>Anchor the quote to the client's own numbers. Ask how many people do the job, how often, and how long it takes, and let those answers carry the price.</li></ul>
<h2>How much to charge for an internal tool</h2>
<p>How much to charge for an internal tool comes down to one question: what is this job costing the team right now? An internal tool replaces a spreadsheet, a shared inbox, a copy-paste routine or a person double-checking someone else's work. Price the build on a share of what that job costs the business over a year, add a line for every system it has to connect to and every kind of user it has to handle, and quote a monthly plan on top. Do not price it on screens or on your hours.</p>
<p>Internal tools are some of the best work you can sell with Claude Code. The users are a known group, the job is already being done badly by hand, and the client can see the result inside a week. The trap is that they look small, an admin panel, a form and a table, so builders price them like a small website. That leaves most of the value on the table.</p>
<blockquote><strong>NOTE:</strong> This post is part of the pricing series. If the tool runs on its own in the background rather than being used by people, read [how much to charge for an AI automation](/blog/how-much-to-charge-for-an-ai-automation). If it is a product for outside customers, read [how much to charge for an MVP](/blog/how-much-to-charge-for-an-mvp).</blockquote>
<h2>Why screens and hours are the wrong yardstick</h2>
<p>A tool with two screens that ends an afternoon of manual reconciliation every week is worth more than a tool with twelve screens nobody opens. Screens measure your effort, not their outcome. Clients do not care how many pages you built. They care that the Friday report now takes minutes, or that orders stopped going out with the wrong address.</p>
<p>Hours are worse. Claude Code makes the build fast, and if your price follows your hours, every improvement in your speed is a pay cut. I covered this in [why I stopped charging hourly for AI builds](/blog/stopped-charging-hourly-for-ai-builds). The client is buying the job gone, not the time it took you to remove it.</p>
<h2>The CCC Team-Week Quote</h2>
<table><caption>Four parts of an internal tool quote</caption><thead><tr><th>Part</th><th>What it prices</th><th>Question to ask the client</th></tr></thead><tbody><tr><td>Base build</td><td>The main job the tool replaces</td><td>Who does this job today, how often, and how long does it take?</td></tr><tr><td>Connections</td><td>Each system the tool reads from or writes to</td><td>Where does the data live now, and where does the result need to go?</td></tr><tr><td>Access levels</td><td>Each kind of user with different permissions</td><td>Who should see everything, and who should only see their own part?</td></tr><tr><td>Keep plan</td><td>Monthly upkeep, fixes and small changes</td><td>What happens to this process when the team or the systems change?</td></tr></tbody></table>
<p>Base build. Work out the yearly cost of the job with the client: the number of people doing it, multiplied by how often, multiplied by how long it takes, multiplied by what that time costs the business. Then price the build at a fraction of one year of that cost. The client should be able to see the tool pay for itself well inside the first year. Add the cost of mistakes if the job is error-prone, such as wrong invoices, missed orders or double bookings, because a tool that stops those is worth more than one that only saves time.</p>
<p>Connections. Every system the tool talks to is a line item: the CRM, the accounting software, a shared spreadsheet, the email service, the database. Each one adds setup, permissions, edge cases and a new way for things to break later. Pricing them separately makes the quote easy to understand and easy to trim. [Connect Claude Code to a database](/blog/connect-claude-code-to-a-database) gives a sense of what a single connection involves.</p>
<p>Access levels. A tool everyone sees the same way is simpler than one where managers see every record and staff see only their own. Each distinct kind of user means login rules, permission checks and testing as that user. [Add authentication with Claude Code](/blog/add-authentication-with-claude-code) covers the build side; on the quote, it is its own line.</p>
<blockquote><strong>TIP:</strong> When a client says the number is too high, do not cut the price. Remove a connection or an access level, and show them which line it came off. [The &quot;can you do it cheaper&quot; objection](/blog/can-you-do-it-cheaper-objection) has the wording.</blockquote>
<h2>Always quote the Keep plan</h2>
<p>An internal tool is not finished at launch. The team changes how they work, a connected system updates, someone new needs access, a report needs a new column. If there is no plan for that, the tool slowly drifts out of step with the business and people go back to the spreadsheet. That is the worst outcome for both of you: the client stops getting value, and you lose the account.</p>
<p>Quote a monthly plan as part of the original proposal, not as an afterthought. State what it covers (monitoring, fixes, small changes up to an agreed size) and what it does not (new features, new connections, quoted separately). [How to price a maintenance retainer](/blog/how-to-price-a-maintenance-retainer) covers the structure, and [how to turn a one-off client into a monthly retainer](/blog/how-to-turn-a-one-off-client-into-a-monthly-retainer) covers the conversation if the client declines at first.</p>
<h2>The questions to ask before you quote</h2>
<ol><li>Who does this job today, and how many of them are there?</li><li>How often does the job happen, and roughly how long does each round take?</li><li>What goes wrong when it is done by hand, and what does a mistake cost?</li><li>Where does the information come from, and where does the result go?</li><li>Who needs to see what? Are there people who should not see some of it?</li><li>Who on your side will own the tool after launch, and who reports problems?</li></ol>
<p>Write their answers into the proposal word for word. A quote that says &quot;this replaces the work your team described as taking most of every Monday&quot; sells itself far better than one that lists features. [Client discovery questions before you quote](/blog/client-discovery-questions-before-you-quote) has the wider list, and [how to scope a Claude Code client project](/blog/how-to-scope-a-claude-code-client-project) turns the answers into a scope.</p>
<h2>How to present the internal tool quote</h2>
<ul><li>Lead with their job, in their numbers. One line on what the job costs today, then the price, so the price reads as smaller than the problem.</li><li>Show the line items. Base build, each connection, each access level, then the Keep plan. Itemized quotes get trimmed, not rejected.</li><li>Gate the payments on proof. A deposit to start, a payment when the team can use the main job on their own data, and the last payment on acceptance. [How to structure milestone payments for an AI project](/blog/how-to-structure-milestone-payments-for-an-ai-project) covers the schedule.</li><li>Name the owner. Every internal tool needs a person on the client side who owns it. Put that name in the proposal.</li></ul>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club, members share the internal tool quotes they actually sent and how clients responded to each line. It is $9 a month at https://www.skool.com/claudecodeclub/about, and it is the fastest way to sanity-check a number before it goes out.</blockquote>
<h2>FAQ</h2>
<p><strong>How much should I charge for an internal tool?</strong></p><p>Price it on what the job it replaces costs the business each year: the people doing it, how often, how long it takes, and what mistakes cost. Charge a fraction of one year of that cost for the build, add a line for each system it connects to and each kind of user, and quote a monthly plan for upkeep.</p>
<p><strong>Should I charge hourly for an internal tool?</strong></p><p>No. Claude Code makes the build fast, so hourly pricing means every gain in speed lowers your pay. Price on the outcome for the team, and keep the hours as your own private measure of whether the project was worth it.</p>
<p><strong>Is an internal tool cheaper than a customer-facing app?</strong></p><p>Often it is simpler to build because the users are a known group and the job is already defined. That does not make it cheaper to buy. If it removes a weekly chore for a whole team, its value can be higher than a public app nobody uses yet.</p>
<p><strong>Do I need to charge a monthly fee for an internal tool?</strong></p><p>Quote one every time. Teams change how they work and connected systems change too, and a tool without upkeep drifts out of step with the business. Say what the plan covers and what is quoted separately.</p>
<p><strong>How do I lower the price without discounting?</strong></p><p>Remove scope, not margin. Take out a connection, merge two access levels into one, or move a secondary feature into a later phase, and show the client which line changed.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Demo a Claude Code Build to a Client (Show the Outcome, Not the Code)</title>
      <link>https://www.claudecodeclub.ai/blog/how-to-demo-a-claude-code-build-to-a-client</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/how-to-demo-a-claude-code-build-to-a-client</guid>
      <pubDate>Fri, 02 Oct 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Agency</category>
      <category>Claude Code</category>
      <category>Freelancing</category>
      <description><![CDATA[To demo a Claude Code build to a client, show them one job done start to finish on their own data, on a link that is already live, and then ask for the next step before the call ends. Do not show the code, the prompts or the terminal. Here is the demo structure, the prep checklist, and what to do when something breaks on screen.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>A client demo is a sales call, not a code review. Show one real job from start to finish on the client's own example data, on a live link, in under fifteen minutes of screen time. The client is judging whether their problem is gone, not how it was built.</li><li>Prepare the demo the day before: deploy it, load their data, reset it to a clean state, and walk the exact path once. Never demo from localhost and never demo a path you have not run that morning.</li><li>End every demo with a specific ask: the sign-off, the next milestone, or the date for going live. A demo that ends with &quot;let me know what you think&quot; ends with silence.</li></ul>
<h2>How to demo a Claude Code build to a client</h2>
<p>To demo a Claude Code build to a client, open a link that is already deployed, load the client's own example data, and walk through one real job from the first click to the finished result. Say what the job is before you start, show the result, and stop. Keep the code, the prompts and Claude itself off the screen. The client hired you to remove a problem. The demo is the moment they see the problem gone.</p>
<p>Everything else in this post is about making that moment reliable. Building with the [Claude Code desktop app](/blog/claude-code-desktop-app) makes it easy to get something working fast, which is exactly why demos go wrong: the build works on your machine, in your session, with your test data, and then falls over in front of someone else. The fix is a short preparation routine, a fixed structure, and a plan for when something breaks.</p>
<blockquote><strong>NOTE:</strong> This post covers the demo itself. Getting the client to a yes comes from the proposal and the milestones around it: [a one-page AI proposal that closes](/blog/one-page-ai-proposal-that-closes) covers the proposal, and [how to write a statement of work for an AI project](/blog/how-to-write-a-statement-of-work-for-an-ai-project) covers what the demo is measured against.</blockquote>
<h2>Why showing the code loses the room</h2>
<p>Showing the code feels like proof of work. To a non-technical client it is noise, and worse, it hands them a reason to start asking questions about things that do not matter to them: which framework, why that database, whether it is &quot;real&quot; code. Every minute spent there is a minute not spent on whether their business problem is solved.</p>
<p>The same goes for showing Claude Code working live. Watching an agent write files is interesting to builders. For a client it raises the question &quot;so why am I paying you?&quot; The answer is perfectly good, because the value is in knowing what to build, how to scope it, and how to check it, but a demo is a bad place to argue it. [How to sell AI to non-technical clients](/blog/sell-ai-to-non-technical-clients) covers how to frame that value in the conversation where it belongs.</p>
<p>The rule I use: the client sees their own world, working. Their data, their words, their workflow. If a screen would make sense to a stranger but not to them, it does not belong in the demo.</p>
<h2>The prep routine the day before</h2>
<ol><li>Deploy it. A demo runs on a real link, not localhost. If you have not deployed this build yet, [how to deploy an app with Claude Code](/blog/how-to-deploy-an-app-with-claude-code) is the walkthrough. A live link also lets the client open it themselves afterwards.</li><li>Load their data. Use the client's own example records, names and wording, with their permission. A demo with &quot;Test User 1&quot; asks them to imagine; a demo with their real product list does not.</li><li>Pick one job. Decide the single path you will show, the thing the client does most often or complains about most. One path done well beats a tour of every screen.</li><li>Run that path end to end, twice, the morning of the call. Once to check it works, once to time it. Then reset the data to a clean starting state so the demo does not begin with your leftover tests.</li><li>Prepare the failure fallback. Record a short screen capture of the working path as a backup, and have it ready in another tab. Connections drop and services time out; the backup keeps the call alive.</li><li>Check the account state. Make sure any logins, API keys and third-party services the path touches are active and not close to a limit. [Review Claude Code output before you ship](/blog/review-claude-code-output-before-you-ship) has the pre-flight list I run before anything goes in front of a client.</li></ol>
<h2>The demo structure: outcome, path, result, ask</h2>
<p>Run every demo in the same four beats. It keeps you calm, and it keeps the client oriented.</p>
<ul><li>Outcome (one sentence, before you share your screen). &quot;Last time you told me that taking bookings by email costs you an evening each week. I am going to show you a booking request arriving and being confirmed without you touching it.&quot; You restate their problem in their words so the demo has a yardstick.</li><li>Path (the live walkthrough). Narrate what the person using it does, not what the software does. &quot;A customer picks a time, gets a confirmation, you get a notification.&quot; Go slowly and stop talking while something loads.</li><li>Result (the payoff moment). Show where the outcome lands: the confirmation, the report, the spreadsheet row, the message sent. Then be quiet for a few seconds. Let them react.</li><li>Ask (the close). Tie the demo to the next step in the agreement: &quot;If this matches what we scoped, the next step is signing off this milestone so I can move on to the second part.&quot; Name the date or the action. [How to close an AI client over email](/blog/close-an-ai-client-over-email) is useful for the follow-up message that goes out the same day.</li></ul>
<blockquote><strong>TIP:</strong> Hand them the mouse near the end. Ask the client to run the path themselves on the live link. People believe what they have clicked far more than what they have watched, and it surfaces confusions you would otherwise hear about next week.</blockquote>
<h2>What to do when something breaks on screen</h2>
<p>Something will break eventually. How you handle it matters more than the break. Say what happened in plain words, once, without panic: &quot;That did not load. I am going to reload and try that step again.&quot; If the second try fails, switch to the recorded backup and keep going: &quot;Let me show you the recording of that path, and I will fix the live version and send you the link today.&quot; Then actually do it.</p>
<p>Do not debug live in front of a client. Do not open the terminal, do not start talking to Claude about the error while they watch, and do not explain the technical cause at length. Note the issue, move to the next part of the demo, and fix it after. Clients forgive a break that is handled calmly and followed by a quick fix. They do not forgive a long silent debugging session or a vague excuse. If the break reveals a real defect, [how to debug with Claude Code](/blog/how-to-debug-with-claude-code) is the process for finding it after the call.</p>
<h2>Handling feedback during and after the demo</h2>
<p>Clients almost always ask for something new during a demo, usually starting with &quot;could it also...&quot;. Do not agree on the spot and do not refuse. Write it down visibly and say: &quot;Good idea, I will note that and tell you what it would involve.&quot; Then sort every request into one of two buckets afterwards: part of what was agreed (fix it as part of the current milestone) or new (quote it separately). [How to handle scope creep on client projects](/blog/how-to-handle-scope-creep-on-client-projects) has the wording, and [how many revisions to include in an AI project](/blog/how-many-revisions-to-include-in-an-ai-project) explains how to keep feedback rounds finite.</p>
<p>Within the same day, send a short written recap: what you showed, what they confirmed, what they asked to change, and the next step with a date. That message is also your record that the milestone was shown and accepted. If you plan to hand the finished build over, [how to hand off a Claude Code project](/blog/how-to-hand-off-a-claude-code-project) is the step after sign-off.</p>
<h2>Common demo mistakes</h2>
<ul><li>Demoing from localhost or a laptop-only setup. If it only works on your machine, it is not ready to show.</li><li>Using fake data. It forces the client to translate your demo into their reality, and they usually do not.</li><li>Showing every feature. A tour makes the build feel generic. One real job makes it feel like theirs.</li><li>Talking while the thing loads. Silence feels long to you and normal to them. Let it finish.</li><li>Explaining how it was built. Unless they ask, skip it. If they do ask, give one sentence and move back to the result.</li><li>Ending without an ask. The last minute of the call should name the next step and the date.</li></ul>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club, members share the demos that moved a client to sign-off and the ones that stalled, and what they changed afterwards. It is $9 a month at https://www.skool.com/claudecodeclub/about, and it is the quickest way to get a second pair of eyes on your demo path before the call.</blockquote>
<h2>FAQ</h2>
<p><strong>How long should a client demo of an AI build be?</strong></p><p>Keep the live walkthrough short, under fifteen minutes, with the rest of the call for questions and the next step. One real job done start to finish lands better than a long tour of every screen.</p>
<p><strong>Should I show the client the code or Claude Code during a demo?</strong></p><p>No, unless they ask. Clients are judging whether their problem is solved, not how it was built. Showing code or an agent working invites questions that do not help the decision. Keep the screen on their world: their data, their workflow, the result.</p>
<p><strong>Should I do a live demo or send a recorded video?</strong></p><p>Do the live demo on a deployed link, and keep a short recording of the working path as a backup in case something fails. Send the recording afterwards along with a written recap so the client can review it and share it with others.</p>
<p><strong>What if the demo breaks in front of the client?</strong></p><p>Say plainly what happened, try the step once more, and if it fails switch to the recorded backup and continue. Do not debug live. Fix it after the call and send the working link the same day.</p>
<p><strong>How do I end a client demo so it leads to a sign-off?</strong></p><p>Tie it to the next step in the agreement and name a date. For example, ask them to sign off the milestone so you can start the next part. Follow up the same day in writing with what was shown, what they confirmed and what they asked to change.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Structure Milestone Payments for an AI Project (Get Paid on Proof, Not on Promises)</title>
      <link>https://www.claudecodeclub.ai/blog/how-to-structure-milestone-payments-for-an-ai-project</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/how-to-structure-milestone-payments-for-an-ai-project</guid>
      <pubDate>Fri, 02 Oct 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Monetization</category>
      <category>Agency</category>
      <category>Freelancing</category>
      <description><![CDATA[Structure milestone payments for an AI project so that every payment is triggered by something the client can see and check, not by a date or the hours you worked. Take a deposit, tie the middle payments to working previews, and tie the final payment to written acceptance before you hand over the keys. Here is the schedule, the wording, and what to do when a client stalls.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Tie every payment to something the client can see and approve: a deposit to start, a working preview in the middle, and acceptance at the end. Never tie payments to calendar dates or hours worked, because neither proves anything to the client.</li><li>Use the CCC Proof-Gated Schedule: Start (deposit), Show (a working preview on their data), Ship (acceptance and go-live), and an optional Keep (the monthly plan). The final access and handover stay with you until the Ship payment clears.</li><li>Write down what counts as accepted, how long the client has to respond, and what happens if they go quiet. A milestone with no acceptance rule is just a suggestion.</li></ul>
<h2>How to structure milestone payments for an AI project</h2>
<p>To structure milestone payments for an AI project, split the fee into a few payments and attach each one to a visible, checkable event: the project starts, the client sees it working, the client accepts it. Do not attach payments to dates, because the client can stall a date, and do not attach them to hours, because hours are an argument. A payment that unlocks when the client approves a working preview is one nobody has to chase.</p>
<p>This protects both sides. The client never pays for something they cannot see, which is the real fear behind most hesitation on AI work. You never deliver the whole thing on trust and then wait. The number of payments is not the point; the proof behind each one is.</p>
<blockquote><strong>NOTE:</strong> This post is the schedule. [How much deposit to charge before an AI project](/blog/how-much-deposit-to-charge-before-an-ai-project) covers the first payment in depth, and [how to handle a client who won't pay](/blog/how-to-handle-a-client-who-wont-pay) covers what to do when the schedule is ignored.</blockquote>
<h2>Why dates and hours are the wrong triggers</h2>
<p>Payments tied to dates (&quot;first of the month&quot;) feel tidy but they break the moment the project slips for any reason, including the client being slow to send material. Then you are asking for money for work they cannot yet see, and they are right to resist.</p>
<p>Payments tied to hours turn every invoice into a negotiation about whether it really took that long. With AI builds that is especially bad, because the speed of the tool means clients assume the work was easy and push back on the time. I price AI work on the outcome, as covered in [why I stopped charging hourly for AI builds](/blog/stopped-charging-hourly-for-ai-builds), and the payment schedule follows the same logic: pay for outcomes you can point at.</p>
<h2>The CCC Proof-Gated Schedule</h2>
<table><caption>Four payments, each gated by something the client can see</caption><thead><tr><th>Payment</th><th>Trigger</th><th>What the client sees</th></tr></thead><tbody><tr><td>Start</td><td>Signed agreement</td><td>A confirmed scope, a start date and a kickoff call</td></tr><tr><td>Show</td><td>Working preview on the client's own data</td><td>The main job working on a live link they can click</td></tr><tr><td>Ship</td><td>Written acceptance of the finished build</td><td>The full thing, tested against the agreed list</td></tr><tr><td>Keep</td><td>Go-live, then monthly</td><td>Monitoring, fixes and small changes under a plan</td></tr></tbody></table>
<p>Start is the deposit. It commits the client and covers the work of getting going. It is paid before any work begins, and the project does not start until it clears.</p>
<p>Show is the payment that matters most, and the one people skip. When you have the core job working on a link the client can open, with their own example data in it, you request the next payment. It proves progress, gives the client a real look before most of the money is spent, and gives you cash flow through the middle of the project instead of one big wait at the end. [How to demo a Claude Code build to a client](/blog/how-to-demo-a-claude-code-build-to-a-client) covers how to run that preview so it gets approved.</p>
<p>Ship is paid on acceptance, before you hand over the final access. The finished build is tested against the list in the agreement, the client confirms in writing that it matches, and the final invoice is due. Keep is optional but I always offer it: a monthly plan for fixes and small changes that begins at go-live. [How to turn a one-off client into a monthly retainer](/blog/how-to-turn-a-one-off-client-into-a-monthly-retainer) covers that conversation.</p>
<blockquote><strong>TIP:</strong> For a small, short project, collapse the schedule to two payments: Start and Ship. Add the Show payment as soon as the build is big enough that you would be uncomfortable waiting until the end to be paid.</blockquote>
<h2>Define &quot;accepted&quot; before you start</h2>
<p>A milestone only works if everyone agrees in advance what counts as done. Put three things in the statement of work. First, the checklist the build will be measured against, written in plain language as things the client can do or see. Second, the response window: the client has a set number of working days to accept or list the specific items that do not match the checklist. Third, the silence rule: if the window passes with no response, the milestone is treated as accepted and the invoice is due.</p>
<p>[How to write a statement of work for an AI project](/blog/how-to-write-a-statement-of-work-for-an-ai-project) has the full structure, and [how many revisions to include in an AI project](/blog/how-many-revisions-to-include-in-an-ai-project) covers how many rounds of fixes fit inside each milestone. Without these, acceptance becomes an open-ended conversation and your payment becomes a hostage to it.</p>
<h2>What you hold back until the final payment</h2>
<p>Give the client everything they need to judge the work, and hold back only what they need to run it without you. In practice that means: the preview link stays live throughout, but production access, the transfer of accounts and the source files are handed over after the Ship payment clears. State this in the agreement, in a sentence, before the project starts, so it reads as the process rather than as a threat.</p>
<p>Be fair about it. Do not hold back something the client already paid for, and do not hide a working build from them to force payment. The point is a sequence, not a standoff. [How to hand off a Claude Code project](/blog/how-to-hand-off-a-claude-code-project) covers the handover itself.</p>
<h2>When a client stalls on a milestone</h2>
<ul><li>Silent after a preview. Send a short message restating what was shown, the acceptance window and the date it ends. Most delays are simply someone being busy.</li><li>Vague unhappiness. Ask them to list the specific items that do not match the checklist. Anything on the list gets fixed; anything not on it is new work, quoted separately. [How to handle scope creep on client projects](/blog/how-to-handle-scope-creep-on-client-projects) has the wording.</li><li>Wants to pay later. Hold the schedule. If the cash situation is real, offer a smaller number of larger milestones in place of late payment on the existing ones, never open-ended delay.</li><li>Won't pay at all. Pause work as the agreement allows and follow the steps in [how to handle a client who won't pay](/blog/how-to-handle-a-client-who-wont-pay). Having acceptance in writing is what makes that conversation short.</li></ul>
<h2>How to present the schedule so it closes</h2>
<p>Put the schedule on the same page as the price, in the same plain language as the table above. When a client sees that money only moves when they have seen something working, the number feels safer, and the &quot;what if you disappear&quot; worry fades without you having to argue it. If they ask whether the fee can come down, [the &quot;can you do it cheaper&quot; objection](/blog/can-you-do-it-cheaper-objection) covers the answer, and the answer is almost never a discount: it is a smaller scope.</p>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club, members share the payment schedules they actually put in proposals and how clients reacted to each. It is $9 a month at https://www.skool.com/claudecodeclub/about, and it is the quickest way to pressure-test your own schedule before you send it.</blockquote>
<h2>FAQ</h2>
<p><strong>How should I structure milestone payments for an AI project?</strong></p><p>Tie each payment to something the client can see and approve: a deposit to start, a working preview on their own data in the middle, and written acceptance of the finished build at the end. Avoid tying payments to dates or hours worked.</p>
<p><strong>How many milestone payments should an AI project have?</strong></p><p>Two for a small, short project (start and acceptance), three or four for anything larger or longer. Add a middle payment as soon as you would be uncomfortable waiting until the end to be paid.</p>
<p><strong>What counts as a milestone being accepted?</strong></p><p>Whatever the statement of work says. Write a plain-language checklist the build is measured against, a response window for the client, and a rule that silence after the window counts as acceptance. Without these, acceptance turns into an open-ended conversation.</p>
<p><strong>Should I hand over access before the final payment?</strong></p><p>Give the client a live preview throughout so they can judge the work, but hand over production access, account transfers and source files after the final payment clears. Put that sequence in the agreement before the project starts so it reads as process, not leverage.</p>
<p><strong>What if the client wants to pay everything at the end?</strong></p><p>Decline politely and explain that paying only at the end means you carry all the risk through the whole project. Offer the same schedule with fewer payments if the project is small, and keep a deposit in every case.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code Goal Command: How /goal Keeps Claude Working Until the Job Is Actually Done</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-goal-command</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-goal-command</guid>
      <pubDate>Wed, 30 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Workflows</category>
      <category>Building</category>
      <description><![CDATA[The Claude Code goal command is /goal followed by a condition, such as all tests in test/auth pass. Claude keeps taking turns until a separate small model confirms the condition is met, judges it impossible, or an error you have to fix clears it. Here is how to set one in the desktop app, how to write a condition the evaluator can judge, how /goal differs from /loop, auto mode and a Stop hook, and what stops or pauses a goal.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>The Claude Code goal command is /goal plus a condition. Claude keeps starting new turns on its own until a separate small fast model reads the conversation and confirms the condition is met, judges it impossible, or a turn fails on an error you have to fix. You can also stop it yourself with /goal clear.</li><li>The evaluator does not run commands or read files. It only judges what Claude has shown in the conversation, so the condition has to be something Claude's own output can prove, like a test run or a build result.</li><li>The CCC Finish Line Formula: one measurable end state, the check that proves it, what must not change on the way, and a ceiling such as or stop after 20 turns. Pair it with auto mode if you want the turns to run without approval prompts.</li></ul>
<h2>What the Claude Code goal command does</h2>
<p>The Claude Code goal command is /goal followed by a completion condition, for example /goal all tests in test/auth pass and the lint step is clean. Setting it starts a turn straight away, with the condition as the instruction. After each turn, a small fast model checks whether the condition holds. If it does not, Claude starts another turn instead of handing control back to you. The goal clears on its own when the condition is met, when the evaluator judges it impossible, or when a turn fails on an error you have to fix. One goal can be active per session, and it works in the desktop app, in the terminal, and through Remote Control.</p>
<p>The part that matters to me is who decides the work is finished. Without a goal, Claude stops when Claude thinks it is done. With a goal, a fresh model that did none of the work reads the conversation and makes the call. That is the same reason I do not review my own pull requests. The builder is the worst judge of whether the build is complete, and /goal gives you a second opinion on every single turn without you having to be there.</p>
<blockquote><strong>NOTE:</strong> A goal is only as good as the setup underneath it. If your project has no tests and no build step, start with [test-driven development with Claude Code](/blog/claude-code-test-driven-development), because a goal needs something it can check.</blockquote>
<h2>How to set a goal in the Claude Code desktop app</h2>
<p>Open a session on the project in the desktop app, type /goal followed by your condition, and send it. You do not need a separate prompt. The condition is the instruction, and Claude starts working as soon as it is set. While the goal is active, an indicator shows that it is running and for how long.</p>
<ol><li>Commit your work first. A goal can run for many turns, and a clean commit is the cheapest undo you have. [Using Claude Code with git](/blog/use-claude-code-with-git) covers the habit.</li><li>Pick your permission mode on purpose. A goal does not change it. In Manual mode, Claude still asks before any tool call your settings do not already allow, so the goal will sit waiting for you. To let the turns run unattended, set the goal in [auto mode](/blog/claude-code-auto-mode-default).</li><li>Type /goal and the condition, then send. Setting a new goal while one is active replaces the old one.</li><li>Check in with /goal on its own. It shows the condition, how long it has been running, how many turns have been evaluated, the token spend so far, and the evaluator's most recent reason.</li><li>Stop it with /goal clear if you change your mind. The words stop, off, reset, none and cancel work too, and running /clear to start a new conversation also removes the goal.</li></ol>
<p>If you close the session with a goal still active, resuming that session brings the goal back. The condition carries over, and the turn count, timer and token-spend figures start again from zero. A goal that was already achieved or cleared does not come back. [How to resume a Claude Code session](/blog/resume-a-claude-code-session) covers the resume routes.</p>
<h2>The CCC Finish Line Formula: how to write a goal condition</h2>
<p>A goal condition has to be something Claude's own output can prove. The evaluator does not run commands and does not read your files. It reads the conversation, and that is all. &quot;All tests in test/auth pass&quot; works because Claude runs the tests and the result lands in the transcript. &quot;The code is clean&quot; does not work, because nothing Claude prints can settle it. The CCC Finish Line Formula is the four parts I write every time.</p>
<table><caption>The CCC Finish Line Formula</caption><thead><tr><th>Part</th><th>What it is</th><th>Example</th></tr></thead><tbody><tr><td>End state</td><td>One measurable result: a test result, a build exit code, a file count, an empty queue</td><td>Every call site uses the new payments client</td></tr><tr><td>Proof</td><td>The check Claude must run and show</td><td>npm test exits 0 and git status is clean</td></tr><tr><td>Guardrails</td><td>What must not change on the way there</td><td>No test file is modified and no dependency is added</td></tr><tr><td>Ceiling</td><td>A turn or time limit written into the condition</td><td>Or stop after 20 turns</td></tr></tbody></table>
<p>Put together, that reads: /goal every call site uses the new payments client, npm test exits 0, no test file is modified, or stop after 20 turns. The condition can be up to 4,000 characters, so there is room to be exact. The ceiling is the part people skip. Claude reports progress against a turn or time clause each turn and the evaluator judges it from the conversation, which makes it the simplest way to bound a run you are not watching.</p>
<p>The guardrail line is the one I would not leave out. A model told to make the tests pass has two ways to get there, and one of them is editing the tests. Writing &quot;no test file is modified&quot; into the condition closes that door. If the work is big enough to need a page of acceptance criteria, write them down first. [How to write a technical spec for Claude Code](/blog/how-to-write-a-technical-spec-for-claude-code) is the format I use, and the goal then becomes &quot;every acceptance criterion in the spec holds&quot;.</p>
<h2>/goal vs /loop vs auto mode vs a Stop hook</h2>
<p>These four get confused because they all make Claude Code do more without you. They answer different questions. /goal decides when the work is finished. /loop re-runs a prompt on a time interval. Auto mode removes the approval prompts inside a turn. A Stop hook is the permanent, scripted version of what /goal does for one session.</p>
<table><caption>Four ways to keep Claude Code working, and what each one controls</caption><thead><tr><th>Tool</th><th>What starts the next turn</th><th>What stops it</th><th>Reach for it when</th></tr></thead><tbody><tr><td>/goal</td><td>The previous turn finishing</td><td>A separate model confirms the condition is met or impossible, an error you have to fix, or /goal clear</td><td>The job has a finish line you can check</td></tr><tr><td>/loop</td><td>A time interval passing</td><td>You stop it, or Claude decides the work is done</td><td>The job is a repeat check, not a finish line</td></tr><tr><td>Auto mode</td><td>Nothing. It approves tool calls inside one turn and does not start a new one</td><td>Claude judging the work done</td><td>You want fewer approval prompts</td></tr><tr><td>Stop hook</td><td>The previous turn finishing</td><td>Your own script or prompt</td><td>You want the same check on every session, saved in settings</td></tr></tbody></table>
<p>/goal and auto mode are built to be used together. Auto mode removes the per-tool prompts and /goal removes the per-turn prompts. Under the hood, /goal is a wrapper around a prompt-based Stop hook that lasts for the current session only. If you find yourself typing the same goal every day, that is the sign to make it a real hook. [Hooks that earn their keep](/blog/claude-code-hooks-that-earn-their-keep) covers which ones are worth it. For work that should run when no session is open at all, that is a [scheduled task in the desktop app](/blog/claude-code-scheduled-tasks), not a goal.</p>
<h2>What stops a goal, and what only pauses it</h2>
<p>A goal ends in one of three verdicts or one kind of error. The evaluator returns not yet met, met, or impossible, each with a short reason. Not yet met means Claude keeps going and uses the reason as guidance. Met clears the goal and records it as achieved. Impossible clears it and records the reason, so you are not left with a loop chasing something that cannot happen.</p>
<ul><li>Errors that clear the goal: an exhausted credit balance, a model that is not available, a context overflow that auto-compaction could not clear, and an authentication failure when Claude Code manages its own credentials. In the desktop app, which manages sign-in for you, an authentication failure leaves the goal active. When a goal is cleared this way, fix the cause and run /goal again.</li><li>Errors that keep the goal: everything else. On Claude Code v2.1.269 or later, an interactive session retries on its own after things like an overloaded server or a dropped connection, and pauses after three automatic retries.</li><li>Limits pause it. An API rate limit or a usage limit pauses the goal and names the cause. If the session is set to continue when the usage limit resets, Claude picks the goal back up then. [What to do when you hit usage limits](/blog/claude-code-usage-limits-what-to-do) covers your options in the meantime.</li><li>Talking without working stops the loop. If Claude keeps answering the evaluator with no tool use for several turns in a row, Claude Code stops, prints a warning, and hands control back to you with the goal still set.</li><li>Background work delays the check. If a subagent or a background command is still running when a turn ends, the evaluation is skipped for that turn and happens once nothing is running. After 30 minutes of waiting, Claude is asked to check on the running tasks and fix or stop any that are stuck.</li></ul>
<h2>What the goal command costs</h2>
<p>The evaluator itself is cheap. It runs on your configured small fast model, which defaults to Haiku on the Claude API, and the official guidance is that evaluation tokens are typically negligible compared to what the main turns spend. The real cost of a goal is the turns. A goal with no ceiling on a vague condition can take a lot of turns, and every one of them is billed like any other work.</p>
<p>That is why the ceiling is in the formula, and why I check /goal partway through a long run. It shows the token spend so far. If the number is climbing and the evaluator's reason has not changed in a while, the condition is the problem, not the model. Clear it, tighten it, and set it again. [What actually eats your limit](/blog/claude-code-token-usage) explains where the rest of the spend goes.</p>
<h2>The jobs I hand to /goal, and the ones I do not</h2>
<p>A goal earns its place on substantial work with an end state you can verify. It is the wrong tool for anything where finished is a matter of taste.</p>
<ul><li>Good fit: moving a module to a new API until every call site compiles and the tests pass.</li><li>Good fit: building out a written spec until every acceptance criterion holds.</li><li>Good fit: splitting one oversized file into smaller ones until each is under a size you name.</li><li>Good fit: working through a labelled backlog of issues until the queue is empty.</li><li>Bad fit: &quot;make the homepage look better&quot;. There is nothing in a transcript that proves it, so the evaluator is guessing.</li><li>Bad fit: a job where the check lives outside the session, like a client signing off. Claude cannot show that result, so the condition can never be met.</li><li>Bad fit: anything on a client's production system without limits in place first. A goal in auto mode is [Claude Code running unattended](/blog/claude-code-running-unattended), and the same rules about permissions apply. [Permissions explained](/blog/claude-code-permissions-explained) is where I would start.</li></ul>
<h2>Set your first goal today</h2>
<p>Pick one job on your current project that has a test or a build you trust. Commit, switch to auto mode if the repo is yours to risk, and write the condition with all four parts: end state, proof, guardrails, ceiling. Then leave it alone and read the evaluator's reasons when you come back. They tell you more about how well you wrote the condition than about how well Claude worked. If a run goes somewhere you did not want, [checkpoints and rewind](/blog/claude-code-checkpoints-and-rewind) plus the commit you made at the start get you back.</p>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club, members share the goal conditions they actually run, the ones that looped, and how they rewrote them. It is $9 a month at https://www.skool.com/claudecodeclub/about, and it is the fastest way to see what a well-written finish line looks like on real projects.</blockquote>
<h2>FAQ</h2>
<p><strong>What is the Claude Code goal command?</strong></p><p>It is /goal followed by a completion condition. Claude keeps working turn after turn until a separate small fast model confirms the condition is met, judges it impossible, or a turn fails on an error you have to fix. One goal can be active per session.</p>
<p><strong>Does /goal work in the Claude Code desktop app?</strong></p><p>Yes. /goal works in the desktop app, in the terminal, in non-interactive mode, and through Remote Control. In the desktop app you type /goal and the condition into the prompt box and send it.</p>
<p><strong>What is the difference between /goal and /loop in Claude Code?</strong></p><p>/goal starts the next turn as soon as the previous one finishes and stops when a separate model confirms your condition is met. /loop re-runs a prompt when a time interval passes and stops when you stop it or Claude decides the work is done. Use /goal for a finish line and /loop for a repeat check.</p>
<p><strong>How do I stop a Claude Code goal?</strong></p><p>Run /goal clear. The words stop, off, reset, none and cancel are accepted as aliases, and running /clear to start a new conversation also removes an active goal. To limit a goal in advance, write a clause such as or stop after 20 turns into the condition.</p>
<p><strong>Does /goal run without asking for permission?</strong></p><p>Not by itself. A goal does not change your permission mode. In Manual mode Claude still asks before tool calls your settings do not already allow. To let goal turns run unattended, set the goal while in auto mode.</p>
<p><strong>How much does /goal cost to run?</strong></p><p>The evaluator runs on your configured small fast model, which defaults to Haiku on the Claude API, and its tokens are typically negligible compared to the main turns. The real cost is the number of turns the goal takes, which is why a turn or time ceiling in the condition matters.</p>]]></content:encoded>
    </item>
    <item>
      <title>How Much to Charge for a Mobile App (Price the Launch and the Upkeep, Not Just the Build)</title>
      <link>https://www.claudecodeclub.ai/blog/how-much-to-charge-for-a-mobile-app</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/how-much-to-charge-for-a-mobile-app</guid>
      <pubDate>Wed, 30 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Monetization</category>
      <category>Agency</category>
      <category>Freelancing</category>
      <description><![CDATA[How much to charge for a mobile app comes down to three things you price separately: the build, getting it into the app stores, and keeping it working after launch. Quote a fixed fee in tiers, keep the store accounts in the client's name, and never sell an app without a monthly line. Here is why an app is not priced like a website, the three tiers I quote, the store costs that go on their own line, and the mistakes that leave you maintaining an app for free.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Price a mobile app as three separate things: the build, the store launch, and the upkeep. A client who only pays for the build gets an app that stops working the first time a phone update breaks it, and you get the call.</li><li>Ask first whether it needs to be in the app stores at all. Plenty of clients need something that works well on a phone, which is a web app, and it is cheaper, faster and has no store review. Saying so wins more trust than the bigger quote.</li><li>Quote the CCC Store-Ready Ladder: Pilot (a working app on the client's own phones), Store Launch (published on one store), and Launch and Run (both stores plus a monthly plan). Store fees sit on their own line and the accounts belong to the client: the Apple Developer Program is 99 USD per membership year and Google Play has a US$25 one-time registration fee.</li></ul>
<h2>How much to charge for a mobile app</h2>
<p>How much to charge for a mobile app depends on three things, and you price each one on its own line: the build, the store launch, and the upkeep afterwards. Quote the build and the launch as a fixed fee in three tiers, sized against what the app is worth to the client's business, not against your hours. Quote the upkeep as a monthly fee. Keep the store accounts and their fees in the client's name. Do not quote build hours. With Claude Code, the first working version of an app can come together quickly, and a client who hears how quickly will price the whole thing like a weekend job, when the launch and the upkeep are where most of the real work sits.</p>
<p>This is where new builders lose money on apps. They price the part that got faster and give away the two parts that did not. Getting an app approved and listed, and keeping it working as phones and store rules change, takes the same patience it always did. If the quote is one number for &quot;the app&quot;, the client assumes all of that is included forever. It needs to be written down and priced, or you are doing it for free a year from now.</p>
<blockquote><strong>NOTE:</strong> The fixed-fee logic under every number here is in [how to price a Claude Code agency project](/blog/how-to-price-a-claude-code-agency-project). If the client is testing an idea rather than launching a finished product, read [how much to charge for an MVP](/blog/how-much-to-charge-for-an-mvp) first, because that is a different quote.</blockquote>
<h2>A mobile app is not priced like a website</h2>
<p>A website goes live when you say so. A mobile app goes live when a store says so, and that one difference changes the whole quote. There is a gatekeeper between you and the client's customers, there are accounts and fees that have to exist before anything ships, and there is no such thing as finished, because the phones keep changing underneath it.</p>
<table><caption>Website or mobile app: what changes in the quote</caption><thead><tr><th></th><th>Website or landing page</th><th>Mobile app</th></tr></thead><tbody><tr><td>Who decides it goes live</td><td>You and the client</td><td>The app store, after its own review</td></tr><tr><td>Accounts needed first</td><td>A domain and hosting</td><td>A developer account on each store, in someone's legal name</td></tr><tr><td>How a fix ships</td><td>You publish it</td><td>You submit an update and it goes through the store again</td></tr><tr><td>What breaks it later</td><td>Rarely anything, if left alone</td><td>New phone software, new screen sizes, new store requirements</td></tr><tr><td>What you price</td><td>The page and what it converts</td><td>The build, the launch, and the upkeep as three lines</td></tr></tbody></table>
<p>Walk the client through this table on the call. Most have never shipped an app and assume it works like their website. Once they see the launch and the upkeep as real work with real steps, a quote with three lines stops looking padded and starts looking like you have done this before. For the website side of the comparison, [how much to charge for a landing page](/blog/how-much-to-charge-for-a-landing-page) has that quote.</p>
<h2>Ask first: does it need to be in the app stores at all?</h2>
<p>Often the honest answer is no. When a client says &quot;we need an app&quot;, what they usually mean is &quot;our customers are on their phones&quot;. A web app that works well on a phone covers that with no store account, no review and no waiting on anyone to publish a fix. It is a smaller quote and a faster delivery. Four questions tell you which one they need.</p>
<ul><li>Who will use it? If it is the client's own staff, a web app they open from a link is almost always enough. If it is the public, the store listing may matter.</li><li>What must it do that a website cannot? Features that depend on the phone itself are the real reasons to go native. &quot;It should have an icon&quot; is not one.</li><li>Do customers need to find it in a store? Some businesses get real value from being listed. Many will only ever send people a link, in which case the store is pure overhead.</li><li>Who will look after it in a year? If the answer is nobody, the simpler option is the responsible one.</li></ul>
<p>Telling a client they need the cheaper thing feels like leaving money on the table. It is the opposite. It is the moment they decide you are the person they trust with the budget, and when they do need the store version later, nobody else gets the call. The full question set is in [client discovery questions before you quote](/blog/client-discovery-questions-before-you-quote).</p>
<h2>The CCC Store-Ready Ladder: three tiers</h2>
<p>Present three tiers for the same app and let the client choose how far they want to go. The tiers are not more screens. They are how close the app gets to the public, and how much of what comes after you take on.</p>
<table><caption>The CCC Store-Ready Ladder</caption><thead><tr><th>Tier</th><th>What the client gets</th><th>How to price it</th></tr></thead><tbody><tr><td>Pilot</td><td>A working app with the core feature, running on the client's own phones and a small group of testers. Not listed publicly. One round of changes after they have used it for a week</td><td>A fixed fee sized against the one job the app does. The easiest yes, and the honest starting point when nobody is sure customers will use it</td></tr><tr><td>Store Launch</td><td>Everything in Pilot, plus the app finished to a public standard and published on one store: the listing text and screenshots, the privacy details the store asks for, the submission, and handling whatever the review sends back</td><td>The anchor tier. The fee covers the launch work as its own line, because a rejected submission is your time whether or not you planned for it</td></tr><tr><td>Launch and Run</td><td>Everything in Store Launch on both stores, plus a monthly plan: updates when phone software changes, fixes, store requirement changes, and a short monthly report</td><td>The build and launch fee plus a monthly fee. Priced like keeping a product alive, because that is what it is</td></tr></tbody></table>
<p>Most clients land on Store Launch once they see the table, and that is fine, provided the upkeep conversation still happens. If they decline the monthly plan, write down what that means: updates and fixes after the handover period are quoted separately. The three-tier shape is the same one I use in [how much to charge for an AI agent](/blog/how-much-to-charge-for-an-ai-agent); the tiers change, the logic does not.</p>
<h2>Store accounts and fees go on their own line, in the client's name</h2>
<p>The store accounts belong to the client, and so do the fees. The Apple Developer Program is 99 USD per membership year. Google Play charges a US$25 one-time registration fee for a developer account. Neither number is large. The reason they go on their own line is ownership, not cost.</p>
<ul><li>The client opens the accounts in their own legal name and adds you as a team member. If the app is published under your account, the client does not really own their own product, and you cannot walk away without taking it down.</li><li>Start the accounts on day one. Both stores ask for identity details before they let anyone publish, and that is time you do not control. It should never be the thing holding up the launch.</li><li>List the fees on the quote as paid by the client directly. You are not marking them up and you are not fronting them.</li><li>If the app sells anything through the store, tell the client that the stores take a commission on those sales and point them to the store's own current terms. Do not quote them a percentage from memory. That decision shapes their pricing, and it is theirs to make with the real numbers in front of them.</li></ul>
<p>Put the ownership in writing along with the fees. [What to put in an AI project contract](/blog/what-to-put-in-an-ai-project-contract) covers the clause, and [how to hand off a Claude Code project](/blog/how-to-hand-off-a-claude-code-project) covers what the client should hold at the end: the accounts, the code, and the logins for anything the app depends on.</p>
<h2>What moves a mobile app quote up or down</h2>
<ul><li>One store or two. Two listings means two accounts, two sets of store requirements and two submissions. Quote the second store as its own line so the client can defer it.</li><li>Accounts and logins. An app where people sign in needs sign-up, password reset, account deletion and somewhere safe to keep the data. It is never &quot;just a login&quot;.</li><li>Payments. Taking money inside an app brings the store's rules with it. Scope it as its own piece of work, and find out early which rules apply to what the client is selling.</li><li>Working without a signal. If the app has to work offline and catch up later, that is a meaningful jump in the build and the testing.</li><li>What it plugs into. An app that reads from the client's booking system or stock system is only as reliable as that connection. Every system it touches is a line.</li><li>Notifications. Sending alerts to people's phones needs setup on each store and a plan for who writes and sends them.</li><li>Design. A client with finished designs is a smaller quote than one who wants you to work out how it should look and feel.</li><li>Who owns the upkeep. If the client has someone technical, the monthly plan is lighter. If that someone is you, it is in the price. [How to price a maintenance retainer](/blog/how-to-price-a-maintenance-retainer) covers the number.</li></ul>
<h2>The mistakes that leave you maintaining an app for free</h2>
<ul><li>One number for &quot;the app&quot;. If launch and upkeep are not separate lines, the client assumes both are included, for good.</li><li>Publishing under your own developer account. It feels faster. It ties you to the app permanently and leaves the client without control of their own product.</li><li>Promising a launch date you do not control. You control the day you submit. The store controls the day it goes live. Quote a submission date and say so plainly.</li><li>Treating a store rejection as a surprise. Write into the quote that responding to review feedback is included, and how many rounds. [How many revisions to include in an AI project](/blog/how-many-revisions-to-include-in-an-ai-project) has the wording.</li><li>No upkeep plan and no written alternative. An app with no monthly plan and no stated rate for later fixes becomes an argument the first time a phone update breaks something.</li><li>Building for both stores before anyone has used it. Launch on one, learn what customers do with it, then add the second as a paid step.</li><li>Letting the feature list grow mid-build. Apps attract &quot;while you are in there&quot; requests. [How to handle scope creep on client projects](/blog/how-to-handle-scope-creep-on-client-projects) has the reply.</li><li>No deposit. [How much deposit to charge before an AI project](/blog/how-much-deposit-to-charge-before-an-ai-project) covers the number. An app is a multi-week commitment and gets paid like one.</li></ul>
<h2>How to present the mobile app number so it closes</h2>
<p>Lead with the job the app does for the business, then put the three tiers under it with the store fees and the monthly plan written out beside them. &quot;You said your regulars keep asking to rebook from their phones; here are three ways to give them that, depending on how public you want it on day one&quot; is a sentence a client can say yes to on the call. Send it as [a one-page proposal](/blog/one-page-ai-proposal-that-closes) with the job in one line, the tiers, the submission date, who owns the accounts, and what happens after launch. If they push on price, the answer is the Pilot tier, not a discount, and [the &quot;can you do it cheaper&quot; objection](/blog/can-you-do-it-cheaper-objection) has the words.</p>
<p>An app that is live and looked after is the best retainer you will sign, because the client sees it on their own phone every day. [How to turn a one-off client into a monthly retainer](/blog/how-to-turn-a-one-off-client-into-a-monthly-retainer) is what happens next. If you have not built one yet, [build a mobile app with Claude Code](/blog/build-a-mobile-app-with-claude-code) is the build side of this post.</p>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club, members share the app quotes they actually sent, how they split launch and upkeep, and what the stores sent back on review. It is $9 a month at https://www.skool.com/claudecodeclub/about, and it is the quickest way to see what real mobile app pricing looks like before you send your first number.</blockquote>
<h2>FAQ</h2>
<p><strong>How much should I charge for a mobile app?</strong></p><p>Price three things separately: the build, the store launch, and the upkeep. Quote the build and launch as a fixed fee in three tiers sized against what the app is worth to the client's business, and quote the upkeep as a monthly fee. Do not quote build hours.</p>
<p><strong>Who should pay for the Apple and Google developer accounts?</strong></p><p>The client, in their own legal name, with you added as a team member. The Apple Developer Program is 99 USD per membership year and Google Play has a US$25 one-time registration fee. Put both on their own line of the quote as paid by the client directly.</p>
<p><strong>Should I charge a monthly fee for a mobile app?</strong></p><p>Yes, or state in writing what happens without one. Phone software, screen sizes and store requirements keep changing, and an app that is never updated eventually breaks. The monthly fee pays for updates, fixes and store changes. If the client declines, write down that later work is quoted separately.</p>
<p><strong>Is a web app cheaper than a mobile app for a client?</strong></p><p>Usually, yes. A web app that works well on a phone needs no store account, no store review and no resubmission for every fix, so both the build and the upkeep are smaller. Go to the app stores when the app needs features that depend on the phone itself or when being listed in a store matters to the business.</p>
<p><strong>Should I quote iOS and Android together?</strong></p><p>Quote them as separate lines. Two stores means two accounts, two sets of requirements and two submissions. Launching on one store first, then adding the second as a paid step once customers are using the app, is the lower-risk path for most clients.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code Doctor: The Checkup I Run After Every Model Release (Plus the New Prompt Audit)</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-doctor</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-doctor</guid>
      <pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Workflows</category>
      <category>Building</category>
      <description><![CDATA[Claude Code doctor is the built-in checkup you start by typing /doctor. It checks your install, finds skills, MCP servers and plugins that cost context without earning it, flags slow hooks, trims a bloated CLAUDE.md, and asks before it changes anything. Since v2.1.283 it also has /doctor prompt-audit, which reads your instructions for rules written for older models. Here is what each check does, when I run it, and how to read the report in the desktop app.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Claude Code doctor is the /doctor command (alias /checkup). It checks installation health, finds skills, MCP servers and plugins that cost context without being used, flags slow hooks, checks for a newer version, and trims a checked-in CLAUDE.md. It reports first and asks before it changes anything.</li><li>/doctor prompt-audit is the new part. It needs Claude Code v2.1.283 or later and reads your CLAUDE.md files, rules, skills, commands, subagents and output styles for instructions written for older models, references to files that no longer exist, and files that contradict each other. You get proposed edits, and nothing changes until you say so.</li><li>The CCC Checkup Cadence: run /doctor after a new model ships, after you install or remove a batch of skills or MCP servers, whenever a session starts feeling slow, and once a month regardless. With Sonnet 5.5 out this week, now is the first of those.</li></ul>
<h2>What Claude Code doctor does</h2>
<p>Claude Code doctor is a built-in checkup you start by typing /doctor in a session (the alias is /checkup). It looks at your whole setup and tells you what is wrong or wasteful: duplicate or leftover installs, PATH problems, settings files that do not parse, skills and MCP servers and plugins that cost context without being used, hooks that are slow, and whether a newer version is out on your release channel. It also trims a checked-in CLAUDE.md by cutting content Claude could work out from the code itself. It reports its findings first and asks before it changes anything. Since Claude Code v2.1.283 there is a second mode, /doctor prompt-audit, that reads your instructions for rules written for older models and files that contradict each other.</p>
<p>I treat it the way I treat a service on a car. Nothing is broken today, but a Claude Code setup collects weight quietly. A skill you installed to try once. An MCP server for a client you finished in the spring. A CLAUDE.md that grew a paragraph every time something went wrong. None of it throws an error. It just makes every session a little slower and a little less focused, and you do not notice until the agent starts ignoring a rule you know is in there.</p>
<blockquote><strong>NOTE:</strong> This is the maintenance half of your setup. If you have not built the setup yet, start with [my day-one setup](/blog/claude-code-day-one-setup) and [the CLAUDE.md file](/blog/claude-code-claude-md-file), then come back here in a month.</blockquote>
<h2>How to run /doctor in the Claude Code desktop app</h2>
<p>In the desktop app, open a local session on the project you want checked, type / in the prompt box, and pick doctor from the list, or just type /doctor and send. /doctor is a bundled skill, which means it is a prompt handed to Claude rather than a terminal-only panel, so it runs in a desktop session the same way it runs anywhere else. Claude reads your setup, writes up what it found, and then asks which fixes you want applied.</p>
<ol><li>Open the project in a local session. The checkup looks at the project's own CLAUDE.md and .claude folder as well as your personal settings, so run it from the project, not from an empty folder.</li><li>Type /doctor and send. Let it finish before you reply. The report is the useful part.</li><li>Read the findings and answer the questions. It will ask before trimming a file, turning something off, or changing a setting.</li><li>Commit the changes to the project's CLAUDE.md and .claude folder in git, so a bad trim is one revert away. [How I use Claude Code with git](/blog/use-claude-code-with-git) covers the habit.</li></ol>
<p>If you also live in the terminal, there is a separate command, claude doctor, typed at the shell rather than inside a session. It prints read-only installation and settings diagnostics without starting a session. That is the one to reach for when Claude Code will not start at all. Everything else in this post is the in-session /doctor.</p>
<h2>The five things /doctor checks, and what to do with each</h2>
<p>The report groups into five kinds of finding. Each one points at a different problem, and each one has a clear right answer most of the time.</p>
<table><caption>What /doctor checks and how to act on it</caption><thead><tr><th>Check</th><th>What it finds</th><th>What I do with it</th></tr></thead><tbody><tr><td>Install health</td><td>Duplicate or leftover installs, PATH problems, settings files that do not parse, and whether a newer version is out on your release channel</td><td>Fix every one. A second install or a broken settings file causes the kind of bug that looks like Claude being unreliable when it is not</td></tr><tr><td>Unused skills, MCP servers and plugins</td><td>Things you have installed, weighed against their context cost and how often they get used</td><td>Turn off anything I have not used in a month. I can switch it back on in seconds if I miss it</td></tr><tr><td>Slow hooks</td><td>Hooks that take long enough to slow every action they run on</td><td>Keep only the hooks that [earn their keep](/blog/claude-code-hooks-that-earn-their-keep), and make the rest faster or remove them</td></tr><tr><td>CLAUDE.md size and duplication</td><td>Local CLAUDE.md files that repeat the checked-in one, and content in the checked-in file that Claude could derive from the code, such as directory layouts and dependency lists</td><td>Accept the trims, then read what is left. Pitfalls, reasons and conventions that differ from defaults should stay</td></tr><tr><td>Defaults</td><td>An offer to make auto mode your default, and to pre-approve read-only commands you keep denying</td><td>Decide on purpose. [Auto mode as the default](/blog/claude-code-auto-mode-default) is fine for most solo work; on client repos I think about it first</td></tr></tbody></table>
<p>The unused-extension check is the one that pays back fastest. Every skill in the skill listing adds to your context on every turn, whether Claude uses it or not. If you want the per-skill numbers on their own, /skill-doctor shows what each skill costs and how often it gets used. [What actually eats your limit](/blog/claude-code-token-usage) explains why this adds up over a long day.</p>
<h2>What /doctor prompt-audit does, and why it matters this week</h2>
<p>/doctor prompt-audit is a different job from the checkup. Instead of looking at your install, Claude reads your instructions: your CLAUDE.md, CLAUDE.local.md and AGENTS.md files, plus the rules, skills, commands, subagents and output styles under .claude in the project and in your home folder. It looks for three things: instructions written for older models, references to files or commands that no longer exist, and files that contradict each other. You get a report and a set of proposed edits, and nothing in your files changes until you ask Claude to apply them.</p>
<p>The timing is the point. Claude Sonnet 5.5 landed in Claude Code this week, a week after Opus 5.5, and a lot of the instructions people carry around were written to push an older model into behaving. Shouting in capitals, repeating the same rule three times, warning it not to be lazy. An instruction written to push an older model can land differently on a newer one, and instructions written for older models are exactly what the audit is built to flag. It is the fastest way I know to find those lines, because it reads every file at once and I do not have to remember where I put them. [The Sonnet 5.5 post](/blog/claude-sonnet-5-5) covers what changed in the model itself.</p>
<ul><li>Audit everything: type /doctor prompt-audit with no path.</li><li>Audit one thing: pass a path, for example /doctor prompt-audit .claude/skills/deploy, when you only changed one skill.</li><li>Check your version first. The audit needs Claude Code v2.1.283 or later. The desktop app updates itself on launch on macOS and Windows, and you can check by hand from the Claude menu, then Check for Updates. In the terminal, claude --version tells you where you are.</li><li>If the audit refuses to run, check whether you have turned off bundled skills. It runs through the bundled /claude-api skill, so it is unavailable when that skill is disabled in skillOverrides or with disableBundledSkills.</li></ul>
<h2>The CCC Checkup Cadence: when to run it</h2>
<p>The CCC Checkup Cadence is four triggers. Any one of them means run /doctor, and the first one also means run /doctor prompt-audit.</p>
<ol><li>A new model ships. Run the prompt audit on everything, read the proposed edits, and accept the ones that remove old coaching. Then run the normal checkup.</li><li>You installed or removed a batch of things. Three new MCP servers, a plugin, a folder of skills from a course. Run the checkup the same day so you see their context cost before you forget why you added them.</li><li>A session starts feeling slow or forgetful. Before you blame the model, run the checkup. Slow hooks, a crowded skill listing and an oversized CLAUDE.md all look like a slow or distracted agent from the outside. [Why Claude Code feels slow](/blog/why-is-claude-code-slow) covers the rest of that list.</li><li>It has been a month. Put it on the calendar, or better, make it a [scheduled task in the desktop app](/blog/claude-code-scheduled-tasks) that runs the checkup on the project and leaves the report for you to review.</li></ol>
<h2>How to read the CLAUDE.md trims without losing what matters</h2>
<p>The trim is the one finding I read line by line, because it deletes words I wrote. The rule it follows is sound: cut what Claude can derive from the codebase, like directory layouts, dependency lists and architecture overviews, and keep pitfalls, reasons, and conventions that differ from tool defaults. The official guidance is to keep each CLAUDE.md under 200 lines, because longer files use more context and get followed less reliably. Claude Code also warns at startup, and in /status, when a file is over that length.</p>
<p>Where I push back is on anything that records why. &quot;We use a queue here because the payment webhook times out&quot; looks like architecture, but it is a pitfall, and it stays. If the trim proposes cutting a line like that, say no and keep going. Instructions that only matter in one part of the code are better moved than cut: [path-scoped rules in .claude/rules](/blog/claude-code-rules-directory) load only when Claude works on matching files, and the checkup will offer to move always-loaded guidance into skills and nested CLAUDE.md files for exactly this reason.</p>
<h2>Run your first checkup today</h2>
<p>Open your busiest project in the desktop app, run /doctor prompt-audit, then /doctor, and commit whatever you accept. It takes a few minutes, it asks before it touches anything, and it is the cheapest way I know to get a setup back to the size it was when it worked best. If you want the finished shape of a clean setup to compare against, [CLAUDE.md templates by project type](/blog/claude-md-templates-by-project-type) and [context engineering](/blog/claude-code-context-engineering) are where I would look next.</p>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club, members post what their checkup and prompt audit flagged, which trims they accepted, and which ones they reverted. It is $9 a month at https://www.skool.com/claudecodeclub/about, and it is the fastest way to see what a lean setup looks like on real projects instead of guessing.</blockquote>
<h2>FAQ</h2>
<p><strong>What is Claude Code doctor?</strong></p><p>It is the /doctor command in Claude Code, also available as /checkup. It runs a setup checkup: install health, PATH problems, unparseable settings, unused skills, MCP servers and plugins weighed against their context cost, slow hooks, newer versions, and CLAUDE.md trims. It reports first and asks before changing anything.</p>
<p><strong>What is the difference between /doctor and claude doctor?</strong></p><p>/doctor runs inside a session and can fix what it finds after asking. claude doctor is typed at the terminal and prints read-only installation and settings diagnostics without starting a session, which makes it the right tool when Claude Code will not start.</p>
<p><strong>What does /doctor prompt-audit do?</strong></p><p>It has Claude read your CLAUDE.md, CLAUDE.local.md and AGENTS.md files plus the rules, skills, commands, subagents and output styles under .claude, and flag instructions written for older models, references to files or commands that no longer exist, and files that contradict each other. It proposes edits and changes nothing until you ask. It needs Claude Code v2.1.283 or later.</p>
<p><strong>Does /doctor work in the Claude Code desktop app?</strong></p><p>Yes. /doctor is a bundled skill, so you run it from the prompt box in a local desktop session by typing /doctor or picking it from the slash command list. The separate claude doctor command is terminal-only.</p>
<p><strong>How often should I run the Claude Code checkup?</strong></p><p>After a new model ships, after you install or remove a batch of skills or MCP servers, whenever sessions start feeling slow or forgetful, and once a month regardless. After a model release, run /doctor prompt-audit first.</p>]]></content:encoded>
    </item>
    <item>
      <title>How Much to Charge for an AI Agent (Price the Job It Takes Off Someone's Desk)</title>
      <link>https://www.claudecodeclub.ai/blog/how-much-to-charge-for-an-ai-agent</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/how-much-to-charge-for-an-ai-agent</guid>
      <pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Monetization</category>
      <category>Agency</category>
      <category>Freelancing</category>
      <description><![CDATA[How much to charge for an AI agent depends on the job it takes over and how much it is trusted to do alone, not on how long it takes to build. Price it like a role: a setup fee for the build, a monthly fee for supervising it, and model usage as its own line. Here is how an agent differs from a chatbot or an automation, the three tiers I quote, what moves the number, and the mistakes that turn an agent into an unpaid on-call job.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Price an AI agent like the role it fills, not the build. Find the job it takes off someone's desk, get the client to say what that job costs them now, and quote a setup fee plus a monthly fee that are an obvious fraction of it. Never quote build hours.</li><li>An agent is not a chatbot and not an automation. A chatbot answers. An automation follows fixed steps. An agent decides its own steps and takes actions across the client's tools, which is why supervision is part of the product and part of the price.</li><li>Quote three tiers by trust level: Assist (the agent drafts, a person approves every action), Operate (it acts alone inside written limits and escalates the rest), and Own (it runs a whole job end to end with a weekly review). Model usage is always its own line, passed through or capped, never buried in a flat fee.</li></ul>
<h2>How much to charge for an AI agent</h2>
<p>How much to charge for an AI agent comes down to two questions: what job does it take off someone's desk, and how much is it trusted to do without a person checking? The job sets the value. The trust level sets the tier. Quote a fixed setup fee for building it and a monthly fee for running and supervising it, both sized as an obvious fraction of what that job costs the client today, and put model usage on its own line. Do not quote build hours. With Claude Code, the first working version of an agent can come together fast, and a client who hears how fast will price it like a quick job, even when it is doing the work of part of a person.</p>
<p>This is the CCC Role Pricing Method, and it exists because agents are the offer where new builders get the shape of the price wrong, not just the number. They quote a one-off build like a website, hand it over, and then spend the next six months answering messages about why the agent did something odd on a Tuesday. An agent is closer to a hire than a deliverable. It needs a job description, limits, someone checking its work, and a budget for what it spends. Price all four, or you end up providing the last three for free.</p>
<blockquote><strong>NOTE:</strong> The fixed-fee logic under every number here is in [how to price a Claude Code agency project](/blog/how-to-price-a-claude-code-agency-project). If the client actually wants something that answers questions, that is [a chatbot](/blog/how-much-to-charge-for-a-chatbot); if it is a fixed sequence of steps, that is [an AI automation](/blog/how-much-to-charge-for-an-ai-automation). Both are simpler to price, and worth checking before you quote an agent.</blockquote>
<h2>An agent is not a chatbot or an automation, and the price shows it</h2>
<p>The difference is who decides the steps. A chatbot answers questions from a fixed source. An automation runs the same steps every time: when a form comes in, add a row, send an email. An agent is given a goal and decides the steps itself, reading, choosing a tool, taking an action, checking the result, and going again. That is what makes an agent valuable, and it is also what makes it riskier, because it can take an action nobody wrote down in advance.</p>
<table><caption>Chatbot, automation, or agent</caption><thead><tr><th></th><th>Chatbot</th><th>Automation</th><th>Agent</th></tr></thead><tbody><tr><td>What it does</td><td>Answers questions</td><td>Runs fixed steps</td><td>Decides its own steps and takes actions</td></tr><tr><td>What it touches</td><td>A knowledge source, sometimes one system</td><td>The systems in its recipe</td><td>Any tool it has been given access to</td></tr><tr><td>What goes wrong</td><td>A wrong answer</td><td>A broken step when an app changes</td><td>A wrong action taken with real access</td></tr><tr><td>What you price</td><td>The tier of what it is wired into</td><td>The hours it removes</td><td>The job it does and the trust it is given</td></tr></tbody></table>
<p>Say this out loud on the call. Plenty of clients ask for &quot;an agent&quot; when they need an automation, and the automation is cheaper, safer and faster to deliver. Telling them so is the fastest way to be trusted with the agent they will want next year.</p>
<h2>Write the job description before you write a number</h2>
<p>You cannot price an agent until you can describe its job the way you would describe a role you were hiring for. Five questions get you there, and the client should answer each one in their own words.</p>
<ul><li>What is the job? One sentence: triage the support inbox and resolve the routine tickets, qualify inbound leads and book the good ones, reconcile the weekly orders against the invoices. If it takes a paragraph, it is two agents.</li><li>Who does it now, and how much of their week does it take? Let the client say it. That person's time is the number your quote sits next to.</li><li>What is it allowed to do alone? Read only, draft for approval, or take the action. This answer picks the tier.</li><li>What must it never do? Refund above an amount, email a customer about legal matters, delete anything. These become written limits, and the limits are part of the deliverable.</li><li>Who checks its work, and how often? If the answer is nobody, the honest quote includes you doing it, or the agent stays in the lowest tier.</li></ul>
<p>Say the job description back before you quote. &quot;So the agent handles the routine support tickets your two coordinators spend most of their mornings on, it can close a ticket alone but cannot issue refunds, and your ops lead reviews its log on Fridays&quot; is a sentence the client has to agree with. Once they have, your price is a fraction of a number they already accepted. The full question set is in [client discovery questions before you quote](/blog/client-discovery-questions-before-you-quote).</p>
<h2>The CCC Agent Price Ladder: three tiers by trust</h2>
<p>Present three tiers for the same job, and let the client choose how much they want the agent to do alone. The tiers are not more features. They are more trust, with more limits, logging and review built to earn it.</p>
<table><caption>The CCC Agent Price Ladder</caption><thead><tr><th>Tier</th><th>What the client gets</th><th>How to price it</th></tr></thead><tbody><tr><td>Assist</td><td>The agent does the work up to the action and stops: drafts the reply, prepares the booking, fills the record. A person approves each one with a click. Every action is logged</td><td>A setup fee that is a clear fraction of the job's cost, plus a modest monthly fee. The safest first step, and the easiest yes</td></tr><tr><td>Operate</td><td>Everything in Assist, plus the agent acts alone on the routine cases inside written limits and sends everything else to a person. A weekly review of its log with you, and a written list of what it may and may not do</td><td>The anchor tier. The monthly fee is priced against the hours it now saves outright, because nobody is approving every action anymore</td></tr><tr><td>Own</td><td>Everything in Operate, plus the agent runs the whole job end to end, including handing work to other tools or agents, with an agreed exception path and a monthly report on what it did, what it escalated and what it cost</td><td>Priced like the part of a role it replaces. This is the retainer, because someone has to own the limits as the business changes</td></tr></tbody></table>
<p>Most clients land on Operate once they see the table, because Assist still keeps a person clicking all day and Own asks for a level of trust they have not built yet. That is fine. Start them there, show them the log for two months, and the move to Own becomes their idea. The three-tier shape is the same one in [how much to charge for an MVP](/blog/how-much-to-charge-for-an-mvp) and [how much to charge for an AI workshop](/blog/how-much-to-charge-for-an-ai-workshop); the tiers change, the logic does not.</p>
<h2>Put model usage on its own line</h2>
<p>An agent spends money every time it works, and that spend moves with volume you do not control. Models are billed by usage. Claude Sonnet 5.5, for example, is priced at $2 per million input tokens and $10 per million output tokens on the Anthropic API. A busy month for the client is a busy month for the agent, and if usage is buried inside a flat monthly fee, their best month is your worst one.</p>
<ul><li>Best: the agent runs on the client's own API account, and they pay usage directly. You never carry the bill, and the key never leaves their control.</li><li>Next best: you pass usage through at cost with a small handling margin, invoiced monthly with the numbers attached.</li><li>If they insist on one flat fee: include a stated usage allowance and a written overage rate, and set a hard spend cap on the account so a runaway loop cannot become a surprise.</li></ul>
<p>Whichever you choose, set a spend limit before the agent goes live and tell the client what it is. An agent with real access and no ceiling is the one thing in this business that can cost a client money overnight. [Is Claude Code safe for client work](/blog/is-claude-code-safe-for-client-work) covers how I explain access and limits to a client, and [what to put in an AI project contract](/blog/what-to-put-in-an-ai-project-contract) covers the clause that makes the usage line binding.</p>
<h2>What moves an agent quote up or down</h2>
<ul><li>The access it needs. Read-only access to one inbox is a small line. Write access to billing, a CRM and customer email is a large one, because every system it can change needs its own limits and its own tests.</li><li>The cost of a wrong action. An agent that can send a refund or email a customer needs approval paths, logging and a way to stop it. The more a mistake costs, the more of the price is the guardrails, and that is correct.</li><li>Volume. Ten cases a day and a thousand are different agents. Volume changes usage, review time and how carefully the exception path has to be built.</li><li>How messy the inputs are. Clean forms are cheap. Free-text emails in three languages with attachments are not.</li><li>Who reviews it. If the client has someone to read the log, the monthly fee is lighter. If that someone is you, it is in the price.</li><li>Handover. If the client wants to own and change the agent themselves later, the documentation and training are their own line. [How to hand off a Claude Code project](/blog/how-to-hand-off-a-claude-code-project) covers what that includes.</li></ul>
<h2>The mistakes that turn an agent into an unpaid on-call job</h2>
<ul><li>Selling it as a one-off build. An agent with no monthly fee is an agent you support for free. The monthly fee is for supervision and limits, not for hosting.</li><li>Unlimited usage in a flat fee. The client's growth becomes your cost. Usage goes on its own line, every time.</li><li>No written limits. If what the agent may not do is not written down, every odd action becomes an argument about whose fault it was.</li><li>No log. If you cannot show what it did and why, you cannot defend it, improve it, or move the client up a tier.</li><li>No off switch. Agree how the agent gets paused and who can do it before it goes live, not after it does something at 2am.</li><li>Starting at Own. Full autonomy on day one means the first mistake happens with nobody watching. Start at Assist or Operate and let the log earn the upgrade.</li><li>No deposit. [How much deposit to charge before an AI project](/blog/how-much-deposit-to-charge-before-an-ai-project) covers the number. The setup fee is a real project and gets paid like one.</li></ul>
<h2>How to present the agent number so it closes</h2>
<p>Lead with the job description you agreed on, then put the three tiers under it, with the usage line and the spend cap written out beside them. &quot;You said the routine tickets take most of your coordinators' mornings; here are three ways to hand that job to an agent, depending on how much you want it doing alone&quot; is a sentence a client can say yes to on the call. Send it as [a one-page proposal](/blog/one-page-ai-proposal-that-closes) with the job in one line, the limits, the review rhythm, and the setup and monthly fees. If they push on price, the answer is the Assist tier, not a discount, and [the &quot;can you do it cheaper&quot; objection](/blog/can-you-do-it-cheaper-objection) has the words.</p>
<p>The agent that works becomes the client's favourite thing you have built, and the log you have been sending them every month is the best case study you will ever have. [How to turn a one-off client into a monthly retainer](/blog/how-to-turn-a-one-off-client-into-a-monthly-retainer) is what happens next, and usually the next job is a second agent.</p>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club, members share the agent quotes they actually sent, the limits they wrote, and how they set up usage billing with clients. It is $9 a month at https://www.skool.com/claudecodeclub/about, and it is the quickest way to see what real agent pricing looks like before you send your first number.</blockquote>
<h2>FAQ</h2>
<p><strong>How much should I charge for an AI agent?</strong></p><p>Price it against the job it takes off someone's desk, not your build hours. Get the client to say what that job costs them now, then quote a fixed setup fee and a monthly fee that are an obvious fraction of it, in three tiers by trust: Assist, Operate, and Own. Put model usage on its own line.</p>
<p><strong>What is the difference between an AI agent and an AI automation for pricing?</strong></p><p>An automation follows fixed steps, so you price the hours it removes. An agent decides its own steps and takes actions with real access, so you also price the limits, logging and supervision that make that safe. That is why an agent always carries a monthly fee.</p>
<p><strong>Should AI agent pricing include the model usage costs?</strong></p><p>Keep usage separate. Models are billed by usage, and a busy month for the client means more usage. The best setup is the agent running on the client's own API account; the next best is passing usage through at cost with a small margin. If you must include it, state an allowance, an overage rate, and a hard spend cap.</p>
<p><strong>Should I charge a monthly fee for an AI agent?</strong></p><p>Yes. The monthly fee pays for reviewing the agent's log, adjusting its limits as the business changes, and fixing what breaks when connected tools change. Without it, you are supporting the agent for free.</p>
<p><strong>Which tier should a new AI agent client start on?</strong></p><p>Assist or Operate. Assist has a person approve every action, which is the easiest yes. Operate lets the agent handle routine cases alone inside written limits. Move to Own only after a couple of months of logs show it can be trusted with the whole job.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code Computer Use: What I Let Claude Click on My Mac (and What It Will Not)</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-computer-use</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-computer-use</guid>
      <pubDate>Mon, 28 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Workflows</category>
      <category>Building</category>
      <description><![CDATA[Claude Code computer use lets Claude open your apps, see your screen, click, type, and drag, the way you would, from inside the desktop app. It is off by default, needs a Pro or Max plan, and every app gets approved per session with a fixed level of control: browsers are view-only, terminals are click-only, everything else is full control. Here is how I switched it on, what it caught on a native build that nothing else could reach, which apps I refuse to approve, and the order Claude tries other tools before it touches your screen.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Claude Code computer use is a research preview in the desktop app on macOS and Windows for Pro and Max plans. It is off until you turn it on under Settings, General, Desktop app, and on a Mac you also grant Accessibility and Screen Recording. Then Claude can open apps, read the screen, click, type, and drag.</li><li>Claude reaches for it last. A connector, a shell command, the Claude in Chrome extension, and the iOS Simulator pane all come first. Screen control is reserved for native apps and tools with no API, which is also where it earns its keep.</li><li>Every app is approved per session, and the level of control is fixed by category: browsers and trading platforms are view-only, terminals and IDEs are click-only, everything else is full control. The CCC Blast-Radius Rule decides what I approve: only apps where the worst click is something I can undo in a minute.</li></ul>
<h2>Claude Code Computer Use</h2>
<p>Claude Code computer use lets Claude open the apps on your machine, see your screen, and click, type, scroll, and drag the way you would. In the desktop app it is a research preview on macOS and Windows, it needs a Pro or Max plan, and it is off by default. You turn it on under Settings, General, in the Desktop app section, and on a Mac you grant two system permissions, Accessibility and Screen Recording, before the toggle takes effect. After that, the first time Claude needs a specific app in a session, it asks, and you click Allow for this session or Deny. It is not the Browser pane and it is not the Chrome extension. Those handle web pages. Computer use is for everything that has no web page, no command line, and no API: a native Mac app, a design tool's export dialog, a simulator, a settings window.</p>
<p>I turned it on the week I needed Claude to test a small native utility I had it build for the club's publishing queue, an app with no browser surface at all. Below is what it did, what it asked for, what I said no to, and the order Claude tries other tools before it touches the screen. That order is the most useful thing on this page, because it is why computer use is rarely the tool you end up using and always the one you are glad exists.</p>
<blockquote><strong>NOTE:</strong> This post assumes [the Claude Code desktop app](/blog/claude-code-desktop-app). The terminal version has computer use too, macOS only, enabled by switching on the built-in computer-use server in /mcp, and it shares the same engine. If your job is testing a web app, stop here and read [Claude Code browser](/blog/claude-code-browser) instead; that is the right tool and it needs none of this.</blockquote>
<h2>The CCC Last-Resort Ladder: what Claude tries before it touches your screen</h2>
<p>Computer use is the broadest tool Claude has and the slowest, because every step is a screenshot, a look, and a click. So Claude tries the most precise tool first and only falls through to screen control when nothing else reaches the task. I call the order the CCC Last-Resort Ladder, and if you learn nothing else here, learn this, because it explains most of the moments where you enable computer use and then watch Claude not use it.</p>
<ol><li>A connector. If the service has one, GitHub, Slack, Linear, or an MCP server you added, Claude uses that. Structured, fast, no screenshots.</li><li>A shell command. If the task is a build, a test run, a file operation, Claude uses Bash. The sandboxed one.</li><li>The Claude in Chrome extension. If the task is browser work and you have the extension set up, Claude drives your real browser as you.</li><li>The iOS Simulator pane. If the task is running or testing an iOS app, the desktop app opens its dedicated simulator pane, which works without computer use switched on at all.</li><li>Computer use. Only if none of the above apply. Native apps, hardware control panels, proprietary tools with no API.</li></ol>
<p>The per-app tiers, covered next, reinforce the ladder on purpose. Browsers are capped at view-only and terminals at click-only even when computer use is on, so Claude is steered back to the Browser pane or the sandboxed shell rather than clicking around in a Chrome window. My first real prompt after enabling it was to check a page in the club site, and Claude told me it would rather do that in the Browser pane. It was right. [Claude Code skills vs MCP servers](/blog/claude-code-skills-vs-mcp-servers) is the same instinct one rung up: give Claude the precise tool and it stops needing the blunt one.</p>
<h2>How to turn on Claude Code computer use in the desktop app</h2>
<ol><li>Update the desktop app first. The toggle only appears on a current build; download or update from claude.com/download, then restart.</li><li>Open Settings, General, and find Computer use under the Desktop app section. Turn it on. On Windows that is the whole setup. If you do not see the toggle, check that you are on macOS or Windows with a Pro or Max plan; it is not available on Team or Enterprise plans.</li><li>On a Mac, grant Accessibility, which lets Claude click, type, and scroll, and Screen Recording, which lets Claude see the screen. The Settings page shows the status of each, and clicking a denied badge opens the right System Settings pane.</li><li>Leave the desktop app running. Computer use needs it open, which matters if you are used to closing it and working from the terminal.</li><li>Ask for something only the GUI can do. If you ask while it is still off, Claude tells you it could do the task if you enabled computer use, which is a decent way to find out whether a task actually needs it.</li></ol>
<p>Two settings live next to the toggle and both are worth setting on day one. Denied apps is a list of apps Claude will never be allowed to control, rejected without a prompt; mine has my password manager and my banking app in it. Unhide apps when Claude finishes controls whether the windows Claude hid while it worked come back on their own. More on the hiding below.</p>
<h2>App permissions: three fixed tiers and a prompt per session</h2>
<p>Enabling computer use does not hand Claude the whole machine. The first time Claude needs a given app in a session, a prompt appears in the chat naming the app, any extra access it wants such as the clipboard, and the level of control that app category gets. You click Allow for this session or Deny. Approvals last for that session and then expire; in sessions started from Dispatch on your phone they expire after 30 minutes and re-prompt. The tiers are fixed by category and you cannot raise them.</p>
<table><caption>Computer use control tiers, per Anthropic's Claude Code desktop docs</caption><thead><tr><th>Tier</th><th>What Claude can do</th><th>Applies to</th></tr></thead><tbody><tr><td>View only</td><td>See the app in screenshots</td><td>Browsers, trading platforms</td></tr><tr><td>Click only</td><td>Click and scroll, but not type or use keyboard shortcuts</td><td>Terminals, IDEs</td></tr><tr><td>Full control</td><td>Click, type, drag, and use keyboard shortcuts</td><td>Everything else</td></tr></tbody></table>
<p>Apps with broad reach show an extra warning in the prompt. Terminals are flagged because approving one is equivalent to shell access. Finder on a Mac, or File Explorer on Windows, can read or write any file. System Settings can change the system. None of these are blocked; the warning is there so you decide whether the task justifies it. One catch to know: a denied app can still be affected indirectly by an action in an allowed app, so the denied list is a wall around direct control, not a wall around outcomes.</p>
<blockquote><strong>TIP:</strong> The CCC Blast-Radius Rule is the only approval policy I need: approve an app only if the worst thing a wrong click could do inside it is something I can undo in about a minute. A build I am testing, a design tool with version history, a simulator: yes. Finder, System Settings, anything with a Send or Pay button: no, and it goes on the denied list so I am never asked mid-task. [Claude Code permissions explained](/blog/claude-code-permissions-explained) covers the modes the Bash and file tools run under; computer use sits outside those and this rule is its equivalent.</blockquote>
<h2>What computer use caught on a real native build</h2>
<p>The utility I mentioned is a small menu bar app that watches the club's publishing queue and shows a count. Claude wrote it, compiled it, and, once computer use was on, launched it and clicked through it before telling me it was done. That is the part I could not get any other way: there was no page for the Browser pane to load and no test harness worth writing for an app this small. It opened the preferences window, changed the refresh interval, and reported that the label updated. Then it found the thing I would have shipped. At the default window size, the Save button in that preferences window sat below the visible area, so the interval could be changed and never saved. Claude resized the window to reproduce it, screenshotted the clipped state, fixed the layout, and re-ran the check.</p>
<p>A few things about how it works on screen are worth knowing before you rely on it. While Claude is controlling the screen it hides your other windows so it only interacts with the app you approved, and restores them when the turn ends, unless you turned that setting off. On macOS there is also a background mode where Claude works in the approved apps while you keep using the machine. Screenshots are downscaled automatically before they reach the model, so you do not have to lower your display resolution on a Retina screen; if Claude cannot read small text, make the text bigger in the app, not the screen smaller. And the documented emergency stop in the terminal version is the Esc key, which aborts the current action from anywhere and is consumed so nothing on screen can use it to dismiss a dialog.</p>
<p>The cost is time and tokens. A screenshot-look-click loop is slower than a shell command by a wide margin, so I do not leave computer use running on a long session where nothing native changes. [Claude Code context management](/blog/claude-code-context-management) covers why screenshots in the context window add up, and [how to debug with Claude Code](/blog/how-to-debug-with-claude-code) is where I send people once computer use has shown them the failing state, because from there it is ordinary debugging.</p>
<h2>The trust boundary is different from the sandbox, and that is the whole risk</h2>
<p>The sandboxed Bash tool runs commands in an isolated environment. Computer use does not. It runs on your actual desktop with access to whatever you approve. Claude checks each action and flags potential prompt injection from on-screen content, but the boundary is a different shape, and the guardrails are the tiers, the per-session prompt, the sentinel warnings, the denied list, and the fact that in the terminal version Claude never sees its own terminal window in a screenshot, so a prompt inside your session cannot feed back into the model. Those are real, and I still treat computer use as the one Claude Code feature where my judgment is the main safety control rather than a backup.</p>
<p>Practically, that means three habits. I only approve the app the task is about. I never run computer use on a machine that is signed into a client's systems, which is the same line I draw in [is Claude Code safe for client work](/blog/is-claude-code-safe-for-client-work). And I keep the Browser pane and the Chrome extension set up so Claude has somewhere better to go for anything web-shaped, which the ladder above then enforces for me. [Claude Code's sandbox, explained](/blog/claude-code-sandbox-explained) is the other half of this picture: what the Bash tool isolates, and the short list of things it was never meant to cover, computer use being one of them.</p>
<h2>What computer use will not do, and what to reach for instead</h2>
<ul><li>Type into a browser or a terminal. Browsers are view-only and terminals are click-only, by design. Use the Browser pane or the Chrome extension for the web, and let the sandboxed shell run commands.</li><li>Test an iOS app by clicking the simulator. In the desktop app that request opens the iOS Simulator pane, which does not use screen control and does not need computer use enabled. [How to build a mobile app with Claude Code](/blog/build-a-mobile-app-with-claude-code) is where that pane earns its keep.</li><li>Run on Team or Enterprise plans, through a third-party provider like Bedrock or Foundry, or in non-interactive mode with the -p flag. It is a Pro and Max research preview signed in through claude.ai.</li><li>Control an app on the denied list, or control any app without asking once per session. If you want fewer prompts, that is what a connector or an MCP server is for; [what are MCP servers and why they matter](/blog/what-are-mcp-servers-and-why-they-matter) explains the trade.</li></ul>
<h2>Turn it on, approve one app, and watch what Claude does first</h2>
<p>Enable it, set the denied list before you run anything, then give Claude a task that genuinely has no other route: a native build to click through, a GUI-only export, a settings window to verify. Watch the first prompt, approve exactly one app, and read what it reports. You will learn in ten minutes whether computer use belongs in your workflow, and the answer for most builders is: rarely, and when it does, nothing else will do.</p>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club, members post their denied-app lists, the native builds they let Claude click through, and the prompts that made Claude fall back to the Browser pane instead. It is $9 a month at https://www.skool.com/claudecodeclub/about, and once Claude can test the native side of a build, [Claude Code scheduled tasks](/blog/claude-code-scheduled-tasks) is how I make the checks run without me.</blockquote>
<h2>FAQ</h2>
<p><strong>What is Claude Code computer use?</strong></p><p>A research preview in the Claude desktop app, on macOS and Windows, that lets Claude open your apps, see your screen, and click, type, scroll, and drag the way you would. It is for tasks with no command line, web page, or API, such as native apps, simulators, and GUI-only tools. It needs a Pro or Max plan and is off until you enable it in Settings.</p>
<p><strong>How do I enable computer use in Claude Code?</strong></p><p>In the desktop app, open Settings, General, and turn on the Computer use toggle under the Desktop app section. On Windows that completes setup. On macOS, also grant Accessibility and Screen Recording in System Settings; the Settings page shows the status of each. In the terminal version, run /mcp and enable the built-in computer-use server, macOS only.</p>
<p><strong>Is Claude Code computer use safe?</strong></p><p>It runs on your real desktop, not in the sandbox, so the trust boundary is different from the Bash tool. The guardrails are per-app approval each session, fixed control tiers that cap browsers at view-only and terminals at click-only, warnings on apps with broad reach like Finder and System Settings, a denied-apps list, and action checks that flag potential prompt injection from on-screen content. Approve only the app the task needs.</p>
<p><strong>Why is Claude not using computer use even though I enabled it?</strong></p><p>Claude tries more precise tools first: a connector or MCP server, a shell command, the Claude in Chrome extension, and the iOS Simulator pane. Screen control is the fallback for tasks none of those reach. If the job is a web page, Claude will prefer the Browser pane or the extension, and browsers are view-only under computer use anyway.</p>
<p><strong>Does Claude Code computer use work on Team or Enterprise plans?</strong></p><p>No. The docs list it as a Pro and Max research preview. It is also not available through third-party providers such as Amazon Bedrock, Google Cloud's Agent Platform, or Microsoft Foundry, or in non-interactive mode with the -p flag.</p>]]></content:encoded>
    </item>
    <item>
      <title>How Much to Charge for an AI Workshop (Price the Change, Not the Day)</title>
      <link>https://www.claudecodeclub.ai/blog/how-much-to-charge-for-an-ai-workshop</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/how-much-to-charge-for-an-ai-workshop</guid>
      <pubDate>Mon, 28 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Monetization</category>
      <category>Agency</category>
      <category>Freelancing</category>
      <description><![CDATA[How much to charge for an AI workshop depends on what the team does differently on Monday, not on how many hours you stand at the front of the room. A company books a Claude Code workshop because a specific piece of work is slow, and they want their own people doing it faster. That change has a value, and the workshop is priced as a fixed fee against it, in three tiers built around one workflow the team leaves with running. Here is the method, the tiers, what moves the number, and the mistakes that turn a paid workshop into a free lunch-and-learn.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Price an AI workshop against the change it produces: one named workflow the team does with Claude Code after the session that they did by hand before. Get the client to say what that workflow costs them now, then quote a fixed fee that is an obvious fraction of it. Never quote a day rate.</li><li>Define the workshop on paper as one workflow out the door: the team arrives with a task they do by hand and leaves with it running in the Claude Code desktop app on their own machines. Everything else is a second workshop or a retainer.</li><li>Quote three tiers: Session (one workflow, one group, one sitting), Sprint (Session plus pre-work on their real files and two weeks of follow-up), and Rollout (Sprint plus a setup of their shared instructions and a second session for the next team). The Rollout tier is where the retainer starts.</li></ul>
<h2>How much to charge for an AI workshop</h2>
<p>How much to charge for an AI workshop comes down to one question: what will this team do differently the week after, and what is that worth to the business? Nobody books a workshop because they want a workshop. They book it because a piece of work is slow, a manager has seen what Claude Code can do, and they want their own people doing it. That change has a price the client can already feel, in the hours a task takes or the backlog it creates. Quote a fixed fee that is an obvious fraction of that number, built around one workflow the team leaves with running, in three tiers. Do not quote a day rate. The moment you say &quot;a full day is this much,&quot; you have told the client your ceiling and invited them to ask for a half day.</p>
<p>This is the CCC Change-Value Method, and it exists because the workshop is the offer that new Claude Code builders underprice the most. It feels like teaching, teaching feels like a day rate, and the day rate feels like it should be modest because you are not shipping code. But a room of people who go back to their desks and run one workflow with Claude Code every day is worth more to that company than most of the builds you will sell them, and the workshop is also the cheapest possible way for a company to find out whether it wants you on retainer. Price it like the front door it is.</p>
<blockquote><strong>NOTE:</strong> This is the pricing half. The fixed-fee logic under every number here is in [how to price a Claude Code agency project](/blog/how-to-price-a-claude-code-agency-project), and the argument for never selling time is in [why I stopped charging hourly for AI builds](/blog/stopped-charging-hourly-for-ai-builds). The curriculum half, what to actually teach, is what the club's classroom is for.</blockquote>
<h2>Find out what the team has to do differently before you say a number</h2>
<p>You cannot price a workshop until you know what it is meant to change, so the first call is a measurement, not a pitch. Five questions get you there, in this order, because each one makes the next easier to answer honestly.</p>
<ul><li>What is the task you want this team doing with Claude Code by the end? Writing the internal tools they currently request from engineering, cleaning the weekly report, drafting the client proposals. If the answer is &quot;using AI,&quot; the workshop is not defined yet and the price has to include defining it.</li><li>How do they do it now, and what does that cost? Let the client say it. A task that takes someone most of a day each week has a cost in that person's salary, and the client knows it. Your quote is going to sit next to that number.</li><li>Who is in the room, and are they all doing the same job? Ten people who share one workflow is a workshop. Ten people from four departments is four workshops, and the price should say so.</li><li>What do they already have? Whether everyone has a Claude plan that includes Claude Code, whether the desktop app is installed, and whether anyone on the team has used it changes the day completely. The [day-one setup](/blog/claude-code-day-one-setup) is either pre-work or the first hour of your session, and it is priced either way.</li><li>What happens on Monday? Who checks that people are actually using it, and what does the manager want to see in a month? If nobody owns this, the workshop will evaporate, and the honest quote includes the follow-up that stops that.</li></ul>
<p>Say the answers back before you quote. &quot;So the goal is that the ops team builds their own reporting scripts in Claude Code instead of waiting on engineering, and that wait is currently costing you roughly this a month&quot; is a sentence the client has to agree with, and once they have, your price is a fraction of a number they already accepted. The full question set I run on every deal is in [client discovery questions before you quote](/blog/client-discovery-questions-before-you-quote).</p>
<h2>Define the workshop as one workflow out the door, or it becomes a demo</h2>
<p>The CCC One-Workflow Rule: an AI workshop is one team, one task they do by hand today, and by the end of the session that task is running in the Claude Code desktop app on their own machines with their own files. That sentence is the scope. If the client cannot name the task, the workshop is not ready to be booked, and the price should cover the discovery that gets it there. If they can, everything outside that sentence is a second session, priced as one, and written on the proposal as a second session so nobody is surprised.</p>
<p>This rule is what makes the fixed fee safe, and it is also what makes the workshop work. A session that tours every Claude Code feature produces a room of impressed people who change nothing. A session where each person leaves with the desktop app open, a project folder set up, and one real task done in it produces a habit. Teach the desktop app, keep the terminal optional, and make the last hour hands-on with their actual work. [How to sell AI builds to non-technical clients](/blog/sell-ai-to-non-technical-clients) has the language for the room; the same rule applies to the manager who booked it.</p>
<h2>The CCC Workshop Price Ladder: three tiers</h2>
<p>Present three tiers, all built around the same workflow, and let the client pick how much change they want guaranteed. The bottom tier is for a manager who wants their team to see it work. The middle is for a manager who wants their team to keep doing it. The top is for a company that has already decided and wants the next team queued up.</p>
<table><caption>The CCC Workshop Price Ladder</caption><thead><tr><th>Tier</th><th>What the client gets</th><th>How to price it</th></tr></thead><tbody><tr><td>Session</td><td>One group, one sitting, one workflow. Setup check at the start, the workflow built live on their files, every person leaving with it running. A recording and a one-page recap</td><td>A fixed fee that is a small, obvious fraction of what the workflow costs them today. Priced so a manager can approve it without a second meeting</td></tr><tr><td>Sprint</td><td>Everything in Session, plus pre-work: you get their real files and processes a week before and build the workflow so the day starts from something that works. Plus two weeks of follow-up, a short office-hours call and a shared channel for the questions that only appear once they are using it</td><td>The anchor tier. Priced against the workflow sticking, not the session happening. Most clients land here once they see the difference is the follow-up</td></tr><tr><td>Rollout</td><td>Everything in Sprint, plus a setup of the team's shared Claude Code instructions and project templates so every new session starts the same way, and a second Session for the next team. A handover of the material at the end</td><td>Priced for the company that has already decided. This tier is what becomes the retainer, because someone has to maintain those shared instructions as the work changes</td></tr></tbody></table>
<p>The middle tier wins because of the follow-up. A session proves that Claude Code can do the task. Two weeks of questions and a working setup on everyone's machine proves that this team will keep doing it, and that is the change the manager is actually buying. Put the difference in the table and they will choose it themselves. The three-tier shape is the same one in [how much to charge for a chatbot](/blog/how-much-to-charge-for-a-chatbot), [how much to charge for an AI automation](/blog/how-much-to-charge-for-an-ai-automation), and [how much to charge for an MVP](/blog/how-much-to-charge-for-an-mvp); the tiers change, the logic does not.</p>
<h2>What moves a workshop quote up or down</h2>
<ul><li>Seats. More people means more hands-on time and more setup problems on the day. Price by group, with a cap, and quote a second group as a second session rather than squeezing thirty people into a room built for twelve.</li><li>Pre-work on their real material. Building the workflow on the client's own files before the day is the single thing that separates a demo from a change, and it is priced as work, because it is. If they cannot share files in advance, say so on the quote and price the Session tier only.</li><li>Setup state. A team with plans, the desktop app installed, and a shared folder ready is a workshop. A team with none of that is a setup engagement plus a workshop, and the setup has its own line. [Claude Code desktop app](/blog/claude-code-desktop-app) is what I send the client's IT contact a week before, so that line is as small as possible.</li><li>On-site or remote. Travel is a line item, never absorbed. Remote sessions are shorter and more of them, and the price reflects the format, not the location.</li><li>Who is in the room. Practitioners want the workflow. Leadership wants to know what to ask for and what it costs; that is a different, shorter session with a different price, and putting both groups in one room serves neither.</li><li>Recording and material rights. If the client wants to reuse your recording and slides internally for people who were not there, that is a licence, and it is priced separately from the day.</li><li>The follow-up window. Two weeks is the default. A month, or a second office-hours call, moves the Sprint price up, and it is worth it to the client because that is where the habit forms.</li><li>Whether it feeds a build. If the workshop is the discovery for a project you will then quote, price it like [paid discovery](/blog/paid-discovery-phase-ai-projects), and say on the proposal that the fee is credited if they go ahead.</li></ul>
<h2>The mistakes that turn a paid workshop into a free lunch-and-learn</h2>
<ul><li>Quoting a day rate. &quot;A full day is this much&quot; becomes the ceiling and the half-day request arrives within the hour. Talk about the workflow and the change, nothing else.</li><li>Doing the first one free to &quot;show value.&quot; A free session is a demo, and the company will treat the next one like a demo too. If you want a low-risk way in, sell the Session tier small, not free; [the &quot;can you do it cheaper&quot; objection](/blog/can-you-do-it-cheaper-objection) has the words.</li><li>No pre-work. If the first hour is people installing the desktop app and finding their login, you have sold a setup session at workshop prices and delivered a bad one. Send the setup a week ahead, and check it.</li><li>Touring features instead of doing the task. The room applauds, nobody changes. One workflow, on their files, running on their machines, or it did not happen.</li><li>Letting the follow-up become free consulting. Two weeks of questions about the workflow is included. A new workflow, a build request, or a second team is a new line, and the retainer conversation, not a favour.</li><li>Handing over the material without a licence. Your slides and recording are the product a second time. Price the internal reuse, or keep it.</li><li>No deposit. A workshop is a date on a calendar and a room full of people whose time has been booked. [How much deposit to charge before an AI project](/blog/how-much-deposit-to-charge-before-an-ai-project) covers the number; for a dated session it is the full fee before the day.</li></ul>
<h2>How to present the workshop number so it closes</h2>
<p>Lead with the change you agreed on, then put the three tiers under it. &quot;You said the goal is that your ops team builds their own reports in Claude Code instead of waiting on engineering, and we agreed what that wait costs; here are three ways to make that happen&quot; is a sentence a manager can say yes to on the call, and it is a sentence they can repeat to their director without you in the room. Send it as [a one-page proposal](/blog/one-page-ai-proposal-that-closes) with the workflow written in one line, the tier scope, the pre-work you need from them and the date you need it by, the date of the session, and the follow-up window with an end date. [How to package an AI service](/blog/how-to-package-an-ai-service) is how the same workshop becomes an offer you can sell to the next company without rewriting it.</p>
<p>The push-back you will hear is &quot;can't they just watch some videos&quot; or &quot;our engineering team could run this internally.&quot; Both are answered by the change: videos do not put the workflow on anyone's machine, and engineering has the backlog the workshop exists to relieve. If the objection is really about budget, the honest answer is the Session tier, and [&quot;let me think about it&quot;](/blog/let-me-think-about-it-objection) covers the stall that follows a workshop quote more than any other, because a date on a calendar feels bigger than a build that starts whenever.</p>
<h2>Quote your next workshop against the change, not the day</h2>
<p>A workshop is the best front door in this business when it is priced right and the cheapest day you will ever sell when it is not. Get the workflow and its cost from the client, write it in one line, quote the ladder, take the fee before the date, and put an end date on the follow-up. The company whose team is now using Claude Code every day needs the shared instructions maintained, the next team trained, and the first real build scoped; [how to turn a one-off client into a monthly retainer](/blog/how-to-turn-a-one-off-client-into-a-monthly-retainer) is what that conversation looks like, and [the memory engineering retainer](/blog/selling-claude-code-memory-engineering-retainer) is the shape it usually takes.</p>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club, members share the workshop quotes they actually sent, which tier the client picked, and the pre-work checklist they now send a week before every session. It is $9 a month at https://www.skool.com/claudecodeclub/about, and if the client wants a case study out of the workshop, [how to get testimonials for your AI agency](/blog/how-to-get-testimonials-for-your-ai-agency) is how to ask on the last day while the room is still warm.</blockquote>
<h2>FAQ</h2>
<p><strong>How much should I charge for an AI workshop?</strong></p><p>Price it against the change it produces, not the hours. Find out the one task the team should be doing with Claude Code afterwards, get the client to say what that task costs them now, and quote a fixed fee that is an obvious fraction of that number, in three tiers: Session, Sprint, and Rollout. Never quote a day rate; it becomes your ceiling the moment you say it.</p>
<p><strong>Should I charge per person or per session for an AI workshop?</strong></p><p>Per group, with a cap on seats, and quote a second group as a second session. Per-person pricing invites the client to trim the list, and the value of the workshop is that a whole team changes how it works, which does not scale down neatly by headcount.</p>
<p><strong>What should an AI workshop include?</strong></p><p>One workflow out the door: one team, one task they do by hand today, running in the Claude Code desktop app on their own machines with their own files by the end. A setup check at the start, the workflow built live, a recording and a one-page recap. Pre-work on their real material and a follow-up window belong in the Sprint tier; shared instructions, templates, and a second team belong in Rollout.</p>
<p><strong>Should I run the first AI workshop for free to win the client?</strong></p><p>No. A free session is treated as a demo and the next one will be too. If you need a low-risk entry, sell the Session tier small rather than free, and if the workshop is really discovery for a build you will quote afterwards, price it as paid discovery with the fee credited if they go ahead.</p>
<p><strong>How do I stop a workshop from turning into free consulting afterwards?</strong></p><p>Put an end date on the follow-up window and write what it covers: questions about the workflow you taught, for that team, for that period. A new workflow, a build request, or a second team is a new line on a new proposal, and that is the start of the retainer conversation, not a favour you owe.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Sonnet 5.5 Is Out: The 10 Things That Matter</title>
      <link>https://www.claudecodeclub.ai/blog/claude-sonnet-5-5</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-sonnet-5-5</guid>
      <pubDate>Mon, 28 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Claude Code</category>
      <category>Building</category>
      <category>Workflows</category>
      <description><![CDATA[Anthropic released Claude Sonnet 5.5 on September 28, 2026. It costs the same as Sonnet 5, runs over 30% faster, and scored 70.6% on a test of real jobs done alone, up from 10.3%. Here are the 10 things that matter, where Opus 5.5 still wins, and how to switch today.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Claude Sonnet 5.5 came out September 28, 2026. It costs the same as Sonnet 5 ($2 per million input tokens, $10 output) and runs over 30% faster.</li><li>On Terminal-Bench 4.0, a test where the AI does a real job alone, Sonnet 5.5 scored 70.6%. Sonnet 5 scored 10.3%. Opus 5.5 scored 66.4%.</li><li>Opus 5.5 still wins every other test on the scorecard. Use Sonnet 5.5 for everyday work and Opus 5.5 for big builds and hard problems. In Claude Code, type /model and pick Sonnet 5.5.</li></ul>
<h2>Claude Sonnet 5.5 Is Out Today</h2>
<p>Claude Sonnet 5.5 came out today, September 28, 2026. Same price as Sonnet 5. Over 30% faster. And on a test of real jobs done alone, it went from 10.3% to 70.6%.</p>
<p>It's the second model in the Claude 5.5 family. Opus 5.5 came out September 22. Haiku 5.5 is coming in the next few weeks. I went through [Anthropic's announcement](https://www.anthropic.com/claude-sonnet-5-5) and pulled out the 10 things that matter if you build with Claude Code.</p>
<blockquote><strong>TIP:</strong> Want to see it instead of read it? Watch the old and new Sonnet race side by side on the [interactive Sonnet 5.5 page](/sonnet-5-5).</blockquote>
<h2>Sonnet 5.5 Wins the Race</h2>
<p>Sonnet 5.5 writes its answers over 30% faster than Sonnet 5. It also needs far fewer tokens to finish a job, so each task costs up to 30% less.</p>
<p>Testers said it batches steps together, so it takes fewer of them. Balyasny ran it on 2,441 finance tasks. Sonnet 5.5 used about 121,000 tokens per answer. Sonnet 5 used 497,000. Zendesk got its support tickets processed 20% faster.</p>
<p>Speed is easier to feel than to read about. The interactive page runs the old and new Sonnet side by side so you can watch the gap. [Open the interactive page](/sonnet-5-5).</p>
<h2>Sonnet 5.5 Costs the Same as Sonnet 5</h2>
<p>The price didn't move. Sonnet 5.5 is $2 per million input tokens, $10 per million output tokens, and $0.20 per million for cache reads. That's the same as Sonnet 5.</p>
<p>Opus 5.5 is $4 in and $20 out, twice the price. So you get a faster, smarter model for the same money, and it uses fewer tokens per job on top of that.</p>
<h2>How Much You Have to Babysit Sonnet 5.5</h2>
<p>This is the number I care about most. Terminal-Bench 4.0 gives the AI a real job and lets it work alone. It only counts if the result works at the end.</p>
<p>Sonnet 5.5 scored 70.6%. Sonnet 5 scored 10.3%. Opus 5.5 scored 66.4%. Those are each model's best setting, where they cost about the same per job. Even on the default Medium effort, Sonnet 5.5 beats Sonnet 5's best score for less than a tenth of the cost per task.</p>
<p>Here's what those jobs look like:</p>
<ul><li>Fix a payments system so low-balance alerts arrive within 5 seconds.</li><li>Fix a lead sign-up form so leads save correctly with no duplicates.</li><li>Speed up a slow website under time limits.</li><li>Audit medical insurance claims.</li></ul>
<p>Companies saw the same thing. Base44 ran 118 real app builds. Sonnet 5.5 needed 3.6 tries per build. Opus 5 needed 7.7. It rarely stopped to ask the user questions. Box said it rechecks data in the source documents and catches errors Sonnet 5 missed. Testers also said it gets up to speed on big existing projects fast and handles tasks that run for hours.</p>
<p>Less babysitting means you hand it the job, go do something else, and come back to work that runs.</p>
<h2>How Close Sonnet 5.5 Gets to Opus 5.5</h2>
<p>Very close, for half the price. On GDPval-AA, which tests real work from 44 jobs, Sonnet 5.5 scored 1844. Opus 5.5 scored 1846. On OSWorld 2.1, Sonnet scored 80.1% and Opus 81.8%. On CursorBench 4.0, 55.5% vs 57.8%.</p>
<p>Opus still comes out ahead on those. But a 2 point gap at twice the price is why Sonnet 5.5 is the one I'd run most of the day.</p>
<h2>Sonnet 5.5 Is Good at Gaming Now</h2>
<p>Sonnet 5.5 is the first Sonnet to beat Pokémon Red working only from screenshots. It looked at the screen and played.</p>
<p>Creator Kevin Ngo put it this way: &quot;When Claude Opus 5.5 sets the architecture and general framework for a game, I would feel confident in letting Sonnet 5.5 implement it.&quot; That's a good way to split the work. Opus plans, Sonnet builds.</p>
<h2>Sonnet 5.5 Is a Design Genius</h2>
<p>Anthropic gave Sonnet 5.5 a public company's earnings materials and a slide template. They asked for a 10-slide operating review. Two experts judged the first draft ready to send as is.</p>
<p>It also adds more polish to the screens and pages it builds, and it writes more clearly. Testers called it a better partner to work with. Every's Tyler Nishida summed it up in four words: &quot;Claude Sonnet 5.5 cooks.&quot;</p>
<h2>What People Built With Sonnet 5.5 on Day One</h2>
<p>It came out today, so the builds are still rolling in. See what people made on day one on the [interactive Sonnet 5.5 page](/sonnet-5-5).</p>
<h2>Every Sonnet 5.5 Score</h2>
<table><caption>Anthropic's scorecard, September 28, 2026. n/a means no score was listed.</caption><thead><tr><th>Test</th><th>Sonnet 5.5</th><th>Sonnet 5</th><th>Opus 5.5</th><th>GPT-6 Sol</th></tr></thead><tbody><tr><td>Terminal-Bench 4.0</td><td>70.6%</td><td>10.3%</td><td>66.4%</td><td>n/a</td></tr><tr><td>FrontierCode 1.1</td><td>52.1% (46.2% at Max)</td><td>42.4%</td><td>54.4%</td><td>49.3%</td></tr><tr><td>CursorBench 4.0</td><td>55.5%</td><td>34.1%</td><td>57.8%</td><td>n/a</td></tr><tr><td>GDPval-AA (real work from 44 jobs)</td><td>1844</td><td>1449</td><td>1846</td><td>1487</td></tr><tr><td>AA-Briefcase</td><td>1811</td><td>1359</td><td>1822</td><td>1483</td></tr><tr><td>Humanity's Last Exam</td><td>64.5%</td><td>54.9%</td><td>67.7%</td><td>n/a</td></tr><tr><td>OSWorld 2.1</td><td>80.1%</td><td>57.0%</td><td>81.8%</td><td>n/a</td></tr><tr><td>Chartography</td><td>61.6%</td><td>15.6%</td><td>64.4%</td><td>53.6%</td></tr></tbody></table>
<p>Here's what this table says. Opus 5.5 wins every row except Terminal-Bench. Sonnet 5.5 wins that one, and it's the test closest to handing an AI a real job and walking away.</p>
<p>And here's what each model costs. Prices are per million tokens. In is what you send Claude. Out is what Claude writes back.</p>
<table><caption>Anthropic's pricing, September 28, 2026</caption><thead><tr><th>Model</th><th>In</th><th>Out</th><th>Compared to Sonnet 5.5</th></tr></thead><tbody><tr><td>Claude Fable 5.1</td><td>$10</td><td>$50</td><td>5x the price</td></tr><tr><td>Claude Opus 5.5</td><td>$4</td><td>$20</td><td>2x the price</td></tr><tr><td>Claude Sonnet 5.5 (new)</td><td>$2</td><td>$10</td><td>Baseline</td></tr><tr><td>Claude Sonnet 5 (old)</td><td>$2</td><td>$10</td><td>Same price</td></tr><tr><td>Claude Haiku 4.5</td><td>$1</td><td>$5</td><td>Half the price</td></tr></tbody></table>
<h2>Where Opus 5.5 Still Beats Sonnet 5.5</h2>
<p>Anthropic says Opus 5.5 is clearly stronger at complex, open-ended work that needs steady judgment over a long stretch. Two more things to know about Sonnet 5.5:</p>
<ul><li>Max effort runs for a very long time. Medium is the default for a reason.</li><li>Higher-risk cybersecurity requests fall back to Sonnet 5, and you'll see it happen. Everyday coding and bug fixing are not affected.</li></ul>
<p>On safety, Anthropic's containment tests found Sonnet 5.5 the least likely of any of their models to probe the limits of its test setup.</p>
<p>Here's how I'd split the work:</p>
<table><thead><tr><th>Use Sonnet 5.5 for</th><th>Use Opus 5.5 for</th></tr></thead><tbody><tr><td>Everyday tasks and bug fixes</td><td>Big projects from scratch</td></tr><tr><td>Docs, slides and spreadsheets</td><td>Hard problems</td></tr><tr><td>Fast back-and-forth</td><td>Planning</td></tr><tr><td>Lots of tasks on a budget</td><td></td></tr></tbody></table>
<h2>How to Switch to Sonnet 5.5 Today</h2>
<ol><li>In the Claude app, open the model menu and pick Sonnet 5.5.</li><li>In Claude Code, type /model and choose Sonnet 5.5.</li><li>Leave effort on Medium to start. Effort is how hard Claude thinks before it answers. Medium is the default in Claude Code and the apps.</li></ol>
<p>If you're on Pro, Max or Team, you also got one free usage reset. Use it any time before October 22.</p>
<p>Then give it one real job you'd normally sit and watch. See how far it gets alone. And if you want the visual version, watch the old and new Sonnet race side by side on the [interactive page](/sonnet-5-5).</p>
<blockquote><strong>NOTE:</strong> Learn Claude Code. Earn income. Only $9. 👉 [Join Claude Code Club](https://www.skool.com/claudecodeclub/about)</blockquote>
<h2>FAQ</h2>
<p><strong>When did Claude Sonnet 5.5 come out?</strong></p><p>September 28, 2026. It's the second model in the Claude 5.5 family, after Opus 5.5 on September 22. Haiku 5.5 is coming in the next few weeks.</p>
<p><strong>How much does Claude Sonnet 5.5 cost?</strong></p><p>The same as Sonnet 5: $2 per million input tokens, $10 per million output tokens, and $0.20 per million for cache reads. Opus 5.5 is $4 and $20, twice the price.</p>
<p><strong>Is Sonnet 5.5 better than Opus 5.5?</strong></p><p>On one test. Sonnet 5.5 scored 70.6% on Terminal-Bench 4.0 and Opus 5.5 scored 66.4%. Opus 5.5 wins every other test on Anthropic's scorecard, and Anthropic says Opus is clearly stronger at complex, open-ended work. Sonnet 5.5 is the better pick for everyday work at half the price.</p>
<p><strong>How do I use Sonnet 5.5 in Claude Code?</strong></p><p>Type /model in Claude Code and choose Sonnet 5.5. The default effort is Medium. In the Claude app, pick Sonnet 5.5 from the model menu.</p>
<p><strong>What is the free usage reset?</strong></p><p>Pro, Max and Team users got one free usage reset with the Sonnet 5.5 launch. You can apply it any time before October 22.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code Browser: How I Let Claude Test Its Own Changes in the Desktop App</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-browser</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-browser</guid>
      <pubDate>Sun, 27 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Workflows</category>
      <category>Building</category>
      <description><![CDATA[The Claude Code browser is the Browser pane inside the desktop app's Code tab. Claude starts your dev server, opens the app in the pane, takes screenshots, inspects the DOM, clicks through forms, and fixes what it finds, and by default it does this after every edit. It runs in a clean profile with none of your logins, which is why there is a second option, the Claude in Chrome extension, for anything that has to happen as you. Here is how the two fit together, how auto-verify behaved on a real build, and the prompts I run in the pane now.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>The Claude Code browser is the Browser pane in the desktop app. Press Cmd+Shift+B on a Mac or Ctrl+Shift+B on Windows. Claude starts your dev server, opens the app, screenshots it, inspects the DOM, clicks and types, and fixes what breaks. Auto-verify does this after every edit unless you switch it off in .claude/launch.json.</li><li>The pane is a clean browser profile with no logins. For anything that has to happen as you, in your Gmail, your CRM, your Notion, you use the Claude in Chrome extension instead, which shares your real browser's login state. The CCC Clean-or-Signed-In Rule picks between them in one question.</li><li>External sites get two extra checks: a safety classifier reviews every click and keystroke in every permission mode, and outside Auto and Bypass a domain allowlist applies before Claude navigates anywhere new. Local dev servers need no approval at all.</li></ul>
<h2>Claude Code Browser</h2>
<p>The Claude Code browser is a pane inside the desktop app's Code tab. Open it with Cmd+Shift+B on macOS, Ctrl+Shift+B on Windows, or from the Views menu. When Claude edits a web project it starts the dev server, opens the running app in that pane, and verifies its own change: it takes screenshots, checks for errors, inspects the DOM, clicks elements, fills forms, and fixes what it finds before it tells you it is done. That auto-verify step is on by default. The pane is also a tabbed browser you can use yourself, for docs or an issue tracker, and Claude can read and act on external pages there with extra safety checks. It runs in a clean profile with none of your saved logins, which is the single fact that decides when you use it and when you use the separate Claude in Chrome extension instead.</p>
<p>I turned the pane on for the club site the week it shipped and have not opened a second window to check Claude's work since. The interesting part is not that Claude can click a button. It is what auto-verify caught that I would have shipped, and where the clean-profile line sent me to the extension. Both are below.</p>
<blockquote><strong>NOTE:</strong> This post assumes you are in [the Claude Code desktop app](/blog/claude-code-desktop-app). The terminal version has the Chrome extension half of this story but not the pane. If you still hand Claude screenshots by hand, [Claude Code screenshots](/blog/claude-code-screenshots) is the older workflow this replaces.</blockquote>
<h2>The two browsers Claude Code has, and the one question that picks between them</h2>
<p>Claude Code can drive a browser two ways, and people mix them up because both are called &quot;browser&quot; in the docs. The Browser pane lives inside the desktop app and uses its own clean profile. The Claude in Chrome extension lives in your real Chrome or Edge and shares your login state. The CCC Clean-or-Signed-In Rule is the whole decision: does the task need to happen as you? If no, use the pane. If yes, use the extension. I have not found a third case.</p>
<table><caption>Browser pane vs Claude in Chrome extension, per Anthropic's Claude Code docs</caption><thead><tr><th></th><th>Browser pane (desktop app)</th><th>Claude in Chrome extension</th></tr></thead><tbody><tr><td>Where it runs</td><td>Inside the Code tab, own clean profile</td><td>Your Chrome, Edge, or other Chromium browser</td></tr><tr><td>Your logins</td><td>None, fresh profile</td><td>Shared, Claude acts as you</td></tr><tr><td>Best for</td><td>Testing your own app, docs, sites that do not need your identity</td><td>Gmail, Notion, your CRM, anything behind your login</td></tr><tr><td>How it starts</td><td>Cmd+Shift+B, or Claude opens it to verify an edit</td><td>Extension 1.0.36 or later, then Claude uses it for browser work</td></tr><tr><td>Plan needed</td><td>The desktop app</td><td>A direct Anthropic plan, signed in with /login, not an API key</td></tr><tr><td>Safety</td><td>Classifier on write actions plus a per-site allow prompt</td><td>Same safety model, site permissions set in the extension</td></tr></tbody></table>
<p>The extension has a few tricks the pane does not: it can attach files from your machine to an upload field, record a browser session as a GIF, and save screenshots to disk. The pane has one the extension does not: it is where auto-verify runs, next to the diff and the chat, without you switching windows. If you set both up, the desktop app routes browser work to the extension when the task calls for it and uses the pane for verifying your app.</p>
<h2>How auto-verify works, and what it caught on a real build</h2>
<p>When autoVerify is on, Claude verifies code changes after editing files. It screenshots the result, checks for errors, and confirms the change works before it finishes its response. You do not prompt for this. It is a setting in the .claude/launch.json file at the root of the folder you opened, and it defaults to on. Set &quot;autoVerify&quot;: false in that file, or flip it from the server dropdown in the session toolbar, and the preview tools stay available but only run when you ask.</p>
<p>On the club site, the first change I watched it verify was a form. I asked for a required-field check on the email input. Claude made the edit, the pane reloaded, and instead of stopping there it submitted the form empty, read the page, and noticed the error message rendered but the submit button stayed disabled afterwards. It went back and fixed the button state. I would have merged the first version, because in the diff it looked complete. That is the pattern: auto-verify catches the class of bug that only exists once the page is running, and diffs never show those.</p>
<p>Two things to know before you rely on it. First, the pane can also open static HTML, PDFs, images, and videos from your project, so a landing page with no server still gets checked; click the file path in the chat to open it. Second, verification costs tokens and time on every edit. On a long refactor where I know the page does not change, I turn it off from the dropdown and ask for one verification at the end. [Claude Code context management](/blog/claude-code-context-management) covers why that matters on big sessions.</p>
<h2>Set up the preview server once with .claude/launch.json</h2>
<p>Claude detects your dev server the first time and writes the configuration to .claude/launch.json in the folder you selected when you started the session. If your project uses a different command, say yarn dev instead of npm run dev, or a non-default port, edit that file or click Edit configuration in the server dropdown. The file accepts comments. You can list more than one configuration, which is how I run the frontend and the API server side by side and let Claude test an endpoint and the page that calls it in the same pass.</p>
<ul><li>Start the session in the folder that owns the dev server. Preview uses the selected folder as its working directory, so if you opened a parent folder, a subfolder's server is not detected. Either open the subfolder directly or add its configuration by hand.</li><li>Turn on Persist sessions in the server dropdown. Cookies and local storage then survive server restarts, so Claude is not logging into your own app again after every reload.</li><li>Use the dropdown to stop all servers when you are done. A forgotten dev server on a laptop is a surprisingly good way to lose an afternoon to a port conflict.</li><li>If you need to clear saved session data, or turn the Browser off entirely, both toggles are under Settings, Claude Code.</li></ul>
<p>This is the same launch.json that the deploy step reads when you get to shipping, so getting it right here pays twice. [How to deploy an app with Claude Code](/blog/how-to-deploy-an-app-with-claude-code) picks up from a working preview.</p>
<h2>Browsing external sites: the two extra safety checks</h2>
<p>The pane is a real tabbed browser, so you can open documentation or an issue tracker next to your app, and you can sign in to sites in it, including popup flows like Google sign-in. Claude can read and act on those pages with the same tools it uses to verify your app, plus two checks that do not apply to localhost. Safety classifiers review Claude's write actions on external pages, clicking and typing, in every permission mode, and when one flags an action you get a prompt regardless of mode. And in every mode except Auto and Bypass permissions, a domain allowlist check runs before Claude navigates to a new site.</p>
<p>The first time Claude acts on an external site, a card appears with Allow once, Always allow, or Deny, and Claude waits. Always allow is saved per site on your device, subdomains count as separate sites, and you can revoke it in Settings. Your local dev servers and project files never need approval, which is why auto-verify keeps running without interrupting you. Even on an approved site, Claude will not buy things, create accounts, or get past a CAPTCHA without you. If you are doing client work in the pane, [is Claude Code safe for client work](/blog/is-claude-code-safe-for-client-work) covers what else to lock down.</p>
<blockquote><strong>WARNING:</strong> The clean profile cuts both ways. It means Claude cannot accidentally act inside your logged-in accounts from the pane, which is the point. It also means that if you sign into something inside the pane to save a step, you have just handed that session to the part of Claude Code that clicks things. Sign in there only for the app you are building. [Claude Code permissions explained](/blog/claude-code-permissions-explained) has the modes these checks sit on top of.</blockquote>
<h2>The prompts I run in the Browser pane</h2>
<p>Auto-verify handles the edit you just made. These are the checks I ask for on purpose, usually before a commit, and they are short because the pane gives Claude the page, so I do not have to describe it.</p>
<ol><li>&quot;Open the signup page, submit it with a bad email and then with an empty password, and tell me exactly which error messages render.&quot; Form validation is where the diff lies most.</li><li>&quot;Load the dashboard and check the console for errors on load. Only report errors and warnings, not every log line.&quot; Telling it what to look for keeps a noisy console out of the context window.</li><li>&quot;Resize to a phone width, screenshot the pricing section, and fix anything that overflows.&quot; The pane screenshots at whatever size you set, and layout bugs are cheaper to find here than in a client's reply.</li><li>&quot;Click every link in the footer and report any that do not return a page.&quot; Dead links after a route rename, every time.</li><li>&quot;Walk the checkout from add-to-cart to the confirmation page and stop at the first step that fails.&quot; One prompt, one full user flow, and it stops where you need to look.</li></ol>
<p>If a check fails and Claude's fix is not obvious, the pane is also where I debug, because it can read the failing state instead of my description of it. [How to debug with Claude Code](/blog/how-to-debug-with-claude-code) is the longer method; the short version is that a screenshot plus the DOM beats a paragraph of me explaining what I saw.</p>
<h2>What the pane will not do, and what to reach for instead</h2>
<ul><li>Act as you. That is the extension's job by design. Install Claude in Chrome, sign in to Claude Code with /login rather than an API key, and Claude uses it for browser work that needs your identity.</li><li>Test an iOS app. The desktop app has a separate iOS Simulator pane on macOS for that, and it does not go through the browser at all.</li><li>Drive a native desktop app. That is computer use, a different feature with its own permission tiers, and browsers are deliberately capped at view-only there so Claude is steered back to the pane or the extension.</li><li>Run in the terminal version. The pane is a desktop-app feature. In the CLI you get the extension route with the --chrome flag, and nothing verifies your edits automatically.</li></ul>
<h2>Let Claude check its work before you do</h2>
<p>Turn the pane on, leave auto-verify at its default for a week, and read what it fixes after each edit. Then decide where to switch it off. That order matters: most people turn it off first because it feels slow, and never learn which bugs it was quietly catching.</p>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club, members post their launch.json for multi-server projects, the verification prompts they run before every commit, and the moment they moved a task from the pane to the Chrome extension and why. It is $9 a month at https://www.skool.com/claudecodeclub/about, and once Claude is testing its own changes, [Claude Code code review](/blog/claude-code-code-review) is the next check to hand it.</blockquote>
<h2>FAQ</h2>
<p><strong>What is the Claude Code browser?</strong></p><p>The Browser pane inside the Claude Code desktop app's Code tab. Claude starts your dev server, opens the app in the pane, takes screenshots, inspects the DOM, clicks elements, fills forms, and fixes issues it finds. It is also a tabbed browser you can use yourself for documentation or any other site. Open it with Cmd+Shift+B on macOS or Ctrl+Shift+B on Windows.</p>
<p><strong>What is the difference between the Browser pane and the Claude in Chrome extension?</strong></p><p>The Browser pane runs in a clean profile with none of your logins and is meant for testing your own app and browsing sites that do not need your identity. The Claude in Chrome extension runs in your real Chrome or Edge and shares your login state, so Claude can act as you in Gmail, Notion, a CRM, or any site you are signed into. The extension needs version 1.0.36 or later and a direct Anthropic plan signed in with /login.</p>
<p><strong>How do I turn off auto-verify in Claude Code?</strong></p><p>Add &quot;autoVerify&quot;: false to the .claude/launch.json file at the root of the folder you opened, or toggle it from the server dropdown in the session toolbar. Preview tools stay available when it is off; Claude just waits for you to ask before it verifies a change.</p>
<p><strong>Does Claude Code ask permission before using the browser on other websites?</strong></p><p>Yes. The first time Claude acts on an external site you get Allow once, Always allow, or Deny, saved per site including subdomains. Safety classifiers also review clicks and typing on external pages in every permission mode, and outside Auto and Bypass a domain allowlist check runs before Claude navigates somewhere new. Local dev servers and project files need no approval.</p>
<p><strong>Why is my dev server not detected in the Browser pane?</strong></p><p>Preview uses the folder you selected when you started the session as its working directory. If you opened a parent folder, a subfolder's dev server is not detected. Start the session in the subfolder, or add a configuration for it by hand in .claude/launch.json using Edit configuration in the server dropdown.</p>]]></content:encoded>
    </item>
    <item>
      <title>How Much to Charge for an MVP (Price the Decision It Unlocks)</title>
      <link>https://www.claudecodeclub.ai/blog/how-much-to-charge-for-an-mvp</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/how-much-to-charge-for-an-mvp</guid>
      <pubDate>Sun, 27 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Monetization</category>
      <category>Agency</category>
      <category>Freelancing</category>
      <description><![CDATA[How much to charge for an MVP depends on the decision the MVP exists to unlock, not on the feature list or the hours. A founder builds an MVP to raise money, to sign the first paying customers, or to prove a workflow before betting the company on it. That decision has a value, and the price of the build is a fraction of it, quoted as a fixed fee in three tiers around one core loop. Here is the method, the tiers, what moves the number, and the mistakes that turn a paid MVP into an unpaid co-founder job.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Price an MVP against the decision it unlocks: a raise, first paying customers, or proof that a workflow is worth building. Get the founder to put a value on that decision, then quote a fixed fee that is an obvious fraction of it. Never quote by feature or by hour.</li><li>Define the MVP on paper as one core loop: a user signs up, does the one thing, sees the result. Everything outside that loop is phase two with its own price.</li><li>Quote three tiers: Prove (a working loop for demos), Launch (the loop with auth, payments, and a live deploy), and Traction (Launch plus a fixed post-launch iteration window). Claude Code making the build fast is your margin, not the founder's discount.</li></ul>
<h2>How much to charge for an MVP</h2>
<p>How much to charge for an MVP comes down to one question: what decision is this build supposed to unlock, and what is that decision worth to the founder? Nobody wants an MVP. They want to know whether to raise, whether strangers will pay, or whether a process they run by hand deserves software. That decision has a price, and the founder usually knows it, because it is the cheque they are chasing or the cost they are carrying. Quote a fixed fee that is an obvious fraction of that number, built around one core loop, in three tiers. Do not quote by feature, and never by hour. Claude Code can get a working loop in front of users in days, and if you price by the day, the founder will pay you like a day.</p>
<p>This is the CCC Decision-Value Method, and it exists because the MVP is the job where new builders lose the most money in the most flattering way. The founder is excited, the idea is interesting, and the scope has no edges. So the quote comes out as a features list, the features multiply, and six weeks later you are a technical co-founder on a contractor's invoice. Priced against the decision, an MVP is a clean fixed-scope build with a high margin and the most natural retainer upsell in the business, because a founder who gets their answer needs the next thing built immediately.</p>
<blockquote><strong>NOTE:</strong> This is the pricing half. The build half, from blank folder to deployed product, is in [how to build a SaaS with Claude Code](/blog/build-a-saas-with-claude-code). The fixed-fee logic underneath every number here is in [how to price a Claude Code agency project](/blog/how-to-price-a-claude-code-agency-project).</blockquote>
<h2>Find out what the MVP has to prove before you say a number</h2>
<p>You cannot price an MVP until you know what it is for, so the first call is a measurement. Five questions get you there, and I ask them in this order because each one makes the next one easier to answer honestly.</p>
<ul><li>What happens if this works? A pitch to investors, a launch to a waiting list, a pilot with one named customer. That is the decision, and it is the thing you are actually building.</li><li>What is that worth to you? Let the founder say it. A raise has a target. A first customer has a contract value. A workflow has a monthly cost in someone's salary. Your quote is going to sit next to this number, so get it from them.</li><li>Who is the first user, by name if possible? If the answer is &quot;everyone,&quot; the MVP is not defined yet and the price has to include defining it. Paid discovery covers this; [paid discovery for AI projects](/blog/paid-discovery-phase-ai-projects) is how I sell that week.</li><li>When is the deadline, and what set it? A demo day, an investor meeting, or a customer's renewal date is a real deadline and it is worth money. &quot;As soon as possible&quot; is not a deadline and does not change the quote.</li><li>What have you spent so far? A founder who has already paid an agency for a deck and a designer for screens has a sunk cost and a mental price for the next step. You want to know both before you name yours.</li></ul>
<p>Say the answers back before you quote. &quot;So this exists to close your first three pilot customers, and each pilot is worth roughly this to you&quot; is a sentence the founder has to agree with, and once they have, the price of the build is a fraction of a number they already accepted. The full question set I run on every deal is in [client discovery questions before you quote](/blog/client-discovery-questions-before-you-quote).</p>
<h2>Define the MVP on paper as one loop, or you will build the whole product</h2>
<p>The CCC One-Loop Rule: an MVP is one user, doing one thing, seeing one result, and that loop written down in three lines is the scope. A user signs up, uploads a contract, gets a summary. A customer books a slot, pays, receives a confirmation. If the founder cannot say the loop in a sentence, the product is not ready to be built and the price should cover the discovery that gets it there. If they can, everything outside that sentence is phase two, priced separately, and written on the proposal as phase two so nobody is surprised.</p>
<p>This rule is what makes the fixed fee safe. Claude Code will happily add an admin panel, a settings page, a second user role, and a referral system in the same afternoon, and the founder will happily ask for them, because from where they sit every one of those is &quot;part of the MVP.&quot; The written loop is the line you point at. [How to scope a Claude Code client project](/blog/how-to-scope-a-claude-code-client-project) is the longer method, and [how to write a project brief for Claude Code](/blog/how-to-write-a-project-brief-for-claude-code) turns the loop into the brief you actually build from.</p>
<h2>The CCC MVP Price Ladder: three tiers</h2>
<p>Present three tiers, all built around the same loop, and let the founder pick how much of the decision they want proven. The bottom tier is for a founder who needs something to show. The middle is for a founder who needs something to sell. The top is for a founder who already knows the product is real and wants the first weeks of learning built in.</p>
<table><caption>The CCC MVP Price Ladder</caption><thead><tr><th>Tier</th><th>What the founder gets</th><th>How to price it</th></tr></thead><tbody><tr><td>Prove</td><td>The core loop working end to end with real data, deployed to a private URL, good enough to demo to an investor or a pilot customer. No payments, minimal auth, no polish outside the loop</td><td>A fixed fee that is a small, obvious fraction of the decision's value. Priced so a funded founder says yes on the call</td></tr><tr><td>Launch</td><td>Everything in Prove, plus real sign-up and login, payments wired to their account, a production deploy on their domain, and the basic analytics to see whether strangers use it</td><td>The anchor tier. Priced against the first customers or the raise it is meant to unlock. Most founders land here</td></tr><tr><td>Traction</td><td>Everything in Launch, plus a fixed post-launch window where you ship changes weekly against what real users do, and a handover of the codebase and accounts at the end</td><td>Priced for the founder who has already decided. This tier is what becomes the retainer</td></tr></tbody></table>
<p>The middle tier wins because of payments and the deploy. A loop on a private URL proves the idea. A loop that a stranger can pay for proves the business, and that is the decision most founders are actually trying to make. Put the difference in the table and they will choose it themselves. The three-tier shape is the same one in [how much to charge for a landing page](/blog/how-much-to-charge-for-a-landing-page) and [how much to charge for a chatbot](/blog/how-much-to-charge-for-a-chatbot); the tiers change, the logic does not.</p>
<h2>What moves an MVP quote up or down</h2>
<ul><li>Payments. A loop that takes money is a business, and the price reflects it. Subscriptions, one-off charges, and marketplaces with payouts are three different amounts of work, so ask which one before you quote.</li><li>Who the users are. One kind of user is an MVP. Two kinds who see different things, a customer and an admin, is two products sharing a database. Price the second role as its own line.</li><li>Integrations. Every outside system the loop touches, a calendar, a CRM, an email tool, a data source, is its own line because each one is its own thing that can break on launch day.</li><li>Design. A founder with brand assets and screens from a designer is a build. A founder with a napkin is a build plus a design pass they will want to revisit, and that pass is priced.</li><li>Web or native mobile. A web app that works on a phone is the default MVP. A native app with store review is a different timeline and a different quote, and most MVPs do not need it yet.</li><li>Data that already exists. If the founder has a spreadsheet of customers or a legacy tool to migrate from, the migration is a line item, not a favour.</li><li>The deadline. A demo day in three weeks is worth more than the same build with no date on it, and the founder already knows it.</li><li>Account ownership. Build on the founder's accounts, under their billing. It goes on the quote, and it is why you are never the hosting company when the startup runs out of money.</li></ul>
<h2>The mistakes that turn a paid MVP into an unpaid co-founder job</h2>
<ul><li>Taking equity instead of a fee. The founder will offer, because the equity costs them nothing today. Unless you would invest cash in this company, take cash for the build. If you genuinely would, take a fee and negotiate the equity as a separate conversation.</li><li>Quoting hours or days. &quot;About a week with Claude Code&quot; becomes the price ceiling the moment you say it. Talk about the decision and the loop, nothing else. [Why I stopped charging hourly for AI builds](/blog/stopped-charging-hourly-for-ai-builds) is the longer argument.</li><li>Starting without a deposit. Startups run out of money, and the ones that do not still have a board meeting to survive. [How much deposit to charge before an AI project](/blog/how-much-deposit-to-charge-before-an-ai-project) covers the number; for an MVP it is at the high end.</li><li>Unlimited pivots. The founder will learn something on day four and want a different loop. That is healthy, and it is a change order. Write down what a pivot costs before the build starts. [How to handle scope creep on client projects](/blog/how-to-handle-scope-creep-on-client-projects) has the script.</li><li>Building the roadmap. A founder's pitch deck has eighteen months of features on one slide. You are building the loop. Everything else is phase two with a price.</li><li>No end date. An MVP without a handover date becomes a job. Even the Traction tier has a fixed window, and the retainer that follows is a new agreement, not a continuation.</li></ul>
<h2>How to present the MVP number so it closes</h2>
<p>Lead with the decision you agreed on, then put the three tiers under it. &quot;You said this exists to close your first pilot customers, and we agreed what a pilot is worth; here are three ways to prove it&quot; is a sentence a founder can say yes to on the call, and it is a sentence they can repeat to a co-founder or an investor an hour later without you in the room. Send it as [a one-page proposal](/blog/one-page-ai-proposal-that-closes) with the loop written in three lines, the tier scope, the phase-two list, the deposit, and the handover date. [How to write a statement of work for an AI project](/blog/how-to-write-a-statement-of-work-for-an-ai-project) is the version I attach when the founder has a lawyer, and [what to put in an AI project contract](/blog/what-to-put-in-an-ai-project-contract) covers who owns the code, which for an MVP is always the founder once the invoice is paid.</p>
<p>The push-back you will hear is &quot;a no-code tool could do this&quot; or &quot;a developer friend said it would take a weekend.&quot; Both are answered by the decision: a weekend build that the friend abandons in week three does not close a pilot customer or survive an investor's technical question. If the objection is really about budget, the honest answer is often the Prove tier, and [the &quot;can you do it cheaper&quot; objection](/blog/can-you-do-it-cheaper-objection) has the exact words.</p>
<h2>Quote your next MVP against the decision, not the feature list</h2>
<p>An MVP is the best client project in this business when it is priced right and the worst when it is not. Get the decision and its value from the founder, write the loop in three lines, quote the ladder, take the deposit, and put the handover date on the proposal. The founder who gets their answer is the easiest retainer you will ever sell; [how to turn a one-off client into a monthly retainer](/blog/how-to-turn-a-one-off-client-into-a-monthly-retainer) is what that conversation looks like.</p>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club, members share the MVP quotes they actually sent, which tier the founder picked, and which line they forgot the first time, usually payments or the second user role. It is $9 a month at https://www.skool.com/claudecodeclub/about, and if you are weighing building your own MVP instead of a client's, [micro-SaaS vs client work with Claude Code](/blog/micro-saas-vs-client-work-with-claude-code) is the honest comparison.</blockquote>
<h2>FAQ</h2>
<p><strong>How much should I charge for an MVP?</strong></p><p>Price it against the decision the MVP unlocks, not the features or the hours. Ask the founder what happens if it works, a raise, first paying customers, or proof that a workflow is worth software, and what that is worth to them. Then quote a fixed fee that is an obvious fraction of that value, in three tiers built around one core loop: Prove, Launch, and Traction.</p>
<p><strong>Should I take equity for building an MVP?</strong></p><p>Take a fee for the build. Equity costs the founder nothing today, and most MVPs do not become companies. If you would genuinely invest your own cash in the business, take the fee anyway and negotiate equity as a separate conversation with its own paperwork.</p>
<p><strong>What should be included in an MVP?</strong></p><p>One core loop: a user signs up, does the one thing the product exists for, and sees the result. Write it in three lines and that is the scope. Real sign-up, payments, a production deploy, and basic analytics belong in the Launch tier; a second user role, an admin panel, integrations, and native mobile are phase two with their own price.</p>
<p><strong>How much deposit should I charge for an MVP?</strong></p><p>The high end of whatever you normally charge, taken before any work starts. Startups run out of money, and the ones that do not still change direction. A deposit plus a written change-order price for pivots is what keeps an MVP a fixed-scope build instead of an open-ended job.</p>
<p><strong>What if the founder says a no-code tool or a developer friend could do it cheaper?</strong></p><p>Go back to the decision. A weekend build that gets abandoned in week three does not close a pilot customer or survive an investor's technical questions. If the objection is really about budget, offer the Prove tier: the core loop working end to end on a private URL, good enough to demo, with payments and launch as a priced next step.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code Scheduled Tasks: How I Set Up a Daily Review in the Desktop App</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-scheduled-tasks</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-scheduled-tasks</guid>
      <pubDate>Sat, 26 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Workflows</category>
      <category>Automation</category>
      <description><![CDATA[Claude Code scheduled tasks are recurring jobs you create from the Routines page in the desktop app. Each one starts a fresh Claude Code session at the time you pick, in the folder you choose, with its own permission mode and model, and the run shows up in the sidebar for you to review. They run on your machine, so the app has to be open and the computer awake. Here is how I set up a weekday review of the previous day's commits, what went wrong in the first week, and the version of the prompt I run now.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Claude Code scheduled tasks live on the Routines page in the desktop app's Code tab. Click New routine, choose Local, give it a name, instructions, a folder, and a schedule, and Claude Code starts a fresh session on that schedule with its own permission mode and model.</li><li>They only fire while the desktop app is open and the computer is awake. If the machine sleeps through a run, Desktop skips it and does one catch-up run when it wakes, so write the prompt to cope with running late.</li><li>Three things cost me time in week one: a stalled permission prompt, a run that reviewed my half-finished uncommitted work, and a laptop lid. The fixes are Run now with always-allow, the worktree toggle, and a prompt guardrail.</li></ul>
<h2>Claude Code Scheduled Tasks</h2>
<p>Claude Code scheduled tasks are recurring jobs you create from the Routines page in the desktop app. Each task starts a brand-new Claude Code session at the time and frequency you set, in a folder you pick, with its own permission mode and model. When it fires you get a desktop notification and the session appears under a Scheduled section in the sidebar, where you can read what Claude did, review the changes, or answer a permission prompt. A local scheduled task runs on your machine with full access to your files and tools, which also means it only runs while the app is open and the computer is awake. The same Routines page can create a remote routine that runs in the cloud when your machine is off, but that is a different thing with different tradeoffs, and this post is about the local kind.</p>
<p>I set two up the day the feature landed: a weekday morning review of the previous day's commits on the club site, and a Monday dependency check. The setup took less time than writing this paragraph. The first week of runs is where I learned what the docs meant, and that is the useful part of this post.</p>
<blockquote><strong>NOTE:</strong> This is the scheduling half. If you have not yet let Claude Code work without you watching, read [running Claude Code unattended](/blog/claude-code-running-unattended) first, because a scheduled task is an unattended run with a clock on it. And if you are still in the terminal, [the Claude Code desktop app](/blog/claude-code-desktop-app) is where this feature lives.</blockquote>
<h2>The three ways to schedule Claude Code, and which one to pick</h2>
<p>Claude Code has three schedulers and they are not interchangeable. The CCC Three-Clock Rule is how I keep them straight: pick the scheduler by what has to be true at the moment the task fires. If a session has to be open, use /loop. If your machine has to be on but nothing else, use a desktop scheduled task. If nothing at all has to be true, use a cloud routine. Anthropic's comparison table says the same thing in more columns.</p>
<table><caption>The three schedulers, per Anthropic's Claude Code docs</caption><thead><tr><th></th><th>Cloud routine</th><th>Desktop scheduled task</th><th>/loop in a session</th></tr></thead><tbody><tr><td>Runs on</td><td>Anthropic-managed cloud</td><td>Your machine</td><td>Your machine</td></tr><tr><td>Needs the machine on</td><td>No</td><td>Yes</td><td>Yes</td></tr><tr><td>Needs an open session</td><td>No</td><td>No</td><td>Yes</td></tr><tr><td>Access to local files</td><td>No, fresh clone</td><td>Yes</td><td>Yes</td></tr><tr><td>Permission prompts</td><td>None, runs autonomously</td><td>Configurable per task</td><td>Inherits from the session</td></tr><tr><td>Minimum interval</td><td>1 hour</td><td>1 minute</td><td>1 minute</td></tr></tbody></table>
<p>The reason I chose desktop tasks for the daily review is the local-files row. The review needs the actual working copy, my MCP config, and the allow rules I already set up, and a cloud routine gets a fresh clone with none of that. The reason I did not use /loop is that it is session-scoped and recurring loops expire after seven days, which is fine for babysitting a deploy and wrong for something I want running next month.</p>
<h2>How to create a scheduled task in the desktop app</h2>
<p>In the Code tab, click Routines in the sidebar (or under the sidebar's More menu), then New routine, then Local. You need Claude Desktop 1.1.5368 or later; older builds do not show local tasks at all. There are four fields, and the Instructions box is the one that matters.</p>
<ul><li>Name. Converted to lowercase kebab-case and used as the folder name on disk, so keep it short and unique. Mine is daily-commit-review.</li><li>Description. One line, shown in the task list.</li><li>Instructions. Write this exactly as you would type a message in the prompt box. The pickers under it set the permission mode and the model, and below that you choose the working folder and whether each run gets its own isolated worktree.</li><li>Schedule. Presets are Manual (only runs when you click Run now), Hourly, Daily at a local time, Weekdays, and Weekly with a day picker. For anything else, such as every 15 minutes or the first of the month, ask Claude in any Desktop session in plain language and it sets the schedule for you.</li></ul>
<p>You need a trusted folder before the task will save; Desktop prompts you to trust it if you have not. You can skip the form entirely and just type the request into a session. &quot;Set up a daily code review that runs every morning at 9am&quot; creates a recurring task, and &quot;remind me at 3pm tomorrow to check the deploy&quot; creates a one-time task that disables itself after it fires. I used the form the first time so I could see every field, and I have used plain language since.</p>
<h2>What happened in my first week of runs</h2>
<p>Three things went sideways, and every one of them is covered in the docs if you read them the way I did not.</p>
<p>The lid. Desktop checks the schedule every minute while the app is open, adds a small deterministic delay to stagger API traffic, and starts a fresh session when a task is due. If the computer is asleep at that moment, the run is skipped. I closed the laptop on a Tuesday evening and the Wednesday review did not happen until I opened it that night, because Desktop then runs exactly one catch-up for the most recently missed time within the last seven days and throws the rest away. There is a Keep computer awake switch under Settings, Desktop app, General, but the docs are clear that closing the lid still sleeps the machine. My fix was in the prompt, not the settings: &quot;Only review commits since the last run. If it is after 5pm, skip the review and post a summary of what was missed.&quot; Now a late run is a short run, not a wrong one.</p>
<p>The stall. The second run needed to execute a command I had not approved, and because the task was in a permission mode that asks, it sat in the sidebar waiting for me. That is the correct behaviour, but it is not what you want at 8am. The fix is the one the docs recommend: click Run now right after you create the task, watch for every prompt, and pick always allow on each. Future runs auto-approve the same tools, and you can review or revoke those approvals from the task's Always allowed panel.</p>
<p>The half-finished work. By default a scheduled task runs against whatever state your working directory is in, including uncommitted changes. My Thursday review cheerfully critiqued a feature I was midway through, because I had left it uncommitted overnight. The worktree toggle on the task fixes this: each run gets its own isolated Git worktree, the same way [Claude Code worktrees](/blog/claude-code-worktrees) isolate parallel sessions. Turn it on for anything that reads or edits code.</p>
<h2>Permissions: how to keep a task from stalling</h2>
<p>Each scheduled task has its own permission mode, set when you create or edit it, and the allow rules in your ~/.claude/settings.json apply to scheduled sessions too. So the boring answer is: put the commands the task needs into your allow rules once, run it manually with Run now, approve what is left with always allow, and it will not stall again. A task that runs in Manual mode and hits a tool it is not allowed to use waits for you, and the session stays open in the sidebar until you answer.</p>
<blockquote><strong>WARNING:</strong> MCP tools marked requiresUserInteraction prompt on every single call and never offer always allow. A scheduled task that calls one will stall every run. Either keep those tools out of scheduled prompts or accept that the task is really a reminder to go approve something. [Claude Code permissions explained](/blog/claude-code-permissions-explained) covers how the modes and allow rules fit together.</blockquote>
<h2>Where the prompt lives on disk, and how to manage a task</h2>
<p>Every task gets a folder at ~/.claude/scheduled-tasks/&lt;task-name&gt;/ (or under CLAUDE_CONFIG_DIR if you set one) containing a SKILL.md. The file has YAML frontmatter for name and description, and the body is the prompt. Edit the body and the change applies on the next run, which is how I tuned the review prompt without touching the form. The schedule, folder, model, and enabled state are not in that file; change those through Edit on the task's page or by asking Claude.</p>
<ul><li>Run now starts the task immediately. Use it after every prompt edit so you see the result before the scheduled run does.</li><li>Status toggles Active and Paused, so you can silence a task for a week without deleting it.</li><li>History lists every past run, including skipped ones. Hover a skipped entry to see why: the computer was asleep, the previous run was still going, or other tasks were already running.</li><li>Delete archives every session the task created, and a checkbox in the dialog also removes its SKILL.md and data from disk.</li><li>A task can reschedule itself from inside a run using the update_scheduled_task MCP tool, for example moving a review earlier when it notices a release branch. I have not needed it yet, but it is there.</li></ul>
<p>You can also do all of this by asking. &quot;Show me my scheduled tasks&quot; and &quot;pause my dependency-audit task&quot; both work from any Desktop session.</p>
<h2>The two tasks worth setting up first</h2>
<p>Start read-only. A scheduled task can edit files, run commands, commit, and open pull requests, and the temptation is to schedule the whole pipeline on day one. Do not. Schedule the two jobs that produce a report you would read anyway, run them for a week, then decide what to let them touch.</p>
<ol><li>Weekday commit review. Weekdays preset, a morning time, worktree on. The prompt: review the commits since the last run, list anything that looks like a bug, a missing test, or a secret in the diff, and write the findings as a short summary. Do not push. If you want the deeper version, [Claude Code code review](/blog/claude-code-code-review) covers what a good review prompt asks for.</li><li>Weekly dependency audit. Weekly preset, Monday. The prompt: list outdated dependencies, flag anything with a known security advisory, and propose the upgrade order. Report only. Once it has been right for a few weeks, let it open a pull request for the safe ones.</li></ol>
<p>If your project already runs in CI, the same two jobs can run there on a schedule trigger instead, which is what [Claude Code GitHub Actions](/blog/claude-code-github-actions) is for. I run mine on the desktop because the review needs my local MCP servers and my allow rules, and because I like opening the app in the morning to a session that has already done the reading.</p>
<h2>Compare schedules with people running them</h2>
<p>The right cadence and the right prompt come from watching a week of history, not from guessing. Set the two tasks up, leave the worktree toggle on, and read the skipped entries as carefully as the successful ones.</p>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club, members post the scheduled prompts they actually run, what the first week of history looked like, and which permission they had to always-allow to stop the stalls. It is $9 a month at https://www.skool.com/claudecodeclub/about, and if you want the tasks to enforce rules rather than just report on them, [Claude Code hooks that earn their keep](/blog/claude-code-hooks-that-earn-their-keep) is the next step.</blockquote>
<h2>FAQ</h2>
<p><strong>What are Claude Code scheduled tasks?</strong></p><p>Recurring jobs you create from the Routines page in the Claude Code desktop app. Each task starts a fresh Claude Code session at the time and frequency you set, in the folder you choose, with its own permission mode and model. When it runs, you get a desktop notification and the session appears under a Scheduled section in the sidebar so you can review what Claude did.</p>
<p><strong>Do Claude Code scheduled tasks run when my computer is off?</strong></p><p>No. Local desktop scheduled tasks only run while the desktop app is open and the computer is awake. If the machine sleeps through a scheduled time, that run is skipped and Desktop starts one catch-up run for the most recently missed time when it wakes. For work that must run with the machine off, create a remote routine from the same Routines page, which runs in the cloud.</p>
<p><strong>How do I create a scheduled task in Claude Code?</strong></p><p>In the desktop app's Code tab, click Routines, then New routine, then Local. Fill in a name, a description, the instructions, a trusted working folder, and a schedule preset such as Daily or Weekdays. You can also ask Claude in any Desktop session, for example &quot;set up a daily code review that runs every morning at 9am.&quot; You need Claude Desktop 1.1.5368 or later.</p>
<p><strong>Why did my scheduled task stall?</strong></p><p>Usually a permission prompt. Each task has its own permission mode, and if it needs a tool it is not yet allowed to use, the run waits in the sidebar for your approval. Click Run now after creating the task, approve each prompt with always allow, and future runs auto-approve the same tools. MCP tools marked requiresUserInteraction prompt every time and cannot be always-allowed.</p>
<p><strong>What is the difference between a scheduled task and /loop?</strong></p><p>/loop runs a prompt on an interval inside an open session and stops when that session ends; recurring loops also expire after seven days. A desktop scheduled task runs without any session open, persists across restarts, and starts a fresh session each time. Use /loop for polling during a session and a scheduled task for anything you want running next week.</p>]]></content:encoded>
    </item>
    <item>
      <title>How Much to Charge for a Landing Page (Price the Lead, Not the Afternoon)</title>
      <link>https://www.claudecodeclub.ai/blog/how-much-to-charge-for-a-landing-page</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/how-much-to-charge-for-a-landing-page</guid>
      <pubDate>Sat, 26 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Monetization</category>
      <category>Agency</category>
      <category>Freelancing</category>
      <description><![CDATA[How much to charge for a landing page depends on what a lead is worth to the client, not on how long the page takes you to build. A landing page has one job, turning visitors into leads or sales, so the price is a fraction of what those leads are worth, quoted as a fixed fee in three tiers, with copy, integrations, and hosting as their own lines. Here is the method, the tiers, what moves the number, and the mistakes that turn a paid landing page into a free website.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Price a landing page against what a lead is worth to the client, not the hours it takes to build. Find out what a customer is worth and how many the page needs to produce, then quote a fixed fee that is an obvious fraction of that.</li><li>Quote three tiers: the page, the page with copy and a wired-up form, and the page with tracking and a post-launch iteration window. Most clients buy the middle one.</li><li>Copy, integrations, hosting, and revisions are separate lines, not favours. Claude Code turning the build into an afternoon is your margin, never the client's discount.</li></ul>
<h2>How much to charge for a landing page</h2>
<p>How much to charge for a landing page comes down to one question: what is a lead worth to this client, and how many does the page need to produce? A landing page exists to turn a visitor into an enquiry, a booking, or a sale. That makes it the easiest thing in your service list to price on outcome. Work out what one new customer is worth, agree on how many the page should bring in over its first few months, and quote a fixed fee that is an obvious fraction of that number. Never quote hours. The page might take you an afternoon with Claude Code, and the moment the client hears &quot;afternoon&quot; they will price it like one.</p>
<p>This is the CCC Lead-Value Method, and it exists because the landing page is the job new builders underprice more than any other. It looks small. It is one page. So the quote comes out small, and then the copy, the form, the domain, the three rounds of &quot;can we just move this&quot; and the hosting question all land on you for free. Priced properly, a landing page is a clean, repeatable offer with a high margin and a natural upsell into the client's next page.</p>
<blockquote><strong>NOTE:</strong> This is the pricing half. The build half, from blank folder to a live URL, is in [how to build a landing page with Claude Code](/blog/build-a-landing-page-with-claude-code). The fixed-price logic underneath every number here is in [how to price a Claude Code agency project](/blog/how-to-price-a-claude-code-agency-project).</blockquote>
<h2>Ask what a lead is worth before you say a number</h2>
<p>You cannot price a landing page until you know what it is for, so the first conversation is a measurement, not a pitch. Four questions get you there: what should a visitor do on this page, what is a new customer worth to you, how many of them do you need this page to bring in, and what are you doing today instead? The answers give you a value for the page in the client's own numbers, which is the only kind of number they do not argue with.</p>
<ul><li>Pin the single action. A landing page has one goal: book a call, join a list, buy the thing. If the client wants three goals, that is a website, and it is priced as one.</li><li>Get the customer value from them, not from you. A dentist, a wedding photographer, and a SaaS founder will each give you a very different number, and each number makes your quote look small next to it.</li><li>Ask what they are doing now. A page that replaces nothing is priced against the leads it creates. A page that replaces an agency retainer or a broken template is priced against what that costs them.</li><li>Say the value back before you quote. Once the client has agreed that one customer is worth what they said, the price of the page is a fraction of a number they already accepted.</li></ul>
<p>If you want the full question set, [client discovery questions before you quote](/blog/client-discovery-questions-before-you-quote) has the version I run on every deal, landing page or not.</p>
<h2>The CCC Landing Page Price Stack: three tiers</h2>
<p>A landing page quote has three shapes, and you present all three. The bottom tier proves you are affordable, the top tier makes the middle look sensible, and the middle is the one you actually want to sell because it is the one that gets the client a result they will talk about.</p>
<table><caption>The CCC Landing Page Price Stack</caption><thead><tr><th>Tier</th><th>What the client gets</th><th>How to price it</th></tr></thead><tbody><tr><td>Launch</td><td>One page, built from copy the client supplies, designed to their brand, deployed on a live URL, one round of revisions</td><td>A fixed fee that is a small, obvious fraction of one customer's value. Fast to say yes to</td></tr><tr><td>Convert</td><td>Everything in Launch, plus copy written from a call with them, a form or booking flow wired into their tool, and basic analytics so they can see it working</td><td>The anchor tier. Priced against the leads agreed in discovery. This is where most clients land</td></tr><tr><td>Grow</td><td>Everything in Convert, plus a second variant of the page and a fixed iteration window after launch where you adjust it against real traffic</td><td>Priced for the client who already knows the page is a revenue line. Sets up the retainer</td></tr></tbody></table>
<p>The reason the middle tier wins is copy and the form. A page with the client's own copy pasted in and a form that emails nobody is a brochure. A page with copy written to the goal and a form that lands in their CRM or calendar is a lead machine, and clients can feel the difference even before they see numbers. Put the difference in the table and let them choose it. The three-tier logic is the same one in [how much to charge for a chatbot](/blog/how-much-to-charge-for-a-chatbot); the tiers change, the shape does not.</p>
<h2>What moves a landing page quote up or down</h2>
<ul><li>Who writes the copy. Copy is half the result and most of the revisions. If you write it, it is a line on the quote. If the client writes it, the quote says so and the revision round covers layout, not wording.</li><li>Whether a brand exists. A client with a logo, colours, and photos is a build. A client with none of those is a build plus a design decision they will want to revisit, and that time is priced.</li><li>Integrations. A form that emails them is included. A form that creates a lead in their CRM, books a slot in their calendar, or takes a payment is each its own line, because each one is its own thing that can break.</li><li>Domain, hosting, and account ownership. Build on the client's accounts, under their billing. It costs a few minutes of setup, it goes on the quote, and it means the page survives if you two part ways.</li><li>Revisions. Name the number. [How many revisions to include in an AI project](/blog/how-many-revisions-to-include-in-an-ai-project) covers where to set it; on a landing page the answer is fewer than the client expects and clearly written down.</li><li>Speed. A page needed by Friday for a launch is worth more than the same page needed sometime next month, and the client already knows it.</li></ul>
<h2>The mistakes that turn a paid landing page into a free website</h2>
<ul><li>Quoting hours. The instant you say it is a small job, you have priced it as a small job. Talk about what the page is for and what a lead is worth, nothing else.</li><li>Not defining &quot;landing page&quot; on paper. One page, one goal, one call to action. The moment there is a navigation bar with five sections that each want their own page, it is a website, and the quote needs to change with it.</li><li>Unlimited revisions, or worse, unstated ones. Every &quot;can we just move this&quot; is a revision. Number them.</li><li>Hosting it on your own account. Now you are the hosting company, forever, for free.</li><li>No line for changes after launch. Text changes, a new offer, a seasonal banner: they will ask, and you need a monthly line that already covers it. [How to price a maintenance retainer](/blog/how-to-price-a-maintenance-retainer) has the shape.</li><li>Letting them watch the build. Claude Code turning a day of work into an afternoon is your margin story. It is not the client's discount. The client is paying for the leads the page produces, and that number did not change because you built it fast. [Why I stopped charging hourly for AI builds](/blog/stopped-charging-hourly-for-ai-builds) is the longer argument.</li></ul>
<h2>How to present the number so it closes</h2>
<p>Lead with the value you already agreed, then put the three tiers underneath it. &quot;You said a new customer is worth this much, and we agreed the page should bring in this many; here are three ways to build it&quot; is a sentence a client can approve on the spot. Send it as [a one-page proposal](/blog/one-page-ai-proposal-that-closes), never as a list of technologies, and put the scope, the revision count, and who owns which account on the same page. The format in [how to write a statement of work for an AI project](/blog/how-to-write-a-statement-of-work-for-an-ai-project) is more than enough for a landing page.</p>
<p>The push-back you will hear is &quot;we could do it on a page builder for free&quot; or &quot;that seems like a lot for one page.&quot; Both are answered by the number you measured together: a free page that converts nobody costs them every customer it did not bring in, and the price of yours is a fraction of one. If they push harder, [the &quot;can you do it cheaper&quot; objection](/blog/can-you-do-it-cheaper-objection) has the exact words, and the honest answer is often the Launch tier.</p>
<h2>Put the price stack in front of a real client this week</h2>
<p>A landing page is the easiest first sale in this business because every local service, every coach, and every small product launch needs one and most of them have a page they are quietly embarrassed by. Price it on what a lead is worth, quote three tiers, and the second page for the same client is a shorter conversation than the first.</p>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club, members share the landing page quotes they actually sent, which tier the client picked, and which line item they forgot to include the first time. It is $9 a month at https://www.skool.com/claudecodeclub/about, and if you have not shipped the build side yet, start with [how to build a landing page with Claude Code](/blog/build-a-landing-page-with-claude-code) so you have a live URL to point at when you quote.</blockquote>
<h2>FAQ</h2>
<p><strong>How much should I charge for a landing page?</strong></p><p>Price it against what a lead is worth to the client, not the hours it takes to build. Find out what a new customer is worth, agree how many the page should bring in, and quote a fixed fee that is an obvious fraction of that. Offer three tiers - the page, the page with copy and a wired-up form, and the page with tracking and a post-launch iteration window - and let the client choose.</p>
<p><strong>Should copy be included in a landing page price?</strong></p><p>Only if you are writing it, and then it is its own line. Copy is half the result and most of the revisions, so the quote should say clearly who writes it. If the client supplies copy, the revision round covers layout and not wording, and that should be written down before you start.</p>
<p><strong>What makes a landing page more expensive?</strong></p><p>Copy you write, a brand that does not exist yet, integrations that push leads into a CRM, calendar, or payment tool, a rush deadline, and extra revisions. Each is a separate line on the quote. Build effort is not the driver; what the page connects to and who has to write for it are.</p>
<p><strong>Should I charge a monthly fee for a landing page?</strong></p><p>Yes, a small one. Hosting, domain renewals, and text changes after launch will all come up, and a monthly line means the answer to &quot;can we change the offer&quot; is already paid for. Build on the client's accounts so the page survives if you part ways, and keep the monthly for the work of keeping it current.</p>
<p><strong>What if the client says they can build a landing page for free?</strong></p><p>Go back to the number you measured together. A free page that converts nobody costs them every customer it did not bring in, and your price is a fraction of one customer's value. If the objection is really about budget, offer the Launch tier: the page built from their own copy, deployed live, with one round of revisions.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code Effort Levels: Which One I Set for Each Job (After Opus 5.5)</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-effort-levels</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-effort-levels</guid>
      <pubDate>Fri, 25 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Building</category>
      <category>Workflow</category>
      <description><![CDATA[Claude Code effort levels are five settings - low, medium, high, xhigh, and max - that control how much the model thinks before it answers, and therefore how long a task takes and what it costs. You set one with /effort. Opus 5.5 defaults to medium while every other model defaults to high, so if you switched models this week you are already running one notch lower than you were. Here is what each level actually changes, how to set it in the desktop app, and the ladder I use to pick.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Claude Code has five effort levels - low, medium, high, xhigh, max - set with /effort. Opus 5.5 defaults to medium; every other model defaults to high. Effort is now the only thinking control on Opus 5.5 because adaptive thinking is always on.</li><li>Leave it on medium and only step up when a task actually fails. Higher effort means more thinking tokens per turn, and Opus 5.5 already thinks more per turn than Opus 5 at the same level, so max on a routine edit is paying for reasoning you will never read.</li><li>Two things bite people after the switch: an old effortLevel line in your user settings does not apply to Opus 5.5, and any skill or agent file that pins an older model keeps that model's default. Check both before blaming the model.</li></ul>
<h2>Claude Code Effort Levels</h2>
<p>Claude Code effort levels are a five-step dial - low, medium, high, xhigh, and max - that tells the model how much reasoning to spend on each request. More effort means more thinking, more checking, more tokens, and a slower answer. You set it with the /effort command, and Claude Code remembers your choice per model. The one fact that matters this week: Claude Opus 5.5 defaults to medium, while Opus 5, Fable 5.1, and Sonnet 5 default to high. Adaptive thinking is always on for Opus 5.5, so effort is the only knob you have for how hard it thinks and what a request costs.</p>
<p>My rule is boring on purpose: stay on medium, step up one level when a task fails, and step back down the moment it succeeds. That is the whole method. The rest of this post is what each level actually changes, how to set it without a terminal, and the version of the CCC Effort Ladder I use now that the default moved.</p>
<blockquote><strong>NOTE:</strong> This post is about the effort setting. If you are still using the older thinking keywords in prompts, [Claude Code extended thinking](/blog/claude-code-extended-thinking) covers those, and the full model rundown lives in our [Claude Opus 5.5 guide](/free-resources/claude-opus-5-5).</blockquote>
<h2>What each effort level actually changes</h2>
<p>Effort does not change which model answers. It changes how many tokens the model is allowed to spend thinking before it commits to an action or a reply. At low it scopes tightly to what you asked and moves fast. At max it has no ceiling on thinking and will reason around a problem for as long as it wants. Anthropic's own docs describe max as prone to overthinking with diminishing returns, which matches what I see: on small jobs it produces longer answers, not better ones.</p>
<table><caption>The five levels, per Anthropic's Claude Code docs</caption><thead><tr><th>Level</th><th>What it does</th><th>Where I use it</th></tr></thead><tbody><tr><td>low</td><td>Fastest and cheapest, tight scope, some capability reduction</td><td>Renames, formatting, one-line fixes, subagent lookups</td></tr><tr><td>medium</td><td>Balanced, moderate token savings; the Opus 5.5 default</td><td>Almost everything: features, refactors, tests, writing</td></tr><tr><td>high</td><td>Spends whatever the task needs; default on every model except Opus 5.5</td><td>A bug that beat one attempt, multi-file changes with tradeoffs</td></tr><tr><td>xhigh</td><td>Deeper reasoning for long agentic runs</td><td>Unattended sessions, migrations, codebase audits</td></tr><tr><td>max</td><td>No constraint on thinking; session-only in Claude Code</td><td>Architecture calls I cannot undo cheaply</td></tr></tbody></table>
<p>One detail worth knowing before you carry a habit over from Opus 5: Anthropic notes that at the same effort level, Opus 5.5 tends to think more per turn than Opus 5, most of all at xhigh and max. So a level that felt fine on the old model can be noticeably slower and pricier on the new one. That is exactly why the default dropped a notch.</p>
<h2>How to set the effort level in Claude Code</h2>
<p>In the desktop app, type /effort into the message box and you get a slider. Pick a level and confirm. In the terminal it is the same command. You can also name the level directly - /effort high - or run /effort auto to clear your saved level for the current model and go back to its default. You can run it mid-task; Claude Code applies the new level to the next request.</p>
<ul><li>Claude Code saves the level per model, under modelSettings in your user settings. Switching from Opus 5.5 to Fable 5.1 and back keeps each one's level.</li><li>max is the exception: unless you set it through the CLAUDE_CODE_EFFORT_LEVEL environment variable, it applies to the current session only. That is a sensible guardrail, not a bug.</li><li>Changing effort in the middle of a long session can show a cache warning. Effort is part of what gets cached, so flipping it can mean re-reading context you had already paid for. Set it early in the session when you can.</li><li>The /model picker also lets you choose effort alongside the model, which is the fastest way to set both at once when you start a session.</li></ul>
<blockquote><strong>WARNING:</strong> If you set a top-level effortLevel in your user settings before Claude Code started saving levels per model, that line does NOT apply to Opus 5.5. Opus 5.5 starts at medium until you choose a level for it with /effort or the /model picker. A top-level effortLevel in project, local, or managed settings still applies to every model.</blockquote>
<h2>Why Opus 5.5 moved the default, and what that does to your bill</h2>
<p>Anthropic priced Opus 5.5 at $4 per million input tokens and $20 per million output tokens, down from $5 and $25 on Opus 5, with cache reads at $0.20 per million, 60 percent less than before. Their published claim is that at default settings it costs about 40 percent less than Opus 5 on typical workloads, because the price per token dropped and the model uses fewer tokens per task. The medium default is part of how that 40 percent happens. If you push everything to high or max out of habit, you hand a chunk of that saving straight back.</p>
<p>The benchmark that convinced me to leave medium alone: on Anthropic's Terminal-Bench 4.0 results, Opus 5.5 at its default effort beats Opus 5 at max effort for roughly a fifth of the cost. The published numbers are theirs, not mine, and I treat launch charts as a strong signal rather than a promise. But the shape of it holds up in my sessions - medium finishes most builds cleanly, and the cases where I needed to go up were the ones I would have expected to be hard anyway. If you want the per-task view, [Claude Code token usage](/blog/claude-code-token-usage) shows how to read what a session actually consumed.</p>
<blockquote><strong>NOTE:</strong> Skills, agents, and settings files can pin a specific model by its full name. Anything pinned to an older Opus or Fable keeps running on that model and that model's default effort, no matter what you set in /effort. Search your project for a model line before assuming the whole setup moved.</blockquote>
<h2>The CCC Effort Ladder, recalibrated for Opus 5.5</h2>
<p>The CCC Effort Ladder is the rule I run before touching /effort: match the level to how expensive it would be to get the answer wrong, not to how important the project feels. Importance is a feeling. Cost of a wrong answer is a number you can estimate. With the default now at medium, the ladder looks like this.</p>
<ol><li>medium - the default and the home base. New features, refactors, test writing, documentation, and every prompt where a wrong first pass costs you one more prompt. Leave it here.</li><li>low - when the answer has one obvious shape and speed matters more than depth: renames, formatting, small edits, and subagents doing lookups on your behalf. Anthropic's docs call subagents out as the natural home for low, and I agree.</li><li>high - a bug that already beat one attempt at medium, a change that touches auth or payments, or a multi-file feature where the tradeoffs actually need weighing. Go here on the second attempt, not the first.</li><li>xhigh - anything you are about to let run without you watching. Long migrations, full-repo audits, and the unattended sessions from [running Claude Code unattended](/blog/claude-code-running-unattended). More reasoning per step is worth it when nobody is there to catch a bad step.</li><li>max - rare. A schema or architecture decision you cannot undo cheaply. It is session-only by design, so use it for the decision, then start a fresh session back on medium.</li></ol>
<p>The half of the ladder people skip is the way down. Every time a high or xhigh task finishes, drop back to medium before the next prompt. The level is saved per model, so if you forget, every routine edit for the rest of the week pays for reasoning it does not need.</p>
<h2>The two mistakes I made in the first week</h2>
<p>First mistake: I assumed my old settings carried over. I had an effortLevel line in my user settings from months ago and expected Opus 5.5 to honor it. It did not, because that key only applies to the older models. Opus 5.5 was quietly on medium the whole time, which turned out fine, but I spent a morning wondering why two sessions on two models behaved differently. Run /effort with no arguments and look at the slider before you judge a new model.</p>
<p>Second mistake: I ran a routine cleanup at max because the repo felt important. The answers got longer and slower and the diff was no better than medium would have produced. The docs warn about overthinking at max, and that is exactly what it looked like. The fix was the ladder above: max is for the decision, not for the project.</p>
<h2>Compare notes with people running the same dial</h2>
<p>The right level for your work is something you find by running your three most common jobs at two levels and comparing cost and quality, not by reading charts. That takes an hour and it is the most useful hour you will spend on Opus 5.5 this month.</p>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club, members post what effort level they landed on for real builds, with the token counts to back it up - which is how I found out low was good enough for more than I expected. It is $9 a month at https://www.skool.com/claudecodeclub/about, and if you have not set the model up yet, start with [Claude Code plan mode](/blog/claude-code-plan-mode) so the effort you pay for goes toward a plan you have already approved.</blockquote>
<h2>FAQ</h2>
<p><strong>What are the Claude Code effort levels?</strong></p><p>Five settings - low, medium, high, xhigh, and max - that control how much the model thinks before answering. Higher effort means deeper reasoning, more tokens, and slower replies. Claude Code also offers an ultracode setting that plans a dynamic workflow for each substantive task with xhigh reasoning per message. You set the level with the /effort command.</p>
<p><strong>What is the default effort level in Claude Code?</strong></p><p>It depends on the model. Claude Opus 5.5 defaults to medium. Every other model that supports effort defaults to high, except Opus 4.7, which defaults to xhigh. A request that does not set effort runs at the model's default, so switching from Opus 5 to Opus 5.5 without touching /effort moves you one level down.</p>
<p><strong>How do I change the effort level in Claude Code?</strong></p><p>Type /effort in the message box of the desktop app or the terminal to open a slider, or name the level directly, for example /effort high. Run /effort auto to clear your saved level for the current model. Claude Code saves the level per model under modelSettings in your user settings. The max level is session-only unless set through the CLAUDE_CODE_EFFORT_LEVEL environment variable.</p>
<p><strong>Does a higher effort level cost more?</strong></p><p>Yes. Effort controls how many thinking tokens the model spends, and thinking counts as output, which is the expensive side at $20 per million tokens on Opus 5.5. Anthropic's docs also note that Opus 5.5 thinks more per turn than Opus 5 at the same level, especially at xhigh and max, so a high setting carried over from the old model costs more than it used to.</p>
<p><strong>Should I use max effort for everything on Opus 5.5?</strong></p><p>No. Anthropic's Claude Code docs describe max as prone to overthinking with diminishing returns, and it is session-only for that reason. Start on medium, step up to high when a task fails, use xhigh for long unattended runs, and reserve max for decisions you cannot undo cheaply. Drop back to medium afterward, because the level is saved per model.</p>]]></content:encoded>
    </item>
    <item>
      <title>How Much to Charge for an AI Automation (Price the Hours It Removes)</title>
      <link>https://www.claudecodeclub.ai/blog/how-much-to-charge-for-an-ai-automation</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/how-much-to-charge-for-an-ai-automation</guid>
      <pubDate>Fri, 25 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Monetization</category>
      <category>Agency</category>
      <category>Freelancing</category>
      <description><![CDATA[How much to charge for an AI automation is set by the hours it removes from the client's month, not the hours it takes you to build. Measure the manual work first, quote a fixed setup fee against that saving, add a monthly run fee because automations break when the apps they touch change, and list every connected system as its own line. Here is the method, the three parts of the quote, what moves the number, and the mistakes that quietly give the margin away.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Price an AI automation against the hours it removes each month, not the hours it takes to build. Find the manual work, put a monthly value on it, and quote a fixed setup fee that is a clear fraction of the first year's saving.</li><li>Every automation quote has three parts: a fixed setup fee, a monthly run fee, and a separate line for each system it connects to. Skip the monthly and you own every breakage for free.</li><li>The number moves on integrations, error cost, and volume - not on how clever the build is. Claude Code compressing your build time is your margin, never the client's discount.</li></ul>
<h2>How much to charge for an AI automation</h2>
<p>How much to charge for an AI automation comes down to one measurement: how many hours of someone's month does it remove, and what does an hour of that person cost the business? That monthly value is your anchor. Quote a fixed setup fee that sits well below the first year's saving, add a monthly run fee on top because automations do not stay working on their own, and price each connected system as its own line. Never quote build hours. A client who hears the build took a day will price it like a day's work, no matter how much it saves them.</p>
<p>This is the CCC Hours-Removed Method, and it exists because automation is the offer where builders undercharge most. The build looks small, so the price comes out small, and the client quietly pockets thousands in saved labour every month while you collected a one-time fee that did not cover the third support ticket.</p>
<blockquote><strong>NOTE:</strong> This is the pricing half. The build half - what a small automation actually looks like inside Claude Code - is in [automate your spreadsheets with Claude Code](/blog/automate-your-spreadsheets-with-claude-code), and the fixed-price logic underneath everything here is in [how to price a Claude Code agency project](/blog/how-to-price-a-claude-code-agency-project).</blockquote>
<h2>Measure the hours before you say a number</h2>
<p>You cannot price an automation you have not measured, so the first call is a measurement call, not a pitch. Four questions get you there: who does this task today, how often does it happen, how long does each one take, and what happens when it is done late or wrong? The answers give you hours per month and a cost per hour. Multiply them and you have the monthly value of the automation in the client's own numbers, which is the only kind of number they cannot argue with.</p>
<ul><li>Ask for a real week, not an estimate. &quot;Walk me through last Tuesday&quot; surfaces the copy-paste steps people forget they do.</li><li>Count the error cost separately. A task that takes twenty minutes but occasionally costs a lost order is worth far more than its minutes.</li><li>Note who is doing it. Two hours a week of the owner's time is priced very differently from two hours of an assistant's.</li><li>Write the number down and say it back to them before you quote. Once the client has agreed on the value, the price is a fraction of a number they already accepted.</li></ul>
<p>If you want the full question set, [client discovery questions before you quote](/blog/client-discovery-questions-before-you-quote) has the version I run on every deal.</p>
<h2>The three parts of an automation quote</h2>
<p>An automation is not a website. It runs every day, it depends on other people's software, and it fails silently when one of those tools changes. So the quote has to have three parts, and each one has a job.</p>
<table><caption>The CCC Hours-Removed Method: what goes on the quote</caption><thead><tr><th>Part</th><th>What it covers</th><th>How to set it</th></tr></thead><tbody><tr><td>Setup fee</td><td>Discovery, the build, testing against real data, handover</td><td>A fixed price that is a clear fraction of the first year's saving - big enough to feel serious, small enough to be an obvious yes</td></tr><tr><td>Monthly run fee</td><td>Monitoring, fixing breakages when a connected app changes, usage costs, small adjustments</td><td>Priced against the monthly value; includes a stated volume so a spike becomes an upgrade conversation</td></tr><tr><td>Integration lines</td><td>Each system the automation reads from or writes to</td><td>One line per system with its own price, so the next system is an upsell rather than an argument</td></tr></tbody></table>
<p>The monthly fee is the part people drop, and it is the part that decides whether the deal makes money. Every connected app will change its login, its export format, or its API eventually. If there is no monthly, that fix is a free favour and the third free favour is where the relationship sours. The recurring logic is the same as [how to price a maintenance retainer](/blog/how-to-price-a-maintenance-retainer), with a harder floor underneath it because the automation really does stop working without you.</p>
<h2>What moves an automation quote up or down</h2>
<ul><li>Number of systems connected. This is the biggest driver. Each system is its own scope, its own failure mode, and its own line on the quote.</li><li>Cost of an error. An automation that sends invoices or touches customer records carries a higher price than one that files reports, because being wrong costs the client real money and you will be asked to guarantee it.</li><li>Human-in-the-loop steps. A review step before anything is sent is safer for the client and more work for you - price the approval flow, do not throw it in.</li><li>Volume. Ten runs a day and ten thousand runs a day are different products. Put the covered volume in writing.</li><li>Who owns the accounts. Build on the client's accounts, under the client's billing, so usage costs land where they belong and the automation survives if you part ways.</li><li>Data sensitivity. Anything touching payment or personal data needs a scope document and a longer testing phase, and both belong in the price.</li></ul>
<h2>The pricing mistakes that kill automation margin</h2>
<ul><li>Quoting the build, not the outcome. The moment you say &quot;it is a small build&quot; you have priced it as a small build. Talk about hours removed and nothing else.</li><li>Writing &quot;connects to your tools&quot; in the scope. Every tool the client thinks of later is now included. Name each one, with a price.</li><li>No monthly fee. You now own every breakage, every API change, and every &quot;it stopped working&quot; text, for free, forever.</li><li>Letting them see the build speed. Claude Code turning a week of work into an afternoon is your margin story. It is not the client's discount. The client is paying for the hours they get back every month, and that number did not change because you built it fast.</li><li>Skipping the one-page scope. What triggers the automation, what it does, what it does not do, what happens on failure, and who gets told. Use the format in [how to write a statement of work for an AI project](/blog/how-to-write-a-statement-of-work-for-an-ai-project) before you start.</li></ul>
<h2>How to present the number so it closes</h2>
<p>Lead with the saving you already agreed on, then put the price next to it. &quot;This removes about the hours we counted, every month, and here is the setup fee and the monthly to keep it running&quot; is a sentence the client can approve on the spot. Offer three shapes - the single automation, a bundle of the three tasks they complained about most, and a monthly retainer where you keep adding to it - and most clients pick the middle one. Send it as [a one-page proposal](/blog/one-page-ai-proposal-that-closes), never as a menu of technologies.</p>
<p>When the push-back comes, it is nearly always &quot;we could just do it ourselves&quot; or &quot;that seems like a lot for something small.&quot; Both are answered by the number you measured together: the price is a fraction of what the task costs them today. If they push harder, [the &quot;can you do it cheaper&quot; objection](/blog/can-you-do-it-cheaper-objection) has the exact words.</p>
<h2>Put the method in front of a real client this week</h2>
<p>Pricing only earns money when it is in front of someone with a repetitive task and a budget. Local service businesses, agencies, and small e-commerce shops all have a spreadsheet someone updates by hand every Monday, and nobody has offered them a straight number for making it go away.</p>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club, members share the automation quotes they actually sent, what closed, and which integration line caused the scope fight - real numbers from real deals. It is $9 a month at https://www.skool.com/claudecodeclub/about, and if you want the build side first, start with [5 Claude Code workflows that get you paid](/blog/5-claude-code-workflows-that-get-you-paid).</blockquote>
<h2>FAQ</h2>
<p><strong>How much should I charge for an AI automation?</strong></p><p>Price it against the hours it removes from the client's month, not the hours it takes to build. Measure who does the task, how often, how long, and what errors cost, then quote a fixed setup fee that is a clear fraction of the first year's saving, plus a monthly run fee, plus a separate line for each connected system. Never quote build hours.</p>
<p><strong>Should an AI automation have a monthly fee?</strong></p><p>Yes, every time. Automations depend on other people's software and stop working when a connected app changes its login, export, or API. The monthly fee covers monitoring, fixing those breakages, usage costs, and small adjustments within a stated volume. Without it, every breakage is a free favour you are obliged to do.</p>
<p><strong>What makes an AI automation more expensive to build?</strong></p><p>The number of systems it connects to is the biggest driver, followed by the cost of an error (invoicing and customer records carry more risk than reporting), any human approval steps, run volume, and data sensitivity. Build difficulty is not the driver - what the automation touches is.</p>
<p><strong>Should I tell the client the automation was built with Claude Code?</strong></p><p>Be honest about your stack if asked, but keep the pricing conversation on the hours removed. Build speed is your margin story, not the client's discount. The client is paying for the labour they get back every month, and that number is the same whether the build took a week or an afternoon.</p>
<p><strong>How do I price several automations for the same client?</strong></p><p>Offer three shapes: a single automation, a bundle of the three tasks they complained about most, and a monthly retainer where you keep adding automations over time. Present all three on a one-page proposal with the saving you measured together at the top. Most clients pick the middle option, and the retainer is the natural upgrade once the first one is running.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Build a CRM With Claude Code (Weekend Build, Real Pipeline)</title>
      <link>https://www.claudecodeclub.ai/blog/build-a-crm-with-claude-code</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/build-a-crm-with-claude-code</guid>
      <pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Building</category>
      <category>Workflow</category>
      <description><![CDATA[To build a CRM with Claude Code, open the desktop app, define your data model in plain language - contacts, deals, notes, stages - and delegate the build one phase at a time: foundation, pipeline view, then polish. You end up with a CRM shaped exactly around how you actually sell, instead of paying monthly for a tool where you use four fields. Here is the full build order, the exact first prompt, and the mistakes that turn a weekend build into a month.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>To build a CRM with Claude Code, define the data model first - contacts, deals, stages, notes - then delegate the build in three phases: foundation (database plus contact list), the pipeline board, then the touches that make it daily-drivable. Each phase ends with something you can run and review.</li><li>A personal CRM is one of the best first real builds with Claude Code because you are the user, the client, and the tester. There is no requirements guessing - you already know exactly how you track deals.</li><li>The mistake that sinks most CRM builds is starting with features instead of data. Nail four tables before any UI exists and every screen afterward is a view over data that already makes sense.</li></ul>
<h2>Build a CRM With Claude Code</h2>
<p>To build a CRM with Claude Code, open the desktop app, describe your sales process in plain language, and let Claude Code generate the database, the contact views, and the pipeline board in phases you review as you go. You do not need to know how to code - you need to know how you track deals, and you already do. The whole point of building your own CRM is that it matches your actual process: your stages, your fields, your follow-up rhythm - not a vendor's idea of a sales team you do not have.</p>
<p>This is a genuinely good first real project. Unlike client work, there is no requirements risk - you are the user. Unlike a toy demo, you will open it every day, which means you will notice what is missing and feed that straight back into the next session. If you have not set up the app yet, start with [the Claude Code desktop app walkthrough](/blog/claude-code-desktop-app), then come back here.</p>
<blockquote><strong>NOTE:</strong> This build follows the CCC Phase-Build method - the same foundation-first order used in [how to build a SaaS with Claude Code](/blog/build-a-saas-with-claude-code): data model, then core loop, then polish, with something runnable at the end of every phase.</blockquote>
<h2>Start with the data model, not the screens</h2>
<p>Every CRM, from a spreadsheet to an enterprise suite, is four things wearing different outfits: people, deals, notes, and stages. Define those before any UI exists and every screen Claude Code builds afterward is just a view over data that already makes sense. Skip this step and you will be renaming columns and migrating half-filled tables in week two.</p>
<table><caption>The four tables of a working personal CRM</caption><thead><tr><th>Table</th><th>What it holds</th><th>The fields that matter</th></tr></thead><tbody><tr><td>Contacts</td><td>Every person or company you talk to</td><td>Name, company, email, source, and one freeform context field</td></tr><tr><td>Deals</td><td>Each potential project or sale</td><td>Title, contact, value, stage, expected close, next action</td></tr><tr><td>Notes</td><td>Every interaction, attached to a contact or deal</td><td>Date, text, and what kind of touch it was - call, email, DM</td></tr><tr><td>Stages</td><td>Your pipeline columns, in order</td><td>Name and position - keep it to five or six, not twelve</td></tr></tbody></table>
<p>Write your real stages down before you prompt. If your process is lead, contacted, call booked, proposal sent, won or lost - that is five columns and it is enough. The single highest-leverage field in the whole system is next action on the deal: one line that says what you do next and when. A CRM that always answers &quot;who do I follow up with today&quot; has already beaten most paid tools at the only job that matters.</p>
<h2>The first prompt and the three-phase build order</h2>
<p>Open Claude Code in a fresh project folder and hand it the data model as your first instruction, not a feature list. Something like: &quot;Build me a personal CRM as a local web app. Data model: contacts, deals, notes, and pipeline stages - here are the exact fields and my five stages. Start with the database schema and a contact list page with add and edit. Do not build the pipeline board yet.&quot; Asking it to hold off on later phases is deliberate - you want a small, reviewable first slice, not a wall of generated screens.</p>
<ol><li>Phase 1 - foundation. Database schema plus a contact list with add, edit, and search. Run it, add five real contacts from your actual pipeline, and fix anything that feels wrong now, while the system is small.</li><li>Phase 2 - the pipeline. A board view with your stage columns, deals as draggable cards, and a deal detail page showing its notes and next action. This is the core loop - the screen you will live in.</li><li>Phase 3 - daily drivability. A today view listing every deal whose next action is due, quick-add for notes, and won-lost totals per stage. Small touches, but they are what turn a demo into a tool you open every morning.</li></ol>
<p>Each phase is one or two sessions. End every phase by actually using the thing with real data - your contacts, your live deals - because real usage surfaces the corrections a demo never will. If a phase went sideways, the fix is a clear follow-up instruction, and [how to prompt Claude Code](/blog/how-to-prompt-claude-code) covers the goal-context-constraints shape that keeps those corrections short.</p>
<blockquote><strong>TIP:</strong> Keep it local-first. A CRM on your own machine backed by a simple database file needs no hosting, no accounts, and no monthly bill. When you later want it on more than one device, that is a deployment phase - [connect Claude Code to a database](/blog/connect-claude-code-to-a-database) covers the upgrade path.</blockquote>
<h2>The mistakes that turn a weekend into a month</h2>
<p>CRM builds fail in predictable ways, and almost all of them are scope decisions, not code problems. These are the ones worth avoiding on purpose.</p>
<ul><li>Building email integration first. Syncing your inbox is the hardest feature in any CRM and the least necessary in week one. Log touches as notes by hand for a while - if you feel real friction, that is the signal to build it later, with evidence.</li><li>Copying a SaaS CRM's feature list. You are not building a competitor product - you are building your process. Every screen a vendor ships for a ten-person sales team is a screen you will never open.</li><li>Twelve pipeline stages. If two adjacent stages get the same follow-up behavior from you, they are one stage. Fewer columns means the board tells you something at a glance.</li><li>Skipping real data until the end. Five real contacts in phase 1 will catch a wrong field or a missing stage in minutes. Fake seed data validates nothing.</li></ul>
<p>One more that deserves its own line: review what Claude Code produced before you pile the next phase on top. You do not need to read every line - run the app, click through the loop, and check the schema matches the model you wrote. [How to review Claude Code output before you ship](/blog/review-claude-code-output-before-you-ship) is the fuller checklist.</p>
<h2>Where this build takes you next</h2>
<p>The quiet bonus of this project: a working CRM is a portfolio piece and a sellable skill in one. Every freelancer, coach, and small agency runs on a spreadsheet that is quietly failing them, and the person who built their own pipeline tool is the obvious person to build one shaped around someone else's process. If that direction appeals, [how to scope a Claude Code client project](/blog/how-to-scope-a-claude-code-client-project) shows how to turn a build like this into paid work.</p>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club, members ship builds like this every week and post the prompts, schemas, and stumbles that got them there - so your first CRM does not have to hit every mistake solo. It is $9 a month at https://www.skool.com/claudecodeclub/about, and [what I built in week one of the club](/blog/what-i-built-in-week-one-of-the-club) shows what the first week actually looks like.</blockquote>
<h2>FAQ</h2>
<p><strong>Can I build a CRM with Claude Code without knowing how to code?</strong></p><p>Yes. You describe the system in plain language - your contacts, deals, pipeline stages, and the fields you care about - and Claude Code generates the database, pages, and logic. Your job is defining the data model, reviewing each phase by actually using it, and steering with follow-up instructions. The desktop app handles the technical setup, no terminal required.</p>
<p><strong>How long does it take to build a CRM with Claude Code?</strong></p><p>A personal CRM with the four core tables - contacts, deals, notes, stages - plus a pipeline board and a today view is a weekend-scale project across a handful of sessions. What stretches it into a month is scope: email sync, a dozen stages, or copying a vendor's feature list. Follow the three-phase order and each phase ends with something runnable.</p>
<p><strong>Why build your own CRM instead of paying for one?</strong></p><p>Because a built CRM matches your actual process - your stages, your fields, your follow-up rhythm - while a paid CRM makes you work inside a vendor's model built for sales teams. A local-first build also has no monthly bill and no accounts. The tradeoff is you maintain it, which is why the build stays deliberately small: four tables and the views you genuinely use.</p>
<p><strong>What features should a first CRM build include?</strong></p><p>Contacts with add, edit, and search; deals with value, stage, and a next-action field; notes attached to contacts and deals; a pipeline board with your real stages; and a today view of due follow-ups. That is the whole first version. The next-action field is the highest-leverage piece - a CRM that answers &quot;who do I follow up with today&quot; is already doing the job.</p>
<p><strong>What database should Claude Code use for a personal CRM?</strong></p><p>Start with a simple local database file - it needs no hosting, no configuration, and no cost, and Claude Code will set it up as part of the foundation phase. If you later want the CRM available on multiple devices or shared with a partner, move to a hosted database as a separate deployment phase rather than taking on that complexity on day one.</p>]]></content:encoded>
    </item>
    <item>
      <title>How Much to Charge for a Chatbot (The Three-Tier Pricing That Closes)</title>
      <link>https://www.claudecodeclub.ai/blog/how-much-to-charge-for-a-chatbot</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/how-much-to-charge-for-a-chatbot</guid>
      <pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Monetization</category>
      <category>Agency</category>
      <category>Freelancing</category>
      <description><![CDATA[How much to charge for a chatbot depends on what it is wired into, not how hard it is to build. Price the tier, not the hours: a scripted FAQ bot, an AI bot grounded in the client's own content, or a bot connected to live business systems - each is a different deliverable at a different fixed price, plus a monthly fee on every AI tier. Here is the three-tier structure, what moves a quote up or down, and the pricing mistakes that quietly kill margin.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Price chatbots by tier, not by hours: a scripted FAQ bot, an AI bot answering from the client's own content, or a bot integrated with live business systems. Each tier is a different deliverable at a different fixed price - integrations are what move a quote, not build effort.</li><li>Every AI-powered tier needs a monthly fee on top of the build price. The bot consumes API usage every day it runs and someone has to keep its answers current - unpriced, both come out of your pocket.</li><li>Quote the outcome, not the technology. The client is buying answered questions at midnight and captured leads - the fact that Claude Code compresses your build time is your margin story, not your pricing story.</li></ul>
<h2>How much to charge for a chatbot</h2>
<p>How much to charge for a chatbot comes down to one question: what is it wired into? A scripted FAQ bot that answers from a fixed set of responses, an AI bot that answers from the client's own documents and site content, and a bot connected to live systems - booking, orders, a CRM - are three different products at three different prices, even if the client calls all of them &quot;a chatbot.&quot; Price the tier as a fixed project fee, add a monthly fee on every AI tier, and never quote hours.</p>
<p>This is the CCC Chatbot Pricing Ladder: three tiers a client can point at, each described by what the bot can do rather than how it works. It kills the vague &quot;how much for a chatbot&quot; conversation, because the client stops pricing a mystery and starts choosing a deliverable - and most will talk themselves up a tier once they see what the next rung does.</p>
<blockquote><strong>NOTE:</strong> This is the pricing half of the picture. The build half - what actually goes into each tier - is covered in [how to build a chatbot with Claude Code](/blog/build-a-chatbot-with-claude-code), and the general fixed-price logic behind it lives in [how to price a Claude Code agency project](/blog/how-to-price-a-claude-code-agency-project).</blockquote>
<h2>The three tiers, and what moves a quote</h2>
<p>The tiers are separated by capability, and capability is separated by integrations. That is the honest cost driver: wiring a bot into a booking system or a CRM is where the real scope lives, so it is where the price moves.</p>
<table><caption>The CCC Chatbot Pricing Ladder</caption><thead><tr><th>Tier</th><th>What the bot does</th><th>How to price it</th></tr></thead><tbody><tr><td>Scripted FAQ bot</td><td>Answers a fixed set of questions with pre-written responses, hands off to a human or a contact form</td><td>Low fixed fee - an entry product, priced to close fast and open the relationship</td></tr><tr><td>Grounded AI bot</td><td>Answers naturally from the client's own content - site, docs, policies - and captures leads</td><td>Mid fixed fee plus monthly - this is the default tier most small businesses actually need</td></tr><tr><td>Integrated AI bot</td><td>Everything in tier two, plus live actions: check availability, book, look up an order, write to the CRM</td><td>Highest fixed fee plus monthly - price per integration, because each one is its own scope</td></tr></tbody></table>
<ul><li>Integrations move the price most. Each connected system is a scoped line item with its own fee. Name them individually in the quote so adding one later is an upsell, not an argument.</li><li>Content volume moves the mid tier. A bot grounded in ten pages and a bot grounded in three hundred support articles are different setup jobs - ask how much content exists before you quote.</li><li>Channels multiply surface area. Website widget only is the default; the same bot on WhatsApp or Instagram is an add-on per channel, not a freebie.</li><li>Who keeps answers current moves the monthly. If you update the bot's knowledge when their prices and policies change, that maintenance is priced in the monthly fee - never bundled silently into the build.</li></ul>
<h2>Why every AI tier carries a monthly fee</h2>
<p>A chatbot is not a website - it costs money every day it runs. Every conversation on an AI tier consumes API usage, and every change to the client's business quietly makes some answer stale. If you hand over an AI bot for a one-time fee, you have either signed up to pay its running costs yourself or handed the client a bot that is slowly going wrong with your name on it.</p>
<p>So the rule is simple: every AI-powered tier ships with a monthly fee that covers usage within a stated conversation volume, a monthly review of what people actually asked, and knowledge updates when the business changes. Put the volume number in the agreement so a traffic spike becomes a plan upgrade conversation instead of a margin leak. This is the same recurring logic as [how to price a maintenance retainer](/blog/how-to-price-a-maintenance-retainer) - the chatbot version just has a hard cost floor underneath it, which makes the monthly fee easier to defend, not harder.</p>
<blockquote><strong>WARNING:</strong> Never quote an AI chatbot as one-time-only. The build fee without the monthly is not a smaller version of the deal - it is a different deal where you own the running costs and the reputation risk for free.</blockquote>
<h2>Quote the outcome, not the technology</h2>
<p>The client is not buying a chatbot. They are buying questions answered at midnight, leads captured while they sleep, and fewer repetitive emails in their inbox. Every line of the quote should be written in that language. &quot;Your visitors get instant answers from your own content, 24 hours a day, and every conversation that looks like a buyer gets captured with contact details&quot; closes. &quot;AI-powered conversational agent with retrieval over your knowledge base&quot; gets you a confused pause and a price objection.</p>
<p>And keep the build mechanism out of the pricing conversation entirely. Claude Code compressing a chatbot build from weeks to days is your margin story, not the client's discount. Anchor the price against what the bot replaces - hours of answering the same questions, missed after-hours leads, a part-time hire they were considering - and the fixed fee sounds small next to the problem. If they push on price anyway, that conversation is handled in [the &quot;can you do it cheaper&quot; objection](/blog/can-you-do-it-cheaper-objection).</p>
<h2>The pricing mistakes that kill chatbot margin</h2>
<ul><li>Quoting before you have seen the content. The number one source of underwater chatbot projects is discovering after signing that the client's &quot;docs&quot; are forty contradictory PDFs. Ask for the content before the number leaves your mouth.</li><li>Leaving integrations vague. &quot;Connects to your systems&quot; in a quote means every system they think of later is included. Name each integration as its own line with its own price.</li><li>Skipping the scope document. A chatbot deal has more assumption gaps than most builds - channels, volume, who updates knowledge, what happens when the bot cannot answer. Put it on one page using [the statement of work format](/blog/how-to-write-a-statement-of-work-for-an-ai-project) before you start.</li><li>Treating the FAQ tier as beneath you. The scripted bot is a fast, low-risk yes that opens the account - and the upgrade conversation to the AI tier starts the first time the client sees a question the scripts cannot handle.</li><li>Unlimited revisions on the bot's personality. Tone and wording tweaks are the scope creep vector on chatbot projects. Include a set number of revision rounds, then bill per round.</li></ul>
<h2>Put the ladder in front of a real client</h2>
<p>Pricing structure only earns money when it is in front of someone with a problem. The pitch is one paragraph: three tiers, each described by outcome, each with a fixed price and a clear monthly where it applies - sent as [a one-page proposal](/blog/one-page-ai-proposal-that-closes), not a menu of technologies. Local service businesses, coaches, and small e-commerce shops are the natural first market, because they feel the repeated-questions problem daily and nobody has offered them a straight answer on price.</p>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club, members share the chatbot quotes they actually sent, what closed, and where the scope fights came from - real numbers from real deals, not theory. It is $9 a month at https://www.skool.com/claudecodeclub/about, and if you have not shipped the build side yet, start with [how to build a chatbot with Claude Code](/blog/build-a-chatbot-with-claude-code).</blockquote>
<h2>FAQ</h2>
<p><strong>How much should I charge for a chatbot?</strong></p><p>Price by tier, not by hours. A scripted FAQ bot is a low fixed fee priced to close fast. An AI bot grounded in the client's own content is a mid fixed fee plus a monthly. A bot integrated with live systems - booking, orders, CRM - is the highest fixed fee, priced per integration, plus a monthly. The tier is set by what the bot is wired into, because integrations are where the real scope lives.</p>
<p><strong>Should a chatbot have a monthly fee?</strong></p><p>Every AI-powered tier should. The bot consumes API usage each day it runs, and the client's business changes make answers stale over time. The monthly covers usage within a stated conversation volume, a review of what people asked, and knowledge updates. A one-time-only AI bot deal means you own the running costs and the reputation risk for free.</p>
<p><strong>What makes a chatbot project more expensive?</strong></p><p>Integrations first - each connected system (booking, orders, CRM) is its own scoped line item. Then content volume for grounded bots, extra channels beyond the website widget, and who is responsible for keeping the bot's knowledge current. Build difficulty is not the driver; what the bot is wired into is.</p>
<p><strong>Should I tell clients the chatbot is built with Claude Code?</strong></p><p>Keep the pricing conversation on outcomes - answered questions, captured leads, fewer repetitive emails - and price against what the bot replaces. The build tooling is your margin story, not the client's discount. If asked directly, be honest about your stack, but do not lead the quote with technology the client cannot evaluate.</p>
<p><strong>What should be in a chatbot project scope document?</strong></p><p>The tier and what the bot can do, the named integrations with individual prices, the channels included, the conversation volume the monthly fee covers, who updates the bot's knowledge, what happens when the bot cannot answer, and a set number of revision rounds on tone and wording. One page, agreed before the build starts - chatbot deals have more assumption gaps than most projects.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Build a Booking System With Claude Code (A Weekend Build)</title>
      <link>https://www.claudecodeclub.ai/blog/build-a-booking-system-with-claude-code</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/build-a-booking-system-with-claude-code</guid>
      <pubDate>Tue, 15 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Building</category>
      <category>Getting Started</category>
      <description><![CDATA[To build a booking system with Claude Code, describe the core loop in plain language - a visitor sees open slots, picks one, and the slot locks so nobody double-books - then let Claude scaffold the calendar, the database, and the confirmation flow while you steer the decisions. This is a full walkthrough of a real weekend build: what to hand Claude first, the double-booking bug that will bite you, and how to ship it live from the desktop app without touching a terminal.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>To build a booking system with Claude Code, hand it the core loop in one sentence - a visitor sees open slots, picks one, and that slot locks - and let Claude scaffold the calendar UI, the database, and the confirmation email while you review each phase.</li><li>The one bug that separates a demo from a real product is double-booking: two people grabbing the same slot at the same second. Name it out loud in your very first prompt so Claude locks the slot at the database layer, not just in the interface.</li><li>You can do the entire build from the Claude Code desktop app - no terminal required. The desktop app is the recommended starting point; the terminal is optional and only earns its place once you want scripted, repeatable runs.</li></ul>
<h2>Build a Booking System With Claude Code</h2>
<p>To build a booking system with Claude Code, describe the outcome you want in plain language and let Claude handle the implementation across the calendar view, the database, and the confirmation flow - while you stay in charge of the decisions. The core loop is small: a visitor lands on a page, sees which times are open, picks one, and that slot locks so nobody else can take it. Everything else - reminders, cancellations, a dashboard for the owner - is a layer you add after that loop works.</p>
<p>The whole thing is a genuine weekend build. Not because the code is trivial, but because Claude Code writes the plumbing while you make the calls that actually matter: what a bookable slot is, what happens when two people want the same time, and what the owner sees on the other side. This walkthrough is the exact order I built one in, including the bug that will bite you if you skip a single sentence in your first prompt.</p>
<blockquote><strong>NOTE:</strong> You can do all of this from the Claude Code desktop app. The desktop app is the easiest place to start - the terminal is optional and only worth it later when you want scripted or scheduled runs. New to the tool? Start with the [curriculum](/curriculum) and [what is Claude Code](/what-is-claude-code) before you build.</blockquote>
<h2>Write the one-sentence brief before you write a prompt</h2>
<p>The build goes fastest when you do the thinking first. Before you open Claude Code, write one plain sentence that names the user, the core loop, and the data. For a booking system that sentence is: a visitor picks an open time slot from a calendar, submits their name and email, and receives a confirmation - while the owner sees every booking in one place. That sentence is worth more than any prompt trick, because Claude can write code from vague instructions but it cannot decide what the product should be.</p>
<p>From that sentence, three data facts fall out, and these are the things you hand Claude first. A slot has a start time, a duration, and a status (open or taken). A booking links one person to one slot. An owner needs a read view of all bookings. Name those three shapes and you have given Claude the spine of the entire app. Everything Claude scaffolds after that hangs off this data model.</p>
<ol><li>Name the user and the outcome: a visitor books an open time slot in under a minute and gets a confirmation.</li><li>Name the core loop: see open slots, pick one, submit details, slot locks, confirmation sent.</li><li>Name the data: a slot (start, duration, status), a booking (person plus the slot it belongs to), and an owner view of all bookings.</li><li>Name the one rule that must never break: no two people can hold the same slot.</li></ol>
<h2>The four phases of the build</h2>
<p>Most builds with Claude Code go smoothest in phases, where each phase produces something you can actually run and review before moving on. A booking system splits cleanly into four. Ask Claude for one phase at a time. Do not ask for the whole app in one prompt - you will get a large pile of code you cannot review, and the first bug will be buried three layers deep.</p>
<table><caption>The four phases of a Claude Code booking build</caption><thead><tr><th>Phase</th><th>What Claude builds</th><th>What you review</th></tr></thead><tbody><tr><td>1. Foundation</td><td>The data model, the database, and a page that renders a week of slots</td><td>That an open slot looks different from a taken one, and the data shapes match your brief</td></tr><tr><td>2. The booking loop</td><td>The pick-a-slot form, the write to the database, and the slot lock</td><td>That booking a slot removes it from the open list for the next visitor</td></tr><tr><td>3. Confirmation + owner view</td><td>A confirmation to the visitor and a simple list of all bookings for the owner</td><td>That the owner sees who booked what, and the visitor gets a clear confirmation</td></tr><tr><td>4. Ship it</td><td>Deploy to a live URL and a real domain</td><td>That the live site behaves exactly like it did locally</td></tr></tbody></table>
<p>Phase one is where you catch data mistakes cheaply. If Claude models a slot in a way that will not scale - say, storing the taken/open state somewhere fragile - you want to find that now, when the fix is one prompt, not after you have built the booking form on top of it.</p>
<h2>The double-booking bug (name it in your first prompt)</h2>
<p>Here is the mistake that turns a clean demo into an embarrassing live bug. In a demo, one person books one slot and it works perfectly. In the real world, two people open the same page and both click the 9am slot within the same second. If your system only checks that the slot is open when the page loads, both bookings go through - and now you have double-booked a slot that can only hold one person.</p>
<p>The fix is to make the lock happen at the database layer, not in the interface. The slot has to be claimed in a single operation that checks it is still open and marks it taken at the same moment, so the second person's request finds it already gone. This is the CCC Core-Loop-First method in action: you protect the one rule that must never break before you build any of the nice-to-haves around it.</p>
<blockquote><strong>WARNING:</strong> Put this exact instruction in your phase-two prompt: &quot;Lock the slot at the database layer so two simultaneous bookings can never take the same slot - the second request should be rejected cleanly.&quot; If you leave it out, Claude will write the naive version that works in your test and fails the first busy Monday.</blockquote>
<h2>Test it the way a real user will</h2>
<p>Reviewing Claude's output is not reading every line - it is running the app the way a stranger would and watching where it breaks. For a booking system there are five checks that catch almost everything, and you do them by hand in a couple of minutes.</p>
<ul><li>Book a slot, then reload the page. The slot you took should be gone from the open list.</li><li>Open two browser windows and try to book the same slot in both. The second one must fail cleanly, not double-book.</li><li>Submit the form with a blank name or a nonsense email. It should refuse politely, not save garbage.</li><li>Book a slot, then check the owner view. The booking should be there with the right person and time.</li><li>Try to book a slot in the past. It should not be offered at all.</li></ul>
<p>When one of these fails, describe the failure to Claude in plain language - &quot;I booked 9am in one window and it let me book 9am again in a second window&quot; - and let it fix the specific behavior. You are steering by outcome, not by editing code. That is the whole point of building this way.</p>
<h2>Ship it live from the desktop app</h2>
<p>A booking system that runs on your laptop is a prototype. A booking system on a live URL is a product someone can actually use. Phase four is deployment, and you can drive the entire thing from the desktop app by asking Claude to walk you through connecting the project to a host and pushing it live. The [deploy an app with Claude Code](/blog/how-to-deploy-an-app-with-claude-code) post covers the exact flow end to end.</p>
<p>Once it is live, the same four-phase spine becomes a productized offer. A booking system is one of the most common things a local business will pay for - a clinic, a barber, a tutor, a photographer. You built it once for yourself; the second build for a paying client takes half the time because the shape is identical and only the details change. That is the difference between a weekend project and a repeatable service.</p>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club, members share the exact builds they turned into paid work - booking systems, dashboards, small automations - and the prompts that got them there. It is $9 a month at https://www.skool.com/claudecodeclub/about, or start with [10 things you can build with Claude Code](/blog/10-things-you-can-build-with-claude-code) for more weekend-sized ideas.</blockquote>
<h2>FAQ</h2>
<p><strong>How do I build a booking system with Claude Code?</strong></p><p>Describe the core loop in one plain sentence - a visitor sees open slots, picks one, and that slot locks - then let Claude scaffold the calendar, database, and confirmation flow in four phases: foundation, booking loop, confirmation plus owner view, and deployment. Review each phase before moving on, and name the double-booking rule in your first prompt so Claude locks slots at the database layer.</p>
<p><strong>Do I need to know how to code to build a booking system with Claude Code?</strong></p><p>No. You describe what you want in plain language and Claude writes the implementation. Your job is the decisions - what a bookable slot is, what happens when two people want the same time, and what the owner sees. You review by running the app like a real user, not by reading the code line by line.</p>
<p><strong>How do I stop double-bookings in a Claude Code booking system?</strong></p><p>Make the slot lock happen at the database layer, not in the interface. Instruct Claude to claim a slot in a single operation that checks it is still open and marks it taken at the same moment, so a second simultaneous request finds it already gone and is rejected cleanly. If you only check availability when the page loads, two people can book the same slot.</p>
<p><strong>Can I build a booking system in the Claude Code desktop app without the terminal?</strong></p><p>Yes. The desktop app handles the entire build - scaffolding, the booking loop, and deployment to a live URL - with no terminal required. The desktop app is the recommended starting point. The terminal is optional and only worth adding later when you want scripted or scheduled runs.</p>
<p><strong>How long does it take to build a booking system with Claude Code?</strong></p><p>A working booking system with a calendar, a locking booking loop, a confirmation, and an owner view is a weekend build for most people. The code is not the slow part - Claude writes that. The time goes into making clear decisions up front and testing the app the way a real user would before you ship it.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Write a Statement of Work for an AI Project (One Page That Closes)</title>
      <link>https://www.claudecodeclub.ai/blog/how-to-write-a-statement-of-work-for-an-ai-project</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/how-to-write-a-statement-of-work-for-an-ai-project</guid>
      <pubDate>Tue, 15 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Agency</category>
      <category>Freelancing</category>
      <category>Monetization</category>
      <description><![CDATA[A statement of work for an AI project is a one-page document that names the outcome, lists exactly what is included, lists what is explicitly excluded, sets a timeline, and states payment terms - sent and signed before any work starts. It is the single discipline that protects your margin from scope creep. Here is the exact five-part shape that works for AI builds under $15K, the exclusions that do the heavy lifting, and how to send it so it closes the deal instead of stalling it.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>A statement of work for an AI project is one page with five parts: the outcome in a sentence, what is included, what is explicitly excluded, a timeline, and payment terms. Sent before work starts, signed back before you write a single prompt.</li><li>The excluded list is the load-bearing part. Most scope creep happens because the client genuinely thought a feature was included and you genuinely thought it was not. Writing down what is NOT in scope prevents that fight.</li><li>The default payment terms that work almost everywhere for builds under $15K: 50% on signing, 50% on delivery. The SOW is a closing tool, not a legal shield - keep it to one page and lead with the outcome.</li></ul>
<h2>How to write a statement of work for an AI project</h2>
<p>A statement of work for an AI project is a one-page document with five parts: one paragraph naming the outcome, a bulleted list of exactly what is included, a bulleted list of what is explicitly excluded, a single-line timeline, and a payment-terms line. You send it before any work starts and get it signed back before you write a single prompt. That one discipline saves more revenue than any rate increase, because it stops scope creep before it begins instead of arguing about it after.</p>
<p>The SOW does not need to be a twenty-page legal contract. For AI builds under $15K it is one page, plain language, sent as a document the client can read in two minutes and sign in one. Its job is not to win a lawsuit - it is to make sure you and the client are holding the exact same picture of what is being delivered before either of you commits time or money. This is the CCC One-Page-SOW method: the shortest document that still closes cleanly and protects your margin.</p>
<blockquote><strong>NOTE:</strong> The SOW is the last step before you build, not the first step in the relationship. It comes after a [discovery call for AI projects](/blog/discovery-call-for-ai-projects) and a [one-page AI proposal](/blog/one-page-ai-proposal-that-closes) - by the time you write the SOW, the client has already said yes to the direction.</blockquote>
<h2>The five parts of a one-page SOW</h2>
<p>Every part earns its place. Cut any one of them and you reopen a gap the client will walk through later. Here is what each part does and why it is there.</p>
<table><caption>The five parts of an AI-project statement of work</caption><thead><tr><th>Part</th><th>What it says</th><th>Why it is there</th></tr></thead><tbody><tr><td>Outcome</td><td>One paragraph naming the finished thing and the result it produces</td><td>Anchors the whole document to a deliverable, not to your hours</td></tr><tr><td>Included</td><td>A bulleted list of exactly what you will build and hand over</td><td>Turns a vague idea into a countable set of deliverables</td></tr><tr><td>Excluded</td><td>A bulleted list of what is explicitly NOT in scope</td><td>Kills the assumptions that cause every scope-creep fight</td></tr><tr><td>Timeline</td><td>A single line: start, delivery, and any review windows</td><td>Sets a shared expectation so &quot;when is it done&quot; is already answered</td></tr><tr><td>Payment terms</td><td>50% on signing, 50% on delivery, and what triggers each</td><td>Gets money moving and defines what &quot;delivered&quot; means for the final payment</td></tr></tbody></table>
<p>Notice what is not on the list: your methodology, your tools, or how many hours you expect it to take. The client is buying an outcome, not your process. Lead every line with the result the client gets. The mechanism - that you built it with Claude Code in a weekend - belongs in your head, not on the SOW.</p>
<h2>The outcome paragraph: sell the result, not the build</h2>
<p>The outcome paragraph is the one part a non-technical client actually reads closely, so make it about them. Name the finished thing and the result it produces in their words. &quot;A booking system on your site that lets clients pick an open time and book themselves, so your front desk stops playing phone tag&quot; beats &quot;a full-stack web application with a calendar component and a database.&quot; Same build, completely different document.</p>
<p>If a client later asks what they are really paying for, the honest answer should already be the first sentence of the SOW. Lead with the outcome on every line and the price stops feeling like an hourly rate and starts feeling like the cost of a solved problem. That reframe is worth more than any discount.</p>
<h2>The excluded list does the heavy lifting</h2>
<p>Most people write the included list and stop. That is the mistake. The excluded list is the load-bearing part of the entire document, because most scope creep does not come from a client trying to get free work - it comes from an honest mismatch. The client genuinely thought a feature was included; you genuinely thought it was not. The excluded list is where you resolve that before it becomes a fight over unpaid work.</p>
<ul><li>Name the obvious adjacent features you are NOT building. If you are building a booking system, exclude the payment integration, the SMS reminders, and the customer login unless they are in the included list. The client may have assumed all three.</li><li>Put a price on the things you are excluding, not just a no. &quot;SMS reminders are not included in this scope; they can be added for a fixed $600.&quot; This turns a future argument into a future upsell the client already expects to pay for.</li><li>Exclude open-ended support. If maintenance is not in the SOW, every &quot;quick fix&quot; after launch is unpaid work eating your next project. Either bundle a defined support window (&quot;30 days of bug fixes included&quot;) or quote a separate retainer.</li><li>Exclude revision counts you have not agreed to. &quot;Two rounds of revisions on the design are included; further rounds are billed at a fixed rate per round.&quot; Unlimited revisions is how a fixed-price project becomes an hourly project you forgot to bill for.</li></ul>
<blockquote><strong>TIP:</strong> A good test: read your excluded list and ask &quot;what is the most expensive thing a client could reasonably assume is included?&quot; If it is not on the excluded list, add it. The excluded list should name the exact thing that would otherwise cost you a weekend of free work.</blockquote>
<h2>Payment terms that get money moving</h2>
<p>For AI builds under $15K, the payment terms that work almost everywhere are 50% on signing and 50% on delivery. The deposit is not optional - it is the line that separates a real project from a client who is still shopping. A client who will not put down a deposit will not respect the scope either. The deposit filters for commitment before you spend a single hour building.</p>
<p>Define what &quot;delivery&quot; means in the same line, because that word triggers your final payment. Delivery is the deployed, working thing doing what the outcome paragraph promised - not &quot;the client is fully satisfied,&quot; which is an open-ended standard that never triggers. Tie the final payment to an objective event: the system is live and passes the acceptance checks listed in the SOW. For larger builds, add a milestone payment in the middle so you are never carrying more than a third of the project unpaid.</p>
<h2>Send it so it closes instead of stalls</h2>
<p>A one-page SOW is a closing tool, so send it like one. Do not attach it to an email with &quot;let me know your thoughts&quot; - that invites edits and delay. Send it as the natural next step after the client has already said yes: &quot;Great - here is the one-page scope so we are both looking at the same thing. Sign at the bottom and I will get started this week.&quot; The SOW confirms a decision that has already been made; it does not reopen it.</p>
<p>Keep it to one page on purpose. A twenty-page contract makes a small client nervous and invites their lawyer into a $3,000 deal. One page, plain language, five parts, signed same-day. If a client needs a heavier legal agreement, that is a separate document layered on top - the SOW is what gets the work started this week. Pair it with the [what to put in an AI project contract](/blog/what-to-put-in-an-ai-project-contract) guide when a project is large enough to need both.</p>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club, members swap the exact SOW templates, exclusion lists, and payment-term language that close AI projects without scope creep. It is $9 a month at https://www.skool.com/claudecodeclub/about, or start with [how to scope a Claude Code client project](/blog/how-to-scope-a-claude-code-client-project) to nail the scope before you write the SOW.</blockquote>
<h2>FAQ</h2>
<p><strong>What is a statement of work for an AI project?</strong></p><p>A statement of work (SOW) for an AI project is a one-page document that names the outcome in a paragraph, lists exactly what is included, lists what is explicitly excluded, sets a timeline, and states payment terms. It is sent and signed before any work starts, and its job is to make sure you and the client share the same picture of what is being delivered before either of you commits time or money.</p>
<p><strong>What should a statement of work include for an AI build?</strong></p><p>Five parts: one paragraph naming the outcome and the result it produces, a bulleted list of exactly what is included, a bulleted list of what is explicitly excluded, a single-line timeline with start and delivery dates, and a payment-terms line (50% on signing, 50% on delivery is the default for builds under $15K). Leave out your methodology and hours - the client is buying an outcome, not your process.</p>
<p><strong>Why is the excluded list the most important part of a SOW?</strong></p><p>Because most scope creep is an honest mismatch, not a client trying to get free work. The client thought a feature was included; you thought it was not. The excluded list resolves that before it becomes an argument over unpaid work. Name the most expensive thing a client could reasonably assume is included, and put a fixed price on it so a future dispute becomes a future upsell.</p>
<p><strong>What payment terms should I use in an AI project SOW?</strong></p><p>For builds under $15K, 50% on signing and 50% on delivery works almost everywhere. The deposit filters for a client who is committed rather than still shopping. Define delivery as the deployed, working system passing the acceptance checks in the SOW - not &quot;the client is satisfied,&quot; which never triggers. For larger builds, add a milestone payment in the middle so you never carry more than a third unpaid.</p>
<p><strong>How is a statement of work different from a contract?</strong></p><p>A SOW defines the specific deliverable, scope, timeline, and payment for one project, on one page, in plain language. A contract is the broader legal agreement covering liability, ownership, and terms across the relationship. For most AI projects under $15K a one-page SOW is enough to start work. When a project is large enough to need heavier legal protection, layer a contract on top - do not replace the SOW with it.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code /clear vs /compact: When to Reset and When to Summarize</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-clear-vs-compact</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-clear-vs-compact</guid>
      <pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Workflows</category>
      <category>Tools</category>
      <description><![CDATA[Claude Code /clear vs /compact both free up a full context window, but they do opposite things: /clear wipes the conversation to a blank slate, /compact summarizes it so the agent keeps the thread. Use /clear between unrelated tasks and /compact when you want to keep going on the same one. Here is exactly how I decide, every session.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>/clear wipes the conversation to a blank slate - the agent forgets everything you just discussed and starts fresh. Use it when you switch to an unrelated task.</li><li>/compact summarizes the conversation into a short recap and keeps going - the agent remembers the gist of what you were doing. Use it when you want to continue the same task but the window is filling up.</li><li>The rule I use: new task = /clear, same task but running low on room = /compact. Your CLAUDE.md and open files reload either way, so a reset is cheaper than beginners fear.</li></ul>
<h2>What is the difference between /clear and /compact in Claude Code?</h2>
<p>Both commands free up room in the context window, but they do opposite things with your conversation. /clear throws the whole conversation away and gives you a blank slate - the agent no longer remembers a single thing you said in that session. /compact keeps the conversation alive by replacing it with a short summary of what happened, so the agent still knows what you were working on but takes up far less room doing it.</p>
<p>Put simply: /clear is a reset, /compact is a save-and-shrink. You reach for /clear when you are done with one thing and moving to something unrelated. You reach for /compact when you are in the middle of a task, the window is filling up, and you want to keep the thread without losing your place.</p>
<h2>What /clear actually does</h2>
<p>/clear empties the conversation history for the current session. After you run it, the agent behaves as if you just opened the project - it has no memory of the questions you asked, the files it read, or the decisions you made a moment ago. What it does NOT wipe is your project setup: your CLAUDE.md file, your settings, and any files you point it at are all still there to be reloaded when the next task needs them.</p>
<p>This is why a reset costs less than most beginners assume. You are not deleting your project or your instructions. You are clearing the short-term chatter of one task so the next task starts clean, with a full window and no leftover context nudging the agent in the wrong direction.</p>
<blockquote><strong>TIP:</strong> A stale conversation is a real source of bad output. If the agent keeps referencing a file or a decision from twenty minutes ago that no longer applies, that leftover context is the problem - /clear removes it in one keystroke.</blockquote>
<h2>What /compact actually does</h2>
<p>/compact asks the agent to write a concise summary of the conversation so far, then replaces the full back-and-forth with that summary. The result is a much smaller footprint that still carries the important thread: what you are building, what has been tried, and where you left off. You keep working in the same session, on the same task, with room to spare.</p>
<p>The tradeoff is fidelity. A summary is not the full transcript, so fine detail can get flattened - an exact variable name, a subtle edge case you discussed once, a specific line the agent quoted earlier. For most work the summary keeps enough to continue smoothly. For work where a precise detail matters, restate that detail in your next prompt right after compacting so it survives the shrink.</p>
<h2>The rule I use to decide, every session</h2>
<p>I do not overthink it. The decision comes down to one question: am I still on the same task, or have I moved to a new one?</p>
<ol><li>New, unrelated task = /clear. I finished the login page and now I am writing a cold email. Nothing from the login work helps the email, and leftover context only risks confusing the agent. Blank slate.</li><li>Same task, window filling up = /compact. I am halfway through a feature, the agent has read a dozen files, and the window is getting tight. I want to keep going without losing the thread, so I summarize and continue.</li><li>Same task, plenty of room left = do nothing. Compacting early throws away detail you did not need to lose. Only compact when you are actually running low.</li></ol>
<p>I call this the CCC context reset habit: clear between tasks by default, compact only mid-task under pressure. It keeps every session starting sharp and stops the slow drift that happens when one long conversation tries to hold three unrelated jobs at once.</p>
<h2>Why a bloated conversation hurts output</h2>
<p>As a conversation grows, two things get worse. First, you run out of room - a full window forces the agent to drop older context on its own, often the exact context you wanted kept. Second, and more subtle, a long thread full of half-finished tangents makes the agent slower and less focused, because it is weighing every past message when it decides what to do next. Managing context deliberately is a core part of keeping long sessions on track - see [Claude Code context management: how to keep long sessions on track](/blog/claude-code-context-management).</p>
<table><caption>Which command fits the moment</caption><thead><tr><th>Situation</th><th>Use</th><th>Why</th></tr></thead><tbody><tr><td>Switching to an unrelated task</td><td>/clear</td><td>Leftover context only confuses the new task; start fresh</td></tr><tr><td>Mid-task, window filling up</td><td>/compact</td><td>Keep the thread, drop the bulk, keep going</td></tr><tr><td>Mid-task, plenty of room</td><td>Neither</td><td>Compacting early loses detail you still have room to keep</td></tr><tr><td>Agent keeps citing outdated info</td><td>/clear</td><td>Stale conversation is the cause; a reset removes it</td></tr></tbody></table>
<h2>Make context resets a habit before your next build</h2>
<p>Start every new task with a clean window and you will notice the agent stays sharper for longer. Clear between unrelated jobs, compact when a single task outgrows its window, and restate any critical detail right after you compact. It is a thirty-second habit that removes a whole category of confusing, off-target output.</p>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club we share the exact session habits members use to keep long builds on track without babysitting the window. Start with the [curriculum](/curriculum) or join us at https://www.skool.com/claudecodeclub/about and bring the project you keep losing context on.</blockquote>
<h2>FAQ</h2>
<p><strong>What is the difference between /clear and /compact in Claude Code?</strong></p><p>/clear wipes the conversation to a blank slate - the agent forgets everything you discussed in that session. /compact summarizes the conversation and keeps going, so the agent remembers the gist while using far less of the context window. Use /clear between unrelated tasks and /compact mid-task when the window is filling up.</p>
<p><strong>Does /clear delete my project or my CLAUDE.md file?</strong></p><p>No. /clear only empties the current conversation history. Your project files, settings, and CLAUDE.md are untouched and reload when your next task needs them. That is why a reset is cheaper than it feels - you are clearing one task's chatter, not your setup.</p>
<p><strong>When should I use /compact instead of /clear?</strong></p><p>Use /compact when you are still on the same task and want to keep the thread but the context window is running low. It summarizes what has happened so far and lets you continue with room to spare. If you were switching to an unrelated task instead, /clear is the better choice.</p>
<p><strong>Does /compact lose information?</strong></p><p>Some. A summary is not the full transcript, so fine detail can get flattened - an exact variable name or a subtle edge case discussed once. For most work the summary keeps enough to continue. If a precise detail matters, restate it in your next prompt right after compacting so it survives.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Resume a Claude Code Session (Pick Up Right Where You Left Off)</title>
      <link>https://www.claudecodeclub.ai/blog/resume-a-claude-code-session</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/resume-a-claude-code-session</guid>
      <pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Claude Code</category>
      <category>Workflows</category>
      <category>Getting Started</category>
      <description><![CDATA[You can resume a Claude Code session so the agent remembers the whole thread - what you were building, the files it read, the decisions you made - instead of starting cold. Continue your most recent session or pick an older one from the list, in the desktop app or the terminal. Here is exactly how, and how to avoid the mistake that loses your context.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Resuming a session brings back the whole conversation - what you were building, the files the agent read, the decisions you made - so you continue instead of re-explaining everything.</li><li>Two ways to do it: continue your most recent session in one step, or open the list of past sessions and pick the exact one you want.</li><li>The mistake that loses your context is starting a brand new session by habit. If you closed the app mid-task, resume the old one on purpose rather than opening a fresh window.</li></ul>
<h2>How do I resume a Claude Code session?</h2>
<p>You resume a session by telling Claude Code to reopen a past conversation instead of starting a new one. When you do, the agent brings back the full thread: what you were building, the files it had read, and the decisions you made together. You pick up mid-task rather than re-explaining the whole project from scratch. There are two ways to get there - continue your most recent session in a single step, or open the list of your past sessions and choose the exact one you want.</p>
<p>This works the same way whether you build in the desktop app or the terminal. The desktop app is the easiest place to start - your recent sessions are listed for you to reopen with a click. The terminal offers the same thing through a continue option for your latest session and a resume option that shows the full list.</p>
<h2>Continue your most recent session (the fast path)</h2>
<p>Most of the time you want the session you were just in - you closed the laptop, made coffee, and now you want to keep going on the same feature. This is the one-step path: continue the latest session. The agent reopens the conversation you had going most recently, with all of its context intact, and you carry on from your next prompt as if you never stepped away.</p>
<blockquote><strong>TIP:</strong> If you only ever work on one thing at a time, continue-the-latest is all you need. It is the fastest way back into flow after a break.</blockquote>
<h2>Pick an older session from the list</h2>
<p>When you have several projects going, the most recent session is not always the one you want. Opening the list of past sessions lets you scan your previous conversations and choose the exact one to reopen - the client dashboard from Tuesday, not the personal script you touched an hour ago. Each entry represents a distinct conversation thread you can bring back in full.</p>
<p>This is the difference between resuming and merely reopening a project folder. Reopening the folder gives you the files. Resuming the session gives you the files AND the conversation - the reasoning, the half-finished plan, the thing the agent already figured out - so you are not paying twice to rebuild context you already had.</p>
<h2>The mistake that loses your context</h2>
<p>The most common way people lose a session is simple: they open a brand new one out of habit. You come back to the desk, launch Claude Code, and start typing - and now you are in a fresh conversation that knows nothing about yesterday's work. The old session still exists, but you talked past it. The fix is to pause for one second when you sit down and ask whether you are continuing something or starting something new.</p>
<ol><li>Continuing yesterday's work? Resume the session first, then type. Do not start prompting in a fresh window and expect the agent to remember.</li><li>Starting something genuinely new and unrelated? A new session is correct - a clean slate is what you want, the same logic behind clearing context between tasks.</li><li>Not sure which session was the right one? Open the list and read the recent conversations rather than guessing; picking the wrong one wastes the reload.</li></ol>
<blockquote><strong>NOTE:</strong> Resuming restores the conversation, but it is not a substitute for durable project memory. For context that should survive across every session, put it in your CLAUDE.md file so the agent reloads it automatically - see [The Claude Code memory bank: how to keep context across every session](/blog/claude-code-memory-bank).</blockquote>
<h2>When to resume, when to start fresh</h2>
<p>Resuming is the right move whenever the old context still helps. Starting fresh is right when it would only get in the way. The two decisions are mirror images of managing context inside a single session.</p>
<table><caption>Resume or start new?</caption><thead><tr><th>Situation</th><th>Do this</th><th>Why</th></tr></thead><tbody><tr><td>Picking up the same task after a break</td><td>Resume the latest session</td><td>The agent keeps the thread; no re-explaining</td></tr><tr><td>Juggling several projects</td><td>Open the list, pick the right one</td><td>The most recent is not always the one you want</td></tr><tr><td>Starting an unrelated new task</td><td>Start a new session</td><td>A clean slate avoids leftover context confusing it</td></tr><tr><td>Context should live across all sessions</td><td>Put it in CLAUDE.md</td><td>Session resume is short-term; CLAUDE.md is durable</td></tr></tbody></table>
<h2>Build the resume habit into how you work</h2>
<p>Make resuming the default when you return to unfinished work, and starting new the deliberate exception. That one habit removes the daily tax of re-explaining a project the agent already understood an hour ago. Pair it with a solid CLAUDE.md for the context that should never be lost, and you rarely start cold again.</p>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club we walk members through the session and memory habits that keep long client builds moving without re-explaining the project every morning. Start with the [curriculum](/curriculum) or join us at https://www.skool.com/claudecodeclub/about and bring the project you keep losing your place on.</blockquote>
<h2>FAQ</h2>
<p><strong>How do I resume a Claude Code session?</strong></p><p>Tell Claude Code to reopen a past conversation instead of starting a new one. You can continue your most recent session in one step, or open the list of past sessions and pick the exact one you want. Either way the agent brings back the full thread - what you were building, the files it read, and the decisions you made.</p>
<p><strong>What is the difference between resuming a session and reopening a project?</strong></p><p>Reopening a project folder gives you the files. Resuming a session gives you the files AND the conversation - the reasoning, the half-finished plan, and the context the agent already worked out. Resuming means you do not pay twice to rebuild context you already had.</p>
<p><strong>Why did Claude Code forget my previous conversation?</strong></p><p>Almost always because a brand new session was started by habit. Launching Claude Code and typing straight away opens a fresh conversation that knows nothing about earlier work. The old session still exists - resume it on purpose before you start prompting instead of opening a new window.</p>
<p><strong>Should I use resume or my CLAUDE.md file for keeping context?</strong></p><p>Both, for different jobs. Resume restores one specific conversation so you can continue a task. CLAUDE.md holds durable context you want reloaded automatically in every session. Use resume for short-term continuity and CLAUDE.md for the facts and rules that should never be lost.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Build a Portfolio With Claude Code: From Zero to Clients</title>
      <link>https://www.claudecodeclub.ai/blog/build-a-portfolio-with-claude-code</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/build-a-portfolio-with-claude-code</guid>
      <pubDate>Sun, 13 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Getting Started</category>
      <category>Building</category>
      <category>Agency</category>
      <description><![CDATA[Building a portfolio with Claude Code means shipping real, live projects that prove you can deliver - not collecting screenshots of half-finished work. Here is the exact sequence: what to build first, how to host it publicly, and how to turn those three or four projects into the proof that closes clients.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>A portfolio built with Claude Code is three to four live, publicly accessible projects that each solve one real problem. Screenshots of local builds do not count. Hosted URLs do.</li><li>Build in this order: a landing page for a fake business, a utility tool you actually use, a small app for a real person (a friend, a family business, anyone), then one build that matches your target client type.</li><li>The goal is not to impress developers. It is to show a non-technical client that you can take an idea, build it, deploy it, and hand it over. Every portfolio piece should have a live URL and one sentence explaining what problem it solves.</li></ul>
<h2>Build a Portfolio With Claude Code</h2>
<p>To build a portfolio with Claude Code, you need three to four live, publicly accessible projects that each prove one thing: you can take a brief, build something real, deploy it, and hand it over. That is the entire bar for a first portfolio. You do not need polished design, ten projects, or impressive code - you need hosted URLs that a prospective client can click and use. Claude Code handles the implementation. Your job is to pick the right projects and ship them.</p>
<p>The desktop app is where you start. Open it, point it at a new project folder, and describe what you are building. Claude Code reads your description and builds the files. You review, steer, and deploy. No terminal configuration required - the app handles the shell access Claude needs to write and run code on your machine. If you have not set up the desktop app yet, the [Claude Code desktop app guide](/blog/claude-code-desktop-app) walks through the first-time setup.</p>
<blockquote><strong>NOTE:</strong> This post is about building a portfolio to attract clients. If you are earlier in the process and still learning the basics, [Claude Code tips for beginners](/blog/claude-code-tips-for-beginners) covers the habits that make every build faster. If you already have a few projects and want to turn them into clients, [how to find clients for your AI agency](/blog/how-to-find-clients-for-your-ai-agency) picks up where this post leaves off.</blockquote>
<h2>The CCC Portfolio Stack: What to Build and in What Order</h2>
<p>The CCC Portfolio Stack is a four-project sequence designed to get you from zero to a credible portfolio in under two weeks. Each project builds on the previous one and covers a different skill area that clients care about. The sequence matters - do not start with the hardest project.</p>
<ol><li>A landing page for a fake business. Pick an industry you understand - a local gym, a freelance photographer, a small accounting firm. Build a one-page site that shows the services, includes a contact form, and is deployed live on a real URL. This proves you can build and deploy a client-facing web page. Time: one afternoon.</li><li>A utility tool you actually use. A script, a small app, or an automation that solves a problem you have today. A CSV cleaner, a link shortener, a time tracker, a daily standup generator. Real use = real proof the tool works. Deploy it publicly and use it for a week before adding it to the portfolio. Time: one to two days.</li><li>A build for a real person. A landing page for a friend's side hustle, a booking widget for a family business, an invoice generator for a freelance contact. This project teaches you the client communication loop: briefing, delivering, revising, handing over. That loop is the actual skill you are selling. Time: two to three days.</li><li>One project that matches your target client type. If you want to work with restaurants, build a reservation page. If you want to work with coaches, build a course waitlist and payment page. If you want to work with agencies, build a client reporting tool. This project is your strongest conversation starter because it demonstrates you understand their world specifically. Time: two to three days.</li></ol>
<blockquote><strong>TIP:</strong> Every project in the CCC Portfolio Stack must have a live URL and a one-sentence description of what problem it solves and for whom. Those two things are what a client reads when they review your work. The URL says you can ship; the sentence says you understood the brief.</blockquote>
<h2>How to Deploy Each Project So It Has a Real URL</h2>
<p>A portfolio piece without a live URL is a screenshot, not a project. The fastest zero-cost deployment path for Claude Code builds is Vercel for web apps and sites. Claude Code can generate the deployment configuration alongside the project, and Vercel's free tier gives you a public URL under vercel.app with no credit card required.</p>
<p>In practice: once your build is working locally, tell Claude Code you want to deploy it to Vercel. Claude will write or update the configuration files, point you to the Vercel CLI command or the drag-and-drop deploy option, and the result is a live URL in under five minutes. The [how to deploy an app with Claude Code](/blog/how-to-deploy-an-app-with-claude-code) guide covers every deployment path in detail, including Netlify and Railway for projects that need a backend or database.</p>
<table><caption>Deployment options by project type</caption><thead><tr><th>Project type</th><th>Recommended host</th><th>Time to live URL</th></tr></thead><tbody><tr><td>Landing page / static site</td><td>Vercel</td><td>Under 5 minutes</td></tr><tr><td>Web app with API routes</td><td>Vercel</td><td>Under 10 minutes</td></tr><tr><td>App with a database</td><td>Railway or Supabase + Vercel</td><td>15-30 minutes</td></tr><tr><td>Utility script (not a web page)</td><td>GitHub repo with a README demo</td><td>Under 5 minutes</td></tr></tbody></table>
<h2>What Your Portfolio Page Should Say</h2>
<p>Your portfolio does not need to live on an expensive custom site. A single page - even a well-formatted Notion page or a simple HTML page you built with Claude Code - that lists your four projects with their URLs and one-sentence descriptions is enough to start. Add a short paragraph at the top that says who you help and what kind of builds you take on. Keep it plain. Clients do not read long bios.</p>
<p>For each project, write: the name of the project, a one-sentence description of what it does and who it is for, and the live URL. If the project was built for a real person, include their name and one sentence they said about working with you. If it was a self-initiated build, say so and describe what problem you were solving. That level of honesty works well - it shows you are not inflating experience you do not have.</p>
<blockquote><strong>NOTE:</strong> Two or three projects with live URLs and clear problem descriptions out-earn a portfolio of twenty vague descriptions of work. Clients do not count projects - they look for proof that you understood a brief and delivered something that works. Specificity is the proof.</blockquote>
<h2>The Portfolio Mistake That Costs Clients</h2>
<p>The single most common portfolio mistake among new Claude Code builders is waiting until the work is polished. Most people spend three weeks refining project two while project one sits on localhost, never deployed. No client ever saw that project. The portfolio with three live but imperfect projects beats the one with one perfect project that took a month to finish.</p>
<p>A live URL that does what you said it would do is already a finished portfolio piece. Ship it, add it to your portfolio page, and start the next one. You can update any project later - and the practice of updating a deployed project is itself a skill worth demonstrating. The four-project sequence in the CCC Portfolio Stack is designed to be completable in under two weeks. The clock starts when you open the desktop app and begin project one.</p>
<ul><li>Never put a project in your portfolio that is not live. A GitHub link with no deployed URL is invisible to most clients.</li><li>Never describe a project without naming the problem it solves. Technology names mean nothing to non-technical clients.</li><li>Never wait for permission to build a self-initiated project. You do not need a client to build something portfolio-worthy.</li><li>Never skip the handover step on the real-person project. The practice of explaining and handing over a build is the hardest skill and the most valuable one to demonstrate.</li></ul>
<h2>When Your Portfolio Is Enough to Start Taking On Clients</h2>
<p>Your portfolio is ready to support a client conversation the moment you have two live URLs and a clear sentence about what you build. You do not need four projects to start outreach. You need enough to answer the question a prospective client will always ask: 'can you show me something you've built?'</p>
<p>Two deployed projects that are relevant to the type of client you are targeting are enough to have that conversation. Add the third and fourth while you are in early conversations. Every additional project you ship strengthens the next outreach. Inside Claude Code Club, members share their first portfolio projects, get feedback from the community, and find early clients without cold pitching. That combination - real projects, honest feedback, and warm introductions - shortens the gap from portfolio to first paid build significantly. Join for $9 a month at https://www.skool.com/claudecodeclub/about.</p>
<h2>FAQ</h2>
<p><strong>What should I build for my Claude Code portfolio?</strong></p><p>Follow the CCC Portfolio Stack: a landing page for a fake business, a utility tool you actually use, a build for a real person, and one project that matches your target client type. Every project must have a live, publicly accessible URL. Screenshots of local builds do not count as portfolio pieces - clients need to click and see it working.</p>
<p><strong>How many projects do I need before I can get clients?</strong></p><p>Two live projects that are relevant to your target client type is enough to start having conversations. You do not need a complete portfolio to begin outreach. Add the third and fourth project while you are in early conversations. Two deployed, relevant projects answer the first question every client asks: can you show me something you have built?</p>
<p><strong>How do I deploy a Claude Code project for free?</strong></p><p>Vercel is the fastest zero-cost path for web apps and sites. Once your build is working locally, tell Claude Code you want to deploy to Vercel - it will write or update the configuration files. Vercel's free tier gives you a live URL under vercel.app with no credit card required and deployment in under five minutes. For projects that need a database, Railway or Supabase paired with Vercel covers the full stack.</p>
<p><strong>Can I build portfolio projects without real clients?</strong></p><p>Yes - and you should. Invent a fake business, pick an industry you understand, and build the exact deliverable you want to sell. A landing page for a fake gym is as useful as a portfolio piece as one for a real gym. The goal is a live URL that demonstrates you can go from brief to deployed product. Self-initiated builds are entirely valid.</p>
<p><strong>What should my portfolio page say?</strong></p><p>For each project: the project name, a one-sentence description of what it does and who it is for, and the live URL. Add a short paragraph at the top naming who you help and what kind of builds you take on. If a project was built for a real person, include their name and a one-sentence comment. Keep it plain. Clients read for proof, not biography.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Get AI Clients Without a Portfolio: The No-Proof Closing Playbook</title>
      <link>https://www.claudecodeclub.ai/blog/get-ai-clients-without-a-portfolio</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/get-ai-clients-without-a-portfolio</guid>
      <pubDate>Sun, 13 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Agency</category>
      <category>Monetization</category>
      <category>Freelancing</category>
      <description><![CDATA[Getting AI clients without a portfolio is possible - but only if you stop leading with proof you do not have and start leading with something better: a specific, affordable offer and a fast demonstration. Here is the exact sequence: what to say, what to offer, and how to close when you have nothing to show.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>You can get AI clients without a portfolio if you stop positioning yourself as an AI developer and start positioning yourself as someone who solves a specific problem for a specific type of business.</li><li>The fastest first-client path is a narrow, low-risk offer: one specific deliverable, one specific client type, a price they can say yes to without a meeting, and a fast proof you can produce in 48 hours.</li><li>The objection you will face is not 'I need to see your portfolio' - it is 'I do not know if this is worth it.' Answer that before they ask by making the first step risk-free.</li></ul>
<h2>Why the Portfolio Problem Is Actually a Positioning Problem</h2>
<p>Most people trying to get AI clients without a portfolio are not actually blocked by the lack of work to show. They are blocked by a positioning problem: they are asking clients to evaluate them as a generalist AI developer, and generalist developers need portfolios because there is no other way to know what they can do. Narrow your positioning to one specific outcome for one specific type of business and the portfolio question mostly disappears.</p>
<p>A client who hires a 'freelance AI developer' needs proof because the scope is undefined. A client who hires 'someone who builds booking systems for service businesses' has a much clearer picture of what they are buying. The more specific your positioning, the less proof you need - because the specificity itself carries credibility. You are not asking them to guess what you do.</p>
<blockquote><strong>NOTE:</strong> If you are still working out what type of client to focus on, [how to pick a niche for your AI agency](/blog/how-to-pick-a-niche-for-your-ai-agency) covers the niche decision in detail. The first-client tactics in this post assume you have at least a working hypothesis for a niche - a specific type of business or a specific kind of problem you want to solve.</blockquote>
<h2>The CCC First-Client Offer: How to Structure a No-Portfolio Sale</h2>
<p>The CCC First-Client Offer is a format designed specifically for closing a first client when you have nothing to show. It has three parts: a narrow specific deliverable, a fast proof you can produce in 48 hours, and a risk-reversal that makes the first step easy to say yes to.</p>
<table><caption>The CCC First-Client Offer format</caption><thead><tr><th>Part</th><th>What it is</th><th>Example</th></tr></thead><tbody><tr><td>Narrow deliverable</td><td>One specific outcome for one specific type of business</td><td>A lead capture page and email sequence for a fitness coach</td></tr><tr><td>Fast proof</td><td>Something small you can build and send in 48 hours without payment</td><td>A rough version of their lead page built on their actual content</td></tr><tr><td>Risk-reversal</td><td>An entry price or guarantee that makes the first yes easy</td><td>$300 flat for the full build, paid only if they are happy with the proof</td></tr></tbody></table>
<p>The fast proof is the most important part. When you have no portfolio, you replace social proof with live demonstration. You find the client, understand their basic need, build a rough version of the deliverable using their actual content - their business name, their service, their words - and send it to them. That build takes a few hours with Claude Code. The client receives something real, not a promise. That is a stronger close than a portfolio of work you did for other businesses.</p>
<h2>How to Find the First Client Without Inbound</h2>
<p>The fastest first-client path when you have no track record is warm outreach to your existing network, not cold outreach to strangers. You do not need a large network. You need three to five people who know you, run or work at a small business, and have a problem you can solve with Claude Code.</p>
<p>Start by listing everyone you know who owns or manages a small business. This list is longer than you think. Former colleagues who went independent. Family members who run a service business. Friends who sell something. People you follow on LinkedIn who have posted about a business problem. For each person, ask one question: is there one annoying thing in their business that a simple tool or page could fix? That is your opening. Not 'I do AI stuff' - 'I noticed you mentioned you spend two hours a week on X, I built something that handles that in five minutes, want to see it?'</p>
<ul><li>Start with your warm network - people who already know you are competent at something.</li><li>Look for a specific operational pain, not a vague interest in AI.</li><li>Build the fast proof before you ask for money. The build is the pitch.</li><li>Price the first project to be easily affordable - the goal is a completed delivery and a testimonial, not maximum margin.</li><li>Ask for a specific referral or testimonial when you hand over the work. That is the asset you are really building.</li></ul>
<h2>How to Handle the Portfolio Objection When It Does Come Up</h2>
<p>When a prospective client does ask to see your portfolio, the worst answer is 'I do not have one yet.' The better answer names what you have built and why it is relevant to them specifically, even if it was a self-initiated project. 'I built a booking system for a fitness studio - it is not a client project but it is live and does exactly what you're describing. Want me to send the URL and build you a rough version based on your setup?'</p>
<p>That answer does three things: it names a specific thing you built, it proves you are already thinking about their specific context, and it offers a fast proof that advances the conversation instead of stalling it. The client is not really asking for a portfolio - they are asking for confidence that you can deliver. The fast proof gives them that directly. A live URL you built in an afternoon is more convincing than a PDF of past work.</p>
<blockquote><strong>TIP:</strong> Build at least one self-initiated project in your target niche before you start outreach. It takes a day with Claude Code. The [build a portfolio with Claude Code](/blog/build-a-portfolio-with-claude-code) post covers exactly what to build and how to deploy it. With one live URL relevant to your niche, you are no longer answering the portfolio question from zero.</blockquote>
<h2>What to Charge for the First Client</h2>
<p>Price the first project to be easy to say yes to, not to maximize your rate. A first project priced between $300 and $800 removes the budget objection and lets you focus on the delivery. The goal of the first client is not margin - it is a completed delivery, a testimonial, and a referral. Those three assets are worth more than the difference between $300 and $1,500 for client number one.</p>
<p>Once you have a delivery, a testimonial, and ideally a referral, your second client is dramatically easier. You have proof. You have a name who can vouch for you. You can raise your price to reflect the value you demonstrated. The first-client discount is a one-time investment in social proof, not a permanent rate. Most experienced freelancers inside Claude Code Club closed their first client in this range and were at $1,500 to $3,000 per project by client number three.</p>
<p>If you want the fastest path to sustainable client work - and the pricing frameworks, proposal templates, and warm outreach scripts to run it - join Claude Code Club for $9 a month at https://www.skool.com/claudecodeclub/about. You will find members at every stage, from first outreach to established retainer books, and the community feedback loop shortens every part of this timeline.</p>
<h2>FAQ</h2>
<p><strong>Can I get AI clients without a portfolio?</strong></p><p>Yes - if you replace the portfolio with two things: a narrow, specific positioning that makes your offer clear without proof, and a fast proof you build and send before asking for money. A rough version of the deliverable built on the prospect's actual content - their business name, their service, their copy - is more convincing than a portfolio of work done for other businesses. It takes a few hours with Claude Code and costs nothing.</p>
<p><strong>What should my first AI client offer look like?</strong></p><p>The CCC First-Client Offer has three parts: a narrow deliverable (one specific outcome for one specific type of business), a fast proof (something small you can build and send in 48 hours), and a risk-reversal (an entry price or satisfaction guarantee that makes the first yes easy). All three parts together remove the three objections a no-portfolio freelancer faces: 'I do not know what I am buying,' 'I do not know if you can do it,' and 'I do not know if it is worth the risk.'</p>
<p><strong>How do I find my first AI client with no track record?</strong></p><p>Start with warm outreach to your existing network. List everyone you know who owns or manages a small business. For each person, identify one specific operational pain that a simple tool or page could fix. Build a rough version of that fix using their actual content before you ask for money. The build is the pitch. Warm network outreach converts faster than cold outreach because the trust is already there.</p>
<p><strong>What should I charge for my first AI project?</strong></p><p>Price the first project between $300 and $800 to remove the budget objection. The goal of the first client is a completed delivery, a testimonial, and a referral - not maximum margin. Those three assets are worth more than the difference between your first-client rate and your target rate. Once you have proof, raise the price for client number two and beyond.</p>
<p><strong>How do I handle the portfolio objection?</strong></p><p>Name a specific project you built (even a self-initiated one) that is relevant to their situation, and immediately offer to build them a fast proof. 'I built a booking system for a service business - here is the URL - want me to put together a rough version for your setup?' That answer gives them a live example and advances the conversation. The client is asking for confidence you can deliver, not a formatted PDF of past work.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code Project Templates: How to Start Every Build Faster</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-project-templates</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-project-templates</guid>
      <pubDate>Sat, 12 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Building</category>
      <category>Workflows</category>
      <category>Getting Started</category>
      <description><![CDATA[Claude Code project templates are pre-configured starting points that give the agent a working structure, a CLAUDE.md, and a clear scope before the first prompt fires. They cut the slow first-session setup phase and keep every project consistent. Here is the template structure I use on every build and how to install it in the desktop app in under five minutes.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Claude Code project templates are folder scaffolds that include a CLAUDE.md, a project structure, and any starter config your stack needs. They eliminate the slow first-session setup and give the agent context before the first prompt fires.</li><li>The CCC Starter Framework is a three-file minimum: CLAUDE.md for project context, a SPEC.md for what you are building, and a .gitignore tuned for the stack. That is enough for Claude Code to work without guessing.</li><li>Install a template once from the desktop app's project settings, and every new project starts from the same clean baseline. You iterate on the template over time as you learn what context Claude Code actually needs.</li></ul>
<h2>What Claude Code Project Templates Actually Are</h2>
<p>A Claude Code project template is a pre-configured folder you drop into a new repo before your first session starts. It includes at minimum a CLAUDE.md that tells the agent what this project is, what stack it uses, and what rules apply. It can also include a spec scaffold, a .gitignore, a folder structure, and any config files your stack expects. The point is that the agent starts with context instead of guessing.</p>
<p>Without a template, the first session of every project is the same slow friction: Claude Code asks clarifying questions or makes wrong assumptions, you correct them, the context fills up correcting errors instead of building. A template eliminates that friction by front-loading the information the agent needs. It is the single highest-leverage setup habit for anyone doing more than one build.</p>
<blockquote><strong>NOTE:</strong> If you have not yet written your first CLAUDE.md, the [CLAUDE.md guide](/blog/claude-code-claude-md-file) covers the format in detail. Templates build on top of that - they are a CLAUDE.md plus the surrounding structure your stack needs.</blockquote>
<h2>The CCC Starter Framework: Three Files That Cover Every Build</h2>
<p>The CCC Starter Framework is the minimum-viable template that works across every stack. It is three files: CLAUDE.md, SPEC.md, and a stack-appropriate .gitignore. Everything else is optional and stack-specific. Here is what goes in each one.</p>
<table><caption>The CCC Starter Framework - three files, what each does</caption><thead><tr><th>File</th><th>What it does</th><th>How long it takes to fill</th></tr></thead><tbody><tr><td>CLAUDE.md</td><td>Project identity: name, stack, rules, folder conventions, what is and is not in scope</td><td>5-10 minutes on a new project</td></tr><tr><td>SPEC.md</td><td>What you are building: user stories, data model, route map, done criteria per feature</td><td>15-30 minutes before the first session</td></tr><tr><td>.gitignore</td><td>Keeps secrets, node_modules, and build artifacts out of your repo from day one</td><td>Copy once from the stack's standard template</td></tr></tbody></table>
<p>The CLAUDE.md in a project template is a stub - it has the headings filled in but the project-specific content left blank. You fill it once when you create the project and it stays put. The SPEC.md is a scaffolded list of sections: what you are building, the user you are building it for, the data model, the routes, and the done criteria per feature. Fill in the sections before you prompt Claude Code and you get a first session that produces working code instead of architecture debates.</p>
<h2>How to Install a Template in the Claude Code Desktop App</h2>
<p>In the Claude Code desktop app, open the project settings panel for any new project. There is a project directory field - point it at a new folder. Before your first prompt, copy the template files into that folder from your template library. The desktop app picks up CLAUDE.md automatically and uses it as persistent project context for every session in that project.</p>
<p>The workflow is: create a new project folder, copy the template into it, fill in the CLAUDE.md blanks for this specific project, open the project in the desktop app, and start your first session. That is it. No terminal commands required to wire up the context - the desktop app reads CLAUDE.md from the project root by default.</p>
<ul><li>Keep your templates in a dedicated folder on your machine - something like ~/templates/ccc-starter - so copying is one command.</li><li>Fill in the CLAUDE.md project name, stack, and rules fields before you open Claude Code. Leaving them blank defeats the template.</li><li>Add a SPEC.md stub even if you fill it later - it signals to the agent that a spec exists and it should look there first.</li><li>Update the template folder whenever you discover a rule or convention that would have saved you time on a project.</li></ul>
<h2>Stack-Specific Template Additions Worth Having</h2>
<p>The three-file baseline works for any project. Stack-specific additions pay off when you build in the same stack repeatedly. A Next.js template should include a tsconfig.json stub, a tailwind.config.ts, and a src/app folder structure that matches how you organize pages. A Python agent template should include a pyproject.toml stub, a .env.example, and an agents/ folder with a README that tells Claude Code where tools live.</p>
<p>The rule is: add a file to a template only after you have manually created it on two or more projects. If it shows up twice, it belongs in the template. If it is a one-off, it does not. That keeps templates lean enough to actually use rather than a graveyard of half-configured files.</p>
<table><caption>Common stack additions by project type</caption><thead><tr><th>Stack</th><th>Files worth templating</th><th>Why</th></tr></thead><tbody><tr><td>Next.js / React</td><td>tsconfig.json, tailwind.config.ts, src/app/ skeleton</td><td>Sets path aliases and component conventions from day one</td></tr><tr><td>Python agent</td><td>pyproject.toml, .env.example, agents/ folder</td><td>Gives Claude Code a place to put tools without asking</td></tr><tr><td>Express API</td><td>src/routes/, src/middleware/, .env.example</td><td>Claude Code knows the route pattern before the first file</td></tr><tr><td>CLI tool</td><td>src/commands/, bin/ entry, package.json stub</td><td>Skips the argument-parsing architecture debate entirely</td></tr></tbody></table>
<h2>Keeping Your Templates Up to Date</h2>
<p>A template is a living document, not a one-time setup. Every time you finish a project and notice a rule you had to correct, a folder you had to create, or a convention Claude Code kept getting wrong, those are template updates. Spend five minutes at the end of each project updating the relevant template. Over ten projects, the template becomes a machine that handles 80 percent of the first-session setup without any prompting.</p>
<p>The right signal that a template is mature is that your first session produces working, mergeable code rather than architectural scaffolding you have to clean up. Most CCC members reach that point after three to five iterations of the same template. The first version is always rough - the fifth version is quiet and reliable.</p>
<blockquote><strong>TIP:</strong> Inside Claude Code Club we share ready-to-copy templates for the most common stacks - Next.js, Express, Python agents, and CLI tools. You can drop them into any project today and adapt them as you go. Join for $9 a month at https://www.skool.com/claudecodeclub/about.</blockquote>
<h2>FAQ</h2>
<p><strong>What is a Claude Code project template?</strong></p><p>A pre-configured folder that includes at minimum a CLAUDE.md, a SPEC.md stub, and a stack-appropriate .gitignore. It gives the agent project context before your first prompt fires, eliminating the slow setup phase where Claude Code guesses at your conventions. You copy it into each new project and fill in the project-specific blanks.</p>
<p><strong>What should go in a Claude Code project template?</strong></p><p>The CCC Starter Framework minimum is three files: CLAUDE.md (project identity, stack, rules), SPEC.md (what you are building), and .gitignore (keeps secrets and build artifacts out of your repo). Add stack-specific files - tsconfig, tailwind config, folder structures - only after you have manually created them on two or more projects.</p>
<p><strong>How do I install a template in the Claude Code desktop app?</strong></p><p>Create a new project folder, copy the template files into it, fill in the CLAUDE.md project-specific blanks, then open that folder as a new project in the desktop app. Claude Code reads CLAUDE.md from the project root automatically and uses it as persistent context for every session. No terminal configuration needed.</p>
<p><strong>How often should I update a project template?</strong></p><p>After every project. Spend five minutes at the end noting any rule you had to correct, folder you had to create, or convention Claude Code kept getting wrong - those are template updates. A template matures across three to five uses of the same stack. The first version is rough; the fifth is reliable.</p>
<p><strong>Do I need a different template for each stack?</strong></p><p>Not necessarily. The three-file CCC Starter Framework baseline works for any stack. Add stack-specific files only when you notice yourself manually creating the same thing on multiple projects. You might end up with one base template and two or three stack-specific variants rather than a unique template per stack.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Package an AI Service: Turn a One-Off Build Into a Repeatable Offer</title>
      <link>https://www.claudecodeclub.ai/blog/how-to-package-an-ai-service</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/how-to-package-an-ai-service</guid>
      <pubDate>Sat, 12 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Agency</category>
      <category>Monetization</category>
      <category>Freelancing</category>
      <description><![CDATA[Packaging an AI service means defining a fixed deliverable, a fixed price, and a fixed timeline so the client knows exactly what they are buying and you can sell it again without scoping it from scratch every time. Most AI freelancers skip this step and stay stuck on hourly. Here is the packaging framework I use to turn any build into a productized offer.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Packaging an AI service means turning a repeatable build into a fixed deliverable at a fixed price. The client buys a defined outcome, not your time. You can sell the same package to ten different clients without re-scoping it each time.</li><li>The CCC Offer Box framework has four parts: the named outcome, the fixed scope, the price, and the delivery timeline. Every part must be specific enough that the client does not need to ask a follow-up question to understand what they are buying.</li><li>The moment to package a service is when you have delivered the same kind of build twice. After two deliveries you understand the real scope, the real edge cases, and the real delivery time. Before two deliveries you are guessing at the package.</li></ul>
<h2>Why Packaging an AI Service Changes How You Sell</h2>
<p>When you sell an AI service as a packaged offer - a fixed deliverable at a fixed price - you remove the single biggest friction point in closing a deal: the client does not understand what they are buying. Most AI freelancers describe their service in terms of the technology they use (Claude Code, n8n, Supabase) or the process they follow (discovery call, build phase, handover). Clients do not buy processes or tools. They buy outcomes. A package names the outcome and puts a price on it.</p>
<p>The other benefit is on your side: you can sell the same package without re-scoping it from scratch. Hourly work requires a bespoke estimate every time. A package requires a two-minute qualification call to confirm the client fits the scope, then a link to the proposal. The time you save on pre-sales compounds across every new client.</p>
<h2>The CCC Offer Box: Four Parts Every Package Needs</h2>
<p>The CCC Offer Box is the packaging framework used by freelancers and agencies inside Claude Code Club. It has four parts. Every part must be specific enough that a prospective client can read it and understand what they are buying without a follow-up question.</p>
<table><caption>The CCC Offer Box - four components of a packaged AI service</caption><thead><tr><th>Component</th><th>What it answers</th><th>Example</th></tr></thead><tbody><tr><td>Named outcome</td><td>What does the client have at the end?</td><td>A live AI chatbot trained on their FAQ, embedded on their website</td></tr><tr><td>Fixed scope</td><td>What is included and what is not?</td><td>One chatbot, up to 50 FAQ entries, one round of revisions, no ongoing support</td></tr><tr><td>Price</td><td>How much does it cost?</td><td>$1,200 flat, 50% deposit before start</td></tr><tr><td>Delivery timeline</td><td>When will it be done?</td><td>5 business days from deposit received</td></tr></tbody></table>
<p>Notice that none of these four components mention your tools, your process, or your method. The client does not need to know you built it with Claude Code. What they need to know is what they get, what is not included, what it costs, and when it arrives. A package that answers those four questions closes faster than a proposal that runs to six pages of process description.</p>
<h2>When to Package vs When to Scope Custom</h2>
<p>The right moment to turn a service into a package is after you have delivered the same kind of build twice. After two deliveries you know the real scope - the edge cases that always come up, the revision requests that are always the same, the integration that always adds two days. Before two deliveries you are guessing, and guessing turns a package into a scope-creep trap.</p>
<p>Custom scoping still makes sense for builds with high variance: large enterprise clients, projects that touch sensitive data, builds where the client's existing stack is genuinely unknown. The signal is whether you could deliver the same outcome ten times with the same template or whether every client would require a fundamentally different approach. High variance means custom scope. Low variance means package it.</p>
<blockquote><strong>NOTE:</strong> If you are earlier in the process - still figuring out what to build and who to build it for - the [how to pick a niche for your AI agency](/blog/how-to-pick-a-niche-for-your-ai-agency) post covers the niche decision that makes packaging much easier. You cannot package a service that serves everyone.</blockquote>
<h2>How to Write the Scope Without Leaving Room for Scope Creep</h2>
<p>The scope section of a package is where most freelancers leave money on the table. A vague scope invites clients to interpret it generously - to assume that 'chatbot' means unlimited integrations, ongoing training, and priority support. A specific scope closes those gaps before the contract is signed.</p>
<p>Write the scope in two lists: what is included and what is not. The 'not included' list is as important as the included list. Name the specific things clients typically ask for that fall outside this package: mobile app version, ongoing support beyond two weeks, API integrations beyond the named list, content creation for the training data. Clients who read the not-included list and still hire you have self-qualified. Clients who object to the not-included list were going to cause scope creep anyway - you have saved yourself three weeks of difficult conversations.</p>
<ul><li>Name the deliverable specifically - not 'AI automation' but 'a Claude Code-powered Google Sheets macro that categorizes incoming leads by industry.'</li><li>Cap the variable - not 'up to X pages' without a ceiling, but 'up to 20 pages, additional pages at $50 each.'</li><li>Define revisions - one round means one consolidated list of feedback, not one question per day for two weeks.</li><li>State what triggers a change request - anything not in the included list goes through the change request process at your stated rate.</li></ul>
<h2>Pricing a Packaged AI Service</h2>
<p>Price a package by the value it delivers, not by the hours it takes. A chatbot that handles 200 customer queries a day saves the client a part-time hire. The value of that hire - measured at even a modest salary - dwarfs any hourly rate you could justify. The package price should reflect the outcome, not the time it took Claude Code to build it.</p>
<p>A simple starting point: estimate what the outcome is worth to a realistic client, find the floor that keeps your margin above 60 percent, and set the price between those two numbers, closer to the value side. Your Claude Code build time is not a fair input to the pricing calculation - it will only compress the number downward. The [how to price a Claude Code agency project guide](/blog/how-to-price-a-claude-code-agency-project) goes deeper on the value-based framework.</p>
<blockquote><strong>TIP:</strong> A packaged service also makes it easier to upsell. Once a client has bought a defined package, you can offer an add-on with the same fixed format: a named outcome, a fixed scope, a price, a timeline. The [upsell existing clients guide](/blog/upsell-existing-clients-without-a-pitch) covers how to introduce the second package without it feeling like a push. Inside Claude Code Club we share package templates, pricing frameworks, and proposal formats that members use on real clients - join for $9 a month at https://www.skool.com/claudecodeclub/about.</blockquote>
<h2>FAQ</h2>
<p><strong>What does it mean to package an AI service?</strong></p><p>It means defining a fixed deliverable, fixed scope, fixed price, and fixed timeline so the client knows exactly what they are buying and you can sell it again without custom scoping. Instead of billing hourly for bespoke work, you sell a named outcome at a stated price. The CCC Offer Box framework structures this into four components: named outcome, fixed scope, price, and delivery timeline.</p>
<p><strong>When should I package a service instead of scoping custom?</strong></p><p>After you have delivered the same kind of build twice. Before two deliveries you are guessing at the real scope and edge cases. After two deliveries you know what always comes up and can price it accurately. Custom scoping still makes sense for high-variance projects - large enterprise clients, sensitive data builds, or projects where the client's stack is genuinely unknown each time.</p>
<p><strong>How do I price a packaged AI service?</strong></p><p>Price it by the value it delivers to the client, not by the hours it takes you to build it. Estimate what the outcome is worth to a realistic client, identify the floor that keeps your margin above 60 percent, and set the price between those two points, weighted toward the value side. Your Claude Code build time is not a fair pricing input - it compresses the number without reflecting the outcome.</p>
<p><strong>What should the scope section of an AI service package include?</strong></p><p>Two lists: what is included and what is not. The not-included list is as important as the included list. Name specific things clients typically request that fall outside the package - ongoing support beyond the stated window, additional integrations, content creation for training data, mobile versions. Clients who read the not-included list and still hire you have self-qualified and are unlikely to cause scope creep.</p>
<p><strong>Can I package a service before I have any clients?</strong></p><p>You can write the package, but treat it as a hypothesis until you have delivered it twice. Your first delivery will reveal scope assumptions that are wrong. Your second delivery will show you the real edge cases and revision patterns. Use the first delivery to stress-test the package, update the scope and price based on what actually happened, and then sell the second version as the real product.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Build a SaaS With Claude Code: From Idea to Deployed Product</title>
      <link>https://www.claudecodeclub.ai/blog/build-a-saas-with-claude-code</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/build-a-saas-with-claude-code</guid>
      <pubDate>Fri, 11 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Building</category>
      <category>Getting Started</category>
      <description><![CDATA[Building a SaaS with Claude Code means describing what you want in plain language and letting Claude handle the implementation across files, routes, and databases - while you stay in the driver's seat on decisions. Here is a complete walkthrough: how to scope the idea, what to hand Claude, how to structure the build in sessions, and the mistakes that add a week to a project that should take a weekend.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Building a SaaS with Claude Code works best when you treat each session as a delegation: describe the outcome you want, the constraints that matter, and the shape of the data - then let Claude handle the implementation while you review and steer.</li><li>The build goes fastest when you do the thinking first. A one-page brief that names the user, the core loop, and the data model is worth more than any prompt trick. Claude can write code from vague instructions, but it cannot validate your idea or decide what the product should be.</li><li>Most SaaS builds with Claude Code follow four phases: foundation (auth, database, routing), core feature, secondary features, and deployment. Each phase produces something runnable you can review before moving on.</li></ul>
<h2>Build a SaaS With Claude Code</h2>
<p>To build a SaaS with Claude Code, open the desktop app, describe what you are building, and delegate the implementation one phase at a time. Claude Code can generate the full stack - routing, database schema, authentication, API endpoints, and the front end - across as many files as the project needs, in a single session or across many. What it cannot do is decide what to build. That part is yours, and doing it clearly before you start is what separates a weekend project from a month of drift.</p>
<p>The desktop app is the right starting point for this. Open it, create a project folder, and you are ready to give Claude Code your first instruction. No terminal setup, no environment to configure manually - the app handles the shell access Claude needs to read, write, and run code on your machine. If you have not set it up yet, [the Claude Code desktop app walkthrough](/blog/claude-code-desktop-app) is the place to start.</p>
<blockquote><strong>NOTE:</strong> This post is about the build process. If you are still deciding whether to build a SaaS or take client work instead, [micro-SaaS vs client work with Claude Code](/blog/micro-saas-vs-client-work-with-claude-code) walks through that decision first. If you want ideas for what to build, [10 things you can build with Claude Code](/blog/10-things-you-can-build-with-claude-code) is a quick starting list.</blockquote>
<h2>The Brief That Makes Everything Faster</h2>
<p>Before you open Claude Code, write a one-page brief. Not a product spec, not a 40-page requirements document - a single page that answers four questions: who is this for, what is the one core action they take in the app, what data does the app store, and what does a successful session look like for the user. That brief is your first prompt, and it saves you from the most common SaaS mistake: starting with UI sketches before the data model is clear.</p>
<ul><li>Who uses this. One sentence. Not a broad category, a specific person - a solo consultant who tracks billable hours, a small team that needs a shared task list, a freelancer who invoices monthly.</li><li>The core loop. What is the single most important action the user takes in the app, and what happens as a result. Everything else is secondary to this.</li><li>The data model. What are the main things the app stores, and how do they relate. A simple list of three to five nouns is enough to start: clients, projects, time entries, invoices.</li><li>The success state. What does a new user do in their first session to get value. If you can describe the first five minutes in the app, Claude Code can help you build it.</li></ul>
<p>Hand this brief to Claude Code at the start of a new session. Ask it to confirm it understands the product before writing any code. That one pass - Claude echoing back what it will build - catches misreadings before they become wrong files, and it gives you a checkpoint to correct the direction without touching a single line of code.</p>
<h2>The Four-Phase Build Process</h2>
<p>Structure the build in four phases, each producing something runnable you can test before moving on. Phases give you checkpoints. Without them, a long build session drifts toward a pile of code that works in theory but has never been run end to end.</p>
<table><caption>The four phases of a SaaS build with Claude Code</caption><thead><tr><th>Phase</th><th>What you build</th><th>What you test</th></tr></thead><tbody><tr><td>Foundation</td><td>Authentication, database schema, project routing, environment variables</td><td>Can a user sign up, log in, and see an empty dashboard</td></tr><tr><td>Core feature</td><td>The one action that makes the app worth using - the thing you named in the brief</td><td>Does the core loop work end to end with real data</td></tr><tr><td>Secondary features</td><td>Everything that supports the core: settings, billing, user management, notifications</td><td>Does each feature work in isolation and alongside the core</td></tr><tr><td>Deployment</td><td>Production environment, domain, monitoring, any scheduled jobs</td><td>Does the live version work the same as local</td></tr></tbody></table>
<p>Do not skip the test at the end of each phase. It takes ten minutes and it prevents a common failure mode: finishing all four phases and discovering that a problem in phase one has been compounding silently through everything built on top of it.</p>
<blockquote><strong>TIP:</strong> Each phase gets its own Claude Code session. Starting a fresh session clears the accumulated context from the previous one, which keeps Claude's understanding of the codebase accurate rather than based on a mix of real files and an increasingly outdated mental model. Open the project, point Claude at what changed in the last phase, and start from there.</blockquote>
<h2>Phase One: Foundation - Auth and Database</h2>
<p>Start with authentication and the database schema, because everything else in the build depends on them. A user who cannot sign in cannot use the app. A schema that needs to change after you have built three features on top of it is expensive to fix. Getting both right in phase one makes every subsequent session faster.</p>
<p>For auth, tell Claude Code which provider to use - Supabase Auth, Clerk, or NextAuth are common choices depending on your stack - and ask it to set up sign-up, log-in, and a protected route pattern. One protected route that redirects to login when there is no session is enough to prove the auth layer works before you build anything inside it.</p>
<p>For the schema, paste the data model from your brief and ask Claude Code to create the database tables, including foreign keys and any indexes you know you will need for the queries the core feature makes. If you are using Supabase, the [Claude Code to Supabase connection](/blog/connect-claude-code-to-supabase) gives Claude direct schema access so it writes migrations against your real project instead of guessing.</p>
<blockquote><strong>WARNING:</strong> Do not add billing in phase one. Every day I see builders wire Stripe before the core feature works. You cannot know what you are selling until the core loop is proven. Set up payments in phase three when you know the product is real.</blockquote>
<h2>Phase Two: The Core Feature</h2>
<p>Phase two is the build that matters. Everything else in the app exists to support this one feature, so it deserves the most careful session setup. Open Claude Code, describe the core loop in plain language, and point Claude at the auth and schema from phase one. Ask it to build the feature end to end - the UI, the API route or server action, the database query, and the success and error states.</p>
<p>When Claude Code finishes a section, run it. Do not wait for the whole feature before testing. Each piece you run early is one fewer thing to debug when the full feature finally connects. When something is wrong, paste the error message directly into Claude Code and ask it to fix it in context - it will read the relevant files and correct the issue without you having to explain the whole project again.</p>
<blockquote><strong>NOTE:</strong> If the core feature is complex - multiple interacting parts, background jobs, or real-time state - break it into sub-tasks and delegate one at a time. Claude Code handles multi-file work well, but a single prompt that says 'build everything' often produces code that is plausible but untested in detail. Narrow the ask, review the result, then widen.</blockquote>
<h2>The Mistakes That Add a Week to a Weekend Project</h2>
<p>Three mistakes account for most of the time lost on SaaS builds with Claude Code. None of them are about prompting technique. They are about when you do what.</p>
<ul><li>Building the landing page before the product works. A landing page is a sales artifact, not a product milestone. Build it last, when you know what you are selling and can describe it honestly. Building it first means rewriting it after the product changes, which it will.</li><li>Letting the session run until something breaks. Long sessions accumulate context, and accumulated context goes stale. Claude Code at the end of a three-hour session is working from a mix of what it read at the start and what it inferred since. Fresh sessions are cheaper than debugging an outdated mental model.</li><li>Accepting code you do not understand. You do not need to understand every line, but you need to understand every decision. If Claude Code makes a structural choice - a particular routing pattern, a caching strategy, a database design - ask it to explain why before you move on. The explanation takes a minute and it is the minute that saves you three hours when something breaks in production.</li></ul>
<h2>Deploying Your SaaS</h2>
<p>Deploy early and often, not once at the end. The first deployment should happen after phase one, when all you have is auth and a blank dashboard. Deploying to production with almost nothing in it is the fastest way to catch environment-specific issues before they are buried under three phases of code.</p>
<p>For most stacks, Vercel handles the deployment and Claude Code can help configure it - ask it to set up the project, add the environment variables, and connect the domain. The [deploy an app with Claude Code](/blog/how-to-deploy-an-app-with-claude-code) post covers this in detail. For anything that runs background jobs or scheduled tasks, you need a separate worker host - Render and Railway are the common choices that Claude Code can configure.</p>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club, members share the exact stack choices they made for their own SaaS builds, what broke in production and how they fixed it, and the prompts that got the most done per session. It is $9 a month at https://www.skool.com/claudecodeclub/about, or start with the [curriculum](/curriculum) to build the foundation before you go deep on a product.</blockquote>
<h2>FAQ</h2>
<p><strong>Can you really build a SaaS with Claude Code?</strong></p><p>Yes. Claude Code can generate the full stack - authentication, database schema, API routes, and front end - across as many files as the project needs. What it cannot do is decide what to build or validate that the idea is worth building. That part is yours. With a clear brief and a structured four-phase approach, a working first version is a realistic weekend project.</p>
<p><strong>What stack should I use to build a SaaS with Claude Code?</strong></p><p>Claude Code works with any stack, but it builds fastest with the ones it knows best. Next.js with Supabase is the most common choice in the community because both are well-documented and Claude Code handles them with high accuracy. Add Vercel for deployment and Stripe for payments and you have a complete production stack.</p>
<p><strong>How long does it take to build a SaaS with Claude Code?</strong></p><p>A simple SaaS - one core feature, auth, a database, and deployment - is a realistic weekend project with focused sessions. More complex products with multiple features, billing, and background jobs typically take one to three focused weeks of part-time building. The build itself is fast; the slowest parts are testing, fixing production issues, and validating that the core feature actually does what users need.</p>
<p><strong>What should I build first?</strong></p><p>Authentication and the database schema. Everything else in the app depends on both, and getting them right before you build anything on top saves far more time than it costs. The core feature comes second, the landing page comes last.</p>
<p><strong>How do I handle billing in a SaaS built with Claude Code?</strong></p><p>Set up billing in phase three, after the core feature works. Claude Code can integrate Stripe - ask it to add a checkout session, a webhook handler for subscription events, and a billing portal link. Do not wire payments before you know the core loop is real, because the product will change and you will rewrite the billing integration to match.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code Headless Mode: How to Run Claude Code Without the Interface</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-headless-mode</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-headless-mode</guid>
      <pubDate>Fri, 11 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Claude Code</category>
      <category>Automation</category>
      <category>Workflows</category>
      <description><![CDATA[Claude Code headless mode lets you run Claude as a non-interactive process - triggered by a script, a cron job, or a CI pipeline - without a human in the loop approving each step. Here is what it actually does, how to set it up safely, the difference between headless and auto-accept, and the places it earns its keep versus the places it is the wrong tool.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Claude Code headless mode runs Claude as a non-interactive process - no approval prompts, no interface - triggered by a script or pipeline. You pass the task with --print and optionally --allowedTools to control what it can do, and it runs to completion and exits.</li><li>Headless is not the same as auto-accept. Auto-accept skips confirmation inside an interactive session; headless runs Claude as a one-shot command with no session at all. The right model depends on whether a human is available to catch problems.</li><li>Use headless mode for deterministic, low-stakes, repeatable tasks - automated code reviews, test generation, documentation updates, scheduled reports. Do not use it unsupervised on tasks that write to production systems or spend money.</li></ul>
<h2>What Claude Code Headless Mode Is</h2>
<p>Claude Code headless mode runs Claude as a non-interactive process that you trigger with a command, receives a task through a flag rather than a prompt, does the work, and exits. There is no interface, no approval step waiting for a human, and no session to manage. It is Claude Code as a tool in a pipeline, not Claude Code as a conversation partner.</p>
<p>The flag that enables it is --print. Pass it alongside your task and Claude Code runs non-interactively and prints the result to stdout. You can pipe that output to a file, another command, or a notification. Combine it with --allowedTools to define the exact set of tools Claude can use, and with --output-format for structured output when you are parsing the result downstream.</p>
<blockquote><strong>NOTE:</strong> Headless mode is one of three ways to run Claude Code without constant manual oversight. The others are auto-accept mode inside an interactive session and full subagent orchestration. [Claude Code subagents](/blog/claude-code-subagents) and [schedule Claude Code agents while you sleep](/blog/schedule-claude-code-agents-while-you-sleep) cover the other two patterns in detail.</blockquote>
<h2>Headless vs Auto-Accept: What the Difference Actually Is</h2>
<p>These two modes are not the same thing, and confusing them is the source of most safety mistakes when people first start running Claude Code unattended.</p>
<table><caption>Headless mode vs auto-accept mode</caption><thead><tr><th>Mode</th><th>How it runs</th><th>Human in the loop</th><th>Best for</th></tr></thead><tbody><tr><td>Headless (--print)</td><td>One-shot command, no session, exits when done</td><td>No - fully automated</td><td>Scripted pipelines, CI, cron jobs, scheduled tasks</td></tr><tr><td>Auto-accept (--dangerously-skip-permissions)</td><td>Interactive session with all approvals bypassed</td><td>Optional - you can watch but are not required</td><td>Supervised automation where you trust the task scope</td></tr><tr><td>Interactive (default)</td><td>Conversation with approval at each tool call</td><td>Yes - human approves every action</td><td>Active building, anything touching production data</td></tr></tbody></table>
<p>The safety difference is not subtle. Auto-accept inside an interactive session still has a human present who can interrupt. Headless mode has nobody. A mistake in headless runs to completion - there is no mid-run checkpoint. That is what makes the --allowedTools flag so important: it is the guardrail that replaces the human.</p>
<h2>How to Set Up a Headless Run</h2>
<p>A basic headless invocation looks like this: pass the task as a string with -p (short for --print), name the tools it is allowed to use with --allowedTools, and redirect the output wherever you need it. That is the entire setup for most automated tasks.</p>
<ol><li>Define the task precisely in a string. Headless mode has no back-and-forth to clarify - what you pass is all it gets. Vague tasks in headless produce vague output with no way to course-correct mid-run.</li><li>Restrict tools with --allowedTools. If the task is read-only code review, give it only Read and Bash. If it writes test files, add Write. Never give it more tools than the task needs - each extra tool is a surface for something unexpected to happen.</li><li>Set the output format. Use --output-format json if something downstream parses the result, or leave it as the default text if you are piping to a file or a notification.</li><li>Test it interactively first. Run the same task in a regular interactive Claude Code session before you automate it. If it behaves correctly there, headless will too. If it behaves unexpectedly interactively, headless will silently do the unexpected thing at 2am.</li></ol>
<blockquote><strong>WARNING:</strong> Never set up a headless run on a task you have not tested interactively at least twice. The failure mode for an untested headless task is not a crash with a clear error - it is code that looks plausible but is wrong, committed and deployed before anyone notices. Test first, then automate.</blockquote>
<h2>Where Headless Mode Earns Its Keep</h2>
<p>Headless mode is most valuable for tasks that are deterministic, low-stakes if they go slightly wrong, and expensive to do by hand on every cycle. The combination of low risk and high repetition is what makes the automation worth the setup time.</p>
<ul><li>Automated code review on a pull request. Point Claude at a diff and ask for a review pass with a specific checklist. The result is a comment or a file, not a production change.</li><li>Test generation after a code change. Ask Claude to read a changed file and generate tests for the new logic. Review the tests before running them - you are still in the loop, just not in the generation loop.</li><li>Documentation updates after a code change. Point headless Claude at a changed module and ask it to update the inline docs or the readme section. Diff the result before committing.</li><li>Scheduled reports. Run a headless pass nightly to summarize the day's error logs, a code health metric, or a project status. The output goes to a channel or a file, not to a deployment.</li><li>CLAUDE.md maintenance. Headless Claude can read a project's actual current state and update the project context file to match, so the context file does not drift from reality as the build evolves.</li></ul>
<h2>Where It Is the Wrong Tool</h2>
<p>Headless mode is not a way to make Claude Code faster or more autonomous in general. There are specific situations where removing the human from the loop makes a task harder, not easier, to trust.</p>
<ul><li>Tasks that touch production systems or real user data. A headless run that can write to a production database or call an API with real side effects needs all of the guardrails that a human approval step replaced - rate limiting, hard caps, a spend ceiling. Without those, the automation is an open faucet.</li><li>Tasks that involve judgment calls. If the right answer depends on context that was not in the task string, headless Claude will make a choice. That choice will be confident and may be wrong. Keep judgment calls in interactive mode where you can redirect.</li><li>Tasks on unfamiliar codebases. Headless mode works well when Claude Code already understands the project from a CLAUDE.md or a prior session. On a codebase it has never seen, an unguided headless pass often touches the wrong files or applies a correct fix in the wrong place.</li><li>First runs of any new automation. Every new headless task should start as an interactive task. Only after it behaves correctly interactively, several times, should you move it to a cron job or a pipeline trigger.</li></ul>
<h2>Wiring It Into a Pipeline or Cron Job</h2>
<p>The simplest wiring is a shell script in a cron job: set the environment, run the claude command with --print and --allowedTools, and send the output to a file or a notification channel. If the task lives in a GitHub Actions workflow, the same command runs as a step - authenticate with your Claude credentials in the workflow environment, and call the command the same way you would from a terminal.</p>
<p>Hooks extend headless mode without changing the core command. A PostToolUse hook can validate what Claude wrote before it is saved. A Stop hook can scan the final output before the process exits. Use hooks to add the guardrails that auto-accept inside an interactive session would otherwise handle with a human. The [Claude Code hooks that earn their keep](/blog/claude-code-hooks-that-earn-their-keep) post covers hook patterns that pair well with headless runs.</p>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club, members share the exact headless workflows they run - what tasks they automated, how they scoped the tool permissions, and what broke before it worked reliably. It is $9 a month at https://www.skool.com/claudecodeclub/about, or start with the [curriculum](/curriculum) to build a strong foundation before you start running Claude unattended.</blockquote>
<h2>FAQ</h2>
<p><strong>What is Claude Code headless mode?</strong></p><p>Headless mode runs Claude Code as a non-interactive process with no interface and no approval prompts. You pass the task with the --print flag, optionally restrict tools with --allowedTools, and Claude runs to completion and exits. It is Claude Code as a command in a pipeline rather than a conversation.</p>
<p><strong>How do I run Claude Code in headless mode?</strong></p><p>Use the --print flag (or -p) with your task: claude --print &quot;your task here&quot; --allowedTools Read,Write,Bash. That runs non-interactively, prints the result to stdout, and exits. Add --output-format json if something downstream needs to parse the output.</p>
<p><strong>What is the difference between headless mode and auto-accept?</strong></p><p>Headless mode is a one-shot command with no session and no human present. Auto-accept (--dangerously-skip-permissions) is an interactive session where approval prompts are bypassed but a human can still watch and interrupt. Headless runs to completion with no intervention; auto-accept can still be stopped mid-run.</p>
<p><strong>Is headless mode safe?</strong></p><p>It is safe for low-stakes, deterministic tasks on systems that have their own guardrails. Always restrict tools with --allowedTools, test the task interactively before automating it, and never run headless Claude unsupervised on tasks that touch production systems, spend money, or require judgment calls. The --allowedTools flag is the guardrail that replaces the human approval step.</p>
<p><strong>Can I use Claude Code headless mode in GitHub Actions?</strong></p><p>Yes. Authenticate with your Claude credentials in the workflow environment, then run the claude --print command as a step the same way you would from a terminal. Restrict tools to Read and Bash for a review or summary task, and write the output to a file or a pull request comment. Test the same command locally before wiring it into the workflow.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Write a Technical Spec for Claude Code (The Format I Use on Every Build)</title>
      <link>https://www.claudecodeclub.ai/blog/how-to-write-a-technical-spec-for-claude-code</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/how-to-write-a-technical-spec-for-claude-code</guid>
      <pubDate>Thu, 10 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Building</category>
      <category>Workflows</category>
      <description><![CDATA[A technical spec for Claude Code is a plain document that tells the agent exactly what to build, in what order, and where to stop. Without one, the agent guesses at the boundaries and you spend twice as long cleaning up scope drift. Here is the spec format I write at the start of every build, the sections that actually matter, and the mistakes that make Claude Code go sideways.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>A technical spec for Claude Code is not a requirements doc for a human engineer - it is a context document written for an AI agent that has no memory between sessions and no ability to ask your client for clarification. Keep it short, concrete, and unambiguous.</li><li>The spec has five parts: one-sentence goal, stack and constraints, feature list with explicit out-of-scope items, success criteria the agent can verify, and a starting file tree. Anything outside those five is padding that costs token budget without improving the build.</li><li>Write the spec before you open Claude Code, not as you go. The agent's first question shapes every subsequent decision - send it in with a complete spec and it builds in the right direction from turn one.</li></ul>
<h2>What a Technical Spec for Claude Code Actually Is</h2>
<p>A technical spec for Claude Code is a short plain document that defines what you are building, what the agent is allowed to touch, and what done looks like - before you type the first prompt. It is not a project plan, a PRD, or a design doc for a human engineer. It is context for an AI agent that starts fresh every session with no memory of yesterday's decisions, no relationship with your client, and no way to ask a clarifying question without burning your time.</p>
<p>Most builds that go sideways with Claude Code share the same root cause: the agent started with a vague prompt and made a reasonable but wrong assumption about scope, stack, or priority. By session three you are untangling decisions the agent made in session one that nobody explicitly authorized. A spec eliminates that. When Claude Code reads a complete spec at the start of a session, it knows exactly where to go and - just as importantly - where to stop.</p>
<blockquote><strong>TIP:</strong> The CCC spec format described here is the same one I load into the project CLAUDE.md so it persists across sessions. The [CLAUDE.md templates by project type](/blog/claude-md-templates-by-project-type) post has the base structure you can adapt.</blockquote>
<h2>The Five Parts of a Working Claude Code Spec</h2>
<p>Strip a well-run build down and you will find the same five pieces of context the agent needed to make good decisions. Everything else is either a nice-to-have or noise. Here is the CCC spec skeleton I use on every project.</p>
<table><caption>The five spec sections and what each one does</caption><thead><tr><th>Section</th><th>What it tells Claude Code</th><th>Example</th></tr></thead><tbody><tr><td>One-sentence goal</td><td>What the build is for and who uses it</td><td>A task manager that lets a solo founder track daily priorities, stored in Supabase</td></tr><tr><td>Stack and constraints</td><td>What tools are in, what tools are out</td><td>Next.js, Tailwind, Supabase. No auth library other than Supabase Auth. No paid APIs.</td></tr><tr><td>Feature list with explicit out-of-scope</td><td>Exactly what to build - and what not to build</td><td>In scope: add task, mark done, delete. Out of scope: recurring tasks, labels, team sharing.</td></tr><tr><td>Success criteria</td><td>How the agent (and you) verify it is done</td><td>User can create a task, see it in the list, mark it done, and delete it - all without a page reload.</td></tr><tr><td>Starting file tree</td><td>Where files go so nothing lands in the wrong place</td><td>src/app, src/components, src/lib/supabase.ts, .env.local</td></tr></tbody></table>
<p>That is the whole spec. One A4 page at most. If you are typing more than that, you are probably documenting decisions the agent could derive from context, or describing the implementation rather than the outcome. The spec defines the target; Claude Code picks the path.</p>
<h2>The One-Sentence Goal (and Why It Has to Be One Sentence)</h2>
<p>Every spec starts with a single sentence that names the product, the user, and the core job the product does. Not two sentences. Not a paragraph. One sentence, because if you cannot state the build in a sentence, the scope is not defined yet - and you are not ready to write a spec.</p>
<p>A weak goal: 'Build a task management app with productivity features.' A strong goal: 'A web app where a solo founder can add daily priority tasks, mark them done, and see the list persist across sessions using Supabase.' The difference is specificity. The weak version gives Claude Code permission to guess. The strong version gives it nothing to guess about.</p>
<p>Write the goal sentence before anything else. If you are building for a client, derive the sentence from the kickoff call, not from the proposal. The proposal is usually too vague - it is written to be accepted, not to be implemented. The [client kickoff call guide](/blog/client-kickoff-call-ai-build) has the questions that extract the goal sentence before you ever write the spec.</p>
<h2>Stack and Constraints: What Claude Code Is and Is Not Allowed to Use</h2>
<p>The stack section is where most builders underspecify and then wonder why Claude Code introduced a library they did not want. The agent will pick reasonable defaults when you leave it room - but 'reasonable' to Claude Code might mean a full authentication library when you wanted a simple cookie check, or a full ORM when you wanted a raw Supabase query. The spec names the tools that are in and explicitly bans the substitutes.</p>
<p>Format it as two short lists: 'Use' and 'Do not use.' Example: Use Next.js App Router, Tailwind CSS, Supabase for database and auth, React Query for server state. Do not use Prisma, NextAuth, any UI component library, or any paid third-party API. Two lists, no prose. The agent reads lists faster and violates prose instructions more often.</p>
<blockquote><strong>TIP:</strong> Add a version constraint for anything the agent tends to guess wrong. If you need React 18 not 19, say so. If you need Node 20, say so. Version surprises at deploy time are almost always traceable to a spec that did not specify.</blockquote>
<p>Constraints also include environment rules: what goes in .env.local versus what is hardcoded, whether the build is for Vercel or somewhere else, and what the agent is not allowed to do to the repository structure. If the client has a monorepo and the agent should only touch a specific folder, that is a constraint. Put it in the spec, not in a prompt three sessions in when the damage is already done.</p>
<h2>The Feature List: In Scope and Explicitly Out of Scope</h2>
<p>The feature list is two sections, not one. 'In scope' without 'out of scope' is an invitation to build adjacent features the agent thinks are related. The out-of-scope list is where most specifications skip a step and most builds drift.</p>
<p>For in-scope: list each feature as a user action, not a technical task. 'User can add a task with a title' is a feature. 'Create a POST endpoint at /api/tasks' is an implementation detail. Write features; let Claude Code design the implementation. One feature per line, no sub-bullets at the spec stage.</p>
<p>For out-of-scope: name the obvious adjacent features you are deliberately not building this sprint. If the build is a task manager and you know a client might ask for team sharing later, put 'Team sharing, comments, and notifications are out of scope for this build' in the spec now. When Claude Code sees something is explicitly excluded, it stops adding it speculatively. When that exclusion is absent, the agent sometimes adds a feature because it seemed helpful - and you are reverting it in session five.</p>
<blockquote><strong>TIP:</strong> The out-of-scope list is also scope protection with clients. I paste it into the contract. When a client asks for something three weeks in, I point to the spec they approved. The [how to handle scope creep guide](/blog/how-to-handle-scope-creep-on-client-projects) covers the conversation from there.</blockquote>
<h2>Success Criteria the Agent Can Actually Verify</h2>
<p>A success criterion is a testable statement. Not 'the app works well' - that is a feeling, not a criterion. A testable criterion is: 'A user can create a task, see it appear in the list immediately, mark it complete, and reload the page to find the state persisted.' Claude Code can run that test. It can also generate a test file for it, which is how I get a basic smoke test suite out of the spec with no extra work.</p>
<p>Write one criterion per major user flow, not per endpoint. Four or five criteria are usually enough for a lean build. Keep each one to a single sentence in plain English. If you need a second sentence to explain the criterion, split it into two criteria.</p>
<p>At the end of every session I paste the success criteria back into the prompt and ask Claude Code to run through them. 'Here are our success criteria. Walk through each one and tell me which pass, which fail, and what is left to do.' It is the most efficient review loop I have found - faster than reading code and more reliable than trusting the agent's last message.</p>
<h2>The Starting File Tree</h2>
<p>The file tree section is short and often skipped - which is why you keep finding components in the root folder and API handlers inside the wrong directory. Give Claude Code a minimal starting tree and it builds into it rather than around it. Approximately ten to fifteen paths is enough: the main directories, the config files, and the one or two files that need to exist before the build starts.</p>
<p>You do not need to pre-create every file - just name where they go. Example: src/app/page.tsx, src/app/api/tasks/route.ts, src/components/TaskList.tsx, src/lib/supabase.ts, .env.local. Claude Code reads the tree, understands the intended structure, and places new files accordingly. Without the tree, it defaults to its own conventions, which may not match your project, your client's conventions, or the existing codebase you are extending.</p>
<p>If you are building on an existing codebase rather than starting fresh, the file tree section becomes a map of the relevant files - the ones Claude Code should read and the ones it should not touch. Pair it with the constraints section to mark the no-go zones. The [how to use Claude Code on a large existing codebase guide](/blog/claude-code-large-existing-codebase) goes deeper on keeping the agent oriented in a code base it did not build.</p>
<h2>How I Load the Spec Into Claude Code</h2>
<p>The spec lives in two places: the CLAUDE.md file and the first prompt of every new session. CLAUDE.md is where the durable context goes - stack, constraints, file tree, and the out-of-scope list. These do not change during the build, so they belong in the persistent file the agent reads first. Features and success criteria can go in CLAUDE.md too, but I usually paste them fresh in each session prompt so I can update them as the build evolves without editing the file.</p>
<p>The first message of each session follows a fixed shape: 'Here is the spec for this build. [paste spec]. Today's task is [single concrete next step]. Start by reading the files in [directory] and tell me what you see before writing any code.' That last sentence - read before you write - is the single most valuable habit I have built into my workflow. It stops the agent from diving into implementation based on assumptions and makes it tell me what it actually found in the codebase first.</p>
<blockquote><strong>TIP:</strong> Claude Code Club members share their spec templates and first-session prompts in the community. The exact language that keeps the agent on track for a client build is one of the most asked-about resources we have. Join for $9 a month at https://www.skool.com/claudecodeclub/about.</blockquote>
<h2>The Mistakes That Break a Spec</h2>
<p>A spec that is too long is almost as bad as no spec. When the context document runs to ten pages, the agent's attention dilutes - it starts weighing section four at less than section one, and the rules buried in the middle get violated first. Keep the spec under one page. If you have that much to say, you have too much scope in one build.</p>
<p>A spec written in the third person is harder for Claude Code to parse than one written as direct instructions. 'The application should allow users to' is weaker than 'Users can.' Direct language processes faster and is less likely to be misread as a description of an existing system rather than a target to build toward.</p>
<p>The worst spec mistake is writing the spec after the build starts. I have done it. You get three sessions in, the agent has taken a turn you did not want, and you try to retroactively document the right direction. It does not work. The agent has already made decisions you would have prevented. Write the spec first, treat it as the mandatory first deliverable on every project, and send it to the client for a quick sign-off before session one. A ten-minute spec review is worth two hours of rework.</p>
<h2>FAQ</h2>
<p><strong>What is a technical spec for Claude Code?</strong></p><p>It is a short plain document written before the build starts that gives Claude Code its one-sentence goal, the stack it is allowed to use, a feature list with explicit out-of-scope items, success criteria it can verify, and a starting file tree. It replaces the need to re-explain the project in every session prompt.</p>
<p><strong>How long should a Claude Code spec be?</strong></p><p>One page or less. If you are writing more, either your scope is too large for one build or you are documenting implementation details instead of outcomes. The spec defines the target; Claude Code picks the path.</p>
<p><strong>Do I need to write a spec for every Claude Code build?</strong></p><p>Yes, even for small ones. A five-feature build with a one-page spec takes twenty minutes to write and saves two or three sessions of cleanup. The smaller the build, the shorter the spec - but the spec still needs to exist before the first prompt.</p>
<p><strong>What is the difference between a spec and a CLAUDE.md file?</strong></p><p>The spec is the document you write before the build; the CLAUDE.md is where you store the durable parts of the spec so Claude Code loads them automatically at the start of every session. The stack, constraints, and file tree go in CLAUDE.md. Features and success criteria can go there too, or be pasted fresh each session as they evolve.</p>
<p><strong>What should go in the out-of-scope section?</strong></p><p>Name the adjacent features you are deliberately not building in this sprint - the things a client might assume are included or the things Claude Code might speculatively add because they seem related. An explicit out-of-scope list stops scope drift before it starts and doubles as the contract language when a client asks for something that was never agreed.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to White-Label an AI Build for a Client (What to Hand Over and What to Keep)</title>
      <link>https://www.claudecodeclub.ai/blog/how-to-white-label-an-ai-build-for-a-client</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/how-to-white-label-an-ai-build-for-a-client</guid>
      <pubDate>Thu, 10 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Agency</category>
      <category>Monetization</category>
      <category>Freelancing</category>
      <description><![CDATA[White-labelling an AI build means delivering a working product under the client's brand with no visible trace of your tools, your prompts, or your process. It is one of the cleanest ways to charge a premium and protect your IP at the same time. Here is exactly what I hand over, what I withhold, and how I structure the agreement so neither side gets surprised.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>White-labelling an AI build means delivering a finished product under the client's brand without exposing your tools, your Claude Code prompts, or the internal systems that power the work. The client gets a polished output; you keep the process that made it.</li><li>The delivery package covers five things: the working application, a handover document that covers usage and maintenance, credentials for anything the client owns, a plain-English FAQ for their team, and one optional walkthrough call. Your skill templates, CLAUDE.md files, and internal prompt library are not in the package.</li><li>Price a white-label build at a premium over standard work because you are absorbing the operational complexity, the unknowns, and the margin on future change requests. The client is paying for a finished, maintained system - not for access to how you made it.</li></ul>
<h2>What White-Labelling an AI Build Actually Means</h2>
<p>White-labelling an AI build means the client receives a finished, working product under their brand, with no visible trace of the tools, models, or process you used to build it. The code does not reference your agency. The interface does not say 'powered by Claude.' The documentation does not walk them through your Claude Code workflow. From the client's perspective, they commissioned a build and received a product - how you made it is your business.</p>
<p>This is different from a standard handover in one important way: in a standard project, a curious client might look at the git history and piece together your method. In a white-label engagement, the client has usually agreed - explicitly, in the contract - that the methodology, tooling choices, and internal prompt systems are the agency's IP. They are buying the outcome, not the recipe.</p>
<p>White-labelling suits a specific kind of client: one who wants a finished system their team can use and maintain, does not want to learn Claude Code or manage an AI workflow, and is willing to pay a premium for something they can call their own. If the client wants to learn the tools themselves or wants your prompts so they can run the system internally, that is a different engagement type and a different price.</p>
<h2>The White-Label Delivery Package</h2>
<p>A white-label delivery is not just the code. It is a complete package that lets the client's team own, use, and maintain the product without you in the room. Here is exactly what I include and what I keep.</p>
<table><caption>What to include and exclude in a white-label delivery</caption><thead><tr><th>Item</th><th>Include or exclude</th><th>Why</th></tr></thead><tbody><tr><td>Working application</td><td>Include</td><td>This is the product they bought</td></tr><tr><td>Handover document</td><td>Include</td><td>Covers usage, known limits, and how to request changes</td></tr><tr><td>Client-owned credentials</td><td>Include</td><td>Any API key or account the client pays for goes to them</td></tr><tr><td>Plain-English team FAQ</td><td>Include</td><td>Reduces support calls in weeks one and two</td></tr><tr><td>Optional walkthrough call</td><td>Optional</td><td>One session, not ongoing training</td></tr><tr><td>Your CLAUDE.md and prompt templates</td><td>Exclude</td><td>These are your reusable IP</td></tr><tr><td>Internal Claude Code workflow</td><td>Exclude</td><td>Not part of what they paid for</td></tr><tr><td>Your skill library</td><td>Exclude</td><td>Competitive advantage, not a deliverable</td></tr><tr><td>Your API keys</td><td>Exclude</td><td>Transfer to client-owned accounts before delivery</td></tr></tbody></table>
<p>The handover document is the piece most agencies underinvest in. It is a plain document - not a code comment, not a README buried in the repo - that a non-technical person on the client's team can read and understand. It covers what the product does, what it cannot do, how to submit a change request, and who to contact if something breaks. Writing it forces you to document the known limits of the build, which protects you from support requests outside the scope you delivered.</p>
<h2>What to Keep as Your IP</h2>
<p>The client owns the product. You own the process. That distinction is the commercial foundation of a white-label business, and it is why a white-label build can be profitable even when the delivery looks finished and complete. The things you keep are the things that let you build the next client's product at half the cost.</p>
<p>Your CLAUDE.md templates are your most reusable asset - they hold the stack decisions, the file conventions, the no-go zones, and the session-opening prompts that make every new build start from a position of strength rather than from scratch. One good CLAUDE.md for a React and Supabase stack gets reused across ten client builds. It is never in the delivery package.</p>
<p>Your prompt library is the same category. The prompts that reliably produce a working authentication flow, a correct database schema, or a solid API endpoint are the accumulated result of trial and error across multiple builds. They represent real time spent figuring out what works - and they stay in your internal Claude Code Club skill files, not in the client's repository.</p>
<blockquote><strong>TIP:</strong> If you do not have a prompt library yet, the Claude Code Club community is where members share and pressure-test the prompts that are working on real client projects. Join for $9 a month at https://www.skool.com/claudecodeclub/about.</blockquote>
<h2>How to Structure the White-Label Agreement</h2>
<p>The contract is where the white-label arrangement gets made explicit. Without a contract that says so, a curious client can reasonably argue they should receive your process documents alongside the product. The key clauses to include are: IP ownership of methodology, tool and model confidentiality, a scope of support definition, and a change request pricing schedule.</p>
<p>IP ownership of methodology means one clause that states the client owns the built application and its data, while the agency retains ownership of the development methodology, tools selection, prompt engineering, and internal documentation used to build it. This does not need to be a page of legalese - three sentences in plain English is enough to establish the principle and prevent the argument later.</p>
<p>The support scope definition is equally important. White-label clients often assume ongoing support is included. It is not, unless you quoted it. Define it: what is covered in the handover period, what constitutes a bug versus a feature request, and what the change request rate is after delivery. The [what to put in an AI project contract guide](/blog/what-to-put-in-an-ai-project-contract) has the exact clauses I use.</p>
<blockquote><strong>TIP:</strong> Charge a white-label premium of 20 to 40 percent over your standard build rate. The premium covers the extra polish, the handover documentation, the credentials transfer, and the higher support exposure in the first two weeks. Do not price it as a standard build with a renamed deliverable.</blockquote>
<h2>Credentials and Accounts: Who Owns What</h2>
<p>One of the most common white-label handover mistakes is delivering a product that runs on the agency's API keys. The client is live, the product is working, and then the agency offboards a client or shuts down a key - and the client's product breaks. Before you hand over any white-label build, every account and every API key that the product depends on must be transferred to a client-owned account.</p>
<p>Transfer list for a typical AI build: the hosting account (Vercel, Railway, Fly), the database account (Supabase, Neon), any third-party API keys the product calls, the domain DNS if it is a client domain, and access to any model APIs if the product calls a model directly. The client creates the account, you configure it, you verify it works, you remove your own access. That sequence is the clean handover.</p>
<p>The exception is your own agency tooling that the client never sees - Claude Code, your internal Claude account, any skill files or automations that ran during the build. Those never transfer. The client does not know what powered the work, and they do not need to.</p>
<h2>Pricing a White-Label Build</h2>
<p>White-label builds command a higher price than standard client projects for a concrete reason: you are absorbing more responsibility. The client cannot see your process, so they cannot co-manage it. Every risk decision - stack choice, third-party service selection, architecture call - is yours alone. The premium compensates for that asymmetry.</p>
<p>The other pricing factor is the handover cost. Writing a handover document, transferring credentials, running a walkthrough call, and handling two weeks of post-delivery questions takes real time that does not show up in the build itself. Factor that into the quote rather than discovering it eats your margin after delivery.</p>
<p>One structure that works well: quote the build at your standard rate, then add a named 'white-label package' line item that covers the handover document, credentials transfer, the walkthrough call, and two weeks of bug support. Making it a visible line item - rather than hiding it in the build price - makes the premium legible to the client and makes it easy to reference in the contract. The [how much deposit to charge guide](/blog/how-much-deposit-to-charge-before-an-ai-project) covers getting that first payment secured before you start.</p>
<h2>The Handover Call and What to Cover</h2>
<p>The optional walkthrough call is not a training session. It is a single 30 to 45 minute call that covers four things: a live demo of the product working as specified, a walkthrough of the handover document, confirmation that the client can access everything they own, and a clear statement of what is and is not included in the two-week support window. That is the full agenda. Do not use it to teach the client Claude Code or walk them through your build process.</p>
<p>Record the call with the client's permission. Send the recording alongside the delivery package. Clients who watch the recording after the call can answer most of their own early questions without creating a support ticket, which means your two-week window stays manageable.</p>
<p>After the two-week support window closes, anything new is a change request. State that explicitly on the last day of the support window - a short email that says 'Your two-week support period ends on [date]. From that point, changes are handled on the standard change request rate of [rate]. Here is how to submit one.' No ambiguity, no drift, no client who assumes they have ongoing support they did not pay for.</p>
<h2>FAQ</h2>
<p><strong>What does it mean to white-label an AI build?</strong></p><p>It means delivering a finished AI-powered product under the client's brand with no visible trace of your tools, process, or agency. The client owns the product and can call it their own. You retain ownership of the methodology, prompts, and internal systems you used to build it.</p>
<p><strong>Should I give the client my Claude Code prompts as part of the handover?</strong></p><p>No. Your Claude Code prompts, CLAUDE.md templates, and skill files are your reusable IP - they are not part of what the client commissioned. The client buys the finished product, not the recipe. Include a handover document that covers usage and maintenance instead.</p>
<p><strong>How much more should I charge for a white-label build?</strong></p><p>A premium of 20 to 40 percent over your standard build rate is a reasonable starting point. The premium covers the handover documentation, credentials transfer, walkthrough call, and the two-week support window. Name it as a separate line item in your quote so the client understands what they are paying for.</p>
<p><strong>What accounts and credentials should I transfer to the client?</strong></p><p>Every account the product depends on and that the client will be paying for: hosting, database, any third-party APIs the product calls, and the domain if it is a client domain. The client creates the accounts, you configure them, you verify everything works, then you remove your own access. Your Claude Code account and internal tooling never transfer.</p>
<p><strong>What is the difference between a standard handover and a white-label handover?</strong></p><p>A standard handover gives the client the code, a brief readme, and usually a short call. A white-label handover includes all of that plus a plain-English usage document the client's non-technical team can read, a confirmed credentials transfer to client-owned accounts, and an explicit contract clause that separates product ownership from methodology ownership.</p>]]></content:encoded>
    </item>
    <item>
      <title>How Much Does Claude Code Cost Per Month? A Real Builder's Budget</title>
      <link>https://www.claudecodeclub.ai/blog/how-much-does-claude-code-cost-per-month</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/how-much-does-claude-code-cost-per-month</guid>
      <pubDate>Wed, 09 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Getting Started</category>
      <category>Tools</category>
      <description><![CDATA[How much Claude Code costs per month depends on which paid Claude plan you are on, because Claude Code is included in the plan rather than billed separately. The floor is the price of a paid Pro plan; heavier daily building lives on the two Max levels. Here is the honest per-month picture, when the API pay-per-token route is cheaper, and the mistake that made my first month cost more than it needed to.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Claude Code costs whatever your paid Claude plan costs per month, because it is included in the plan, not billed as a separate product. The cheapest way to run it is a paid Pro plan; heavier daily use moves you to the Max plan, which comes in a 5x and a 20x usage level.</li><li>There is a second route: paying per token through the Anthropic API. That has no monthly floor and can be cheaper for very light or very bursty use, but it gets expensive fast for sustained daily building, which is why most regular users are better off on a flat plan.</li><li>Your real monthly cost is driven less by the sticker price and more by how you work. Tight prompts, small context, and the right model for the task can keep you on a cheaper plan for months longer than a sloppy setup would.</li></ul>
<h2>How Much Does Claude Code Cost Per Month?</h2>
<p>Claude Code costs the price of your paid Claude plan per month, because it is bundled into the plan rather than sold as its own product. You do not pay a separate Claude Code fee on top. That means the monthly-cost question is really a plan question: the paid Pro plan is the entry point and the floor, and the Max plan sits above it in two usage levels for people who build every day. The one thing that is free - nothing. The Free Claude plan does not include Claude Code at all, so there is no zero-dollar way to run it.</p>
<p>So the honest answer to how much it costs per month is: one paid plan, at the tier that matches how hard you push it. Most people learning Claude Code or building small projects sit comfortably at the Pro floor. You only climb to a Max level when your own usage forces it, which we get into below. Check the live numbers on [Claude's own pricing page](https://claude.com/pricing) before you budget, since plans and prices change over time.</p>
<blockquote><strong>NOTE:</strong> This is the money side of a decision we walk through in full in [which Claude plan for Claude Code](/blog/which-claude-plan-for-claude-code). That post ranks the plans by usage; this one is about what actually lands on your card each month and how to keep it low.</blockquote>
<h2>The Two Ways You Pay: Flat Plan vs Per Token</h2>
<p>There are two separate billing routes into Claude Code, and mixing them up is where most confusion about cost comes from. The first is a flat monthly plan, where Claude Code draws from the same usage pool as the Claude app. The second is the Anthropic API, where you pay per token for exactly what you send and receive, with no monthly minimum.</p>
<table><caption>The two billing routes, side by side</caption><thead><tr><th>Route</th><th>How you pay</th><th>Best for</th></tr></thead><tbody><tr><td>Flat Claude plan</td><td>One fixed monthly fee; Claude Code shares the plan's usage limits</td><td>Predictable daily building where you want a bill you can forecast</td></tr><tr><td>Anthropic API (per token)</td><td>Pay per token used, no monthly floor, billed to a usage account</td><td>Very light, occasional, or bursty use, and automated jobs you want metered</td></tr></tbody></table>
<p>The flat plan wins for anyone who works with Claude Code regularly, because a fixed fee is easier to budget and you are not watching a meter on every prompt. The per-token API route wins in two cases: when you barely use it, so a whole monthly plan would be waste, and when you are running metered automated jobs where you genuinely want to see the cost of each run. For steady day-to-day building, the flat plan is almost always the cheaper and calmer choice.</p>
<blockquote><strong>TIP:</strong> If you are going the API route, treat the key like money, because it is. Never put it behind anything that could spend without a limit. The general safety discipline is in [keep your API keys safe in Claude Code](/free-resources/keep-api-keys-safe-claude-code).</blockquote>
<h2>What Actually Drives Your Monthly Cost</h2>
<p>The sticker price is the smaller half of the story. What decides whether you outgrow Pro in a week or stay on it for months is how you use the tool. Every prompt has a cost in usage, and that cost scales with how much context you load and how large the task is. A lean session and a bloated session can differ by a lot even when they produce the same result.</p>
<ul><li>Context size. The more of your codebase you pull into a session, the more each turn costs. Pointing Claude at the two files that matter is far cheaper than letting it read the whole repo every time.</li><li>Model choice. A heavier model costs more per turn than a lighter one. Reach for the strong model when the task genuinely needs it, and let a lighter one handle the routine edits and lookups.</li><li>Prompt discipline. Vague prompts cause re-work, and re-work costs usage twice. A clear, specific request that lands on the first try is the cheapest prompt there is.</li><li>Session hygiene. Long, meandering sessions carry a growing context with them. Starting a fresh session for a new task drops the accumulated weight and the cost that comes with it.</li></ul>
<p>None of this is about being stingy. It is about not paying for capacity you are wasting. The habits that keep your monthly cost down are the same habits that make Claude Code faster and more accurate, which is why they are worth building early rather than after a bill surprises you.</p>
<blockquote><strong>NOTE:</strong> We keep a running set of these habits in [what to do about Claude Code usage limits](/blog/claude-code-usage-limits-what-to-do) and [why is Claude Code slow](/blog/why-is-claude-code-slow). The overlap is not a coincidence: the moves that cut cost and the moves that cut lag are mostly the same moves.</blockquote>
<h2>When to Stay on the Floor, and When to Move Up</h2>
<p>Start on the Pro floor and stay there until your usage forces a change. The honest trigger to move up is simple: you are regularly blocked mid-task, during the workday, often enough that waiting for the limit to reset is costing you real time. Not once in a busy week - that is normal and cheap to wait out. Several times a day is the signal that a bigger plan will pay for itself in recovered hours.</p>
<p>The mistake runs both ways. Some people buy the top Max level on day one, feel responsible, and then use a fraction of it - that is money spent on headroom they never touch. Others cling to the floor while losing an hour a day to blocked sessions, which is a false economy. The self-check I use: for one week, note every time Claude Code stops me before I finished a task. Zero or one, stay put. Several a day, move up one level. Let your real usage make the call, not a guess about a busy future.</p>
<h2>The Mistake That Made My First Month Cost More</h2>
<p>My first month cost more than it needed to, and the reason was not the plan. It was that I let Claude read the entire project into context on almost every prompt, for a codebase that was already large. Each turn was carrying a pile of files it did not need for the change I was actually asking for, and I was burning through the usage window by lunchtime without noticing why.</p>
<p>The fix cost nothing. I started pointing Claude at the specific files a task touched, kept a short project context file so it did not have to rediscover the layout every session, and split unrelated work into fresh sessions instead of one endless one. My usage per real unit of work dropped hard, and the plan I already had suddenly felt roomy. The lesson I would save you: before you upgrade to spend your way out of hitting limits, check whether you are simply feeding the model far more than the job needs. Nine times out of ten, that is the cheaper fix.</p>
<h2>A Simple Way to Estimate Your Own Monthly Cost</h2>
<p>You do not need a spreadsheet. Run Claude Code the way you actually work for one week on the Pro floor and pay attention to one thing: how often you get blocked before you are done. That single count tells you almost everything about your real monthly cost.</p>
<ol><li>Week one: run on the Pro floor and log every time Claude Code stops you mid-task before you finished.</li><li>If the count is zero or one for the week, your monthly cost is the Pro price and you are done. Do not upgrade to solve a problem you do not have.</li><li>If you are blocked several times a day, price out the next Max level up and weigh it against the time you are losing to resets. That comparison, not a guess, is the upgrade decision.</li><li>If your use is genuinely light and occasional, price the same week as per-token API usage instead, and pick whichever number is smaller.</li></ol>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club, members share what their months actually cost at each usage level and the small habits that kept them on a cheaper plan longer. It is $9 a month at https://www.skool.com/claudecodeclub/about, or start with the [curriculum](/curriculum) to get productive first, then right-size the spend.</blockquote>
<h2>FAQ</h2>
<p><strong>How much does Claude Code cost per month?</strong></p><p>Claude Code is included in a paid Claude plan, so it costs whatever that plan costs per month. The paid Pro plan is the entry point and the floor; the Max plan sits above it in a 5x and a 20x usage level for heavier daily building. Check Claude's own pricing page for the current numbers, since prices change.</p>
<p><strong>Is Claude Code free?</strong></p><p>No. Claude Code is not included on the Free Claude plan, so there is no zero-dollar way to run it. You need at least a paid Pro plan, or you can pay per token through the Anthropic API instead.</p>
<p><strong>Is it cheaper to pay per token or buy a plan for Claude Code?</strong></p><p>For steady daily building, a flat monthly plan is usually cheaper and far easier to budget than per-token API billing. The per-token route wins only for very light, occasional, or bursty use, or for metered automated jobs, because it has no monthly floor but climbs quickly with sustained use.</p>
<p><strong>What makes Claude Code cost more some months?</strong></p><p>Usage, not the sticker price. Loading large amounts of context, using a heavier model for routine tasks, vague prompts that cause re-work, and long sessions that carry a growing context all burn through your usage faster. Tightening those keeps you on a cheaper plan for longer.</p>
<p><strong>How do I lower my Claude Code monthly cost?</strong></p><p>Point Claude at the specific files a task needs instead of the whole repo, keep a short project context file so it does not rediscover your layout every session, use a lighter model for routine work, and start fresh sessions for unrelated tasks. These habits cut usage per unit of work, which is what actually lands on your bill.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Price a Maintenance Retainer for an AI Build</title>
      <link>https://www.claudecodeclub.ai/blog/how-to-price-a-maintenance-retainer</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/how-to-price-a-maintenance-retainer</guid>
      <pubDate>Wed, 09 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Agency</category>
      <category>Monetization</category>
      <category>Freelancing</category>
      <description><![CDATA[To price a maintenance retainer, name the outcome the client is buying - a working system that keeps working - then set a fixed monthly fee against a defined envelope of changes, not open-ended support. Here is how to size the number, what to include and exclude, and the framing that turns a one-off build into recurring revenue instead of unpaid quick fixes.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Price a maintenance retainer as a fixed monthly fee tied to a defined envelope of work, not open-ended support. Name the outcome the client is buying - a system that keeps working - and set the number against the value of that, not against your hours.</li><li>A workable starting range for a small build is a monthly fee that covers a defined block of change requests, a response-time promise, and hosting oversight. The exact number comes from the size of the system and what a day of it being broken would cost the client, not a flat percentage rule.</li><li>The load-bearing part is the exclusions list. Write down what the retainer does not cover - new features, redesigns, work outside the envelope - so every quick fix that would have been unpaid becomes a defined add-on the client expects to pay for.</li></ul>
<h2>How to Price a Maintenance Retainer</h2>
<p>Price a maintenance retainer as a fixed monthly fee attached to a defined envelope of work, and anchor the number to the outcome the client is buying rather than to your hours. The outcome is simple to name: a system that keeps working, changes when the business needs it to, and never becomes the client's problem to figure out. When you price against that, the retainer is cheap. When you price against hours, it looks like a cost to trim the moment things are quiet.</p>
<p>The envelope is what makes the number defensible. A retainer is not open-ended support - that is a trap that turns every message from the client into unpaid work. It is a monthly fee that buys a specific, bounded set of things: a block of change requests, a response-time promise, oversight of hosting and dependencies, and a standing relationship so the client is never starting from a cold stranger when something breaks. Define that block, and the price stops being a guess.</p>
<blockquote><strong>NOTE:</strong> This is the recurring-revenue move behind [how to turn a one-off client into a monthly retainer](/blog/how-to-turn-a-one-off-client-into-a-monthly-retainer). That post is about making the offer; this one is about putting the right number on it and drawing the line around what it covers.</blockquote>
<h2>Start From the Outcome, Not Your Hours</h2>
<p>The fastest way to underprice a retainer is to estimate how many hours of maintenance the system will need and multiply by your rate. It feels rigorous. It is exactly backwards, because with AI-assisted work your hours keep shrinking as you get better, which means hourly maintenance pricing sends your invoice in the wrong direction over time. The better the system runs, the less you earn - that is not a business, that is a slow fade.</p>
<p>Price the outcome instead. Ask what a day of this system being down would cost the client - in lost sales, in staff time, in a stalled process - and set the monthly fee as a small fraction of that. A retainer that costs a fraction of one bad day is an easy yes and stays an easy yes, because the client is not comparing it to your effort. They are comparing it to the risk of the thing they depend on quietly failing with no one on call.</p>
<blockquote><strong>TIP:</strong> The same outcome-first discipline decides your build price too. If you are still setting project fees off hours, fix that first in [how to price a Claude Code agency project](/blog/how-to-price-a-claude-code-agency-project). The retainer inherits whatever framing you used on the build.</blockquote>
<h2>What Goes Inside the Retainer, and What Does Not</h2>
<p>A retainer that will not bleed margin has a clear inside and a clear outside. The inside is the bounded envelope of ongoing care. The outside is everything that is really a new project wearing a small-ask costume. Write both down. The line between them is where your margin lives or dies.</p>
<table><caption>A clean envelope: inside the retainer vs a separate quote</caption><thead><tr><th>Inside the monthly fee</th><th>Outside it - a separate quote</th></tr></thead><tbody><tr><td>A defined block of small change requests per month</td><td>A new feature or a whole new section of the system</td></tr><tr><td>Bug fixes and keeping the system running</td><td>A redesign or a rebuild of an existing part</td></tr><tr><td>Dependency and hosting oversight, security updates</td><td>Integrating a new third-party tool from scratch</td></tr><tr><td>A response-time promise when something breaks</td><td>Work that clearly exceeds the monthly change block</td></tr></tbody></table>
<p>The exclusions list is the load-bearing part, and most people write it too gently or skip it. Be specific. Most scope creep on a retainer happens because the client genuinely believed a new feature was covered and you genuinely did not, so nobody is being unreasonable - the document just failed to draw the line. Put a number on work beyond the envelope, so a bigger ask flips from an awkward favor into a defined add-on the client already expects to pay for.</p>
<blockquote><strong>WARNING:</strong> Never promise open-ended support to close a retainer. It feels generous and it quietly guts the deal, because every quick fix outside the envelope is unpaid work eating the margin on your next engagement. A bounded envelope you actually honour is worth more to the client than an unbounded promise you will come to resent.</blockquote>
<h2>A Simple Way to Size the Number</h2>
<p>You do not need a formula, you need a floor and a ceiling that both come from real things. The floor is your genuine cost to be available and honour the envelope - the standing responsibility, not a guess at hours. The ceiling is a fraction of what the system being broken would cost the client. Your number sits between them, closer to the ceiling the more the business depends on the system.</p>
<ol><li>Name the outcome in one sentence: what the client actually gets is a working system that keeps working and changes when they need it to.</li><li>Estimate the cost of a bad day: what does it cost this client, in money and time, when the system is down or wrong for a day. That sets your ceiling.</li><li>Define the envelope: how many small changes a month, what response time, what hosting and security oversight. That is what the fee buys.</li><li>Set the monthly fee as a small fraction of the bad-day cost, above your floor to be available. Then write the exclusions list so everything outside the envelope is a separate, numbered add-on.</li></ol>
<p>Sanity check it against a simple test: if the client cancelled the retainer, would the risk they are now carrying feel bigger than the fee they just saved? If yes, the number is right and the retainer sells itself. If the fee feels large next to the risk, either the system does not need a retainer yet or you have priced the envelope too wide for what this client actually uses.</p>
<h2>How to Present It So the Client Says Yes</h2>
<p>Lead with the outcome, keep the mechanism in the background. The client is not buying change requests and dependency updates - those are how you deliver it. They are buying the fact that the thing their business now runs on will not silently break with no one responsible for it. Every line of the retainer offer should point back to that, or it belongs in an appendix.</p>
<p>Offer it at the moment of maximum trust, which is the handoff. A client who has just been given a working, documented system is the easiest person in the world to offer a retainer to, because they can already see exactly where they will want help next. Present one clear monthly number, the envelope it covers, the exclusions, and the response-time promise, on a single page. One page that a client can read the value of in ten seconds closes better than a long document that makes them feel they are signing something heavy.</p>
<blockquote><strong>NOTE:</strong> Claude Code Club members share the actual retainer numbers and envelopes they run, and how they present them at handoff without it feeling like an upsell. It is $9 a month at https://www.skool.com/claudecodeclub/about, or start with the [curriculum](/curriculum) to get the delivery side sharp first, then layer the recurring offer on top.</blockquote>
<h2>FAQ</h2>
<p><strong>How do I price a maintenance retainer?</strong></p><p>Set a fixed monthly fee tied to a defined envelope of work - a block of change requests, a response-time promise, and hosting oversight - and anchor the number to the outcome the client is buying rather than your hours. Size it as a small fraction of what a day of the system being broken would cost the client, above your floor to be available.</p>
<p><strong>How much should a maintenance retainer cost?</strong></p><p>There is no flat rule, because it depends on the size of the system and how much the business depends on it. Price it as a small fraction of what a bad day - the system down or wrong - would cost the client, above your genuine cost to be available. If the risk of cancelling feels bigger than the fee saved, the number is right.</p>
<p><strong>Should a maintenance retainer be priced by the hour?</strong></p><p>No. Hourly maintenance pricing sends your invoice down as you get faster, which is the wrong direction for a business. Price the outcome - a working system that keeps working - as a fixed monthly fee, so your improving speed stays in your column instead of shrinking what you earn.</p>
<p><strong>What should a maintenance retainer include and exclude?</strong></p><p>Include a defined block of small changes, bug fixes, keeping the system running, and hosting and security oversight, plus a response-time promise. Exclude new features, redesigns, rebuilds, and new integrations - those get a separate quote. The specific exclusions list is what stops quick fixes from becoming unpaid work.</p>
<p><strong>When is the best time to offer a maintenance retainer?</strong></p><p>At the handoff, right after you deliver a working, documented system. That is the moment of maximum trust, when the client can already see where they will want ongoing help, so a bounded monthly retainer reads as sensible protection rather than an upsell.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code Token Usage: What Actually Eats Your Limit (and How to Make It Last)</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-token-usage</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-token-usage</guid>
      <pubDate>Tue, 08 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Workflows</category>
      <category>Getting Started</category>
      <description><![CDATA[Claude Code token usage is driven by how much text goes into and out of the model on every turn - your context, the files it reads, its own output, and the conversation history it drags forward. Most people burn through their limit not by doing more work, but by keeping bloated context and long sessions running. Here is exactly what uses your usage and how to stretch it.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Claude code token usage is the total text processed on every turn: everything Claude Code reads (your prompt, CLAUDE.md, the files it opens, tool results) plus everything it writes back. You are billed for input and output, and the running conversation history is re-sent on every turn - so a long session quietly costs more per message the longer it runs.</li><li>The three biggest silent drains are: large files read in full when only a section was needed, conversation history that keeps growing across a marathon session, and re-reading the same files repeatedly because context was not kept tight. None of these are the model misbehaving - they are context you left in the window.</li><li>The fix is context discipline: a short CLAUDE.md, pointing Claude at specific files instead of letting it search, starting a fresh session when a task is done, and using plan mode for big tasks so you approve the approach before it spends output tokens building the wrong thing.</li></ul>
<h2>What Counts as Token Usage in Claude Code</h2>
<p>Token usage in Claude Code is the total amount of text the model processes on each turn, measured in tokens - small chunks of text roughly the size of a few characters or a short word. Every turn has two halves: input tokens (everything Claude Code reads before it responds) and output tokens (everything it writes back). Both count against your usage, and output tokens are the more expensive half.</p>
<p>The part most people miss is that Claude Code is stateless between turns. It does not remember your last message on its own - the full conversation so far is re-sent as input on every single turn so the model can see the whole thread. That means a session that has run for twenty messages is sending twenty messages of history as input on message twenty-one, before you have even added your new request. This is why long sessions feel like they get slower and burn usage faster: the input is growing every turn.</p>
<table><caption>The four things that make up your Claude Code token usage on a turn</caption><thead><tr><th>Component</th><th>Counts as</th><th>What drives it up</th></tr></thead><tbody><tr><td>Your prompt</td><td>Input</td><td>Long, rambling requests instead of tight ones</td></tr><tr><td>Loaded context</td><td>Input</td><td>A bloated CLAUDE.md, and files Claude reads in full</td></tr><tr><td>Conversation history</td><td>Input</td><td>Long sessions - the whole thread is re-sent every turn</td></tr><tr><td>Claude's response</td><td>Output</td><td>It rewriting whole files instead of a targeted change</td></tr></tbody></table>
<h2>The Biggest Silent Drain: Reading Whole Files It Did Not Need</h2>
<p>The single largest source of wasted token usage is Claude Code reading large files in full when it only needed a small part of them. When you ask a vague question in a big project, Claude Code opens files to figure out where the relevant code lives - and a single large file can be thousands of tokens of input, most of which was irrelevant to the change you wanted.</p>
<p>The fix is to point it at the exact target. Instead of &quot;fix the login bug,&quot; say &quot;in src/lib/auth.ts, the token refresh on line 40 is not clearing the old session - fix that.&quot; Now Claude Code reads one file, or one section, instead of hunting through five. In the Claude Code desktop app you can drag the specific file into the conversation so it never has to search. Every file it does not have to open is input you did not spend.</p>
<blockquote><strong>TIP:</strong> This is the same discipline that makes Claude Code more accurate, not just cheaper. Tight context means fewer wrong-file edits. The [Claude Code context engineering guide](/blog/claude-code-context-engineering) goes deeper on referencing files precisely.</blockquote>
<h2>Why Long Sessions Cost More Per Message</h2>
<p>Because the whole conversation is re-sent as input on every turn, a marathon session gets more expensive the longer it runs - even if your individual messages stay short. The first message in a session might send a few hundred tokens of input. The fiftieth message sends the accumulated history of the first forty-nine turns before your new request is even read. You are paying to re-transmit the entire backstory over and over.</p>
<p>The fix is conversation hygiene: start a fresh session when a task is done. End a focused work block with a one-line summary - &quot;we added the invoice PDF export and fixed the date bug; next is the email step&quot; - then open a new session and paste that summary as the first message. You carry forward the decisions without dragging the entire transcript, which resets your input cost back to near zero.</p>
<blockquote><strong>NOTE:</strong> This is also the fix for quality drift, not just usage. A stuffed context window makes Claude Code start contradicting earlier instructions. The [when to start a fresh session guidance](/blog/claude-code-context-engineering) covers the signals to watch for.</blockquote>
<h2>Plan Mode Saves Output Tokens on Big Tasks</h2>
<p>Output tokens are the expensive half of usage, and the most wasteful output is a large build that went in the wrong direction. When you ask Claude Code to implement a big feature in one shot, it may write hundreds of lines across several files before you get to see whether the approach was right. If it was wrong, you have paid for all that output and now have to pay again for the rewrite.</p>
<p>Plan mode fixes this. You ask Claude Code to produce a plan first - the files it will touch, the approach, the order of steps - and you approve or correct it before it writes a single line of implementation. The plan is cheap output; the wrong implementation is expensive output. Catching a bad approach at the plan stage is the highest-leverage way to cut output token usage on anything non-trivial.</p>
<ul><li>Use plan mode for anything that touches more than one or two files, so you approve the shape before the spend.</li><li>Ask for a targeted edit, not a full-file rewrite, when the change is small - &quot;change only the refresh function&quot; produces far less output than &quot;rewrite this file.&quot;</li><li>Break large asks into a sequence of small, verified steps rather than one giant request that produces a wall of output you then have to unwind.</li></ul>
<blockquote><strong>NOTE:</strong> The [Claude Code plan mode guide](/blog/claude-code-plan-mode) walks through using it on real client work so you ship without rework.</blockquote>
<h2>Keep Your CLAUDE.md Lean</h2>
<p>Your CLAUDE.md file loads as input at the start of every session, so its length is a fixed tax on every conversation. A tight, 300-word CLAUDE.md that states your stack, your conventions, and your no-go zones is a good investment. A 5,000-word CLAUDE.md that tries to document everything is spending token budget on rules the model rarely needs, on every single turn, forever.</p>
<p>Aim for the shortest CLAUDE.md that reliably stops the mistakes you actually see. If Claude Code keeps using the wrong import, add a line about your stack. If it keeps touching a folder it should not, add a no-go line. Do not pre-load rules for problems you do not have. Lean context is cheaper and, again, more accurate - the model is not diluted by rules that do not apply to the task in front of it.</p>
<blockquote><strong>TIP:</strong> The [CLAUDE.md templates by project type](/blog/claude-md-templates-by-project-type) post has short starting templates you can trim to fit. Inside Claude Code Club, members share the lean CLAUDE.md files they run in real production projects - it is one of the most reused resources we keep on file. Join for $9 a month at https://www.skool.com/claudecodeclub/about.</blockquote>
<h2>How to Tell What Is Using Your Usage</h2>
<p>If you feel like you are hitting limits faster than the work justifies, the cause is almost always one of the drains above rather than the volume of real work. Run through this checklist before assuming you need a bigger plan. Most usage problems are a context problem in disguise.</p>
<table><caption>Symptom, likely token drain, and the fix</caption><thead><tr><th>Symptom</th><th>Likely cause</th><th>Fix</th></tr></thead><tbody><tr><td>Usage climbs even on small asks</td><td>A long-running session re-sending its history</td><td>Start a fresh session with a one-line summary</td></tr><tr><td>Every session feels heavy from the start</td><td>A bloated CLAUDE.md loading as input each time</td><td>Trim CLAUDE.md to the rules that stop real mistakes</td></tr><tr><td>Claude reads lots of files per request</td><td>Vague prompts making it search for the target</td><td>Name the exact file and function in your message</td></tr><tr><td>Big builds burn output then need redoing</td><td>Skipping plan mode on multi-file work</td><td>Approve a plan before it writes the implementation</td></tr><tr><td>Large responses for tiny changes</td><td>Asking for full-file rewrites</td><td>Ask for a targeted edit to the specific block</td></tr></tbody></table>
<p>If you have tightened all of that and still consistently run out, that is the signal that your workload genuinely needs more headroom - and that is a plan question, not a usage-discipline question. The [which Claude plan for Claude Code](/blog/which-claude-plan-for-claude-code) post breaks down Pro versus Max by real usage, and the [Claude Code usage limits guide](/blog/claude-code-usage-limits-what-to-do) covers what to do the moment you hit a cap mid-build.</p>
<h2>FAQ</h2>
<p><strong>What uses the most token usage in Claude Code?</strong></p><p>The largest single drain is Claude Code reading whole files it did not need because the request was vague. The second is conversation history: because the full thread is re-sent on every turn, a long session sends more and more input each message. Output tokens are the most expensive per token, so a large build that went the wrong way and had to be redone is also costly.</p>
<p><strong>Does a long Claude Code session use more tokens?</strong></p><p>Yes. Claude Code is stateless between turns, so the entire conversation so far is re-sent as input on every turn. On the fiftieth message it is sending the accumulated history of the first forty-nine turns before it even reads your new request. Starting a fresh session with a short summary resets that input cost back to near zero.</p>
<p><strong>How do I reduce token usage in Claude Code?</strong></p><p>Point Claude at specific files instead of letting it search, keep your CLAUDE.md short (a few hundred words, not thousands), start a fresh session when a task is done rather than running a marathon thread, and use plan mode on multi-file work so you approve the approach before it spends output tokens building it.</p>
<p><strong>Do input and output both count toward Claude Code usage?</strong></p><p>Yes. Input is everything Claude Code reads on a turn - your prompt, your CLAUDE.md, the files it opens, and the conversation history. Output is everything it writes back. Both count, and output is the more expensive half per token, which is why avoiding wrong-direction builds with plan mode matters so much.</p>
<p><strong>Does a big CLAUDE.md file increase token usage?</strong></p><p>Yes. Your CLAUDE.md loads as input at the start of every session, so its length is a fixed cost applied to every conversation. A lean CLAUDE.md that states your stack, conventions, and no-go zones in a few hundred words is efficient. A multi-thousand-word file spends token budget on rules the model rarely needs, every turn.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Send a Monthly Client Report That Keeps the Retainer</title>
      <link>https://www.claudecodeclub.ai/blog/ai-agency-monthly-report</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/ai-agency-monthly-report</guid>
      <pubDate>Tue, 08 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Agency</category>
      <category>Freelancing</category>
      <category>Monetization</category>
      <description><![CDATA[An AI agency monthly report is the one document that decides whether a client renews or quietly drops off. Its job is not to prove you were busy - it is to show the client the outcome they are paying for, in language they care about. Here is the exact structure I use, what to include, what to cut, and how to send it so the retainer renews itself.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>An AI agency monthly report exists to protect the retainer, not to list your tasks. Clients do not renew because you were busy - they renew because they can see the outcome they are paying for. Lead the report with results tied to their goal, not a log of hours.</li><li>Use a fixed five-part structure every month: the headline result, what changed since last month, what you shipped, what is next, and one clear ask or decision. Keeping it the same every month makes it fast to write and easy for the client to read at a glance.</li><li>Send it before they ask, on the same day each month, and keep it to one page or one short screen. A report that arrives on schedule signals control - and control is what a retainer client is actually buying.</li></ul>
<h2>What a Monthly Client Report Is Actually For</h2>
<p>An AI agency monthly report is a short document sent to a retainer client that shows them the outcome they are paying for, on a predictable schedule. Its real job is retention. A client renews when the report makes the value obvious and the relationship feel handled. A client drifts when the report reads like a timesheet, or worse, when no report arrives and they start wondering what they are paying for.</p>
<p>The most common mistake is treating the report as proof of effort - a long list of everything you touched this month. Clients do not buy effort. They buy an outcome: more leads, less manual work, a system that runs. If your report leads with tasks instead of results, you are training the client to evaluate you on activity, which is the one metric where AI-assisted work looks suspiciously cheap. Lead with the outcome and the effort becomes context, not the headline.</p>
<h2>The Five-Part Report Structure I Use Every Month</h2>
<p>Use the same five sections every month. A fixed structure is faster for you to write, easier for the client to skim, and it builds a rhythm - by month three they know exactly where to look for the number they care about. This is the CCC retainer report shape, and it fits on one page.</p>
<table><caption>The five-part monthly report and what goes in each section</caption><thead><tr><th>Section</th><th>What it answers</th><th>Keep it to</th></tr></thead><tbody><tr><td>Headline result</td><td>Did the thing they pay for move this month?</td><td>One or two sentences with a real number</td></tr><tr><td>What changed</td><td>How is this month different from last?</td><td>A short comparison, not raw data</td></tr><tr><td>What we shipped</td><td>What did you actually deliver?</td><td>3 to 5 bullets, outcome-first</td></tr><tr><td>What is next</td><td>What are you doing next month?</td><td>2 to 3 bullets so they see the road ahead</td></tr><tr><td>One ask or decision</td><td>What do you need from them?</td><td>A single clear request, or 'nothing needed'</td></tr></tbody></table>
<p>Notice what is not on the list: hours, a tool changelog, and internal process detail. None of that belongs in a client report. If the client wants a deeper breakdown they will ask, and you can send it - but the default document is the outcome, not the machinery behind it.</p>
<h2>Lead With the Number the Client Cares About</h2>
<p>The headline result is the whole report in one line, and it must be tied to the goal the client hired you for. If they hired you to cut the time their team spends on manual reporting, the headline is the hours saved this month - not the automation you built to save them. If they hired you for lead flow, the headline is leads, not the scraper you shipped. Translate every deliverable back into their language before it goes in the report.</p>
<p>Only use numbers you can actually stand behind. Never round up, never estimate a result you did not measure, and never present your own guess as a client outcome. If you cannot measure the headline metric yet because the tracking is not in place, say so plainly and make getting that tracking live the 'what is next.' A report built on a fabricated number is worse than a modest honest one - it costs you the trust the retainer runs on the moment the client checks.</p>
<blockquote><strong>NOTE:</strong> If you are still setting the price and scope of this kind of ongoing work, the [how to turn a one-off client into a monthly retainer](/blog/how-to-turn-a-one-off-client-into-a-monthly-retainer) post covers the pitch, and [how to get repeat clients for your AI agency](/blog/how-to-get-repeat-clients-for-your-ai-agency) covers the wider retention picture the report feeds into.</blockquote>
<h2>How to Write It Fast Without It Feeling Generic</h2>
<p>The report should take fifteen minutes, not an afternoon, or you will start skipping it - and a skipped report is a retainer at risk. The way to make it fast is to keep a running note during the month. Each time you ship something, drop a one-line outcome into a note for that client. At month end you are editing a list, not reconstructing four weeks from memory.</p>
<p>You can have Claude Code help draft it from that running note. Point it at your notes file and your last report, and ask it to produce this month's report in the same five-part structure, outcome-first, in the client's language. You are not outsourcing the judgment - you decide the headline and check every number - but the assembly and the wording are exactly the kind of repeatable task the desktop app handles well. The result is a consistent, on-brand report in minutes.</p>
<ul><li>Keep a one-line-per-win running note per client so month-end is editing, not remembering.</li><li>Reuse last month's report as the template so the structure and tone stay identical every time.</li><li>Write every deliverable as an outcome in the client's words before it goes in - translate 'built a Zapier flow' into 'cut your invoice admin to zero.'</li><li>Draft with Claude Code from your notes, then edit the headline and verify every number by hand before sending.</li></ul>
<h2>When and How to Send It</h2>
<p>Send the report on the same day every month, before the client asks for it. A report that arrives on schedule, unprompted, signals that the engagement is under control - and control is the thing a retainer client is really paying for. A report you only send when chased signals the opposite, no matter how good the work inside it is.</p>
<p>Send it as a short email with the report in the body or as a one-page PDF - not a link to a dashboard the client has to log into and interpret. The client should be able to read the headline on their phone in ten seconds and feel good about the money. If there is a decision you need from them, put it at the very end as a single clear ask so it does not get lost, and follow up once if they do not respond within a few days.</p>
<blockquote><strong>TIP:</strong> The monthly report is also the natural moment to surface more work. If 'what is next' keeps pointing at something bigger than the current scope, that is an upsell the client is already primed for. The [how to upsell existing clients without a pitch](/blog/upsell-existing-clients-without-a-pitch) post covers doing this without it feeling like a sales push. Inside Claude Code Club we share the exact report templates and client-facing systems that keep retainers renewing - join for $9 a month at https://www.skool.com/claudecodeclub/about.</blockquote>
<h2>FAQ</h2>
<p><strong>What should an AI agency monthly report include?</strong></p><p>Five sections: a headline result tied to the client's goal, what changed since last month, what you shipped (outcome-first bullets), what is next, and one clear ask or decision. Leave out hours, tool changelogs, and internal process detail - the client is buying an outcome, so lead with the outcome.</p>
<p><strong>How long should a client report be?</strong></p><p>One page, or one short screen. The client should be able to read the headline in ten seconds. A long report is less likely to be read and trains the client to evaluate you on volume of activity rather than the result they are paying for. Keep depth available on request, but default to short.</p>
<p><strong>How do I write a monthly client report quickly?</strong></p><p>Keep a running note during the month with one line per win, reuse last month's report as a template, and draft this month's from those notes - you can have Claude Code assemble the draft in your fixed five-part structure. You still decide the headline and verify every number by hand. Done this way it takes about fifteen minutes.</p>
<p><strong>When should I send the monthly report?</strong></p><p>On the same day every month, before the client asks. An on-schedule, unprompted report signals the engagement is under control, which is what a retainer client is actually paying for. Send it as a short email or a one-page PDF, not a dashboard link they have to log in and interpret.</p>
<p><strong>Should a monthly report include hours worked?</strong></p><p>No. Listing hours trains the client to evaluate you on effort, which is the one metric where AI-assisted work can look cheap and invite fee pressure. Report the outcome the client is paying for instead. If they specifically ask for a time breakdown you can provide it, but it should never be the default headline.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code Context Engineering: How to Give Claude the Right Information Every Time</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-context-engineering</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-context-engineering</guid>
      <pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Workflows</category>
      <category>Getting Started</category>
      <description><![CDATA[Context engineering is the practice of deciding what Claude Code sees before it starts work - your CLAUDE.md, the files you reference, the conversation history you keep or trim. Get it wrong and Claude drifts, repeats mistakes, or writes code that contradicts your actual project. Here is the practical system that fixes it.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Context engineering means deliberately shaping what Claude Code reads before it acts - your CLAUDE.md, the files you pin, how you open a session, and when you clear conversation history. The model can only work with what is in its context window, so the quality of your context determines the quality of what it builds.</li><li>The three levers are: your CLAUDE.md file (persistent project instructions that load every session), explicit file references (pointing Claude at the exact code it needs instead of making it search), and conversation hygiene (knowing when to start a fresh session so you are not dragging stale context through a long build).</li><li>The most common mistake is treating Claude Code like a search engine - typing a vague request and hoping it finds the right file. Context engineering flips that: you give it the right file, the right constraint, and the right scope before you ask.</li></ul>
<h2>What Context Engineering Actually Means in Claude Code</h2>
<p>Context engineering for Claude Code is the practice of deliberately deciding what the model reads before it starts any piece of work. Claude Code does not have persistent memory between sessions. It has a context window - a fixed amount of information it can hold at once - and every response it gives is based entirely on what is currently inside that window. Context engineering is the skill of making sure the right things are in that window at the right time.</p>
<p>That sounds simple, but in practice most people using Claude Code are doing the opposite. They open a session, type a request, and hope the model figures out where the relevant code lives. Sometimes it does. Often it makes an educated guess, touches the wrong file, and produces output that technically answers the question but breaks something else. Context engineering is the fix.</p>
<blockquote><strong>NOTE:</strong> New to Claude Code? The [Claude Code desktop app guide](/blog/claude-code-desktop-app) is the right starting point. This post assumes you have a project open and want to get more consistent results from it. The [CLAUDE.md file guide](/blog/claude-code-claude-md-file) goes deeper on the specific file referenced throughout this post.</blockquote>
<h2>The Three Levers of Context in Claude Code</h2>
<p>There are three things you actually control when it comes to Claude Code's context: what is in your CLAUDE.md file, which files you explicitly reference in your message, and how long you let a conversation run before starting fresh. Each one has a different time horizon - CLAUDE.md is permanent, file references are per-message, and conversation hygiene is per-session.</p>
<table><caption>The three context levers and when each one matters</caption><thead><tr><th>Lever</th><th>What it does</th><th>When to use it</th></tr></thead><tbody><tr><td>CLAUDE.md</td><td>Loads project-wide rules, constraints, and conventions at the start of every session automatically</td><td>Set it up once per project; update it when a rule changes</td></tr><tr><td>File references</td><td>Points Claude at the exact file or code block it needs instead of making it search or guess</td><td>Every time you ask Claude to edit, review, or extend specific code</td></tr><tr><td>Conversation hygiene</td><td>Controls how much prior conversation history is in the window - stale context causes drift</td><td>Start a new session when a task is done or when Claude starts contradicting itself</td></tr></tbody></table>
<p>These three levers cover almost every consistency problem people blame on the model. Claude Code is not being random when it touches the wrong file or forgets a constraint you mentioned six messages ago. It is working with the context it has. Engineering that context is your job.</p>
<h2>Your CLAUDE.md File Is Your Most Important Context Investment</h2>
<p>The CLAUDE.md file in your project root is the single most impactful thing you can add to any Claude Code project. It loads automatically at the start of every session and tells Claude Code the things that are always true about this project: the tech stack, the naming conventions, the folders it should never touch, the style rules you care about, and the constraints that must hold across every file it generates.</p>
<p>Without it, you are re-explaining your project from scratch every session. With it, Claude Code starts each session already knowing that your project uses TypeScript strict mode, that all components live in src/components, that you never want inline styles, and that the database schema lives in a specific migration folder. You stop correcting the same mistakes repeatedly.</p>
<ul><li>List the tech stack and major dependencies so Claude Code never suggests an import from a library you are not using.</li><li>Name the folders that are off-limits or that have special rules - e.g. never edit migrations directly, always run them through the migration tool.</li><li>State the code style rules that matter to you: casing, file naming, how you handle errors, what the testing pattern is.</li><li>Include a short project description (one or two sentences) so Claude Code knows what the product is supposed to do when it makes architectural decisions.</li><li>Add a section for things Claude should always confirm before doing - dropping a table, making a schema change, touching a production config.</li></ul>
<blockquote><strong>TIP:</strong> Keep CLAUDE.md short enough to read in two minutes. A 5,000-word file adds so much context that the model is spending token budget on your rules instead of your code. Aim for under 500 words for a typical project. The [CLAUDE.md templates post](/blog/claude-md-templates-by-project-type) has working templates by project type if you want a starting point.</blockquote>
<h2>How to Reference Files Without Making Claude Hunt</h2>
<p>When you type &quot;update the auth handler&quot; and Claude Code has 400 files to search through, it is doing pattern matching on filenames and directory names to find a candidate. Sometimes that is fine. But in a mature codebase with multiple files that touch authentication - middleware, a helper module, a routes file, a types file - it may pick the wrong one, make a change there, and not touch the one you needed.</p>
<p>The fix is to be specific about what you are pointing at. In the Claude Code desktop app, you can drag a file into the conversation or reference it by path. In a terminal session, you can paste the relevant code block. Either way, you are making the target unambiguous. Claude Code works best when the context contains the actual thing to be changed, not a description of where it might be found.</p>
<ul><li>Reference the file path explicitly in your message when asking about a specific file - for example: &quot;in src/lib/auth.ts, update the token refresh logic to...&quot;</li><li>For a change that spans multiple files, name all of them in your message so Claude Code knows the full scope before it starts.</li><li>Paste the relevant function or block inline for small, targeted changes. This is faster than file search and keeps the context tight.</li><li>If you want Claude to understand the existing pattern before changing it, paste both the thing you are changing and a working example of the pattern to follow.</li></ul>
<h2>When to Start a Fresh Session</h2>
<p>Every message you send and every response Claude Code gives adds to the conversation history in the context window. Early in a session that history is useful - Claude can refer back to decisions you made two messages ago. Late in a long session, that same history starts to crowd out the code it actually needs to work with, and the model starts reflecting earlier context more than recent instructions.</p>
<p>The signal that it is time to start a new session is when Claude Code starts contradicting a constraint you set, generating code in a style you moved away from three tasks ago, or asking you to clarify something it got right earlier. That is not the model regressing. That is a full context window redistributing attention. The fix is a fresh session with your CLAUDE.md already loaded, a clean slate, and your current focus in the first message.</p>
<blockquote><strong>TIP:</strong> A useful habit: end each focused work session with a summary message - something like &quot;we added X, changed Y, and the next step is Z.&quot; Then start a new session and paste that summary as the first message. You carry the decisions forward without carrying all the noise of how you got there.</blockquote>
<h2>Context Engineering for Agents and Subagents</h2>
<p>If you are running Claude Code in agent mode or dispatching subagents with the /agents command, context engineering becomes even more important because each subagent starts with its own context window and cannot share memory with the others mid-run. The information a subagent needs to do its job has to be passed to it explicitly in its task description.</p>
<p>This means your CLAUDE.md becomes the shared foundation - every subagent reads it at startup. Beyond that, each subagent task should include the specific files it will touch, the constraints that apply to its scope, and a clear deliverable. A subagent told &quot;improve the checkout flow&quot; will do something. A subagent told &quot;in src/pages/checkout.tsx, update the payment form to show a loading state during submission, matching the pattern in src/components/Button.tsx&quot; will do the right thing.</p>
<blockquote><strong>NOTE:</strong> The [Claude Code subagents guide](/blog/claude-code-subagents) covers how to structure multi-agent runs. The [agent loops post](/blog/claude-code-agent-loops) explains how the agentic loop works and where context decisions matter most inside it. Inside the club, members share the CLAUDE.md files they actually run in production projects - it is one of the more practically useful things we keep on file. Join for $9 a month at https://www.skool.com/claudecodeclub/about.</blockquote>
<h2>The Most Common Context Mistakes and How to Fix Them</h2>
<p>Most inconsistency problems in Claude Code trace back to one of a small number of context mistakes. They are not hard to fix once you know what you are looking for.</p>
<table><caption>Common context mistakes and their fixes</caption><thead><tr><th>Mistake</th><th>What it causes</th><th>Fix</th></tr></thead><tbody><tr><td>No CLAUDE.md</td><td>Claude forgets your conventions between sessions and re-invents them</td><td>Add a CLAUDE.md with your stack, file structure, and key rules before the first session</td></tr><tr><td>Vague file references</td><td>Claude picks the wrong file and makes changes that break something adjacent</td><td>Name the exact file path and function in your message</td></tr><tr><td>Sessions that run too long</td><td>Claude starts reflecting early-session decisions over recent ones</td><td>Start a new session when a major task is done; open with a summary</td></tr><tr><td>Giving Claude too many things at once</td><td>It does all of them at a low quality instead of one well</td><td>One clear task per message with explicit scope</td></tr><tr><td>No constraints on what NOT to touch</td><td>Claude edits adjacent files it thinks are related</td><td>Specify in CLAUDE.md and per-message what is out of scope</td></tr></tbody></table>
<h2>FAQ</h2>
<p><strong>What is context engineering in Claude Code?</strong></p><p>Context engineering is the practice of deliberately shaping what Claude Code reads before it acts - primarily through your CLAUDE.md file, explicit file references in each message, and conversation hygiene (knowing when to start a fresh session). The model can only work with what is in its context window, so controlling that input controls the quality of the output.</p>
<p><strong>What should I put in my CLAUDE.md file for context engineering?</strong></p><p>A short project description, the tech stack and major dependencies, the folder structure and any folders Claude should never touch, your code style rules, and a list of things Claude must confirm before doing. Keep it under 500 words - a long CLAUDE.md eats context budget that could go toward the actual code.</p>
<p><strong>How do I reference specific files in Claude Code?</strong></p><p>In the Claude Code desktop app you can drag a file into the conversation. In any session you can reference the file by its path in your message - for example, &quot;in src/lib/auth.ts, update the refresh logic to...&quot; For small changes, pasting the relevant code block directly into the message is faster and keeps the context tight.</p>
<p><strong>When should I start a new Claude Code session?</strong></p><p>Start a new session when a major task is complete, when Claude Code starts contradicting constraints you set earlier, or when its output style starts drifting. A full context window will redistribute attention across everything it holds - starting fresh with a summary of decisions made is more reliable than trying to correct drift mid-session.</p>
<p><strong>Does context engineering matter for Claude Code subagents?</strong></p><p>Yes, and it matters more than in a single session because each subagent starts with its own context window and cannot share memory with other subagents mid-run. Each task you give a subagent should include the specific files it will touch, the constraints on its scope, and a clear deliverable - not just a vague goal.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Ship a Side Project With Claude Code in a Weekend</title>
      <link>https://www.claudecodeclub.ai/blog/how-to-ship-a-side-project-with-claude-code</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/how-to-ship-a-side-project-with-claude-code</guid>
      <pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Claude Code</category>
      <category>Building</category>
      <category>Getting Started</category>
      <description><![CDATA[Most side projects die in the planning phase. You know the pattern: a good idea, a few evenings of half-started code, then nothing. Claude Code changes the math on this - not because it writes perfect code but because it removes the specific blockers that stop you shipping. Here is the exact sequence to go from idea to live URL in a weekend.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Claude Code lets you ship a working side project in a weekend because it handles the parts that usually kill momentum - the boilerplate, the config, the parts where you get stuck and close the laptop. You still make every product decision; Claude Code handles the execution.</li><li>The weekend sequence that works: Friday evening for scoping and setup, Saturday for building the core loop, Sunday for polish and deploy. Each phase has a specific Claude Code mode and a clear stopping rule so you do not keep adding features instead of shipping.</li><li>The number one mistake is scoping too wide. A side project that ships at 60 percent of what you imagined is infinitely more useful than one that stays at 90 percent forever. Use Claude Code's plan mode on Friday to force yourself to decide what the MVP actually is, then hold the line on Saturday.</li></ul>
<h2>Why Side Projects Die Before They Ship</h2>
<p>Ship a side project with Claude Code and the usual blockers change. Not disappear - change. The idea is not the hard part. The hard part is the Friday evening where you open your editor, realize you need to wire up authentication before you can build the thing you actually want to build, spend two hours on that, and close the laptop frustrated. Or the Saturday where you get stuck on a CSS layout problem that has nothing to do with your idea and costs you the whole day.</p>
<p>Claude Code removes those specific blockers. It sets up auth. It handles the layout. It writes the boilerplate that has nothing to do with what makes your project interesting. That is not magic - it is just removing friction at the exact points where momentum dies. You still have to know what you are building, make every product decision, and test whether it actually works. But the parts that kill side projects become fast.</p>
<blockquote><strong>NOTE:</strong> This guide is for people who have Claude Code installed and want a practical shipping sequence. If you are not set up yet, start with the [install guide for Mac](/guides/install-claude-code-on-mac) and your [first Claude Code project walkthrough](/guides/your-first-claude-code-project). The [Claude Code desktop app post](/blog/claude-code-desktop-app) explains why the desktop app is the right starting point over the terminal.</blockquote>
<h2>Friday Evening: Scope and Setup (Two Hours Maximum)</h2>
<p>The Friday session has one job: make the scope small enough to ship by Sunday. Most side projects fail because they try to ship the full vision instead of the version that proves the idea. Use Claude Code's plan mode on Friday to force a scoping decision.</p>
<p>Open Claude Code, switch to plan mode, and describe your idea plainly - what it does, who it is for, and what a person does with it. Then ask: &quot;what is the smallest version of this that is actually useful to someone?&quot; Claude Code will give you a feature list. Your job is to cut it by half and ask again. The thing you end up with after two rounds of cutting is your weekend scope. Write it down somewhere you will see it on Saturday.</p>
<ol><li>Describe the idea to Claude Code in plan mode - one paragraph, plain English, no technical detail yet.</li><li>Ask it for a minimal feature list and a suggested tech stack. Do not argue with the tech stack recommendation unless you have a specific reason - use what it suggests so you are not debugging setup instead of building.</li><li>Cut the feature list to the three things that make the project worth using at all. Everything else is a future version.</li><li>Ask Claude Code to scaffold the project with that stack. Let it run. When it stops, open the scaffolded project and make sure it boots.</li><li>Write a CLAUDE.md file now. Ask Claude Code to generate one based on the scaffold it just created. Review it, add anything specific to your project, and save it. This will save you time on Saturday.</li></ol>
<blockquote><strong>TIP:</strong> The stopping rule for Friday: the project boots, there is a CLAUDE.md in the root, and you have a written list of exactly three features to build. If you are past two hours and not there, you have scoped too wide. Cut more.</blockquote>
<h2>Saturday: Build the Core Loop</h2>
<p>Saturday has one job: build the thing the project actually does. Not the landing page, not the settings screen, not the pricing. The core loop - the sequence of actions a user takes to get the main value out of the product. For a tool that analyzes text, that is: paste text, get analysis, see results. For a tracker, that is: add an item, mark it done, see your list. Build that first and build nothing else.</p>
<p>Work in focused sessions of 90 minutes with breaks between them. A typical Saturday might be: morning session for the data model and backend logic, afternoon session for the UI that drives that logic, evening session to connect them and make the core loop actually work end to end. Claude Code should be open for the whole day. Give it one clear task at a time - not &quot;build the app&quot; but &quot;build the form that takes user input and saves it to the database.&quot;</p>
<ul><li>Start each session by telling Claude Code exactly what you are building in this session and referencing the specific files it will need to touch.</li><li>When Claude Code finishes a task, test it manually before moving to the next one. Do not stack unverified changes.</li><li>If you hit a bug, describe it to Claude Code with the exact error message and the file it appeared in. Do not debug by yourself when Claude Code can see the same error you do.</li><li>Resist the urge to add features. When an idea comes up for something outside your three-feature scope, write it down and keep going. The list will be there on Monday.</li></ul>
<blockquote><strong>WARNING:</strong> The most common Saturday failure mode is feature creep disguised as polish. &quot;I just need to make this one thing nicer before I continue&quot; turns into three hours on something that was not in scope. The core loop does not have to be beautiful on Saturday. It has to work.</blockquote>
<h2>Sunday: Polish and Deploy</h2>
<p>Sunday has two phases: a short polish pass and a deploy. The polish pass is not about making the project look finished - it is about making it usable by someone who is not you. That means: clear labels, an obvious way to get started, no blank states that leave someone confused about what to do next, and no obvious visual breakage on a phone.</p>
<p>Ask Claude Code to review the project for usability gaps - things that would confuse a first-time visitor. It will suggest changes. Pick the ones that take under ten minutes each and skip the rest. Then deploy. Vercel is the fastest path for most projects built on modern frameworks - the [deploy with Claude Code guide](/guides/deploying-to-vercel-with-claude-code) walks through the exact steps. If Claude Code scaffolded the project, it will also know how to deploy it.</p>
<ol><li>Morning: do the polish pass. Give yourself a two-hour maximum. When the time is up, stop polishing.</li><li>Set up a domain or use the Vercel preview URL for now - having a real URL is the goal, not having a perfect domain.</li><li>Ask Claude Code to check for environment variable issues, hardcoded localhost references, and any build errors before you push.</li><li>Push, watch the deploy, click through the live URL as a user would. Note what is broken, not what is missing. Fix what is broken. Accept what is missing as future work.</li><li>Share the URL with one real person and get their reaction before you decide what to build next.</li></ol>
<h2>What Claude Code Is Good at in This Sequence (and What It Is Not)</h2>
<p>Claude Code is good at all the execution that does not require knowing what your project is supposed to feel like. Scaffolding, auth, forms, API routes, basic styling, database schema, deployment config - these are fast and reliable. It is not a substitute for the product thinking. The scoping decision on Friday, the judgment call about which three features matter, the test of whether the core loop is actually satisfying to use - those are yours.</p>
<p>The most important skill in the weekend sequence is not knowing how to prompt Claude Code. It is knowing when to stop adding things. Claude Code makes adding things fast, which makes scope creep faster. The weekend framework is specifically designed to create forcing functions against that - two-hour Friday sessions, 90-minute Saturday blocks, a two-hour Sunday polish cap. The time boxes are the discipline.</p>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club, members share the projects they actually ship - what the scope was, what got cut, what Claude Code handled and what it could not. It is a useful reality check on what is possible in a weekend. The community is $9 a month at https://www.skool.com/claudecodeclub/about. The [curriculum](/curriculum) also has a structured path through building your first project if you want a guided sequence rather than a free-form weekend sprint.</blockquote>
<h2>What to Do With It After You Ship</h2>
<p>The weekend ends with a live URL. That is the win. What you do next depends on what you learn from the one person you shared it with on Sunday. If they found it confusing, the next session is usability. If they wanted a feature you cut, that tells you something about whether the cut was right. If they used it and did not come back, that is information too.</p>
<p>The common mistake after shipping a side project is immediately expanding it based on what you wish it had. The more useful move is to watch how the first person actually used it and build based on that. Claude Code makes iteration fast enough that a week of small sessions can take the project further than a second weekend sprint on a wishlist.</p>
<blockquote><strong>TIP:</strong> Keep your CLAUDE.md updated after each session. Every constraint you add there is time you save re-explaining the project next time. The [context engineering guide](/blog/claude-code-context-engineering) covers how to use CLAUDE.md and session management to keep Claude Code consistent as the project grows.</blockquote>
<h2>FAQ</h2>
<p><strong>Can you really ship a side project with Claude Code in a weekend?</strong></p><p>Yes, if the scope is tight enough. The key constraint is your three-feature rule on Friday evening - the weekend sequence only works if you make a real cut to what you are building, not just a nominal one. Claude Code handles execution fast, but it cannot compress a two-month project into a weekend. A focused, well-scoped idea with a clear core loop is genuinely shippable in two days.</p>
<p><strong>What tech stack should I use for a weekend side project with Claude Code?</strong></p><p>Use what Claude Code recommends when you describe your project in plan mode on Friday. The goal of the weekend is to ship, not to use a specific stack. If you have a preference and it is a stack Claude Code knows well (Next.js, React, Python, Node), that is fine - just do not spend Friday debating it. The setup time matters more than the choice.</p>
<p><strong>What if I get stuck on Saturday?</strong></p><p>Describe the block to Claude Code with the exact error message and the file where it appeared. If Claude Code cannot resolve it in two or three attempts, it is probably a scope or architecture issue rather than an implementation issue - ask it to propose a simpler approach to the same goal. Do not spend more than 30 minutes stuck on any single problem without checking whether the approach itself is the issue.</p>
<p><strong>How do I deploy a Claude Code project after the weekend?</strong></p><p>Vercel is the fastest path for most web projects. The [deploying to Vercel guide](/guides/deploying-to-vercel-with-claude-code) walks through it. If Claude Code scaffolded your project, tell it you want to deploy to Vercel and it will handle the config. Check for hardcoded localhost references and missing environment variables before you push - those are the two most common issues on a first deploy.</p>
<p><strong>What is the most common reason a side project does not ship over a weekend?</strong></p><p>Scope creep, almost always. The project started with three features and by Saturday afternoon has twelve. Claude Code makes adding things fast, which makes the temptation to add one more thing harder to resist. The time boxes in the Friday/Saturday/Sunday framework exist specifically to create a forcing function against this. Hold the line on your three Friday features until the project is live.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Connect Claude Code to Supabase With the Official MCP Server</title>
      <link>https://www.claudecodeclub.ai/blog/connect-claude-code-to-supabase</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/connect-claude-code-to-supabase</guid>
      <pubDate>Sun, 06 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>MCP</category>
      <category>Building</category>
      <description><![CDATA[Supabase runs its own hosted MCP server, so Claude Code can read your schema, write migrations, and run SQL against a real project without you copying anything between tabs. Here is the exact setup, the three settings that keep it from touching production it should not, and what actually broke the first time I wired it up.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Connect Claude Code to Supabase with Supabase's own hosted MCP server at https://mcp.supabase.com/mcp. Run claude mcp add --scope project --transport http supabase &quot;https://mcp.supabase.com/mcp&quot;, then run claude /mcp and authenticate in the browser. No personal access token is needed for the hosted route.</li><li>Before you point it at anything that matters, add three guardrails to the URL: project_ref to scope it to one project, read_only=true so it runs SQL as a read-only user, and a features list so it only exposes the tool groups you actually need.</li><li>Once it is connected, Claude Code can list your tables, write and apply migrations, run SQL, pull logs to debug, and generate TypeScript types from your schema, all inside the same build conversation instead of a separate copy-paste step.</li></ul>
<h2>What the Supabase MCP Server Actually Gives Claude Code</h2>
<p>Connect Claude Code to Supabase by adding Supabase's own hosted MCP server, at https://mcp.supabase.com/mcp, and authenticating once through your browser. Once it is connected, Claude Code can list your tables, write and apply database migrations, run SQL queries, read project logs to debug an issue, and generate TypeScript types straight from your schema, all inside the same session where you are already building.</p>
<p>This is a server Supabase built and runs themselves, not a community package stitched together against their API. That is why it keeps working when Supabase ships a change instead of quietly going stale. The tools are grouped into feature sets - database, debugging, development, functions, branching, docs, account, and storage - and you choose which groups to turn on when you register the server.</p>
<blockquote><strong>NOTE:</strong> New to this whole idea? Start with [what are MCP servers, and why do they matter for Claude Code](/blog/what-are-mcp-servers-and-why-they-matter), then the club's [guide to setting up MCP servers](/guides/setting-up-mcp-servers). If you just need any database and are not committed to Supabase yet, [connect Claude Code to a database](/blog/connect-claude-code-to-a-database) covers the general case first.</blockquote>
<h2>How to Connect It: the Hosted Route</h2>
<p>The hosted route is the one Supabase documents as the default, and it is the one I would use. It authenticates through your browser, so there is no token to generate, paste, or accidentally commit.</p>
<ol><li>In your project folder, run claude mcp add --scope project --transport http supabase &quot;https://mcp.supabase.com/mcp&quot; to register the server. Using --scope project writes it to a .mcp.json in the repo so the connection travels with the project.</li><li>In a regular terminal (not an IDE extension), run claude /mcp, select the supabase server, and choose Authenticate. A browser window opens where you sign in to Supabase and grant access.</li><li>Pick the organization that contains the project you want to work with when you sign in. After that, ask Claude Code something like: what tables are in the database, use the MCP tools. If it answers with your real schema, the connection is live.</li></ol>
<p>If you would rather not put the URL in a shared repo file, drop the --scope project flag and it registers only for you on that machine. Either way, the authentication is per-account through the browser, not a secret baked into the config.</p>
<blockquote><strong>TIP:</strong> There is an older setup floating around that spawns @supabase/mcp-server-supabase locally through npx with an --access-token flag. It still exists, but the hosted remote server is the current default and skips the token entirely. Reach for the local package only in a CI environment where a browser login is not possible, in which case you pass a personal access token as an Authorization header instead.</blockquote>
<h2>The Three Settings That Keep It Safe</h2>
<p>Do not point a wide-open MCP connection at a production database. The server acts with your developer permissions, so an LLM that gets confused - or gets fed a malicious instruction hidden inside your own data - can run real queries. Three URL parameters shrink that risk to almost nothing, and you set them by editing the server URL you registered.</p>
<table><caption>The three guardrails, and what each one does</caption><thead><tr><th>Parameter</th><th>What it does</th><th>Example</th></tr></thead><tbody><tr><td>project_ref=&lt;id&gt;</td><td>Scopes the server to one project and disables the account-level tools that can create, pause, or list other projects</td><td>?project_ref=abc123</td></tr><tr><td>read_only=true</td><td>Runs every query as a read-only Postgres user, so the model can look but cannot write, drop, or alter</td><td>?read_only=true</td></tr><tr><td>features=&lt;groups&gt;</td><td>Turns on only the tool groups you name, so the model cannot reach for abilities you never intended to expose</td><td>?features=database,docs</td></tr></tbody></table>
<p>You combine them with &amp; in the URL, like https://mcp.supabase.com/mcp?project_ref=abc123&amp;read_only=true. For a database you cannot afford to break, scope it, set it read-only, and restrict the features to the smallest set that answers your question. Widen access only when a specific task genuinely needs to write.</p>
<blockquote><strong>WARNING:</strong> The attack worth knowing about is prompt injection: text living inside your own data (a support ticket, a user-submitted field) that tells the model to run a query it should not. Keep manual approval of tool calls on for interactive work and read each proposed query before you approve it. Read-only mode plus project scoping is what turns a bad approval from a disaster into a harmless no-op.</blockquote>
<h2>What Actually Broke the First Time I Wired It Up</h2>
<p>The first time I set this up I used the old npx-spawned local server, and Claude Code reported it as connected. It was not really connected. The server showed as present, but none of its tools were discoverable, so the model just quietly failed to use them with no error to explain why. I spent longer than I would like re-checking my token before realizing the setup itself was the problem, not the credential.</p>
<p>Switching to the hosted remote server and authenticating through the browser fixed it in one pass. The lesson I would save you: if Claude Code says a Supabase MCP server is connected but never actually uses any Supabase tools, do not assume your token is wrong. Confirm the tools are discoverable first by running /mcp and checking the tool list, and prefer the hosted route so there is no token in the loop to doubt at all.</p>
<h2>What This Is Actually Good For</h2>
<p>The everyday win is that Claude Code stops guessing at your schema. Instead of you pasting a table definition into a prompt, it reads the real one and writes SQL or a migration against what is actually there.</p>
<ul><li>Ask for a migration in plain English and have Claude Code write it, then apply it against a development branch rather than typing DDL by hand.</li><li>Debug a slow or failing feature by having it pull the project logs and run a read-only query to see the actual rows, not a mock of them.</li><li>Generate up-to-date TypeScript types from the live schema so your app code and your database stop drifting apart.</li><li>Run a report - the real numbers behind a client dashboard - with a read-only SQL query instead of exporting a CSV and eyeballing it.</li></ul>
<p>Branching deserves its own note. Supabase's branching feature lets Claude Code create a throwaway development database, make changes there, and merge back when they are proven, so you are never testing a risky migration against live data. It is on a paid plan and worth it the moment real user data is involved.</p>
<h2>When Not to Bother With It</h2>
<p>Skip it for a one-off script with no database behind it, or a throwaway prototype where you do not care about the schema surviving. The setup earns its keep once there is a living project - real tables, real migrations, a schema you would otherwise be re-describing to the model every session.</p>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club, members share the actual MCP configs they run for tools like this - which feature groups they leave on, which projects they keep read-only, and the ones that were not worth the setup. It is $9 a month at https://www.skool.com/claudecodeclub/about, or start with the [curriculum](/curriculum) for the structured path through MCP setup first.</blockquote>
<h2>FAQ</h2>
<p><strong>How do I connect Claude Code to Supabase?</strong></p><p>Register Supabase's hosted MCP server with claude mcp add --scope project --transport http supabase &quot;https://mcp.supabase.com/mcp&quot;, then run claude /mcp, select the supabase server, and choose Authenticate. A browser window opens where you sign in to Supabase and grant access. No personal access token is required for the hosted route.</p>
<p><strong>Do I need a Supabase access token to connect Claude Code?</strong></p><p>Not for the hosted server. It authenticates through your browser using dynamic client registration, so there is no token to create or store. You only need a personal access token for a CI environment where a browser login is not possible, where you pass it as an Authorization header instead.</p>
<p><strong>How do I stop Claude Code from writing to my production Supabase database?</strong></p><p>Add read_only=true to the server URL so every query runs as a read-only Postgres user, and add project_ref=&lt;id&gt; to scope the server to one project and disable account-level tools. Combine them like https://mcp.supabase.com/mcp?project_ref=abc123&amp;read_only=true, and keep manual approval of tool calls on so you can review each query first.</p>
<p><strong>What can Claude Code do once it is connected to Supabase?</strong></p><p>It can list tables and extensions, write and apply migrations, run SQL queries, pull project logs to debug, generate TypeScript types from your schema, and manage development branches on a paid plan. The exact abilities depend on which feature groups you enabled in the server URL.</p>
<p><strong>Why does the Supabase MCP server show as connected but no tools work?</strong></p><p>This is the classic symptom of the older local npx setup, where the server registers but its tools are not discovered, with no error shown. Switch to the hosted remote server at https://mcp.supabase.com/mcp and authenticate through the browser, then run /mcp to confirm the tools are actually listed.</p>]]></content:encoded>
    </item>
    <item>
      <title>Which Claude Plan for Claude Code? Pro vs Max, Explained by Usage</title>
      <link>https://www.claudecodeclub.ai/blog/which-claude-plan-for-claude-code</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/which-claude-plan-for-claude-code</guid>
      <pubDate>Sun, 06 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Claude Code</category>
      <category>Getting Started</category>
      <category>Tools</category>
      <description><![CDATA[Claude Code runs on any paid Claude plan, so the real question is not whether you can use it but which plan matches how hard you push it. Here is a plain ranked answer by usage level, what the 5-hour and weekly limits mean in practice, and the one signal that tells you it is time to move up.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>The right Claude plan for Claude Code depends on how heavily you use it. The paid Pro plan is the entry point and includes Claude Code; the Max plan comes in two levels that give you 5x or 20x more usage than Pro per 5-hour session. The Free plan does not include Claude Code at all.</li><li>Start on Pro. Move to Max only once you keep hitting the usage limit mid-work, not once or twice a week. That single signal - being blocked while you still have work to do - is the honest trigger to upgrade, not a feature you are missing.</li><li>Usage is metered in rolling 5-hour sessions with a weekly cap on top. When you hit a limit you wait for the window to reset; the highest Max level also lets you opt into paying per token at standard API rates to keep going past the cap.</li></ul>
<h2>Which Claude Plan Do You Need for Claude Code?</h2>
<p>You need a paid Claude plan to use Claude Code, and the entry point is Pro. Pro includes Claude Code and is enough for most people learning it or working on small projects. The Max plan exists for one reason: more usage. It comes in two levels that give you 5x or 20x the usage of Pro in each rolling 5-hour session. The Free plan does not include Claude Code, so it is not an option here.</p>
<p>The decision is not about unlocking features. Claude Code itself is the same tool on Pro and Max. What changes is how long you can keep working before you hit a limit. So the plan question is really a usage question, and the honest way to answer it is to start low and move up only when your own usage forces it. Check current prices on [Claude's own pricing page](https://claude.com/pricing) before you decide, since plans and prices change.</p>
<blockquote><strong>NOTE:</strong> This is the pricing side of the same story we tell newcomers in [Claude Code for non-coders](/blog/claude-code-for-non-coders) and the [Claude Code desktop app](/blog/claude-code-desktop-app) walkthrough. You install the desktop app, sign in with your plan, and Claude Code is there - the plan is what governs how much you can run.</blockquote>
<h2>Pro vs Max, Ranked by How You Use Claude Code</h2>
<p>Here is the ranked answer, cheapest first. Pick the lowest one that does not leave you blocked mid-task.</p>
<ol><li>Pro - the default. If you are learning Claude Code, building small projects, or using it in bursts rather than all day, start here. It includes Claude Code and gives you real working room without paying for capacity you will not touch.</li><li>Max, 5x level - the working-daily plan. If you use Claude Code most days on real projects and keep bumping the Pro limit, this is the natural step up. Five times the per-session usage of Pro is enough for sustained daily building.</li><li>Max, 20x level - the heavy plan. If you run Claude Code for hours at a stretch, on larger codebases or with agents working in the background, this gives twenty times Pro's per-session usage. It is also the level that lets you keep going past the cap by paying per token.</li></ol>
<p>There are also team and enterprise plans for organizations that need shared administration, seat management, and governance controls. For an individual builder or a solo agency operator, the real choice sits between Pro and the two Max levels.</p>
<h2>What the Usage Limits Actually Mean</h2>
<p>Claude Code usage is metered in rolling 5-hour sessions, with a weekly cap layered on top. The 5-hour window is short-term throttling; the weekly cap is the ceiling for the whole week. Both Pro and Max share the same usage pool across Claude and Claude Code, so a heavy chat session and a heavy build session draw from the same budget.</p>
<p>When you reach a 5-hour limit, you wait for that window to reset and then keep working. When you reach the weekly cap, you are done until the next week - unless you are on the 20x Max level, which lets you opt into extra usage billed per token at standard API rates so you are not fully stopped. The exact number of prompts you get per window is not a fixed figure Anthropic publishes as a single number; it varies with how large and complex each request is, so treat any specific prompt count you see quoted elsewhere as a rough estimate, not a guarantee.</p>
<blockquote><strong>TIP:</strong> If you are hitting limits sooner than you expect, the fix is often technique before it is a bigger plan. Tighter prompts and smaller context cost less per turn. We cover the practical moves in [what to do about Claude Code usage limits](/blog/claude-code-usage-limits-what-to-do), and the recent limit changes in [Claude Code weekly limits](/blog/claude-code-weekly-limits-september-2026).</blockquote>
<h2>The One Signal That Says Upgrade</h2>
<p>Upgrade when you are regularly blocked while you still have work to do. Not when you hit a limit once in a busy week - that is normal and cheap to wait out. The trigger is hitting the wall during the workday, often enough that waiting for the reset is costing you real momentum. That is the moment a bigger plan pays for itself in recovered time.</p>
<p>The mistake goes both ways. Some people over-buy on day one, pay for the 20x level, and use a fraction of it. Others cling to Pro while losing an hour a day to blocked sessions. The self-check we teach members is simple: for one week, note every time Claude Code stops you mid-task. Zero or one? Stay put. Several times a day? Move up a level. Let your actual usage make the call, not a guess about your future usage.</p>
<h2>How This Fits an Agency or Client Workflow</h2>
<p>If you build for clients, treat the plan as a cost of goods, not a personal subscription. A single Max level that keeps you unblocked through a delivery week is cheap against the value of shipping on time. The usage a client project pulls - especially anything running in the background - used to hide inside a personal plan; now it is metered, so it belongs in how you price the work.</p>
<blockquote><strong>NOTE:</strong> Claude Code Club members compare notes on which plan level actually covers real client delivery, and how to fold that cost into a quote instead of eating it. It is $9 a month at https://www.skool.com/claudecodeclub/about, or start with the [curriculum](/curriculum) to get productive on Claude Code first, then right-size the plan.</blockquote>
<h2>FAQ</h2>
<p><strong>Which Claude plan do I need for Claude Code?</strong></p><p>You need a paid plan. Pro is the entry point and includes Claude Code, which is enough for learning it and for small projects. The Max plan gives you 5x or 20x more usage than Pro per 5-hour session for heavier use. The Free plan does not include Claude Code.</p>
<p><strong>Can I use Claude Code on the free Claude plan?</strong></p><p>No. Claude Code is not included on the Free plan. You need at least the paid Pro plan to use it, and can move up to Max for more usage.</p>
<p><strong>What is the difference between Pro and Max for Claude Code?</strong></p><p>The tool is the same; the difference is usage. Pro is the baseline paid plan. Max comes in two levels that give 5x or 20x the usage of Pro per 5-hour session, aimed at people who use Claude Code daily or run it for long stretches on larger codebases.</p>
<p><strong>What happens when I hit my Claude Code usage limit?</strong></p><p>Usage is metered in rolling 5-hour sessions with a weekly cap on top. When you hit a limit you wait for the window to reset and then continue. The 20x Max level also lets you opt into extra usage billed per token at standard API rates so you can keep working past the cap.</p>
<p><strong>When should I upgrade from Pro to Max?</strong></p><p>Upgrade when you are regularly blocked mid-task, not just once or twice in a busy week. For one week, note every time Claude Code stops you before you finished; if it happens several times a day, move up a level, and if it barely happens, stay on Pro.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code for Non-Coders: How to Build Software Without Writing Code</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-for-non-coders</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-for-non-coders</guid>
      <pubDate>Fri, 04 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Beginners</category>
      <category>Getting Started</category>
      <category>Building</category>
      <description><![CDATA[You do not need to know how to code to build real things with Claude Code. Here is exactly how a non-coder starts in the desktop app, the four-word habit that keeps you from getting stuck, and the first thing worth building this week.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Claude Code for non-coders works because you describe what you want in plain English and Claude writes, runs, and fixes the code for you. You install the desktop app, open a folder, type what you want built, and review the result. The terminal is optional, not required.</li><li>The single habit that keeps a non-coder unstuck is to ask before you build. Tell Claude to plan the steps in plain language first, read them back, and only then say go. That one move turns a black box into something you can actually steer.</li><li>Start with something small and real that you would use this week: a one-page site, a simple tracker, a script that renames your files. Shipping one working thing teaches more than any tutorial, and it is the fastest way to see whether this is for you.</li></ul>
<h2>Can a Non-Coder Actually Use Claude Code?</h2>
<p>Yes. Claude Code is built so that you describe what you want in plain English and it writes, runs, and fixes the code for you. You do not read the code line by line, you do not memorize syntax, and you do not need a computer science background. Your job is to say clearly what you want, look at what came back, and tell Claude what to change. That is a skill any careful person already has.</p>
<p>The reason this now works for non-coders is the desktop app. You open it the way you open any program, point it at a folder on your computer, and type a request into a chat box. Claude does the technical work in the background and shows you the result. The terminal, the black window with the blinking cursor that scares most beginners off, is optional. Most people who join the club never touch it.</p>
<blockquote><strong>TIP:</strong> If you have ever written a clear brief for someone, described a problem to a helpful support agent, or given step-by-step directions to a friend, you already have the core skill. Building with Claude Code is mostly clear communication, not typing.</blockquote>
<h2>What You Need to Get Started (It Is Less Than You Think)</h2>
<p>You need three things: the Claude Code desktop app, a Claude account, and a small idea for something to build. That is the whole list. You do not need to install a pile of developer tools first, and you do not need to understand what any of them do before you begin.</p>
<ol><li>Install the Claude Code desktop app and sign in. This is the same as installing any other app: download, open, log in.</li><li>Pick a folder on your computer to work in. A new empty folder is perfect for your first build. Claude works inside the folder you point it at and does not roam the rest of your machine.</li><li>Type what you want in plain English. Not code, not commands. Something like: build me a simple page that lists my three services with a photo and a contact button.</li></ol>
<p>From there Claude does the building. When it finishes, it tells you what it made and how to look at it. If something is off, you say so in plain words and it fixes it. For the full first-day walkthrough, the club keeps a step-by-step [day-one setup guide](/blog/claude-code-day-one-setup) that assumes zero coding background.</p>
<h2>The Ask-First Habit: The One Move That Keeps You Unstuck</h2>
<p>The single most useful habit for a non-coder is what we call the Ask-First Habit inside Claude Code Club: before you let Claude build anything real, ask it to plan the steps in plain English first. Tell it not to write any code yet, just to explain what it is about to do and why. Read that plan back. If it makes sense, say go. If it does not, correct it before a single line is written.</p>
<p>This matters because the moment a non-coder feels lost is when the tool runs ahead and produces something they cannot follow. Asking for the plan first turns a black box into a conversation you can steer. You do not need to understand the code Claude will write. You only need to understand the plan, and a good plan is always in plain language.</p>
<blockquote><strong>NOTE:</strong> A simple version of the Ask-First Habit: type &quot;Before you build anything, list the steps you'll take in plain English and wait for me to approve them.&quot; This one sentence, added to the front of a request, is the difference between feeling in control and feeling lost.</blockquote>
<h2>What Should a Non-Coder Build First?</h2>
<p>Build something small and real that you would genuinely use this week. The goal of your first build is not to impress anyone. It is to see one thing you asked for actually work on your own screen. That single experience teaches more than a month of watching tutorials, and it tells you honestly whether this is for you.</p>
<table><caption>Good first builds for a non-coder, ranked by how quickly you see a result</caption><thead><tr><th>Build</th><th>Why it is a good first project</th><th>Roughly how it feels</th></tr></thead><tbody><tr><td>A one-page personal site</td><td>Visual, satisfying, and you can share the result the same day</td><td>Fastest win, hardest to get wrong</td></tr><tr><td>A simple tracker (habits, expenses, reading)</td><td>Teaches you how to describe data and buttons in plain words</td><td>A little more back-and-forth, still an afternoon</td></tr><tr><td>A file-tidying script for a messy folder</td><td>Solves a real annoyance and shows Claude working on your own files</td><td>Feels like magic the first time it runs</td></tr></tbody></table>
<p>Pick one, describe it clearly, use the Ask-First Habit, and ship it. When it works, you will want to build the next thing, and that pull is the whole point. If you want a curated list of starter ideas with the exact wording to paste in, the club keeps a running set inside the [beginner tips guide](/blog/claude-code-tips-for-beginners).</p>
<h2>What to Do When You Get Stuck</h2>
<p>When something breaks or does not look right, describe what you see in plain English and ask Claude to fix it. You do not diagnose the problem yourself. Say what you expected, say what actually happened, and let Claude do the debugging. This is the part non-coders worry about most and it is genuinely the easiest part, because explaining a problem is something you already know how to do.</p>
<ul><li>Describe the gap: &quot;I expected a blue button but I see a grey one. Can you fix it and tell me what was wrong?&quot;</li><li>Ask for a plain-English explanation, not just a fix, so you slowly learn what tends to go wrong.</li><li>If a change made things worse, say &quot;undo that last change&quot; and Claude walks it back. You are never one wrong move away from ruining your work.</li></ul>
<p>The thing that keeps non-coders moving is realizing that being stuck is just the next message in the conversation, not a wall. You are allowed to not know why something broke. That is what Claude is for.</p>
<h2>Where a Non-Coder Goes From Here</h2>
<p>Once you have shipped one small thing, the path forward is simply to build the next slightly bigger thing, and the next. You do not need to become a programmer. Plenty of people build real, useful tools this way and never learn to read code in depth. The skill that compounds is describing what you want clearly and reviewing what comes back, and that skill grows every time you build.</p>
<blockquote><strong>NOTE:</strong> Claude Code Club is where non-coders learn to build alongside people doing the same thing, with a step-by-step curriculum and real builds to copy. It is 9 dollars a month at https://www.skool.com/claudecodeclub/about, and the [curriculum](/curriculum) starts from zero coding background, no terminal required.</blockquote>
<h2>FAQ</h2>
<p><strong>Can you use Claude Code without knowing how to code?</strong></p><p>Yes. You describe what you want in plain English and Claude Code writes, runs, and fixes the code for you. Your job is to explain the goal clearly and review the result, not to write or read code yourself.</p>
<p><strong>Do I need to use the terminal to use Claude Code?</strong></p><p>No. The Claude Code desktop app lets you work entirely through a chat box. You open a folder, type what you want, and review what Claude builds. The terminal is optional and most beginners never use it.</p>
<p><strong>What is the best first thing for a non-coder to build?</strong></p><p>Something small and real you would use this week, like a one-page personal site, a simple tracker, or a script that tidies a messy folder. Shipping one working thing teaches you more than any tutorial.</p>
<p><strong>What do I do when Claude Code makes something that does not work?</strong></p><p>Describe in plain English what you expected and what actually happened, then ask Claude to fix it and explain what went wrong. You do not diagnose the problem yourself. If a change made things worse, you can ask it to undo the last change.</p>
<p><strong>Do I need to install lots of developer tools before I start?</strong></p><p>No. You need the Claude Code desktop app, a Claude account, and a small idea. Claude handles the technical setup as part of building, so you do not have to configure a developer environment first.</p>
<p><strong>Will I have to learn to read code eventually?</strong></p><p>Not necessarily. Many people build real, useful tools with Claude Code and never learn to read code in depth. The skill that compounds is describing what you want clearly and reviewing what comes back.</p>]]></content:encoded>
    </item>
    <item>
      <title>What to Charge for an AI Audit: A Simple Pricing Framework</title>
      <link>https://www.claudecodeclub.ai/blog/what-to-charge-for-an-ai-audit</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/what-to-charge-for-an-ai-audit</guid>
      <pubDate>Fri, 04 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Agency</category>
      <category>Monetization</category>
      <category>Freelancing</category>
      <description><![CDATA[An AI audit is one of the easiest first offers to sell, but most people underprice it into the ground. Here is a straight framework for what to charge, why a flat fee beats an hourly rate, and how to turn the audit into the retainer that actually pays.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>What to charge for an AI audit comes down to the value of what you find, not the hours you spend. Price it as a flat fee, not hourly. A focused audit for a small business typically lands between a few hundred and a couple of thousand dollars depending on scope and the size of the business.</li><li>Never sell the audit hourly. Hourly caps your price at your speed and punishes you for being fast. A flat fee lets you charge for the outcome, and the outcome of a good audit is a clear plan the client could not have written themselves.</li><li>Price the audit to be an easy yes, then make the real money on what comes after. The audit is the door, not the room. Its job is to earn trust and surface the work, so the retainer or build project that follows is the natural next step.</li></ul>
<h2>What Should You Charge for an AI Audit?</h2>
<p>Charge a flat fee based on the value of what you deliver, not the hours you spend. An AI audit is a focused review of where a business is losing time or money to manual work, and a clear plan for what to automate first. For a small business, a focused audit commonly sits somewhere between a few hundred and a couple of thousand dollars, scaling with the size of the business and the depth of the review. The exact number is set by the outcome, not a timesheet.</p>
<p>The mistake almost everyone makes is anchoring the price to how long the audit takes them. That is the wrong anchor. A client is not paying for your afternoon. They are paying for a plan they could not have produced on their own, aimed at a problem that is costing them real money every month. Price against that, and the number stops feeling awkward.</p>
<blockquote><strong>TIP:</strong> A clean rule of thumb: your audit fee should feel small next to the monthly cost of the problem you are auditing. If a business is losing many hours a week to manual work, a four-figure audit that maps the fix is an easy yes, not an expense to argue over.</blockquote>
<h2>Why a Flat Fee Beats an Hourly Rate</h2>
<p>Sell the audit as one flat fee, never by the hour. Hourly pricing quietly caps your income at your own speed and punishes you for getting faster, which is exactly backwards. The better you get at spotting what to automate, the less time an audit takes, and under an hourly model that means you earn less for being more skilled. A flat fee fixes this: you charge for the result, and the result gets better as you improve.</p>
<table><caption>Hourly versus flat-fee pricing for an AI audit</caption><thead><tr><th>Question</th><th>Hourly</th><th>Flat fee</th></tr></thead><tbody><tr><td>What are you selling?</td><td>Your time</td><td>The plan and the outcome</td></tr><tr><td>What happens as you get faster?</td><td>You earn less for the same result</td><td>You earn the same for less effort</td></tr><tr><td>What does the client focus on?</td><td>The clock and the invoice</td><td>Whether the plan is worth it</td></tr><tr><td>How easy is it to say yes?</td><td>Hard, the total is a moving target</td><td>Easy, the price is known up front</td></tr></tbody></table>
<p>There is also a trust cost to hourly billing on an audit. A client watching a meter feels like every question they ask makes the bill go up, so they ask fewer questions and trust you less. A flat fee removes the meter and lets the conversation be about the work. This is the same reasoning behind moving builds off hourly entirely, which the club covers in [why I stopped charging hourly for AI builds](/blog/stopped-charging-hourly-for-ai-builds).</p>
<h2>The Door-and-Room Framework for Pricing the Audit</h2>
<p>Price the audit as a door, not a room. Inside Claude Code Club we call this the Door-and-Room Framework: the audit is the door that earns trust and reveals the work, and the room is the retainer or build project where the real money is. When you understand that the audit is the entry point and not the whole relationship, you price it to be an easy yes rather than trying to make your entire margin on the first sale.</p>
<ol><li>The door (the audit): priced to be an easy yes, delivering a clear written plan the client keeps whether or not they hire you for more. It stands alone as a real deliverable.</li><li>The threshold (the recommendation): every audit ends with a specific next step, scoped and priced, so the client sees exactly what the room costs and what they get.</li><li>The room (the retainer or build): the ongoing work the audit uncovered. This is where the relationship becomes profitable, and the audit is what made it possible to sell.</li></ol>
<p>This framework also protects you from the trap of a client taking the plan and running. That is fine. A client who pays for the audit and implements it themselves still paid you fairly for the plan, referred you when it worked, and cost you almost nothing to serve. The audit was profitable on its own. The room is the upside, not the requirement.</p>
<h2>How to Turn the Audit Into a Retainer</h2>
<p>End every audit with one specific, scoped recommendation, not a menu of ten options. The client hired you precisely because they could not decide what to do first, so handing them a long list of possibilities recreates the exact problem they paid you to solve. Point at the single highest-value thing to automate, price it, and make the next step obvious.</p>
<blockquote><strong>WARNING:</strong> Do not deliver an audit as a raw list of problems. A list of problems is a bill of anxiety. A ranked plan with one clear first move is a path forward. Same findings, completely different feeling, and only one of them leads to a retainer.</blockquote>
<p>When the audit points cleanly at ongoing work, the retainer sells itself because you are not pitching, you are continuing. For the mechanics of packaging that next step, the club keeps a walkthrough on [turning a one-off client into a monthly retainer](/blog/how-to-turn-a-one-off-client-into-a-monthly-retainer).</p>
<h2>Common Mistakes That Kill Audit Pricing</h2>
<ul><li>Pricing by the hour, which caps your income at your speed and puts a meter on the client's trust.</li><li>Making the audit free to win the deal, which trains the client to value your thinking at zero before the relationship even starts.</li><li>Overbuilding the audit into a fifty-page report nobody reads, when a tight plan with one clear first move sells the next step better.</li><li>Ending with a list of problems instead of one ranked recommendation, which leaves the client exactly as stuck as before.</li><li>Forgetting to scope and price the next step inside the deliverable, so the natural momentum into the retainer is lost.</li></ul>
<p>Avoid these five and the audit does its real job: it makes you the obvious person to hire for the work it uncovered.</p>
<h2>Where to Learn the Full Offer</h2>
<p>The audit is one of the cleanest first offers to sell because it is low-risk for the client, fast to deliver, and it opens the door to everything that follows. Priced as a flat fee, ended with one clear recommendation, and understood as a door rather than a room, it becomes the front end of a real agency rather than a one-off favor.</p>
<blockquote><strong>NOTE:</strong> Claude Code Club is where people building AI agencies share the exact offers, prices, and scripts that are closing right now, including the audit-to-retainer path in this post. It is 9 dollars a month at https://www.skool.com/claudecodeclub/about, or start with the [curriculum](/curriculum) for the client-work track.</blockquote>
<h2>FAQ</h2>
<p><strong>How much should I charge for an AI audit?</strong></p><p>Price it as a flat fee based on the value of the plan you deliver, not the hours you spend. For a small business, a focused audit commonly lands between a few hundred and a couple of thousand dollars, scaling with the size of the business and the depth of the review.</p>
<p><strong>Should I charge hourly or a flat fee for an AI audit?</strong></p><p>Charge a flat fee. Hourly caps your income at your speed, punishes you for getting faster, and puts a meter on the client's trust. A flat fee lets you charge for the outcome, which is what the client actually values.</p>
<p><strong>Should an AI audit be free?</strong></p><p>No. A free audit trains the client to value your thinking at zero before the relationship starts. Price it to be an easy yes, deliver a real plan they keep, and make the money that follows on the retainer or build it uncovers.</p>
<p><strong>What should an AI audit actually deliver?</strong></p><p>A clear written plan of where the business is losing time or money to manual work, ranked by value, ending with one specific, scoped, and priced next step. A ranked plan with a clear first move sells the next step far better than a long list of problems.</p>
<p><strong>How do I turn an AI audit into a retainer?</strong></p><p>End the audit with one specific, scoped, and priced recommendation rather than a menu of options. When the audit points cleanly at ongoing work, the retainer sells itself because you are continuing the plan, not pitching a new one.</p>
<p><strong>What if the client takes the audit and does it themselves?</strong></p><p>That is fine. They paid you fairly for the plan, they will refer you when it works, and the audit was profitable on its own. The follow-on retainer is the upside, not the requirement, which is exactly why you price the audit to stand alone.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Connect Claude Code to Trello With the Official MCP Server</title>
      <link>https://www.claudecodeclub.ai/blog/connect-claude-code-to-trello</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/connect-claude-code-to-trello</guid>
      <pubDate>Wed, 02 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>MCP</category>
      <category>Building</category>
      <description><![CDATA[Trello now ships its own hosted MCP server, so Claude Code can read and update your boards without a community plugin standing in the middle. Here's the setup, the exact permissions to grant, and the one thing the server still won't let it do no matter what you ask.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Connect Claude Code to Trello with Trello's own hosted MCP server at mcp.trello.com/v1. Run claude mcp add trello --transport http https://mcp.trello.com/v1, approve the browser authorization, and Claude Code can read and update your boards in the same conversation you're already building in.</li><li>The authorization screen asks for Read, Write, and Search permissions separately. Grant Read and Search by default and only add Write once you actually want Claude Code creating or moving cards, not just reporting on what's there.</li><li>The server ships with no delete tool at all, so even a write-enabled connection can't permanently remove a board, list, or card. The worst a bad prompt can do is make a mess you can undo, not one you can't.</li></ul>
<h2>How Do You Connect Claude Code to Trello?</h2>
<p>Connect Claude Code to Trello by registering Trello's own hosted MCP server, at https://mcp.trello.com/v1, then approving the authorization in your browser the first time it runs. There's no API key to copy or token to generate by hand. Once it's connected, Claude Code can search your boards, read a card's full description and checklist, and create or update cards as part of the same conversation you're already having about a build, instead of you tabbing over to trello.com to check what's actually on the board.</p>
<blockquote><strong>NOTE:</strong> MCP servers in general are covered in [what are MCP servers, and why do they matter for Claude Code](/blog/what-are-mcp-servers-and-why-they-matter), and the club's [guide to setting up MCP servers](/guides/setting-up-mcp-servers) if this is your first one.</blockquote>
<h2>Step One: Register the Server</h2>
<p>The setup is a single registration step, the same whether you build inside the Claude Code desktop app or the terminal.</p>
<ol><li>Run claude mcp add trello --transport http https://mcp.trello.com/v1 to register the server.</li><li>Restart Claude Code. On first use it opens your browser to a Trello authorization screen instead of asking you for a token.</li><li>Approve the connection and pick which permissions to grant, then run claude mcp list to confirm trello shows up as connected.</li></ol>
<blockquote><strong>TIP:</strong> If Claude Code can't see a board that should be there, the fix is almost always the authorization scope, not the command. Re-run the connection and check that Read (or Write, if you need it) was actually granted, not just requested.</blockquote>
<h2>Read, Write, Search: Pick Scopes on Purpose</h2>
<p>Trello's authorization screen breaks permissions into three separate grants instead of one all-or-nothing toggle, and that separation is the whole safety model. Treat it the same way you'd treat a database credential: hand over exactly what the task needs, not the full set out of convenience.</p>
<table><caption>What each Trello MCP permission actually unlocks</caption><thead><tr><th>Permission</th><th>What it lets Claude Code do</th><th>Grant it when</th></tr></thead><tbody><tr><td>Read</td><td>View existing boards, lists, cards, and checklists as context</td><td>Almost always - this is the baseline for pulling a spec out of a board</td></tr><tr><td>Search</td><td>Find relevant cards across boards without you naming the exact one</td><td>You have more than a handful of boards and don't want to paste links every time</td></tr><tr><td>Write</td><td>Create and update cards, lists, and checklists using your Trello permissions</td><td>You actually want Claude Code moving cards and leaving updates, not just reading</td></tr></tbody></table>
<p>Start with Read and Search only. Add Write later, deliberately, once you've watched the connection behave for a week and trust what it does with a card it's allowed to touch.</p>
<h2>What This Is Actually Good For</h2>
<p>The obvious use is pulling a real spec instead of retyping one. Point Claude Code at a card and it reads the description and checklist directly, the same pattern as [connecting Claude Code to Notion](/blog/connect-claude-code-to-notion) or Linear, just for boards instead of docs or tickets.</p>
<ul><li>Pull a card's full description and checklist as the spec for a build, instead of summarizing it into a prompt yourself and losing the detail buried in a comment.</li><li>Have Claude Code move a card to Done and leave a comment with what shipped once a change is finished, so the board reflects reality without you switching tabs to update it.</li><li>Turn a running board into a plain-language status update a client can read, useful when they check Trello and you'd otherwise be writing that summary by hand every Friday.</li></ul>
<p>None of this replaces actually looking at the board yourself before a client call. It removes the manual copy-paste tax between where the task list already lives and the session where you're doing the work.</p>
<h2>The One Thing It Still Won't Do</h2>
<blockquote><strong>NOTE:</strong> Trello's MCP server doesn't include a delete tool at all, by design. A write-enabled connection can archive, move, and rewrite cards, but it cannot permanently remove a board, list, or card, no matter how the request is phrased.</blockquote>
<p>That's a meaningfully different safety model than the read-only database bridge covered in [how to connect Claude Code to a database](/blog/connect-claude-code-to-a-database), where the protection lives in the credential you create. Here the protection is built into the server itself. It's a reasonable default for a task board, where the worst outcome of a bad prompt is clutter you can clean up, not data you can't get back.</p>
<h2>Skip the Older Community Servers Now</h2>
<blockquote><strong>WARNING:</strong> If you find setup instructions asking you to generate a Trello API key and token and run a community npm package, that's the older route from before Trello shipped its own server. It still works, but it means managing a long-lived token yourself instead of a scoped, revocable browser authorization. Use the official mcp.trello.com/v1 route above unless you have a specific reason not to.</blockquote>
<h2>When Not to Bother With It</h2>
<p>Skip the setup if your task list already lives inside Claude Code itself, or if it's a solo project with no board to speak of. It earns its place the moment a real board is the source of truth for a project, and you'd otherwise be tabbing over to trello.com every few minutes to check what's actually assigned and what's actually done.</p>
<blockquote><strong>NOTE:</strong> Members inside Claude Code Club share the actual MCP configs and permission choices they run day to day, including which connections earned a permanent spot and which got scoped back after week one. Join for 9 dollars a month at https://www.skool.com/claudecodeclub/about, or start with the [curriculum](/curriculum) for the structured path through MCP setup first.</blockquote>
<h2>FAQ</h2>
<p><strong>How do I connect Claude Code to Trello?</strong></p><p>Run claude mcp add trello --transport http https://mcp.trello.com/v1, restart Claude Code, and approve the browser authorization screen the first time it runs. No API key or token generation is required with the official route.</p>
<p><strong>Do I need a Trello API key and token to connect it?</strong></p><p>No, not with the official hosted server. Trello's own MCP server at mcp.trello.com/v1 uses a browser authorization flow instead. A Trello API key and token are only needed for older, community-built Trello MCP servers.</p>
<p><strong>Can Claude Code delete cards or boards once it's connected?</strong></p><p>No. Trello's MCP server has no delete tool at all, regardless of which permissions you grant. A write-enabled connection can create, move, and update cards, but it cannot permanently remove a board, list, or card.</p>
<p><strong>Which permissions should I grant when connecting Claude Code to Trello?</strong></p><p>Grant Read and Search by default, since those cover pulling context out of boards. Only add Write once you specifically want Claude Code creating or updating cards, not just reading what's already there.</p>
<p><strong>I already set up a community Trello MCP server. Should I switch?</strong></p><p>It's worth switching to the official mcp.trello.com/v1 server when you get a chance. It's maintained directly against Trello's own product, and the browser authorization is easier to scope and revoke than a long-lived API token sitting in a config file.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code's SendFeedback Tool: What Actually Gets Sent When You Hit Send</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-sendfeedback-tool-explained</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-sendfeedback-tool-explained</guid>
      <pubDate>Wed, 02 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Claude Code</category>
      <category>Tools</category>
      <category>Security</category>
      <description><![CDATA[Claude Code can now draft a bug report about a session on its own and hand it to you for review, a tool called SendFeedback. Here's exactly what goes into that draft, why transcript sharing starts off by default, and the one check worth doing before you approve one on a session that touched client work.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>SendFeedback is a tool Claude Code can call on its own, not a command you type. When a tool keeps failing, when Claude can't finish a request after real effort, or when you tell it the last thing it did was wrong, it drafts a feedback report and opens a review form instead of just continuing.</li><li>Nothing gets sent until you choose to send it. You can send the draft as written, edit it, attach or exclude the current transcript, or cancel outright. Transcript sharing starts turned off by default, and Claude Code remembers your last choice for next time.</li><li>If you do attach and send the transcript, it's retained for 5 years on the same path as manual /feedback and /bug reports. On a session that touched client code or credentials, that line is worth reading before you approve the draft, not after.</li></ul>
<h2>What Is Claude Code's SendFeedback Tool?</h2>
<p>SendFeedback is a tool Claude Code can invoke itself, mid-session, to draft a feedback report about what just went wrong and put it in front of you for review. It requires Claude Code v2.1.238 or later. It fires when a command or tool fails repeatedly, when Claude can't complete a request after sustained attempts, when you tell it directly that it made a mistake, or when you explicitly ask it to file a report. In every case, invoking the tool only builds a draft. It doesn't send anything on its own.</p>
<p>This is a genuinely different mechanism from typing /feedback or /bug yourself. Those two commands still exist and still open the standard feedback window directly, bypassing the auto-draft entirely. SendFeedback is the new piece: Claude noticing something went wrong and writing the first draft of the report for you, instead of you reconstructing what happened from memory after the session's already moved on.</p>
<h2>What Actually Gets Sent (and What Doesn't)</h2>
<p>When SendFeedback fires, the session pauses and an interactive review form appears. You get four real choices: send the draft as written, edit the report before sending, toggle whether the current transcript is attached, or cancel and send nothing at all. The draft itself is built from context already available in the session, not from a fresh scan of your whole machine.</p>
<table><caption>The three paths into a feedback report</caption><thead><tr><th>Path</th><th>What triggers it</th><th>What you see</th></tr></thead><tbody><tr><td>SendFeedback (automatic)</td><td>Repeated tool failure, a stuck request, or you saying it made an error</td><td>A pre-filled draft report and a review form, before anything is sent</td></tr><tr><td>/feedback with text</td><td>You type it yourself</td><td>The standard feedback window, opened directly, no draft step</td></tr><tr><td>/bug</td><td>You type it yourself</td><td>The same standard feedback window, reporting through the same path</td></tr></tbody></table>
<h2>Why Transcript Sharing Starts Off</h2>
<p>Transcript sharing defaults to off on every SendFeedback draft. You have to actively turn it on for that submission, and Claude Code remembers your last choice going forward, though the setting can still be changed per submission. That default exists because a session transcript is everything that happened in the conversation, including file contents Claude read or wrote along the way.</p>
<blockquote><strong>WARNING:</strong> Once you attach a transcript and send it, whether through SendFeedback, /feedback, or /bug, it's retained for 5 years on the same path. That's not a criticism of the feature, a real transcript is genuinely useful for fixing a real bug. It's just the fact worth knowing before you toggle it on, not after.</blockquote>
<h2>The Off-by-Default Check We Use on Client Work</h2>
<p>Inside the club we call this the Off-by-Default Check, and it's three questions, not a policy document. Run it in the ten seconds you already have while the review form is sitting on screen.</p>
<ol><li>Glance at what's actually in view before you toggle the transcript on: client API keys, real customer data, or anything under an NDA you signed changes the answer.</li><li>Default to sending the written draft alone. It's usually enough for a real product issue to get acted on, and it carries none of the session's raw content.</li><li>If the bug genuinely needs the full transcript to reproduce, say so, attach it deliberately, and treat that choice the same way you'd treat pasting a client's code into any third-party tool.</li></ol>
<p>This isn't about distrust of the feature. It's the same instinct as reviewing a diff before you ship it, covered in [how I review Claude Code's output before I ship it](/blog/review-claude-code-output-before-you-ship): a review step only works if you actually use it instead of clicking through on autopilot.</p>
<h2>When It's Actually Worth Sending</h2>
<p>Send it when something genuinely broke and kept breaking, not every time Claude Code gets a little slow or a prompt needs rewording. A tool that fails the same way three times in a row, or a request that dies after real effort, is exactly the kind of thing a feedback report is meant to catch, and reporting it is how a rough edge actually gets fixed instead of just worked around by everyone who hits it.</p>
<h2>Where This Works (and Where It Doesn't)</h2>
<p>SendFeedback works in the interactive Claude Code app, the terminal, and Claude Code on the web, anywhere a human is actually present to see the review form and make a choice. It is not available through the Claude Agent SDK, which makes sense: a programmatic session running unattended has no one there to click send, so there's no draft-and-review step to offer.</p>
<blockquote><strong>NOTE:</strong> Members inside Claude Code Club compare notes on which new Claude Code features are actually worth turning on for client work versus which ones need a second look first, the same way we did with this one. Join for 9 dollars a month at https://www.skool.com/claudecodeclub/about, or start with the [curriculum](/curriculum) for the workflow track first.</blockquote>
<h2>FAQ</h2>
<p><strong>What is SendFeedback in Claude Code?</strong></p><p>SendFeedback is a tool Claude Code can call on its own when a command keeps failing, a request can't be completed, or you say it made a mistake. It drafts a feedback report and opens a review form. It requires Claude Code v2.1.238 or later.</p>
<p><strong>Does Claude Code send my code automatically when something fails?</strong></p><p>No. SendFeedback only builds a draft and opens a review form. Nothing is sent until you choose to send it, and you can edit the draft or cancel it entirely before that happens.</p>
<p><strong>Is transcript sharing turned on by default with SendFeedback?</strong></p><p>No, it starts off by default on every draft. You have to actively enable it for that submission. Claude Code remembers your last choice for future reports, but you can change it each time.</p>
<p><strong>How long does Anthropic keep a submitted transcript?</strong></p><p>Transcripts shared through SendFeedback, /feedback, or /bug are retained for 5 years, since all three report through the same submission path.</p>
<p><strong>What's the difference between SendFeedback and typing /feedback myself?</strong></p><p>/feedback with text, and /bug, open the standard feedback window directly with no draft step. SendFeedback is Claude noticing a problem mid-session and writing the first draft of that report for you to review, rather than you typing one from a cold start after the fact.</p>
<p><strong>Does SendFeedback work with the Claude Agent SDK?</strong></p><p>No. It's available in the interactive Claude Code app, the terminal, and Claude Code on the web, but not through the Agent SDK, since an unattended programmatic session has no one present to review the draft before it's sent.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Connect Claude Code to Jira With Atlassian's Official MCP Server</title>
      <link>https://www.claudecodeclub.ai/blog/connect-claude-code-to-jira</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/connect-claude-code-to-jira</guid>
      <pubDate>Tue, 01 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>MCP</category>
      <category>Building</category>
      <description><![CDATA[Atlassian runs its own official MCP server, so Claude Code can read a ticket, search a project, and leave a comment without you copying anything by hand. Here's the exact setup, the OAuth-versus-token choice, and the one reliability quirk to know about first.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Run `claude mcp add atlassian --transport http https://mcp.atlassian.com/v1/mcp/authv2`, approve the OAuth prompt in your browser, and Claude Code can read and update Jira tickets directly from the desktop app or the CLI.</li><li>The same server also covers Confluence, Bitbucket, Jira Service Management, and Compass, so it's one connection for the whole Atlassian side of a project.</li><li>OAuth is the default and works for most people. If you're on a shared or headless machine, or you keep getting logged out, an API token is the steadier fallback - covered below.</li></ul>
<h2>How Do You Connect Claude Code to Jira?</h2>
<p>Atlassian built and runs an official remote MCP server for Jira, Confluence, Bitbucket, and the rest of its suite, so you're not relying on a third-party integration to keep it working. It follows the same pattern as every other official server Claude Code supports - see [what MCP servers are and why they matter](/blog/what-are-mcp-servers-and-why-they-matter) if you haven't connected one before, or [the general setup guide](/guides/setting-up-mcp-servers) for the mechanics that apply across all of them.</p>
<p>Once it's connected, Claude Code can pull a ticket's full description and comment history before it starts work, search a project by component or label, and update status or leave a comment when a task is done - all without you switching tabs to copy context back and forth.</p>
<h2>Step One: Register the Server</h2>
<ol><li>Open a terminal (or the desktop app's built-in terminal panel) and run: claude mcp add atlassian --transport http https://mcp.atlassian.com/v1/mcp/authv2</li><li>Claude Code opens your default browser to Atlassian's login. Sign in and approve the connection - you'll pick which site (and, on some plans, which projects) it can access.</li><li>Back in Claude Code, run claude mcp list to confirm &quot;atlassian&quot; shows as connected, or claude mcp get atlassian for the full connection detail.</li></ol>
<blockquote><strong>TIP:</strong> If the add command errors out immediately, update the Claude Code CLI first (claude update) - remote MCP support landed in a specific release, and an older build won't recognize the --transport http flag.</blockquote>
<h2>Browser OAuth vs an API Token</h2>
<p>OAuth is the default path and it's the one most people should use - you approve access once in the browser and Claude Code handles the session from there. It's scoped to whatever you approve, so a personal machine only exposes what you personally have access to.</p>
<p>An API token is the alternative, and it needs to be turned on by an Atlassian admin under Administration settings before it'll work. It's worth the extra setup step on a shared or headless machine where a browser popup isn't practical, or as the fallback described below.</p>
<h2>What This Is Actually Good For</h2>
<ul><li>Reading the full ticket - description, comments, linked issues - before you touch a line of code, so Claude Code starts with the same context you'd have if you'd read it yourself.</li><li>Searching a project by component or label before scoping a sprint, instead of scrolling a board by hand.</li><li>Transitioning a ticket's status and leaving a comment when work is done, so the tracker stays current without a separate manual step.</li></ul>
<p>That last one is worth treating carefully - see [reviewing Claude Code's output before you ship](/blog/review-claude-code-output-before-you-ship) for why an agent marking its own ticket done isn't the same as it actually being done.</p>
<h2>The One Reliability Quirk to Know About</h2>
<blockquote><strong>WARNING:</strong> Users in Atlassian's own community forums have reported the OAuth connection to this MCP server needing frequent re-authentication - sometimes as often as every session. Atlassian has acknowledged the reports. If you hit this, the API token path above is the more stable fallback until it's resolved.</blockquote>
<p>This isn't a dealbreaker, it's a known rough edge. If you're setting this up for daily use rather than an occasional check-in, it's worth testing the token path from day one instead of discovering the OAuth quirk mid-project.</p>
<h2>It's Not Just Jira</h2>
<p>The same server also covers Confluence, Bitbucket, Jira Service Management, and Compass. One connection, one OAuth approval, and Claude Code can pull a Confluence page for context while it works a linked Jira ticket - that's the actual point of running it as a single server instead of four separate integrations.</p>
<h2>When Not to Bother With It</h2>
<p>If you're working solo on a project with no tracker, or Jira is just where tickets go to be forgotten, skip this. It earns its keep once a project has real ticket history worth reading and a status that other people actually check.</p>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club we walk through the full MCP setup live, including which servers are worth connecting first for your specific stack. Join for 9 dollars a month at https://www.skool.com/claudecodeclub/about, or start with the [curriculum](/curriculum).</blockquote>
<h2>FAQ</h2>
<p><strong>How do I connect Claude Code to Jira?</strong></p><p>Run claude mcp add atlassian --transport http https://mcp.atlassian.com/v1/mcp/authv2, approve the OAuth prompt in your browser, then confirm with claude mcp list. It's Atlassian's own official server, covering Jira along with Confluence, Bitbucket, and the rest of the suite.</p>
<p><strong>Should I use OAuth or an API token to connect?</strong></p><p>OAuth is the default and works for most people - approve it once in the browser. An API token, enabled by an Atlassian admin, is the better choice for a shared or headless machine, or if you hit the OAuth re-authentication quirk covered above.</p>
<p><strong>Can Claude Code see my whole Jira site once it's connected?</strong></p><p>Only what you approve during the OAuth flow - the site and projects you grant access to, not every project in your organization. An admin can further restrict access by permission group on their end.</p>
<p><strong>Why does Claude Code keep asking me to log into Jira again?</strong></p><p>This is a known reliability quirk with the OAuth connection that Atlassian has acknowledged in its own community forums. If it's happening often, switch to the API token path, which an Atlassian admin can enable under Administration settings.</p>
<p><strong>Does this also work with Confluence and Bitbucket?</strong></p><p>Yes. It's a single Atlassian MCP server that covers Jira, Confluence, Bitbucket, Jira Service Management, and Compass - one connection instead of four separate ones.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code's Weekly Limits Change on September 14 - How I'm Pricing Around It</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-weekly-limits-september-2026</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-weekly-limits-september-2026</guid>
      <pubDate>Tue, 01 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Agency</category>
      <category>Pricing</category>
      <category>Claude Code</category>
      <description><![CDATA[Anthropic's temporary capacity boost on Claude Code ends September 14, replaced by a smaller permanent increase. Both the +25% and the -17% numbers you'll see floating around are true at once - here's the actual math and what I'm changing in every proposal this month.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>On September 14, 2026, Anthropic replaces the temporary +50% weekly capacity boost on Claude Code with a smaller, permanent +25% increase over the original pre-boost baseline - a roughly 17% drop from what you're using today.</li><li>Both numbers are true because they measure from different starting points. Only the weekly limit changes - the 5-hour rolling limit, API customers, and consumption-based Enterprise plans aren't touched.</li><li>If you've scoped or priced work assuming today's boosted capacity, September 14 is the date that assumption stops holding.</li></ul>
<h2>What's Actually Changing on September 14</h2>
<p>Since May 2026, Anthropic has run a temporary +50% capacity boost on Claude Code's weekly usage limits for Pro, Max, Team, and seat-based Enterprise plans. On September 14, 2026, that temporary boost goes away and is replaced by a permanent increase of +25% over the original pre-boost baseline - not over today's boosted level. Anthropic hasn't published the underlying token numbers, only this indexed change, so treat the percentages as relative, not absolute.</p>
<p>This applies to the weekly window specifically. The separate 5-hour rolling rate limit is untouched, free plans aren't part of this change, and API customers and consumption-based Enterprise plans were never on the boosted number in the first place.</p>
<h2>Why Both Numbers Are True</h2>
<table><caption>Same change, two different reference points</caption><thead><tr><th>Period</th><th>Index (pre-boost baseline = 100)</th><th>What it means</th></tr></thead><tbody><tr><td>Pre-May 2026 baseline</td><td>100</td><td>The original weekly limit before any boost</td></tr><tr><td>Temporary boost (now, until Sept 14)</td><td>150</td><td>The +50% boost most active users are on today</td></tr><tr><td>Sept 14, 2026 onward</td><td>125</td><td>+25% over the original baseline - about 17% below today's boosted level</td></tr></tbody></table>
<p>150 down to 125 is a real cut from where things stand right now, and 125 up from 100 is a real permanent gain over where things stood before May. Both framings get repeated online because both are correct - they're just measuring from different starting lines. The one that matters for your planning is the first one: 125 is less than what you have today.</p>
<h2>What This Actually Means If You Bill Around Claude Code Capacity</h2>
<ul><li>A build that comfortably fits inside one weekly cycle at the boosted level might spill into a second week once the standard level takes effect - same scope, less room to run it in.</li><li>A retainer sized around &quot;however much I need this week&quot; gets quietly more expensive to deliver once the ceiling drops, even though nothing about the client relationship changed.</li><li>The desktop app and the CLI on the same account draw from one shared weekly allowance, not separate budgets per tool - so a client-facing agent running in the background counts against the same number as your own hands-on work.</li></ul>
<h2>The Capacity Buffer: What I'm Doing to Every Proposal This Month</h2>
<p>Inside the club we call this the Capacity Buffer: price and schedule against roughly 80% of your weekly allowance, never the full ceiling. It's the same logic as never quoting a client your absolute fastest possible timeline - you leave room for the number to move against you before it actually does.</p>
<ol><li>Re-check any proposal priced in the last month against the boosted assumption - if the math only worked at 150, it needs a second look before September 14.</li><li>Front-load the heaviest, most token-hungry work into the first week of a project cycle, while there's still more room to absorb a heavy day.</li><li>Tell the client plainly when a deadline depends on shrinking capacity rather than quietly absorbing the risk yourself and hoping it doesn't show up in the timeline.</li></ol>
<blockquote><strong>WARNING:</strong> Don't find out you've hit the new ceiling mid-sprint on a client deadline. Test your actual weekly usage pattern against the 125-index level before September 14, not after.</blockquote>
<h2>When This Doesn't Change Anything for You</h2>
<p>If you're a light or moderate user who's never come close to hitting the weekly limit, this change is background noise, not action. See [Claude Code usage limits and what to do about them](/blog/claude-code-usage-limits-what-to-do) for the general playbook, and [how to price a Claude Code agency project](/blog/how-to-price-a-claude-code-agency-project) or [how to scope a Claude Code client project](/blog/how-to-scope-a-claude-code-client-project) for the pricing and scoping fundamentals this builds on.</p>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club we track changes like this the day they're announced and adjust the pricing playbook together. Join for 9 dollars a month at https://www.skool.com/claudecodeclub/about, or start with the [curriculum](/curriculum) for the pricing and contracts track first.</blockquote>
<h2>FAQ</h2>
<p><strong>What is the Claude Code weekly limit change on September 14, 2026?</strong></p><p>Anthropic's temporary +50% capacity boost on weekly usage limits, running since May 2026, is replaced by a smaller permanent +25% increase over the original pre-boost baseline - about a 17% reduction from today's boosted level.</p>
<p><strong>Why do I see both +25% and -17% describing the same change?</strong></p><p>They measure from different starting points. +25% is measured against the original pre-boost baseline from before May 2026. -17% is measured against the temporary boosted level most active users are on right now. Both are accurate.</p>
<p><strong>Does this affect the 5-hour Claude Code rate limit?</strong></p><p>No. This change is specific to the weekly usage window. The separate 5-hour rolling rate limit is not affected.</p>
<p><strong>Does this affect API customers or Enterprise consumption plans?</strong></p><p>No. It applies to Pro, Max, Team, and seat-based Enterprise plans. API customers and consumption-based Enterprise plans were never on the temporary boosted number and aren't part of this change.</p>
<p><strong>How should I price client work around this change?</strong></p><p>Use what we call the Capacity Buffer - price and schedule against roughly 80% of your weekly allowance rather than the full ceiling, front-load token-heavy work early in a cycle, and tell clients directly when a deadline depends on shrinking capacity.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Connect Claude Code to GitHub With the Official MCP Server</title>
      <link>https://www.claudecodeclub.ai/blog/connect-claude-code-to-github</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/connect-claude-code-to-github</guid>
      <pubDate>Mon, 31 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>MCP</category>
      <category>Building</category>
      <description><![CDATA[GitHub runs its own remote MCP server, so Claude Code can read a repo, browse open issues and pull requests, and check CI status without you copying anything between tabs. Here's the setup, the one place it differs from Slack, Notion, and Linear, and the scope habit that keeps a token from seeing more than it should.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Connect Claude Code to GitHub with GitHub's own official remote MCP server at api.githubcopilot.com/mcp. Generate a GitHub personal access token scoped to the repos you need, then run claude mcp add-json github with that token in the header to register it.</li><li>Unlike Slack, Notion, and Linear, GitHub's remote server doesn't yet support one-click browser OAuth inside Claude Code, so a scoped token is the standard route for both the desktop app and the CLI, not a fallback for one over the other.</li><li>Once it's connected, Claude Code can read a repo, browse issues and pull requests, check CI run status, and open or update issues and PRs directly from a session, instead of you tabbing over to github.com to paste context back and forth.</li></ul>
<h2>How Do You Connect Claude Code to GitHub?</h2>
<p>Connect Claude Code to GitHub by registering GitHub's own official remote MCP server, hosted at api.githubcopilot.com/mcp, using a GitHub personal access token for authentication. Generate a fine-grained token scoped to the specific repos you're working in, then run one command to register it: claude mcp add-json github with the token passed as a Bearer header. That's the whole setup, and it works the same way whether you're building inside the Claude Code desktop app or the CLI.</p>
<p>Once it's connected, Claude Code can read a repository's files and structure, search and browse open issues and pull requests, check the status of CI runs, and open or update issues and PRs as part of the same conversation you're already having about a build. It's a server GitHub built and runs themselves against their own API, the same pattern as [connecting Claude Code to Linear](/blog/connect-claude-code-to-linear) or Notion, not a community package reverse-engineered against endpoints that can change without notice.</p>
<blockquote><strong>NOTE:</strong> MCP servers in general are covered in [what are MCP servers, and why do they matter for Claude Code](/blog/what-are-mcp-servers-and-why-they-matter), and the club's [guide to setting up MCP servers](/guides/setting-up-mcp-servers) if this is your first one.</blockquote>
<h2>Step One: Generate a Scoped Token, Not an All-Repo One</h2>
<p>GitHub's remote server authenticates with a personal access token rather than a full browser OAuth login, so this step happens before you touch Claude Code at all. Go to github.com/settings/personal-access-tokens/new and create a fine-grained token, not a classic one. Fine-grained tokens let you pick exactly which repositories the token can see and exactly which permissions it has inside them, instead of handing over blanket access to everything in your account.</p>
<ol><li>Under Repository access, select Only select repositories and pick the ones you're actually building against, not every repo in the account.</li><li>Under Permissions, grant Contents (read or read/write, depending on whether you want Claude Code opening PRs), Issues, and Pull requests. Skip anything you don't have a concrete reason to hand over.</li><li>Set an expiration. A token that never expires is a liability sitting in your config months after the project that needed it wrapped up.</li></ol>
<p>This is the same instinct as the Linear API key's read-only option, applied one step earlier: the access decision happens when you generate the token, not as a separate setting inside Claude Code. A token scoped to two repos with read and issue access can't reach a third repo or push a commit, no matter what you ask it to do.</p>
<h2>Step Two: Register the Server</h2>
<p>With the token copied, register the server from a terminal window, the same one-time step whether you build inside the desktop app or the CLI day to day.</p>
<ol><li>Run claude mcp add-json github '{&quot;type&quot;:&quot;http&quot;,&quot;url&quot;:&quot;https://api.githubcopilot.com/mcp&quot;,&quot;headers&quot;:{&quot;Authorization&quot;:&quot;Bearer YOUR_GITHUB_PAT&quot;}}' with your real token in place of YOUR_GITHUB_PAT.</li><li>Restart Claude Code so it picks up the new server.</li><li>Run claude mcp list to confirm github shows up, or claude mcp get github for the full detail.</li></ol>
<blockquote><strong>TIP:</strong> On an older Claude Code version, add-json can return an Invalid input error, and on Windows it sometimes fails outright. If that happens, use the older syntax instead: claude mcp add --transport http github https://api.githubcopilot.com/mcp -H &quot;Authorization: Bearer YOUR_GITHUB_PAT&quot;. Both register the exact same server.</blockquote>
<p>Don't hardcode the token into a file you might commit. Store it in a .env file, add that file to .gitignore, and reference it as an environment variable when you run the command, the same habit covered in [Claude Code environment variables: how to keep your API keys safe](/blog/claude-code-environment-variables).</p>
<h2>What This Is Actually Good For</h2>
<p>The obvious use is starting work from the real issue instead of retyping it, the same pattern as the Linear connection, but with the added value of GitHub also being where the code and the CI results already live. Claude Code can read an issue, look at the actual file it references, check whether the last CI run on a branch is green, and open a pull request when the change is ready, all without you narrating any of that context by hand.</p>
<ul><li>Pull an issue's full description and comments as context before you start a change, instead of summarizing it into a prompt yourself and losing detail.</li><li>Ask Claude Code to check whether a specific pull request's CI checks passed before you tell a client it's ready, rather than clicking through to the Actions tab yourself.</li><li>Have Claude Code open a pull request with a real description once a change is done, instead of you writing the PR summary from a cold start after the session ends.</li></ul>
<p>It doesn't replace reviewing the diff yourself before you merge anything, that habit is covered in [how I review Claude Code's output before I ship it](/blog/review-claude-code-output-before-you-ship). What it removes is the manual copy-paste tax between where the issue, the code, and the CI status already live and the session where you're actually building.</p>
<h2>Desktop App Users: The One Thing to Know</h2>
<p>Slack, Notion, and Linear's hosted MCP servers all support a one-click browser OAuth login the first time you connect, no token to generate. GitHub's remote server doesn't offer that yet inside Claude Code, in the desktop app or the CLI, which is why a personal access token is the standard route here rather than a fallback for people who'd rather skip the browser flow.</p>
<p>If you'd rather log in with your GitHub account instead of managing a token, GitHub also ships a local version of the server that runs through Docker and supports a real OAuth browser login on first use. It's a heavier setup, since it needs Docker installed and running, so I'd only reach for it if avoiding a token specifically matters to you, most builders are fine with the scoped token above.</p>
<h2>Skip the Old Community Package</h2>
<blockquote><strong>WARNING:</strong> If you find setup instructions referencing an npm package called @modelcontextprotocol/server-github, skip them. That community package has been deprecated since April 2025 in favor of GitHub's own official server. Use the api.githubcopilot.com/mcp route above instead.</blockquote>
<h2>When Not to Bother With It</h2>
<p>Skip the setup for a throwaway script or a repo you're not going back to. It earns its place the moment there's a real, actively-updated repo on the other end, open issues, a review process, CI checks that actually gate a merge, the kind of project where you'd otherwise be tabbing over to github.com every few minutes anyway.</p>
<blockquote><strong>NOTE:</strong> Members inside Claude Code Club share the actual token scopes and MCP configs they run day to day, including which ones earned a permanent spot and which didn't survive the first week. Join for 9 dollars a month at https://www.skool.com/claudecodeclub/about, or start with the [curriculum](/curriculum) for the structured path through MCP setup first.</blockquote>
<h2>FAQ</h2>
<p><strong>How do I connect Claude Code to GitHub?</strong></p><p>Generate a fine-grained GitHub personal access token scoped to the repos you need, then register GitHub's official remote MCP server with claude mcp add-json github '{&quot;type&quot;:&quot;http&quot;,&quot;url&quot;:&quot;https://api.githubcopilot.com/mcp&quot;,&quot;headers&quot;:{&quot;Authorization&quot;:&quot;Bearer YOUR_GITHUB_PAT&quot;}}'. Restart Claude Code and run claude mcp list to confirm it's connected.</p>
<p><strong>Do I need a GitHub personal access token, or can I just log in with OAuth?</strong></p><p>You need a token for the remote server. Unlike Slack, Notion, and Linear, GitHub's remote MCP connection doesn't yet support a one-click browser OAuth login inside Claude Code. A local Docker-based version of the server does support OAuth login instead, but it's a heavier setup most builders don't need.</p>
<p><strong>Can Claude Code see every repo in my GitHub account once it's connected?</strong></p><p>Only if you scope the token that way, which you shouldn't. A fine-grained personal access token lets you pick exactly which repositories it can see and exactly which permissions it has in each one, so the real access decision happens when you generate the token, not as a separate setting afterward.</p>
<p><strong>Can Claude Code open pull requests, or is it read-only?</strong></p><p>It can do both, depending on the permissions you granted the token. With Contents and Pull requests write access, Claude Code can open and update PRs directly. Grant read-only permissions instead if you want it limited to reading issues, code, and CI status.</p>
<p><strong>What if claude mcp add-json fails or returns an error?</strong></p><p>On older Claude Code versions or on Windows, add-json can fail with an Invalid input error. Use the legacy syntax instead: claude mcp add --transport http github https://api.githubcopilot.com/mcp -H &quot;Authorization: Bearer YOUR_GITHUB_PAT&quot;. It registers the identical server.</p>]]></content:encoded>
    </item>
    <item>
      <title>How Many Revisions to Include in an AI Project (Before You Start Charging for More)</title>
      <link>https://www.claudecodeclub.ai/blog/how-many-revisions-to-include-in-an-ai-project</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/how-many-revisions-to-include-in-an-ai-project</guid>
      <pubDate>Mon, 31 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Agency</category>
      <category>Contracts</category>
      <category>Clients</category>
      <description><![CDATA[Unlimited revisions sounds generous until it turns your calendar into a client's open queue. Here's the number I actually put in a proposal, the line that separates a revision from a new request, and how to say it without sounding like you're nickel-and-diming someone on day one.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Two structured rounds of revisions, built into the price and defined narrowly as fixing what doesn't match agreed scope. Anything past that, or anything that's a new request rather than a fix, gets priced separately.</li><li>Unlimited revisions isn't generosity, it removes the client's reason to give you clear, bundled feedback the first time, and it quietly turns an afternoon build into a month of small edits with no natural end point.</li><li>Put the number in the proposal before the project starts, not as a rule you invoke mid-project when someone's on their sixth round. Stated upfront it reads as normal. Invoked mid-project it reads as a fight.</li></ul>
<h2>The Number I Actually Use</h2>
<p>Two rounds of revisions, included in the price, defined as fixing anything that doesn't match what was scoped. Round one happens after the first delivery. Round two happens after I've made those changes. After that, anything further is a new, priced request, not a continuation of the same invoice.</p>
<p>That's not a rule I invented to protect my time in the abstract, it's the fix for a specific failure mode Claude Code makes worse, not better. A build that used to take a week now takes an afternoon, which means the temptation to treat every follow-up message as a free, instant re-generation is stronger than it ever was with slower tools. Two structured rounds keeps that speed from quietly becoming an open-ended queue.</p>
<h2>Why Unlimited Revisions Is a Trap, Not a Selling Point</h2>
<p>Unlimited revisions sounds like a strong offer on a proposal, and it costs you almost nothing to type. What it actually does is remove the client's only incentive to give you clear, complete feedback in one pass. If round three is free and round four is free too, there's no reason not to send a one-line note today and another one tomorrow, each one restarting your context and stretching a project that should have closed weeks ago.</p>
<blockquote><strong>WARNING:</strong> The projects that ran longest for me weren't the ones with the most revisions, they were the ones with unlimited revisions and no structure. A capped number with a real deadline attached forces feedback to arrive as one considered pass instead of a drip.</blockquote>
<h2>What Counts as a Revision vs a New Request</h2>
<p>This is the line that actually matters, more than the number itself. A revision fixes something that doesn't match what you agreed to build. A new request is a change of mind, a new feature, or a different direction than what was scoped. Confusing the two is where free revisions quietly turn into free scope expansion.</p>
<table><caption>Revision vs new request</caption><thead><tr><th>Revision (included)</th><th>New request (priced separately)</th></tr></thead><tbody><tr><td>The button color doesn't match the brand palette we agreed on</td><td>Add a whole new page that wasn't in the original scope</td></tr><tr><td>A form field is missing validation that was part of the spec</td><td>Change the entire layout after approving an earlier version</td></tr><tr><td>Copy has a typo or doesn't match what was provided</td><td>Rewrite the copy strategy from a different angle</td></tr><tr><td>A feature doesn't behave the way the brief described</td><td>Add a feature that was never in the brief</td></tr></tbody></table>
<p>Say this distinction out loud the first time a request lands in the second column, don't just quietly absorb it. Most clients aren't trying to sneak in free work, they genuinely don't know where the line is until you draw it. Naming it once, calmly, usually settles the question for the rest of the project.</p>
<h2>Bundle Feedback Into One Pass Per Round</h2>
<p>A round isn't a round if it arrives as five separate messages over three days. When I deliver a build, I ask for every piece of feedback in one message before I touch anything again, that's what makes a round countable and closeable. Feedback that trickles in one line at a time doesn't just cost more of your time, it makes it genuinely harder to tell when a round has actually ended.</p>
<p>Set a short window for that one bundled pass, three to five business days is typical, and say plainly that revisions submitted after the window starts the next round instead. That keeps a client's slow reply from stretching your own timeline indefinitely, and it gives both sides a clear moment where the project is either done or explicitly moving to another round.</p>
<h2>Put It in Writing, Not Just in the Kickoff Call</h2>
<p>This is what we call the Change Line inside the club: the exact sentence in your contract that states the revision count and turns any new request into a priced change instead of an argument. See [what to put in an AI project contract](/blog/what-to-put-in-an-ai-project-contract) for where it sits alongside the rest of the six-clause baseline, and [how to handle scope creep on client projects](/blog/how-to-handle-scope-creep-on-client-projects) for what to do once a request clearly crosses the line.</p>
<p>A verbal mention on the kickoff call doesn't hold up three weeks later when a client genuinely doesn't remember agreeing to a cap. Put the number in the proposal and in the contract, in the same plain language you'd use talking to them directly, not buried in legal boilerplate they skimmed past.</p>
<h2>How to Say It Without Sounding Petty</h2>
<p>State it once, plainly, as a normal part of how every project runs, not as a condition you're specially imposing on this client. I write some version of: this includes two rounds of revisions on the agreed scope, submitted as one bundled pass within five business days of delivery. Anything beyond that, or anything outside the original scope, is billed at my standard rate. No apology, no hedge.</p>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club we share the actual Change Line wording members use in proposals and contracts, including how it's held up when a client pushed on it. Join for 9 dollars a month at https://www.skool.com/claudecodeclub/about, or start with the [curriculum](/curriculum) for the pricing and contracts track first.</blockquote>
<h2>FAQ</h2>
<p><strong>How many revisions should I include in a client project?</strong></p><p>Two structured rounds, built into the price and defined as fixing anything that doesn't match agreed scope. Anything past that, or anything that's a new request rather than a fix to existing scope, gets priced as a separate change.</p>
<p><strong>What's the difference between a revision and a new request?</strong></p><p>A revision fixes something that doesn't match what was already scoped, a color that's off-brand, a feature that doesn't behave as described. A new request is a change of mind, a new feature, or a different direction than what was agreed, and it should be priced separately rather than absorbed into a revision round.</p>
<p><strong>Should I offer unlimited revisions to win a client?</strong></p><p>No. Unlimited revisions removes the client's incentive to give clear, bundled feedback up front, since there's no cost to sending another small note tomorrow. A capped number with a real deadline attached almost always finishes faster and cleaner than an unlimited offer does.</p>
<p><strong>How do I charge for revisions beyond what's included?</strong></p><p>Price them the same way you'd price any new scope, at your standard rate, stated in the same contract clause that sets the included revision count. Naming the number and the rate upfront, before the project starts, is what keeps this from turning into a negotiation mid-project.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Connect Claude Code to Linear With the Official MCP Server</title>
      <link>https://www.claudecodeclub.ai/blog/connect-claude-code-to-linear</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/connect-claude-code-to-linear</guid>
      <pubDate>Thu, 27 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>MCP</category>
      <category>Building</category>
      <description><![CDATA[Linear ships and hosts its own MCP server, so Claude Code can read an issue's full description and comment thread, then update its status or leave a comment, without you copying anything between tabs. Here's the setup, what it's actually good for, and the scope habit that keeps it from touching more than it should.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Connect Claude Code to Linear with Linear's own hosted MCP server. Run claude mcp add --transport http linear https://mcp.linear.app/mcp once, approve the browser OAuth flow, and Claude Code can then read issues, projects, and comments, and create or update them, as part of a normal build conversation.</li><li>No API key is required for the hosted route. If you want a narrower, read-only connection instead, generate a Linear API key with only the Read permission enabled and use a local server against that key instead of the OAuth flow.</li><li>The MCP connection inherits your own Linear permissions exactly. It can't see a team or workspace you can't see yourself, so the real scope decision is which teams your Linear account already has access to, not a separate setting inside Claude Code.</li></ul>
<h2>What the Linear MCP Server Actually Gives Claude Code</h2>
<p>Connect Claude Code to Linear by adding Linear's own hosted MCP server, at https://mcp.linear.app/mcp, and authenticating once through your browser. Once it's connected, Claude Code can search your Linear workspace, pull an issue's full description and comment history as context, and create or update issues, change status, assign people, and leave comments, all from inside the same session where you're already building.</p>
<p>This is a server Linear built and runs themselves, not a community package reverse-engineered against their API. That matters the same way it did for [connecting Claude Code to Notion](/blog/connect-claude-code-to-notion): it's maintained against Linear's actual product, so it keeps working when Linear ships changes instead of quietly breaking. Community alternatives exist too, but the hosted route is the one I'd default to unless you have a specific reason not to.</p>
<blockquote><strong>NOTE:</strong> MCP servers in general are covered in [what are MCP servers, and why do they matter for Claude Code](/blog/what-are-mcp-servers-and-why-they-matter), and the club's [guide to setting up MCP servers](/guides/setting-up-mcp-servers) if this is your first one.</blockquote>
<h2>How to Connect It</h2>
<p>The hosted route is the fastest, and it's the one Linear documents as the default.</p>
<ol><li>In Claude Code, run claude mcp add --transport http linear https://mcp.linear.app/mcp to register the server.</li><li>On first use, Claude Code opens your browser for a Linear OAuth login. Approve it, and the connection is live for that machine going forward, no API key to generate or store.</li><li>Run /mcp inside a Claude Code session to confirm the connection completed and see which Linear tools are now available.</li></ol>
<p>If you'd rather run a narrower, read-only connection, Linear lets you generate an API key with only the Read permission enabled, then point a local MCP server at that key instead of using the hosted OAuth route. That trade gives up write access, so Claude Code can pull issue context but can't create or update anything on your behalf, which is the right call for a shared machine or a client-facing workspace you'd rather not risk.</p>
<h2>What This Is Actually Good For: the Ticket-to-Diff Loop</h2>
<p>The obvious use is starting a build from the ticket instead of retyping it. Point Claude Code at a Linear issue and it reads the real description and every comment, including the back-and-forth a client or teammate already had about scope, instead of you summarizing that thread into a prompt by hand and losing detail on the way.</p>
<p>I run this as a loop, and inside the club we just call it the Ticket-to-Diff loop: pull the issue, build against exactly what it says, then push the result back into the same issue instead of leaving it stranded in your terminal history. It sounds small, but it's the difference between Linear being a to-do list you check before you code and Linear being the actual system of record for what happened.</p>
<ul><li>Pull an issue's description and comments as context before scoping a change, so you're building against what the team actually agreed to, not your memory of a standup.</li><li>Move an issue to In Progress when a build session starts and back to a review status when it's ready, so status in Linear matches reality without a separate update.</li><li>Leave a comment with what changed and why, in the same voice you'd use if you'd typed it yourself, so a teammate or client reading the ticket later gets the real story.</li></ul>
<blockquote><strong>TIP:</strong> Ask Claude Code to summarize an issue's comment thread before you commit to a scope, especially on an older ticket with a long back-and-forth. It's a faster way to catch a decision that got buried on comment forty than scrolling the thread yourself.</blockquote>
<h2>Scope It to What Your Own Account Can Already See</h2>
<p>Linear's MCP connection doesn't have its own permission model separate from you. It authenticates as your Linear account and inherits exactly what you can already see and edit, team by team. If you can't access a team in Linear's own interface, Claude Code can't reach it through the connection either, and if you can, it can, so the real access-control decision already happened when your workspace admin set up your account.</p>
<p>That makes the scope conversation different from Notion's page-by-page sharing model: there's no separate list of what's shared with the integration to review. Workspace admins can still restrict MCP access at the org level with allowlists if that's a concern, but for most solo builders and small agency teams, the thing to actually check is whether your own Linear seat has access to more teams than the client work in front of you needs.</p>
<h2>When Not to Bother With It</h2>
<p>Skip it for a one-off build with no Linear presence, or a client who tracks work in a spreadsheet or a shared doc instead. It earns its place once there's a real, actively-updated issue tracker on the other end, where skipping the connection means you'd be retyping ticket context into a prompt every session anyway.</p>
<blockquote><strong>NOTE:</strong> Members inside Claude Code Club share the actual MCP configs they run, including the ones that earned a permanent spot in their setup and the ones that didn't survive the first week, at https://www.skool.com/claudecodeclub/about. It's $9 a month, or start with the [curriculum](/curriculum) for the structured path through MCP setup first.</blockquote>
<h2>FAQ</h2>
<p><strong>How do I connect Claude Code to Linear?</strong></p><p>Add Linear's official hosted MCP server with claude mcp add --transport http linear https://mcp.linear.app/mcp, then approve the browser OAuth flow that opens on first use. Run /mcp inside a session to confirm the connection and see the available tools.</p>
<p><strong>Do I need a Linear API key to connect Claude Code?</strong></p><p>Not for the hosted route, it authenticates through browser OAuth instead. You'd only generate an API key if you want a narrower, read-only connection, in which case Linear lets you create a key with only the Read permission enabled.</p>
<p><strong>Can Claude Code see my entire Linear workspace once connected?</strong></p><p>It can see whatever your own Linear account can already see, team by team, no more and no less. The connection inherits your existing permissions rather than getting a separate grant, so a team you can't access in Linear's own interface stays inaccessible through Claude Code too.</p>
<p><strong>Can Claude Code create and update Linear issues, or is it read-only?</strong></p><p>The hosted OAuth connection can do both by default, it can read issues and comments and also create issues, update status, assign people, and comment. If you want read-only instead, use a Linear API key with only the Read permission enabled rather than the full OAuth route.</p>]]></content:encoded>
    </item>
    <item>
      <title>How Much Deposit to Charge Before Starting an AI Project</title>
      <link>https://www.claudecodeclub.ai/blog/how-much-deposit-to-charge-before-an-ai-project</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/how-much-deposit-to-charge-before-an-ai-project</guid>
      <pubDate>Thu, 27 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Agency</category>
      <category>Monetization</category>
      <category>Clients</category>
      <description><![CDATA[Skip the deposit and you're financing a stranger's project with your own time. Here's the range I actually charge, the split I use once a project gets big enough to need one, and the one line that keeps a deposit from turning into an awkward conversation.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>For a new client, charge 50% upfront before you open Claude Code. That's the standard range freelancers across every service industry converge on, and there's nothing about AI work that makes you the exception.</li><li>For a larger project, split it into thirds instead of one deposit: a third at signing, a third at a build milestone, a third at delivery, so no single payment is carrying the whole risk of the project stalling out.</li><li>The deposit isn't really about cash flow. It's a filter. A client who balks at putting money behind their own project before you've spent a single hour on it was never going to be an easy client to collect the rest from either.</li></ul>
<h2>The Range I Actually Charge</h2>
<p>For a new client and a project under a few thousand dollars, I charge 50% before I open Claude Code. That's not an aggressive number, it's the standard range that freelancers across every service industry, not just AI builds, land on when you ask them directly: 25% to 50% upfront, with 50% being the common default for smaller projects and new relationships where you have no payment history to lean on yet.</p>
<p>The AI part of the project doesn't change this math. If anything it argues for the higher end of the range, not the lower one: a Claude Code build moves fast once scope is locked, which means your exposure to unpaid work happens in the first few days, not spread out over a slow six-week timeline where you'd notice a payment problem before you'd sunk much time in.</p>
<h2>The Deposit Ladder: When to Split It Into Thirds</h2>
<p>A flat 50% deposit works until a project gets big enough that the other 50% due on delivery becomes its own risk, the client stops responding after your build is 90% done and you're chasing a large final invoice with no leverage left. Past a certain size, I stop using one deposit and switch to what I call the deposit ladder: a third at signing, a third at a build milestone we agree on up front, and a third at delivery.</p>
<table><caption>How I split payment by project size</caption><thead><tr><th>Project size</th><th>Structure</th><th>Why</th></tr></thead><tbody><tr><td>Small, new client</td><td>50% at signing, 50% at delivery</td><td>Simple, and the deposit alone covers most of your real exposure</td></tr><tr><td>Larger scope, multi-week build</td><td>Thirds: signing, mid-build milestone, delivery</td><td>No single payment carries the whole risk if the project stalls</td></tr><tr><td>Rush turnaround, any size</td><td>50-100% at signing</td><td>You're compressing your other work to fit them in, price the risk accordingly</td></tr><tr><td>Existing client, repeat work</td><td>Smaller deposit or net terms</td><td>Payment history already answers the question a deposit is asking</td></tr></tbody></table>
<p>The middle milestone in the ladder isn't arbitrary, tie it to something real: a working prototype, the core feature built, a staging link they can click. That gives the client a checkpoint to confirm the project is actually moving, and it gives you a natural moment to collect before you're carrying the full cost of a build that's most of the way done.</p>
<h2>What the Deposit Is Actually Protecting</h2>
<p>Cash flow is the reason people usually give for a deposit, and it's real, but it's not the main reason I hold the line on it. A deposit is a filter you run before you've spent a single hour on the project. A client who's genuinely ready to work with you pays it without much friction, because they already believe the project is worth doing. A client who pushes back hard on a standard deposit, especially on a small project where 50% isn't a large number, is telling you something about how the rest of the relationship is going to go.</p>
<blockquote><strong>NOTE:</strong> I've had exactly one project where a client's deposit pushback turned out to be nothing, a real cash timing issue on their end that they explained clearly and we worked around. Every other time I've heard serious resistance to a standard deposit, it predicted exactly the kind of payment chase I was trying to avoid by charging one in the first place.</blockquote>
<h2>How to Ask for It Without It Feeling Awkward</h2>
<p>State it once, plainly, as a normal part of how you work, not as a special condition you're imposing on this particular client. I say some version of: I require 50% to start and 50% at delivery, invoice goes out with the proposal, and I begin the build once the first half clears. No apology, no hedge, no over-explaining why. The clients who are going to be fine with it hear a normal business term. The ones who aren't will surface that now, at the cheapest possible point in the relationship, instead of later.</p>
<p>Put the number in writing before you start, not as a verbal agreement you're trusting them to remember. See [what to put in an AI project contract](/blog/what-to-put-in-an-ai-project-contract) for where the deposit terms sit alongside the rest of what belongs in there, and [paid discovery: how to charge for scoping an AI build](/blog/paid-discovery-phase-ai-projects) if the project needs a scoping phase before you're even ready to quote a deposit at all.</p>
<h2>One Exception: Don't Deposit-Gate a Repeat Client</h2>
<p>The deposit is answering a question, will this client actually pay me, and a repeat client already answered it the last time they paid your invoice on time. Requiring the same 50% upfront from someone who's paid you cleanly on three prior projects reads as either forgetting who you're talking to or not trusting them, neither of which is the message you want to send to your best clients. Drop to a smaller deposit, net-15 terms, or nothing upfront at all once the relationship has actual payment history behind it, and save the full deposit for where it's still doing real work: new clients and one-off projects.</p>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club we share the actual proposal language and invoice terms members use for the deposit conversation, including what changed once a client became a repeat one. Join for 9 dollars a month at https://www.skool.com/claudecodeclub/about, or start with the [curriculum](/curriculum) for the pricing track first.</blockquote>
<h2>FAQ</h2>
<p><strong>How much deposit should I charge for an AI project?</strong></p><p>50% upfront for a new client on a smaller project is the standard I'd default to, in line with the 25-50% range freelancers across service industries generally charge. For larger, multi-week builds, split it into thirds instead: a third at signing, a third at a build milestone, a third at delivery.</p>
<p><strong>Should I charge a deposit for a repeat client?</strong></p><p>Not the full amount, and often not at all. A deposit exists to answer whether a client will actually pay you, and a client with a clean payment history from prior projects has already answered that. Drop to a smaller deposit or net terms once you have real history with them.</p>
<p><strong>What if a client refuses to pay a deposit?</strong></p><p>Treat it as information, not just an obstacle to negotiate past. A client who pushes back hard on a standard deposit before you've done any work is often signaling how the rest of the payment relationship will go. It's worth asking why directly, a real cash-timing reason is different from general resistance to paying anything upfront.</p>
<p><strong>Should I charge more deposit for a rush project?</strong></p><p>Yes. A rush turnaround means you're compressing or turning away other work to fit the client in, so price that risk into the deposit, 50-100% at signing is standard for rush work regardless of the project's overall size.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code Auto Mode Is Now the Default: What Changed and How to Turn It Off</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-auto-mode-default</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-auto-mode-default</guid>
      <pubDate>Wed, 26 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Workflows</category>
      <category>Building</category>
      <description><![CDATA[As of August 14, 2026, Claude Code runs in auto mode by default on Pro, Max, and Team plans instead of asking permission before every action. Here is what the safety data actually shows, what the classifier still refuses to do no matter what, and the two switches that put you back in manual control.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>As of August 14, 2026, Claude Code runs in auto mode by default for Pro, Max, and Team plans that haven't pinned a different mode. Instead of a permission prompt before every edit or command, tool calls route through a safety classifier that blocks anything irreversible, destructive, or aimed outside your project.</li><li>Anthropic's own testing is the reason for the switch: in a controlled study with 1,053 paid testers, humans caught only 13.6% of dangerous commands slipped into a session, while the auto mode classifier caught 89% of the same commands.</li><li>You can still switch modes any time. Press Shift+Tab in the CLI or use the mode dropdown in the desktop app for one session, or pin a personal default, use the disableAutoMode setting, or set an org-wide defaultMode in managed settings if you never want it on.</li></ul>
<h2>What Auto Mode Default Actually Means</h2>
<p>As of August 14, 2026, Claude Code runs in auto mode by default for every Pro, Max, and Team plan that hasn't pinned a different mode. Instead of stopping to ask permission before each file edit or terminal command, every tool call now routes through a safety classifier that blocks anything irreversible, destructive, or aimed outside your project environment. If you had already set your own default mode before the change, nothing shifts for you. If you're on Claude Enterprise or accessing Claude Code through the API, auto mode stays opt-in for now, with the same default flip planned for the following month.</p>
<p>Auto mode itself isn't new, we covered how it works when it launched as an opt-in feature in [how Claude Code auto mode runs tasks on its own](/blog/claude-code-auto-mode-runs-on-its-own). What changed on August 14 is who gets it without asking, and the data Anthropic is showing to justify making it the default instead of a setting most people never touch.</p>
<blockquote><strong>NOTE:</strong> One practical detail worth knowing: Anthropic stopped charging Pro, Max, and Team users for the classifier's extra token overhead effective the same day it went default. The safety check doesn't quietly eat into your usage limits.</blockquote>
<h2>Why Anthropic Flipped the Default: the Safety Data</h2>
<p>The case for the switch isn't that auto mode is flawless. It's that manual permission review, in practice, is worse than most people assume. Anthropic hired 1,053 paid testers through a research vendor for a coding study, then swapped a single permission prompt mid-session for a clearly dangerous command to see who caught it. The testers caught it 13.6% of the time (143 of 1,053). Auto mode blocked 89% of the same command (937 of 1,053). Head to head, auto mode blocked 800 commands a human tester had approved, and humans blocked only 6 that auto mode allowed.</p>
<table><caption>What the source data shows</caption><thead><tr><th>Measure</th><th>Manual review</th><th>Auto mode</th></tr></thead><tbody><tr><td>Dangerous command caught (1,053-tester study)</td><td>13.6%</td><td>89%</td></tr><tr><td>Routine permission prompts approved overall</td><td>97%</td><td>n/a</td></tr><tr><td>Plan-mode proposals rejected</td><td>39%</td><td>n/a</td></tr><tr><td>Sessions with unintended harm at production severity (May-June 2026)</td><td>6.3%</td><td>2.4%</td></tr></tbody></table>
<p>That last row explains the reflex problem. People approve 97% of individual permission prompts, but reject 39% of plan-mode proposals, the same people who scrutinize a plan will click through a permission dialog without reading it, because dozens of prompts a day is fatigue, not judgment. In a review of flagged real-world sessions from May to June 2026, manually approved sessions contained serious unintended harm at production severity more than twice as often as auto mode sessions. The full data set, including the third-party red-teaming and prompt-injection testing, is in [Anthropic's own writeup](https://claude.com/blog/auto-mode-default-in-claude-code) if you want the source numbers directly.</p>
<h2>What the Classifier Still Refuses to Do</h2>
<p>Auto mode isn't unlimited autonomy. It has hard denies it won't cross regardless of what you or Claude ask for, and a fallback that hands control straight back to you when it gets stuck.</p>
<ul><li>Data exfiltration is a hard deny. Sending your code or secrets to an external destination can't be approved from inside auto mode at all, you'd have to switch modes or run that command yourself.</li><li>Destructive git commands get a git-status check first. Before something like git reset --hard, the classifier looks at your actual repository state so it knows what would be lost.</li><li>Three blocked actions in a row, or twenty across one session, and Claude Code drops back to manual approval automatically. It doesn't keep retrying against a wall.</li><li>Content pulled from outside your project, web pages, tool output, file contents, gets screened for hidden instructions before it reaches your context, an extra layer against prompt injection.</li></ul>
<h2>How to Turn It Off or Set a Different Default</h2>
<p>Two switches exist, one for right now and one that sticks. Press Shift+Tab in the CLI to cycle modes mid-session, or use the mode dropdown in the desktop app if you're not touching a terminal. Either one changes the current session instantly.</p>
<ul><li>For a personal permanent default: pin your own mode. Once you've set one yourself, the August 14 change doesn't touch you going forward.</li><li>To turn auto mode off entirely: use the disableAutoMode setting.</li><li>For a team or org-wide default: admins pin defaultMode in managed settings, which overrides the account-level default for everyone under it.</li></ul>
<p>None of this touches your existing permission rules in settings files. They still fire before the classifier runs, with one exception: allow-rules broad enough to grant arbitrary code execution, like a wide-open Bash(python:*) rule, get set aside while auto mode is active, since a rule that broad would let a command skip the classifier entirely. The rule itself isn't deleted, it just doesn't apply until you switch modes. See [Claude Code permissions explained](/blog/claude-code-permissions-explained) for how the rest of the permission system fits together with this.</p>
<h2>Should You Actually Turn It Off?</h2>
<p>For most day-to-day build work, no. Leave it on. The data above isn't marketing, it's the same pattern I'd expect from watching people click through prompts: the tenth permission dialog in an hour gets less scrutiny than the first one, and that's exactly where a classifier that doesn't get tired helps.</p>
<p>Where I still keep my hand on the wheel is anything touching production infrastructure directly, a live database, a paid API key with real spend behind it, a deploy to something clients depend on. Auto mode reduces risk, Anthropic says so plainly in their own writeup, it doesn't eliminate it, because it's still a classifier making judgment calls, not a guarantee. Pair it with the habit from [Claude Code checkpoints and /rewind](/blog/claude-code-checkpoints-and-rewind): work in a branch, commit often, and you get the speed of auto mode with a real undo button underneath it.</p>
<blockquote><strong>NOTE:</strong> We walk members through setting a sane default mode per project type, and where to keep manual review on for client work, inside Claude Code Club (https://www.skool.com/claudecodeclub/about). It's $9 a month, or start with the [curriculum](/curriculum) if you want the structured path first.</blockquote>
<h2>FAQ</h2>
<p><strong>Is Claude Code auto mode on by default now?</strong></p><p>Yes, as of August 14, 2026, for Pro, Max, and Team plans that hadn't already pinned a different default mode. Enterprise and API access remain opt-in for now, with the same default change planned for the following month.</p>
<p><strong>How do I turn off Claude Code auto mode?</strong></p><p>Press Shift+Tab in the CLI or use the mode dropdown in the desktop app to switch modes for the current session. To turn it off permanently, use the disableAutoMode setting, or pin your own default mode so future sessions don't start in auto mode at all.</p>
<p><strong>Is auto mode actually safer than approving permission prompts myself?</strong></p><p>In Anthropic's own 1,053-tester study, auto mode caught 89% of dangerous commands slipped into a session versus 13.6% caught by human testers clicking through prompts. That's Anthropic's data on their own product change, treat it as directional evidence for the decision, not an independent audit.</p>
<p><strong>Can auto mode still do something destructive?</strong></p><p>It's designed not to, with hard denies on things like sending code or secrets externally, and a check of your git status before destructive git commands. It's still a classifier, not a guarantee, so keep manual review on for anything touching production infrastructure or real spend.</p>
<p><strong>Does auto mode cost more in usage or tokens?</strong></p><p>The classifier uses a small number of extra tokens per tool call, but Anthropic stopped charging Pro, Max, and Team users for that overhead the same day auto mode went default.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Connect Claude Code to Notion With the Official MCP Server</title>
      <link>https://www.claudecodeclub.ai/blog/connect-claude-code-to-notion</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/connect-claude-code-to-notion</guid>
      <pubDate>Wed, 26 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>MCP</category>
      <category>Building</category>
      <description><![CDATA[Notion ships and hosts its own MCP server, so connecting Claude Code to your Notion workspace doesn't need a community plugin or a workaround. Here's the setup for both the hosted and self-hosted routes, what Claude Code can actually do once it's connected, and the sharing habit that keeps it from seeing more than it should.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Connect Claude Code to Notion with Notion's official hosted MCP server at mcp.notion.com. Register it once with claude mcp add, authenticate in the browser, and Claude Code can then search, read, and write your Notion pages and databases as part of a normal build conversation.</li><li>Prefer a local server and your own integration token instead of the hosted route? Notion also publishes an open-source npm package, @notionhq/notion-mcp-server, that runs with a NOTION_TOKEN you generate at notion.so/my-integrations.</li><li>Notion's sharing model is page-level: the integration only sees pages you've explicitly shared with it, not your whole workspace. Share narrow, and widen only when a real task needs it.</li></ul>
<h2>What the Notion MCP Server Actually Gives Claude Code</h2>
<p>Connect Claude Code to Notion by adding Notion's own hosted MCP server, at https://mcp.notion.com/mcp, as an MCP server inside Claude Code, then authenticating once in your browser. Once it's connected, Claude Code can search your Notion workspace, read a page or database's real content, and create or update pages, all as part of the same conversation you're already having about a build, not a separate copy-paste step.</p>
<p>This is a server Notion built and runs themselves, not a community workaround stitched together against their public API. That matters for reliability: it's maintained against Notion's actual product, not reverse-engineered from it. If you'd rather run a local server against your own integration token instead of using Notion's hosted one, they also publish an open-source package, @notionhq/notion-mcp-server, for that route. Both are documented in [Notion's own MCP guide](https://developers.notion.com/guides/mcp/get-started-with-mcp).</p>
<blockquote><strong>NOTE:</strong> MCP servers in general are covered in [what are MCP servers, and why do they matter for Claude Code](/blog/what-are-mcp-servers-and-why-they-matter), and the club's [guide to setting up MCP servers](/guides/setting-up-mcp-servers) if this is your first one.</blockquote>
<h2>How to Connect It: Hosted vs Self-Hosted</h2>
<p>Most people should use the hosted route, it's fewer steps and Notion manages the server for you.</p>
<ol><li>In Claude Code, run claude mcp add notion --transport http https://mcp.notion.com/mcp to register the server.</li><li>On first use, Claude Code opens your browser for a Notion OAuth login. Approve it, and the connection is live for that machine going forward.</li><li>In Notion, open the pages or databases you want Claude Code to reach and share them with the connection, the same way you'd share a page with a teammate.</li></ol>
<p>If you'd rather self-host, run the npm package locally instead: npx -y @notionhq/notion-mcp-server, with a NOTION_TOKEN environment variable set to an integration secret you generate at notion.so/my-integrations. The self-hosted route is the same underlying API, it just puts you in charge of the token and the server process instead of Notion.</p>
<blockquote><strong>TIP:</strong> If Claude Code can't see a page that should be shared, the fix is almost always in Notion, not Claude Code. Open the page, check Share, and confirm the connection or integration is actually listed there. A page not explicitly shared is invisible to the server, by design.</blockquote>
<h2>What This Is Actually Good For</h2>
<p>The obvious use is pulling a project brief straight from Notion instead of retyping it into a prompt, see [how to write a project brief for Claude Code](/blog/how-to-write-a-project-brief-for-claude-code) for how that brief should be structured in the first place. Point Claude Code at the linked page and it reads the brief directly rather than you summarizing it by hand.</p>
<ul><li>Turn a build session into a written changelog or spec pushed back into a client's shared Notion workspace, instead of a summary that only lives in your terminal history.</li><li>Pull a client's existing SOPs or intake docs from Notion as context before scoping a project, so Claude Code isn't guessing at conventions you already wrote down somewhere.</li><li>Keep a running build log in Notion that updates as you work, useful for client visibility if they're used to checking a Notion page rather than a git log.</li></ul>
<p>None of this replaces a real conversation with a client about scope. It removes the manual copy-paste tax between the tool your notes already live in and the tool doing the building.</p>
<h2>What to Share and What Not To</h2>
<p>Notion's sharing model is page-level, not workspace-level. The MCP connection, hosted or self-hosted, only sees pages and databases you've explicitly shared with it, the same permission model as sharing a page with a person. It does not get your whole workspace by default.</p>
<p>Share narrow to start: the one project's pages, not your entire team wiki. Widen access only when a specific task actually needs it, and treat an integration token the same way you'd treat any other credential, it's a secret, not a config value to paste into a shared file.</p>
<h2>When Not to Bother With It</h2>
<p>Skip the setup for a one-off build with no ongoing Notion presence, or a client who doesn't use Notion at all. It earns its place once there's a real, living set of docs on the other end, a brief, an SOP library, a changelog, something you'd otherwise be retyping every session.</p>
<blockquote><strong>NOTE:</strong> Members inside Claude Code Club share their actual MCP configs for tools like this, including which ones were worth the setup time and which weren't, at https://www.skool.com/claudecodeclub/about. It's $9 a month, or start with the [curriculum](/curriculum) for the structured path through MCP setup first.</blockquote>
<h2>FAQ</h2>
<p><strong>How do I connect Claude Code to Notion?</strong></p><p>Add Notion's official hosted MCP server with claude mcp add notion --transport http https://mcp.notion.com/mcp, then authenticate through the browser OAuth flow that opens on first use. Share the specific Notion pages or databases you want reachable with the connection.</p>
<p><strong>Do I need to generate a Notion API token to connect Claude Code?</strong></p><p>Not for the hosted route, it authenticates through your browser instead. You only need to generate an integration token from notion.so/my-integrations if you choose the self-hosted @notionhq/notion-mcp-server package instead of Notion's hosted server.</p>
<p><strong>Can Claude Code see my entire Notion workspace once connected?</strong></p><p>No. Notion's sharing model is page-level. The MCP connection only sees pages and databases you've explicitly shared with it, the same way sharing works with a teammate, not your full workspace by default.</p>
<p><strong>What's the difference between the hosted and self-hosted Notion MCP server?</strong></p><p>The hosted server at mcp.notion.com is run by Notion and authenticates via browser OAuth, no token to manage. The self-hosted @notionhq/notion-mcp-server package runs locally and needs a NOTION_TOKEN integration secret you generate and manage yourself. Both talk to the same underlying Notion API.</p>
<p><strong>Why can't Claude Code see a specific Notion page after I connected it?</strong></p><p>The page almost always hasn't been shared with the connection yet. Open the page in Notion, check its Share settings, and confirm the integration or connection is listed there, since an unshared page is invisible to the MCP server by design.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code's /design Skill: How to Turn a Brief Into a Working UI</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-design-skill</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-design-skill</guid>
      <pubDate>Tue, 25 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Tools</category>
      <category>Building</category>
      <description><![CDATA[The /design skill turns a written brief into a canvas of editable UI options, then builds the one you pick. It shipped as a research preview in August 2026, and it changes the first hour of a screen redesign from staring at a blank file to choosing between real options.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>/design is a research preview command that brings an artboard-style design workflow into the Claude Code CLI and the Claude Code desktop app. You type /design with a brief, and Claude publishes a canvas of editable UI options called artboards instead of guessing at one layout and showing you code.</li><li>It runs on Pro, Max, Team, and Enterprise plans and needs Claude Code v2.1.233 or later. You review the artboards, pick the one you want, tell Claude which option to implement, and it writes the actual code from there.</li><li>The failure mode is treating the output as finished. Run it through the CCC Artboard Loop: name the constraint in the brief, compare every option before you commit, then review the implementation as a normal diff, the same as any other change Claude makes.</li></ul>
<h2>What Is Claude Code's /design Skill?</h2>
<p>/design is a research preview skill that brings an artboard-based design workflow into Claude Code, in both the CLI and the desktop app. You describe what you want built or redesigned, and instead of writing one version of the UI and hoping it matches what you meant, Claude publishes a canvas of several editable artboards for you to look at and choose between. It runs on Claude Code v2.1.233 or later, on Pro, Max, Team, and Enterprise plans, and it is built on the same artifacts system that already powers shareable Claude Code output.</p>
<p>The shift is small to describe and large in practice. Before this, asking Claude Code to redesign a screen meant it picked one direction and built it, and if that direction was wrong you were editing code to correct a design decision. /design separates those two steps: you compare layouts first, on a canvas, before a single line of implementation code gets written.</p>
<h2>How the /design Workflow Actually Works</h2>
<ol><li>Open the desktop app's Code tab (or the CLI) in a session attached to your project, and type /design followed by a real brief, not just a screen name.</li><li>Claude prints a link to a published canvas. Open it and you see a set of artboards, editable draft layouts for the thing you described.</li><li>Look at each artboard the way you would look at design comps. Nothing is implemented yet, this is still the compare stage.</li><li>Pick the one you want, tweak it on the canvas if you need to, then tell Claude which option to implement.</li><li>Claude writes the actual code for the artboard you chose, and it lands in your project as a normal set of file changes, reviewed the same way you review any Claude Code diff.</li></ol>
<blockquote><strong>NOTE:</strong> The docs' own example prompt is a good template for the brief: describe the redesign in terms of how the screen actually gets used, not just what it should look like. 'Redesign the composer based on what people actually use it for' names a real constraint. 'Make it nicer' does not.</blockquote>
<h2>The CCC Artboard Loop</h2>
<p>We teach members a short discipline for this instead of running /design and shipping whatever comes back. Call it the Artboard Loop, and it is three steps, none of them optional.</p>
<ol><li>Name the constraint in the brief. A vague brief produces artboards that all miss the same thing. State the actual use pattern, the device it has to work on, or the one element that cannot move, before you hit enter.</li><li>Compare before you commit. Open every artboard on the canvas, not just the first one that loads. The point of this workflow is comparison, and skipping straight to the top result throws away the reason to use it.</li><li>Review the implementation like any other diff. Picking an artboard tells Claude what to build, it does not exempt the resulting code from review. Read the diff, run the app, and check it the way you would check a change Claude made without /design.</li></ol>
<blockquote><strong>TIP:</strong> The artboard you pick is a draft, not a spec. Treat the first implementation as a starting point you refine in the same session, the same way you would iterate on any other Claude Code build.</blockquote>
<h2>What It's Actually Good For (and Where It Still Needs You)</h2>
<p>This is a research preview, so the honest scope matters more than the pitch. It is genuinely useful for the moment where you know a screen needs to change but cannot describe the fix in one sentence, or where you have a vague sense of better and no mockup to hand Claude. Publishing three real, comparable options turns a fuzzy request into a decision, which is a faster loop than describing, building, disliking it, and re-describing.</p>
<ul><li>Good for: exploring layout directions fast, getting a non-technical stakeholder to point at an option instead of trying to describe one in words, and unsticking a redesign that has stalled because nobody can agree on the brief.</li><li>Still needs you for: a real design system with locked components, an accessibility pass, and pixel-level brand execution. A research preview is a draft generator, not a design review.</li></ul>
<h2>How This Changes Client Work</h2>
<p>For anyone building client work in Claude Code, the practical win is the canvas itself. Clients rarely have the vocabulary to describe a layout they want, but almost everyone can point at one of three real options and say that one, move that button up. Sending a canvas link instead of a screenshot of one attempt turns a design round into a five-minute decision instead of a back-and-forth email thread. The implementation step after that is exactly like any other Claude Code change: you still own the review, the diff, and the decision to ship it.</p>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club we test new research previews like this against real client screens as soon as they ship, and post what actually held up. Start with the [curriculum](/curriculum) or join us at https://www.skool.com/claudecodeclub/about and bring the screen you would redesign first.</blockquote>
<h2>FAQ</h2>
<p><strong>What is Claude Code's /design skill?</strong></p><p>It's a research preview command that turns a written brief into a canvas of editable UI options called artboards, built on Claude Code's artifacts system. You compare the artboards, pick one, and tell Claude to implement it, which separates choosing a layout from writing the code for it.</p>
<p><strong>Does /design work in the terminal or only in the desktop app?</strong></p><p>Both. It works in the Claude Code CLI and in the Claude Code desktop app's Code tab. The desktop app makes the canvas easier to open and compare since you are already working in a windowed view.</p>
<p><strong>Do I need a paid plan to use /design?</strong></p><p>Yes. It's available on Pro, Max, Team, and Enterprise plans, and it requires Claude Code v2.1.233 or later. Update Claude Code first if the command doesn't show up.</p>
<p><strong>What happens after I pick an artboard?</strong></p><p>You tell Claude which artboard to implement, and it writes the real code for that option into your project as a normal set of file changes. From there it's the same review loop as any other Claude Code diff, read it, run it, and check it before you ship.</p>
<p><strong>Is /design production ready?</strong></p><p>It's a research preview, so treat the output as a strong draft rather than a finished design. It's good at generating real, comparable layout options fast. It doesn't replace an accessibility pass, a locked design system, or a final brand-level review.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Upsell Existing Clients Without It Feeling Like a Pitch</title>
      <link>https://www.claudecodeclub.ai/blog/upsell-existing-clients-without-a-pitch</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/upsell-existing-clients-without-a-pitch</guid>
      <pubDate>Tue, 25 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Agency</category>
      <category>Monetization</category>
      <category>Freelancing</category>
      <description><![CDATA[The upsell that actually lands isn't a new pitch, it's a specific next problem you already found while doing the first job. Here's the Second Ask, the one habit that turns a finished project into a second invoice without ever sounding like a salesperson.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>The upsell that works isn't a new pitch, it's a specific problem you already found while doing the first job, named out loud instead of quietly fixed for free or left for the client to discover later.</li><li>We call this the Second Ask: one sentence, sent once, naming the exact next problem and what fixing it would take. No package, no call, no sales language.</li><li>Timing decides whether it lands. Ask while the first project is still visibly working, not in the same message as the final invoice and not months later when the relationship has gone cold.</li></ul>
<h2>Why Most Agency Upsells Feel Like a Pitch (and Get Ignored)</h2>
<p>Most upsells fail because they show up as a pitch instead of a finding. You finish the project, then send a message about a retainer, a package, or ongoing support, and the client reads it as sales, because it is sales, dressed as a favor. They already said yes once. Asking them to sit through a second version of the same conversation, with a new price attached, is the thing that makes people go quiet.</p>
<p>The client isn't rejecting more work. They're rejecting being sold to twice by someone they already paid. The fix isn't a better pitch, it's not pitching at all.</p>
<h2>The Second Ask</h2>
<p>The Second Ask is the one thing that reliably gets a real upsell to land: name a specific problem you found while doing the first job, in one sentence, with no package attached. Not a menu of services. Not availability for a call. One real thing you noticed, and what it would take to fix it.</p>
<ul><li>It has to be specific. 'I could also help with your marketing' is a pitch. 'Your checkout drops about a third of people at the shipping step, I can see why, want me to fix it' is a finding.</li><li>It has to come from the work you just did. You earned the right to say this because you were in the code, not because you're trying to fill your calendar.</li><li>It has to be optional in tone. State it and stop. Don't chase it with a follow-up asking if they saw your message, that turns a finding back into a pitch.</li></ul>
<blockquote><strong>TIP:</strong> If you can't name a specific next problem, you don't have a Second Ask yet, and sending a generic one anyway is what breaks trust. Wait until you actually see one, even if that means waiting past this project.</blockquote>
<h2>When to Make the Second Ask</h2>
<p>Timing does most of the work here. Ask while the thing you built is still visibly working and the client can feel the value of it, not buried in the same email as the final invoice, and not three months later once the relationship has gone quiet.</p>
<ul><li>Best window: a few days to two weeks after launch, once they've actually used the thing and the win is fresh, but before the invoice email that closes the project.</li><li>Worst window: the same message as the final invoice. That message is doing accounting, not selling, and mixing the two makes the ask read as padding the bill.</li><li>Second worst window: months later, out of nowhere. At that point it reads as a cold pitch from someone who happens to have your email address, not a finding from someone who was just in your system.</li></ul>
<h2>What to Offer Instead of 'More Hours'</h2>
<p>The Second Ask names a problem, not a service tier. Once they say yes, scope it the same way you scoped the first project, as a defined outcome, not open hours. 'More hours available if you need them' asks the client to manage you. A named fix with a price attached asks them to make one decision.</p>
<p>If the same specific problem keeps showing up across different clients after the first job, that's worth turning into its own offer. See [how to turn a one-off client into a monthly retainer](/blog/how-to-turn-a-one-off-client-into-a-monthly-retainer) for what that looks like once it's a pattern instead of a one-off.</p>
<h2>The Exact Message I Send</h2>
<p>This is close to word for word what goes out. Short, specific, and it stops instead of building a case.</p>
<ul><li>Subject or opener names the thing plainly: 'One thing I noticed while I was in the checkout flow.'</li><li>One sentence describing the problem in the client's terms, not yours: what it costs them, not what it is technically.</li><li>One sentence on what fixing it looks like and roughly what it takes.</li><li>A single, low-friction next step: 'Want me to send a quote for that' or 'happy to just do it if you'd rather skip the back and forth.' Then stop typing.</li></ul>
<blockquote><strong>NOTE:</strong> Notice what's missing: no package name, no bullet list of everything you could also do, no urgency. The moment it starts to read like marketing copy, cut it back down to the one sentence that started it.</blockquote>
<h2>Pitch vs the Second Ask</h2>
<table><caption>The habit that gets ignored vs the one that gets a reply</caption><thead><tr><th></th><th>The generic pitch</th><th>The Second Ask</th></tr></thead><tbody><tr><td>What it names</td><td>A service or a package</td><td>One specific problem you actually found</td></tr><tr><td>When it goes out</td><td>Same message as the final invoice, or months later</td><td>A few days to two weeks after launch, while the win is still fresh</td></tr><tr><td>What it asks the client to do</td><td>Evaluate an offer and decide if they need it</td><td>Say yes or no to one clear thing</td></tr><tr><td>Where it comes from</td><td>Your need for more revenue</td><td>The work you were already doing for them</td></tr></tbody></table>
<h2>What Kills an Upsell Before It Starts</h2>
<ul><li>Asking before you've actually delivered the first thing well. An upsell rides on trust you have to earn first, not on being first in line.</li><li>Naming a problem so vague it could apply to any client. That's a tell that you're pitching, not reporting a real finding.</li><li>Chasing the message with a follow-up. One clean ask beats three reminders, and reminders are what turn a finding back into a pitch.</li><li>Discounting to make it land. If the finding is real, it doesn't need a discount to be worth saying yes to. A discount signals you weren't sure it was worth full price either.</li></ul>
<p>If a client's response to a well-timed, specific Second Ask is still a hard no or radio silence, that's useful information on its own, worth reading against the broader signs in [client red flags to watch for](/blog/client-red-flags-to-watch-for) before you invest more in the relationship.</p>
<h2>Try This on Your Next Project</h2>
<p>On your current build, write down the first specific problem you notice that's outside the current scope, the moment you notice it. Don't fix it for free and don't pitch it yet. Hold it until launch, then send the one-sentence version within two weeks.</p>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club we track which Second Asks actually turned into paid follow-on work and which ones went quiet, so members can see real numbers instead of guessing at what lands. Join at https://www.skool.com/claudecodeclub/about for $9 a month, or start with the [curriculum](/curriculum) if you want the pricing and proposal track first.</blockquote>
<h2>FAQ</h2>
<p><strong>How do I upsell an existing client without sounding pushy?</strong></p><p>Name one specific problem you actually found while doing the work, in a single sentence, with no package or sales language attached. Send it once, close to launch while the value of the first project is still visible, and let them respond instead of following up repeatedly.</p>
<p><strong>When is the best time to upsell a client?</strong></p><p>A few days to two weeks after launch, once the client has used the thing you built and the win is still fresh. Avoid bundling it with the final invoice, since that reads as padding the bill, and avoid waiting months, since by then it reads as a cold pitch.</p>
<p><strong>What should I offer instead of 'more hours available'?</strong></p><p>A named fix for a specific problem, scoped and priced the same way you scoped the original project. Open-ended hours ask the client to manage you. A defined outcome asks them to make one decision.</p>
<p><strong>What if I can't think of a next problem to mention?</strong></p><p>Don't send a generic upsell anyway. Wait until you actually notice something specific, even if that means waiting past this project. A vague ask reads as a pitch and costs you more trust than staying quiet.</p>
<p><strong>Should I discount an upsell to make it more likely to land?</strong></p><p>No. If the problem you named is real, it doesn't need a discount to be worth saying yes to. Discounting a well-timed, specific ask signals you weren't confident it was worth full price, which undercuts the exact trust that made the ask land in the first place.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Connect Claude Code to Figma With the Dev Mode MCP Server</title>
      <link>https://www.claudecodeclub.ai/blog/connect-claude-code-to-figma</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/connect-claude-code-to-figma</guid>
      <pubDate>Mon, 24 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>MCP</category>
      <category>Building</category>
      <description><![CDATA[Connecting Claude Code to Figma means turning on Figma's Dev Mode MCP Server and pointing Claude Code at it, so it reads a design's real components, variables, and layout instead of guessing from a screenshot. Here's the setup, what actually transfers cleanly, and the manual check I still run before any of it ships to a client.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Connect Claude Code to Figma by turning on the Dev Mode MCP Server inside the Figma desktop app, then adding it as an MCP server in Claude Code (the official Figma plugin does this in one step). Claude Code then reads a selected frame's real structure - components, variables, spacing, layout - instead of guessing from a picture.</li><li>It only sees what you've selected or linked, not your whole file, and design tokens come through as named variables when the file uses Figma variables, not just approximate colors and pixel values.</li><li>Generated code still needs a manual check before it goes to a client. I run what we call the CCC Design Parity Check inside the club, three quick passes that catch the gaps the MCP connection doesn't close on its own.</li></ul>
<h2>What the Figma Dev Mode MCP Server Actually Does</h2>
<p>The Dev Mode MCP Server is a feature built by Figma, not a community workaround. It runs locally from the Figma desktop app and exposes the structure of a selected frame or file, its components, layout, spacing values, and any design tokens set up as Figma variables, in a format Claude Code can read directly. Point Claude Code at it and it stops guessing at a design from a flattened image and starts working from the actual layer tree.</p>
<p>That's the real difference from the older way of doing this, which was pasting a screenshot into your prompt and asking Claude Code to eyeball the spacing. A screenshot is pixels. The Dev Mode MCP Server hands over structure: this frame is built from a Button component with these variant properties, this color is the token brand/primary-600, this gap is 24 pixels because that's the auto-layout spacing value. Claude Code still has to write the code, but it's no longer reverse-engineering a picture to do it.</p>
<blockquote><strong>NOTE:</strong> The server only exposes what you've selected in Figma or linked via a Dev Mode link, not your entire file. It requires the Figma desktop app to be open and running locally, it isn't a cloud service you connect to from anywhere.</blockquote>
<h2>How to Set It Up in Claude Code</h2>
<ol><li>Open the Figma desktop app, go to your preferences, and turn on the Dev Mode MCP Server. Figma starts it locally on your machine (by default at http://127.0.0.1:3845/sse) as long as the app stays open.</li><li>In Claude Code, install the official Figma plugin, which registers the MCP server connection for you. If you'd rather add it by hand, add an MCP server pointing at that local address in your Claude Code MCP settings instead.</li><li>In Figma, select the frame or layer you want Claude Code to build from, or copy its Dev Mode link from the toolbar.</li><li>In Claude Code, describe what you want built and reference the selection or paste the Dev Mode link. Claude Code pulls the live structure from Figma as part of that turn.</li></ol>
<p>One setup step is worth doing before your first real build: run the design-system-rules generation command once per project. It writes a persistent rules file so every future Claude Code session in that codebase already knows your token names and conventions, instead of you re-explaining them every session. Treat it the same way we treat a CLAUDE.md file, see our [CLAUDE.md templates by project type](/blog/claude-md-templates-by-project-type) for how that file should be structured alongside it.</p>
<blockquote><strong>TIP:</strong> If Claude Code can't see the server at all, it's almost always because the Figma desktop app got closed or the MCP toggle got flipped off after a Figma update. Check that first before you touch your Claude Code config, see [Claude Code MCP server not working](/blog/claude-code-mcp-server-not-working) for the rest of the usual suspects.</blockquote>
<h2>What Actually Transfers Cleanly vs What You Still Have to Check</h2>
<p>The MCP connection closes most of the gap between a design file and working code, but not all of it. Knowing which half you're still responsible for is what keeps a Figma-sourced build from surprising a client later.</p>
<table><caption>What the Dev Mode MCP Server hands off</caption><thead><tr><th>Transfers cleanly</th><th>You still have to check</th></tr></thead><tbody><tr><td>Component structure and hierarchy</td><td>Custom fonts not installed on the build machine</td></tr><tr><td>Spacing and layout values from auto-layout</td><td>Interaction and hover/focus states beyond what's drawn</td></tr><tr><td>Colors and type styles set up as Figma variables</td><td>Colors picked as raw hex with no variable behind them</td></tr><tr><td>The exact frame or selection you link</td><td>Any breakpoint the design file doesn't actually show</td></tr></tbody></table>
<p>That last row catches people the most. A Figma file usually shows one frame at one width. The MCP server hands over exactly that frame's structure, it doesn't invent a mobile layout that was never designed. If the client needs a responsive build, say so in your prompt and expect to review Claude Code's judgment calls on the breakpoints the design never specified.</p>
<h2>The CCC Design Parity Check</h2>
<p>Before anything built from a Figma reference goes to a client, I run three passes. It takes ten minutes and it's caught more mismatches than any other single habit in this workflow.</p>
<ol><li>Side by side, zoomed in. Open the Figma frame and the running build at the same zoom level and check spacing and alignment directly against each other, not from memory.</li><li>Token check, not color check. Open the generated code and confirm it's referencing your actual variable names (brand/primary-600) rather than a hardcoded hex value that happens to look close. A hardcoded fallback breaks the first time the client updates their brand color in Figma.</li><li>Test at a second width even if the design only showed one. Claude Code made layout decisions somewhere between the designed frame and a phone screen. Find out what they were before the client does.</li></ol>
<blockquote><strong>WARNING:</strong> Skipping the token check is the mistake I see most. The build looks identical to the design in a screenshot, but it's using a one-off hex value instead of the design system's actual variable, so it quietly drifts the next time the client changes their palette.</blockquote>
<h2>Where This Fits in a Client Handoff</h2>
<p>This connection earns its place the moment a client hands you an actual Figma file instead of a PDF or a set of screenshots. It's the fastest way I know to go from that file to a first working pass, and it removes almost all of the manual pixel-measuring that used to eat the first hour of a build. It doesn't replace a real project brief, it feeds one, see [how to write a project brief for Claude Code](/blog/how-to-write-a-project-brief-for-claude-code) for how I combine a linked Figma frame with the rest of the scope before I start building.</p>
<h2>When Not to Bother With It</h2>
<p>Skip the setup on a simple one-off, or when the client only has a screenshot or a PDF and no live Figma file at all. Pasting an image straight into your prompt still works fine for a landing page or a small component, see [how to build a landing page with Claude Code](/blog/build-a-landing-page-with-claude-code) for that path. Reach for the MCP server when there's a real design system behind the file, tokens, reusable components, multiple frames, the kind of build where structure actually matters more than a single picture.</p>
<blockquote><strong>NOTE:</strong> We walk members through the full Figma-to-Claude-Code setup live inside Claude Code Club, including the design-system-rules step most people skip. Join for 9 dollars a month at claudecodeclub.ai and bring your next client file.</blockquote>
<h2>FAQ</h2>
<p><strong>How do I connect Claude Code to Figma?</strong></p><p>Turn on the Dev Mode MCP Server in the Figma desktop app's preferences, then add it as an MCP server in Claude Code, either by installing the official Figma plugin or by pointing your MCP settings at the local address Figma exposes. Select a frame in Figma, then reference that selection or its Dev Mode link in your Claude Code prompt.</p>
<p><strong>Does Claude Code see my whole Figma file once it's connected?</strong></p><p>No. The Dev Mode MCP Server only exposes what you've selected in Figma or linked directly, not your entire file or workspace. It also requires the Figma desktop app to stay open, since the server runs locally on your machine rather than in the cloud.</p>
<p><strong>Will the code Claude Code generates from Figma match the design exactly?</strong></p><p>Close, but not automatically perfect. Component structure, spacing, and any values set up as Figma variables transfer cleanly. Custom fonts not installed locally, interaction states the design never drew, and breakpoints beyond the one frame you linked still need a manual pass, which is what the CCC Design Parity Check in this post is for.</p>
<p><strong>Do I need a paid Figma plan to use the Dev Mode MCP Server?</strong></p><p>The server is a feature of the Figma desktop app itself rather than a separate paid add-on, but access to Dev Mode has historically depended on your Figma plan and role. Check your current plan's Dev Mode access in Figma directly before you build a workflow around it, since Figma changes plan features over time.</p>
<p><strong>What if Claude Code can't see the Figma MCP server?</strong></p><p>Confirm the Figma desktop app is open and the Dev Mode MCP Server toggle is still on, that's the most common cause after a Figma update resets it. If it's still not connecting, work through the rest of the usual causes in our guide to a Claude Code MCP server not working.</p>]]></content:encoded>
    </item>
    <item>
      <title>Micro-SaaS vs Client Work: How I Decide What to Build With Claude Code</title>
      <link>https://www.claudecodeclub.ai/blog/micro-saas-vs-client-work-with-claude-code</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/micro-saas-vs-client-work-with-claude-code</guid>
      <pubDate>Mon, 24 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Agency</category>
      <category>Monetization</category>
      <category>Freelancing</category>
      <description><![CDATA[Client work with Claude Code pays you now for a problem someone else already validated. A micro-SaaS pays you later, if at all, for a problem you have to validate yourself. The choice isn't about which one Claude Code can build faster, it can build either. It's about who has to go find the buyer.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Client work gets you paid the same month for a problem someone else already confirmed is worth solving. A micro-SaaS only pays you once you've found people willing to pay for it yourself, which can take a lot longer than the build.</li><li>Claude Code has made the build itself fast either way, so build speed stopped being the real decision. The actual dividing line is distribution: client work borrows the client's audience, a micro-SaaS makes you find your own.</li><li>I run new ideas through a short checklist before committing a week of Claude Code sessions to either path, what we call the CCC Build-or-Bill Test inside the club.</li></ul>
<h2>The Actual Difference Isn't Build Speed Anymore</h2>
<p>Claude Code closes most of the build-time gap between a client project and a micro-SaaS. A working first version of either one is realistically a few focused sessions away, not a few months. That changes which question actually matters when you're deciding what to spend a week on. It's no longer can I build this fast enough, it's who is going to pay for it, and how hard is it going to be to find them.</p>
<p>Client work answers that question before you start: someone already has the problem, already has budget, and already agreed to pay you to solve it. A micro-SaaS answers it after you ship: you're betting that a wider group of strangers has the same problem and will pay a recurring price for your specific answer to it. Same builder, same tool, very different bet.</p>
<h2>What Client Work Gets You</h2>
<ul><li>Cash the same month, usually against a deposit or a milestone, not a hope that strangers convert.</li><li>Scope someone else already defined. You're solving a problem a real person described to you, not guessing what a market wants.</li><li>Distribution you didn't have to build. The client already has the audience, the internal team, or the customer base your work reaches.</li><li>A ceiling tied to your hours or your team size, since revenue only grows when you take on more work or raise your rate.</li></ul>
<p>If you haven't already moved off pricing by the hour, that ceiling is the first thing to fix regardless of which path you're weighing, see [why I stopped charging hourly for AI builds](/blog/stopped-charging-hourly-for-ai-builds) for how that shift changes the math on client work specifically.</p>
<h2>What a Micro-SaaS Gets You</h2>
<p>A micro-SaaS can pay you while you sleep, once it works, because revenue stops being tied one-to-one to your hours. That's the appeal, and it's real. What it costs you is everything client work handed you for free: you have to find the buyers yourself, you own support and uptime with no one else covering it, and there's a real chance you build the whole thing and nobody pays for it.</p>
<blockquote><strong>WARNING:</strong> Claude Code lowering the cost of the build doesn't lower the cost of finding your first paying users. That part hasn't gotten any faster, and it's usually the part that actually determines whether a micro-SaaS works. Don't let a fast build convince you distribution is solved too.</blockquote>
<h2>The CCC Build-or-Bill Test</h2>
<p>Before I let a new idea eat a week of Claude Code sessions, I run it through four questions. It's not a formula, it's a way to catch myself before I build something nobody asked for, or turn down client cash to chase a hunch.</p>
<ol><li>Has a version of this come up more than once? One client asking for something is a client request. Three different clients asking for a version of the same thing is a pattern, and a pattern is the strongest signal I've found for a real micro-SaaS candidate.</li><li>Do I already have a way to reach buyers without paying for every one of them? An audience, a community, a referral network. If the honest answer is no, budget real time for distribution, not just the build.</li><li>Am I willing to still be maintaining this in a year, with no client relationship forcing me to? A SaaS doesn't end when you ship it, someone has to keep answering support tickets and keeping it running.</li><li>Would I still take this project if it paid nothing for the first 90 days? If the answer is a hard no, that's a client-work problem, not a bet you're actually willing to make.</li></ol>
<blockquote><strong>TIP:</strong> Question one does most of the work. If an idea only ever came from a single client, it's client work, price it and move on. The moment the same request shows up a third time across unrelated clients, that's worth a real look as its own product.</blockquote>
<h2>The Hybrid Most Builders in the Club Actually Run</h2>
<p>Very few people I know pick one lane and stay there. The common pattern is client work funding the runway while a short list of repeated requests gets tracked on the side, and only the ones that clear the Build-or-Bill Test above turn into an actual product attempt. That keeps income steady while you find out, cheaply, whether any given idea has real pull beyond the one client who first asked for it.</p>
<p>If you're still building a client roster to fund that runway, see [how to pick a niche for your AI agency](/blog/how-to-pick-a-niche-for-your-ai-agency). A tight niche also happens to be where repeated requests show up fastest, since you're solving close variations of the same problem for everyone in it.</p>
<h2>What Changes About Pricing and Billing</h2>
<table><caption>Client project vs micro-SaaS, on the money side</caption><thead><tr><th></th><th>Client project</th><th>Micro-SaaS</th></tr></thead><tbody><tr><td>When you get paid</td><td>Deposit plus milestones, defined up front</td><td>Only after someone signs up and pays, with no guarantee anyone does</td></tr><tr><td>What you're pricing</td><td>A fixed scope of work for one buyer</td><td>A recurring price a market has to agree is worth it</td></tr><tr><td>Who owns support after launch</td><td>Usually the client's team, or a separate retainer</td><td>You, indefinitely, unless you build a support plan on purpose</td></tr><tr><td>Billing you have to build</td><td>An invoice</td><td>Actual subscription billing, plan tiers, and failed-payment handling</td></tr></tbody></table>
<p>That last row is real engineering work, not an afterthought. If a Build-or-Bill Test candidate clears the bar, see [how to add Stripe payments to your Claude Code build](/blog/add-stripe-payments-to-claude-code) for what actually needs to exist before you can charge anyone on a recurring basis.</p>
<h2>Run the Test on Your Next Idea</h2>
<p>Next time a client asks for something and it feels familiar, write it down instead of just building it and moving on. After the third time you write down a version of the same request, run it through the four questions above before you decide what it is.</p>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club we track which member-built ideas started as a single client request and turned into something bigger, and which ones stayed exactly the client work they started as. Join for 9 dollars a month at claudecodeclub.ai and bring the idea you keep getting asked for.</blockquote>
<h2>FAQ</h2>
<p><strong>Is a micro-SaaS a better use of Claude Code than client work?</strong></p><p>Neither is inherently better, they're different bets. Client work pays you the same month for a problem someone else already validated. A micro-SaaS only pays once you've found people willing to pay for it yourself, which can take far longer than building it, since Claude Code has made the build itself fast for either path.</p>
<p><strong>How do I know if a client request should become a micro-SaaS?</strong></p><p>Watch for the same request showing up across multiple, unrelated clients rather than just one. A single client asking for something is a client-work problem. The same underlying request appearing a third time across different clients is the strongest signal that it might work as its own product, which is question one of the CCC Build-or-Bill Test in this post.</p>
<p><strong>Does Claude Code make it easier to run both client work and a micro-SaaS at once?</strong></p><p>It makes the build side of both faster, which is why a hybrid approach is common among builders in the club: client work funds the runway while repeated requests get tracked on the side and only the ones that clear a real checklist turn into a product attempt.</p>
<p><strong>What's the biggest risk of switching from client work to a micro-SaaS?</strong></p><p>Underestimating distribution. A fast build with Claude Code can create the illusion that finding paying customers will be just as fast. It usually isn't, since the client-work path hands you an audience for free and a micro-SaaS doesn't.</p>
<p><strong>What does a micro-SaaS need that a client project usually doesn't?</strong></p><p>Real subscription billing (plan tiers, recurring charges, failed-payment handling), ongoing support with no client relationship forcing it, and a way to reach buyers you don't already have a relationship with. All three are extra work beyond what a typical client project requires.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code on the Web: How Browser Sessions Work Without the Desktop App</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-on-the-web</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-on-the-web</guid>
      <pubDate>Sun, 23 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Tools</category>
      <category>Getting Started</category>
      <description><![CDATA[Claude Code now runs at claude.ai/code as a cloud session that keeps working after you close the tab and that you can check from your phone. Here's what it actually does, how it differs from the desktop app, and the three questions I ask before sending a task to the cloud instead of running it locally.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Claude Code on the web runs at claude.ai/code as a cloud session on Anthropic-managed infrastructure. It keeps running after you close the browser tab, and you can check on it, comment on the diff, or send a follow-up from the Claude mobile app.</li><li>It's currently a research preview for Pro, Max, and Team users, and for Enterprise users with premium seats or Chat + Claude Code seats - not yet the default way most people should build, but worth knowing when it earns its place.</li><li>The desktop app stays the default in the club because it gives you the full diff view, browser pane, and local control in one window. Reach for a cloud session when the task doesn't need you watching, not as a replacement for how you build day to day.</li></ul>
<h2>What Claude Code on the Web Actually Is</h2>
<p>Claude Code on the web is the browser version of Claude Code. It lives at claude.ai/code, and instead of running on your laptop, the task runs in a cloud session on Anthropic-managed infrastructure, or on your organization's own infrastructure if that's been set up. The practical difference from typing claude in a terminal or opening the desktop app's Code tab is where the work happens: not on the machine in front of you, but on a virtual machine you can close the lid on.</p>
<p>The detail that actually changes how you work is persistence. A cloud session keeps running after you close the browser tab or shut your laptop. You can open the Claude mobile app later, see what it did, leave a comment on the diff, or send it a follow-up message, all without your laptop being open or even in the room.</p>
<blockquote><strong>NOTE:</strong> As of this writing it's a research preview, open to Pro, Max, and Team users, plus Enterprise users on premium or Chat + Claude Code seats. Preview features move fast, and details here can shift, so check code.claude.com/docs for the current state before you build a workflow around it.</blockquote>
<h2>How It's Different From the Desktop App's Code Tab</h2>
<p>The two aren't competing products, they're the same underlying session reached from different places. Here's what actually changes depending on where you start it.</p>
<table><caption>Where a task actually runs</caption><thead><tr><th></th><th>Desktop app (Code tab)</th><th>Claude Code on the web</th></tr></thead><tbody><tr><td>Runs on</td><td>Your own machine</td><td>A cloud VM (Anthropic's infrastructure, or your org's self-hosted environment)</td></tr><tr><td>Needs installed</td><td>Yes, the Claude desktop app</td><td>No. Sign in at claude.ai/code in any browser</td></tr><tr><td>Survives closing the window</td><td>No, the session pauses with your machine</td><td>Yes, the session keeps running</td></tr><tr><td>Where you can check on it</td><td>Only that machine</td><td>claude.ai/code, the terminal, or the Claude mobile app</td></tr><tr><td>Best for</td><td>Active building with a diff view and browser pane open in front of you</td><td>Tasks you don't need to watch happen</td></tr></tbody></table>
<p>If you already use the desktop app, this isn't a separate tool to learn from scratch. The Code tab's Cloud environment option starts the same kind of cloud session, see our [desktop app guide](/blog/claude-code-desktop-app) for how that fits into the three-tab workflow we teach. The web version at claude.ai/code is the same underlying session, reached from a browser instead of the app.</p>
<h2>How to Start One, From the Browser or Your Terminal</h2>
<p>Getting a repository connected is the only real setup step, and there are two ways to do it. During web onboarding at claude.ai/code, you can authorize the Claude GitHub App, which is also what unlocks auto-fix on pull requests (more on that below). Or, if you already work from a terminal, run /web-setup inside Claude Code to sync your existing gh CLI login instead, no separate app to install.</p>
<ul><li>From claude.ai/code: sign in, connect GitHub, pick a repository, and describe the task.</li><li>From your terminal: run claude --cloud &quot;describe the task&quot; to send it to the cloud while you keep working locally. Use /tasks to check progress without leaving the terminal.</li><li>Bring it back: run claude --teleport (or /teleport inside a session) to pull a cloud session into your terminal and keep going locally, once its branch is pushed and your working directory is clean.</li></ul>
<blockquote><strong>TIP:</strong> A cloud session clones your GitHub remote at your current branch, not your local uncommitted changes. Push first, or the cloud session won't see the work you were just doing. This tripped me up the first time I tried it.</blockquote>
<h2>The Off-Desk Test: When I Actually Send a Task to the Cloud</h2>
<p>I still build most of my day in the desktop app, with the diff view and browser pane open where I can watch each change land. Before I reach for a cloud session instead, I run what we call the Off-Desk Test inside the club, three short questions, and if I answer yes to at least two, it goes to the cloud.</p>
<ol><li>Am I about to be away from this machine? A commute, a client call, an overnight run. If yes, the cloud session keeps working while the desktop app would just sit idle.</li><li>Is the work already fully pushed to a branch? Cloud sessions clone from your GitHub remote, not your uncommitted local state, so anything still sitting in your working directory needs to be committed and pushed first.</li><li>Can I review the result from wherever I end up? The diff view and mobile app cover reading and commenting, but if the task needs a full local dev environment to actually verify, running it locally is the shorter path.</li></ol>
<p>The Off-Desk Test isn't about which tool is better. It's about matching where a task runs to whether you're actually going to be sitting in front of it. Most client work still belongs in the desktop app, in Manual or Accept Edits mode, with you watching. The cloud is for the parts of the day you're not at your desk anyway.</p>
<h2>What You Get in a Cloud Session</h2>
<ul><li>A diff indicator on the session, something like +42 -18, that opens into a full diff view, the same review habit as any local session.</li><li>Auto-fix on pull requests, if you've installed the Claude GitHub App: Claude watches CI checks and review comments on a PR and pushes a fix when it's confident, or asks you when a comment is ambiguous.</li><li>Sharing controls. Team and Enterprise accounts can set a session to Private or Team-visible; Pro and Max accounts can set Private or Public, and Public means any signed-in claude.ai user can open it. Check a session for credentials or client-sensitive code before you flip that toggle.</li><li>Sessions expire after a period of inactivity and the VM gets reclaimed, but reopening it from claude.ai/code spins up a fresh VM with your conversation history restored, so nothing you did is actually lost.</li></ul>
<blockquote><strong>WARNING:</strong> That sharing default is worth pausing on for client work. A Public session on a Pro or Max account is visible to any logged-in claude.ai user, and it can contain code and credentials from a private repository. If you're building for a client, set sharing to Private and only widen it on purpose.</blockquote>
<h2>The Self-Hosted Option, If Your Org Needs It</h2>
<p>One more layer worth knowing exists, even if you'll rarely touch it as a solo builder: organizations on Team or Enterprise plans can route these same cloud sessions onto their own infrastructure instead of Anthropic's, through a public beta called self-hosted environments. It's off by default, and turning it on is a real infrastructure commitment, not a settings toggle. If a client or a bigger agency you work with asks about it, that's a pricing and scoping conversation of its own, we walk through exactly how to price that request in [how to price a Claude Code build when the client wants it self-hosted](/blog/pricing-self-hosted-claude-code-for-clients).</p>
<h2>Try It on One Task This Week</h2>
<p>Pick one task you'd normally start right before leaving your desk, something you'd otherwise just let sit until you're back. Push your branch, run claude --cloud with the task described in one clear sentence, and check it from your phone before you sit back down.</p>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club we test every new Claude Code surface as it ships and share what's actually worth building a habit around versus what's still rough. Join for 9 dollars a month at claudecodeclub.ai.</blockquote>
<h2>FAQ</h2>
<p><strong>What is Claude Code on the web?</strong></p><p>It's the browser version of Claude Code at claude.ai/code. Instead of running on your own machine, the task runs as a cloud session on Anthropic-managed infrastructure (or your organization's own infrastructure, if self-hosted environments are set up). The session keeps running after you close the browser, and you can check on it, review the diff, or send a follow-up from the Claude mobile app.</p>
<p><strong>Do I need the desktop app to use Claude Code on the web?</strong></p><p>No. You can sign in at claude.ai/code in any browser and connect a GitHub repository without installing anything. If you already use the desktop app or terminal, the same cloud sessions are also reachable from there, including the claude --cloud command.</p>
<p><strong>Does closing my laptop stop a cloud session?</strong></p><p>No, that's the actual difference from a local session. A cloud session keeps running after you close the browser tab or shut your laptop. You can check its progress later from claude.ai/code, your terminal, or the Claude mobile app.</p>
<p><strong>Is Claude Code on the web the same as the self-hosted option?</strong></p><p>No, they're different layers. Claude Code on the web is the browser entry point at claude.ai/code, and by default those sessions run on Anthropic's own infrastructure. Self-hosted environments is a separate, opt-in beta for Team and Enterprise organizations that routes those same cloud sessions onto infrastructure the organization runs itself.</p>
<p><strong>Should I use the cloud version instead of the desktop app for client work?</strong></p><p>Not by default. The desktop app still gives you the full diff view, browser pane, and local review in one window, which is where most client work should happen. Reach for a cloud session when you genuinely won't be at your machine to watch it, not as a replacement for the review habits you'd use locally.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Price a Claude Code Build When the Client Wants It Self-Hosted</title>
      <link>https://www.claudecodeclub.ai/blog/pricing-self-hosted-claude-code-for-clients</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/pricing-self-hosted-claude-code-for-clients</guid>
      <pubDate>Sun, 23 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Agency</category>
      <category>Monetization</category>
      <category>Clients</category>
      <description><![CDATA[A client asking for 'self-hosted Claude Code' isn't asking for a checkbox. It's asking you to stand up and maintain infrastructure their compliance team wants, and that's scope your normal build rate was never priced to cover. Here's how I separate the two conversations.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Self-hosted Claude Code environments run on the client's own infrastructure instead of Anthropic's, and setting one up means building and operating a runner fleet, not flipping a setting. That's real, ongoing work your build rate wasn't priced to cover.</li><li>It's currently a public beta available only on Team and Enterprise plans, off by default, and Anthropic's own guidance is that most teams don't need it. Only quote it when a client has an actual network or compliance reason, not because it sounds more secure.</li><li>I price it as a separate infrastructure line, either a fixed setup fee plus a maintenance retainer or an hourly DevOps rate, kept apart from the build itself so a client can see exactly what the extra requirement costs.</li></ul>
<h2>What a Client Is Actually Asking For</h2>
<p>When a client says they want Claude Code self-hosted, they're asking you to run the software that executes Claude Code's cloud sessions on infrastructure they control instead of on Anthropic's. That's a real, separate system: a runner process that lives on hosts inside their network, registered against an environment their organization sets up in admin settings. It is not a checkbox on your side, and it's not something you can quote at your normal build rate.</p>
<p>The distinction matters because the phrase self-hosted gets used loosely. Some clients mean this specific feature. Others mean I don't want you sending our code to a chatbot, which is a much smaller ask you can usually answer without touching infrastructure at all, see [is Claude Code safe for client work](/blog/is-claude-code-safe-for-client-work) for how I handle that version of the question. Find out which one you're actually being asked before you price anything.</p>
<h2>What Actually Changes vs. a Normal Build</h2>
<table><caption>Anthropic-hosted vs self-hosted, on the client's side</caption><thead><tr><th></th><th>Anthropic-hosted (default)</th><th>Self-hosted environment</th></tr></thead><tbody><tr><td>Who runs the infrastructure</td><td>Nobody, it just works</td><td>The client's org (or you, if you're the one setting it up)</td></tr><tr><td>What's needed</td><td>Nothing extra</td><td>A runner fleet: hosts, a runner image, network egress rules, ongoing operation</td></tr><tr><td>What stays on their infrastructure</td><td>Nothing, everything runs on Anthropic's side</td><td>Repository checkouts, build artifacts, and secrets</td></tr><tr><td>What still leaves their network</td><td>Everything</td><td>The conversation itself - prompts, responses, tool results - still goes to Anthropic's API for the model to run</td></tr><tr><td>Billing</td><td>Standard Claude Code usage</td><td>Same standard Claude Code usage, plus the infrastructure cost</td></tr></tbody></table>
<p>That last row is the one clients miss, and it's the one you need to say out loud before you quote anything. Self-hosting doesn't remove Anthropic from the picture. The model still runs on Anthropic's API, so the actual conversation, meaning the prompts and responses, still leaves their network for inference. What self-hosting buys them is that the code itself, the checkouts and build artifacts and secrets, never leaves infrastructure they control. If a client is picturing something fully air-gapped, correct that before you scope the work, not after you deliver it.</p>
<h2>Why a Client Would Actually Need This</h2>
<p>There are legitimate reasons to ask for it, and knowing them is how you tell a real requirement from a client who just heard the phrase somewhere and liked the sound of it.</p>
<ul><li>Their sessions need to reach internal services, databases, or private registries without exposing them to the public internet.</li><li>They want compilers, internal CLIs, or proprietary SDKs pre-installed so every session starts ready to build against their own stack.</li><li>A compliance or security policy specifically requires that repository checkouts and build artifacts stay on infrastructure they control.</li></ul>
<p>If none of those apply, don't sell it. Even Anthropic's own guidance is blunt about this: most teams are better served by the hosted default, which needs no infrastructure to run or maintain. Talking a client into paying for infrastructure they don't need is the kind of sale that comes back to bite you in month three, when nobody on their side wants to own the runner fleet you built.</p>
<h2>The Infra Line: How I Split the Quote</h2>
<p>This is the rule I use inside the club, and it's simple: the build is one line item, and where it runs is a separate one. I call it the Infra Line, the point in a proposal where what I'm building stops and what it takes to run this on your infrastructure starts. Everything on the build side of that line is priced the way I'd price any other project. Everything on the infrastructure side gets its own number, because it's a different kind of work with a different kind of risk.</p>
<p>Concretely, standing up a self-hosted environment means someone builds and maintains a runner image, decides how the fleet scales, configures network egress and git credentials, and keeps it running as Claude Code's own requirements change. That's DevOps work. If you're the one doing it, price it as DevOps work, not as a few extra hours tacked onto a build estimate.</p>
<ol><li>Quote the build normally, on whatever pricing model you already use for the actual application work.</li><li>Quote the infrastructure separately, either as a fixed setup fee for standing up the runner and environment, or an hourly DevOps rate if the client's network is complicated enough that you can't scope it tightly up front.</li><li>Add an ongoing line if you're the one keeping it running. A self-hosted environment isn't set up once and forget it, runner images need updates, capacity needs adjusting as usage grows, and someone has to be the person who gets paged when a runner stops picking up sessions.</li></ol>
<blockquote><strong>TIP:</strong> Say the Infra Line out loud on the call, not just in the line items. The build is X. Running it on your own infrastructure instead of the default is a separate Y, because that's a different piece of work with its own maintenance. Said that plainly, most clients nod and move on. Said vaguely, it reads like padding.</blockquote>
<h2>What I Actually Say When a Client Asks For This</h2>
<p>I don't lead with a price. I lead with the question that tells me whether they need it at all: what's the specific reason you need this self-hosted, versus the standard setup? If they have a real answer, network access, internal tooling, or a compliance requirement, I scope the infrastructure work properly and quote it as its own line. If the answer is vague, general unease about AI tools, or something they read once, I walk them through what self-hosting actually changes and let them decide with the full picture instead of the buzzword.</p>
<blockquote><strong>NOTE:</strong> The clients who genuinely need this almost always have a compliance or security team who can answer the specific-reason question in one sentence. If nobody on their side can answer it, that's your signal the standard, Anthropic-hosted setup is the right call, and you've just saved both of you a scoping headache.</blockquote>
<h2>Put This in the Contract, Not Just the Quote</h2>
<p>Whatever you agree, write it down as its own scope item, separate from the build. Name who owns ongoing maintenance of the runner fleet once the project ships, because that's the question that causes friction later if it's left implicit. See [what to put in an AI project contract](/blog/what-to-put-in-an-ai-project-contract) for the rest of what belongs in there alongside it.</p>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club we share the actual line-item language members use when a client's ask goes beyond a standard build, including the self-hosted conversation above. Join for 9 dollars a month at claudecodeclub.ai and bring the scope-creep question you're sitting on.</blockquote>
<h2>FAQ</h2>
<p><strong>What does self-hosted Claude Code actually mean?</strong></p><p>It means the client's organization runs the runner process that executes Claude Code's cloud sessions on their own infrastructure, instead of those sessions running on Anthropic's infrastructure by default. It's a public beta available on Team and Enterprise plans, off by default, and setting it up means building and maintaining a runner fleet, not flipping a toggle.</p>
<p><strong>Does self-hosting stop code from ever leaving the client's network?</strong></p><p>No, and this is the correction to make before you quote anything. Repository checkouts, build artifacts, and secrets stay on the client's infrastructure, but the conversation itself, the prompts and responses, still goes to Anthropic's API because that's where the model runs. If a client is picturing something fully air-gapped, self-hosting doesn't get them there on its own.</p>
<p><strong>How should I price a self-hosted setup for a client?</strong></p><p>Separate it from the build entirely, what I call the Infra Line. Quote the application build the way you normally would, then price the infrastructure work, the runner image, network configuration, and ongoing maintenance, as its own line, either a fixed setup fee or a DevOps hourly rate. Don't fold it into your standard build estimate.</p>
<p><strong>Should every security-conscious client get a self-hosted setup?</strong></p><p>No. Anthropic's own guidance is that most teams are better served by the standard hosted setup, which needs no infrastructure to run. Ask what the specific reason is before you scope anything, real network access needs, internal tooling requirements, or a compliance policy are legitimate reasons. General unease about AI tools usually isn't, and it's a smaller conversation you can answer without touching infrastructure at all.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Refactor Code With Claude Code Without Breaking It</title>
      <link>https://www.claudecodeclub.ai/blog/how-to-refactor-code-with-claude-code</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/how-to-refactor-code-with-claude-code</guid>
      <pubDate>Sat, 22 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Workflows</category>
      <category>Building</category>
      <description><![CDATA[Refactoring is the one job where an agent can produce a beautiful diff that quietly changes what your app does. The fix is not a better prompt. It is a fence built before the first line moves, and a refactor cut into pieces small enough to check.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>To refactor code with Claude Code safely, build the fence first: a passing test you trust, a clean git state with everything committed, and one written sentence defining what behaviour must not change. Then refactor one seam at a time and run the test after each.</li><li>The failure mode is not bad code. It is a refactor that silently becomes a rewrite. Claude Code will happily improve things you did not ask it to touch, and those improvements are where behaviour changes hide.</li><li>Use the Fence-First Refactor and keep every diff small enough that you can read it in one sitting. A refactor you cannot review is a refactor you cannot trust, no matter how good it looks.</li></ul>
<h2>How Do You Refactor Code With Claude Code?</h2>
<p>Build the fence before you move anything. Commit your current work so the tree is clean, get one test passing that exercises the code you are about to change, and write a single sentence saying what behaviour must be identical afterwards. Then open the Claude Code desktop app, describe the one structural change you want, and refuse everything else. Run the test after each step. Commit after each step. That loop is the whole method, and it is boring on purpose.</p>
<p>Refactoring is the task where agent speed hurts you most. Writing new code has an obvious pass or fail at the end: the feature works or it does not. A refactor has no such signal. The app still runs, the code reads better, the diff looks professional, and the one edge case that used to be handled by a strange-looking conditional is now gone. You find out three weeks later. Everything below exists to make that outcome visible while it is still cheap.</p>
<h2>The Fence-First Refactor</h2>
<p>The Fence-First Refactor is the pattern we teach for this, and the name is the instruction. You do not move furniture before you know where the walls are. The fence is three things, all built before you write the first prompt, and each one takes under five minutes.</p>
<ol><li>A clean git state. Everything committed, nothing staged, a named branch for the refactor. This is what makes an unlimited number of retries free, and it is the single highest-value habit in agent-assisted work.</li><li>A green test that touches the code. It does not have to be elegant. It has to fail if the behaviour changes. One test that calls the function with a realistic input and asserts the exact output beats a suite that only checks the file imports.</li><li>A one-sentence contract. Write it in the prompt: the public function signatures stay identical and the API response for an existing order stays byte for byte the same. If you cannot write that sentence, you do not yet know what you are protecting.</li></ol>
<p>The contract sentence is the piece people skip and the piece that does the most work. It converts a vague instruction into a checkable one, and it gives you something concrete to hold the finished diff against. It also gives Claude Code a boundary it can reason about instead of guessing at your intent from the shape of the code.</p>
<blockquote><strong>TIP:</strong> If the code has no test at all, write the test with Claude Code first, in a separate commit, before any refactoring starts. That commit is not overhead. It is the only thing standing between you and a silent behaviour change, and the [test-driven approach](/blog/claude-code-test-driven-development) is worth reading before you start.</blockquote>
<h2>Refactoring Is Not Rewriting, and Claude Code Will Blur the Line</h2>
<p>A refactor changes structure and leaves behaviour untouched. A rewrite changes both. Claude Code is extremely good at rewriting and it does not always announce the switch, because from inside the task both look like improving the file. You ask it to extract a function and it also renames three variables, converts a loop to a map, adds a null check that was not there, and removes a branch it judged unreachable. Four of those five are fine. The unreachable branch was reachable on Sundays.</p>
<ul><li>Named scope in the prompt. Say what may change and add the words: change nothing else, even if you see something worth improving.</li><li>Ask for the list first. Have it read the file and list the changes it would make, ranked, before it edits anything. You pick one. This is what [plan mode](/blog/claude-code-plan-mode) is for and it costs you one extra exchange.</li><li>Separate commits for separate intents. Structural moves in one commit, behaviour fixes in another, formatting in a third. A mixed commit is unreviewable and it hides the one line that mattered.</li><li>Treat every removal as suspicious. Additions are easy to evaluate. Deletions are where the behaviour lives, and a deleted guard clause looks exactly like a deleted redundancy in a diff.</li></ul>
<p>There is a version of this that is not the agent's fault. If your prompt says clean up this file, you have asked for a rewrite and you will get one. The word refactor carries a precise meaning in your head and a fuzzy one in a sentence, so replace it with the actual operation: extract, inline, rename, move, split, or deduplicate. One verb, one target, one commit.</p>
<h2>Split the Refactor Into Seams</h2>
<p>A seam is a place where the code can be cut without touching anything on the other side. Refactoring seam by seam is what turns an unreviewable 900-line diff into six diffs you can actually read. Find the seams before you start and the whole job becomes a sequence of small, verifiable moves rather than one long act of faith.</p>
<ul><li>Extract the pure logic first. Anything that takes inputs and returns outputs with no side effects moves cleanly and is trivial to test once it is out.</li><li>Move the input and output edges next. Parsing, validation, and serialisation are usually tangled into the middle and they are the second easiest thing to pull free.</li><li>Leave the stateful core for last. Anything that writes to a database, mutates shared state, or fires an external call is where the real risk is, and by the time you reach it the surrounding code is simple enough to read.</li><li>Stop at the first surprise. If a move requires a change you did not predict, that is information about the system, not an obstacle. Commit what works, then investigate.</li></ul>
<p>One seam per session is a good default for anything unfamiliar. Long sessions accumulate context that stops being relevant, and a refactor conversation that started with the parser is a poor place to discuss the database layer. Clear the session between seams and let the commit history carry the memory instead, which is the habit behind [Claude Code context management](/blog/claude-code-context-management).</p>
<h2>The Prompt That Keeps a Refactor Honest</h2>
<p>A good refactor prompt names the operation, the target, the contract, and the verification. Four parts, one message, no ambiguity about what counts as done. Here is the shape, and it works whether the target is a 40-line function or a service class nobody has opened in a year.</p>
<ol><li>The operation. Extract the date parsing out of processOrder into its own function. One verb, not clean up.</li><li>The target file and boundary. In src/orders/process.ts only. Do not touch any other file.</li><li>The contract. processOrder keeps its exact signature and return shape. No behaviour changes of any kind, including error messages.</li><li>The verification. Run npm test after the change and show me the result. If anything fails, stop and tell me rather than fixing it.</li></ol>
<p>That last line matters more than it looks. Without it, a failing test becomes a second, unrequested change made to satisfy the first one, and now you are reviewing a fix to a problem you never saw. Telling it to stop on red turns the test from a hurdle into a tripwire.</p>
<blockquote><strong>NOTE:</strong> Put the standing rules in your project's CLAUDE.md so you stop retyping them: never mix formatting with logic changes, never delete a branch without explaining why it is dead, always run the test suite before reporting success. Rules that live in the file get applied when you are tired, which is exactly when you need them.</blockquote>
<h2>How to Refactor When There Are No Tests</h2>
<p>You write the test first, and you write it to describe what the code currently does rather than what it should do. That distinction is the whole trick. You are not documenting correct behaviour, you are pinning down existing behaviour, including the bits that look wrong. If the function returns null on an empty array, your test asserts null. Fix it later, in a commit with its own name.</p>
<ol><li>Ask Claude Code to read the target file and describe every input it handles and every output it produces, including error paths. Read that list yourself and correct it.</li><li>Have it write tests that assert the current output for each of those cases. Do not let it improve anything while writing them.</li><li>Run the tests. Any that fail are telling you the description was wrong, which is worth knowing before you refactor and not after.</li><li>Commit the tests on their own. Now the fence exists and the refactor can start.</li></ol>
<p>This is also the fastest way to understand code you did not write, because a test that captures real behaviour teaches you more than a summary does. If the file is one of many and the whole codebase is unfamiliar, the wider approach in [Claude Code on a large existing codebase](/blog/claude-code-large-existing-codebase) is the place to start before you pick a file to improve.</p>
<h2>Reviewing a Refactor Diff</h2>
<p>Read the diff for what disappeared, not for what appeared. New code announces itself and is easy to judge. Removed lines are quiet, and a refactor is mostly removal. Every deleted conditional, early return, try block and default value is a question you have to answer before you merge.</p>
<ul><li>Scan deletions first. In a review, read every removed line before you read a single added one.</li><li>Check the error paths. Structure changes routinely flatten specific error handling into a generic catch, and nothing fails until production.</li><li>Confirm the signatures. If the contract said the public interface stays identical, verify that literally rather than trusting the summary.</li><li>Watch for silent defaults. A value that used to be required and is now optional with a fallback is a behaviour change wearing a tidiness costume.</li><li>Run the app, not just the tests. Tests confirm what you thought to check. Two minutes of clicking finds what you did not.</li></ul>
<p>If the diff is too big to review properly, that is not a reason to skim it. It is a signal that the seam was too wide. Reset to the last commit and cut the job smaller. This is the general discipline in [review Claude Code output before you ship](/blog/review-claude-code-output-before-you-ship), and refactors are the case where it pays the most, because there is no feature to demo that would have caught the mistake.</p>
<h2>A Refactor Routine You Can Run Every Time</h2>
<p>Here is the whole Fence-First Refactor as a routine. It looks slower than just asking for a cleanup and it is faster in practice, because the time refactoring costs is almost never the editing. It is the week you spend finding out why an old customer's invoices stopped generating.</p>
<ol><li>Commit everything and create a branch named for the refactor.</li><li>Get one test green that fails if the behaviour changes. Write it first if it does not exist, in its own commit.</li><li>Write the contract sentence: what must be identical afterwards.</li><li>Pick one seam. Name the operation, the file, the contract and the verification in a single prompt.</li><li>Let it run, then read the deletions in the diff before anything else.</li><li>Run the tests and open the app. If it is red, stop rather than layering a fix on top.</li><li>Commit that seam alone with a message naming the operation.</li><li>Clear the session and repeat for the next seam.</li></ol>
<p>The branch and the per-seam commits are doing quiet work throughout: they make abandoning a bad attempt completely painless, which is what lets you be aggressive about resetting instead of trying to argue a confused session back on track. The [git workflow for Claude Code](/blog/claude-code-git-workflow) covers that safety net in full, and it is the prerequisite for everything here.</p>
<blockquote><strong>TIP:</strong> Inside [Claude Code Club](https://www.skool.com/claudecodeclub) members post the actual refactor diffs and the prompts that produced them, which is a much faster way to calibrate what a safe seam looks like than reading about it. The [curriculum](/curriculum) covers the workflow alongside testing and review. It is $9 a month to join.</blockquote>
<h2>FAQ</h2>
<p><strong>Can Claude Code refactor code safely?</strong></p><p>Yes, if you constrain it. The risk is not that it writes bad code, it is that a refactor quietly becomes a rewrite and changes behaviour you did not ask it to touch. Commit everything first, get one test green that fails when behaviour changes, name the exact operation rather than saying clean this up, and review the deleted lines in the diff before the added ones.</p>
<p><strong>How do I stop Claude Code from changing things I did not ask for?</strong></p><p>Name the boundary explicitly and add the phrase: change nothing else, even if you see something worth improving. Restrict it to one named file. Ask it to list the changes it would make and let you pick one before it edits anything. Standing rules like never mix formatting with logic belong in your project's CLAUDE.md so they apply in every session without retyping.</p>
<p><strong>How big should a refactor be in one go?</strong></p><p>Small enough that you can read the whole diff in one sitting without losing attention. In practice that is one seam: one extraction, one rename, one move. If the diff has grown past what you will genuinely review, the answer is to reset to the last commit and cut the job smaller, not to skim it and merge.</p>
<p><strong>What if the code has no tests to refactor against?</strong></p><p>Write the tests first, and write them to describe what the code currently does rather than what it should do. If a function returns null on an empty array, assert null even if that looks wrong. Commit those tests on their own, then start refactoring. Fixing the behaviour you disagree with is a separate task with its own commit.</p>
<p><strong>What is the difference between refactoring and rewriting?</strong></p><p>A refactor changes structure and leaves behaviour identical. A rewrite changes both. The distinction matters because they need different levels of verification, and the word refactor is fuzzy enough in a prompt that you will often get the second when you asked for the first. Use the precise verb instead: extract, inline, rename, move, split or deduplicate.</p>
<p><strong>Should I refactor with Claude Code before or after adding a feature?</strong></p><p>Before, in a separate commit, whenever the existing structure is what makes the feature awkward. Mixing a refactor into a feature commit produces a diff nobody can review, because there is no way to tell which changes were required and which were tidying. Refactor to make the change easy, commit, then make the easy change.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Write a Case Study for Your AI Agency</title>
      <link>https://www.claudecodeclub.ai/blog/how-to-write-a-case-study-for-your-ai-agency</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/how-to-write-a-case-study-for-your-ai-agency</guid>
      <pubDate>Sat, 22 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Agency</category>
      <category>Marketing</category>
      <category>Positioning</category>
      <description><![CDATA[Most agency case studies are a description of work with a logo on top. A case study that closes deals carries three numbers, one client sentence, and enough detail that the reader recognises their own problem in the first paragraph.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>To write a case study for your AI agency, lead with the client's situation before the build, name three numbers - the starting state, the ending state, and how long it took - and close with one direct quote from the client in their own words.</li><li>Structure beats length. Situation, stakes, approach, result, quote, next step. Under a thousand words is fine and often better, because the reader is scanning for whether you have solved their problem before.</li><li>Use the Three-Number Case Study as the test: if you cannot state a before, an after, and a duration, you do not have a case study yet. You have a description of some work, and buyers cannot price that.</li></ul>
<h2>How Do You Write a Case Study for an AI Agency?</h2>
<p>Start with the client's situation before you arrived, in their language and with enough specificity that a similar buyer recognises themselves in the first two sentences. Then give three numbers: what the metric was before, what it is now, and how long the work took. Explain the approach in plain terms without turning it into a technical tour. Close with one direct quote from the client and one clear next step. That is the whole document, and it usually fits on a single page.</p>
<p>The reason most agency case studies fail is not writing quality. It is that they are written from the builder's point of view, which makes them a description of what was made rather than an account of what changed. A buyer reading your case study is not evaluating your craft. They are checking whether you have already solved a problem shaped like theirs, and whether the outcome was worth what it cost.</p>
<h2>The Three-Number Case Study</h2>
<p>Every case study we consider finished carries three numbers, and the framework is named after them because they are the part people leave out. The before number, the after number, and the elapsed time. Without all three, a reader has no way to judge whether the result was impressive, and no way to imagine the same thing happening to them.</p>
<ol><li>The before number. The state of the thing when you arrived: how many hours the process took, how many enquiries went unanswered, how long onboarding ran. This is the number clients never think to record, so ask for it during scoping, not at the end.</li><li>The after number. The same measurement taken after the build, from the same source. Same source matters. A before figure from a client's memory and an after figure from a dashboard is not a comparison.</li><li>The elapsed time. How long from kickoff to live. This is the number that does the most persuading in an AI build, because a short timeline is genuinely surprising and it is the part a buyer can verify against their own experience of software projects.</li></ol>
<p>If you cannot produce all three, the honest move is to write the case study qualitatively and drop the numbers entirely rather than inventing a plausible one. A vague claim reads as modest. A specific claim that turns out to be decorative reads as a lie, and the client whose logo is on the page will notice first.</p>
<blockquote><strong>WARNING:</strong> Never estimate a client's number to make the case study work. If the before figure was never measured, say so plainly: the team had not tracked this, so we recorded a baseline in week one. That sentence is credible. A rounded percentage you reverse-engineered is not, and it only has to be questioned once.</blockquote>
<h2>Capture the Numbers Before the Project Starts</h2>
<p>The reason agencies have no case studies is almost never that the work went badly. It is that nobody wrote down what things looked like beforehand, and by the time the project is delivered the old state has been forgotten by everyone. The fix is administrative and takes ten minutes: make the baseline part of scoping.</p>
<ul><li>Ask the measurement question in discovery. How would you know this worked? Whatever they answer is your before number, and it is also your definition of done.</li><li>Screenshot the current state. The old spreadsheet, the manual process, the inbox. These are the images that make a case study concrete and they stop existing the day you go live.</li><li>Put the case study in the agreement. One line saying you may write up an anonymised summary of the work, with the client having approval over anything named. Asking at the start is routine. Asking afterwards is a favour.</li><li>Diarise the follow-up. The real result is often visible thirty or sixty days after launch, not on delivery day. Book that check-in while you still have their attention.</li></ul>
<p>This is one of the practical arguments for a properly structured scoping phase, since the same conversation that gives you an accurate quote gives you a baseline to measure against. If you are already running [a paid discovery phase](/blog/paid-discovery-phase-ai-projects), the measurement question belongs in the document you deliver.</p>
<h2>The Six-Part Structure That Works</h2>
<p>Use the same six parts every time and write them in this order. The consistency is the point: a reader comparing three of your case studies should be able to find the result in the same place in each, and you should be able to produce a new one in an hour rather than starting from a blank page.</p>
<ol><li>Situation. Who the client is, in a sentence, and what their world looked like before. Industry and size, not a paragraph of praise.</li><li>Stakes. Why it mattered that this got fixed. What it was costing them in time, money, or missed work. This is the paragraph that makes the reader keep going.</li><li>Approach. What you built and the two or three decisions that made the difference. Plain language, no architecture diagrams, no listing every technology.</li><li>Result. The three numbers, stated flatly, plus anything that changed which cannot be counted.</li><li>Quote. One direct sentence from the client. Their words, not yours, and specific rather than complimentary.</li><li>Next step. One line inviting the reader to a conversation, with a link. A case study without a next step is a brochure.</li></ol>
<p>Keep the approach section shorter than you want to. The build is the part you find most interesting and the part the buyer cares least about, and every extra technical paragraph makes the work sound more complicated than the price you are about to quote. Two decisions explained well beats a full account of the stack.</p>
<h2>Getting a Quote Worth Printing</h2>
<p>Ask specific questions and you get printable answers. Ask for a testimonial and you get one generic sentence about how great it was to work together, which persuades nobody because every agency page has the same one. The difference is entirely in how you ask, and the ask should happen on a call rather than by email.</p>
<ul><li>What was the most annoying part of the old process? The answer names the pain in the client's own words, which is exactly the language a similar buyer will recognise.</li><li>What did you expect to go wrong that did not? This produces the objection-handling quote, and it is the single most useful sentence you can print.</li><li>What would you tell someone considering this? A recommendation phrased as advice sounds like advice. Phrased as a testimonial, it sounds like marketing.</li><li>What surprised you about the timeline? On an AI build the answer is usually about speed, and it lands better from them than from you.</li></ul>
<p>Record the call with permission, pull the sentences verbatim, and send them the tidied version for approval. Never write the quote yourself and ask them to sign it off, even though they will usually agree. The specific, slightly awkward phrasing of a real client is what makes it read as real, and smoothing it out removes the only evidence that a person said it. The full process for collecting proof is in [how to get testimonials for your AI agency](/blog/how-to-get-testimonials-for-your-ai-agency).</p>
<h2>What to Do When the Client Will Not Be Named</h2>
<p>Write it anonymised and keep every specific except the identity. A named logo is nice. Specific numbers and a recognisable situation are what actually persuade, and you can keep all of those while replacing the client with a description. Confidentiality is a formatting problem, not a reason to have no case studies.</p>
<ul><li>Replace the name with a category. A twelve-person recruitment firm in Manchester tells the reader more than a logo they do not know.</li><li>Keep the numbers, blur the scale if you must. A range is fine. Round numbers are fine. Removing them is not.</li><li>Offer a reference call instead of a public quote. Many clients who refuse a written endorsement will happily speak to a prospect privately, and that converts better anyway.</li><li>Get written permission for the anonymised version too. One email, kept on file, and it prevents the conversation you do not want to have later.</li></ul>
<p>There is a second version of this problem worth naming. Some clients do not want it known that AI was involved in the work at all, which is a live consideration on this kind of build and one to settle before you write anything. The reasoning is covered in [should you tell clients you used AI](/blog/should-you-tell-clients-you-used-ai), and the safe default is that whatever you agreed privately governs what you publish.</p>
<h2>Where the Case Study Actually Goes</h2>
<p>A case study that only lives on a website page is doing a fraction of its job. The document is a sales asset first and a marketing page second, and its highest-value use is being sent to one specific person who has just raised the exact objection it answers.</p>
<ol><li>Attach it to proposals. One relevant case study attached to a quote does more than three paragraphs arguing you are qualified.</li><li>Send it after an objection. When a prospect worries the timeline is unrealistic, the case study showing that exact timeline is the whole reply.</li><li>Put it on the site with the result in the heading. Not our work with Acme. The heading is the outcome, because that is what makes someone click.</li><li>Break it into posts. The situation is one post, the surprising decision is another, the result is a third. One case study is a month of material.</li><li>Use it in cold outreach. A short specific result sent to someone with the same problem outperforms any pitch, because it is evidence rather than a claim.</li></ol>
<p>Two or three strong case studies will out-earn a portfolio of twenty descriptions of work, so treat them as assets to be maintained rather than pages to be filled. This is also the strongest material your website can carry, which is the argument in [what to put on your AI agency website](/blog/what-to-put-on-your-ai-agency-website), and it is what turns a first project into a second one.</p>
<blockquote><strong>TIP:</strong> Members of [Claude Code Club](https://www.skool.com/claudecodeclub) post real case studies and the outreach they were used in, so you can see which framings led to replies rather than guessing. The business track in the [curriculum](/curriculum) covers proof assets alongside pricing and proposals. It is $9 a month to join.</blockquote>
<h2>FAQ</h2>
<p><strong>How long should an agency case study be?</strong></p><p>Under a thousand words in most cases, and one page is a good target. Buyers scan case studies looking for whether you have solved a problem like theirs and what the outcome was, so length works against you. If the detail is genuinely valuable, put the short version on the page and offer the longer write-up to anyone who asks.</p>
<p><strong>What should a case study include?</strong></p><p>Six parts in this order: the client's situation before the work, why it mattered, what you built and the key decisions, the result stated as three numbers, one direct client quote, and a clear next step with a link. The three numbers are the before state, the after state, and how long the project took from kickoff to live.</p>
<p><strong>Can I write a case study without the client's permission?</strong></p><p>Not with them named. You can write an anonymised version describing them by category and keeping the specifics, and you should still get written permission for that. The cleanest approach is to include a single line in your agreement at the start of the project giving you the right to publish an anonymised summary, with the client approving anything identifiable.</p>
<p><strong>What if I do not have any results to show yet?</strong></p><p>Write up your own builds instead. A project you built for yourself, with a real before and after, is a legitimate case study as long as you say clearly that it is your own. It demonstrates the same thing a client project does: that you can define a problem, ship something, and measure whether it worked.</p>
<p><strong>How do I get a good quote from a client?</strong></p><p>Ask specific questions on a call rather than requesting a testimonial by email. What was most annoying about the old process, what did you expect to go wrong that did not, and what would you tell someone considering this. Record with permission, pull the sentences verbatim, and send the tidied version for approval rather than writing it for them.</p>
<p><strong>Should the case study mention that AI was used?</strong></p><p>That depends on what you agreed with the client, and it is a conversation to have before you write anything rather than after. Some clients are happy for it to be a feature of the story, particularly where the timeline is the impressive part. Others prefer it left out entirely. Whatever was agreed privately governs what you publish.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code Screenshots: How to Show It a Bug or a Design</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-screenshots</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-screenshots</guid>
      <pubDate>Fri, 21 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Workflows</category>
      <category>Building</category>
      <description><![CDATA[Claude Code reads images. Paste a screenshot of the broken layout instead of writing three paragraphs describing it. Here is how to get one in, what it can and cannot see, and the three-shot pattern that fixes things in one pass.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Claude Code reads screenshots. Drag an image file into the Claude Code desktop app, paste one from your clipboard, or just give it a file path in your message, and it looks at the picture instead of guessing from your description.</li><li>Capture with Cmd+Ctrl+Shift+4 on macOS or Windows key + Shift + S on Windows, which both put a region of the screen on the clipboard. If you are in a terminal session on a Mac, paste with Ctrl+V rather than Cmd+V.</li><li>Treat a screenshot as a specification, not a hint. The Three-Shot Rule - the broken state, the intended state, and the console - is what turns a four-round guessing game into a single fix.</li></ul>
<h2>How Do You Send a Screenshot to Claude Code?</h2>
<p>Three ways, and all of them work. In the Claude Code desktop app you drag the image file onto the message box or paste it straight from the clipboard, then type what you want done. In a terminal session you paste from the clipboard with Ctrl+V. And in either place you can skip the clipboard entirely by writing the file path into your message, as in: look at /Users/me/Desktop/bug.png and tell me why the sidebar overlaps the content. Claude Code opens the file and reads it like any other file in the project.</p>
<ol><li>Drag and drop into the desktop app. The simplest route, and the reason the desktop app is the default recommendation for this kind of work. No path to type, no shortcut to remember.</li><li>Paste from the clipboard. Take a region screenshot, put your cursor in the message box, paste. In the desktop app the usual paste works. In a terminal on macOS use Ctrl+V.</li><li>Give it a file path. Always available, never fiddly, and the only method that works identically everywhere. It is also the one to use when the image is already saved, such as a design export or a screenshot a client emailed you.</li><li>Point it at a folder. If you have five exported design frames, say: read every png in /Users/me/designs and describe the layout system before you write anything. It will read them in turn.</li></ol>
<p>The file path method deserves more credit than it gets. It survives every quirk of every terminal, it can be repeated exactly in a later session, and it lets you keep a small folder of reference images inside the project so the next person to open it sees what you were building against. That is a real advantage over pasting, which leaves no trace.</p>
<h2>The Three-Shot Rule</h2>
<p>One screenshot usually starts a conversation. Three usually end one. The Three-Shot Rule is our name for the pattern that consistently gets a correct fix on the first attempt: send the broken state, the intended state, and the console together, in one message, with one sentence tying them to each other.</p>
<ol><li>Shot one, the broken state. What the screen actually looks like right now, captured wide enough to include the surrounding layout rather than cropped tight to the fault.</li><li>Shot two, the intended state. The design, the mockup, a competitor page, or the same screen on a viewport where it still works. This is the shot people skip, and it is the one that removes the guessing.</li><li>Shot three, the console. The browser devtools console or the terminal output at the moment the problem happens. Errors that never reached your eyes are frequently the actual cause.</li></ol>
<p>The sentence matters as much as the images. Something like: the first image is what I get, the second is what the design says, the third is the console at that moment. Without it, three images arrive with no stated relationship and the first thing Claude Code does is infer one, which is exactly the step you were trying to remove.</p>
<blockquote><strong>TIP:</strong> If you only have time for two of the three, send the broken state and the intended state. A difference is far more useful than a fault. It converts a diagnosis problem, which is open-ended, into a comparison problem, which is bounded.</blockquote>
<h2>Why Cmd+V Does Not Paste Your Screenshot</h2>
<p>In a terminal session on macOS, use Ctrl+V rather than Cmd+V. Cmd+V is the terminal application's own paste, and it deals in text, so image data on the clipboard has nowhere to go and nothing appears. Ctrl+V is handled by Claude Code itself, which knows what to do with an image. This single keystroke is the most common reason people conclude that Claude Code does not accept screenshots at all.</p>
<ul><li>Nothing at all appeared: you almost certainly used Cmd+V in a terminal. Try Ctrl+V with the same clipboard contents.</li><li>A file path appeared instead of an image: you copied the file in Finder rather than copying the image data. That is fine - the path works, so just send the message as it is.</li><li>A wall of unreadable characters appeared: your terminal tried to paste raw image bytes as text. Clear the line and use the file path method instead.</li><li>It worked yesterday and not today: check whether you are in the desktop app or a terminal. The two have different paste behaviour and they look more alike than they should.</li></ul>
<p>None of this applies in the desktop app, where an image behaves like an image and drag and drop always works. That is the honest case for using the app for anything visual. The terminal is a fine place to run a build, but it is a lossy place to hand somebody a picture.</p>
<h2>How to Capture the Right Screenshot</h2>
<p>Capture a region to the clipboard, not a full screen to a file. Region capture forces you to decide what is relevant and it keeps the image tight enough that the important detail is legible. Both operating systems have this built in and neither needs extra software.</p>
<table><caption>Built-in region capture on each operating system</caption><thead><tr><th>What you want</th><th>macOS</th><th>Windows</th></tr></thead><tbody><tr><td>Region to the clipboard</td><td>Cmd + Ctrl + Shift + 4</td><td>Windows key + Shift + S</td></tr><tr><td>Region to a file</td><td>Cmd + Shift + 4</td><td>Windows key + Shift + S, then save from the notification</td></tr><tr><td>Whole screen to a file</td><td>Cmd + Shift + 3</td><td>Windows key + Print Screen</td></tr><tr><td>Best for Claude Code</td><td>Region to the clipboard, then Ctrl+V in a terminal</td><td>Region to the clipboard, then paste</td></tr></tbody></table>
<ul><li>Include the surrounding context. A button that is 20 pixels too low is invisible when cropped to the button. Capture the container it sits in.</li><li>Capture at the size the problem occurs. If the bug only appears on a narrow window, resize the window first and screenshot that, rather than describing the width in words.</li><li>Do not annotate with arrows and circles unless the target is genuinely ambiguous. A clear sentence does that job better and does not obscure pixels.</li><li>Redact anything confidential before sending. Client names, real customer records and live keys have no business being in a screenshot, and blurring is faster than regretting it.</li></ul>
<h2>Turning a Design Screenshot Into Working Code</h2>
<p>Claude Code will build a close approximation of a layout from a screenshot, and it will get the structure right far more often than the specifics. Expect the arrangement of sections, the rough hierarchy and the general spacing rhythm to come out sensible. Do not expect exact hex values, exact font names, or the spacing scale your design system already uses. Those come from you, not from the picture.</p>
<table><caption>What a design screenshot conveys well and badly</caption><thead><tr><th>Aspect</th><th>Comes across well</th><th>You have to supply it</th></tr></thead><tbody><tr><td>Layout structure</td><td>Yes - columns, stacking order, rough proportions</td><td></td></tr><tr><td>Component hierarchy</td><td>Yes - what is a card, a nav, a footer</td><td></td></tr><tr><td>Exact colours</td><td></td><td>Give the hex codes or point at your theme file</td></tr><tr><td>Typography</td><td></td><td>Name the font family and your existing type scale</td></tr><tr><td>Spacing scale</td><td></td><td>Say which scale to use, such as your Tailwind spacing tokens</td></tr><tr><td>Interactive states</td><td></td><td>Hover, focus, disabled and error states are invisible in a still image</td></tr><tr><td>Responsive behaviour</td><td></td><td>One screenshot is one viewport. Send two, or describe the breakpoint</td></tr></tbody></table>
<p>The productive framing is that a screenshot answers what goes where and your prompt answers what it is made of. Send the image, then in the same message name the stack, the component library and the file the new code belongs in. That combination is what separates a usable first draft from a generic one, and it is the same principle covered in [how to prompt Claude Code](/blog/how-to-prompt-claude-code).</p>
<blockquote><strong>NOTE:</strong> For anything with real design intent, a screenshot plus the design tokens beats a screenshot alone every time. If your project has a theme file, say so in the message: match this layout using the colours and spacing already defined in src/styles/theme.ts. You will get code that fits the codebase rather than code that merely resembles the image.</blockquote>
<h2>Bugs a Screenshot Explains Better Than You Can</h2>
<p>Some faults are cheap to show and expensive to describe. Anything positional, anything about overlap, and anything where the rendered result differs from what the code appears to say falls into this group. In those cases, writing three careful paragraphs is slower and less accurate than one image, and the paragraphs introduce your own interpretation of the problem, which may be wrong.</p>
<ul><li>Layout and overlap. Elements sitting on top of each other, a footer floating halfway up the page, a modal escaping its container.</li><li>Spacing that is off by a small amount. Nobody can describe a 6 pixel discrepancy usefully, and everyone can see it.</li><li>Rendering that contradicts the code. The class is applied, devtools shows the rule, and the browser still does something else.</li><li>Errors inside a third-party interface. A failed webhook page, a payment dashboard warning, a hosting build log that you cannot easily copy as text.</li><li>Anything on a phone. Screenshot the device, send it across, and skip the entire exercise of describing a mobile viewport in words.</li><li>Charts and visual output. Whether the axis labels collide or the legend truncates is a visual question, and it deserves a visual answer.</li></ul>
<p>There is one thing to keep doing in text: error messages you can select. Copy those as text rather than screenshotting them. Text is searchable, it survives being quoted back exactly, and it costs almost nothing. Screenshot the things that only exist as pixels, and paste the things that already exist as characters. That split is covered further in [how to debug with Claude Code](/blog/how-to-debug-with-claude-code).</p>
<h2>What Claude Code Cannot See in a Screenshot</h2>
<p>A screenshot is one moment on one viewport with no interaction and no state. Everything outside that frame is invisible, and assuming otherwise produces confident fixes for problems you do not have. Knowing the boundary is what stops you from blaming the tool for a gap you introduced.</p>
<ul><li>Anything below the fold or off screen. If the page scrolls, only the captured part exists.</li><li>Hover, focus, active and disabled states. A still image has no interaction in it.</li><li>Animation and timing. A layout that flickers during load looks perfectly fine once it settles.</li><li>Which viewport width this was. Send a second screenshot at another width, or say the width in the message.</li><li>The network tab and the console, unless you captured them. A visual symptom with a silent underlying request failure is a routine trap.</li><li>Your intent. The image shows what is. Only your sentence shows what should be.</li></ul>
<blockquote><strong>WARNING:</strong> Watch for confident fixes to invisible causes. If a suggested change does not match what you know about the code, say so rather than applying it. A screenshot narrows the problem, it does not prove the diagnosis, and the review habit in [review Claude Code output before you ship](/blog/review-claude-code-output-before-you-ship) applies here exactly as it does anywhere else.</blockquote>
<h2>Let Claude Code Take Its Own Screenshots</h2>
<p>You can remove yourself from the loop entirely by connecting a browser automation MCP server, which lets Claude Code open a page, capture it, and look at the result of its own change. That turns a back-and-forth into a loop it can run alone: make the change, load the page, screenshot it, compare against the target, adjust. You go from being the eyes to being the reviewer.</p>
<ul><li>It sees the actual rendered result rather than reasoning about what the CSS should produce.</li><li>It can check several viewport widths in a row without you resizing anything by hand.</li><li>It closes its own feedback loop, which is what makes unattended visual work possible at all.</li><li>It removes the slowest part of visual debugging, which was never the thinking - it was you screenshotting, pasting, and describing.</li></ul>
<p>This is worth setting up once and then forgetting about, and it is one of the few MCP servers that changes the shape of the work rather than just adding a capability. We cover the setup and which servers are worth the trouble in [the best Claude Code MCP servers](/blog/best-claude-code-mcp-servers). Start manual, get comfortable with the Three-Shot Rule, then automate the shots you are tired of taking.</p>
<h2>Screenshots Cost Context, So Spend Them Deliberately</h2>
<p>Images consume context, and more of it than an equivalent sentence does. Two or three well-chosen screenshots are a good trade. Twelve dumped in at once are not, because you crowd out the code and the project instructions that the answer actually depends on, and quality drops for reasons that look mysterious from the outside.</p>
<ul><li>Send the smallest set that makes the difference visible. Usually two images, occasionally three.</li><li>Crop to the relevant region. A full 5K display screenshot spends context on your dock and your open tabs.</li><li>Do not resend an image that is already in the session. Refer back to it: in the first screenshot I sent, the header was 8 pixels too tall.</li><li>Start a fresh session for a new visual problem rather than accumulating images across an afternoon.</li></ul>
<p>The general discipline behind this - deciding what earns a place in the window and what does not - is the single habit that most improves results over a long session, and it is the subject of [Claude Code context management](/blog/claude-code-context-management). Screenshots are just one more thing competing for the same finite space.</p>
<h2>A Screenshot Workflow That Holds Up</h2>
<p>Here is the whole thing as a routine you can run without thinking about it. It takes under a minute and it replaces the most tedious loop in front-end work, which is describing a visual problem to somebody who cannot see it.</p>
<ol><li>Reproduce the problem on screen and leave it there. Do not fix the window size afterwards.</li><li>Capture the broken state as a region to the clipboard, wide enough to show the surrounding layout.</li><li>Capture the intended state - the design, the mockup, or the working version - as a second image.</li><li>Open devtools, capture the console at that moment as a third image if there is anything in it.</li><li>Paste all three into one message. In the desktop app just drag them in.</li><li>Write one sentence naming what each image is and what you want changed. Name the file if you know it.</li><li>Read the proposed change before applying it, and say so if the diagnosis contradicts what you know about the code.</li></ol>
<p>That is the Three-Shot Rule in practice. It is not clever, and that is the point: it removes the two failure modes that cause almost all wasted rounds, which are an undescribed difference and an unread console. Once it is a habit you stop noticing you are doing it, and visual bugs stop being the part of the job you put off until the afternoon.</p>
<blockquote><strong>TIP:</strong> Inside [Claude Code Club](https://www.skool.com/claudecodeclub) members post the actual screenshots and the actual prompt that fixed them, which is a much faster way to learn this than reading about it. If you want the structured path first, the [curriculum](/curriculum) covers the visual workflow alongside the rest. It is $9 a month to join.</blockquote>
<h2>FAQ</h2>
<p><strong>Can Claude Code read screenshots and images?</strong></p><p>Yes. You can drag an image file into the Claude Code desktop app, paste one from your clipboard, or write the file path into your message and let it open the file itself. It reads the picture directly, which is why sending a screenshot of a broken layout works better than writing a paragraph describing it. The file path method is the most reliable because it behaves identically in the desktop app and in a terminal.</p>
<p><strong>How do I paste a screenshot into Claude Code on a Mac?</strong></p><p>Capture a region to the clipboard with Cmd + Ctrl + Shift + 4, then paste. In the desktop app the normal paste works. In a terminal session use Ctrl+V rather than Cmd+V, because Cmd+V is the terminal application's own text paste and image data on the clipboard has nowhere to go. If nothing appears at all, that keystroke is almost always the reason.</p>
<p><strong>Can Claude Code build a page from a design screenshot?</strong></p><p>It will produce a close first draft of the layout, and it reliably gets structure and hierarchy right. It will not infer your exact hex values, font family or spacing scale from a picture, so supply those in the same message by naming your theme file or your design tokens. Send the image for what goes where, and write the prompt for what it is made of.</p>
<p><strong>How many screenshots should I send at once?</strong></p><p>Two or three, chosen deliberately. The pattern we use is the Three-Shot Rule: the broken state, the intended state, and the console. Images consume context, so a dozen at once crowds out the code and project instructions the answer depends on, and quality quietly drops. Crop each one to the relevant region rather than sending a full display capture.</p>
<p><strong>Should I screenshot an error message or copy the text?</strong></p><p>Copy the text whenever the error is selectable. Text is searchable, it can be quoted back exactly, and it costs far less context than an image. Screenshot the things that only exist as pixels - layout faults, overlap, spacing, third-party dashboards you cannot copy from, and anything on a phone. The split is simple: paste characters, screenshot pixels.</p>
<p><strong>Can Claude Code take screenshots itself?</strong></p><p>Yes, with a browser automation MCP server connected. It can open a page, capture it, compare the result against the target and adjust without you taking the screenshot each round. That closes the visual feedback loop, which is the slowest part of front-end work. Set it up after you are comfortable with the manual pattern, not before.</p>]]></content:encoded>
    </item>
    <item>
      <title>Paid Discovery: How to Charge for Scoping an AI Build</title>
      <link>https://www.claudecodeclub.ai/blog/paid-discovery-phase-ai-projects</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/paid-discovery-phase-ai-projects</guid>
      <pubDate>Fri, 21 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Agency</category>
      <category>Clients</category>
      <category>Pricing</category>
      <description><![CDATA[Free scoping is the most expensive thing most builders do. A paid discovery phase gets you paid for the hardest thinking in the project, filters out the people who were never going to buy, and makes the build quote defensible.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Charge for discovery on anything you cannot quote confidently after one conversation. Keep the first call free to qualify, then sell a fixed-fee discovery phase that produces a written scope, and credit that fee against the build if they proceed.</li><li>Price it as a percentage of the build you expect to quote, roughly a tenth, with a floor that makes it worth doing. Delivered in days, not weeks, and paid before you start.</li><li>The Handoff Test is how you know it is sellable: if the client could hand your discovery document to a different builder and get a usable quote from it, you have made something worth paying for. If they could not, you wrote a sales proposal and called it discovery.</li></ul>
<h2>Should You Charge for a Discovery Phase?</h2>
<p>Yes, for any project you cannot price confidently after a single conversation. Keep the first call free, because that call is qualification and it is your job to establish whether there is a project at all. Everything after it - the requirements, the data model, the integration list, the risks, the written scope - is work, and work that a competent client can see the value of. Charge a fixed fee, deliver in days, and credit the fee against the build if they go ahead.</p>
<p>The reason to do this is not that discovery is hard, though it is. It is that free scoping puts you in an impossible position: you have to do enough thinking to quote accurately, while being paid nothing for it, while competing against people who will guess a number quickly and adjust later. Charging removes all three problems at once. You get paid for the thinking, you take the time to do it properly, and you stop competing on speed of guessing.</p>
<h2>The Handoff Test</h2>
<p>Here is the standard we hold discovery to. Could the client take what you delivered, hand it to a completely different builder, and get an accurate quote from it without talking to you? If yes, you produced something with independent value and the fee was obviously fair. If no, you produced a sales document with a price tag on it, and the client will feel that even if they cannot name it.</p>
<p>That test is uncomfortable on purpose. It rules out the version of paid discovery that is really just a proposal with extra pages, and it forces the deliverable to contain the specific things another builder would need: what is being built, what it connects to, what the data looks like, what is explicitly out of scope, and where the risk sits. Write it so it survives you leaving, and you never have to defend the invoice.</p>
<blockquote><strong>TIP:</strong> There is a commercial upside to passing the Handoff Test that is easy to miss. A client who genuinely could take the document elsewhere and does not is a client who chose you on merit rather than on lock-in. That is a much better position to start a build from, and those projects run more calmly.</blockquote>
<h2>What a Paid Discovery Actually Delivers</h2>
<p>A document and a number. The document says what is being built and what is not. The number is a fixed-price quote for the build, or a tight range with the conditions that would move it named explicitly. Anything less and you are selling a meeting. These are the sections that earn the fee.</p>
<ul><li>The outcome in one paragraph, in the client's own language, agreed with them before anything else is written.</li><li>A feature list split into in-scope, out-of-scope, and later. The out-of-scope list is the most valuable part of the entire document and the part clients read twice.</li><li>The integration list: every external system involved, who owns access to it, and whether that access has actually been confirmed rather than assumed.</li><li>The data model at a level a non-technical person can follow. What records exist, what they contain, and who is allowed to see them.</li><li>The risk list: what could make this take twice as long, with a plain statement of what happens to the price if it does.</li><li>A build quote and a delivery window, with the assumptions the numbers rest on written next to them.</li></ul>
<p>The out-of-scope list is where most of the future arguments get prevented. Scope creep does not usually arrive as a big new demand, it arrives as a small thing that everyone assumed was included. Writing down what is not included, during a phase the client is paying for, is the cheapest insurance available, and it works alongside the practices in [how to handle scope creep on client projects](/blog/how-to-handle-scope-creep-on-client-projects).</p>
<h2>How to Price a Discovery Phase</h2>
<p>Price it as a proportion of the build you expect to quote - around a tenth is a workable rule - with a floor low enough that a client will say yes without a committee and high enough that you will take it seriously. Fixed fee, never hourly. Paid before you start, not on delivery. And credited against the build if they proceed, which is what makes it an easy yes rather than a second decision.</p>
<table><caption>A structure that works across project sizes</caption><thead><tr><th>Element</th><th>The rule</th><th>Why it is that way</th></tr></thead><tbody><tr><td>Fee basis</td><td>Roughly a tenth of the expected build price, with a floor</td><td>Scales with the amount of thinking required, and the floor stops small projects being unprofitable to scope</td></tr><tr><td>Fee type</td><td>Fixed, quoted up front</td><td>Hourly reintroduces the exact argument about time that paid discovery exists to end</td></tr><tr><td>Payment timing</td><td>Before the work starts</td><td>A client who will not pay for discovery will not pay for a build, and you find out for the price of an email</td></tr><tr><td>Credit against build</td><td>Yes, in full, stated in writing</td><td>Turns the fee into a deposit in their mind and removes the objection before it is raised</td></tr><tr><td>Duration</td><td>Days, not weeks</td><td>Momentum is the asset. A discovery that drags loses the enthusiasm that started it</td></tr><tr><td>Ownership of the document</td><td>Theirs on payment</td><td>It is the only version that passes the Handoff Test, and it is what justifies the fee</td></tr></tbody></table>
<p>Crediting the fee against the build is doing more work than it looks. It reframes the decision from should I pay for scoping into should I put down a deposit, which is a decision clients already know how to make. It also means that the only person who is out of pocket is the one who does not proceed, which is exactly the person you wanted to charge in the first place.</p>
<p>If you are also still working out the build number itself, price the two together rather than in sequence. The discovery fee should follow from the build quote, not float free of it, and the reasoning behind the build quote is covered in [how to price a Claude Code agency project](/blog/how-to-price-a-claude-code-agency-project).</p>
<h2>Free Call or Paid Discovery: Where the Line Sits</h2>
<p>The line is between finding out whether there is a project and working out what the project is. The first is sales and it is on you. The second is consulting and it is on them. Most builders draw this line far too late, then wonder why they spend two unpaid weeks on deals that never close.</p>
<table><caption>What belongs on each side of the line</caption><thead><tr><th>Activity</th><th>Free</th><th>Paid</th></tr></thead><tbody><tr><td>First conversation about the problem</td><td>Yes</td><td></td></tr><tr><td>Establishing budget range and timeline</td><td>Yes</td><td></td></tr><tr><td>Explaining how you work and what you have built</td><td>Yes</td><td></td></tr><tr><td>A rough order-of-magnitude figure with caveats</td><td>Yes</td><td></td></tr><tr><td>Detailed requirements gathering with their team</td><td></td><td>Yes</td></tr><tr><td>Reviewing their existing codebase or systems</td><td></td><td>Yes</td></tr><tr><td>Designing the data model or the integration approach</td><td></td><td>Yes</td></tr><tr><td>A written scope with a fixed price attached</td><td></td><td>Yes</td></tr><tr><td>A technical proof of concept</td><td></td><td>Yes</td></tr></tbody></table>
<p>The free call still needs to be a good one, because it is where you decide whether to offer discovery at all. The questions that make it useful are the same ones in [client discovery questions before you quote](/blog/client-discovery-questions-before-you-quote) - you are just asking them to qualify rather than to scope, and stopping the moment the answers start requiring real work to obtain.</p>
<h2>How to Sell It Without Losing the Deal</h2>
<p>Present it as the first phase of the project rather than as a gate before the project. The wording that works is close to this: the honest answer is that I cannot give you a firm price yet without understanding the integrations properly. What I would suggest is a scoping phase, fixed fee, delivered in a week, and you end up with a written scope and a fixed quote. If we go ahead with the build, that fee comes off the total.</p>
<ul><li>Lead with the reason, not the fee. The reason is that a firm price requires real work, and clients accept that immediately when it is said plainly.</li><li>Say the deliverable out loud. A written scope and a fixed quote is a thing. A discovery phase is not, until you describe it as one.</li><li>Name the credit in the same breath as the price. Left to a second sentence, it sounds like a concession you were forced into.</li><li>Give it a short, specific duration. A week sounds like a project. A few weeks sounds like a delay.</li><li>Do not apologise anywhere in the paragraph. The moment you sound uncertain about charging, they become uncertain about paying.</li></ul>
<p>If the discovery offer sits inside a written document, keep it to a single page with the deliverable, the fee, the timeline and the credit visible without scrolling. The structure that does this well is the same one in [the one page AI proposal that closes](/blog/one-page-ai-proposal-that-closes), just aimed at a smaller decision.</p>
<h2>Why Free Scoping Costs You the Project</h2>
<p>Free scoping does not just cost you the hours. It costs you the deal, in a way that is almost invisible while it is happening. Because the work is unpaid, you rush it. Because you rushed it, the quote carries padding you cannot justify. Because the number looks padded, the client negotiates. And because you have already sunk a week into it, you accept less than you should to avoid wasting the week.</p>
<ol><li>You do the thinking anyway, but compressed into the gaps between paid work, which is where mistakes come from.</li><li>You quote defensively. Unknowns become contingency, contingency becomes a bigger number, and the bigger number invites the price conversation.</li><li>You have no leverage in that conversation, because the sunk cost is entirely yours and both of you know it.</li><li>Nothing is on paper, so the scope stays negotiable throughout the build and every assumption resurfaces later as a request.</li><li>Serious buyers and tyre-kickers get identical effort from you, which means the tyre-kickers are subsidised by your real clients.</li></ol>
<p>That last one is the argument that usually lands. Somebody is paying for all that free scoping, and it is the clients who did say yes. Charging for discovery moves the cost onto the person creating it, which is the ordinary way every other professional service works.</p>
<blockquote><strong>WARNING:</strong> The tell that you have been scoping for free is a quote you cannot defend line by line. If a client asks why the number is what it is and your honest internal answer is that it felt about right, you did not scope the project - you estimated your own anxiety about it.</blockquote>
<h2>When Not to Charge for Discovery</h2>
<p>This is not a universal rule and treating it as one will cost you work. Skip the paid phase when the project is small enough to quote from a conversation, when the client is already yours, or when you genuinely want the relationship for reasons beyond this one project. Judgment beats policy here.</p>
<ul><li>Small fixed-scope jobs. If you can quote it accurately in one call, charging to scope it looks like friction for its own sake.</li><li>Existing clients. You already know their systems and their people, which is most of what discovery buys. Fold the scoping into the work.</li><li>Work you want for the case study. If the reference is worth more to you than the fee, decide that deliberately and say nothing about it.</li><li>Very early conversations. Discovery is offered after the free call establishes that there is a real budget and a real problem, never before.</li><li>Anything you would decline at full price. A paid discovery is not a way to make a bad project tolerable.</li></ul>
<p>There is also a version of this that scales down neatly. Not every project needs a week of scoping, and a short paid audit with a two-page write-up is often the right size for a smaller build. The principle survives the shrinking: the client pays for the thinking, and the thinking arrives as a document.</p>
<h2>What Happens If They Do Not Buy the Build</h2>
<p>You got paid, they got something useful, and you found out cheaply that they were not going to proceed. That is a good outcome, not a failed sale, and the sooner you believe that the easier the whole model becomes to run. The alternative outcome - two unpaid weeks and the same answer - is strictly worse in every direction.</p>
<ul><li>Deliver the document properly regardless. Half-delivering because you sense they are drifting is the one move that turns a neutral outcome into a bad reputation.</li><li>Ask for the reason and record it. A pattern in why clients stop after discovery tells you something real about your positioning or your pricing.</li><li>Follow up on a calendar, not on a feeling. Budgets return, and a discovery document ages well because the problem is usually still there.</li><li>Treat it as a paid case study. You now have a full picture of a real project and a client who paid you, which is a stronger reference than most free work produces.</li></ul>
<p>Some of these come back months later with the same document and a signed budget. That only happens if the follow-up is systematic rather than sentimental, which is the argument in [how to follow up with a client without being annoying](/blog/how-to-follow-up-with-a-client-without-being-annoying). A discovery client is the easiest person on your list to follow up with, because there is a specific artefact to reference.</p>
<h2>Running the Discovery Phase Itself</h2>
<p>Keep it tight and finish it. The failure mode is not underpricing, it is letting a week become a month while you wait for access to a system nobody can find the credentials for. Set the shape before you start and hold it.</p>
<ol><li>Take payment and send a short agreement naming the deliverable, the duration and what you need from them.</li><li>Ask for access on day one. Systems, credentials, the existing codebase, the person who actually knows how the current process works.</li><li>Run one structured session with the people who use the thing, not only the person who is buying it.</li><li>Write the out-of-scope list before the in-scope list. It is faster, and it exposes disagreements while they are still cheap.</li><li>Send a draft mid-way and ask for corrections. Nothing in the final document should be a surprise on delivery day.</li><li>Deliver the document and the quote together, walk them through it live, and ask for the decision on that call.</li></ol>
<p>Delivering it live matters more than it sounds. A document sent by email gets skimmed, filed, and discussed without you in the room. Walked through on a call, it becomes a conversation about the build, and the build quote is right there in front of both of you at the moment the client is most convinced that you understand their problem. That is the same reason kickoff works better live, as covered in [the client kickoff call for an AI build](/blog/client-kickoff-call-ai-build).</p>
<blockquote><strong>TIP:</strong> Members of [Claude Code Club](https://www.skool.com/claudecodeclub) share the actual discovery documents and the wording that got them signed, which beats writing your first one from a blank page the night before a call. The business track in the [curriculum](/curriculum) covers where paid discovery sits alongside pricing and proposals. It is $9 a month to join.</blockquote>
<h2>FAQ</h2>
<p><strong>What is a paid discovery phase?</strong></p><p>A short fixed-fee engagement, usually days rather than weeks, in which you work out exactly what is being built and produce a written scope with a firm price attached. It sits between the free qualifying call and the build itself. The client pays for the thinking, owns the resulting document, and normally has the fee credited against the build if they proceed.</p>
<p><strong>How much should I charge for discovery?</strong></p><p>A workable rule is around a tenth of the build price you expect to quote, with a floor low enough to be an easy yes and high enough that the work is worth doing properly. Always a fixed fee rather than hourly, because hourly reintroduces the argument about time that paid discovery exists to end. Take payment before you start.</p>
<p><strong>Should the discovery fee be credited against the build?</strong></p><p>Yes, in full, and say so at the moment you name the price. Crediting it turns the decision from should I pay for scoping into should I put down a deposit, which clients already know how to make. It also means the only person out of pocket is the one who does not proceed, which is precisely who you wanted to charge.</p>
<p><strong>What if the client refuses to pay for discovery?</strong></p><p>Take it as information rather than as an objection to overcome. A client who will not fund a small fixed-fee phase is unlikely to fund a build, and you learned that for the cost of one conversation instead of two unpaid weeks. If the project is small enough to quote from a single call, quote it and skip discovery entirely.</p>
<p><strong>How long should a discovery phase take?</strong></p><p>Days, not weeks. Around a week is the shape most builds want, and smaller projects can be scoped in two or three days with a shorter write-up. The risk is not underpricing it, it is letting the phase drift while you wait for system access, so ask for credentials and contacts on day one and hold the end date you promised.</p>
<p><strong>Is paid discovery the same as a proposal?</strong></p><p>No, and the difference is the Handoff Test. A proposal is a sales document that argues for hiring you. A discovery deliverable is a specification that another builder could quote from without ever speaking to you. If what you are producing fails that test, you are charging for a proposal, and clients can feel the difference even when they cannot articulate it.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code on Windows: Install, Verify and Fix the Common Errors</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-on-windows</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-on-windows</guid>
      <pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Setup</category>
      <description><![CDATA[Claude Code runs natively on Windows, and for most people the desktop app is the whole setup. Here are the real requirements, when WSL is worth the trouble, and why the install command you pasted threw an error.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Claude Code on Windows runs natively on Windows 10 build 1809 or later, or Windows Server 2019 or later, on x64 or ARM64 hardware with 4 GB of RAM or more, and it works in Bash, Zsh, PowerShell or CMD.</li><li>The desktop app from claude.com/download is the default recommendation because it gives you Claude Code with no terminal at all; the native installer, WinGet and npm are still there if you want the command line as well.</li><li>Sandboxing is supported on WSL 2 but not on native Windows or WSL 1, and Git for Windows is optional - without it Claude Code runs shell commands through the PowerShell tool rather than Git Bash.</li></ul>
<h2>Does Claude Code Work on Windows?</h2>
<p>Yes. Claude Code on Windows works natively, with no WSL, no virtual machine and no dual boot. You need Windows 10 build 1809 or later, or Windows Server 2019 or later, running on x64 or ARM64 hardware with 4 GB of RAM or more. Supported shells are Bash, Zsh, PowerShell and CMD. The fastest way in is the desktop app from claude.com/download, which runs Claude Code without a terminal. You also need a Pro, Max, Team, Enterprise or Console account.</p>
<ul><li>Operating system: Windows 10 build 1809 or later, or Windows Server 2019 or later.</li><li>Hardware: 4 GB of RAM or more, on x64 or ARM64. Both architectures are supported, so a Windows on ARM laptop is fine.</li><li>Shell: Bash, Zsh, PowerShell or CMD. Any of the four works, and which one you have open matters mainly during install.</li><li>Account: Pro, Max, Team, Enterprise or Console. The free Claude.ai plan does not include Claude Code access.</li></ul>
<p>That last line catches more people than any technical requirement does. The install itself will complete perfectly on a free account, because installing software and having access to it are separate things. If everything looks correct and you still cannot get a session going, check the plan before you touch anything else.</p>
<p>For a lot of Windows users the honest recommendation is to stop reading after the desktop app. It installs like any other Windows application, it does not ask you to think about shells or PATH variables, and it is the version most people should be using day to day. The terminal install is optional and you can add it later without undoing anything you have already done.</p>
<h2>Native Windows or WSL: Which One to Choose</h2>
<p>Choose native Windows unless you specifically need sandboxing or you already work inside WSL. Native Windows needs nothing extra installed, and Git for Windows is optional rather than required. WSL 2 needs WSL 2 enabled on the machine before you start. The one genuine functional difference is sandboxing: it is supported on WSL 2, and it is not supported on native Windows or on WSL 1.</p>
<table><caption>Native Windows and WSL 2 compared</caption><thead><tr><th>Question</th><th>Native Windows</th><th>WSL 2</th></tr></thead><tbody><tr><td>What you have to enable first</td><td>Nothing extra</td><td>WSL 2 itself has to be enabled</td></tr><tr><td>Sandboxing</td><td>Not supported</td><td>Supported</td></tr><tr><td>Where you type commands</td><td>PowerShell or CMD</td><td>The Linux shell inside your distribution</td></tr><tr><td>Who it suits</td><td>Most Windows users, including anyone who mainly wants the desktop app</td><td>People already living in WSL 2, or who want sandboxing</td></tr></tbody></table>
<blockquote><strong>WARNING:</strong> WSL 1 is the trap. Sandboxing is supported on WSL 2 and is not supported on WSL 1, so an older WSL install costs you all of the extra setup and gives you none of the one feature that justified it. If you are going to use WSL for this, make sure it is WSL 2.</blockquote>
<p>On native Windows, where sandboxing is not available, the control you actually rely on is the permission system - what Claude Code is allowed to run without asking you first. That is worth setting up deliberately rather than by clicking through prompts, and we walk through it in [claude code permissions explained](/blog/claude-code-permissions-explained). It matters more on Windows precisely because you do not have the sandbox as a second layer.</p>
<h2>How to Install Claude Code on Windows</h2>
<p>There are two routes and the desktop app is the default one. Download it from claude.com/download and it installs like any other Windows application, with no terminal, no package manager and no PATH to reason about. If you also want the command line version, there are three installers to pick from: the native script, WinGet, or npm.</p>
<p>Start with the app. It is the version that gets used, because it is the version that opens without a decision attached to it. We covered what it does and does not give you in [the Claude Code desktop app](/blog/claude-code-desktop-app), and the short version is that it lets you use Claude Code without the terminal entirely.</p>
<ol><li>PowerShell, native install: irm https://claude.ai/install.ps1 | iex . This is the one to use if you are not sure. You do not need to run PowerShell as Administrator.</li><li>CMD, native install: curl -fsSL https://claude.ai/install.cmd -o install.cmd &amp;&amp; install.cmd &amp;&amp; del install.cmd . Same outcome, written for CMD syntax, and it cleans up the downloaded file after itself.</li><li>WinGet: winget install Anthropic.ClaudeCode . Use winget upgrade Anthropic.ClaudeCode later when you want a newer version.</li><li>npm: npm install -g @anthropic-ai/claude-code . As of v2.1.198 the npm package requires Node.js 22 or later. Never install it with sudo.</li></ol>
<blockquote><strong>NOTE:</strong> Native installs update themselves in the background. WinGet installs do not - you stay on whatever version you installed until you run winget upgrade Anthropic.ClaudeCode yourself. Neither is wrong, but if you pick WinGet, write that upgrade command down somewhere you will actually see it again.</blockquote>
<p>Once it is installed, the setup that matters is not the installer at all, it is what you do in the first hour of your first project. [Claude Code day one setup](/blog/claude-code-day-one-setup) covers that part, and it is identical on Windows and macOS.</p>
<h2>Do You Need Git for Windows?</h2>
<p>No. Git for Windows is optional on native Windows and Claude Code works fine without it. What changes is how shell commands run. With Git for Windows installed, Claude Code uses Git Bash for the Bash tool. Without it, Claude Code runs shell commands through the PowerShell tool instead. Both are supported. Installing Git is worth it mainly if you want the Bash behaviour to match tutorials written on macOS or Linux.</p>
<p>If Git for Windows is installed and Claude Code cannot find Git Bash, point it at the executable directly. Set CLAUDE_CODE_GIT_BASH_PATH in your settings.json to the full path, for example C:\\Program Files\\Git\\bin\\bash.exe. Notice the doubled backslashes. settings.json is JSON, and a single backslash is an escape character in JSON, so a path copied the way Windows displays it will not parse and the setting will look like it was ignored.</p>
<p>This is the single most Windows-specific thing in the whole setup, and it is worth understanding rather than copying. Any Windows path you put into any JSON settings file has the same rule. If a setting that takes a path appears to do nothing, count the backslashes before you assume the setting is broken.</p>
<h2>Why Your Install Command Errored</h2>
<p>Almost always because a command written for one shell was pasted into the other. PowerShell and CMD are different shells with different syntax, and Windows opens both of them in similar looking windows. Two specific error messages tell you exactly which shell you are in. The fix is not to change the command, it is to change the window you are typing into.</p>
<table><caption>The two errors that mean you are in the wrong shell</caption><thead><tr><th>What the error says</th><th>Where you actually are</th><th>What to do</th></tr></thead><tbody><tr><td>The token '&amp;&amp;' is not a valid statement separator</td><td>PowerShell, running the CMD command</td><td>Either open CMD and run the curl install.cmd command, or stay put and run the irm command instead</td></tr><tr><td>'irm' is not recognized</td><td>CMD, running the PowerShell command</td><td>Either open PowerShell and run the irm command, or stay put and run the curl install.cmd command</td></tr></tbody></table>
<p>You can check which shell you have before you paste anything. The PowerShell prompt begins with PS, as in PS C:\. The CMD prompt is the same path without it, so just C:\. That two-letter difference is the entire diagnosis, and it saves the loop of running the same failing command again slightly differently.</p>
<p>One more thing worth ruling out: neither native install command needs Administrator rights. If you hit a permissions error, opening an elevated prompt and trying again is not the intended fix and usually is not the problem either. Read the first line of the error rather than the whole block, and match it against the table above.</p>
<h2>How to Verify the Install Worked</h2>
<p>Run claude --version. If Claude Code is installed and reachable it prints a version string, something along the lines of 2.1.211 (Claude Code). If you want more detail, run claude doctor, which prints read-only diagnostics about your install and your settings without starting a session. Read-only is the useful part: you can run it as often as you like while troubleshooting and it will not change anything underneath you.</p>
<ul><li>claude --version confirms the binary exists and is on your PATH. If this errors, the problem is the install or the PATH, not your settings.</li><li>claude doctor reports on install and settings together and does not start a session, so it is the right first command when something is behaving oddly.</li><li>If you installed the desktop app, opening it and starting a session is its own verification. If it opens and connects, you are finished.</li><li>If the binary is clearly installed and sessions still will not start, check the account tier. Claude Code needs Pro, Max, Team, Enterprise or Console.</li></ul>
<p>Removing it again is equally plain, and knowing how is also how you learn where things went. Uninstalling from PowerShell on Windows removes $env:USERPROFILE\.local\bin\claude.exe and $env:USERPROFILE\.local\share\claude. Those two paths are the binary and its data, and checking whether they exist is a quick way to confirm a native install actually landed.</p>
<h2>What Is Different on Windows Compared to Mac</h2>
<p>Less than people expect, and the differences all sit at the edges rather than in the work. The install commands differ. Sandboxing is available on WSL 2 and not on native Windows or WSL 1. Shell commands run through Git Bash or the PowerShell tool depending on whether Git for Windows is installed. The sessions themselves - how you talk to Claude Code, what it reads, what it asks permission for - are the same product.</p>
<ul><li>Install: irm https://claude.ai/install.ps1 | iex or winget install Anthropic.ClaudeCode on Windows, different commands elsewhere. Identical software afterwards.</li><li>Sandboxing: supported on WSL 2, not supported on native Windows or WSL 1. On native Windows your permission rules are the layer doing that job.</li><li>Shell tooling: Git Bash for the Bash tool when Git for Windows is installed, the PowerShell tool when it is not.</li><li>Paths in settings.json: Windows paths need doubled backslashes, because the file is JSON and a lone backslash escapes the next character.</li><li>Everything else: your project instructions file, your slash commands and your permission rules behave exactly as they do on any other machine.</li></ul>
<p>The practical upshot is that Windows is a first-class place to run this, and most of the friction people report is one of three things: the wrong shell during install, a path written without escaped backslashes, or an account tier that does not include Claude Code. None of those are Windows being difficult. They are just the three places Windows differs enough to catch you once.</p>
<blockquote><strong>TIP:</strong> Claude Code Club has Windows users in it, which sounds like a small thing until you have spent an evening searching a problem and found nothing but macOS terminal output. Members swap the Windows-specific answers - PowerShell versus CMD, WSL 2 setup, Git Bash paths that will not resolve - alongside everything else. It is $9 a month to join.</blockquote>
<h2>FAQ</h2>
<p><strong>Does Claude Code run on Windows without WSL?</strong></p><p>Yes. Native Windows is fully supported and needs nothing extra installed - no WSL, no virtual machine, no dual boot. Git for Windows is optional rather than required. The only capability you give up by staying native is sandboxing, which is supported on WSL 2 but not on native Windows or WSL 1. For most people the tradeoff favours staying native and using permission rules instead.</p>
<p><strong>What are the system requirements for Claude Code on Windows?</strong></p><p>Windows 10 build 1809 or later, or Windows Server 2019 or later, on x64 or ARM64 hardware with 4 GB of RAM or more. Supported shells are Bash, Zsh, PowerShell and CMD. Separately from the hardware, you need a Pro, Max, Team, Enterprise or Console account, because the free Claude.ai plan does not include Claude Code access even though the software will install without complaint.</p>
<p><strong>Should I install Claude Code with WinGet or the native installer?</strong></p><p>Both work, and the difference is updates. Native installs update themselves in the background. WinGet installs do not, so you stay on the version you installed until you run winget upgrade Anthropic.ClaudeCode yourself. If you want it to look after itself, use the native installer with irm https://claude.ai/install.ps1 | iex in PowerShell. If you already manage your software through WinGet, staying consistent is a reasonable trade.</p>
<p><strong>Why does my Claude Code install command fail in PowerShell?</strong></p><p>Because you are running the CMD version of the command. If the error mentions that the token &amp;&amp; is not a valid statement separator, you are in PowerShell and should run irm https://claude.ai/install.ps1 | iex instead. The reverse error, that irm is not recognized, means you are in CMD and want the curl install.cmd command. Check the prompt: PowerShell begins with PS, CMD does not.</p>
<p><strong>Do I need Git for Windows to use Claude Code?</strong></p><p>No. It is optional. With Git for Windows installed, Claude Code uses Git Bash for the Bash tool. Without it, shell commands run through the PowerShell tool instead, which is fully supported. If Git is installed but cannot be found, set CLAUDE_CODE_GIT_BASH_PATH in settings.json to the full path of bash.exe, remembering to double every backslash because JSON treats a single one as an escape character.</p>]]></content:encoded>
    </item>
    <item>
      <title>Should You Tell Clients You Used AI? Yes, and the Framing Is Everything</title>
      <link>https://www.claudecodeclub.ai/blog/should-you-tell-clients-you-used-ai</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/should-you-tell-clients-you-used-ai</guid>
      <pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Agency</category>
      <category>Clients</category>
      <description><![CDATA[The disclosure is almost never the problem. The timing is. Told in the proposal, it reads as your method. Discovered after delivery, it reads as something you hid, and the client reprices everything you already shipped.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Tell them, and tell them early. Disclosure in the proposal or the discovery call reads as a description of your method, while the same fact discovered after delivery reads as something you were caught hiding.</li><li>Clients asking about AI are rarely asking a philosophical question. They are asking whether it will break, who fixes it when it does, and whether they are paying developer rates for something that took you an afternoon.</li><li>One sentence is enough: I build with AI tooling, I review and test everything myself, and I stand behind the result. Put it in the proposal and it never has to become a conversation later.</li></ul>
<h2>Should You Tell Clients You Used AI?</h2>
<p>Yes, tell them - and put it in the proposal or the discovery conversation rather than in an email after delivery. You are not confessing to something. You are describing how you work, the same way you would name a hosting provider or a framework. The disclosure itself is almost never what damages a relationship. The timing is. A client who hears it up front hears a method. A client who works it out afterwards hears a secret.</p>
<p>I have watched both versions of this happen to builders I know. The ones who put a line in the proposal get a shrug, occasionally a question, and then the project proceeds. The ones who said nothing and got asked about it in month two spent the rest of the engagement defending work that was already finished and already fine. Nothing about the code changed between those two outcomes. Only the order of the sentences did.</p>
<h2>Hiding It Is the Actual Risk</h2>
<p>The exposure runs in the opposite direction to how most builders feel it. Disclosing costs you an occasional awkward question in a discovery call. Not disclosing costs you the relationship on the day it surfaces, and it does surface, because software has a long tail and you are not the last person who will ever look at that codebase.</p>
<ul><li>Their own developer reads the repository when the project is handed over, and forms a view without you in the room.</li><li>You mention a tool by name on a call, casually, six weeks in, and the client connects it to a question you dodged earlier.</li><li>A bug appears and needs explaining, and the explanation would be simple if you had not created a reason to be careful about how you word it.</li><li>They hire someone else later to extend the work, and that person tells them a story about how it was built.</li><li>Your own website talks about building with AI while your proposals do not mention it. Clients read both.</li></ul>
<p>Here is the part that actually hurts. Once it is discovered rather than disclosed, the AI stops being the subject of the conversation. Your judgment becomes the subject. The client is no longer asking whether AI-assisted code is acceptable, they are asking what else they were not told, and that is a much harder question to answer well.</p>
<blockquote><strong>WARNING:</strong> If you would feel uncomfortable if the client learned how the work was built, that discomfort is information. It is not telling you to hide it better. It is telling you that you have not yet worked out how to describe your own process in a way you can stand behind, and that is worth fixing before the next proposal goes out.</blockquote>
<h2>How to Say It in One Sentence</h2>
<p>One sentence, stated plainly, positioned as method rather than caveat. Something close to: I build with AI tooling as part of my process, I review and test everything that ships, and I stand behind the result the same way I would if I had typed every line. That is the whole disclosure. It names the tool, names the accountability, and does not invite a debate.</p>
<ul><li>In a proposal: one line in the how I work section, sitting alongside your stack and your process. Not a disclaimer at the bottom in smaller type.</li><li>On a discovery call: said in passing while you describe your process, in the same tone as everything else you say about it.</li><li>In the contract scope: a plain statement that AI tooling forms part of the delivery method, so it is on the record before anyone signs.</li><li>When asked directly mid-project: answer in one sentence and then carry on. Length reads as guilt, and a short confident answer usually ends the topic.</li></ul>
<p>What makes that sentence work is the second half of it. Any builder can say they use AI. The part the client needs is that a named human reviewed it, tested it, and remains responsible for it. If you only say the first half, you have handed them the worry without the reassurance. Your [one page AI proposal](/blog/one-page-ai-proposal-that-closes) is the natural home for it, because a proposal is already a document about method.</p>
<h2>What Clients Are Really Asking When They Ask</h2>
<p>When a client asks about AI, they are almost never opening a debate about creativity or authorship. They are asking three practical questions in a single awkward sentence, and if you answer the literal question rather than the real ones, you leave them exactly as worried as they were before.</p>
<ol><li>Is this going to break? They have heard that AI-generated code can be fragile. Answer it by describing what you test and how you verify, not by defending the tool.</li><li>Who fixes it when it does break? This is the one that actually keeps them up. Name the support arrangement, and say plainly that they call you, not a chatbot.</li><li>Am I paying developer rates for something you generated in an afternoon? This is the question nobody says out loud. Answer it before they have to ask it.</li><li>Where does my material go? For clients with confidential documents, customer data or unreleased product information, this is a legitimate operational question and deserves a specific answer rather than reassurance.</li></ol>
<p>Answer the question underneath the question and the surface question dissolves. That fourth one in particular rewards being able to speak specifically about what stays local, what is sent where, and what your permission setup allows - which is the ground covered in [is Claude Code safe for client work](/blog/is-claude-code-safe-for-client-work). A concrete answer here does more for a client's confidence than any amount of general reassurance.</p>
<h2>Up Front Versus Discovered Later</h2>
<p>The same facts land completely differently depending on when the client learned the context. This is not a psychological trick, it is just how trust works: information volunteered is read as transparency, and identical information uncovered is read as something that was being managed.</p>
<table><caption>How the same fact reads, depending on when they heard it</caption><thead><tr><th>The fact</th><th>Disclosed in the proposal</th><th>Discovered after delivery</th></tr></thead><tbody><tr><td>You built it with AI tooling</td><td>A method. Reads as current and efficient</td><td>A concealment. Reads as something you assumed they would object to</td></tr><tr><td>The build took three days</td><td>Evidence your process works</td><td>Evidence they were overcharged</td></tr><tr><td>A bug shows up in week two</td><td>Normal software. You fix it and everyone moves on</td><td>Proof the AI was sloppy and nobody checked</td></tr><tr><td>You cannot explain one function on the spot</td><td>Fine. You go and read it and come back</td><td>Confirmation that nobody understands the codebase</td></tr><tr><td>They bring in another developer later</td><td>A handover conversation you can lead</td><td>A conversation about you that happens without you</td></tr></tbody></table>
<p>Nothing in the left column is different from the right column except sequence. That is the entire argument for early disclosure, and it is why the right place for it is the proposal or the first real conversation, when nothing has been delivered yet and there is nothing for the information to retroactively reframe.</p>
<h2>When Disclosure Is Not Optional</h2>
<p>Sometimes this is not a judgment call at all. The client's contract, their vendor policy, or the terms of their own client's agreement can make disclosure a hard requirement, and in those cases the decision was made before you were asked. Read the paperwork before you assume it is silent on the subject.</p>
<ul><li>The agreement you sign. Look for clauses on third-party tools, subprocessors, confidentiality, and who owns what is delivered.</li><li>Their internal AI policy. Larger organisations increasingly have one, and it usually applies to contractors as well as staff.</li><li>Their procurement or security questionnaire. If they send one, the disclosure question is often already in it, and answering it inaccurately is a different category of problem entirely.</li><li>The contract above yours, if you are subcontracting through an agency. Their obligations to their client flow down to you whether or not anyone mentioned it.</li></ul>
<p>Then there is the client who says plainly that they do not want AI used. Before you decline or agree, find out what they mean, because the phrase covers several different concerns. Some mean no AI-generated content published under our name. Some mean our confidential material must not be sent to an outside service. Some are reacting to something they read and have not thought past it. Those are three different requirements and only one of them is genuinely incompatible with how you work.</p>
<blockquote><strong>WARNING:</strong> The one move that is never available is agreeing to no AI and then using it quietly. That converts a disagreement about tooling into a breach of what you agreed, and it is the version of this that ends in a refund conversation or worse. If the requirement is real and you cannot meet it, say so and decline the work.</blockquote>
<h2>How to Answer: Why Does It Cost That If AI Wrote It?</h2>
<p>Because they are buying a working outcome and someone accountable for it, not a quantity of typing. The honest answer is short: the price reflects what the thing is worth to their business and the fact that it is my name on it, not how many hours it took to produce. Said calmly, in one breath, that usually settles it. Said defensively, it never does.</p>
<p>It helps to be specific about what the money is actually paying for, because the client has genuinely lost sight of it in that moment. They are paying for the scoping conversation that decided what to build. For the judgment about what not to build, which is where most of the savings actually live. For the review and the testing. For the evening you spend fixing something urgent. And for the fact that a person, not a tool, carries the consequence if it goes wrong.</p>
<p>If this question keeps arriving, look at how you price rather than how you explain. Hourly billing makes the question unanswerable by design, because you have told the client that hours are the product and then handed them a reason to believe the hours went down. That is the argument for [pricing the outcome instead of the hour](/blog/stopped-charging-hourly-for-ai-builds), and it removes the objection at the source rather than talking past it every time.</p>
<p>None of this is about having a clever line ready. It is about having decided, before anyone asks, that how you build is a normal part of what you sell. Builders who have decided that answer the AI question in a sentence and get on with the work. Builders who have not, negotiate against themselves in every discovery call they take.</p>
<blockquote><strong>TIP:</strong> Inside Claude Code Club, members share the exact wording they use for this - the proposal lines that get signed, and the answers that land when a client pushes back on price. Reading three versions that already worked beats writing your own from scratch the night before a call. It is $9 a month to join.</blockquote>
<h2>FAQ</h2>
<p><strong>Do I have to tell clients I used AI?</strong></p><p>It depends on what you agreed to. Check the contract, their vendor or AI policy, and any security questionnaire they sent, because disclosure obligations are often already written down. Where the paperwork is silent it becomes a judgment call, and disclosing early is the safer side of that call. If your agreement does say something specific, follow it rather than a general rule of thumb.</p>
<p><strong>What if a client says they do not want AI used at all?</strong></p><p>Ask what they mean before you respond. The phrase usually covers one of three concerns: no AI-generated content published under their name, no confidential material sent to outside services, or a general unease they have not examined. The first two can often be worked with. If the requirement is genuinely incompatible with how you build, decline the project rather than agreeing and doing it quietly anyway.</p>
<p><strong>How do I disclose AI use without sounding like I am apologising?</strong></p><p>Keep it to one sentence and say it in the same tone as the rest of your process. Name the tooling, then name your accountability: you review and test everything and you stand behind the result. Put it in the how I work section of the proposal, not in a disclaimer at the bottom. Length signals discomfort, so a short confident line usually ends the topic immediately.</p>
<p><strong>Will telling clients I used AI make them want to pay less?</strong></p><p>Only if your pricing is built on hours. If you sell time, disclosing that the work went faster hands the client an argument, and they will use it. If you price the outcome, the tooling is simply how the outcome gets produced and the conversation does not arise. The disclosure is not the problem in that scenario - the pricing model is what created the opening.</p>
<p><strong>When in a project should I bring up AI?</strong></p><p>In the proposal or the discovery conversation, before anything is delivered. At that point there is no finished work for the information to reframe, and the client evaluates it as part of your method alongside everything else. The worst possible moment is after delivery or during a bug, when the same fact arrives with a reason attached and gets read as an explanation rather than a description.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Build a WordPress Plugin With Claude Code (Start to Installed)</title>
      <link>https://www.claudecodeclub.ai/blog/build-a-wordpress-plugin-with-claude-code</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/build-a-wordpress-plugin-with-claude-code</guid>
      <pubDate>Wed, 19 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Building</category>
      <category>Claude Code</category>
      <category>Projects</category>
      <description><![CDATA[A WordPress plugin is one of the best first real builds, because the platform gives you the whole application and you only write the missing piece. Here is the process I use with Claude Code, the four questions to answer before you prompt, and the PHP-specific traps the agent will walk you into.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>You can build a working WordPress plugin with Claude Code in an afternoon, because WordPress already supplies the admin, the database, the users and the theme. Your plugin is only the missing behaviour, which is a much smaller build than it sounds.</li><li>The whole outcome is decided by four answers you give before you prompt: what the plugin does, where in WordPress it appears, what it stores, and who is allowed to use it. Skip those and the agent invents them for you, usually wrongly.</li><li>The traps are WordPress-specific rather than AI-specific: unprefixed function names, missing capability checks, unsanitised input, and code that assumes a plugin is the only thing running on the site. Review for those four every time.</li></ul>
<h2>Why a WordPress Plugin Is a Good Build to Do With Claude Code</h2>
<p>A WordPress plugin is a small amount of code that plugs into a large amount of existing application. The login system, the database layer, the admin interface, the user roles, the media handling and the front-end theme are already there and already work. Your plugin adds one behaviour on top. That is a genuinely small surface, which is exactly the shape of build an agent handles well.</p>
<p>It is also a build with a real audience attached. An enormous share of the small-business web runs on WordPress, which means a plugin that solves one specific annoyance has customers who already have the platform installed. Compared with a standalone app where you have to persuade someone to sign up for anything at all, the distance between a working plugin and someone actually using it is short.</p>
<blockquote><strong>NOTE:</strong> The framing that makes this easy: you are not building an application. You are writing the paragraph that WordPress is missing. Every time the agent starts building something WordPress already provides - its own user table, its own settings screen, its own file uploader - stop and point it at the existing one.</blockquote>
<h2>Answer These Four Questions Before You Prompt</h2>
<p>The quality of the plugin is decided before you type anything into Claude Code. Four answers, written down, in plain language. If you cannot answer one of them, that is the part of the idea that is not finished yet, and the agent will paper over it with a guess.</p>
<ol><li>What does it do, in one sentence, with no and in it. Adds a delivery-date field to the checkout is a plugin. Adds a delivery-date field and emails the driver and shows a dashboard is three plugins in a coat.</li><li>Where does it appear? WordPress has distinct surfaces and they are built completely differently. An admin settings page, a block in the editor, a shortcode in a post, a widget, a change to the front-end output, or something with no interface at all that just runs on a schedule. Name the one you want.</li><li>What does it store, and where? Nothing at all, a handful of settings in the options table, extra fields attached to posts, or its own database table. These are four different builds, and the agent will default to the most complicated one if you leave it open.</li><li>Who can use it? Every admin, only the site owner, logged-in users, or the public. WordPress has a capability system for exactly this, and an agent that was not told will frequently write an endpoint anyone on the internet can call.</li></ol>
<p>Write those four answers into a short brief and hand it over as the opening message rather than describing the plugin conversationally. This is the same discipline as any other build, and we go deeper on it in [how to write a project brief for Claude Code](/blog/how-to-write-a-project-brief-for-claude-code). On WordPress it matters more than usual because the platform has so many valid places to put the same feature.</p>
<h2>The Build Order That Works</h2>
<p>Build in the order that gets something visible on the screen fastest, then add behaviour to a thing that already exists. Trying to get the whole plugin right in one prompt produces a large amount of code you cannot check.</p>
<ol><li>Get an empty plugin to activate. A single main file with the plugin header comment, nothing else. Drop it in, activate it, confirm WordPress shows it in the plugin list with no errors. This takes two minutes and it proves your local setup works before any real code exists.</li><li>Add the surface with nothing behind it. The settings page that renders one heading, or the shortcode that outputs the word working. See it appear in the right place in the admin or on the page. Now you know your hooks are registered correctly.</li><li>Add the storage. Save one setting, reload the page, confirm the value came back. Persistence is where most plugin bugs live and it is far easier to prove with one field than with twelve.</li><li>Add the actual behaviour. Now that the plumbing is verified, the interesting part is a small change to a thing that already works, which is the cheapest possible place to be wrong.</li><li>Add the guards. Capability checks, input sanitising, output escaping, and a check that the plugin degrades sensibly if something it depends on is missing.</li></ol>
<blockquote><strong>TIP:</strong> Run a local WordPress install rather than testing on a live site. The agent will occasionally produce a fatal PHP error, and on a live site that is a white screen for your visitors while you work out which line did it. Locally it is a two-second annoyance.</blockquote>
<p>Tell Claude Code your WordPress version and whether the site uses a block theme or a classic theme in the first message. The correct way to add a feature has changed significantly between those two worlds, and an agent guessing will sometimes hand you the approach that was right several years ago.</p>
<h2>The Four WordPress Traps to Review For Every Time</h2>
<p>These are not AI mistakes. They are WordPress mistakes that agents make because a plugin is written as though it is the only code on the site, when in reality it is sharing one PHP process with a theme and thirty other plugins.</p>
<table><caption>What to check before a plugin goes anywhere near a real site</caption><thead><tr><th>Trap</th><th>What goes wrong</th><th>What to check</th></tr></thead><tbody><tr><td>Unprefixed names</td><td>Two plugins define a function with the same name and the site fatals</td><td>Every function, class, option name and database table starts with a prefix unique to your plugin</td></tr><tr><td>Missing capability checks</td><td>Any logged-in user, or anyone at all, can trigger an admin action</td><td>Every admin action and endpoint verifies the current user is allowed to do it, on the server</td></tr><tr><td>Unsanitised input and unescaped output</td><td>User input reaches the database or the page unfiltered</td><td>Everything coming in is sanitised on the way in, everything going out is escaped on the way out, with no exceptions</td></tr><tr><td>Assuming a clean environment</td><td>The plugin breaks when a dependency is missing or the site is multisite</td><td>It checks what it needs exists and fails with a clear message rather than a fatal error</td></tr></tbody></table>
<p>Run that review as a separate task in a fresh session rather than as the last line of the build prompt. An agent that has spent an hour building something is a poor judge of it; a clean session reading the code cold behaves like a different reviewer. Ask it to list every place user input enters and every action that changes data, with line numbers, and state which check guards each one. A list with line numbers is checkable, a paragraph saying the security looks fine is not.</p>
<blockquote><strong>WARNING:</strong> If your plugin adds an endpoint that anything can call, treat it with the same seriousness as any other public surface. This is the single most common way a small helpful plugin turns into a real problem on somebody's site, and it is invisible in the browser because the admin screens all look correct.</blockquote>
<h2>Turning the Plugin Into Something People Install</h2>
<p>A plugin that works on your machine is about seventy percent of the job. The last stretch is the part that decides whether anyone else ever runs it.</p>
<ul><li>A readme that says what it does in the first sentence and what it does not do in the second. The second sentence prevents most bad reviews.</li><li>Sensible defaults, so it does something useful the moment it is activated without a settings tour.</li><li>Clean uninstall. Remove your options and tables when the plugin is deleted, unless the user has asked you to keep the data.</li><li>A version number and a changelog, because the first support question you get will be which version are you on.</li><li>One screenshot of the thing actually working. It converts better than any description of it.</li></ul>
<p>This is also where a plugin becomes a paid product rather than a favour. A narrow plugin that removes a specific recurring annoyance for a specific kind of site is one of the more straightforward things to sell, because the buyer can evaluate it in about a minute. If you are building for a client rather than for a marketplace, the handover matters as much as the code, which we cover in [how to hand off a Claude Code project](/blog/how-to-hand-off-a-claude-code-project).</p>
<blockquote><strong>TIP:</strong> Claude Code Club members ship small builds like this constantly and post them for review before they go out, which is the cheapest way to find the capability check you forgot. If you are about to put a plugin on somebody else's site, that is the room you want reading it first. It is $9 a month to join.</blockquote>
<h2>What Not to Build First</h2>
<p>Three categories are much harder than they look and make poor first plugins, regardless of how capable the agent is.</p>
<ol><li>Anything that touches payments or checkout on a live store. The cost of a subtle bug is somebody's real money and the testing burden is enormous. Build your second plugin here, not your first.</li><li>Anything that has to work across every theme. Front-end output that must look right on any theme anyone might install is a support commitment, not a feature. Admin-side plugins avoid this entirely.</li><li>Anything that duplicates a core WordPress capability. If the platform already has a way to do it, your version has to be better than a thing thousands of people have maintained for years, and it usually is not.</li></ol>
<p>The best first plugin is boring, admin-side, and scratches an itch you personally have on a site you personally run. You get a real user with real feedback on day one, and that user is you, which makes the feedback loop about as short as it can get.</p>
<h2>FAQ</h2>
<p><strong>Can Claude Code build a WordPress plugin from scratch?</strong></p><p>Yes, and it is a good fit because WordPress supplies most of the application already and the plugin is a small piece of code on top. What the agent will not do reliably on its own is add the capability checks, prefixing and input sanitising that WordPress specifically requires, because those are conventions of the platform rather than obvious parts of the request. Build with the agent, then review for those four things.</p>
<p><strong>Do I need to know PHP to build a WordPress plugin with Claude Code?</strong></p><p>Not to get a working plugin, but you do need to be able to read what came back well enough to spot when a function is missing a permission check or a value is going into the database unfiltered. You do not have to be able to write it from memory. Reading is a much lower bar than writing and it is the bar that actually matters here.</p>
<p><strong>Should I test a new plugin on my live site?</strong></p><p>No. Use a local WordPress install or a staging copy, because an agent will occasionally produce a fatal PHP error and on a live site that is a blank page for your visitors until you find the line. Locally the same mistake costs you a few seconds and nobody else sees it.</p>
<p><strong>How long does it take to build a simple WordPress plugin?</strong></p><p>A narrow admin-side plugin with one settings screen and one behaviour is realistically an afternoon, most of which is the reviewing and testing rather than the writing. Anything that touches the front end across multiple themes, or that handles payments, is a much larger commitment and should not be your first one.</p>
<p><strong>Can I sell a plugin I built with Claude Code?</strong></p><p>Yes, and a narrow plugin that removes one specific recurring annoyance is one of the easier things to sell because a buyer can evaluate it in about a minute. What decides whether it sells is not how it was written but whether the problem is real and specific enough that someone was already looking for a solution to it.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Estimate a Claude Code Project Timeline (Without Getting Burned)</title>
      <link>https://www.claudecodeclub.ai/blog/how-to-estimate-a-claude-code-project-timeline</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/how-to-estimate-a-claude-code-project-timeline</guid>
      <pubDate>Wed, 19 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Agency</category>
      <category>Clients</category>
      <category>Pricing</category>
      <description><![CDATA[AI made the building fast and left everything else exactly as slow as it was. That gap is why builders quote two weeks and deliver in six. Here is the estimating method I use, and the phases that actually consume the calendar.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Estimate the phases, not the build. Building is the part AI compressed; discovery, review, client feedback and deployment are unchanged, and they are where the calendar actually goes.</li><li>Estimate in working sessions rather than calendar days, then convert. A build that is four sessions of work still takes three weeks if the client answers questions once a week, and the client only ever hears the second number.</li><li>Quote a date range tied to named client dependencies rather than a single day. Two weeks from the day I have your logins and content is a promise you control; two weeks from today is a promise they control.</li></ul>
<h2>Why Claude Code Project Timelines Get Estimated Wrong</h2>
<p>Estimates go wrong because the thing that got dramatically faster is not the thing that consumed the calendar. AI compressed the writing of code. It did not compress waiting for the client to send their brand assets, or the two days of review after the first demo, or the afternoon lost to a domain registered to somebody who left the company three years ago.</p>
<p>So the builder does the honest thing and estimates from experience: this used to be four weeks of code, the agent makes me several times faster, call it one week. Then the project takes five, and the extra four weeks contained almost no code at all. Nothing about the reasoning was lazy. It measured the wrong quantity.</p>
<blockquote><strong>NOTE:</strong> The reframe that fixes this: you are not estimating how long the work takes. You are estimating how long it takes for the work, the client and the outside world to all be ready at the same time. The second number is always larger, and it is the one on the invoice.</blockquote>
<h2>Split the Project Into Four Phases and Estimate Each Separately</h2>
<p>Estimate four phases on their own, because they scale completely differently and only one of them is affected by how fast your agent is.</p>
<table><caption>The four phases and what actually drives each one</caption><thead><tr><th>Phase</th><th>What it covers</th><th>Does the agent speed it up?</th></tr></thead><tbody><tr><td>Discovery</td><td>Getting clear on what is being built, seeing their systems, agreeing scope</td><td>Barely. It moves at the speed of their availability</td></tr><tr><td>Build</td><td>Writing the thing</td><td>Enormously. This is the phase everyone quotes</td></tr><tr><td>Review</td><td>Your own verification, then their rounds of feedback</td><td>No. Review is judgement, and it is a human bottleneck</td></tr><tr><td>Deploy and handover</td><td>Domains, accounts, access, training, documentation</td><td>No. It is mostly credentials and permissions belonging to other people</td></tr></tbody></table>
<p>Write a number against each phase in your notes before you write a number in the email. The first time you do this the split is usually a shock. On small client builds it is common for the build phase to be a minority of total elapsed time, which means quoting the build and adding a bit for safety is structurally guaranteed to underquote.</p>
<p>Discovery is the phase most builders leave out of an estimate entirely, and it is the one that most reliably decides whether everything after it goes smoothly. If you are not running one properly, fix that before you fix your estimating - we covered it in [the discovery call for AI projects](/blog/discovery-call-for-ai-projects).</p>
<h2>Estimate in Sessions, Then Convert to Calendar Time</h2>
<p>Estimate the build in working sessions, meaning uninterrupted blocks where you and the agent are genuinely on the problem. Sessions are a unit you can judge from experience. Calendar days are not, because they also contain other clients, weekends, and everybody else's response times.</p>
<ol><li>Break the build into features you can name in one sentence each. Anything you cannot name in one sentence is two features hiding.</li><li>Put a session count against each one. Most well-scoped features on a Claude Code build land at one to three. If something reads as more than five, it is not a feature and you have not finished scoping it.</li><li>Add the phases around it: discovery sessions, your own review passes, deployment and handover. These are real work and they belong in the total.</li><li>Convert to calendar time using how many of these sessions you honestly get in a week on this project, not how many exist in theory. For most people carrying more than one client that number is three or four, not ten.</li><li>Add the client's response latency. If they take two days to answer and the build needs three decisions from them, that is six days of calendar no amount of speed removes.</li></ol>
<blockquote><strong>TIP:</strong> Keep the session estimates in a note and write the actuals beside them when the project ships. Three projects in, you will know your personal multiplier between what you estimate and what happens, and that one number makes you better at this than almost anyone quoting on instinct.</blockquote>
<p>The conversion step is where the honesty lives. Four sessions of work is not four days. It is four sessions plus the gaps, and the gaps belong to the client's calendar as much as yours. Skipping the conversion is how a genuinely accurate build estimate becomes a missed deadline.</p>
<h2>The Unknowns That Actually Blow Up Timelines</h2>
<p>Some categories of work carry far more variance than their size suggests. Price the variance instead of pretending it is not there, and name it on the call so the client hears it from you before it happens rather than after.</p>
<ul><li>Anything that integrates with a system you have not seen. An API you have not read is not an estimate, it is a guess. Ask for access during discovery and look at it before you quote.</li><li>Anything that depends on the client's existing accounts. Payment processors, domain registrars, analytics, email providers - the work is minutes and the access is sometimes weeks.</li><li>Anything involving their real data. Real data is always messier than the sample, and the cleanup is invisible until you have it in front of you.</li><li>Anything with a compliance, legal or brand approval step. That is not your timeline. Ask who signs off and how long they usually take.</li><li>Anything described as simple by somebody who is not building it. That word rarely survives contact with the actual requirement.</li></ul>
<p>The move that removes most of this risk is charging for a short paid discovery before you quote the build. You look at the systems, read the API, see the data, and then give a number you can defend. Clients who will not pay for a couple of hours of scoping are usually the same clients who will not pay for the overrun either.</p>
<h2>How to Present the Estimate So It Holds</h2>
<p>Quote a range, tie the start to a named dependency, and list what you need from them in the same message. A range with conditions is a professional estimate. A single confident date with no conditions is a hostage you handed over for free.</p>
<ol><li>Give a range, not a point. Two to three weeks, not seventeen days. False precision buys you nothing and costs you the margin the moment it slips.</li><li>Start the clock on their action. Two to three weeks from the day I have access to your site and the product copy. Now the date moves when they move, which is both fair and true.</li><li>List the dependencies explicitly. Three or four bullets naming exactly what you need and when. This is the highest-value paragraph in the whole document.</li><li>Name the review rounds. Two rounds of feedback included, each returned within three working days. Unbounded feedback is an unbounded timeline, and one line prevents it.</li><li>Say what happens when scope changes. Not as a threat, just a mechanism: new requests get quoted as an addition rather than absorbed. The related trap is covered in [how to handle scope creep on client projects](/blog/how-to-handle-scope-creep-on-client-projects).</li></ol>
<blockquote><strong>WARNING:</strong> Never quote a timeline out loud on a call under pressure. Give a range you already worked out, or say you will send the estimate that evening. Every disastrous timeline I have watched a builder commit to was said in a meeting because a silence needed filling.</blockquote>
<h2>What to Do When You Are Going to Miss It</h2>
<p>Tell them early, say specifically what changed, and give a new date with the same conditions attached. The damage from a slipped deadline is almost entirely about when they found out, not how late it was.</p>
<p>A client told in week one that the integration is worse than it looked and delivery moves by five days will usually say fine. The same client told on the delivery date will not, because they have already told somebody else, and you have made them look bad rather than merely late. Silence is the expensive part, not the delay.</p>
<p>Then write the real number in your notes next to the estimate. An overrun is only wasted if it does not calibrate the next quote. Two or three of those and your estimates stop being optimistic, which is worth more to your margin than any further speed improvement in the build itself.</p>
<blockquote><strong>TIP:</strong> Members of Claude Code Club compare real numbers on this - what they quoted, what it took, and where the extra weeks went. Seeing three other builders' actuals is the fastest way to calibrate your own before a client pays for the lesson. It is $9 a month to join.</blockquote>
<h2>FAQ</h2>
<p><strong>How long does a typical Claude Code client project take?</strong></p><p>It depends far more on the client than on the build, which is why a single number is not useful. The honest framing is that the coding phase is often a minority of elapsed time, and discovery, review rounds and access to the client's existing accounts consume the rest. Estimate the four phases separately and you will land closer than any rule of thumb.</p>
<p><strong>Should I quote a fixed deadline or a range?</strong></p><p>A range, tied to a named dependency such as the day you receive access and content. A single date implies a precision the work does not have and hands the client a stick if anything moves by a day. A range with conditions reads as more professional, not less, because it shows you have thought about what could change.</p>
<p><strong>How do I stop client feedback from wrecking the timeline?</strong></p><p>Put a number on it in the estimate: how many rounds of feedback are included and how many working days each one has. Unbounded review is the most common source of overrun on small builds precisely because nobody ever agreed it was bounded. One line fixes it, and clients rarely object because it also tells them when to expect the finished thing.</p>
<p><strong>Does using Claude Code let me quote shorter timelines than other builders?</strong></p><p>On the build phase, genuinely yes. On the total, much less than you would expect, because discovery, review, approvals and access are unaffected. Quoting the compressed build as though it were the whole project is the specific mistake that makes fast builders look unreliable, and it is entirely avoidable.</p>
<p><strong>What should I do if the project is going to run over?</strong></p><p>Tell the client as soon as you know, say specifically what changed, and give a revised date with the same conditions attached. Clients forgive delays they hear about early far more readily than delays they discover on the due date, because the early version lets them adjust their own commitments instead of being caught out by yours.</p>]]></content:encoded>
    </item>
    <item>
      <title>Why Is Claude Code Slow? The Real Causes and How to Speed It Up</title>
      <link>https://www.claudecodeclub.ai/blog/why-is-claude-code-slow</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/why-is-claude-code-slow</guid>
      <pubDate>Tue, 18 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Workflows</category>
      <category>Tools</category>
      <description><![CDATA[Claude Code is usually slow for one of three reasons: the context you are sending is too big, the tools it is running are the actual bottleneck, or you picked a heavier model than the task needs. Here is the Slow Loop Audit I run to find which one it is in about five minutes.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Claude Code is slow for three reasons and almost never anything else: you are sending too much context on every turn, the tools it runs (tests, builds, searches, MCP servers) are eating the clock, or you are using a heavier model than the job needs.</li><li>The fix order matters. Trim context first because it is free and it compounds, then time your tools, then change model. Swapping model first hides the real problem and you pay for it again next week.</li><li>Run the Slow Loop Audit: read your context bill, time one tool call, then check the model. It takes about five minutes and it tells you exactly which of the three is costing you the wait.</li></ul>
<h2>Why Claude Code Is Slow - The Short Answer</h2>
<p>Claude Code is slow because of what you are asking it to carry, not because the product is broken. Every turn, it re-sends the conversation plus whatever files, memory, and tool definitions are loaded, and the model has to read all of that before it writes a single character. On top of that, some of the wait you feel is not the model at all - it is your test suite, your build, or a slow search running inside the loop while the agent waits like you do.</p>
<p>So there are exactly three meters to read. The context meter: how many tokens go up on every turn. The tool meter: how long the commands it runs actually take. The model meter: whether the model you selected is heavier than this task needs. Almost every slowness complaint resolves to one of those three, and you can find out which in about five minutes.</p>
<blockquote><strong>NOTE:</strong> The single most common cause is the least dramatic one: a project that quietly accumulated a huge CLAUDE.md, half a dozen MCP servers, and a habit of reading whole files. None of those feel slow on the day you add them. Together they tax every turn forever.</blockquote>
<h2>The Slow Loop Audit - Three Checks in Order</h2>
<p>The Slow Loop Audit is our name for the fixed order you check these in. Order matters because context is free to fix and it compounds across every future turn, while changing model is a one-time trade you can make any time. Do them in this order and you never pay twice.</p>
<ol><li>Read the context bill. Look at what is auto-loaded before you type anything: your CLAUDE.md, any memory or rules files, connected MCP servers and their tool definitions, and any files already read into the conversation. This is the fixed tax on every single turn.</li><li>Time one tool call. Ask Claude Code to run the thing it runs most often - your test command, your build, a search across the repo - and watch the clock yourself. If that command takes ninety seconds by hand, the agent is not slow, your command is.</li><li>Check the model. Only after the first two are clean should you ask whether the task actually needs the heaviest model available. Routine edits, renames, and file plumbing do not.</li></ol>
<blockquote><strong>TIP:</strong> Do the audit on a boring, repeatable task, not on the hard thing you are stuck on. You want to measure the loop, not the difficulty of the problem.</blockquote>
<h2>Cause One - Your Context Is Too Big</h2>
<p>Context is the number one cause and the easiest to fix. Everything the model has to read before responding is paid for in latency on every turn, not once. A CLAUDE.md that grew to a few thousand words, a rules directory nobody has pruned, and three files that were read in full an hour ago are all still riding along on the request you just sent.</p>
<ul><li>Trim CLAUDE.md to instructions that change behavior. If a line is describing something the agent can discover by reading the code, delete it. Project structure, file paths, and conventions belong in the code, not in a file that is re-sent every turn.</li><li>Prefer search over reading. Grep and Glob return the matching lines, a full Read returns the whole file. On a large file that difference is the whole slowdown.</li><li>Disconnect MCP servers you are not using today. Each connected server injects its tool definitions into the context whether you call it or not, so six idle servers are six standing taxes.</li><li>Start a fresh session when you change task. A long conversation carries everything that came before it. If you finished the bug and are now on a feature, the bug's context is pure overhead.</li><li>Watch for large generated files. A lockfile, a build artifact, or a giant JSON fixture read into context once will slow every turn after it.</li></ul>
<p>The tell for a context problem is that the first turn of a session feels fine and the twentieth feels sluggish, on the same kind of task. Latency that grows as the conversation grows is context, every time.</p>
<h2>Cause Two - The Tools Are the Bottleneck, Not the Model</h2>
<p>A large share of perceived slowness is the agent sitting there waiting for your machine. When Claude Code runs your test suite, it waits for the exact same amount of time you would. If your suite takes four minutes, an agent loop that runs it three times spends twelve minutes doing nothing but waiting, and it will look for all the world like the model is thinking.</p>
<ul><li>Give it a narrow test command. Point it at the one test file relevant to the change rather than the whole suite, and only run the full suite at the end.</li><li>Keep searches out of dependency folders. A repo-wide search that walks node_modules or a build output directory is slow for the agent for the same reason it is slow for you.</li><li>Run long builds outside the loop. If a production build takes minutes, do not make it a step the agent waits on mid-task.</li><li>Check hooks. A hook that fires on every tool call adds its own runtime to every tool call. A formatter that takes two seconds is fine; a full type check is not.</li></ul>
<blockquote><strong>WARNING:</strong> This is the cause people misdiagnose most often. They switch to a faster model, see no improvement, and conclude Claude Code is just slow. Time one tool call by hand before you touch anything else and you will know within a minute whether the wait is yours or the model's.</blockquote>
<h2>Cause Three - You Are Using a Heavier Model Than the Task Needs</h2>
<p>Model choice is a real lever, but it is the third one, not the first. Heavier models reason more and therefore take longer to produce the first token and the last one. That is a fair trade on architecture decisions, tricky debugging, and anything where being wrong is expensive. It is a bad trade on renaming a variable across twelve files.</p>
<p>Extended thinking is the same trade in a smaller package. When you ask for more deliberation, you are explicitly buying latency with the expectation of a better answer. Turn it on for the hard step and off for the plumbing, rather than leaving it on all session and wondering where the time went.</p>
<blockquote><strong>TIP:</strong> A practical split that works: heavier model to plan and to review, lighter model to execute the plan. The expensive thinking happens twice, at the start and the end, instead of on every mechanical edit in between.</blockquote>
<h2>When It Is Not You - Limits, Retries, and Network</h2>
<p>Some slowness is genuinely outside your project. If you are near a usage limit, requests can be throttled or retried, and a retry looks exactly like a long think from where you are sitting. Heavy demand periods can add latency the same way. Neither of those is fixed by trimming CLAUDE.md, so it is worth ruling them in or out before you go rearranging your setup.</p>
<p>The way to tell the difference is consistency. A context or tool problem is reproducible - the same task is slow every time you run it. A limits or network problem is erratic, and the same prompt that crawled at four in the afternoon returns quickly an hour later. If your slowness moves around on its own, stop optimizing and go do something else for twenty minutes.</p>
<p>If you are running into usage limits regularly, that is a separate problem with its own fixes, and we walked through those in [what to do about Claude Code usage limits](/blog/claude-code-usage-limits-what-to-do).</p>
<h2>The Setup That Stays Fast</h2>
<p>Speed is not a one-time cleanup, it is a habit of not accumulating weight. The projects that stay fast are the ones where somebody prunes on a schedule instead of only when it gets painful.</p>
<ol><li>Cap your CLAUDE.md. Pick a length you are willing to re-read on every turn and hold it there. When you add a line, ask what comes out.</li><li>Keep MCP servers to the ones this project actually uses, and disconnect the rest.</li><li>Have a fast test command and a slow one, and tell the agent which is which in your project instructions.</li><li>Start fresh sessions at task boundaries rather than running one enormous conversation all day.</li><li>Re-run the Slow Loop Audit when a project starts to feel heavy, rather than guessing at it.</li></ol>
<p>If you want the wider version of this, keeping a session lean is the same discipline as [Claude Code context management](/blog/claude-code-context-management), and the file itself is covered in [the CLAUDE.md file guide](/blog/claude-code-claude-md-file).</p>
<blockquote><strong>TIP:</strong> Inside Claude Code Club we compare setups directly - what is in people's CLAUDE.md, which MCP servers are actually earning their place, and which test commands they hand the agent. It is the fastest way to find out that the thing slowing you down has already been solved by somebody three desks over. Membership is $9 a month.</blockquote>
<h2>FAQ</h2>
<p><strong>Why is Claude Code slow all of a sudden?</strong></p><p>Sudden slowness on a project that used to be quick is almost always something that got added recently: a new MCP server, a much longer CLAUDE.md, a hook that now runs on every tool call, or a test command that grew. Check what changed in your setup in the last week before you assume it is the model. If nothing in your project changed and the slowness comes and goes on its own, it is more likely limits or network conditions than anything you can fix locally.</p>
<p><strong>Does a bigger CLAUDE.md really make Claude Code slower?</strong></p><p>Yes, because it is re-sent on every turn rather than read once. A long instructions file is a fixed cost added to every request for the life of the project, so the cost is the length multiplied by the number of turns you will ever take. That is why trimming it is the highest-leverage speed fix available and why it is the first step of the Slow Loop Audit.</p>
<p><strong>Will switching to a lighter model fix slowness?</strong></p><p>It will help if the model was genuinely the bottleneck, and it will do nothing at all if your context is bloated or your test suite is the thing eating the clock. That is why model is the third check, not the first. Time one tool call by hand and look at what is auto-loaded before you type; if both are clean, then a lighter model for mechanical work is a good trade.</p>
<p><strong>Do MCP servers slow Claude Code down?</strong></p><p>Connected servers add their tool definitions to the context whether or not you call them, so a stack of servers you are not using today is a standing cost on every turn. It is not that any one server is heavy, it is that they accumulate. Keep the ones this project uses connected and disconnect the rest, and reconnect them when you actually need them.</p>
<p><strong>Is extended thinking worth the extra wait?</strong></p><p>On genuinely hard problems, yes, because the cost of a wrong answer you then have to unpick is much higher than the extra seconds. On routine edits it is pure overhead. Treat it as something you switch on for a specific step rather than a setting you leave on all session, and the wait stops feeling like a tax.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Add Authentication With Claude Code (Without Shipping a Hole)</title>
      <link>https://www.claudecodeclub.ai/blog/add-authentication-with-claude-code</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/add-authentication-with-claude-code</guid>
      <pubDate>Tue, 18 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Building</category>
      <category>Claude Code</category>
      <category>Workflows</category>
      <description><![CDATA[You can add authentication with Claude Code in an afternoon. The risk is that it looks finished and is not, because the login screen works while the server never checks anything. Here is the Auth Gate Checklist we run before any build with a login goes live.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>To add authentication with Claude Code, pick a managed auth provider first, have the agent wire it in, and then run a separate review pass whose only job is to check that the server refuses unauthenticated requests.</li><li>The failure mode is not a broken login screen. It is a working login screen in front of an API that never verifies anything, because the agent built what you described and you described the visible half.</li><li>Run the Auth Gate Checklist: identity, session, authorization. Three gates, checked on the server, tested by trying to walk past each one. If you cannot break in by hand, you are done.</li></ul>
<h2>How to Add Authentication With Claude Code - The Short Version</h2>
<p>Adding authentication with Claude Code is a three-part job: choose a managed auth provider, have the agent wire the sign-up and sign-in flow into your app, and then run a dedicated review pass that checks the server actually enforces the rules. The first two parts take an afternoon. The third part is the one people skip, and it is the one that decides whether you shipped a login or a decoration.</p>
<p>Be specific about the provider before you start. Tell the agent which auth service you are using, which framework you are on, and whether you want email and password, social sign-in, or magic links. A vague request produces a plausible custom implementation, and a custom auth implementation is the last thing you want on a project you are going to hand to a client.</p>
<blockquote><strong>WARNING:</strong> Do not have Claude Code write your own password hashing, session store, and token logic from scratch because it is capable of it. It is capable of it. That is not the same as it being a good idea. Use a managed provider so the parts that must never be wrong are somebody's full-time job.</blockquote>
<h2>The Real Risk - The Login Works and the Server Does Not Care</h2>
<p>The classic AI-built auth bug is that everything you can see works perfectly. You sign up, you sign in, you get redirected to the dashboard, the wrong password gets rejected. And behind that, the API route that returns the data will happily return it to anyone who calls it directly, because nothing on the server ever checks who is asking.</p>
<p>This happens for an understandable reason. You asked for a login. The agent built a login. The login is the visible part, and the visible part is what got described, demonstrated, and approved. The invisible part - every server route independently refusing requests that do not carry a valid session - was never in the request, so it was never in the build.</p>
<blockquote><strong>WARNING:</strong> We have watched an endpoint go live with no authentication in front of it and a funded API key behind it, and get found and drained overnight. Nobody had to be clever. The endpoint was public, the key had money on it, and that was the whole story. Treat any route that can spend money or read private data as something that must prove the caller is allowed, every single call.</blockquote>
<h2>The Auth Gate Checklist - Three Gates You Have to Close</h2>
<p>The Auth Gate Checklist is how we structure the review pass. There are exactly three gates between a stranger and your data, they are checked in order, and every one of them has to live on the server. If any gate is enforced only in the browser, it is not a gate, it is a suggestion.</p>
<ol><li>Identity - who is this? Sign-up, sign-in, sign-out, password reset, and email verification. Handled by your auth provider, not by you.</li><li>Session - are they still who they said they were? The token or cookie that proves identity on every subsequent request, stored somewhere a script on another site cannot read, and verified on the server before anything else happens.</li><li>Authorization - are they allowed to do this specific thing to this specific record? This is the gate that gets forgotten. A valid session proves you are a user. It does not prove you are allowed to read invoice number 412.</li></ol>
<p>Give the agent the checklist explicitly. Ask it to walk each server route and tell you which of the three gates that route enforces and where in the code the check happens. Routes that cannot answer are your bug list, and you will usually get one.</p>
<h2>Gate One - Identity, and Why You Use a Provider</h2>
<p>Use a managed authentication provider. The reason is not that authentication is hard to write, it is that authentication is hard to keep correct over years while you are busy doing other things. Password hashing standards move, token handling has sharp edges, and account recovery is a whole security surface on its own. A provider absorbs all of that and keeps absorbing it after you have stopped thinking about the project.</p>
<p>When you brief Claude Code, name the provider and the framework in the same sentence, and say which flows you want. Something like: wire up this specific auth provider in this specific framework, with email sign-in and Google sign-in, protected routes, and a sign-out that clears the session. Specificity here is the difference between the agent following a documented integration path and the agent inventing one.</p>
<blockquote><strong>TIP:</strong> Ask the agent which version of the provider's SDK it is writing against and have it check the current integration docs before it writes code. Auth SDKs change their recommended patterns more often than most libraries, and a confidently written integration against last year's API is a frustrating afternoon.</blockquote>
<h2>Gate Two - Session Handling, Where the Sharp Edges Are</h2>
<p>The session gate is where a good-looking build most often goes wrong, because the mistakes are invisible in the browser. The app works. It just also works for people it should not.</p>
<ul><li>Verify on the server, on every request. Not once at login, not in a layout component, not in the router. Every server route that touches private data checks the session itself.</li><li>Do not keep tokens where another script can read them. Prefer the httpOnly cookie your provider offers over anything the page's own JavaScript can reach.</li><li>Make sign-out actually end the session server-side. Clearing local state and redirecting to the home page looks identical to the user and is not the same thing.</li><li>Check expiry and refresh properly. A session that never expires is a permanent key handed to whoever eventually gets a copy.</li><li>Keep secrets out of the client bundle. Anything shipped to the browser is public, no matter what it is named.</li></ul>
<p>The test is blunt and it takes two minutes. Sign out, then call a protected API route directly with no session at all. You should get a refusal. If you get data, the gate is not there, whatever the login screen suggested.</p>
<h2>Gate Three - Authorization, the One Everyone Forgets</h2>
<p>Authorization answers a narrower question than authentication: not are you a real user, but are you allowed to touch this record. Being signed in is not permission. On most small builds this is the gate that is simply missing, because the app was built and tested by one person who only ever had their own data in front of them.</p>
<p>The failure looks like this. A route fetches an item by the identifier in the URL, checks that a valid session exists, and returns the item. Any signed-in user can change the number in the URL and read somebody else's record. The session check passed, so it feels secure. Nothing checked ownership.</p>
<ol><li>Every fetch of a single record filters by the current user's identifier as well as the record identifier, in the query itself.</li><li>Every write checks ownership before it writes, not after.</li><li>Role checks live on the server. A hidden admin button is not an access control, it is a hidden button.</li><li>If your database supports row-level security, turn it on and treat it as the backstop, not as the only check.</li></ol>
<blockquote><strong>TIP:</strong> Create a second test account. Almost every authorization bug becomes obvious the moment there are two users in the system and you try to reach one account's data while signed in as the other. One-user testing is how these ship.</blockquote>
<h2>The Review Pass - Make the Agent Attack Its Own Build</h2>
<p>Run the security review as a separate task in a fresh session, not as the last line of the build request. In the build session the agent has spent an hour establishing that the work is going well, and asking it to critique that same work in the same breath gets you a summary rather than an audit. A clean session reading the code cold is a genuinely different reviewer.</p>
<p>Give it a specific brief. Ask it to list every server route, state which of the three gates each one enforces and on which line, and flag every route that returns data without verifying both session and ownership. A list with line numbers is checkable. A paragraph saying the authentication looks solid is not.</p>
<ol><li>Call a protected route with no session. Expect a refusal.</li><li>Call it with a second user's session and someone else's record identifier. Expect a refusal.</li><li>Sign out, press back, and try to use the page you were on. Expect a refusal.</li><li>Search the client bundle for anything that looks like a secret. Expect nothing.</li><li>Only after all four behave, call it done.</li></ol>
<p>This is the same discipline as any other agent output, which we go into in [how to review Claude Code output before you ship](/blog/review-claude-code-output-before-you-ship). Auth is just the place where skipping it costs the most.</p>
<h2>Where This Fits in a Client Build</h2>
<p>If you are building for someone else, authentication is a line item with a review attached, not a checkbox on the feature list. Scope it that way out loud. The build is an afternoon and the review pass is its own block of time, and saying so up front is much easier than explaining afterwards why the audit was not included.</p>
<p>It also pairs with the other thing clients quietly assume is handled: payments. If your build has both a login and a checkout, they are the two places where being approximately right is not good enough. We covered the other half in [adding Stripe payments with Claude Code](/blog/add-stripe-payments-to-claude-code).</p>
<blockquote><strong>TIP:</strong> Claude Code Club members share the exact briefs they hand the agent for auth work, and the review prompts that actually surface holes rather than reassurances. If you are about to put a login in front of someone's real users, that is the room you want to check your plan in first. It is $9 a month to join.</blockquote>
<h2>FAQ</h2>
<p><strong>Can Claude Code build a complete authentication system?</strong></p><p>It can produce a working sign-up, sign-in and protected-route setup quickly, especially when you point it at a managed auth provider and name your framework. What it will not reliably do on its own is enforce ownership checks on every record and refuse unauthenticated requests at every server route, because those parts are invisible in the browser and therefore rarely part of the request you made. Build with the agent, then review against the three gates.</p>
<p><strong>Should I let Claude Code write custom auth instead of using a provider?</strong></p><p>No, for the same reason you would not hand-roll it yourself. Authentication is not hard to write once, it is hard to keep correct for years as standards shift and edge cases surface, and account recovery alone is a security surface most small projects get wrong. A managed provider makes those problems someone else's ongoing job, which is exactly what you want on a build you will not be staring at every week.</p>
<p><strong>How do I test that my authentication actually works?</strong></p><p>Sign out and call a protected API route directly with no session, then create a second account and try to read the first account's records while signed in as the second. Those two tests catch the overwhelming majority of real holes in small builds. If both are refused by the server and no secrets appear in your client bundle, you are in decent shape.</p>
<p><strong>What is the difference between authentication and authorization?</strong></p><p>Authentication establishes who someone is, authorization decides what that person is allowed to do. A valid session proves a user is signed in; it says nothing about whether they may read a particular invoice or delete a particular project. Most small-build security bugs are authorization bugs sitting behind working authentication, which is why the checklist treats them as two separate gates.</p>
<p><strong>Is it safe to store an auth token in local storage?</strong></p><p>Prefer the httpOnly cookie your provider offers, because anything the page's own JavaScript can read can also be read by a script that gets injected into your page. It is not that local storage is guaranteed to be exploited, it is that the cookie option costs you nothing and removes a category of risk. Take the free win.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Generate Documentation With Claude Code (Without Shipping Fiction)</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-generate-documentation</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-generate-documentation</guid>
      <pubDate>Mon, 17 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Workflows</category>
      <category>Building</category>
      <category>Claude Code</category>
      <description><![CDATA[Claude Code can write your README, your API reference, and your onboarding guide in minutes. The problem is that it will happily describe features you deleted last month. Here is the Read-Write-Prove loop I use so generated docs describe the code that actually exists.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>To generate documentation with Claude Code, point it at the real source files first, have it write the doc from what it read, then make it cite the file and function behind every claim. Skipping the citation step is what produces confident, wrong docs.</li><li>The failure mode is not bad writing, it is invented behaviour. An agent asked to write a README from a project description will describe the project you meant to build, not the one on disk.</li><li>I run the Read-Write-Prove loop: scope the read, generate the draft, then verify each statement against a real line of code. Anything that cannot be traced gets cut, not softened.</li></ul>
<h2>How to Generate Documentation With Claude Code</h2>
<p>To generate documentation with Claude Code, do it in three ordered moves. First, tell it exactly which files to read and nothing else, so its picture of the project comes from the code rather than from your description of it. Second, ask for the specific document you want, in a named format, written only from what it just read. Third, make it go back and attach a file path and a function or route name to every factual claim it made. The third move is not optional polish. It is the step that converts a plausible document into an accurate one.</p>
<p>The reason this order matters is that documentation is the one output where being wrong is worse than being absent. A missing README costs a new person twenty minutes of reading code. A README that describes an endpoint which no longer exists costs them an afternoon and a certain amount of trust in every other document in the repository. Generated docs fail in that specific direction, so the process has to push back in that specific direction.</p>
<blockquote><strong>NOTE:</strong> Documentation is the highest-leverage thing an agent can write for you and the easiest thing for it to fake, because prose has no test suite. Nothing fails loudly when a paragraph is wrong. You have to build the failure signal yourself.</blockquote>
<h2>Why Generated Docs Go Wrong</h2>
<p>Generated documentation goes wrong because the agent fills gaps instead of reporting them. If it has read six of your twenty files and you ask for a complete architecture overview, it will produce a complete-looking architecture overview. The missing fourteen files get replaced by the most conventional version of what those files usually contain in a project like yours. The output reads well precisely because it is generic.</p>
<p>This shows up in a few recognisable ways once you know to look. Setup instructions list environment variables that were renamed. A feature list includes something that was cut and never removed from an old comment. An API reference documents the parameters a function should logically take rather than the ones in its signature. In every case the sentence is reasonable and the code disagrees.</p>
<ul><li>Stale features: described because an old file, comment, or branch still mentions them.</li><li>Conventional invention: filled in from how projects like yours usually work, not from your code.</li><li>Silent scope gaps: whole modules the agent never opened, summarised anyway.</li><li>Drift on names: a variable, flag, or route renamed in code but not in the doc it was generated from.</li></ul>
<p>None of that is a reason to write docs by hand. It is a reason to treat the first draft as a draft. The agent is genuinely excellent at reading a large amount of code quickly and turning it into clear prose. It is unreliable at knowing the edge of its own knowledge, so you supply that edge.</p>
<h2>The Read-Write-Prove Loop</h2>
<p>Read-Write-Prove is the loop I use for every generated document, from a one-page README to a full internal handbook. It is three prompts, not one, and the separation is the whole point. Asking for all three at once collapses them back into a single confident guess.</p>
<ol><li>READ - name the files. Read these specific paths, nothing else, summarise what each one does, and list anything you could not determine from these files alone. That last clause is what produces an honest gap list.</li><li>WRITE - name the document. Using only what you just read, write the API reference as a table of endpoint, method, required parameters, and what it returns. Naming the format stops it padding with narrative it cannot support.</li><li>PROVE - demand a citation per claim. For each row, give the file and the exact function or handler name it came from. If a row has no source, delete the row and say what is undocumented. Deletion, not hedging.</li></ol>
<p>The PROVE step is where the value lives, and it is the step people skip because the draft already looks finished. When I started running it properly on my own projects, the consistent result was not a small correction. It was a handful of rows deleted per document and a short list of things that genuinely had no source, which is exactly the list I actually needed. The undocumented list is more useful than the documentation, because it tells you where the code is unclear enough that a careful reader could not work it out.</p>
<blockquote><strong>TIP:</strong> Insist on deletion rather than a caveat. An agent given permission to write that something may vary depending on configuration will use it on every uncertain claim, and you end up with a document that is technically never wrong and practically useless.</blockquote>
<h2>Which Documents Are Worth Generating</h2>
<p>Not every document benefits equally. The ones worth generating are the ones whose content is fully determined by the code, because those are the ones where PROVE has something to check against. The ones worth writing yourself are the ones that encode a decision, because no amount of reading source files reveals why you chose one approach over another.</p>
<table><caption>Where generation helps and where it does not</caption><thead><tr><th>Document</th><th>Generate or write</th><th>Why</th></tr></thead><tbody><tr><td>API or CLI reference</td><td>Generate</td><td>Every claim traces to a signature or handler, so the prove step is mechanical and thorough.</td></tr><tr><td>Setup and install steps</td><td>Generate, then run them</td><td>Fully determined by config files, and you can verify by following the steps on a clean checkout.</td></tr><tr><td>Module or folder overview</td><td>Generate</td><td>The agent reads faster than you do and structure is visible in the files themselves.</td></tr><tr><td>Architecture decisions</td><td>Write yourself</td><td>The reasoning behind a tradeoff is not in the code, so the agent will invent a plausible rationale.</td></tr><tr><td>Runbook for an incident</td><td>Write yourself</td><td>Depends on what actually broke in production, which no file records.</td></tr><tr><td>Contribution and review rules</td><td>Write yourself</td><td>These are preferences, and generated preferences are just the industry average.</td></tr></tbody></table>
<p>The split is easy to remember: generate description, write judgement. If a careful reader with your whole repository open could reconstruct the document, generate it. If they could not, it has to come from you, and that is also the part worth your time.</p>
<h2>Keeping Docs From Drifting Again</h2>
<p>Generated docs decay the same way handwritten ones do, only faster, because they were cheap to produce and nobody feels ownership of them. The fix is to attach regeneration to a moment that already happens rather than to a resolution to be diligent. Two moments work well: the point where you finish a feature, and the point where you review a change.</p>
<p>The practical version is a single instruction in your project convention file saying that any change to a route, a command, a flag, or an environment variable requires the matching document to be regenerated in the same session. Because the instruction lives in the file the agent reads every time, it applies without you remembering it. The guide to the [Claude Code CLAUDE.md file](/blog/claude-code-claude-md-file) covers what belongs in it, and [CLAUDE.md templates by project type](/blog/claude-md-templates-by-project-type) has starting points you can adapt.</p>
<p>For anything that can be executed, add one more check: run the doc. Setup instructions that were generated and never followed are a guess. Following them on a clean clone takes ten minutes and is the only way to find the step that was true six weeks ago. This is the same instinct behind [reviewing Claude Code output before you ship](/blog/review-claude-code-output-before-you-ship).</p>
<blockquote><strong>WARNING:</strong> Never let generated docs be the only place a fact lives. If the document says the service needs a specific variable and nothing in the code enforces it, the document will eventually be the only thing that is wrong, and nothing will tell you.</blockquote>
<h2>A Working Prompt Sequence</h2>
<p>Here is the sequence in the form I actually use, for a README on a small service. Run it in the desktop app with the project open. The terminal works identically if you prefer it, but nothing here requires it.</p>
<ol><li>Read package.json, the entry file, the config file, and every file the entry file imports directly. List each one and what it does in a single line. Then list every question about this service you cannot answer from those files.</li><li>Write a README with these sections and nothing else: what this service does, how to run it locally, required environment variables, available commands. Use only what you read. Where you have a gap from your list, write TODO and the specific question.</li><li>Now audit your own README. For every environment variable and command, give the file and line where it is defined. Delete anything you cannot locate and list what you deleted.</li><li>Follow your own local setup section on a fresh clone and tell me the first step that fails.</li></ol>
<p>Four prompts, and the last two are the ones that make the difference. If you only have appetite for one extra step beyond the draft, make it the audit. Consistently, the audit is what removes the sentence that would have cost somebody an afternoon. Getting sharper at writing these read-scopes is mostly a prompting skill, and [how to prompt Claude Code](/blog/how-to-prompt-claude-code) covers the general shape.</p>
<blockquote><strong>TIP:</strong> Inside Claude Code Club, members bring the README the agent just wrote and we run the audit prompt on it together, which usually turns up two or three claims nothing in the repository supports. If you have a doc you are about to commit, post it at claudecodeclub.ai for $9 a month and we will read it with you.</blockquote>
<h2>FAQ</h2>
<p><strong>Can Claude Code write a README from scratch on a project it has never seen?</strong></p><p>Yes, and it will be readable immediately. The risk is that readable and accurate come apart. Give it an explicit list of files to read rather than letting it decide what is relevant, then make it cite a source for every factual statement. A README generated from a named read-scope and audited afterwards is genuinely reliable. One generated from a sentence about what your project does is a well-written guess.</p>
<p><strong>How do I stop generated documentation from describing features that no longer exist?</strong></p><p>Make citation mandatory and deletion the penalty. Ask for the file and function behind each claim, and instruct it to remove any claim it cannot locate rather than hedge it. Stale features almost always come from an old comment, a dead file, or a stale branch that the agent read in good faith, so the citation step is what surfaces them.</p>
<p><strong>Should documentation live in the repository or somewhere else?</strong></p><p>In the repository, next to the code it describes. Documentation in a separate wiki drifts because updating it is a different task in a different tool, whereas a file in the repo can be regenerated in the same session as the change that invalidated it. The exception is anything a non-technical audience needs, which belongs wherever they already look.</p>
<p><strong>Is it worth generating docs for a solo project?</strong></p><p>Yes, and the reason is not future teammates. Generated module overviews are the fastest way to give an agent accurate context in later sessions, so the doc pays for itself the next time you come back to a part of the project you have forgotten. On a solo project, the reader you are writing for is mostly yourself in three months, plus the agent working alongside you.</p>
<p><strong>How often should I regenerate documentation?</strong></p><p>Tie it to the change rather than the calendar. Any edit to a route, command, flag, or environment variable should regenerate the matching document in the same session, which you can enforce with a line in your project convention file. Scheduled quarterly reviews sound disciplined and get skipped; the change-triggered version happens because the trigger is already in front of you.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Run a Client Kickoff Call for an AI Build</title>
      <link>https://www.claudecodeclub.ai/blog/client-kickoff-call-ai-build</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/client-kickoff-call-ai-build</guid>
      <pubDate>Mon, 17 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Freelancing</category>
      <category>Monetization</category>
      <category>Client Work</category>
      <description><![CDATA[The kickoff call is where a signed project either gets its rails or starts drifting. Most builders use it to be friendly and then discover in week three that nobody agreed what done means. Here is the Four Locks agenda I use to close a kickoff with the project genuinely de-risked.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>A client kickoff call for an AI build has one job: lock the four things that cause almost every overrun. Those are the definition of done, the single decision-maker, the access you need, and the reporting rhythm. Rapport is a side effect, not the agenda.</li><li>The kickoff is not the discovery call. Discovery decides whether to work together and what to charge. Kickoff happens after the money is agreed and exists to make delivery boring.</li><li>Run the Four Locks agenda in forty-five minutes, send a written recap the same day, and treat anything the client will not confirm in writing as an unresolved risk rather than a detail to sort out later.</li></ul>
<h2>What a Client Kickoff Call Is Actually For</h2>
<p>A client kickoff call is the first meeting after the project is agreed, and its only job is to remove the ambiguity that would otherwise surface halfway through the build. You are locking four things: what finished looks like in terms a non-technical person can check, who has the authority to approve it, what access you need and when it arrives, and how often you will report. Everything else on the call is conversation.</p>
<p>This is a different meeting from the discovery call, and running them as one costs you both. Discovery happens before the money is agreed and exists to decide whether there is a problem worth paying to solve, which the post on [discovery calls for AI projects](/blog/discovery-call-for-ai-projects) covers. Kickoff assumes the sale is closed and the client's mood has changed from evaluating you to expecting results, which is exactly the moment they will answer the hard questions honestly.</p>
<blockquote><strong>NOTE:</strong> The kickoff is the cheapest moment in the whole engagement to be difficult. A question that feels awkward on day one costs you thirty seconds. The same question in week four costs you a renegotiation, and by then the client has told their boss a date.</blockquote>
<h2>The Four Locks Agenda</h2>
<p>The Four Locks is the agenda I run every time, in this order, because each lock depends on the one before it. Forty-five minutes is enough. If you cannot close all four in that time, the thing blocking you is the finding, and it belongs in the recap as a risk rather than getting glossed over so the call can end on time.</p>
<ol><li>Lock the definition of done. Not a feature list, a sentence the client would use to tell a colleague it worked. Our team stops copying orders into the spreadsheet by hand is checkable. An automated order pipeline is not.</li><li>Lock the decision-maker. One named person who can approve and reject. If there are two, you have two projects. If the person on the call has to check with someone who is not there, that someone is the decision-maker and the next call includes them.</li><li>Lock access. Every system, credential, export, and sample file you need, with a named owner and a date. Access is the single most common reason a build stalls, and it is always somebody else's queue.</li><li>Lock the rhythm. When you will report, in what format, and what the client does with it. A fixed weekly note beats an open promise to keep them posted, because the note is a commitment you can keep without being asked.</li></ol>
<p>The order is deliberate. Done comes first because it changes what access you need. Access comes before rhythm because the first report is usually about whether access arrived. If you jump to the schedule before agreeing what finished means, you have scheduled a journey to an unspecified destination.</p>
<h2>How to Lock Done So It Cannot Move</h2>
<p>Done is locked when the client has described the outcome in their own words and you have written it down in those words. Not paraphrased into your language, and not translated into a feature list. The reason is that a feature list can be satisfied completely while the client remains unhappy, and when that happens you are technically right and unpaid.</p>
<p>The question I use is blunt: three months from now, what has changed in your week that tells you this was worth the money? It gets an answer about behaviour rather than software. Then I ask the counterpart: what would make you say this did not work? That second answer is more valuable, because it names the failure mode they are quietly worried about and have not mentioned.</p>
<ul><li>Write the client's exact sentence at the top of the recap, in quotes, as the acceptance test.</li><li>List what is explicitly not in scope. Two or three lines is enough, and it prevents the most predictable requests later.</li><li>Name the one thing that would count as failure, and say how you will avoid it.</li><li>Agree who checks the acceptance test and on what date.</li></ul>
<blockquote><strong>TIP:</strong> If the client cannot describe done without describing features, the project is not scoped yet and the kickoff has just earned its keep. Stop, book a short scoping session, and do not start building against a feature list nobody can check.</blockquote>
<h2>Access Is the Real Schedule Risk</h2>
<p>On AI builds specifically, access is the risk that eats timelines, and it is almost never the client's fault in a way you can complain about. They need somebody in IT to create an account, somebody in operations to export a sample, somebody in legal to confirm the data can leave a system. Each of those is a queue you do not control, and each one looks trivial until it takes nine days.</p>
<p>So the access lock is a list with owners and dates, made on the call while the decision-maker is present and motivated. Read it back. Ask who chases it if a date slips. Then put the list in the recap, because the recap is what the decision-maker forwards internally, and a forwarded list with names on it moves faster than a request you made once in a meeting.</p>
<p>There is a second reason to be precise here, and it is about your own exposure. Being handed credentials and client data on day one is a responsibility, and the client is entitled to know how you will handle it. Saying so plainly at kickoff builds more confidence than any reassurance later, and the piece on whether [Claude Code is safe for client work](/blog/is-claude-code-safe-for-client-work) sets out the position worth taking.</p>
<blockquote><strong>WARNING:</strong> Never start the clock on a fixed timeline before access exists. If the agreement says four weeks, the recap should say four weeks from the day the last item on the access list arrives. That single sentence has saved more projects than any amount of buffer.</blockquote>
<h2>The Recap Is the Deliverable</h2>
<p>The call is not finished when the call ends. It is finished when the recap is sent and confirmed, the same day, while everyone still remembers what was said. The recap is short and it exists to be forwarded. Anything the client will not confirm in writing was not actually agreed, and finding that out on day one is a gift.</p>
<table><caption>What goes in the kickoff recap</caption><thead><tr><th>Section</th><th>Content</th><th>Why it matters</th></tr></thead><tbody><tr><td>Done, in their words</td><td>The client's own sentence, in quotes</td><td>Becomes the acceptance test nobody can reinterpret later.</td></tr><tr><td>Not in scope</td><td>Two or three explicit exclusions</td><td>Turns the most likely scope creep into a pre-agreed conversation.</td></tr><tr><td>Decision-maker</td><td>One name, with role</td><td>Prevents approval routing through a committee mid-build.</td></tr><tr><td>Access list</td><td>Item, owner, date needed</td><td>Gets forwarded internally and moves other people's queues.</td></tr><tr><td>Reporting rhythm</td><td>Day, format, and what it contains</td><td>Replaces anxious check-in emails with a predictable note.</td></tr><tr><td>Start condition</td><td>The timeline starts when access is complete</td><td>Stops other people's delays becoming your overrun.</td></tr></tbody></table>
<p>Ask for one word back: confirmed. Not a signature, not a countersigned document, just a reply that says yes this is right. That reply is what you point at, calmly and without drama, the first time someone remembers the project differently. And when a request does arrive that sits outside the exclusions, you are having a pricing conversation rather than an argument, which is the whole subject of [handling scope creep on client projects](/blog/how-to-handle-scope-creep-on-client-projects).</p>
<blockquote><strong>TIP:</strong> Inside Claude Code Club, members post their kickoff recap before they send it and we look for the lock that is missing, which is almost always the start condition or the single decision-maker. Bring yours to claudecodeclub.ai for $9 a month and we will read it with you before the client does.</blockquote>
<h2>What to Do When a Lock Will Not Close</h2>
<p>Sometimes a lock will not close on the call. The client genuinely does not know who signs off, or cannot say what done looks like, or has no idea whether the data can be exported. This is not a failed kickoff. It is a successful one, because you now know the actual risk on day one instead of week three.</p>
<p>The move is to name it, write it in the recap as an open item with an owner and a date, and decide honestly whether work can start without it. Some open items are harmless and some are structural. Not knowing the export format is harmless. Not knowing who approves is structural, and starting a build with an unnamed approver means building for a person whose opinion you have not heard.</p>
<ul><li>Harmless open item: log it, start work, resolve it in the first report.</li><li>Structural open item: log it, delay the start, and say plainly why. Clients respect this far more than a quiet start followed by a surprise.</li><li>Either way, it goes in the recap. An open item that only exists in your head is a risk you have accepted on the client's behalf.</li></ul>
<p>The habit underneath all of this is treating the first week as the cheapest place to be uncomfortable. A kickoff that surfaces two problems has done its job. A kickoff where everyone was pleasant and nothing was written down has moved those same two problems to the point where they cost real money. If the scope itself still feels loose, fix that before kickoff using [how to scope a Claude Code client project](/blog/how-to-scope-a-claude-code-client-project).</p>
<h2>FAQ</h2>
<p><strong>How long should a client kickoff call be?</strong></p><p>Forty-five minutes is the right target for a typical build, and an hour is the ceiling. The four locks fit comfortably in that time if you send the agenda in advance and do not use the call to re-explain the proposal. If you genuinely need longer, that is usually a sign the scope was not settled before the project was agreed, which is a scoping problem rather than a meeting-length problem.</p>
<p><strong>Is the kickoff call the same as the discovery call?</strong></p><p>No, and combining them costs you both. Discovery happens before the money is agreed and exists to decide whether the project is worth doing and what it should cost. Kickoff happens after and exists to remove delivery ambiguity. The client answers differently in each one, because in discovery they are selling you the opportunity and in kickoff they want the thing to work.</p>
<p><strong>Who should be on the kickoff call from the client side?</strong></p><p>The person who can approve and reject the work, plus anyone who controls access you need. If the approver cannot make it, reschedule rather than proceeding with a proxy, because a kickoff without the decision-maker locks nothing. Keep the list short otherwise, because a large kickoff turns into a status meeting where nobody commits to anything.</p>
<p><strong>What if the client has never bought an AI build before?</strong></p><p>Then part of your job on the call is calibrating expectations, and the most useful thing you can do is be specific about what will be manual, what will be reviewed by a person, and what could be wrong. A first-time buyer who has been told plainly that a human checks the output is a far easier client in week four than one who was allowed to assume it runs itself.</p>
<p><strong>Should I charge for the kickoff call?</strong></p><p>It belongs inside the project fee rather than being billed separately, because it happens after the agreement and its purpose is to protect the delivery you are already being paid for. What you should not do is run a full kickoff before anything is signed. That is a free scoping session in disguise, and it is where a lot of unpaid work quietly happens.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code in a Monorepo: How to Keep an Agent From Getting Lost</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-monorepo</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-monorepo</guid>
      <pubDate>Sun, 16 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Workflows</category>
      <category>Large Codebase</category>
      <description><![CDATA[A monorepo is the environment where Claude Code goes wrong most predictably, and the reason is not intelligence. It is scope. Here is the package-scoped session rule I use to keep an agent working on one part of a big repo without dragging the other twenty into context.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>To use Claude Code in a monorepo, open the session at the package level rather than the repo root, and give that package its own CLAUDE.md describing how it is built, tested, and run.</li><li>The failure mode is not that the agent is confused by size. It is that a vague request at the root gives it permission to touch anything, so a small change quietly spreads across packages.</li><li>Run the package-scoped session: name the package, name the boundary, and require an explicit plan before any cross-package edit.</li></ul>
<h2>The Short Answer</h2>
<p>To use Claude Code in a monorepo, scope each session to one package instead of the repo root. Start the session in the package directory, keep a short CLAUDE.md in that package describing its build, test, and run commands, and state the boundary in the request itself: this package only, and tell me before you touch anything outside it. A root-level session with a vague request is what produces edits scattered across packages you did not mean to open.</p>
<blockquote><strong>NOTE:</strong> The size of a monorepo is not the problem. Claude Code does not need to read every package to work in one of them. The problem is that a root session makes every package equally reachable, so a small change has nowhere to stop.</blockquote>
<h2>Why a Monorepo Breaks an Agent's Sense of Scope</h2>
<p>A monorepo is many projects sharing one root. Human developers hold the boundaries in their head: this change belongs to the web app, that helper lives in the shared package, the mobile client is not part of this task. None of that is written down anywhere the agent can read, so when you open a session at the root and ask for a fix, the agent sees one enormous project with no internal walls.</p>
<p>What follows is not a hallucination. It is a reasonable reading of an unreasonable request. You ask it to rename a field. It finds that field in the shared types package, updates it there, then updates the three apps that import it, then updates a test fixture in a fourth package you forgot existed. Every individual edit is correct. The change as a whole is now far larger than the one you agreed to review.</p>
<ul><li>The blast radius grows silently. In a single-package repo you can read the whole diff. In a monorepo the diff spans packages owned by different people, and you stop reading carefully around file twelve.</li><li>The build feedback is slower. A cross-package change often will not fail until a downstream package builds, so the agent gets its signal late or not at all.</li><li>The conventions are not uniform. One package uses one test runner, another uses a different one, and a root-level instruction that is true for one is wrong for the other.</li><li>The context fills with the wrong things. Time spent reading unrelated packages is context not spent on the code you actually asked about.</li></ul>
<h2>The Package-Scoped Session - The Rule That Fixes Most of It</h2>
<p>The package-scoped session is the working rule I use for every monorepo task: one session, one package, one stated boundary. Open the session inside the package directory rather than the repo root. Say which package you are in. Say explicitly that the agent should stop and tell you before editing anything outside it. That third sentence is the one people skip, and it is the one that does the work.</p>
<ol><li>Open in the package, not the root. Point the session at the directory that owns the change. The agent still has the machine, so it can read a sibling package when it genuinely needs to, but the default gravity is local.</li><li>Name the package out loud in the request. 'In packages/billing, fix the proration rounding' beats 'fix the proration rounding' because the first sentence rules out the other twenty directories before the agent starts looking.</li><li>State the boundary and the escape hatch. 'Do not edit files outside this package. If the fix requires a change in the shared package, stop and show me the plan first.' This turns a silent spread into a decision you get to make.</li><li>Require the plan before the cross-package edit. When the agent comes back and says the change needs a shared type updated, you now have the useful conversation: is this actually a shared concern, or did we just leak a package detail into common code?</li></ol>
<blockquote><strong>TIP:</strong> The escape-hatch sentence is worth more than any tooling. An agent that pauses at the package wall gives you a design review at exactly the moment a design decision is being made, instead of a surprise in the diff an hour later.</blockquote>
<h2>Give Every Package Its Own CLAUDE.md</h2>
<p>A single CLAUDE.md at the repo root cannot describe a monorepo accurately, because the thing it most needs to describe - how you build, test, and run this code - is different per package. Keep the root file for what is genuinely global (the package manager, the commit conventions, the rule that the agent may not edit another package without asking) and put the specifics in a short CLAUDE.md inside each package.</p>
<table><caption>What belongs at each level</caption><thead><tr><th>Level</th><th>What goes here</th><th>What does not</th></tr></thead><tbody><tr><td>Repo root CLAUDE.md</td><td>Package manager and workspace layout, the boundary rule, commit and branch conventions, anything true everywhere</td><td>Per-package build or test commands, framework details that only one app uses</td></tr><tr><td>Package CLAUDE.md</td><td>How to install, build, test, and run this package, its framework, its known sharp edges, what it may and may not import</td><td>Restating global rules, long architecture essays that will go stale</td></tr><tr><td>The request itself</td><td>The one task, the package name, and the boundary sentence</td><td>Anything you would have to retype every session - that belongs in a file</td></tr></tbody></table>
<p>The most valuable line in a package CLAUDE.md is usually the import rule. Writing 'this package may import from the shared package but nothing else, and nothing may import from it' gives the agent the architectural constraint that lives in your head and nowhere in the code. It also makes bad suggestions self-evident, because a proposed import that violates the rule now reads as obviously wrong rather than as a judgment call.</p>
<h2>Handling a Change That Genuinely Spans Packages</h2>
<p>Some changes really do cross the wall, and the boundary rule is not there to stop them. It is there to make them deliberate. When the agent comes back with 'this needs a field added in the shared types package', treat it as three separate pieces of work rather than one, and run them in that order: change the shared package, verify it builds, then update each consumer.</p>
<ol><li>Do the shared change first, on its own, and get it building and tested before anything downstream touches it. A shared package that is half-changed makes every downstream error ambiguous.</li><li>Update consumers one package at a time, in separate passes. The temptation is to let the agent sweep all of them in one go. That produces a diff nobody reviews properly.</li><li>Verify at each stop. Run that package's own build and tests before you move to the next one, so a failure points at the package you just touched rather than at the whole tree.</li><li>Keep the commits split by package where your workflow allows it. It makes the change reviewable by the people who own each piece, and it makes a revert surgical instead of catastrophic.</li></ol>
<blockquote><strong>WARNING:</strong> The specific thing to watch for is the agent solving a local problem by widening a shared interface. Adding an optional field to a shared type makes one package compile and quietly costs every other package clarity. If the reason for a shared change is 'it was the fastest way to make this build', that is a signal to look for the local fix instead.</blockquote>
<h2>When to Run Separate Sessions Instead of One</h2>
<p>If you have two unrelated tasks in two packages, run two sessions. It sounds obvious and almost nobody does it, because one session already has momentum. The cost of reusing it is that the context now carries the first task's files, decisions, and half-remembered constraints into the second task, and the second task inherits assumptions that were never true for it.</p>
<p>Separate sessions also give you a cleaner recovery. When something goes wrong in a monorepo, the first question is always which change caused it. Two sessions with two scopes and two sets of commits answers that in seconds. One long session that wandered through five packages turns it into an investigation.</p>
<blockquote><strong>NOTE:</strong> This is easiest to run in the Claude Code desktop app, where a second session is a second window rather than a context switch you have to think about. Seeing two scoped sessions side by side is what makes the habit stick.</blockquote>
<h2>Start With One Package This Week</h2>
<p>Pick the package in your monorepo you change most often. Write it a CLAUDE.md with four things: install, build, test, and what it is allowed to import. Then run your next task as a package-scoped session with the boundary sentence included, and notice how differently the agent behaves when it has to ask permission to leave. Most people find the first thing it asks about is a shared change they would have merged without noticing.</p>
<blockquote><strong>NOTE:</strong> Inside the Claude Code Club we trade the actual CLAUDE.md files we use in real monorepos and pull apart the ones that are not working. Bring the package that keeps going wrong and we will scope it with you.</blockquote>
<h2>FAQ</h2>
<p><strong>Can Claude Code handle a monorepo?</strong></p><p>Yes, and it handles one well when the session is scoped to a package rather than the repo root. The difficulty in a monorepo is not size, it is that a root-level session treats every package as equally in scope, so a small request can spread. Open the session inside the package that owns the change, name that package in the request, and tell the agent to stop and ask before editing anything outside it.</p>
<p><strong>Should CLAUDE.md live at the monorepo root or in each package?</strong></p><p>Both, with a clear split. The root file holds what is true everywhere: the package manager, the workspace layout, commit conventions, and the rule that the agent may not cross a package boundary without asking. Each package gets a short file with its own install, build, test, and run commands plus what it is allowed to import. Build and test commands differ per package, so a root-only file will be wrong for most of them.</p>
<p><strong>How do I stop Claude Code from editing other packages?</strong></p><p>Say it in the request and repeat it in the root CLAUDE.md, and include an escape hatch rather than a flat ban. The wording that works is: do not edit files outside this package, and if the change requires one, stop and show me the plan first. A flat ban makes the agent work around the wall. An escape hatch turns the crossing into a decision you approve, which is the outcome you actually want.</p>
<p><strong>What is the right way to make a change that spans several packages?</strong></p><p>Split it into ordered passes rather than one sweep. Change the shared package first and get it building and tested on its own, then update each consumer in a separate pass, verifying each package's build before moving on. Splitting commits by package where you can makes the change reviewable by the people who own each piece and makes a revert precise instead of sweeping.</p>
<p><strong>Is it better to use one long session or several short ones in a monorepo?</strong></p><p>Several short ones, scoped per task and per package. A reused session carries the previous task's files and assumptions into the next one, and in a monorepo those assumptions are frequently wrong for a different package. Separate sessions also make it obvious which change caused a problem, because each scope maps to its own set of commits.</p>]]></content:encoded>
    </item>
    <item>
      <title>What to Put on Your AI Agency Website: The Six Sections That Do the Work</title>
      <link>https://www.claudecodeclub.ai/blog/what-to-put-on-your-ai-agency-website</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/what-to-put-on-your-ai-agency-website</guid>
      <pubDate>Sun, 16 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Agency</category>
      <category>Marketing</category>
      <category>Positioning</category>
      <description><![CDATA[Most AI agency websites are a logo, a list of tools, and a contact form. That page cannot close anyone because it never says what you sell or what it costs. Here are the six sections a buyer actually reads, in the order they read them.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>An AI agency website needs six sections: the one-line offer, who it is for, what you actually deliver, proof, price signal, and a single next step.</li><li>The most common failure is a site that lists technologies instead of outcomes, which makes the buyer do the translation work and they will not.</li><li>One page beats five. A buyer decides on the first screen whether you solve their problem, and the rest of the site only confirms it.</li></ul>
<h2>The Short Answer</h2>
<p>An AI agency website needs six sections and nothing else: a one-line offer naming the outcome you deliver, a clear statement of who it is for, a plain description of what the buyer receives, proof that you have done it, a price signal so they can self-qualify, and one next step. Put all six on a single page in that order. The sections most agency sites lead with, meaning the tool list and the founder story, are the two a buyer cares about least.</p>
<blockquote><strong>NOTE:</strong> The test for every block on the page: does it help a buyer decide, or does it help you feel professional? Only the first kind earns space above the fold.</blockquote>
<h2>Why Most AI Agency Sites Do Not Convert</h2>
<p>The typical AI agency site opens with a headline about transforming your business with artificial intelligence, followed by a row of tool logos and three service cards labelled automation, integration, and consulting. Nothing on that page is false. Nothing on it is useful either, because a buyer cannot tell from it what they would receive, what it would cost, or whether you have solved their specific problem before.</p>
<p>This happens because the site is written from the inside. You know what you can build, so you describe capability. The buyer does not have a capability problem, they have a specific business problem, and they are scanning for a sentence that describes it back to them. When the page is a list of what you can do, they have to work out which item applies to them, and a stranger will not do that work for you.</p>
<ul><li>Listing tools instead of outcomes. Nobody buys a model or a framework. They buy quotes going out the same day instead of next week.</li><li>No named buyer. A site that speaks to everyone reads as a site with no experience of anyone.</li><li>No price signal anywhere. Silence on price does not create curiosity, it creates a suspicion that it is expensive and negotiable.</li><li>Five links to five thin pages. Splitting one page's worth of substance across a menu is the fastest way to make a small agency look emptier than it is.</li><li>A contact form as the only action. Contact us is not a step, it is a request for the buyer to invent their own next move.</li></ul>
<h2>Section One: The One-Line Offer</h2>
<p>The first line of the page names the outcome, the buyer, and ideally the timeframe. Not a tagline. A sentence someone could repeat to a colleague accurately after reading it once. If your first line survives being pasted onto a competitor's site unchanged, it says nothing and needs rewriting.</p>
<table><caption>Vague headline versus a one-line offer</caption><thead><tr><th>Vague</th><th>Specific</th><th>Why the second one works</th></tr></thead><tbody><tr><td>AI solutions for modern business</td><td>We build internal tools for property managers so tenant requests stop living in an inbox</td><td>Names the buyer and the problem, so the right reader recognises themselves immediately</td></tr><tr><td>Automate your workflows with AI</td><td>We cut quote turnaround for trade contractors from days to the same afternoon</td><td>Names an outcome the buyer already wants and already measures</td></tr><tr><td>Custom software, powered by AI</td><td>Custom client portals for accounting firms, built and live in three weeks</td><td>Adds a timeframe, which is the second question every buyer asks</td></tr></tbody></table>
<blockquote><strong>TIP:</strong> Write the line for the client you most want three more of. Narrowing the headline does not lose you the other work. It wins the work you want and the rest still arrives through referral.</blockquote>
<h2>Section Two: Who It Is For, Said Plainly</h2>
<p>Directly under the headline, name the buyer in their own words. Two or three lines is enough. Say the size of business, the industry if you have one, and the situation they are in when they need you. This section does two jobs: the right buyer feels recognised, and the wrong buyer leaves without booking a call that would have wasted both of you a week.</p>
<p>Disqualifying people is the part that feels wrong and is worth the most. A line as simple as 'this is for teams of five to fifty who already have the process working manually and want it to stop eating a day a week' removes the enquiries you would have politely declined anyway, and it makes the ones that come through dramatically warmer.</p>
<h2>Section Three: What They Actually Get</h2>
<p>Describe the deliverable in concrete nouns. Not our process, not our methodology. The things that exist at the end: the tool, where it runs, who has access, what happens when it breaks, and how long it takes to get there. Buyers are trying to picture the finished thing, and a service described only as a process is impossible to picture.</p>
<ul><li>The artefact. Name it: an internal dashboard, a client portal, a quoting tool, a set of automations connecting the two systems you already pay for.</li><li>The timeline. A real range, honestly stated. Three to four weeks is a commitment. 'Fast turnaround' is not.</li><li>The handover. Who owns the code, where it is hosted, what happens the day after launch. This is where cautious buyers get stuck, and answering it on the page removes the objection before the call.</li><li>The support after. Whether there is a support arrangement and roughly what it covers. It also sets up the retainer conversation without you having to raise it cold.</li></ul>
<h2>Section Four: Proof, Even Without a Long Client List</h2>
<p>Proof is the section people skip when they are new, and it is the one that decides most deals. If you have client work, show one thing you built, the problem it solved, and one honest sentence about the result. Ideally with a screenshot of the real interface. If you do not have client work yet, show what you have built for yourself with the same specificity, and label it accurately as your own project.</p>
<blockquote><strong>WARNING:</strong> Do not invent numbers to fill this section. An invented percentage is the one thing on a website a serious buyer can catch you on, and it costs you the entire page's credibility. A real screenshot of a real thing you built beats a fabricated statistic every time.</blockquote>
<p>The strongest version of this section is not a testimonial wall. It is one build described end to end: what was broken, what you made, what happened afterwards. A buyer reading one specific story concludes you can do it again. A buyer reading six generic praise quotes concludes nothing.</p>
<h2>Section Five: A Price Signal</h2>
<p>You do not have to publish a price list. You do have to give a number that lets the buyer place themselves. 'Projects typically start at' followed by a real figure does the qualifying work that would otherwise consume two calls. The reason to do it is not transparency for its own sake, it is that price silence attracts the buyers with the smallest budgets, who are the most likely to fill in your calendar with enquiries that go nowhere.</p>
<ul><li>A starting-from figure for project work, which sets the floor without committing you to a fixed quote.</li><li>A monthly figure if you offer ongoing support, even as a range, so the retainer is a known option rather than a surprise later.</li><li>A short line on what changes the number. Scope, integrations, and how much of the process is already documented are the honest three.</li></ul>
<blockquote><strong>TIP:</strong> If publishing a number genuinely feels impossible, publish the range you have actually charged. It is true, it is defensible, and it still filters the enquiries that were never going to be a fit.</blockquote>
<h2>Section Six: One Next Step</h2>
<p>End with a single action, stated as a specific thing that happens. Not contact us. 'Book a 20 minute call and we will tell you whether this is worth building' is a step, because the buyer knows the length, the format, and the outcome. One action, repeated two or three times down the page, will beat a page offering a call and a form and a newsletter and a download.</p>
<p>Give the same action the whole way down. A buyer who is convinced by the proof section should not have to scroll back up to find the button. Repeating one call to action is not pushy, it is the removal of friction at the exact moments someone becomes ready to act.</p>
<h2>Rewrite Your First Screen This Week</h2>
<p>Do not rebuild the site. Open the homepage and rewrite only the first screen: the one-line offer and the who-it-is-for. Then add a price signal further down and cut the tool logos entirely. That is an hour of work, and it will change the quality of enquiry more than a redesign would, because the enquiries you get are downstream of the first sentence a stranger reads.</p>
<blockquote><strong>NOTE:</strong> Inside the Claude Code Club members post their homepage first screen and we rewrite the offer line together, usually by cutting it in half. Bring yours and we will tell you what a buyer actually understands from it.</blockquote>
<h2>FAQ</h2>
<p><strong>What should be on an AI agency website?</strong></p><p>Six sections, in order: a one-line offer naming the outcome and the buyer, a plain statement of who it is for, a concrete description of what the client receives, proof of something you have built, a price signal, and one next step. Everything else, including tool logos and the founder story, is optional and belongs below those six. A buyer decides on the first screen whether you solve their problem.</p>
<p><strong>Should I put pricing on my AI agency website?</strong></p><p>Put a price signal, not necessarily a price list. A starting-from figure or the range you have actually charged lets buyers place themselves before they book a call, which removes the enquiries that were never going to fit. Price silence does not create intrigue, it attracts the smallest budgets and burns your calendar on calls that end at the number.</p>
<p><strong>How many pages does an AI agency site need?</strong></p><p>One good page beats five thin ones, especially early. Splitting a single page's worth of substance across a menu makes a small agency look emptier than it is and adds a click between the buyer and the decision. Add pages later when you genuinely have more to say, such as a real case study or a service that deserves its own explanation.</p>
<p><strong>What do I put on the site if I have no clients yet?</strong></p><p>Show what you have built for yourself, described with the same specificity you would use for client work, and label it honestly as your own project. One real build explained end to end, with a screenshot of the actual interface, is more persuasive than a testimonial section with nothing behind it. Never invent numbers or results, because that is the one thing a serious buyer can catch and it costs you the whole page.</p>
<p><strong>Should I list the AI tools and models I use?</strong></p><p>Only far down the page, if at all. Buyers do not purchase a tool, they purchase an outcome, and a logo row asks them to translate technology into a benefit that you should have stated yourself. The exception is a buyer with a hard technical requirement, and even then a single line naming what you work with is enough.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code vs Gemini CLI: Which Agent Should You Actually Use?</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-vs-gemini-cli</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-vs-gemini-cli</guid>
      <pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Tools</category>
      <category>Claude Code</category>
      <category>Building</category>
      <description><![CDATA[Gemini CLI is free to start and lives in your terminal. Claude Code is a desktop app that treats your project as something to be maintained, not just edited. The choice comes down to how much of your work is one-off versus ongoing.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Claude Code vs Gemini CLI comes down to whether your work is one-off or ongoing. Gemini CLI is an open-source terminal agent that is excellent for quick, self-contained tasks. Claude Code is built around a project that keeps existing after today.</li><li>Gemini CLI's biggest advantage is the barrier to entry: it is open source, it installs in one command, and you can start with a personal Google account.</li><li>Claude Code's biggest advantage is persistence. A CLAUDE.md file, skills, subagents, and permission rules mean the agent starts every session already knowing your project's conventions instead of being re-briefed.</li><li>If you never open the terminal, that alone decides it. Claude Code ships as a desktop app; Gemini CLI is terminal-only by design.</li></ul>
<h2>Claude Code vs Gemini CLI: The Short Answer</h2>
<p>Use Gemini CLI when the task starts and finishes in one sitting, and use Claude Code when the project has to survive past this week. Gemini CLI is Google's open-source coding agent that runs in your terminal, and it is genuinely good at the shape of work where you describe a task, watch it happen, and move on. Claude Code is built around the assumption that you will come back to this codebase tomorrow, next month, and after someone else has touched it.</p>
<p>That single distinction explains almost every other difference between them. One is optimized for the session. The other is optimized for the project.</p>
<blockquote><strong>NOTE:</strong> Both products change fast, and their plans and limits change faster than any article can track. Check the current pricing and usage limits on each product's own site before you commit money or build a workflow around a free tier.</blockquote>
<h2>Where They Actually Differ</h2>
<p>The two agents overlap heavily on the basics. Both read your files, write code, run commands, and connect to external tools through MCP. The differences that change your day are about where the agent lives and what it remembers.</p>
<table><caption>Claude Code vs Gemini CLI on the decisions that change your workflow</caption><thead><tr><th>Decision</th><th>Gemini CLI</th><th>Claude Code</th></tr></thead><tbody><tr><td>Where you use it</td><td>Terminal only</td><td>Desktop app, terminal, or an IDE extension</td></tr><tr><td>Source</td><td>Open source, so you can read and fork it</td><td>Closed source, distributed by Anthropic</td></tr><tr><td>Getting started</td><td>One install command, works with a personal Google account</td><td>Install the desktop app and sign in to an Anthropic account</td></tr><tr><td>Project memory</td><td>Context files the agent reads at startup</td><td>CLAUDE.md plus a layered memory system across user, project, and directory scope</td></tr><tr><td>Reusable behavior</td><td>Custom commands and extensions</td><td>Skills, subagents, slash commands, hooks, and output styles</td></tr><tr><td>External tools</td><td>MCP supported</td><td>MCP supported, plus a plugin system on top</td></tr><tr><td>Permission control</td><td>Approval prompts per action</td><td>Granular allow and deny rules that persist in settings</td></tr></tbody></table>
<p>Read that table again with one question in mind: how many times will you explain your project's conventions? On Gemini CLI, the answer trends toward once per session. On Claude Code, the answer is once, in a file, and never again.</p>
<h2>What Gemini CLI Is Genuinely Better At</h2>
<p>Gemini CLI is better at the cold start. There is no purchase decision on day one, the install is a single command, and it runs against a Google account most people already have. For a developer who wants to test whether an agent is useful at all, that is the lowest-friction entry point available right now.</p>
<ul><li>Open source, which means you can read exactly what it does before you let it touch a repository. For anyone whose employer asks that question, this is not a small detail.</li><li>No commitment to evaluate. You can find out whether agentic coding fits your work before anyone approves a spend.</li><li>Terminal-native, which is an advantage if you already live in a terminal multiplexer and want the agent in the same pane as everything else.</li><li>Easy to script around. An open-source CLI is a normal Unix citizen, so wiring it into existing shell workflows is straightforward.</li></ul>
<p>The honest summary: if your work is mostly self-contained tasks in repositories you already know well, Gemini CLI does that job and costs you nothing to find out.</p>
<h2>What Claude Code Is Genuinely Better At</h2>
<p>Claude Code is better at the second week. Everything it does that Gemini CLI does not is aimed at the same problem: an agent that forgets your project is an agent you have to manage forever. The features that look like extras on day one are the entire point by day thirty.</p>
<ul><li>A CLAUDE.md file the agent reads every session, so the conventions of your project are permanent instead of retyped. See our guide to the [Claude Code CLAUDE.md file](/blog/claude-code-claude-md-file) for what belongs in it.</li><li>Skills, which package a repeatable procedure into something the agent invokes on its own when the situation matches. Read [how to create a Claude Code skill](/blog/how-to-create-a-claude-code-skill).</li><li>Subagents, which let a long task be split into isolated workers so one agent's context does not poison another's. See [Claude Code subagents](/blog/claude-code-subagents).</li><li>Permission rules that persist, so the agent can act freely inside the boundaries you set and stop cold outside them. See [Claude Code permissions explained](/blog/claude-code-permissions-explained).</li><li>A desktop app, which matters enormously if you are not a terminal person and have been quietly excluded from every agent tool until now.</li></ul>
<p>The trade is that all of this is configuration you did not have to do on Gemini CLI. Setting up a CLAUDE.md and a permission policy is thirty minutes you spend once. If the project is a weekend script, that thirty minutes was wasted. If the project is a client build, it pays back inside the first week.</p>
<h2>The Desktop App Question</h2>
<p>Gemini CLI is a command line tool. That is not a criticism, it is the product's name and its design. But it does mean that if you are not comfortable in a terminal, the tool has a floor you have to clear before you get any value from it at all.</p>
<p>Claude Code ships as a desktop app where you type what you want in plain English and watch the work happen in a window. The terminal is available and plenty of people use it, but it is optional rather than mandatory. Inside Claude Code Club this is the single most common reason someone gets unstuck: they assumed they needed to learn shell commands first, and they did not.</p>
<blockquote><strong>TIP:</strong> If you have avoided agentic coding because every tutorial opens with a terminal window, start with the desktop app. The skill you actually need is describing what a project should do, which has nothing to do with the command line.</blockquote>
<h2>How to Choose in Sixty Seconds</h2>
<p>Answer three questions honestly and the decision makes itself.</p>
<ol><li>Will anyone open this project again in a month? If no, Gemini CLI is fine and free. If yes, the persistent-memory features are the whole reason to pay for anything.</li><li>Do you work in the terminal by choice? If yes, either tool fits. If no, Claude Code's desktop app removes a barrier that Gemini CLI does not have a plan to remove.</li><li>Does someone need to approve the tool before it touches your code? If yes, an open-source agent is a much shorter conversation with a security team than a closed one.</li></ol>
<p>Notice that none of those questions is about which model is smarter. Model quality moves every few months and both of these are backed by frontier labs. The thing that will still be true a year from now is the shape of the tool around the model.</p>
<h2>Using Both Without Making a Mess</h2>
<p>Running both is reasonable and a lot of people do. The mistake is letting two agents write to the same repository under two different sets of conventions, because you end up with a codebase that argues with itself.</p>
<ul><li>Pick one agent as the owner of each repository. Ownership means that agent's convention file is the source of truth for that project.</li><li>Use the other one for throwaway work: a script in a scratch folder, a one-off data conversion, a quick investigation of an unfamiliar library.</li><li>Never let a second agent make structural changes to a project the first agent maintains without updating the convention file first.</li></ul>
<p>This is the same discipline you would apply to two developers on one repository, and it works for the same reason. The problem was never the second contributor. It was two contributors with no shared written standard.</p>
<h2>Where to Go From Here</h2>
<p>If you are still deciding, the cheapest experiment is to take one real task you have been putting off and run it through whichever tool has the lower barrier for you today. A single completed task tells you more than any comparison article, including this one.</p>
<p>Inside Claude Code Club, members bring exactly this question every week, usually with a half-finished project and a deadline attached. We look at the actual repository, decide what belongs in the convention file, and get the project to a state where the agent stops needing to be re-briefed. If you want that conversation about your project, come and post it at claudecodeclub.ai for $9 a month.</p>
<h2>FAQ</h2>
<p><strong>Is Gemini CLI free?</strong></p><p>Gemini CLI is open source and offers a free tier you can start on with a personal Google account. Free tiers and their limits change regularly, so confirm the current terms on Google's own page before you plan work around them.</p>
<p><strong>Is Claude Code better than Gemini CLI?</strong></p><p>Neither is better in general. Gemini CLI is better for self-contained tasks and for teams who need an open-source tool they can inspect. Claude Code is better for projects that continue past one session, because its memory, skills, and permission features exist specifically to stop you re-explaining the project every time.</p>
<p><strong>Can I use Claude Code without the terminal?</strong></p><p>Yes. Claude Code ships as a desktop app where you describe what you want in plain English. The terminal is an option, not a requirement, which is the main practical difference for anyone who is not already a command line user.</p>
<p><strong>Do both support MCP servers?</strong></p><p>Yes, both connect to external tools and data through MCP. The difference is what sits on top: Claude Code adds a plugin layer and skills that can invoke those tools automatically when a task matches, rather than only when you ask directly.</p>
<p><strong>Can I run both on the same project?</strong></p><p>You can, but assign one agent as the owner of each repository so there is a single convention file that is the source of truth. Two agents writing to one project under two different standards produces a codebase that contradicts itself.</p>
<p><strong>Which one should a complete beginner start with?</strong></p><p>If you are not comfortable in a terminal, start with the Claude Code desktop app, because it removes the step most beginners stall on. If you are already a terminal user and want to test agentic coding before spending anything, Gemini CLI is the lower-friction way to find out.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code MCP Server Not Working: How to Fix It</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-mcp-server-not-working</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-mcp-server-not-working</guid>
      <pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>MCP</category>
      <category>Troubleshooting</category>
      <description><![CDATA[An MCP server that shows as failed is almost always one of five things, and none of them require you to understand the protocol. Here is the order to check them in, and how to read the error you actually got.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>When a Claude Code MCP server is not working, check the MCP status first. It tells you whether the server failed to start, started and then disconnected, or started fine and simply shows no tools.</li><li>Those three states have completely different causes, and treating a disconnect as a config error is why most people spend an hour on a five-minute problem.</li><li>The five usual causes, in the order worth checking: the command is not on the PATH Claude Code sees, a required environment variable is missing, the config file has a syntax error, the server is scoped to a different project, or the server is printing to stdout and corrupting the protocol.</li><li>Restarting Claude Code after any config change is not superstition. Server definitions are read at startup, so an edit made mid-session has not been loaded.</li></ul>
<h2>First, Find Out Which Failure You Have</h2>
<p>Before changing anything, check the MCP status inside Claude Code. Every server will be in one of three states, and the fix depends entirely on which one you are looking at. Guessing at this step is the single biggest time sink in MCP troubleshooting.</p>
<ol><li>Failed to start. The process never launched. This is a command, path, or config problem, and it is the easiest of the three to fix.</li><li>Connected, then disconnected. The process launched and then died or broke the protocol. This is usually a missing credential or something the server printed to stdout.</li><li>Connected, but no tools appear. The server is fine. Your problem is scope, permissions, or the fact that the tools are there and you are looking in the wrong place.</li></ol>
<blockquote><strong>WARNING:</strong> If you skip this step and start editing config for a server that is actually connected, you will break a working setup and then be debugging two problems instead of one. Read the state first.</blockquote>
<h2>Cause One: The Command Is Not on the PATH Claude Code Sees</h2>
<p>This is the most common cause by a wide margin, and it produces a failed-to-start state. Your MCP config names a command to run. Claude Code launches that command in its own environment, which is not necessarily the same environment as the terminal where you tested it.</p>
<p>The classic version of this is a tool installed by a version manager. Your shell profile puts it on the PATH when you open a terminal, but the desktop app was launched by the operating system and never read your shell profile. The command works when you test it and fails when Claude Code runs it, which feels like the tool is lying to you.</p>
<ul><li>Test the exact command from the config, not a shortened version of it. If the config names a runner plus a package, run that whole line.</li><li>If it works in your terminal but fails in Claude Code, replace the command with its full absolute path in the config.</li><li>Find the absolute path by asking your shell where the command lives, then paste that path in verbatim.</li></ul>
<p>An absolute path is less elegant and dramatically more reliable. On a machine that will run this setup unattended, take the reliability.</p>
<h2>Cause Two: A Missing Environment Variable</h2>
<p>This produces the connected-then-disconnected state. The server starts, tries to authenticate against whatever it wraps, gets nothing, and exits. Because it technically started, the status often reads as a disconnect rather than an error, which sends people looking at the wrong file.</p>
<p>MCP servers do not inherit your shell environment, for the same reason the PATH problem happens. If a server needs an API key, that key has to be declared in the server's own configuration block, not exported in your shell profile.</p>
<blockquote><strong>WARNING:</strong> Do not paste a live API key into a config file that is committed to a repository. Keep secrets in a file your version control ignores, and reference them. Our guide to [Claude Code environment variables](/blog/claude-code-environment-variables) covers the safe patterns.</blockquote>
<p>One detail that catches people: a key that is present but expired produces exactly the same symptom as a key that is missing. If the variable is definitely set and the server still disconnects, test the credential directly against the service before you touch the config again.</p>
<h2>Cause Three: The Config File Has a Syntax Error</h2>
<p>A single trailing comma or an unclosed brace will stop every server in the file from loading, not just the one you were editing. The symptom is alarming and misleading: servers that worked yesterday all disappear at once after you added one new entry.</p>
<ul><li>If several servers vanish together right after an edit, assume a syntax error before you assume anything else.</li><li>Validate the file rather than reading it. Human eyes skip over a missing brace reliably, and a parser never does.</li><li>Add one server at a time and restart between each. Batch-adding four servers and then debugging is a false economy.</li></ul>
<p>This is also the easiest failure to prevent. Keep a known-good copy of the config before you edit it, so that reverting is a file copy and not an act of memory.</p>
<h2>Cause Four: The Server Is Scoped Somewhere Else</h2>
<p>This one produces the most confusing symptom of all: the server works perfectly in one project and does not exist in another. Nothing is broken. The server was registered at a scope that does not cover where you are now.</p>
<p>MCP servers can be registered for just you across all projects, for a single project, or for a project and everyone who works on it. A server added at project scope is invisible from any other directory, which is correct behavior that looks exactly like a bug.</p>
<ul><li>If the server should be available everywhere, register it at user scope.</li><li>If the server is specific to one codebase, project scope is right and its absence elsewhere is not a fault.</li><li>If a teammate says a server is missing and you can see it, compare scopes before comparing configs. This is almost always the answer.</li></ul>
<h2>Cause Five: The Server Is Printing to Stdout</h2>
<p>This is the failure that looks the most mysterious and has the cleanest explanation. A local MCP server talks over standard input and output. That channel carries the protocol. If the server also prints a log line, a banner, or a warning to stdout, that text lands in the middle of a protocol message and the connection breaks.</p>
<p>You will see this most often with a server you wrote yourself or one you modified, because a debug print statement is the most natural thing in the world to add and the least obvious thing to suspect.</p>
<ul><li>Route every log line to standard error instead of standard output. Standard error is safe and is where diagnostics belong anyway.</li><li>Check for framework or dependency banners that print on import. You did not write them and they will still break the connection.</li><li>If the server worked before you added logging, this is the cause. Do not look further.</li></ul>
<blockquote><strong>TIP:</strong> A quick test: run the server command directly and watch what appears before any protocol traffic. Anything human-readable on stdout at startup is the bug.</blockquote>
<h2>The Restart Rule</h2>
<p>Server definitions are read when Claude Code starts. An edit you make while it is running has not been loaded, no matter how correct it is. A large share of the reports that begin with I fixed it and it still does not work end right here.</p>
<p>Make the change, fully quit, reopen, then check status. Doing those in a different order produces results you cannot trust, and untrustworthy results are worse than no results, because you will act on them.</p>
<h2>The Five-Minute Checklist</h2>
<p>Run this in order. It resolves the overwhelming majority of MCP failures without you needing to know anything about the protocol itself.</p>
<ol><li>Check MCP status and write down which of the three states you are in.</li><li>Run the config's command line by hand, exactly as written, and see if it starts.</li><li>Replace the command with an absolute path if it worked by hand and not from Claude Code.</li><li>Confirm every environment variable the server needs is declared in the server's own config block, and that the credential is still valid.</li><li>Validate the config file's syntax, especially if more than one server disappeared at once.</li><li>Confirm the scope covers the directory you are working in.</li><li>Check that nothing is printing to stdout at startup.</li><li>Quit fully, reopen, and check status again.</li></ol>
<p>If you get to the end of that list and the server is still failing, the remaining likely cause is the server itself rather than your setup, and the fastest next step is to add a different known-good server to prove the rest of your configuration works.</p>
<h2>Where to Go From Here</h2>
<p>If you are still setting up your first MCP servers, our guide to the [best Claude Code MCP servers](/blog/best-claude-code-mcp-servers) covers which ones are worth the setup, and [Claude Code skills vs MCP servers](/blog/claude-code-skills-vs-mcp-servers) explains when you do not need one at all.</p>
<p>Inside Claude Code Club, members post their actual config and error output and get it working the same day, usually because someone else hit the identical problem last month. If you have a server that will not connect, bring the status output and the config to claudecodeclub.ai for $9 a month and we will read it with you.</p>
<h2>FAQ</h2>
<p><strong>Why does my MCP server say failed to start?</strong></p><p>The process never launched, which nearly always means the command in your config cannot be found in the environment Claude Code runs it from. Test the exact command line by hand, and if it works there but not in Claude Code, replace it with the command's full absolute path.</p>
<p><strong>Why did all my MCP servers disappear at once?</strong></p><p>A syntax error in the config file stops every server in that file from loading, not only the one you edited. If several vanished together right after a change, validate the file's syntax before investigating anything else.</p>
<p><strong>Do I need to restart Claude Code after editing MCP config?</strong></p><p>Yes. Server definitions are read at startup, so an edit made while Claude Code is running has not been loaded. Quit fully, reopen, then check status, or you will be testing the old configuration.</p>
<p><strong>Why does an MCP server work in one project but not another?</strong></p><p>It was registered at project scope, which makes it invisible outside that directory. That is correct behavior rather than a fault. Re-register it at user scope if you want it available across all your projects.</p>
<p><strong>Why does my custom MCP server disconnect immediately?</strong></p><p>Most often because it is printing to standard output. A local MCP server uses stdout for the protocol itself, so any log line, banner, or warning written there corrupts a message and drops the connection. Send all diagnostics to standard error instead.</p>
<p><strong>How do I know if the problem is my config or the server?</strong></p><p>Add a different, known-good server and see if it connects. If it does, your config file and environment are fine and the fault is in the original server. If it does not, the problem is in your setup and the checklist above applies.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Deploy an App With Claude Code Without Breaking What Is Already Live</title>
      <link>https://www.claudecodeclub.ai/blog/how-to-deploy-an-app-with-claude-code</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/how-to-deploy-an-app-with-claude-code</guid>
      <pubDate>Fri, 14 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Building</category>
      <category>Workflows</category>
      <category>Claude Code</category>
      <description><![CDATA[Getting a first deploy out is easy. Keeping every deploy after that from quietly overwriting someone else's work is the part nobody warns you about. Here is the deploy contract I hand Claude Code before it ships anything, and the two failure modes that cost me the most time.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>To deploy an app with Claude Code, commit your work to a git branch, connect that repository to a host that builds on push, and let the host run the build. Claude Code writes the config and the commit; the host builds the deployed artifact from what is in the repository.</li><li>The mistake that costs people most is letting the agent upload a build made on your laptop. A locally built upload ships whatever is on your disk right now, which can silently erase work someone else already pushed.</li><li>Before any deploy, give Claude Code a deploy contract: the branch, the build command, the generated files, the verification check, and the rollback. Five lines, written once, and the deploy stops being a coin flip.</li></ul>
<h2>How to Deploy an App With Claude Code</h2>
<p>To deploy an app with Claude Code, you commit the project to a git repository, connect that repository to a host that builds automatically when you push, and then push. Claude Code's job is to write the deploy configuration, run the type check, make the commit, and push it. The host's job is to install dependencies, run the build command, and serve the result. Splitting the work that way is the whole trick, because the deployed site is then built from what is in the repository rather than from whatever happens to be sitting on your machine.</p>
<p>That distinction sounds like a technicality until it bites. I publish to seven production sites from one machine, every day, and every one of them ships by pushing a commit. The two times I broke something were both the same root cause: a build that came from my laptop instead of from the repository. Everything below is built around never letting that happen again.</p>
<ol><li>Get the project into a git repository with a branch you have agreed is the production branch.</li><li>Connect the repository to a host that builds on push. Claude Code can write the config file the host expects.</li><li>Put every generated file inside the build command so the host regenerates them instead of trusting yours.</li><li>Push the commit. The host builds and deploys the pushed commit, not your working directory.</li><li>Verify the live URL returns a 200 and serves the change you actually made, then note the rollback command.</li></ol>
<blockquote><strong>NOTE:</strong> Claude Code is available as a desktop app, so none of this requires living in a terminal. You describe the deploy, it writes the config and runs the commands, and you read the result. The terminal is optional.</blockquote>
<h2>Step One - Write the Deploy Contract Before Claude Code Touches Anything</h2>
<p>The deploy contract is a five-line block you paste into your prompt or your project's CLAUDE.md file, and it is the single highest-leverage thing in this whole article. It removes every decision the agent would otherwise make for you at the worst possible moment. Without it, a deploy is the agent guessing which branch matters, which command builds the site, and whether it should force anything.</p>
<p>Here is the shape of it. Fill in the five values for your own project once and it stops being something you think about.</p>
<ul><li>Production branch: the exact branch name the host builds from. Never deploy from a detached head or a branch you cannot name.</li><li>Build command: the one command the host runs. If it is not in the repository's config, the host does not know about it.</li><li>Generated files: anything created at build time, such as a sitemap, an RSS feed, or a search index. These must be produced by the build command.</li><li>Verification: the exact check that proves the deploy worked. A URL plus something specific you expect to find in the response.</li><li>Rollback: the one command that puts the previous version back. Write it before you need it.</li></ul>
<blockquote><strong>TIP:</strong> Put the deploy contract in CLAUDE.md rather than in a chat message. A chat message applies to one conversation. CLAUDE.md applies to every session you ever open in that project, including the ones you start six weeks from now when you have forgotten all of this.</blockquote>
<h2>Step Two - Let the Host Build, Not Your Laptop</h2>
<p>Deploy by pushing a commit and letting the host build it. Do not build locally and upload the finished output, even when the tooling makes that path look faster. A local build packages your working directory, which includes every uncommitted experiment you have open and, more importantly, excludes every commit someone else pushed while you were working.</p>
<p>This is the failure that cost me the most. On a site I share with a collaborator, I built locally and uploaded the output. My upload became the live site. His commits were still in the repository, perfectly safe, but they were not in my local tree, so they were not in what I uploaded. The live site rolled backwards and the repository said everything was fine. Nothing errored. There was no red text anywhere. The only symptom was a feature quietly missing from production.</p>
<p>Push-based deploys make that class of mistake structurally impossible, because the host builds the commit graph rather than your disk. If a collaborator's commit is in the branch, it is in the build. The rule I now hold to on every project is short: the thing that goes live is a commit, and the only way to make something go live is to push that commit.</p>
<blockquote><strong>WARNING:</strong> If you take one instruction from this post, take this one. Ask Claude Code to deploy by pushing to the production branch. If it offers to build locally and upload the output, say no and tell it to push instead.</blockquote>
<h2>Step Three - Pull Before You Push, Every Single Time</h2>
<p>Fetch and rebase onto the production branch before you commit your own work. On any repository with more than one person pushing to it, the state you started your session with is already stale. Rebasing first means your commit lands on top of theirs instead of racing them.</p>
<p>The instruction to Claude Code is simple: fetch the remote, rebase onto the production branch, and only then stage and commit. If the rebase conflicts on files you did not write, stop and abort rather than resolving it blindly. An agent resolving a conflict in code it has never read is how someone else's work disappears.</p>
<p>There is a second-order effect worth knowing. If the collaborator's commit added a page or a route, and your build regenerates a sitemap, then you need to regenerate that sitemap after the rebase rather than before it. Otherwise you commit a sitemap that knows about your new page and has forgotten theirs.</p>
<h2>Step Four - Put Every Generated File Inside the Build Command</h2>
<p>Anything created by a script rather than typed by hand must be produced by the host's build command. A sitemap, an RSS feed, a generated types file, a search index: if the host does not regenerate it, the host ships whatever stale copy happens to be committed.</p>
<p>I lost a genuinely stupid amount of time to this on one site. The build command ran the bundler and nothing else. The sitemap generator was a separate script I ran by hand. So every deploy shipped a sitemap that was correct as of the last time I remembered to run the script, which meant new pages existed but were not listed anywhere a crawler would look. The pages were live. They were also invisible.</p>
<p>The fix is one line of configuration. Chain the generators into the build command so the host runs them on every deploy. Ask Claude Code to read the project's package configuration and move every generator into the build script, then push a commit and confirm the generated file changed in the deployed output. After that the file cannot go stale, because there is no longer a path where it is not regenerated.</p>
<blockquote><strong>TIP:</strong> A good test: delete the generated file locally and run the build command. If the file comes back, the build owns it. If it does not, you own it, and you will forget.</blockquote>
<h2>Step Five - Verify the Deploy Instead of Trusting It</h2>
<p>A deploy is not done when the agent says it is done. It is done when you have fetched the live URL and found the specific change you made. Those are different events and they can be minutes or hours apart, especially when a build fails silently or a cache serves an older copy.</p>
<p>Verification has two parts. First, the URL returns a 200 rather than a 404 or a redirect chain that ends somewhere unexpected. Second, the response body contains something that only exists in the new version. A status code alone proves nothing on a single-page app, because the host will happily return 200 for a route that does not exist and let the client render a not-found page.</p>
<ul><li>For a new page, check that the page URL returns 200 and that its title appears in the fetched HTML.</li><li>For a code change, check that the newly built asset filename is being served, since most bundlers put a content hash in the filename.</li><li>For anything with a sitemap, check that the new path appears in the live sitemap, not just the local one.</li></ul>
<p>Tell Claude Code what the verification is as part of the request, not afterwards. The prompt that works: deploy this, then fetch the live URL and confirm the response contains the new heading, and tell me the exact status code you got. An agent asked to prove something behaves differently from an agent asked to do something.</p>
<h2>The Two Failure Modes That Look Like Success</h2>
<p>Both of the deploy failures worth memorizing share one property: nothing goes red. No error, no failed build, no alert. The deploy reports success and the site is wrong.</p>
<table><caption>The two silent deploy failures and what actually fixes each</caption><thead><tr><th>What you see</th><th>What is really happening</th><th>The fix</th></tr></thead><tbody><tr><td>Deploy succeeds, but a feature that was live yesterday is gone</td><td>You uploaded a locally built artifact that predates a collaborator's pushed commit</td><td>Deploy by pushing a commit so the host builds from the repository, never from your disk</td></tr><tr><td>New pages are live but nothing links to them and crawlers never find them</td><td>A generated file such as the sitemap is committed by hand and was never regenerated</td><td>Move every generator into the build command so the host regenerates it on every deploy</td></tr></tbody></table>
<p>The pattern underneath both is the same. A deploy is a promise that what is in the repository is what is on the internet. Any step that lets your local machine be the source of truth breaks that promise, and it breaks it quietly. That is why the deploy contract puts the branch and the build command first: they are the two places where the source of truth gets decided.</p>
<h2>The Prompt I Actually Use</h2>
<p>Here is the request, in the form that works reliably. Adapt the branch name and the verification to your project.</p>
<p>Deploy this project. First fetch the remote and rebase onto the production branch. Then run the type check and stop if it fails. Stage only the files I changed, by name, and do not stage anything else in the tree. Commit and push to the production branch so the host builds it. Do not build locally and do not upload a prebuilt output. When the build finishes, fetch the live URL, confirm it returns 200, confirm the response contains the new heading, and tell me the status code and what you found.</p>
<p>Every clause in that prompt closes a specific hole. Rebasing first stops the race. Stopping on a failed type check stops a broken build from becoming a deploy. Staging by name stops unrelated work in progress from being committed by accident. Refusing a local build stops the overwrite. Fetching the live URL turns a claim into a fact.</p>
<h2>Where to Go From Here</h2>
<p>Deploying is the step where a project stops being a folder on your machine and starts being something other people can use. Get the contract written once, and it becomes the least interesting part of your week, which is exactly what you want from it.</p>
<p>Inside Claude Code Club we run through this with real projects: members bring a build that works locally, we get it onto a host that deploys on push, and we write the deploy contract into their CLAUDE.md so the next deploy takes one sentence. If you want the version where someone looks at your actual repository instead of a generic tutorial, that is what the club is for.</p>
<h2>FAQ</h2>
<p><strong>Can Claude Code deploy an app on its own?</strong></p><p>It can run every command a deploy needs, including writing the host configuration, committing, and pushing. What it cannot do is decide which branch is production or what proves the deploy worked. Give it those two answers in a deploy contract and it handles the rest end to end.</p>
<p><strong>Should I let Claude Code build locally and upload the output?</strong></p><p>No. A local build ships your working directory, which excludes any commit a collaborator pushed while you were working. Push the commit and let the host build it, so the deployed version is always built from the repository.</p>
<p><strong>Why did my new pages go live but never show up in search?</strong></p><p>Almost always a generated file that the host never regenerated. If the sitemap is produced by a script you run by hand, the deployed sitemap is only as fresh as the last time you remembered to run it. Move the generator into the build command.</p>
<p><strong>How do I verify a deploy actually shipped?</strong></p><p>Fetch the live URL and look for something that only exists in the new version, such as a new heading in the HTML or a new content-hashed asset filename. A 200 status code alone is not proof, because single-page apps return 200 for routes that do not exist.</p>
<p><strong>What is the safest way to roll back a bad deploy?</strong></p><p>Redeploy the previous known-good commit rather than editing files on the host. Because the host builds from the repository, pointing it at an earlier commit restores a state you can reason about. Write that command down before your first deploy, not during your first outage.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code vs Lovable: Which One Ships Something You Actually Own?</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-vs-lovable</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-vs-lovable</guid>
      <pubDate>Fri, 14 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Tools</category>
      <category>Building</category>
      <category>Claude Code</category>
      <description><![CDATA[Lovable gets you a working app in an afternoon. Claude Code gets you a codebase you can still change in a year. The honest comparison is not about speed, it is about what you are left holding when the build is done.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Claude Code vs Lovable comes down to one question: do you want a finished app fast, or a codebase you can keep changing? Lovable optimizes for the first, Claude Code optimizes for the second.</li><li>Lovable is a browser tool that generates and hosts a web app from prompts, with a live preview as you go. Claude Code is an agent that works directly on files on your own machine, in whatever stack the project already uses.</li><li>Pick Lovable for a prototype you need in front of someone this week. Pick Claude Code when the project has to survive maintenance, a specific stack, existing code, or a client who owns the result.</li></ul>
<h2>Claude Code vs Lovable: The Short Answer</h2>
<p>Claude Code and Lovable solve two different problems that look identical from the outside. Lovable turns a description into a running, hosted web app inside a browser, with a preview you watch update as you prompt. Claude Code is an agent that edits real files in a real project on your own machine, in any language and any stack, including code that already exists and that it did not write.</p>
<p>So the decision is not which one is better. It is which failure you can afford. With a browser app builder, the failure mode is hitting a wall on something the tool does not do, with no clean way out. With an agent working on your own files, the failure mode is that you are responsible for the project structure and the hosting, which is more setup on day one.</p>
<blockquote><strong>NOTE:</strong> Both tools change fast, and pricing on both changes faster than any article can track. Check the current plans on each product's own site before you commit money. What is compared here is the shape of the tools, which moves far more slowly than their price lists.</blockquote>
<h2>What Lovable Is Good At</h2>
<p>Lovable is strongest when the goal is a working web app in front of a person as fast as possible. You describe the app, it generates the code, and it gives you a live preview and a hosted URL without you configuring anything. For validating an idea, showing a client a direction, or getting a first version of an internal tool in front of a team, that compression of setup time is real and it matters.</p>
<ul><li>Zero setup. No local environment, no install, no hosting decision on day one.</li><li>A visual preview alongside the prompt, so non-technical people can see the change land.</li><li>Opinionated defaults for the parts most first-time builders stall on, such as data storage and auth.</li><li>A shareable URL early, which is the thing that actually gets you feedback.</li></ul>
<p>The cost of those defaults is that they are decisions someone else made for you. That is a good trade for a prototype and a bad trade for anything you plan to run for years.</p>
<h2>What Claude Code Is Good At</h2>
<p>Claude Code is strongest when there is already a project, or when the project has requirements that are not a standard web app. Because it operates on files rather than inside a hosted product, the stack is whatever you want it to be, and it works just as well on a codebase written by someone else five years ago as it does on an empty folder.</p>
<ul><li>Works on existing code, including code it did not write, which is most professional work.</li><li>No stack ceiling. Command line tools, scripts, backend services, mobile projects, and web apps are all just files.</li><li>The whole project is on your machine and in your git history from the first commit, so ownership is never a question.</li><li>Project conventions live in a CLAUDE.md file the agent reads every session, so the rules persist instead of being re-explained.</li></ul>
<p>The trade is that Claude Code assumes you will make the structural decisions, or ask it to make them explicitly. It does not hand you a hosted URL by default. That is more work on day one and dramatically less work on day two hundred.</p>
<h2>The Comparison That Matters</h2>
<table><caption>Claude Code vs Lovable across the decisions that actually change your outcome</caption><thead><tr><th>Decision</th><th>Lovable</th><th>Claude Code</th></tr></thead><tbody><tr><td>Where the work happens</td><td>In the browser, on the platform</td><td>On files on your machine, in any editor</td></tr><tr><td>Starting from existing code</td><td>Built around starting fresh</td><td>Designed for it, including large unfamiliar codebases</td></tr><tr><td>Stack choice</td><td>The platform's stack</td><td>Whatever the project already uses</td></tr><tr><td>Time to a shareable URL</td><td>Minutes, hosting included</td><td>Longer, because you choose and configure the host</td></tr><tr><td>Non-web projects</td><td>Not the target use case</td><td>Scripts, CLIs, services, and mobile all work the same way</td></tr><tr><td>Who holds the result</td><td>The platform, with export paths available</td><td>You, in your own git repository from the first commit</td></tr><tr><td>Best fit</td><td>Prototypes, validation, first version of an internal tool</td><td>Anything that must be maintained, handed over, or sold</td></tr></tbody></table>
<h2>The Question That Decides It: Who Owns This in Six Months?</h2>
<p>The ownership question settles most real decisions faster than any feature list. If nobody will need to change this app after the demo, use the fastest path to the demo. If somebody will need to change it, and especially if that somebody is a client paying you, the project needs to be a normal codebase in a normal repository from the beginning.</p>
<p>This is where I see builders get hurt on paid work. A prototype built in a hosted builder is genuinely impressive in week one. In month four the client asks for something the platform does not support, and the answer is either a rebuild or a permanent workaround. Neither is a conversation you want to have when the invoice is already paid.</p>
<blockquote><strong>WARNING:</strong> If you are billing someone for a build, ask yourself one question before you pick the tool: can I hand this to another developer with nothing but a repository link? If the answer is no, you have sold a product with a dependency your client did not agree to.</blockquote>
<h2>You Do Not Have to Pick Only One</h2>
<p>The combination that works well is using a hosted builder to settle what the app should be, then rebuilding the settled version properly. Prototyping is a different job from building, and using a fast tool for the fast job is not a compromise.</p>
<ol><li>Use the browser builder to get a clickable version in front of the person whose opinion decides the project.</li><li>Collect the decisions that survive contact with that person: the screens, the data, the one action that matters.</li><li>Write those decisions into a short project brief, because the brief is the asset, not the prototype.</li><li>Hand the brief to Claude Code in a fresh repository and build the version that has to live.</li></ol>
<p>The prototype was never the deliverable. It was a cheap way to find out what to build, and treating it that way removes most of the anxiety about picking the wrong tool.</p>
<h2>Where to Go From Here</h2>
<p>If you are choosing between the two right now, the fastest way to decide is to name who touches this project in six months. A hosted builder is right when the answer is nobody. Claude Code is right when the answer is you, a teammate, or a client.</p>
<p>Inside Claude Code Club, members bring exactly this decision every week, usually with a prototype already built and a client already interested. We look at the actual project, decide whether it needs a rebuild or a wrapper, and get the version that has to survive into a repository with a deploy that runs on push. If you want that conversation about your project instead of a generic comparison, come and post it.</p>
<h2>FAQ</h2>
<p><strong>Is Claude Code better than Lovable?</strong></p><p>Neither is better in general. Lovable is better at getting a hosted web app in front of someone quickly with no setup. Claude Code is better at anything that has to be maintained, uses an existing codebase, or is not a standard web app. Pick based on whether the project needs to survive past the demo.</p>
<p><strong>Can Claude Code work with an app I already built in a browser builder?</strong></p><p>Yes, as long as you can get the code into a repository. Claude Code is designed to work on existing code, including code it did not write, so an exported project is a normal starting point rather than a special case.</p>
<p><strong>Which one is better for client work?</strong></p><p>Claude Code, in almost every case, because the client ends up owning a plain repository they can hand to anyone. If a client cannot take the build to another developer with just a repository link, you have introduced a dependency they did not agree to buy.</p>
<p><strong>Do I need to know how to code to use Claude Code?</strong></p><p>No. It runs as a desktop app and you describe what you want in plain English. What it does expect is that you can answer questions about what the project should do, which is a different skill from writing code yourself.</p>
<p><strong>Can I use both on the same project?</strong></p><p>Yes, and it is often the strongest option. Prototype in the browser builder to find out what the app should be, write the surviving decisions into a short brief, then build the real version with Claude Code in your own repository.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code GitHub Actions: Run Claude On Every Pull Request</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-github-actions</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-github-actions</guid>
      <pubDate>Thu, 13 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Workflows</category>
      <category>Building</category>
      <description><![CDATA[How to install the Claude Code GitHub Action, the difference between interactive and automation mode, the permissions the workflow actually needs, and the cost controls that keep a runaway agent from eating your budget.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Claude Code GitHub Actions is the official action anthropics/claude-code-action@v1, which runs Claude inside your repository's CI instead of on your laptop.</li><li>The fastest install is the /install-github-app command from inside Claude Code, which handles the GitHub App and the workflow file for you.</li><li>The action has two modes. Leave the prompt input out and it waits to be tagged with @claude. Supply a prompt input and it runs automatically on whatever event you wired it to.</li><li>Cost control is your job, not the action's. Cap turns with claude_args, set a workflow timeout, and add a concurrency group so a push storm does not fan out into a dozen parallel agents.</li></ul>
<h2>What Claude Code GitHub Actions actually is</h2>
<p>Claude Code GitHub Actions is an official GitHub Action, published as anthropics/claude-code-action@v1, that runs Claude Code inside a GitHub Actions runner rather than on your machine. It reads the repository, can be tagged from a pull request or issue comment, and can be triggered automatically by workflow events. In practice it turns the same agent you already run in the desktop app into something that also works while you are asleep.</p>
<p>That is the whole idea, and it is worth being blunt about why it matters. The desktop app is where you do the thinking. CI is where you do the repetition. Anything you find yourself typing into Claude Code for the fifth time on a Tuesday afternoon is a candidate to move into a workflow file, because a workflow file never forgets and never gets bored.</p>
<blockquote><strong>TIP:</strong> Move the boring loop, not the interesting one. Reviews, changelog updates, doc regeneration and lint cleanups are good CI jobs. Architecture decisions are not.</blockquote>
<h2>The fastest install path</h2>
<p>There are two ways in, and one of them takes about a minute. From inside Claude Code, run the /install-github-app command in a terminal session pointed at your repository. It walks the GitHub App installation and drops the workflow file in for you.</p>
<p>If you would rather do it by hand, or your organization restricts app installs, the manual route is three steps.</p>
<ol><li>Install the Claude GitHub App on the repository or the whole organization.</li><li>Add your credential as a repository secret. That is either ANTHROPIC_API_KEY for API billing, or CLAUDE_CODE_OAUTH_TOKEN if you are authenticating against a subscription.</li><li>Copy the example workflow into .github/workflows/claude.yml and commit it.</li></ol>
<p>The manual route is worth knowing even if you use the command, because when something breaks later you will want to know which of those three pieces is missing. Nine times out of ten a silent no-op is a missing secret.</p>
<h2>Interactive mode versus automation mode</h2>
<p>This is the single concept that determines how the action behaves, and it is controlled by one input.</p>
<table><caption>The two modes of anthropics/claude-code-action@v1</caption><thead><tr><th>Mode</th><th>How you get it</th><th>What triggers a run</th></tr></thead><tbody><tr><td>Interactive</td><td>Omit the prompt input entirely</td><td>A human writes @claude in an issue or pull request comment</td></tr><tr><td>Automation</td><td>Supply a prompt input</td><td>Whatever workflow event you listed, with no human in the loop</td></tr></tbody></table>
<p>Interactive mode is the one most teams start with, because it is opt-in by definition. Nothing happens until somebody asks. Automation mode is the one that produces real leverage and real bills, because it fires on every matching event whether or not anyone wanted it to.</p>
<p>My rule of thumb is to launch every new workflow in interactive mode, live with it for a week, and only convert it to automation once I have seen enough of its output to trust what it does unattended.</p>
<h2>The permissions the workflow needs</h2>
<p>The example workflow requests a specific set of permissions, and each one exists for a reason. If you trim the block without understanding it, the action fails in ways that look like bugs.</p>
<ul><li>contents: write, so Claude can push commits and branches.</li><li>pull-requests: write, so it can open pull requests and leave review comments.</li><li>issues: write, so it can respond in issue threads.</li><li>id-token: write, which the action uses for its OIDC authentication flow.</li><li>actions: read, so it can inspect workflow runs when it needs CI context.</li></ul>
<blockquote><strong>WARNING:</strong> contents: write means the action can commit to your repository. Treat any workflow that carries it the way you would treat a deploy key, and use branch protection so a generated commit still needs a human to reach your default branch.</blockquote>
<h2>Passing CLI arguments with claude_args</h2>
<p>Everything you would normally pass to the Claude Code CLI goes through the claude_args input. That includes --model to pin a specific model, --allowedTools to constrain what the agent is permitted to touch, and --max-turns to put a hard ceiling on how long it will keep working.</p>
<p>Of those, --allowedTools is the one people skip and later regret. An agent in CI with an unconstrained tool list has more reach than most contractors you would hire. Give it the narrowest set that lets the job finish.</p>
<h2>Cost controls that actually work</h2>
<p>An agent in CI has no natural stopping point. It does not get tired and it does not notice that it has been going for forty minutes. Four controls carry most of the weight.</p>
<ol><li>Set --max-turns in claude_args. This is the most direct cap on how much work a single run can do.</li><li>Set a job-level timeout in the workflow. Belt and braces, and it catches the case where a single turn hangs.</li><li>Add a concurrency group with cancel-in-progress. Without it, five pushes in five minutes start five agents.</li><li>Keep CLAUDE.md concise. It is loaded into context on every run, so a bloated one is a fixed tax on every job you ever trigger.</li></ol>
<blockquote><strong>TIP:</strong> The concurrency group is the cheapest win on this list. It costs one block of YAML and it removes the single most common way these workflows surprise people on a busy day.</blockquote>
<h2>The gotcha that wastes an afternoon</h2>
<p>When the action commits using the default GITHUB_TOKEN, GitHub will not run your other workflows on that commit. This is standard GitHub behavior, designed to stop workflows from triggering each other in a loop, and it is not specific to Claude.</p>
<p>The symptom is confusing. Claude opens a pull request, the code looks fine, and your test suite simply never runs on it. Nothing errors. The checks are just absent. If you need downstream CI to fire on agent-authored commits, you need a different token than the default one.</p>
<h2>How to roll this out without regretting it</h2>
<p>The pattern that has worked for me is deliberately slow, and it is the same shape as onboarding a new contractor.</p>
<ol><li>Install on one repository, not the organization. Pick one you would not mind explaining to your team.</li><li>Start interactive. Tag @claude by hand for a week and read every response properly.</li><li>Write the CLAUDE.md before you automate anything. Most bad CI output is missing context, not a bad model.</li><li>Convert one job to automation mode. One. Watch the bill for a few days before you add a second.</li><li>Only then widen the tool list, and only for the specific thing that was blocked.</li></ol>
<p>If you want to go deeper on the context file that all of this depends on, we covered how to keep it from bloating in [the Claude Code rules directory](/blog/claude-code-rules-directory).</p>
<h2>Where this fits in a build workflow</h2>
<p>The honest summary is that CI Claude is not a replacement for desktop Claude. It is a second surface with different economics. Desktop is interactive, cheap to correct and expensive in your attention. CI is unattended, cheap in attention and expensive if you do not cap it.</p>
<p>Use the desktop app for the work that needs judgment, and push the repetitive checks into Actions once you have watched them enough to know what they produce. That split is the whole game.</p>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club we share the exact workflow files members are running in production, along with what each one cost to operate. Join for $9/month at claudecodeclub.ai.</blockquote>
<h2>FAQ</h2>
<p><strong>What is the Claude Code GitHub Action called?</strong></p><p>It is published as anthropics/claude-code-action@v1. You reference it in the uses field of a step in your workflow file, the same way you would reference any other action.</p>
<p><strong>How do I install Claude Code GitHub Actions?</strong></p><p>The quickest path is the /install-github-app command from inside Claude Code, which sets up the GitHub App and the workflow file for you. Manually, you install the Claude GitHub App, add ANTHROPIC_API_KEY or CLAUDE_CODE_OAUTH_TOKEN as a repository secret, and copy the example workflow into .github/workflows.</p>
<p><strong>What is the difference between interactive and automation mode?</strong></p><p>It comes down to whether you supply the prompt input. Without it, the action is interactive and only responds when someone writes @claude in an issue or pull request comment. With it, the action runs automatically on the workflow events you configured, with no human trigger.</p>
<p><strong>How do I stop a Claude Code workflow from getting expensive?</strong></p><p>Cap turns with --max-turns in claude_args, set a job timeout in the workflow, add a concurrency group so simultaneous pushes do not spawn parallel agents, and keep CLAUDE.md short because it is loaded on every single run.</p>
<p><strong>Why did my tests not run on the commit Claude pushed?</strong></p><p>GitHub does not trigger workflows on commits made with the default GITHUB_TOKEN. This is a platform-level loop-prevention rule rather than anything specific to Claude. If you need downstream CI on agent-authored commits, authenticate the commit with a different token.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code Code Review: The Managed Service And The Local Command</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-code-review</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-code-review</guid>
      <pubDate>Thu, 13 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Claude Code</category>
      <category>Workflows</category>
      <category>Building</category>
      <description><![CDATA[There are two different Claude code review products and people keep confusing them. Here is what the managed pull request reviewer does, what the local /code-review command does, and which one you should be using.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>There are two products with similar names. The managed Claude Code Review service reviews pull requests on GitHub. The /code-review command reviews your working changes locally in the desktop app.</li><li>The managed service is a research preview available on Team and Enterprise plans, and it posts inline comments graded as Important, Nit, or Pre-existing.</li><li>Its check run is always neutral by design, so a review can never block a merge. That is a deliberate choice, not a limitation to work around.</li><li>You tune it with two files. CLAUDE.md conventions are treated as nits, while REVIEW.md instructions are injected at the highest priority.</li></ul>
<h2>Two products, one confusing name</h2>
<p>If you search for Claude code review you will find two different things, and the fastest way to waste an hour is to read the documentation for one while trying to use the other. The managed Claude Code Review service runs on GitHub and comments on pull requests. The /code-review command runs inside the desktop app and reviews the changes sitting in front of you right now.</p>
<table><caption>Which review product you are looking at</caption><thead><tr><th></th><th>Managed Code Review</th><th>/code-review command</th></tr></thead><tbody><tr><td>Where it runs</td><td>GitHub pull requests</td><td>Your local Claude Code session</td></tr><tr><td>Availability</td><td>Research preview on Team and Enterprise plans</td><td>Available on other plans as a slash command</td></tr><tr><td>Output</td><td>Inline comments on the pull request</td><td>Findings in your session, optionally applied</td></tr><tr><td>Who sees it</td><td>Everyone on the pull request</td><td>You</td></tr></tbody></table>
<p>The rest of this post covers both, starting with the managed one, because that is the one people are usually trying to evaluate.</p>
<h2>What the managed service actually does</h2>
<p>It reads the pull request and leaves inline comments on the specific lines it has a problem with. Each comment carries a severity marker, and there are three of them.</p>
<ul><li>Important, for things it believes are genuine problems worth fixing before merge.</li><li>Nit, for smaller issues including anything that contradicts a convention in your CLAUDE.md.</li><li>Pre-existing, for problems it noticed in code the pull request did not touch.</li></ul>
<p>That third category is more useful than it sounds. Most review tools either stay silent about surrounding code or bury you in unrelated complaints. Labelling them separately means you can see them without feeling obliged to fix them in this pull request.</p>
<h2>The check run is always neutral, and that is deliberate</h2>
<p>The check the service posts is always neutral. It never fails. That means a Claude review cannot block a merge no matter how many Important comments it leaves.</p>
<p>I have watched teams treat this as a missing feature and go looking for a way to make it gate merges. I would push back on that instinct. An automated reviewer that can block your pipeline becomes something people learn to route around, and the workarounds are always worse than the original problem. A reviewer that advises but never blocks stays useful because nobody is fighting it.</p>
<blockquote><strong>WARNING:</strong> If you genuinely need a hard gate, build it as a separate required check with rules you control. Do not try to turn the advisory reviewer into a blocker.</blockquote>
<h2>Choosing when it runs</h2>
<p>There are three trigger modes, and the right one depends mostly on how noisy your pull requests are.</p>
<ol><li>Once after pull request creation. One review per pull request, when it opens.</li><li>After every push. A fresh review on every commit that lands on the branch.</li><li>Manual. Nothing happens until someone asks for it.</li></ol>
<p>You can also drive it from a comment. Writing @claude review triggers a single review, @claude review once sets a one-time review for that pull request, and @claude review always switches it to reviewing every push.</p>
<p>For most teams I would start on manual, move to once after creation when people stop finding the output surprising, and only go to every push on branches where the churn is genuinely meaningful. Every push is the setting that turns a helpful reviewer into background noise.</p>
<h2>Tuning it with CLAUDE.md and REVIEW.md</h2>
<p>Two files change what the reviewer says, and they carry different weight.</p>
<p>Your CLAUDE.md is read as a source of conventions. When code violates something in it, the reviewer raises that as a nit. This is a good reason to keep the conventions in that file honest, because vague rules produce vague nits and everyone starts ignoring them.</p>
<p>REVIEW.md is the stronger lever. Instructions in it are injected at the highest priority, which makes it the right place for the things you actually care about. If your team has a rule that database migrations must always be reversible, or that nothing new is allowed to reach a particular module, that belongs in REVIEW.md rather than buried in general project context.</p>
<blockquote><strong>TIP:</strong> Write REVIEW.md as a short list of specific checks rather than a philosophy. Five sharp rules produce better reviews than two pages of principles.</blockquote>
<h2>What it costs</h2>
<p>The documented average is roughly fifteen to twenty five dollars per review, billed through usage credits. That is a real number and it is worth sitting with, because it changes which trigger mode makes sense.</p>
<p>At that rate, review on every push across a busy repository is a meaningful line item rather than a rounding error. Review once on creation, for pull requests that matter, is a much easier thing to justify. The cost profile is the strongest argument for being conservative with the trigger setting.</p>
<h2>The local /code-review command</h2>
<p>If you are not on a plan with the managed service, or you simply want a review before anyone else sees the code, the desktop app has /code-review, also available as /review.</p>
<p>It runs as a background subagent, so your session stays usable while it works. Two flags matter. Passing --fix lets it apply changes rather than just describing them, and --comment has it leave its findings as comments. You can also set an effort level from low up to max, which trades time against depth.</p>
<p>In practice I use the local command as a pre-flight. Run it before you open the pull request, clear the obvious things, and let human reviewers spend their attention on the parts that need judgment. That sequencing is the whole benefit, and it works the same way the automation split does in [Claude Code GitHub Actions](/blog/claude-code-github-actions).</p>
<h2>How I would actually set this up</h2>
<ol><li>Start with the local /code-review command. It costs nothing extra and it teaches you what the model notices.</li><li>Write REVIEW.md before enabling anything managed. A reviewer without your specific rules is a generic reviewer.</li><li>Turn on the managed service in manual mode and trigger it by hand on real pull requests for a week.</li><li>Move to once after creation. Leave it there unless you have a concrete reason to go further.</li><li>Treat Pre-existing comments as a backlog, not a blocker. Collect them, schedule them, do not derail the pull request.</li></ol>
<p>The failure mode with automated review is not that the tool is bad. It is that people switch everything on at once, drown in comments, and quietly stop reading them within a fortnight. Slow is genuinely faster here.</p>
<blockquote><strong>NOTE:</strong> Members inside Claude Code Club share the REVIEW.md files they run in real repositories, which is the fastest way to skip the generic-reviewer phase. Join for $9/month at claudecodeclub.ai.</blockquote>
<h2>FAQ</h2>
<p><strong>Is Claude Code Review available on my plan?</strong></p><p>The managed pull request review service is a research preview available on Team and Enterprise plans. On other plans you can use the /code-review slash command inside Claude Code, which reviews your local changes instead of commenting on GitHub.</p>
<p><strong>Can a Claude code review block a merge?</strong></p><p>No. The check run it posts is always neutral by design, so the review is advisory and never fails your pipeline. If you need a hard gate you have to build it as a separate required check.</p>
<p><strong>What do the severity levels mean?</strong></p><p>Important marks genuine problems worth addressing before merge. Nit marks smaller issues, including anything that contradicts a convention in your CLAUDE.md. Pre-existing marks problems in code the pull request did not change.</p>
<p><strong>What is the difference between CLAUDE.md and REVIEW.md for reviews?</strong></p><p>CLAUDE.md supplies project conventions, and violations of it are surfaced as nits. REVIEW.md instructions are injected at the highest priority, so it is the right place for the checks you most want enforced.</p>
<p><strong>How much does a Claude code review cost?</strong></p><p>The documented average is roughly fifteen to twenty five dollars per review, billed through usage credits. That figure is the main reason to prefer reviewing once on pull request creation rather than on every push.</p>
<p><strong>How do I trigger a review manually?</strong></p><p>Comment @claude review on the pull request for a single review. Use @claude review once to set a one-time review, or @claude review always to switch that pull request to reviewing every push.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code AGENTS.md: Why It Gets Ignored and the One-Line Bridge That Fixes It</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-agents-md</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-agents-md</guid>
      <pubDate>Wed, 12 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Workflows</category>
      <category>Tools</category>
      <description><![CDATA[Claude Code reads CLAUDE.md, not AGENTS.md. If your repo standardized on AGENTS.md for another coding agent, Claude Code skips it silently - no error, no warning, just a session running with none of your project rules. Here is the one-line import that keeps both tools on the same source file.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Claude Code reads CLAUDE.md. It does not read AGENTS.md, there is no setting that changes that, and there is no warning when an AGENTS.md is sitting right there in the repo - so the failure is silent.</li><li>The fix is a CLAUDE.md whose first line is @AGENTS.md. That import pulls the AGENTS.md content into context at session start, and anything you write underneath it becomes Claude-specific instruction layered on top of the shared file.</li><li>A symlink from CLAUDE.md to AGENTS.md does the same job when you have nothing Claude-specific to add, but on Windows it needs Administrator privileges or Developer Mode, so the import is the safer default on a mixed team.</li></ul>
<h2>Claude Code Reads CLAUDE.md, Not AGENTS.md</h2>
<p>Claude Code looks for CLAUDE.md. An AGENTS.md file in the same repository is not loaded, not merged, and not mentioned. This is the part that catches teams out: there is no error message and no startup warning, so a session with zero project context looks exactly like a session with full project context until the output starts drifting from your conventions.</p>
<p>This matters more than it used to because AGENTS.md has become a common shared-instruction file across other coding agents, so plenty of repos now carry one by default. If yours came from a template, or a teammate added one for a different tool, you can have a carefully written set of build commands and architecture notes that Claude Code has never once read.</p>
<blockquote><strong>WARNING:</strong> The tell is behavioral, not visible. If Claude Code keeps ignoring conventions you know are written down, run /context and look at the list under Memory files. If CLAUDE.md is not in that list, nothing you wrote is reaching the model.</blockquote>
<h2>The One-Line Bridge That Fixes It</h2>
<p>Create a CLAUDE.md at the repo root whose first line is an import of the file you already have: @AGENTS.md on its own line. Claude Code expands that import at session start and loads the AGENTS.md content into context, so one file stays the source of truth and no instruction gets duplicated into two places that then drift apart.</p>
<p>Everything you write below the import is appended after it, which makes that space the natural home for Claude-specific instruction. A CLAUDE.md that starts with @AGENTS.md and then adds a short section saying to use plan mode for changes under a billing directory gives you the shared rules plus the Claude-only rules, in that order, with no copy-paste.</p>
<ol><li>Create CLAUDE.md at the repo root, next to the existing AGENTS.md.</li><li>Put @AGENTS.md on the first line, with nothing wrapping it.</li><li>Add a short Claude-specific section underneath if you have one, and leave it empty if you do not.</li><li>Start a fresh session and run /context, then confirm CLAUDE.md appears under Memory files.</li></ol>
<h2>When a Symlink Is the Better Move</h2>
<p>If you have nothing Claude-specific to add, skip the wrapper file and symlink instead. Running ln -s AGENTS.md CLAUDE.md points one name at the other, and Claude Code resolves it normally. The command prints no output when it works, which throws people, so treat the /context check as the real confirmation rather than looking for a success message.</p>
<p>The tradeoff is portability. Creating a symlink on Windows requires Administrator privileges or Developer Mode, so on a team where anyone is on Windows, the @AGENTS.md import is the version that works for everybody without a setup note. Use the symlink for a solo repo, use the import for a shared one.</p>
<table><caption>Bridging AGENTS.md into Claude Code</caption><thead><tr><th>Approach</th><th>Best for</th><th>Catch</th></tr></thead><tbody><tr><td>CLAUDE.md with @AGENTS.md import</td><td>Shared repos, mixed operating systems, and anywhere you want Claude-specific rules on top</td><td>One extra file to keep in the repo</td></tr><tr><td>Symlink CLAUDE.md to AGENTS.md</td><td>Solo repos where the two files should be identical forever</td><td>Needs Administrator privileges or Developer Mode on Windows</td></tr><tr><td>Copy and paste the contents</td><td>Nothing, honestly</td><td>The two files drift within a week and nobody notices which one is stale</td></tr></tbody></table>
<h2>How the @ Import Actually Resolves</h2>
<p>The import syntax is @path/to/file and it accepts both relative and absolute paths. Relative paths resolve against the file that contains the import, not against your working directory, which is the single most common reason an import quietly fails in a monorepo. Imported files can import other files, up to a maximum depth of four hops.</p>
<p>Import parsing skips Markdown code spans and fenced code blocks, so you can write about a path without importing it by wrapping it in backticks. Outside backticks, @README imports the file; inside them, it stays literal text. If you have ever wondered why a CLAUDE.md that documents its own syntax suddenly pulled in three unrelated files, that is the reason.</p>
<blockquote><strong>NOTE:</strong> An import whose path resolves outside your working directory counts as external. The first time Claude Code hits one in a project it shows an approval dialog listing the files, and if you decline, those imports stay disabled and the dialog does not come back. If a home-directory import seems to do nothing, you probably declined it once months ago.</blockquote>
<h2>Where CLAUDE.md Can Live</h2>
<p>CLAUDE.md is not one file, it is four scopes that all load and concatenate rather than override each other. Knowing which scope a rule belongs in is what stops a personal preference from ending up committed into a team repo.</p>
<table><caption>CLAUDE.md scopes, in load order</caption><thead><tr><th>Scope</th><th>Location</th><th>Use it for</th></tr></thead><tbody><tr><td>Managed policy</td><td>/Library/Application Support/ClaudeCode/CLAUDE.md on macOS, /etc/claude-code/CLAUDE.md on Linux and WSL</td><td>Organization-wide standards pushed by IT. Cannot be excluded by individual settings.</td></tr><tr><td>User</td><td>~/.claude/CLAUDE.md</td><td>Your personal preferences across every project on your machine.</td></tr><tr><td>Project</td><td>./CLAUDE.md or ./.claude/CLAUDE.md</td><td>Team-shared rules that belong in version control. This is where the @AGENTS.md bridge goes.</td></tr><tr><td>Local</td><td>./CLAUDE.local.md</td><td>Personal notes for one project. Add it to .gitignore.</td></tr></tbody></table>
<p>Keep each file under roughly 200 lines. Longer files eat context and adherence drops as they grow. Worth knowing before you import a 900-line AGENTS.md and wonder why half of it stopped being followed: an import does not save context, because the imported file is expanded and loaded at launch just like inline text.</p>
<h2>Let /init or /import Do the Migration</h2>
<p>If the repo has instruction files scattered across several tools, you do not have to merge them by hand. Running /init generates a starting CLAUDE.md from your codebase, and it already reads Cursor rules in .cursor/rules/ or .cursorrules and Copilot rules in .github/copilot-instructions.md, folding the relevant parts in. If a CLAUDE.md already exists, /init suggests improvements instead of overwriting it.</p>
<p>Set the CLAUDE_CODE_NEW_INIT environment variable to 1 and /init widens its net to AGENTS.md, .devin/rules/, .windsurf/rules/ or .windsurfrules, and .clinerules, and runs an interactive flow that explores the codebase and shows you a reviewable proposal before writing anything. There is also /import, which appends a one-time copy of files like AGENTS.md into the matching CLAUDE.md and carries over MCP servers, commands, subagents, and skills. That one needs Claude Code v2.1.213 or later, so check your version first if the command is not there.</p>
<blockquote><strong>TIP:</strong> Prefer the @AGENTS.md import over /import when AGENTS.md is still actively maintained. /import takes a one-time copy, which means the next edit to AGENTS.md does not reach Claude Code. The live import never goes stale.</blockquote>
<h2>The CCC Bridge Check</h2>
<p>This is the two-minute habit we teach members to run on any repo they did not set up themselves: before writing a single prompt, run /context and read the Memory files list. Not the file tree, not the repo root, the actual loaded list. It tells you exactly which instruction files made it into the session, and it is the only way to catch a silent miss like an unread AGENTS.md before it has cost you an afternoon of output that ignores your conventions.</p>
<p>We started running this after inheriting a client codebase with a well-written AGENTS.md, a tidy set of conventions, and a Claude Code session that cheerfully ignored all of it for most of a morning. The file was there. It was just never being read. One import line fixed it permanently, and the check now happens before any work starts.</p>
<blockquote><strong>TIP:</strong> Inside Claude Code Club we share the CLAUDE.md and rules setups our members actually run on client repos, so you can start from a working file instead of a blank one. Come and grab them at https://www.skool.com/claudecodeclub/about.</blockquote>
<h2>FAQ</h2>
<p><strong>Does Claude Code support AGENTS.md?</strong></p><p>No. Claude Code reads CLAUDE.md and ignores AGENTS.md, with no error or warning when AGENTS.md is present. To use an existing AGENTS.md, create a CLAUDE.md that imports it with @AGENTS.md on the first line, or symlink CLAUDE.md to AGENTS.md.</p>
<p><strong>Can I keep both AGENTS.md and CLAUDE.md in one repo?</strong></p><p>Yes, and that is the recommended setup on a team using more than one coding agent. Keep AGENTS.md as the shared source of truth and make CLAUDE.md a thin wrapper that imports it, then put any Claude-specific instruction underneath the import.</p>
<p><strong>Does importing a file save context compared to pasting it in?</strong></p><p>No. An imported file is expanded and loaded into the context window at launch, exactly like inline content. Imports help with organization and with keeping one source of truth, not with context budget. Use path-scoped rules in .claude/rules/ if you need instructions that load only when relevant.</p>
<p><strong>How do I confirm my CLAUDE.md actually loaded?</strong></p><p>Start a session and run /context, then check the list under Memory files. If your file is not in that list, Claude Code did not load it, and no amount of rewriting the contents will change the behavior until the path is fixed.</p>]]></content:encoded>
    </item>
    <item>
      <title>The Claude Code Rules Directory: Split a Bloated CLAUDE.md Into Path-Scoped Files</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-rules-directory</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-rules-directory</guid>
      <pubDate>Wed, 12 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Workflows</category>
      <category>Building</category>
      <description><![CDATA[A 400-line CLAUDE.md burns context in every session and gets followed less the longer it grows. The .claude/rules directory fixes both problems by letting you scope instructions to the files they apply to, so your API rules only load when Claude is actually reading API code.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>The Claude Code rules directory is a .claude/rules folder of Markdown files that hold project instructions. Files without frontmatter load every session at the same priority as .claude/CLAUDE.md, so it is a drop-in way to break one long file into topics.</li><li>The real win is the paths frontmatter field. A rule with a paths list of glob patterns only enters context when Claude reads a matching file, which is how you carry detailed API, testing, and security rules without paying for all three in every session.</li><li>Two glob traps break rules silently: an unescaped square bracket makes a pattern match nothing, and heavy brace expansion can blow a per-rule budget of 1,000 expanded patterns, after which the pattern is used unexpanded and its literal braces match no files.</li></ul>
<h2>What the Claude Code Rules Directory Does</h2>
<p>The Claude Code rules directory is a .claude/rules folder inside your project holding one Markdown file per topic. All .md files are discovered recursively, so you can nest them into subdirectories like frontend and backend and they still get picked up. A rule file with no frontmatter loads at launch with the same priority as .claude/CLAUDE.md, which means moving a section out of CLAUDE.md and into a rule file changes nothing about how it is applied.</p>
<p>That alone is worth doing for maintainability. A repo where testing conventions live in testing.md and security requirements live in security.md is one where a teammate can find and edit the right rule without reading 400 lines to locate it. But the reason to move is the next part: once instructions are in separate files, you can scope them.</p>
<ul><li>.claude/CLAUDE.md for the main project instructions</li><li>.claude/rules/code-style.md for formatting and naming</li><li>.claude/rules/testing.md for test conventions</li><li>.claude/rules/security.md for security requirements</li></ul>
<h2>Path-Scoped Rules Are the Whole Point</h2>
<p>Add a YAML frontmatter block with a paths field and the rule stops loading unconditionally. Instead it enters context only when Claude works with files matching your glob patterns. A rule scoped to src/api/**/*.ts costs nothing on a session spent in the frontend, and shows up automatically the moment Claude opens an API handler.</p>
<p>The trigger is specifically Claude reading a matching file, not every tool use, so the rule arrives at the point where it is relevant rather than sitting in context all session. Matching also works when Claude reaches a file through a symlinked path into the project directory, which used to be a gap on symlinked checkouts and was fixed in v2.1.198.</p>
<table><caption>Glob patterns for the paths field</caption><thead><tr><th>Pattern</th><th>Matches</th></tr></thead><tbody><tr><td>**/*.ts</td><td>All TypeScript files in any directory</td></tr><tr><td>src/**/*</td><td>All files under the src directory</td></tr><tr><td>*.md</td><td>Markdown files in the project root only</td></tr><tr><td>src/components/*.tsx</td><td>React components in one specific directory</td></tr><tr><td>src/**/*.{ts,tsx}</td><td>Both extensions in one pattern, via brace expansion</td></tr></tbody></table>
<p>Rules with no paths field are loaded unconditionally and apply to everything, so the field is opt-in. Start by moving your longest, most situational section into a scoped rule and leave the genuinely universal rules unscoped.</p>
<h2>The Two Glob Traps That Break a Rule Silently</h2>
<p>Glob syntax treats an opening square bracket as the start of a bracket expression like [abc]. A pattern containing a square bracket that cannot be read that way, such as a directory literally named photos [2024, is invalid: it matches nothing at all, while the rule's other patterns carry on working. Escape it as photos \[2024/** to match the real folder name. Before v2.1.207, a single invalid pattern was worse than useless, because it made the Read tool fail for every file the rule was evaluated against.</p>
<p>The second trap is brace expansion getting away from you. Each brace group multiplies the pattern count, so src/*.{ts,tsx} becomes two patterns and {a,b}/{c,d}/*.{ts,tsx} becomes eight. A rule's whole paths list shares one budget of 1,000 expanded patterns and 4 MiB. Exceed it and the pattern is used unexpanded, at which point its literal braces match no files and the rule quietly stops firing. Patterns with no braces do not count against the budget.</p>
<blockquote><strong>WARNING:</strong> Both failures look identical from the outside: the rule exists, the file is valid Markdown, and Claude ignores it. If a scoped rule never seems to fire, suspect the pattern before you suspect the content. Simplify to a single obvious glob like **/*.ts, confirm it fires, then add specificity back one pattern at a time.</blockquote>
<h2>User Rules, Project Rules, and Skills</h2>
<p>Personal rules go in ~/.claude/rules/ and apply to every project on your machine. They load before project rules, which gives project rules the higher priority when the two disagree - the right way round, since a repo's conventions should beat your habits.</p>
<table><caption>Choosing where an instruction belongs</caption><thead><tr><th>Mechanism</th><th>When it loads</th><th>Use it for</th></tr></thead><tbody><tr><td>CLAUDE.md</td><td>Every session, in full</td><td>Facts that matter in every conversation: build commands, layout, always-do rules</td></tr><tr><td>.claude/rules/ without paths</td><td>Every session</td><td>Topic-split project rules that genuinely apply everywhere</td></tr><tr><td>.claude/rules/ with paths</td><td>Only when Claude reads a matching file</td><td>Detailed conventions for one area, like API validation or test structure</td></tr><tr><td>~/.claude/rules/</td><td>Every session, before project rules</td><td>Your personal preferences across all projects</td></tr><tr><td>Skills</td><td>On demand, when invoked or judged relevant</td><td>Multi-step procedures that do not need to sit in context</td></tr></tbody></table>
<p>The dividing line between a rule and a skill is whether the instruction needs to be present or merely available. A convention Claude should honor whenever it touches a file is a rule. A procedure Claude should follow when you ask for that specific job is a skill. Putting a long procedure in a rule is the most common way people end up back where they started, with a bloated context and no idea which instruction is being ignored.</p>
<h2>What Survives a /compact</h2>
<p>Project-root CLAUDE.md survives compaction. After /compact, Claude Code re-reads it from disk and re-injects it into the session, so your core instructions come back automatically. Nested CLAUDE.md files in subdirectories and rules with paths frontmatter are not re-injected: they reload the next time Claude reads a file in that subdirectory or a file matching the rule's patterns.</p>
<p>In practice that is fine, because the reload trigger is the same event that made the rule relevant in the first place. It is only confusing if you compact mid-task and expect a scoped rule to still be in play before Claude has touched a matching file again. If an instruction absolutely must survive every compaction, it belongs in the project-root CLAUDE.md, not in a scoped rule.</p>
<blockquote><strong>NOTE:</strong> In a monorepo, ancestor CLAUDE.md files from other teams get picked up automatically. The claudeMdExcludes setting takes glob patterns matched against absolute paths, and arrays merge across settings layers. Put it in .claude/settings.local.json so the exclusion stays on your machine.</blockquote>
<h2>The CCC Context Budget Pass</h2>
<p>Here is the pass we run on any repo whose CLAUDE.md has crept past 200 lines. Read the file and mark every section with one of three labels: universal, situational, or procedural. Universal stays in CLAUDE.md. Situational moves to a .claude/rules file with a paths glob covering exactly the area it describes. Procedural becomes a skill. Then start a fresh session, run /context, and compare the memory footprint against where you started.</p>
<p>The reason this is worth an hour is that context is not free and adherence is not linear. A shorter file is followed more reliably than a long one, so trimming CLAUDE.md is not only a token optimization, it measurably changes how often your conventions actually get respected. Most repos we run this on come out with a CLAUDE.md under half its old length and three or four scoped rules that never load unless they matter.</p>
<blockquote><strong>TIP:</strong> Members inside Claude Code Club share their real .claude/rules setups, including the glob patterns that survived contact with a monorepo. Start from a working setup instead of a blank folder at https://www.skool.com/claudecodeclub/about.</blockquote>
<h2>FAQ</h2>
<p><strong>What is the .claude/rules directory in Claude Code?</strong></p><p>It is a folder of Markdown files holding project instructions, discovered recursively including subdirectories. Files without frontmatter load every session at the same priority as .claude/CLAUDE.md. Files with a paths frontmatter field only load when Claude reads a file matching those glob patterns.</p>
<p><strong>Do path-scoped rules reduce context usage?</strong></p><p>Yes, and that is the main reason to use them. A scoped rule is absent from context until Claude reads a matching file, unlike CLAUDE.md and its @ imports, which are expanded and loaded in full at launch regardless of what you end up working on.</p>
<p><strong>Should I use a rule or a skill?</strong></p><p>Use a rule for a convention that must be honored whenever Claude touches relevant code, since rules load every session or on a path match. Use a skill for a multi-step procedure that only matters when you ask for that specific job, since skills load on demand and cost nothing until invoked.</p>
<p><strong>Why is my path-scoped rule not firing?</strong></p><p>Almost always the glob, not the content. An unescaped square bracket makes a pattern match nothing, and a paths list with heavy brace expansion can exceed its budget of 1,000 expanded patterns, after which the pattern is used unexpanded and its literal braces match no files. Simplify to one broad pattern, confirm it fires, then add specificity back gradually.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code Desktop App: How to Build Without Touching a Terminal</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-desktop-app</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-desktop-app</guid>
      <pubDate>Tue, 11 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Getting Started</category>
      <category>Beginners</category>
      <category>Claude Code</category>
      <description><![CDATA[The Claude desktop app runs full Claude Code sessions - parallel builds, a diff viewer, a browser pane, connectors - inside a normal window, with no terminal required to start. Here is what the Code tab actually gives you and how we teach members to use it.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>The Claude desktop app has three tabs - Chat, Cowork, and Code - and the Code tab runs full Claude Code sessions with a built-in terminal, file editor, and browser pane, so nothing about starting a build requires you to open Terminal.app or PowerShell yourself.</li><li>Each conversation in the Code tab is its own session with its own project folder and chat history, and the sidebar runs several sessions in parallel, so you can work more than one project at once without them bleeding into each other.</li><li>It needs a Pro, Max, Team, or Enterprise plan, runs on macOS, Windows, or Linux (beta), and on Windows the first launch asks you to install Git for Windows before the Code tab will open.</li></ul>
<h2>What the Claude Code Desktop App Actually Is</h2>
<p>The Claude desktop app is a single window with three tabs: Chat for regular conversations, Cowork for longer background tasks and Dispatch, and Code for software builds. The Code tab is Claude Code itself, running inside a graphical app instead of a command line. You download it, sign in, click Code, and pick a project folder. There is no separate CLI install step and no requirement to touch a terminal to get started.</p>
<p>Inside the Code tab, every conversation is a session. A session has its own chat history, its own project folder, and its own set of code changes, completely separate from any other session you have running. The sidebar lists every session you have open, which is what lets you run more than one build at the same time without them interfering with each other.</p>
<blockquote><strong>NOTE:</strong> This is why we teach Claude Code as desktop-app-first inside the club. The terminal is still there if you want it, sitting in its own pane, but it is optional. You can plan, build, review a diff, and preview a running app without ever opening a shell.</blockquote>
<h2>What You Get in the Code Tab Without a Terminal</h2>
<p>The Code tab is not a stripped-down version of Claude Code. It carries the same agent, with a set of panes built around reviewing and verifying work visually instead of reading raw output.</p>
<ul><li>Diff view: every file Claude changes shows up as a diff stat like +12 -1. Click it to open a full file-by-file diff, and click any line to leave a comment Claude reads and acts on.</li><li>Browser pane: Claude can start your dev server, open it in this pane, click through it, fill forms, and check its own work with screenshots, the same way a human tester would.</li><li>Connectors: link GitHub, Slack, or Linear so Claude can open a pull request or check a ticket without you switching windows.</li><li>Parallel sessions: run one session per project, or several sessions on the same project, side by side in the sidebar.</li><li>Side chats: ask a quick question that uses the current session's context without derailing the build it is mid-way through.</li></ul>
<blockquote><strong>TIP:</strong> The diff view plus the browser pane together are the two features that make client work faster in the desktop app: you can watch Claude verify a change against the running app, then approve or comment on the exact lines that changed, all in one screen.</blockquote>
<h2>Permission Modes: How Much Autonomy You Hand Claude</h2>
<p>The mode selector next to the send button controls how much Claude does before it stops and asks you. Start on Manual for a new project, and move up once you trust the setup.</p>
<table><caption>Claude Code desktop permission modes</caption><thead><tr><th>Mode</th><th>What it does</th></tr></thead><tbody><tr><td>Manual</td><td>Claude asks before editing files or running commands. You see a diff and accept or reject each change. The recommended starting point.</td></tr><tr><td>Accept edits</td><td>Claude auto-accepts file edits and common filesystem commands, but still asks before other terminal commands.</td></tr><tr><td>Plan</td><td>Claude reads and explores, then proposes a plan without touching your source code, for when you want to review the approach first.</td></tr><tr><td>Auto</td><td>Claude executes with background safety checks that verify alignment with your request, cutting down on prompts while keeping oversight.</td></tr><tr><td>Bypass permissions</td><td>Claude runs without prompts at all. Only use this in a sandboxed container or VM, never on a real client machine.</td></tr></tbody></table>
<h2>Setting Up Your First Session</h2>
<p>Before you send your first message, the prompt area asks you to set four things, all without a command line in sight.</p>
<ol><li>Environment - Local for your own machine, Cloud for a remote session, SSH for a machine you manage, or WSL on Windows.</li><li>Project folder - the repository Claude works in for this session.</li><li>Model - pick from the dropdown next to the send button, and change it mid-session if you need to.</li><li>Permission mode - see the table above. You can change this mid-session too.</li></ol>
<p>Type your task and hit Enter. That is the entire setup. Each session then tracks its own context and its own changes, independent of every other session you have open.</p>
<h2>The CCC Three-Tab Split</h2>
<p>This is how we teach members to actually use the three tabs together instead of living in just one. Use Chat to scope the ask before you commit a project folder to it - talk through what you actually want built, the way you would talk to a contractor before signing anything. Use Code for the real build session, with a project folder attached and the diff view open, so every change is something you can see and approve. Use Cowork and Dispatch for the long-running or scheduled work you do not want to babysit, including tasks you kick off from your phone when you are away from your desk.</p>
<p>The mistake we see most is builders trying to do everything in Chat because that is the tab that feels most familiar from using Claude generally. Chat has no project folder and no diff view, so nothing you do there is a tracked, reviewable build. The Code tab is where the actual work should happen.</p>
<h2>Run This Checklist Before Your First Desktop Build</h2>
<ul><li>Confirm your plan - Pro, Max, Team, or Enterprise - since the desktop app needs one of those to use the Code tab.</li><li>On Windows, install Git for Windows before your first Code session, or the tab will not open.</li><li>Start your first real project on Manual mode so you can see exactly what Claude touches before you loosen the leash.</li><li>Set a project folder before you start typing tasks - a session with no folder attached has nothing to build against.</li></ul>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club we walk new members through their first desktop-app session live, and share the settings files our own builds run on. Join for 9 dollars a month at claudecodeclub.ai.</blockquote>
<h2>FAQ</h2>
<p><strong>Do I need to know the terminal to use Claude Code?</strong></p><p>No. The Claude desktop app's Code tab runs full Claude Code sessions with a diff viewer, a browser pane, and file editor, and you never have to open a terminal to start a build. A terminal pane is available inside the app if you want it, but it is optional, not required.</p>
<p><strong>What is the difference between the Code tab and the Cowork tab?</strong></p><p>The Code tab is for active software builds attached to a project folder, with a diff view and browser pane for review. Cowork is for longer background agentic work and Dispatch, including tasks you send from your phone, that you do not need to watch in real time.</p>
<p><strong>What subscription do I need for the desktop app?</strong></p><p>A Pro, Max, Team, or Enterprise plan. The app itself is free to download for macOS, Windows, or Linux (beta), but the Code tab needs one of those plans to run sessions.</p>
<p><strong>Can I use the same settings between the desktop app and the CLI?</strong></p><p>Yes. The desktop app reads the same settings files as the terminal-based CLI, so permission modes, output styles, and project configuration carry over either way you work.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code Output Styles: What Changed and How to Set One Now</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-output-styles</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-output-styles</guid>
      <pubDate>Tue, 11 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Tools</category>
      <category>Workflows</category>
      <description><![CDATA[The standalone /output-style command is gone - deprecated in Claude Code v2.1.73 and removed in v2.1.91. If a guide still tells you to type it, that guide is out of date. Here is how output styles actually work now, and how we use them for client work.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Claude Code output styles change the tone, role, and response format of every message by rewriting the system prompt - not what Claude knows about your codebase, which is what CLAUDE.md still handles.</li><li>The standalone /output-style command is gone. It was deprecated in Claude Code v2.1.73 and removed entirely in v2.1.91, so a guide that tells you to type /output-style is already out of date. Run /config and pick Output style from the menu instead, or set the outputStyle field directly in your settings file.</li><li>Four styles ship built in - Default, Proactive, Explanatory, and Learning - and you can write your own as a Markdown file with frontmatter, saved to ~/.claude/output-styles for every project or .claude/output-styles for just one.</li></ul>
<h2>What an Output Style Actually Changes</h2>
<p>An output style changes how Claude responds, not what it knows. It rewrites part of the system prompt to set a role, a tone, and a response format, and that change applies to every message in the session, not just the next one. Use an output style when you find yourself re-prompting for the same voice or format every turn, or when you want Claude Code to act as something other than a software engineer for a while, like a writing assistant or a data analyst.</p>
<p>This is a different job than CLAUDE.md. CLAUDE.md tells Claude about your project - the conventions, the stack, the rules for this specific codebase. An output style tells Claude how to talk and how to structure what it hands back, regardless of which project it is in. Keep the two separate: project facts go in CLAUDE.md, communication style goes in the output style.</p>
<h2>The Four Built-In Output Styles</h2>
<table><caption>Claude Code's built-in output styles</caption><thead><tr><th>Style</th><th>What it does</th></tr></thead><tbody><tr><td>Default</td><td>The existing system prompt, built to help you complete software engineering tasks efficiently. This is what you get with no style set.</td></tr><tr><td>Proactive</td><td>Claude executes immediately and makes reasonable assumptions instead of pausing for routine decisions. You still see permission prompts before tools run - this is not the same as auto mode.</td></tr><tr><td>Explanatory</td><td>Adds educational 'Insights' alongside the work, explaining implementation choices and codebase patterns as it goes.</td></tr><tr><td>Learning</td><td>A collaborative, learn-by-doing mode where Claude shares Insights and also leaves TODO(human) markers in the code for you to fill in yourself.</td></tr></tbody></table>
<h2>How to Set an Output Style Now (Not With /output-style)</h2>
<p>Run /config and select Output style to pick from a menu. Your choice is saved to .claude/settings.local.json at the local project level. If you would rather skip the menu, set the outputStyle field directly in a settings file, for example outputStyle: &quot;Explanatory&quot;.</p>
<blockquote><strong>WARNING:</strong> The standalone /output-style command was deprecated in Claude Code v2.1.73 and fully removed in v2.1.91. Plenty of guides, cheat sheets, and AI answers still tell you to type it - that instruction no longer works. /config is the current path.</blockquote>
<p>Output style is part of the system prompt, and Claude Code reads the system prompt once at session start. That means a style change only takes effect after you run /clear or start a new session - switching mid-conversation without clearing does nothing.</p>
<h2>Build Your Own Output Style</h2>
<p>A custom output style is a Markdown file: frontmatter for metadata, then plain instructions appended to the system prompt. Save it at one of three levels - your user directory at ~/.claude/output-styles for every project, your repo at .claude/output-styles for just that project, or a managed policy directory for an organization-wide style. The file name becomes the style's name unless you set one in the frontmatter.</p>
<table><caption>Output style frontmatter fields</caption><thead><tr><th>Field</th><th>Purpose</th></tr></thead><tbody><tr><td>name</td><td>Name of the style, if different from the file name.</td></tr><tr><td>description</td><td>Shown in the /config picker.</td></tr><tr><td>keep-coding-instructions</td><td>Set true to keep Claude Code's built-in software engineering behavior alongside your custom instructions. Defaults to false.</td></tr><tr><td>force-for-plugin</td><td>Plugin styles only - applies the style automatically whenever the plugin is enabled.</td></tr></tbody></table>
<p>Decide on keep-coding-instructions first. Set it true when you are changing how Claude communicates but still want it coding the same way it always does, like a style that leads every explanation with a diagram. Leave it out entirely when Claude is not doing software engineering at all.</p>
<h2>The CCC Settings Sweep</h2>
<p>This is the habit we teach members to run after every Claude Code update, not just once when they set the tool up: open /config and click through every menu, including Output style, before you start real work. Claude Code ships fast, and commands get renamed or removed between versions - /output-style is the clearest recent example. A two-minute sweep after an update catches a broken habit before it costs you an hour mid-build on a client project.</p>
<p>It is a small habit, but it is the difference between finding out a command changed from a blog post after the fact, and finding out from your own /config menu before it ever slows you down.</p>
<h2>Where This Matters on Client Work</h2>
<p>A custom output style is worth setting up the first time you catch yourself typing the same formatting request over and over. If you are pairing with a non-technical client and re-explaining every diff in plain language, write an Explanatory-style variant that always leads with the plain-language version before the technical detail, and keep-coding-instructions true so the actual build quality does not change. Set it once per client folder and every session in that project inherits the tone automatically.</p>
<blockquote><strong>TIP:</strong> Inside Claude Code Club we share the exact output style files our members run for client-facing sessions versus solo build sessions, so you can copy a working setup instead of writing one from scratch. Start with the curriculum or join us at https://www.skool.com/claudecodeclub/about.</blockquote>
<h2>FAQ</h2>
<p><strong>Why doesn't /output-style work anymore?</strong></p><p>It was deprecated in Claude Code v2.1.73 and removed in v2.1.91. Use /config and select Output style from the menu, or set the outputStyle field directly in a settings file.</p>
<p><strong>What is the difference between an output style and CLAUDE.md?</strong></p><p>An output style changes how Claude communicates - tone, role, and format - across every project. CLAUDE.md tells Claude facts about one specific project - its conventions, stack, and rules. Style goes in the output style, project knowledge goes in CLAUDE.md.</p>
<p><strong>Do output styles apply to subagents?</strong></p><p>No. Output styles apply to the main conversation only, because a subagent runs its own separate system prompt. A fork is the one exception, since a fork inherits the parent session's full system prompt including its output style.</p>
<p><strong>Where do I save a custom output style file?</strong></p><p>As a Markdown file at ~/.claude/output-styles for a style you want in every project, .claude/output-styles inside a specific repo for a project-only style, or inside a managed settings directory for an organization-wide style.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Build Your Own MCP Server for Claude Code</title>
      <link>https://www.claudecodeclub.ai/blog/how-to-build-a-claude-code-mcp-server</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/how-to-build-a-claude-code-mcp-server</guid>
      <pubDate>Mon, 10 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>MCP</category>
      <category>Building</category>
      <category>Claude Code</category>
      <description><![CDATA[An MCP server for Claude Code is a small program that hands the agent new tools and live data it did not ship with - your CRM, your internal API, your file format. Here is the minimal build, wired end to end, that I use when the ready-made servers do not cover what a client actually needs.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>An MCP server is a small standalone program that speaks the Model Context Protocol and exposes tools, resources, or prompts to Claude Code, so the agent can reach a system it was never built to know about.</li><li>The minimal build is three pieces: a server that lists what it offers, a transport that connects it to Claude Code, and one or more tool handlers that actually do the work when the agent calls them.</li><li>You register it locally with one command, Claude Code discovers the tools automatically, and from then on the agent can call your CRM, your internal API, or your own database the same way it calls any built-in tool.</li></ul>
<h2>What an MCP Server Actually Gives Claude Code</h2>
<p>An MCP server is a small standalone program that speaks the Model Context Protocol and hands Claude Code new tools, live data, or reusable prompts it did not ship with. Claude Code already reads your files and runs your terminal. An MCP server extends that reach to anything with an API: a client's CRM, an internal ticketing system, a proprietary database, a niche file format nobody wrote a public integration for. You build the bridge once, and the agent can use it in every project from then on.</p>
<p>You do not need one for most work. Claude Code already reads and writes files, runs shell commands, and can hit any REST API you point it at inside a single session. Build a server when the same connection needs to exist across many sessions and many projects, when the system needs a stable, named tool the agent can call reliably instead of you re-explaining the API shape every time, or when you want to hand a client or teammate a tool without handing them your raw credentials and prompt scaffolding.</p>
<h2>The Three Pieces Every MCP Server Needs</h2>
<p>Every MCP server, no matter how simple, is the same three pieces wired together.</p>
<ol><li>A server instance that declares its own name and version, and lists what it offers - one or more tools, and optionally resources (readable data) or prompts (reusable instructions).</li><li>A transport that connects the server to Claude Code. Locally this is almost always stdio - the server runs as a subprocess and talks to Claude Code over standard input and output, which is the simplest option and the one to reach for first.</li><li>One tool handler per capability - a function that takes the arguments Claude Code sends, does the real work (call an API, query a database, read a file), and returns a result the agent can read and act on.</li></ol>
<blockquote><strong>NOTE:</strong> Anthropic publishes an official MCP TypeScript SDK and a Python SDK. Both handle the protocol plumbing for you - message framing, schema validation, the handshake - so your actual code is just the tool handlers.</blockquote>
<h2>Building a Minimal Server, Step by Step</h2>
<p>This is the shortest path to a working server using the TypeScript SDK. The same shape applies in Python if that is your stack.</p>
<ol><li>Scaffold a new Node project and install the SDK: npm init -y, then npm install @modelcontextprotocol/sdk.</li><li>Create a server instance and give it a name and version - this is what shows up when Claude Code lists connected servers.</li><li>Register one tool with server.registerTool(): give it a name, a short description Claude Code will use to decide when to call it, and a Zod schema for its input arguments so bad calls fail before they reach your code.</li><li>Write the handler function - the part that actually does the work. Keep the first one boring on purpose: read a local JSON file, or call one endpoint on an API you already have a key for. Return a plain text or structured result.</li><li>Connect the server to a StdioServerTransport and call server.connect(). That is the entire runtime - no port, no listener to manage.</li></ol>
<blockquote><strong>TIP:</strong> Ask Claude Code to write this scaffold for you. Give it the SDK docs link and one sentence describing the tool you want, and it will produce a working server file faster than typing it by hand - then you review the handler logic, which is the part that actually matters.</blockquote>
<h2>Wiring It Into Claude Code</h2>
<p>Once the server file runs on its own without errors, register it with Claude Code using the CLI: claude mcp add my-server -- node /path/to/server.js. That writes the connection into Claude Code's config, and the next session Claude Code starts, it lists your tool alongside its built-in ones and calls it the same way - by deciding, based on your prompt and the tool's description, that it is the right tool for the job.</p>
<table><caption>Where an MCP server config can live</caption><thead><tr><th>Scope</th><th>When to use it</th></tr></thead><tbody><tr><td>Local (per-project)</td><td>A tool specific to one client or one codebase - credentials and config stay with that project only</td></tr><tr><td>User (global)</td><td>A tool you personally want available in every project - your own utilities, your own accounts</td></tr><tr><td>Project (checked into the repo)</td><td>A tool the whole team or client should have automatically when they open the project</td></tr></tbody></table>
<blockquote><strong>WARNING:</strong> Never hardcode an API key into the server file if it is going in a shared repo. Read it from an environment variable and document which one in your CLAUDE.md, the same way you would for any other secret.</blockquote>
<h2>A Real Build: Packaging a Client's Internal API as One Tool</h2>
<p>A client had an internal ops API with a dozen endpoints and no public SDK. Every session I would paste the same three endpoint shapes into the prompt so Claude Code could call them correctly. That is exactly the pattern an MCP server exists to remove. I wrote one server with three tools - lookup-order, update-status, and list-open-tickets - each a thin wrapper around one endpoint with a clear description and a validated schema.</p>
<p>After that, the agent called the API directly, by name, with correctly shaped arguments, in every new session without me re-explaining anything. The win was not speed on any single call - it was that the connection became a fact about the project instead of something I had to re-teach the agent each time I opened a new chat.</p>
<h2>When to Build Your Own vs. Use an Existing Server</h2>
<p>Check the MCP server registry and Anthropic's list of official integrations before you write anything - Slack, GitHub, Google Drive, Postgres, and a long list of others already have solid public servers, and building your own version of one of those is wasted time.</p>
<ul><li>Build your own when the system is internal, proprietary, or has no public API surface at all.</li><li>Build your own when you want to expose a narrow, safe slice of a bigger system - three approved actions, not the entire API.</li><li>Use an existing server when a maintained one already covers the exact tool you need. Contributing a fix upstream beats maintaining a private fork.</li></ul>
<h2>Start With One Endpoint This Week</h2>
<p>Pick the one API call you keep re-explaining to Claude Code at the start of every session. Wrap just that one call in a server with a single tool, register it locally, and confirm the agent calls it correctly without you describing the shape again. That one working tool is the whole pattern - everything past it is just adding more handlers to the same server.</p>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club we share the actual server files we build for client work - the boring, real ones, not toy demos - and help each other debug the handshake when a tool refuses to show up. Bring the API you are tired of re-explaining and we will help you wrap it.</blockquote>
<h2>FAQ</h2>
<p><strong>What is an MCP server for Claude Code?</strong></p><p>It is a small standalone program that speaks the Model Context Protocol and hands Claude Code new tools, live data, or reusable prompts it did not ship with. It lets the agent reach systems like a CRM, an internal API, or a proprietary database the same way it reaches its built-in file and terminal tools.</p>
<p><strong>Do I need to build my own MCP server, or is there already one for my use case?</strong></p><p>Check the MCP server registry and Anthropic's official integrations list first. Slack, GitHub, Google Drive, Postgres, and many other common systems already have maintained public servers. Build your own only when the system is internal, proprietary, or has no existing integration.</p>
<p><strong>What do I actually need to build a minimal MCP server?</strong></p><p>Three pieces: a server instance that declares what it offers, a transport (stdio is simplest for local use) that connects it to Claude Code, and one tool handler function per capability that does the real work and returns a result. Anthropic's TypeScript and Python SDKs handle the protocol plumbing for you.</p>
<p><strong>How does Claude Code find and use a custom MCP server?</strong></p><p>You register it once with the CLI - claude mcp add - pointing at the command that runs your server. From then on, Claude Code lists it alongside its built-in tools at the start of every session and calls it automatically when your prompt matches what the tool's description says it does.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code Plugins: How to Install and Build Your Own</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-plugins-explained</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-plugins-explained</guid>
      <pubDate>Mon, 10 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Tools</category>
      <category>Building</category>
      <category>Claude Code</category>
      <description><![CDATA[A Claude Code plugin bundles slash commands, MCP servers, hooks, and agent instructions into one shareable package, so a whole team or a whole client roster starts every project with the same setup instead of everyone reinventing it. Here is how I install one, and how I package my own agency's workflow as one.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>A Claude Code plugin is a shareable package that bundles slash commands, MCP server connections, hooks, and agent instructions together, so installing one thing gives you a whole configured setup instead of assembling it piece by piece.</li><li>You install a plugin from a marketplace - a git repo or a curated list - with one command, and it is available in every session from then on, the same as if you had hand-built each piece yourself.</li><li>Building your own is the real leverage move for an agency: package the CLAUDE.md rules, commands, and tool connections you use on every client project once, and every new engagement starts already configured instead of rebuilt from memory.</li></ul>
<h2>What a Claude Code Plugin Actually Bundles</h2>
<p>A Claude Code plugin is a shareable package that bundles several pieces of setup into one install: custom slash commands, MCP server connections, hooks that run on specific events, and standing agent instructions. Instead of you writing a slash command here, wiring an MCP server there, and pasting the same CLAUDE.md rules into every new project, a plugin packages all of it and installs in one step.</p>
<p>This matters most the moment more than one person, or more than one project, needs the same setup. A solo builder can get by copy-pasting their config between projects. An agency running the same workflow across a dozen client engagements cannot - drift creeps in, someone forgets a rule, and every project ends up configured slightly differently. A plugin is the fix: one source of truth, installed the same way everywhere.</p>
<h2>Installing a Plugin</h2>
<p>Plugins are distributed through marketplaces - a marketplace is just a git repository or curated index that lists available plugins. You add a marketplace once, then install from it.</p>
<ol><li>Add the marketplace with /plugin marketplace add, pointing at the repo or index URL.</li><li>Browse or search what it offers with /plugin, or install directly by name if you already know it.</li><li>Confirm the install - Claude Code shows you exactly what the plugin adds (which commands, which servers, which hooks) before it takes effect.</li><li>Restart the session if prompted. From then on, the plugin's commands and tools are just part of your Claude Code setup.</li></ol>
<blockquote><strong>WARNING:</strong> A plugin can include hooks that run automatically and MCP servers that reach real systems, so only install ones from a marketplace you actually trust. Read what it adds before confirming, the same way you would review a dependency before adding it to a codebase.</blockquote>
<h2>Building Your Own Plugin</h2>
<p>A plugin is mostly a folder with a manifest and the pieces you want to bundle - a plugin.json that declares its name and what it includes, plus your commands, hooks, and server configs in their normal locations inside that folder. If you already have a working CLAUDE.md, a few custom slash commands, and an MCP server you use on every project, packaging them as a plugin is mostly moving files into the right structure and writing the manifest, not building anything new.</p>
<ul><li>Start from what you already have. Do not design a plugin from scratch - pull the commands, hooks, and config you already use across projects and bundle those first.</li><li>Keep it narrow. A plugin that does one job well (your intake workflow, your deploy checklist) is more useful and easier to trust than one that tries to bundle everything.</li><li>Version it. Once teammates or clients depend on the plugin, treat changes to it like you would any shared dependency - test before you push an update everyone pulls automatically.</li></ul>
<h2>A Real Build: Packaging the Agency Intake Workflow</h2>
<p>Every new client project on our side starts the same way - the same CLAUDE.md ground rules, the same discovery-brief slash command, the same connection to our project-tracking tool. For a long time that meant re-pasting the same files into every new repo, and inevitably one project would end up missing a rule because I forgot a step during a busy week.</p>
<p>Packaging it as a plugin turned that into one install command at the start of a new engagement. The discovery-brief command, the ground rules, and the tracker connection all arrive together, configured the same way every time. The value was not any single piece - it was that a new project now starts at the same baseline as every project before it, instead of at whatever I remembered to copy that day.</p>
<h2>When a Plugin Is Overkill</h2>
<p>If it is one command you use in one project, just write the slash command directly in that project. Reach for a plugin once the same setup needs to travel - across your own projects, across a team, or across a roster of clients. Building a plugin for something that will only ever live in one place is a packaging step you do not need yet.</p>
<h2>Package Your Own Setup This Week</h2>
<p>Look at the last three projects you started and find the one thing you copy-pasted into all three - a command, a rule, a tool connection. Package just that one thing as a plugin, install it fresh on your next project, and confirm it arrives exactly as configured. That is the whole discipline: stop re-typing the setup, install it instead.</p>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club we compare the plugins we have each built for client work and steal the good ideas from each other's setups. Bring the one thing you keep rebuilding by hand and we will help you turn it into an install.</blockquote>
<h2>FAQ</h2>
<p><strong>What is a Claude Code plugin?</strong></p><p>A shareable package that bundles slash commands, MCP server connections, hooks, and standing agent instructions into one install. Instead of assembling each piece separately in every project, installing a plugin gives you the whole configured setup at once.</p>
<p><strong>How do I install a Claude Code plugin?</strong></p><p>Add a marketplace (a git repo or curated index of plugins) with /plugin marketplace add, then browse or install a specific plugin by name. Claude Code shows you exactly what it will add before you confirm, and it is available in every session from then on.</p>
<p><strong>Is it safe to install any Claude Code plugin?</strong></p><p>Only install plugins from marketplaces you trust. A plugin can include hooks that run automatically and MCP servers that connect to real systems, so review what it adds before confirming, the same way you would vet a new dependency before adding it to a codebase.</p>
<p><strong>Why would I build my own plugin instead of just using slash commands?</strong></p><p>Build one once the same setup needs to travel to more than one place - across your own projects, a team, or a roster of clients. Packaging your commands, rules, and tool connections as a plugin means every new project starts at the same configured baseline instead of being rebuilt from memory each time.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code Permissions Explained: Let It Move Fast Without Losing Control</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-permissions-explained</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-permissions-explained</guid>
      <pubDate>Sun, 09 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Workflows</category>
      <category>Claude Code</category>
      <category>Building</category>
      <description><![CDATA[The permission prompt is not friction to switch off - it is the dial that decides how much Claude Code can do before it checks with you. Set it wrong and you either approve every keystroke or hand an agent the keys to your machine. Here is how the permission modes actually work and the setup I use for client work.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Claude Code permissions control how much the agent can do - read, edit, run commands - before it stops to ask you. The prompt you keep clicking through is that boundary doing its job, not a bug to silence.</li><li>There are a few working modes: ask before each sensitive action (the safe default), auto-accept edits so you are not clicking through every file change, and a fully autonomous mode that skips prompts entirely and should only ever run in a sandbox you can throw away.</li><li>For client work I keep prompts on for anything that touches the shell or the network, and I allowlist only the specific safe commands I run constantly. That gets me speed on the boring parts without handing an agent unattended access to a machine that holds a client's code.</li></ul>
<h2>What Claude Code Permissions Actually Control</h2>
<p>A permission in Claude Code is a checkpoint. Before the agent does something that could change your machine or reach outside it - editing a file, running a shell command, hitting the network - it stops and asks. The permission you grant decides whether that specific kind of action needs a yes from you every time, is pre-approved, or is blocked outright.</p>
<p>This is worth understanding rather than clicking past, because the prompt is the only thing standing between 'the agent proposed a command' and 'the command ran.' Reading code and drafting edits is low-risk. Running a command in your terminal is the moment an agent can actually do damage, and that is exactly the action the permission system is built to gate.</p>
<h2>The Permission Modes, Plainly</h2>
<p>Claude Code gives you a few levels of trust. You move up the levels as the risk of the task goes down and the value of not being interrupted goes up.</p>
<ul><li>Ask each time (the safe default): the agent pauses for your approval before any sensitive action. Slowest, but nothing happens without you seeing it first. This is where you should live for anything touching a client's real project.</li><li>Auto-accept edits: file edits apply without a prompt, but commands and network access still ask. This is the sweet spot for focused building - you stop clicking through every file write, but the shell is still gated.</li><li>Full autonomy (skip all prompts): the agent runs commands without asking. Genuinely useful for a scripted, unattended job - and genuinely dangerous anywhere else. Only run this inside a sandbox or throwaway environment you would not mind losing.</li></ul>
<blockquote><strong>WARNING:</strong> Skipping all permission prompts on a machine that holds real client code or live credentials is the one setting that can turn a small agent mistake into a real incident. If you would not run a script you had not read as root, do not run an agent that way either.</blockquote>
<h2>The Allowlist Is the Real Tool</h2>
<p>The reason people reach for the skip-everything switch is fatigue - approving the same safe command for the hundredth time. The better fix is an allowlist. You can pre-approve specific commands you trust and run constantly, so those stop prompting while everything else still stops to ask.</p>
<p>In practice that means the reads and the routine, obviously-safe commands run without interruption, and anything unusual - a delete, a force push, an install from somewhere new, a command that reaches the network - still surfaces for a human yes. You get most of the speed of full autonomy with almost none of the exposure.</p>
<ul><li>Allowlist the narrow, safe things you run every session, not broad wildcards. 'This exact test command' is safe to pre-approve; 'any command starting with a shell' is not.</li><li>Keep destructive and hard-to-reverse actions on the ask list on purpose - deletes, force pushes, resets, anything that spends money.</li><li>Review your allowlist occasionally. An entry that made sense on one project can be too broad on the next.</li></ul>
<h2>The Setup I Use for Client Work</h2>
<p>On a client project the machine is not mine to gamble with, so I default to prompts on for anything that touches the shell or the network, turn on auto-accept for edits once I trust the direction the agent is heading, and allowlist the handful of commands I run all day - the test runner, the type checker, the local build. Everything else asks.</p>
<p>When I genuinely want unattended autonomy - an overnight batch, a repetitive migration - I move that work into a sandbox or a throwaway checkout, let it skip prompts there, and keep it away from the real project and any live keys. The rule is simple: full autonomy is fine when the blast radius is a folder I can delete, and never fine when it is a client's production repo.</p>
<h2>Set Your Permissions Once, on Purpose</h2>
<p>Do not let the permission model be an accident of whatever you clicked last. Decide it deliberately: prompts on for shell and network, auto-accept for edits when you are in flow, a short allowlist of commands you actually trust, and full autonomy only inside a sandbox. That single decision is the difference between an agent that saves you hours and one that can quietly wreck an afternoon.</p>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club we share the exact allowlists we run on client projects, so you can start from a setup that is already vetted instead of guessing which commands are safe to pre-approve. Join for 9 dollars a month at claudecodeclub.ai.</blockquote>
<h2>FAQ</h2>
<p><strong>What are Claude Code permissions?</strong></p><p>They are checkpoints that decide how much Claude Code can do - read files, edit them, run commands, reach the network - before it stops to ask for your approval. The permission prompt you click through is that boundary working as intended.</p>
<p><strong>Is it safe to turn off Claude Code's permission prompts?</strong></p><p>Only inside a sandbox or throwaway environment. Skipping all prompts lets the agent run commands without asking, which is useful for unattended jobs but dangerous on any machine holding real client code or live credentials. Keep prompts on for the shell and network on real projects.</p>
<p><strong>How do I stop approving the same command over and over?</strong></p><p>Use an allowlist. Pre-approve the specific, safe commands you run every session - your test runner, type checker, local build - so they stop prompting, while deletes, force pushes, installs, and network calls still ask for a human yes.</p>
<p><strong>What permission setup should I use for client work?</strong></p><p>Prompts on for anything touching the shell or network, auto-accept for edits once you trust the direction, and a short allowlist of commands you run constantly. Save full autonomy for a sandbox you can throw away, never a client's production repo.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Hand Off a Claude Code Project to a Client Without Leaving Them Stuck</title>
      <link>https://www.claudecodeclub.ai/blog/how-to-hand-off-a-claude-code-project</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/how-to-hand-off-a-claude-code-project</guid>
      <pubDate>Sun, 09 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Agency</category>
      <category>Client Work</category>
      <category>Building</category>
      <description><![CDATA[The build is only half the job. If the client cannot run, change, or understand what you shipped after you leave, you have delivered a black box - and black boxes generate the kind of support calls that quietly eat your margin. Here is the handoff checklist I use so a Claude Code project keeps working after I do.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>A clean handoff means the client can run the project, make a small change, and understand what it does without calling you - and knows exactly what to do when something breaks.</li><li>The deliverables that matter are a working setup they can reproduce, plain-language docs written for their skill level, and the CLAUDE.md and project rules so their next builder (or their own Claude Code session) starts where you left off instead of from scratch.</li><li>Do the handoff as its own scoped step, not a rushed email on the last day. It is what turns a one-off build into a referral and a retainer instead of a stream of unpaid support questions.</li></ul>
<h2>Why the Handoff Is Where Agency Projects Quietly Fail</h2>
<p>You can build something excellent with Claude Code and still deliver a bad experience if the client is stranded the moment you step away. A project they cannot run, change, or explain is a liability to them and a support burden to you. The handoff is the step that decides which of those two things you actually shipped.</p>
<p>It is also the step most builders skimp on, because the exciting part - the build - is done and the last day always feels rushed. That is exactly why margin leaks here: an under-planned handoff turns into weeks of one-off 'quick question' messages you never billed for.</p>
<h2>The Three Things a Client Actually Needs</h2>
<p>Strip the handoff down to what the client must be able to do on their own, and it comes to three things.</p>
<ol><li>Run it. They can get the project working from a clean start, following steps that assume their skill level, not yours. If setup needs a key or an account, the docs say which one and where it goes.</li><li>Change it. They can make one small, realistic change - update a piece of copy, add a field - and see it take effect. If they can do one change, they trust they can do the next.</li><li>Understand it. They know, in plain language, what the project does, what its main parts are, and what to do when something breaks - including how to hand it to another builder later.</li></ol>
<h2>Package the Claude Code Context, Not Just the Code</h2>
<p>The unique deliverable on a Claude Code build is the context that made the agent effective: the CLAUDE.md rules, any custom commands, and the project conventions you established. Hand those over deliberately. They are what let the client's own Claude Code session - or the next agency they hire - pick up the project at your baseline instead of reverse-engineering it.</p>
<p>Leave the CLAUDE.md in the repo, readable and current, describing how the project is meant to be worked on. A client who opens Claude Code in that repo six months from now should land in a session that already knows the rules, not a blank slate. That single file is often the difference between a project that stays maintainable and one that rots the moment you leave.</p>
<blockquote><strong>TIP:</strong> Write the docs and the CLAUDE.md for the person who will actually inherit this, not for a peer. If the client is non-technical, say 'open the terminal and paste this', not 'run the standard build.' The handoff is judged by whether they succeed, not by how expert it sounds.</blockquote>
<h2>Scope the Handoff as Its Own Step</h2>
<p>The fix for the rushed last-day handoff is to make it a named line in the scope from the start - a deliverable with its own time, not a favor you squeeze in after the build. When the client sees 'handoff and documentation' as part of what they are paying for, it gets the attention it deserves and you are not eating the cost of it.</p>
<p>That framing also opens the door to what comes next. A client who has just been handed a working, documented, changeable project is the easiest person to offer a maintenance retainer to - because they can already see exactly where they will want help. The handoff done well is the setup for the recurring revenue.</p>
<h2>Run This Checklist Before You Call It Done</h2>
<p>Before you send the final invoice, do the handoff from the client's chair: start from a clean copy, follow your own setup docs exactly as written, make one small change, and confirm it works. If you get stuck, so will they. Fix the gap now, while it costs you ten minutes instead of a support thread.</p>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club we share the actual handoff docs and CLAUDE.md templates we ship to clients, so your delivery step is a checklist instead of a scramble. Join for 9 dollars a month at claudecodeclub.ai.</blockquote>
<h2>FAQ</h2>
<p><strong>What should a Claude Code project handoff include?</strong></p><p>Three things the client can do on their own: run the project from a clean start, make one small change and see it work, and understand in plain language what it does and what to do when it breaks. Package the CLAUDE.md and project rules too, so their next builder starts at your baseline.</p>
<p><strong>Why hand over the CLAUDE.md file to a client?</strong></p><p>It is the context that made the agent effective on the project. Leaving a current, readable CLAUDE.md in the repo means the client's own Claude Code session, or the next agency they hire, picks the project up at your baseline instead of reverse-engineering it from scratch.</p>
<p><strong>How do I stop a handoff from turning into unpaid support?</strong></p><p>Scope the handoff as its own paid deliverable with real docs written for the client's skill level, and test it from a clean start before you invoice. A documented, reproducible setup replaces the stream of 'quick question' messages that eat your margin after the build.</p>
<p><strong>Can a good handoff lead to more work?</strong></p><p>Yes. A client who has just received a working, documented, changeable project is the easiest person to offer a maintenance retainer to, because they can already see where they will want ongoing help. A strong handoff is the setup for recurring revenue.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code vs Windsurf: An Honest Comparison for Builders</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-vs-windsurf</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-vs-windsurf</guid>
      <pubDate>Sat, 08 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Tools</category>
      <category>Building</category>
      <description><![CDATA[Claude Code vs Windsurf comes down to where the agent lives and how far it can reach. Windsurf is an AI-native editor built around its Cascade agent; Claude Code is a terminal-native agent that works alongside any editor and can run without you watching. Here is how to tell which one fits how you actually build.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Windsurf is an AI-native code editor built around its Cascade agent, with in-editor autocomplete and a Turbo Mode that can auto-run terminal commands. Claude Code is a terminal-native agent that runs alongside whatever editor you already use.</li><li>The real dividing line is not how smart either agent is. It is reach: Windsurf's agent lives inside its own editor, while Claude Code can also run headless, in a script, on a schedule, or inside CI, with nobody watching the screen.</li><li>Pick Windsurf if you want AI woven into a familiar IDE. Pick Claude Code if you want an agent that can run unattended and reach past your code into your other tools. Plenty of builders end up using pieces of both.</li></ul>
<h2>Claude Code vs Windsurf: The Real Difference</h2>
<p>Claude Code vs Windsurf is a question of where the agent lives, not which model is smarter. Windsurf is a code editor first, a fork of the familiar VS Code layout with its Cascade agent built into the middle of it. You open a project, and the agent sits in that editor with you, reading your files and making edits inside the same window you are looking at. Claude Code is not an editor at all. It runs in your terminal or the desktop app, works on the project on disk, and does not care what editor you have open next to it, if any.</p>
<table><caption>Claude Code vs Windsurf at a glance</caption><thead><tr><th>Dimension</th><th>Windsurf</th><th>Claude Code</th></tr></thead><tbody><tr><td>What it is</td><td>An AI-native code editor built around the Cascade agent</td><td>A coding agent that runs in your terminal or desktop app</td></tr><tr><td>Where AI lives</td><td>Inline Tab completion plus an agentic Cascade panel</td><td>A conversation that reads files, edits code, and runs commands</td></tr><tr><td>Auto-running commands</td><td>Turbo Mode lets Cascade run terminal commands without asking</td><td>Runs commands directly, with permission rules you set yourself</td></tr><tr><td>Reach beyond the editor</td><td>MCP integrations reachable from inside the editor</td><td>MCP, plus hooks, subagents, and a headless SDK</td></tr><tr><td>Runs with nobody watching</td><td>Built around a person sitting in the editor</td><td>Yes - scriptable, schedulable, and CI-friendly</td></tr><tr><td>Best for</td><td>Builders who want AI woven into a familiar IDE</td><td>Builders who want to delegate whole tasks, including unattended ones</td></tr></tbody></table>
<h2>What Windsurf Actually Does Well</h2>
<p>Windsurf earns its following honestly. Cascade is built to hold the whole codebase in view, not just the open file, so when it proposes a multi-file change it is usually working from real context about how your project fits together. Tab, its completion system, predicts your next edit and the next file jump, not just the next line. Turbo Mode lets Cascade run terminal commands on its own once you trust it to, which removes a lot of the click-to-approve friction that slows other AI editors down.</p>
<ul><li>Cascade reads your open files, terminal activity, and recent edits to keep its suggestions grounded in what you are actually doing.</li><li>Tab-style completion predicts the next edit across a file, not just the next few characters.</li><li>MCP support lets you wire Cascade into outside tools such as project trackers or databases, reachable from inside the editor.</li><li>It looks and feels like a normal IDE, so a developer switching from VS Code is productive within minutes.</li></ul>
<h2>What Claude Code Does That an Editor Can't</h2>
<p>The thing an editor-bound agent cannot do is run without the editor open. Claude Code is built to work whether or not a human is sitting there watching it. You can hand it a task from the desktop app and step away, kick it off from a script, wire it into a scheduled job, or have it run as a step in your CI pipeline. Hooks let you run your own commands automatically around what the agent does. Subagents let it split a large job into pieces that each work in their own clean context instead of cluttering one long conversation.</p>
<blockquote><strong>NOTE:</strong> You do not need to live in the terminal to get this. The Claude Code desktop app is the easiest way in - it gives you the same agent, the same file access, and the same reach into your other tools, without asking you to be comfortable at a command line first. The terminal is there if you want it, not a requirement to get started.</blockquote>
<h2>The CCC Reach Test - How I Actually Decide</h2>
<p>I use one question to cut through the feature lists fast: does this task need someone sitting at the editor, or can it run without me? That is the Reach Test, and it is the one differentiator that does not blur once you look past the marketing. Windsurf's agent is excellent, but it is built around a person in the editor loop. Claude Code's agent is built to work the same whether a person is present or not.</p>
<ol><li>If the task is you, live, shaping code line by line with AI suggesting as you go, an editor-native agent like Windsurf's Cascade fits that loop well.</li><li>If the task is one you would rather hand off completely and check on later, that is a delegate task, and it is where Claude Code's reach past the editor starts to matter.</li><li>If the task needs to run on a schedule, inside a build pipeline, or as part of an automation nobody is watching, only the terminal-native agent can do it at all.</li></ol>
<h2>Where Each One Actually Wins</h2>
<p>Windsurf wins when you want to stay inside one familiar window and have AI woven through every part of it - completion, chat, and an agent that can see your whole project without you switching tools. Claude Code wins the moment the job stops being about one editor session: automating a recurring task, running a build-time check, wiring an agent into a tool that has nothing to do with code, or running the same workflow for a client without you personally clicking through it each time.</p>
<blockquote><strong>TIP:</strong> This is not an either-or you have to commit to forever. It is common to keep Windsurf, or any editor, open for hands-on work and reach for Claude Code from the desktop app or terminal when a task is bigger than one editing session, or needs to run without you.</blockquote>
<h2>Pricing and Fit</h2>
<p>Check current pricing for both directly before you decide, since plans and tiers change. The more useful comparison than the raw number is fit: Windsurf replaces your editor, so its cost is the cost of your whole coding environment. Claude Code comes with a Claude subscription or usage-based API billing and sits alongside whatever editor you already use, so it is an addition to your stack rather than a replacement for it.</p>
<h2>FAQ</h2>
<p><strong>Is Claude Code better than Windsurf?</strong></p><p>Neither is simply better - they solve different problems. Windsurf is an AI-native editor built around its Cascade agent for hands-on, in-editor building. Claude Code is a terminal-native agent that works alongside any editor and can run without a person watching. If you want AI woven into a familiar IDE, Windsurf fits. If you want to delegate whole tasks, including unattended ones, Claude Code fits.</p>
<p><strong>Can I use Claude Code and Windsurf together?</strong></p><p>Yes. Claude Code does not require a specific editor, so you can keep Windsurf open for hands-on editing and reach for Claude Code from the desktop app or terminal when a task is bigger than one session or needs to run on its own. They are not mutually exclusive.</p>
<p><strong>Does Windsurf support running tasks without a person watching?</strong></p><p>Windsurf's Turbo Mode lets its Cascade agent auto-run terminal commands without asking each time, but the tool is still built around a person sitting in the editor. Claude Code is built to run headless from the start - scriptable, schedulable, and usable inside a CI pipeline - which is a different kind of unattended than auto-approving commands inside an open editor session.</p>
<p><strong>Do I need to use the terminal to use Claude Code?</strong></p><p>No. The Claude Code desktop app gives you the same agent and the same file access as the terminal, without requiring you to be comfortable at a command line. The terminal is an option for builders who prefer it, not the default way in.</p>
<p><strong>Which one is easier to learn, Windsurf or Claude Code?</strong></p><p>Windsurf is usually the gentler start if you already work in an IDE, because it looks and feels like the editor you know with AI added on top. Claude Code asks for a small shift toward describing a task and letting an agent carry it through, which takes a little longer to click but pays off once you start handing off bigger jobs, including ones that run without you.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code Extended Thinking: How Ultrathink Mode Actually Works</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-extended-thinking</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-extended-thinking</guid>
      <pubDate>Sat, 08 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Workflows</category>
      <category>Building</category>
      <category>Claude Code</category>
      <description><![CDATA[Claude Code extended thinking gives the agent extra reasoning time before it answers, and you control how much through four escalating keywords: think, think hard, think harder, and ultrathink. Here is what each level actually buys you, and the CCC Effort Ladder I use to decide when it is worth the wait.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Claude Code extended thinking is a mode where the agent spends extra tokens reasoning through a problem before it writes a response, instead of answering immediately off the first pattern it recognizes.</li><li>You control how much thinking time it gets with four escalating keywords in your prompt: think, think hard, think harder, and ultrathink, the strongest of the four. Ultrathink was re-introduced in Claude Code v2.1.68, giving the agent roughly 32,000 tokens of reasoning budget.</li><li>It is not a mode to leave on for everything. Reach for it on real architecture decisions and stubborn bugs, and skip it on routine edits, where it just adds wait time for no better answer.</li></ul>
<h2>What Claude Code Extended Thinking Actually Is</h2>
<p>Extended thinking is a mode where Claude Code reasons through a problem in a visible thinking pass before it writes its actual response, instead of going straight from your prompt to an answer. That extra pass costs tokens and time, and it buys you a model that has worked through tradeoffs, checked its own logic, and considered edge cases before committing to a plan. For a quick file rename, you do not need that. For a decision that will shape the next month of a codebase, you do.</p>
<blockquote><strong>NOTE:</strong> Extended thinking is not the same feature as Dynamic workflows, which is a separate opt-in that writes a whole multi-step script for a task. Extended thinking is about how hard the model reasons before one response. Dynamic workflows is about how the agent plans a sequence of actions. It is easy to mix the two up because both live behind unusual keywords.</blockquote>
<h2>The Four Thinking Keywords, Ranked</h2>
<p>You trigger extended thinking by putting one of four keywords anywhere in your prompt, and each one asks for a bigger reasoning budget than the last: think, then think hard, then think harder, then ultrathink at the top. Ultrathink was re-introduced in Claude Code v2.1.68 and gives the agent roughly 32,000 tokens to reason through the problem before it responds. The keyword is a one-time nudge for that specific message - it does not change your session's effort setting and does not carry over to your next prompt.</p>
<table><caption>Extended thinking keywords, low to high</caption><thead><tr><th>Keyword</th><th>What it signals</th></tr></thead><tbody><tr><td>think</td><td>A modest bump in reasoning time for a slightly non-trivial question</td></tr><tr><td>think hard</td><td>More budget - good for a real decision with a few competing options</td></tr><tr><td>think harder</td><td>A deeper pass, appropriate for a decision you would regret getting wrong</td></tr><tr><td>ultrathink</td><td>The largest budget, roughly 32,000 tokens of reasoning, for the hardest calls</td></tr></tbody></table>
<blockquote><strong>WARNING:</strong> Version matters here. Anthropic has changed how thinking modes work more than once, and ultrathink itself was dropped and then brought back in v2.1.68. If a keyword does nothing in your session, check your Claude Code version before assuming you are using it wrong.</blockquote>
<h2>What Ultrathink Actually Buys You</h2>
<p>The extra token budget goes toward the agent working through a problem the way a careful engineer would on a whiteboard before touching the keyboard: naming the options, checking each one against the actual constraints, and catching a flawed assumption before it turns into code. That is worth the wait on decisions where being wrong is expensive to unwind - choosing between two database schema approaches, tracking down a bug that only reproduces intermittently, or reviewing a security-sensitive piece of code for what an attacker could actually do with it.</p>
<ul><li>Architecture and schema decisions, where the cost of picking wrong shows up weeks later, not immediately.</li><li>A bug that has already survived one or two normal attempts to fix it.</li><li>Security-sensitive code, where you want the model reasoning about attacker behavior, not just correctness.</li><li>Any plan you are about to hand off and walk away from unattended, where nobody is there to catch a bad assumption mid-build.</li></ul>
<h2>When Extended Thinking Is Overkill</h2>
<p>Do not reach for ultrathink to fix a typo or rename a variable. Extended thinking adds real wait time for a bigger reasoning budget, and on a task with one obvious right answer, that budget has nothing useful to do with the extra tokens. Save it for the decisions that actually have more than one reasonable path, and let routine work move at normal speed.</p>
<blockquote><strong>TIP:</strong> A useful gut check: if you could not explain to a colleague why one approach beats another, that is a think-hard-or-higher task. If the answer is obvious the moment you read the request, it is not.</blockquote>
<h2>The CCC Effort Ladder - When to Use Which Level</h2>
<p>The Effort Ladder is the checklist I run before typing a thinking keyword at all: match the level to how expensive it would be to get the decision wrong, not to how important the project feels in general.</p>
<ol><li>No keyword - routine edits, boilerplate, anything with one obvious correct shape. Let the agent move at normal speed.</li><li>think or think hard - a real decision with two or three reasonable options, where you want the tradeoffs actually weighed, not just picked.</li><li>think harder - a decision you would regret getting wrong, or a bug that already beat one normal attempt to fix it.</li><li>ultrathink - the rare call: architecture that is expensive to change later, a security review, or a workflow you are about to let run unattended.</li></ol>
<h2>Adaptive Thinking and Where This Is Headed</h2>
<p>The newer Claude models are starting to handle some of this automatically. Adaptive thinking lets the model decide on its own how deeply to reason based on how complex your request actually is, rather than waiting for you to type a keyword. Anthropic recommends adaptive thinking as the standard setting for the newest Opus and Sonnet models. That does not make the four keywords useless - they are still the explicit override when you want to force a deeper pass on a specific call - but expect the model to lean on adaptive reasoning by default more often as this keeps evolving. Check your version's release notes before assuming last month's behavior still applies.</p>
<h2>How I Actually Used It: A Schema Decision I Didn't Regret</h2>
<p>I had a project where the obvious data model was a single table with a status column, and it would have worked fine for the first version. Before committing to it, I asked Claude Code to think harder about whether that shape would hold up once a second workflow needed to read the same records in a different order. The extra reasoning pass surfaced a real problem - two features I had planned would end up fighting over the same status field - and it proposed a small split that avoided the conflict entirely. That is not a dramatic story. It is exactly the kind of quiet, avoided rework that extended thinking is actually for: the mistake you never had to notice because it never got built.</p>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club we share the real prompts we use to trigger each thinking level and the specific decisions where members have found ultrathink worth the wait. Come in with a decision you are not sure about and we will help you work out which level it actually needs.</blockquote>
<h2>FAQ</h2>
<p><strong>What is Claude Code extended thinking?</strong></p><p>It is a mode where Claude Code spends extra tokens reasoning through a problem before it writes its response, instead of answering off the first pattern it recognizes. You trigger it with a keyword in your prompt, and the extra reasoning pass is most valuable on decisions with real tradeoffs, not routine edits.</p>
<p><strong>What does ultrathink do in Claude Code?</strong></p><p>Ultrathink is the strongest of four escalating thinking keywords (think, think hard, think harder, ultrathink) and gives the agent the largest reasoning budget, roughly 32,000 tokens, before it responds. It was re-introduced in Claude Code v2.1.68 after being dropped earlier, so check your version if the keyword does not seem to do anything.</p>
<p><strong>Does ultrathink carry over to my next message?</strong></p><p>No. Each thinking keyword is a one-time nudge for that specific prompt. It does not change your session's effort setting and does not persist to the next message, so you type it again each time you want that level of reasoning.</p>
<p><strong>When should I not use extended thinking in Claude Code?</strong></p><p>Skip it on routine work with one obvious right answer - typo fixes, simple renames, boilerplate. The extra reasoning budget has nothing useful to do on a task without real tradeoffs, so it just adds wait time. Save the keywords for decisions you would regret getting wrong.</p>
<p><strong>What is adaptive thinking, and does it replace the thinking keywords?</strong></p><p>Adaptive thinking lets newer Claude models decide on their own how deeply to reason based on the complexity of your request, without you typing a keyword. Anthropic recommends it as the standard setting for the newest Opus and Sonnet models. It does not remove the keywords - they are still the explicit override for forcing a deeper pass on a specific call.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code Usage Limits: What Happens When You Hit One (And What I Do About It)</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-usage-limits-what-to-do</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-usage-limits-what-to-do</guid>
      <pubDate>Fri, 07 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Workflows</category>
      <category>Setup</category>
      <description><![CDATA[Claude Code runs on a usage allowance that resets on a rolling window, and the worst time to learn that is mid-build. Here is what actually happens when you hit the limit and the habits I run so it stops catching me off guard.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Claude Code usage limits cap how much you can run in a given window, and the allowance resets on a rolling schedule rather than a hard daily cutoff you have to remember.</li><li>When you hit the limit mid-session, Claude Code stops taking new work and tells you when the allowance resets - it does not lose what you already built, but it does stop you from starting the next task.</li><li>I scope work in Plan Mode before I start it, watch context and cost on my statusline as I go, and push repetitive or low-judgment work to a cheaper model, so the limit resets before it ever catches me mid-task.</li></ul>
<h2>What Claude Code usage limits actually are</h2>
<p>Claude Code usage limits are the cap on how much you can run the agent within a given window before Anthropic pauses new work until the allowance resets. It is not a fixed daily quota you have to track by hand - it moves on a rolling window, so the limit you hit at 2pm resets a set number of hours later, not at midnight. The limit exists because every message, every tool call, and every file the agent reads costs real compute, and Anthropic has to allocate that fairly across everyone on a plan.</p>
<p>The part that catches people off guard is not the limit itself, it is the timing. You do not get warned at 20% used and then again at 50%. You are heads-down in a build, the agent is mid-tool-call, and then it stops and tells you the allowance is used up. Nothing about the work you already did is lost, but the next task has to wait.</p>
<h2>Why the limit resets on a window instead of a hard cutoff</h2>
<p>Claude Code is built on Claude Pro and Max plans, and both allocate usage on a rolling window rather than a calendar day. That matters for how you plan around it: if you burn most of your allowance in a three-hour sprint at 9am, you are not locked out until midnight, you are locked out until that specific window rolls forward. Knowing it is a rolling window, not a daily reset, changes how you sequence a day of work.</p>
<blockquote><strong>NOTE:</strong> The exact size of the allowance depends on your plan and changes as Anthropic adjusts it, so I am not going to quote a number here that will be stale in a month. What stays true regardless of the exact figure is the shape of the problem: a rolling cap, a hard stop when you hit it, and a wait for the reset.</blockquote>
<h2>The habits that keep me from hitting it mid-task</h2>
<p>The fix is not to use Claude Code less, it is to spend the allowance on purpose instead of by accident. Three habits do most of the work for me.</p>
<ul><li>Scope the task in Plan Mode first. A plan you approve before any code gets written means the agent is not burning tool calls exploring a direction you were going to reject anyway.</li><li>Watch context and cost as I go. I keep a running cost figure on my statusline so a long session shows me the number climbing instead of surprising me at the end.</li><li>Push repetitive, low-judgment work to a cheaper model. Formatting a file, writing boilerplate tests, or renaming a batch of variables does not need the same model as the architecture decision earlier in the session.</li><li>Close one task out before opening the next big one. A half-finished feature and a fresh unrelated feature running in the same long thread is the fastest way to burn allowance on context the agent has to re-read.</li></ul>
<blockquote><strong>TIP:</strong> If you have not set one up, a custom statusline showing session cost is the single easiest way to stop the limit from surprising you - I cover how I built mine in [how I see what my agent is doing at a glance](/blog/claude-code-custom-statuslines).</blockquote>
<h2>What I do the moment I see the warning</h2>
<p>The moment Claude Code tells me I am close to the limit, I stop treating it as an emergency and start treating it as a signal to wrap up cleanly. I let the current tool call finish, commit whatever is in a working state, and write myself one line about what the next step was going to be. I do not try to squeeze one more feature in before the window resets - that is exactly how you end up with a half-finished change and no allowance left to fix it.</p>
<table><caption>Hitting the limit mid-task vs. planning around it</caption><thead><tr><th>Approach</th><th>What happens</th></tr></thead><tbody><tr><td>Keep pushing until the hard stop</td><td>Work gets cut mid-task, often mid-refactor, and you wait for the reset with an uncommitted mess</td></tr><tr><td>Scope in Plan Mode, watch cost, close tasks cleanly</td><td>You spend the allowance on the work that matters and rarely get caught with something half-open</td></tr></tbody></table>
<h2>A session where I got this wrong</h2>
<p>I once let Claude Code run a long multi-file refactor without checking in, because the first hour of changes looked clean and I got comfortable. Two hours in, mid-way through updating the last few call sites, the session hit the limit. The files that were already updated were fine, but the ones still mid-change were in a state I did not want to hand to a different session cold. I ended up spending the first ten minutes after the reset just re-reading my own diff to remember where I had stopped, instead of finishing the refactor.</p>
<p>Now I break a refactor like that into checkpoints on purpose - update this group of files, run the tests, commit, then start the next group as a fresh scoped task. If the limit hits between checkpoints instead of in the middle of one, the wait costs me nothing but time.</p>
<h2>Set this up before your next long session</h2>
<p>Before your next multi-hour build, do two things: put a cost or usage indicator somewhere you will actually see it, and break the work into checkpoints you can stop between cleanly. Neither takes long to set up, and both mean the reset becomes a minor pause instead of a lost hour reconstructing where you were.</p>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club we compare notes on exactly this - how members structure long sessions so a usage reset never costs real work. Start with the [curriculum](/curriculum) or join us at https://www.skool.com/claudecodeclub/about and bring the build that got interrupted on you.</blockquote>
<h2>FAQ</h2>
<p><strong>What happens when Claude Code hits a usage limit?</strong></p><p>Claude Code stops taking new work and tells you when the allowance resets. Anything you already built is not lost - the agent simply cannot start the next tool call or message until the rolling window rolls forward.</p>
<p><strong>Does the usage limit reset daily?</strong></p><p>No. It resets on a rolling window tied to your plan, not a fixed calendar-day cutoff. If you use most of your allowance early in the day, you are waiting for that specific window to roll forward, not for midnight.</p>
<p><strong>How can I avoid hitting the limit mid-task?</strong></p><p>Scope the task in Plan Mode before you start so the agent is not burning calls exploring a direction you would reject, watch cost or context on a statusline as you go, and break long sessions into checkpoints you can stop between cleanly instead of running one uninterrupted multi-hour thread.</p>
<p><strong>Is it worth switching models to stay under the limit?</strong></p><p>For repetitive or low-judgment work - formatting, boilerplate, batch renames - yes, a lighter model handles it without spending the same allowance as your main architecture decisions. Save the heavier model for the parts of the session that actually need judgment.</p>]]></content:encoded>
    </item>
    <item>
      <title>Is Claude Code Safe for Client Work? What I Tell Clients Who Ask</title>
      <link>https://www.claudecodeclub.ai/blog/is-claude-code-safe-for-client-work</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/is-claude-code-safe-for-client-work</guid>
      <pubDate>Fri, 07 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Selling</category>
      <category>Clients</category>
      <category>Trust</category>
      <description><![CDATA[A client who has never used an AI coding tool pictures their whole codebase getting pasted into a public chatbot. It doesn't work that way, and the honest answer is about what you control, not a policy you're asking them to trust blindly. Here is exactly what I say.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Claude Code runs locally against a client's own repo through the desktop app or terminal - it is not a black-box chatbot you paste code into, and nothing leaves your machine unless it's part of the context you choose to give it.</li><li>The real safety story is what you control on your end: what you let it read, what you keep out of prompts entirely, and what you review before it ships.</li><li>When a client asks if it's safe, I answer with my three concrete habits, not a policy document they have to trust blindly.</li></ul>
<h2>Is Claude Code safe to use on a client's codebase?</h2>
<p>Yes, and the reason is simpler than most clients expect: Claude Code runs on your own machine, against the client's repo sitting on your own disk, through the desktop app or terminal. It is not a website you upload a zip file to. Nothing about the tool requires you to hand a copy of the codebase to a third party - the agent reads the files you point it at, in the session you're running, and the context it sees is whatever you choose to include in a prompt or open in the project.</p>
<p>That distinction is the whole answer, because it moves the question from 'do I trust this company with my code' to 'do I trust myself to run a tool carefully' - and that second question is one you can actually control.</p>
<h2>Why clients ask this in the first place</h2>
<p>Most clients who ask have never used an agentic coding tool. What they picture is a chat window where you copy-paste their entire proprietary codebase in and hope for the best, the same mental model they have from asking ChatGPT a question in a browser tab. That picture is not how Claude Code works day to day, but it is a reasonable thing to picture if you have never seen the desktop app open against a real project.</p>
<blockquote><strong>NOTE:</strong> Do not get defensive when a client asks this. It is a fair question from someone protecting their business, and answering it plainly is what earns the trust, not brushing it off.</blockquote>
<h2>The three things I actually do on every client project</h2>
<p>I do not lean on a vendor's policy language to reassure a client. I lean on three habits that are mine to control, and I can describe every one of them concretely.</p>
<ol><li>Secrets stay out of the agent's context entirely. API keys, credentials, and connection strings live in a gitignored .env file that the agent never needs to read to do its job, and I keep it that way on purpose - see how I set this up in [Claude Code environment variables: how to keep your API keys safe](/blog/claude-code-environment-variables).</li><li>I review the diff before anything ships. Every change the agent makes is a real, readable diff before it touches a branch a client can see, the same as reviewing a junior developer's pull request.</li><li>I tell the client which tool I'm using and why, before they have to ask. Bringing it up first, plainly, before it becomes a suspicion, is most of what earns the trust back.</li></ol>
<h2>How I answer it when a client asks live</h2>
<p>When it comes up on a call, I keep the answer short and concrete instead of reassuring in the abstract: &quot;I run Claude Code locally against your repo on my own machine, the same as any other developer tool I use. Your secrets stay out of its context in a file it never touches, and I review every change it makes before it goes anywhere near your branch. Nothing gets pasted into a public chat window.&quot;</p>
<blockquote><strong>TIP:</strong> Notice what that answer does not do - it does not ask the client to trust a company they've never heard of. It points at three things you personally do, which is a much easier thing for a nervous client to accept.</blockquote>
<h2>What this is not a substitute for</h2>
<p>None of this replaces whatever a client's own security or compliance policy requires - if they need a signed data processing agreement, a specific tool on an approved-vendor list, or a formal review before any AI tool touches their code, that conversation happens with their team, not with a blog post. What the three habits above cover is the day-to-day reality of how the tool behaves, which is usually the actual source of the nervousness, not the paperwork.</p>
<table><caption>What settles the objection</caption><thead><tr><th>What a client is picturing</th><th>What I point at instead</th></tr></thead><tbody><tr><td>Their code pasted into a public chatbot</td><td>The agent runs locally against files on my machine, in a session I control</td></tr><tr><td>A vendor policy they have to trust blindly</td><td>Three habits I control - secrets out of context, diff review, upfront disclosure</td></tr><tr><td>No visibility into what changed</td><td>A readable diff, reviewed before anything reaches their branch</td></tr></tbody></table>
<h2>Put this in place before the next client asks</h2>
<p>Get your own habits in order before the question comes up, not after. Confirm your .env files are gitignored on every client repo, get in the habit of reading the diff before you push, and decide now what you'll say when a client asks - so the answer comes out calm and specific instead of defensive.</p>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club we share the exact language members use to answer this objection, plus the project checklists that keep client work clean from day one. Start with the [curriculum](/curriculum) or join us at https://www.skool.com/claudecodeclub/about and bring the client question you've been dodging.</blockquote>
<h2>FAQ</h2>
<p><strong>Is Claude Code safe to use on a client's codebase?</strong></p><p>Yes. Claude Code runs locally through the desktop app or terminal against the repo on your own machine - it is not a chatbot you paste an entire codebase into. What actually determines safety is what you let it read, what you keep out of its context, and whether you review changes before they ship, all of which you control directly.</p>
<p><strong>Does Claude Code upload my client's code somewhere?</strong></p><p>The agent works with the files in the project you point it at during your session. I don't rely on my own read of a vendor's data policy to reassure a client - I control what leaves my machine by keeping secrets out of prompts entirely and reviewing every diff before it ships, which is the part that's actually in my hands.</p>
<p><strong>How do I answer a client who's nervous about AI touching their code?</strong></p><p>Answer with specifics, not reassurance. Tell them exactly how the tool runs (locally, against their repo, in a session you control), what you keep out of it (secrets, credentials), and what you do before anything ships (review the diff). Bring it up before they have to ask.</p>
<p><strong>Should I get a client's sign-off before using Claude Code on their project?</strong></p><p>If their organization has a security or compliance policy covering AI tools, that conversation happens with their team directly. For most client work, telling them plainly which tool you use and why, before it becomes a suspicion, is what earns the trust - don't wait for them to find out on their own.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code vs OpenAI Codex: Which One Actually Ships More Code</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-vs-openai-codex</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-vs-openai-codex</guid>
      <pubDate>Thu, 06 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Tools</category>
      <category>Comparison</category>
      <description><![CDATA[Both Claude Code and OpenAI Codex are agentic coding tools now, not autocomplete. I ran the same real client task through both to see which one actually gets to a working result with less babysitting, and which one I'd trust on a build I'm charging for.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Claude Code and OpenAI Codex are both agentic coding tools now - they plan, write files, run commands, and iterate on their own, not just autocomplete a line.</li><li>Claude Code is desktop-app-first and lives in your own terminal/project folder with deep git, hooks, subagent, and MCP support. Codex leans on the cloud sandbox and ChatGPT's ecosystem, which is convenient but puts a layer between the agent and your actual local project.</li><li>For client builds where I need the agent working directly in my repo, checked into git as it goes, and reviewable by a non-technical client, Claude Code is the one I bill hours against. Codex is worth having open for a second opinion on a gnarly bug.</li></ul>
<h2>Claude Code vs OpenAI Codex: the one-sentence answer</h2>
<p>Claude Code vs OpenAI Codex is a genuinely close comparison now, because both are agentic tools that plan a task, write the code, run it, and fix what breaks - neither is a simple autocomplete anymore. The real difference is where the agent works: Claude Code runs directly against your own project in your own terminal or desktop app, while Codex is built around a cloud sandbox and ChatGPT's interface. That one difference changes how each tool feels on a real, billable build.</p>
<p>I use both. This is not a 'Codex is bad' post - it is a specific, opinionated answer to the question I get asked most in the club: which one do you actually reach for when a client is paying you to ship something this week.</p>
<h2>What each tool actually does</h2>
<table><thead><tr><th></th><th>Claude Code</th><th>OpenAI Codex</th></tr></thead><tbody><tr><td>What it is</td><td>An agent that plans, writes files, and runs commands directly in your local project</td><td>An agent that plans and writes code, run locally via CLI or in a cloud sandbox tied to ChatGPT</td></tr><tr><td>How you use it</td><td>Desktop app or terminal, pointed at your actual project folder</td><td>ChatGPT interface, the Codex CLI, or an IDE extension</td></tr><tr><td>Where the work happens</td><td>Your machine, your git history, your files - visible the whole time</td><td>A sandboxed cloud environment by default, or your machine with the CLI</td></tr><tr><td>Ecosystem</td><td>Hooks, subagents, skills, MCP servers, worktrees - all built around a real project you keep open</td><td>Tied into ChatGPT's broader app and plan structure</td></tr><tr><td>Best fit</td><td>Ongoing client builds you live inside all day</td><td>A contained task you can hand off and check back on later</td></tr></tbody></table>
<h2>The test: the same real bug, both tools, same afternoon</h2>
<p>I had a real client bug to fix - a discount code that stacked incorrectly with a subscription proration - so I ran it through both. Claude Code, working directly in the project with the actual database schema and prior git history in context, found the proration function in one pass, wrote a failing test for the stacking case, and fixed it without me switching windows. The whole loop stayed inside the same session I was already working in.</p>
<p>Codex handled the isolated logic fine once I gave it the relevant files, but because the default workflow pushes the work into a sandboxed environment, I spent extra time getting the right context in and the diff back out cleanly. It is not that Codex could not solve it - it is that the round trip cost more of my afternoon for a task that was already time-boxed.</p>
<blockquote><strong>NOTE:</strong> This is one bug, on one client project, run by me. I am not claiming a benchmark score for either tool - I do not have one I trust enough to publish. Judge this the way I judge it: by whether the round trip on your actual project is fast or slow.</blockquote>
<h2>Which is better for non-technical builders</h2>
<p>Claude Code is the easier on-ramp for someone who does not already think in code. The desktop app is built so you describe the outcome you want and watch the plan form before anything runs. Codex's strength is being embedded in ChatGPT, which is a familiar interface, but the moment you need it to actually touch a real project's files and git history, you are back to needing some comfort with a CLI or a sandbox flow.</p>
<blockquote><strong>TIP:</strong> If you are brand new, start in the Claude Code desktop app on a small real project. Watching the agent plan, ask a clarifying question, and then work is the fastest way to build trust in what an agentic tool can actually do.</blockquote>
<h2>Which is better for agency and client work</h2>
<p>For client builds, Claude Code wins for me on one practical point: the agent works inside the same git-tracked project the client is paying for, so every change is a commit I can point to. Codex's cloud-sandbox default is genuinely useful for a contained, hand-off task - draft this function, refactor this file - but I do not want my main branch of a client's app living somewhere I am not looking at directly all day.</p>
<p>The other factor is the club's whole framing: desktop-app-first, terminal optional. That matches how most of the builders I work with actually operate - they want the agent living where their project lives, not routed through a separate cloud environment they have to learn to trust.</p>
<h2>When Codex is worth opening</h2>
<ul><li>You are already deep in the ChatGPT ecosystem for planning or research and want to hand off a contained coding task without switching tools.</li><li>You want a second opinion on a hard bug - running the same problem through a different model's agent sometimes surfaces an angle you missed.</li><li>You have a task that genuinely benefits from being isolated in a sandbox, like testing something risky you do not want touching your real environment yet.</li></ul>
<h2>Join Claude Code Club</h2>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club we compare notes on every tool builders are actually using, not just the one we sell. If you want the real, current answer to 'which AI coding tool should I use for this,' join at claudecodeclub.ai for $9 a month.</blockquote>
<h2>FAQ</h2>
<p><strong>Is OpenAI Codex the same as GitHub Copilot?</strong></p><p>No. Copilot is primarily an in-editor autocomplete assistant. Codex is OpenAI's agentic coding tool - it plans a task, writes files, and runs code on its own, accessed through ChatGPT, the Codex CLI, or an IDE extension. Codex is much closer to Claude Code in what it attempts than Copilot is.</p>
<p><strong>Can Codex work directly in my own project like Claude Code does?</strong></p><p>Yes, through the Codex CLI you can point it at a local project. The default and most-used path, though, is the cloud sandbox tied to ChatGPT, which is where the workflow feels different from Claude Code's local-first, desktop-app approach.</p>
<p><strong>Which one is cheaper?</strong></p><p>Both run on their own plan structures - Claude Code on Anthropic plans, Codex bundled into ChatGPT plans or billed via the API. I am not going to quote current prices here since both change; check each company's pricing page for the number that is true today.</p>
<p><strong>Do I need to know how to code to use either one?</strong></p><p>No, for basic use, but Claude Code's desktop-app-first design makes the plain-language, non-technical path more direct in my experience. Codex assumes slightly more comfort moving between ChatGPT and a sandboxed or CLI environment to actually see and use the code it produces.</p>
<p><strong>Should I use both?</strong></p><p>I do. Claude Code is what I run all day on client builds because it lives in the actual project. I open Codex when I want a second opinion on a specific hard problem, or when a task is genuinely better handled in an isolated sandbox.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code Custom Statuslines: How I See What My Agent Is Doing at a Glance</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-custom-statuslines</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-custom-statuslines</guid>
      <pubDate>Thu, 06 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Claude Code</category>
      <category>Workflows</category>
      <category>Setup</category>
      <description><![CDATA[A statusline is the one line at the bottom of Claude Code that can tell you the model, the branch, the context left, and the cost - without asking. Here is how I set mine up so I stop losing track of long sessions.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>A Claude Code statusline is a customizable line pinned to the bottom of the interface that can show the current model, git branch, context window usage, and session cost in real time.</li><li>You configure it with a small script referenced in your settings - Claude Code runs that script on an interval and prints whatever it returns as the statusline.</li><li>I run one that shows branch, context percentage left, and cost, because those are the three things that used to make me lose track of a long session.</li></ul>
<h2>What a Claude Code statusline actually is</h2>
<p>A statusline is a single line pinned to the bottom of Claude Code that updates as you work, similar to the status bar in an editor like VS Code. Instead of guessing which branch you are on or how much context is left in a long session, the statusline shows it to you continuously, without a command.</p>
<p>Claude Code lets you point it at your own script to generate that line. The script receives session information as input - things like the current model, the working directory, and cost so far - and returns plain text or ANSI-colored text that gets rendered at the bottom of the screen.</p>
<h2>Why I bothered setting one up</h2>
<p>The failure mode a statusline fixes is a specific one: you are three hours into a long build, the session has gone through a lot of back-and-forth, and you have quietly lost track of two things - how close you are to running out of context, and which git branch this is even happening on. Neither is catastrophic on its own. Together, on a client project, they cost real time when you catch them late.</p>
<ul><li>Context remaining - so I compact or wrap up before I hit a wall mid-task instead of after.</li><li>Git branch - so I never make a client-project mistake because I forgot which worktree I was in.</li><li>Running cost - so a long unattended session does not surprise me at the end of the day.</li></ul>
<h2>How to set up a custom statusline</h2>
<ol><li>Write a small script (shell, Node, or Python all work) that reads the session JSON Claude Code passes it and prints the line you want.</li><li>Point Claude Code's settings at that script as the statusline command.</li><li>Keep the script fast - it reruns on an interval, so anything slow becomes a visible lag at the bottom of your terminal.</li><li>Test it by running a real session and watching the line update as context and cost change, not just by eyeballing the script's output once.</li></ol>
<blockquote><strong>TIP:</strong> Start with the fields you actually check manually today. If you find yourself running a git command to check your branch, or asking Claude how much context is left, that is the exact thing to put in the statusline first.</blockquote>
<h2>What I actually put in mine</h2>
<p>My statusline shows three things left to right: the git branch, a percentage for context remaining, and the running dollar cost of the session. I color the context percentage so it shifts as it drops, which is a small thing that turns 'check the context' from a decision into something I just see out of the corner of my eye.</p>
<table><caption>Statusline fields worth adding, and why</caption><thead><tr><th>Field</th><th>Why it earns a spot</th></tr></thead><tbody><tr><td>Git branch</td><td>Stops the mistake of running the wrong task against the wrong branch</td></tr><tr><td>Context remaining</td><td>Lets you compact or wrap up on your terms, not when Claude forces it</td></tr><tr><td>Session cost</td><td>Keeps a long unattended run from being a surprise number at the end</td></tr><tr><td>Current model</td><td>Useful if you switch models mid-project and want a constant reminder which one is active</td></tr></tbody></table>
<h2>Set yours up this week</h2>
<p>Pick the one thing you check manually most often in a session - branch, context, or cost - and write the smallest possible script that prints it. Wire that in as your statusline before you add anything else. Once you feel the difference of not having to ask, add the rest.</p>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club members share their actual statusline scripts, not just the idea of one. If you want a working script to start from instead of writing yours from scratch, join at claudecodeclub.ai for $9 a month.</blockquote>
<h2>FAQ</h2>
<p><strong>What is a statusline in Claude Code?</strong></p><p>It is a single customizable line pinned to the bottom of the Claude Code interface that updates continuously, showing whatever information your script returns - typically things like git branch, context remaining, active model, or session cost.</p>
<p><strong>Do I need to code to set up a custom statusline?</strong></p><p>You need a small script - shell, Node, or Python all work - that reads the session data Claude Code passes it and prints a line back. It does not need to be sophisticated; a few lines that check git and format a percentage is enough to start.</p>
<p><strong>Will a statusline slow Claude Code down?</strong></p><p>Only if the script itself is slow, since it reruns on an interval. Keep it to fast, cheap operations - reading local git state or session JSON - and it stays invisible.</p>
<p><strong>What should my statusline show?</strong></p><p>Whatever you currently check manually. Most builders start with git branch, context remaining, and cost, because those are the three things that quietly cause mistakes or surprises on a long session.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code Checkpoints and /rewind: Why I Still Git Commit Anyway</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-checkpoints-and-rewind</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-checkpoints-and-rewind</guid>
      <pubDate>Wed, 05 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Workflows</category>
      <category>Building</category>
      <description><![CDATA[Claude Code checkpoints every prompt automatically and /rewind can undo a bad session in seconds. Here is exactly what it does, the specific things it can't undo, and why I still commit to Git on every real build.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Claude Code checkpoints your session automatically. Every prompt you send creates a checkpoint, and /rewind lets you jump back to any of the last 100 to undo code, undo conversation, or both.</li><li>Checkpoints are a session-level undo, not a version control system. They don't track changes made by Bash commands like rm or mv, they don't restore most subagent edits, and they get deleted after 30 days.</li><li>I use checkpoints for the fast, in-session mistakes and Git for everything that needs to survive past the session. Two layers, two different jobs. Skipping the Git layer because checkpoints exist is the mistake I see most.</li></ul>
<h2>What Claude Code's Checkpoints Actually Are</h2>
<p>Claude Code checkpoints are automatic save points inside a single session. Every user prompt you send creates a new checkpoint, capturing the state of the files Claude has touched before that prompt runs. You don't have to ask for it and you don't have to configure anything. It just happens in the background every time you type a message.</p>
<p>Claude Code keeps file snapshots for the 100 most recent checkpoints in a session. Checkpoints are saved with the conversation itself, not held in memory, so you can quit, come back later, run /resume, and /rewind is still available on that session's history. By default, the session gets cleaned up and its checkpoints deleted after 30 days, though that period is configurable through the cleanupPeriodDays setting.</p>
<blockquote><strong>NOTE:</strong> Checkpoints are a session feature, not a project feature. They live and die with the conversation. That single fact is what most of the confusion about /rewind comes down to.</blockquote>
<h2>How to Actually Use /rewind</h2>
<p>Run /rewind, or press Esc twice when the prompt box is empty, and Claude Code opens a menu listing every prompt you sent in the session. Pick a point in that history and you get a choice of what to do with it.</p>
<ul><li>Restore code and conversation - reverts both the files and the chat back to that point.</li><li>Restore conversation - rewinds the chat to that message while leaving your current files untouched.</li><li>Restore code - reverts the file changes while keeping the full conversation, including everything Claude learned along the way.</li><li>Summarize from here / Summarize up to here - compresses part of the conversation into a summary to free up context, without touching any files on disk.</li></ul>
<p>The two code-restore options only show up when the checkpoint you picked actually has tracked file changes to undo. If nothing changed on disk after that point, Claude Code just shows the conversation and summarize options, because there's nothing to revert.</p>
<h2>The Two-Layer Undo: Checkpoints vs Git</h2>
<p>I think about recovery in Claude Code as two layers, and confusing them is where builders get burned. Checkpoints are the fast layer: automatic, zero setup, undoes the last 20 minutes of a session in two keystrokes. Git is the durable layer: manual, deliberate, and the only one that survives past the session, the 30-day cleanup, and a laptop getting wiped.</p>
<table><caption>The Two-Layer Undo</caption><thead><tr><th></th><th>Checkpoints (/rewind)</th><th>Git commits</th></tr></thead><tbody><tr><td>Created</td><td>Automatically, every prompt</td><td>Manually, when you choose to commit</td></tr><tr><td>Scope</td><td>One Claude Code session</td><td>The whole project, forever</td></tr><tr><td>Survives a new session or /clear</td><td>Yes, if you don't exceed 100 checkpoints</td><td>Yes, always</td></tr><tr><td>Survives 30+ days</td><td>No, deleted with the session by default</td><td>Yes, permanent history</td></tr><tr><td>Tracks Bash-run changes (rm, mv, cp)</td><td>No</td><td>Yes, if you commit after</td></tr><tr><td>Shareable with a teammate</td><td>No</td><td>Yes, push and pull</td></tr></tbody></table>
<p>Neither layer replaces the other. Checkpoints are for the mistake you catch in the same session, thirty seconds after Claude went the wrong direction. Git is for the state you need to be able to get back to next week, next month, or after someone else has touched the repo.</p>
<h2>Where Rewind Can't Save You</h2>
<p>This is the part that actually matters and the part most quick explainers skip. Checkpointing only tracks edits Claude makes through its own file-editing tools. Several common situations fall outside that, and knowing them up front is what keeps /rewind from becoming a false sense of security.</p>
<ol><li>Bash-run file changes aren't tracked. If Claude runs rm file.txt, mv old.txt new.txt, or cp source.txt dest.txt through a Bash command, none of that is undoable through /rewind. Only edits made through Claude's direct file-editing tools are captured.</li><li>Most subagent edits aren't restored. When a subagent applies file changes, those land outside your session's checkpoints, so rewinding doesn't restore them even though the subagent used the same file-editing tools. You have to use Git to revert those.</li><li>Manual edits and other concurrent sessions aren't tracked. If you open a file yourself and change it outside Claude Code, or another session touches the same file, checkpointing generally doesn't capture that.</li><li>Symlinked and hard-linked files are skipped on restore. Claude Code will warn you it 'restored the code, but skipped N files' rather than silently leaving them wrong, but it won't undo them for you.</li></ol>
<blockquote><strong>WARNING:</strong> None of this is a bug. Anthropic's own documentation is explicit that checkpoints are 'local undo' and Git is 'permanent history' - the two are designed to complement each other, not compete. Treating /rewind as a full substitute for version control is the mistake, not the feature itself.</blockquote>
<h2>My Actual Workflow: When I Use Each</h2>
<p>In practice the split is simple. I lean on /rewind constantly during the session itself: Claude takes a wrong turn on an approach, I hit Esc twice, restore code to two prompts back, and redirect without losing the rest of the conversation. It's faster than a git reset for something that small and it keeps my thinking intact.</p>
<p>The Git layer is non-negotiable before anything risky. I still follow the Checkpoint Habit from my Git workflow: commit before I let Claude touch a file, work on a branch, review the diff before I accept it. That habit is what protects me from the exact gaps above - a Bash command that deletes something, a subagent edit that lands outside the session, a mistake I don't catch until tomorrow when the session's 30-day clock has already started ticking.</p>
<p>If you're also running sessions unattended, this matters even more. My Leash Loop for unattended runs assumes a human reviews the diff afterward - and that review only means something if there's a real Git history to diff against, not just a session that might get cleaned up in a month.</p>
<blockquote><strong>TIP:</strong> Simple rule: use /rewind for anything you'd undo in the next ten minutes. Use Git for anything you'd need back next week. Do both, on every real build.</blockquote>
<h2>Inside Claude Code Club</h2>
<p>This is exactly the kind of detail that separates 'I read the docs once' from 'I know where this breaks on a real project.' Inside Claude Code Club we compare the recovery habits that actually hold up on client work, not just the demo-friendly version. Start with the [curriculum](/curriculum) or join us at https://www.skool.com/claudecodeclub/about for $9/month and bring the session that made you wish you'd committed sooner.</p>
<h2>FAQ</h2>
<p><strong>How many checkpoints does Claude Code keep?</strong></p><p>Claude Code keeps file snapshots for the 100 most recent checkpoints in a session. A new checkpoint is created automatically on every user prompt, so a long session can use up that budget faster than you'd expect.</p>
<p><strong>Do checkpoints expire?</strong></p><p>Yes. Claude Code deletes checkpoints along with the session after 30 days by default. That period can be changed with the cleanupPeriodDays setting, but the default means checkpoints are not a long-term backup.</p>
<p><strong>Can /rewind undo a file that Claude deleted with a Bash command?</strong></p><p>No. Checkpointing only tracks edits made through Claude's file-editing tools. Changes made through Bash commands like rm, mv, or cp are not captured, so /rewind can't bring those files back. Git is the only layer that protects you there, if you committed before the command ran.</p>
<p><strong>Is /rewind a replacement for Git?</strong></p><p>No, and Claude Code's own documentation says so directly: checkpoints are local, session-level undo, while Git is permanent version history. Checkpoints are excellent for quickly reverting the last few minutes of a session. They are not built for long-term history, collaboration, or surviving past the 30-day cleanup window.</p>
<p><strong>Where can I learn the recovery habits that hold up on real client work?</strong></p><p>The Claude Code Club is where builders compare the workflows that actually survive contact with a real project, including exactly how to combine checkpoints with a proper Git habit. Join for $9/month at claudecodeclub.ai.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code's Sandbox, Explained: What It Actually Blocks (and What It Doesn't)</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-sandbox-explained</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-sandbox-explained</guid>
      <pubDate>Wed, 05 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Workflows</category>
      <category>Building</category>
      <description><![CDATA[Claude Code's built-in sandbox restricts what Bash commands can read, write, and reach on the network, enforced by the operating system. It's the single best safety upgrade for running Claude Code with less hand-holding, but it protects less than most builders assume. Here's exactly what it covers.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Claude Code's sandbox uses your operating system (Seatbelt on macOS, bubblewrap on Linux and WSL2) to restrict what Bash commands can read, write, and reach on the network. It runs automatic approval for sandboxed commands instead of prompting you for each one.</li><li>By default it blocks writes outside your working directory, but its default read policy still allows sandboxed commands to read your entire disk, including credential files like ~/.aws/credentials and ~/.ssh, unless you explicitly protect them.</li><li>The sandbox only covers Bash and its child processes. It does not sandbox Claude's Read, Edit, or Write tools, and it does not protect you if you run with --dangerously-skip-permissions. Turning it on is not the same as turning off judgment.</li></ul>
<h2>What Claude Code's Sandbox Actually Does</h2>
<p>The Bash sandbox lets Claude run most shell commands without stopping to ask your permission for each one, by containing what those commands can touch instead. You define which files and network domains are reachable, and your operating system enforces that boundary for every Bash command and its child processes. This is real OS-level enforcement, not a prompt-level filter Claude could reason its way around.</p>
<p>It ships built into Claude Code and runs on macOS, Linux, and WSL2. On macOS there's nothing to install, since it uses the built-in Seatbelt framework. On Linux and WSL2 it relies on two packages: bubblewrap for filesystem isolation and socat to relay network traffic through the sandbox proxy. Native Windows isn't supported - run Claude Code inside WSL2 there instead.</p>
<blockquote><strong>NOTE:</strong> Turn it on with the /sandbox command. It opens a panel with three tabs: Mode (how sandboxed commands get approved), Overrides (whether failed sandboxed commands can fall back to running unsandboxed), and Config (the resolved settings). To enable it project-wide, set sandbox.enabled to true in your user settings at ~/.claude/settings.json.</blockquote>
<h2>What It Restricts by Default</h2>
<p>The sandbox has two independent layers, filesystem and network, and the defaults are asymmetric in a way that trips people up.</p>
<table><caption>Sandbox defaults, out of the box</caption><thead><tr><th>Layer</th><th>Default behavior</th></tr></thead><tbody><tr><td>Filesystem write</td><td>Only the current working directory and its subdirectories, plus the session temp directory</td></tr><tr><td>Filesystem read</td><td>The entire computer, except a small set of denied directories - this still includes credential files by default</td></tr><tr><td>Network</td><td>No domains pre-allowed. The first time a command needs a new domain, Claude Code prompts, and as of v2.1.191 that approval lasts for the rest of the session</td></tr></tbody></table>
<p>That middle row is the one worth reading twice. The default read policy still allows sandboxed commands to read files like ~/.aws/credentials and ~/.ssh unless you explicitly restrict them with sandbox settings. Turning on the sandbox does not, by itself, protect your credentials. That's a separate step.</p>
<h2>The Gap Most Builders Miss: Credentials</h2>
<p>Claude Code's sandbox settings give you a dedicated credentials block for exactly this gap. You list specific file paths and environment variables, and choose how they're protected: deny blocks them outright, mask lets a tool still authenticate without ever exposing the real secret to the command or its logs.</p>
<ul><li>deny: the file becomes unreadable inside the sandbox, and listed environment variables get unset before the command runs. Simple, but it also breaks any tool that legitimately needs that credential, like gh or npm.</li><li>mask: the sandboxed command sees a placeholder value instead of the real one. When a request actually needs to reach an approved host, the sandbox proxy swaps the real credential back in on the way out. The command itself, and anything it logs, never holds the real value.</li><li>There is no built-in credential deny list. Only the files and variables you explicitly name are protected - everything else stays readable at the sandbox's default, permissive read policy.</li></ul>
<blockquote><strong>WARNING:</strong> That last point is the one to sit with. If you enable the sandbox and stop there, you've restricted where Bash can write, but you haven't touched what it can read. A compromised or confused command can still open your SSH keys unless you've added them to a deny or mask rule yourself.</blockquote>
<h2>The Three-Gate Autonomy Check</h2>
<p>I run this quick check before I let a Claude Code session go unattended for real, on top of the scoping I already do with the Leash Loop. The Leash Loop controls what Claude tries to do. The sandbox controls what it can actually reach if something goes sideways anyway. They're not the same layer, and you want both.</p>
<ol><li>Gate 1 - Sandbox is on. Run /sandbox and confirm it's active, not just installed. On Linux or WSL2, check the Dependencies tab isn't blocking it for a missing package.</li><li>Gate 2 - Credentials are named, not assumed. List your actual credential files (SSH keys, cloud config, API tokens in env vars) under sandbox.credentials, with deny for anything you don't need Claude touching this session, and mask for anything a tool genuinely needs to authenticate with.</li><li>Gate 3 - Network domains are scoped, not wide open. Pre-allow the specific domains the task needs rather than approving broad ones on the fly. A wildcard like an entire code-hosting domain is more permission than most tasks actually require.</li></ol>
<p>None of this replaces reviewing the diff afterward. It's the layer that limits the damage in the window before you get back to your desk.</p>
<h2>What the Sandbox Does Not Protect</h2>
<p>Scope matters here and it's easy to overestimate. The sandbox isolates Bash subprocesses specifically. Several other things people assume are covered aren't.</p>
<ul><li>Claude's built-in Read, Edit, and Write tools don't go through the sandbox at all. They're governed by the separate permission system (allow/deny/ask rules), not by sandbox filesystem settings.</li><li>--dangerously-skip-permissions bypasses this entirely. It skips protected-path checks too. The flag is blocked when running as root or via sudo on Linux and macOS, specifically because that combination removes too many safety nets at once.</li><li>Docker is incompatible with the sandbox outright. If your workflow runs docker commands, they need to be listed in excludedCommands to run unsandboxed, which means they run with none of the above protection.</li><li>Computer use - when Claude controls your actual screen and opens apps - runs on your real desktop, not in an isolated environment. It's gated by per-app permission prompts instead.</li></ul>
<blockquote><strong>TIP:</strong> Read that list as a map of where your judgment still has to do the work. The sandbox is the single biggest safety upgrade available for autonomous Claude Code runs, but it was built to reduce prompts on Bash commands specifically, not to make the whole session unsupervised-safe.</blockquote>
<h2>Inside Claude Code Club</h2>
<p>Most builders find out the sandbox has gaps the hard way, mid-build, instead of reading the settings reference first. Inside Claude Code Club we share real sandbox and permissions configs from actual client builds, not just the default setup. Start with the [curriculum](/curriculum) or join us at https://www.skool.com/claudecodeclub/about for $9/month and bring the unattended run you're not fully comfortable with yet.</p>
<h2>FAQ</h2>
<p><strong>Does Claude Code's sandbox protect my SSH keys and credentials automatically?</strong></p><p>No, not by default. The sandbox's default read policy still allows sandboxed Bash commands to read your entire disk, including files like ~/.aws/credentials and ~/.ssh, unless you explicitly add them to sandbox.credentials with a deny or mask rule. Turning the sandbox on restricts writes and unapproved network access first - protecting credentials is a separate step you have to take yourself.</p>
<p><strong>What's the difference between the sandbox and Claude Code's permission rules?</strong></p><p>Permission rules decide whether a tool call runs at all, and apply to every tool - Bash, Read, Edit, WebFetch, MCP servers. The sandbox is narrower: it's OS-level enforcement that restricts what a Bash command can access at the filesystem and network level once it's already been allowed to run. They're complementary layers, not substitutes for each other.</p>
<p><strong>Does the sandbox work on Windows?</strong></p><p>Not on native Windows. The sandbox runs on macOS (using the built-in Seatbelt framework), Linux, and WSL2 (both using bubblewrap). If you're on Windows, run Claude Code inside a WSL2 distribution to get sandboxing.</p>
<p><strong>Is running with --dangerously-skip-permissions safe if the sandbox is on?</strong></p><p>The sandbox and permission modes are separate layers. --dangerously-skip-permissions removes the tool-call approval step and protected-path checks, and it's blocked outright when running as root or via sudo on Linux and macOS for that reason. Having the sandbox enabled does not make that flag safe to use casually on real work.</p>
<p><strong>Where can I see real sandbox configs from actual client projects?</strong></p><p>The Claude Code Club shares the sandbox and permission setups builders actually run on client work, not just the documented defaults. Join for $9/month at claudecodeclub.ai.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code Context Management: How to Keep Long Sessions on Track</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-context-management</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-context-management</guid>
      <pubDate>Tue, 04 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Building</category>
      <category>Claude Code</category>
      <category>Workflows</category>
      <description><![CDATA[Claude Code context management explained: how the context window works, what breaks it, and the exact habits I use to keep large projects running cleanly without the agent losing the plot.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Claude Code has a finite context window. When it fills up mid-session, the agent starts forgetting earlier instructions, files, and decisions - and silently produces worse output.</li><li>The fix is not a bigger window. It is working in smaller, scoped sessions with a clear handoff document so each new session starts with the right context loaded, not inherited from a bloated conversation.</li><li>I use a three-step routine - scope the session, load only the files that matter, write a session summary before closing - that keeps even multi-week builds coherent across dozens of sessions.</li></ul>
<h2>What Claude Code's Context Window Actually Does</h2>
<p>Claude Code operates inside a context window - a rolling buffer of everything the session contains: the conversation history, every file it has read, every output it has written, and every instruction you have given. When the buffer fills, the oldest content gets pushed out. The agent does not tell you this is happening. It just starts answering from a shorter memory.</p>
<p>In practice this means a session that starts strong can quietly degrade halfway through a large build. The agent forgets the constraint you mentioned in the first message, drifts from the data model it was working with earlier, or contradicts a decision you made an hour ago. The code still compiles. The problem is invisible until you review it.</p>
<blockquote><strong>NOTE:</strong> Context pressure is not about the number of messages. A session with 10 messages that loaded a 2,000-line file, ran several searches, and processed output has used far more context than a session with 30 short messages. File size and tool output are the real drivers.</blockquote>
<h2>The Signs Your Session Is Running Out of Context</h2>
<p>You rarely get a clean error when context runs low. Instead the session starts producing softer symptoms. Recognizing them early is the most useful skill for working on large projects.</p>
<ul><li>The agent asks you to re-explain something you covered at the start of the session.</li><li>It proposes a solution that contradicts an architectural decision from earlier in the conversation.</li><li>It stops referencing files it was reading confidently an hour ago and starts hedging with 'assuming the schema is...'</li><li>Output quality drops - the code becomes more generic and less tailored to your specific data shapes.</li><li>It re-reads a file it already read earlier in the session, which means it no longer has that content in active memory.</li></ul>
<blockquote><strong>TIP:</strong> When you notice any of these, do not push through. Close the session, write a handoff note, and start fresh. Continuing a saturated session produces diminishing returns fast.</blockquote>
<h2>The Scoped Session Method - What I Actually Do</h2>
<p>The single most effective thing I changed was switching from marathon sessions to scoped sessions. A scoped session has one clearly defined job: add the payment flow, not 'work on the app.' That constraint alone cuts context waste by 60 percent because you load fewer files and produce less output before the task is done.</p>
<ol><li>Write the session goal in the first message. One sentence. 'In this session we are adding the user authentication flow. The database schema is in schema.sql. The existing auth utils are in lib/auth.ts. Nothing else is in scope.' This primes the agent and controls what gets loaded.</li><li>Read files deliberately. Do not use broad open-ended instructions like 'look at the project.' Name the specific files relevant to this session's scope. Each file load costs context - be surgical.</li><li>Keep output tight. If the agent is writing a long explanation, ask it to summarize to three bullet points. Explanation text fills context and rarely needs to be in the session history.</li><li>End every session with a handoff summary. Ask the agent: 'Write a short summary of what we completed, what decisions we made, and what the next session should start with.' Paste that into the next session as the first message.</li></ol>
<h2>The Handoff Document - My Actual Template</h2>
<p>The handoff document is the piece most builders skip, and it is the one that matters most when you come back to a project after a day or a week. I keep a file called SESSION_LOG.md in every project root. After each session I paste the agent's summary there. The next session opens with me reading that file to the agent.</p>
<table><caption>What goes in a session handoff document</caption><thead><tr><th>Section</th><th>What to Include</th></tr></thead><tbody><tr><td>Status</td><td>What is finished and confirmed working, as of this session.</td></tr><tr><td>Decisions</td><td>Any architectural or design choices made - data model changes, API shape, naming conventions.</td></tr><tr><td>Blockers</td><td>Anything that is not working yet and why. This is the most valuable section.</td></tr><tr><td>Next session</td><td>The exact one-sentence goal for the next session, plus the 2-3 files it should read first.</td></tr></tbody></table>
<p>This document is not for you to read - it is for the agent to read. Write it at the level of detail that lets a fresh session pick up without losing anything. Three to five sentences per section is usually enough.</p>
<h2>CLAUDE.md as a Permanent Context Layer</h2>
<p>The CLAUDE.md file in your project root is loaded automatically at the start of every session and does not count against your session context the same way a long conversation does. This makes it the right place for the things every session needs to know: the tech stack, the data model conventions, the naming rules, the constraints that must never be violated.</p>
<p>Anything that you find yourself re-explaining across multiple sessions is a signal that it belongs in CLAUDE.md, not in a chat message. I move items from the handoff document into CLAUDE.md once they stop changing - once a decision is final, it lives there permanently and does not need to be re-loaded each session.</p>
<blockquote><strong>TIP:</strong> Keep CLAUDE.md under 400 words for a new project. A bloated CLAUDE.md has the same problem as a bloated session: the important instructions drown in noise. Curate it ruthlessly - if a rule has not been relevant in the last five sessions, remove it.</blockquote>
<h2>Practical Context Budget for Large Projects</h2>
<p>On large projects where context pressure is a constant, I treat each session like a budget. I know roughly how much context I have before quality degrades, and I plan accordingly.</p>
<ul><li>One large feature per session. Never more. If the feature is too big for one session, break it down into sub-tasks each with its own scope.</li><li>Load the schema once. Read the database schema or type definitions at the start, make the changes, then avoid re-reading it mid-session.</li><li>Summarize before generating. Ask the agent to outline what it will do before it does it. A 5-line plan uses almost no context; a wrong 200-line implementation wastes it all.</li><li>Close and restart rather than appending. When you notice quality slipping, close the session immediately. Starting fresh with a good handoff costs 2 minutes and saves 30.</li></ul>
<h2>FAQ</h2>
<p><strong>How do I know when Claude Code's context is getting full?</strong></p><p>Watch for the agent re-explaining things you already covered, contradicting earlier decisions, or asking you to clarify your data model again. These are the soft signals. If you are deep in a long session and output quality drops, assume context pressure and start fresh.</p>
<p><strong>Does starting a new session lose all my progress?</strong></p><p>No - your code changes are already on disk. A new session loses the conversation history, not the files. That is why the handoff document matters: it carries the decisions and status forward without needing to re-read 100 messages.</p>
<p><strong>What should go in CLAUDE.md vs the session handoff?</strong></p><p>CLAUDE.md holds permanent rules that never change: the stack, the naming conventions, the hard constraints. The handoff document holds the session-specific state: what just got done, what is broken, what the next session should focus on. One is the constitution; the other is the current meeting notes.</p>
<p><strong>Is there a way to see how much context I have used?</strong></p><p>Claude Code does not expose a live context meter. The best proxy is the length of the conversation and how many large files have been read. After a session that has read multiple large files and produced substantial output, assume you are close to the limit and wrap up deliberately.</p>
<p><strong>Where can I learn more about working efficiently with Claude Code?</strong></p><p>The Claude Code Club has a full curriculum on working with Claude Code across real builds, including context management, CLAUDE.md templates, and session workflow. Join for $9/month at claudecodeclub.ai.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Write a Project Brief for Claude Code (That Actually Works)</title>
      <link>https://www.claudecodeclub.ai/blog/how-to-write-a-project-brief-for-claude-code</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/how-to-write-a-project-brief-for-claude-code</guid>
      <pubDate>Tue, 04 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Building</category>
      <category>Workflows</category>
      <category>Getting Started</category>
      <description><![CDATA[Writing a project brief for Claude Code before you open the app cuts build time in half. Here is the exact brief format I use for every client project and internal build.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>A project brief written before the first prompt is the single highest-leverage thing you can do to improve Claude Code output. It turns a vague session into a directed build.</li><li>The brief has five parts: what we are building, who it is for, what the tech stack is, what done looks like, and what is out of scope. Each part is one to three sentences.</li><li>The brief is not instructions to Claude Code - it is your thinking made explicit so you can give Claude Code real constraints instead of open-ended requests that produce generic output.</li></ul>
<h2>Why Most Claude Code Sessions Underperform</h2>
<p>The most common reason a Claude Code session produces mediocre output is not the model - it is the brief. Or more precisely, the absence of one. Most builders open the app with a rough idea in their head and type the first message that captures it. That message is the brief, and it is usually missing half the information the agent needs to do the job well.</p>
<p>Claude Code fills in the gaps with generic assumptions. Stack not specified? It picks one. User base not described? It builds for a generic user. Success criteria not stated? It stops when it has written something that compiles. The output is technically correct and practically wrong because it was built to a vague target.</p>
<blockquote><strong>NOTE:</strong> Writing the brief is thinking work, not Claude Code work. The 15 minutes you spend on the brief before starting a session saves more time than any prompt optimization technique during the session. It is the highest-leverage single step in the build workflow.</blockquote>
<h2>The Five Parts of a Claude Code Project Brief</h2>
<p>A brief does not need to be long. It needs to be precise. Here are the five sections I write for every project, from a half-day freelance build to a multi-week client delivery.</p>
<ol><li>What we are building. One sentence. Not 'a dashboard' - 'a dashboard that shows daily revenue and churn for a SaaS product, pulling from a Stripe webhook.' The specificity is the point.</li><li>Who it is for. The actual user, not a persona. If it is for a client, describe them: 'a 45-year-old operations manager who checks this once a day and has never used developer tools.' That sentence changes every UI decision.</li><li>The tech stack. Exact versions where they matter. 'React 18, Supabase Postgres, Vercel hosting, no external auth library - we are rolling our own with JWTs.' Anything unspecified gets guessed.</li><li>What done looks like. Two or three acceptance criteria written as tests you can actually run. 'A user can log in and see their data. A failed login shows an error. The dashboard loads in under two seconds on a slow 3G connection.' If you cannot write this, you do not know what you are building yet.</li><li>What is out of scope. Explicitly. 'No mobile view this sprint. No admin panel. No email notifications.' This is the section most briefs skip, and it is the one that stops scope creep before it starts.</li></ol>
<h2>A Real Brief From a Recent Client Build</h2>
<p>Here is a brief I wrote before a recent client project - a simple internal tool for a small agency. I am reproducing the structure, not the identifying details, because the format is what matters.</p>
<blockquote><strong>NOTE:</strong> What we are building: A time-tracking tool where team members log hours against client projects and managers see weekly totals. Who it is for: 6 team members who currently log in a shared spreadsheet. The manager (the client) needs to export totals to invoice clients. Tech stack: React, Supabase, no external component library - basic HTML inputs, not a design system. Done looks like: A team member can add a time entry in under 30 seconds. The manager can see all entries for the current week grouped by project. Export to CSV works. Out of scope: No mobile optimization. No role-based permissions beyond manager/team-member. No integrations with billing software.</blockquote>
<p>That brief is 120 words. It took 10 minutes to write. The build that followed ran clean because Claude Code had a real target. When a session started drifting - adding features, suggesting third-party integrations - I pointed back to the 'out of scope' section and it corrected immediately.</p>
<h2>How to Use the Brief During the Build</h2>
<p>The brief is not a one-time document. It is the reference you return to throughout the build. In practice I use it three ways.</p>
<ul><li>As the first message in every new session. I paste the brief (or a condensed version of it) at the top of each session so the agent always has the full picture, not just the recent conversation.</li><li>As a scope check when output drifts. When the agent starts adding features that were not in the brief, I quote the out-of-scope section and ask it to remove them. This is faster than trying to negotiate with the agent about what you actually need.</li><li>As a done check before I hand off. When I think the build is finished, I read each acceptance criterion and verify it is true. If a criterion is not met, the build is not done.</li></ul>
<h2>When the Brief Reveals You Are Not Ready to Build</h2>
<p>Sometimes writing the brief exposes gaps you did not know you had. You sit down to write the acceptance criteria and realize you do not actually know what happens when a user's trial expires. Or you start writing the tech stack and realize you have not decided whether the database is server-side or client-side. These are the gaps that become expensive bugs mid-build.</p>
<p>When the brief stalls, that is the brief doing its job. The right move is to answer the open questions before you open Claude Code - call the client, sketch the flow, check the constraint. A build started on resolved questions runs two to three times faster than one started on assumptions.</p>
<blockquote><strong>TIP:</strong> If you genuinely cannot write the acceptance criteria section, you are not ready to build. Ask Claude Code to help you write the acceptance criteria based on a rough description of the feature. That is a legitimate and valuable use of the tool - using it to clarify thinking before the build, not just during.</blockquote>
<h2>FAQ</h2>
<p><strong>How long should a Claude Code project brief be?</strong></p><p>For most projects, 100 to 200 words is the right range. Long enough to cover all five sections with one to three sentences each. Short enough that you can read it back in 60 seconds and verify it is accurate. If your brief is getting longer, split it into multiple scoped sessions rather than expanding the brief.</p>
<p><strong>Do I need a brief for small one-hour builds?</strong></p><p>Yes, but a shorter version. Even for a one-hour build, knowing what done looks like before you start prevents the session from expanding into a three-hour session. A three-sentence brief - what it does, what done looks like, what is out of scope - is enough for a small task.</p>
<p><strong>Where does the brief live - in CLAUDE.md or the first message?</strong></p><p>Both, depending on scope. For a single session, paste it as the first message. For a multi-session project, put the stable parts (stack, user description, architectural decisions) into CLAUDE.md so every session inherits them, and use the first message for the session-specific scope and acceptance criteria.</p>
<p><strong>What is the difference between a project brief and a CLAUDE.md file?</strong></p><p>The brief is written once before the project starts and captures your thinking. CLAUDE.md is a living document that travels with the repo and is updated as the project evolves. The brief answers 'what are we building and why' - CLAUDE.md answers 'how do we build in this project and what are the rules.'</p>
<p><strong>Where can I learn more about running Claude Code builds professionally?</strong></p><p>The Claude Code Club is the community where builders share real workflows, templates, and client delivery systems. Join for $9/month at claudecodeclub.ai.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code vs GitHub Copilot: Which One Actually Ships More Work?</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-vs-github-copilot</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-vs-github-copilot</guid>
      <pubDate>Mon, 03 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Tools</category>
      <category>Claude Code</category>
      <category>Productivity</category>
      <description><![CDATA[Claude Code and GitHub Copilot are both AI coding tools but they do fundamentally different jobs. Copilot lives inside your editor and suggests the next line. Claude Code takes the whole task, plans it, writes the files, and runs the commands. I have used both and here is the honest breakdown of where each one wins.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>GitHub Copilot is an autocomplete layer inside your IDE. Claude Code is an agentic tool that takes a task, plans it, and executes across multiple files and commands without you steering every step.</li><li>Copilot wins for line-by-line speed inside an existing editor workflow. Claude Code wins when the task is bigger than a few lines - a new feature, a refactor, a full project scaffold.</li><li>Most serious builders end up with both. Copilot handles the small in-editor fills; Claude Code handles the real builds. If you can only pick one and you are building actual products, Claude Code is the higher-leverage choice.</li></ul>
<h2>The core difference: autocomplete vs agentic</h2>
<p>GitHub Copilot is an autocomplete layer. It watches what you type inside VS Code (or another supported IDE) and suggests the next line or the next few lines based on the context in the open file. You accept, reject, or cycle through suggestions. It is always inline, always editor-bound, and always waiting on you to drive.</p>
<p>Claude Code is an agentic coding tool. You give it a task in plain English - 'build a client dashboard that pulls from this API and shows revenue by week' - and it reads your codebase, writes a plan, creates and edits multiple files, runs commands, and checks its own output. You are reviewing and approving work, not steering every keystroke.</p>
<blockquote><strong>TIP:</strong> The mental model: Copilot is a fast typist sitting next to you finishing your sentences. Claude Code is a junior developer who takes the ticket, goes away, and comes back with a pull request for you to review.</blockquote>
<h2>Where GitHub Copilot wins</h2>
<p>Copilot is genuinely fast at small completions. Writing a function you have done a dozen times, filling out a boilerplate class, converting a block of repetitive code - Copilot's suggestions land in under a second and usually require zero context-setting. If you are already deep in an editor session with a specific file open, the friction is nearly zero.</p>
<p>It also works well as a lightweight documentation layer. Hover over a function and ask what it does. It gives you an answer without leaving the file. For teams that have strong editor workflows and are primarily writing incremental changes to existing code, Copilot's inline model is a real productivity boost.</p>
<table><caption>GitHub Copilot strengths by task type</caption><thead><tr><th>Task</th><th>Copilot fit</th><th>Why</th></tr></thead><tbody><tr><td>Completing a function you started</td><td>Strong</td><td>Single-file context, fast suggestion</td></tr><tr><td>Writing tests for existing code</td><td>Strong</td><td>Pattern is clear, output is bounded</td></tr><tr><td>Boilerplate and repetitive code</td><td>Strong</td><td>Low variability, high acceptance rate</td></tr><tr><td>Multi-file feature from scratch</td><td>Weak</td><td>No project-wide planning or file creation</td></tr><tr><td>Running commands or checking build output</td><td>Not possible</td><td>Editor-only, no terminal access</td></tr></tbody></table>
<h2>Where Claude Code wins</h2>
<p>Claude Code is built for tasks that span more than one file. When a feature requires a new component, an updated API route, a modified schema, and a config change, you would have to open each file manually in Copilot and guide it through each piece. Claude Code reads the whole project, plans the change, and executes all of it.</p>
<p>It also operates in the terminal. Claude Code can install packages, run a build, read the error, and fix the issue - without you pasting error messages back and forth. That loop - write, run, read, fix - is where most of the real build time goes, and Claude Code runs the whole thing autonomously.</p>
<p>The desktop app is the fastest on-ramp. You do not need a terminal or an IDE configured. Open the Claude Code desktop app, point it at your project folder, and start giving it tasks. This is the framing I use with every new builder: you do not need to be technical to start using Claude Code effectively.</p>
<table><caption>Claude Code strengths by task type</caption><thead><tr><th>Task</th><th>Claude Code fit</th><th>Why</th></tr></thead><tbody><tr><td>New feature across multiple files</td><td>Strong</td><td>Project-wide context and file creation</td></tr><tr><td>Scaffolding a project from a brief</td><td>Strong</td><td>Plans the architecture before writing</td></tr><tr><td>Debugging a failing build</td><td>Strong</td><td>Reads terminal output and iterates</td></tr><tr><td>Deploying or running scripts</td><td>Strong</td><td>Has terminal access and command execution</td></tr><tr><td>Single-line autocomplete in an open file</td><td>Weaker</td><td>Copilot is faster for pure inline fill</td></tr></tbody></table>
<h2>The billing reality in 2026</h2>
<p>GitHub Copilot costs $10 to $19 per month depending on the plan. Claude Code on the Max plan (which is what serious builders use) runs $100 per month. That is a real difference and it is worth naming honestly.</p>
<p>The question is not which costs less - it is which one ships more. If Claude Code lets you complete a client build in one day that would have taken three, the $100 is not an expense - it is the most leveraged tool cost in your stack. If you are a hobbyist doing occasional edits to existing code, Copilot at $10 probably covers what you need.</p>
<blockquote><strong>NOTE:</strong> The CCC community includes builders who have gone from zero to multiple client projects billed at $1,500 to $5,000 each using Claude Code. The ROI question is real - but it resolves fast once you land one client build.</blockquote>
<h2>Which one should you use?</h2>
<p>The honest answer is that the tools are not really competing for the same job. Copilot is an editor layer. Claude Code is a build tool. Many experienced builders use both: Copilot for fast inline suggestions while writing code manually, and Claude Code for the actual build tasks, refactors, and new features.</p>
<p>If you can only pick one and your goal is to build real products - client work, your own tools, things that ship - Claude Code is the higher-leverage choice. It handles the tasks that take actual hours. Copilot handles the tasks that take minutes.</p>
<p>If you are brand new to AI coding tools and want to start with the lowest-friction on-ramp, the Claude Code desktop app removes the need to configure an editor or learn the terminal. It is the fastest path from 'I want to build something' to 'I built something.'</p>
<h2>FAQ</h2>
<p><strong>Can I use Claude Code and GitHub Copilot at the same time?</strong></p><p>Yes. They are not mutually exclusive. A common setup is Claude Code for agentic build tasks and Copilot for inline suggestions when writing code manually in an editor. They do not conflict.</p>
<p><strong>Is GitHub Copilot good enough for client work?</strong></p><p>Copilot can help with client work but its scope is limited to your editor. For anything that spans multiple files or requires running and fixing builds, you will spend significant time manually directing it. Claude Code handles the full build loop, which is where client projects live.</p>
<p><strong>Does Claude Code work without knowing how to code?</strong></p><p>It works well for non-developers. The Claude Code desktop app lets you describe what you want to build in plain English. Claude Code reads your project and executes the task. The Claude Code Club teaches exactly this - building real products without a traditional coding background.</p>
<p><strong>How do I get started with Claude Code?</strong></p><p>Download the Claude Code desktop app from claude.ai. Point it at a project folder or start a new one. The Claude Code Club has a free-resources section with starter templates and prompt packs that get you shipping real work in a first session.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Build a Mobile App With Claude Code: My Expo Workflow</title>
      <link>https://www.claudecodeclub.ai/blog/build-a-mobile-app-with-claude-code</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/build-a-mobile-app-with-claude-code</guid>
      <pubDate>Mon, 03 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Building</category>
      <category>Claude Code</category>
      <category>Projects</category>
      <description><![CDATA[Building a mobile app used to mean learning Swift, Kotlin, or fighting a complex React Native setup. With Claude Code and Expo, you describe the app, Claude Code scaffolds the project and writes the components, and Expo handles the iOS and Android build. Here is the exact workflow I use to go from idea to a working app on a device.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Expo is the fastest path to a working mobile app with Claude Code. It handles the iOS and Android build process so you are only writing the app logic, not fighting native tooling.</li><li>The build loop: scaffold the project with Claude Code, describe each screen and feature, let Claude Code write the components, preview on your device with Expo Go, and iterate. No Xcode or Android Studio required for most builds.</li><li>Claude Code handles the full component structure, navigation, API calls, and styling. Your job is describing what you want and reviewing what it builds.</li></ul>
<h2>Why Expo is the right starting point</h2>
<p>If you have tried to build a mobile app before without a native development background, you know the pain: Xcode configuration errors, Android Studio setup, conflicting dependencies, and simulator issues that eat entire afternoons. Expo exists to remove all of that. It wraps React Native in a managed build system so you write JavaScript components and Expo handles the native layer.</p>
<p>The Expo Go app on your phone is the magic piece. You run one command, scan the QR code, and your app loads on your actual device in real time. No simulator setup, no cable, no build wait. Claude Code generates the component code; Expo Go shows it on your screen in under a minute.</p>
<blockquote><strong>TIP:</strong> The stack: Expo (build system) + React Native (components) + Claude Code (writes the code). You are the product owner describing what you want. Claude Code is the developer building it. Expo is the build pipeline that gets it onto a device.</blockquote>
<h2>Setting up the project</h2>
<p>Start by opening the Claude Code desktop app and creating a new project. Tell Claude Code: 'I want to build a mobile app using Expo and React Native. Start by scaffolding a new Expo project called [your app name].' Claude Code will run the Expo CLI commands and set up the project structure.</p>
<p>If you are running this in a terminal, the command is 'npx create-expo-app your-app-name' but you do not need to type it yourself. Describe what you want and Claude Code executes it. Once the scaffold is done, tell Claude Code what the app needs to do and it will start planning the file structure before writing a single component.</p>
<table><caption>What Claude Code sets up automatically</caption><thead><tr><th>File or folder</th><th>What it does</th></tr></thead><tbody><tr><td>app/index.tsx</td><td>Home screen of the app</td></tr><tr><td>app/(tabs)/</td><td>Tab navigation layout</td></tr><tr><td>components/</td><td>Shared UI components</td></tr><tr><td>constants/</td><td>Colors, spacing, typography</td></tr><tr><td>package.json</td><td>Dependencies including Expo SDK</td></tr></tbody></table>
<h2>Describing screens and features</h2>
<p>This is where the workflow is different from traditional development. You do not write component code directly - you describe the screen to Claude Code in plain terms. 'Build a home screen with a header showing the app name, a scrollable list of cards, and a floating action button in the bottom right.' Claude Code reads the project structure and writes the component.</p>
<p>For navigation between screens, tell Claude Code how the flow should work. 'When the user taps a card, take them to a detail screen showing the full information.' Claude Code adds the navigation stack, the route, and the detail component. It keeps the project consistent as it grows because it reads the existing files before adding new ones.</p>
<p>The CCC Build Loop applies here: use Plan Mode for anything bigger than a single screen so Claude Code reads the project first and plans what it will change before touching any files. For a single new component, let it run. For a multi-screen feature or a navigation rework, plan first to avoid contradictions across files.</p>
<h2>Connecting to data and APIs</h2>
<p>Most useful apps need data from somewhere. Tell Claude Code where the data lives and what format it is in. 'The app needs to fetch a list of items from this API endpoint and display them on the home screen. The response returns an array of objects with id, title, and description fields.' Claude Code writes the fetch logic, the state management, and the component that renders the data.</p>
<p>For apps that need local data that persists between sessions, Claude Code can add AsyncStorage - the React Native equivalent of localStorage. Describe what needs to be saved and it handles the storage logic. For more complex data needs, it can set up a Supabase connection with the same plain-English briefing.</p>
<h2>Getting the app onto a device</h2>
<p>Install the Expo Go app on your iPhone or Android. Then tell Claude Code to start the development server. It will run 'npx expo start' and generate a QR code. Scan it with your camera. The app loads on your phone. Every change Claude Code makes to the code updates on your device in real time.</p>
<p>When the app is ready for a real build (for App Store or Google Play submission), you will need an Expo account and the EAS Build service. Tell Claude Code 'set up EAS Build for this project' and it will walk through the configuration. This is the step that goes beyond the Expo Go preview and produces the actual binary for submission.</p>
<blockquote><strong>NOTE:</strong> Expo Go is for development and review. A real App Store submission requires a paid Apple Developer account ($99/year) and going through the EAS Build and Apple review process. Claude Code can prepare everything else, but the account and the $99 are on you.</blockquote>
<h2>FAQ</h2>
<p><strong>Do I need to know React to build a mobile app with Claude Code?</strong></p><p>No prior React knowledge is required. Claude Code writes all the component code. Knowing how React components work helps you review what it builds, but you can get a working app on a device without writing any React yourself.</p>
<p><strong>Can Claude Code build the same app for both iOS and Android?</strong></p><p>Yes. Expo and React Native produce one codebase that runs on both platforms. Claude Code writes it once and Expo handles the platform-specific build when you submit to the App Store or Google Play.</p>
<p><strong>What is the difference between Expo Go and a production build?</strong></p><p>Expo Go is a development tool that lets you preview the app instantly on a device. A production build is the standalone binary you submit to the App Store or Google Play. Expo Go is for building and testing; the production build is for distribution.</p>
<p><strong>Where do I learn more about building apps with Claude Code?</strong></p><p>The Claude Code Club has a dedicated community of builders working on real apps. Join the $9/month membership at claudecodeclub.ai for the full curriculum, starter templates, and a community of people building the same kind of projects.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code Worktrees: How to Run Two Builds at Once Without Conflicts</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-worktrees</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-worktrees</guid>
      <pubDate>Sun, 02 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Git</category>
      <category>Workflows</category>
      <category>Advanced</category>
      <description><![CDATA[Git worktrees let you run two Claude Code sessions on the same repository at the same time, each in its own directory and on its own branch. No file conflicts, no blocked agents waiting, no merge headaches mid-build. Here is how to set them up in two minutes.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>A git worktree is a second checkout of the same repository in a different folder on your machine. Open Claude Code in each folder and you have two fully independent agents working on the same codebase at the same time with zero file conflicts.</li><li>Setup takes two commands: 'git worktree add ../project-feature feature' creates the second folder and branch. Open Claude Code there and you are running two parallel sessions.</li><li>When both sessions finish, merge normally. Any conflict you hit is a real logical conflict between the two features - not an accident from two sessions touching the same file at the same time.</li></ul>
<h2>What a git worktree actually is</h2>
<p>A git worktree is a second checkout of the same repository sitting in a different directory on your machine. Each worktree has its own branch, its own working directory, and its own index. When you open Claude Code in each one, the two sessions are completely independent - they cannot see each other, cannot step on each other's files, and cannot cause conflicts mid-build.</p>
<p>The problem worktrees solve is that two Claude Code sessions in the same directory will eventually collide on the same file. Even if you try to keep them apart, one agent might update a shared utility, a type file, or a config while the other is mid-way through a change to the same thing. The resulting merge conflict arrives at the worst possible moment - mid-build, when context is deep.</p>
<blockquote><strong>NOTE:</strong> You do not need worktrees for every parallel build. If you are running two Claude Code sessions on completely separate repositories, they are already isolated. Worktrees solve the specific case where two sessions need to work on the SAME repository at the same time.</blockquote>
<h2>Setting up a worktree in two minutes</h2>
<p>From your main project directory, run: git worktree add ../project-auth auth. This does two things: it creates a new directory called project-auth one level up from your current project, and it checks out a branch called auth into that directory. The branch is created automatically if it does not exist.</p>
<ol><li>Navigate to your main project directory in the terminal.</li><li>Run: git worktree add ../project-feature-name feature-branch-name (replace the names with something meaningful for your specific build).</li><li>Open the Claude Code desktop app and open the new directory (../project-feature-name) as your project.</li><li>That is your second session. The first session stays in the original directory on the original branch.</li></ol>
<blockquote><strong>TIP:</strong> Name your worktree directories clearly. Something like project-auth-work and project-dashboard-work makes it obvious at a glance which session you are in. When you have two Claude Code windows open, the directory name is the fastest way to orient yourself.</blockquote>
<h2>Running two sessions on the same project safely</h2>
<p>With worktrees set up, the two Claude Code sessions are physically isolated. Each one reads and writes only to its own directory. The moment you are ready to start, give each session a clear, bounded scope so neither agent tries to extend into the other's territory.</p>
<ul><li>Session 1 scope: 'Build the authentication flow. Do not touch anything in the dashboard directory or the reporting utilities.'</li><li>Session 2 scope: 'Build the data dashboard. The auth layer does not exist yet - build against a placeholder that returns a hardcoded user for now.'</li><li>If a session needs something the other session is building, that is a dependency. Stop and sequence - the shared dependency must be finished and merged before the dependent work can continue.</li></ul>
<blockquote><strong>WARNING:</strong> The danger sign is when both sessions start modifying the same file. If you notice either session reaching for a shared schema, utility, or config file that the other session is also editing, stop both sessions, resolve the conflict on the main branch, then restart the affected session from the resolved state.</blockquote>
<h2>Merging when both sessions are done</h2>
<p>When both sessions have completed their work, merge both branches back to main as you normally would. Git does not know or care that the branches were built in parallel via worktrees - it just sees two branches with changes that need to be integrated.</p>
<p>Any conflict you encounter at merge time is a genuine conflict: the auth work made a decision that is incompatible with a decision the dashboard work made. That is a real conflict that needs a human decision - not the accidental collision from two sessions simultaneously editing the same line, which worktrees prevent entirely.</p>
<p>Once you have merged, clean up: git worktree remove ../project-auth. This removes the directory and de-registers the worktree from git. The branch still exists on its own - the remove command only removes the physical checkout.</p>
<h2>When to use worktrees vs sequential sessions</h2>
<p>Worktrees earn their setup cost when you have two independent builds that would otherwise make you wait. If a session takes 20 minutes and you have two of them, sequential means 40 minutes; parallel means 20 minutes plus a few minutes to merge.</p>
<ul><li>Use worktrees when: tasks are fully independent, each touches different files and directories, both have clear specs that will not need mid-stream reconciliation, and you have enough focus to manage two active sessions.</li><li>Keep it sequential when: one task depends on the other's output, both modify a shared schema or config that is still being defined, or the build is exploratory enough that a decision in one session might change what the other needs to do.</li><li>The fastest heuristic: could you hand these two tasks to different developers and they would not need to talk to each other to finish them? If yes, fork. If no, keep it sequential.</li></ul>
<h2>Common mistakes and how to avoid them</h2>
<ul><li>Forking too early: starting two sessions before the shared contracts (API shape, schema, types) are settled. Agree on the shared contract before forking.</li><li>Not naming worktrees clearly: two sessions called project-1 and project-2 create constant orientation confusion. Name them after the feature: project-auth-work, project-payments-work.</li><li>Forgetting to clean up: old worktrees accumulate on disk. Run 'git worktree list' periodically and remove the ones that are done.</li><li>Running three or more sessions at once before you have done it with two: coordination overhead grows fast. Start with two parallel sessions on a small build, then scale up.</li></ul>
<blockquote><strong>TIP:</strong> Members of Claude Code Club run this parallel worktree pattern daily and share what they have learned. If you want to see real examples and ask about your specific setup, the club is at claudecodeclub.ai.</blockquote>
<h2>FAQ</h2>
<p><strong>Does a git worktree copy my entire codebase onto disk?</strong></p><p>No. A worktree is a lightweight checkout, not a copy. The git object database is shared between the main checkout and all worktrees - only the working files are checked out into the new directory. The overhead is just the size of the checked-out files, not the full repository history.</p>
<p><strong>Can I have more than two worktrees running at once?</strong></p><p>Yes, git supports any number of worktrees. The practical limit is your ability to manage multiple active Claude Code sessions simultaneously. Most people find two parallel sessions manageable. Three starts requiring real attention switching. Four or more is usually less efficient than a well-sequenced two-at-a-time approach.</p>
<p><strong>Do I need to push the worktree branch before merging?</strong></p><p>No. The worktree branch exists locally and can be merged to main locally without ever being pushed. Push when you want the branch on the remote for backup, code review, or collaboration. For a solo build that you merge straight to main, a local worktree branch is sufficient.</p>
<p><strong>What if Claude Code in one worktree modifies a file that is also in the other worktree?</strong></p><p>Git will not stop this from happening in real-time - it only surfaces the conflict when you try to merge. The prevention is clear session scope: each Claude Code session should have an explicit list of files and directories it is allowed to touch. If a shared utility file needs to change, stop both sessions, make the change on main, and restart both sessions from the updated state.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Build a Dashboard with Claude Code (Step by Step, No Coding Experience Required)</title>
      <link>https://www.claudecodeclub.ai/blog/how-to-build-a-dashboard-with-claude-code</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/how-to-build-a-dashboard-with-claude-code</guid>
      <pubDate>Sun, 02 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Building</category>
      <category>Claude Code</category>
      <category>Workflows</category>
      <description><![CDATA[Building a dashboard with Claude Code starts with the data, not the design. Tell Claude Code what numbers you need to track, paste in a sample of your data, and it generates the component structure, wires in the charts, and handles the responsive layout. You direct; it builds.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>The right order is data model first, display second. Paste a sample of the data you want to visualize before asking Claude Code to build anything - without real data, you get a generic placeholder dashboard that needs a full rebuild once you add your actual numbers.</li><li>Claude Code handles the chart library choice, data binding, and responsive layout. Your job is to specify which metrics matter most and approve each stage before it continues.</li><li>A working dashboard is one Claude Code session. A polished dashboard ready for a client is three sessions: scaffold, data integration, and visual polish.</li></ul>
<h2>Start with data, not design</h2>
<p>The most common mistake when asking Claude Code to build a dashboard is opening with a design request. 'Build me a sales dashboard with charts and filters' gets you a generic template with placeholder data - and once you try to connect your actual numbers, the structure rarely fits.</p>
<p>The right first message is: here is a sample of my actual data, and here are the three metrics I most need to see. Start with the shape of the data. Claude Code will propose a component structure that fits the data - not a dashboard skin that you then have to reverse-engineer to accept real inputs.</p>
<blockquote><strong>TIP:</strong> Before the first message to Claude Code, spend five minutes answering these two questions: what is the data source (a CSV, a Supabase table, an API), and what are the three metrics that matter most to you? Having those answers ready makes the first session dramatically more efficient.</blockquote>
<h2>Four things to specify before Claude Code touches the UI</h2>
<p>Clear specs upfront prevent the back-and-forth that stretches a one-session build into four. These four questions cover everything Claude Code needs to build a dashboard that actually fits your situation:</p>
<ol><li>What is the data source? Tell Claude Code exactly: a static CSV, a Supabase table, a fetch call to a URL, or hardcoded data for now. Being vague here leads to a dashboard that works in demo mode and breaks when you connect real data.</li><li>Which three to five metrics need to be immediately visible above the scroll? Dashboards fail when they try to show everything. Name the three numbers you look at first every morning.</li><li>Does it need time-range filtering? A date-range filter that recomputes all charts simultaneously is a separate piece of logic. Decide now whether you need it - adding it after the fact is more work than building it in from the start.</li><li>Will it update in real-time or load once? Real-time means polling or WebSockets; load-once means a fetch on mount. These are different architectures. Telling Claude Code upfront prevents a rebuild at the data layer later.</li></ol>
<h2>Walking Claude Code through the build in stages</h2>
<p>A dashboard build works best when you review after each stage rather than asking for everything in one message. Here is the sequence that works:</p>
<ol><li>First message: 'Here is a sample of my data: [paste JSON or CSV]. Build me a React component that displays [metric 1], [metric 2], and [metric 3]. Use a bar chart for [X] and number cards for [Y and Z].' Review the output before continuing.</li><li>Second message: 'Add a date-range filter that recomputes all charts when the range changes. The default range should be the last 30 days.' Review the filter logic before continuing.</li><li>Third message: 'Make the layout responsive. Cards should stack vertically on mobile. Charts should be full-width below 768px.' Test on a narrowed browser window before continuing.</li><li>Fourth message (if needed): 'Replace the hardcoded sample data with a fetch from [your actual data source].' Do this last, after the layout is stable.</li></ol>
<blockquote><strong>NOTE:</strong> Reviewing between stages is not optional busywork. Claude Code builds on what it has already created - if the first stage has a structural issue and you do not catch it before requesting the second stage, the second stage locks in the structural issue and makes it harder to fix.</blockquote>
<h2>Dashboard types and what to tell Claude Code for each</h2>
<p>The first message to Claude Code should include the type of data and the metric names. Here is what to specify for the most common business dashboard types:</p>
<ul><li>Revenue or sales dashboard: a time-series line chart for revenue over time, number cards for total revenue this month vs last month, and a bar chart for revenue by product or client. Tell Claude Code the time resolution: daily, weekly, or monthly.</li><li>Operations or status dashboard: status indicator chips (green/yellow/red) for the key systems or queues, a number showing current queue depth, and a throughput-over-time line chart. Tell Claude Code what the status values map to.</li><li>Content or marketing dashboard: a traffic trend line chart, a bar chart for channel breakdown (organic, paid, direct), and a funnel showing visitor to signup to purchase. Tell Claude Code the event names your analytics tool uses.</li><li>Client project dashboard: a card per client showing project status, last update date, and a progress indicator. Tell Claude Code the status values (active, on hold, delivered) and the key fields to display.</li></ul>
<h2>Connecting real data without starting over</h2>
<p>The cleanest approach is to build the dashboard with hardcoded sample data first, make sure the layout and interactions are exactly right, and then do the data integration as its own step. This keeps two problems separate: does this display correctly, and does this data flow correctly.</p>
<p>When you are ready to integrate, tell Claude Code: 'Replace the hardcoded sampleData array with a fetch to [URL or Supabase table]. Handle the loading state with a spinner and the error state with a simple error message.' Claude Code writes the fetch, the loading skeleton, and the error boundary in one message. Review that the data shape from the real source matches the shape the charts expect - if it does not, one message fixing the transform is usually enough.</p>
<h2>Deploying your dashboard as a live tool</h2>
<p>A Claude Code dashboard is a React component - it deploys exactly like any other React app. The two fastest paths are Vercel (connect the repository, push, live in under two minutes) and a static export (useful if you want to share the dashboard as a file rather than a URL).</p>
<p>If the dashboard contains sensitive business data, add a simple authentication check before deploying to any public URL. Tell Claude Code: 'Add a password check on the index route - store the password in an environment variable called DASHBOARD_PASSWORD and return a 401 if the request does not include the correct value.' That is enough to keep the dashboard private without building a full auth system.</p>
<blockquote><strong>TIP:</strong> Members of Claude Code Club have built and shipped client dashboards in under an afternoon. If you want to see real examples and ask about the specific data source you are working with, the club is at claudecodeclub.ai.</blockquote>
<h2>FAQ</h2>
<p><strong>What chart library will Claude Code use?</strong></p><p>Claude Code typically reaches for Recharts or Chart.js for React dashboard builds - both are well-documented and work well in the Claude Code context. If you have a preference, specify it: 'Use Recharts for the charts.' If you do not specify, Claude Code will choose and document what it chose so you can adjust later.</p>
<p><strong>Can I build a dashboard without a backend?</strong></p><p>Yes. A dashboard can read from a static CSV, a hardcoded data array, or a third-party API. The only case that requires a backend is when you need to hide an API key from the browser - in that case, a simple server-side route is enough. Claude Code can build both the frontend dashboard and the simple API proxy in the same session.</p>
<p><strong>How do I add authentication so only I can see the dashboard?</strong></p><p>For a dashboard you share with a few people, the simplest approach is a password stored in an environment variable and checked server-side. For a dashboard with multiple users and different permissions, tell Claude Code to add Supabase Auth - it handles the login flow, session management, and route protection.</p>
<p><strong>Can I deploy this as a live tool for a client?</strong></p><p>Yes. A custom internal dashboard that shows a client their own real-time business numbers is a high-value deliverable. It connects to their data, runs on their domain, and shows exactly what they need. The Claude Code Profit Room covers how to scope, price, and deliver exactly this kind of build.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code Plan Mode - Map Out Your Build Before Writing a Single Line</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-plan-mode</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-plan-mode</guid>
      <pubDate>Sat, 01 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Workflows</category>
      <category>Building</category>
      <category>Getting Started</category>
      <description><![CDATA[Most Claude Code beginners jump straight to building. The ones who get better results start with a planning pass first. Here is the plan-first workflow I use on every project above a few hours, and how to prompt Claude to think through the whole build before it writes a single line of code.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Jumping straight into building with Claude Code is the fastest way to get stuck halfway through a project. A two-minute planning pass before the first code request prevents most of the dead ends.</li><li>The plan-first workflow means giving Claude the full picture first - what you are building, why, what the user does in it, and what a working version looks like - and asking it to map the build before touching any file.</li><li>The plan Claude returns becomes your approval checkpoint. Review it, push back on anything that looks off, and then tell Claude to proceed. Everything after that is execution, not discovery.</li></ul>
<h2>Why most Claude Code builds get stuck halfway</h2>
<p>Here is what happens when you skip planning with Claude Code: you ask it to build something, it starts writing files, twenty minutes in you realize the approach it chose does not match what you actually needed, and now you are either starting over or spending an hour fixing a structural decision that was made in the first thirty seconds. This is the single most common reason a Claude Code build stalls.</p>
<p>The fix is not clever prompting or a better starting message. It is a planning pass before the first code request. When Claude knows the full picture upfront - what the project is, what it should do, how the user will interact with it, and what done looks like - it makes better structural decisions from the start. Those decisions are easy to change in a plan and expensive to change once they are woven into three files.</p>
<blockquote><strong>NOTE:</strong> The planning pass earns its time on anything with multiple moving parts or that you will work on across sessions. For a quick one-off script or a small isolated change, just describe what you want and go.</blockquote>
<h2>The plan-first prompt - how to ask Claude to think before it builds</h2>
<p>The plan-first approach has one core rule: do not ask Claude to build anything until you have asked it to plan. The planning prompt gives Claude the context it needs to think at the architectural level rather than the implementation level. Here is the structure I use every time.</p>
<ol><li>Describe the project in two to three sentences: what it is, who uses it, and what problem it solves. Not the technical requirements - the purpose.</li><li>Describe the key user actions: what does the user do in this thing, what happens when they click the main button, what do they see first.</li><li>State what done looks like: the smallest working version you would actually use or show to someone.</li><li>End with the planning instruction: 'Before writing any code, give me a build plan. List the main components you will create, the order you will build them in, and any decisions that will be hard to change later. Do not start building until I approve the plan.'</li></ol>
<blockquote><strong>TIP:</strong> The last sentence is the important one. Without it, Claude will often give you a brief summary and then start writing code anyway. Asking it explicitly to wait for your approval turns the plan into an actual checkpoint rather than a formality.</blockquote>
<h2>What a useful plan looks like - and what to push back on</h2>
<p>A useful plan from Claude should name the main pieces of the project and the order they get built in. It should flag any decisions that lock in a direction - database choice, routing structure, auth approach - so you can review them before they become hard to change. And it should be specific enough that you can follow along and check whether it matches your mental model.</p>
<p>What to push back on: any time Claude proposes something more complex than you need. An auth system when you just need a password gate. A database when a JSON file would work for now. A component library when plain CSS does the job. The plan is the moment to swap these out. Once code is written, asking to simplify means rewriting files - and that costs time.</p>
<ul><li>Check the component list: does every piece have an obvious purpose, or are there things in there you do not recognize?</li><li>Check the order: does building in the listed sequence make sense, or does it build a dependency before the thing that depends on it?</li><li>Check the hard decisions: database, routing, auth, state management. These are the ones that ripple everywhere if they are wrong.</li><li>Check the scope: is the plan describing the smallest working version you asked for, or has it expanded into more than you need right now?</li></ul>
<h2>Approving the plan and moving into build mode</h2>
<p>Once you have reviewed the plan and pushed back on anything that looks off, approve it and tell Claude to proceed. From here, Claude should follow the sequence it laid out, and you should hold it to that sequence.</p>
<p>A simple approval message: 'Looks good. Build it in the order you described. After each main component is working, tell me what you just built and what comes next.' That last sentence gives you natural checkpoints through the build without interrupting the flow. Claude builds one piece, confirms, and moves to the next. You are reviewing progress at each checkpoint rather than at the very end when there are thirty files to untangle.</p>
<blockquote><strong>TIP:</strong> Commit after each checkpoint in the plan. One commit per component means you can roll back to any point in the build. With auto mode on, Claude can move through the plan fast - without checkpoints the whole build lands as a single undifferentiated change that is hard to debug.</blockquote>
<h2>The CCC Build Brief - the two-minute version of this workflow</h2>
<p>Inside Claude Code Club we call this the CCC Build Brief: a short structured description of the project that goes into Claude before the first code request. It does not have to be long. On most builds mine is eight to twelve lines. The format is always the same: what it is, who uses it, the three main things the user does, what done looks like, and the explicit instruction to plan before building.</p>
<p>The Build Brief lives in the project CLAUDE.md for any project that will run across sessions. That way every new session starts with context already loaded and the next conversation picks up in the right place rather than re-explaining the project from scratch. The planning pass is a one-time cost; the Build Brief pays off for the whole life of the project.</p>
<blockquote><strong>NOTE:</strong> Inside the club we share Build Brief templates, plan-review checklists, and real plans from members' projects so you can see what a good one looks like before you write your own. Join us at [https://www.skool.com/claudecodeclub/about](https://www.skool.com/claudecodeclub/about) and bring the project you are about to start.</blockquote>
<h2>FAQ</h2>
<p><strong>Does Claude Code have an official plan mode?</strong></p><p>Claude Code does not have a labeled 'plan mode' toggle in the settings. The plan-first workflow is a prompting approach: you explicitly ask Claude to produce a build plan and wait for your approval before writing any code. The key is ending your planning prompt with an instruction like 'do not start building until I approve the plan.' Without that explicit instruction, Claude will often outline the plan briefly and then start coding anyway.</p>
<p><strong>How long should the planning pass take?</strong></p><p>On most projects the planning pass takes two to five minutes. You write the Build Brief, Claude returns the plan in thirty to sixty seconds, and you spend a few minutes reading it and pushing back on anything that looks off. It is a small upfront cost that eliminates most of the mid-build structural problems that cost an hour to fix later.</p>
<p><strong>What if Claude starts building before I approve the plan?</strong></p><p>Tell it to stop, explain that you want to see and approve the full plan before any files are touched, and ask it to give you the plan without writing code. Claude will usually comply immediately. The key is being explicit upfront: 'do not write any code until I tell you the plan looks good.' Once Claude has a clear instruction to wait, it follows it.</p>
<p><strong>Should I do a planning pass for every project?</strong></p><p>For quick one-off scripts, a single isolated component, or a small bug fix, you do not need a planning pass. For anything that has multiple components, will run across sessions, or where a wrong structural decision would be expensive to fix, the planning pass is worth it. A useful threshold: if the project will take more than a couple of hours, plan first.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Debug With Claude Code - The 3-Step Fix That Saves Hours</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-debugging</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-debugging</guid>
      <pubDate>Sat, 01 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Claude Code</category>
      <category>Workflows</category>
      <category>Building</category>
      <category>Tutorials</category>
      <description><![CDATA[Throwing an error at Claude and hoping it fixes it is not a debugging workflow. Here is the three-step method that actually works: describe what you expected, paste the full error, and tell Claude what you already tried. Thirty seconds of setup cuts debugging time in half.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Pasting an error message into Claude without context is the slowest way to debug. Claude needs to know what you expected to happen, what actually happened, and what you have already tried.</li><li>The three-step debug message takes thirty seconds to write and eliminates most of the back-and-forth: describe the expected behavior, paste the full error with the relevant file, and list what you have already tried.</li><li>Debugging with Claude Code works best when you treat it as a thinking partner. Explain the bug in plain language in your message before asking for the fix - the act of explaining it often surfaces the answer before Claude even responds.</li></ul>
<h2>Why pasting the error is not enough</h2>
<p>The most common debugging mistake with Claude Code: something breaks, you paste the error message, Claude generates a fix, the fix does not work, you paste the new error, Claude generates another fix. This loop goes three or four rounds and you are twenty minutes in and no closer. The problem is not Claude's ability to debug. The problem is that an error message without context is genuinely ambiguous - the same error can have three different root causes depending on how the code is structured.</p>
<p>The fix is simple: give Claude the context it needs to diagnose before asking for a fix. That means telling it what you expected to happen, what actually happened, and what you have already tried. Those three pieces of information narrow the possible causes from many to one or two, and Claude's first fix is right most of the time.</p>
<blockquote><strong>NOTE:</strong> This is the debugging equivalent of the rule good diagnosticians use: 'If you give me the right information, I can usually give you the right answer in one try. If you give me half the information, it takes five tries.' Claude Code is the same. The debug message is the input; the quality of the fix is a direct function of how much context you provide.</blockquote>
<h2>The three-step debug message</h2>
<p>The three-step debug message is a format that consistently produces a correct fix in the first or second response. It takes under a minute to write. Here is the structure.</p>
<ol><li>Expected behavior: one sentence describing what should happen. 'Clicking the submit button should save the form data and redirect to the dashboard.' This tells Claude what correct behavior looks like, which is information it needs to know what to fix toward.</li><li>Actual behavior plus the full error: what actually happened, then the complete error message. Do not trim the stack trace - the specific line number and file name in the trace is often the fastest path to the root cause.</li><li>What you have already tried: a brief list of anything you have already attempted. This prevents Claude from suggesting the same fix you just tried and narrows the possibilities.</li></ol>
<blockquote><strong>TIP:</strong> Add the relevant file or function when the error is localized. 'Here is the function where the error is happening' followed by a paste of that function gives Claude exactly what it needs - faster than having it search the codebase on its own.</blockquote>
<h2>The explain-it-out-loud step</h2>
<p>Before you send the debug message, write one sentence explaining what you think is causing the bug. Not a question - a hypothesis. 'I think the issue is that the auth token expires before the API call completes.' Write it in plain English without checking whether you are right.</p>
<p>This step does two things. First, it often reveals the answer. Forcing yourself to articulate a hypothesis makes you look at the problem from the outside, and bugs that seemed opaque suddenly become obvious. I have answered my own debug questions this way a significant portion of the time. Second, when you include the hypothesis in the message to Claude, it gives Claude a starting point that is often correct or adjacent to correct, and the first fix lands faster.</p>
<p>This is the rubber duck method applied to Claude Code. The rubber duck is the habit of explaining a bug out loud to an inanimate object before asking for help - the explanation is the diagnostic. Claude Code makes it productive: you explain the bug, and if you do not solve it yourself, you have a well-structured message ready to send.</p>
<h2>When Claude's fix makes things worse</h2>
<p>Sometimes Claude's fix does not work, or fixes the original bug and breaks something else. When that happens, tell Claude exactly what changed and what the new behavior is - not just the new error without context. The three-step format applies again: here is what you fixed, here is what I expected, here is what is happening now.</p>
<p>If you are on the third fix attempt and still broken, stop and ask Claude to explain its diagnosis of the root cause before trying another fix. 'Before you suggest another fix, tell me what you think is actually causing this and why the last two fixes did not work.' This forces a step back from the fix loop and often surfaces a different diagnosis that gets to the real issue.</p>
<blockquote><strong>WARNING:</strong> Do not let Claude chain fixes without a checkpoint. After two failed fixes, ask it to diagnose before it fixes. Chained fixes without diagnosis are how one bug becomes three bugs across different files.</blockquote>
<h2>Prevention: the pre-flight before every Claude Code session</h2>
<p>The fastest debugging is the kind you never have to do. Before starting a new Claude Code session, commit any working code from the last session, note the current state in the CLAUDE.md, and tell Claude what is working and what you are about to change. This means if the new session introduces a bug, you can compare against a clean checkpoint rather than a sprawling set of uncommitted changes.</p>
<p>The other prevention habit: review Claude's diffs before accepting them. Not line by line on every change, but a scan for files that should not have been touched and logic that looks different from what you discussed. Claude occasionally touches files adjacent to the one you asked it to fix, and catching that in the diff review is faster than catching it when something else breaks later.</p>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club we cover real debugging sessions - the exact debug messages used, what Claude's first response was, and whether the fix landed. If you are stuck on something right now, bring it in. Members answer build and debug questions every day at [https://www.skool.com/claudecodeclub/about](https://www.skool.com/claudecodeclub/about).</blockquote>
<h2>FAQ</h2>
<p><strong>Should I give Claude the whole file or just the error?</strong></p><p>The right amount of context is the relevant function plus the full error message. Giving Claude the whole file when the error is in one function adds noise; giving it only the error without any code leaves it guessing at structure. Start with the full error plus the specific function or component where the error originates. If Claude asks for more context, give it the next-closest file.</p>
<p><strong>What if I do not know which file the bug is in?</strong></p><p>Paste the full stack trace and ask Claude to identify the file and line that is most likely the root cause. A stack trace names every file that was involved in the error, usually with line numbers. Claude is good at reading stack traces and pointing to the originating cause rather than the symptom. Once it identifies the file, use the three-step format from there.</p>
<p><strong>Why does Claude sometimes give a fix that breaks something else?</strong></p><p>Claude fixes bugs by changing code, and code changes can have side effects in connected parts of the project. The most common pattern is that a fix in one function changes the data shape or control flow that another function depends on. The prevention is the diff review: before accepting Claude's fix, scan the files it touched for changes that are not directly related to the bug you reported.</p>
<p><strong>How do I debug a bug that only happens sometimes?</strong></p><p>For intermittent bugs, give Claude the conditions under which it happens as specifically as you can. 'This happens when the user submits the form twice quickly' is more useful than 'this sometimes breaks.' If you can reproduce it under specific conditions, describe those conditions in the debug message. Claude can then look for race conditions, timing issues, or state that does not reset correctly between actions - the most common causes of intermittent bugs.</p>]]></content:encoded>
    </item>
    <item>
      <title>The Git Workflow I Use on Every Claude Code Build</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-git-workflow</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-git-workflow</guid>
      <pubDate>Fri, 31 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Workflows</category>
      <category>Building</category>
      <category>Tutorials</category>
      <description><![CDATA[Claude Code writes code fast, and without a commit rhythm you can lose hours of working progress in one wrong command. Here is the branch strategy, commit pattern, and four rules I follow on every build to keep AI-written code clean and recoverable.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Claude Code writes a lot of code fast, and without a commit rhythm you end up with a working directory full of unsaved progress that one wrong command can wipe out. Committing every time something works - not just when a feature is done - is the single most important habit.</li><li>Branching gives you a safe room to experiment. The pattern I use is one branch per task: Claude builds in it, I review the diff, and the merge to main is a deliberate choice, not an accident.</li><li>The four rules that keep every build recoverable: commit before you hand Claude a new problem, review the diff before you merge, never use git add -A on a tree with unrelated WIP, and write a one-line message that names the intent not the implementation.</li></ul>
<h2>Why Claude Code and git need a system</h2>
<p>Claude Code can write more code in ten minutes than most developers produce in a morning. That speed is the whole point, but it creates a real problem: if you do not have a commit rhythm, you end up with a working directory full of changes you have never checkpointed. One failed experiment, one wrong undo, one accidental overwrite, and the session is gone. Git is the safety net, and without a system for using it alongside Claude, you are flying without one.</p>
<p>I learned this the hard way on an early build. I had Claude add a feature over about forty minutes of back-and-forth, it was working, and then I asked it to refactor something unrelated. The refactor broke the feature. I typed undo, Claude rewrote the file, and the working version I had never committed was gone. Forty minutes, gone. After that I built a simple git system and I have used it on every build since.</p>
<blockquote><strong>NOTE:</strong> You do not need to use the terminal for any of this. The Claude Code desktop app works alongside any git client you prefer - GitHub Desktop, Tower, or the built-in source control in VS Code. The workflow below describes the logic; use whatever tool surfaces that logic for you.</blockquote>
<h2>The commit-often rule</h2>
<p>The core rule is this: commit every time something works. Not just when a feature is done, not just at the end of a session - every time you have a version you would be upset to lose. With Claude, that moment comes more often than you expect. A working route, a passing test, a component that renders correctly - each of those is worth a commit.</p>
<p>The commit message does not have to be elaborate. One line that names what this version does is enough: 'add contact form route', 'fix login redirect', 'wire up Stripe webhook'. The point is that future you can read the history and understand what each checkpoint represents. Claude Code generates a lot of commits in a short window, so a readable history is genuinely useful, not just tidy.</p>
<ul><li>Commit before you explain a new problem to Claude. Starting a new task on a clean commit means you can always roll back to the last working state if the new task breaks something.</li><li>Commit after each meaningful unit of work: a working route, a resolved bug, a connected integration. Do not wait for the whole feature.</li><li>Commit before any refactor. Refactors have a way of touching more than you expect. A clean checkpoint before you ask Claude to reorganize anything is protection against scope creep in both directions.</li><li>Commit before you deploy. Never push uncommitted work. What lands in the repo is what Vercel or your host builds from, and silent WIP that never gets committed never goes live.</li></ul>
<h2>Branch per task: the clean-room approach</h2>
<p>The branch-per-task pattern is simple: every new task that Claude works on gets its own branch. Claude builds in it, you review the diff, and merging to main is a decision you make once the task is done and the diff looks right. The branch is a clean room for one piece of work.</p>
<p>This pattern matters especially when Claude is in auto mode or working through a longer task. If the work drifts in an unexpected direction, you can see the full diff in one place before anything touches main. You can also run parallel builds - a subagent working on the payment page and another working on the dashboard - without the two sets of changes colliding in a shared main branch.</p>
<blockquote><strong>TIP:</strong> Name branches the way you would name a commit: one short phrase that describes the task. 'feature/contact-form', 'fix/login-redirect', 'refactor/auth-middleware'. It only takes a second and makes the branch list readable when you have six of them open at once.</blockquote>
<p>When the task is done and you are happy with the diff, merge into main and delete the branch. If the task went sideways and you want to start over, delete the branch and open a new one. Nothing on main was touched. That is the clean-room property, and it is worth building the habit even on solo projects.</p>
<h2>How to review the diff before you merge</h2>
<p>The diff review step is the one most builders skip, and it is the most important one. Before you merge any branch, look at what actually changed. Not the description Claude gave you - the actual file-by-file changes. Claude does not always touch only the files it said it would, and a ten-second diff review catches that.</p>
<p>What you are looking for: files that should not have been touched, logic that looks different from what you discussed, any change that was not in scope for the task. You do not need to read every line. You are looking for surprises. Most of the time there are none. But the times there are, you will be glad you looked.</p>
<ul><li>In GitHub Desktop: click 'Changes' in the left panel to see every modified file. Click each file to see the line-by-line diff.</li><li>In the terminal: 'git diff main..your-branch' shows you every line that differs from main.</li><li>In VS Code: the Source Control panel shows changed files with a diff view for each.</li><li>In the Claude Code desktop app: the file change indicator next to each session shows you what was touched in the current conversation.</li></ul>
<h2>The four rules on every build</h2>
<p>These four rules came from the mistakes I made on early builds. They are simple enough to remember without a checklist, and they prevent the specific kinds of pain I ran into.</p>
<ol><li>Commit before you hand Claude a new problem. Every new task starts on a clean checkpoint. If the task breaks something, you can roll back without losing the work that came before.</li><li>Review the diff before you merge. Spend ten seconds looking at what actually changed, not just what Claude said it changed. Surprises are rare and catching them is free.</li><li>Never git add -A on a dirty tree. If your working directory has files from other tasks or experiments, staging everything at once risks committing unrelated WIP. Add specific files by name.</li><li>Write a one-line commit message that names the intent. 'Add contact form' is useful. 'Updates' is not. Your future self reads the history when something breaks; give it something to work with.</li></ol>
<p>None of these rules are complicated, and none of them slow the build down in any meaningful way. What they do is make the build recoverable. That is the whole point of git alongside Claude: you get the speed, and you get a safety net.</p>
<h2>Build without fear inside Claude Code Club</h2>
<p>Inside Claude Code Club we go deeper on this - looking at git worktrees for parallel builds, rebase strategies for AI-heavy histories, and the exact setup I use when Claude Code is running unattended overnight. If you want to build faster without the recovery panic, join us at [https://www.skool.com/claudecodeclub/about](https://www.skool.com/claudecodeclub/about) and bring your current build.</p>
<h2>FAQ</h2>
<p><strong>Should I commit every single change Claude Code makes?</strong></p><p>Not every individual change - every meaningful checkpoint. A working route, a passing test, a resolved bug: those are worth committing. A half-finished attempt or a file Claude touched on the way to something else is not. The question to ask is: would I be upset if I lost this right now? If yes, commit it.</p>
<p><strong>What if Claude Code breaks something and I want to undo it?</strong></p><p>If you committed before handing Claude the new task, you can roll back to that commit and the broken work is gone. This is the main reason to commit before every new task - it makes rollback a simple one-step action instead of a manual file-by-file recovery. In GitHub Desktop that is right-click on the commit and 'Revert'. In the terminal it is 'git revert' or 'git reset --hard' to the commit hash.</p>
<p><strong>Can I use a GUI like GitHub Desktop instead of the terminal?</strong></p><p>Absolutely. GitHub Desktop, Tower, and the VS Code source control panel all surface the same git operations as the terminal, just visually. The Claude Code desktop app works alongside any of them. The workflow above describes the logic - commit often, branch per task, review the diff - and you can implement all of it without opening a terminal.</p>
<p><strong>How do I handle merge conflicts when Claude Code changes the same files I did?</strong></p><p>The branch-per-task approach keeps this from happening on most projects, because each branch touches one set of files. If a conflict does come up - say you and Claude both touched the same component - resolve it like any merge conflict: open the conflicted file, read both versions, pick or combine the right lines, and commit the resolution. In GitHub Desktop the conflict resolution UI walks you through it. The key is that a conflict is a normal git event, not a crisis - the branch pattern just makes it rare.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code Memory Bank: Keep It in Context Across Every Session</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-memory-bank</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-memory-bank</guid>
      <pubDate>Fri, 31 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Workflows</category>
      <category>Building</category>
      <category>Getting Started</category>
      <description><![CDATA[Claude Code does not remember your project between sessions by default. Every new conversation starts from scratch. The memory bank changes that - here is how to use CLAUDE.md and a few supporting files to give Claude permanent context on any project.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Claude Code does not remember your project between sessions by default. Every time you open a new conversation, you are starting fresh. The memory bank is how you fix that.</li><li>The CLAUDE.md file is the core of the memory bank. Claude reads it at the start of every session, so anything you put there - your stack, your rules, your current goals - is available from the first message without any re-explaining.</li><li>Three things that belong in every CLAUDE.md: what the project is and what stack it uses, the standing rules Claude should follow on this project, and the current state of what you are building so you never have to give Claude a five-minute briefing to start work.</li></ul>
<h2>The memory problem in Claude Code</h2>
<p>Here is the frustrating thing about working with Claude Code on a real project: every time you open a new session, Claude has no idea what you were building. Your stack, your naming conventions, your current progress, the thing you were halfway through last night - none of that exists in the new conversation. You start from scratch every single time.</p>
<p>On a one-hour project that does not matter. On a two-week build it becomes the biggest friction point. You spend the first ten minutes of every session re-explaining context, Claude makes decisions based on incomplete information, and you end up correcting things it would have gotten right if it had just known more about the project upfront. The memory bank is the solution to that problem.</p>
<blockquote><strong>NOTE:</strong> The memory bank is not a Claude Code feature in a settings menu. It is a file convention you set up yourself. The key file is CLAUDE.md, a plain text file in your project root that Claude reads automatically at the start of every session.</blockquote>
<h2>What CLAUDE.md does</h2>
<p>CLAUDE.md is a file you create in the root of your project directory. When you open Claude Code on that project, it reads this file before your first message. Everything in the file becomes context for the session - so if you wrote down that the project uses Next.js, the database is Supabase, and file names should be lowercase with hyphens, Claude knows all of that without you saying a word.</p>
<p>The effect is immediate and obvious. The first message in a session with a well-written CLAUDE.md feels like picking up with a collaborator who was with you yesterday. The first message in a session without one feels like briefing a contractor who just walked in. Both get the work done, but one costs you ten minutes of re-orientation every time.</p>
<h2>Three things that belong in every CLAUDE.md</h2>
<p>You do not need an elaborate CLAUDE.md to get most of the value. These three sections cover the majority of what makes re-orientation expensive, and you can write them in under ten minutes.</p>
<ol><li>Project description and stack. Two to four sentences: what the project does, who uses it, what framework it is built on, and what database or backend it connects to. This single block prevents dozens of wrong assumptions per session.</li><li>Standing rules. The project-specific things Claude keeps getting wrong or that are important to get right: file naming conventions, which files are read-only, how errors should be handled, whether to write TypeScript strictly or loosely, which testing library to use. These are the rules you keep repeating - write them once here.</li><li>Current state. A short note on what is built and what you are working on right now. Update this when the current task changes. It is the difference between 'we just finished the auth flow, now we are wiring up the dashboard' and having Claude re-ask where you are every single session.</li></ol>
<blockquote><strong>TIP:</strong> Start your CLAUDE.md today even if the project is young. A few sentences now saves significant re-orientation over the life of the build. You can always add more sections as you discover what Claude keeps getting wrong or what you keep having to re-explain.</blockquote>
<h2>The sub-memory pattern: splitting context across files</h2>
<p>On larger projects, one CLAUDE.md can get unwieldy. There is a limit to how much context is useful in a single file before it becomes noise. The sub-memory pattern solves this: keep the main CLAUDE.md for always-relevant context, and create additional memory files in subdirectories for component-specific or module-specific rules.</p>
<p>For example: a main CLAUDE.md at the project root with the stack and global rules. A second CLAUDE.md inside the /api directory with notes specific to the API layer. A third inside /components with the component naming conventions and design system references. Claude reads the CLAUDE.md files relevant to the files it is working in, so the context stays focused on what matters for the current task.</p>
<ul><li>Root CLAUDE.md: project description, stack, global rules, current state.</li><li>Directory CLAUDE.md files: rules specific to that part of the codebase - API conventions, component patterns, database schema notes.</li><li>Keep each file short and specific. A 30-line CLAUDE.md that is always relevant beats a 300-line one that mixes context Claude does not need for the current task.</li></ul>
<h2>The live notebook: updating memory as the project grows</h2>
<p>The memory bank is not set-and-forget. It is most useful when you treat it as a live document - updating the current state section as you finish tasks, adding rules when you find something Claude keeps getting wrong, removing stale notes that no longer apply. The fifteen seconds it takes to update the current state at the end of a session saves several minutes at the start of the next one.</p>
<p>A specific habit that pays off: when Claude makes a mistake and you correct it, ask yourself if that correction should go into CLAUDE.md as a standing rule. If Claude keeps confusing your auth middleware pattern, write the rule. If it keeps generating component names in PascalCase when you want kebab-case files, write the rule. The memory bank gets more valuable with every project rule you add to it.</p>
<blockquote><strong>TIP:</strong> At the end of each session, spend sixty seconds updating the current state line in CLAUDE.md. 'Finished the contact form route, next task is wiring the email notification.' That one sentence is worth more context than five minutes of re-orientation the next day.</blockquote>
<h2>Build longer, better projects inside Claude Code Club</h2>
<p>We cover the full memory bank setup in the curriculum - including the exact CLAUDE.md templates I use for different project types, how to handle memory for subagent tasks, and the patterns that keep Claude accurate on long multi-week builds. Join us at [https://www.skool.com/claudecodeclub/about](https://www.skool.com/claudecodeclub/about) and bring your current project.</p>
<h2>FAQ</h2>
<p><strong>How big can CLAUDE.md be before it stops working?</strong></p><p>There is no hard technical cap, but practical experience shows that shorter, more focused CLAUDE.md files work better than long ones. Context you add has to be read and processed, and a 500-line CLAUDE.md full of outdated rules and notes is less useful than a 50-line one with current, relevant information. If your CLAUDE.md is getting long, apply the sub-memory pattern: move module-specific context into subdirectory CLAUDE.md files and keep the root one focused on the things that apply everywhere.</p>
<p><strong>Does CLAUDE.md work in both the desktop app and the terminal?</strong></p><p>Yes. CLAUDE.md is read by Claude Code regardless of whether you are using the desktop app or the CLI. Both read the file from the project root when a session starts on that project. The desktop app is the recommended starting point because it surfaces the project context in a way that is easier to see, but the memory bank works identically in both.</p>
<p><strong>Can I have different CLAUDE.md files for different projects?</strong></p><p>Yes - each project has its own CLAUDE.md in its own directory, and Claude reads whichever one corresponds to the project you are working in. Your projects do not share a single CLAUDE.md. This is actually one of the main advantages: each project's memory is completely independent, so a rule you add for one project never bleeds into another.</p>
<p><strong>What is the difference between CLAUDE.md and the system prompt inside the app?</strong></p><p>The system prompt in the Claude Code desktop app (the instructions you can add in project settings) and CLAUDE.md serve a similar purpose but at different scopes. The system prompt applies to that project in the app on your machine. CLAUDE.md lives in the project directory and gets committed to git, so it travels with the project and applies to anyone - or any machine - that opens the project in Claude Code. For solo builds they are equivalent. For team builds or anything that moves between machines, CLAUDE.md is the right choice because it goes where the code goes.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code Environment Variables: How to Keep Your API Keys Safe</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-environment-variables</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-environment-variables</guid>
      <pubDate>Thu, 30 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Security</category>
      <category>Building</category>
      <category>Claude Code</category>
      <category>Workflows</category>
      <description><![CDATA[The right way to manage .env files with Claude Code is to keep secrets out of the conversation entirely. Set up your environment variables before the session starts, reference them by name in prompts, and never paste a live key into the chat. Here is the Safe Env Pattern I use on every project.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Never paste a real API key into a Claude Code prompt - reference it by name instead and let the running process read it from your .env file. The key never touches the conversation.</li><li>The Safe Env Pattern is a three-step setup: write the .env file yourself before the session, add it to .gitignore immediately, and only tell Claude Code the variable names it needs - not the values.</li><li>Claude Code can read, write, and check your environment just fine without ever seeing the actual secrets. Your job is to build the env before you open the chat.</li></ul>
<h2>The Short Answer on Claude Code Environment Variables</h2>
<p>Managing environment variables with Claude Code is straightforward once you know the rule: Claude Code reads from your running process environment, not from values you type into the chat. That means you set up your .env file yourself before the session, tell Claude Code the names of the variables it should expect, and never paste a real key into the conversation. The secret stays in the file. The chat only ever sees the name.</p>
<p>The problem most people run into is that they describe their setup to Claude Code and, in the process of explaining what is not working, they paste the actual key value into the prompt. That key is now in your conversation history, which is stored and synced. Even if you delete the message on your end, the exposure already happened. The fix is upstream - build the habit of treating the conversation as public before you ever open it.</p>
<blockquote><strong>WARNING:</strong> A live API key in a Claude Code prompt is a live API key in a conversation log. Treat the chat window like a Slack message to a public channel - fine for names and variable references, never for actual values.</blockquote>
<h2>The Safe Env Pattern - A Three-Step Setup</h2>
<p>The Safe Env Pattern is the system I use at the start of every new Claude Code project. It takes about two minutes and eliminates the main category of key-leakage accidents. The three steps are: write the file yourself, protect it immediately, and reference by name only.</p>
<ol><li>Write the .env file yourself - before you open Claude Code. Open your terminal, create the .env file manually, and paste your keys in directly. Claude Code should never be the thing that writes your actual secret values into that file.</li><li>Add .env to .gitignore immediately - in the same terminal session, before you do anything else. If you push to git before the .gitignore is in place, the key is already in your history and you need to rotate it. Do not rely on remembering this step later.</li><li>Reference by name only in prompts - when you tell Claude Code about your environment, say 'the app expects an OPENAI_API_KEY environment variable' not 'here is the key: sk-...' Claude Code can scaffold code that reads process.env.OPENAI_API_KEY perfectly well without knowing the value.</li></ol>
<blockquote><strong>TIP:</strong> If you use a secrets manager like Doppler or 1Password CLI, you can go further - inject secrets at runtime with 'doppler run -- npm run dev' and the value never touches a flat file at all. Claude Code works with whatever the shell environment provides.</blockquote>
<h2>What Claude Code Actually Needs to Work With Your Env</h2>
<p>Claude Code does not need to see your secrets to work with them. What it needs is the name of the variable, the shape of the value (API key, URL, boolean flag), and where in your code it should be consumed. With those three things, Claude Code will write correct code that reads the variable at runtime without ever needing the value itself in the conversation.</p>
<p>A good way to give Claude Code what it needs is to share a .env.example file - a copy of your .env with placeholder values like 'your-key-here' instead of real ones. Most projects should have this file committed to the repo anyway as documentation. Paste the .env.example into the chat, and Claude Code has all the context it needs: variable names, expected shape, and any required/optional notes you have added as comments.</p>
<blockquote><strong>NOTE:</strong> A committed .env.example is both a safety signal and a collaboration tool. It documents your environment contract without exposing any real values. Make it a habit to keep it updated as new variables are added.</blockquote>
<h2>The Most Common Mistake - Describing a Broken Setup Out Loud</h2>
<p>The most common env mistake I see is not technical - it is conversational. Someone's API call is failing, and they go to Claude Code to debug it. In the process of explaining the problem, they paste the failing request including the Authorization header with the live key right in the chat. Claude Code diagnoses the issue, but now the key is in the conversation.</p>
<p>The right way to debug an env problem with Claude Code is to describe the error without the value. Share the error message, the code that reads the variable, and a check like 'console.log(process.env.API_KEY ? &quot;exists&quot; : &quot;missing&quot;)'. Claude Code can walk through every possible failure mode - missing .env, wrong variable name, value not being loaded, wrong scope - without you ever putting the actual secret in the chat.</p>
<ul><li>Share the error output, not the request with auth headers attached</li><li>Share the code that reads the variable, not the variable itself</li><li>Share the .env.example to confirm the expected variable name</li><li>If you must confirm the value is present, log a boolean - not the value</li></ul>
<h2>How to Load .env Files So Claude Code Can Help Debug Them</h2>
<p>Claude Code runs inside your shell environment, which means it sees whatever environment variables are already loaded when you start the session. In most Node.js projects, that means you need a library like dotenv to load the .env file into process.env before your code runs. Claude Code can set this up for you - just tell it you need dotenv configured and describe your project structure.</p>
<p>For projects where you want Claude Code to be able to run commands that need the environment, the cleanest pattern is to source your .env in a script that Claude Code can call. Something like a dev.sh that loads the env and starts the process. Claude Code can write and modify that script without touching the .env file itself. The boundary stays clear: you own the secrets file, Claude Code owns the code that uses it.</p>
<blockquote><strong>TIP:</strong> If you are using the Claude Code desktop app, open a new terminal tab, source your .env, and then start Claude Code from that same shell. Your variables will already be in the environment and Claude Code can read them via shell commands without you doing anything else.</blockquote>
<h2>Multiple Environments - Dev, Staging, and Production</h2>
<p>Once you have more than one environment - local development, a staging server, and production - the Safe Env Pattern extends naturally. You maintain separate files: .env.local, .env.staging, .env.production. Claude Code helps you write the config loading logic that selects the right file based on a NODE_ENV flag or equivalent. You populate the files yourself. The pattern stays the same.</p>
<p>The most important rule across multiple environments is that production keys never appear on development machines or in development sessions. If you are debugging something in Claude Code and you reach for a production key to test with - stop. Rotate a fresh key for development use and keep it scoped to only the permissions your dev workflow actually needs. This is not Claude Code-specific; it is just good key hygiene, and Claude Code sessions make it easier to enforce because the boundary between your chat and your production environment is already explicit.</p>
<blockquote><strong>WARNING:</strong> Never use a production API key in a development Claude Code session. Scope dev keys to dev permissions and use separate values for each environment. If a dev session leaks, a scoped key limits the blast radius.</blockquote>
<h2>Join the Club - Build Faster and Safer</h2>
<p>The Safe Env Pattern is one piece of the foundation we teach inside the Claude Code Club. Members get full step-by-step workflows for setting up real projects with Claude Code - including environment setup, git hygiene, and the patterns that prevent the most common and most expensive mistakes.</p>
<blockquote><strong>TIP:</strong> Join the Claude Code Club for $9/month at claudecodeclub.ai and get the complete build workflow - from environment setup to your first shipped project.</blockquote>
<h2>FAQ</h2>
<p><strong>Can Claude Code read my .env file directly?</strong></p><p>Claude Code can read a .env file if you give it permission to access the file system in your project directory. The safer approach is to load the .env into your shell environment before starting the session, so the variables are already available as process environment variables and Claude Code never needs to open the file itself.</p>
<p><strong>What should I do if I accidentally pasted a real API key into a Claude Code prompt?</strong></p><p>Rotate the key immediately - go to the API provider's dashboard and revoke the exposed key and generate a new one. Do not wait to check whether it was actually used. Treat the old key as compromised the moment it appeared in the conversation. Then set up the Safe Env Pattern so the same mistake cannot happen again.</p>
<p><strong>Does Claude Code store my conversation history including any keys I typed?</strong></p><p>Claude Code conversations are processed by Anthropic's API, which means anything you type into a prompt is transmitted to and processed by their servers. Anthropic's usage policies govern retention and use of that data. The practical rule is simple: never type a secret into the chat. Reference variable names only and keep the values in your local .env file where they belong.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code Parallel Agents: How to Run Multiple Sessions at Once</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-parallel-agents</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-parallel-agents</guid>
      <pubDate>Thu, 30 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Workflows</category>
      <category>Productivity</category>
      <category>Claude Code</category>
      <category>Advanced</category>
      <description><![CDATA[Running parallel Claude Code agents means deliberately opening two or more sessions to work on separate tasks simultaneously - not waiting for one to finish before starting the next. The Fork Method is the system I use to decide when to split work across sessions and how to keep them from colliding.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Claude Code parallel agents means running two or more separate sessions at the same time, each working on a different task - this is different from subagents that Claude Code spawns internally during a single session.</li><li>The Fork Method is the decision framework: split into parallel sessions when tasks are independent and touch different files; keep it sequential when tasks share state, a schema, or the same files.</li><li>Git worktrees are the cleanest way to run parallel Claude Code sessions safely - each session gets its own working directory and branch so there are no file conflicts.</li></ul>
<h2>What Claude Code Parallel Agents Actually Means</h2>
<p>Claude Code parallel agents refers to running multiple Claude Code sessions simultaneously, with each session working on a separate workstream. You open two windows, start two sessions, and both are making progress at the same time. This is distinct from the subagents that Claude Code can spawn internally during a complex task - those are automatic and happen within one session. Parallel agents is a deliberate choice you make when you have two things that can be built at the same time without getting in each other's way.</p>
<p>The value is compounded when you have independent tasks. If you need a new API route built and a new UI component built and neither depends on the other yet, there is no reason to wait. Run them in parallel and you finish both in the time it would have taken to finish one. The constraint is isolation - the two sessions cannot be editing the same files, or you will create conflicts that take longer to resolve than the time you saved.</p>
<blockquote><strong>NOTE:</strong> The desktop app version of Claude Code makes parallel sessions easy - open a second window and you have a second independent agent. Each one maintains its own context and its own conversation history. Neither knows the other exists.</blockquote>
<h2>The Fork Method - When to Split and When to Stay Sequential</h2>
<p>The Fork Method is the decision framework I use before starting any multi-part build to figure out whether work should run in parallel or in sequence. The question is not just 'can these run at the same time?' - it is 'will they step on each other?' If the answer is no, fork. If yes, sequence.</p>
<ul><li>Fork (run in parallel) when: tasks touch completely separate files and directories, tasks do not share a data schema or API contract that is still being defined, both tasks have clear enough specs that they will not need to reconcile partway through, and you have enough context in your head to manage two running sessions.</li><li>Keep sequential when: one task depends on output from the other, both tasks modify a shared schema file or shared utility, the feature requires the tasks to be coordinated on a contract that is still evolving, or you are still exploring the design and a decision in one session will change the direction of the other.</li><li>The tell-tale sign you forked too early is when both sessions start modifying the same file and you get a merge conflict. If that happens, the right move is to close one session, resolve the conflict on the canonical branch, then restart the second session with the resolved state.</li></ul>
<blockquote><strong>TIP:</strong> A fast heuristic: if you could hand the task to two different developers and they would not need to talk to each other to finish it, you can fork it into two parallel sessions.</blockquote>
<h2>Git Worktrees - The Clean Way to Run Parallel Sessions</h2>
<p>Git worktrees are the infrastructure layer that makes Claude Code parallel agents safe and conflict-free. A worktree lets you check out a second branch of the same repository into a completely separate directory - so you have two copies of the codebase on disk at the same time, each on its own branch. You point one Claude Code session at the first directory and a second session at the second directory. They read and write completely independently.</p>
<p>To create a worktree, run 'git worktree add ../project-feature-b feature-b' from your main project directory. This creates a new directory called project-feature-b with the feature-b branch checked out. Open Claude Code there and start the second workstream. When both are done, merge the branches normally - any conflicts are real logical conflicts, not accidental file collisions from two sessions stepping on each other.</p>
<blockquote><strong>TIP:</strong> Name your worktree directories clearly - something like project-name-auth-work and project-name-ui-work. When you have two terminal tabs open, you want to know at a glance which session you are looking at.</blockquote>
<h2>Running Parallel Sessions Without Worktrees - Risks and When It Is Fine</h2>
<p>You can run two Claude Code sessions in the same working directory without worktrees, but it requires more discipline. Both sessions see the same files. If session A is building out a new module and session B is only working in a completely separate part of the codebase - different directories, different files - the risk is low and you can skip the worktree overhead. The rule is: if either session could plausibly touch a file the other is touching, use a worktree.</p>
<p>Where this pattern works cleanly without worktrees is tasks at different abstraction levels. Session A builds the backend endpoint. Session B writes the documentation and the README for a different feature entirely. They are never going to conflict because they are in different files. Session A owns the code, session B owns the markdown. No worktree needed, no collision risk.</p>
<blockquote><strong>WARNING:</strong> Two sessions in the same directory both generating code is the high-risk configuration. If in doubt, use a worktree. The setup takes two minutes. Resolving a messy conflict caused by two agents editing the same file takes much longer.</blockquote>
<h2>Using Claude Code's Built-In Subagent Dispatch for Parallelism</h2>
<p>Claude Code has a built-in mechanism for dispatching parallel work from within a single session: it can spawn subagents to handle concurrent tasks when it determines a problem can be parallelized. You do not need to manage this manually - Claude Code figures out when to use it. But you can encourage it by structuring your prompts to make the independence of tasks explicit.</p>
<p>If you tell Claude Code 'build these three components - they are independent of each other, none of them share a file', it will recognize that parallelism is available and may dispatch them as concurrent subtasks. The result comes back faster than if it had done them sequentially. This is different from the two-session Fork Method - it is parallelism within one session, managed by Claude Code itself, not by you opening multiple windows.</p>
<blockquote><strong>NOTE:</strong> Built-in subagent dispatch and the Fork Method are complementary tools. Use internal dispatch for tasks that are small enough to stay in one context window. Use the Fork Method for tasks large enough that each one needs its own full session.</blockquote>
<h2>Recombining the Work - How to Merge Parallel Sessions</h2>
<p>The merge step is where parallel sessions pay off or cost you. If you used worktrees and the tasks were genuinely independent, merging is clean - you merge two branches that never touched the same lines of code. If you did not use worktrees and there are conflicts, you work through them the same way you would any git merge: look at each conflict, decide which version wins or how to combine them, and commit the resolution.</p>
<p>One habit that makes the merge step easier is having each parallel session commit frequently with descriptive messages. When you are looking at a merge conflict, knowing that 'session A last committed auth middleware' and 'session B last committed the user list component' gives you immediate context for what each side of the conflict is trying to accomplish. Small commits are always good practice - in parallel session workflows they become essential.</p>
<blockquote><strong>TIP:</strong> Before you start a parallel session, write a one-line description of exactly what it owns. Pin it at the top of the conversation as the first prompt. When the session finishes, that description becomes the PR title.</blockquote>
<h2>Join the Club - Get the Full Parallel Build Workflow</h2>
<p>The Fork Method is one part of the broader Claude Code workflow system taught inside the Claude Code Club. Members get the complete playbook for structuring multi-session builds, managing worktrees, and shipping faster without creating merge chaos.</p>
<blockquote><strong>TIP:</strong> Join the Claude Code Club for $9/month at claudecodeclub.ai and get every workflow from environment setup to parallel builds to shipping finished products.</blockquote>
<h2>FAQ</h2>
<p><strong>Can two Claude Code sessions share the same conversation context?</strong></p><p>No - each Claude Code session maintains its own independent conversation history and context window. Two parallel sessions do not communicate with each other. That is part of what makes them safe to run concurrently: they cannot interfere at the conversation level. They can only interfere at the file system level if they are working in the same directory without worktree isolation.</p>
<p><strong>How many parallel Claude Code sessions can I run at once?</strong></p><p>There is no hard cap imposed by Claude Code itself - you are limited by your machine's resources and by your own ability to manage context across multiple running conversations. In practice, two to three parallel sessions is the practical ceiling for most builders. Beyond that, the overhead of context-switching between sessions starts to outweigh the time saved from parallelism.</p>
<p><strong>Is the Fork Method only for git projects?</strong></p><p>Git worktrees require git, but the Fork Method as a decision framework applies to any parallel work. Even without worktrees, the core question - are these tasks independent enough that they will not collide - is useful any time you are deciding whether to start a second session. Git just provides the cleanest infrastructure for making that independence concrete at the file-system level.</p>]]></content:encoded>
    </item>
    <item>
      <title>The Claude Code Memory Bank: How to Keep Context Across Every Session</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-memory-bank</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-memory-bank</guid>
      <pubDate>Wed, 29 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Workflows</category>
      <category>Building</category>
      <description><![CDATA[Claude Code forgets everything when a session ends. The Memory Bank is a two-file system that gives it persistent context, so every new session starts informed instead of blank. Here is how to set one up in ten minutes.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Claude Code does not remember previous sessions by default - every new window starts with zero context.</li><li>A Memory Bank is a structured file Claude reads at the start of every session to restore context without you re-explaining it.</li><li>Two files and one habit are all you need: a project.md for the current state and a decisions.md for the reasoning behind key choices.</li></ul>
<h2>Why Claude Code forgets - and why that is not a flaw</h2>
<p>The Claude Code Memory Bank is the fastest fix for the most common builder frustration: you close a session, open a new one the next day, and Claude has no idea what you built yesterday. Every conversation starts blank. This is not a bug. Claude Code works in context windows - it processes everything you tell it in one session, but when the session ends, so does its memory. The model itself retains nothing between runs.</p>
<p>For small scripts and one-off tasks this is fine. For anything with real scope - a product you are iterating on, a client codebase, a set of design decisions that took three conversations to land - re-establishing context every morning is a real cost. The Memory Bank solves this by keeping that context in a file Claude can read instead of making you retype it.</p>
<blockquote><strong>NOTE:</strong> The Memory Bank works with the desktop app and the terminal. It does not require any special Claude Code settings. It is just a file you maintain and a line in your CLAUDE.md that tells Claude to read it.</blockquote>
<h2>What a Memory Bank actually is</h2>
<p>A Memory Bank is a plain markdown file - or a small set of files - that lives in your project directory and contains the information Claude needs to work effectively from the first message of a new session. Think of it as a handoff doc written by yesterday's you for today's Claude.</p>
<p>The reason it works is that Claude Code reads your project directory when you start a session. If you reference the Memory Bank files in your CLAUDE.md, Claude picks them up automatically. You do not have to paste context in manually every time.</p>
<ul><li>It captures decisions that are not obvious from the code itself - why a certain approach was chosen, what was tried and rejected.</li><li>It carries the current state of open work - what is done, what is in progress, what is waiting.</li><li>It holds preferences and constraints - tech stack choices, style rules, client-specific requirements.</li></ul>
<h2>The two files every Memory Bank needs</h2>
<p>After running this system across a dozen active projects, two files carry almost all the value. One file for the current state, one file for the reasoning.</p>
<table><thead><tr><th>File</th><th>What goes in it</th><th>How often updated</th></tr></thead><tbody><tr><td>memory/project.md</td><td>Current state: what is built, what is in progress, what comes next. Written in plain present-tense sentences.</td><td>After every significant session - 5 minutes maximum.</td></tr><tr><td>memory/decisions.md</td><td>Reasoning log: key choices made, alternatives rejected, constraints discovered. One short entry per decision.</td><td>When you make a choice worth remembering - not every session.</td></tr></tbody></table>
<p>Some builders add a third file for client-specific context or repeated reference material. Start with two and add more only when you feel a clear gap.</p>
<h2>How to set up your Memory Bank in ten minutes</h2>
<p>Open Claude Code and navigate to your project. Create two files in the root: memory/project.md and memory/decisions.md. Then add a single instruction to your CLAUDE.md file pointing at them.</p>
<blockquote><strong>TIP:</strong> In your CLAUDE.md, add a line like: 'At the start of every session, read memory/project.md and memory/decisions.md to restore project context.' This makes Claude pull the files before doing anything else.</blockquote>
<p>Fill project.md with the current state of your project. Three sections cover most cases: what exists and works, what is currently being built, and what comes next. Keep sentences short and factual. This is a status snapshot, not a design doc.</p>
<p>Fill decisions.md with choices you have already made that future Claude should not revisit. Include the decision, a one-sentence rationale, and the date. Example entry: 'Using Supabase for auth - 2026-07-15. Chose over Clerk because we already have a Supabase project for the database and did not want a second vendor.'</p>
<h2>The three habits that keep it working</h2>
<p>The Memory Bank only stays useful if you update it. Three habits keep it accurate without becoming a maintenance burden.</p>
<ol><li>End-of-session update: before you close Claude, spend two minutes updating project.md to reflect what changed. What moved from in-progress to done, what new work opened up.</li><li>Decision logging: when you make a real choice - a tech decision, a scope change, a rejected approach - write one line in decisions.md immediately. Two sentences maximum.</li><li>Monthly review: once a month, read both files and remove anything that is no longer true. An accurate slim file beats an exhaustive stale one.</li></ol>
<p>The end-of-session update also acts as a forcing function to close out work clearly. It is harder to write 'the auth flow is done' if it is not quite done. Builders inside the Club who run this system say it surfaces incomplete work they would have forgotten.</p>
<h2>Join Claude Code Club</h2>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club, members share their Memory Bank setups, CLAUDE.md templates, and the context tricks that actually save time on real projects. If you want to build faster with Claude Code alongside people doing serious work, join at claudecodeclub.ai.</blockquote>
<h2>FAQ</h2>
<p><strong>Does Claude Code have built-in memory?</strong></p><p>Not between sessions. Within a session, Claude holds everything in its context window. Once you close and reopen, the context resets. The Memory Bank system fills that gap with a structured file Claude reads at the start of each new session.</p>
<p><strong>What is the difference between a Memory Bank and CLAUDE.md?</strong></p><p>CLAUDE.md is for instructions and preferences about how Claude should work. The Memory Bank is for the current state of your project - what is built, what is in progress, what decisions have been made. Both can live in the same project, and CLAUDE.md can tell Claude to read the Memory Bank files.</p>
<p><strong>Does the Memory Bank slow Claude down?</strong></p><p>Only marginally. Reading two short markdown files adds a few seconds to the first message of a session. The time saved re-explaining context far outweighs it, especially on projects you return to regularly.</p>
<p><strong>Can I use the Memory Bank across multiple projects?</strong></p><p>Yes. Each project gets its own memory directory. The CLAUDE.md in that project points to its own files. There is no cross-project bleed.</p>
<p><strong>What should I not put in the Memory Bank?</strong></p><p>Passwords, API keys, or any secrets. The Memory Bank files are plain text read into Claude's context. Store secrets in environment variables or a secrets manager, not in files Claude reads.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code vs GitHub Copilot: An Honest Comparison for Builders</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-vs-github-copilot</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-vs-github-copilot</guid>
      <pubDate>Wed, 29 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Claude Code</category>
      <category>Tools</category>
      <category>Agency</category>
      <description><![CDATA[Claude Code and GitHub Copilot solve different problems. Copilot autocompletes inside your editor; Claude Code thinks through entire builds end-to-end. Here is an honest look at what each one is actually for, where each wins, and which to use if you are a non-technical builder or agency owner.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>GitHub Copilot is an autocomplete tool that assists developers as they write code. Claude Code is an agentic tool that builds, reasons, and executes across your entire project.</li><li>For non-technical builders, Claude Code wins clearly - Copilot assumes you already know how to code.</li><li>For agency work and client builds, Claude Code handles the full task loop; Copilot speeds up a developer who is already writing the code themselves.</li></ul>
<h2>Claude Code vs GitHub Copilot: the one-sentence answer</h2>
<p>Claude Code vs GitHub Copilot is not a close race for most people reading this. GitHub Copilot is an autocomplete assistant for developers who are already writing code in an editor like VS Code. Claude Code is an agentic tool that takes a goal, plans a sequence of steps, writes files, runs commands, and delivers a working result - without you needing to know what code to write.</p>
<p>If you are a developer who wants to write code faster with smart suggestions, Copilot has a clear use case. If you are a builder, agency owner, or non-technical founder who wants to create real software from a description, Claude Code is the right tool. They solve different problems, and the comparison only matters when you are deciding where to spend time and money.</p>
<h2>What each tool actually does</h2>
<table><thead><tr><th></th><th>Claude Code</th><th>GitHub Copilot</th></tr></thead><tbody><tr><td>What it is</td><td>An AI agent that reasons, plans, and builds end-to-end</td><td>An in-editor autocomplete assistant for developers</td></tr><tr><td>How you use it</td><td>Give it a goal in the desktop app or terminal; it figures out the steps</td><td>Write code yourself; it suggests completions as you type</td></tr><tr><td>Who it is for</td><td>Builders, agency owners, non-technical founders, developers doing agentic work</td><td>Developers who already know how to code and want to move faster</td></tr><tr><td>Context it sees</td><td>Your whole project - files, structure, git history</td><td>Primarily the file currently open in your editor</td></tr><tr><td>Output</td><td>Complete working features, fixes, migrations</td><td>Code suggestions and completions within the editor</td></tr></tbody></table>
<h2>Which is better for non-technical builders</h2>
<p>Claude Code wins clearly for non-technical builders. GitHub Copilot assumes you are already in a coding environment, already reading code, and already deciding what to type next. If you do not have that background, Copilot gives you nothing - it cannot help you describe what you want, plan the approach, or know whether a suggestion is correct.</p>
<p>Claude Code is different in kind. You describe the thing you want to build in plain language. Claude plans the approach, asks clarifying questions if needed, writes the files, and shows you the result. You review, not code. That is the workflow that makes software accessible to people who are not developers, and it is why Claude Code has become the primary tool for the builder community.</p>
<blockquote><strong>TIP:</strong> If you are new to Claude Code, start with the desktop app. No terminal, no setup beyond installing the application. Describe what you want to build and watch it plan the first steps before you commit to anything.</blockquote>
<h2>Which is better for agency work</h2>
<p>For agency work and client builds, Claude Code handles the full task loop in a way Copilot cannot. When I scope and deliver a client build, I need a tool that can hold the full context of the project, plan what needs to happen across multiple files, and execute changes without me manually directing every step. Claude Code does that.</p>
<p>The practical advantage for agencies is speed of delivery. A tool that autocompletes lines of code speeds up a developer. A tool that can take a brief and produce a working first version in one session changes what is possible in a client timeline. The billing model also matters: Claude Code runs on Anthropic plans rather than a separate IDE add-on subscription.</p>
<p>The other factor is client communication. When a client asks what changed, Claude Code produces summaries and explanations you can share directly. Copilot operates invisibly inside your editor and produces no artifact the client ever sees.</p>
<h2>When Copilot still wins</h2>
<p>GitHub Copilot still wins for developers who live in their editor and write code continuously. If your workflow is opening VS Code and writing code for four hours straight, Copilot's in-line suggestions reduce keystrokes and catch repetitive patterns faster than any other tool right now.</p>
<p>For teams where every engineer already has a Copilot license included in an enterprise GitHub plan, the incremental cost is zero. In that context, using both tools makes sense: Copilot for line-by-line work inside the editor, Claude Code for the larger goal-directed tasks where you hand over a whole feature or migration.</p>
<h2>Join Claude Code Club</h2>
<blockquote><strong>NOTE:</strong> If you are trying Claude Code for the first time or looking to go deeper, Claude Code Club is the community where builders share exactly what works. Join at claudecodeclub.ai for $9 a month.</blockquote>
<h2>FAQ</h2>
<p><strong>Can I use Claude Code and GitHub Copilot at the same time?</strong></p><p>Yes. They operate independently. Copilot works inside your editor at the line level; Claude Code runs as a separate tool taking goal-level instructions. Some developers use Copilot for in-editor work and Claude Code for larger agentic tasks. The overlap is minimal.</p>
<p><strong>Is Claude Code free?</strong></p><p>Claude Code is available through Anthropic's Claude plans. The desktop app is the easiest way to start. Check Anthropic's current pricing for what is included in each plan tier.</p>
<p><strong>Does GitHub Copilot work without a developer?</strong></p><p>No. Copilot requires a developer at the keyboard making decisions. It autocompletes; it does not plan, reason, or build. If you are not already writing the code, Copilot has nothing to complete.</p>
<p><strong>Which is better for beginners?</strong></p><p>Claude Code by a wide margin. Copilot expects you to already be writing code in an editor. Claude Code expects you to describe what you want. For people learning to build with AI tools, the difference is significant.</p>
<p><strong>Can Claude Code replace a developer entirely?</strong></p><p>For many types of builds, yes - especially tools, automations, simple web apps, and API integrations. Claude Code handles these end-to-end with minimal technical input. Complex system architecture, performance-critical infrastructure, and production debugging still benefit from experienced developers.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Build a Next.js App with Claude Code (From Zero to Deployed)</title>
      <link>https://www.claudecodeclub.ai/blog/build-a-nextjs-app-with-claude-code</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/build-a-nextjs-app-with-claude-code</guid>
      <pubDate>Wed, 29 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Building</category>
      <category>Claude Code</category>
      <category>Getting Started</category>
      <description><![CDATA[You can build a real Next.js app with Claude Code from the desktop app, no terminal expertise required. Here is the Next.js Build Loop I use to go from a blank project folder to a live URL in a single working session.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>You can build a complete Next.js app with Claude Code from the desktop app - no terminal expertise needed. Describe what you want, let Claude Code scaffold the project and install dependencies, then iterate page by page until it looks right.</li><li>The fastest path is a clear one-sentence description of what the app does, followed by page-by-page iteration. One page at a time gives you clean control and avoids drift.</li><li>Deploying is the same conversation - describe Vercel as the target and Claude Code walks you through connecting the project and getting a live URL.</li></ul>
<h2>What Claude Code Does When You Ask for a Next.js App</h2>
<p>Claude Code scaffolds the Next.js project, installs the dependencies, creates the pages and components you describe, wires up routing between them, and outputs a working app you can open in your browser. You interact through the desktop app - describe what you want in plain English and Claude Code handles the code. You do not need to understand React or TypeScript to get a working build.</p>
<p>Next.js is a React framework built for production. It handles routing, server-side rendering, and deployment configuration automatically. Claude Code knows the framework conventions well - you can ask for a marketing site, a dashboard, a portfolio, or a multi-page tool and it will build it to Next.js standards without you specifying a file structure.</p>
<blockquote><strong>TIP:</strong> Open a new empty project folder before your first message. Claude Code scaffolds everything inside that folder, so you see the files appear as the build happens.</blockquote>
<h2>The Next.js Build Loop - Scaffold, Style, Deploy</h2>
<p>The Next.js Build Loop is the three-phase pattern I use to go from a blank folder to a live URL without leaving the conversation. Every build follows this shape: scaffold the structure in one message, iterate on pages one at a time, then close with a deploy prompt. Staying in order keeps the build clean and avoids the drift that comes from jumping between phases.</p>
<ol><li>Phase 1 - Scaffold. Send one message describing the app: what it does, what pages it needs, and the rough layout of each. Claude Code installs Next.js, creates the file structure, and returns a running app you can open in your browser at localhost:3000.</li><li>Phase 2 - Style. Work page by page. For each page, describe the content and layout you want and let Claude Code revise until the page matches. One page at a time gives you clean control - avoid describing all pages in one message.</li><li>Phase 3 - Deploy. When the app looks right, tell Claude Code you want to deploy to Vercel. It generates the command and walks you through connecting the project so you leave with a live URL.</li></ol>
<h2>The Scaffold Message - How to Write the First One</h2>
<p>The scaffold message sets the structure everything else builds on. A good scaffold message includes four things: the name and purpose of the app in one sentence, the list of pages it needs, a rough description of what each page shows, and any data it needs to display (static content, an API, or a database).</p>
<blockquote><strong>NOTE:</strong> Example scaffold message: 'Build a Next.js app called RecipeBox. It has three pages: a home page that lists recipe cards, a recipe detail page showing the full recipe, and an add-recipe page with a form. Use static data for now with three sample recipes already in place. Style it clean and minimal with a white background and green accent color.'</blockquote>
<p>Claude Code reads that message and sets up the full project: installs Next.js, creates the page files, wires the routing between them, and populates the sample data. When it finishes, you open the dev server and the app loads in your browser. The whole scaffold step takes a few minutes.</p>
<h2>Iterating on Pages Without Breaking What Works</h2>
<p>After the scaffold, look at the page in the browser, describe exactly what you want to change in plain language, let Claude Code make the revision, then refresh and check. The pattern that keeps the build stable: one change at a time, one page at a time. Do not stack multiple requests in one message - it makes it harder to confirm what worked.</p>
<p>If something breaks, paste the error and describe what you expected. Claude Code reads the current state of the file and fixes the specific problem. Most first-build errors are configuration or import issues that resolve in one or two exchanges - you do not need to rebuild from scratch.</p>
<blockquote><strong>TIP:</strong> Keep a CLAUDE.md file in the project root with the app name, its purpose, and the color scheme. Claude Code reads it at the start of each session and picks up where you left off without re-explaining the context.</blockquote>
<h2>Deploying to Vercel From the Same Conversation</h2>
<p>When the app looks right, tell Claude Code you want to deploy it to Vercel. It confirms the build command, checks the output directory, and generates the Vercel CLI command or walks you through connecting the GitHub repo to Vercel's dashboard. Either path gets you a live URL in under ten minutes.</p>
<p>Vercel is built specifically for Next.js and handles the hosting configuration automatically. Once the project is connected, every future push to the main branch deploys without any extra steps on your end.</p>
<h2>Build Your Next App Inside the Club</h2>
<p>The Next.js Build Loop works for marketing sites, internal tools, dashboards, portfolios, and anything you can describe in a sentence. Start with a clear scaffold message, work page by page through the style phase, and close with the deploy step. A straightforward build fits in a single afternoon.</p>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club members share their real builds in progress - the exact scaffold messages, the errors they hit, and how they resolved them. If you want to build a Next.js app and want the room behind you while you do it, join for $9 a month at claudecodeclub.ai.</blockquote>
<h2>FAQ</h2>
<p><strong>Do I need to know React to build a Next.js app with Claude Code?</strong></p><p>No. Claude Code handles the React and Next.js code. You describe the pages, the layout, and the content in plain English and it writes the components. You do not need to read or modify the code - just describe what you want to change.</p>
<p><strong>What kind of apps can I build with Next.js and Claude Code?</strong></p><p>Marketing sites, portfolios, dashboards, tools with forms and data, APIs, and full-stack apps with database connections. Next.js is flexible enough to handle most of what a solo builder or small team needs. Claude Code builds all of these in a conversation.</p>
<p><strong>How long does a first build take?</strong></p><p>A simple three to five page app with static data usually takes a few hours in a single session. Adding a database connection, authentication, or a payment flow adds time depending on complexity. The scaffold phase is fast - the iteration is where most of the session goes.</p>
<p><strong>What if I get an error when I run the app?</strong></p><p>Paste the error message into the Claude Code conversation and describe what you expected to happen. Claude Code reads the error, finds the file causing it, and fixes the specific issue. Most first-build errors are configuration issues that resolve in one or two exchanges.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Add Stripe Payments to Your Claude Code Build</title>
      <link>https://www.claudecodeclub.ai/blog/add-stripe-payments-to-claude-code</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/add-stripe-payments-to-claude-code</guid>
      <pubDate>Wed, 29 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Building</category>
      <category>Claude Code</category>
      <category>Monetization</category>
      <description><![CDATA[Adding Stripe payments to a Claude Code project is a four-step integration you can describe in plain English and have working in an afternoon. Here is the Stripe Integration Stack I use to wire up real payments without touching the code by hand.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>You can add Stripe payments to any Claude Code build by describing the four layers - API keys, checkout session, webhook, and confirmation - and letting Claude Code write the integration from your plain-English instructions.</li><li>The safest approach is to test in Stripe's test mode first using the test API keys before you ever touch real money. Claude Code sets up both modes side by side so you can switch with a single environment variable.</li><li>Webhooks are the step most people skip and then regret. Tell Claude Code to wire up the webhook endpoint from the start - it is what tells your app a payment actually completed, not just that someone clicked the button.</li></ul>
<h2>What the Stripe Integration Stack Looks Like</h2>
<p>The Stripe Integration Stack is the four-layer shape of every working payment integration: the API keys that authenticate your app with Stripe, the checkout session that sends the buyer to Stripe's hosted payment page, the webhook endpoint that Stripe calls when a payment completes, and the confirmation page the buyer lands on after. Get these four layers in place and you have a real payment flow. Skip any one of them and something breaks.</p>
<ol><li>API keys - your Stripe secret key and publishable key, stored in environment variables, never in the code itself. Claude Code sets these up as environment variables so they never appear in the files you ship.</li><li>Checkout session - a server-side route that creates a Stripe checkout session with the price and product details, then redirects the buyer to Stripe's hosted payment page.</li><li>Webhook endpoint - a route Stripe calls after a payment completes, so your app knows the payment went through and can trigger whatever happens next (activate access, send a receipt, update a record).</li><li>Confirmation page - the page the buyer lands on after payment, populated with order details the webhook confirmed rather than just assumed from the URL.</li></ol>
<blockquote><strong>WARNING:</strong> Never store your Stripe secret key in a file that gets committed to git. Claude Code sets it up as an environment variable by default - make sure it ends up in your .env file, which should be in your .gitignore.</blockquote>
<h2>The Setup Message for Claude Code</h2>
<p>Start by telling Claude Code exactly what you are adding: a Stripe integration for a specific product or plan at a specific price. Include the framework your app uses (Next.js, Express, plain HTML with a backend, etc.) so Claude Code picks the right implementation. Give it your test publishable key and tell it to leave the secret key as a placeholder you will fill in yourself.</p>
<blockquote><strong>NOTE:</strong> Example setup message: 'Add a Stripe payment integration to this Next.js app. The product is a monthly membership for $9. Use the Stripe Checkout hosted payment page. Set up a webhook endpoint at /api/stripe-webhook to handle payment completion. Use test mode keys for now - I will add the publishable key, leave the secret key as STRIPE_SECRET_KEY in the .env file.' Then Claude Code builds all four layers from that description.</blockquote>
<p>Claude Code will create the checkout route, the webhook handler, and the confirmation page, and add the Stripe SDK to your dependencies. You paste in your test keys from the Stripe dashboard, run the local test, and confirm the flow works before you ever go near real payments.</p>
<h2>Testing With Stripe's Test Mode</h2>
<p>Stripe provides test keys and test card numbers that let you run the full payment flow without moving real money. Use the test card number 4242 4242 4242 4242 with any future expiry and any three-digit CVC. The payment completes in test mode and triggers your webhook exactly as a real payment would.</p>
<p>To receive webhook events locally, ask Claude Code to add the Stripe CLI webhook listener setup to the project instructions. The Stripe CLI forwards Stripe's test webhook events to your local server so you can confirm the webhook fires and your app responds correctly before you deploy.</p>
<blockquote><strong>TIP:</strong> Tell Claude Code to write a simple log in the webhook handler that prints the event type and the payment amount. Run a test payment and confirm you see the event in your terminal before you build anything else on top of it.</blockquote>
<h2>Switching to Live Mode</h2>
<p>When the test flow is confirmed end to end, switching to live mode is a single change: swap the test keys for the live keys in your environment variables. Claude Code sets the integration up so the only difference between test and live is which key is loaded, which means you can switch with one variable and nothing else changes.</p>
<p>Before you flip to live mode, confirm two things in the Stripe dashboard: that your webhook endpoint is registered for the production URL (not just localhost), and that your business details are complete so Stripe will actually pay out. Claude Code cannot do either of those steps for you - they are account-level settings in the Stripe dashboard.</p>
<h2>Monetize Your Build Inside the Club</h2>
<p>The Stripe Integration Stack - API keys, checkout session, webhook, confirmation page - works for memberships, one-off products, and anything else Stripe supports. Describe it clearly to Claude Code, test in test mode first, and flip to live only when the whole flow is confirmed.</p>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club members share the exact integration patterns they use to accept payments in their builds - the webhook setups, the environment variable conventions, and the most common errors that come up on the first run. If you are building something you want to charge for, join us for $9 a month at claudecodeclub.ai.</blockquote>
<h2>FAQ</h2>
<p><strong>Do I need a Stripe account before I start?</strong></p><p>Yes, but you can create one for free and start testing immediately without any approval process. Stripe gives you test keys as soon as you sign up. You only need to complete account verification before you accept real payments.</p>
<p><strong>What happens if someone pays but my webhook misses it?</strong></p><p>Stripe retries failed webhook deliveries automatically over several hours. You can also replay specific events from the Stripe dashboard. The webhook handler Claude Code sets up logs each event so you can confirm what came through and what did not.</p>
<p><strong>Can I add multiple pricing options?</strong></p><p>Yes. Tell Claude Code the full list of products and prices when you set up the integration - for example, 'one plan at $9 per month and one at $39 per month.' It creates separate checkout sessions for each and routes the webhook response based on the price ID Stripe sends back.</p>
<p><strong>Is Stripe Checkout the only option?</strong></p><p>No. Stripe also has Elements, which lets you embed the payment form directly in your page, and Payment Links, which are hosted payment pages you generate from the dashboard without any code. Claude Code can build any of these - describe which approach you want in your setup message.</p>]]></content:encoded>
    </item>
    <item>
      <title>I Let Claude Code Run Unattended on a Real Build - Here's What I Learned</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-running-unattended</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-running-unattended</guid>
      <pubDate>Tue, 28 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Workflows</category>
      <category>Building</category>
      <category>Claude Code</category>
      <description><![CDATA[Leaving Claude Code to work on its own overnight sounds like the dream. I tried it on an actual client build and learned exactly where it saves you hours and where it quietly wanders off. This is the Leash Loop I use to get unattended work without waking up to a mess.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Claude Code can run unattended and get real work done, but only inside a tightly scoped task with a clear finish line - open-ended prompts are where it wanders.</li><li>The move that made it work for me was the Leash Loop: scope the task narrowly, give it a way to check its own work, and set a hard stopping condition so it can't drift for hours.</li><li>Treat unattended runs as a first draft you review, not a finished feature you ship. The time saved is real, but the review step is not optional.</li></ul>
<h2>What 'Running Claude Code Unattended' Actually Means</h2>
<p>Running Claude Code unattended means giving it a task and letting it work through the steps on its own - reading files, writing code, running commands, checking results - without you sitting there approving each move. In the desktop app you kick it off and walk away. The appeal is obvious: you describe the work, go make dinner, and come back to progress. The reality is more interesting than either the hype or the fear.</p>
<p>I tested this on a real client build, not a toy demo. The task was migrating a batch of old form components to a new validation library across a mid-size codebase - repetitive, well-defined, the kind of work that eats an afternoon of human attention but doesn't need much creativity. That combination turned out to be exactly the sweet spot.</p>
<blockquote><strong>NOTE:</strong> Unattended does not mean unsupervised forever. It means Claude works without you approving each step, inside guardrails you set up front. The guardrails are the whole game.</blockquote>
<h2>The First Run Went Sideways (and Why)</h2>
<p>My first attempt was lazy. I wrote a broad prompt - 'migrate the forms to the new validation library and clean things up while you're in there' - and let it go. When I came back, it had migrated the forms correctly, then kept going. It refactored a shared utility, renamed a few props for consistency, and touched files that had nothing to do with the task. None of it was wrong exactly. All of it was scope I hadn't asked for, which meant every one of those changes now needed review before I trusted it.</p>
<p>That is the core failure mode of unattended runs. Claude is genuinely capable, so when you leave the goal fuzzy, it fills the space with initiative. 'Clean things up while you're in there' is an open door. It will walk through it. The problem is not the tool being bad - it's the instruction being vague, and vague instructions are far more expensive when nobody is watching in real time.</p>
<blockquote><strong>WARNING:</strong> The two words that cost me the most in that first run were 'and clean things up.' Any open-ended clause in an unattended prompt is an invitation to drift. Cut them.</blockquote>
<h2>The Leash Loop: How I Get Unattended Work Without the Mess</h2>
<p>After that run I built a small routine I now call the Leash Loop. It's three moves, and it's the difference between coming back to progress and coming back to cleanup.</p>
<ol><li>Scope to one finishable job. Not 'improve the forms' but 'migrate exactly these 14 form files to the new library, changing nothing else.' Name the files if you can. A task with a clear edge is a task Claude can't wander past.</li><li>Give it a way to check its own work. Point it at the test command or the type checker and tell it the run is not done until that passes. Now it has an objective signal for 'finished' instead of an open-ended sense of 'better.'</li><li>Set a hard stopping condition. Tell it what done looks like and to stop there and report, rather than continuing to find more to do. The leash is short on purpose.</li></ol>
<p>The name is the point. You're not caging the tool - a caged tool can't help you. You're keeping it on a leash long enough to do real work and short enough that it can't run off. When I re-ran the migration with the Leash Loop, it did the 14 files, ran the type checker until it was clean, and stopped. I reviewed a focused diff instead of an archaeology dig.</p>
<h2>Where Unattended Runs Genuinely Save You Time</h2>
<p>Once I stopped fighting the tool and started scoping for it, the wins were concrete. The pattern that predicts a good unattended run is always the same: the work is well-defined, repetitive, and has an automatic way to verify it's correct.</p>
<table><caption>Tasks that work unattended vs tasks that need you watching</caption><thead><tr><th>Good for unattended runs</th><th>Keep yourself in the loop</th></tr></thead><tbody><tr><td>Repetitive migrations across many similar files</td><td>Architecture decisions with real tradeoffs</td></tr><tr><td>Writing tests against existing, stable behavior</td><td>Anything touching money, auth, or user data</td></tr><tr><td>Mechanical refactors with a clear before/after</td><td>Open-ended 'make this better' work</td></tr><tr><td>Bulk edits verifiable by a test or type check</td><td>First drafts of features with fuzzy requirements</td></tr></tbody></table>
<blockquote><strong>TIP:</strong> The best unattended tasks share one trait: a machine can tell you if the result is right. If success can only be judged by a human reading it carefully, keep a human in the loop.</blockquote>
<h2>The Review Step Is Not Optional</h2>
<p>Here's the honest part the hype skips. Even a clean, well-scoped unattended run produces a first draft, not a shipped feature. I still read every diff before it goes anywhere near production. The time I save is the time I would have spent typing the changes and grinding through the repetitive parts. The time I do not save is the review. If anything, unattended work makes the review more important, because I wasn't watching it happen and I don't have the running context of each decision in my head.</p>
<p>This is where the money guardrail lives, too. I will happily let Claude migrate form components overnight. I will not let it run unattended on anything that spends money, touches authentication, or writes to production data. The blast radius is too big and the failure is too hard to reverse. Unattended runs belong on reversible, reviewable work.</p>
<h2>How to Try Your First Unattended Run This Week</h2>
<p>Pick the most boring, most well-defined task on your list - the one you keep putting off because it's tedious rather than hard. Something like adding the same prop to a dozen components, or writing tests for a module whose behavior is already settled. In the Claude Code desktop app, write the prompt with the Leash Loop in mind: name the exact scope, point it at the check that proves it worked, and tell it to stop and report when that check passes.</p>
<blockquote><strong>NOTE:</strong> This is the kind of workflow we pressure-test together inside the Claude Code Club. Members share the exact prompts and stopping conditions that made unattended runs safe on their own builds - come compare notes and bring the task you've been avoiding.</blockquote>
<h2>FAQ</h2>
<p><strong>Can Claude Code really run unattended without me approving each step?</strong></p><p>Yes. You can give Claude Code a task and let it read files, write code, run commands, and check results on its own. The catch is that unattended does not mean unsupervised - it works inside the guardrails you set up front. A narrowly scoped task with a clear finish line runs well unattended. An open-ended prompt is where it drifts into scope you didn't ask for.</p>
<p><strong>What kind of work is safe to run unattended?</strong></p><p>Repetitive, well-defined work that a machine can verify - migrations across many similar files, writing tests against stable behavior, mechanical refactors, bulk edits you can confirm with a test or type check. Avoid unattended runs on architecture decisions, anything touching money, auth, or user data, and open-ended 'make this better' tasks. If only a careful human read can tell you the result is correct, keep a human in the loop.</p>
<p><strong>What is the Leash Loop?</strong></p><p>It's the three-move routine I use to get unattended work without a mess: scope the task to one finishable job with a clear edge, give Claude a way to check its own work like a test or type checker, and set a hard stopping condition so it reports and stops instead of continuing to find more to do. It keeps the leash long enough for real work and short enough that Claude can't wander off.</p>
<p><strong>Do I still need to review the output of an unattended run?</strong></p><p>Always. Even a clean, well-scoped run produces a first draft, not a shipped feature. Read every diff before it goes near production. Unattended runs save you the time of typing the changes and grinding through the repetitive parts - they do not save you the review, and if anything the review matters more because you weren't watching each decision happen.</p>
<p><strong>Why did my unattended run change files I didn't ask about?</strong></p><p>Almost always because the prompt had an open-ended clause - something like 'and clean things up while you're in there.' Claude is capable enough that vague instructions get filled with initiative. Cut every open door out of the prompt, name the exact scope, and tell it to stop when the defined work is done. Narrow the instruction and the wandering stops.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code Skills vs MCP Servers: When to Use Which (From Someone Who Uses Both Daily)</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-skills-vs-mcp-servers</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-skills-vs-mcp-servers</guid>
      <pubDate>Tue, 28 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Workflows</category>
      <category>Building</category>
      <description><![CDATA[Skills and MCP servers both extend Claude Code, and people mix them up constantly. They solve different problems. Here's the plain-English difference, the Skill-or-Server Test I run before building either, and the mistakes that make people reach for the wrong one.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>A skill teaches Claude how to do something - it's packaged knowledge and instructions Claude reads and follows. An MCP server connects Claude to something - it's a live wire to an external tool or data source.</li><li>The quick way to choose: if what you need is know-how, build a skill. If what you need is access to a system Claude can't otherwise reach, build or install an MCP server.</li><li>Most people over-reach for MCP servers when a skill would do. Start with a skill unless you genuinely need a live connection to an outside system.</li></ul>
<h2>The Difference in One Sentence Each</h2>
<p>A skill is know-how. It's a folder of instructions and knowledge that Claude reads and then acts on - your process for writing a proposal, your house style for a blog post, the exact steps for deploying a project. When a skill is relevant, Claude pulls it into context and follows it. Nothing outside your machine gets touched.</p>
<p>An MCP server is a connection. It's a small program that gives Claude a live wire to something it otherwise can't reach - your database, a third-party API, your email, a design tool. The server exposes a set of actions, and Claude can call them to read or change things in that outside system. The skill teaches; the server connects. That's the whole distinction, and almost every mistake I see comes from blurring it.</p>
<blockquote><strong>TIP:</strong> The workbench image for this is simple. A skill is the set of instructions pinned above your bench telling you how to do the job. An MCP server is the extension cord plugging your bench into the wall so you can actually run the tools. One is knowledge, one is power.</blockquote>
<h2>The Skill-or-Server Test</h2>
<p>Before I build either one, I run a single question through my head: does Claude need to KNOW something, or does it need to REACH something? That question resolves nearly every case in about five seconds.</p>
<ul><li>If the answer is 'Claude just needs to know how we do this,' it's a skill. All the information already exists - you're packaging your process so Claude follows it consistently instead of you re-explaining it every time.</li><li>If the answer is 'Claude needs to read or change something that lives in another system,' it's an MCP server. No amount of written instruction lets Claude query your live database or send a real email. It needs a connection, not a lecture.</li><li>If the answer is 'both,' build the skill first and have it call the server. The skill carries the process; the server provides the reach. They stack.</li></ul>
<p>That last case is the one worth internalizing. Skills and MCP servers are not competitors - the strongest setups use a skill to encode the workflow and an MCP server as one of the tools that workflow reaches for. The test isn't 'which one,' it's 'which one first.'</p>
<h2>When a Skill Is the Right Call</h2>
<p>Reach for a skill any time the value is in captured know-how. If you find yourself explaining the same process to Claude across sessions, that repetition is a skill waiting to be written. The blog you're reading was shaped by a skill that holds our writing standards so every post inherits them without me re-teaching the rules each time.</p>
<ul><li>A repeatable process you keep re-explaining: how you scope a project, how you structure a document, how you run a deploy.</li><li>House standards and guardrails: naming conventions, tone rules, always/never lists that should apply every time.</li><li>Multi-step routines that combine judgment with a fixed sequence, where the sequence lives in the skill and Claude supplies the judgment inside it.</li></ul>
<blockquote><strong>NOTE:</strong> Skills need no external setup and no network access. That makes them the lower-risk, faster-to-ship choice. When both could technically work, this alone is a good reason to try the skill first.</blockquote>
<h2>When You Actually Need an MCP Server</h2>
<p>Reach for an MCP server when the task is impossible without a live connection to an outside system. No instruction file lets Claude see the current rows in your database or the unread messages in your inbox. That data lives somewhere Claude can't go unless you build the bridge.</p>
<ul><li>Querying or updating a live database that Claude needs current state from.</li><li>Talking to a third-party API - a payments system, a CRM, an analytics platform - where the data changes and lives outside your files.</li><li>Reading or acting in a connected app like email, calendar, or a design tool, where the point is to touch the real account.</li></ul>
<blockquote><strong>WARNING:</strong> An MCP server that can change real systems is a real responsibility. If it holds a key that spends money or touches production data, the same rules apply as any live endpoint: least privilege, no wide-open access, and a human on anything hard to reverse. A connection is powerful precisely because it's real.</blockquote>
<h2>The Mistake Almost Everyone Makes</h2>
<p>The most common error I see is reaching for an MCP server when a skill would do. Someone wants Claude to follow their proposal process, so they start imagining a server. But nothing in that task requires reaching an outside system - it's pure know-how. A skill does it with less setup, less risk, and no moving parts to break.</p>
<p>The reverse mistake happens too, just less often: trying to cram live data into a skill by pasting it in. The moment that data is stale, the skill is wrong. If the information changes and Claude needs the current version, that's a connection, and a skill can't fake it. Match the mechanism to what the task truly is - knowledge or access - and both problems disappear.</p>
<table><caption>Quick reference: which one fits</caption><thead><tr><th>What you need</th><th>Reach for</th></tr></thead><tbody><tr><td>Claude to follow your process consistently</td><td>A skill</td></tr><tr><td>Current data from a live system</td><td>An MCP server</td></tr><tr><td>House rules applied every session</td><td>A skill</td></tr><tr><td>To send, read, or change something in a real account</td><td>An MCP server</td></tr><tr><td>A workflow that also needs live data</td><td>A skill that calls a server</td></tr></tbody></table>
<h2>How to Decide on Your Next One</h2>
<p>Next time you catch yourself wishing Claude Code could do something it doesn't do yet, stop and run the test: know or reach. If it's know, write a skill - you can do it in the desktop app with a folder of plain instructions and ship it today. If it's reach, look for an existing MCP server before you build one, since many common systems already have them. Get the category right first and the build gets simple.</p>
<blockquote><strong>NOTE:</strong> Inside the Claude Code Club we share the skills and MCP setups that are actually earning their keep on real projects, so you can borrow a working one instead of guessing. Bring the thing you wish Claude could do and we'll help you sort it into the right bucket.</blockquote>
<h2>FAQ</h2>
<p><strong>What is the difference between a Claude Code skill and an MCP server?</strong></p><p>A skill is know-how - a folder of instructions and knowledge Claude reads and follows, like your process for a task or your house style rules. An MCP server is a connection - a program that gives Claude a live wire to an outside system like a database, API, or email account. The skill teaches Claude how to do something; the server lets Claude reach something it otherwise can't.</p>
<p><strong>How do I know whether to build a skill or an MCP server?</strong></p><p>Run the Skill-or-Server Test: does Claude need to KNOW something or REACH something? If all the information already exists and you just want Claude to follow your process, build a skill. If Claude needs to read or change data that lives in another system, build or install an MCP server. If you need both, build the skill first and have it call the server.</p>
<p><strong>Can a skill and an MCP server work together?</strong></p><p>Yes, and the best setups do exactly that. A skill encodes the workflow and the judgment; an MCP server is one of the tools that workflow reaches for when it needs live data or to act in a real system. They aren't competitors - a skill that calls a server gives you a repeatable process with real-world reach.</p>
<p><strong>Why do people over-use MCP servers?</strong></p><p>Because a server feels more powerful, so it's tempting to reach for it. But many tasks are pure know-how - following a process, applying house rules - and need no connection to an outside system at all. A skill does those with less setup and less risk. Reserve MCP servers for when the task is genuinely impossible without live access to something outside your files.</p>
<p><strong>Is a skill safer than an MCP server?</strong></p><p>Generally yes, because a skill needs no external setup and no network access - it's just instructions Claude reads. An MCP server can change real systems, so if it holds a key that spends money or touches production data it carries real responsibility: least privilege, no wide-open access, and a human on anything hard to reverse. When both could work, the skill is the lower-risk first move.</p>]]></content:encoded>
    </item>
    <item>
      <title>The Day-One Claude Code Setup: Exactly What I Tell Every Beginner to Do First</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-day-one-setup</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-day-one-setup</guid>
      <pubDate>Tue, 28 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Getting Started</category>
      <category>Workflows</category>
      <description><![CDATA[Most people open Claude Code, poke around, and never get it configured to actually help them. This is the Day-One Stack I walk every new member through - the plan to buy, the desktop app choice, and the two files that make Claude useful from your first real session instead of your tenth.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Start with the desktop app, not the terminal. Beginners get productive far faster with a real window than with a command line, and the terminal is always there later if you want it.</li><li>The 20-dollar Pro plan is the right starting point - enough capability to do real work without overthinking the decision on day one.</li><li>Set up two files before your first real task: a CLAUDE.md so Claude knows your project, and a short standing note of how you like to work. That's the Day-One Stack.</li></ul>
<h2>Why Most Day-One Setups Go Wrong</h2>
<p>Almost everyone who tries Claude Code for the first time does the same thing: they open it, type a couple of questions, get a decent answer, and then have no idea what to do next. It feels like a smarter chat window, so they use it like one. The power - Claude actually building things in your project - stays hidden because nobody set the thing up to reach it.</p>
<p>I've onboarded a lot of beginners now, and the ones who stick are never the ones who found a clever trick. They're the ones who spent their first twenty minutes on setup instead of jumping straight into a big task. That setup is what I call the Day-One Stack, and it's deliberately small - a plan, an app choice, and two files. Get those in place and Claude is useful in your first real session instead of your tenth.</p>
<h2>Step One: Use the Desktop App, Not the Terminal</h2>
<p>If you're new, start with the Claude Code desktop app. I know the terminal has a reputation as the 'real' way to use it, and plenty of experienced developers live there. But for someone getting started, the desktop app removes a whole category of friction - no command-line syntax to learn before you've done anything useful, a real window to see your project and Claude's work side by side, and a much gentler on-ramp.</p>
<p>The terminal is not going anywhere. When you want it - for scripting, for speed, for fitting Claude into an existing command-line workflow - it's right there and you'll pick it up easily once you already understand what Claude Code does. But learning the tool and learning the terminal at the same time doubles the difficulty for no reason on day one. Pick the app, get a win, add the terminal later if you ever want it.</p>
<blockquote><strong>TIP:</strong> Framing that helps: the desktop app and the terminal are two doors into the same room. Beginners get more done through the app door. Nothing you learn there is wasted when you eventually try the terminal.</blockquote>
<h2>Step Two: Start on the 20-Dollar Pro Plan</h2>
<p>Don't agonize over the plan on day one. The 20-dollar Pro plan is the right starting point for nearly everyone - enough capability to do genuine work, cheap enough that it's not a real decision. People burn surprising amounts of energy trying to pick the perfect tier before they've built anything, which is exactly backwards. You can't know what you need until you've done real work, and Pro is more than enough to do that first real work.</p>
<blockquote><strong>NOTE:</strong> You'll know when you've outgrown a plan because you'll hit a real limit on a real project, not because you read a comparison table. Start at Pro, build something, and let actual usage tell you if you need more.</blockquote>
<h2>Step Three: Write a CLAUDE.md for Your Project</h2>
<p>This is the single highest-leverage thing a beginner can do, and almost nobody does it early. A CLAUDE.md is a plain text file in your project folder that Claude reads automatically at the start of every session. It's a standing brief - what the project is, what tools it uses, and the rules you care about. Write it once and every future session starts with Claude already oriented, instead of you re-explaining the basics each time.</p>
<ul><li>What we're building: one or two sentences on the project and who it's for.</li><li>How we build it here: the language, framework, and any key commands to run or test the project.</li><li>The rules: a short list of always/never guardrails, like which folders are off-limits or which conventions to follow.</li></ul>
<blockquote><strong>TIP:</strong> Keep it to one screen. A short, accurate CLAUDE.md beats a long one every time - the point is to answer the questions Claude would otherwise ask in your first three messages, not to document the whole project.</blockquote>
<h2>Step Four: Write Down How You Like to Work</h2>
<p>The second file is about you, not the project. A short standing note of your preferences - how you like explanations, how much Claude should ask before acting, the tone you want - saves you from re-establishing the same things in every session. Do you want Claude to explain its reasoning or just do the task? Should it check with you before large changes or move fast? Write it down once and it applies going forward.</p>
<p>This is the difference between a tool that adapts to you and one you have to re-train daily. It doesn't need to be long. A handful of lines about how you like to collaborate is enough to make every session feel like Claude already knows how you work, because now it does.</p>
<h2>Your First Real Task After Setup</h2>
<p>With the Day-One Stack in place - app, plan, and two files - pick a small, real task, not a tutorial. Something you actually want done: add a feature to a side project, clean up a file, write a script you've been meaning to write. Small enough to finish in one session, real enough that finishing it teaches you something. That first real win is what turns Claude Code from a curiosity into part of how you work.</p>
<blockquote><strong>NOTE:</strong> The Day-One Stack is the exact setup we walk new members through inside the Claude Code Club, and then we help you land that first real win instead of leaving you to guess. If you're setting up this week, come do it alongside people doing the same thing.</blockquote>
<h2>FAQ</h2>
<p><strong>Should a beginner start with the Claude Code desktop app or the terminal?</strong></p><p>Start with the desktop app. It removes the friction of learning command-line syntax before you've done anything useful and gives you a real window to see your project and Claude's work together. The terminal is powerful and always available later, but learning the tool and the terminal at the same time doubles the difficulty for no reason on day one. Pick the app, get a win, add the terminal later if you want it.</p>
<p><strong>Which Claude Code plan should I start with?</strong></p><p>The 20-dollar Pro plan is the right starting point for nearly everyone. It has enough capability to do genuine work and is cheap enough that it isn't a real decision. Don't spend day-one energy trying to pick the perfect tier - you can't know what you need until you've built something, and Pro is more than enough for that first real work. You'll know when you've outgrown it because you'll hit a real limit on a real project.</p>
<p><strong>What is a CLAUDE.md file and do beginners need one?</strong></p><p>A CLAUDE.md is a plain text file in your project folder that Claude Code reads automatically at the start of every session. It's a standing brief - what the project is, what tools it uses, and the rules you care about. It's the single highest-leverage thing a beginner can set up, because you write it once and every future session starts with Claude already oriented instead of you re-explaining the basics each time. Keep it to one screen.</p>
<p><strong>What is the Day-One Stack?</strong></p><p>It's the small setup I walk every new member through before their first real task: use the desktop app, start on the 20-dollar Pro plan, write a CLAUDE.md so Claude knows your project, and write a short note of how you like to work. Four pieces, about twenty minutes. It's what makes Claude Code useful in your first real session instead of your tenth.</p>
<p><strong>What should my first Claude Code project be?</strong></p><p>A small, real task rather than a tutorial - something you actually want done, like adding a feature to a side project, cleaning up a file, or writing a script you've been meaning to write. Small enough to finish in one session, real enough that finishing it teaches you something. That first real win is what turns Claude Code from a curiosity into part of how you work.</p>]]></content:encoded>
    </item>
    <item>
      <title>The One-Page AI Proposal That Closes (My Template After Losing Deals to Long Ones)</title>
      <link>https://www.claudecodeclub.ai/blog/one-page-ai-proposal-that-closes</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/one-page-ai-proposal-that-closes</guid>
      <pubDate>Tue, 28 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Selling</category>
      <category>Clients</category>
      <category>Claude Code</category>
      <description><![CDATA[I used to send AI project proposals that were five pages of detail and they closed slower than my one-pagers. Here's the exact one-page structure I use now - what goes on it, what stays off, and why a shorter proposal wins the deal more often.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>A one-page proposal closes AI projects faster than a long one because it forces clarity on the outcome and gives the client nothing to get lost in.</li><li>The page has five parts: the outcome in their words, what's included and what's not, the price, the timeline, and one clear next step. Everything else is noise.</li><li>The proposal is the artifact you write after the discovery call, not a replacement for it. The call earns the understanding; the page just confirms it.</li></ul>
<h2>Why My Long Proposals Closed Slower</h2>
<p>For a while I believed a thorough proposal signaled a thorough professional. So my AI project proposals ran long - background, methodology, a technical approach section, phases, contingencies. They looked impressive. They also closed slower than the quick one-pagers I sometimes threw together when I was short on time. That pattern nagged at me until I finally admitted what was happening: the long proposals gave the client more places to hesitate.</p>
<p>Every extra section was another thing to question, another paragraph where the client's eyes glazed, another opening for 'let me think about it.' A long proposal doesn't read as thorough to a busy client. It reads as work - work to get through, and work to figure out what they're actually saying yes to. The one-pager wins because it removes that work. There's nothing to wade through and nowhere to get lost.</p>
<h2>The Five Things That Go on the Page</h2>
<p>A closing one-pager is not a shrunken long proposal. It's a different document with a specific job: confirm what you both already agreed to and make saying yes the easy next move. Five parts, in this order.</p>
<ol><li>The outcome, in their words. Open with the result they told you they want, phrased the way they phrased it. Not 'build an AI pipeline' but 'cut the time your team spends sorting inbound emails from hours to minutes.' They should read the first line and think, yes, that's the thing.</li><li>What's included - and what's not. A short, concrete list of what they get, plus a line or two of what's explicitly out of scope. The exclusions protect you and, counterintuitively, build trust: it shows you've thought about the edges.</li><li>The price. One number, stated plainly, tied to the outcome rather than hours. No menu, no tiers unless they asked. A single price is a single decision.</li><li>The timeline. When it starts, when they see the result. Simple and realistic. Vague timelines read as risk.</li><li>One next step. Exactly one action to move forward - reply to approve, sign here, book the kickoff. Never a fork with three options. One door.</li></ol>
<blockquote><strong>TIP:</strong> Lead with the outcome in their own words and half the selling is already done. The client isn't evaluating whether you understand the technology - they're checking whether you understand THEM. The first line answers that.</blockquote>
<h2>What Stays Off the Page</h2>
<p>The discipline of the one-pager is mostly about what you leave out. Everything that serves you rather than the client's decision comes off.</p>
<ul><li>The technical approach. The client is buying the outcome, not your architecture. How you'll build it is your business - keep it off the page unless they specifically asked.</li><li>Your company background and credentials. If they're reading your proposal, you already earned the meeting. Re-selling yourself here just adds length.</li><li>Contingencies and caveats beyond the scope line. A wall of what-ifs reads as nervousness. State the scope cleanly and handle edge cases in conversation.</li><li>Options and tiers they didn't request. Every extra choice is a delay. If they need to choose, that's a conversation, not three columns on a page.</li></ul>
<blockquote><strong>WARNING:</strong> The most tempting thing to add back is the technical approach, because it's the part you're proud of. Resist it. A detailed methodology section is where more deals stall than close - it invites the client to evaluate decisions they're not equipped to judge.</blockquote>
<h2>The Proposal Comes After the Conversation</h2>
<p>A one-pager only closes because of the work that happens before it. The page is not where you discover what the client needs - it's where you confirm it. That understanding comes from the discovery call, where you get them to describe the outcome, the constraints, and what a win looks like in their own words. If you've written about running a proper discovery call, this is the artifact that call produces.</p>
<p>This is why the one-pager can be short. You're not using the document to figure anything out or to cover for a conversation you didn't have. You already know what they want because you asked. The page just hands it back to them, cleanly, with a price and a next step. Skip the call and no proposal length will save you - you'll be guessing on paper. Have the call and one page is plenty.</p>
<h2>A Quick Before-and-After</h2>
<table><caption>The same deal, two ways to propose it</caption><thead><tr><th>Long proposal</th><th>One-page proposal</th></tr></thead><tbody><tr><td>Opens with your company background</td><td>Opens with the client's desired outcome in their words</td></tr><tr><td>A methodology section explaining the build</td><td>A short list of what's included and what's not</td></tr><tr><td>A price buried on page four with three tiers</td><td>One price, stated plainly, tied to the outcome</td></tr><tr><td>Ends with 'let us know if you have questions'</td><td>Ends with one clear next step to approve</td></tr></tbody></table>
<p>The right column isn't less professional. It's more confident. It says: I understood you, here's the result, here's what it costs, here's how we start. That confidence is what closes.</p>
<h2>Build Your Own One-Pager This Week</h2>
<p>Take your next opportunity and force it onto one page. Write the outcome in their words at the top, list what's in and out, state one price, give a timeline, and end with a single next step. If something doesn't fit, ask whether it's helping the client decide or just making you feel thorough. The page gets shorter and the yes gets faster.</p>
<blockquote><strong>NOTE:</strong> We trade real proposal templates and win/loss stories inside the Claude Code Club - the actual one-pagers that closed AI projects, with the numbers on them. Come into the room and bring the deal you're trying to close this week.</blockquote>
<h2>FAQ</h2>
<p><strong>Why does a one-page proposal close AI projects faster than a long one?</strong></p><p>Because a long proposal gives the client more places to hesitate. Every extra section is another thing to question and another opening for 'let me think about it.' A one-pager removes that work - there's nothing to wade through and nowhere to get lost. It reads as confidence rather than nervousness: you understood them, here's the result, here's the price, here's how you start.</p>
<p><strong>What goes on a one-page AI proposal?</strong></p><p>Five things, in order: the outcome in the client's own words, a short list of what's included and what's explicitly not, one price tied to the outcome rather than hours, a simple realistic timeline, and exactly one clear next step. Everything that serves you rather than the client's decision - technical approach, company background, extra tiers - stays off the page.</p>
<p><strong>Should I include my technical approach in the proposal?</strong></p><p>No, unless the client specifically asked. They're buying the outcome, not your architecture. A detailed methodology section is where more deals stall than close, because it invites the client to evaluate decisions they're not equipped to judge. Keep how you'll build it off the page and handle any technical questions in conversation.</p>
<p><strong>Does the one-page proposal replace a discovery call?</strong></p><p>No. The proposal is the artifact you write after the discovery call, not a replacement for it. The call is where you learn the outcome, constraints, and what a win looks like in the client's own words. The page just confirms that understanding with a price and a next step. Skip the call and no proposal length saves you - you'll be guessing on paper.</p>
<p><strong>How do I price on a one-pager?</strong></p><p>State one number plainly, tied to the outcome rather than to hours, with no menu or tiers unless the client asked for options. A single price is a single decision. If the client genuinely needs to choose between scopes, that's a conversation, not three columns on the page - keep the page to one clear thing to say yes to.</p>]]></content:encoded>
    </item>
    <item>
      <title>Why I Stopped Charging Hourly for AI Builds (and What I Charge Instead)</title>
      <link>https://www.claudecodeclub.ai/blog/stopped-charging-hourly-for-ai-builds</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/stopped-charging-hourly-for-ai-builds</guid>
      <pubDate>Tue, 28 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Selling</category>
      <category>Pricing</category>
      <category>Claude Code</category>
      <description><![CDATA[Charging by the hour punished me for getting faster with Claude Code. The better I got, the less I earned for the same result. Here's why I switched to pricing the outcome, how I made the transition without scaring clients off, and the honest tradeoffs.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Hourly pricing punishes you for getting faster. With Claude Code speeding up delivery, the better you get, the less you earn for the same result - which is backwards.</li><li>The fix is pricing the outcome: quote one price for the result the client wants, regardless of how many hours it takes you to build it.</li><li>You make the switch by anchoring on the value of the outcome, not by defending your speed. Clients buy results, so sell them results.</li></ul>
<h2>The Problem Hourly Pricing Created</h2>
<p>For years I charged by the hour, and it felt fair. Then I got good with Claude Code, and 'fair' turned into a trap. Work that used to take me two days started taking an afternoon. The client got the same result - often a better one - but my invoice shrank because the hours shrank. I had spent real effort getting faster, and my reward was earning less for delivering the same thing. That's not a bug in my rate. It's a flaw in the entire model.</p>
<p>Hourly pricing ties your income to your inefficiency. It quietly punishes every improvement you make. The faster and more skilled you get - exactly what a tool like Claude Code makes possible - the worse hourly serves you. I could either pretend to work slowly to protect my rate, which is dishonest and miserable, or change how I priced. I changed how I priced.</p>
<blockquote><strong>WARNING:</strong> If you bill hourly and you're getting faster with AI, you are actively giving your best skill gains away to the client for free. Every efficiency you earn shows up as a smaller invoice. The model fights you.</blockquote>
<h2>The Shift: Price the Outcome, Not the Hours</h2>
<p>What I do now is quote one price for the outcome the client wants, independent of how long it takes me to build. If a client needs a system that sorts their inbound leads automatically, I price what that result is worth to their business - not the hours I'll spend making it. Whether Claude Code helps me finish it in a day or a week is my concern, not theirs. They're buying the result. I charge for the result.</p>
<p>I call this the Outcome Price, and the mental shift is bigger than it sounds. Under hourly, every efficiency gain leaks to the client. Under outcome pricing, getting faster increases your effective rate instead of cutting your pay. You're finally rewarded for skill instead of penalized for it. And the client is happier too, because they know the total up front with no meter running and no incentive for you to pad hours.</p>
<blockquote><strong>TIP:</strong> The test for an outcome price is simple: could you name the number before you know how you'll build it? If you're pricing the result, you can. If you can't quote until you've scoped every hour, you're still selling time.</blockquote>
<h2>How I Actually Set the Number</h2>
<p>Pricing the outcome doesn't mean guessing. It means anchoring on what the result is worth to the client, then sanity-checking that it's a good deal on both sides.</p>
<ol><li>Understand the value of the outcome. What does solving this actually do for the client - time saved, revenue unlocked, a cost removed? The discovery conversation is where you learn this. The price lives in relation to that value, not your hours.</li><li>Set a price that's a clear win for them relative to that value. If the result saves them far more than it costs, the yes is easy and you're still well paid. Outcome pricing works because both sides come out ahead.</li><li>Sanity-check the floor. Roughly estimate the effort so you know the price isn't below what the work costs you. This is a private check, not a line item you show the client.</li><li>Quote one number tied to the result. No hourly breakdown, no timesheet. One price for the outcome, stated plainly.</li></ol>
<p>The effort estimate stays behind the curtain. It stops you from underpricing, but it never becomes the thing you sell. The client sees a result and a price. How you get there - and how much Claude Code accelerates it - is yours.</p>
<h2>Making the Switch Without Scaring Clients Off</h2>
<p>The fear that stops most people is that clients will balk at a flat number after being used to hourly. In my experience the opposite is true: clients prefer knowing the total. Hourly makes them nervous - an open meter with no ceiling and an incentive for you to go slow. A single outcome price removes all of that. The key is how you frame the conversation.</p>
<ul><li>Talk about the result, never your speed. The moment you justify a price by how fast you work, you've re-anchored the whole conversation on hours. Stay on the outcome.</li><li>Present the price as certainty for them. 'You'll know the full cost up front, no surprises' is a benefit clients actively want. Sell the predictability.</li><li>Don't apologize for finishing quickly. If you deliver in three days, that's a feature - they got their result fast. It is not a reason to discount.</li></ul>
<blockquote><strong>NOTE:</strong> The instinct to knock money off because 'it only took me a few days' is the hourly mindset trying to survive. Kill it. The client hired you for the outcome and they got the outcome. The speed is your edge, not their discount.</blockquote>
<h2>The Honest Tradeoffs</h2>
<p>Outcome pricing is not free of downsides, and I'd be lying to pretend otherwise. It puts the estimation risk on you. If you badly misjudge the effort, you eat the difference - the client's price doesn't move because your build got messy. That's the real cost of the model, and it's why the private effort check matters.</p>
<table><caption>Hourly vs outcome pricing, honestly</caption><thead><tr><th>Hourly</th><th>Outcome</th></tr></thead><tbody><tr><td>Getting faster shrinks your invoice</td><td>Getting faster raises your effective rate</td></tr><tr><td>Client watches a meter with no ceiling</td><td>Client knows the full cost up front</td></tr><tr><td>Estimation risk sits with the client</td><td>Estimation risk sits with you</td></tr><tr><td>Rewards slow work</td><td>Rewards skill - but punishes bad scoping</td></tr></tbody></table>
<p>For me the trade is worth it many times over. The risk of the occasional misjudged scope is small next to the daily reality of hourly quietly taxing every improvement I make. But go in clear-eyed: outcome pricing pays you for getting good, and charges you for scoping badly. Scope carefully and it's the better model by a wide margin.</p>
<h2>Try It on Your Next Quote</h2>
<p>You don't have to convert your whole business overnight. Take one upcoming project and quote it as an outcome instead of an hourly estimate. Figure out what the result is worth to the client, set a price that's a clear win for them, privately check it clears your effort floor, and put one number on the page. Watch how the conversation changes when you're selling a result instead of your time.</p>
<blockquote><strong>NOTE:</strong> We work through real pricing decisions inside the Claude Code Club - the actual numbers, the transitions off hourly, the quotes that landed and the ones that didn't. Join us at claudecodeclub.ai and bring your next quote.</blockquote>
<h2>FAQ</h2>
<p><strong>Why is hourly pricing bad for AI builds?</strong></p><p>Because it ties your income to your inefficiency. As you get faster with a tool like Claude Code, work that used to take days takes hours - the client gets the same result but your invoice shrinks. You spend real effort getting better and your reward is earning less for the same outcome. Hourly pricing quietly punishes every improvement you make, which is backwards.</p>
<p><strong>What is outcome-based pricing?</strong></p><p>It's quoting one price for the result the client wants, independent of how long it takes you to build it. Instead of charging for hours, you charge for the outcome - what solving the problem is worth to the client's business. Whether Claude Code helps you finish in a day or a week is your concern, not theirs. Getting faster then raises your effective rate instead of cutting your pay.</p>
<p><strong>How do I set an outcome-based price?</strong></p><p>Anchor on the value of the result to the client - time saved, revenue unlocked, cost removed - which you learn in the discovery conversation. Set a price that's a clear win for them relative to that value, privately sanity-check that it clears the effort the build will cost you, and quote one number tied to the result. The effort estimate stays behind the curtain so you don't underprice, but you never sell hours.</p>
<p><strong>Won't clients balk at a flat price instead of hourly?</strong></p><p>In practice most prefer it. Hourly makes clients nervous - an open meter with no ceiling and an incentive for you to work slowly. A single outcome price gives them certainty about the total up front, which is a benefit they actively want. The key is to frame the conversation around the result and the predictability, never around how fast you work.</p>
<p><strong>What's the downside of outcome-based pricing?</strong></p><p>It moves the estimation risk onto you. If you badly misjudge the effort, you eat the difference - the client's price doesn't change because your build got messy. That's the real cost of the model and why a private effort check matters before you quote. Outcome pricing pays you for getting good and charges you for scoping badly, so scope carefully and it's the better model by a wide margin.</p>]]></content:encoded>
    </item>
    <item>
      <title>I Built the Same Feature Three Ways to See Which Prompt Style Wins</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-prompt-style-experiment</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-prompt-style-experiment</guid>
      <pubDate>Tue, 28 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Prompting</category>
      <category>Building</category>
      <description><![CDATA[Everyone has an opinion on how to prompt Claude Code. I stopped arguing and ran the test: I built the exact same feature three times with three different prompt styles - terse, detailed spec, and plan-first. One clearly won. Here's the whole experiment and what it means for how you prompt.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>I built the same feature - a CSV import - three times with three prompt styles: terse one-liner, detailed spec, and plan-first.</li><li>Plan-first won clearly. Asking Claude to write a plan and confirm it before writing code produced the cleanest result with the fewest corrections.</li><li>The terse prompt was fast but drifted; the detailed spec was solid but rigid. Plan-first got the benefits of both - alignment before code, without me pre-writing every detail.</li></ul>
<h2>The Argument That Made Me Run the Test</h2>
<p>There's an endless debate about how to prompt Claude Code. One camp swears by short, punchy prompts - just tell it what you want and let it work. Another insists on writing a detailed spec so there's no ambiguity. A third says always make it plan first. Everyone's confident and nobody has evidence. So I stopped arguing and ran an actual experiment: build the exact same feature three times, once with each style, and see which one produced the best result with the least back-and-forth.</p>
<p>The feature was a CSV import - take an uploaded spreadsheet, validate the rows, map them to the right fields, and save them, with sensible handling for the messy real-world cases. Big enough to have decisions in it, small enough to build three times in an afternoon. Same codebase, same starting point, same desired end state. Only the prompt style changed.</p>
<h2>Style One: The Terse One-Liner</h2>
<p>First run: 'Add a CSV import that validates rows and saves them to the database.' One sentence, let it go. This is the style people love because it's fast and low-effort, and to be fair, it moved quickly. Claude produced a working import in minutes.</p>
<p>The trouble was everything it decided for me. It picked a validation approach I didn't want, made assumptions about the file format, and handled errors in a way that didn't match the rest of the codebase. None of it was wrong in isolation. All of it was drift - dozens of small decisions I then had to notice, question, and correct. The one-liner was fast to send and slow to finish, because the speed up front turned into a long tail of corrections. The less you say, the more Claude decides, and the more you review.</p>
<blockquote><strong>NOTE:</strong> Terse prompts aren't lazy - they're a bet that Claude's defaults match your intent. On a throwaway script that bet pays off. On real work with opinions baked in, the defaults drift from what you wanted and you pay it back in review.</blockquote>
<h2>Style Two: The Detailed Spec</h2>
<p>Second run, opposite extreme: I wrote a full spec before touching Claude. The exact validation rules, the field mapping, how to handle empty rows, duplicates, and malformed data, the error format, where to save. A solid page of detail. Then I handed the whole thing over.</p>
<p>This produced a much cleaner result than the one-liner. Claude followed the spec closely and the drift mostly vanished, because I'd made the decisions in advance instead of leaving them open. But it cost me real time up front - writing that spec took longer than the terse run took to build and correct. And it was rigid: a couple of my spec decisions turned out to be slightly wrong once I saw the feature working, and because I'd committed them so firmly, Claude built exactly what I'd specified rather than the better thing it might have suggested. I'd traded drift for a different problem - I front-loaded every decision, including the ones I wasn't yet qualified to make.</p>
<h2>Style Three: Plan-First (the Winner)</h2>
<p>Third run: I described the feature at a middle level of detail and then asked Claude to write a plan and confirm it with me before writing any code. Not a one-liner, not a full spec - a clear description of what I wanted, followed by 'show me your plan first.' Claude came back with its approach: how it would validate, how it would map fields, how it would handle the messy cases.</p>
<p>That plan was where the magic happened. I could see the decisions before they became code. Two of them I adjusted in one line each - a validation choice and how duplicates were handled. The rest I approved. Then Claude built it, and because we'd aligned on the plan, the result came out clean on the first pass with almost nothing to correct. I got the alignment of the detailed spec without pre-writing every rule, and I got to fix the wrong decisions while they were still cheap - in the plan, not in the code.</p>
<blockquote><strong>TIP:</strong> The plan-first move works because it puts the review at the cheapest possible moment. Correcting a decision in a plan takes one sentence. Correcting the same decision after it's built into working code takes a diff, a re-run, and a re-check. Same fix, a tenth of the cost.</blockquote>
<h2>The Results Side by Side</h2>
<table><caption>Same CSV import feature, three prompt styles</caption><thead><tr><th>Prompt style</th><th>Speed to first code</th><th>Corrections after</th><th>Final result</th></tr></thead><tbody><tr><td>Terse one-liner</td><td>Fastest</td><td>Many - lots of drift to fix</td><td>Working but off-spec</td></tr><tr><td>Detailed spec</td><td>Slowest to start</td><td>Few, but rigid</td><td>Clean but locked to my early guesses</td></tr><tr><td>Plan-first</td><td>Middle</td><td>Almost none</td><td>Cleanest, and I caught bad calls early</td></tr></tbody></table>
<p>Plan-first won, and not narrowly. It beat the one-liner on quality by a wide margin and beat the spec on both effort and flexibility. The one-liner's speed was an illusion that the correction tail erased. The spec's rigor was real but overpriced and inflexible. Plan-first landed in the middle on effort and came out ahead on the thing that actually matters - a clean result I trusted, with the wrong decisions caught while they were still cheap to change.</p>
<h2>How to Prompt Plan-First on Your Next Task</h2>
<p>You don't need a ritual. Describe the feature at a reasonable level of detail - more than a one-liner, less than a full spec - and then add one instruction: 'Write your plan and let me confirm it before you write any code.' Read the plan, adjust the decisions you disagree with in a line each, approve it, and let Claude build. That single habit gave me the best result of the three styles on real work, and it's now my default in the desktop app for anything with actual decisions in it.</p>
<blockquote><strong>NOTE:</strong> This is the kind of thing we test as a group inside the Claude Code Club - real experiments on how to get more out of Claude Code, shared with the actual before-and-after. Come run your own version and bring the results back to the room.</blockquote>
<h2>FAQ</h2>
<p><strong>What prompt style works best for Claude Code?</strong></p><p>In my head-to-head test building the same feature three ways, plan-first won clearly. You describe the feature at a middle level of detail and ask Claude to write a plan and confirm it before writing any code. It beat the terse one-liner on quality and the detailed spec on both effort and flexibility, producing the cleanest result with almost no corrections.</p>
<p><strong>What's wrong with short, terse prompts?</strong></p><p>They're fast to send but slow to finish. A one-liner is a bet that Claude's defaults match your intent - on a throwaway script it pays off, but on real work with opinions baked in, Claude decides dozens of small things its own way and you pay it back in a long tail of corrections. The less you say, the more Claude decides, and the more you have to review.</p>
<p><strong>Why not just write a detailed spec every time?</strong></p><p>A full spec does reduce drift, but it costs real time up front and it's rigid. Writing the spec can take longer than a quick build, and it forces you to make every decision in advance - including the ones you're not yet qualified to make until you've seen the feature working. You end up locked to your early guesses instead of getting the better approach Claude might have suggested.</p>
<p><strong>Why does plan-first beat the other styles?</strong></p><p>Because it moves the review to the cheapest possible moment. Correcting a decision in a plan takes one sentence; correcting the same decision after it's built into working code takes a diff, a re-run, and a re-check. Plan-first gives you the alignment of a detailed spec without pre-writing every rule, and lets you catch wrong decisions while they're still cheap to change.</p>
<p><strong>How do I prompt plan-first?</strong></p><p>Describe the feature at a reasonable level of detail - more than a one-liner, less than a full spec - then add one instruction: write your plan and let me confirm it before writing any code. Read the plan, adjust the decisions you disagree with in a line each, approve it, and let Claude build. It's a single habit that consistently produced the cleanest result on real work.</p>]]></content:encoded>
    </item>
    <item>
      <title>Test-Driven Development With Claude Code: How to Get Code That Actually Works</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-test-driven-development</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-test-driven-development</guid>
      <pubDate>Mon, 27 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Workflows</category>
      <category>Building</category>
      <category>Claude Code</category>
      <description><![CDATA[The fastest way to stop Claude Code from confidently shipping broken code is to make it write the test first. When the test exists before the code, the agent has a target it cannot fake its way past. Here is the Red-Green-Verify loop I use to get working code on the first pass.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Test-driven development with Claude Code means you have the agent write a failing test before it writes the feature, so the code has a concrete target to satisfy instead of a vague description it can interpret loosely.</li><li>It works because a test is an objective checker the agent cannot talk its way past. 'It looks done' becomes 'the test passes or it does not', which is exactly the kind of hard signal that keeps an agent honest.</li><li>I run the Red-Green-Verify loop: write the failing test (red), let Claude Code make it pass (green), then verify the test actually proves what you think it proves. The verify step is what stops a passing test from lying to you.</li></ul>
<h2>What Test-Driven Development With Claude Code Actually Means</h2>
<p>Test-driven development with Claude Code means you write the test before the feature, and you have the agent do it in that order on purpose. First you describe the behavior you want as a test that currently fails because the feature does not exist yet. Then Claude Code writes the code whose only job is to make that test pass. The test comes first because it turns a fuzzy request into a precise, checkable target.</p>
<p>This matters because the usual failure mode of an AI coding agent is confident wrongness. You ask for a feature, the agent writes something that reads well, and it tells you it is done. Without a test, 'done' is just the agent's opinion. With a test, 'done' is a green checkmark or a red failure, and there is no room for the agent to declare victory on code that does not actually work.</p>
<blockquote><strong>NOTE:</strong> A test written after the code tends to be shaped to pass the code you already wrote. A test written first is shaped to describe the behavior you actually want. That ordering is the entire point, and it is why doing it with an agent is even more valuable than doing it by hand.</blockquote>
<h2>Why Tests Make Claude Code Dramatically More Reliable</h2>
<p>An agent gets more reliable the harder it is to fake success, and a test is the hardest possible signal to fake. Give Claude Code a description and it can satisfy the words while missing the intent. Give it a failing test and the only way to succeed is to make real behavior match a real assertion. That single change removes most of the back-and-forth from a build.</p>
<ul><li>The test is an unambiguous definition of done. The agent cannot decide it is finished while the assertion is still red.</li><li>The test catches the silent break. When Claude Code changes one thing and quietly breaks another, the existing tests go red immediately instead of three days later in production.</li><li>The test lets the agent self-correct. Claude Code can run the suite, see the failure, and fix its own code without you refereeing every attempt.</li><li>The test is documentation that cannot rot. It states, in runnable form, exactly what the code is supposed to do.</li></ul>
<blockquote><strong>TIP:</strong> Tell Claude Code it is allowed to run the tests. An agent that can execute the suite, read the red output, and iterate until green does most of the debugging for you. The loop only works if the agent can actually see the result of its own work.</blockquote>
<h2>The Red-Green-Verify Loop - My Method for TDD With an Agent</h2>
<p>The Red-Green-Verify loop is the three-step routine I run for every feature I want to trust: red, green, verify. Classic test-first development stops at red then green. The verify step is the part I add for agents specifically, because an agent that writes both the test and the code can accidentally write a test that always passes, which is worse than no test at all.</p>
<ol><li>Red - write the failing test first. Ask Claude Code to write a test for the behavior you want and confirm it fails for the right reason. A test that fails because the feature is missing is good. A test that fails because it is broken is not, so read it before you move on.</li><li>Green - let Claude Code make it pass. Now hand the agent one job: make the test pass without touching the test. Because the target is concrete, this pass usually lands the first time, and when it does not, the red output tells the agent exactly what to fix.</li><li>Verify - check that the test proves what you think. Read the assertion yourself. Would it still pass if the feature were secretly broken? Temporarily break the code and confirm the test goes red. A test you have not verified is a comfort blanket, not a safety net.</li></ol>
<blockquote><strong>WARNING:</strong> The one thing that quietly ruins agent TDD is letting the agent edit the test to make it pass. If the code cannot satisfy the test, the code is wrong, not the test. Put a rule in CLAUDE.md that tests are not to be changed during the green step, and the whole loop stays honest.</blockquote>
<h2>A Real Build: A Payment Edge Case That Would Have Shipped Broken</h2>
<p>I had a client feature that calculated a discount, and the tricky part was the edge cases - a zero total, a discount larger than the total, a coupon that had expired. Described in plain English, Claude Code wrote something that looked completely correct and handled the happy path perfectly. It also would have charged a negative amount on one of those edge cases, and nothing about the code reading well would have caught it.</p>
<p>Because I ran the loop, I had the agent write the tests for those exact edge cases first, watched them go red, then let it write the calculation to make them green. The negative-charge case failed on the first green attempt, in the test, on my machine, in seconds, instead of on a real customer's card in a week. Then I did the verify step: I broke the clamp on purpose and confirmed the test caught it. The whole thing closed in one short session, and it shipped correct because the edge cases were the target from the start, not an afterthought.</p>
<table><caption>Same feature, with and without the test-first loop</caption><thead><tr><th>Approach</th><th>What Happens</th></tr></thead><tbody><tr><td>Describe the feature, accept what looks right</td><td>Happy path works, the edge case ships broken and surfaces in production</td></tr><tr><td>Tests written after the code</td><td>Tests are quietly shaped to pass the code you already have, so they miss the same cases the code missed</td></tr><tr><td>Red-Green-Verify loop</td><td>The edge cases are the target from the start, failures surface in seconds, and you confirm the test genuinely catches the break</td></tr></tbody></table>
<h2>When to Use TDD With Claude Code - and When to Skip It</h2>
<p>Test-first is not the right tool for every keystroke. The judgment call is about risk and clarity: use it where a mistake is expensive or the behavior is precise, and skip it where you are still figuring out what you even want.</p>
<ul><li>Use it for logic with clear right answers: calculations, data transformations, validation, anything with edge cases, and anything that touches money or user data.</li><li>Use it for changes to code you are afraid to touch. A test suite is what lets Claude Code refactor a scary file safely, because the tests scream the moment something breaks.</li><li>Skip it while exploring. If you are prototyping to discover what the feature should even be, tests just freeze a guess. Explore first, then write tests once the behavior is decided.</li><li>Skip it for throwaway one-offs. A script you will run once and delete does not need a suite around it.</li></ul>
<blockquote><strong>NOTE:</strong> The loop is easiest to actually run in the Claude Code desktop app, where you can watch the test go red, watch the agent work, and watch it turn green. Seeing the state change is what makes the verify step a habit instead of a step you skip.</blockquote>
<h2>Start With One Risky Function This Week</h2>
<p>Pick one function you would be nervous to change - something with edge cases or something that handles money. Ask Claude Code to write the failing tests first, confirm they fail for the right reason, then let it write the code to make them green, and finish by breaking the code on purpose to prove the tests catch it. Do that once on real code and the loop clicks: you stop hoping the agent got it right and start knowing, because the test told you.</p>
<blockquote><strong>NOTE:</strong> Inside the Claude Code Club we share our real CLAUDE.md test rules and the exact prompts we use to run the Red-Green-Verify loop, and we pressure-test each other's suites before they hit a client build. Come into the room with a function you are scared to change and we will help you wrap it in tests you can trust.</blockquote>
<h2>FAQ</h2>
<p><strong>What is test-driven development with Claude Code?</strong></p><p>It is having Claude Code write a failing test before it writes the feature, so the code has a concrete, checkable target instead of a loose description. You write the test that describes the behavior you want, confirm it fails because the feature does not exist yet, then let the agent write the code whose only job is to make that test pass. The test turns 'it looks done' into 'it passes or it does not', which keeps the agent honest.</p>
<p><strong>Why does writing tests first make Claude Code more reliable?</strong></p><p>Because a test is the hardest signal for an agent to fake. Given only a description, Claude Code can satisfy the words while missing the intent and still declare itself finished. Given a failing test, the only way to succeed is to make real behavior match a real assertion. Tests also catch silent breaks the moment they happen and let the agent run the suite and fix its own code, which removes most of the back-and-forth from a build.</p>
<p><strong>How do I stop Claude Code from cheating on its own tests?</strong></p><p>Run the verify step and put a hard rule in CLAUDE.md that the agent may not edit tests to make them pass during the green step. An agent that writes both the test and the code can accidentally write a test that always passes, so after it goes green, read the assertion yourself and break the code on purpose to confirm the test actually catches the failure. If the code cannot satisfy the test, the code is wrong, not the test.</p>
<p><strong>When should I not use TDD with Claude Code?</strong></p><p>Skip it while you are still exploring what a feature should be, because tests freeze a guess before you have decided the behavior, and skip it for throwaway scripts you will run once and delete. Use test-first for logic with clear right answers, anything with edge cases, anything that touches money or user data, and any change to code you are afraid to break. Explore first, then wrap the decided behavior in tests.</p>]]></content:encoded>
    </item>
    <item>
      <title>&quot;Can You Guarantee Results?&quot; - How to Answer the Guarantee Objection Without Lying</title>
      <link>https://www.claudecodeclub.ai/blog/how-to-handle-guarantee-results-objection</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/how-to-handle-guarantee-results-objection</guid>
      <pubDate>Mon, 27 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Selling</category>
      <category>Clients</category>
      <category>Closing</category>
      <description><![CDATA[When a client asks you to guarantee results, saying yes is a trap and saying no loses the deal. The move is to guarantee the one thing you actually control - the work - and stop pretending you control the things you do not. Here is the Process Guarantee I use to answer with confidence and still be honest.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>When a client asks you to guarantee results, they are really asking to feel safe spending the money. They want to know you are not going to take their cash and disappear. Answer the fear, not the literal word 'guarantee'.</li><li>Never guarantee an outcome you do not control - revenue, rankings, a specific number of sales. Those depend on the client's product, market, and follow-through, so a promise there is a promise you cannot keep and a refund waiting to happen.</li><li>Use the Process Guarantee: guarantee your work, your standard, and your accountability - the things that are entirely yours - and be plain that the outcome depends on factors you share. Clients trust the honest, specific promise far more than the impossible one.</li></ul>
<h2>What &quot;Can You Guarantee Results?&quot; Really Means</h2>
<p>When a client asks 'can you guarantee results', they are almost never asking for a literal legal guarantee. They are asking a more human question: 'How do I know I am not about to waste this money?' The word guarantee is the costume the fear wears. Underneath it is a person who has probably been burned before, or knows someone who was, and needs a reason to believe you are different. You answer that fear by being specific and honest, not by making a bigger promise.</p>
<p>This matters because the instinct under pressure is to say yes. The deal is close, the client wants reassurance, so you hear yourself promising a result you do not actually control. That yes feels good for exactly as long as it takes to under-deliver on a number that was never yours to promise. The guarantee objection is a trust question, and you cannot buy trust with a promise you will have to break.</p>
<blockquote><strong>NOTE:</strong> There is a real version of this where the client wants a guarantee because a past vendor genuinely vanished mid-project. That is a fair fear with a fair answer - milestones, a clear scope, and money tied to delivered work. The Process Guarantee below is built to answer exactly that, without you promising the market will behave.</blockquote>
<h2>Why Guaranteeing the Outcome Is a Trap</h2>
<p>Guaranteeing a result you do not control does three kinds of damage, and it is worth seeing all three before your next call so the temptation loses its shine.</p>
<ul><li>It writes a refund you cannot afford. Tie your fee to 'you will make an extra 10k' and you have handed the client a reason to claw the money back when the market, their pricing, or their own follow-through falls short - none of which you controlled.</li><li>It attracts the wrong clients. People who need an outcome guaranteed are usually the ones unwilling to do their part. The guarantee filters for the clients most likely to blame you for their own inaction.</li><li>It quietly signals you are unsure. Overpromising is what nervous people do. A calm, specific answer about what you will actually deliver reads as far more competent than a grand promise about a number you cannot move alone.</li></ul>
<blockquote><strong>WARNING:</strong> The moment you promise a result that depends on the client, you have made yourself responsible for their behavior. You now own the risk of them not launching, not following up, not doing the marketing. Never accept accountability for a job you are not the one doing.</blockquote>
<h2>The Process Guarantee - Guarantee What You Actually Control</h2>
<p>The Process Guarantee is the answer I give every time the guarantee question comes up: guarantee the work, the standard, and the accountability, and be honest that the outcome is shared. It lets you sound confident and stay truthful in the same breath, because everything you are promising is genuinely inside your control.</p>
<ol><li>Guarantee the work gets done to a standard. 'I guarantee I will build exactly what we scope, to a professional standard, and I will fix anything that does not work as agreed.' That is a real promise you can keep every single time.</li><li>Guarantee your accountability, not the market's cooperation. 'I guarantee you will always know where things stand, and your money is tied to delivered work through milestones - you are never paying for a promise you cannot see.' This is the exact reassurance the burned client is looking for.</li><li>Be honest about the shared outcome, then re-anchor on your track record. 'What I can't promise is how your market responds - that depends on your product and follow-through as much as my build. What I can show you is what this has done for people in a similar spot.' Trade the impossible promise for real proof.</li></ol>
<blockquote><strong>TIP:</strong> Have your proof ready before the call - a specific past result, a short case study, a testimonial that speaks to your reliability. When you decline to guarantee the outcome, you want to immediately fill that space with evidence. 'I won't promise a number, but here is what actually happened last time' is a far stronger close than any guarantee.</blockquote>
<h2>What This Sounds Like On a Real Call</h2>
<p>A client asked me flat out if I could guarantee the automation would make them more money. The weak move would have been to say yes to keep the deal warm. Instead I told them the truth in a confident voice: I guaranteed the system would do exactly what we scoped, that I would fix anything that broke, and that their payments would be tied to delivered milestones so they were never out of pocket for work they could not see.</p>
<p>Then I named the honest limit and immediately backed it with proof. I said the money it makes them depends on how they use the time it frees up, which is theirs to control, and then I showed them what the same build had saved a business like theirs the month before. They signed - not despite the honesty, but because of it. The refusal to overpromise was the thing that made every other promise believable.</p>
<table><caption>Two answers to &quot;can you guarantee results?&quot;</caption><thead><tr><th>Answer</th><th>What the Client Concludes</th></tr></thead><tbody><tr><td>Yes, I guarantee the outcome</td><td>Either they do not believe you, or they do and you have just signed up to be blamed for factors you do not control</td></tr><tr><td>The Process Guarantee plus proof</td><td>This person is honest, knows exactly what they are responsible for, and has done it before - which is what actually earns the trust</td></tr></tbody></table>
<h2>The Mindset That Makes the Honesty Land</h2>
<p>This answer only works if you are genuinely proud of the work you do, so the confidence is real and not performed. When you know your build is solid and your process is tight, declining to guarantee the market stops feeling like a weakness you are admitting and starts feeling like a professional drawing a clear, fair line. Clients can feel the difference between someone dodging and someone being straight with them.</p>
<blockquote><strong>NOTE:</strong> Inside the Claude Code Club we rehearse these exact moments - the guarantee ask, the refund-bait question, the nervous close - and we help each other build the proof stack that lets you answer honestly and still win the deal. Bring the objection that makes you want to overpromise and we will help you find the honest version that closes.</blockquote>
<h2>FAQ</h2>
<p><strong>How do you respond when a client asks you to guarantee results?</strong></p><p>Guarantee the things you actually control and be honest about the things you do not. Use the Process Guarantee: promise the work will be built to a professional standard, promise you will fix what does not work as agreed, and promise their money is tied to delivered milestones so they never pay for a promise they cannot see. Then say plainly that the outcome depends on factors you share, like their product and follow-through, and immediately back that honesty with a specific past result.</p>
<p><strong>Should I ever guarantee an outcome to close a deal?</strong></p><p>No, not an outcome you do not fully control, like a revenue number, a ranking, or a specific volume of sales. Those depend on the client's product, market, and effort as much as your work, so guaranteeing them writes a refund you cannot afford and attracts clients most likely to blame you for their own inaction. Guarantee your work and your accountability instead, which you control completely, and let proof do the rest.</p>
<p><strong>What is a process guarantee?</strong></p><p>A process guarantee is a promise about the parts of the job that are entirely yours - that the work will be delivered to a defined standard, that you will fix anything that does not work as agreed, and that payment is tied to delivered milestones so the client is never out of pocket for unseen work. It gives a nervous client the exact reassurance they want, which is that you will not take the money and disappear, without you promising a market outcome you cannot control.</p>
<p><strong>What if the client only wants to hire someone who guarantees results?</strong></p><p>Then they are usually filtering for a vendor willing to lie, and that is not a client you want. Explain, calmly and once, that anyone guaranteeing a specific outcome is either not being honest about what they control or is pricing in the refunds, and that you would rather guarantee the work and show them real proof of what it has done. If that is not enough, let them walk - the clients who need an impossible promise are the ones most likely to become a dispute.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Use Claude Code Subagents to Run Work in Parallel (Without Losing Control)</title>
      <link>https://www.claudecodeclub.ai/blog/how-to-use-claude-code-subagents</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/how-to-use-claude-code-subagents</guid>
      <pubDate>Sun, 26 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Workflows</category>
      <category>Building</category>
      <category>Claude Code</category>
      <description><![CDATA[Subagents let Claude Code spin up separate agents that each own a task and run at the same time. Used well they cut a multi-part build from an afternoon to an hour. Used badly they make a mess in parallel. Here is the Delegate-Verify loop I use to get the speed without the chaos.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Claude Code subagents are separate agents the main session spins up to own a single task each and run in parallel, so independent work happens at the same time instead of one step after another.</li><li>Use them for work that splits cleanly - research three libraries, migrate ten files, write tests while another agent writes docs. Do not use them for one tightly coupled change where each step depends on the last.</li><li>I run what I call the Delegate-Verify loop: split the work into independent tasks, brief each subagent completely, then verify every result before I merge it. The verify step is what keeps parallel speed from turning into parallel mess.</li></ul>
<h2>What Claude Code Subagents Actually Are</h2>
<p>Claude code subagents are separate agents your main Claude Code session launches to handle a specific task on their own. Each one gets its own instructions and its own working context, does the job you handed it, and reports a single result back to the main session. The main session stays in charge - it decides what to delegate, reads what comes back, and stitches the results together. Think of it as Claude hiring short-term help for the parts of a job that can happen at the same time.</p>
<p>The reason this matters is that most builds have independent parts hiding inside them. Researching which of three libraries to use does not depend on writing your test suite. Migrating file four does not depend on migrating file seven. When those parts run one after another in a single thread, you wait through all of them in sequence. When they run as subagents, they happen in parallel and you wait once.</p>
<blockquote><strong>NOTE:</strong> A subagent is not a second copy of you giving vague orders. It is a worker you brief. The quality of what comes back is set almost entirely by how completely you brief it - which is the whole point of the Delegate-Verify loop below.</blockquote>
<h2>When to Use Subagents - and When Not To</h2>
<p>Use subagents when the work splits into parts that do not depend on each other. That is the entire test. If two tasks can be done by two different people in two different rooms without either one asking the other a question, they are subagent candidates.</p>
<ul><li>Good fit: researching several options at once - one agent per library, framework, or API, each reporting back a short recommendation.</li><li>Good fit: bulk edits across many independent files - a migration, a rename, applying the same pattern to ten routes.</li><li>Good fit: parallel tracks of one project - one agent writes tests while another writes documentation while a third audits for a specific bug class.</li><li>Bad fit: a single tightly coupled change where step two needs the exact output of step one. Splitting that across agents just adds coordination overhead.</li><li>Bad fit: anything where you cannot clearly say what 'done' looks like for each piece. If you cannot write the brief, you cannot delegate it yet.</li></ul>
<blockquote><strong>WARNING:</strong> The most common mistake is delegating coupled work to look fast. If the agents have to reconcile each other's output at the end, you have not saved time - you have moved the hard part to the merge and made it harder.</blockquote>
<h2>The Delegate-Verify Loop - My Method for Running Subagents</h2>
<p>The Delegate-Verify loop is the three-step routine I run every time I use subagents: split, brief, verify. It exists because parallel work fails in a specific way - the agents each do something reasonable, but the pieces do not fit, and you find out at the end when it is expensive to fix. The loop front-loads the thinking so the merge is boring.</p>
<ol><li>Split: break the work into tasks that are genuinely independent. Write each one as a sentence starting with a verb - 'migrate the auth routes', 'write tests for the parser', 'research the three queue libraries'. If two sentences reference each other, they are not split yet.</li><li>Brief: give each subagent everything it needs and nothing it does not. The exact files to touch, the conventions to follow, the definition of done, and what to leave alone. A subagent cannot ask a clarifying question the way you would in chat, so the brief has to stand on its own.</li><li>Verify: read every result before you accept it. Do not merge on trust because the summary sounds confident. Check the actual diff, run the tests, confirm the agent stayed inside its lane. This is the step people skip and the step that earns all the speed.</li></ol>
<blockquote><strong>TIP:</strong> Put your project conventions in CLAUDE.md before you delegate. Every subagent reads it, so your folder rules, naming, and always/never guardrails propagate to all of them automatically - you brief once in the file instead of repeating yourself in every task.</blockquote>
<h2>A Real Build: Ten Files in an Hour Instead of an Afternoon</h2>
<p>I had a client migration - ten route files that all needed the same change to how they handled a shared response format. Done one at a time in a single session, it is a slow afternoon of the same mechanical edit repeated, with attention drifting by file six. The files did not depend on each other, which is exactly the signal to parallelize.</p>
<p>I split it into per-file tasks, wrote one brief that named the shared pattern and the two things to never change, and let subagents run the edits in parallel while I watched. Then I ran the verify step properly: I read all ten diffs and ran the test suite before accepting anything. Two files needed a small correction the agents had handled slightly differently - caught in five minutes because I checked instead of trusting. The whole job closed inside an hour. The speed came from the parallelism; the correctness came from not skipping verify.</p>
<table><caption>Sequential vs Delegate-Verify on the same ten-file migration</caption><thead><tr><th>Approach</th><th>What It Feels Like</th></tr></thead><tbody><tr><td>One agent, file by file</td><td>A long afternoon of the same edit; attention drifts; small inconsistencies slip in unnoticed</td></tr><tr><td>Subagents with no verify</td><td>Fast, but the inconsistencies ship because nobody read the diffs</td></tr><tr><td>Delegate-Verify loop</td><td>Parallel edits plus a deliberate review pass - fast and correct, because the merge is where you look hardest</td></tr></tbody></table>
<h2>How to Keep Control While Agents Run in Parallel</h2>
<p>Control does not come from watching every keystroke - it comes from the shape of the work you hand out. Three habits keep a parallel run from drifting.</p>
<ul><li>Give each subagent a narrow lane and say what is out of bounds. 'Only touch files in /routes/auth. Do not change the shared types.' Boundaries prevent two agents from editing the same thing.</li><li>Ask for a small, checkable result, not a vague report. 'Return the diff and the test output' beats 'let me know how it went.'</li><li>Always run the verify step yourself. The subagents are fast; your judgment on whether the result is right is the part that does not parallelize.</li></ul>
<blockquote><strong>NOTE:</strong> Subagents shine in the Claude Code desktop app because you can watch the parallel tracks and read each result before merging. The terminal works too, but the app makes the verify step easier to actually do.</blockquote>
<h2>Start Small: Your First Subagent Run</h2>
<p>Pick a job you already understand that has an obvious split - a small migration, a research question with three options, or tests-plus-docs on a feature you just built. Write the tasks as verb-first sentences, brief each one completely, let them run, and then read every result before you accept it. Do that once on real work and the pattern clicks: delegate the independent parts, verify the merge, keep the speed without the mess.</p>
<blockquote><strong>NOTE:</strong> Inside the Claude Code Club we share our real subagent briefs and Delegate-Verify setups, and we pressure-test each other's splits before they hit a client build. Come into the room, bring a job you want to parallelize, and we will help you split it cleanly.</blockquote>
<h2>FAQ</h2>
<p><strong>What are subagents in Claude Code?</strong></p><p>Subagents are separate agents your main Claude Code session launches to each handle a single task on their own and run in parallel. Each gets its own brief and working context, does the job, and reports one result back to the main session, which stays in charge of what to delegate and how to merge the results. They are useful when a build has parts that do not depend on each other.</p>
<p><strong>When should I use Claude Code subagents?</strong></p><p>Use them when the work splits into genuinely independent tasks - researching several options at once, applying the same change across many files, or running parallel tracks like tests and docs at the same time. Avoid them for a single tightly coupled change where each step needs the exact output of the last, because the coordination cost outweighs the parallel speed.</p>
<p><strong>How do I stop subagents from making a mess?</strong></p><p>Run the Delegate-Verify loop: split the work into independent tasks, brief each subagent completely including what is out of bounds, and verify every result before you merge it. Put your project conventions in CLAUDE.md so every subagent inherits the same rules. The verify step - reading the actual diffs and running the tests instead of trusting the summary - is what keeps parallel speed from turning into parallel chaos.</p>
<p><strong>Do subagents read my CLAUDE.md file?</strong></p><p>Yes. When Claude Code spins up subagents, each one reads the project's CLAUDE.md, so your folder conventions, naming rules, and always/never guardrails propagate to every agent automatically. You brief the shared rules once in the file rather than repeating them in every task.</p>]]></content:encoded>
    </item>
    <item>
      <title>&quot;Can You Do It Cheaper?&quot; - How to Handle the Price Objection on AI Projects</title>
      <link>https://www.claudecodeclub.ai/blog/can-you-do-it-cheaper-objection</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/can-you-do-it-cheaper-objection</guid>
      <pubDate>Sun, 26 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Selling</category>
      <category>Clients</category>
      <category>Pricing</category>
      <description><![CDATA[When a client asks you to drop the price, they are not telling you it costs too much - they are telling you they cannot yet see what they are getting. Discounting on the spot trains them to push again. Here is the Value-Anchor response I use to hold my price without losing the deal.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>'Can you do it cheaper' is almost never about the number - it is a signal the client cannot yet see the value clearly enough to feel the price is fair. Fix the value gap, not the price.</li><li>Never discount on the spot. Cutting the price the moment it is questioned tells the client the first number was padded and teaches them to push you every time.</li><li>I use the Value-Anchor response: acknowledge, re-anchor on the outcome and its cost of inaction, then offer a change in scope rather than a change in price. You protect your rate and the client still gets a path to yes.</li></ul>
<h2>What &quot;Can You Do It Cheaper?&quot; Really Means</h2>
<p>When a client asks 'can you do it cheaper', they are almost never making a statement about your price - they are making a statement about your value. The real message is 'I cannot yet see enough here to feel good about paying that.' The gap is between what the build is worth to their business and what they currently understand it will do for them. That gap is your job to close, and you do not close it by moving the number.</p>
<p>This matters because the instinct is to hear a price objection and answer it with a price. You cannot. If you drop the number the moment it is questioned, you have just told the client that your first price was soft, that there was margin to give, and that pushing works. You will get pushed on the next project, and the one after that. The price objection is a value conversation wearing a price costume.</p>
<blockquote><strong>NOTE:</strong> There is a real exception: sometimes the client genuinely does not have the budget for the outcome they want. That is not an objection to overcome - it is a scope mismatch to solve. The Value-Anchor response handles both, because its last move is to change scope, not price.</blockquote>
<h2>Why Discounting On the Spot Costs You More Than the Discount</h2>
<p>Cutting your price the moment it is questioned does three kinds of damage, and only one of them is the money. It is worth seeing all three before your next call.</p>
<ul><li>It reprices your credibility. A number that drops the instant it meets resistance was never anchored to anything real, and the client now knows it.</li><li>It trains the behavior. You have shown that objecting gets a reward, so every future quote becomes a negotiation you started from behind.</li><li>It devalues the outcome. If the build is worth less than you said the second a client frowns, the client quietly concludes the outcome was worth less too - which is the opposite of what you need them believing before they start.</li></ul>
<blockquote><strong>WARNING:</strong> The one time to genuinely lower a price is when you also lower the scope. A smaller number for the same deliverables is a discount. A smaller number for a smaller deliverable is a decision. Clients respect the second and remember the first.</blockquote>
<h2>The Value-Anchor Response - Three Moves That Hold Your Price</h2>
<p>The Value-Anchor response is the sequence I run every time the price gets questioned: acknowledge, re-anchor, then trade scope. It keeps the conversation calm, keeps you off the defensive, and gives the client a real path to yes that is not just 'you caved'.</p>
<ol><li>Acknowledge without flinching. 'Totally fair to ask.' You are not arguing and you are not apologizing. A short, steady acknowledgement signals the price is not a nervous guess you are ready to abandon.</li><li>Re-anchor on the outcome and the cost of not doing it. Move the frame off your fee and onto what the build is worth: the hours it saves every week, the revenue it unlocks, the manual process it kills. 'This pays for itself the first month it runs.' The price only feels high next to nothing - next to the outcome, it is small.</li><li>Trade scope, never rate. If they still need a smaller number, change what they get, not what you charge for it. 'I can hit a lower number if we start with just the piece that saves you the most time and add the rest in phase two.' Now the price moved for a reason the client chose, and your rate held.</li></ol>
<blockquote><strong>TIP:</strong> Have the phase-two version of every proposal ready before the call. If you know in advance which single piece delivers most of the value, you can offer the smaller scope instantly instead of scrambling to carve one up under pressure.</blockquote>
<h2>What This Sounds Like On a Real Call</h2>
<p>A client came back on a build quote and asked if I could do it for less. The old reflex would have been to shave a few hundred off to keep things moving. Instead I ran the sequence. I said it was a fair thing to ask, then I moved the frame: the automation was going to remove roughly a day a week of manual work for two people, so the question was not whether it was expensive, it was how fast it paid back. Then I gave them the choice.</p>
<p>I offered to start with just the highest-impact piece at a lower number and add the rest once they had seen it run. They took the phased version at my full rate - a smaller first invoice for a smaller first scope, with the rest lined up behind it. The price moved because the scope moved, not because I blinked. And because the first number held, the phase-two conversation started from trust instead of from a fresh haggle.</p>
<table><caption>Two ways to answer 'can you do it cheaper'</caption><thead><tr><th>Response</th><th>What the Client Learns</th></tr></thead><tbody><tr><td>Drop the price to keep the deal</td><td>The first number was padded; pushing works; the outcome must be worth less than you claimed</td></tr><tr><td>Re-anchor on value, then trade scope</td><td>The price is real; the outcome is worth it; a smaller number means a smaller build, decided together</td></tr></tbody></table>
<h2>The Mindset That Makes the Words Work</h2>
<p>The script only lands if you actually believe your price is fair, so do the work that earns that belief before the call. Know the outcome your build creates in the client's own terms - hours, dollars, headaches removed. When you can state the value plainly and calmly, holding your price stops feeling like a confrontation and starts feeling like a fact you are simply sharing.</p>
<blockquote><strong>NOTE:</strong> Inside the Claude Code Club we run through these exact objection moments and rehearse the Value-Anchor response out loud before real calls. Bring the deal you are nervous about, and we will help you find the value frame that holds your price.</blockquote>
<h2>FAQ</h2>
<p><strong>How do you respond when a client asks if you can do it cheaper?</strong></p><p>Do not answer a price objection with a price. Run the Value-Anchor response: acknowledge the question without flinching, re-anchor the conversation on the outcome and the cost of not doing the build, then - if they still need a smaller number - trade scope rather than rate. Offer to start with the single highest-impact piece at your full rate and phase the rest. The price moves because the scope moved, not because you caved.</p>
<p><strong>Should I ever discount an AI project?</strong></p><p>Only when you also reduce the scope. A lower number for the same deliverables tells the client your first price was padded and trains them to push you every time. A lower number for a smaller, clearly defined deliverable is a legitimate decision the client makes with you. Discount the scope, never just the rate.</p>
<p><strong>What if the client genuinely has no budget?</strong></p><p>Then it is a scope mismatch, not an objection to beat. Use the same last move: find the single piece of the project that delivers the most value for the budget they do have, deliver that first, and line up the rest as a later phase. They get a real result inside their budget and you keep your rate intact.</p>
<p><strong>Why is discounting on the spot a mistake?</strong></p><p>Because it costs more than the discount itself. Cutting the price the moment it is questioned reprices your credibility, trains the client that objecting gets rewarded, and quietly signals the outcome was worth less than you said. Holding your price and re-anchoring on value protects all three - your rate, your authority, and the client's belief in the result.</p>]]></content:encoded>
    </item>
    <item>
      <title>The Claude Code CLAUDE.md File: How I Set It Up Once and Stopped Repeating Myself</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-claude-md-file</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-claude-md-file</guid>
      <pubDate>Sat, 25 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Workflows</category>
      <category>Building</category>
      <category>Claude Code</category>
      <description><![CDATA[CLAUDE.md is the project memory file Claude Code reads at the start of every session. Set it up once with your conventions, guardrails, and always/never rules and Claude walks in already briefed - no re-explaining, no drift, no wasted back-and-forth on every new chat.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>CLAUDE.md is the file Claude Code reads automatically at the start of every session - it's your project's standing brief so you never re-explain context twice.</li><li>Put your stack conventions, key commands, and always/never guardrails in it. Keep it short, specific, and up to date - a bloated or stale CLAUDE.md is worse than none.</li><li>I call this the Standing-Context method: write the brief once, drop it in the project root, and every future session starts with Claude already knowing the rules.</li></ul>
<h2>What the Claude Code CLAUDE.md File Is (and Why It Exists)</h2>
<p>The claude code claude.md file is a plain-text file you place in your project root that Claude Code reads automatically at the start of every session. It's not a config file for the tool itself - it's a brief for Claude. When you open the desktop app or start a terminal session in that directory, Claude reads CLAUDE.md before it reads anything you type. Everything in it is in context before your first message lands.</p>
<p>Before I set one up on a client project, every session started the same way: I'd spend the first few messages re-establishing which tech stack we were using, what commands to run, what files were off-limits, and what patterns the client cared about. A five-minute re-orientation tax on every chat. CLAUDE.md is the fix. You pay the setup cost once. Every session after that starts with Claude already oriented.</p>
<blockquote><strong>TIP:</strong> CLAUDE.md is not a README. The README explains the project to humans. CLAUDE.md explains the project to Claude - different audience, different content. Keep them separate.</blockquote>
<h2>Where CLAUDE.md Lives and How Claude Finds It</h2>
<p>Drop the file in your project root and name it exactly CLAUDE.md - all caps, .md extension. Claude Code finds it automatically. You do not need to import it, reference it in a config, or point Claude at it. It's just there and Claude reads it. In the Claude Code desktop app the file is picked up as soon as you open the project folder. In the terminal, it's read from the working directory when you start your session.</p>
<p>You can also have a global CLAUDE.md at the root of your home directory for rules that apply across every project - things like your preferred response style, tone guardrails, or the way you like code commented. Project-level CLAUDE.md takes priority over the global one when both exist.</p>
<blockquote><strong>NOTE:</strong> If you're using the Claude Code desktop app, you can create CLAUDE.md directly from the app's project settings. In the terminal, a quick `touch CLAUDE.md` in your project root is all it takes to get started.</blockquote>
<h2>What to Put In It - The Standing-Context Method</h2>
<p>I use what I call the Standing-Context method: write the brief once, make it specific to the project, and keep it under one screen of text. The goal is to answer the three questions Claude would otherwise ask in the first three messages of every session: what are we building, how do we build it here, and what are the rules.</p>
<ul><li>Stack and tooling: the language, framework, package manager, and any non-obvious library choices. One line each. 'We use Bun not npm.' 'UI is Tailwind only - no inline styles.'</li><li>Key commands: the exact command to start the dev server, run tests, and build. Claude will suggest these constantly - give it the right ones up front.</li><li>File and folder conventions: what the directory structure means, which folders are off-limits, and where generated files go.</li><li>Always/never rules: the explicit guardrails. 'Never edit files in /dist.' 'Always write tests for any new utility function.' 'Use server actions, not API routes.'</li><li>Client or project context: one short paragraph on what the product does and who it's for. Gives Claude a frame for every decision it makes.</li></ul>
<blockquote><strong>TIP:</strong> Write the rules in the affirmative where you can. 'Use named exports' is clearer than 'don't use default exports.' Claude follows directives better when they say what to do rather than what to avoid.</blockquote>
<h2>What NOT to Put In CLAUDE.md</h2>
<p>The file earns its value by being short and specific. Every line that doesn't need to be there makes the file worse - Claude has to weigh it along with everything that does matter.</p>
<ul><li>Don't paste in large code blocks, component examples, or schema definitions. Link Claude to the file instead - 'see src/types/schema.ts for the full type definitions.'</li><li>Don't put secrets, API keys, or credentials in CLAUDE.md. It's a plaintext markdown file that lives in your repo.</li><li>Don't copy your README into it. The overlap wastes space and both files go stale at different rates.</li><li>Don't add aspirational rules you haven't actually decided yet. Stale or speculative guardrails cause Claude to follow conventions you've abandoned.</li></ul>
<h2>Before and After: The Client Build Where CLAUDE.md Saved a Full Afternoon</h2>
<p>I was three weeks into a client build - a Next.js dashboard with a specific folder structure the client's team had already agreed on. Every session I'd open Claude Code, describe the task, and within a few messages Claude would start suggesting component placements that didn't match the project structure. Not wrong, just different from what we'd agreed. I'd correct it, it would adjust, and we'd move forward. A small tax every time.</p>
<p>I spent fifteen minutes writing a CLAUDE.md: the folder conventions, the component naming rules, the three commands the client's CI needed, and two hard always/never rules about where server logic could live. The next session Claude walked in already knowing all of it. It placed files correctly without prompting, suggested patterns that matched the existing codebase, and I didn't correct a single structural decision in the entire session. The re-orientation tax went to zero.</p>
<blockquote><strong>NOTE:</strong> The compounding effect is the real win. One session of saved corrections isn't much. But across a multi-week client project with daily sessions, those five-minute re-orientation costs add up to hours. CLAUDE.md pays for itself inside the first week.</blockquote>
<h2>The Mistakes That Make CLAUDE.md Backfire</h2>
<p>CLAUDE.md only works as long as it's accurate. The two failure modes I see most:</p>
<table><caption>Common CLAUDE.md mistakes and what they cost you</caption><thead><tr><th>Mistake</th><th>What Goes Wrong</th></tr></thead><tbody><tr><td>Bloating it with every project detail</td><td>Claude treats all rules equally - the important ones get diluted among the noise</td></tr><tr><td>Never updating it after you change conventions</td><td>Claude confidently follows rules you've abandoned, which is worse than no rules</td></tr><tr><td>Copy-pasting the same generic rules into every project</td><td>You lose the project-specific signal that makes CLAUDE.md valuable</td></tr><tr><td>Writing rules too vaguely</td><td>'Write clean code' tells Claude nothing. 'No function longer than 40 lines' is something it can actually follow</td></tr></tbody></table>
<blockquote><strong>WARNING:</strong> Treat CLAUDE.md like a living document. When you change a project convention, update the file the same day. A stale CLAUDE.md pointing Claude at outdated rules is actively worse than no file at all - it creates confident drift.</blockquote>
<h2>How to Use CLAUDE.md with Subagents and Multi-File Builds</h2>
<p>When Claude Code spins up subagents to run tasks in parallel, each subagent also reads CLAUDE.md. This means your guardrails propagate automatically - you don't have to re-brief each agent or worry that a background subagent is going to place a file in the wrong folder or use the wrong naming convention. The Standing-Context in CLAUDE.md travels with every agent that runs in the project.</p>
<p>On large multi-file builds, I also use CLAUDE.md to define a small set of /skills that Claude should treat as available. I'll list the skill name and a one-line description so Claude knows it can invoke them without me prompting it each time. This keeps orchestration decisions inside the project context file rather than buried in chat history.</p>
<h2>How to Create Your CLAUDE.md Right Now</h2>
<p>In the Claude Code desktop app, open your project and look for the project settings - you'll find an option to create or edit CLAUDE.md directly. In the terminal, run `touch CLAUDE.md` in your project root and open it in any editor. Start with three sections: Stack, Commands, Rules. Keep each section to five bullets or fewer. Once you've shipped one project with it, you'll find you don't know how you worked without it.</p>
<blockquote><strong>NOTE:</strong> The Claude Code Club community is where we share real CLAUDE.md setups, review each other's standing-context files, and work through the edge cases of multi-session client builds. Come into the room and put the Standing-Context method to work on your current project.</blockquote>
<h2>FAQ</h2>
<p><strong>What is the CLAUDE.md file in Claude Code?</strong></p><p>CLAUDE.md is a plain-text file you place in your project root that Claude Code reads automatically at the start of every session. It acts as a standing brief - your stack conventions, key commands, and always/never guardrails - so Claude is already oriented before your first message. You write it once and every future session inherits that context.</p>
<p><strong>Where do I put the CLAUDE.md file?</strong></p><p>Place it in your project root, named exactly CLAUDE.md with all caps. Claude Code finds it automatically from the working directory - no config required. You can also keep a global CLAUDE.md in your home directory for rules that apply across every project, though project-level rules take priority when both exist.</p>
<p><strong>What should I put in CLAUDE.md?</strong></p><p>The five things that earn their place: your tech stack and tooling choices, the key commands to start, test, and build the project, folder and file conventions, explicit always/never guardrails, and a short paragraph of project context. Keep each section to five bullets or fewer. The goal is a file short enough to read in thirty seconds that still answers every question Claude would otherwise ask in the first messages of a new session.</p>
<p><strong>Does CLAUDE.md work with subagents?</strong></p><p>Yes. When Claude Code spins up subagents to run tasks in parallel, each subagent reads CLAUDE.md as well. Your guardrails and conventions propagate to every agent running in the project automatically, so you don't need to re-brief them or worry about background agents drifting from the conventions you've set.</p>
<p><strong>How often should I update CLAUDE.md?</strong></p><p>Update it the same day you change a project convention. A stale CLAUDE.md is actively worse than no file - Claude will confidently follow rules you've abandoned and place things in patterns you've moved away from. Treat it like a living document that stays in sync with the actual project decisions, not an archive of how things used to work.</p>
<p><strong>Is there a difference between a global and a project-level CLAUDE.md?</strong></p><p>Yes. A global CLAUDE.md at your home directory root sets defaults for every session - things like your preferred response style or general code quality rules. A project-level CLAUDE.md sets rules specific to that codebase. When both exist, Claude reads both, with project-level rules taking priority on any conflict. Use global for personal habits, project-level for project facts.</p>]]></content:encoded>
    </item>
    <item>
      <title>The Discovery Call for AI Projects: The Questions I Ask Before I Quote Anything</title>
      <link>https://www.claudecodeclub.ai/blog/discovery-call-for-ai-projects</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/discovery-call-for-ai-projects</guid>
      <pubDate>Sat, 25 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Selling</category>
      <category>Clients</category>
      <category>Claude Code</category>
      <description><![CDATA[Most builders quote too early, on too little information, and then spend the project fixing a scope they got wrong in a message thread. A proper discovery call for AI projects takes thirty minutes and tells you the real outcome, the real budget, and whether this client is actually worth taking on.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>A discovery call for AI projects is a structured thirty-minute conversation you run before quoting anything - it uncovers the real outcome, the cost of the problem today, and whether the client can actually make a decision.</li><li>The biggest quoting mistakes - underpricing, wrong scope, scope creep - all trace back to skipping discovery and quoting on a vague inbound message.</li><li>I run the Outcome-First Call on every AI project: lead with the cost of the problem, not the features of the solution, and you'll price on value instead of hours.</li></ul>
<h2>Why the Discovery Call for AI Projects Is Different</h2>
<p>A discovery call for AI projects is the structured conversation you have with a prospective client before you write a single line of scope or say a number out loud. It is different from a standard freelance scoping call because AI projects have a specific failure mode: the client knows what they want the tool to do but not what outcome they actually need, and if you quote on the first description, you'll build the wrong thing at the wrong price. The call exists to close that gap before it costs either of you.</p>
<p>I never quote on the first message. Not because I don't have a rough number in my head - I usually do - but because that rough number is based on what they said, and what they said in the first message is almost never the full picture. The call gives me the full picture. After it, I can price on the real outcome and scope on the real problem, and both of those numbers are usually different from what I would have said on first contact.</p>
<blockquote><strong>TIP:</strong> The line I use when someone asks for a price before a call: 'I want to give you a real number, not a guess. Can we spend thirty minutes so I understand what you actually need? Then I can quote something I'll stand behind.' Almost nobody says no to that.</blockquote>
<h2>The Outcome-First Call Framework</h2>
<p>I call my approach the Outcome-First Call. The premise is simple: most clients come in describing a feature. My job in the first fifteen minutes is to get them off the feature and onto the outcome - the actual change in their business or process when the thing works. Once I have the outcome, I can price on the value of that change rather than on the hours it takes me to build the feature. Those two prices are often very different, and the outcome-based one is almost always higher.</p>
<p>The call runs in three phases. First, the problem - I want to understand what's broken and what it's costing them today. Second, the outcome - I want to understand what specifically changes when it's fixed. Third, the reality check - I want to confirm who decides, what they've got to spend, and when they actually need it. Run those three phases in order and you'll have everything you need to write a proposal that wins.</p>
<blockquote><strong>NOTE:</strong> The Outcome-First Call is not an interrogation. It's a conversation with a direction. Your job is to listen more than you talk in the first half, and to summarize what you heard back to them clearly before you say anything about your approach.</blockquote>
<h2>Phase One: The Cost of the Problem Today</h2>
<p>The questions I lead with are all about the current state of the problem - not what they want built, but what's broken right now and what that costs them. This is where you find out whether the project is worth doing at all.</p>
<ul><li>'Walk me through what you're doing right now to handle this.' - Gets them describing the manual process, the workaround, or the gap. The answer tells me complexity and gives me a baseline.</li><li>'How much time does that take per week, and who's doing it?' - Time is a proxy for cost. If three people spend two hours each on something weekly, I now have a rough floor for how much the problem is worth solving.</li><li>'What happens when it goes wrong or falls through the cracks?' - This surfaces the real pain. The cost of failure is often a more powerful pricing anchor than the cost of time.</li><li>'Why hasn't this been solved already?' - Their answer tells me about constraints I'll run into: technical, organizational, or budgetary. It also tells me whether they've tried and failed, which changes my risk read on the project.</li></ul>
<h2>Phase Two: What Changes When It's Fixed</h2>
<p>This is the most important phase and the one most people skip. Clients will tell you what they want the tool to do. They will not, unless you ask, tell you what they need to be true in their business when the tool is working. Those are different things, and the second one is what you price on.</p>
<ul><li>'If this is working perfectly in three months, what does that look like for you?' - Forces them to describe the outcome, not the feature. The answer is your pricing target.</li><li>'What does success look like for the person using this every day?' - Shifts from what the tool does to what the user experiences. Often reveals requirements the initial spec missed.</li><li>'Is there a decision, a process, or a result that this needs to feed into?' - Surfaces downstream dependencies you need to scope for. An AI output that feeds a human review step is a different build than one that feeds an automated action.</li><li>'What would make this a clear win for your team six months from now?' - Gets you their definition of value. Reference this directly in your proposal.</li></ul>
<blockquote><strong>TIP:</strong> If they struggle to answer the 'what changes when it's fixed' questions, that's not a bad sign - it's information. It means the outcome isn't defined yet, and your value add is helping them define it before you build anything. That's a legitimate service and worth scoping.</blockquote>
<h2>Phase Three: The Reality Check</h2>
<p>The most polished discovery call fails if you skip this phase. Decision-maker, budget, and timeline are the three filters that tell you whether this conversation leads to a real project or a proposal that disappears into a committee. Ask all three before the call ends.</p>
<table><caption>The three reality-check questions and what each answer tells you</caption><thead><tr><th>Question</th><th>What You're Actually Checking</th></tr></thead><tbody><tr><td>'Who else needs to sign off on this?'</td><td>Whether you're talking to the decision-maker or an intermediary. If there's a committee, your proposal needs to survive a room you won't be in.</td></tr><tr><td>'Do you have a budget range in mind for this?'</td><td>Whether the project is financially viable before you spend time scoping it. A vague answer is information - it usually means the budget is soft or undefined.</td></tr><tr><td>'What's driving the timeline on your end?'</td><td>Whether there's a real deadline or a wishful one. Real deadlines have a reason attached. 'As soon as possible' with no reason is usually not urgent.</td></tr></tbody></table>
<blockquote><strong>WARNING:</strong> If they can't name the decision-maker, don't have a budget range, and the timeline is 'whenever' - proceed carefully. You can still run the project, but quote assuming you'll have to re-sell internally and pad for timeline drift. These are early signs of a slow-moving engagement.</blockquote>
<h2>How to Spot a Bad-Fit Client Before You Quote</h2>
<p>Discovery calls also exist to disqualify. Not every project is worth taking and not every client is worth serving - and the call is the cheapest place to find that out. I pass on a project when I see a combination of these signals:</p>
<ul><li>They can't describe the outcome, only the feature - and push back when I try to redirect to the outcome. If they don't know what success looks like, you'll be building to a moving target.</li><li>The problem's cost is low and the scope is high. If fixing it saves a small amount of time on a low-stakes process, the math on a meaningful engagement won't work for either side.</li><li>They've already built this twice and it failed both times for reasons that weren't technical. Organizational blockers don't get fixed by a better tool.</li><li>They want a rate per hour before they want a scope. Hour-rate conversations anchor you in the wrong place from the start and set up the relationship for friction.</li></ul>
<h2>Moving from the Call to a Scoped Proposal</h2>
<p>At the end of the call, I do one thing before we hang up: I read back what I heard in two or three sentences. The problem, the outcome, and the constraint. I ask them to confirm it's right. That confirmation is the foundation of the proposal. Everything I write after that maps back to those three things.</p>
<p>The proposal itself is short. One page, three sections: the problem as I understand it, the outcome we're building toward, and the scope - what I'll deliver, what's out of scope, and the investment. I price on the outcome, not on hours. If the outcome is worth a meaningful amount to their business, I price there and justify it by referencing the cost of the problem they described on the call. That's the Outcome-First Call working as designed - the discovery conversation becomes the pricing rationale.</p>
<blockquote><strong>TIP:</strong> When a client says 'what's your rate?' before the scope is defined, the answer is: 'My day rate is X, but I don't think that's the right way to price this. Let me understand the outcome first and I'll come back with a project investment that makes sense for what you need.' Then run the call.</blockquote>
<h2>Put the Outcome-First Call to Work</h2>
<p>The Outcome-First Call is a skill, not a script. The questions above are starting points - you'll adapt them to each client and each project type. What stays constant is the sequence: cost of the problem first, outcome second, reality check third. Run that sequence consistently and you'll write better proposals, win at better prices, and take on fewer projects that drift.</p>
<blockquote><strong>NOTE:</strong> In the Claude Code Club community, we work through the real conversations - the calls that went sideways, the proposals that didn't land, the scope creep situations. Come into the room, share your current discovery call setup, and we'll help you sharpen it. That's what the club is for.</blockquote>
<h2>FAQ</h2>
<p><strong>What is a discovery call for AI projects?</strong></p><p>A discovery call for AI projects is a structured thirty-minute conversation you run with a prospective client before you quote or write a proposal. Its purpose is to uncover the real outcome they need, the cost of the problem as it stands today, and whether they have the decision-making authority and budget to move forward. It's the difference between quoting on a vague description and pricing on a fully understood brief.</p>
<p><strong>Why shouldn't I just quote from the first message?</strong></p><p>Because the first message almost always describes a feature, not an outcome. When you quote on a feature description, you're pricing on incomplete information - you don't yet know the cost of the problem, the downstream dependencies, or what success actually looks like for the client. Discovery gives you those inputs and almost always changes the scope and the price you'd have named without it.</p>
<p><strong>How long should a discovery call for an AI project take?</strong></p><p>Thirty minutes is the target. That's enough time to cover the cost of the problem, the outcome they need, and the decision-maker and budget reality check - all three phases of the Outcome-First Call. If you're going past forty-five minutes on discovery, you're likely going too deep into solution mode before you've confirmed the project is real and viable.</p>
<p><strong>What do I say when a client asks for a price before any call?</strong></p><p>The response that works consistently: 'I want to give you a real number, not a guess. Can we spend thirty minutes so I understand what you actually need? Then I can quote something I'll stand behind.' Frame the call as serving their interest - getting an accurate quote rather than a rough estimate that will need to be revised later. Most clients respond well to that framing.</p>
<p><strong>How do I handle a client who can't describe the outcome?</strong></p><p>Treat it as an opportunity, not a disqualifier. If a client can describe the problem clearly but can't yet describe what success looks like, helping them define the outcome is a legitimate and valuable service. Scope a short definition phase before the build phase - you get paid to think before you build, and they get a much better brief going into the main project.</p>
<p><strong>What are the red flags that should make me pass on a project?</strong></p><p>The clearest signals: they can't describe the outcome and resist the question, the problem's cost is too low to support a meaningful engagement, the project has failed twice before for non-technical reasons, or they anchor immediately on an hourly rate rather than a project outcome. Any one of these warrants caution. A combination of two or more is usually a pass.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Use Claude Code with Git (Without Losing Work)</title>
      <link>https://www.claudecodeclub.ai/blog/use-claude-code-with-git</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/use-claude-code-with-git</guid>
      <pubDate>Fri, 24 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Claude Code</category>
      <category>Git</category>
      <category>Workflow</category>
      <description><![CDATA[The safe way to use Claude Code with Git is to commit before you let it touch anything, work on a branch, and review the diff before you accept. Here is the checkpoint habit I use so an AI editing my files can never cost me work I cannot get back.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>To use Claude Code with Git safely, commit your work before every task, so there is always a clean checkpoint to return to if a change goes wrong.</li><li>Let Claude work on a branch, not straight on main. A branch is a sandbox - you can throw the whole thing away without touching the version that works.</li><li>Always read the diff before you accept. The diff is Claude showing its work, and reviewing it is the difference between shipping a fix and shipping a surprise.</li></ul>
<h2>How to Use Claude Code with Git: The Short Answer</h2>
<p>Claude Code edits real files on your machine, which means a single task can change dozens of lines across your project. Git is what makes that safe. Before you ask Claude to do anything, you commit - that saves a clean snapshot you can always return to. You let Claude make its changes, then you look at the diff, which is Git showing you exactly what moved. If the change is good, you keep it. If it is not, one command puts everything back the way it was. That loop - commit, change, review - is the whole habit, and once it is muscle memory you can let Claude work fast without ever risking work you cannot recover.</p>
<blockquote><strong>NOTE:</strong> Git is not an optional extra when you work with an AI editor. It is the seatbelt. It turns every risky-looking change into something you can undo in seconds, which is what lets you move quickly instead of second-guessing every edit.</blockquote>
<h2>Commit Before You Let Claude Touch Anything</h2>
<p>The single most important habit is to start from a clean commit. Before you hand Claude a task, make sure everything you care about is committed - run git status and confirm there is nothing uncommitted you would hate to lose. Now, whatever Claude does next, you have a marked point in time to come back to. If a task goes sideways, git restore or git checkout on the changed files wipes the mess and drops you right back on solid ground. Builders who skip this are the ones who message me having lost an afternoon of work to a change they accepted too fast.</p>
<blockquote><strong>WARNING:</strong> Never let Claude run a large task on top of uncommitted work. If the tree is dirty and something goes wrong, your good changes and Claude's bad ones are tangled together with no clean line between them.</blockquote>
<h2>Work on a Branch, Not on Main</h2>
<p>For anything bigger than a one-line fix, put Claude on its own branch. A branch is a private copy of your project where Claude can rewrite as much as it needs while the version that works sits untouched on main. If the experiment pays off, you merge it in. If it does not, you delete the branch and it is as if it never happened. This is how you let Claude attempt something ambitious - a refactor, a new feature - without betting your working code on it.</p>
<ul><li>Create a branch before the task: git checkout -b claude-feature-x. Now every change lands there, not on main.</li><li>Let Claude work as freely as it wants on that branch - the safety net is that main is still clean.</li><li>Merge only after you have reviewed and tested. If it went wrong, git checkout main and delete the branch.</li></ul>
<h2>The Checkpoint Habit</h2>
<p>I call the whole routine the Checkpoint Habit, and it is three moves you repeat on every task: checkpoint, change, check. Checkpoint means commit before you start. Change means let Claude do the work. Check means read the diff before you accept and commit again. Each completed task becomes its own checkpoint, so your project history turns into a row of save points. When something breaks two hours later, you are never asking where did this go wrong - you can walk back one checkpoint at a time until you find the exact commit that introduced it.</p>
<table><caption>The Checkpoint Habit, one loop per task</caption><thead><tr><th>Move</th><th>Command</th><th>Why it protects you</th></tr></thead><tbody><tr><td>Checkpoint</td><td>git add -A &amp;&amp; git commit</td><td>A clean save point exists before any change</td></tr><tr><td>Change</td><td>Claude edits the files</td><td>Work happens against a known-good baseline</td></tr><tr><td>Check</td><td>git diff, then commit or restore</td><td>Nothing is kept until you have seen it</td></tr></tbody></table>
<h2>Always Read the Diff Before You Accept</h2>
<p>The diff is where you stay in control. When Claude finishes a task, git diff shows you every line it added or removed. Read it. You are not looking to understand every character - you are looking for anything you did not ask for: a config file that changed, a dependency that appeared, a chunk of code deleted that you wanted kept. Ninety percent of the time the diff is exactly what you expected and you commit it. The other ten percent is precisely why you look. Accepting changes without reading the diff is how surprises end up in production.</p>
<blockquote><strong>TIP:</strong> The desktop app shows changes visually and the terminal has git diff - use whichever you prefer, but never skip the read. Reviewing the diff is the cheapest insurance in software.</blockquote>
<h2>Join the Club</h2>
<p>The Checkpoint Habit is one of the working routines we teach inside Claude Code Club - the community where builders learn to move fast with Claude Code without the messes that come from moving carelessly. Inside you get the workflows, the guardrails, and the room to ask when a change goes sideways. If you want to build with Claude Code and keep your work safe while you do it, that is exactly what the Club is for.</p>
<h2>FAQ</h2>
<p><strong>Do I need to know Git to use Claude Code?</strong></p><p>You only need three commands to be safe: commit to save a checkpoint, diff to review what changed, and restore or checkout to undo. Claude can even run these for you if you ask, but knowing what they do keeps you in control of your own work.</p>
<p><strong>How do I undo a change Claude Code made?</strong></p><p>If you have not committed it yet, git restore on the changed files (or git checkout .) reverts them to your last commit. If you committed on a branch, delete the branch. This is why committing before each task matters - it gives you a clean point to return to.</p>
<p><strong>Should Claude Code work on main or a branch?</strong></p><p>For a tiny fix, main is fine as long as you committed first. For anything larger - a refactor or a new feature - put Claude on its own branch so the working version stays untouched and you can throw the experiment away if it does not pan out.</p>
<p><strong>Why review the diff if Claude Code usually gets it right?</strong></p><p>Because the times it does not are the expensive ones. The diff takes seconds to read and catches the unexpected change - a deleted line, a new dependency, an edited config - before it reaches your repo. It is the cheapest insurance in your workflow.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Connect Claude Code to a Database (Safely)</title>
      <link>https://www.claudecodeclub.ai/blog/connect-claude-code-to-a-database</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/connect-claude-code-to-a-database</guid>
      <pubDate>Fri, 24 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Databases</category>
      <category>MCP</category>
      <description><![CDATA[The safe way to connect Claude Code to a database is through a read-only MCP server, not by pasting rows into a prompt. Here is the exact setup I use - a least-privilege database user, an MCP bridge, and a few hard rules - so Claude can read your schema and answer questions about your data without ever being able to break it.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>To connect Claude Code to a database, add a database MCP server and point it at a read-only connection. Claude then reads your schema and runs safe queries through that bridge instead of you copying data into the chat.</li><li>Start read-only. Create a database user that can SELECT and nothing else, so a wrong query can never drop a table or hand out write access. This is the Read-Only Bridge, and it is the whole safety model.</li><li>Keep the connection string in an environment variable, never in a prompt or a committed file. A database Claude can reach is a database anyone who reaches Claude can reach.</li></ul>
<h2>How to Connect Claude Code to a Database: The Short Answer</h2>
<p>To connect Claude Code to a database, you give it a bridge rather than a password. That bridge is an MCP server - a small program that exposes your database to Claude as a set of safe actions like list tables, describe a table, and run a query. You point that server at a read-only connection, add it to Claude Code (the desktop app has an MCP settings panel, and the terminal has a command for the same thing), and from then on Claude can explore your data and answer questions about it without you ever pasting rows into the chat. The entire safety of this setup rests on one choice: the connection is read-only, so the worst Claude can do is read.</p>
<blockquote><strong>NOTE:</strong> The wrong way to do this is to paste a connection string or a dump of rows straight into the conversation. That leaks credentials and data into a place they do not belong. The MCP bridge exists precisely so you never have to.</blockquote>
<h2>What an MCP Server Actually Does</h2>
<p>MCP stands for Model Context Protocol. It is the standard way Claude Code talks to outside systems - databases, APIs, file stores. A database MCP server sits between Claude and your database and translates Claude's requests into real queries. Instead of Claude holding your credentials, the server holds them, and Claude only sees the actions the server chooses to offer: read the schema, list tables, run a SELECT. This is why the bridge is safer than direct access - you decide at the server what Claude is allowed to touch.</p>
<ul><li>It connects to your database using a connection string you supply through an environment variable, not through the chat.</li><li>It exposes a small, fixed set of tools to Claude - typically list tables, describe a table's columns, and run a query.</li><li>It returns results to Claude as text, so Claude can reason about your real schema instead of guessing at table and column names.</li><li>It enforces whatever the database user is allowed to do - which is why the next step, a read-only user, is the one that matters most.</li></ul>
<h2>Step 1: Create a Read-Only Database User</h2>
<p>Before you connect anything, make a dedicated database user that can read and nothing else. Do not point Claude at your application's main user or an admin account. Create a fresh user, grant it SELECT on the tables or schema you want Claude to see, and stop there. On Postgres that is a CREATE USER followed by a GRANT SELECT; most databases have the same two steps. The point is that even a badly phrased request - or a confused model - cannot delete, update, or escalate, because the account it is using was never given the power to.</p>
<blockquote><strong>WARNING:</strong> Least privilege is not optional here. If the user Claude connects as can write, then anything that can talk to Claude can write to your database. Grant read, confirm it cannot do anything else, and only then move on.</blockquote>
<h2>Step 2: Add the Database MCP Server to Claude Code</h2>
<p>With a read-only user in hand, add the database MCP server to Claude Code and give it the read-only connection string through an environment variable. In the desktop app you do this in the MCP settings; from the terminal there is an add command for the same thing. Put the connection string in your environment or a local secrets file that is git-ignored - never inline it in a prompt, and never commit it. When the server starts, Claude Code loads it as a new source of tools it can call during a session.</p>
<table><caption>Where each piece of the bridge lives</caption><thead><tr><th>Piece</th><th>Where it belongs</th><th>Why</th></tr></thead><tbody><tr><td>The connection string</td><td>An environment variable or git-ignored secrets file</td><td>It is a credential. It must never sit in a prompt, a commit, or the chat history.</td></tr><tr><td>The database user</td><td>Your database, granted SELECT only</td><td>The user, not Claude, is what actually enforces read-only.</td></tr><tr><td>The MCP server</td><td>Claude Code's MCP config (desktop panel or terminal add command)</td><td>It holds the credential and exposes only safe actions to Claude.</td></tr></tbody></table>
<h2>Step 3: Verify the Bridge Before You Trust It</h2>
<p>Do not assume the connection is safe because it works. Confirm it. In Claude Code, check that the database server is listed and connected, then ask Claude to list the tables and describe one - that proves the read path works. Then test the guardrail directly: ask it to make a trivial write, like inserting a throwaway row, and confirm the database refuses because the user has no permission. A bridge you have watched fail closed is one you can trust. A bridge you only watched succeed is one you are hoping about.</p>
<ol><li>Confirm the server shows as connected in Claude Code's MCP list.</li><li>Ask Claude to list tables and describe one - the read path should just work.</li><li>Ask it to attempt a write, and confirm the database rejects it for lack of permission.</li><li>Only after you have seen it fail closed should you start relying on it for real questions.</li></ol>
<h2>The Read-Only Bridge: Why This Is the Only Safe Default</h2>
<p>The Read-Only Bridge is the CCC name for this whole pattern: a least-privilege user, a connection string kept out of the chat, and an MCP server that exposes read actions only. It is the default because it makes the dangerous version impossible rather than merely discouraged. You are not trusting Claude to behave - you are removing its ability to misbehave. That is the same principle that keeps a production database safe from a junior engineer: not a promise to be careful, but permissions that make carelessness harmless.</p>
<blockquote><strong>TIP:</strong> Name the pattern in your own head and reuse it everywhere: read-only user, secret out of the prompt, narrow server. The moment a setup violates one of the three, stop and fix it before you connect.</blockquote>
<h2>When You Actually Need Write Access</h2>
<p>Sometimes reading is not enough - you want Claude to help run a migration or seed test data. Do not solve this by loosening the read-only user. Create a second, separate user with exactly the writes that task needs, use it for that task only, and review every statement before it runs. Better still, have Claude generate the migration as a file you read and apply yourself, so the review step is built in. Write access is a deliberate, scoped exception you turn on for a job and turn off after, not a permanent property of the bridge.</p>
<h2>Join the Club</h2>
<p>This read-only-first approach to connecting Claude Code to real systems is exactly the kind of thing we build and pressure-test together inside Claude Code Club. If you want the working configs, the safety checklists, and other members who are wiring Claude into their own stacks, join the Club and grab the newsletter - that is where the details that do not fit in a blog post live.</p>
<h2>FAQ</h2>
<p><strong>Do I need to know SQL to connect Claude Code to a database?</strong></p><p>No. Once the read-only bridge is set up, you ask questions in plain English and Claude writes the SELECT queries for you against your real schema. Knowing a little SQL helps you sanity-check what it runs, but it is not required to get answers out of your data.</p>
<p><strong>Which databases can Claude Code connect to?</strong></p><p>Any database that has an MCP server - Postgres, MySQL, SQLite, and others all have them. The pattern is identical regardless: a read-only user, a connection string in an environment variable, and the MCP server as the bridge.</p>
<p><strong>Is it safe to connect Claude Code to my production database?</strong></p><p>It is safe to connect it to a read-only user on that database. Never connect it as an account that can write or administer. If you would not hand the credential to a stranger, do not put it behind Claude without stripping it down to read-only first.</p>
<p><strong>Where do I put the database password?</strong></p><p>In an environment variable or a git-ignored secrets file that the MCP server reads. Never paste it into a prompt and never commit it. The connection string is a credential, and the chat history is not a safe place for credentials.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Use Claude Code on a Large Existing Codebase Without It Getting Lost</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-large-existing-codebase</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-large-existing-codebase</guid>
      <pubDate>Thu, 23 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Workflow</category>
      <category>Large Codebase</category>
      <description><![CDATA[Claude Code is easy on a fresh repo and overwhelming on a 200-file legacy one. Here is the exact workflow I use to point it at a large existing codebase - CLAUDE.md, scoped exploration, and small verified edits - so it ships correct changes instead of confidently breaking things.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>To use Claude Code on a large codebase, give it a map before you give it a task: a CLAUDE.md that names the stack, the entry points, and the conventions, so it does not have to guess.</li><li>Work in scoped passes. Ask Claude to explore and report before it edits, keep each change small, and make it run the tests or typecheck after every edit so mistakes surface immediately.</li><li>The failure mode on big repos is a confident wrong edit across files it never read. The fix is a hard rule: never let it change code it has not read, and review the diff, not the summary.</li></ul>
<h2>How to Use Claude Code on a Large Codebase: The Short Answer</h2>
<p>Claude Code feels magic on a fresh project and fragile on a large existing one, and the reason is simple: on a big repo it cannot hold the whole thing in context, so it fills the gaps with guesses. The whole workflow below exists to replace those guesses with facts. You give it a map (a CLAUDE.md), you make it explore before it edits, you keep every change small, and you make it verify each change against the tests or the typechecker before it moves on. Do that and a 200-file codebase stops being a liability and starts being an asset, because Claude reads the parts it needs on demand instead of hallucinating them.</p>
<blockquote><strong>NOTE:</strong> The single most common mistake is treating a large repo like a small one - dropping in a vague task and hoping. On a big codebase, context you do not supply is context Claude invents.</blockquote>
<h2>Give It a Map First: The CLAUDE.md File</h2>
<p>Before you ask for a single change, put a CLAUDE.md at the root of the repo. This file is loaded into every session automatically, so it is the cheapest, highest-leverage thing you can do. It should not be a novel. It should tell Claude the things a new senior engineer would ask on day one: what the stack is, where the entry points live, how to run the app and the tests, and the two or three conventions that are non-negotiable in this codebase.</p>
<ul><li>The stack and versions - e.g. &quot;React 18 + Vite + TypeScript, tests in Vitest&quot; - so Claude stops suggesting patterns from the wrong framework.</li><li>Entry points and structure - where routing lives, where the API layer is, where shared components go.</li><li>How to run and verify - the exact commands for dev, build, and test, so Claude can check its own work.</li><li>Hard rules - conventions that are easy to violate, like &quot;no default exports&quot; or &quot;all money values are integers in cents&quot;.</li></ul>
<blockquote><strong>TIP:</strong> Keep CLAUDE.md under a page. A bloated context file dilutes the signal. Name the load-bearing facts and stop.</blockquote>
<h2>Explore Before You Edit</h2>
<p>On a large codebase, your first message about any task should not ask for code. It should ask for a plan. Say something like: &quot;Find where user sessions are created and expired, read those files, and tell me how the flow works before changing anything.&quot; This forces Claude to actually read the relevant files instead of pattern-matching from the filenames. What comes back is a report you can sanity-check in thirty seconds - and if the report is wrong, you caught it before a single line changed, which is far cheaper than catching it in a diff across nine files.</p>
<table><caption>Two ways to hand Claude the same task</caption><thead><tr><th>Approach</th><th>What you type</th><th>What you get</th></tr></thead><tbody><tr><td>Blind edit</td><td>&quot;Add rate limiting to the login route.&quot;</td><td>An edit to a file it guessed at, possibly the wrong one, possibly duplicating existing middleware.</td></tr><tr><td>Explore first</td><td>&quot;Find the login route and any existing middleware, read them, and tell me where rate limiting should go before editing.&quot;</td><td>A short report naming the real files, so you approve the plan and the edit lands in the right place.</td></tr></tbody></table>
<h2>Keep Every Change Small and Verified</h2>
<p>The temptation on a big task is to let Claude do the whole thing in one shot. Resist it. Break the work into changes small enough that you can read the diff and understand it completely. After each change, make Claude run the relevant test or the typecheck. This is the loop that catches the confident-but-wrong edit while it is still one edit and not the foundation for five more built on top of it.</p>
<ol><li>Scope the change to one behavior - one function, one route, one component.</li><li>Have Claude make the edit and immediately run the tests or `tsc --noEmit`.</li><li>Read the diff yourself. If you cannot follow it, it is too big - split it.</li><li>Only move to the next change once the current one is green.</li></ol>
<blockquote><strong>WARNING:</strong> Never let Claude change code it has not read in this session. On a large repo, editing an unread file is how you get a plausible-looking change that quietly breaks an assumption three files away.</blockquote>
<h2>Review the Diff, Not the Summary</h2>
<p>Claude will end a task with a tidy summary of what it did. That summary is a description of intent, not a record of fact. The diff is the fact. On a small project the two rarely diverge; on a large one they diverge often enough that reading only the summary will eventually ship a bug. Make it a habit: the summary tells you where to look, and the diff tells you what actually happened. When they disagree, the diff wins.</p>
<h2>FAQ</h2>
<p><strong>How big is too big for Claude Code?</strong></p><p>There is no hard file limit, because Claude reads files on demand rather than loading the whole repo. What matters is whether you have given it a way to find the right files - a CLAUDE.md and an explore-first workflow. A 500-file repo with a good map is easier than a 40-file repo with none.</p>
<p><strong>Do I need to paste files into the chat?</strong></p><p>No. Claude Code reads files directly from the repo. Your job is to point it at the right area and make it read before it edits, not to shuttle file contents in and out yourself.</p>
<p><strong>Why does Claude edit the wrong file on large codebases?</strong></p><p>Almost always because it guessed instead of reading. It saw a filename that matched the task and assumed the contents. The explore-first step removes the guess by making it read the real files and report back before touching anything.</p>
<p><strong>What is the single most important habit?</strong></p><p>Small, verified changes. One behavior per edit, tests or typecheck after each one, and you read the diff. It feels slower for the first ten minutes and is dramatically faster across a whole feature because you stop compounding mistakes.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Get AI Clients on LinkedIn: The Playbook I Actually Use</title>
      <link>https://www.claudecodeclub.ai/blog/get-ai-clients-on-linkedin</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/get-ai-clients-on-linkedin</guid>
      <pubDate>Thu, 23 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>LinkedIn</category>
      <category>Client Acquisition</category>
      <category>AI Services</category>
      <description><![CDATA[Everyone selling AI services is shouting into the same LinkedIn feed. Here is the exact playbook I use to get AI clients on LinkedIn - a positioned profile, proof-led posts, and warm DMs that start a conversation instead of pitching - without cold-spamming a single person.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>To get AI clients on LinkedIn, you fix three things in order: a profile that says exactly who you help and how, posts that show proof instead of hype, and DMs that open a conversation rather than pitch a service.</li><li>The whole system runs on being specific. &quot;I build AI automations&quot; gets ignored. &quot;I build the AI intake system that answers your leads in under a minute&quot; gets replies, because the buyer can picture the outcome.</li><li>You do not need a big audience. Twenty of the right people seeing one proof post beats ten thousand strangers seeing a generic one. Depth of positioning beats reach.</li></ul>
<h2>How to Get AI Clients on LinkedIn: The System in One Paragraph</h2>
<p>Getting AI clients on LinkedIn is not about posting more or connecting with more people. It is three layers that have to line up: your profile has to tell a specific buyer that you solve a specific problem, your posts have to prove you can actually do it, and your DMs have to start a real conversation instead of firing a pitch at a stranger. Most people who struggle have all three vague at once - a generic headline, hype posts with no proof, and copy-pasted pitch messages. Fix them in that order and inbound starts before you have finished fixing the third.</p>
<blockquote><strong>NOTE:</strong> The market is not short on people selling AI. It is short on people a buyer can immediately understand and trust. Specificity is the whole game.</blockquote>
<h2>Layer One: A Profile That Names the Buyer and the Outcome</h2>
<p>Your headline and About section are a landing page. A buyer decides in about three seconds whether you are for them. &quot;AI consultant&quot; fails that test because it describes you, not them. The fix is a headline built from two things: who you help and the concrete outcome you produce. Compare &quot;I help businesses leverage AI&quot; with &quot;I build the AI intake system that answers inbound leads in under a minute for home-service companies.&quot; The second one tells a specific owner that you solve a pain they feel every week.</p>
<table><caption>Vague vs specific positioning</caption><thead><tr><th>Vague (ignored)</th><th>Specific (gets replies)</th></tr></thead><tbody><tr><td>AI automation expert</td><td>I build AI systems that reply to your leads before they cool off</td></tr><tr><td>I help you leverage AI</td><td>I cut your team's manual data entry by building one Claude workflow</td></tr><tr><td>Custom AI solutions</td><td>I ship AI intake for home-service businesses in two weeks</td></tr></tbody></table>
<h2>Layer Two: Posts That Show Proof, Not Hype</h2>
<p>The feed is full of &quot;AI will change everything&quot; takes, and they convert nobody because they prove nothing. What converts is proof: a specific problem, what you built, and what changed. You do not need a viral post. You need posts that make the right buyer think &quot;this person has actually done the thing I need.&quot; A short before-and-after of a real workflow beats a thousand-word thought-leadership essay every time.</p>
<ul><li>The teardown: &quot;A client was losing leads overnight. Here is the AI intake flow I built and what happened.&quot;</li><li>The mistake: &quot;I built an AI agent that emailed customers the wrong price. Here is the guardrail I added.&quot; Honesty reads as competence.</li><li>The tiny how-to: one specific, useful thing a reader could do today. It proves you know the craft, not just the pitch.</li></ul>
<blockquote><strong>TIP:</strong> End proof posts with a soft door, not a hard sell: &quot;If you want the outline, comment and I'll send it.&quot; That turns a reader into a conversation you did not have to cold-start.</blockquote>
<h2>Layer Three: DMs That Start a Conversation</h2>
<p>This is where most people torch their reputation. They connect and immediately paste a pitch. It gets ignored and, worse, it teaches your network that you are a spammer. The move that works is the opposite: reach out about them, not about you. Reference something specific - a post they wrote, a problem their business obviously has - and ask one genuine question. You are opening a door, not pushing a service through it.</p>
<table><caption>Two DM openers, same prospect</caption><thead><tr><th>Approach</th><th>The message</th><th>The result</th></tr></thead><tbody><tr><td>Cold pitch</td><td>&quot;Hi! I build AI automations for businesses. Want to hop on a call this week?&quot;</td><td>Ignored or blocked. You are one of forty identical messages.</td></tr><tr><td>Warm open</td><td>&quot;Saw your post about missing after-hours leads - that's the exact problem I've been solving with AI intake. Curious, how are you handling it now?&quot;</td><td>A reply, because it is about their problem and asks nothing but a question.</td></tr></tbody></table>
<h2>Why This Beats Cold Spam Every Time</h2>
<p>Cold-spamming a thousand strangers can look productive and it quietly costs you. Every ignored pitch trains the algorithm and your network to filter you out, and it builds a reputation you then have to fight. The three-layer system compounds the other way: a specific profile makes every post land harder, every proof post makes every DM warmer, and every good conversation makes the next referral more likely. You are not renting attention with volume. You are building a position that keeps working while you sleep.</p>
<h2>FAQ</h2>
<p><strong>How many followers do I need to get AI clients on LinkedIn?</strong></p><p>Far fewer than you think. Positioning beats reach. Twenty of the right buyers seeing one clear proof post will out-earn ten thousand strangers seeing a generic one. Start posting proof before you worry about follower count.</p>
<p><strong>How often should I post?</strong></p><p>Two to three proof-led posts a week is plenty if they are specific. Consistency matters more than volume, and one strong teardown beats five hype posts. Do not post to hit a number - post to show one more piece of proof.</p>
<p><strong>Should I use automation tools to send DMs at scale?</strong></p><p>No. Mass-automated DMs are the fastest way to get flagged and to burn your reputation, which is the one asset this whole system is building. The warm, specific, one-at-a-time DM is slower per message and dramatically higher converting.</p>
<p><strong>What do I say when they finally reply?</strong></p><p>Keep asking about their problem before you talk about your solution. Understand what it is costing them, then describe the outcome you produce in their terms. The sale happens when they feel understood, not when they hear your feature list.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code settings.json: The Config I Put in Every Project</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-settings-json</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-settings-json</guid>
      <pubDate>Wed, 22 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Configuration</category>
      <category>Workflow</category>
      <description><![CDATA[Most people never touch settings.json and let Claude Code run on defaults. Here is the exact config file I drop into every repo - permissions, hooks, model, and env - so every project starts safe, fast, and consistent instead of me babysitting the same prompts.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Claude Code settings.json is the config file that controls permissions, hooks, the default model, and environment variables. It lives at .claude/settings.json in a project (shared) or ~/.claude/settings.json for your machine (global).</li><li>The high-value keys are permissions (allow and deny lists so Claude stops asking on safe commands and can never run dangerous ones), hooks (shell commands that fire on events), and model (pin the model per project).</li><li>I ship the same baseline into every repo - I call it the CCC settings baseline - so every project is safe and consistent on the first run instead of me re-approving the same commands all day.</li></ul>
<h2>Claude Code settings.json: What It Is and Where It Lives</h2>
<p>Here is the whole answer up front. settings.json is Claude Code's configuration file. It sets what Claude is allowed to do without asking, what it can never do, which shell commands run automatically on events, which model runs by default, and what environment variables it sees. There are three locations and they stack: ~/.claude/settings.json applies to every project on your machine, .claude/settings.json lives inside a project and is checked into git so your team shares it, and .claude/settings.local.json sits beside it for personal overrides that stay out of the repo. The more specific file wins. Get this one file right and every session starts the way you want, instead of you re-approving the same commands and hoping the defaults are sane.</p>
<blockquote><strong>NOTE:</strong> This is the same file in the Claude Code desktop app and the terminal. You edit it once and it governs both. The interface is not the lever here - the config is.</blockquote>
<h2>The Permissions Block: Stop Getting Asked, Never Run the Dangerous Thing</h2>
<p>The permissions key is the part that pays for itself in a day. It takes three lists: allow, ask, and deny. Anything in allow runs without a prompt, so you stop clicking approve on the same safe commands you have run a thousand times. Anything in deny can never run, no matter what the model decides it wants. ask forces a confirmation. The rule I follow is simple: allow the read-only and cheap-to-reverse commands, deny the ones that can lose work or leak, and let everything else fall through to a prompt.</p>
<ul><li>allow: things like Read, Edit, and safe git and test commands you trust blindly - the everyday work.</li><li>deny: destructive or exfiltration-shaped commands - anything matching a force push, a recursive delete, or reading a secrets file.</li><li>ask: the middle ground you want to eyeball each time, like a deploy.</li></ul>
<blockquote><strong>WARNING:</strong> deny always wins over allow. If a command could match both lists, Claude blocks it. That is the behavior you want - the safety rule is not overridable by a convenience rule.</blockquote>
<h2>Hooks: Run Your Own Command When Claude Does Something</h2>
<p>The hooks key lets you attach a shell command to an event - before a tool runs, after a tool runs, when a session starts. This is how you make Claude Code enforce your standards instead of just following them when it remembers. I use a hook to run the formatter and type check after any edit, so a broken build gets caught the moment it happens rather than three prompts later. A hook is deterministic: the harness runs it every time, which is exactly what you want for the checks that must never be skipped.</p>
<blockquote><strong>TIP:</strong> If you keep telling Claude the same rule (always run the linter, never commit without tests), that rule belongs in a hook, not in a prompt. The prompt is a request. The hook is a guarantee.</blockquote>
<h2>Model and Env: Pin the Defaults per Project</h2>
<p>Two smaller keys punch above their weight. model pins the default model for that project, so a heavy codebase can default to your most capable model while a scratch repo runs something lighter, and you never have to remember to switch. env sets environment variables for the session, which is how you hand Claude the flags and paths a project needs without exporting them by hand every time. Both live in the project settings.json, so they travel with the repo - a teammate who clones it gets the same behavior you do.</p>
<h2>The CCC Settings Baseline I Ship Into Every Repo</h2>
<p>Here is the pattern, not a copy-paste dump, because the exact commands depend on your stack. My baseline settings.json always has four things: a permissions.allow list of the read and test commands I trust, a permissions.deny list that blocks force pushes, recursive deletes, and reads of any env or secrets file, a hook that formats and type-checks after every edit, and a pinned model. I keep it in a template and drop it into a new project before I write a single line, the same way I keep a base prompt. The point is not my exact lists - it is that the first session in every repo is already safe, quiet, and consistent, so I am building instead of babysitting.</p>
<blockquote><strong>TIP:</strong> Start the deny list before the allow list. It is tempting to optimize for fewer prompts first, but the deny rules are the ones that save you from a bad afternoon. Safety first, convenience second.</blockquote>
<h2>FAQ</h2>
<p><strong>Where is the Claude Code settings.json file?</strong></p><p>Three places that stack: ~/.claude/settings.json for every project on your machine, .claude/settings.json inside a project (checked into git and shared with your team), and .claude/settings.local.json for personal overrides that stay out of the repo. The most specific file wins.</p>
<p><strong>What is the difference between settings.json and CLAUDE.md?</strong></p><p>settings.json is machine-read configuration - permissions, hooks, model, env. CLAUDE.md is context Claude reads as instructions, like your conventions and project background. Config controls what Claude can do; CLAUDE.md shapes how it thinks. You want both.</p>
<p><strong>Can settings.json stop Claude Code from running dangerous commands?</strong></p><p>Yes. The permissions.deny list blocks matching commands outright, and deny always overrides allow. Put force pushes, recursive deletes, and reads of secret files in deny and Claude cannot run them, whatever it decides it wants to do.</p>
<p><strong>Should I commit settings.json to git?</strong></p><p>Commit .claude/settings.json so your whole team shares the same permissions and hooks. Keep anything personal or secret in .claude/settings.local.json, which is meant to stay out of the repo.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Pick a Niche for Your AI Agency</title>
      <link>https://www.claudecodeclub.ai/blog/how-to-pick-a-niche-for-your-ai-agency</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/how-to-pick-a-niche-for-your-ai-agency</guid>
      <pubDate>Wed, 22 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>AI Agency</category>
      <category>Getting Clients</category>
      <category>Positioning</category>
      <description><![CDATA[Everyone says niche down, nobody tells you how to choose. Here is the three-filter test I use to pick a niche for an AI agency - one that has real pain, real budget, and people you can actually reach - so you stop guessing and start booking calls.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>To pick a niche for your AI agency, run every candidate through three filters: Pain (do they have a problem that costs them money now), Pay (can they afford four figures for a fix), and Proximity (can you reach them without a big ad budget). A niche that fails any one of the three is a trap.</li><li>Do not pick the niche you find most interesting. Pick the one where the pain is loudest and the buyers are easiest to find. Interest fades; a hair-on-fire problem funds your business.</li><li>I call this the three-filter test, and it is how I stop builders from spending three months on a niche that was never going to pay.</li></ul>
<h2>How to Pick a Niche for Your AI Agency</h2>
<p>Here is the short version. Pick a niche by running every option through three filters - Pain, Pay, and Proximity. Pain: does this group have a problem that is costing them money or time right now, the kind they already complain about. Pay: can they comfortably spend four figures to make that problem go away, which means they need budget and a reason to move. Proximity: can you actually reach them, in a group, a platform, or a network you already touch, without buying your way in. A niche that clears all three is a business. A niche that misses even one is a way to stay busy while going broke. Everything below is how to run each filter and how to test your pick before you commit.</p>
<blockquote><strong>NOTE:</strong> Niche does not mean picking one industry and never leaving it. It means being the obvious choice for one specific buyer with one specific problem, so your outreach and your offer both land harder than a generalist's ever could.</blockquote>
<h2>Why a Niche Beats Being the AI Person for Everyone</h2>
<p>When you sell AI to everyone, you compete with everyone, and your message has to be so generic that it moves no one. When you sell to one kind of buyer, you can name their exact problem in their exact words, and that specificity reads as expertise before you have said a thing about your skills. The narrow positioning also makes your outreach cheaper and your referrals sharper - people can only refer you if they can describe what you do in one sentence. Broad is comfortable because it feels like more opportunity, but it is the reason most new agencies never book a call.</p>
<h2>Filter 1 - Pain: Find the Problem That Already Costs Them</h2>
<p>Start with pain because nothing else matters if the problem is not real. You are looking for a task that is currently costing the business money, hours, or missed revenue - and that they already know about. The tell is that they complain about it without prompting: the clinic drowning in appointment no-shows, the agency losing nights to manual reporting, the store answering the same three questions a hundred times a day. If you have to convince them the problem exists, it is not painful enough. A niche with loud, expensive, obvious pain will pull money toward a fix. A niche where the pain is mild or hypothetical will make you sell forever.</p>
<blockquote><strong>TIP:</strong> The fastest way to find real pain is to listen where a niche complains - their subreddits, their forums, their reviews. If the same gripe shows up again and again in their own words, you have found your offer's headline.</blockquote>
<h2>Filter 2 - Pay: Confirm the Budget Before You Fall in Love</h2>
<p>Pain without budget is charity. The second filter asks whether this niche can comfortably pay four figures for a solution, and whether the problem is tied closely enough to money that spending on it is an easy yes. Businesses that already buy software, already run ads, or already pay contractors have proven they will spend to solve problems. A niche that treats every expense as a cost to be cut, or where the buyer is an individual spending their own money reluctantly, will grind you down on price no matter how good your work is. Follow the budget that already exists - do not try to create one that does not.</p>
<blockquote><strong>WARNING:</strong> Watch out for niches that have loud pain but no money - passion hobbies, early-stage side projects, cash-strapped nonprofits. The complaints are real, but the checks will not clear. Pain and Pay have to show up together.</blockquote>
<h2>Filter 3 - Proximity: Can You Actually Reach Them</h2>
<p>The last filter is the one people skip, and it sinks more agencies than the other two combined. Proximity asks whether you can get in front of this niche repeatedly and cheaply. Are they gathered somewhere you can already reach - a platform, a community, an association, or a network you are part of. Do you have any existing connection, background, or credibility with them that shortens the trust gap. A niche you can reach with a warm intro or a targeted message will book calls in a week. A niche you can only reach by outspending everyone on ads will bleed you dry before you land your first client. The best first niche is often the one closest to a world you already know.</p>
<h2>Test the Niche in a Week, Not a Quarter</h2>
<p>You do not confirm a niche by thinking harder - you confirm it by talking to it. Once a niche clears all three filters, spend one week testing it before you commit: write the one-sentence problem statement in their language, send a small batch of direct, specific messages, and watch what happens. You are not trying to close yet. You are checking whether the problem lands - do people reply, do they say yes that is exactly it, do they ask what it would cost. Real interest from ten conversations tells you more than a month of research. If the messages fall flat, change the niche, not your whole plan. Cheap tests beat expensive commitments every time.</p>
<blockquote><strong>TIP:</strong> Signs you picked wrong: you cannot describe the buyer in one sentence, you keep widening the niche to include more people, or every reply is about price. Each of those means one of the three filters was weak - go back and find which.</blockquote>
<h2>FAQ</h2>
<p><strong>How do I pick a niche for my AI agency?</strong></p><p>Run every candidate through three filters: Pain (a problem that already costs them money or time), Pay (they can comfortably spend four figures to fix it), and Proximity (you can reach them cheaply through a group or network you already touch). A niche has to clear all three.</p>
<p><strong>Should I pick the niche I am most interested in?</strong></p><p>Not first. Interest is a tiebreaker, not a filter. Pick where the pain is loudest and the buyers are easiest to reach and pay. A problem you find mildly interesting but that funds your business beats a fascinating niche that never pays.</p>
<p><strong>How narrow should my agency niche be?</strong></p><p>Narrow enough that you can describe your buyer and their problem in one sentence. If you keep widening it to include more people, it is too broad. You can always expand later, but a sharp niche is what gets you your first clients.</p>
<p><strong>How do I know if I picked the wrong niche?</strong></p><p>The warning signs are simple: you cannot name the buyer in one sentence, you keep broadening to reach more people, or every conversation collapses to price. Each points to a weak filter - usually Pay or Proximity - so change the niche, not your whole business.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code Slash Commands: The Custom Ones I Use Every Day</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-slash-commands</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-slash-commands</guid>
      <pubDate>Tue, 21 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Workflows</category>
      <category>Building</category>
      <category>Claude Code</category>
      <description><![CDATA[Slash commands are saved prompts you trigger by typing a slash and a name - a way to run your best multi-step workflow in one keystroke instead of retyping it every time. Here are the custom commands I built for client work, exactly how I wrote them, and the ones that actually earn their place in my day.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>A slash command is a reusable prompt saved as a Markdown file that you run by typing a slash and its name, so a multi-step workflow becomes one keystroke.</li><li>Built-in commands handle the session (/clear, /init, /model). Custom commands are the leverage - you save your own best prompts as files and reuse them across every project.</li><li>The four I actually use daily: /review, /ship, /scope, and /handoff. Each replaced a prompt I was retyping ten times a week.</li></ul>
<h2>What Claude Code Slash Commands Actually Are</h2>
<p>A slash command in Claude Code is a saved prompt you run by typing a slash and a name, like /review. There are two kinds. Built-in commands control the session itself - /clear wipes the context, /init writes a CLAUDE.md, /model switches the model. Custom commands are the ones you write: you save a prompt you keep reusing as a Markdown file, give it a name, and from then on you trigger the whole thing with one keystroke instead of retyping it.</p>
<p>The reason they matter is simple. If you do client work, you run the same handful of prompts over and over - review this before I ship it, scope this request, write me a handoff. Retyping those from memory means they drift and get sloppy. A slash command freezes your best version of that prompt and runs it the same way every time. It's the difference between explaining your process from scratch each time and pressing a button that already knows it.</p>
<blockquote><strong>TIP:</strong> The mental model: a slash command is a prompt you were going to type anyway, saved once so you never have to type it again. If you catch yourself pasting the same instructions into Claude twice, that's a command waiting to be made.</blockquote>
<h2>How To Create A Custom Slash Command</h2>
<p>A custom slash command is just a Markdown file in a commands folder. Drop a file called review.md into .claude/commands/ in your project, and Claude Code turns it into /review automatically. The file name becomes the command name, and the file's contents become the prompt that runs. That's the whole mechanism - there's no config to learn.</p>
<ol><li>Make the folder: create .claude/commands/ in your project root for project-specific commands, or ~/.claude/commands/ for commands you want in every project.</li><li>Write the prompt as a file: save your instructions as a Markdown file, for example ship.md. The file name (minus .md) is the command name.</li><li>Use $ARGUMENTS for input: anything you type after the command name gets dropped in where you put $ARGUMENTS, so /scope add a dark mode toggle passes that request straight into the prompt.</li><li>Run it: type / to see your commands in the menu, pick one, and it runs like you'd typed the whole prompt yourself.</li></ol>
<blockquote><strong>NOTE:</strong> Project commands live in the repo, so they ship with the project and your whole team gets them. Personal commands in ~/.claude/commands follow you across every project. I keep client-workflow commands in the repo and my own habits in the personal folder.</blockquote>
<h2>The Four Custom Commands I Use Every Day</h2>
<p>I've made a lot of slash commands and deleted most of them. These four survived because they replaced a prompt I was genuinely retyping every week. This is my CCC command kit - the workflows I run on almost every client build.</p>
<table><caption>The commands that earned a permanent place in my workflow</caption><thead><tr><th>Command</th><th>What it does</th><th>What it replaced</th></tr></thead><tbody><tr><td>/review</td><td>Reviews the current diff for bugs, edge cases, and anything I'd be embarrassed to ship to a client</td><td>Me pasting 'check this before I ship' ten times a week</td></tr><tr><td>/ship</td><td>Runs the tests, writes a clean commit message, and summarizes what changed in plain English for the client update</td><td>Three separate manual steps I did in the wrong order half the time</td></tr><tr><td>/scope</td><td>Takes a client's feature request and turns it into a bulleted scope with the parts that are out of scope flagged</td><td>Rewriting fuzzy client asks into something buildable, from scratch</td></tr><tr><td>/handoff</td><td>Writes a handoff doc: what was built, how to run it, and what to watch for</td><td>The doc I always meant to write and never did</td></tr></tbody></table>
<p>The pattern across all four: each one is a workflow I care about doing consistently, saved so it happens the same way whether it's Monday morning or Friday at six. /review in particular is the one I'd tell anyone to build first - it catches the small mistakes before they reach a client, and it costs me one keystroke.</p>
<h2>What Makes A Slash Command Worth Keeping</h2>
<p>Most commands you make you'll never use twice. The ones worth keeping share three traits, and I check a new command against them before it earns a spot in the menu.</p>
<ul><li>It's something you repeat. A command for a one-off task is just a slower way to type a prompt. Save the prompts you run weekly, not the clever ones you run once.</li><li>The prompt is better than what you'd type live. Because you're writing it calmly and once, a good command is more thorough than the rushed version you'd type in the moment. Put the edge cases and the standards in it.</li><li>It has one clear job. A command that tries to do five things produces mush. /review reviews. /ship ships. Narrow commands compose better than one giant do-everything command.</li></ul>
<blockquote><strong>WARNING:</strong> The trap is building a huge library of commands you can't remember. If you have to hunt through the menu to recall what a command does, it's not saving you time. Keep a small kit you know by heart over a big one you have to look up.</blockquote>
<h2>Get The Command Kit</h2>
<p>Slash commands are the cheapest workflow upgrade in Claude Code - a Markdown file and a folder, and a prompt you were typing anyway now runs in one keystroke. Start with /review, add /ship, and let the rest grow out of the prompts you catch yourself repeating.</p>
<blockquote><strong>NOTE:</strong> We share our actual slash command files - /review, /ship, /scope, /handoff and more - inside the Claude Code Club community, along with the prompts and workflows we run on real client work. Join us, grab the kit, and stop retyping your best prompts.</blockquote>
<h2>FAQ</h2>
<p><strong>What is a slash command in Claude Code?</strong></p><p>A slash command is a saved prompt you run by typing a slash and a name, like /review. Built-in commands control the session (/clear, /init, /model), and custom commands are ones you write yourself by saving a prompt as a Markdown file. Instead of retyping a multi-step prompt every time, you trigger the whole thing with one keystroke.</p>
<p><strong>How do I create a custom slash command in Claude Code?</strong></p><p>Create a .claude/commands/ folder in your project (or ~/.claude/commands/ for every project), then save your prompt as a Markdown file - review.md becomes /review. The file name is the command name and the file contents are the prompt. Use $ARGUMENTS in the file to pass in anything you type after the command name.</p>
<p><strong>Where do custom slash commands live?</strong></p><p>Project commands live in .claude/commands/ inside the repo, so they ship with the project and your whole team gets them. Personal commands live in ~/.claude/commands/ and follow you across every project. Keep client-workflow commands in the repo and your own habits in the personal folder.</p>
<p><strong>What slash commands are worth creating?</strong></p><p>Save prompts you repeat weekly, not one-offs. The ones I use daily are /review (checks the diff before I ship), /ship (tests, commits, and summarizes the change), /scope (turns a client request into a buildable scope), and /handoff (writes the handoff doc). Each one has a single clear job and replaced a prompt I was retyping constantly.</p>
<p><strong>Can slash commands take arguments?</strong></p><p>Yes. Put $ARGUMENTS anywhere in the command's Markdown file, and whatever you type after the command name gets dropped in there. So a /scope command with $ARGUMENTS in it lets you run /scope add a dark mode toggle and pass that request straight into the prompt.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Close an AI Client Over Email (No Call Required)</title>
      <link>https://www.claudecodeclub.ai/blog/close-an-ai-client-over-email</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/close-an-ai-client-over-email</guid>
      <pubDate>Tue, 21 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Freelancing</category>
      <category>Monetization</category>
      <category>Agency</category>
      <description><![CDATA[You don't need a sales call to close an AI build. Most of my client work is closed over email - a clear scope, a single price, one deadline to decide, and a link to pay. Here's the exact email sequence I use to take a warm lead from interested to paid without ever getting on the phone.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>You can close an AI build entirely over email: send a short recap of the outcome, one clear price, exactly what's included, and a link to pay or a one-click yes.</li><li>The close email does the whole job in four parts - restate the outcome in their words, give one price not three, remove the risk, and ask for a small clear yes.</li><li>A single dated follow-up recovers most silent leads. No call needed - the friction that kills email deals is vagueness, not the missing phone call.</li></ul>
<h2>You Do Not Need A Call To Close An AI Build</h2>
<p>You can close an AI client entirely over email. The close is a single message that recaps the outcome the client wants in their own words, states one price, lists exactly what's included, and asks for a small, clear yes - ideally a link to pay or a one-line reply. For a well-defined build with a warm lead, that email does everything a call would, and it does it without forcing a busy client to find thirty minutes in their calendar.</p>
<p>The belief that you need a call to close is mostly a hangover from old sales training. What actually closes a deal is clarity: the client knows what they're getting, what it costs, and what happens next. A call is just one way to deliver that clarity, and it's often the slowest one. A sharp email delivers the same certainty and lets the client say yes on their own time, which for a lot of buyers is exactly what unsticks the decision.</p>
<blockquote><strong>WARNING:</strong> The thing that kills email deals is not the missing call. It's vagueness. A range instead of a price, a maybe instead of a date, a wall of options instead of one clear next step. Remove the vagueness and the call becomes optional.</blockquote>
<h2>The Four-Part Close Email</h2>
<p>Every close email I send has the same four parts, in this order. I call it the four-part close, and the order matters - you earn the price by leading with the outcome, and you make the yes easy by ending with one clear action.</p>
<ol><li>Restate the outcome in their words. Open with the result they told you they want, not the tech you'll use. 'Here's the plan to get every lead answered within five minutes.' This proves you listened and reminds them why they reached out.</li><li>One price, not three. Give a single number for a single clearly-defined build. Option A/B/C menus stall non-technical buyers - they turn a yes-or-no into homework. If you must offer a choice, make it two, and recommend one.</li><li>Remove the risk. One line on what protects them - a fixed scope, a deposit rather than the full amount up front, a clear what-happens-if-it's-not-right. Buyers say yes faster when the downside is capped.</li><li>Ask for one small, clear yes. End with a single action: 'Reply yes and I'll send the deposit link and we start Monday,' or a direct payment link. One action, one sentence, no ambiguity about what happens next.</li></ol>
<blockquote><strong>TIP:</strong> Put the price on its own line. Buried in a paragraph, a price reads as negotiable and gets skimmed past. On its own line it reads as the price, and the client actually registers it and decides.</blockquote>
<h2>Make The Yes A Single Click</h2>
<p>The lower the effort to say yes, the more yeses you get. The best close email ends with an action the client can complete in one click while they're still reading it. A payment link for a deposit is the strongest version: the moment they're convinced, they can act on it, instead of having to remember to reply later when the momentum is gone.</p>
<p>If a payment link is too much for the stage, make the reply itself the one click. 'Just reply yes and I'll take it from there.' The point is that saying yes should never require the client to write a paragraph, make a decision about how to pay, or schedule anything. Every extra step between convinced and committed is a place the deal goes cold. Close the gap and more warm leads turn into paid ones.</p>
<h2>The One Follow-Up That Recovers Most Silent Leads</h2>
<p>Silence after a close email usually is not a no. It's a busy person who meant to reply and got buried. One well-timed follow-up recovers a large share of these, and it costs you two minutes. The mistake is either never following up, or following up so often you look desperate. One good nudge beats five anxious ones.</p>
<ul><li>Wait two to three business days, not two hours. Following up the same afternoon reads as needy and interrupts a decision that's still forming.</li><li>Add a reason to reply, don't just bump. Give a soft deadline tied to something real: 'I've got a build slot opening next week - want me to hold it for you?' A dated reason is far stronger than 'just checking in.'</li><li>Make it a clean yes-or-no. 'Happy to answer any questions, or if the timing's not right just let me know and I'll close the file.' Giving them an easy out often produces the yes, because it removes the pressure that was causing the silence.</li></ul>
<blockquote><strong>NOTE:</strong> The exact scripts I use for the close email and the follow-up - including the deposit-link version and the soft-deadline nudge - are the kind of thing we trade and refine together inside the Claude Code Club community. Bring the email you're about to send and we'll tighten it before it goes out.</blockquote>
<h2>When You Should Still Get On A Call</h2>
<p>Closing over email is the default, not a rule. There are times a short call is the right move, and knowing them keeps you from forcing an email close where it doesn't fit. Get on a call when the scope isn't clear yet and you need to ask questions to define it, when the deal is large enough that the client expects a conversation, or when you can feel real hesitation that a written message keeps failing to resolve.</p>
<p>Even then, the call's job is to create the clarity - and the close still happens in writing. End every call by sending the same four-part email so the scope, price, and next step are documented and the client has something to say yes to. The email is the close; the call, when you need it, is just how you gathered what goes in the email.</p>
<h2>FAQ</h2>
<p><strong>Can you really close an AI client over email without a call?</strong></p><p>Yes. For a well-defined build with a warm lead, a single close email does everything a call would - it restates the outcome, gives one clear price, lists what's included, and asks for a small yes with a link to pay or a one-line reply. What closes a deal is clarity, and a sharp email delivers that clarity while letting the client decide on their own time.</p>
<p><strong>What should a close email include?</strong></p><p>Four parts in order: restate the outcome in the client's own words, give one price on its own line (not a three-option menu), add one line that removes their risk (fixed scope or a deposit rather than full payment up front), and end with a single clear action like 'reply yes and I'll send the deposit link.' One action, no ambiguity about what happens next.</p>
<p><strong>How do I follow up when a client goes silent after my quote?</strong></p><p>Send one follow-up after two to three business days, not the same afternoon. Give a real reason to reply - a soft deadline like a build slot opening next week - and make it an easy yes-or-no by offering a clean out ('if the timing's not right, just let me know'). One good nudge recovers most silent leads; five anxious ones look desperate.</p>
<p><strong>How do I make it easy for a client to say yes over email?</strong></p><p>End with an action they can complete in one click while reading. A payment link for a deposit is strongest - they act the moment they're convinced. If that's too much for the stage, make the reply itself the click: 'Just reply yes and I'll take it from there.' Every extra step between convinced and committed is where the deal goes cold.</p>
<p><strong>When should I use a call instead of closing over email?</strong></p><p>Get on a call when the scope isn't clear enough to quote, when the deal is large enough that the client expects a conversation, or when you sense real hesitation that writing keeps failing to resolve. Even then, close in writing: end the call by sending the four-part email so the scope, price, and next step are documented and the client has something concrete to approve.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Prompt Claude Code (The 3-Part Prompt I Use)</title>
      <link>https://www.claudecodeclub.ai/blog/how-to-prompt-claude-code</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/how-to-prompt-claude-code</guid>
      <pubDate>Mon, 20 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Workflow</category>
      <category>Getting Started</category>
      <description><![CDATA[Most people write one vague line and wonder why Claude Code guessed wrong. Here is the exact three-part prompt I use - goal, context, constraints - to get the right result on the first try instead of the fifth.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>A good Claude Code prompt has three parts: the goal (what done looks like), the context it cannot see (which files, what the project is), and the constraints (what to leave alone). Miss any one and it guesses.</li><li>Lead with the outcome, not the task. 'Make the signup form reject duplicate emails and show an inline error' beats 'fix the signup form' every time.</li><li>I run the same template on every build - I call it the CCC three-part prompt - and it cut my back-and-forth more than any model upgrade ever did.</li></ul>
<h2>How to Prompt Claude Code</h2>
<p>Here is the whole thing up front: a prompt that works has three parts - the goal, the context, and the constraints. The goal is what done actually looks like, in behavior, not vibes. The context is the information Claude cannot see on its own - which files matter, what the project is, what you already tried. The constraints are the guardrails - what to leave alone, which patterns to follow, what not to install. Give it all three and Claude gets it right on the first pass. Leave one out and it fills the gap with a guess, and the guess is where your afternoon goes. Everything below is how I write each part on real work.</p>
<blockquote><strong>NOTE:</strong> This works the same in the Claude Code desktop app and the terminal. The prompt is the lever, not the interface. A sharp prompt in either place beats a lazy one in the fanciest setup.</blockquote>
<h2>Part 1: State the Goal, Not the Task</h2>
<p>Most weak prompts name a task instead of an outcome. 'Fix the login' is a task. 'Make login reject an unverified email with an inline error and keep the user on the page' is an outcome. The difference is that an outcome tells Claude how to know it succeeded, so it can check its own work instead of handing you something that technically ran. Describe the finished behavior you want to see - what happens, on which screen, in response to what. If you would struggle to tell whether the result is right by looking at it, your goal is too vague and Claude will feel the same ambiguity you do.</p>
<blockquote><strong>TIP:</strong> A quick test: could a stranger read your goal and tell you whether the result passed or failed? If not, tighten it before you send it.</blockquote>
<h2>Part 2: Give It the Context It Cannot See</h2>
<p>Claude Code can read your project, but it does not know which parts matter unless you point at them. This is the part people skip, and it is the biggest single upgrade to your prompts. Name the file or the feature. Say what the project is in one line. Mention what you already tried and what happened. If there is a pattern the codebase already uses, say 'follow the way we do it in X'. You are not writing a novel - you are handing Claude the three or four facts that would take it ten tool calls to discover on its own. That is where the speed comes from.</p>
<ul><li>Which files or feature the change lives in, so Claude does not have to hunt.</li><li>One line on what the project is, so its choices fit your stack instead of a generic one.</li><li>What you already tried and the exact error or wrong behavior you saw.</li></ul>
<h2>Part 3: Set the Constraints Up Front</h2>
<p>Constraints are the cheapest way to prevent the outcomes you would have rejected anyway. If you do not want a new dependency, say so. If a file is off-limits, name it. If you want the smallest change that works rather than a refactor, ask for exactly that. Claude is agreeable by default - it will happily rewrite three files to solve a one-line problem if you did not tell it not to. Stating the guardrails before it starts is far cheaper than catching them in review, because by review the work is already done and you are unwinding it. Two or three constraints handle almost every case.</p>
<blockquote><strong>WARNING:</strong> The most useful constraint is almost always 'do not touch anything I did not ask about.' It stops the helpful-but-unwanted cleanup that turns a small diff into a scary one.</blockquote>
<h2>The CCC Three-Part Prompt in One Template</h2>
<p>Put the three parts together and you get a template I reuse on almost every task. I call it the CCC three-part prompt, and it reads like a short brief rather than a wish. It is not longer than a bad prompt - it is just aimed. You will find you write it in under a minute once it is a habit, and it saves you the three rounds of correction that a one-liner costs you.</p>
<ol><li>Goal: 'I want &lt;finished behavior&gt; on &lt;where&gt;, so that &lt;how I will know it worked&gt;.'</li><li>Context: 'This lives in &lt;files/feature&gt;. The project is &lt;one line&gt;. I already tried &lt;X&gt; and got &lt;result&gt;.'</li><li>Constraints: 'Follow &lt;existing pattern&gt;. Do not touch &lt;off-limits&gt;. Keep the change as small as possible.'</li></ol>
<h2>The Mistake That Wastes Your First Prompt</h2>
<p>The most common mistake is treating the first prompt as a throwaway - firing off one vague line to 'see what it does', then correcting from there. It feels faster because you sent something quickly, but you have just handed Claude permission to guess, and now every follow-up is you cleaning up a direction you never chose. The first prompt is the cheapest place to be specific. Spend the extra thirty seconds there and you skip the three rounds of 'no, not like that' that a lazy opener guarantees. Aim the first shot; do not spray and adjust.</p>
<h2>Where This Goes Next</h2>
<p>Prompting well is the skill that makes every other Claude Code feature worth having - plan mode, subagents, custom skills, all of it lands harder when the prompt underneath is aimed. Get the three parts habitual and your hit rate climbs without touching your setup or your model. Inside the Claude Code Club we keep a shared library of the exact prompts our members use on real client builds - the openers that get it right the first time on the tasks that usually go sideways. Come grab them and bring the request you always end up correcting three times.</p>
<h2>FAQ</h2>
<p><strong>How do I write a good prompt for Claude Code?</strong></p><p>Include three parts: the goal (the finished behavior you want and how you will know it worked), the context Claude cannot see (which files matter, what the project is, what you already tried), and the constraints (what to leave alone and which patterns to follow). Missing any one of the three forces Claude to guess, which is where most wasted rounds come from.</p>
<p><strong>Why does Claude Code do the wrong thing?</strong></p><p>Usually because the prompt named a task instead of an outcome, or left out context it could not infer. 'Fix the form' gives Claude no way to know what right looks like, so it picks one. Tell it the exact behavior you want, point it at the relevant files, and say what not to change, and the wrong-guess problem mostly disappears.</p>
<p><strong>Should I write long or short prompts for Claude Code?</strong></p><p>Aimed beats long. A short prompt that states the goal, the key context, and one or two constraints outperforms a long one that rambles without deciding anything. Length is not the point - specificity is. If a sentence does not help Claude decide, cut it.</p>
<p><strong>How do I stop Claude Code from changing files I did not ask about?</strong></p><p>Say so in the prompt. Add a constraint like 'do not touch anything I did not ask about' or name the specific files that are off-limits. Claude is agreeable by default and will clean up nearby code unless you tell it to keep the change minimal, so state that guardrail before it starts.</p>
<p><strong>Does the way I prompt matter more than the model I use?</strong></p><p>In my experience the prompt moves results more than a model upgrade does for everyday building. A sharp prompt on a good model beats a lazy prompt on the best model, because the lazy prompt leaves the important decisions to a guess. Fix the prompt first, then worry about the model.</p>
<p><strong>What is the CCC three-part prompt?</strong></p><p>It is a simple template - goal, context, constraints - that we use inside the Claude Code Club to get the right result on the first try. Goal is the finished behavior, context is what Claude cannot see on its own, and constraints are the guardrails. It reads like a short brief and takes under a minute once it is a habit.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Write a Cold Email That Lands AI Clients</title>
      <link>https://www.claudecodeclub.ai/blog/how-to-write-a-cold-email-that-lands-ai-clients</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/how-to-write-a-cold-email-that-lands-ai-clients</guid>
      <pubDate>Mon, 20 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Agency</category>
      <category>Freelancing</category>
      <category>Monetization</category>
      <description><![CDATA[Most AI cold emails get ignored because they brag about tools instead of naming a problem. Here is the exact four-line structure I use to turn a cold contact into a 15-minute call - and how to personalize it without spending an hour per email.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>To write a cold email that lands AI clients, lead with a specific result you can create for their business, not the tools you use. Reference something real about them, make one concrete offer, and ask for a low-friction next step. Short and specific beats long and polished.</li><li>Nobody hires you because you 'use AI'. They hire you because you named a problem that is costing them money and showed you can fix it fast. Your email has to prove you actually looked at them.</li><li>The job of a cold email is not to close the deal - it is to earn a 15-minute reply. Optimize every line for one thing: making it easy and low-risk to say yes to a short call.</li></ul>
<h2>How to Write a Cold Email That Lands AI Clients</h2>
<p>Here is the whole approach up front: open with a specific result you can create for this exact business, prove in one line that you actually looked at them, make one concrete offer, and ask for a small, low-risk next step - a 15-minute call, not a signed contract. Keep it short enough to read on a phone in ten seconds. That is a cold email that lands AI clients. The rest of this post is why each piece works and how to send these at volume without turning into a robot that gets deleted on sight.</p>
<blockquote><strong>NOTE:</strong> A cold email is not a pitch, it is an invitation. You are not trying to convince someone to hire you in one message. You are trying to make a busy stranger think 'huh, fifteen minutes with this person might be worth it'.</blockquote>
<h2>Why Most AI Cold Emails Get Ignored</h2>
<p>Most AI cold emails get ignored because they are about the sender, not the reader. They lead with 'I build AI automations and custom agents using the latest models' - which tells the reader nothing about their own business and everything about how much you like your tools. Business owners do not buy AI. They buy fewer hours on a task they hate, faster invoices, more booked calls, less dropped work. When your first line is about your stack, you have handed them a reason to stop reading. When your first line is about a problem they feel, they keep going. The tools are how you deliver, not why they care.</p>
<h2>Lead With the Result, Not the Tech</h2>
<p>The strongest opening names a specific, believable outcome for their business. Not 'I can help you leverage AI', but 'I can turn the enquiry form on your site into booked calls that land in your calendar automatically'. One is a category, the other is a picture. The reader can see the result and immediately knows whether they want it. Lead with the after, then mention the how in a handful of plain words. Your job in the first two lines is to make them nod, and people nod at outcomes they recognize, never at technology they have to decode.</p>
<ul><li>Name the outcome in their language - booked calls, faster quotes, fewer manual hours - not 'AI automation'.</li><li>Make it specific to what they do, so it reads as written for them and not blasted to a list.</li><li>Mention the how briefly and plainly; the result is the hook, the method is the reassurance.</li></ul>
<h2>The Four-Line Structure I Use</h2>
<p>I keep every cold email to four short moves, and I call it the CCC four-line cold email. Line one: one specific thing I noticed about their business, so they know I looked. Line two: the result I can create, in their words. Line three: a sentence of proof or specificity that makes it believable - something I have done for a similar business, or exactly how I would approach theirs. Line four: a small ask. That is the entire email. If it needs a fifth idea, that idea goes on the call, not in the email. Length is a tax on cold outreach, and every extra line is another chance to get closed.</p>
<ol><li>The noticed line: one real, specific observation about their business that proves this is not a blast.</li><li>The result line: the concrete outcome you can create, described the way they would describe it.</li><li>The proof line: one sentence that makes the result believable - a similar result you got, or your exact approach.</li><li>The ask line: a small, low-friction next step, phrased so saying yes costs them almost nothing.</li></ol>
<h2>How to Personalize Without Spending an Hour Per Email</h2>
<p>Personalization is what makes cold email work, and it is also what makes people quit, because doing it by hand does not scale. The fix is to separate the two jobs: the result and the proof lines are reusable per type of business, and only the noticed line has to be truly custom. So you write one strong template per niche - one for plumbers, one for law firms, one for e-commerce brands - and then you only spend real effort on line one for each prospect. You can even have Claude Code read a prospect's website and draft that single observation line for you, which turns an hour of research into a few minutes. Custom where it counts, templated where it does not.</p>
<blockquote><strong>TIP:</strong> The test for the noticed line: could you copy-paste it into an email to a different company? If yes, it is not personalization, it is filler. It has to be true about them and only them.</blockquote>
<h2>The Ask That Actually Gets Replies</h2>
<p>The call to action decides whether you get a reply, and most people make it too big. 'Let me know if you would like to work together' asks a stranger to commit to a project. 'Are you free for fifteen minutes on Thursday or Friday?' asks for a coffee's worth of time. The smaller and more specific the ask, the higher the reply rate, because you have lowered the risk of saying yes to almost nothing. Offer a tiny, dated, easy next step. You are not selling the engagement in the email - you are selling the conversation. Win the conversation and the engagement takes care of itself.</p>
<h2>How Many Emails Before You Move On</h2>
<p>Most replies do not come from the first email, so a single send is not a real test of anything. A short, polite follow-up a few days later - one that adds a new angle instead of just 'bumping this to the top of your inbox' - routinely does better than the original. Send the first email, follow up once or twice with something genuinely new each time, and then let it go. The people who never reply are not rejecting you, they are busy, and the ones who reply on the second or third touch are often your best clients because they needed to see you were serious. Consistency beats a perfect single email every time.</p>
<ul><li>Treat one email as the start of a short sequence, not a coin flip.</li><li>Each follow-up must add a new angle or idea, never just 'checking in'.</li><li>Two or three touches, then stop - persistence is respectful, pestering is not.</li></ul>
<h2>Where This Goes Next</h2>
<p>A cold email that lands is not clever, it is specific: a real observation, a concrete result, a believable proof line, and a tiny ask, sent more than once. Get those four moves right and you will book calls from people who have never heard of you. Inside the Claude Code Club we keep the actual cold-email templates our members use to land AI work, broken out by the type of business you are pitching, plus the exact prompt for having Claude Code draft the noticed line from a prospect's site. Come take the templates and adapt them to your niche instead of starting from a blank page.</p>
<h2>FAQ</h2>
<p><strong>Do cold emails still work for landing AI clients?</strong></p><p>Yes, when they are specific. Cold emails that brag about tools get ignored, but a short email that names a real problem for a specific business, offers a concrete result, and asks for a small next step still books calls. The channel is not dead - generic, sender-focused emails are.</p>
<p><strong>What should the subject line of an AI cold email be?</strong></p><p>Short, specific, and about them, not you. A plain line that hints at the result - the booked calls, the saved hours, the faster quotes - beats anything that reads like marketing. Avoid words like 'AI', 'revolutionary', or 'partnership'. The subject line's only job is to earn the open, so keep it human and low-key.</p>
<p><strong>How long should a cold email to a potential client be?</strong></p><p>Short enough to read on a phone in about ten seconds - roughly four lines. One observation about them, one result you can create, one line of proof, and one small ask. Every extra sentence lowers your reply rate because it gives a busy reader another reason to stop.</p>
<p><strong>How do I personalize cold emails without spending an hour on each one?</strong></p><p>Separate the custom part from the reusable part. Write one strong template per type of business, so the result and proof lines are ready to go, and only write the opening 'I noticed' line fresh for each prospect. You can have Claude Code read their website and draft that single line, turning research into a few minutes per email.</p>
<p><strong>What is the best call to action for a cold email?</strong></p><p>The smallest one that still moves things forward - usually a specific, dated request for a 15-minute call, like 'Are you free Thursday or Friday afternoon?' Asking for a short, low-risk conversation gets far more replies than asking someone to commit to hiring you. Sell the call, not the project.</p>
<p><strong>How many times should I follow up on a cold email?</strong></p><p>Two or three touches total, spaced a few days apart, with each follow-up adding a new angle rather than just bumping the thread. Most replies come after the first email, so one send is not a fair test. After a couple of genuine follow-ups with nothing back, move on without taking it personally.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code Plan Mode: How I Ship Client Work Without Rework</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-plan-mode</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-plan-mode</guid>
      <pubDate>Mon, 20 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Workflows</category>
      <category>Building</category>
      <category>Claude Code</category>
      <description><![CDATA[Plan Mode is Claude Code's read-only research mode - it reads your codebase and writes a step-by-step plan for your approval before it touches a single file. Here's the exact loop I run on every client build to catch the wrong approach in a plan I can edit in seconds, instead of in code I'd have to rip out an hour later.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Plan Mode is Claude Code's read-only mode: it researches your codebase and writes a plan for your approval before it edits anything.</li><li>Turn it on for any task bigger than a one-line fix. You correct the approach in a 30-second plan review instead of unwinding an hour of wrong code.</li><li>I run the Plan-First Loop on every client build - read, plan, edit the plan, approve, then let it execute. It has cut my rework to almost nothing.</li></ul>
<h2>What Claude Code Plan Mode Actually Does</h2>
<p>Plan Mode is Claude Code's read-only research mode. When it's on, Claude reads your files, inspects your codebase, and asks clarifying questions, but it does not change a single line until it has written you a step-by-step plan and you have approved it. Think of it as the difference between a contractor who starts knocking down walls the moment they walk in, and one who walks the house, sketches the job, and hands you the plan before anyone picks up a hammer.</p>
<p>The payoff on client work is direct. A wrong approach costs almost nothing when it shows up as a bullet point in a plan you can edit in thirty seconds. The same wrong approach costs an hour when it shows up as code you have to read, understand, and rip back out. Plan Mode moves the correction to the cheapest possible moment - before any code exists.</p>
<blockquote><strong>TIP:</strong> The mental model that makes it click: in normal mode you review the work after it's done. In Plan Mode you review the intent before it starts. Reviewing intent is faster, cheaper, and catches the expensive mistakes the diff never would.</blockquote>
<h2>When To Turn Plan Mode On (And When To Skip It)</h2>
<p>Plan Mode is not for everything. The rule I use is simple: if the task is bigger than a one-line change or touches more than one file, plan it first. If it's a typo or a rename, just let it run. Here's the split I actually use on client work.</p>
<table><caption>My rule of thumb for when Plan Mode earns its 30 seconds</caption><thead><tr><th>Task</th><th>Plan Mode?</th><th>Why</th></tr></thead><tbody><tr><td>New feature across several files</td><td>Yes</td><td>Most room for a wrong approach that spreads</td></tr><tr><td>Refactor or migration</td><td>Yes</td><td>You want to see the blast radius before it happens</td></tr><tr><td>Anything on a client's production code</td><td>Yes</td><td>The plan is your safety review and your audit trail</td></tr><tr><td>Fixing a bug you don't fully understand</td><td>Yes</td><td>Plan Mode makes Claude explain the cause first</td></tr><tr><td>One-line fix or a rename</td><td>No</td><td>The plan takes longer than the change</td></tr><tr><td>A throwaway experiment</td><td>No</td><td>Speed matters more than review</td></tr></tbody></table>
<h2>The Plan-First Loop I Run On Every Client Build</h2>
<p>I run the same five-step loop on every client build. I call it the Plan-First Loop, and it's the single habit that took my rework from a daily annoyance to almost nothing. It works the same in the Claude Code desktop app and the terminal.</p>
<ol><li>Turn on Plan Mode and describe the outcome, not the implementation. Say what the client needs to happen, and let Claude propose how.</li><li>Read the plan, not the code. Claude comes back with a numbered plan. This is your review surface. Read it like a proposal.</li><li>Edit the plan in plain English. Wrong file, missing edge case, skipped test - you fix it by typing a sentence, not by rewriting code.</li><li>Approve only when the plan is right. If step three keeps finding gaps, the task isn't understood yet. Keep refining until the plan reads clean.</li><li>Let it execute, then review the diff against the plan you approved. The plan becomes your checklist - you're verifying it did what you agreed to, nothing more.</li></ol>
<blockquote><strong>NOTE:</strong> Step one is the one people skip. Describe the outcome, not the implementation. If you tell Claude exactly how to build it, you've thrown away the one thing Plan Mode is best at - showing you an approach you hadn't considered before any code is written.</blockquote>
<h2>A Real Example: The Client Dashboard That Would Have Taken Two Rewrites</h2>
<p>A client wanted a live dashboard that pulled numbers from three different tools into one view. My first instinct was to wire each tool's data straight into the front end. If I'd run that in normal mode, Claude would have started building it, and I'd have found out two files in that the three tools return data on completely different schedules - which would have meant a second rewrite to add a caching layer I hadn't planned for.</p>
<p>Instead I turned on Plan Mode and described the outcome. The plan came back with a step I hadn't asked for: a small caching layer between the tools and the dashboard, because the data sources refresh at different rates. Claude had read the situation and flagged the exact problem that would have cost me the rewrite. I approved the plan, it built the whole thing once, and it shipped clean. The plan review took under a minute. The rewrite it prevented would have taken most of an afternoon.</p>
<h2>The Mistakes That Make Plan Mode Useless</h2>
<p>Plan Mode only pays back if you actually use the plan as a review surface. The three ways people waste it:</p>
<ul><li>Approving the plan without reading it. If you rubber-stamp every plan, you've added a step and removed the benefit. The read is the whole point.</li><li>Over-specifying the implementation up front. If you dictate every file and function, the plan just echoes you back and never catches your blind spots.</li><li>Using it on trivial changes. A one-line fix does not need a plan. Save Plan Mode for work where a wrong approach would actually cost you time.</li></ul>
<blockquote><strong>WARNING:</strong> If you find yourself approving plans on autopilot, that's the signal you're using Plan Mode on tasks that are too small. Drop back to normal mode for those and reserve Plan Mode for the builds where the approach is genuinely in question.</blockquote>
<h2>How To Enable Plan Mode</h2>
<p>In the terminal, press Shift+Tab to cycle through the permission modes until you land on Plan Mode. In the Claude Code desktop app, toggle Plan Mode on before you send your request. Either way, you'll know it's working when Claude comes back with a plan and waits for your approval instead of immediately editing files. Once you've approved a plan, Claude drops back into its normal execute-and-edit flow to carry it out.</p>
<blockquote><strong>NOTE:</strong> Want the workflows, prompt packs, and build reviews we use to run client work at CCC? That's what the Claude Code Club community is for. Join us and put the Plan-First Loop to work on your next build - we'll help you tighten it.</blockquote>
<h2>FAQ</h2>
<p><strong>What is Plan Mode in Claude Code?</strong></p><p>Plan Mode is Claude Code's read-only research mode. When it's on, Claude reads your codebase and asks questions but does not edit any files until it has written a step-by-step plan and you have approved it. It moves your review from after the work is done to before it starts, which is where the expensive mistakes are cheapest to catch.</p>
<p><strong>How do I turn on Plan Mode?</strong></p><p>In the terminal, press Shift+Tab to cycle through the permission modes until you reach Plan Mode. In the Claude Code desktop app, toggle Plan Mode on before sending your request. You'll know it's active when Claude returns a plan and waits for approval instead of editing files right away.</p>
<p><strong>When should I use Plan Mode versus just letting Claude build?</strong></p><p>Use Plan Mode for anything bigger than a one-line change or that touches more than one file - new features, refactors, migrations, bug fixes you don't fully understand, and anything on a client's production code. Skip it for typos, renames, and throwaway experiments, where writing the plan takes longer than making the change.</p>
<p><strong>Does Plan Mode make Claude Code slower?</strong></p><p>It adds a short plan-review step up front, usually under a minute. On any non-trivial task that step pays for itself many times over by preventing rewrites. On trivial tasks it's pure overhead, which is why you only turn it on for work where a wrong approach would actually cost you time.</p>
<p><strong>What's the biggest mistake people make with Plan Mode?</strong></p><p>Approving the plan without reading it. The entire benefit of Plan Mode is that the plan is a cheap review surface - reading it is how you catch the wrong approach before any code exists. If you rubber-stamp every plan, you've added a step and thrown away the payoff.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Sell AI Builds to Non-Technical Clients</title>
      <link>https://www.claudecodeclub.ai/blog/sell-ai-to-non-technical-clients</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/sell-ai-to-non-technical-clients</guid>
      <pubDate>Mon, 20 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Freelancing</category>
      <category>Monetization</category>
      <category>Agency</category>
      <description><![CDATA[Non-technical clients don't buy AI - they buy outcomes. They don't care that you used Claude Code, an MCP server, or a subagent. They care that their invoices go out on time and their leads get answered in five minutes. Here's how to translate the tech into their language, demo the result, and price the outcome so the sale closes itself.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Non-technical clients don't buy the AI. They buy the outcome it produces - hours saved, leads answered, revenue recovered.</li><li>Translate every feature into a result in their language, show a live demo instead of explaining, and price the outcome rather than the hours.</li><li>Run the Outcome Translation on every offer: for each thing you built, write the one sentence about what it does for their business, and lead with that.</li></ul>
<h2>Why Non-Technical Clients Say No To AI (It Is Not The Price)</h2>
<p>When a non-technical client passes on an AI build, the reason is almost never the price. It's that they can't picture what they're buying. You said Claude Code, MCP servers, and automation, and they heard a bill for something they don't understand. People don't sign off on things they can't picture, and they especially don't sign off on things that sound like they'll need an IT department to babysit.</p>
<p>The fix is not to explain the technology better. It's to stop leading with the technology at all. Your client runs a business. They think in customers, hours, revenue, and headaches. If you want the yes, you have to describe your build in those four currencies, not in the tools you used to make it.</p>
<blockquote><strong>WARNING:</strong> The moment you say the words model, agent, prompt, or API to a non-technical buyer, you've moved the conversation onto your turf and off theirs. Every minute they spend confused about the how is a minute they're not getting excited about the what.</blockquote>
<h2>The Outcome Translation: Turn Every Feature Into A Result</h2>
<p>The core skill of selling AI to non-technical clients is a translation I call the Outcome Translation. For every feature you built, you write one sentence about what it does for their business, in their words, and you lead with that sentence. The feature becomes a footnote. The outcome becomes the headline.</p>
<table><caption>The same build, said two ways - only the right column closes</caption><thead><tr><th>What you built (tech)</th><th>What you say (outcome)</th></tr></thead><tbody><tr><td>A Claude Code agent that reads inbound emails</td><td>Every lead gets a personal reply within five minutes, day or night</td></tr><tr><td>An MCP server wired into their invoicing tool</td><td>Invoices go out the day a job finishes, with zero admin from you</td></tr><tr><td>A scheduled automation that runs nightly</td><td>You wake up to yesterday's report already in your inbox</td></tr><tr><td>A subagent that drafts proposals from a template</td><td>You send a polished proposal in ten minutes instead of two hours</td></tr><tr><td>A web scraper that monitors competitor pricing</td><td>You get an alert the moment a competitor changes their price</td></tr></tbody></table>
<p>Notice the right column never mentions how any of it works. It doesn't need to. The client is buying the result, and the result is what they can picture, get excited about, and repeat to their business partner when they explain why they signed.</p>
<h2>Demo First, Explain Never</h2>
<p>A thirty-second live demo closes more non-technical clients than any explanation ever will. When someone watches a real email come in and a smart reply go out in front of their eyes, the sale is basically done. They've seen the outcome with their own eyes, and no amount of technical worry can compete with that. I call this the demo-first close, and it's the single highest-converting move I have with non-technical buyers.</p>
<p>Build a small, real, working slice before the sales call and show it live. Not a slide deck, not a diagram, not a screen recording - a real thing doing a real task. If you can make the outcome happen on their screen while they watch, you've removed the only real objection a non-technical client has, which is that they can't picture it. After the demo, the conversation stops being about whether it works and starts being about when they can have it.</p>
<blockquote><strong>TIP:</strong> If they ask a technical question during the demo, answer it in one sentence and immediately point back at the screen. The result on the screen is your best salesperson. Every second you spend talking is a second they're not watching it work.</blockquote>
<h2>How To Answer 'But How Does The AI Actually Work?'</h2>
<p>Some clients will still ask how it works. That's fine - answer it in a way that builds trust without dragging them into the weeds. The goal is to make them feel safe, not to make them understand the architecture. Three rules for the answer:</p>
<ul><li>Use an analogy from their world, not yours. It's like a new team member who reads every email and drafts the replies, and you approve them - not a large language model with a context window.</li><li>Tell them where they stay in control. Nothing sends without your approval. That one sentence removes the fear that the AI will do something embarrassing on their behalf.</li><li>Stop talking once they nod. The question is usually a request for reassurance, not a request for a lecture. When they look satisfied, move back to the outcome.</li></ul>
<h2>Price The Outcome, Not The Hours</h2>
<p>If you price an AI build by the hour, you cap your income at the exact moment your tools make you fastest. Worse, an hourly number invites a non-technical client to compare you to a developer's day rate, which is a comparison you don't want. Price the outcome instead. What is it worth to the business to recover ten hours a week, or to never miss a lead again?</p>
<p>The move is to anchor your price to the value of the result, not the time it took you to build it. If a build saves a client a full day a week, that day is worth far more than the hours you spent making it, and the price should reflect the value they receive. Non-technical clients actually find this easier to say yes to, because a price tied to a result they can picture makes sense to them in a way an hourly rate for work they don't understand never will.</p>
<blockquote><strong>NOTE:</strong> Value-based pricing is a whole skill on its own, and it's one of the things we work through together inside the Claude Code Club community - real numbers, real offers, and feedback on your pricing before you send it. Come pressure-test your next quote with us.</blockquote>
<h2>Put It In Writing So The Scope Cannot Drift</h2>
<p>Selling on outcomes creates one risk you have to manage: a client who bought a result can keep expanding what counts as that result. The protection is to write the outcome down as the deliverable, in plain language, before you build. Name exactly what the build will do, name the boundary of what it won't, and both of you sign it.</p>
<p>One page is enough. State the outcome in their words, list what's included, list what's explicitly out of scope, and note that anything beyond it is a new conversation. This isn't bureaucracy - it's the thing that lets you sell on outcomes confidently, because the outcome is defined and can't quietly grow into three more you never priced for.</p>
<h2>FAQ</h2>
<p><strong>How do I sell AI to a client who doesn't understand the technology?</strong></p><p>Stop selling the technology and sell the outcome. Non-technical clients buy results they can picture - hours saved, leads answered, revenue recovered - not models, agents, or automations. Translate every feature into one sentence about what it does for their business, lead with that sentence, and show a live demo of the result instead of explaining how it works.</p>
<p><strong>Should I explain how the AI works to a non-technical client?</strong></p><p>Only briefly, and only if they ask. When they do, use an analogy from their world, tell them where they stay in control (nothing sends without their approval), and stop talking once they're reassured. The question is usually a request for safety, not a request for a technical lecture. Then point back to the outcome.</p>
<p><strong>How should I price an AI build for a non-technical client?</strong></p><p>Price the outcome, not your hours. Anchor the price to what the result is worth to the business - recovering ten hours a week or never missing a lead is worth far more than the time you spent building it. Hourly pricing caps your income exactly when your tools make you fastest and invites a comparison to developer day rates you don't want.</p>
<p><strong>What is the fastest way to close a non-technical client on an AI project?</strong></p><p>A short live demo. Build a small, real, working slice before the call and show the outcome happening on screen while they watch - a real email coming in and a smart reply going out, for example. Watching the result removes the only real objection a non-technical client has, which is that they can't picture what they're buying.</p>
<p><strong>How do I stop scope creep when I sell on outcomes?</strong></p><p>Write the outcome down as the deliverable before you build. One page: state the result in the client's own words, list what's included, list what's explicitly out of scope, and note that anything beyond it is a new conversation. A defined outcome is what lets you sell on results confidently without it quietly expanding into work you never priced.</p>]]></content:encoded>
    </item>
    <item>
      <title>How I Review Claude Code's Output Before I Ship It</title>
      <link>https://www.claudecodeclub.ai/blog/review-claude-code-output-before-you-ship</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/review-claude-code-output-before-you-ship</guid>
      <pubDate>Sun, 19 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Workflow</category>
      <category>Code Review</category>
      <description><![CDATA[Claude Code can write a whole feature in one turn, but shipping it blind is how you burn a client. Here is the exact review pass I run on every build - what I read first, what I never trust, and how I keep it fast.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>To review Claude Code output, read the diff before the summary, run the code before you trust it, and check the three things the agent gets wrong most: silent scope creep, deleted logic it decided was unused, and confident code for cases it never tested.</li><li>You still have to read AI-written code. The agent optimizes for a working answer to what you asked, not for what you meant or for the edge cases you did not mention.</li><li>Reviewing is faster when you make the agent show its work - ask what changed and why before you approve, so you review its reasoning, not just its output.</li></ul>
<h2>How to Review Claude Code's Output Before You Ship It</h2>
<p>Here is the whole review pass in one breath: read the diff before you read the agent's summary, run the code before you believe it works, and specifically hunt for the three things Claude Code gets wrong most often - scope it quietly expanded, logic it deleted because it judged it unused, and confident-looking code for a case it never actually ran. That is what I do on every single build before it goes near a client. Everything below is how each step works and why skipping it is how you ship a bug with your name on it.</p>
<blockquote><strong>NOTE:</strong> This is not about distrusting the agent. Claude Code is the fastest builder I have ever worked with. It is about the gap between what you asked for and what you meant - the agent fills that gap with a reasonable guess, and review is where you catch the guesses that were wrong.</blockquote>
<h2>Do You Still Have to Read AI-Written Code?</h2>
<p>Yes, and it is the step people skip first. The agent writes code that answers the prompt you gave it, not the intent behind it. If you asked it to make a form submit and you forgot to mention what happens when the network drops, it will happily ship a version that assumes the network never drops. The code runs, the demo works, and the bug lives in the case you never spoke out loud. Reading the output is how you find the assumptions the agent made on your behalf. If you ship without reading, you are not shipping your judgment, you are shipping its guess.</p>
<h2>Read the Diff Before You Read the Summary</h2>
<p>Claude Code gives you a tidy summary of what it did. The summary is honest, but it is a summary - it tells you the intent, not the exact lines. I read the actual diff first, then the summary, in that order. When you read the summary first, your brain nods along and then skims the diff looking for confirmation. When you read the diff first, you see what really changed, including the small edits the summary rounded off. The summary says 'updated the form'. The diff shows it also changed a shared helper that three other screens use. Guess which one matters.</p>
<ul><li>Read the raw diff first, cold, before the agent's explanation frames it for you.</li><li>Watch for edits to shared or unrelated files - that is where quiet scope creep hides.</li><li>Then read the summary and check it against what you actually saw change.</li></ul>
<h2>The Three Things Claude Code Gets Wrong Most</h2>
<p>After enough builds you learn where the agent drifts, and it is the same three places. First, silent scope creep: you asked for one thing and it also refactored something nearby because it looked improvable. Sometimes helpful, sometimes it just broke a working thing you did not ask it to touch. Second, deletions: it removes code it decided was unused, and it is usually right, until the one time that 'unused' function was called somewhere it did not check. Third, untested confidence: it writes clean, sure-looking code for an edge case it never ran, because you never gave it a way to run that case. Those three are 90% of what I catch in review.</p>
<blockquote><strong>WARNING:</strong> The dangerous bugs are never the ugly code - you catch that on sight. They are the confident, well-formatted code for a situation that was never actually tested. It looks the most trustworthy and it is the least verified.</blockquote>
<h2>Run It Before You Trust It</h2>
<p>Reading catches intent bugs. Running catches reality bugs. Before I approve anything, I actually execute the path that changed - click the button, hit the endpoint, run the flow with a weird input on purpose. The agent will tell you the code is complete and correct, and it believes that, because from inside its turn it has no way to run your app the way a user will. You do. Two minutes of actually using the thing beats twenty minutes of re-reading it. If it changed data, I check the data. If it changed a UI, I break the UI on purpose. Trust is earned by the code running, not by the agent sounding sure.</p>
<h2>Make the Agent Show Its Work So Review Is Faster</h2>
<p>The fastest way to review is to review reasoning, not just lines. Before I approve a bigger change, I ask the agent to tell me what it changed, why, and what it chose not to do. When it has to explain itself, two things happen: it often catches its own shaky decision mid-explanation, and I get a map of where to look instead of reading everything with equal attention. This is the CCC read-back review - you do not read faster by reading less, you read faster by making the agent point you at the risky parts first. That single habit cut my review time more than any tool did.</p>
<ul><li>Ask 'what changed, why, and what did you deliberately not touch?' before approving.</li><li>Let the explanation route your attention to the risky files instead of reading flat.</li><li>If the agent cannot cleanly justify a change, that is your first place to dig.</li></ul>
<h2>Where This Goes Next</h2>
<p>A good review pass is the difference between an AI builder who ships fast and one who ships fast and gets paid again. Read the diff, hunt the three drift spots, run the path, and make the agent show its work. Inside the CCC community we keep a shared review checklist that members actually use before client handoff, with the exact prompts for the read-back step, so you can copy a pass that already works instead of learning the hard way on a live project. Come grab it and add the bug that bit you to the list.</p>
<h2>FAQ</h2>
<p><strong>How do I review Claude Code's output?</strong></p><p>Read the raw diff before the agent's summary, run the code path that changed instead of trusting that it works, and specifically check for scope creep, deletions of code assumed unused, and confident code for edge cases that were never actually tested. Those three account for most of what goes wrong.</p>
<p><strong>Do I still need to read AI-generated code?</strong></p><p>Yes. The agent writes code that answers the prompt you gave, not the intent behind it or the edge cases you did not mention. Reading the output is how you catch the assumptions it made on your behalf. Shipping unread code means shipping its guess instead of your judgment.</p>
<p><strong>Can I trust the code Claude Code writes?</strong></p><p>You can trust it to be a strong first version, not a finished one. It is reliable for what you clearly specified and unreliable for what you left unsaid. Trust it after you have read the diff and run the change, not because the agent sounds certain - it always sounds certain.</p>
<p><strong>What does Claude Code get wrong most often?</strong></p><p>Three things: silent scope creep where it changes more than you asked, deleting code it judged unused that turned out to be called elsewhere, and writing clean, confident code for a case it never ran. The last one is the most dangerous because it looks the most trustworthy.</p>
<p><strong>How do I review AI code faster without missing bugs?</strong></p><p>Make the agent show its work. Ask what it changed, why, and what it chose not to touch before you approve. Reviewing its reasoning routes your attention to the risky files first, so you read the dangerous parts closely and skim the safe ones, instead of reading everything flat.</p>
<p><strong>How do I stop Claude Code from introducing bugs?</strong></p><p>Give it a way to check itself: run the code, describe the edge cases out loud in your prompt so they are not left to a guess, and keep changes small enough to review. Most agent bugs come from unstated requirements, so the fix is stating more of them and verifying the rest yourself.</p>]]></content:encoded>
    </item>
    <item>
      <title>&quot;Let Me Think About It&quot; - How I Handle the Stall That Kills Deals</title>
      <link>https://www.claudecodeclub.ai/blog/let-me-think-about-it-objection</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/let-me-think-about-it-objection</guid>
      <pubDate>Sun, 19 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Selling</category>
      <category>Objections</category>
      <category>Closing</category>
      <description><![CDATA["Let me think about it" is where most builder deals quietly die. It is rarely about thinking. Here is how I find the real reason without pushing, and turn a soft maybe into a yes or a clean no.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>When a prospect says &quot;let me think about it,&quot; do not push and do not vanish. Agree, then ask what specifically they want to think through - price, timing, trust, or buy-in from someone else - because &quot;think about it&quot; is almost never about thinking.</li><li>It is a polite way to end the discomfort of saying no or of raising a real concern. Your job is to make it safe to say the real thing, so you can handle it now instead of chasing a ghost for three weeks.</li><li>The best fix is upstream: surface price, decision-makers, and timeline during the call so the stall has nowhere to hide.</li></ul>
<h2>How to Handle &quot;Let Me Think About It&quot;</h2>
<p>When you hear &quot;let me think about it,&quot; do not argue and do not go quiet for two weeks. Agree with them, then gently ask what part they want to think through - is it the price, the timing, whether it will actually work, or do they need to run it past someone else? That one question does the whole job. It turns a vague brush-off into a real concern you can actually address, and it does it without pressure. Almost nobody who says &quot;let me think about it&quot; is going home to think. They are ending the conversation politely. Below is how to hear what they are really saying and what to do about each version of it.</p>
<blockquote><strong>NOTE:</strong> &quot;Let me think about it&quot; is not a no. It is a request for an exit that does not feel rude. If you make it safe for them to say the real thing, most of the time they will - and then you have something you can work with.</blockquote>
<h2>Why Prospects Really Say It</h2>
<p>People rarely say &quot;let me think about it&quot; because they need quiet reflection. They say it because saying no to your face is uncomfortable, or because they have a concern they do not want to spell out - the price feels high, they are not sure you can deliver, or the real decision-maker is not in the room. It is the socially easy button. If you take it at face value and say &quot;sure, get back to me,&quot; you have just agreed to chase someone who was politely trying to leave. Treat the phrase as a signal that a real objection exists and is hiding, not as a scheduling update.</p>
<h2>Is It a Real Objection or a Brush-Off?</h2>
<p>It can be either, and your follow-up question tells you which. When you ask &quot;what specifically do you want to think through?&quot; a genuine prospect gives you a real answer - &quot;I need to check the budget,&quot; &quot;I want to compare one other option.&quot; A brush-off gives you a vague non-answer or a fast &quot;oh, just everything.&quot; That distinction is gold. A real concern you can handle right now. A brush-off means the interest was not there, and the kindest, most profitable thing you can do is let them go and stop spending energy on it. Either way you win, because you stop guessing.</p>
<ul><li>Real objection: they name something concrete - price, timeline, a specific doubt, another approver.</li><li>Brush-off: vague, fast, or 'just the whole thing' - low interest, let it go cleanly.</li><li>Either answer is useful. What kills you is the maybe you never resolve.</li></ul>
<h2>What to Actually Say in the Moment</h2>
<p>Keep it calm and low-pressure. Something like: &quot;Totally fair, this should be a considered decision. Just so I know I have given you everything you need - what is the main thing you want to think through?&quot; You agreed, so they do not get defensive. You asked a specific question, so &quot;everything&quot; feels lazy to say. Then you stay quiet and let them fill the silence. Whatever comes next is the real conversation. If it is price, you talk value. If it is trust, you show proof. If it is another person, you ask how to help them make the case internally. You are not overcoming an objection, you are finally having the honest one.</p>
<blockquote><strong>TIP:</strong> After you ask the question, stop talking. The silence is uncomfortable and that is the point - they will fill it with the real reason. If you rush to reassure them, you talk right over the answer you needed.</blockquote>
<h2>How to Follow Up Without Being Annoying</h2>
<p>If they still want time after all that, get a real next step before the call ends - a specific day to reconnect, not a limp &quot;I'll follow up.&quot; Then when you do follow up, do not send &quot;just checking in.&quot; Send something useful: an answer to the exact concern they named, a short example that addresses it, a relevant result. You are giving them a reason to re-engage, not nagging them for a decision. One good follow-up tied to their real concern beats five &quot;any thoughts?&quot; messages that make you look anxious and them feel hunted.</p>
<h2>The Real Fix Is Upstream</h2>
<p>The best way to handle &quot;let me think about it&quot; is to make sure it has nothing to hide behind. Most stalls come from things you could have surfaced on the call - you never talked real numbers, you never asked who else signs off, you never pinned down when they want this live. Ask those during the conversation, not after. This is the CCC no-stall close: by the time you present the offer, price is not a surprise, every decision-maker is accounted for, and the timeline is theirs. When you do that, &quot;let me think about it&quot; mostly stops happening, because there is nothing left to quietly think about.</p>
<ul><li>Surface the price range early so the final number is never a shock.</li><li>Ask who else is involved in the decision before you pitch, not after.</li><li>Nail down their timeline so 'later' has an actual date attached.</li></ul>
<h2>Where This Goes Next</h2>
<p>&quot;Let me think about it&quot; only kills deals when you accept it at face value. Agree, ask what they really want to think through, sit in the silence, and either handle the real objection or free yourself from a dead lead. Then fix it at the source by qualifying harder on the call. Inside the Claude Code Club community we trade the exact scripts members use for this moment and what actually happened after, so you can borrow lines that have already closed real deals. Come see the ones working right now and bring the objection that keeps beating you.</p>
<h2>FAQ</h2>
<p><strong>How do you respond to &quot;let me think about it&quot;?</strong></p><p>Agree that it should be a considered decision, then ask what specifically they want to think through - price, timing, trust, or another decision-maker. Then stay quiet and let them answer. That turns a vague stall into a real concern you can handle on the spot instead of chasing later.</p>
<p><strong>Why do prospects say &quot;let me think about it&quot;?</strong></p><p>Usually not because they need to think. It is a polite way to end the conversation without saying no, or to avoid naming a concern like price or doubt about delivery. Treat it as a signal that a real objection is hiding, not as a genuine plan to reflect and return.</p>
<p><strong>Is &quot;let me think about it&quot; a real objection or a brush-off?</strong></p><p>It can be either, and your follow-up question reveals which. A real prospect names something concrete like budget or comparing one other option. A brush-off gives a vague or instant 'just everything.' A real concern you handle now; a brush-off you let go of cleanly so you stop wasting energy.</p>
<p><strong>What should I say when a client wants to think it over?</strong></p><p>Try: 'Totally fair - just so I know I gave you everything you need, what is the main thing you want to think through?' You agree so they do not get defensive, you ask something specific so a vague answer feels lazy, then you go silent and let them tell you the real reason.</p>
<p><strong>How do I follow up after &quot;let me think about it&quot; without being annoying?</strong></p><p>Set a real reconnect date before the call ends, then follow up with something useful that answers the exact concern they named - an example, a relevant result - not 'just checking in.' You are giving them a reason to re-engage, not nagging them for a yes.</p>
<p><strong>How do I stop getting the &quot;let me think about it&quot; stall in the first place?</strong></p><p>Surface the stall's hiding places on the call: talk real price early, ask who else signs off before you pitch, and pin down their timeline. When price is not a surprise, every decision-maker is accounted for, and the date is theirs, there is very little left to quietly go think about.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code Hooks: Which Ones Actually Earn Their Keep</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-hooks-that-earn-their-keep</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-hooks-that-earn-their-keep</guid>
      <pubDate>Sat, 18 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Workflow</category>
      <category>Automation</category>
      <description><![CDATA[Most Claude Code hooks look clever and then get deleted a week later. After running them on real client builds, here are the three hooks I actually kept, the ones I dropped, and how to add your first one without breaking anything.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>The three Claude Code hooks that earn their keep are a PostToolUse hook that auto-formats every file the agent edits, a PreToolUse hook that blocks commands I never want run unattended, and a Stop hook that pings me when a long task finishes.</li><li>A hook is just a shell command Claude Code runs automatically at a set moment, so you do not have to remember to run it - it fires on every relevant action.</li><li>Start with the auto-format hook. It is the one you will notice missing the day you turn it off, and it is the safest first hook to add.</li></ul>
<h2>The Claude Code Hooks That Actually Earn Their Keep</h2>
<p>Real talk: most Claude Code hooks you will see people brag about are fun for a day and then quietly deleted. After running hooks on real client builds for months, exactly three stayed on every project I touch. A PostToolUse hook that auto-formats every file the agent edits. A PreToolUse hook that blocks a short list of commands I never want run while I am not watching. And a Stop hook that tells me out loud the second a long task is done so I stop babysitting the terminal. That is the whole keeper list. Everything below is why those three survived and the rest did not.</p>
<blockquote><strong>TIP:</strong> A hook is a shell command Claude Code runs for you automatically at a set point in its loop - before a tool runs, after a tool runs, or when it stops. You are not writing a plugin. You are handing the agent a one-line command and telling it when to fire it.</blockquote>
<h2>What Is a Claude Code Hook, in One Minute</h2>
<p>A hook is a command that runs on its own at a specific moment, so you never have to remember to run it. You define hooks in your settings and pick the event that triggers each one. The events you will actually use are PreToolUse (fires before the agent runs a tool, and can block it), PostToolUse (fires right after a tool runs, great for cleanup), and Stop (fires when the agent finishes its turn). That is the mental model. The power is not any single hook - it is that the thing happens every single time, automatically, whether or not you were paying attention.</p>
<h2>Keeper 1: The PostToolUse Hook That Formats Everything</h2>
<p>This is the one I would fight you for. I run a PostToolUse hook that formats every file Claude Code writes or edits, the moment it touches it. Before this, I would let the agent build for an hour and then get a diff full of inconsistent spacing and quote styles that I had to clean up by hand or in a separate pass. Now the formatter runs on each edit, so the code is already clean when I read it. The agent never drifts on style, and I never review formatting noise. It is invisible, which is exactly why it is the best hook I have - you only notice it the day you turn it off.</p>
<ul><li>Trigger: PostToolUse, scoped to file-editing tools so it only fires when a file actually changed.</li><li>Command: your project's formatter on the edited file (whatever you already use).</li><li>Payoff: every diff is clean, so you review logic instead of whitespace.</li></ul>
<h2>Keeper 2: The PreToolUse Guardrail That Blocks Bad Commands</h2>
<p>The second keeper is a PreToolUse hook that inspects a command before it runs and blocks a short deny-list of things I never want executed unattended. This is not about not trusting the agent. It is about the one time in a hundred where a broad delete or a force-push would be a genuinely bad afternoon. The hook checks the command, and if it matches my list it stops it and tells me why, so I decide instead of finding out after. Hot take: a small block-list hook does more for letting the agent run on a longer leash than any amount of careful prompting, because it is a hard stop, not a polite request.</p>
<blockquote><strong>WARNING:</strong> Keep the deny-list short and specific to genuinely destructive or hard-to-undo commands. A giant list that blocks half of what the agent needs just trains you to override it, and an override reflex defeats the whole point of the guardrail.</blockquote>
<h2>Keeper 3: The Stop Hook That Tells Me When to Come Back</h2>
<p>The third one is small and I love it. A Stop hook fires when the agent finishes a turn, and mine plays a sound and shows a notification. On a long task I used to sit and watch the terminal like it was a kettle. Now I go do something else, and the moment it is done or needs me, I hear it. This is the hook that changed how I work more than the fancy ones did, because it broke the babysitting habit. The lesson under all three keepers: the best hooks remove a small thing you were doing manually every session, not a big thing you do once.</p>
<h2>The Hooks I Tried and Deleted</h2>
<p>Here is the part a summary of the docs will not give you: what did not work for me. I tried a hook that auto-committed to git after every edit. It sounded tidy and it was chaos - a commit history full of half-built states I had to squash later. Deleted. I tried a hook that ran the full test suite on every single edit; on a real project that meant waiting on tests after trivial changes, so it killed my flow. I moved testing to when I actually asked for it. And I tried stacking notification hooks on many events, which turned into noise I learned to ignore, which is worse than no notification at all. The pattern: if a hook fires too often or does something heavy on a light action, you will end up fighting it. Keepers are light, specific, and rare enough to matter.</p>
<ul><li>Auto-commit after every edit: created a messy history of half-built states. Deleted.</li><li>Full test suite on every edit: too slow on real projects, broke flow. Moved to on-demand.</li><li>Notifications on many events: became background noise I tuned out. Kept only the one Stop ping.</li></ul>
<h2>How to Add Your First Hook Without Breaking Anything</h2>
<p>Start with the auto-format hook, because it is the safest and the one you will feel immediately. Add a single PostToolUse hook that runs your formatter on the file that was just edited, then work as normal for a session and watch your diffs come back clean. Do not add three hooks at once - add one, live with it for a day, and only add the next when you catch yourself wishing it existed. That is the same rule I use for everything in Claude Code: let the real work tell you what to automate, instead of automating things you imagine you will need. Shipping a clean build beats collecting clever config.</p>
<blockquote><strong>TIP:</strong> One hook at a time. Add the formatter, use it for a day, then add the guardrail, then the finish ping. If you ever cannot remember why a hook is there, that is your sign to delete it.</blockquote>
<h2>Where This Goes Next</h2>
<p>Hooks are the quiet layer that turns Claude Code from a tool you drive into a workspace that maintains itself while you build. The three keepers cover the daily grind - clean code, a safety net, and a nudge when it is your turn. Inside the CCC community we keep a running list of the hooks members actually kept versus the ones they dropped, with the exact commands, so you can copy what works instead of trial-and-erroring your own. Come grab the current list and add yours to it.</p>
<h2>FAQ</h2>
<p><strong>What are Claude Code hooks?</strong></p><p>Hooks are shell commands Claude Code runs automatically at set points in its loop - before a tool runs, after a tool runs, or when it stops. You define them once in your settings and they fire every time the matching event happens, so you never have to remember to run them yourself.</p>
<p><strong>Which Claude Code hook should I set up first?</strong></p><p>Start with a PostToolUse hook that runs your formatter on each edited file. It is the safest first hook and the one you notice immediately, because every diff comes back clean and you review logic instead of whitespace. Add other hooks only once you catch yourself wishing they existed.</p>
<p><strong>What is the difference between PreToolUse and PostToolUse hooks?</strong></p><p>A PreToolUse hook fires before the agent runs a tool and can block it, which makes it perfect for a short deny-list of commands you never want run unattended. A PostToolUse hook fires right after a tool runs, which is ideal for cleanup like formatting the file that just changed.</p>
<p><strong>Can hooks slow Claude Code down?</strong></p><p>They can if you attach something heavy to a frequent event. Running a full test suite on every single edit, for example, means waiting after trivial changes and it kills your flow. Keep hooks light and specific to the event, and move slow work like full test runs to when you actually ask for them.</p>
<p><strong>Do I need to be a strong coder to use hooks?</strong></p><p>No. A hook is just a one-line command plus the event that triggers it. If you already run a formatter or a linter from the terminal, you know enough to wire it into a hook. You are not writing a plugin, you are telling the agent when to run a command you already use.</p>
<p><strong>Where do Claude Code hooks live?</strong></p><p>You configure hooks in your Claude Code settings, where you pick the event (like PreToolUse, PostToolUse, or Stop) and the command to run. Keeping them in your project settings also means the same guardrails and cleanup travel with the project for anyone who works in it.</p>]]></content:encoded>
    </item>
    <item>
      <title>&quot;Can't I Just Use ChatGPT?&quot; - How I Answer the Objection That Kills Deals</title>
      <link>https://www.claudecodeclub.ai/blog/just-use-chatgpt-objection</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/just-use-chatgpt-objection</guid>
      <pubDate>Sat, 18 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Selling</category>
      <category>Claude Code</category>
      <category>Clients</category>
      <description><![CDATA[Every prospect eventually says it: why pay you when they can just use ChatGPT? Here is the exact way I answer it in the room, why arguing about features loses, and the reframe that turns the objection into the close.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>When a prospect says they can just use ChatGPT, do not argue about which AI is better - you will lose, because it makes the deal about the tool instead of the outcome.</li><li>Agree with them, then reframe: a chatbot gives them answers, you give them a finished, working result and the accountability for it. They are not buying AI, they are buying not having to become the builder.</li><li>The close is a question, not a pitch: ask what it costs them to do it themselves and get it wrong. The gap between that and your fee is the whole sale.</li></ul>
<h2>&quot;Can't I Just Use ChatGPT?&quot; Answer the Real Question, Not the Words</h2>
<p>Straight up: when a prospect asks why they should pay you when they can just use ChatGPT, do not answer the words - answer the fear underneath them. The words sound like a tool comparison. The fear is that they are about to overpay for something they suspect they could do themselves. So the move is not to argue that your AI is better than their AI. It is to agree that the tool is cheap and available, then move the conversation to the thing they are actually buying: a finished result, done right, that they did not have to build or own the risk on. The instant you make it about the tool, you lose. The instant you make it about the outcome, you win.</p>
<blockquote><strong>TIP:</strong> The objection is almost never really about ChatGPT. It is a price-versus-value test in disguise. Your job is to move the frame from the price of a subscription to the value of a finished outcome they can trust.</blockquote>
<h2>Why Arguing About Features Always Loses</h2>
<p>The trap is to answer with a spec sheet - my tool has bigger context, it edits files, it runs commands, it uses MCP servers. All true, and all a losing move in a sales conversation, because now you are two vendors arguing over horsepower while the prospect quietly decides they will just try it themselves for twenty bucks a month. Features are a comparison, and comparisons invite the prospect to become the expert who judges them. You do not want them judging tools. You want them judging outcomes, where the honest comparison is not your AI versus their AI - it is a finished, working thing versus a folder of half-built attempts and a weekend they will not get back.</p>
<h2>The Reframe: They Are Not Buying AI, They Are Buying the Result</h2>
<p>Here is the line I actually use, close to word for word: &quot;You are completely right that the tool is cheap - I use these tools too, that is exactly how I get you a result this fast. What you are paying me for is that it works, it is done this week, and if it breaks it is my problem to fix, not yours.&quot; That reframe does three things at once. It agrees, so I am not fighting them. It repositions the AI as my cost, not the product. And it names the two things a chatbot can never sell them: a finished outcome and accountability. A prompt gives you an answer. It does not give you a shipped, working result with a name attached to it if something goes wrong.</p>
<ul><li>Agree first: yes, the tool is cheap and available - remove the fight.</li><li>Reposition the tool as your cost, not the deliverable, so the price is about the outcome.</li><li>Name what they cannot buy from a chatbot: a finished result, on a deadline, with your accountability behind it.</li></ul>
<h2>The Close Is a Question About Their Time</h2>
<p>After the reframe, do not pitch - ask. &quot;If you did this yourself with ChatGPT, honestly, how many hours do you think it takes you to get it fully working, and what is an hour of your time worth?&quot; Then be quiet. They will do the math out loud, and almost every time the number they land on is bigger than your fee, because they are not just pricing the typing - they are pricing the learning curve, the dead ends, and the risk of getting it subtly wrong. You did not tell them your service was worth it. You asked a question that let them prove it to themselves. That is the whole close, and it works precisely because you let them build the case instead of arguing it for them.</p>
<blockquote><strong>TIP:</strong> The most powerful thing you can do after the reframe is stop talking. Ask what it costs them to do it themselves and get it wrong, then let the silence do the selling. The gap between that number and your fee is the sale.</blockquote>
<h2>When &quot;Just Use ChatGPT&quot; Is Actually the Right Answer</h2>
<p>One more thing, because pretending it is never true will cost you trust. Sometimes a prospect really should just use ChatGPT, and saying so is how you win the next, bigger job. If someone needs a quick draft, a one-off script, or help thinking something through, tell them plainly that a chat tool is the right call and they do not need to hire anyone. You lose a small deal you did not want and you become the person who told them the truth. When the real project shows up - the one with a deadline, a budget, and a cost of being wrong - you are the first call. Honesty about when they do not need you is the cheapest marketing there is.</p>
<h2>Make the Objection Work for You</h2>
<p>The &quot;can't I just use ChatGPT&quot; objection is not a wall, it is a door. It tells you the prospect is weighing doing it themselves, which means they are close enough to buying to imagine the work. Meet it by agreeing, repositioning the tool as your cost, and asking what their time and their risk are really worth. Inside the Claude Code Club we keep the exact scripts our members use to handle this and the other three objections that kill most deals, with the wording that has actually closed them. If you sell anything built with AI, come grab the scripts and stop losing deals to a twenty-dollar subscription.</p>
<h2>FAQ</h2>
<p><strong>How do I answer a client who says they can just use ChatGPT?</strong></p><p>Do not argue about which AI is better. Agree that the tool is cheap, then reframe what they are actually paying for: a finished, working result delivered on a deadline, with your accountability if anything breaks. A chatbot gives them answers; you give them an outcome they can trust and did not have to build.</p>
<p><strong>Why does arguing tool features lose the sale?</strong></p><p>Because it turns the conversation into a comparison, and comparisons invite the prospect to decide they can just judge and use the tool themselves for a few dollars a month. You want them weighing outcomes, not horsepower - a finished result versus a folder of half-built attempts and a lost weekend.</p>
<p><strong>What is the best way to close after the reframe?</strong></p><p>Ask a question instead of pitching: how many hours would it take them to get it fully working themselves, and what is an hour of their time worth? Then stay silent. They will price in the learning curve and the risk of getting it wrong, and that number usually beats your fee - so they close themselves.</p>
<p><strong>Should I ever tell a prospect to just use ChatGPT?</strong></p><p>Yes, when it is true. If they need a quick draft or a one-off, tell them a chat tool is the right call and they do not need to hire anyone. You lose a small deal you did not want and become the honest expert they call first when the real, higher-stakes project arrives.</p>
<p><strong>Is the objection a bad sign?</strong></p><p>No, it is usually a buying signal. It means the prospect is imagining doing the work, which means they are close. Treat it as a door, not a wall - agree, reposition the tool as your cost, and ask what their time and their risk are truly worth.</p>
<p><strong>What am I really selling if the AI is cheap?</strong></p><p>You are selling the result and the accountability, not the software. The prospect is buying not having to become the builder - no learning curve, no dead ends, no owning the risk if it breaks. The AI is your cost of delivering fast; the finished outcome with your name on it is the product.</p>]]></content:encoded>
    </item>
    <item>
      <title>The Best Claude Code MCP Servers (and What Each One Unlocks)</title>
      <link>https://www.claudecodeclub.ai/blog/best-claude-code-mcp-servers</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/best-claude-code-mcp-servers</guid>
      <pubDate>Fri, 17 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>MCP</category>
      <category>Tools</category>
      <description><![CDATA[MCP servers are how Claude Code reaches past your code and into your real tools. Here are the best Claude Code MCP servers to install first, grouped by what they let the agent actually do - from your repos and the live web to browsers, databases, and your workspace.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>MCP servers plug Claude Code into your real tools - your repos, the live web, a browser, your database, your workspace - so it can act, not just write code.</li><li>The best Claude Code MCP servers to install first are the ones that match what you actually do: start with filesystem and GitHub, then add web search, a browser, a database, and your comms tools as you need them.</li><li>Do not install everything at once. Each server you add is more for the agent to juggle, so add them deliberately as a real task calls for them.</li></ul>
<h2>The Best Claude Code MCP Servers Start With What You Actually Do</h2>
<p>An MCP server is a small connector that gives Claude Code a new ability - reading your files, searching the web, driving a browser, querying a database. Without them, Claude Code writes code in your project. With them, it can reach out and act on the systems you already use. So the best Claude Code MCP servers are not a fixed top-ten list; they are the ones that match the work in front of you. The list below is grouped by what each server lets the agent do, so you can pick the ones that fit and skip the rest.</p>
<table><caption>What you want to do, and the kind of MCP server to add</caption><thead><tr><th>If you want Claude Code to...</th><th>Add this kind of MCP server</th></tr></thead><tbody><tr><td>Work with your repositories and pull requests</td><td>A GitHub server</td></tr><tr><td>Read and search files outside the project folder</td><td>A filesystem server</td></tr><tr><td>Pull in live, current information from the web</td><td>A web search and fetch server</td></tr><tr><td>Click through and test a real website</td><td>A browser automation server</td></tr><tr><td>Query or update your app's real data</td><td>A database server, for example Postgres</td></tr><tr><td>Send messages or read your workspace</td><td>A Slack or Google Workspace server</td></tr></tbody></table>
<h2>Filesystem and GitHub: The Foundation</h2>
<p>If you install nothing else, install these two. A filesystem server lets Claude Code read and work with files beyond the single folder it starts in, which matters the moment your work spans more than one project. A GitHub server lets it see your repositories, open and read pull requests, check issues, and understand the history behind the code. Together they turn the agent from something that edits files in front of it into something that understands your actual codebase and how it changes.</p>
<ul><li>A filesystem server: reach files and folders across your machine, not just the current project.</li><li>A GitHub server: read repos, pull requests, issues, and commit history so the agent has real context.</li><li>Best first pick because nearly every other task builds on top of code and files.</li></ul>
<h2>Web Search and Fetch: Give Claude Code Live Knowledge</h2>
<p>A model only knows what it was trained on, which means it goes stale on anything recent - a new library version, current prices, this week's news. A web search and fetch server closes that gap. It lets Claude Code look things up live and read specific pages, so it can check the current way to do something instead of guessing from memory. If you build with fast-moving tools, this is the server that stops the agent from confidently using last year's approach.</p>
<h2>Browser Automation: Let It Click, Fill, and Check</h2>
<p>A browser automation server gives Claude Code hands on a real browser. It can open your site, click through a flow, fill in a form, and confirm that what it built actually works the way a user would experience it. This is the difference between the agent telling you the login page should work and the agent opening the page and checking. For testing what you ship, and for pulling information off sites that have no clean API, it is one of the most satisfying servers to have on.</p>
<h2>Databases: Query and Update Real Data</h2>
<p>A database server lets Claude Code talk directly to your data - run a query, inspect a table, check why a record looks wrong, or update something during a build. Instead of you copying schema and rows back and forth, the agent reads the real structure and works against it. This turns vague requests into precise ones, because it is looking at your actual data rather than an imagined version of it. Point it at a development database, not production, until you trust exactly what it will run.</p>
<h2>Communication and Workspace: Slack, Gmail, Drive, Notion</h2>
<p>This is where MCP stops being about code at all. Servers for your communication and workspace tools let Claude Code read and send messages, search your email, pull a document, or update your notes. That is what makes real automation possible - an agent that reads an incoming request, does the work, and posts the result where your team will see it. If your goal is systems that run without you babysitting them, these are the servers that let the agent touch the places work actually happens.</p>
<ul><li>A Slack server: read channels and post updates, so the agent can report into where your team already is.</li><li>A Google Workspace server: search email, open docs, and pull from Drive to gather what a task needs.</li><li>A notes or knowledge server, such as Notion: read and update the place your team keeps its context.</li></ul>
<h2>How to Choose (and Not Overload Claude Code)</h2>
<p>The mistake people make is bolting on every server they can find. Each one you add is another set of abilities for the agent to weigh on every task, and a long menu of half-used tools makes it slower and less focused, not more capable. Treat MCP servers like tools on a workbench - keep the ones you reach for and put the rest away. Start with filesystem and GitHub, add web search when you need current information, add a browser when you need to test, and add the rest only when a real task asks for it.</p>
<blockquote><strong>TIP:</strong> Add servers deliberately, one at a time, when a task actually needs the ability. A focused, curated set of MCP servers beats a huge pile of connectors you rarely touch - the agent stays fast and picks the right tool because there are fewer wrong ones in the way.</blockquote>
<h2>FAQ</h2>
<p><strong>What are the best Claude Code MCP servers to install first?</strong></p><p>Start with a filesystem server and a GitHub server, because almost everything else builds on files and code. From there add a web search and fetch server for current information, a browser automation server for testing, a database server for real data, and comms or workspace servers when you want the agent to act beyond code.</p>
<p><strong>What is an MCP server in plain terms?</strong></p><p>It is a small connector that gives Claude Code a new ability, like reading files outside the project, searching the live web, driving a browser, or querying a database. Without MCP servers Claude Code writes code in your project; with them it can reach out and act on the tools you already use.</p>
<p><strong>Should I install every MCP server I can find?</strong></p><p>No. Each server is another set of abilities the agent has to weigh on every task, so a huge pile of connectors makes it slower and less focused. Keep a curated set you actually reach for, and add new servers deliberately when a real task calls for one.</p>
<p><strong>Do I need a database MCP server for a beginner project?</strong></p><p>Only if your project has real data you want the agent to read or update. If it does, a database server saves you from copying schema and rows back and forth. Point it at a development database rather than production until you are confident about exactly what it will run.</p>
<p><strong>What can MCP servers do beyond working with code?</strong></p><p>Plenty. Communication and workspace servers let Claude Code read and send Slack messages, search your email, open documents, and update notes. That is what makes hands-off automation possible - an agent that reads a request, does the work, and posts the result where your team will see it.</p>
<p><strong>How is this different from just asking Claude Code to write code?</strong></p><p>Writing code happens inside your project. MCP servers let the agent reach outside it - to your repos, the live web, a browser, your database, and your workspace - and take action there. It is the step from an assistant that drafts code to an agent that actually operates across your real tools.</p>]]></content:encoded>
    </item>
    <item>
      <title>CLAUDE.md Templates by Project Type (What to Put in Your Context File)</title>
      <link>https://www.claudecodeclub.ai/blog/claude-md-templates-by-project-type</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-md-templates-by-project-type</guid>
      <pubDate>Fri, 17 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Claude Code</category>
      <category>Building</category>
      <category>Workflow</category>
      <description><![CDATA[A CLAUDE.md file is the context Claude Code reads before it touches your project, and a good one is the difference between generic output and code that fits. Here is what belongs in a CLAUDE.md file, plus ready templates for web apps, client builds, automation, and content sites.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>A CLAUDE.md file is the context Claude Code reads before it works - your stack, conventions, commands, and rules - so it produces code that fits your project instead of a generic guess.</li><li>The backbone is the same for every project: what this is, how it is built, how to run it, the conventions to follow, and the things never to do.</li><li>The details change by project type, so below are starting templates for a web app, a client build, an automation project, and a content site.</li></ul>
<h2>What a CLAUDE.md File Does, and Why the Template Matters</h2>
<p>A CLAUDE.md file sits in your project and is the first thing Claude Code reads before it does anything. Think of it as the briefing you would give a new senior developer on their first morning - what this project is, how it is built, how to run it, and the standards you expect. Without it, the agent infers all of that from scratch every session and often guesses wrong. With it, the agent starts already knowing your world, and its output fits instead of fighting your conventions.</p>
<p>The reason a template matters is that a blank page invites either too little or too much. Too little, and the agent still has to guess. Too much, and the important rules drown in noise. A good CLAUDE.md is short, specific, and skimmable - the handful of things that actually change the output. The templates below give you that shape for the most common kinds of project so you are editing a starting point rather than staring at nothing.</p>
<h2>The Common Backbone Every CLAUDE.md Should Have</h2>
<p>Whatever you are building, five sections carry most of the value. Get these right and you have covered eighty percent of what the agent needs. The rest is project-specific flavor.</p>
<ol><li>Overview: one short paragraph on what this project is and who it is for.</li><li>Stack and structure: the main languages, frameworks, and how the folders are laid out.</li><li>How to run it: the exact commands to install, run, build, and test.</li><li>Conventions: the patterns and style you want followed, stated plainly.</li><li>Never do this: the specific traps, the destructive commands, and the rules that must not be broken.</li></ol>
<h2>Template: A Web App or SaaS Project</h2>
<p>For a web application, the agent needs to know your framework, how data flows, and how you ship. Fill the backbone, then add the specifics that keep front end and back end consistent.</p>
<ul><li>Stack: the framework, language, styling approach, and database, named exactly.</li><li>Structure: where pages, components, shared logic, and API routes live.</li><li>Data: how state is managed and how the app talks to its backend or database.</li><li>Commands: install, local dev server, build, test, and how you deploy.</li><li>Conventions: component patterns, naming, and how new features should be wired in.</li><li>Never do this: touch production data, commit secrets, or bypass the type checker.</li></ul>
<h2>Template: A Client or Agency Build</h2>
<p>On client work, the file carries an extra job - protecting the relationship and the boundaries of the engagement. Alongside the technical backbone, spell out what is in scope and what must never happen on someone else's system.</p>
<ul><li>Context: whose project this is, the goal of the engagement, and what done looks like.</li><li>Environments: which is development and which is live, stated unmistakably.</li><li>Access rules: what the agent may touch and what is strictly off limits.</li><li>Deliverables: the specific things being built, so work stays inside scope.</li><li>Conventions: the client's existing style, so your work blends in rather than stands out.</li><li>Never do this: run destructive commands, alter live data, or expose client credentials.</li></ul>
<h2>Template: Automation and Scripts</h2>
<p>Automation projects are smaller in code but higher in consequence, because they run on their own and touch real systems. The file should make the blast radius of every action obvious before anything runs.</p>
<ul><li>Purpose: what this automation does and what triggers it.</li><li>Inputs and outputs: where data comes from and where results go.</li><li>External systems: the APIs, files, or accounts it touches, and any limits on them.</li><li>Safety: what counts as a safe dry run versus a real action with side effects.</li><li>Commands: how to test a run without consequences before letting it act for real.</li><li>Never do this: send, delete, or spend without an explicit confirmation step.</li></ul>
<h2>Template: A Content or Marketing Site</h2>
<p>For a content site, the technical stack matters less than voice, structure, and consistency. The file should protect how the site reads and how new pages are made so everything stays on brand.</p>
<ul><li>Purpose: what the site is for and who it speaks to.</li><li>Voice: the tone and style, with a plain do and do-not list.</li><li>Structure: where pages, posts, and shared layout live, and how a new page is added.</li><li>Content rules: formatting standards, and anything that must never appear.</li><li>Commands: how to run the site locally and publish a change.</li><li>Never do this: break the house style, or ship a page without the required fields.</li></ul>
<h2>How to Keep Your CLAUDE.md From Going Stale</h2>
<p>A context file is only useful while it is true. The fastest way to lose the benefit is to write it once and let the project drift away from it, because now the agent is following instructions that no longer match reality. Treat the file as living documentation. When you change the stack, add a command, or set a new rule, update the file in the same breath. A two-minute edit keeps every future session accurate, and it costs far less than the confusion of an agent working from a description that has quietly gone wrong.</p>
<blockquote><strong>NOTE:</strong> Keep it short and current over long and complete. A tight CLAUDE.md that reflects the project today beats an exhaustive one that describes how things used to be. When in doubt, cut the nice-to-know and keep the rules that actually change what the agent does.</blockquote>
<h2>FAQ</h2>
<p><strong>What is a CLAUDE.md file?</strong></p><p>It is a file in your project that Claude Code reads before it does anything, describing what the project is, how it is built, how to run it, and the rules to follow. It works like the briefing you would give a new senior developer, so the agent starts each session already knowing your project instead of guessing.</p>
<p><strong>What should I put in a CLAUDE.md file?</strong></p><p>Five things carry most of the value: an overview of the project, the stack and folder structure, the exact commands to run and test it, the conventions you want followed, and a clear list of things never to do. Everything else is project-specific detail on top of that backbone.</p>
<p><strong>Does the CLAUDE.md change depending on the project?</strong></p><p>The backbone stays the same, but the details shift. A web app needs data flow and deploy steps; a client build needs scope and access boundaries; an automation project needs the blast radius of each action; a content site needs voice and structure. The templates above give you a starting point for each.</p>
<p><strong>How long should a CLAUDE.md file be?</strong></p><p>Short and skimmable. A blank page invites too little or too much, and the important rules drown when the file is bloated. Aim for the handful of things that actually change the output, and cut the nice-to-know. A tight file that is true beats an exhaustive one that is out of date.</p>
<p><strong>How do I stop my CLAUDE.md from going out of date?</strong></p><p>Treat it as living documentation and update it in the same breath as the change. When you switch part of the stack, add a command, or set a new rule, edit the file right then. A two-minute update keeps every future session accurate and avoids the agent following instructions that no longer match the project.</p>
<p><strong>Where does the CLAUDE.md file go?</strong></p><p>In the project so the agent picks it up automatically as context. The key point is that you do not have to paste this information into every conversation - once it lives in the file, Claude Code reads it each session, which is exactly why keeping it accurate is worth the small effort.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code Subagents: How to Run Multiple AI Agents at Once</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-subagents</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-subagents</guid>
      <pubDate>Thu, 16 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Building</category>
      <category>Automation</category>
      <description><![CDATA[Claude Code subagents let you launch several specialized agents from one session, each with its own clean context. Here is what they are, when to reach for them, and how to brief them so a whole team of agents works on your project at once.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Claude Code subagents are separate agents you launch from your main session - each gets its own clean context window and does one focused job, like exploring the codebase or running the tests.</li><li>Reach for them when work is independent (so it can run in parallel) or noisy (so it would otherwise clutter your main chat), which keeps your primary agent focused on the thread that matters.</li><li>Brief a subagent like a teammate who just walked in - full context, one clear task, and what done looks like - then let it go do the work and report back.</li></ul>
<h2>What Claude Code Subagents Are</h2>
<p>Claude Code subagents are extra agents you spin up from inside your main session to handle a piece of work on their own. Think of your main Claude Code session as the lead on a project. A subagent is a teammate you hand a specific job to - go read every file that touches billing, or go write and run the tests for this module - while you keep your attention on the bigger thread. The subagent does the job, then hands you back a tidy summary instead of a pile of raw output.</p>
<p>The part that makes them powerful is that each subagent runs in its own clean context. It does not carry the clutter of your main conversation, and its own messy exploration never lands back in yours. It goes off, works in a separate space, and returns only the result. That single design choice is what lets you run several of them at once and keep your main session clear and fast.</p>
<ul><li>Its own context window, separate from your main session, so nothing bleeds across.</li><li>A type or role - a general-purpose worker, an explorer for searching the codebase, a planner, or a custom agent you define yourself.</li><li>A single task you describe when you launch it, since it starts fresh every time with no memory of your chat.</li><li>A summarized result it returns to your main session when it finishes, not the full transcript of everything it did.</li></ul>
<h2>Why Run More Than One Agent at Once</h2>
<p>A single agent working through a big task in one context has two limits. It can only do one thing at a time, and everything it looks at piles into the same conversation, which slowly crowds out the thread you actually care about. Subagents solve both. They let independent work happen in parallel, and they keep heavy, noisy work out of your main context so your lead agent stays sharp on the real goal.</p>
<table><caption>Main session vs subagent - which does what</caption><thead><tr><th>Dimension</th><th>Your main session</th><th>A subagent</th></tr></thead><tbody><tr><td>Role</td><td>Holds the plan and the thread that matters</td><td>Does one focused, self-contained job</td></tr><tr><td>Context</td><td>Everything you and it have discussed</td><td>A clean slate, briefed fresh each time</td></tr><tr><td>Best for</td><td>Decisions, direction, tying results together</td><td>Searching, testing, research, repetitive digging</td></tr><tr><td>What you get back</td><td>The running conversation</td><td>A short summary of the result</td></tr></tbody></table>
<h2>The Two Jobs Subagents Are Best At</h2>
<p>The first job is parallelizing independent work. If you have three questions that do not depend on each other - where is the auth logic, how does the payment flow work, and what does the deploy script do - you can launch three explorers at once and get three answers back together instead of waiting through them one at a time. Anything that can be split into pieces that do not need each other is a natural fit for running several agents in parallel.</p>
<p>The second job is protecting your context. Some tasks generate a mountain of output - reading a huge folder, scanning logs, combing through search results. If all of that lands in your main session, it crowds out the thread you are trying to hold onto. Hand that work to a subagent and only the conclusion comes back. Your lead agent never has to wade through the raw pile, so it stays focused and responsive on the part that needs your judgment.</p>
<h2>How to Launch a Subagent</h2>
<p>You do not need any special setup to start. In plain English, tell Claude Code to use a subagent for a chunk of work and describe the job. It picks the right kind of agent, hands over the task, and reports back. As you get comfortable, you can be explicit about what you want.</p>
<ol><li>Decide what to hand off - pick work that is either independent or noisy, the two cases where a subagent pays off.</li><li>Choose the kind of agent - a general-purpose one for open-ended tasks, an explorer for searching the codebase, a planner for designing an approach.</li><li>Describe the task in full, because the subagent starts fresh and knows nothing about your conversation.</li><li>Say whether to wait for it or let it run in the background while you keep working.</li><li>Read the summary it returns and fold the result into your main thread.</li></ol>
<blockquote><strong>TIP:</strong> When you have several independent questions, ask for them in one go so Claude Code can launch the subagents in parallel. Asking one at a time forces them to run in sequence and you lose the speed-up.</blockquote>
<h2>How to Brief a Subagent So It Actually Delivers</h2>
<p>The most common reason a subagent disappoints is a thin brief. Because it starts with a blank slate, it has none of the context you have built up in your main session. It has not seen what you tried, what you ruled out, or why the task matters. So brief it like a sharp colleague who just walked into the room - give it enough to make good judgment calls instead of guessing.</p>
<ul><li>State the goal and why it matters, not just the narrow instruction, so the agent can make sensible calls on its own.</li><li>Include the specifics it cannot see - file paths, names, what you already checked, what a good answer looks like.</li><li>Say clearly whether you want research and findings or actual code changes, since it cannot read your intent.</li><li>Tell it how much detail you want back - a two-line answer or a full breakdown - so the summary is useful.</li></ul>
<h2>Foreground or Background: When to Wait</h2>
<p>You can run a subagent in the foreground, where you wait for its result before moving on, or in the background, where it works while you carry on and notifies you when it is done. The rule is simple. If you need the answer before you can take the next step - a research agent whose findings decide your next move - run it in the foreground. If the work is genuinely separate and you have other things to do meanwhile, send it to the background and keep building. Do not sit and poll a background agent; the whole point is that you get on with something else.</p>
<h2>A Simple Rule for When to Use Subagents</h2>
<p>Do not reach for a subagent out of habit. For one quick lookup or a small edit, launching a separate agent is more overhead than it is worth - just do it in your main session. Subagents earn their keep when work is parallel or heavy. If you can split a task into independent pieces, or if a task would dump a mountain of output into your chat, that is the moment to delegate it.</p>
<blockquote><strong>NOTE:</strong> The mental model that sticks: you are the lead, and subagents are the team. You hold the plan and the judgment; they go do the focused, self-contained work and report back. Once that clicks, one project starts to feel like several builders working for you at once.</blockquote>
<h2>FAQ</h2>
<p><strong>What is a subagent in Claude Code?</strong></p><p>It is a separate agent you launch from your main session to handle one focused task - like searching the codebase, running tests, or doing research. It runs in its own clean context and hands back a short summary of the result instead of dumping everything into your main conversation.</p>
<p><strong>When should I use a subagent instead of just asking Claude Code directly?</strong></p><p>Use one when work is either independent (so several agents can run in parallel) or noisy (so heavy output would clutter your main chat). For a single quick lookup or a small edit, skip the subagent - launching one is more overhead than it saves.</p>
<p><strong>Can Claude Code run multiple subagents at the same time?</strong></p><p>Yes. If you have several tasks that do not depend on each other, Claude Code can launch them in parallel and return the results together. The trick is to ask for all of them in one go - asking one at a time forces the agents to run in sequence and you lose the speed-up.</p>
<p><strong>Do subagents remember my main conversation?</strong></p><p>No. Each subagent starts fresh with a blank slate, which is exactly why they keep your context clean. It also means you have to brief them fully - include the goal, the relevant file paths, what you already tried, and what a good answer looks like, because they cannot see any of it otherwise.</p>
<p><strong>What is the difference between running a subagent in the foreground and the background?</strong></p><p>In the foreground you wait for the result before continuing, which is right when the answer decides your next step. In the background the agent works while you carry on with other things and notifies you when it finishes. Use the background for genuinely separate work, and do not sit polling it.</p>
<p><strong>Are subagents only useful for large projects?</strong></p><p>No, but the payoff grows with size. Even on a small project they help when a task would flood your chat with output or when you have a few independent questions to answer at once. On larger projects, delegating exploration and testing to subagents is what keeps your main session fast and focused.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code vs Cursor: An Honest Comparison for Builders</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-vs-cursor</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-vs-cursor</guid>
      <pubDate>Thu, 16 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Claude Code</category>
      <category>Tools</category>
      <category>Building</category>
      <description><![CDATA[Cursor and Claude Code both put AI at the center of building, but they make opposite bets on where you work. An honest comparison of the AI editor and the terminal agent, and how to tell which one fits the way you build.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Cursor is an AI-first code editor - a familiar visual IDE with AI woven into every keystroke. Claude Code is an agent that lives in your terminal and works across your whole project and your other tools.</li><li>The real split is where you sit: Cursor keeps you in the editor driving with AI at your fingertips, while Claude Code hands more of the driving to an agent and reaches beyond code through MCP, hooks, and subagents.</li><li>Pick Cursor if you love working in an editor and want AI assistance as you type; pick Claude Code if you want an agent that runs whole workflows and connects to your real tools. Many builders keep both.</li></ul>
<h2>Claude Code vs Cursor: Two Different Bets on How You Build</h2>
<p>Claude Code vs Cursor is not a fight between a good tool and a bad one. Both are excellent, and both put a capable model at the center of your work. The honest way to compare them is to look at the bet each one makes about where you should be while you build. Cursor bets you want to stay in a polished editor with AI at your fingertips. Claude Code bets you want an agent you can hand whole jobs to from the terminal, one that reaches past your code into your other tools. Once you see the bet, the choice gets a lot clearer.</p>
<table><caption>Claude Code vs Cursor at a glance</caption><thead><tr><th>Dimension</th><th>Cursor</th><th>Claude Code</th></tr></thead><tbody><tr><td>What it is</td><td>An AI-first code editor (a VS Code style IDE)</td><td>An agent that runs in your terminal</td></tr><tr><td>Where AI lives</td><td>Inline edits, tab autocomplete, a side chat</td><td>A conversation that edits files and runs commands</td></tr><tr><td>How you work</td><td>You drive in the editor, AI assists</td><td>You delegate, the agent runs multi-step work</td></tr><tr><td>Reach beyond code</td><td>MCP support, centered on the editor</td><td>MCP plus hooks, subagents, and a headless SDK</td></tr><tr><td>Runs in automation or CI</td><td>Editor-bound</td><td>Yes - scriptable and headless</td></tr><tr><td>Best for</td><td>Editor-lovers who want AI as they type</td><td>Builders who want an agent to run whole workflows</td></tr></tbody></table>
<h2>Where You Actually Sit While Building</h2>
<p>Cursor is a code editor first. If you have used a modern IDE, it will feel immediately familiar - files on the left, your code in the middle, and AI woven through the whole thing. It suggests the next line as you type, lets you highlight code and ask for a change, and shows you edits as clean visual diffs you accept or reject. You are sitting in the editor, hands on the code, with a very capable assistant sitting next to you.</p>
<p>Claude Code sits in your terminal and works more like a conversation than an editor. You tell it what you want, and it reads your files, makes the edits, runs the commands, and reports what it did. You are not moving your own cursor around the code so much as directing an agent that moves through the project on your behalf. It works alongside whatever editor you already use, because it is not trying to be your editor at all.</p>
<h2>How Much the Tool Drives</h2>
<p>This is the difference that matters most day to day. With Cursor, you are in the driver's seat and the AI assists - it completes your thought, rewrites a block you selected, or drafts a change you review inline. The unit of work is usually a keystroke, a line, or a file, and you stay closely involved throughout. That tight loop is a genuine strength when you want to stay hands-on and feel every change as it happens.</p>
<p>With Claude Code, you delegate more. The natural unit of work is a whole task - build this feature, refactor this module, find and fix this bug across the files it touches - and the agent carries it through several steps before coming back to you. You trade some of the moment-to-moment control for the ability to hand off larger chunks. Neither is better in the abstract; it depends on whether you would rather steer closely or delegate broadly.</p>
<h2>Reach Beyond Code: MCP, Hooks, and Subagents</h2>
<p>Both tools can connect to outside systems through MCP, so this is not a case of one having it and the other not. Where Claude Code goes further is in the machinery around the agent that lets you shape and automate how it works.</p>
<ul><li>Hooks let you run your own commands automatically in response to what the agent does, so you can enforce checks or wire in your own steps.</li><li>Subagents let it spin up specialized helpers that each work in their own clean context, so big jobs get split up without cluttering the main thread.</li><li>A headless mode and an SDK let it run without a person watching - in a script, in a scheduled job, or inside your CI pipeline.</li></ul>
<p>That last point is the real divider. Cursor is built around a person sitting at the editor. Claude Code can run with nobody watching at all, which opens up automation that an editor-bound tool is not designed for. If your ambitions include agents that run on a schedule or as part of your build process, that reach matters.</p>
<h2>The Learning Curve and Who Each One Suits</h2>
<p>For most people coming from a normal coding setup, Cursor is the gentler start. It looks and feels like an editor they already know, and the AI shows up as helpful suggestions rather than as something you have to learn to direct. You can be productive in minutes without changing how you work.</p>
<p>Claude Code asks for a small shift in mindset. Living in the terminal and thinking in terms of tasks you delegate is unfamiliar at first, especially if you have never been comfortable at a command line. But that shift is exactly what unlocks the bigger payoff - once you learn to brief an agent well, you are handing off whole pieces of work rather than nudging code one line at a time. The curve is slightly steeper, and the ceiling is higher.</p>
<h2>Pricing and How They Fit Your Stack</h2>
<p>Treat pricing as something to check for yourself rather than take from an article, since plans change. In broad terms, Cursor sells its own monthly subscription for the editor and its AI features. Claude Code comes with a Claude subscription or runs on usage-based API billing, so if you already pay for Claude you may already have access. The more useful question than raw cost is how each fits your stack: Cursor replaces your editor, while Claude Code slots alongside whatever editor and tools you already use.</p>
<h2>Which One Should You Choose?</h2>
<p>Choose Cursor if you love working in an editor and want a very capable assistant right there as you type, review, and refactor by hand. Choose Claude Code if you would rather delegate whole tasks to an agent, work across your project and your other tools, and eventually automate work so it runs without you sitting there. And do not feel you have to pick one forever - plenty of builders draft and explore in one and run heavier, hands-off work in the other.</p>
<blockquote><strong>TIP:</strong> Ask yourself one question: do you want to drive with AI assistance, or delegate to an agent? If it is drive, lean Cursor. If it is delegate, lean Claude Code. The answer usually settles the choice faster than any feature list.</blockquote>
<h2>FAQ</h2>
<p><strong>Is Claude Code better than Cursor?</strong></p><p>Neither is simply better - they make different bets. Cursor is an AI editor where you drive and the AI assists as you type. Claude Code is a terminal agent you delegate whole tasks to that also reaches your other tools and can run automated. If you like staying hands-on in an editor, Cursor fits; if you want to hand off larger jobs, Claude Code fits.</p>
<p><strong>Can I use Claude Code and Cursor together?</strong></p><p>Yes, and many builders do. Because Claude Code works in the terminal alongside any editor, you can keep Cursor as your editor for hands-on work and reach for Claude Code when you want to delegate a whole task or automate something. They are not mutually exclusive.</p>
<p><strong>Does Claude Code need a specific code editor?</strong></p><p>No. Claude Code runs in your terminal and works with whatever editor you already use, because it is not trying to be your editor. Cursor is the opposite - it is the editor, replacing the one you had. That is the clearest practical difference between them.</p>
<p><strong>Which is better for beginners, Claude Code or Cursor?</strong></p><p>For someone coming from a normal coding setup, Cursor is usually the gentler start because it looks and feels like a familiar editor with AI added in. Claude Code asks for a small mindset shift toward delegating tasks from the terminal, which takes a little longer to click but pays off when you want to hand off bigger chunks of work.</p>
<p><strong>Does Cursor support MCP like Claude Code?</strong></p><p>Yes, both support MCP, so connecting to outside tools is not unique to one of them. Where Claude Code goes further is in the surrounding machinery - hooks, subagents, and a headless mode and SDK - that let you shape how the agent works and run it without a person watching.</p>
<p><strong>Can Claude Code run without me watching, and can Cursor?</strong></p><p>Claude Code can run headless - in a script, on a schedule, or inside a CI pipeline - because it is built around an agent rather than a person at the editor. Cursor is designed around someone sitting in the editor, so it is not built for that kind of unattended automation. If running agents without supervision matters to you, that favors Claude Code.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Build a Chatbot with Claude Code (No Coding Background Needed)</title>
      <link>https://www.claudecodeclub.ai/blog/build-a-chatbot-with-claude-code</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/build-a-chatbot-with-claude-code</guid>
      <pubDate>Wed, 15 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Building</category>
      <category>Automation</category>
      <description><![CDATA[Learn how to build a chatbot with Claude Code from scratch - pick the type, describe the behaviour in plain English, connect it to a real interface, and deploy it so it runs without your laptop.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>You can build a chatbot with Claude Code in an afternoon, even with zero coding background - you describe the behaviour and Claude Code writes the code.</li><li>The work has four parts: pick the chatbot type, describe it to Claude Code, connect it to a real interface (website widget, WhatsApp, or Slack), and deploy it.</li><li>Follow the CCC Chatbot Loop - describe, test, correct, extend - and you get from idea to a working bot your customers can actually use.</li></ul>
<h2>What It Means to Build a Chatbot with Claude Code</h2>
<p>When you build a chatbot with Claude Code, you create a program that holds a conversation - it takes a message from a user, works out what they want, and replies. Claude Code writes that program for you. You describe how the bot should behave in plain English, and it produces the working code, the connection to your chat interface, and the setup to run it.</p>
<p>This is different from typing questions into a chat window yourself. A chatbot you build is a product. It answers your customers, your team, or your website visitors around the clock, without you sitting there. You own it, you control what it says, and you can put it in front of anyone.</p>
<blockquote><strong>NOTE:</strong> You do not need to know how to code. You need to be able to describe what you want in clear sentences. That is the whole skill. Claude Code handles the programming.</blockquote>
<h2>The Three Types of Chatbot You Can Build</h2>
<p>Before you build anything, pick the shape of bot you want. Nearly every chatbot falls into one of three types, and choosing first keeps your build focused.</p>
<table><caption>The three chatbot types and what each one is best for</caption><thead><tr><th>Type</th><th>How It Works</th><th>Best For</th></tr></thead><tbody><tr><td>Scripted bot</td><td>Follows a fixed set of rules and buttons you define - if the user picks X, reply Y</td><td>Booking flows, FAQs with known answers, lead capture forms</td></tr><tr><td>AI bot</td><td>Sends the user's message to a language model and returns the reply in natural language</td><td>Open-ended support, product questions, conversational help</td></tr><tr><td>Knowledge bot</td><td>An AI bot that first searches your own documents, then answers using only what it found</td><td>Support desks, internal wikis, answering from your real content</td></tr></tbody></table>
<p>For most real businesses, the knowledge bot is the one worth building. It answers in natural language but stays grounded in your own material, so it does not invent facts about your product. Start simpler if you want a quick first win - a scripted bot ships in under an hour.</p>
<h2>What You Need Before You Start</h2>
<p>The list is short. You do not need a server, a data science background, or a big budget.</p>
<ul><li>The Claude Code desktop app installed on your computer</li><li>A folder on your computer where Claude Code will build the project</li><li>An API key for whichever model will power the bot's replies (Claude Code will tell you exactly where to paste it)</li><li>The place you want the bot to live - your website, a WhatsApp number, or a Slack workspace</li><li>If you are building a knowledge bot, a folder of your own content - a FAQ, product docs, or help articles as plain text</li></ul>
<blockquote><strong>TIP:</strong> Keep your API key in the .env file Claude Code creates for you, never inside the code and never in a shared document. Anyone who gets that key can spend money on it.</blockquote>
<h2>Step One - Describe Your Chatbot to Claude Code</h2>
<p>Open the Claude Code desktop app, start a new project, and point it at your build folder. Then describe the bot in plain language. Be specific about what it should do and what it must never do.</p>
<p>A strong first prompt looks like this: 'Build me a chatbot in Node.js that answers questions about my coaching business. It should be friendly, keep replies under three sentences, and if it does not know the answer, tell the user to email hello@mysite.com instead of guessing. Give me a simple web page with a chat widget so I can test it.' That is enough to start. Claude Code will ask follow-up questions if it needs more.</p>
<blockquote><strong>TIP:</strong> The CCC Build-First Rule: describe the outcome, not the technical steps. Say what the bot should do and what it should refuse to do, then let Claude Code choose the how. You refine once you see it working.</blockquote>
<p>Claude Code will write the bot logic, a test page you can open in your browser, and a .env template showing where your API key goes. Read the files it produces - it explains each one in plain English as it builds.</p>
<h2>Step Two - Connect It to a Real Interface</h2>
<p>A bot is only useful where your users already are. Once the test page works, ask Claude Code to connect the same bot to the interface you actually want. The bot logic stays the same - only the connection layer changes.</p>
<ul><li>Website widget: ask for an embeddable chat bubble you can paste into your site with one line of HTML</li><li>WhatsApp: connect through Twilio so customers message a real number and the bot replies</li><li>Slack: wire it to a Slack app so your team can ask it questions inside a channel</li><li>Instagram or Facebook: connect through the Meta messaging API for social replies</li></ul>
<p>Tell Claude Code which one you want. For example: 'Now connect this chatbot to WhatsApp using Twilio. I have a Twilio account ready.' Claude Code writes the connection code and tells you which credentials to paste and where.</p>
<h2>Step Three - Give the Chatbot Your Own Knowledge</h2>
<p>This is the step that turns a generic bot into one worth paying for. Give Claude Code a folder of your own content and ask it to make the bot search that content before answering. The bot then replies using your real information instead of general knowledge.</p>
<p>Say: 'Here is a folder of my product docs and FAQs. Change the chatbot so it searches these files first and answers using only what it finds. If the answer is not in the files, it should say it does not know.' Claude Code builds a simple retrieval system - it splits your documents into chunks, finds the relevant ones for each question, and feeds them to the model as context.</p>
<blockquote><strong>WARNING:</strong> A grounded bot is safer for your brand. A bot answering from general knowledge can confidently state something false about your product. Instruct it to answer only from your documents and to admit when it does not know.</blockquote>
<h2>Step Four - Deploy It So It Runs Without Your Laptop</h2>
<p>While you are testing, the bot only runs when your computer is on. To let it answer customers at 2am, it needs to live on a host that stays online. Ask Claude Code to deploy it for you.</p>
<p>Say: 'Deploy this chatbot to a host that stays online so it works when my laptop is off. Walk me through it step by step.' Claude Code will pick a suitable host, write the deployment configuration, and give you the exact steps. For a web widget, a service like Vercel or Render works well and has a free tier for testing.</p>
<p>Once deployed, the bot has a fixed public URL. Paste that into your website embed, your Twilio number settings, or your Slack app, and it runs on its own from then on.</p>
<h2>The CCC Chatbot Loop - How to Get It Right Fast</h2>
<p>Every good chatbot build follows the same rhythm. We call it the CCC Chatbot Loop, and it is the fastest way from a rough idea to a bot that behaves.</p>
<ol><li>Describe: tell Claude Code what the bot should do and what it must refuse to do</li><li>Test: send it real questions, including awkward and off-topic ones, and watch the replies</li><li>Correct: paste any bad reply or error back to Claude Code and ask it to fix the behaviour</li><li>Extend: once it holds up, add one capability - your docs, a new channel, a saved conversation log</li></ol>
<p>Run the loop in small circles. Do not try to build the perfect bot in one prompt. Ship a rough version, break it on purpose, and tighten it. Three quick loops beat one giant prompt every time.</p>
<h2>Common Mistakes to Avoid</h2>
<ul><li>Letting the bot answer from general knowledge instead of your own content - it will eventually state something false about your business</li><li>Skipping the refusal instruction - always tell the bot what to do when it does not know the answer</li><li>Putting the API key in the code instead of the .env file, then sharing the code</li><li>Building every feature at once - add one capability per loop so you can tell what broke</li><li>Never testing the awkward questions - your real users will send them on day one</li></ul>
<h2>Keep Building Inside Claude Code Club</h2>
<p>Building a chatbot with Claude Code is one of the most useful first projects you can ship. It is a real product, people interact with it, and once you have built one the same pattern applies to almost any bot you build next.</p>
<p>Inside Claude Code Club we walk through builds like this step by step. The classroom has lessons on connecting bots to real interfaces, grounding them in your own documents, and deploying them so they run without your laptop. You can share your bot in the community, get feedback on your prompts, and see how other members turned their first chatbot into a paid client project.</p>
<blockquote><strong>NOTE:</strong> Claude Code Club is open now. Build your first chatbot this week and come share it.</blockquote>
<h2>FAQ</h2>
<p><strong>Do I need to know how to code to build a chatbot with Claude Code?</strong></p><p>No. Claude Code writes all the code for you. What you need is a clear description of how the bot should behave and what it should refuse to do. If you can explain it in plain English, Claude Code can build it.</p>
<p><strong>How do I stop the chatbot from making things up?</strong></p><p>Build a knowledge bot: give it a folder of your own documents and instruct it to answer only from what it finds, and to say it does not know when the answer is not there. This keeps its replies grounded in your real content instead of general knowledge.</p>
<p><strong>Where can I put the chatbot once it is built?</strong></p><p>Anywhere your users are. Claude Code can connect the same bot to a website chat widget, a WhatsApp number through Twilio, a Slack channel, or social messaging through the Meta API. The bot logic stays the same - only the connection layer changes.</p>
<p><strong>How much does it cost to run a chatbot built with Claude Code?</strong></p><p>The main cost is the API usage for the model that powers replies, which is usage-based and small for low volumes. Hosting a web bot can start free on services with a free tier. Set a spending cap on your API key so costs stay predictable.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Build a Mobile App with Claude Code (From Idea to Your Phone)</title>
      <link>https://www.claudecodeclub.ai/blog/build-a-mobile-app-with-claude-code</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/build-a-mobile-app-with-claude-code</guid>
      <pubDate>Wed, 15 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Building</category>
      <category>Getting Started</category>
      <description><![CDATA[Learn how to build a mobile app with Claude Code even if you have never shipped one - choose the right approach, describe the app in plain English, preview it on your own phone, and get it ready for the app stores.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>You can build a mobile app with Claude Code without a computer science degree - you describe the app and Claude Code writes it in a framework that runs on both iPhone and Android.</li><li>The fastest path uses React Native with Expo, which lets you preview the real app on your own phone within minutes.</li><li>The work has four parts: choose the approach, describe the app, preview it on your phone, and prepare it for the app stores - all driven from the Claude Code desktop app.</li></ul>
<h2>What It Takes to Build a Mobile App with Claude Code</h2>
<p>When you build a mobile app with Claude Code, you describe the app you want and Claude Code writes the code for a framework that runs on both iPhone and Android. You do not learn Swift, you do not learn Kotlin, and you do not need a computer science degree. You need a clear idea and the ability to describe it in plain sentences.</p>
<p>A mobile app is different from a website. It has screens you swipe between, it can store data on the phone, and it can use the camera, notifications, and location. Claude Code handles the code for all of that. Your job is to decide what the app does and to test it on a real phone as it comes together.</p>
<blockquote><strong>NOTE:</strong> Start with a small, real app: a habit tracker, a tip calculator, a workout logger. A tight first app you actually finish teaches you more than a huge one you never ship.</blockquote>
<h2>Choose the Right Approach First</h2>
<p>There are three common ways to build a mobile app, and the one you pick decides how the whole project goes. Choose before you write a single prompt.</p>
<table><caption>The three approaches to building a mobile app and who each suits</caption><thead><tr><th>Approach</th><th>What You Get</th><th>Best For</th></tr></thead><tbody><tr><td>React Native with Expo</td><td>One codebase that runs on iPhone and Android, previewable on your phone in minutes</td><td>Almost everyone starting out - the recommended path</td></tr><tr><td>Progressive web app</td><td>A website that installs to the home screen and works offline, no app store needed</td><td>Simple apps you want live today with no store review</td></tr><tr><td>Fully native (Swift or Kotlin)</td><td>Separate builds for each platform with the deepest device access</td><td>Advanced apps needing heavy performance or platform-specific features</td></tr></tbody></table>
<p>For your first app, use React Native with Expo. It runs on both platforms from one codebase, and Expo lets you see the real app on your own phone within minutes of starting. That fast feedback loop is what keeps a first build from stalling.</p>
<h2>What You Need Before You Start</h2>
<ul><li>The Claude Code desktop app installed on your computer</li><li>A folder on your computer for the project</li><li>The Expo Go app installed on your phone from the App Store or Google Play - this is how you preview your app</li><li>A free Expo account (Claude Code will point you to it when needed)</li><li>One clear sentence describing what your app does and who it is for</li></ul>
<blockquote><strong>TIP:</strong> You do not need an Apple Developer account or a Google Play account to start. You only need those later, when you are ready to publish to the stores. Building and testing on your own phone is free.</blockquote>
<h2>Step One - Describe Your App to Claude Code</h2>
<p>Open the Claude Code desktop app, start a new project, and point it at your build folder. Then describe the app clearly, screen by screen. The clearer your description, the closer the first version lands.</p>
<p>A good first prompt looks like this: 'Build me a mobile app with React Native and Expo. It is a daily water tracker. The home screen shows how many glasses I have logged today with a big plus button to add one. A second screen shows a simple history of the last seven days. Keep the design clean and calm. Set it up so I can preview it on my phone with Expo Go.' Claude Code takes it from there.</p>
<blockquote><strong>TIP:</strong> The CCC Screen-by-Screen Method: describe your app one screen at a time - what the user sees, what they tap, what happens next. This maps directly to how Claude Code builds the app and stops it from guessing.</blockquote>
<p>Claude Code will set up the Expo project, write the screens, and give you the command to start the preview server. It explains each step in plain English as it goes.</p>
<h2>Step Two - Preview It on Your Own Phone</h2>
<p>This is the moment that makes mobile building feel real. When Claude Code starts the Expo server, it produces a QR code. Open the Expo Go app on your phone, scan the code, and your actual app loads on your device in seconds.</p>
<p>Now use it like a real user. Tap the buttons, move between screens, and try to break it. Every time you change the code, the app on your phone updates almost instantly - this is called hot reload, and it is why the Expo path is so fast for a first build.</p>
<p>When something looks wrong or crashes, describe it to Claude Code exactly: 'The plus button adds two glasses instead of one' or 'The history screen is blank.' Paste any error message from the terminal. Claude Code diagnoses and fixes it, usually in one or two exchanges.</p>
<h2>Step Three - Store Data and Add Real Features</h2>
<p>A first app usually forgets everything when you close it. The next step is making data stick and adding the features that make it genuinely useful. Ask for these one at a time.</p>
<ul><li>Save data on the phone so it remembers your logs after closing - ask Claude Code to add local storage</li><li>Send reminders with push notifications - 'remind me to drink water every three hours'</li><li>Use the camera to log photos, or location to tag entries</li><li>Sync across devices by connecting a simple backend like Supabase, so data lives in the cloud</li></ul>
<p>Add one capability per round and re-test on your phone before moving on. If something breaks, you know exactly which change caused it. This is the same disciplined rhythm that keeps any Claude Code build from turning into a mess.</p>
<h2>Step Four - Prepare It for the App Stores</h2>
<p>When the app works and you want other people to install it, you move from previewing to publishing. Expo makes this far simpler than the traditional route, and Claude Code walks you through each part.</p>
<p>Say: 'The app is ready. Walk me through building it for the App Store and Google Play using Expo, step by step.' Claude Code will explain how to create a production build with Expo's build service, what icons and screenshots you need, and how to submit. You will need an Apple Developer account and a Google Play account at this stage, which carry their own one-time and yearly fees set by the platforms.</p>
<blockquote><strong>WARNING:</strong> App store review takes time and each store has its own rules. Build for yourself and a handful of testers first using Expo's sharing options. Only start the full store submission once real people have used the app and it holds up.</blockquote>
<h2>Common Mistakes to Avoid</h2>
<ul><li>Starting with a huge app - a tight, finished small app beats an ambitious one you abandon</li><li>Skipping the Expo Go preview and only reading code - always test on a real phone</li><li>Choosing fully native Swift or Kotlin for a first app when React Native with Expo would ship far faster</li><li>Adding many features in one prompt so you cannot tell what broke</li><li>Rushing to the app store before real testers have used the app</li></ul>
<h2>Keep Building Inside Claude Code Club</h2>
<p>Building a mobile app with Claude Code turns a vague idea into something running on the phone in your pocket. Once you have shipped one small app, the same pattern scales to bigger ones - and to apps you build for paying clients.</p>
<p>Inside Claude Code Club we walk through mobile builds step by step. The classroom covers setting up Expo, storing data, adding notifications, and getting an app ready for the stores. You can share your app in the community, get feedback on your build, and see how other members went from their first tracker app to real products.</p>
<blockquote><strong>NOTE:</strong> Claude Code Club is open now. Build a small app this week and preview it on your own phone.</blockquote>
<h2>FAQ</h2>
<p><strong>Do I need to know how to code to build a mobile app with Claude Code?</strong></p><p>No. Claude Code writes the code for you in React Native, a framework that runs on both iPhone and Android. You describe the app screen by screen in plain English, and Claude Code builds it. You do not need to learn Swift or Kotlin.</p>
<p><strong>Can I build one app for both iPhone and Android?</strong></p><p>Yes. That is the main advantage of the recommended approach. React Native with Expo produces one codebase that runs on both platforms, so you build once and ship to both, rather than building two separate apps.</p>
<p><strong>How do I test the app on my own phone?</strong></p><p>Install the free Expo Go app on your phone. When Claude Code starts the preview server it shows a QR code - scan it with Expo Go and your real app loads on your device in seconds. Every code change updates on your phone almost instantly.</p>
<p><strong>Do I need to pay to publish to the app stores?</strong></p><p>Building and testing on your own phone is free. Publishing to the App Store and Google Play requires developer accounts, which carry one-time and yearly fees set by Apple and Google. Build and test for free first, then pay those fees only when you are ready to publish.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Build a Budget Tracker With Claude Code: the Budget Blueprint</title>
      <link>https://www.claudecodeclub.ai/blog/build-a-budget-tracker-with-claude-code</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/build-a-budget-tracker-with-claude-code</guid>
      <pubDate>Mon, 13 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Building</category>
      <category>Getting Started</category>
      <description><![CDATA[You can build a budget tracker with Claude Code even if you have never written code. Follow the Budget Blueprint to turn your income and spending into a clear picture of where your money goes.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>You can build a budget tracker with Claude Code in an afternoon using the Budget Blueprint, no coding required.</li><li>List what you want to track, describe it to Claude, make it reusable month to month, then read the summary so you can see where your money goes.</li><li>You never write the code yourself; you describe the tracker you want and Claude builds it inside the Claude desktop app.</li></ul>
<h2>How to Build a Budget Tracker With Claude Code</h2>
<p>To build a budget tracker with Claude Code, follow the Budget Blueprint, our four-step method at Claude Code Club for turning your income and spending into a clear monthly picture without writing code. In one breath: list what you want to track, describe it to Claude, make it reusable month to month, then read the summary so you can see where your money actually goes. A budget tracker is a small tool that takes your income and your expenses, sorts the spending into categories, and shows you the totals and what is left. Claude Code builds that tool for you inside the Claude desktop app.</p>
<p>Your job is to decide what you want to keep an eye on. Claude handles the code. The reason this beats a generic budgeting app is that it fits your life exactly: your categories, your income, the few numbers you actually care about, and nothing you do not. You build it once and reuse it every month, so checking your budget becomes a two-minute habit instead of a chore you avoid. If this is your first build, read our guide on your first Claude Code project first, then come back.</p>
<ol><li>List what you want to track: income, spending categories, and totals.</li><li>Describe the tracker to Claude and let it build the tool.</li><li>Make it reusable so each month is a quick update, not a rebuild.</li><li>Read the summary so you can see where your money goes and act on it.</li></ol>
<blockquote><strong>TIP:</strong> Start with your real numbers from last month, not made-up ones. Building against what you actually earned and spent means the tracker is useful the moment it works, and you find out right away whether the categories match how you really live.</blockquote>
<h2>Step One: List What You Want to Track</h2>
<p>Start by writing down everything you want your budget to show. This is the whole design of your tool, and doing it first means Claude builds the right thing the first time. A simple budget tracker needs your income for the month, your expenses grouped into categories, a total for each category, a grand total of what you spent, and what is left over. Pick categories that match your life, such as rent, groceries, transport, subscriptions, eating out, and savings. The right categories are the ones you would actually change your behavior over.</p>
<p>Write this as a plain list, in your own words. You are not writing code; you are naming what matters to you. Decide whether you want to track a single month at a time or compare month to month, and whether you want a target for any category, like a cap on eating out. The clearer this list is, the less back and forth you will have later. Think of it as the blueprint the rest of the build follows.</p>
<ul><li>Your income for the month.</li><li>Spending categories that match how you actually live.</li><li>A total for each category and a grand total.</li><li>What is left over after spending.</li><li>Any targets you want, like a cap on a category.</li></ul>
<h2>Step Two: Describe the Budget Tracker to Claude</h2>
<p>Next, hand your list to Claude Code and ask it to build the tracker. Open the Claude desktop app, paste in your list, and say you want a simple budget tracker that takes your income and expenses and shows the totals and what is left. Ask Claude to add up each category and the grand total for you, since the math is exactly the kind of thing you want the tool to handle rather than doing it by hand. Claude writes the files and shows you how to run it.</p>
<p>Then look at the first result and compare it to your list. Is every category there? Do the totals add up? Does the leftover number look right? If a piece is missing or the layout is off, describe the problem in plain words and Claude adjusts it. This is a conversation, not a one-shot command. A few rounds of small fixes is how you get from a rough first version to a tracker that shows exactly the numbers you care about, laid out the way you want to read them.</p>
<blockquote><strong>NOTE:</strong> Ask Claude to make the totals calculate automatically. A tracker that adds up each category, sums your spending, and works out what is left is what turns this from a fancy list into a tool that does real work and never makes an arithmetic mistake.</blockquote>
<h2>Step Three: Make It Reusable Month to Month</h2>
<p>Now make it reusable, because the point of a tracker is next month, not just this one. Ask Claude Code to set things up so a new month means changing only what actually changes: the new income and the new expenses. Everything that stays the same, your categories, your targets, the layout, should already be in place. That way next month's budget is a quick update instead of starting over, which is the difference between a habit you keep and a tool you build once and forget.</p>
<p>Ask Claude to keep each month's numbers rather than overwriting them, so you build up a record over time. Being able to look back and see that groceries crept up for three months, or that a subscription you forgot has been quietly charging you, is where a tracker earns its keep. You can have Claude show a simple month-to-month comparison once you have a few months in. The habit compounds: the longer you use it, the more it tells you.</p>
<ul><li>A new month should only need the new income and expenses entered.</li><li>Your categories, targets, and layout stay in place between months.</li><li>Keep each month's numbers so you build a record over time.</li><li>Add a simple month-to-month comparison once you have a few months in.</li></ul>
<h2>Step Four: Read the Summary and Act on It</h2>
<p>Finally, use the thing you built. A budget tracker is only worth the afternoon if you read what it tells you, so ask Claude Code to give you a clear summary at the top: what you earned, what you spent, what is left, and which categories are over their targets. The whole value is in that one glance. If you set a cap on eating out and blew past it, the tracker should make that obvious the second you open it, not bury it in a list.</p>
<p>That is the full Budget Blueprint: list what you want to track, describe it to Claude, make it reusable, and read the summary. You started with a vague sense that money was disappearing and finished with a tool that shows you exactly where it goes, built to fit your life instead of someone else's app. Check it once a week for two minutes and it changes how you spend. When yours is working, come share it in the Claude Code Club community and tell us the one category that surprised you. Someone trying to get a grip on their money will build a better tracker because you did. ⚡</p>
<ul><li>Ask for a clear summary at the top: earned, spent, left, and over-target.</li><li>Make anything over its target obvious at a glance.</li><li>Check it once a week for two minutes to stay ahead of your spending.</li><li>Keep the tracker in one folder as your running money record.</li></ul>
<h2>FAQ</h2>
<p><strong>What is the Budget Blueprint?</strong></p><p>The Budget Blueprint is a four-step Claude Code Club method for building a budget tracker: list what you want to track, describe it to Claude, make it reusable month to month, then read the summary so you can see where your money goes. It is designed so a beginner can go from a vague sense of overspending to a working money tool in an afternoon.</p>
<p><strong>Do I need to know how to code to build a budget tracker with Claude Code?</strong></p><p>No. You decide what you want to track, and Claude Code writes the tool and explains how it works inside the Claude desktop app. Your job is to list your income and categories, describe the tracker, check the result against your list, and then read the summary each week.</p>
<p><strong>Why build a budget tracker instead of using a budgeting app?</strong></p><p>A generic app makes you fit your life into its categories and features you do not need. A tracker you build fits you exactly: your income, your categories, and the few numbers you actually care about. You build it once, reuse it every month, and it keeps a record over time so you can spot trends like a category creeping up.</p>
<p><strong>Can Claude Code calculate my totals automatically?</strong></p><p>Yes. Ask Claude Code to add up each category, sum your total spending, and work out what is left when it builds the tracker. Letting the tool do the math is the point: it removes the tedious part and never makes an arithmetic mistake, so the numbers you read are always right.</p>
<p><strong>How do I track my budget across several months?</strong></p><p>Ask Claude Code to keep each month's numbers rather than overwriting them, so the tracker builds up a record. Once you have a few months in, you can have it show a simple month-to-month comparison. That history is where a tracker earns its keep, because it reveals trends a single month cannot show.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code Tips for Beginners: the Ten Starter Habits</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-tips-for-beginners</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-tips-for-beginners</guid>
      <pubDate>Sun, 12 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Getting Started</category>
      <category>Beginners</category>
      <description><![CDATA[The best Claude Code tips for beginners are habits, not tricks. Follow the Ten Starter Habits to go from opening the app for the first time to shipping something small and real.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>The most useful Claude Code tips for beginners are habits: start in the Claude desktop app, describe what you want in plain English, and pick one small real project.</li><li>Work in small steps and check each result, treat fixes as a conversation, and keep each project in its own folder so Claude has everything in one place.</li><li>Save the instructions that worked, ask Claude to explain what it did, and ship something small instead of chasing perfect.</li></ul>
<h2>Claude Code Tips for Beginners</h2>
<p>The best Claude Code tips for beginners are not clever tricks, they are the Ten Starter Habits, our Claude Code Club method for getting productive in your first week without writing a line of code yourself. In one breath: start in the Claude desktop app, describe what you want in plain English, pick one small real project, give Claude context up front, work in small steps, treat fixes as a conversation, keep each project in its own folder, ask Claude to explain what it did, save the instructions that worked, and ship something small. Claude Code is the tool that turns those plain-English descriptions into working software, and these habits are how a beginner points it in the right direction from day one.</p>
<p>If you are brand new, read our guide on installing Claude Code on a Mac and your first Claude Code project first, then come back here. Everything below assumes you have the Claude desktop app open. The reason we teach habits instead of a list of buttons is that the buttons change, but the way you work with an AI that writes code for you does not. Get these ten right and every future project gets easier.</p>
<ol><li>Start in the Claude desktop app, not the terminal.</li><li>Describe what you want in plain English; you do not write the code.</li><li>Pick one small, real project instead of a big idea.</li><li>Give Claude context up front: what you are building and for whom.</li><li>Work in small steps and check each result before moving on.</li><li>When something is wrong, describe it in plain words; it is a conversation.</li><li>Keep each project in its own folder so Claude has everything in one place.</li><li>Ask Claude to explain what it did so you learn as you build.</li><li>Save the instructions and prompts that worked for next time.</li><li>Ship something small and share it; finishing beats perfect.</li></ol>
<blockquote><strong>TIP:</strong> Do not try to use all ten at once. Pick the first three for your first project, add the next three for your second, and by your third build the whole set will feel natural. Habits stick when you layer them, not when you memorize them.</blockquote>
<h2>Set Up for an Easy Start</h2>
<p>Your first habit is where you work. Start in the Claude desktop app, not the terminal. The desktop app gives you a normal window where you type what you want and watch Claude build it, which is far friendlier for a beginner than a command line. You can move to the terminal later if you ever want to; you do not need it to build real things now. Removing that one piece of friction is the difference between starting today and putting it off for a month.</p>
<p>The next setup habit is context. Before you ask for anything, tell Claude what you are building and who it is for in a sentence or two. Something like a simple tool to track my freelance invoices, for me, nothing fancy gives Claude the frame it needs to make good choices. Then keep each project in its own folder. When everything for one project lives in one place, Claude can see the whole thing at once, and you always know where your work is. A tidy folder now saves you a confusing hunt later.</p>
<ul><li>Open the Claude desktop app and work in the window, not the terminal.</li><li>Tell Claude what you are building and who it is for in one or two sentences.</li><li>Give each project its own folder so Claude sees everything at once.</li></ul>
<h2>Talk to Claude Like a Person</h2>
<p>The core skill is describing what you want in plain English. You are not writing code and you are not learning secret commands. You are explaining, in ordinary words, the thing you want to exist: what it should do, what it should look like, and what should happen when you use it. The clearer your description, the closer the first result. Vague in, vague out. Say I want a page that shows my three services with a price under each and a button to email me, not just build me a website.</p>
<p>When something comes back wrong, keep talking. This is the habit that trips up beginners the most: they see a mistake and assume they broke it or that the tool failed. Instead, describe the problem in plain words, the same way you would tell a colleague. The button does not do anything when I click it, or the total at the bottom is adding up wrong. Claude reads that and fixes it. It is a conversation, not a one-shot command, and a few rounds of small corrections is exactly how good software gets made. Finally, ask Claude to explain what it did. A short explanation after each step teaches you a little more every time, so you are learning the whole while you build.</p>
<blockquote><strong>NOTE:</strong> There is no such thing as a dumb request here. If you do not know the right word for something, describe it plainly and let Claude name it. Beginners who ask in plain English out-build beginners who try to sound technical, because plain English is what actually carries the meaning.</blockquote>
<h2>Work in Small, Safe Steps</h2>
<p>Pick one small, real project to start, not the big idea you are excited about. A tool you will actually use this week beats an ambitious app you will abandon on day three. Track your invoices, sort a messy list, make a one-page site for your service. Small and real teaches you the whole loop, describe, check, fix, finish, in an afternoon, and you end up with something you keep. The big idea will still be there in a month, and you will be far better equipped to build it.</p>
<p>Inside that project, work in small steps and check each result before moving on. Ask for one piece, look at it, confirm it does what you wanted, then ask for the next. Building in small pieces means that when something goes wrong you know exactly which change caused it, instead of staring at a big pile of code wondering where the problem is. And when the small thing works, ship it and share it. Finishing something tiny and real is worth more than polishing something forever, because a finished project teaches you what a perfect plan never will. Common early stumbles are worth knowing too, so read our guide on the Claude Code mistakes beginners make.</p>
<ul><li>Choose a small project you will actually use this week.</li><li>Ask for one piece at a time and check it before the next.</li><li>When a small thing works, ship it rather than polishing forever.</li></ul>
<h2>Build Habits That Compound</h2>
<p>The last habit is the one that makes every future project faster: save the instructions and prompts that worked. When a description gets you a great result, keep it in a notes file in the project folder. Over a few builds you collect your own short playbook of phrasings and setup notes that Claude responds to well, and starting a new project becomes copy, tweak, go instead of a blank page. This is the quiet compounding that separates someone three months in from someone on day one. Same tool, better habits.</p>
<p>That is the full set: start in the desktop app, describe in plain English, pick something small and real, give context, work in small steps, keep the conversation going, one folder per project, ask for explanations, save what works, and ship. None of them require you to become a programmer. They just make you a clear thinker who can hand a good description to a tool that builds. When your first project is done, come share it in the Claude Code Club community and tell us which of the ten habits made the biggest difference. Someone opening the app for the first time will start with more confidence because you did. ⚡</p>
<ul><li>Keep a notes file of the prompts and setup that worked.</li><li>Reuse your own playbook to start each new project faster.</li><li>Share your finished project and what you learned with the community.</li></ul>
<h2>FAQ</h2>
<p><strong>What are the Ten Starter Habits?</strong></p><p>The Ten Starter Habits are a Claude Code Club method for beginners: start in the Claude desktop app, describe what you want in plain English, pick one small real project, give context up front, work in small steps, treat fixes as a conversation, keep each project in its own folder, ask Claude to explain what it did, save the instructions that worked, and ship something small. They are habits rather than tricks because the way you work with Claude Code matters more than any single button.</p>
<p><strong>Do I need to know how to code to use Claude Code as a beginner?</strong></p><p>No. You describe what you want in plain English and Claude Code writes the software for you inside the Claude desktop app. Your job is to explain the thing you want to exist, check the result, and describe any fixes in plain words. The habits in this guide are about communicating clearly, not about learning to program.</p>
<p><strong>Should I start with Claude Code in the terminal or the desktop app?</strong></p><p>Start in the Claude desktop app. It gives you a normal window where you type what you want and watch Claude build it, which removes the friction that stops most beginners. You can move to the terminal later if you ever want to, but you do not need it to build real, useful things right now.</p>
<p><strong>What is a good first project with Claude Code?</strong></p><p>Pick something small and real that you will actually use this week, such as an invoice tracker, a tool to sort a messy list, or a one-page site for your service. A small real project teaches you the full loop of describe, check, fix, and finish in an afternoon, and you end up with something you keep instead of an ambitious app you abandon.</p>
<p><strong>What should I do when Claude Code gives me a wrong result?</strong></p><p>Keep talking to it. Describe the problem in plain words the same way you would tell a colleague, such as the button does nothing when I click it. Claude reads that and adjusts. Building with Claude Code is a conversation, and a few rounds of small corrections is exactly how good software gets made.</p>]]></content:encoded>
    </item>
    <item>
      <title>Client Red Flags: the Warning Signs to Watch for Before You Say Yes</title>
      <link>https://www.claudecodeclub.ai/blog/client-red-flags-to-watch-for</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/client-red-flags-to-watch-for</guid>
      <pubDate>Sun, 12 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Agency</category>
      <category>Clients</category>
      <category>Freelancing</category>
      <description><![CDATA[Learning to read client red flags before you sign is the cheapest skill in your business. Use the Green Light Test to spot the warning signs early and only take on clients worth having.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>The client red flags worth watching for fall into three groups: money and commitment, respect and communication, and scope and process.</li><li>Warning signs include dodging the budget, refusing a deposit or contract, bad-mouthing their last freelancer, disrespect during the sales call, vague scope, and unrealistic timelines.</li><li>Run the Green Light Test before you say yes, and prevent most bad fits with a real discovery call and clear written terms.</li></ul>
<h2>Client Red Flags to Watch For</h2>
<p>The client red flags that cost you the most fall into three groups, and spotting them before you sign is the cheapest skill in your business. The three groups are money and commitment, respect and communication, and scope and process. When a prospect trips several of these, the polite move is to pass, because a bad-fit client drains more time, money, and morale than an empty calendar ever will. I call the filter the Green Light Test: you are not looking for a perfect client, you are checking that the warning signs are absent before you commit weeks of your life to the work.</p>
<p>I spent fifteen years shipping inside teams at Apple, PlayStation and Schwab before running my own engagements, and the pattern is consistent: the trouble that shows up on the sales call gets worse once money and deadlines are involved, never better. Red flags are not about judging people. They are about honestly reading whether this particular engagement will be healthy for both sides. The sales conversation is the best behavior you will ever see from a client, so treat what you see there as the ceiling, not the floor.</p>
<ol><li>Money and commitment: dodges budget, haggles hard, refuses a deposit or contract.</li><li>Respect and communication: bad-mouths past help, is slow or dismissive, minimizes the work.</li><li>Scope and process: vague on what they want, unrealistic timeline, unclear who decides.</li></ol>
<blockquote><strong>TIP:</strong> One red flag is a conversation, not a verdict. A great client can have an off moment or a genuine constraint. It is the stacking of several flags, or one flag they refuse to discuss, that tells you to walk away.</blockquote>
<h2>Money and Commitment Red Flags</h2>
<p>The first group is about how a prospect treats money and commitment, because that is where good intentions meet reality. Watch for a client who dodges the budget question entirely, or who cannot give you even a rough range after you have asked plainly. Everyone has a number in mind; a prospect who hides theirs is often planning to use it against you later, or does not have one at all. Related is the hard haggler who pushes on price before they understand what they are buying. Negotiation is normal, but someone who anchors on cheap before they value the outcome will fight you on every invoice.</p>
<p>The clearest commitment flag is refusing a deposit or a contract. A client who will not put a deposit down or sign a simple agreement is telling you they are not ready to commit, and you should believe them. This is the single most protective habit in your business: no deposit, no start. Our guide on what to put in an AI project contract covers the terms that make this easy to ask for. If a prospect balks at reasonable, standard protection, that reaction is the information, not an obstacle to talk them past.</p>
<ul><li>Dodges the budget question or cannot give a rough range.</li><li>Haggles hard on price before understanding the value.</li><li>Refuses a deposit or will not sign a simple agreement.</li></ul>
<h2>Respect and Communication Red Flags</h2>
<p>The second group is about respect, and it predicts your day-to-day life on the project more than anything else. The loudest signal is a prospect who bad-mouths their previous freelancer or agency. Sometimes the last person really was the problem, but very often you are hearing a preview of how they will talk about you the moment something is hard. Listen for whether they take any ownership, or whether everyone who ever worked for them was incompetent. Related flags are slow, unclear, or dismissive communication during the sales conversation, when they are supposedly trying to win you.</p>
<p>The subtle respect flag is minimizing the work. A prospect who says this should be quick and easy for you or my nephew could do it, I just do not have time is setting up a future where every reasonable timeline and price feels like you are ripping them off. The work is not easy; that is why they are hiring. Someone who does not respect the effort will not respect the invoice. You are looking for a client who treats you as a partner solving their problem, not a vendor they are doing a favor by hiring.</p>
<blockquote><strong>NOTE:</strong> Pay attention to how a prospect treats you before you are paid. The sales call is their best behavior. If they are dismissive or slow to respond while trying to hire you, that is the most respect and attention you will ever get, not the least.</blockquote>
<h2>Scope and Process Red Flags</h2>
<p>The third group is about the shape of the work itself. The most common flag is vague scope: a prospect who wants you to just build me a website or an AI thing for my business but cannot say what it should actually do. Vagueness is not always disqualifying, but it must be resolved before you quote, or you are signing up for endless drift. Our guides on the client discovery questions to ask before you quote and how to scope a Claude Code client project turn a fuzzy request into a clear one, and a prospect who refuses to do that work with you is the real warning sign.</p>
<p>Watch also for an unrealistic timeline, the client who needed it last week, and for an unclear chain of decision-makers, where you cannot tell who actually approves the work. A hidden committee behind your main contact turns every decision into a slow round of telephone. The last scope flag is a prospect whose ask keeps growing before you have even started; if scope is creeping during the sales conversation, it will run away once the work begins, so read our guide on how to handle scope creep on client projects before you agree to anything.</p>
<ul><li>Cannot say what they actually want built, and will not scope it with you.</li><li>Wants an unrealistic timeline that ignores the real work.</li><li>Hides how decisions get made or who signs off.</li><li>Keeps adding to the ask before the project has even started.</li></ul>
<h2>Green Lights, and Preventing Bad Fits</h2>
<p>Red flags are only half the test; you also want to recognize the clients worth chasing. Green lights are the mirror image: a prospect who names a real budget, agrees to a deposit and terms without drama, speaks fairly about past help, communicates clearly and on time, respects that the work takes skill, and can describe or willingly scope what they want. You will rarely get all six, but a client with most of them is worth bending over backwards for. Say a full yes to those, and a polite no to the ones stacking warning signs, and your business gets calmer and more profitable at the same time.</p>
<p>The deeper move is to make bad fits rare by building the filter into your process. A real discovery call surfaces most red flags in twenty minutes, and clear written terms with a deposit turn the commitment flags into a simple yes or no before any work begins. If a late payment does slip through anyway, our guide on how to handle a client who will not pay walks the calm path to getting paid. The best client work starts with the courage to say no, because every bad-fit client you decline leaves room for a good one you would have been too busy to take.</p>
<p>If you are weighing a prospect right now and something feels off, bring it to the Claude Code Club community and tell us what they said. A dozen people who have taken the wrong client will help you read the signal clearly, and saying no gets much easier once you have watched others do it well. Protecting your calendar is a skill, and it is one you can build. ⚡</p>
<h2>FAQ</h2>
<p><strong>What is the Green Light Test?</strong></p><p>The Green Light Test is a Claude Code Club filter for reading a prospect before you sign. You are not looking for a perfect client; you are checking that the warning signs are absent across three groups: money and commitment, respect and communication, and scope and process. When several flags stack, or a prospect refuses to discuss one, the polite move is to pass.</p>
<p><strong>What are the most important client red flags to watch for?</strong></p><p>The clearest ones are refusing a deposit or contract, dodging the budget question, bad-mouthing their previous freelancer, being dismissive or slow during the sales call, minimizing the work as quick and easy, and vague scope they will not clarify. Any one can be a conversation, but several together, or one they refuse to discuss, is a signal to walk away.</p>
<p><strong>Is one red flag enough to turn down a client?</strong></p><p>Usually not. A great client can have an off moment or a genuine constraint, so one flag is a conversation rather than a verdict. It is the stacking of several warning signs, or a single flag the prospect refuses to discuss, such as they will not sign any agreement, that tells you the engagement is likely to be unhealthy.</p>
<p><strong>How do I spot client red flags before I sign?</strong></p><p>Run a real discovery call and pay close attention to how the prospect treats you while they are still trying to hire you, since that is their best behavior. Ask directly about budget, deposit, timeline, and who approves the work. Clear written terms with a deposit then turn the commitment flags into a simple yes or no before any work begins.</p>
<p><strong>What are green lights in a good client?</strong></p><p>Green lights are the mirror image of the red flags: a prospect who names a real budget, agrees to a deposit and terms without drama, speaks fairly about past help, communicates clearly and on time, respects that the work takes skill, and can describe or willingly scope what they want. A client with most of these is worth bending over backwards for.</p>]]></content:encoded>
    </item>
    <item>
      <title>10 Things You Can Build with Claude Code (Even as a Beginner)</title>
      <link>https://www.claudecodeclub.ai/blog/10-things-you-can-build-with-claude-code</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/10-things-you-can-build-with-claude-code</guid>
      <pubDate>Sat, 11 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Building</category>
      <category>Tools</category>
      <description><![CDATA[A save-worthy list of ten real, finishable projects you can build with Claude Code - five personal tools to build this week, and five you can build to get paid - each described in plain English with who it is for and why it is worth building.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>The best things you can build with claude code are small, finishable projects that solve a real problem - a chore you repeat, a tool a client needs, a bot your team would use.</li><li>Build for yourself first (a CLI tool, a scraper, a spreadsheet automator) to learn the loop, then build the same way for money (a landing page, a Slack bot, an API).</li><li>Pick one item from this list and finish it this week - a shipped small project teaches you more than ten half-built big ones.</li></ul>
<h2>The Fastest Way to Learn Claude Code Is to Build One Small Thing</h2>
<p>The single most common question from people new to Claude Code is 'what should I build first?' The honest answer: something small, real, and finishable. The things you can build with claude code range from a two-minute script to a full product, and the trap is starting too big and never shipping.</p>
<p>This is a list of ten projects that hit the sweet spot - each is small enough to finish, useful enough to keep, and teaches a pattern you will reuse. The first five are personal tools you build to learn the loop. The second five are the same skills pointed at work someone will pay for.</p>
<blockquote><strong>NOTE:</strong> Every project on this list is built through the Claude Code desktop app by describing what you want in plain English. You do not need a programming background - you need to pick one thing and describe it clearly.</blockquote>
<h2>5 Things to Build for Yourself This Week</h2>
<p>Start here. Personal tools have no client, no deadline, and no stakes - which makes them the perfect place to learn how building with Claude Code actually feels. Pick the one that maps to a chore you already do by hand.</p>
<ol><li>A CLI tool that automates a repetitive chore - rename a folder of files, resize a batch of images, or scaffold a new project. One command replaces ten manual steps.</li><li>A web scraper that pulls data you check often - prices, listings, job posts - into a clean spreadsheet so you stop copying it by hand.</li><li>A spreadsheet automator that takes a messy export and turns it into the report you actually need, on demand, without touching a formula.</li><li>A personal dashboard that pulls the numbers you care about - habits, finances, a side project's stats - into one page you can open every morning.</li><li>A Telegram or Discord bot that pings you when something happens - a reminder, a price drop, a daily summary - so you stop checking manually.</li></ol>
<p>Every one of these teaches the same core loop: describe the job, let Claude Code build a working version, run it, and refine. Once that loop feels natural, pointing it at paid work is a small step.</p>
<h2>5 Things to Build That Someone Will Pay For</h2>
<p>The moment building feels natural, the same skills become billable. These five are common, in-demand, and each one is a real deliverable a business would hand money over for. Build one for yourself as proof, then build it for a client.</p>
<ol><li>A landing page with a working form - one page, one action, deployed to a live URL. Every business testing an idea needs one, and most need it fast.</li><li>A Slack bot that a team uses every day - a standup collector, a notification bot, a lookup tool. You build it once; the whole team relies on it.</li><li>A REST API that other apps can talk to - the backend a web app, a mobile app, or an automation needs to share data.</li><li>An invoice generator that turns a few inputs into a clean, sendable invoice - a small tool that saves a business owner a recurring headache.</li><li>A Chrome extension that adds one useful thing to a page a client stares at all day - a shortcut, a calculator, a data grabber.</li></ol>
<blockquote><strong>TIP:</strong> The bridge from hobby to income is proof. Build one of these for yourself, record a 30-second demo, and you have something real to show a prospect - far more convincing than saying 'I can build things.'</blockquote>
<h2>Quick Reference - All 10, by Effort and Payoff</h2>
<p>Screenshot this and pick your first one. The best project is the one that solves a problem you actually have this week.</p>
<table><caption>Ten things you can build with Claude Code, at a glance</caption><thead><tr><th>What to Build</th><th>Effort</th><th>Why It Is Worth It</th></tr></thead><tbody><tr><td>CLI tool for a chore</td><td>Low</td><td>Kills a task you repeat weekly</td></tr><tr><td>Web scraper</td><td>Low</td><td>Stops manual copy-paste of data</td></tr><tr><td>Spreadsheet automator</td><td>Low</td><td>Turns messy exports into real reports</td></tr><tr><td>Personal dashboard</td><td>Medium</td><td>One page for the numbers you track</td></tr><tr><td>Reminder bot (Telegram/Discord)</td><td>Low</td><td>Notifies you so you stop checking</td></tr><tr><td>Landing page</td><td>Medium</td><td>A live, billable deliverable in an afternoon</td></tr><tr><td>Slack bot</td><td>Medium</td><td>A team tool that gets used daily</td></tr><tr><td>REST API</td><td>Medium</td><td>The backend other apps depend on</td></tr><tr><td>Invoice generator</td><td>Low</td><td>Solves a recurring business headache</td></tr><tr><td>Chrome extension</td><td>Medium</td><td>Adds one useful thing to a page all day</td></tr></tbody></table>
<h2>The One Rule That Turns This List Into Skill - Ship One Thing</h2>
<p>At Claude Code Club we teach the Ship-to-Learn Rule: one finished small project teaches you more than ten half-built big ones. A tool that runs - even a tiny one - closes the loop between describing and building in your head. That closed loop is the actual skill, and you only get it by finishing.</p>
<p>So do not read this list and file it away. Pick one item - ideally the one that matches a chore you did this week - and build it today. Then pick the next. Within a month of shipping small, you will be reaching for Claude Code the way you reach for any tool you trust.</p>
<h2>Build Your First Project Alongside People Doing the Same Thing</h2>
<p>The hardest part of a list like this is not the building - Claude Code handles that. It is picking one and starting, and then having someone to show it to when it works.</p>
<p>Claude Code Club is full of people at exactly this stage, shipping their first small projects and trading the ones that worked. You can post what you built, get unstuck fast when something breaks, and see the projects other members turned into tools and income.</p>
<p>If you want to stop reading about building and actually ship your first thing this week, come join us. The link is in the header.</p>
<h2>FAQ</h2>
<p><strong>What is the easiest thing to build with Claude Code as a beginner?</strong></p><p>A small CLI tool that automates a chore you already do by hand - renaming a batch of files, resizing images, or scaffolding a project folder. It has a clear input and output, no client stakes, and teaches the core build loop in a single session, which makes it the ideal first project.</p>
<p><strong>Do I need to know how to code to build these projects with Claude Code?</strong></p><p>No. Every project on this list is built by describing what you want in plain English inside the Claude Code desktop app. Claude writes the code and gets it running. The skill you are building is describing a problem clearly and refining the result - not memorizing a programming language.</p>
<p><strong>Which of these can I actually charge a client for?</strong></p><p>The second five - a landing page, a Slack bot, a REST API, an invoice generator, and a Chrome extension - are all real deliverables businesses pay for. The move that works is to build one for yourself first as proof, then offer that exact result to a client with a short demo in hand.</p>
<p><strong>How long does it take to build one of these?</strong></p><p>The low-effort projects - a CLI tool, a scraper, a spreadsheet automator, an invoice generator - are realistically one focused session. The medium ones, like a landing page or a Slack bot, are an afternoon for a first-timer. None of these are multi-week projects, which is exactly why they are good starting points.</p>]]></content:encoded>
    </item>
    <item>
      <title>The Do's and Don'ts of Using AI on Client Work</title>
      <link>https://www.claudecodeclub.ai/blog/dos-and-donts-of-using-ai-on-client-work</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/dos-and-donts-of-using-ai-on-client-work</guid>
      <pubDate>Sat, 11 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Freelancing</category>
      <category>Business</category>
      <category>Claude Code</category>
      <description><![CDATA[AI on client work is normal now - but there is a right way and a fast way to lose a client. A clear, save-worthy list of the do's and don'ts that protect your quality, your reputation, and your relationship with the people paying you.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Using ai for client work is completely normal now - what separates the pros from the amateurs is that pros own every line of output as if they wrote it by hand.</li><li>Do review, test, and take full responsibility for everything AI produces before it reaches a client; don't ship raw output you have not read or understood.</li><li>Sell the result, not the tool - clients pay for outcomes and accountability, and how you produced the work matters far less than whether it works and who stands behind it.</li></ul>
<h2>Using AI on Client Work Is Normal - Doing It Carelessly Is Not</h2>
<p>Using AI for client work is not a dirty secret anymore - it is how most good work gets done faster. The question is no longer whether to use tools like Claude Code on paid projects. It is whether you use them like a professional who stands behind the result, or like someone forwarding raw output and hoping it holds up.</p>
<p>That difference is the whole game. A client is not paying for your typing. They are paying for a result that works and a person who is accountable when it does not. Use AI in a way that strengthens both, and it is a superpower. Use it carelessly, and it is the fastest way to lose the client and the referral.</p>
<p>Here are the do's and don'ts that keep AI on the right side of that line.</p>
<h2>The Do's</h2>
<p>These are the habits that let you move fast without ever putting the relationship at risk.</p>
<ul><li>Do own every line of output. Read, understand, and test everything before it reaches the client - if you would not defend it in a call, it does not ship.</li><li>Do sell the result, not the tool. Clients care that the work works, not which software produced it. Lead with the outcome you delivered.</li><li>Do use AI to go faster on things you already understand, so you can catch when the output is wrong.</li><li>Do keep the client's sensitive data safe - know what you are pasting where, and treat their information the way you would treat your own bank details.</li><li>Do use the time AI saves you to raise quality - more testing, more polish, more iterations - not just to finish sooner and move on.</li></ul>
<h2>The Don'ts</h2>
<p>Each of these is a shortcut that feels efficient in the moment and costs you the client later.</p>
<ul><li>Don't ship raw output you have not read. The moment a client finds a mistake you clearly never looked at, your credibility is gone.</li><li>Don't paste a client's private data, credentials, or proprietary information into any tool without knowing exactly how it is handled.</li><li>Don't promise what you cannot personally deliver and stand behind. AI speeding you up does not make you accountable for less.</li><li>Don't let the tool make the judgment calls. AI can draft; you decide what is right for this client, this brief, this context.</li><li>Don't compete on being the cheapest because AI made you faster. Compete on the result and the trust - that is what survives.</li></ul>
<blockquote><strong>WARNING:</strong> The single fastest way to lose a client is to send something you did not check. Speed is worthless if it ships a mistake. Every efficiency AI gives you should be spent partly on review, never entirely on going faster.</blockquote>
<h2>Do's vs Don'ts at a Glance</h2>
<p>Screenshot this. It is the whole philosophy in one table.</p>
<table><caption>Using AI on client work - the professional line</caption><thead><tr><th>Do</th><th>Don't</th></tr></thead><tbody><tr><td>Own and test every line before it ships</td><td>Forward raw output you have not read</td></tr><tr><td>Sell the outcome you delivered</td><td>Apologize for or hide how you work</td></tr><tr><td>Protect the client's sensitive data</td><td>Paste private data into unknown tools</td></tr><tr><td>Spend saved time on quality</td><td>Spend all saved time on speed</td></tr><tr><td>Stay the accountable decision-maker</td><td>Let the tool make the judgment calls</td></tr></tbody></table>
<h2>The Question Everyone Asks - Do I Tell the Client?</h2>
<p>The most common worry about using AI for client work is disclosure: do you have to tell them? The practical answer is that clients hire you for a result and for your judgment, and the tools you use to get there are usually yours to choose - the same way no one asks which code editor you type in.</p>
<p>What matters is honesty when it counts. Never misrepresent what you did, never claim hand-craftsmanship you did not do, and if a client explicitly asks about your process or has a policy, answer straight. At Claude Code Club we call this the Own-the-Output Rule: you can use any tool you like, as long as you take full responsibility for what you deliver as if you made every part of it yourself. Get that right and disclosure mostly takes care of itself.</p>
<h2>Get These Judgment Calls Right Alongside People Doing the Same Work</h2>
<p>Most of the do's and don'ts here are judgment calls, and judgment is easier to build when you can compare notes with people running the same plays on their own client work.</p>
<p>Claude Code Club is full of people using Claude Code on real paid projects - sharing what they ship, how they review it, and how they handle the client conversations. It is the fastest way to turn 'I think this is fine to send' into 'I know this is fine to send.'</p>
<p>If you are using AI on client work and want to do it like a professional, come build alongside us. The link is in the header.</p>
<h2>FAQ</h2>
<p><strong>Is it OK to use AI like Claude Code on paid client work?</strong></p><p>Yes - it is normal and expected now. What matters is that you own the result. Review, test, and take full responsibility for everything before it reaches the client. Clients pay for an outcome that works and a person who is accountable, not for the specific tool that produced the work.</p>
<p><strong>Do I have to tell my client I used AI?</strong></p><p>Usually the tools you use are your choice, the same way no one asks which text editor you type in. The rule is honesty when it counts: never misrepresent what you did, and if a client asks directly or has a policy, answer straight. Take full responsibility for the output and disclosure mostly takes care of itself.</p>
<p><strong>What is the biggest mistake to avoid when using AI on client work?</strong></p><p>Shipping output you have not read or understood. The moment a client finds an obvious error you clearly never checked, your credibility is gone. Every bit of speed AI gives you should be partly reinvested in reviewing and testing the work before it goes out.</p>
<p><strong>Will using AI make me have to charge less?</strong></p><p>Only if you choose to compete on speed. Clients pay for results and trust, not hours. Use the time AI saves to raise quality and take on more accountability, and you can hold or raise your rates - the value is in the outcome and the person standing behind it, not in how long it took.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Build a Landing Page with Claude Code (Live URL in an Afternoon)</title>
      <link>https://www.claudecodeclub.ai/blog/build-a-landing-page-with-claude-code</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/build-a-landing-page-with-claude-code</guid>
      <pubDate>Sat, 11 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Building</category>
      <category>Tools</category>
      <description><![CDATA[A plain-English walkthrough: plan the one action your page should drive, let Claude Code choose the stack and write every section, wire up a working form, and deploy it to a real URL - all through conversation, no design or coding background needed.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>You can build a landing page with claude code by describing the one action you want visitors to take - Claude picks the stack, writes every section, and wires the form so it actually works.</li><li>Decide your single conversion goal before you write a word: one page, one promise, one button. A page that asks for two things gets neither.</li><li>Deploy to a real URL and test the form end to end before you share it - a beautiful page with a button that goes nowhere is worse than no page at all.</li></ul>
<h2>What It Means to Build a Landing Page with Claude Code</h2>
<p>A landing page is a single web page built to drive one action - join a waitlist, book a call, buy a product, download a guide. It is not a full website with a menu and ten pages. It is one page with one job, and that focus is exactly what makes it convert.</p>
<p>When you build a landing page with claude code, you describe the offer and the action you want in plain English inside the Claude Code desktop app. Claude chooses a sensible stack, writes the headline, the sections, the form, and the styling, then helps you push it live. Your job is to know what the page is for. Claude's job is to build it.</p>
<p>This guide takes one real page from idea to a live URL: a waitlist page for a product that does not exist yet. It is small enough to finish in an afternoon and teaches every pattern you need for the next page - a client's page, a product page, a booking page.</p>
<blockquote><strong>NOTE:</strong> You build the page through the Claude Code desktop app. You do not need to open a terminal or know HTML - when a step needs a command run, ask Claude Code to run it for you.</blockquote>
<h2>Step 1 - Decide the One Action Before You Design Anything</h2>
<p>Before Claude Code writes a single section, decide the one thing you want a visitor to do. Not two things. One. Every landing page that converts is built around a single call to action, and every extra ask you add pulls attention away from it.</p>
<p>At Claude Code Club we call this the One-Action Rule: one page, one promise, one button. If your page asks a visitor to both join a waitlist and follow you on social and read your blog, it has no focus, and a page with no focus converts no one. Pick the single action that matters most and cut the rest.</p>
<ol><li>Name the one action in a single sentence - 'a visitor joins the waitlist by entering their email'.</li><li>Name the one promise that earns that action - what does the visitor get in return?</li><li>Name who the page is for - the more specific, the sharper the copy Claude can write.</li><li>Everything else - extra links, secondary offers, a full nav bar - gets left off the first version.</li></ol>
<h2>Step 2 - Let Claude Code Choose the Stack and Scaffold the Page</h2>
<p>You do not need to pick a framework or a CSS approach yourself. Open Claude Code, point it at a new folder, and describe the page. A prompt that works well: 'Build a single landing page for a waitlist. The one action is: a visitor enters their email to join. The promise is early access to a tool that turns messy notes into clean summaries. Choose a simple stack that is easy to deploy, and set it up in this folder.'</p>
<p>Claude Code will pick a stack appropriate to the job, install what it needs, scaffold the project, and tell you what it chose and why. If you have a preference - a particular framework, a specific look - say so. Otherwise let it decide and keep moving.</p>
<p>This is the CCC Build Loop we teach: describe what you want in plain English, let Claude Code build a working version, open it and look at what you actually have, then describe the next change. You never start from a blank file. You describe, review, and iterate.</p>
<blockquote><strong>TIP:</strong> Ask Claude Code to run the page locally right away so you can see it in your browser as you build. Seeing the real page after every change is what keeps the loop tight - you are reacting to something concrete, not imagining it.</blockquote>
<h2>Step 3 - Build the Page Section by Section</h2>
<p>A landing page has a small number of standard sections, and building them one at a time gives you a page that reads well instead of a wall of text. Ask Claude Code for them in order, reviewing each in the browser before moving on.</p>
<table><caption>The core sections of a converting landing page and what each one does</caption><thead><tr><th>Section</th><th>Its Job</th><th>What to Tell Claude Code</th></tr></thead><tbody><tr><td>Hero</td><td>State the promise and show the button in the first screen</td><td>The headline, one supporting line, and the call-to-action button</td></tr><tr><td>Proof</td><td>Give a reason to believe the promise</td><td>What the visitor gains, or who it is for, in three short points</td></tr><tr><td>How it works</td><td>Remove doubt about what happens next</td><td>Three simple steps from clicking to getting the result</td></tr><tr><td>The form</td><td>Capture the one action</td><td>What fields to collect - keep it to the minimum, usually just email</td></tr><tr><td>Close</td><td>Repeat the promise and the button</td><td>A short final line and a second copy of the same call to action</td></tr></tbody></table>
<p>Keep every section pointed at the same action. If a sentence does not move the visitor toward the button, ask Claude Code to cut it. The shortest page that makes the promise clearly beats the longest page that buries it.</p>
<h2>Step 4 - Wire the Form So It Actually Captures Something</h2>
<p>A landing page's button has to do something real. A form that looks perfect but sends the email nowhere is the single most common way a first page fails. Before you deploy, make the form work end to end.</p>
<p>Ask Claude Code: 'Wire the email form so submissions are actually captured. Use a simple, well-supported option that does not require me to run a server, and show me exactly where the submitted emails will land.' Claude Code will connect the form to a form-handling service or a stored list and tell you where to check for new signups.</p>
<blockquote><strong>WARNING:</strong> Never put a secret key or password directly in your page's code - anything in a landing page's files can be read by anyone who visits it. If a form service needs a private key, it belongs in an environment variable on the server side, never in the page itself. Ask Claude Code to confirm where each key lives before you deploy.</blockquote>
<p>Once it is wired, submit the form yourself with a test email and confirm it shows up where Claude Code said it would. Do this before you deploy, not after - fixing it locally is far easier than debugging a live page.</p>
<h2>Step 5 - Deploy to a Live URL and Test It End to End</h2>
<p>With a working page and a working form, the last step is deployment - giving it a URL you can share. Ask Claude Code: 'Walk me through deploying this to a live URL. Set up any config files it needs and tell me what to set in the platform dashboard.'</p>
<p>Claude Code will generate the configuration, explain each file, and guide you through the deploy. Once it is live, do not assume it works - test it the same way a real visitor would.</p>
<ul><li>Open the live URL on your phone as well as your computer - most visitors will arrive on mobile.</li><li>Submit the form with a real test email and confirm the signup lands where it should.</li><li>Read the page out loud once - if the promise is not clear in the first screen, ask Claude Code to tighten the hero.</li><li>Ask Claude Code to save the live URL and the form destination to a README so you have a permanent reference.</li></ul>
<p>A live URL where a real email submission lands in your list is a working landing page. Everything after that - a nicer design, a second offer, a full site - is an iteration on something that already works.</p>
<h2>Build Your Next Page in a Room Full of People Doing the Same Thing</h2>
<p>Your first landing page is one of those milestones that changes what feels possible. Once you have shipped one page with a working form and a live URL, the next one is faster, and the one after that becomes a thing you do in an afternoon without thinking about it.</p>
<p>Claude Code Club is where people at exactly this stage - learning to ship real things with Claude Code - share what they are building, trade prompts that worked, and get unstuck fast. Members are building landing pages for their own products, for clients, and for ideas they are testing this week.</p>
<p>If you want to keep building with people around you who are doing the same thing, come join us. The link is in the header.</p>
<h2>FAQ</h2>
<p><strong>Do I need to know how to code to build a landing page with Claude Code?</strong></p><p>No. You describe the offer and the one action you want a visitor to take, and Claude Code writes the page, the styling, and the form. The clearer you are about what the page is for, the better the result - the skill you need is knowing your goal, not knowing a programming language.</p>
<p><strong>How long does it take to build a landing page with Claude Code?</strong></p><p>A focused single-action page - hero, a few sections, a working form, and a live URL - is realistically an afternoon for a first-timer. Most of that time is spent deciding the copy and testing the form, not waiting on code, because Claude Code writes each section as you describe it.</p>
<p><strong>Can the form on my landing page actually collect emails?</strong></p><p>Yes. Ask Claude Code to wire the form to a simple form-handling service or stored list that does not require you to run a server. Always submit a test email and confirm it lands where Claude Code says before you share the page - a form that goes nowhere is the most common first-page mistake.</p>
<p><strong>Where should I deploy a landing page built with Claude Code?</strong></p><p>Any platform that hosts a static or lightweight page works. Ask Claude Code to choose one that is easy to deploy, generate the config, and walk you through it. The one thing you do manually is set any private keys in the platform dashboard rather than in the page's files.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Find Clients for Your AI Agency (When You Are Starting From Zero)</title>
      <link>https://www.claudecodeclub.ai/blog/how-to-find-clients-for-your-ai-agency</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/how-to-find-clients-for-your-ai-agency</guid>
      <pubDate>Sat, 11 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Freelancing</category>
      <category>Business</category>
      <category>Claude Code</category>
      <description><![CDATA[A practical playbook for landing your first paying clients: pick a niche you can speak to, build one undeniable proof asset, and run outreach that leads with a result instead of a pitch - the exact path that turns a new AI agency into a booked one.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>The fastest way to find clients for your ai agency is to stop selling 'AI' and start selling one specific result to one specific type of business you can already name.</li><li>Build one undeniable proof asset - a real working demo or a real result - before you send a single outreach message; proof outsells promises every time.</li><li>Lead every outreach with a result the prospect can see, not a request for their time; show them what you would build, and the meeting books itself.</li></ul>
<h2>Why Most New AI Agencies Struggle to Find Clients</h2>
<p>Most people starting an AI agency go looking for clients with the wrong pitch. They say some version of 'I build AI solutions for businesses,' and they wonder why no one replies. The problem is not the market. The problem is that 'AI' is not a thing anyone buys - businesses buy outcomes, and 'AI' is not an outcome.</p>
<p>Finding clients for your AI agency gets dramatically easier the moment you stop selling a technology and start selling a specific result to a specific kind of business. 'I help dental practices stop losing calls after hours' gets a reply. 'I do AI automation' gets ignored. Same skills, completely different response.</p>
<p>This guide lays out the path that actually works when you are starting from zero: pick a niche, build one piece of proof, and run outreach that leads with a result. It is the same sequence we walk members through inside Claude Code Club, and it works because it removes the guesswork about what to say and who to say it to.</p>
<h2>Step 1 - Pick a Niche You Can Already Speak To</h2>
<p>The single highest-leverage decision you make is who you serve. A niche does two things at once: it tells you exactly who to contact, and it makes your message land because you are speaking to one type of business about their specific problem, not shouting at everyone.</p>
<p>Do not overthink this. The best first niche is usually one you already understand - an industry you have worked in, a type of business a friend runs, a world whose language you already speak. Familiarity is an unfair advantage here, because you already know what these businesses struggle with and how they talk about it.</p>
<ul><li>Choose a type of business you can name specifically - 'independent law firms,' not 'professionals.'</li><li>Confirm they have money and an urgent problem - the two things that turn interest into a paid contract.</li><li>Make sure you can find fifty of them in an afternoon - if you cannot build a list, you cannot run outreach.</li><li>Pick a problem you can solve with a small, visible build - a missed-lead responder, a booking assistant, a document summarizer.</li></ul>
<blockquote><strong>TIP:</strong> You are not marrying this niche. You are choosing where to start. Members inside Claude Code Club regularly land their first client in one niche, then use that proof to expand. Picking a starting point beats staying a generalist who is invisible to everyone.</blockquote>
<h2>Step 2 - Build One Undeniable Proof Asset First</h2>
<p>Here is the mistake almost everyone makes: they try to find clients before they have anything to show. Then outreach is just a promise, and promises from an unknown agency are easy to ignore. Flip the order. Build the proof first, and outreach becomes a demonstration instead of a pitch.</p>
<p>A proof asset is one real, working thing that shows you can deliver the result. With Claude Code you can build a genuine working demo faster than you can write a long proposal - a small tool that solves your niche's exact problem, built and running, that you can put in front of a prospect.</p>
<p>We call this the Proof-First Rule at Claude Code Club: never do outreach empty-handed. One real demo aimed at your niche does more work than a hundred cold messages describing what you could theoretically do. Proof collapses the prospect's biggest question - can this person actually deliver? - before they even have to ask it.</p>
<table><caption>Weak proof versus strong proof when finding your first agency clients</caption><thead><tr><th>Weak Proof</th><th>Strong Proof</th></tr></thead><tbody><tr><td>'I can build AI automations'</td><td>A working demo built for their exact type of business</td></tr><tr><td>A list of tools you know</td><td>A real result you produced, with a number attached</td></tr><tr><td>A generic portfolio site</td><td>A short screen recording of your tool solving their problem</td></tr><tr><td>'I'm certified in AI'</td><td>A live URL they can click and try themselves</td></tr></tbody></table>
<h2>Step 3 - Run Outreach That Leads With a Result</h2>
<p>Once you have a niche and a proof asset, outreach stops being scary. The rule is simple: never ask for a prospect's time before you have given them something worth their time. Lead with the result, and the conversation starts on your terms.</p>
<p>The strongest opening is not 'do you have 15 minutes for a call?' It is 'I built a thing for businesses like yours - here it is.' Show them a short demo or a specific result you would create for them. When a prospect can see the value before they have spent a second on a meeting, the meeting books itself.</p>
<ol><li>Build your list - fifty named businesses in your niche, with a real person to contact at each.</li><li>Personalize the proof - tailor your demo or your opening line to the specific business you are messaging.</li><li>Lead with the result - open with what you built or what you would build, not with a request for their calendar.</li><li>Make the next step tiny - 'reply if you want the link' is easier to say yes to than 'book a 30-minute call.'</li><li>Follow up once, with new value - a second angle or a small addition, never just 'bumping this.'</li></ol>
<blockquote><strong>WARNING:</strong> Volume without a niche and proof is just spam, and it burns the exact prospects you want. Send fewer, sharper messages that each lead with something real. Ten personalized, proof-led messages beat two hundred copy-pasted ones - and they will not get you blocked.</blockquote>
<h2>Step 4 - Turn One Client Into Three</h2>
<p>The first client is the hard one. The second and third are far easier, because now you are not selling a promise - you are selling a track record. Your first delivered result becomes the proof asset for the next round of outreach.</p>
<p>After you deliver, do two things immediately. Ask your happy client for a short testimonial and a referral - the people who trust them are exactly the prospects you want next. And turn the work you just did into a case study you can show: the problem, what you built, the result.</p>
<p>This is how a new agency compounds. Each delivered project is both income and marketing material. Within a few clients you stop chasing work cold, because your results are doing the outreach for you - which is exactly the position you want to be in.</p>
<h2>Find Your First Clients Alongside People Doing the Same Thing</h2>
<p>Landing your first agency clients is far less lonely - and far faster - when you are doing it next to people at the same stage. The hardest part of starting from zero is not the work; it is the uncertainty about whether your niche, your proof, and your message are actually any good.</p>
<p>Claude Code Club is where people building AI agencies share the demos they built, the outreach that got replies, and the deals they closed. You can get your proof asset critiqued, your outreach sharpened, and your first-client questions answered by people who landed theirs last month, not last decade.</p>
<p>If you are starting an AI agency and want to find your first clients faster, come build alongside us. The link is in the header.</p>
<h2>FAQ</h2>
<p><strong>How do I find my first client for an AI agency with no track record?</strong></p><p>Build one undeniable proof asset before you reach out - a real working demo aimed at a specific niche. With no track record, proof does the convincing for you. Lead your outreach with that demo instead of a request for a meeting, and you replace 'trust me' with 'look at this.'</p>
<p><strong>What niche should I pick for my AI agency?</strong></p><p>Start with a type of business you already understand and can name specifically - one with money, an urgent problem, and enough prospects that you can build a list of fifty in an afternoon. Familiarity lets you speak their language, which makes your outreach land. You can always expand once you have your first result.</p>
<p><strong>Is cold outreach the best way to find AI agency clients?</strong></p><p>Cold outreach works well when every message leads with a real result rather than a request for time. Volume alone is just spam and burns good prospects. A small number of sharp, personalized messages that each open with a demo or a specific result you would build will outperform mass cold-emailing every time.</p>
<p><strong>How do I get more clients after landing the first one?</strong></p><p>Turn every delivered project into two things - a testimonial-and-referral ask, and a short case study you can show. Your first result becomes the proof asset for your next round of outreach, so each client makes the next one easier to win. That compounding is how a new agency stops chasing work cold.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Build a CLI Tool with Claude Code (No Engineering Degree Required)</title>
      <link>https://www.claudecodeclub.ai/blog/build-a-cli-tool-with-claude-code</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/build-a-cli-tool-with-claude-code</guid>
      <pubDate>Fri, 10 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Building</category>
      <category>Tools</category>
      <description><![CDATA[A command-line tool lets you run one command instead of repeating a chore by hand. This guide walks you through building a real bulk file renamer with Claude Code - from describing what you want to adding flags, a help message, and installing it so you can run it from anywhere.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>You can build a cli tool with claude code by describing what you want in plain English inside the Claude Code desktop app - no programming experience required to get started.</li><li>A good first CLI tool does one repeatable job: rename a batch of files, resize images, or scaffold a new project folder - pick something you do by hand more than twice a week.</li><li>Always run a dry-run before letting a new tool touch real files - one flag that prints what would happen without changing anything is worth more than any undo button.</li></ul>
<h2>What It Means to Build a CLI Tool with Claude Code</h2>
<p>A CLI tool - short for command-line tool - is a small program you run by typing a short command in a terminal window. Instead of opening an app, clicking through menus, and repeating the same steps, you type one line and the job is done. That is the entire appeal.</p>
<p>When you build a cli tool with claude code, you describe what you want inside the Claude Code desktop app in plain English. Claude writes the code, sets up the file structure, and gets it running. Your job is to explain the problem clearly - not to know any particular programming language.</p>
<p>This guide builds one real tool from start to finish: a bulk file renamer that adds a date prefix to every file in a folder. It is small enough to finish in one session, useful enough to reach for regularly, and teaches every pattern you need for your next tool.</p>
<blockquote><strong>NOTE:</strong> You build the tool through the Claude Code desktop app. Once it exists, you run it in a terminal - but the terminal is just where you use the finished tool, not something you need to master before you start.</blockquote>
<h2>What Makes a Good First CLI Tool - The One-Job Rule</h2>
<p>The best first CLI tools share one trait: they do exactly one job, and that job is something you have already done by hand more than twice. If you have ever renamed a folder of files one at a time, resized the same set of images before uploading them, or set up a new project folder by copying from an old one, you have a candidate.</p>
<p>CCC members call this the One-Job Rule: if your tool description has the word 'and' in it more than once, split it into two tools. A tool that does one thing well is faster to build, easier to test, and gets used. A tool that tries to do everything sits unused.</p>
<ul><li>It replaces a task you already do manually on a regular basis</li><li>The task has a clear input (a folder, a list of files, a name) and a clear output (renamed files, resized images, a new folder)</li><li>You can describe success in one sentence - 'every file in this folder now has today's date as a prefix'</li><li>It has no irreversible side effects you cannot easily preview before committing</li><li>You will still want it in three months, not just this week</li></ul>
<blockquote><strong>TIP:</strong> A bulk file renamer is the ideal first project. It is concrete, low-risk when you add a dry-run mode, and immediately useful. That is what we are building below.</blockquote>
<h2>Describing What You Want to Claude Code</h2>
<p>Open the Claude Code desktop app and start a new conversation. Do not paste in code or requirements documents. Just describe the tool the way you would explain it to a competent person who is ready to build it right now.</p>
<p>A description that works: 'Build me a Node.js command-line tool called rename-files. It should take a folder path as an argument and add today's date as a prefix to every file in that folder, in YYYY-MM-DD format. It needs a --dry-run flag that prints what the renames would be without actually doing them, and a --help flag that explains how to use it.'</p>
<p>That is enough. Claude will ask a clarifying question if something is genuinely ambiguous. Otherwise it will build the file, install any dependencies it needs, and show you the result. You do not need to specify the language unless you have a preference - Claude will pick something sensible.</p>
<blockquote><strong>TIP:</strong> The two most important things to include in your description: the exact name you want to type to run the tool, and what 'done' looks like for a single successful run. Everything else can be refined once you see it working.</blockquote>
<h2>Flags, Arguments, and a Help Message</h2>
<p>A CLI tool without flags is a one-trick box. Flags are the options you pass when you run the tool that change its behavior. An argument is the main input - in our case, the folder path. A help message is what you see when you run the tool with --help, and it is what separates a tool you will actually use six months from now from one you forget how to run.</p>
<p>Ask Claude Code to add these to the rename-files tool by describing each flag in plain English. You do not need to write any of the flag-parsing code yourself.</p>
<table><caption>Flags for the rename-files tool and what each one does</caption><thead><tr><th>Flag</th><th>Short form</th><th>What it does</th></tr></thead><tbody><tr><td>--dry-run</td><td>-n</td><td>Prints the planned renames to the terminal without changing any files</td></tr><tr><td>--prefix</td><td>-p</td><td>Sets a custom prefix instead of today's date (e.g. --prefix project-x)</td></tr><tr><td>--extension</td><td>-e</td><td>Limits renaming to files with a specific extension (e.g. --extension .jpg)</td></tr><tr><td>--recursive</td><td>-r</td><td>Also processes files in subfolders, not just the top-level folder</td></tr><tr><td>--help</td><td>-h</td><td>Shows usage instructions and a list of all available flags</td></tr></tbody></table>
<p>You do not need all of these on day one. Start with --dry-run and --help. Add the others later when you find yourself wishing for them. Claude Code can add a flag to an existing tool in seconds - describe what you want the new flag to do and it handles the rest.</p>
<h2>Testing on Real Files - Dry-Run First, Always</h2>
<p>Before you run any new tool on files you care about, run it on a folder of copies first. Make a test folder, drop in five or six files with different names and extensions, and run the tool there. Check that the output matches what you expected.</p>
<blockquote><strong>WARNING:</strong> Never run a new file-manipulation tool on real files the first time. Copy a small sample to a test folder and run it there. Then run with --dry-run on the real folder before committing. One accidental rename across 800 files is a bad afternoon. The dry-run flag exists precisely to prevent this.</blockquote>
<p>Once the test folder looks right, run the tool on your real folder with --dry-run. Read through the printed list. Confirm every line is what you intended. Only then run it without the flag.</p>
<p>If something looks wrong in the dry-run output, go back to Claude Code and describe what you see versus what you expected. Paste the terminal output directly into the chat. Claude will diagnose and fix it. This is the normal loop - describe, build, test, refine.</p>
<h2>Installing the Tool So You Can Run It from Anywhere</h2>
<p>Right now the tool only runs from its own folder. Installing it means you can type rename-files from any folder on your computer and it works. Ask Claude Code to handle this step: 'Make rename-files installable so I can run it by name from any directory.'</p>
<p>Claude will either add an install script, update a package.json with a bin field, or create a shell alias - whichever approach fits the tool it built. It will also give you the one command to run that does the installation. You run that once and you are done.</p>
<p>After installing, open a new terminal window, navigate to a completely different folder, and type rename-files --help. If you see the help message, the tool is installed correctly. If you see 'command not found', paste that error back into Claude Code and it will fix the path configuration.</p>
<h2>What to Build Next - Extending the Pattern</h2>
<p>Every CLI tool you build with Claude Code follows the same pattern: describe the job, add flags for flexibility, test with dry-run before touching real files, and install so you can use it from anywhere. The only thing that changes is the job.</p>
<ul><li>Image resizer - takes a folder and a max width, outputs scaled copies to an /output subfolder</li><li>Project scaffolder - takes a project name and creates the standard folder structure you use every time</li><li>Markdown to PDF converter - takes a .md file and produces a formatted PDF alongside it</li><li>Duplicate file finder - scans a folder and lists files with identical content so you can review before deleting</li><li>Text find-and-replace - takes a folder path and two strings, replaces one with the other across all files with a preview mode</li></ul>
<p>Each of these takes less than a session to build. The dry-run pattern applies to all of them. Once you have two or three tools installed, you start to see your work differently - every repetitive task becomes a candidate for a five-minute build session.</p>
<h2>Join Claude Code Club to Build Faster</h2>
<p>Claude Code Club is a community of everyday builders who are making real tools with Claude Code - automations, utilities, full web apps, and everything in between. Members share what they build, what broke, and what they learned, so you are not figuring it out alone.</p>
<p>Inside the club you will find a library of prompts, skills, and workflows you can use as starting points, plus a community that has seen most of the errors you are about to run into. If you are serious about making Claude Code a genuine part of how you work, that community shortens the learning curve considerably.</p>
<p>Come build with us at claudecodeclub.ai. Bring the idea for your first tool - the community will help you ship it.</p>
<h2>FAQ</h2>
<p><strong>Do I need to know how to code to build a CLI tool with Claude Code?</strong></p><p>No. You describe what you want in plain English inside the Claude Code desktop app and Claude writes the code. You will read the output and test it, but you are not writing syntax. That said, the more precisely you can describe what you want, the faster it gets built correctly.</p>
<p><strong>What programming language does Claude Code use to build CLI tools?</strong></p><p>Claude picks a language based on what fits the job and your environment. For most simple CLI tools it defaults to Node.js or Python because both are widely available and easy to extend. You can specify a preference in your description if you have one.</p>
<p><strong>What if the tool works in testing but breaks on my real files?</strong></p><p>Paste the exact error message and the command you ran back into Claude Code. Include a description of what the files look like (file names, extensions, whether there are subfolders). Claude will identify the edge case and fix it. This is a normal part of the build loop, not a sign something went wrong.</p>
<p><strong>Can I share a CLI tool I built with someone else on a different computer?</strong></p><p>Yes. Ask Claude Code to add a simple setup script or document the install steps. The other person runs the setup once and the tool works the same way on their machine. If the tool has dependencies, Claude can include them in a requirements file or package.json so everything installs together.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Get Repeat Clients for Your AI Agency (Without Chasing Anyone)</title>
      <link>https://www.claudecodeclub.ai/blog/how-to-get-repeat-clients-for-your-ai-agency</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/how-to-get-repeat-clients-for-your-ai-agency</guid>
      <pubDate>Fri, 10 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Agency</category>
      <category>Monetization</category>
      <category>Freelancing</category>
      <description><![CDATA[Repeat clients cost nothing to acquire, come with built-in trust, and refer their networks. Here is the delivery system and follow-up habit stack that turns a one-off project into a long-term client relationship.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Knowing how to get repeat clients for your AI agency is a delivery problem, not a sales problem - the habits you build during a project determine whether you ever have to pitch that client again.</li><li>The cheapest growth move available to any agency is a structured follow-up rhythm that keeps you visible between projects without requiring you to sell anything.</li><li>Turning a happy client into a referral source is a single honest conversation, and the right time to have it is the week after a strong delivery.</li></ul>
<h2>How to Get Repeat Clients for Your AI Agency Starts With This Mindset Shift</h2>
<p>Most agency owners treat every project like a transaction. Scope in, deliver, invoice, move on. That works for cash flow but it is expensive. You spend real time and energy finding the next client, pitching them, building trust from zero. A repeat client skips all of that. They already know you deliver. The cost of acquiring them again is nearly zero.</p>
<p>This post is specifically about winning repeat discrete projects and referrals - not converting clients to a monthly retainer. Retainers are a different structure with different tradeoffs. What we are talking about here is a client who hires you for project A, and six weeks later calls you back for project B because you are the obvious person for it.</p>
<p>The gap between a one-off client and a repeat client usually comes down to a handful of delivery habits and one follow-up system. Neither is complicated. Most agencies just never build them deliberately.</p>
<blockquote><strong>NOTE:</strong> A repeat client is not the same as a retained client. A retainer means ongoing monthly work on a fixed scope. A repeat client hires you again when a new discrete need arises. Both are valuable. This post is about the second one.</blockquote>
<h2>Why Repeat Business Is the Cheapest Growth You Have</h2>
<p>New client acquisition has a real cost - time prospecting, time on sales calls, time writing proposals, time building enough trust for someone to wire you money for the first time. For a one-person or small AI agency, that cost can eat several days per project.</p>
<p>A repeat client conversation looks completely different. They already know the quality of your work. They know how you communicate. They know roughly what you charge. A repeat engagement can go from a short message to a signed agreement in 48 hours. The time you save on sales goes directly into delivery or into your margin.</p>
<p>Referrals compound on top of that. A happy repeat client will mention your name without being asked because you have solved their problem more than once. That recommendation carries more weight than any cold outreach you could send.</p>
<table><caption>One-off mindset vs. repeat-client mindset across key dimensions</caption><thead><tr><th>Dimension</th><th>One-off mindset</th><th>Repeat-client mindset</th></tr></thead><tbody><tr><td>Goal for the project</td><td>Deliver what was scoped, close the invoice</td><td>Deliver what was scoped and spot what comes next</td></tr><tr><td>Communication during delivery</td><td>Updates when something breaks or is done</td><td>Proactive check-ins on a predictable schedule</td></tr><tr><td>End of project</td><td>Send the final file and invoice</td><td>Send a handoff note that opens the door to project B</td></tr><tr><td>Between projects</td><td>Wait for them to reach out</td><td>Light, useful touchpoints at a set rhythm</td></tr><tr><td>Referrals</td><td>Hope they mention you</td><td>Make one direct, easy ask at the right moment</td></tr><tr><td>Sales cost</td><td>Full pitch cycle every time</td><td>Short message, existing trust does the work</td></tr></tbody></table>
<h2>The Delivery Habits That Earn the Next Project</h2>
<p>The foundation of repeat business is set during the current project. Clients do not come back because you did exactly what was in the scope. They come back because working with you felt easy and the result exceeded what they expected in at least one small way.</p>
<p>These are the habits that consistently produce that feeling. They are not complicated. They require consistency.</p>
<ul><li>Set a communication cadence on day one and keep it. A brief update every few days - even when nothing has changed - signals reliability. Silence signals risk.</li><li>Hit your dates or flag problems early. Missing a deadline with no warning is one of the fastest ways to become a one-time vendor. Missing a deadline with 48 hours notice and a plan is recoverable.</li><li>Deliver one small surprise of value. This does not mean scope creep. It means noticing something adjacent - a broken link, an obvious next automation, a phrasing change that would improve the thing you built - and mentioning it without billing for it.</li><li>Document what you built. A short handoff note that explains what was done, how to use it, and what the logical next steps are positions you as the expert and plants the seed for project B.</li><li>Keep the final call short and specific. Ask two questions: Is there anything about the delivery that did not land how you expected? And - what is the next problem you are trying to solve? That second question is not a pitch. It is information.</li></ul>
<blockquote><strong>TIP:</strong> The small surprise of value does not have to be work. It can be a resource, a question, or an observation. The goal is to demonstrate that you were paying attention beyond the narrow scope of the brief.</blockquote>
<h2>Spot the Next Problem Before the Current One Ends</h2>
<p>The best time to line up project B is during project A. You are already inside their operation. You can see what is working and what is not. Most clients will tell you their next problem if you create a small opening for it.</p>
<p>This is not about upselling. It is about paying attention. If you are building an AI workflow for a client's content team and you notice their reporting process is completely manual, that is information. You do not pitch it on the spot. You file it.</p>
<p>Toward the end of the project - usually the week before delivery - you ask: 'We are almost done here. Is there a follow-on piece to this, or is there something else you have been meaning to tackle?' Phrased that way it is not a pitch. It is a question. And the answer tells you whether there is a natural project B or whether you need to create one.</p>
<blockquote><strong>TIP:</strong> Keep a short private note for each client with problems you spotted during delivery. When you follow up between projects, this list gives you something genuinely useful to reference instead of a generic check-in.</blockquote>
<h2>The Follow-Up Rhythm: Staying Visible Without Being Annoying</h2>
<p>After a project ends, most agency owners go quiet. The client files the experience away and, when the next need arises, tries to remember who did the work. If you have been quiet for four months, they might not. Someone who was referred to them last week gets the call instead.</p>
<p>A simple follow-up rhythm solves this. The goal is not to sell anything. The goal is to stay in the category of 'person I would call about this kind of thing.' That requires about one touchpoint per month - and almost none of them should be about new work.</p>
<ul><li>Week two post-delivery: a short check-in asking how the work is performing. This is genuine and creates an opportunity for them to raise any issues before they become problems.</li><li>Month two: share one piece of content, a finding, or a question that is directly relevant to something they mentioned. Not a newsletter blast - a personal message.</li><li>Month three: ask a question about their business. Something you genuinely want to know. This is a conversation, not a nurture sequence.</li><li>Month four or five, if there is a natural trigger: 'I was thinking about your [specific thing] situation - have you moved on that yet?' This is when you surface the next problem you spotted.</li></ul>
<p>That is four touchpoints over five months. Each one takes less than ten minutes to write. And each one reminds them that you exist and that you understand their world.</p>
<h2>The Next-Problem Offer: Productizing the Follow-On</h2>
<p>One of the most effective moves an AI agency can make is to define, in advance, what project B looks like for a given client type. This is what we call the Next-Problem Offer inside Claude Code Club - a pre-defined follow-on engagement that you can describe in one sentence and deploy the moment the timing is right.</p>
<p>The logic is simple. If you primarily build AI automation workflows for e-commerce brands, you already know what most of them need after workflow number one is in place: either a reporting layer on top of it, or a second workflow for a different part of the operation. You do not need to invent project B from scratch for each client. You already know what it is. You just need to name it and wait for the right moment.</p>
<p>A Next-Problem Offer is not a package or a price list. It is a clear, specific description of the next problem you solve and the result it produces. When you drop it naturally into a follow-up conversation, it does not feel like a pitch because it is grounded in something they have already told you about their business.</p>
<table><caption>Examples of a Next-Problem Offer by agency type</caption><thead><tr><th>First project type</th><th>Next-Problem Offer</th></tr></thead><tbody><tr><td>AI content workflow</td><td>Automated performance reporting that shows which content is converting</td></tr><tr><td>Claude-powered client onboarding</td><td>A follow-on intake automation that routes client data into the tools they already use</td></tr><tr><td>Custom AI assistant for internal ops</td><td>A usage dashboard that shows which departments are using it and how</td></tr><tr><td>Proposal or document automation</td><td>A second automation for the next document type in the same client's workflow</td></tr></tbody></table>
<h2>Turning Happy Clients Into Referral Sources</h2>
<p>A referral from a client carries more weight than anything you can say about yourself. The person receiving it already trusts the person sending it. Your credibility is borrowed from that relationship before you say a word.</p>
<p>Most agencies wait for referrals to happen organically. Some do. But the best referral source is a client who knows exactly what to say when they mention you, and who has been explicitly reminded that referrals matter to you.</p>
<p>The right time for that conversation is one week after a strong delivery - when the result is fresh and the positive feeling is highest. The ask is short and direct: 'If you know anyone dealing with [specific problem], I would be glad to help them. I do my best work through introductions from people like you.' That is the whole ask. You are not pressuring anyone. You are making it easy for them to do something they might already want to do.</p>
<ul><li>Make the ask specific. 'Anyone dealing with manual reporting in their ops team' is easier to act on than 'anyone who might need AI help.'</li><li>Give them the words. A one-line description of what you do and what problem you solve makes it easy for them to mention you accurately.</li><li>Make the introduction easy. Offer to do a short email intro so they do not have to orchestrate anything.</li><li>Follow up on the referral within 24 hours. How quickly you respond reflects on the person who referred you. A slow response is a silent tax on their credibility.</li></ul>
<blockquote><strong>WARNING:</strong> Do not ask for a referral mid-project or when there is any open issue. The ask only lands well after a clean, complete delivery where the client is genuinely satisfied.</blockquote>
<h2>Join Claude Code Club to Build This System Faster</h2>
<p>Everything in this post - the delivery habits, the follow-up rhythm, the Next-Problem Offer framework, the referral ask - can be built into reusable systems with Claude Code. Templated follow-up sequences, client note structures, proposal generators that reference past project context: these are the kinds of tools our members are building and sharing inside Claude Code Club.</p>
<p>The club is built for people running AI agencies and freelance practices who want to work smarter, not just bill more hours. You get access to a prompt library, a skill library, a community of peers doing this work, and a classroom that covers the full stack from delivery to growth.</p>
<p>If you are building an AI agency and you want the repeat-client systems dialed in before your next project wraps, Claude Code Club is the fastest way to get there. Come join us.</p>
<h2>FAQ</h2>
<p><strong>Is getting repeat clients different from signing someone to a retainer?</strong></p><p>Yes, and the difference matters. A retainer is an ongoing monthly arrangement with a fixed scope and predictable billing. A repeat client hires you again when a new discrete project arises - it is project-based, not subscription-based. The habits that produce repeat projects are about delivery quality and staying visible, not about structuring an ongoing service agreement.</p>
<p><strong>How soon after a project ends should I follow up?</strong></p><p>Two weeks after delivery is the right first follow-up point. The work is live, they have had time to see it in action, and any early issues have surfaced. A simple message asking how things are performing is genuine and opens the conversation naturally. Do not wait a month for the first touchpoint - that is too long.</p>
<p><strong>What if a client goes quiet after a project and does not respond to follow-ups?</strong></p><p>Try two touchpoints spaced a month apart. If there is no response after two genuine attempts, park them in a low-frequency category - one check-in every three to four months. Some clients re-engage when the timing is right for them, not when it is convenient for you. The goal is to stay on the map without becoming noise.</p>
<p><strong>Does the Next-Problem Offer need to be priced in advance?</strong></p><p>No. The Next-Problem Offer is a clear description of the next problem you solve, not a priced package. You do not need to name a number when you introduce it. The goal is to plant the idea and get confirmation that the problem exists for them. Pricing comes after that conversation, the same way it would for any new project.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Build a REST API with Claude Code (No Backend Experience Required)</title>
      <link>https://www.claudecodeclub.ai/blog/build-a-rest-api-with-claude-code</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/build-a-rest-api-with-claude-code</guid>
      <pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Building</category>
      <category>Tools</category>
      <description><![CDATA[A complete beginner's walkthrough: what a REST API actually is, how to plan your endpoints, let Claude Code choose and wire up the stack, add API key authentication, and deploy it to a live URL - all through plain conversation.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>You can build a rest api with claude code by describing what your backend should do in plain English - Claude picks the stack, writes every file, and wires the endpoints together.</li><li>Plan four operations per resource (create, read, update, delete) before you write a single line; the clearer your spec, the cleaner the API Claude builds.</li><li>Protect your API with a key passed in a request header - never hard-code secrets in your frontend or commit them to a public repository.</li></ul>
<h2>What a REST API Is and Why You Would Build One</h2>
<p>A REST API is a backend your other apps can talk to over the internet using standard web requests. When your front page needs data, it asks the API. When your mobile app saves a form, it tells the API. The API is the single source of truth for your data and your logic.</p>
<p>To build a rest api with claude code, you do not need to know a server language first. You describe what the API should do - what data it holds, what actions it allows - and Claude Code builds the files, writes the routes, and starts the server for you. Your job is to know what you want. Claude's job is to build it.</p>
<p>A few situations where a REST API is exactly the right tool: you are building a web app with a separate frontend, you want a mobile app and a dashboard to share the same data, or you want to let another tool (a Zapier step, a script, a form) push or pull data without touching a database directly.</p>
<blockquote><strong>NOTE:</strong> Everything in this guide works from the Claude Code desktop app. You do not need to open a terminal unless you want to. When a step involves a command, ask Claude Code to run it for you.</blockquote>
<h2>What You Will Need Before You Start</h2>
<p>The list is short. Claude Code handles the rest.</p>
<ul><li>The Claude Code desktop app installed and open on your machine.</li><li>A folder on your computer where the project will live (ask Claude Code to create one if you do not have one).</li><li>A clear idea of what your API is for - one sentence is enough to start ('I want an API that stores tasks and lets me mark them complete').</li><li>A free account on a deployment platform that supports server-side apps (Claude Code can suggest and configure one for you).</li></ul>
<blockquote><strong>TIP:</strong> Write your one-sentence description before you open Claude Code. The clearer you are upfront, the less back-and-forth you will need to do once you start building.</blockquote>
<h2>Step 1 - Plan Your Endpoints and Data Before Writing Code</h2>
<p>An endpoint is a URL your API exposes - a specific address that does a specific thing. Before Claude Code writes a single file, spend five minutes deciding what your API needs to do. This is called your spec, and the clearer it is, the cleaner the API will be.</p>
<p>Most APIs are built around resources - the things you are storing or managing. If you are building a task manager, the resource is a task. If you are building an inventory system, the resource is a product. For each resource, there are four standard operations, one for each HTTP method.</p>
<table><caption>The four standard HTTP methods and what they do in plain English</caption><thead><tr><th>HTTP Method</th><th>What It Does</th><th>Example</th></tr></thead><tbody><tr><td>GET</td><td>Read - fetch one item or a list</td><td>Get all tasks / Get task #5</td></tr><tr><td>POST</td><td>Create - add a new item</td><td>Add a new task to the list</td></tr><tr><td>PUT</td><td>Update - replace or edit an existing item</td><td>Change the title of task #5</td></tr><tr><td>DELETE</td><td>Delete - remove an item permanently</td><td>Delete task #5</td></tr></tbody></table>
<p>A simple starting spec might be: 'My API manages tasks. Each task has a title, a status (open or done), and a created date. I need endpoints to list all tasks, get one task by ID, create a task, update a task, and delete a task.' That is enough to hand to Claude Code and get a working API back.</p>
<h2>Step 2 - Let Claude Code Choose and Set Up the Stack</h2>
<p>You do not need to pick a server language, a web framework, or a database yourself. Open Claude Code, describe your spec, and add this at the end: 'Choose a simple, well-supported stack that is easy to deploy and easy to extend later. Set it up in this folder.'</p>
<p>Claude Code will pick a stack appropriate to your project, install the dependencies, and scaffold the project structure. It will also tell you what it chose and why. If you want a different language or database, say so - otherwise, let it decide and move on.</p>
<p>The CCC Build Loop is the framework we teach at Claude Code Club for this pattern: describe what you want in plain English, let Claude Code build a working version, run it and look at what you have, then describe the next piece. You never write code from scratch. You describe, review, and iterate.</p>
<blockquote><strong>TIP:</strong> Ask Claude Code to create a README in your project folder that explains what stack was chosen, how to start the server locally, and what each endpoint does. This gives you a permanent reference and makes it easy to pick up where you left off.</blockquote>
<h2>Step 3 - Build the Endpoints One Resource at a Time</h2>
<p>Once the project is scaffolded, ask Claude Code to build the endpoints for your first resource. A useful prompt pattern: 'Build the GET, POST, PUT, and DELETE endpoints for tasks. Use an in-memory store for now so we can test quickly, and return proper HTTP status codes with each response.'</p>
<p>Claude Code will write the route handlers, wire them to the correct HTTP methods, and return JSON responses. Each endpoint should return a clear JSON response - the data you asked for, plus a status code that tells the caller whether it worked.</p>
<ol><li>Ask for one resource at a time, not all of them at once.</li><li>Confirm each set of endpoints is working before moving to the next resource.</li><li>Ask Claude Code to add input validation - for example, refuse a POST request that is missing a required field.</li><li>Ask for consistent error responses so every failure returns the same shape of JSON.</li></ol>
<h2>Step 4 - Test Every Endpoint by Asking Claude Code to Hit Them</h2>
<p>Before you connect a frontend or share the API with anyone, test each endpoint. Ask Claude Code to start the server locally and then make a test request to each endpoint, showing you the JSON response and the HTTP status code it returned.</p>
<p>A prompt that works well: 'Start the server, then test each endpoint - create a task, list all tasks, get the task by ID, update its title, and delete it. Show me the request and response for each one.' Claude Code will run through the full sequence and report what it got back.</p>
<p>If a response is wrong - a 500 error, a missing field, or the wrong status code - describe what you expected and ask Claude Code to fix it. Iterating on the behavior in this stage is far easier than debugging it after you have connected a frontend.</p>
<h2>Step 5 - Add Basic Authentication with an API Key</h2>
<p>An API without authentication is open to anyone who finds the URL. Before you deploy, add a simple API key check. The pattern: the caller sends a key in the request header, and the server rejects any request that does not include the correct key.</p>
<p>Ask Claude Code: 'Add API key authentication to all endpoints. The server should read the key from an environment variable called API_KEY and reject any request that sends the wrong key with a 401 Unauthorized response.'</p>
<blockquote><strong>WARNING:</strong> Never hard-code your API key into your server files, and never expose it in your frontend code. The key should only ever live in an environment variable on the server - a .env file locally, and an environment variable set in your deployment platform. If you commit a key to a public repository, rotate it immediately.</blockquote>
<p>After Claude Code adds the middleware, test that it works by asking it to make one request with the correct key (it should succeed) and one without (it should return 401). Confirm both before moving on.</p>
<h2>Step 6 - Deploy to a Live URL</h2>
<p>With a working, authenticated API, the last step is deployment - giving it a URL that any app or tool can reach. Ask Claude Code: 'Walk me through deploying this to a live URL. Set up the necessary config files and tell me what environment variables I need to set in the platform dashboard.'</p>
<p>Claude Code will generate any required configuration files, explain what each one does, and guide you through the deployment steps. The one thing you will do manually: set your API_KEY environment variable in the platform's dashboard - never let Claude Code (or anyone else) paste a real key into a file that gets deployed.</p>
<p>Once deployed, test the live URL the same way you tested locally - ask Claude Code to hit each endpoint against the production URL and confirm the responses match what you expect. A live URL that returns a correct JSON response to a GET request is a working API.</p>
<ul><li>Confirm the GET endpoint returns data on the live URL before calling it done.</li><li>Set the API_KEY environment variable in the platform dashboard, not in any file.</li><li>Share the live URL and the required header format with any app or teammate that needs to use the API.</li><li>Ask Claude Code to save the full endpoint list and header format to your README so you have a permanent reference.</li></ul>
<h2>Join Claude Code Club and Build in a Room Full of People Doing the Same Thing</h2>
<p>Building your first REST API is one of those milestones that opens a lot of doors. Once you have a backend that other apps can talk to, the next project gets easier, and the one after that easier still.</p>
<p>Claude Code Club is where people who are at exactly this stage - learning to build real things with Claude Code - share what they are working on, ask questions, and pick up new skills from each other. The community has members building everything from simple personal tools to production apps, all using the same desktop-first approach covered in this guide.</p>
<p>If you want to keep building with people around you who are doing the same thing, come join us. The link is in the header.</p>
<h2>FAQ</h2>
<p><strong>Do I need to know how to code before I can build a REST API with Claude Code?</strong></p><p>No. You need to know what you want the API to do - what data it holds and what actions it allows. Claude Code handles the code. The more clearly you can describe the behavior you want, the better the result will be.</p>
<p><strong>What is an API key and why does my REST API need one?</strong></p><p>An API key is a secret string that proves a request is coming from someone you authorized. Without one, anyone who finds your API's URL can read, create, or delete your data. The key goes in a request header, and your server rejects any request that sends the wrong key.</p>
<p><strong>What is the difference between a GET request and a POST request?</strong></p><p>A GET request reads data - it asks the server to return something. A POST request creates data - it sends a new item to the server to be stored. You use GET to fetch a list of tasks and POST to add a new task to that list.</p>
<p><strong>Can I connect a frontend to the REST API I built with Claude Code?</strong></p><p>Yes, and this is one of the main reasons to build one. Once your API has a live URL, any frontend - a React app, a plain HTML page, a mobile app - can talk to it by sending requests to that URL with the correct API key in the header. Ask Claude Code to build the frontend next and point it at your deployed API.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Follow Up With a Client Without Being Annoying (and Actually Win the Deal)</title>
      <link>https://www.claudecodeclub.ai/blog/how-to-follow-up-with-a-client-without-being-annoying</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/how-to-follow-up-with-a-client-without-being-annoying</guid>
      <pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Agency</category>
      <category>Freelancing</category>
      <category>Workflows</category>
      <description><![CDATA[Most freelance deals die not because of a 'no' but because of silence. This guide covers the exact cadence, messages, and mindset you need to follow up with a client without feeling pushy - and without losing the deal to someone who stayed in touch.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Knowing how to follow up with a client without being annoying is the single most underused skill in freelancing - most deals go quiet because the prospect got busy, not because they lost interest.</li><li>Every follow-up message should lead with a small piece of value - a relevant observation, a useful resource, a short idea - not 'just checking in', which adds nothing and signals desperation.</li><li>A clean cadence of four to five messages spaced over two to three weeks is the sweet spot; after that, send one graceful close and move on.</li></ul>
<h2>How to Follow Up With a Client Without Being Annoying - the Real Problem</h2>
<p>Most freelancers misdiagnose a quiet client. They assume silence means 'no'. So they either send one awkward 'just checking in' email and stop, or they go the other direction and hammer the inbox until the prospect blocks them. Both approaches lose the deal.</p>
<p>The data on B2B sales is consistent: the majority of closed deals require five or more follow-ups. Most freelancers send one or two. That gap is not the client ghosting you - that is you leaving money on the table.</p>
<p>Silence almost always means 'I got pulled into something else'. Budget cycles move. Stakeholders go on holiday. The internal decision process drags. Your job during that window is to stay visible without becoming noise.</p>
<blockquote><strong>NOTE:</strong> This guide is written for freelancers and small agency operators following up on a proposal or discovery call that went quiet. The same principles apply when following up mid-project with a client who has stopped responding.</blockquote>
<h2>The Mindset Shift: From Needy to Helpful</h2>
<p>The reason follow-up feels uncomfortable is that most people frame it as asking for something - attention, a decision, a reply. That framing makes you feel like a beggar and makes your messages read like one.</p>
<p>Flip it. Every message you send is a micro-delivery. You are not following up to see if they have decided. You are following up because you have something useful for them. Sometimes that is a quick idea you had about their project. Sometimes it is a relevant article. Sometimes it is a one-line observation. The point is: you add value, then close with a low-friction next step.</p>
<p>When you operate from that frame, following up does not feel pushy because it is not pushy. You are doing your job - staying engaged, thinking about their problem, being a professional. That is what clients actually hire for.</p>
<blockquote><strong>TIP:</strong> Before writing any follow-up, ask yourself: what is the one useful thing I can give this person in the next 60 seconds? Lead with that. The ask comes after.</blockquote>
<h2>The CCC Quiet Client Cadence</h2>
<p>Inside Claude Code Club we use a framework called the Quiet Client Cadence - a five-touch sequence that keeps you visible without overwhelming a prospect. The cadence is designed around one rule: each message must give before it asks.</p>
<table><caption>The Quiet Client Cadence - timing and purpose of each message</caption><thead><tr><th>Message</th><th>Timing</th><th>Lead with</th><th>Close with</th></tr></thead><tbody><tr><td>1 - The Recap</td><td>24-48 hours after the call or proposal</td><td>A short summary of what you discussed and the outcome you agreed you could get them</td><td>A single yes/no question: 'Does this still match what you are looking for?'</td></tr><tr><td>2 - The Useful Thing</td><td>5-7 days after message 1</td><td>One relevant resource, idea, or observation tied to their specific situation</td><td>A soft invite: 'Happy to walk through how this would work for you if timing is better now.'</td></tr><tr><td>3 - The Progress Prompt</td><td>7-10 days after message 2</td><td>A brief note that you are still holding the slot or have been thinking about their project</td><td>A direct but low-pressure question: 'Where are things at internally?'</td></tr><tr><td>4 - The Social Proof</td><td>5-7 days after message 3</td><td>A one-sentence result from a similar client (no names needed)</td><td>A simple offer to restart: 'If now is not the right time I am happy to reconnect in [month].'</td></tr><tr><td>5 - The Graceful Close</td><td>7 days after message 4</td><td>An acknowledgement that you will stop reaching out after this</td><td>Leave the door open with no guilt: 'If things shift, you have my details.'</td></tr></tbody></table>
<p>Five messages over three to four weeks is enough. If you hit message five and still hear nothing, the deal is either dead or on a timeline you cannot control. Send the close and move on cleanly. Do not send a sixth message.</p>
<h2>What Each Message Should Actually Say</h2>
<p>Here are copy-ready examples for each stage of the Quiet Client Cadence. Adjust the specifics to fit your service and their situation.</p>
<p>Message 1 - The Recap (sent 24-48 hours after the call): 'Hi [Name] - wanted to send a quick recap while it is fresh. We talked about [their core problem] and the approach I outlined was [your solution in one sentence]. Based on what you shared, I think the realistic outcome is [specific result]. Does that still match what you are looking for? Happy to adjust the scope if anything has changed.'</p>
<p>Message 2 - The Useful Thing (sent about a week later): 'Hi [Name] - I was working on something similar this week and thought of your project. One thing that tends to make a big difference at your stage is [specific observation or tactic]. No action needed on this - just wanted to share it. If timing is better now and you want to pick things back up, I am still available for [start date].'</p>
<p>Message 3 - The Progress Prompt (sent another week later): 'Hi [Name] - just a quick check-in. I know these decisions often have more moving parts than they look from the outside. Where are things at on your end? Even a rough idea of timeline helps me plan my availability.'</p>
<p>Message 4 - The Social Proof (sent a week later): 'Hi [Name] - one thing that might be relevant: I recently finished a similar project for a [type of client] and they saw [specific result - e.g. cut their onboarding time by a third]. Happy to share more detail if useful. Still happy to pick up where we left off if the timing is better now.'</p>
<p>Message 5 - The Graceful Close (sent a week later): 'Hi [Name] - I do not want to keep filling your inbox, so this will be my last note unless I hear from you. The offer I outlined is still on the table if you want to revisit it. If the timing just is not right, no hard feelings - you have my contact details if that changes. Wishing you well with the project.'</p>
<h2>Which Channel to Use</h2>
<p>Start where the conversation started. If you quoted them via email, follow up via email. If the original conversation happened in a DM, continue there. Do not jump channels without a reason - it can feel like escalation.</p>
<p>One exception: if your email follow-ups are not getting even basic opens after two attempts, a short LinkedIn message is a reasonable secondary touch. Keep it to one sentence and a question. Do not copy-paste your full email into LinkedIn.</p>
<ul><li>Default to the channel where the conversation started</li><li>Use email for proposals and formal follow-ups - it creates a paper trail</li><li>Use LinkedIn for a secondary touch if email goes cold after two messages</li><li>Use voice or video only if they specifically invited it and the deal size warrants it</li><li>Do not use multiple channels simultaneously - it reads as pressure</li></ul>
<h2>Busy vs. Not Interested - How to Read the Signals</h2>
<p>Not every quiet client is a live deal. Part of following up without being annoying is knowing when to read the room and when to disengage.</p>
<table><caption>Reading the silence - signals that help you calibrate</caption><thead><tr><th>Signal</th><th>What it usually means</th><th>What to do</th></tr></thead><tbody><tr><td>They opened the proposal email but did not reply</td><td>Interested but busy or waiting on someone else</td><td>Continue the cadence</td></tr><tr><td>They replied once with a vague 'we will be in touch'</td><td>Genuine interest, internal delay</td><td>Continue - message 2 is key here</td></tr><tr><td>They asked a specific question mid-sequence</td><td>Active interest</td><td>Answer immediately, move the conversation forward</td></tr><tr><td>No opens, no replies after three messages</td><td>Possibly wrong email, or low priority</td><td>One final message then close the loop</td></tr><tr><td>They said 'not now' explicitly</td><td>Not a hard no - a timing issue</td><td>Ask when to follow up, then follow up then</td></tr><tr><td>They said 'not interested' or 'going a different direction'</td><td>A genuine no</td><td>Send a gracious close and remove from active follow-up</td></tr></tbody></table>
<p>The difference between 'busy' and 'not interested' is almost never obvious from one message. Give the cadence time to play out before drawing conclusions. Three unanswered messages over two weeks earns you a clearer picture than one unanswered message over two days.</p>
<h2>The Do and Do-Not List</h2>
<p>Most follow-up fails on tone and timing, not effort. These rules fix the most common mistakes.</p>
<ul><li>DO lead every message with something useful to them before making any ask</li><li>DO keep messages short - three to five sentences is plenty</li><li>DO space messages at least five days apart; seven is usually better</li><li>DO use a specific subject line or reply thread so they can find your messages easily</li><li>DO close the loop gracefully instead of just going quiet yourself</li><li>DO NOT open with 'just checking in' or 'just following up' - it signals desperation and adds no value</li><li>DO NOT apologise for reaching out - it frames your contact as an imposition</li><li>DO NOT send more than five messages total without a response</li><li>DO NOT change the price, terms, or scope in a follow-up as a concession for attention</li><li>DO NOT CC additional people at their company as a pressure tactic</li></ul>
<blockquote><strong>WARNING:</strong> If a client asks you to stop contacting them, stop immediately. No final message, no 'understood, best of luck'. Just stop. Respecting that boundary is non-negotiable.</blockquote>
<h2>How Claude Code Can Help You Build the Follow-Up Habit</h2>
<p>The hardest part of client follow-up is not knowing what to say - it is remembering to do it consistently across multiple active conversations. This is where the Claude Code desktop app becomes a practical asset.</p>
<p>Inside CCC we have a skill called client-follow-up-tracker that lets you log an active prospect, set a follow-up interval, and draft the next message on demand. You paste in the last thing they said to you, the context of the project, and where you are in the cadence - and Claude drafts a message that leads with value and fits your voice. You review it, adjust anything, and send.</p>
<p>The result is that follow-up stops being a willpower task and becomes a quick workflow step. Instead of staring at a blank email wondering what to say, you have a draft in under a minute that you are actually confident sending.</p>
<blockquote><strong>TIP:</strong> You can build a simple follow-up skill yourself in about fifteen minutes. Create a SKILL.md in your ~/.claude/skills/ folder, describe the cadence you want to use, and paste in a few example messages as reference. Claude will use that file every time you invoke the skill.</blockquote>
<h2>Join Claude Code Club to Build Systems Like This</h2>
<p>Following up on quiet clients is one piece of a larger operating system - the kind that lets a one or two-person shop compete with much bigger teams. Inside Claude Code Club, members are building exactly this: skills, workflows, and automations that remove the friction from running a freelance or agency business.</p>
<p>The community has over 7,000 members sharing what they have built, what works, and what to skip. There are over 650 prompts, skills, and templates in the resource library, and new additions come in every week from members who are using these tools in real client work.</p>
<p>If you want to build systems that make the client management side of your business feel less like juggling and more like a repeatable process, Claude Code Club is where that work happens. Come in, look around, and bring your next workflow problem.</p>
<h2>FAQ</h2>
<p><strong>How many times should you follow up with a client before giving up?</strong></p><p>Five messages over three to four weeks is the right ceiling for a prospect who has gone quiet. After that, send one clean closing message and stop. Anything beyond five contacts without a reply stops being professional persistence and starts being pressure.</p>
<p><strong>What should I say instead of 'just checking in'?</strong></p><p>Lead with something useful. A relevant observation about their industry, a short idea about their specific project, or a one-sentence result from a similar piece of work you did. Close with a single low-friction question. The message should feel like a delivery, not a nudge.</p>
<p><strong>How long should I wait between follow-up messages?</strong></p><p>At least five days between messages, with seven days being a safer default. The exception is your first follow-up after a proposal or discovery call - send that within 24 to 48 hours while the conversation is still fresh. After that, slow down and let each message land before sending the next.</p>
<p><strong>What does it mean when a client says 'we will be in touch'?</strong></p><p>Usually it means genuine interest combined with an internal process they cannot fully control. It is not a polite brush-off. Continue the cadence as planned, and in your next message lead with something useful rather than asking for a decision. Give them a reason to reply that is not 'yes or no to your proposal'.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Build a Slack Bot with Claude Code (No Terminal Required)</title>
      <link>https://www.claudecodeclub.ai/blog/build-a-slack-bot-with-claude-code</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/build-a-slack-bot-with-claude-code</guid>
      <pubDate>Wed, 08 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Building</category>
      <category>Automation</category>
      <description><![CDATA[Learn how to build a Slack bot with Claude Code from scratch - covering Slack app setup, bot tokens, and wiring it all together through the Claude Code desktop app.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>You can build a Slack bot with Claude Code in an afternoon, even if you have never written a line of code.</li><li>The process has three parts: create a Slack app to get your credentials, describe what you want the bot to do, and let Claude Code write and wire the logic.</li><li>Once it is running, your bot can send channel notifications, respond to slash commands, or answer questions pulled from your team's own documents.</li></ul>
<h2>What a Slack Bot Actually Is</h2>
<p>A Slack bot is a custom program that lives inside your Slack workspace and can send messages, respond to commands, or take actions automatically. It is not the same as tagging Claude in a conversation. When you build a Slack bot with Claude Code, you are creating something your whole team can use - permanently - without anyone needing to have a Claude account.</p>
<p>Think of the bot as a small server that watches your Slack workspace and reacts when something happens. Claude Code writes that server for you. You describe the behavior in plain English, and it produces working code.</p>
<blockquote><strong>NOTE:</strong> Important distinction: tagging @Claude inside Slack is a personal tool. Building your own Slack bot with Claude Code is a product - something you own, control, and can hand to a client or a team.</blockquote>
<h2>What You Can Build (and What Each Type is Good For)</h2>
<p>Before you start, it helps to pick the shape of bot you want. Here are the most practical starting points.</p>
<table><caption>Common Slack bot types and their best uses</caption><thead><tr><th>Bot Type</th><th>What It Does</th><th>Best For</th></tr></thead><tbody><tr><td>Notification bot</td><td>Posts messages to a channel when a trigger fires (form submission, new sale, cron schedule)</td><td>Keeping a team informed without manual updates</td></tr><tr><td>Slash command bot</td><td>Responds when someone types /command in any channel</td><td>Quick lookups, status checks, team shortcuts</td></tr><tr><td>Q and A bot</td><td>Reads from a doc or database and answers questions in plain English</td><td>Support teams, internal wikis, onboarding helpers</td></tr><tr><td>Approval bot</td><td>Sends a message with buttons; records the response</td><td>Simple workflows that need a yes or no from a human</td></tr><tr><td>Daily digest bot</td><td>Summarises data on a schedule and posts a report</td><td>Sales updates, task summaries, content calendars</td></tr></tbody></table>
<p>You do not need to build all of these. Pick one. The skills transfer directly to the others once you have finished your first.</p>
<h2>What You Will Need Before You Start</h2>
<p>The list is short. You do not need a server, a cloud account, or a coding background.</p>
<ul><li>The Claude Code desktop app installed on your computer</li><li>A Slack workspace where you have admin permissions (a free personal workspace works fine for testing)</li><li>A Slack account at api.slack.com to create your app</li><li>A folder on your computer where Claude Code will put the project files</li><li>About an afternoon of focused time for your first build</li></ul>
<blockquote><strong>TIP:</strong> If you do not have admin access to your company Slack, create a free personal Slack workspace at slack.com first. Build and test there, then move the bot to your main workspace once it is working.</blockquote>
<h2>Step One - Create Your Slack App and Get the Credentials</h2>
<p>Every Slack bot starts with a Slack app. Go to api.slack.com/apps, sign in, and click Create New App. Choose the From Scratch option. Give it a name and select the workspace you want it to live in.</p>
<p>Once the app is created, you need two things: a Bot Token and a Signing Secret. Here is where to find each one.</p>
<ol><li>In the left sidebar, click OAuth and Permissions. Under Scopes, add Bot Token Scopes. At minimum, add chat:write (so the bot can post messages) and app_mentions:read (so it can see when someone tags it).</li><li>Scroll up and click Install to Workspace. Approve the permissions. Copy the Bot User OAuth Token - it starts with xoxb-. Keep this somewhere safe.</li><li>Go back to Basic Information in the sidebar. Scroll down to App Credentials. Copy the Signing Secret. This is how your bot verifies that messages are genuinely coming from Slack.</li></ol>
<p>If you are building a bot that responds to slash commands or button clicks, you also need to enable Event Subscriptions or Interactivity in the Slack app settings. Claude Code will remind you of this when it writes your code - just follow what it tells you.</p>
<h2>Step Two - Describe What You Want to Claude Code</h2>
<p>Open the Claude Code desktop app. Start a new project and point it at the folder where you want to build. Then describe your bot in plain language.</p>
<p>A good starting prompt looks like this: 'Build me a Slack bot in Node.js. When someone types /standup in any channel, the bot should reply with a short message asking for yesterday's update, today's plan, and any blockers. Use the Slack Bolt framework. I have a bot token and a signing secret ready to paste in.' That is enough. Claude Code will ask follow-up questions if it needs more detail.</p>
<blockquote><strong>TIP:</strong> The CCC Build-First Method: describe the outcome you want, not the technical steps. Say 'when someone does X, the bot should do Y' and let Claude Code figure out the how. You can always refine once you see it working.</blockquote>
<p>Claude Code will write the entire bot file, a .env file template for your credentials, and a short README with instructions. Read through the .env template - it will show you exactly where to paste your bot token and signing secret.</p>
<h2>Step Three - Wire the Credentials and Run the Bot</h2>
<p>Once Claude Code has generated the files, paste your credentials into the .env file. Do not put them anywhere else - not in the code, not in a shared document.</p>
<p>Claude Code will also tell you what commands to run to install dependencies and start the bot. On a Mac, this usually means running npm install and then node app.js in the terminal, or Claude Code can handle this step for you through its built-in run feature.</p>
<p>For slash commands and event subscriptions, Slack needs a public URL to send messages to. While you are testing locally, Claude Code can set up a tool called ngrok for you - it creates a temporary public URL that tunnels to your computer. Paste that URL into the Slack app settings under Request URL.</p>
<blockquote><strong>WARNING:</strong> Ngrok URLs are temporary. Every time you restart ngrok, the URL changes and you have to update your Slack app settings. For a bot you want to run permanently, ask Claude Code to help you deploy it to a simple hosting service so the URL stays fixed.</blockquote>
<h2>Step Four - Test It in a Real Channel</h2>
<p>Go into your Slack workspace and try the bot. If you built a slash command, type it in a channel. If you built a notification bot, trigger the event that should fire it. Watch what comes back.</p>
<p>When something does not work, copy the error message from your terminal or Claude Code's output and paste it back into the Claude Code chat. Say 'I got this error when I ran the bot - can you fix it?' Claude Code will diagnose and patch the issue, usually in one or two exchanges.</p>
<p>Testing in a private test channel first is smart. You can delete messages, experiment with edge cases, and break things without the whole team watching. Once it behaves correctly, invite the bot to the real channel where it belongs.</p>
<h2>Making the Bot Smarter - Connecting It to Your Docs</h2>
<p>Once the basic bot is working, you can extend it. One of the most useful upgrades is giving the bot access to a document or a small knowledge base so it can answer questions from your team.</p>
<p>The approach is straightforward: give Claude Code a folder of text files - a FAQ, a product guide, internal docs - and ask it to add a feature where the bot searches those files when someone asks it a question. Claude Code will write a simple retrieval system and connect it to the Slack response.</p>
<p>You can also connect the bot to external services. If you want it to pull in data from a spreadsheet, a CRM, or an API, describe that connection in the Claude Code chat. The MCP server layer (a tool that Claude Code can use to talk to external services) makes many of these connections much faster to build.</p>
<ul><li>Connect a Google Sheet: bot reads from it on every query</li><li>Pull from a REST API: bot fetches live data before responding</li><li>Write back to a database: bot logs every interaction for review</li><li>Add a Slack MCP server: gives Claude Code direct access to send and read messages during the build phase, so you can test faster</li></ul>
<h2>Keep Building Inside Claude Code Club</h2>
<p>Building a Slack bot with Claude Code is one of the fastest ways to produce something genuinely useful. It is the kind of build that gets you from 'I made a thing' to 'my team uses this every day' in a weekend.</p>
<p>Inside Claude Code Club, we walk through builds like this step by step. You can share your bot in the community, get feedback on your prompt approach, and see how other members have extended theirs into client tools and automation products. The classroom has dedicated lessons on wiring bots, working with APIs, and setting up MCP servers so you can move faster on your next build.</p>
<p>If this is your first Claude Code project, this is a good one to start with. The feedback loop is fast. You can see it working inside Slack within a few hours. And once you have done it once, the pattern applies to almost any bot you want to build next.</p>
<blockquote><strong>NOTE:</strong> Claude Code Club is open now. Come share what you built.</blockquote>
<h2>FAQ</h2>
<p><strong>Do I need to know how to code to build a Slack bot with Claude Code?</strong></p><p>No. Claude Code writes the code for you. What you need is a clear description of what you want the bot to do. If you can explain it in plain English, Claude Code can build it.</p>
<p><strong>Is this the same as using Claude inside Slack directly?</strong></p><p>No - they are different things. Tagging Claude inside Slack is a personal assistant feature. Building your own Slack bot with Claude Code means you create a bot that your whole team can interact with, that you own and control, and that works whether or not anyone in your team has a Claude account.</p>
<p><strong>How do I keep the bot running after I close my laptop?</strong></p><p>While testing, the bot only runs when your computer is on. To keep it running permanently, ask Claude Code to help you deploy it to a simple hosting service. Claude Code can write the deployment setup for you - you just need to choose a host and follow the steps it gives you.</p>
<p><strong>Can the bot respond to messages in multiple channels?</strong></p><p>Yes. Once you invite the bot to a channel in your Slack workspace, it can operate there. You can invite it to as many channels as you like. You can also set it up to only respond in specific channels by adding a channel filter to the logic - just describe that to Claude Code and it will add it.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Turn a One-Off Client into a Monthly Retainer (Without Being Pushy)</title>
      <link>https://www.claudecodeclub.ai/blog/how-to-turn-a-one-off-client-into-a-monthly-retainer</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/how-to-turn-a-one-off-client-into-a-monthly-retainer</guid>
      <pubDate>Wed, 08 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Agency</category>
      <category>Monetization</category>
      <category>Freelancing</category>
      <description><![CDATA[Knowing how to turn a one-off client into a monthly retainer is the difference between chasing new work every month and building a stable, compounding business. This post walks through the right moment to pitch, what to put in the offer, and how to have the conversation.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Knowing how to turn a one-off client into a monthly retainer starts with timing - pitch it the moment you deliver results, not weeks later when momentum has faded.</li><li>A strong retainer for an AI or automation shop bundles maintenance, a fixed block of hours, and one small new automation each month so the client sees ongoing value every billing cycle.</li><li>The most common objection - 'we don't need ongoing work' - almost always means the client hasn't connected the dots between what you built and what could break or grow; your job is to draw that line for them.</li></ul>
<h2>Why Retainers Beat One-Off Projects for an AI Shop</h2>
<p>How to turn a one-off client into a monthly retainer is one of the most practical business questions you can ask if you are building with Claude Code. One-off projects feel good when they close, but you are back to zero the following month. A retainer means you wake up in February already knowing what March looks like.</p>
<p>Beyond the income floor, retainers compound the relationship in a way single projects never do. You learn how the client's business actually works. They start looping you in earlier on decisions. Over six months you become part of their operating layer, not a vendor they call when something breaks.</p>
<table><caption>One-off project vs. monthly retainer - a direct comparison</caption><thead><tr><th>Dimension</th><th>One-Off Project</th><th>Monthly Retainer</th></tr></thead><tbody><tr><td>Income predictability</td><td>Zero until next sale closes</td><td>Fixed floor every month</td></tr><tr><td>Client relationship</td><td>Transactional, resets after delivery</td><td>Cumulative, deepens over time</td></tr><tr><td>Your workload</td><td>Feast-or-famine cycle</td><td>Steady, plannable capacity</td></tr><tr><td>Client switching cost</td><td>Low - easy to try someone else next time</td><td>High - you know their systems</td></tr><tr><td>Upsell surface</td><td>Only at proposal time</td><td>Every monthly touchpoint</td></tr></tbody></table>
<blockquote><strong>TIP:</strong> The client switching cost column is the one most people underestimate. After two or three months on retainer, you have built context that would take a replacement weeks to rebuild. That is real leverage, and it protects your relationship as much as it protects your revenue.</blockquote>
<h2>The One Window You Cannot Miss</h2>
<p>The right moment to pitch a retainer is immediately after you deliver something that worked. Not the next week, not after a polite waiting period - right then, when the client is looking at the results and feeling the relief or excitement of a problem solved.</p>
<p>That emotional window closes fast. Within a week they have moved on to the next fire. Within a month the project is background context and they have forgotten what it felt like before you fixed it. If you wait, you are pitching cold. If you pitch at delivery, you are pitching while they are sitting inside the proof of your value.</p>
<p>For Claude Code and automation work this is especially important because the results are often invisible once they are running. The workflow just works. The report just appears. The client stops thinking about it - which means they stop thinking about you. The retainer pitch is how you stay in the picture.</p>
<h2>What Actually Goes in a Retainer for an AI Automation Shop</h2>
<p>A retainer offer that converts has a clear scope. Vague ongoing support arrangements make clients nervous because they cannot budget for them. Here is a structure that works well for Claude Code-based shops.</p>
<ul><li>Maintenance and monitoring: you keep the automations running, catch errors before the client notices them, and handle updates when connected tools change their APIs or interfaces.</li><li>A fixed monthly block of hours: say eight to twelve hours that the client can use for small requests, tweaks, and questions - they know exactly what they are getting and exactly what it costs.</li><li>One new small automation per month: this is the piece most people leave out, and it is the most important one. It gives the client something to look forward to and proves the retainer is an investment, not a maintenance fee.</li><li>Priority access: retainer clients get a faster response window than one-off clients. This is a real benefit and worth naming explicitly in the offer.</li><li>A monthly summary: a short written note covering what ran, what changed, and what is coming next month. Takes you fifteen minutes and makes the value visible.</li></ul>
<blockquote><strong>NOTE:</strong> The monthly automation is the lever that makes renewals easy. At the end of month three, when the client asks whether to continue, you can point to three concrete new things you built for them - not just uptime.</blockquote>
<h2>The Delivery-Day Conversion Method</h2>
<p>At CCC we call this the Delivery-Day Conversion. The idea is simple: you bundle the handoff of the finished project with a clear, low-pressure framing of what ongoing support looks like. You do not pitch a new product. You pitch the next logical step.</p>
<p>Here is how it works in practice. At the end of your delivery call or email, after you have walked through what you built and confirmed they are happy, you add something like this:</p>
<blockquote><strong>TIP:</strong> Script: 'Now that this is live, I want to flag one thing. Automations like this need a little ongoing attention - connected tools update, edge cases show up, and there are usually a few small things you will want adjusted once you start using it for real. I offer a monthly support arrangement that covers all of that plus a block of hours for new requests. Want me to send you the details?' That is the whole ask. It is one sentence about the problem, one sentence about the solution, and one question. No hard sell.</blockquote>
<p>Notice what the script does not do. It does not name a price. It does not list everything the retainer includes. It does not ask for a decision. It asks for permission to send information, which almost everyone will say yes to. You close the retainer in the follow-up, not on the delivery call.</p>
<h2>How to Frame the Price Without Scaring the Client</h2>
<p>Pricing a retainer is easier than pricing a project because you are not selling an outcome - you are selling capacity and assurance. Frame it as a flat monthly number with a clear scope. Hourly rates make clients anxious about every message they send. Flat rates let them relax.</p>
<p>A useful anchoring technique: in the follow-up email, list what is included first and name the price last. By the time the client gets to the number they have already understood the scope, and the price feels like a simple yes or no rather than a negotiation.</p>
<p>For example, say you delivered a project for which you charged in the range of a few thousand dollars. A monthly retainer at roughly ten to fifteen percent of that project value is a reasonable starting range and tends not to trigger sticker shock - the client already has a reference point for what your work is worth. These are illustrative numbers; your actual pricing will depend on scope, market, and what you have already established with that specific client.</p>
<blockquote><strong>WARNING:</strong> Do not discount the retainer to close it. A lower rate than your project rate signals that retainer work is lower priority. Price it at or above your standard day rate equivalent. The value to the client is access and peace of mind, not a bulk discount.</blockquote>
<h2>Handling the 'We Don't Need Ongoing Work' Objection</h2>
<p>This is the most common response and it almost never means what it sounds like. It rarely means the client genuinely has no ongoing need. It usually means one of three things: they cannot picture what ongoing work would look like, they assume you only fix things when they break, or they are worried about committing to an open-ended spend.</p>
<ul><li>If they cannot picture it: get specific. Name two or three things that will realistically need attention in the next ninety days based on what you just built. Make the abstract concrete.</li><li>If they think it is break-fix only: reframe around the monthly automation deliverable. You are not just keeping the lights on - you are building something new for them every month.</li><li>If they are worried about commitment: offer a ninety-day trial with no lock-in. This removes the perceived risk almost entirely. Most clients who say yes to a trial renew.</li></ul>
<p>The one thing you should not do is argue or push. If a client has heard your offer, heard the reframe, and still says no - accept it gracefully, leave the door open, and move on. A client who feels pressured will not become a good retainer client anyway.</p>
<h2>Keeping the Retainer Alive Month After Month</h2>
<p>Winning the retainer is the first step. Keeping it is where the real work is. A retainer dies when the client stops seeing what they are paying for. Your job is to make the value visible every single month without being loud about it.</p>
<p>The monthly summary note you send on the last day of each month does most of this work. Three short sections is enough: what ran and what you fixed, what you built new this month, and what you are planning for next month. Clients rarely read it word for word but they look at it. The existence of that document is itself a signal that you are on top of things.</p>
<p>The other lever is proactive suggestions. When you spot something in their system that could be improved, flag it in a quick message. Do not wait for them to ask. Clients on retainer expect a thinking partner, not just an executor. When you behave like one, renewal conversations tend to be short.</p>
<h2>Start Here If You Have Never Done This Before</h2>
<p>If you are just starting out with Claude Code and have not yet had a retainer client, the simplest version of this is to pick your next project delivery and try the Delivery-Day Conversion script at the end of the handoff. You do not need a polished retainer contract or a formal proposal template. You need one short paragraph and a follow-up email.</p>
<p>Even if the first client says no, you will have practiced the conversation. The second time it will feel natural. By the third or fourth time you will have a sense of which clients are likely to convert and you can put more energy into those relationships from the start of the project.</p>
<p>The business side of building with Claude Code - pricing, client conversations, retainer structures - is something we work through regularly inside Claude Code Club. If you want to be in a room where people are figuring this out together and sharing what is actually working, come join us.</p>
<h2>FAQ</h2>
<p><strong>How soon after delivering a project should I pitch a retainer?</strong></p><p>On the same call or in the same email where you deliver the finished work. The window of peak enthusiasm and relief is short - usually just a few days. Pitching later means pitching cold, without the emotional momentum that makes a yes easy.</p>
<p><strong>What should I charge for a monthly retainer?</strong></p><p>There is no single right number, but a useful starting point is to think in terms of a fixed monthly fee that covers a defined scope - a set number of hours plus maintenance plus one new automation. Frame it as a flat rate so the client can budget for it predictably. Price it at or above the equivalent of your standard project rate per hour, not below.</p>
<p><strong>What if a client only has occasional needs and genuinely doesn't need monthly support?</strong></p><p>Some clients really are better as one-off relationships and that is fine. If a client's situation genuinely does not warrant ongoing attention, do not force the pitch. Save your energy for clients where there is a real ongoing need and where the retainer creates clear value for them.</p>
<p><strong>How do I handle a retainer client who starts asking for more than the agreed scope?</strong></p><p>Scope creep on retainers is common and easy to handle if you defined the scope clearly up front. When a request falls outside the agreed block of hours, note it plainly - 'That is a bit outside our monthly scope, I can quote it as a small add-on or fold it into next month's automation slot.' No drama, just a clear boundary and a path forward.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Create a Claude Code Skill: A Step-by-Step Guide for Beginners</title>
      <link>https://www.claudecodeclub.ai/blog/how-to-create-a-claude-code-skill</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/how-to-create-a-claude-code-skill</guid>
      <pubDate>Tue, 07 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Claude Code</category>
      <category>Skills</category>
      <category>Building</category>
      <description><![CDATA[A Claude Code skill is a folder with one instruction file that teaches Claude a repeatable job it can reach for on its own. Here is how to build your first one from scratch, test it, and know when a skill is the right tool.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>A Claude Code skill is just a folder in ~/.claude/skills/ with a single SKILL.md file inside - the whole thing is markdown, no code required.</li><li>The one field that makes or breaks a skill is the description in the frontmatter: it is how Claude decides, on its own, when to reach for the skill.</li><li>Build a skill when you have a repeatable job with a specific process; use a slash command for a one-shot prompt and an MCP server for connecting to an outside tool.</li></ul>
<h2>What a Claude Code Skill Actually Is</h2>
<p>A Claude Code skill is a folder that contains a single instruction file, called SKILL.md, which teaches Claude how to do one repeatable job well. That is the entire idea. When your request matches what the skill is for, Claude reads the instructions and follows them, so you get the same high-quality result every time instead of re-explaining the process from scratch.</p>
<p>The best way to picture it: a skill is a checklist you hand to a very capable teammate. You write down how you want a task done once - the steps, the rules, the format of the output - and from then on Claude reaches for that checklist automatically whenever the situation calls for it. You are not writing a program. You are writing instructions in plain English.</p>
<p>This is why skills are one of the highest-leverage things a beginner can build. You do not need to know a programming language. If you can describe how you like a task done, you can make a skill for it. In this guide we will build one together, test it, and cover when a skill is the right choice versus a slash command or an MCP server.</p>
<blockquote><strong>NOTE:</strong> Everything here works the same in the Claude Code desktop app and the terminal. If you are on the desktop app, you are in exactly the right place - the file locations below are identical.</blockquote>
<h2>Before You Start: The One Folder and One File</h2>
<p>A skill needs exactly two things: a folder with a short, hyphenated name, and a file inside it named SKILL.md. That is the minimum viable skill. Everything else - extra reference files, scripts, examples - is optional and added only when a skill grows.</p>
<p>Skills live in one of two places. A personal skill goes in the .claude/skills folder inside your home directory, and it is available in every project you open. A project skill goes in a .claude/skills folder at the root of a specific project, and it travels with that project when you share it. For your first skill, personal is the simplest choice.</p>
<table><caption>Where a skill lives, and what that means</caption><thead><tr><th>Location</th><th>Scope</th><th>Use it for</th></tr></thead><tbody><tr><td>~/.claude/skills/your-skill/</td><td>Every project on your machine</td><td>Your own repeatable habits</td></tr><tr><td>your-project/.claude/skills/your-skill/</td><td>Only that project</td><td>A process the whole team should share</td></tr></tbody></table>
<h2>Step 1: Create the Skill Folder</h2>
<p>Pick a name for what your skill does, in lowercase with hyphens. For this walkthrough we will build a skill that writes a clean, consistent commit message, so we will call it commit-helper. Open Claude Code and ask it to make the folder for you - this is the easiest way and it works whether you are in the desktop app or the terminal.</p>
<p>A prompt as simple as &quot;Create a new personal skill folder called commit-helper in my Claude skills directory and add an empty SKILL.md file inside it&quot; will do the whole thing. Claude knows where the skills folder lives and will set it up. You never have to touch the file system by hand if you do not want to.</p>
<blockquote><strong>TIP:</strong> Name the skill after the job, not the tool. &quot;commit-helper&quot; tells Claude what it is for at a glance. A vague name like &quot;my-stuff&quot; makes it harder for Claude to know when the skill applies.</blockquote>
<h2>Step 2: Write the SKILL.md Body</h2>
<p>The body of SKILL.md is where you write the actual instructions, in plain markdown. Treat it like onboarding a new team member: be specific about the steps, the rules, and what a good result looks like. The clearer you are, the more consistent Claude will be.</p>
<p>For our commit-helper, the body might say: read the staged changes, summarize what changed in one short line under 60 characters, use the present tense, never invent changes that are not in the diff, and add one or two bullet points only if the change is large. Notice that these are the same instructions you would give a person. That is the whole skill.</p>
<ol><li>State the goal in the first line, so Claude knows the point immediately.</li><li>List the steps in the order you want them done.</li><li>Write down the rules and the things to never do - these matter as much as the steps.</li><li>Show the shape of the output you want, with a short example if it helps.</li></ol>
<h2>Step 3: The Frontmatter That Makes It Discoverable</h2>
<p>At the very top of SKILL.md you add a small block of frontmatter between two lines of three dashes. It holds two fields: a name and a description. This block is short, but the description is the single most important line in the whole skill.</p>
<p>Here is why. Claude does not run your skill because you told it to by name. It reads the description of every available skill and decides, on its own, which one fits the request in front of it. A vague description means Claude will miss the moment to use your skill. A precise one means it fires at exactly the right time. Write the description as &quot;Use when...&quot; and name the trigger clearly.</p>
<table><caption>A weak description versus a strong one</caption><thead><tr><th>Field</th><th>Weak</th><th>Strong</th></tr></thead><tbody><tr><td>name</td><td>helper</td><td>commit-helper</td></tr><tr><td>description</td><td>Helps with commits</td><td>Use when the user is about to write a git commit message and wants it clean, short, and consistent</td></tr></tbody></table>
<blockquote><strong>WARNING:</strong> If your skill never seems to fire, the description is almost always the reason. Rewrite it to name the exact situation it applies to, then try again.</blockquote>
<h2>Step 4: Add Supporting Files Only When You Need Them</h2>
<p>A one-file skill is complete and shippable. But as a skill grows, you can drop extra files into the same folder - a longer reference document, a short script, an example template - and mention them in SKILL.md so Claude reads them when relevant. Claude only pulls them in when the task calls for it, which keeps the skill light.</p>
<p>The rule of thumb: start with just SKILL.md. Add a supporting file the first time you find yourself pasting the same long reference into the instructions. Do not build the extra files up front for a job you have not hit yet. Skills are meant to grow from real use, not from imagined future needs.</p>
<h2>Step 5: Test Your Skill in a Real Session</h2>
<p>Testing a skill is simple: start a fresh Claude Code session and do the thing the skill is for. For commit-helper, make a small change to a file, stage it, and ask Claude to write the commit message. If the skill is wired correctly, Claude will follow your instructions without you naming the skill at all.</p>
<p>If it does not fire, do not panic - this is the normal part of the loop. Nine times out of ten the fix is the description. Sharpen it to name the exact trigger, start a new session, and test again. Once it fires reliably, you are done. You have a repeatable process that runs itself from now on.</p>
<blockquote><strong>TIP:</strong> Want a running start? We keep a free walkthrough and starter files in our resource on how to build your first Claude skill - grab it, then come back and make it yours.</blockquote>
<h2>Skill vs Slash Command vs MCP Server: When to Use Which</h2>
<p>Skills are one of three ways to extend Claude Code, and beginners often mix them up. The quick version: a skill is for a repeatable job with a real process, a slash command is for a one-shot prompt you want to trigger fast, and an MCP server is for connecting Claude to an outside tool like your calendar, your database, or GitHub.</p>
<table><caption>The three ways to extend Claude Code</caption><thead><tr><th>Tool</th><th>Best for</th><th>Example</th></tr></thead><tbody><tr><td>Skill</td><td>A repeatable job with steps and rules</td><td>Writing consistent commit messages</td></tr><tr><td>Slash command</td><td>A one-shot prompt you fire on demand</td><td>/summarize the current file</td></tr><tr><td>MCP server</td><td>Connecting Claude to an outside service</td><td>Reading and sending Gmail</td></tr></tbody></table>
<p>If you are still deciding, ask one question: is this a process I repeat, or a connection to another tool? A process is a skill. A connection is an MCP server. Once you can answer that, the choice is obvious. And if you want the deeper version, our explainer on Claude skills and our guide to MCP servers both go a level further.</p>
<h2>Your First Skill Is the Start of a Library</h2>
<p>The real payoff of skills is not the first one - it is the tenth. Every time you catch yourself explaining the same process to Claude twice, that is a skill waiting to be written. Over a few weeks you build up a small library of them, and Claude quietly gets better at working the way you work.</p>
<p>Start with commit-helper today. Then make one for how you format a client email, one for how you review a pull request, one for how you draft a blog outline. None of them take more than ten minutes. That habit - noticing a repeat and turning it into a skill - is what separates people who use Claude Code from people who compound with it. Inside the Claude Code Club we share the ones that work, so you are never starting from a blank file.</p>
<h2>FAQ</h2>
<p><strong>Do I need to know how to code to create a Claude Code skill?</strong></p><p>No. A skill is a plain markdown file with instructions written in English. If you can describe how you want a task done - the steps, the rules, the output - you can write a skill. The commit-helper example in this guide contains no code at all.</p>
<p><strong>Where do Claude Code skills live on my computer?</strong></p><p>Personal skills go in the .claude/skills folder inside your home directory and work in every project. Project skills go in a .claude/skills folder at the root of a specific project and travel with it. You can also ask Claude to create the folder for you so you never touch the file system by hand.</p>
<p><strong>Why does my skill never activate?</strong></p><p>Almost always the description in the frontmatter is too vague. Claude reads that description to decide when to use the skill on its own, so it needs to name the exact situation. Rewrite it as &quot;Use when...&quot; with a specific trigger, start a fresh session, and test again.</p>
<p><strong>What is the difference between a skill and a slash command?</strong></p><p>A skill is for a repeatable job with a process, and Claude reaches for it automatically when the situation matches. A slash command is a one-shot prompt you trigger by name on demand. If you find yourself running the same command and wishing Claude just knew when to do it, that is a sign it should be a skill.</p>
<p><strong>Can I share a skill with my team?</strong></p><p>Yes. Put the skill in a .claude/skills folder at the root of a shared project and it travels with the repository, so everyone who opens the project gets the same skill. This is how teams keep a consistent process across every member.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Build a Discord Bot With Claude Code: A Beginner's Walkthrough</title>
      <link>https://www.claudecodeclub.ai/blog/build-a-discord-bot-with-claude-code</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/build-a-discord-bot-with-claude-code</guid>
      <pubDate>Tue, 07 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Building</category>
      <category>Automation</category>
      <description><![CDATA[You can build a working Discord bot with Claude Code even if you have never written a line of code. Follow this walkthrough to go from an empty folder to a bot that is live in your server and doing a real job.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>You can build a Discord bot with Claude Code without knowing how to code - Claude writes it, you describe what you want.</li><li>The flow is: create the bot in Discord's Developer Portal, hand the token to Claude Code, and build it up one small command at a time.</li><li>A Discord bot needs to run somewhere always-on, so the last step is deploying it to a free host so it stays online when your laptop is closed.</li></ul>
<h2>What You Are Going to Build</h2>
<p>By the end of this walkthrough you will have a real Discord bot, live in a server, responding to a command you typed into existence. Not a toy in a tutorial video - a bot you own, that you can point at any job you want. And you will build it with Claude Code, which means you describe what you want in plain English and Claude writes the code.</p>
<p>I want to be straight with you about the shape of this. A Discord bot has two halves. One half lives on Discord's side - registering the bot and getting a secret token. The other half is the code that logs in with that token and reacts to messages. Claude Code handles the second half almost entirely. Your job is mostly the first half, plus telling Claude what the bot should do. If you have ever wanted to see how far the tool actually goes, this is a great first real project.</p>
<blockquote><strong>NOTE:</strong> This works the same in the Claude Code desktop app or the terminal. The desktop app is the easier place to start if this is new to you - nothing here requires living in a command line.</blockquote>
<h2>What You Need Before You Start</h2>
<p>You need three things, and all of them are free. First, a Discord account and a server you have permission to manage - your own test server is perfect. Second, Claude Code installed on your machine. Third, about thirty minutes. That is the whole list. You do not need to know Python or JavaScript, and you do not need to have built anything before.</p>
<ul><li>A Discord account and a server you can add a bot to.</li><li>Claude Code installed and open, in the desktop app or the terminal.</li><li>An empty folder on your machine for the project to live in.</li></ul>
<h2>Step 1: Create the Bot in Discord's Developer Portal</h2>
<p>Everything starts on Discord's side. Go to the Discord Developer Portal, create a new application, and give it a name - this is your bot's identity. Inside that application there is a Bot section. Open it and you will find a button to reveal a token. That token is the password your code uses to log in as the bot. Copy it and keep it somewhere private for a minute.</p>
<p>While you are in the Bot section, turn on the message content intent. This is the permission that lets your bot actually read the messages people send, and beginners get stuck for an hour when they forget it. Then use the portal's OAuth2 URL generator to create an invite link with the bot scope, open that link, and add the bot to your server. It will show up offline for now - that is expected, because the code that brings it to life does not exist yet.</p>
<blockquote><strong>WARNING:</strong> Treat the bot token like a password, because it is one. Never paste it into a public chat, a screenshot, or a file you push to GitHub. If it ever leaks, go back to the portal and reset it immediately.</blockquote>
<h2>Step 2: Point Claude Code at an Empty Folder</h2>
<p>Now switch to Claude Code. Open your empty project folder and start with a short brief so Claude knows what you are building before it writes anything. This is the highest-value thirty seconds of the whole project. Ask Claude to create a CLAUDE.md file that says: this is a Discord bot, it should be written in a beginner-friendly way, and here is what I want it to do first.</p>
<p>Keeping that brief in a CLAUDE.md file means Claude reads it on every turn and stops drifting. You will not have to re-explain the project each time you come back to it. If you have never used a project brief before, it is the same habit that makes every other Claude Code build go smoother, and it matters even more when the project has moving parts like a bot does.</p>
<h2>Step 3: The First Prompt - Get It Online</h2>
<p>Do not try to build the whole bot in one prompt. The goal of your first prompt is tiny and specific: get the bot to log in and come online in your server. Ask Claude something like &quot;Set up a minimal Discord bot in this folder that logs in with my token and prints a message in the console when it is online.&quot; Claude will write the code and tell you how to add your token safely.</p>
<p>Run it, and watch your server. The moment that offline bot flips to online, you have crossed the hardest gap in the project. Everything after this is adding one small ability at a time. If it does not connect, copy the exact error message and paste it straight back to Claude - error messages are the most precise instructions you will ever get, and Claude is very good at reading them.</p>
<blockquote><strong>TIP:</strong> Let Claude store your token in a separate environment file, not in the main code. This keeps the secret out of the code you might share later, and Claude will set this up correctly if you ask it to.</blockquote>
<h2>Step 4: Add Your First Command</h2>
<p>Now give the bot something to do. Start with the classic: a command that replies when someone types it. Ask Claude to &quot;add a slash command called ping that replies with pong.&quot; Run it again, type the command in your server, and watch the bot answer. It feels small, but you just wired a full round trip - a person types, the bot hears it, the bot responds.</p>
<p>That round trip is the whole pattern of a Discord bot. Every feature you will ever add is a variation of it: something happens in the server, your bot notices, your bot does something back. Once you have seen it work once, you know how to add anything. Add commands one at a time, test each one, and never move on until the current one works.</p>
<h2>Step 5: Make It Do Something Actually Useful</h2>
<p>A ping command proves the wiring. Now build the reason you wanted a bot in the first place. This is where Claude Code earns its keep, because you can describe a genuinely useful job in one sentence and let it build the logic. Pick one real job and ask for it plainly.</p>
<ul><li>A welcome message that greets every new member who joins your server.</li><li>A command that posts a daily prompt or question to keep a community active.</li><li>A moderation helper that flags messages containing words you choose.</li><li>A command that fetches something useful, like the weather or a random resource, and posts it.</li></ul>
<p>For anything that reaches outside Discord - pulling live data, posting to another service, checking a database - the next step up is connecting your bot to those tools through MCP servers. That is how a simple bot turns into something that runs real chunks of a workflow. Start simple, get one useful command working, and grow from there.</p>
<h2>Step 6: Deploy It So It Runs While You Sleep</h2>
<p>Here is the catch nobody tells beginners: your bot only runs while the program is running. Close your laptop and the bot goes offline. To keep it live around the clock, it needs to run on an always-on host instead of your machine. The good news is you can do this for free to start, and Claude Code will walk you through it.</p>
<p>Ask Claude to help you deploy the bot to a free always-on host - there are several beginner-friendly ones that keep a small bot running at no cost. Claude will tell you what to set up, where to paste your token as a secure environment variable, and how to push the code. Once it is deployed, your bot stays online whether your laptop is open or not. That is the moment it stops being a project and becomes a real thing running in the world.</p>
<blockquote><strong>WARNING:</strong> When you deploy, add your token as a secret environment variable in the host's settings - never inside the code you upload. This is the same rule as before: the token is a password, and it should never live in shared code.</blockquote>
<h2>Where to Take It Next</h2>
<p>You now have the full loop: a bot registered on Discord, built command by command with Claude Code, and deployed so it runs on its own. That is more than most people ever ship. The skill you just picked up - describe a small slice, build it, test it, repeat - is the exact same skill behind every other project in this club, from Telegram bots to full agents.</p>
<p>So keep pulling the thread. Add one more command this week. Connect it to a tool through an MCP server. Turn it into something your community actually relies on. When you are ready for the next build, our walkthrough on building a Telegram bot with Claude Code follows the same shape, and the 6,800+ members inside the Claude Code Club are shipping bots like this every day. Pick the next small slice and keep going.</p>
<h2>FAQ</h2>
<p><strong>Can I build a Discord bot with Claude Code if I have never coded before?</strong></p><p>Yes. Claude Code writes the code for you - your job is to describe what the bot should do in plain English and handle the setup on Discord's side. The walkthrough above takes a complete beginner from an empty folder to a live bot without assuming any prior coding experience.</p>
<p><strong>Is building a Discord bot free?</strong></p><p>The build is free. Discord's Developer Portal is free, Claude Code writes the code, and there are free always-on hosts that will keep a small bot running at no cost. You can go from nothing to a deployed, live bot without spending anything to start.</p>
<p><strong>Why is my Discord bot showing as offline?</strong></p><p>A Discord bot is only online while its code is actually running. If you added the bot to your server but have not run the login code yet, or you closed the program, it will show offline. Once you run the code - or deploy it to an always-on host - it comes online and stays there.</p>
<p><strong>Where do I keep the bot token safe?</strong></p><p>Never put the token directly in your code or in anything you share. Ask Claude Code to store it in a separate environment file locally, and when you deploy, add it as a secret environment variable in your host's settings. If the token ever leaks, reset it in the Discord Developer Portal right away.</p>
<p><strong>What can a Discord bot actually do once it is built?</strong></p><p>Anything that follows the pattern of noticing something in the server and responding: welcoming new members, posting daily prompts, moderating messages, or fetching live data. When you connect it to outside tools through MCP servers, it can run real pieces of a workflow, not just reply to commands.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Build an Invoice Generator With Claude Code: the Invoice Blueprint</title>
      <link>https://www.claudecodeclub.ai/blog/build-an-invoice-generator-with-claude-code</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/build-an-invoice-generator-with-claude-code</guid>
      <pubDate>Mon, 06 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Building</category>
      <category>Freelancing</category>
      <description><![CDATA[You can build an invoice generator with Claude Code even if you have never written code. Follow the Invoice Blueprint to turn your details into a clean, reusable invoice you can send in seconds.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>You can build an invoice generator with Claude Code in an afternoon using the Invoice Blueprint.</li><li>List everything one invoice needs, describe it to Claude, make it reusable so each new invoice takes seconds, then export to a PDF and send it.</li><li>You never write the code yourself; you describe the invoice you want and Claude builds the tool inside the Claude desktop app.</li></ul>
<h2>How to Build an Invoice Generator With Claude Code</h2>
<p>To build an invoice generator with Claude Code, follow the Invoice Blueprint, our four-step method at Claude Code Club for turning your billing details into a clean, reusable invoice without writing code. In one breath: list everything one invoice needs, describe it to Claude, make it reusable so each new invoice takes seconds, then export to a PDF and send it. An invoice generator is a small tool that takes a client name, a list of items, and amounts, and produces a finished invoice you can send. Claude Code builds that tool for you inside the Claude desktop app.</p>
<p>Your job is to decide what your invoice should say and look like. Claude handles the code. The reason this beats a free template is that you build it once and reuse it forever: next month you change three numbers and a new invoice is ready, correctly numbered and dated, with your totals added up for you. You go from a blank page every time to a tool that does the repetitive parts.</p>
<ol><li>List every field one invoice needs, from your name to the final total.</li><li>Describe the invoice to Claude and let it build the generator.</li><li>Make it reusable so each new invoice is a few edits, not a rebuild.</li><li>Export the invoice to a PDF and send it to your client.</li></ol>
<blockquote><strong>TIP:</strong> Have one real invoice in mind before you start, ideally the next one you actually need to send. Building against a real client and real amounts keeps the tool focused on what you will use, instead of a generic template you have to adapt later.</blockquote>
<h2>Step One: List Everything One Invoice Needs</h2>
<p>Start by writing down every piece of information a single invoice must show. This is the whole design of your tool, and doing it first means Claude builds the right thing the first time. A standard invoice needs your name or business and contact details, the client's name and details, an invoice number, the date and a due date, a list of line items with a description and amount for each, a subtotal, any tax, and the final total. Add your payment terms and how you want to be paid.</p>
<p>Write this as a plain list, in your own words. You are not writing code; you are naming the fields. If your work has its own quirks, a deposit line, an hourly rate times hours, a discount, add those now. The clearer this list is, the less back and forth you will have later. Think of it as the blueprint the rest of the build follows.</p>
<ul><li>Your name or business, plus contact details.</li><li>The client's name and details.</li><li>An invoice number, the date, and a due date.</li><li>Line items, each with a description and an amount.</li><li>Subtotal, any tax, and the final total.</li><li>Payment terms and how you want to be paid.</li></ul>
<h2>Step Two: Describe the Invoice Generator to Claude</h2>
<p>Next, hand your list to Claude Code and ask it to build the generator. Open the Claude desktop app, paste in your field list, and say you want a simple invoice generator that takes those details and produces a clean invoice. Ask Claude to add up the line items into a subtotal and total for you, since the math is exactly the kind of thing you want the tool to handle rather than doing it by hand. Claude writes the files and shows you how to run it.</p>
<p>Then look at the first invoice it produces and compare it to your list. Is every field there? Do the totals add up correctly? If a piece is missing or the layout is off, describe the problem in plain words and Claude adjusts it. This is a conversation, not a one-shot command. A few rounds of small fixes is how you get from a rough first draft to an invoice you are happy to put your name on.</p>
<blockquote><strong>NOTE:</strong> Ask Claude to make the totals calculate automatically. A generator that adds up the line items, applies tax, and produces the final total is what turns this from a fancy template into a tool that removes real work and prevents math mistakes on every invoice.</blockquote>
<h2>Step Three: Make It Reusable So Every Invoice Takes Seconds</h2>
<p>Now make it reusable, because the whole point is the second invoice, not the first. Ask Claude Code to set things up so producing a new invoice means changing only what actually changes: the client, the line items, and the date. Everything that stays the same, your details, your payment terms, the layout, should already be in place. That way next month's invoice is a few quick edits instead of starting over.</p>
<p>Ask Claude to handle invoice numbers so each one is unique, since duplicate or skipped numbers cause confusion with clients and in your own records. You can have it increase the number automatically or simply prompt you for the next one. Keeping every invoice you generate in one folder means you always have a record of what you billed and when, which you will be glad of at tax time.</p>
<ul><li>A new invoice should only need the client, the items, and the date changed.</li><li>Your fixed details and layout stay in place between invoices.</li><li>Let Claude keep invoice numbers unique so records stay clean.</li><li>Save every generated invoice in one folder as your billing record.</li></ul>
<h2>Step Four: Export to PDF and Send It</h2>
<p>Finally, export the invoice to a PDF and send it. A PDF is the format clients expect: it looks the same on every device, cannot be edited by accident, and reads as professional. Ask Claude Code to have your generator save each finished invoice as a PDF file. Open it, read it once end to end as if you were the client receiving it, and check the name, the numbers, and the due date before it goes out.</p>
<p>That is the full Invoice Blueprint: list what one invoice needs, describe it to Claude, make it reusable, and export to a PDF you can send. You started with a blank page and a monthly chore, and you finished with a tool that turns your details into a clean invoice in seconds. When yours is working, come share it in the Claude Code Club community and tell us the one field you were glad you added. Someone billing their first client will build a better tool because you did. ⚡</p>
<ul><li>Have Claude save each finished invoice as a PDF.</li><li>Read the invoice once as if you were the client.</li><li>Check the client name, the amounts, and the due date before sending.</li><li>Keep the PDF in your billing folder alongside the record.</li></ul>
<h2>FAQ</h2>
<p><strong>What is the Invoice Blueprint?</strong></p><p>The Invoice Blueprint is a four-step Claude Code Club method for building an invoice generator: list everything one invoice needs, describe it to Claude, make it reusable so each new invoice takes seconds, then export to a PDF and send it. It is designed so a beginner can go from a blank page to a working billing tool in an afternoon.</p>
<p><strong>Do I need to know how to code to build an invoice generator with Claude Code?</strong></p><p>No. You decide what your invoice should say and look like, and Claude Code writes the tool and explains how it works. Your job is to list the fields, describe the invoice, check the result against your list, and send the finished PDF.</p>
<p><strong>Why build an invoice generator instead of using a free template?</strong></p><p>A template is a blank page you fill in by hand every time, and it is easy to make a math error or reuse an invoice number. A generator you build adds up the totals for you, keeps invoice numbers unique, and turns next month's invoice into a few quick edits. You build it once and reuse it for every client.</p>
<p><strong>Can Claude Code make the invoice a PDF?</strong></p><p>Yes. Ask Claude Code to have your generator save each finished invoice as a PDF file. A PDF looks the same on every device, cannot be edited by accident, and is the format clients expect, which is why it reads as professional.</p>
<p><strong>How do I keep invoice numbers from repeating?</strong></p><p>Ask Claude Code to handle the numbering when it builds the generator. It can increase the invoice number automatically for each new one or prompt you for the next number. Unique numbers keep your records clean and prevent confusion with clients about which invoice is which.</p>
<p><strong>Where do the finished invoices get saved?</strong></p><p>Wherever you tell Claude to put them, and a good habit is one folder for all of them. Keeping every generated invoice in a single folder gives you a complete record of what you billed and when, which makes tax time and any client questions far easier to handle.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Handle a Client Who Won't Pay: the Calm Collection Method</title>
      <link>https://www.claudecodeclub.ai/blog/how-to-handle-a-client-who-wont-pay</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/how-to-handle-a-client-who-wont-pay</guid>
      <pubDate>Mon, 06 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Agency</category>
      <category>Clients</category>
      <category>Pricing</category>
      <description><![CDATA[A client who won't pay is a process problem, not a personal one. Use the Calm Collection method to get paid without burning the relationship or your own peace of mind.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>To handle a client who won't pay, use the Calm Collection: send a plain reminder, escalate in writing with the facts, offer a clear way to pay, then hold a firm line you decided in advance.</li><li>Most late payments are disorganization, not refusal, so start warm and stay calm; the calm operator gets paid faster than the angry one.</li><li>The real fix is prevention: deposits, milestone billing, and clear terms mean you rarely reach the hard steps at all.</li></ul>
<h2>How to handle a client who won't pay</h2>
<p>You handle a client who won't pay by treating it as a process, not a personal insult. Send a plain, friendly reminder first, escalate in writing with the facts if that goes unanswered, offer a clear way to settle the bill, and hold a firm line you decided on before the money was ever late. That sequence is the Calm Collection, and it gets you paid far more often than anger does, because most unpaid invoices are the result of disorganization, not a client deciding to cheat you.</p>
<p>I spent fifteen years shipping inside teams at Apple, PlayStation and Schwab before running my own engagements, and the pattern held everywhere: the calm operator gets paid faster than the angry one. When you stay measured, you make it easy for a busy or embarrassed client to fix the problem and keep working with you. When you come in hot, you give them a reason to go quiet. Your goal is the money, and sometimes the relationship, not the last word.</p>
<ol><li>Send a plain, friendly reminder that assumes it was an oversight.</li><li>Escalate in writing with the facts: invoice, amount, dates, and terms.</li><li>Offer a clear, easy way to pay, including a plan if needed.</li><li>Hold the firm line you set in advance, and know when to stop working.</li></ol>
<h2>Start With a Plain, Friendly Reminder</h2>
<p>Begin by assuming the best, because you are usually right. The single most common reason an invoice goes unpaid is that it got buried, forwarded to the wrong person, or simply forgotten in a busy inbox. A short, warm reminder solves the large majority of late payments on its own. Send a brief note that says the invoice may have slipped through, includes the invoice number and amount, and asks if they need anything from you to process it.</p>
<p>Keep the tone light and give them an easy out. A line like wanting to make sure it did not get lost lets a client fix the problem without losing face, and people move faster when they are not defensive. Attach the invoice again so it is one click away. You are not being weak by staying friendly here; you are being effective, because a reminder that is easy to say yes to is a reminder that gets paid.</p>
<blockquote><strong>TIP:</strong> Send the first reminder the day after the invoice is due, not a week later. A prompt, calm nudge signals that you track your invoices closely, which quietly encourages clients to keep you near the top of their pay pile.</blockquote>
<h2>Escalate in Writing With the Facts</h2>
<p>If the friendly reminder goes unanswered, escalate by putting the facts in writing. This is a firmer, still professional message that lays out the record plainly: the invoice number, the amount owed, the original due date, how many days it is now overdue, and the payment terms you both agreed to. You are not angry and you are not threatening; you are documenting. Written facts change the conversation from a favor you are asking for into an obligation you are confirming.</p>
<p>State clearly what you would like to happen and by when, such as payment within a specific number of days. If your agreement included a late fee, this is where you reference it as a matter of terms, not punishment. Keep everything to email or another written channel from this point on, so there is a clear trail. That record protects you and, just as often, prompts a client who was stalling to finally act.</p>
<ul><li>Restate the invoice number, amount, due date, and days overdue.</li><li>Reference the payment terms you both agreed to.</li><li>Say exactly what you want and by when.</li><li>Keep it in writing so there is a clear, calm record.</li></ul>
<h2>Offer a Clear Way to Pay</h2>
<p>Then remove every obstacle between the client and paying you. Sometimes the delay is not refusal but friction or genuine cash-flow trouble, and your job is to make settling the bill the easiest thing they can do today. Re-send the invoice with a working payment link or clear instructions, and confirm you have the right billing contact. A surprising number of stuck invoices move the moment the person who can pay actually has the invoice in front of them.</p>
<p>If a client signals they cannot pay it all at once, offer a short payment plan rather than a standoff. Half now and half in two weeks recovers most of your money and keeps goodwill intact, which beats a long silence while you wait for the full amount. A plan is a tool, not a defeat. You decide whether to offer one based on the client's history and how they are communicating with you.</p>
<blockquote><strong>NOTE:</strong> A client who talks to you and proposes a plan is very different from one who goes silent. Reward communication with flexibility, and reserve your firmest steps for the clients who simply stop responding.</blockquote>
<h2>Hold a Firm Line, and Prevent It Next Time</h2>
<p>Finally, hold the line you set in advance. Decide before any invoice is late what you will do when reminders and offers run out: pause active work until the outstanding balance is cleared, send a final notice with a clear deadline, and know the point at which you stop and pursue the debt through other means. Pausing work is your strongest and most reasonable lever, because continuing to deliver for a client who will not pay only deepens your loss.</p>
<p>The deeper fix is to make all of this rare. Take a deposit before you start, bill in milestones rather than one payment at the end, and put your terms and late fees in the agreement everyone signs. When money arrives in stages tied to progress, a single late payment is a small, contained problem instead of your entire fee at risk. That is the Calm Collection working before there is anything to collect.</p>
<p>If you are staring at an overdue invoice right now, bring it to the Claude Code Club community and tell us where the client went quiet. We have all been here, and the group will help you find the calm, effective next message instead of the angry one you might regret. Getting paid is a skill, and it is one you can build. ⚡</p>
<h2>FAQ</h2>
<p><strong>What is the Calm Collection method?</strong></p><p>The Calm Collection is a four-step Claude Code Club method for handling a client who won't pay: send a plain friendly reminder, escalate in writing with the facts, offer a clear way to pay, then hold a firm line you set in advance. It is built to get you paid without burning the relationship, because most late payments are disorganization rather than refusal.</p>
<p><strong>What should I do first when a client won't pay?</strong></p><p>Send a short, friendly reminder that assumes the invoice was simply overlooked. Include the invoice number and amount, attach the invoice again, and ask if they need anything to process it. Most late payments are an oversight, and a warm nudge sent the day after the due date resolves the majority of them on its own.</p>
<p><strong>How do I ask for payment without sounding rude?</strong></p><p>Lead with the assumption that it was an accident and keep the facts plain. A message that says you want to make sure the invoice did not get lost lets the client fix it without feeling attacked. Stay calm and specific rather than emotional; the measured operator gets paid faster than the angry one.</p>
<p><strong>Should I offer a payment plan to a late client?</strong></p><p>Often yes, if the client is communicating and signals genuine cash-flow trouble. A short plan such as half now and half in two weeks recovers most of your money and keeps goodwill, which beats a long silence waiting for the full amount. Reserve your firmest steps for clients who stop responding entirely.</p>
<p><strong>When should I stop working for a client who hasn't paid?</strong></p><p>Decide this before any invoice is late. A reasonable line is to pause active work once an invoice is significantly overdue and your reminders have gone unanswered, then send a final notice with a clear deadline. Continuing to deliver for a client who will not pay only increases what you stand to lose.</p>
<p><strong>How do I prevent unpaid invoices in the first place?</strong></p><p>Take a deposit before you start, bill in milestones tied to progress instead of one payment at the end, and put your payment terms and any late fees in the agreement both sides sign. When money arrives in stages, a single late payment is a small, contained problem rather than your entire fee at risk.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Build a Web Scraper With Claude Code: the Polite Scrape Method</title>
      <link>https://www.claudecodeclub.ai/blog/build-a-web-scraper-with-claude-code</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/build-a-web-scraper-with-claude-code</guid>
      <pubDate>Sun, 05 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Building</category>
      <category>Automation</category>
      <description><![CDATA[You can build a web scraper with Claude Code even if you have never written a line of code. Follow the Polite Scrape method to pull the data you need from a page, safely and within the rules.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>You can build a web scraper with Claude Code in an afternoon using the Polite Scrape method.</li><li>Pick one page and the exact data you want, check the site's rules, let Claude write the scraper, then run it slowly and save the data somewhere useful.</li><li>Only collect public data, respect the site's robots.txt and terms of use, and never hammer a server with fast repeated requests.</li></ul>
<h2>How to Build a Web Scraper With Claude Code</h2>
<p>To build a web scraper with Claude Code, follow the Polite Scrape, our four-step method at Claude Code Club for pulling data off a web page without writing code yourself. In one breath: pick one page and the exact data you want, check the site's rules, let Claude write the scraper, then run it slowly and save the data. A web scraper is simply a small program that reads a page and copies out the pieces you care about, and Claude Code writes that program for you inside the Claude desktop app.</p>
<p>Your job is to decide what data you want and where it lives. Claude handles the code. The one habit that separates a scraper you can be proud of from one that gets you blocked is politeness: only take public data, follow the site's stated rules, and go slowly. Get that right and scraping becomes a calm, repeatable tool instead of a risky hack.</p>
<ol><li>Pick one page and write down the exact data you want.</li><li>Check the site's rules so you scrape within them.</li><li>Let Claude write the scraper that reads the page and pulls the data.</li><li>Run it slowly and save the data somewhere you can use it.</li></ol>
<blockquote><strong>WARNING:</strong> Scraping has rules, and they matter. Only collect data that is public, read the site's robots.txt file and terms of use before you start, and never pull data that sits behind a login or copy personal information. When a site offers an official API, prefer it over scraping. Claude Code can read a site's robots.txt for you and tell you what it allows.</blockquote>
<h2>Step One: Pick One Page and the Exact Data You Want</h2>
<p>Start by picking one page and naming the exact data you want from it. One page, one short list of fields: the product titles and prices on a single category page, the job titles and locations on one listings page, or the headlines on one news section. A scraper with a narrow, named target is a scraper you can finish and trust. If you cannot say in a sentence what data you want and which page it is on, you are not ready to hand it to Claude yet.</p>
<p>You can always widen the net later. The point of the first build is to get one page scraped cleanly, from request to saved data, so you learn the whole path. A tiny scraper that reliably pulls five fields from one page teaches you far more than an ambitious crawler that never quite runs. Choose the smallest useful version of what you need.</p>
<blockquote><strong>TIP:</strong> Write your target as: from this one page, get these exact fields. That single sentence is what you hand to Claude, and it keeps the whole build focused on data you actually need.</blockquote>
<h2>Step Two: Check the Site's Rules Before You Scrape</h2>
<p>Before you pull anything, check the site's rules. Most sites publish a file called robots.txt at their main address that says which parts automated tools may read, and their terms of use spell out what is allowed. Ask Claude Code to fetch and explain both for the site you have in mind. This step takes two minutes and it is the difference between responsible scraping and getting your access blocked.</p>
<p>The rule of thumb is simple: collect only public data, take only what you need, and never overload the server. If a page requires a login, if the terms forbid automated access, or if the data is personal information about individuals, stop and find another way. An official API, when the site offers one, is almost always the better and more stable route.</p>
<ul><li>Ask Claude Code to read the site's robots.txt and summarize what it permits.</li><li>Skim the terms of use for any rule against automated access.</li><li>Confirm the data is public and not behind a login.</li><li>Prefer an official API if the site provides one.</li></ul>
<blockquote><strong>WARNING:</strong> If the rules are unclear or the data looks personal or sensitive, do not scrape it. The few minutes you save are never worth a blocked address or a complaint. When in doubt, ask the site owner for permission.</blockquote>
<h2>Step Three: Let Claude Write the Scraper</h2>
<p>Next, let Claude write the scraper. Tell Claude Code the page address, the exact fields you want, and that you have checked the site's rules. Ask it to write a scraper that reads that page and pulls those fields, and to explain how each piece works. Claude creates the files and walks you through running it. You do not write any of this code yourself; you describe the goal and Claude builds the tool.</p>
<p>Test it on that one page first. Run it, look at what it pulled, and compare it to the page with your own eyes. If a field is missing or wrong, describe the problem to Claude in plain words and it adjusts the scraper. Web pages are messy, so a little back and forth is normal. Keep refining until the data it returns matches what you see on the page.</p>
<ol><li>Give Claude the page address, the exact fields, and confirmation you checked the rules.</li><li>Ask Claude to write the scraper and explain how it works.</li><li>Run it on the single page and inspect the data it returns.</li><li>Describe any missing or wrong field and let Claude refine it.</li></ol>
<h2>Step Four: Run It Politely and Save the Data</h2>
<p>Finally, run it politely and save the data. Running politely means adding a short pause between requests so you never flood the server with rapid hits, the way a careful human would browse rather than a machine racing through pages. Ask Claude Code to add a delay between requests and to stop if the site returns an error. This keeps you welcome on the site and keeps your scraper from being blocked.</p>
<p>Then save the data somewhere you can actually use it, such as a spreadsheet file. Ask Claude to write the results to a CSV file, which opens in any spreadsheet app, so your scrape becomes a table you can sort and filter. That is the full Polite Scrape: pick one page and the exact data, check the rules, let Claude write the scraper, and run it slowly while saving the data. You started with a page and ended with a clean table of the data you needed.</p>
<ul><li>Ask Claude to add a pause between requests so you scrape at a human pace.</li><li>Have the scraper stop if the site returns an error or a block.</li><li>Save the results to a CSV file that opens in any spreadsheet app.</li><li>Check the saved table against the page one more time before you trust it.</li></ul>
<p>When your scraper works, come share what you built in the Claude Code Club community and tell us the one page and the fields you pulled. Someone will want to gather the same kind of data, and your afternoon becomes their starting point. If you get stuck on rules or on a stubborn page, ask in the community and we will help you sort it out. ⚡</p>
<h2>FAQ</h2>
<p><strong>What is the Polite Scrape method?</strong></p><p>The Polite Scrape is a four-step Claude Code Club method for building a web scraper: pick one page and the exact data you want, check the site's rules, let Claude write the scraper, then run it slowly and save the data. It is designed so a beginner can go from a page to a clean table of data in an afternoon, without breaking any rules.</p>
<p><strong>Do I need to know how to code to build a web scraper with Claude Code?</strong></p><p>No. You decide which page to scrape and which fields you want, and Claude Code writes the scraper and explains how it works. Your job is to name the target, check the site's rules, test the result against the page, and save the data.</p>
<p><strong>Is web scraping legal?</strong></p><p>Scraping public data is generally acceptable, but it depends on the site and what you collect. Always read the site's robots.txt file and terms of use first, only take public data, and never pull information behind a login or personal information about individuals. When a site offers an official API, use it instead. If the rules are unclear, ask the site owner or do not scrape.</p>
<p><strong>What is robots.txt and why should I check it?</strong></p><p>robots.txt is a file most sites publish that tells automated tools which parts of the site they may read. Checking it before you scrape is how you stay within the site's stated rules. Ask Claude Code to fetch and explain a site's robots.txt so you know what is allowed before you build anything.</p>
<p><strong>How do I scrape without getting blocked?</strong></p><p>Scrape politely. Add a short pause between requests so you browse at a human pace rather than flooding the server, take only the data you need, and stop if the site returns an error. Ask Claude Code to build in a delay and an error check. Respecting the site this way is what keeps your access working.</p>
<p><strong>Where does the scraped data go?</strong></p><p>Wherever you tell Claude to put it. A common choice is a CSV file, which opens in any spreadsheet app, so your scrape becomes a table you can sort and filter. Ask Claude Code to save the results to a CSV file and to check the table against the page before you rely on it.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Raise Your Rates Without Losing Clients: the Value-First Raise</title>
      <link>https://www.claudecodeclub.ai/blog/how-to-raise-your-rates-without-losing-clients</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/how-to-raise-your-rates-without-losing-clients</guid>
      <pubDate>Sun, 05 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Agency</category>
      <category>Pricing</category>
      <category>Clients</category>
      <description><![CDATA[You can raise your rates without losing clients if you earn the raise first, give notice early, and anchor the new price to outcomes. This is the Value-First Raise I use.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>You can raise your rates without losing clients by using the Value-First Raise: earn the raise, give early written notice, anchor to outcomes, and choose who to grandfather.</li><li>The clients worth keeping stay when the raise is tied to visible value and delivered with respect, not sprung on them.</li><li>Losing a client or two to a fair raise is often a sign you priced correctly, not a failure.</li></ul>
<h2>How to raise your rates without losing clients</h2>
<p>You raise your rates without losing clients by earning the raise before you ask for it, giving early notice in writing, anchoring the new price to outcomes rather than hours, and deciding in advance who you will grandfather and who you will let go. Do those four things and most good clients stay, because the raise arrives as a fair reflection of value rather than a surprise bill. The rate itself is rarely what loses a client. How you raise it is.</p>
<p>I spent fifteen years shipping inside teams at Apple, PlayStation and Schwab before running my own engagements, and the pattern held everywhere: people accept a higher price when they can see what it buys and they are treated with respect on the way there. A raise handled well can actually deepen a client relationship, because it forces both sides to name the value clearly.</p>
<ol><li>Earn the raise before you ask for it, with a visible new result or expanded scope.</li><li>Give notice early and in writing, calmly and with a clear date.</li><li>Anchor the new price to outcomes, not to the hours you spend.</li><li>Decide who you will grandfather and who you will let go.</li></ol>
<blockquote><strong>TIP:</strong> Before you raise anyone's rate, write one sentence for each client naming the value they get from you now. If you cannot fill that sentence, earn the raise first. If you can, you already have your case.</blockquote>
<h2>Move One: Earn the Raise Before You Ask for It</h2>
<p>The strongest raise follows a visible new result. Before you send a new number, make sure the client can point to something that got better: a workflow you automated with Claude Code, hours you saved their team, revenue you helped move, or scope you have quietly grown into. A raise that lands right after a clear win reads as fair. A raise that lands out of nowhere reads as a grab, even when your work has been excellent all along.</p>
<p>If you cannot name a recent result, create one before you raise the rate. Ship an improvement, take something off their plate, or expand what you handle. This is the difference between asking for more money and being paid for more value. The first invites pushback. The second is simply catching your price up to your work.</p>
<blockquote><strong>NOTE:</strong> Earning the raise is not a delay tactic. It is the whole case. When the value is obvious, the conversation about price becomes short and easy for both of you.</blockquote>
<h2>Move Two: Give Notice Early and in Writing</h2>
<p>Give clients real notice, in writing, well before the new rate takes effect. A calm message that says your rate is changing on a specific date, a month or two out, respects the client and gives them time to plan. Surprising someone with a higher invoice is how you lose them, not because of the number but because of the way it arrived. Early written notice turns a raise from an ambush into a normal business update.</p>
<p>Keep the message short, warm, and free of apology. State the new rate, the date it starts, and a line on the value you continue to deliver. You are not asking permission; you are informing a partner of a fair change. The confidence in that tone matters as much as the notice period, because clients take their cue from how you carry the conversation.</p>
<blockquote><strong>TIP:</strong> Never bury a rate change in a busy email or a verbal aside. Send it as its own clear message with the new number and the start date, so there is no ambiguity later.</blockquote>
<h2>Move Three: Anchor the New Price to Outcomes, Not Hours</h2>
<p>Tie the new price to what the work is worth, not to the time it takes. When you price by the hour, every raise looks like you slowing down or charging more for the same thing, and clients naturally push back. When you price by the outcome you deliver, a higher number is a story about a bigger result. The same raise feels expensive framed as hours and reasonable framed as value.</p>
<p>This is doubly true for AI work, where Claude Code lets you deliver in hours what once took days. If you bill purely by time, your own efficiency quietly caps your income and confuses clients when your rate rises. Anchor to the result instead, and speed becomes a reason your work is worth more, not less. Talk about what the client gets, and let the price follow the value.</p>
<blockquote><strong>WARNING:</strong> If your pricing is built entirely on hours, a rate rise will always feel like a penalty to the client. Move the conversation to outcomes before you move the number, or the raise will be a fight every time.</blockquote>
<h2>Move Four: Decide Who to Grandfather and Who to Let Go</h2>
<p>Decide in advance which clients you will hold at their old rate for a while and which you are willing to lose. Grandfathering a long, loyal client for a set period is a goodwill move that keeps a valuable relationship warm. It is a choice you make on purpose, with an end date, not a discount you drift into forever. Naming who gets it and for how long keeps the gesture from quietly eating your raise.</p>
<p>Accept that a fair raise may cost you a client or two, and that this is often a good sign. The clients who leave over a reasonable increase are usually your lowest-value, highest-effort accounts, and their departure frees room for better-fit work at your new rate. Losing no one to a raise sometimes means you did not raise enough. A clean, respectful goodbye is part of pricing well, not a failure of it.</p>
<blockquote><strong>NOTE:</strong> Before you send the new rates, sort your clients into hold, raise, and willing-to-lose. Deciding this ahead of time keeps emotion out of the moment a client pushes back.</blockquote>
<h2>Make the Value-First Raise your own</h2>
<p>The Value-First Raise is a starting point, not a script. Your clients, your market, and your nerve will shape how far and how fast you push each rate. But if you never raise a rate without first earning it, giving early written notice, anchoring to outcomes, and deciding who to grandfather, you will keep the clients worth keeping and part cleanly with the ones you should. That is how a raise strengthens a business instead of shaking it.</p>
<p>Pricing is the skill agency owners refine over years of small, nervous conversations. If you are about to raise your rates and want a second read on the wording or the timing, bring it to the Claude Code Club community and compare notes with people who have sent the same message and kept their best clients.</p>
<h2>FAQ</h2>
<p><strong>What is the Value-First Raise?</strong></p><p>The Value-First Raise is a CCC method for raising your rates without losing clients. It has four moves: earn the raise with a visible new result before you ask, give early notice in writing, anchor the new price to outcomes rather than hours, and decide in advance which clients you will grandfather and which you are willing to lose.</p>
<p><strong>How much notice should I give before raising a client's rate?</strong></p><p>Give real notice in writing, typically a month or two before the new rate takes effect. Early written notice respects the client and lets them plan, which is what keeps a raise from feeling like an ambush. The exact period depends on your engagement, but the rule is simple: never let a higher invoice be the first a client hears of it.</p>
<p><strong>What if a client pushes back on the higher rate?</strong></p><p>Point to the value. If you earned the raise with a visible result and anchored the price to outcomes rather than hours, the case makes itself. Stay calm, restate the new rate and the value behind it, and avoid apologizing. If a client still refuses a fair increase, they may be a low-value account you can let go without harm.</p>
<p><strong>Should I grandfather my existing clients at their old rate?</strong></p><p>Sometimes, and on purpose. Holding a long, loyal client at their old rate for a set period is a goodwill move, but give it an end date so it does not become a permanent discount. Decide in advance who gets grandfathered and for how long, so the gesture does not quietly cancel out your raise.</p>
<p><strong>Is it bad to lose a client when I raise my rates?</strong></p><p>Usually not. A fair raise that costs you a client or two is often a sign you priced correctly, because the ones who leave over a reasonable increase tend to be your lowest-value, highest-effort accounts. Their departure frees room for better-fit work at your new rate. Losing no one at all can mean you did not raise enough.</p>
<p><strong>Why anchor pricing to outcomes instead of hours?</strong></p><p>Because a raise framed as hours looks like you charging more for the same time, while a raise framed as outcomes tells a story about a bigger result. This matters most in AI work, where Claude Code lets you deliver quickly. If you bill purely by time, your efficiency caps your income; anchoring to outcomes lets speed make your work worth more.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Build a Telegram Bot With Claude Code in an Afternoon: The Bot in an Afternoon</title>
      <link>https://www.claudecodeclub.ai/blog/build-a-telegram-bot-with-claude-code</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/build-a-telegram-bot-with-claude-code</guid>
      <pubDate>Sat, 04 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Building</category>
      <category>Automation</category>
      <description><![CDATA[You can build a Telegram bot with Claude Code in a single afternoon. Follow the Bot in an Afternoon method to go from idea to a running bot, safely and step by step.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>You can build a Telegram bot with Claude Code in an afternoon using the Bot in an Afternoon method.</li><li>Decide the one thing the bot does, get a bot token, let Claude write the handler, run it locally to test, and deploy it so it stays on.</li><li>Keep your bot token private and never paste secrets into any public place.</li></ul>
<h2>How to Build a Telegram Bot With Claude Code in an Afternoon</h2>
<p>To build a Telegram bot with Claude Code in an afternoon, follow the Bot in an Afternoon method, our five-step approach at Claude Code Club for going from an idea to a running bot without prior experience. In one breath: decide the one thing the bot does, get a bot token, let Claude write the handler, run it locally to test, and deploy it so it stays on. A single afternoon is genuinely enough.</p>
<p>A Telegram bot is just a small program that listens for messages and replies. You send it a message, it reads it, it responds. The code that does the reading and replying is called the handler, and Claude Code writes it for you. Your part is to decide what the bot should do and to test it. Everything technical, Claude handles inside the Claude desktop app.</p>
<ol><li>Decide the one thing the bot does.</li><li>Get a bot token so Telegram knows your bot is real.</li><li>Let Claude write the handler that reads messages and replies.</li><li>Run it locally to test that it responds the way you want.</li><li>Deploy it so it stays on even when your computer is off.</li></ol>
<blockquote><strong>WARNING:</strong> Your bot token is a secret, like a password for your bot. Never paste it into a public chat, a public repository, or anywhere others can see it. Anyone with your token can control your bot. Keep it private.</blockquote>
<h2>Step One: Decide the One Thing the Bot Does</h2>
<p>Start by deciding the one thing your bot does. One job, said in a sentence: send me the weather every morning, reply with a random quote when I say quote, or forward every message to a group. A bot with one clear job is a bot you can finish in an afternoon. If your idea needs the word and, you are describing two bots. Pick the one that matters most and build that first.</p>
<p>You can always add more later. The point of the afternoon is to get one working bot end to end, from idea to running, so you learn the whole path. A tiny bot that reliably does one thing teaches you far more than an ambitious bot that never quite runs. Choose the smallest useful version of your idea.</p>
<blockquote><strong>TIP:</strong> Write your bot's job as: when I send X, the bot does Y. That single sentence is exactly what you will hand to Claude, and it keeps the whole build focused.</blockquote>
<h2>Step Two: Get a Bot Token</h2>
<p>Then get a bot token. Telegram has a built-in way to create a new bot inside the app itself: you message its official bot-creation assistant, give your bot a name, and it hands you a token. That token is a long string of letters and numbers that proves your bot is really yours. Copy it somewhere private. Ask Claude Code to walk you through the exact steps if you get stuck.</p>
<p>Treat the token like the key to your bot, because that is exactly what it is. Store it somewhere only you can see, such as a private notes file or a password manager. You will hand it to your project in a safe way in a later step, so for now the only job is to keep it out of any place that other people can read.</p>
<ul><li>Create the bot inside Telegram using its official bot-creation assistant.</li><li>Give your bot a name and receive your token.</li><li>Copy the token somewhere private, never in a public place.</li><li>Do not paste the token into any public chat or repository.</li></ul>
<blockquote><strong>TIP:</strong> Ask Claude Code to store your token in an environment file rather than pasting it directly into the code. That keeps the secret separate from the code, so you never accidentally share it when you share your project.</blockquote>
<h2>Step Three and Four: Let Claude Write the Handler, Then Run It Locally</h2>
<p>Next, let Claude write the handler. The handler is the code that listens for messages and decides how to reply, and it is the heart of your bot. Tell Claude Code your bot's one job and that you have a token, and ask it to write the handler and set up the project. Claude creates the files and explains how the pieces fit together. You do not need to write any of this code yourself.</p>
<p>Then run it locally to test. Running locally means the bot runs on your own computer for now, so you can message it and see if it replies correctly. Ask Claude Code to start the bot and tell you exactly what to do. Open Telegram, message your bot, and watch it respond. If the reply is wrong, describe the problem to Claude and it adjusts the handler. Test until it behaves.</p>
<ol><li>Give Claude your bot's one job and confirm your token is stored privately.</li><li>Ask Claude to write the handler and set up the project.</li><li>Run the bot locally with Claude's guidance.</li><li>Message your bot in Telegram and check its replies.</li><li>Describe any wrong behavior to Claude and refine the handler.</li></ol>
<blockquote><strong>WARNING:</strong> While testing, keep any secrets like your token out of screenshots and out of anything you share publicly. If you ever think a token leaked, ask Telegram's bot assistant to issue a new one and update it in your project.</blockquote>
<h2>Step Five: Deploy It So It Stays On</h2>
<p>Finally, deploy it so it stays on. When your bot runs locally, it only works while your computer is on and awake. Deploying means putting it somewhere that runs around the clock, so your bot is always ready to reply. Ask Claude Code to recommend a simple hosting option for a small bot and to walk you through putting it there. Keep your token in the private settings of that host, never in the code.</p>
<p>Once deployed, message your bot again to confirm it still works from its new home. Now you can close your laptop and the bot keeps running. That is the full Bot in an Afternoon: decide the one thing, get a token, let Claude write the handler, run it locally, and deploy it. You started the afternoon with an idea and ended it with a working bot.</p>
<ul><li>Ask Claude to recommend a simple hosting option for a small bot.</li><li>Store your token in the host's private settings, not in the code.</li><li>Deploy the bot with Claude's step-by-step guidance.</li><li>Message the bot again to confirm it runs from its new home.</li></ul>
<p>When your bot is live, come share it in the Claude Code Club community and tell us the one job it does. Someone will want to build the same thing, and your afternoon becomes their starting point. If you hit a wall on tokens or deployment, ask in the community and we will get you unstuck. ⚡</p>
<h2>FAQ</h2>
<p><strong>What is the Bot in an Afternoon method?</strong></p><p>The Bot in an Afternoon is a five-step Claude Code Club method for building a Telegram bot: decide the one thing the bot does, get a bot token, let Claude write the handler, run it locally to test, and deploy it so it stays on. It is designed so a beginner can go from idea to a running bot in a single afternoon.</p>
<p><strong>Do I need coding experience to build a Telegram bot with Claude Code?</strong></p><p>No. You decide what the bot does and Claude Code writes the handler and sets up the project for you. Your job is to describe the one job, test the bot in Telegram, and keep your token private.</p>
<p><strong>What is a bot token and where do I get one?</strong></p><p>A bot token is a long string that proves a bot belongs to you, and it works like a password for your bot. You get one inside Telegram by messaging its official bot-creation assistant, naming your bot, and receiving the token. Store it somewhere private and never share it.</p>
<p><strong>How do I keep my bot token safe?</strong></p><p>Never paste your token into a public chat, a public repository, or anything others can see, because anyone with it can control your bot. Ask Claude Code to store it in an environment file separate from the code, and keep it out of screenshots. If it ever leaks, issue a new token from Telegram's bot assistant.</p>
<p><strong>What does it mean to run the bot locally?</strong></p><p>Running locally means the bot runs on your own computer while you test it, so you can message it and confirm it replies correctly. It only works while your computer is on. Once it behaves the way you want, you deploy it so it runs around the clock.</p>
<p><strong>Why do I need to deploy the bot?</strong></p><p>A bot running locally stops the moment your computer sleeps or shuts down. Deploying it means putting it on a host that runs continuously, so your bot is always ready to reply. Ask Claude Code to recommend a simple hosting option and to store your token in the host's private settings.</p>]]></content:encoded>
    </item>
    <item>
      <title>What to Put in an AI Project Contract: a Six-Clause Baseline</title>
      <link>https://www.claudecodeclub.ai/blog/what-to-put-in-an-ai-project-contract</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/what-to-put-in-an-ai-project-contract</guid>
      <pubDate>Sat, 04 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Agency</category>
      <category>Contracts</category>
      <category>Clients</category>
      <description><![CDATA[A clear AI project contract protects both sides and prevents most client disputes before they start. These are the six clauses I never ship a project without.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>A good AI project contract rests on six clauses that cover scope, money, ownership, data, changes, and exit.</li><li>The ownership and data clauses are the ones people forget and the ones that cause the worst disputes.</li><li>This is general guidance and not legal advice. Have a qualified professional review your contract.</li></ul>
<h2>What to put in an AI project contract: the six-clause baseline</h2>
<p>An AI project contract does not need to be long, but it does need to cover six things clearly: scope and deliverables, payment, who owns the code and the model outputs, data handling and confidentiality, how revisions and changes are handled, and how either side can end the engagement. Get those six right and you prevent the large majority of client disputes before they can start. Most contract pain does not come from a missing clause about something exotic. It comes from a fuzzy clause about something basic.</p>
<p>I have spent fifteen years shipping inside teams at Apple, PlayStation and Schwab, and I learned that the contract is not there for the good projects. It is there for the day something goes wrong, and on that day a clear document is worth more than a good relationship.</p>
<blockquote><strong>WARNING:</strong> This article is general guidance, not legal advice. It reflects what tends to go wrong on AI builds, but every situation and jurisdiction differs. Have a qualified legal professional review any contract before you sign it.</blockquote>
<h2>The Six-Clause Baseline: the clauses every AI build needs</h2>
<p>The Six-Clause Baseline is our CCC starting point for an AI project contract. It is not an exhaustive legal template. It is the six clauses that, in practice, cause the most trouble when they are vague or missing. Cover these clearly and you have removed most of the risk.</p>
<ol><li>Scope and deliverables. Spell out exactly what you are building and, just as importantly, what you are not. A named list of deliverables and a short list of exclusions is what you point to when a request drifts.</li><li>Payment schedule and milestones. State the total, the schedule, and what triggers each payment. Tie payments to milestones so you are never far ahead on work and behind on cash. Include your terms for late payment.</li><li>Who owns the code and the model outputs. Say plainly who owns what, and when ownership transfers. AI builds add a wrinkle: outputs, prompts, and any custom tooling all need an owner named. Often ownership transfers on final payment.</li><li>Data handling and confidentiality. Set out whose data is involved, how it is stored and used, what stays confidential, and what happens to the data when the project ends. This clause protects both sides and is easy to forget.</li><li>Revisions and change requests. Define how many revisions are included, and state that new requests are handled as priced changes. This is your Change Line written into the contract so scope creep has a home.</li><li>How either side can end it. Describe how the client or you can end the engagement, what notice is required, and how work done up to that point is paid for. A clean exit clause turns a bad breakup into an orderly one.</li></ol>
<blockquote><strong>TIP:</strong> Write the exclusions list with as much care as the deliverables list. What the contract says you are not doing is what protects your scope when the client asks for more.</blockquote>
<h2>The two clauses people get wrong on AI builds</h2>
<p>Two of the six clauses cause more grief on AI projects than the rest combined: ownership and data. On ownership, the trouble is that AI builds have more moving parts than a normal project. There is the code, but there are also the prompts, the configuration, any custom tooling around the Claude Code workflow, and the outputs the system produces. Each needs an owner named. Silence here is how two parties end up both believing they own the same thing.</p>
<p>On data, the trouble is that AI work almost always touches the client's information, and clients care deeply about where it goes. Be explicit about how their data is handled, that it stays confidential, and that it is not retained or reused beyond the project. Getting this clause right is not just legal hygiene. It is a trust signal that wins you the work in the first place.</p>
<blockquote><strong>WARNING:</strong> Never leave ownership of prompts, tooling, and outputs unstated on an AI build. The ambiguity that feels harmless while everyone is happy becomes the whole dispute the moment they are not.</blockquote>
<h2>Tying payment to milestones so you never carry the risk</h2>
<p>The payment clause is where you protect your cash. Tie each payment to a milestone the client can see and sign off on, so you are always paid for a stage before you begin the next one. A deposit before you start is standard and reasonable. It signals commitment on both sides.</p>
<p>Structure the schedule so you are never far ahead on delivery and far behind on payment. That gap is where agencies get burned, because leverage disappears the moment the work is done and the invoice is still open. Milestones keep you and the client moving in step.</p>
<p>Use directional terms if you must, but be concrete about the structure. A deposit, staged payments against milestones, and a final payment on delivery is a pattern that protects both sides and is easy for a client to accept.</p>
<h2>Make the baseline yours, then compare notes</h2>
<p>The Six-Clause Baseline is a starting point, not a finish line. Your specific work, clients, and jurisdiction will add clauses. But if you never ship an AI project without these six covered clearly, you have removed most of the ways a project turns into a dispute. Once more, and it matters: this is general guidance, not legal advice, so have a qualified professional review your contract.</p>
<p>Contract language is one of those things every agency owner refines over years of small painful lessons. If you are drafting or tightening your own AI project contract, bring the tricky clauses to the CCC community and compare notes on how others have handled ownership, data, and exit without scaring the client off.</p>
<h2>FAQ</h2>
<p><strong>What is the Six-Clause Baseline?</strong></p><p>The Six-Clause Baseline is a CCC starting point for an AI project contract. It covers scope and deliverables, payment and milestones, ownership of code and model outputs, data handling and confidentiality, revisions and change requests, and how either side can end the engagement.</p>
<p><strong>Do I really need a contract for a small AI project?</strong></p><p>Yes. The contract is not there for the projects that go well, it is there for the day something goes wrong. Even a short document covering the six baseline clauses prevents most disputes and costs far less than one bad breakup with a client.</p>
<p><strong>Who should own the code and model outputs?</strong></p><p>Whoever you and the client agree on, stated plainly in the contract. On AI builds you must name an owner for the code, the prompts, any custom tooling, and the outputs, since each is a separate thing. Ownership often transfers to the client on final payment.</p>
<p><strong>What should the data clause cover?</strong></p><p>It should state whose data is involved, how it is stored and used, what stays confidential, and what happens to the data when the project ends. Being explicit that client data is not retained or reused beyond the project protects both sides and builds trust.</p>
<p><strong>How should I structure payment in an AI project contract?</strong></p><p>Tie payments to milestones the client can sign off on, usually with a deposit before you start and a final payment on delivery. Structure it so you are never far ahead on work and behind on cash, because that gap is where agencies get burned.</p>
<p><strong>Is this contract guidance legal advice?</strong></p><p>No. This is general guidance based on what tends to go wrong on AI builds, not legal advice. Every situation and jurisdiction is different, so you should have a qualified legal professional review any contract before you rely on it or sign it.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Use Claude Fable 5: Setup, First Run, and What to Build First</title>
      <link>https://www.claudecodeclub.ai/blog/how-to-use-claude-fable-5</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/how-to-use-claude-fable-5</guid>
      <pubDate>Sat, 04 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Getting Started</category>
      <category>Building</category>
      <description><![CDATA[Claude Fable 5 is the most capable public Claude model, and you can start using it in the desktop app today. Here is how to turn it on, pick a job worth its power, and get a real result on your first run without wasting the included allowance.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Fable 5 came back globally on July 1, 2026 and is included on Pro, Max and Team for up to 50% of your weekly usage through July 7. The fastest way in is the Claude desktop app: open the model picker and select Fable 5. No terminal required.</li><li>Do not waste it on a one-line fix. Fable is a Mythos-class model built for long, multi-step work, so give it a job with real depth: a full feature, a migration, a build that would take a weaker model many tries.</li><li>Your result is only as good as your brief. State the goal, the constraints, and what done looks like, let it run through its checkpoints, and verify before you ship. That loop is the whole skill.</li></ul>
<h2>How to Use Claude Fable 5: The Fastest Path In</h2>
<p>Here is the whole thing in one breath: open the Claude desktop app, pick Fable 5 in the model selector, give it a job big enough to be worth it, write a clear brief, and verify the result before you trust it. If you have used any Claude model before, you already know how to use Fable 5. The only new part is choosing the right work to point it at.</p>
<p>Fable 5 is the most capable public Claude model right now, a Mythos-class tier that sits above the Opus class. It returned globally on July 1, 2026 and grounds everything below in what Anthropic published (https://www.anthropic.com/news/claude-fable-5-mythos-5). This guide is the desktop-app-first path, so you never have to touch a command line to get real work out of it.</p>
<h2>Where to Find Fable 5 and How to Turn It On</h2>
<p>You do not install anything. In the Claude desktop app, open the model picker at the top of a chat and select Claude Fable 5. On Pro, Max and Team it is included for up to 50% of your weekly usage through July 7, 2026, after which it moves to usage credits. That included window is the cheapest time to run your heaviest jobs, so start now rather than saving it for later.</p>
<blockquote><strong>TIP:</strong> If Fable 5 is missing from your picker, update the app and check your plan. On flagged or sensitive requests Fable quietly falls back to Opus 4.8, so if a reply feels a step down mid-task, that is expected behavior, not a bug.</blockquote>
<h2>The Fable First Run</h2>
<p>Five steps take you from picking the model to a result you can trust. I call it the Fable First Run. Follow it in order the first few times and it becomes automatic.</p>
<ol><li>Turn it on. Select Fable 5 in the desktop app model picker. Confirm you are on a plan that includes it, and remember the July 7 included window if cost matters to you.</li><li>Give it a job worth its power. Fable earns its tier on long, multi-step work. Skip the one-line fix and hand it something with depth: build a full feature, rebuild an app from a screenshot, refactor a messy module end to end.</li><li>Write a brief, not a wish. State the goal in one line, the constraints it must respect, and what done actually looks like. A vague ask makes even the best model wander, so spend two minutes here to save an hour later.</li><li>Let it run and watch the checkpoints. Fable works autonomously for a long stretch. Do not hover over every token, but do read its plan and step in at the natural checkpoints if it drifts from the brief.</li><li>Verify before you ship. Run the code, click the feature, read the output. Fable is strong, but you own what goes live. Confirm it matches your definition of done before you call it finished.</li></ol>
<h2>What to Build First</h2>
<p>The best first run is a real thing you actually want, not a toy. A few jobs that show what Fable does without needing you to know how to code:</p>
<ul><li>A small internal tool you keep wishing existed: a tracker, a dashboard, a script that automates a chore you do every week.</li><li>A rebuild of something that already works, from a screenshot or a description, so you can judge Fable against a result you know.</li><li>A multi-step job you have been avoiding because it is tedious: cleaning up a codebase, migrating a file format, wiring two tools together.</li></ul>
<p>Each of these is long enough to show Fable's reasoning and concrete enough that you can tell instantly whether it worked.</p>
<h2>The Mistake That Wastes Your First Run</h2>
<p>The single most common first-run mistake is treating Fable like a search box: a one-line question, a quick fix, a task any model handles. You pay a premium tier for headroom you never touch, and you walk away thinking it is just another model. It is not. Point it at the hard, long job you would normally dread, and the difference is obvious.</p>
<blockquote><strong>WARNING:</strong> Do not run sensitive or client data through it until you have checked the current data-retention policy. Getting comfortable with the model on your own projects first is the safe way to learn what it can do.</blockquote>
<p>That is the entire onboarding: turn it on, give it a real job, brief it well, verify the result. Do that once and you will stop wondering how to use Fable 5 and start wondering what to build with it next. Show me your first run in the CCC community. ⚡</p>
<h2>FAQ</h2>
<p><strong>How do I access Claude Fable 5?</strong></p><p>Open the Claude desktop app, start a chat, and select Claude Fable 5 in the model picker at the top. There is nothing to install and you do not need the terminal. If it is not listed, update the app and confirm your plan includes it.</p>
<p><strong>Is Claude Fable 5 free to use?</strong></p><p>It is included on Pro, Max and Team plans for up to 50% of your weekly usage through July 7, 2026, after which it runs on usage credits until Anthropic can fold it back into the standard plans. On the API it is $10 per million input tokens and $50 per million output, roughly double the Opus class.</p>
<p><strong>Do I need to know how to code to use Fable 5?</strong></p><p>No. The desktop app lets you describe what you want in plain language and Fable does the building. Knowing what a good result looks like matters more than knowing syntax, which is why the brief and the verify step are the two habits worth learning first.</p>
<p><strong>What should I build on my first Fable 5 run?</strong></p><p>Pick a real, multi-step job rather than a one-line fix: a small internal tool, a rebuild of something that already works, or a tedious migration you have been avoiding. Fable earns its tier on long, complex work, so give it depth on the first run and the difference from a weaker model is obvious.</p>
<p><strong>Should beginners use Fable 5 or Opus 4.8?</strong></p><p>Use Fable 5 when the job is long and complex and Opus 4.8 for quick everyday work. Fable is the more capable model but costs more, so matching the model to the size of the job is the habit that keeps your usage efficient from day one.</p>
<p><strong>What happens to Fable 5 access after July 7, 2026?</strong></p><p>The included allowance on Pro, Max and Team ends and Fable moves to usage credits until Anthropic has capacity to make it a standard plan model again. Run your biggest, highest-value jobs inside the included window while it lasts.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Migrate a Legacy Codebase with Claude Fable 5 Without Breaking It</title>
      <link>https://www.claudecodeclub.ai/blog/migrate-legacy-codebase-with-claude-fable-5</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/migrate-legacy-codebase-with-claude-fable-5</guid>
      <pubDate>Sat, 04 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Claude Code</category>
      <category>Agency</category>
      <category>Workflows</category>
      <description><![CDATA[Claude Fable 5 ran a two-month codebase migration in a single day in testing. That does not mean you point it at your legacy system and hope. Here is the four-phase method for migrating real code with Fable, keeping behavior intact and your client's trust with it.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Fable 5 can hold an entire legacy codebase in context and rewrite it across millions of tokens, which is why it ran a two-month migration in a day in early testing. The model is not the risk. Skipping the groundwork is.</li><li>Migrate in a ladder, not a leap: map the old system first, pin its current behavior as tests, move it in slices, and prove parity before you cut over. Each rung is a checkpoint you can roll back to.</li><li>For client work, read the 30-day data-retention policy before you run their code through it, keep the old system running until parity is proven, and price the migration on the outcome, not the hours Fable saves you.</li></ul>
<h2>How to Migrate a Legacy Codebase with Claude Fable 5: The Short Version</h2>
<p>Do not point Fable 5 at a legacy system and say migrate this. Even the most capable model will happily rewrite code whose behavior it never fully understood, and you will not find out until production does. The method that works is boring and safe: map the old system, capture what it does today, move it one slice at a time, and prove the new version behaves identically before you switch anyone over.</p>
<p>I have spent fifteen years shipping inside teams at Apple, PlayStation and Schwab, and every painful migration I have seen failed the same way: someone trusted the rewrite before they proved it. Fable 5 makes the rewriting almost free, which means the proving is now the whole job. This is grounded in what Fable actually does well (https://www.anthropic.com/news/claude-fable-5-mythos-5), applied through an agency lens.</p>
<h2>Why Fable 5 Changes Legacy Migration</h2>
<p>Legacy migration used to be gated by human bandwidth: someone had to hold the whole old system in their head while rebuilding it. Fable 5 removes that ceiling. It holds an entire codebase in context, stays sharp across millions of tokens with file-based memory, and works autonomously for long stretches, which is how it ran a two-month migration in a day in Anthropic's testing. The rebuild is no longer the bottleneck.</p>
<blockquote><strong>TIP:</strong> The shift to internalize: the expensive part of a migration is no longer writing the new code, it is guaranteeing the new code does exactly what the old code did. Spend your effort there, because that is now the only part a model cannot fully own for you.</blockquote>
<h2>The Migration Ladder</h2>
<p>Four phases, each a checkpoint you can stop and roll back to. I call it the Migration Ladder. Climb it in order and a migration that used to be a leap of faith becomes a series of small, verifiable steps.</p>
<ol><li>Map before you move. Have Fable read the entire legacy codebase and produce a written map: what each module does, how data flows, where the dependencies and dead ends are. You are not changing anything yet, you are giving the model, and yourself, an accurate picture of what actually exists.</li><li>Pin the current behavior. Before you touch the code, capture what it does today as tests, golden outputs, or recorded examples. This is your parity contract. Without it you have no objective way to prove the new system matches the old, and matching is the entire point of a migration.</li><li>Migrate in slices. Move one module or one boundary at a time, not the whole system in a single pass. After each slice, run it against the behavior you pinned in phase two. A slice that passes is a rung you can stand on, a slice that fails is contained instead of hidden inside a giant rewrite.</li><li>Prove parity, then cut over. Only switch traffic to the new system once every slice matches the pinned behavior and the two systems produce the same results on real inputs. Keep the old system running in parallel until that proof holds, so cutover is a decision, not a gamble.</li></ol>
<h2>The Client-Work Caveats Nobody Mentions</h2>
<p>A migration on your own project is one thing. A migration on a client's revenue-critical system is another, and the model's speed can tempt you to skip the guardrails that protect the relationship. Three that are not optional:</p>
<ul><li>Check data retention before you upload their code. Fable's current policy retains data for 30 days, so read it and clear it with your client before any proprietary codebase goes through the model. This is a contract and trust issue, not just a technical one.</li><li>Never cut over without a rollback. Keep the legacy system running until parity is proven on real traffic. If the new system misbehaves, switching back must be a one-step decision, not a weekend of firefighting.</li><li>Price on the outcome, not Fable's hours. If Fable turns a two-month migration into a two-day one, billing hourly quietly hands all of that value to the client. Price the migration on what a safe, proven cutover is worth to their business, and let the speed be your margin.</li></ul>
<h2>How to Know the Migration Actually Worked</h2>
<p>The finish line is not when the new code exists, it is when the new code behaves identically to the old on every input that matters. If your phase-two behavior contract passes across every slice and the parallel run agrees on real traffic, you are done. If you cannot point to that evidence, you are not finished, no matter how clean the new codebase looks.</p>
<blockquote><strong>WARNING:</strong> The trap is confidence. Fable produces code so polished it looks finished long before it is proven. Resist the urge to cut over on how the rewrite reads. Cut over on whether it matches, measured against the behavior you captured up front.</blockquote>
<p>Migrate this way and Fable 5 turns your riskiest kind of project into your most repeatable one: map, pin, slice, prove. That is a productized offer an agency can sell with a straight face, because the client is buying a proven cutover, not a hopeful one. If you run a migration on the ladder, tell me how it went in the CCC community.</p>
<h2>FAQ</h2>
<p><strong>Can Claude Fable 5 really migrate a whole legacy codebase?</strong></p><p>Yes. Fable 5 holds an entire codebase in context and stays sharp across millions of tokens with file-based memory, which is how it ran a two-month migration in a day in Anthropic's testing. The limiting factor is no longer the rewrite, it is proving the rewritten system behaves identically to the original, which is work you still own.</p>
<p><strong>What is the safest way to migrate code with Fable 5?</strong></p><p>Use a phased approach: map the legacy system first, capture its current behavior as a test or parity contract, migrate one slice at a time, and prove parity before cutting over. Each phase is a checkpoint you can roll back to, which turns a risky single rewrite into a series of verifiable steps.</p>
<p><strong>Should I let Fable 5 rewrite the entire system in one pass?</strong></p><p>No. A single giant rewrite hides failures until cutover. Move one module or boundary at a time and validate each slice against the behavior you captured up front. A slice that fails is contained, whereas a failure buried in a full rewrite can take longer to find than the migration saved.</p>
<p><strong>Is it safe to run a client's codebase through Fable 5?</strong></p><p>Only after you check the data-retention policy and clear it with the client. Fable's current policy retains data for 30 days, so any proprietary code going through the model is a contract and trust matter, not just a technical one. Confirm it in writing before you upload anything sensitive.</p>
<p><strong>How should an agency price a Fable 5 migration?</strong></p><p>Price on the outcome, not the hours. If Fable compresses a two-month migration into two days, hourly billing hands all that value to the client. Charge for a safe, proven cutover based on what it is worth to the client's business, and let the model's speed be your margin.</p>
<p><strong>How do I know a Fable 5 migration is actually finished?</strong></p><p>When the new system matches the old on every input that matters. If the behavior contract you captured before migrating passes across every slice and a parallel run agrees on real traffic, it is done. If you cannot point to that evidence, it is not finished, however polished the new code looks.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Reduce Your Claude Fable 5 Costs Without Losing Its Power</title>
      <link>https://www.claudecodeclub.ai/blog/how-to-reduce-claude-fable-5-costs</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/how-to-reduce-claude-fable-5-costs</guid>
      <pubDate>Fri, 03 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Building</category>
      <category>Workflows</category>
      <description><![CDATA[Claude Fable 5 costs roughly double the Opus class per token, and in long agent runs those tokens compound fast. The fix is not avoiding Fable, it is using it deliberately. Here are five levers that cut the bill hard while keeping the results that made you reach for it.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Claude Fable 5 runs $10 per million input tokens and $50 per million output, roughly double the Opus class. On a single prompt that is nothing. In a long agent loop, where tokens compound turn after turn, it adds up fast.</li><li>The biggest lever is not a setting, it is a habit: only run Fable 5 on the reasoning-heavy steps, and hand the routine steps to a cheaper model. After that, prompt caching, lean context, and a conservative effort budget do most of the remaining work.</li><li>Cached context is billed at about a tenth of the normal input rate, so reused system prompts and reference docs cost roughly $1 per million tokens instead of $10. And while it is included on your plan through July 7, run your biggest jobs now.</li></ul>
<h2>How to Reduce Your Claude Fable 5 Costs: Start Here</h2>
<p>Here is the short version before the detail: the way to spend less on Claude Fable 5 is not to use it less, it is to use it precisely. Fable 5 is the most capable model you can reach for, and its lead is largest on long, complex work. That same long work is where a careless setup quietly triples your bill. So the goal is to keep Fable on the parts of a job that actually need a Mythos-class model and strip cost out of everything around it.</p>
<p>I run Fable 5 across real client builds, and the difference between a lean run and a wasteful one is not luck, it is a handful of deliberate choices. Below is the exact set I use, ordered by how much they save, grounded in how Anthropic prices and runs the model (https://www.anthropic.com/news/claude-fable-5-mythos-5).</p>
<h2>Why Fable 5 Costs What It Does</h2>
<p>On the API, Fable 5 is $10 per million input tokens and $50 per million output, roughly double the Opus class. That multiple is not the whole story though. The real cost driver is that Fable is built to work autonomously for longer, so an agent loop can run many turns, and every turn carries the full context forward. Double the per-token rate times a lot of tokens times a lot of turns is how a job you expected to cost cents ends up costing dollars.</p>
<blockquote><strong>TIP:</strong> The mental model that fixes this: you are not paying for a model, you are paying for tokens processed. Every lever below is really the same move, sending fewer expensive tokens through Fable without losing the reasoning you switched to it for.</blockquote>
<h2>The Fable Savings Stack</h2>
<p>Five levers, ordered by impact. I call this the Fable Savings Stack. Work down it in order and most builds land 50% or more cheaper with no drop in output quality.</p>
<ol><li>Match the model to the step. This is the big one. A complex workflow rarely needs Fable 5 for every step. Use Fable for the reasoning-heavy parts, the planning, the hard debugging, the synthesis, and hand the routine parts, formatting, extraction, boilerplate, to a cheaper model. Splitting a workflow this way is usually the single largest saving available.</li><li>Turn on prompt caching. If a large system prompt or reference document stays constant across many calls, cache it. Cached context is billed at about a tenth of the normal input rate, so reused context costs roughly $1 per million tokens instead of $10. Writing to the cache costs a little more than a normal read, so the win comes when you reuse the same context repeatedly, which is exactly what agent loops do.</li><li>Keep the context lean. In a long run, context balloons as you append tool results, intermediate outputs and history to every call, and you pay to process all of it every turn. Summarize intermediate results instead of pasting them in full, clear tool history once it is no longer relevant, and store anything the agent might need later in an external file it retrieves selectively.</li><li>Control the effort budget. Fable does internal reasoning before it answers, and that reasoning costs tokens. Start with a conservative effort or thinking budget and raise it only when you see errors that more reasoning would actually fix. Many tasks that feel hard perform just as well at a medium budget as a high one, so cranking it to maximum by default is money spent on thinking you do not need.</li><li>Use the included allowance, then batch. Through July 7, 2026 Fable 5 is included on Pro, Max and Team for up to 50% of your weekly usage. Run your biggest, most valuable jobs inside that window. After it moves to usage credits, batch non-urgent work rather than firing it off one expensive call at a time.</li></ol>
<h2>What NOT to Do to Save Money</h2>
<p>Saving money the wrong way costs more than it saves. Three traps to avoid:</p>
<ul><li>Do not downgrade your hardest step to a weaker model to save pennies. If a step genuinely needs Fable's reasoning, running it on a cheaper model produces a worse result you then pay again to fix. Model-mixing means matching the model to the step, not starving the important step.</li><li>Do not crank the effort budget just in case. Extra thinking on a task that does not need it is pure waste, you pay for computation that does not change the output. Raise the budget in response to real, repeated failures, not nerves.</li><li>Do not run Fable on routine work out of habit. Quick fixes, small features and formatting do not show off what Fable does, so you are paying a premium for headroom you never use. Keep that work on the Opus class.</li></ul>
<h2>The One Number to Watch</h2>
<p>Stop judging cost by the sticker rate and start judging it by cost-to-done, what the whole job cost you to finish, not what one call cost. Fable is more token-efficient than past models and finishes in fewer turns, so on a big job it can beat a cheaper model that grinds through more attempts. The sticker price is higher, the total can be lower.</p>
<blockquote><strong>TIP:</strong> Practical habit: profile one real run and see where the tokens actually go. It is almost always context that grew unchecked or an effort budget set too high, the two levers you can fix in minutes. Measure once, then set your defaults from what you learned.</blockquote>
<p>Do this and Fable 5 stops being the expensive model you ration and becomes the powerful model you can actually afford to run. Work down the stack, watch cost-to-done, and point the savings at more builds. Show me your before-and-after in the CCC community, I want to see how low you got it. ⚡</p>
<h2>FAQ</h2>
<p><strong>How much does Claude Fable 5 cost?</strong></p><p>On the API, Fable 5 is $10 per million input tokens and $50 per million output tokens, roughly double the Opus class. It is also included on Pro, Max and Team for up to 50% of your weekly usage limits through July 7, 2026, after which it moves to usage credits until Anthropic can make it a standard plan model again.</p>
<p><strong>What is the best way to reduce Fable 5 costs?</strong></p><p>Match the model to the step. Most complex workflows only need Fable 5 for the reasoning-heavy parts, so run those on Fable and hand routine steps like formatting and extraction to a cheaper model. That single change usually saves more than any other lever. After that, prompt caching, lean context, and a conservative effort budget do most of the rest.</p>
<p><strong>Does prompt caching actually lower Fable 5 costs?</strong></p><p>Yes, when you reuse context. Cached content is billed at about a tenth of the normal input rate, so a large system prompt or reference document that stays constant across many calls costs roughly $1 per million tokens on reads instead of $10. Writing to the cache costs slightly more than a normal read, so the savings show up when you reuse the same context repeatedly, which is exactly what long agent loops do.</p>
<p><strong>Should I lower the thinking or effort budget to save money?</strong></p><p>Start low and raise it only when needed. Fable's internal reasoning costs tokens, and many tasks perform just as well at a medium budget as a high one. Set a conservative default, watch for consistent failures that more reasoning would fix, and increase the budget only for those. Cranking it to maximum by default pays for thinking that does not change the result.</p>
<p><strong>Is it cheaper to just use Opus 4.8 instead of Fable 5?</strong></p><p>For routine work, yes, and you should. Opus 4.8 is the cheaper everyday driver and the gap on short simple prompts is small. But for long, complex jobs Fable is more token-efficient and finishes in fewer turns, so its cost-to-done can be lower even though its sticker rate is higher. The answer is not one model, it is the right model per step.</p>
<p><strong>When is Fable 5 included in my plan versus billed as credits?</strong></p><p>Since it returned on July 1, 2026, Fable 5 is included on Pro, Max and Team for up to 50% of your weekly usage limits through July 7, 2026. After that it runs on usage credits until Anthropic has the capacity to fold it back into the standard plans. The cheapest move is to run your biggest, highest-value jobs inside the included window.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Build Autonomous Agents with Claude Fable 5 That Actually Finish</title>
      <link>https://www.claudecodeclub.ai/blog/claude-fable-5-agents</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-fable-5-agents</guid>
      <pubDate>Fri, 03 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Claude Code</category>
      <category>Building</category>
      <category>Workflows</category>
      <description><![CDATA[Claude Fable 5 is built for long-horizon agents, the kind that plan, act, and keep going across millions of tokens. But the model is the easy part. Here is the contract every Fable 5 agent needs to actually finish the job instead of looping forever or quietly making things up.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Claude Fable 5 is the strongest model available for autonomous agents because it works independently for longer than anything before it and stays sharp across millions of tokens with file-based memory, which helped it about three times more than it did the previous Opus model.</li><li>The model is not what makes an agent fail. Vague task definitions do. Every Fable 5 agent needs a clear contract: a goal, the tools it can use, an explicit stopping condition, and a defined failure path so it escalates instead of guessing.</li><li>Give it a persistent memory, keep the context lean, mix in a cheaper model for routine steps to control cost, and design around the three classic failure modes: looping without finishing, fabricating when it cannot find information, and the safety fallback to Opus 4.8.</li></ul>
<h2>How to Build Autonomous Agents with Claude Fable 5: The Core Idea</h2>
<p>Straight up, the model is the easy part now. Claude Fable 5 is built to run an agent, not just answer a prompt. It works autonomously for longer than any model before it, and it holds context across millions of tokens. That is exactly what an agent needs: the ability to plan, act, check its own work, and keep going without losing the thread. The hard part, the part that decides whether your agent finishes or spins, is the instructions you give it.</p>
<p>I have spent fifteen years shipping inside teams at Apple, PlayStation and Schwab, and agents fail for the same reason projects fail: the brief was vague. A capable model with a fuzzy goal wanders. A capable model with a tight contract finishes. This post is about the contract, grounded in what Fable 5 actually does well (https://www.anthropic.com/news/claude-fable-5-mythos-5).</p>
<h2>Why Fable 5 Is Built for Agents</h2>
<p>Three properties make Fable 5 an agent engine rather than just a smarter chatbot, and they are the reasons to build on it:</p>
<ul><li>It sustains long, multi-step work. Fable's lead grows the longer and more complex the task is, which is the exact shape of an agentic job that searches, decides, calls tools, evaluates, and loops back. In early testing it ran a codebase-wide migration on a 50-million-line codebase in a single day, a job that would have taken a team over two months. That is the ceiling of what a well-built agent on this model can reach.</li><li>It remembers. With persistent file-based memory it stays coherent across millions of tokens, and memory improved its results about three times more than it did the previous Opus model. An agent that can write to and read from a memory file works a long job across many sessions without starting over each time.</li><li>It is efficient enough to be practical. Fable is more token-efficient than past models and finishes in fewer turns, which matters a lot when an agent makes many calls. Fewer turns is both faster and cheaper.</li></ul>
<h2>The Agent Contract</h2>
<p>Before you deploy any Fable 5 agent, write its contract. This is the CCC framework I use, four parts, and skipping any one of them is how agents go wrong. A capable model will fill gaps with reasonable-sounding assumptions, and those assumptions are rarely what you meant.</p>
<ol><li>The goal. State the final deliverable or end state in plain terms. Not do some research, but produce a competitive analysis of these five companies as a structured document. The agent needs to know what done looks like.</li><li>The tools. List what it has access to and which tool to use for what. Ambiguity here is where agents waste turns trying the wrong approach.</li><li>The stopping condition. Tell it exactly how it knows it is finished. When you have gathered at least five reliable sources and written a synthesis, output a completion marker and stop. Without this, a capable model keeps finding more work to do and never lands.</li><li>The failure path. Define what counts as failure and what to do about it. Instruct it to escalate or say it could not find something rather than continue confidently in the wrong direction. An agent that knows how to fail safely is worth more than one that never admits it is stuck.</li></ol>
<blockquote><strong>TIP:</strong> One more move that pays off every time: ask for structured output between steps. In an agent, the output of one step is the input to the next, and free-form text is where parsing errors creep in. Fable is good at holding a format reliably even in complex runs, so define a template or ask for JSON and the whole pipeline gets more dependable.</blockquote>
<h2>Give It a Memory, and Keep It Lean</h2>
<p>Fable's file-based memory is the feature that turns a long job from impossible into routine, but memory and context are not the same thing. Memory is what the agent chooses to keep. Context is everything it carries in every call, and you pay to process all of it every turn.</p>
<p>So give the agent a persistent memory file for the facts it will need later, and keep the live context lean. Summarize intermediate results instead of appending them in full, clear tool history once a step is done, and break a very long job into shorter sub-tasks with fresh context. This is the difference between an agent that stays sharp over a long run and one that slows down and drifts as its context bloats.</p>
<h2>Keep It From Burning Cash</h2>
<p>An agent makes many calls, so cost discipline matters more here than anywhere else. The same levers that make an agent lean also make it cheap:</p>
<ul><li>Mix models. Not every step needs Fable 5. Run the reasoning-heavy steps on Fable and hand routine steps like formatting or extraction to a cheaper model. This is usually the biggest single saving in an agent.</li><li>Cache the constant parts. If the agent reuses a large system prompt or reference document across calls, cache it. Reused context is billed at roughly a tenth of the normal input rate, and an agent loop reuses context constantly.</li><li>Set a conservative effort budget. Fable's internal reasoning costs tokens, so start the thinking budget low and raise it only for steps that genuinely need more depth.</li></ul>
<h2>The Failure Modes to Design Around</h2>
<p>Three things go wrong with agents on any capable model, and each has a fix you build in up front:</p>
<ul><li>It loops without finishing. Almost always a missing or fuzzy stopping condition. Fix it in the contract with explicit completion criteria the agent can check itself against.</li><li>It makes things up. When an agent cannot find what it needs through its tools, it can fill the gap with plausible fiction. Instruct it explicitly to prefer saying it could not find reliable information over inventing it, and add a verification step for high-stakes work.</li><li>It hands off to Opus 4.8 mid-run. When a request touches cybersecurity, biology and chemistry, or model distillation, Fable routes it to Opus 4.8 and tells you. Since the July redeploy that classifier is tighter, so benign coding can trip it. Design your agent to expect the handoff on security-adjacent steps rather than assume every step runs on full Fable.</li></ul>
<blockquote><strong>WARNING:</strong> For client work, know this before you deploy: every request on a Mythos-class model, Fable 5 included, is retained for 30 days on first- and third-party surfaces. Anthropic says it is not used to train models and is deleted after 30 days, but if your agent processes sensitive client data, clear the retention policy with the client first. That is a conversation to have before the agent runs, not after.</blockquote>
<p>Build the contract, give it a memory, keep it lean, and design around the failure modes, and Fable 5 will run jobs that used to need a person babysitting them. That is the whole promise of an agent, and this model is the first one strong enough to keep it. Tell me what you are having yours run in the comments.</p>
<h2>FAQ</h2>
<p><strong>Why is Claude Fable 5 good for building agents?</strong></p><p>Because it is built for long-horizon autonomous work. Fable 5 works independently for longer than any model before it, its lead grows on complex multi-step tasks, and it stays coherent across millions of tokens with persistent file-based memory, which helped it about three times more than it did the previous Opus model. Those are exactly the properties an agent needs to plan, act, and keep going.</p>
<p><strong>What makes a Fable 5 agent fail?</strong></p><p>Usually a vague task definition, not the model. A capable model fills gaps with reasonable assumptions that may not match your intent. Every agent needs a clear contract: a specific goal, the tools it can use, an explicit stopping condition, and a defined failure path so it escalates or admits it is stuck rather than continuing confidently in the wrong direction.</p>
<p><strong>How do I stop a Fable 5 agent from looping forever?</strong></p><p>Give it an explicit stopping condition it can check itself against. For example, tell it that when it has gathered at least five reliable sources and written a synthesis of a defined length, it should output a completion marker and stop. Agents loop when they do not know what done looks like, so defining completion in the contract fixes it.</p>
<p><strong>How do I control the cost of a Fable 5 agent?</strong></p><p>Mix models so only the reasoning-heavy steps run on Fable and routine steps use a cheaper model, cache any large context the agent reuses across calls so it is billed at roughly a tenth of the input rate, and set a conservative effort budget that you raise only for steps that need more depth. Agents make many calls, so these levers compound.</p>
<p><strong>Does Fable 5 have persistent memory for agents?</strong></p><p>Yes. Fable 5 supports persistent file-based memory, so an agent can write facts it will need later to a file and read them back across sessions, staying coherent across millions of tokens. Keep the live context separate and lean, summarizing intermediate results rather than carrying everything forward, since you pay to process the full context on every call.</p>
<p><strong>Is it safe to run client data through a Fable 5 agent?</strong></p><p>Check the retention policy first. Every request on a Mythos-class model, including Fable 5, is retained for 30 days on first- and third-party surfaces. Anthropic says it is not used to train models and is deleted after 30 days, but for sensitive client data that is a conversation to have with the client before the agent runs, not a detail to skip.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Fable 5 vs Opus 4.8: Which One Should You Actually Build With?</title>
      <link>https://www.claudecodeclub.ai/blog/claude-fable-5-vs-opus-4-8</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-fable-5-vs-opus-4-8</guid>
      <pubDate>Thu, 02 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Building</category>
      <category>Workflows</category>
      <description><![CDATA[Claude Fable 5 vs Opus 4.8 is not a close fight on paper, but it is the wrong question for most builds. Here is the honest split: what Fable's Mythos-class tier actually buys you, where Opus 4.8 is still the smarter call, and a simple two-question test for picking the right one every time.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Claude Fable 5 vs Opus 4.8 comes down to task shape, not raw power. Fable 5 is a Mythos-class model, a tier above the Opus class, and its lead grows the longer and more complex the job gets. On short, routine work the gap is small.</li><li>Pick Fable 5 for the long, gnarly, multi-step builds: big migrations, screenshot-to-app rebuilds, agents that hold context across millions of tokens. Pick Opus 4.8 for everyday coding, quick fixes, and anything where you want to keep token cost down. Fable runs $10 per million input and $50 per million output on the API, which is more than the Opus class.</li><li>The catch: Fable 5 is included on Pro, Max and Team for up to 50% of your weekly usage through July 7, 2026, then it moves to usage credits. Opus 4.8 stays your cheaper everyday driver either way, and it is also the model Fable quietly falls back to on flagged requests.</li></ul>
<h2>Claude Fable 5 vs Opus 4.8: The Short Answer</h2>
<p>Here is the answer before the argument: reach for Claude Fable 5 on your hardest, longest, most multi-step builds, and keep Claude Opus 4.8 as your everyday driver for routine coding and quick fixes. Fable 5 is a Mythos-class model, a tier above the Opus class, and the harder the task, the bigger its lead. On a short prompt you will barely feel the difference and you will pay more for it. On a two-week migration you will feel it a lot.</p>
<p>So this is not really a which-is-better question. Fable 5 is the more capable model, full stop. The real question is which one fits the job in front of you, because the most capable model is not automatically the right model for a five-minute task. Below is where each one wins, grounded in what Anthropic published about Fable 5 (https://www.anthropic.com/news/claude-fable-5-mythos-5), plus a two-question test so you stop guessing.</p>
<h2>What Separates a Mythos-Class Model From an Opus-Class One</h2>
<p>Opus 4.8 is an Opus-class model, the tier most of us have been building on. Fable 5 is the first Mythos-class model made safe for the public, and Mythos-class sits a step above Opus in raw capability. That is the whole story in one line: same family, one tier apart.</p>
<p>The gap shows up in a specific place. Fable 5 is built to work autonomously for longer than anything before it, so its advantage compounds across a long task instead of showing up in a single reply. On a quick lookup or a small function, Opus 4.8 gives you a near-identical result for less money. On a job that runs for hours across dozens of steps, Fable holds the thread where a lesser model drifts.</p>
<blockquote><strong>TIP:</strong> Quick gut check: if you could hand the task to a sharp junior and they would finish it in one sitting, Opus 4.8 is plenty. If it is the kind of task that needs a senior engineer to hold the whole system in their head for a day, that is Fable 5 territory.</blockquote>
<h2>Where Fable 5 Pulls Ahead of Opus 4.8</h2>
<p>Four places, each tied to something Fable actually does better, not vibes:</p>
<ul><li>Long migrations and refactors. In early testing Fable ran a codebase-wide migration on a 50-million-line codebase in a single day, work that would have taken a full team over two months by hand. This is the exact shape of task where the Mythos-class lead is largest.</li><li>Screenshot-to-app rebuilds. Fable 5 is the new state of the art at vision, so it can reconstruct working source code from screenshots alone. If your input is an image of a design or an old app, this is a real edge over the Opus class.</li><li>Long-running agents with memory. With persistent file-based memory Fable stays sharp across millions of tokens, and memory improved its results about three times more than it did for the previous Opus model. For an agent that works a job over many sessions, that is the difference between staying on track and losing the plot.</li><li>Fewer turns to done. Fable is more token-efficient than past models and finishes in fewer turns. On a big job, fewer turns can offset some of its higher per-token price.</li></ul>
<h2>Where Opus 4.8 Is Still the Right Call</h2>
<p>Do not switch everything. Opus 4.8 is the smarter pick more often than the hype suggests:</p>
<ul><li>Cost. Fable 5 runs $10 per million input tokens and $50 per million output on the API, which is more than the Opus class. For high-volume, routine work, Opus 4.8 keeps your bill down without a quality hit you would notice.</li><li>Routine day-to-day coding. Quick fixes, small features, tests, and boilerplate do not show off Fable's strengths. The gap on short simple prompts is small, so you are paying a premium for headroom you are not using.</li><li>It is already the fallback. When a Fable 5 request touches cybersecurity, biology and chemistry, or model distillation, it is quietly handled by Opus 4.8 anyway, and you are told when it happens. Since the July redeploy that classifier is tighter, so benign coding work hits the Opus 4.8 fallback a little more often. On a lot of security-adjacent tasks you are effectively running Opus 4.8 no matter which one you pick.</li></ul>
<p>Worth remembering: when Anthropic tested the vulnerability concern that got Fable suspended, weaker models including Opus 4.8 and GPT-5.5 could surface the very same issues. Opus 4.8 is not a toy. It is a strong model that happens to sit one tier down.</p>
<h2>The Fable Line: A Two-Question Test</h2>
<p>Here is the CCC rule I use to pick in ten seconds. I call it the Fable Line. Ask two questions, and if both are yes, you are above the line and it is a Fable 5 job. If either is no, stay on Opus 4.8.</p>
<ol><li>Is the task long and multi-step? Not a quick fix, but a migration, a rebuild, a long-running agent, or something that will run for hours across many turns.</li><li>Is the output worth premium tokens? A high-stakes build where a better result clearly pays for the extra cost, versus routine work where good-enough is genuinely enough.</li></ol>
<p>Two yeses, cross the Fable Line and run it on Fable 5 while it is still included in your plan. Anything below the line, keep it on Opus 4.8 and save the credits. That one test replaces the whole vs debate. Want to pressure-test it on a real build? Bring it to the CCC community and we will help you place it above or below the line. ⚡</p>
<h2>The Catches Before You Switch</h2>
<p>Two things to know before you move anything over. First, the clock. Fable 5 is included on Pro, Max and Team for up to 50% of your weekly usage limits through July 7, 2026. After that it runs on usage credits until Anthropic has capacity to fold it back into the plans. Opus 4.8 has no such cliff. So the cheapest possible move right now is to run your biggest above-the-line job on Fable before July 7 and leave everything else on Opus 4.8.</p>
<blockquote><strong>WARNING:</strong> Second, data retention. Every request on a Mythos-class model, Fable 5 included, is held for 30 days on first- and third-party surfaces. Anthropic says it will not be used to train models and is deleted after 30 days, but if you build with sensitive client or company data, read the policy before you route it through Fable. Opus-class traffic is not under that same Mythos-class retention rule.</blockquote>
<p>Net it out: Fable 5 for the long, hard, high-stakes builds, Opus 4.8 for everything else, and the Fable Line to tell them apart. Go run one real job through each this week and you will feel exactly where the boundary sits. Drop what you shipped in the comments. 👑</p>
<h2>FAQ</h2>
<p><strong>Is Claude Fable 5 better than Opus 4.8?</strong></p><p>In raw capability, yes. Fable 5 is a Mythos-class model, a tier above the Opus class, and its lead grows the longer and more complex the task is. But better does not mean it is the right pick for every job. On short, routine work the gap is small and Fable costs more per token, so Opus 4.8 is often the smarter choice for everyday coding.</p>
<p><strong>What is the price difference between Fable 5 and Opus 4.8?</strong></p><p>On the API, Claude Fable 5 is priced at $10 per million input tokens and $50 per million output tokens. That is more than the Opus class, which makes Opus 4.8 the cheaper option for high-volume, routine work. Fable is also currently included on Pro, Max and Team for up to 50% of weekly usage through July 7, 2026, after which it moves to usage credits.</p>
<p><strong>When should I use Fable 5 instead of Opus 4.8?</strong></p><p>Use the Fable Line: if the task is both long and multi-step, and the output is worth premium tokens, run it on Fable 5. That covers big migrations, screenshot-to-app rebuilds, and long-running agents with memory. If either answer is no, such as a quick fix or routine coding, stay on Opus 4.8 and save the cost.</p>
<p><strong>Why did Claude switch my task from Fable 5 to Opus 4.8?</strong></p><p>That is the safeguard working. Fable 5 routes requests that touch cybersecurity, biology and chemistry, or model distillation to Opus 4.8, and tells you when it does. Since the July 2026 redeploy the cyber classifier is tighter, so it catches benign coding requests somewhat more often than the under-5%-of-sessions rate seen at launch. If it fires on a harmless request, rephrase or split the task.</p>
<p><strong>Is Opus 4.8 still worth using now that Fable 5 is out?</strong></p><p>Yes. Opus 4.8 is a strong model that sits one tier below Fable, and it is the cheaper everyday driver for routine coding, quick fixes, and high-volume work. It is also the model Fable falls back to on flagged requests, so you are already relying on it more than you might think. Keep it as your default and reach for Fable only when a task clears the Fable Line.</p>
<p><strong>Do Fable 5 and Opus 4.8 have the same data retention rules?</strong></p><p>No. Fable 5 is a Mythos-class model, and all Mythos-class traffic is retained for 30 days on both first- and third-party surfaces. Anthropic says that data will not be used to train models and is deleted after 30 days. Opus-class traffic is not covered by that same Mythos-class retention rule, so if you handle sensitive data, factor that in when choosing between the two.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Fable 5 Review: Is the Mythos-Class Model Worth Switching To?</title>
      <link>https://www.claudecodeclub.ai/blog/claude-fable-5-review</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-fable-5-review</guid>
      <pubDate>Thu, 02 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Claude Code</category>
      <category>Building</category>
      <category>Workflows</category>
      <description><![CDATA[A hands-on Claude Fable 5 review after putting the first public Mythos-class model through real work. What genuinely impressed me, where it frustrated me, and a straight answer on whether it is worth switching to right now, or whether you should wait.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>This Claude Fable 5 review lands on a clear verdict: for long, complex, multi-step builds it is the most capable model you can get right now, and it is worth switching to for exactly those jobs. For routine day-to-day work, it is overkill and it costs more.</li><li>What impressed me: it ran a two-month codebase migration in a day in early testing, it rebuilds working apps from screenshots, and it stays sharp across millions of tokens with file-based memory. What frustrated me: since the July redeploy its safety classifier is more cautious and falls back to Opus 4.8 on some benign coding, it costs $10 per million input and $50 per million output, and the included plan allowance ends July 7, 2026.</li><li>Bottom line: switch your hardest, longest jobs to Fable 5 this week while it is included in your plan, keep everyday work where it is, and read the new 30-day data-retention policy before you run client data through it.</li></ul>
<h2>Claude Fable 5 Review: The Verdict First</h2>
<p>Straight up, here is my verdict so you do not have to read to the end for it: Claude Fable 5 is worth switching to, but only for the right jobs. It is the first public Mythos-class model, a tier above the Opus class, and on long, complex, multi-step work it is the most capable thing you can point at a codebase today. For quick fixes and routine coding it is more model than you need, and it costs more to run. So the honest answer to is it worth it is yes, for your hardest builds, and not really for your easy ones.</p>
<p>I have spent fifteen years shipping inside teams at Apple, PlayStation and Schwab, and I have learned to be suspicious of a launch that sounds too good. So this review is split down the middle: what genuinely impressed me, and what frustrated me. Everything here traces back to what Anthropic published (https://www.anthropic.com/news/claude-fable-5-mythos-5), plus real use since it returned globally on July 1.</p>
<h2>What Fable 5 Actually Is</h2>
<p>Fable 5 is the first Mythos-class model made safe for general use. Mythos-class is a new tier that sits a step above the Opus class in capability. It launched on June 9, was suspended on June 12 under a US export-control order Anthropic could not enforce in real time, and returned globally on July 1 once those controls were lifted. So the model you are testing today is the redeployed version, with a tighter safety classifier than the one at launch.</p>
<p>The one line that frames the whole review: the longer and more complex the task, the larger Fable 5's lead. This is not a model that is a little better at autocomplete. Its whole design is working autonomously for longer, which is why a review has to judge it on real, sustained work rather than one-off prompts.</p>
<h2>What Genuinely Impressed Me</h2>
<p>Three things stood out, and they are the reasons I would switch a hard job over today:</p>
<ul><li>The migration story is real. In early testing Fable ran a codebase-wide migration on a 50-million-line codebase in a single day, work that would have taken a full team over two months. That is not a benchmark, it is a job shape every team recognises, and it is the strongest case for the model.</li><li>Vision is a genuine step up. Fable 5 is the new state of the art at vision and can rebuild a web app's source code from screenshots alone. If you have ever been handed a design or an old app with no code, this changes what is possible in an afternoon.</li><li>Memory holds. With persistent file-based memory it stays sharp across millions of tokens, and memory helped it about three times more than it did the previous Opus model. On a long-running agent, that is the difference between finishing and drifting.</li></ul>
<blockquote><strong>TIP:</strong> It is also more token-efficient than past models and finishes in fewer turns. On a big job, that partly offsets the higher per-token price, so do not judge cost on the sticker rate alone. Judge it on cost-to-done.</blockquote>
<h2>Where It Frustrated Me</h2>
<p>A fair review names the rough edges, and there are three worth knowing before you commit:</p>
<ul><li>The fallback fires more than I would like. When a request touches cybersecurity, biology and chemistry, or model distillation, Fable quietly hands off to Opus 4.8 and tells you. At launch this fired in under 5% of sessions, but since the July redeploy the cyber classifier is tighter, so benign coding and debugging trips it more often. It is not broken, but it is the thing you will notice first.</li><li>It is not cheap. On the API it is $10 per million input tokens and $50 per million output. That is real money at volume, and it is why I would not move routine work over.</li><li>The included window is short. It is included on Pro, Max and Team for up to 50% of your weekly usage through July 7, 2026, then it moves to usage credits until Anthropic has capacity to make it standard again. If you want to trial it for free, that clock is ticking.</li></ul>
<blockquote><strong>WARNING:</strong> The one to take seriously: every request on a Mythos-class model, Fable 5 included, is retained for 30 days on first- and third-party surfaces. Anthropic says it will not be used to train models and is deleted after 30 days, but if you run client or company data through it, read the policy first. For agency work, this is a conversation to have with your client, not a detail to skip.</blockquote>
<h2>The Switch Test: Should You Move?</h2>
<p>Here is the CCC framework I use to decide whether any new model earns a switch. I call it the Switch Test, three checks. Pass all three and move the job over. Fail one and stay put for now.</p>
<ol><li>Is the task big enough to show the difference? Long, multi-step, sustained work, not a quick fix. Fable only pulls ahead when the job is large.</li><li>Is the result worth the premium? A high-stakes build where a better outcome clearly pays for the extra token cost.</li><li>Is the data safe to retain for 30 days? If it is sensitive client data and you have not cleared the retention policy, that is a stop until you have.</li></ol>
<p>Three yeses, switch it to Fable 5 and do it before July 7 while the allowance is included. Any no, keep that job where it is. This is how I am deciding across our own client work, one task at a time, not one big migration of everything.</p>
<h2>My Rating and Who It Is For</h2>
<p>My verdict: Fable 5 is the best model available for hard, long, high-value builds, and worth switching those over today. It is not the model for routine work, where the cost and the fallback friction outweigh a gap you will barely feel. That is not a knock. It is a specialist tool that is exceptional at the jobs it is built for.</p>
<p>Who should switch now: anyone sitting on a big migration, a screenshot-to-app rebuild, or a long-running agent, especially while it is included in your plan through July 7. Who should wait: if your work is mostly quick, routine, or cost-sensitive, trial Fable on one hard job, keep the rest where it is, and revisit once it settles into a standard plan model. Tried it yet? Tell me what you pointed it at in the comments, I read every one.</p>
<h2>FAQ</h2>
<p><strong>Is Claude Fable 5 worth switching to?</strong></p><p>For long, complex, multi-step builds, yes. Fable 5 is the first public Mythos-class model, a tier above the Opus class, and it is the most capable model for big migrations, screenshot-to-app rebuilds, and long-running agents. For routine day-to-day work it is overkill and costs more, so switch your hardest jobs and keep everyday work where it is.</p>
<p><strong>What is the biggest strength of Fable 5?</strong></p><p>Sustained, long-horizon work. Its lead grows the longer and more complex the task is. In early testing it ran a codebase-wide migration on a 50-million-line codebase in a single day, work that would have taken a team over two months. It is also the new state of the art at vision and gets a large boost from persistent file-based memory.</p>
<p><strong>What are the downsides of Fable 5?</strong></p><p>Three main ones. Its safety classifier is more cautious since the July 2026 redeploy, so it falls back to Opus 4.8 on some benign coding. It is priced at $10 per million input tokens and $50 per million output, which is real money at volume. And the included plan allowance ends July 7, 2026, after which it runs on usage credits.</p>
<p><strong>How much does Claude Fable 5 cost?</strong></p><p>On the API, Fable 5 is $10 per million input tokens and $50 per million output tokens, which is less than half what the earlier Mythos Preview cost. It is also included on Pro, Max and Team for up to 50% of your weekly usage limits through July 7, 2026, after which it moves to usage credits until Anthropic can make it a standard plan model again.</p>
<p><strong>Should agencies use Fable 5 on client work?</strong></p><p>Use it on the big, high-value builds where its lead is largest, but clear the data policy first. All Mythos-class traffic, including Fable 5, is retained for 30 days on first- and third-party surfaces. Anthropic says it is not used for training and is deleted after 30 days, but for sensitive client data that is a conversation to have with the client before you route their work through it.</p>
<p><strong>Is Fable 5 the same as Mythos 5?</strong></p><p>No. They are the same underlying capability, but Fable 5 has safety guardrails added so anyone can use it, while Mythos 5 has some guardrails removed and is restricted to vetted security and biology partners. Fable 5 is the version you can actually build with today.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Fable 5 Is Here: What It Means for Builders and How to Use It This Week</title>
      <link>https://www.claudecodeclub.ai/blog/claude-fable-5-what-it-means-for-builders</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-fable-5-what-it-means-for-builders</guid>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Building</category>
      <category>Workflows</category>
      <description><![CDATA[Anthropic shipped Claude Fable 5, pulled it three days later under a US government export-control order, and redeployed it globally on July 1. Here is what actually changed, why it vanished and came back, and how to put the most capable public Claude model to work on a real build right now.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Claude Fable 5 is the most capable model Anthropic has ever released to the public. It is a Mythos-class model, a tier that sits above the Opus class, made safe for general use with new safeguards.</li><li>It launched June 9, was suspended June 12 under a US export-control order, and returned globally on July 1. Right now it is included on Pro, Max and Team for up to 50% of your weekly usage limits through July 7, then runs on usage credits until capacity lets Anthropic fold it back into the plans. On the API it is claude-fable-5 at $10 per million input tokens and $50 per million output.</li><li>The bigger the task, the bigger its lead. Long refactors, app-from-a-screenshot rebuilds, and agents that hold context across millions of tokens are where it pulls away. Go ship one of those while it is included in your plan through July 7.</li></ul>
<h2>Claude Fable 5 Is Back After a Three-Week Detour</h2>
<p>Real talk: Claude Fable 5 is the biggest jump in raw building power we have had access to, and its rollout has been a rollercoaster. Anthropic shipped it on June 9, suspended it on June 12 when the US government slapped export controls on it, then redeployed it globally on July 1 once those controls were lifted. If you only take one thing from this post, take that it is back, it is the strongest model on the planet, and through July 7 it is included in your Pro, Max or Team plan for up to half your weekly usage. Build inside it.</p>
<p>It launched alongside its locked-down sibling, Claude Mythos 5. I read the launch announcement and the redeployment notice so you do not have to (https://www.anthropic.com/news/claude-fable-5-mythos-5 and https://www.anthropic.com/news/redeploying-fable-5), and below is the builder's version: what changed, why it vanished and came back, what it is actually good at, how to switch to it, and the two things that will trip you up.</p>
<h2>What Actually Changed</h2>
<p>Fable 5 is the first Mythos-class model made safe for everyone. Mythos-class is a new tier that sits a step above the Opus class in capability. The first one, Claude Mythos Preview, went out in April to a tiny group of security partners. Fable 5 is that same level of power with guardrails added so the rest of us can use it.</p>
<p>Here is the line that should make you sit up: the longer and more complex the task, the larger Fable 5's lead. This is not a model that is 5% better at autocomplete. It is a model built to work autonomously for longer than anything before it. During early testing Stripe ran a codebase-wide migration on a 50-million-line Ruby codebase in a single day, work that would have taken a full team over two months by hand. That is the headline, and it is not marketing, it is in the writeup.</p>
<blockquote><strong>TIP:</strong> Three concrete superpowers worth knowing: it is the new state of the art at vision, so it can rebuild a web app's source code from screenshots alone. It is more token-efficient than past models, finishing in fewer turns. And with persistent file-based memory it stays sharp across millions of tokens, which improved its results about three times more than it did for the previous Opus model.</blockquote>
<h2>Why It Vanished for Three Weeks, and What Changed When It Came Back</h2>
<p>Here is the short version, because it changes what you are using today. On June 12, three days after launch, the US government applied export controls to Fable 5 and Mythos 5 that required restricting them to US nationals. Anthropic had no way to verify nationality in real time, so it pulled both models for everyone rather than get it wrong. The trigger was a report that Fable's safeguards could be nudged into identifying software vulnerabilities, though Anthropic's own testing found weaker models like Claude Opus 4.8 and GPT-5.5 could surface the very same ones.</p>
<p>On June 30 the controls were lifted, and Fable 5 returned globally on July 1 across Claude.ai, the API, Claude Code and Cowork. It came back with a tighter safety classifier that blocks the reported technique in over 99% of cases. The practical cost to you as a builder: that classifier is more cautious on routine coding and debugging, so you will hit the Claude Opus 4.8 fallback a little more often than at launch. Worth knowing before you blame your own prompt.</p>
<h2>How to Switch to Fable 5 Today</h2>
<p>There is no migration and no new tool to learn. It is a model switch.</p>
<ol><li>In the Claude apps and in Claude Code, pick Fable 5 from the model selector. On Pro, Max and Team it is included for up to 50% of your weekly usage limits through July 7, 2026, at no extra cost.</li><li>Know the cliff: after July 7 it comes off that included allowance and runs on usage credits until Anthropic has the capacity to make it standard again. If your build matters, do it before the 7th or budget for credits.</li><li>On the API it is the model id claude-fable-5, priced at $10 per million input tokens and $50 per million output tokens, which is less than half what the Mythos Preview cost. API and consumption-based Enterprise have it fully available now with no window.</li><li>Point it at your hardest open task, not your easiest. The whole reason to reach for Fable 5 is the long, gnarly, multi-step job. Easy stuff does not show you the difference.</li></ol>
<h2>What to Build With It This Week</h2>
<p>Do not waste your included allowance on toy prompts. Here is where Fable 5 earns its keep, each one grounded in what it actually does well:</p>
<ul><li>The one-shot bigger app. Early testers report apps that took a hundred prompts a year ago now landing in roughly one. Describe the whole thing, not a piece, and let it run.</li><li>The screenshot rebuild. Have a design, a competitor's page, or an old app you only have images of? It can reconstruct working source from the screenshots. Point it at a screenshot and ask for the app.</li><li>The migration or big refactor you have been avoiding. This is the Stripe story at your scale. The job that felt like a two-week slog is the exact shape of task where Fable pulls away.</li><li>The agent with a memory. Give it a persistent notes file and let it work a long-running job across many sessions. Long-context plus file memory is the combination that jumped the most.</li></ul>
<p>My move this week: I am pointing it at the ugliest, most-postponed refactor in my own stack, the one I have rescheduled four times. If it really compresses a team-week into a day, that is the test that proves it, not another to-do app. ⚡</p>
<h2>The Two Things That Will Trip You Up</h2>
<p>First, the fallback. Fable 5 ships with safety classifiers, and when a request touches cybersecurity, biology and chemistry, or model distillation, the answer is quietly handled by Claude Opus 4.8 instead, and you are told when it happens. At launch this fired in under 5% of sessions. Since the July redeploy the cyber classifier is tighter, so it now flags benign coding and debugging work a little more often. Most of the time you are still getting full Fable. If you hit the fallback on a harmless request, rephrase or split the task.</p>
<blockquote><strong>WARNING:</strong> Second, data retention. Every request on a Mythos-class model, Fable 5 included, is now held for 30 days, on first- and third-party surfaces. Anthropic says it will not be used to train models and gets deleted after 30 days, but if you build with sensitive client or company data, read the policy before you paste it in. This is new, and it is the part people are arguing about.</blockquote>
<p>Neither of these should stop you. They should just stop you from being surprised. Know the fallback exists, know your data is held for a month, and go use the most capable model you have ever been handed. The window is short. Build something real with it. Drop what you shipped in the comments, I read them. 👑</p>
<h2>FAQ</h2>
<p><strong>What is Claude Fable 5 in plain terms?</strong></p><p>It is the most capable model Anthropic has released to the public, launched June 9, 2026. It belongs to a new Mythos-class tier that sits above the Opus class. Fable 5 is that frontier-level power with safety guardrails added so anyone can use it. Its locked-down twin, Mythos 5, is the same model with some guardrails removed and is restricted to vetted security and biology partners.</p>
<p><strong>Is Claude Fable 5 free?</strong></p><p>Partly, for now. Since it returned on July 1, 2026 it is included on Pro, Max, Team and select Enterprise plans for up to 50% of your weekly usage limits through July 7, after which it moves to usage credits until Anthropic has the capacity to make it a standard plan model again. On the API and consumption-based Enterprise it is fully available at $10 per million input tokens and $50 per million output tokens.</p>
<p><strong>How is Fable 5 different from the Opus models?</strong></p><p>It sits a tier above them. The practical difference shows up on long, complex, multi-step work: the harder the task, the bigger Fable's lead. It works autonomously for longer, is more token-efficient, is the new state of the art at vision, and gets a large boost from persistent file-based memory. On short simple prompts the gap is small, which is exactly why you should point it at your hardest task.</p>
<p><strong>Why did Claude switch me to Opus 4.8 mid-task?</strong></p><p>That is the safeguard working as designed. Fable 5 routes requests that touch cybersecurity, biology and chemistry, or model distillation to Claude Opus 4.8 instead, and tells you when it does. The classifiers are tuned conservatively, and since the July redeploy the cyber classifier is tighter, so they now catch benign coding requests somewhat more often than the under-5%-of-sessions rate seen at launch. If you hit it on a benign request, rephrase the prompt or break the task into smaller pieces.</p>
<p><strong>What is the new data retention policy?</strong></p><p>Anthropic now retains all traffic on Mythos-class models, including Fable 5, for 30 days on both first- and third-party surfaces. The company says the data will not be used to train models and is deleted after 30 days, with logged human access. It exists to defend against jailbreaks and reduce false positives. If you build with sensitive client or company data, read the policy before sending it.</p>
<p><strong>Was Claude Fable 5 taken down, and is it back?</strong></p><p>Yes to both. Anthropic suspended Fable 5 on June 12, 2026, three days after launch, to comply with a US government export-control order it could not enforce in real time. The controls were lifted on June 30, and Fable 5 returned globally on July 1 across Claude.ai, Claude Code, the API and Cowork, with an updated safety classifier. It is fully available again today.</p>
<p><strong>Should I move my Claude Code projects to Fable 5?</strong></p><p>Move the hard ones now, while it is included in your plan. There is no migration, it is just a model switch in the selector or the claude-fable-5 id on the API. Use the included allowance through July 7 to throw your most-postponed refactor, migration or big build at it, the kind of long task where it actually pulls ahead. Keep lighter day-to-day work on whatever you already use if you want to save credits after the 7th.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Fable 5 for Agencies: Months of Work in Days, and What It Means for Your Pricing</title>
      <link>https://www.claudecodeclub.ai/blog/claude-fable-5-for-agencies</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-fable-5-for-agencies</guid>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Claude Code</category>
      <category>Monetization</category>
      <category>Agency</category>
      <description><![CDATA[Anthropic's new Claude Fable 5 ran a two-month codebase migration in a single day. For an AI agency, that is not a tooling update, it is a pricing question. Here is what changed, what to sell, and the client-work caveats nobody is talking about.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Claude Fable 5, released June 9, 2026, is the first public Mythos-class model. In early testing it ran a codebase-wide migration on a 50-million-line codebase in a day, work that would have taken a team over two months.</li><li>For an agency the story is not the benchmark, it is the margin. Longer autonomous runs plus more token-efficiency mean you can take on bigger, longer scopes and deliver them in fewer turns. That widens the gap between what you charge and what it costs you.</li><li>It launched June 9, was suspended June 12 under a US export-control order, and returned globally on July 1. It is now included on Pro, Max and Team for up to 50% of weekly usage through July 7, then usage credits. Test it now. And read the new 30-day data-retention policy before you run client data through it.</li></ul>
<h2>Claude Fable 5 for Agencies: Why This One Matters</h2>
<p>Straight up, most takes on Claude Fable 5 are benchmark tourism. For an agency owner the only line that matters is this one: in early testing it ran a codebase-wide migration on a 50-million-line codebase in a single day, a job that would have taken a full team over two months by hand. Sit with that. The thing you used to scope as a two-month engagement is now a one-day run.</p>
<p>That is not a tooling update. It is a pricing question. Anthropic shipped Fable 5 on June 9, pulled it three days later under a US export-control order, and redeployed it globally on July 1 (https://www.anthropic.com/news/claude-fable-5-mythos-5 and https://www.anthropic.com/news/redeploying-fable-5). Below is the agency version: what changed, how it moves your margin, what to sell this quarter, and the client-work caveats that will bite you if you skip them.</p>
<h2>What Changed Under the Hood</h2>
<p>Fable 5 is the first Mythos-class model made safe for general use. Mythos-class is a new tier sitting above the Opus class. Two properties matter for a shop that bills for delivery. First, it works autonomously for longer than any previous Claude model, and the harder the task, the bigger its lead. Second, it is more token-efficient, finishing the same work in fewer turns.</p>
<p>Read those together. Longer autonomous runs mean you can take on the long-horizon scope you used to turn down because it was too much hand-holding. Fewer turns on the same outcome means lower delivery cost. I spent years shipping inside Apple, PlayStation and Schwab, and the constraint was always the same: the big migration, the gnarly refactor, the multi-week build nobody wanted to staff. That is precisely the shape of work where Fable 5 pulls away.</p>
<blockquote><strong>TIP:</strong> Pricing context: Fable 5 is $10 per million input tokens and $50 per million output, less than half what the Mythos Preview cost. So the most capable model available got cheaper to run at the same time it got more capable. Your cost of delivery on a fixed-scope engagement just dropped while the ceiling on what you can deliver went up.</blockquote>
<h2>The Pricing Move: Sell the Compression, Not the Hours</h2>
<p>If you bill by the hour, this model is a pay cut. You will do a two-month job in two days and invoice for two days. The whole point is to price the outcome, not the time, so that compression lands in your margin instead of your client's invoice. Here is how to turn Fable 5's new capability into agency revenue:</p>
<ol><li>Reprice the scopes you used to avoid. The large migration, the legacy-system rebuild, the screenshot-to-working-app job. These were too labor-heavy to be profitable at a sane price. They are now days of work. Put them back on your menu as fixed-price outcomes.</li><li>Quote the outcome in the client's numbers. 'This migration is two months of your engineers, or a fixed fee from us.' You are priced against their cost of doing it the old way, which is high, not against your build time, which is now low.</li><li>Bank the token efficiency as margin. Fewer turns to the same result means lower cost per engagement. Do not pass all of that to the client. Some of it is your reward for getting faster.</li><li>Move from project to retainer where it fits. A model that holds context across millions of tokens with file memory is built for always-on agents. 'I built you a thing' is one invoice. 'I run your always-on system, monitored and improved monthly' is recurring revenue.</li></ol>
<h2>Test It On Your Plan Before July 7</h2>
<p>There is a real deadline here, so do not let this sit. Fable 5 was pulled on June 12 under a US export-control order and only returned globally on July 1, so the clock restarted. Through July 7, 2026, it is included on Pro, Max, Team and select Enterprise plans for up to 50% of your weekly usage limits. After July 7 it comes off that allowance and runs on usage credits until Anthropic has the capacity to make it standard again. On the API and consumption-based Enterprise it is fully available as claude-fable-5.</p>
<p>Use the free fortnight as your evaluation. Take one real client problem, ideally a scope you would normally quote as multi-week, and run it through Fable 5 end to end. Time it. Measure the delivery cost. That single test gives you the number you need to reprice the offer with confidence instead of guessing.</p>
<h2>The Client-Work Caveats Nobody Is Talking About</h2>
<p>Two things will bite an agency specifically, and neither showed up in the hype. First, the safeguard fallback. Fable 5 routes requests touching cybersecurity, biology and chemistry, or model distillation to Claude Opus 4.8 instead, and tells the user when it happens. It fired in under 5% of sessions at launch, and since the July redeploy the cyber classifier is tighter, so it now trips a little more often on routine coding and debugging. If your client work is security-adjacent, expect the occasional fallback and set client expectations so a routed response does not look like a bug on your end.</p>
<blockquote><strong>WARNING:</strong> Second, and bigger for agencies: every request on a Mythos-class model is now retained for 30 days, on first- and third-party surfaces. Anthropic says it is not used for training and is deleted after 30 days. But if your client contracts or NDAs make promises about where their data goes, you need to read this policy and update your data-handling language before you run their material through Fable 5. Get ahead of it instead of explaining it after.</blockquote>
<p>Handled right, these are footnotes. Handled wrong, they are an awkward client call. The agencies that win the next quarter are the ones that quietly reprice the long-horizon work, test it on the free window, and put the data language in front of clients before anyone asks. The model got more capable and cheaper to run on the same day. Go sell the compression.</p>
<h2>FAQ</h2>
<p><strong>What does Claude Fable 5 actually change for an AI agency?</strong></p><p>It collapses the cost of long, complex builds. In early testing it ran a codebase-wide migration on a 50-million-line codebase in a day, work that would have taken a team over two months. For an agency that means the labor-heavy scopes you used to avoid, large migrations and rebuilds, are now days of work. The opportunity is to put those back on your menu as fixed-price outcomes and keep the compression as margin.</p>
<p><strong>How much does Claude Fable 5 cost to run?</strong></p><p>On the API it is $10 per million input tokens and $50 per million output tokens, less than half what the earlier Mythos Preview cost. Since it returned on July 1, 2026 it is also included on Pro, Max, Team and select Enterprise plans for up to 50% of weekly usage through July 7, then moves to usage credits until Anthropic folds it back into the plans. So your cost of delivery dropped at the same time the capability went up.</p>
<p><strong>Should I raise my prices because of Fable 5?</strong></p><p>Reprice the offer, not necessarily the rate. If you bill hourly, a model that does two months of work in two days is a pay cut, so move those engagements to fixed-price outcomes quoted against the client's cost of doing it the old way. The work that was too labor-heavy to be profitable is now worth offering. Bank the token efficiency and the speed as margin rather than handing all of it back in a lower invoice.</p>
<p><strong>Wait, was Fable 5 pulled? Can I rely on it for client work?</strong></p><p>It was suspended on June 12, 2026 under a temporary US export-control order and restored globally on July 1 after the order was lifted. It is fully available again now. The practical lesson for client commitments is to keep your delivery process model-agnostic, so a future pause never strands a project, and to price the outcome rather than any single model.</p>
<p><strong>Can I use Fable 5 with sensitive client data?</strong></p><p>Read the new policy first. Every request on a Mythos-class model, Fable 5 included, is retained for 30 days on first- and third-party surfaces. Anthropic says it will not be used to train models and is deleted after 30 days, with logged access. If your client contracts or NDAs make specific promises about data handling, update that language and clear it with the client before you run their material through the model.</p>
<p><strong>Will the safeguards interfere with client projects?</strong></p><p>Rarely, but know they exist. Fable 5 sends requests touching cybersecurity, biology and chemistry, or model distillation to Claude Opus 4.8 instead, and notifies the user. It triggers in under 5% of sessions. If your client work is security-adjacent, set expectations up front so an occasional routed response reads as a safety feature rather than a failure on your side.</p>
<p><strong>How do I turn a Fable 5 build into recurring revenue?</strong></p><p>Attach it to an ongoing outcome and keep your hands on it. Fable 5 holds context across millions of tokens and gains a lot from persistent file memory, which makes it well suited to always-on agents rather than one-off scripts. Sell the running system, monitored and improved monthly, instead of the one-time build. The maintenance, reporting and steady improvements are the product, and they justify a retainer.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Automate Spreadsheets With Claude Code: The Spreadsheet Handoff</title>
      <link>https://www.claudecodeclub.ai/blog/automate-your-spreadsheets-with-claude-code</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/automate-your-spreadsheets-with-claude-code</guid>
      <pubDate>Tue, 30 Jun 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Automation</category>
      <category>Spreadsheets</category>
      <description><![CDATA[Learn how to automate spreadsheets with Claude Code using the Spreadsheet Handoff, a simple method to turn repetitive sheet work into a script that runs itself.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>To automate spreadsheets with Claude Code, use the Spreadsheet Handoff: name the task, hand over a sample, describe the rule, let Claude write it, and run it on a copy first.</li><li>You describe the repetitive work in plain words and Claude writes the formula or script that does it.</li><li>Always test on a copy of your sheet before touching the real data.</li></ul>
<h2>How to Automate Spreadsheets With Claude Code: The Spreadsheet Handoff</h2>
<p>To automate spreadsheets with Claude Code, use the Spreadsheet Handoff, our five-step method at Claude Code Club for turning repetitive sheet work into something that runs itself. In one breath: name the repetitive task, hand Claude a sample of the sheet, describe the rule in plain words, let it write the script or formulas, and run it on a copy first. That is the entire handoff.</p>
<p>The idea is simple. Anything you do to a spreadsheet the same way over and over is a task you can hand off. Cleaning up names, splitting one column into two, flagging rows that meet a rule, adding up categories: these are all handoffs. You describe the pattern, and Claude Code writes the formula or the small script that does it for you, every time, without the manual clicking.</p>
<ol><li>Name the repetitive task in one sentence.</li><li>Hand Claude a sample of the sheet so it sees the real shape of your data.</li><li>Describe the rule: what should happen to which cells.</li><li>Let Claude write the script or formulas.</li><li>Run it on a copy of your sheet first, then check the result.</li></ol>
<blockquote><strong>TIP:</strong> You can do the whole Spreadsheet Handoff from the Claude desktop app. Describe your sheet and the task, and Claude writes the formula or script. The terminal is optional and not needed for most spreadsheet automations.</blockquote>
<h2>Step One: Name the Repetitive Task</h2>
<p>Start by naming the repetitive task in one sentence. Be specific about the action. Compare split the full name column into first and last name against fix the names. The first is a task Claude can automate exactly. The second is a wish. The clearer your sentence, the more likely the result matches what you pictured in your head.</p>
<p>A good clue that something is worth automating is that you do it the same way every week and it bores you. Boring and repetitive is exactly what a script is for. Write your task as a plain action on specific columns, and if it needs the word and, consider splitting it into two separate handoffs so each one stays simple.</p>
<blockquote><strong>TIP:</strong> State the task as: for each row, take X and do Y. That format names both the input and the action, which is precisely what Claude needs to write the right formula or script.</blockquote>
<h2>Step Two: Hand Claude a Sample of the Sheet</h2>
<p>Then hand Claude a sample of the sheet. A sample is a few real rows, including your column headers and any messy examples. This is the most important step, because Claude needs to see the actual shape of your data to write something that fits it. Paste ten representative rows into the Claude desktop app, or share the file, and point out any rows that are tricky or inconsistent.</p>
<p>Include the ugly rows on purpose. Blank cells, odd spellings, and inconsistent formats are exactly the cases that break a naive automation, so Claude needs to see them up front. A sample that only shows your cleanest rows will produce a script that only handles your cleanest rows and stumbles on the rest.</p>
<ul><li>Include your real column headers in the sample.</li><li>Add a few messy or unusual rows so Claude sees the edge cases.</li><li>Point out anything that looks inconsistent in your data.</li><li>Keep the sample small, around ten representative rows.</li></ul>
<blockquote><strong>WARNING:</strong> Never paste sensitive personal data you do not want to share. Replace real names, emails, or account numbers with fake examples in your sample. The structure is what Claude needs, not the private values.</blockquote>
<h2>Step Three and Four: Describe the Rule, Then Let Claude Write It</h2>
<p>Next, describe the rule in plain words. A rule says what should happen to which cells and when. For example: if the amount is over one hundred, put yes in the priority column, otherwise put no. Or: take everything before the comma in column A and put it in column B. Spelling out the rule as if you were teaching a careful assistant is exactly right.</p>
<p>Then let Claude write the script or formulas. Depending on your sheet, Claude Code might give you a formula you paste into a cell, or a small script that processes the whole file at once. Ask Claude which approach fits your case and to explain how to use it in plain steps. For repeating jobs across many rows or files, a script usually beats copying a formula down by hand.</p>
<blockquote><strong>TIP:</strong> Ask Claude to explain the formula or script in one plain sentence before you use it. If you understand what it does, you can trust the result and tweak the rule yourself later.</blockquote>
<h2>Step Five: Run It on a Copy First</h2>
<p>Always run it on a copy of your sheet first. Make a duplicate of your file, apply the formula or script there, and check the results carefully against a few rows you already know the answer to. This is the safety net of the whole Spreadsheet Handoff. If something is off, you fix the rule and try again, and your real data was never touched.</p>
<p>Once the copy looks perfect, you can run it on your real sheet with confidence. Keep the copy for a while as a backup. The habit of testing on a copy is what makes spreadsheet automation safe for non-technical builders, because a mistake in the rule costs you nothing but a second attempt.</p>
<ol><li>Duplicate your spreadsheet before applying anything.</li><li>Run the formula or script on the copy only.</li><li>Spot-check rows where you already know the correct answer.</li><li>If it is wrong, refine the rule with Claude and try the copy again.</li><li>When it is right, apply it to your real sheet and keep the copy as a backup.</li></ol>
<p>That is the Spreadsheet Handoff: name the task, hand over a sample, describe the rule, let Claude write it, run it on a copy first. Once you feel it work once, you start seeing repetitive spreadsheet chores everywhere as things you can hand off. Share the automation you built in the Claude Code Club community, because your boring task might be someone else's daily headache. ⚡</p>
<h2>FAQ</h2>
<p><strong>What is the Spreadsheet Handoff?</strong></p><p>The Spreadsheet Handoff is a five-step Claude Code Club method for automating spreadsheets: name the repetitive task, hand Claude a sample of the sheet, describe the rule, let Claude write the script or formulas, and run it on a copy first. It turns manual, repetitive sheet work into something that runs itself.</p>
<p><strong>Do I need to know how to write formulas or code to automate spreadsheets with Claude Code?</strong></p><p>No. You describe the task and the rule in plain English, and Claude Code writes the formula or script for you. Your job is to describe the pattern clearly and to test the result on a copy of your sheet.</p>
<p><strong>Why does Claude need a sample of my sheet?</strong></p><p>Claude needs to see the real shape of your data, including your column headers and any messy rows, to write something that fits it exactly. A sample of a few representative rows is usually enough. This step is the biggest factor in getting a result that works the first time.</p>
<p><strong>Should I share sensitive data in my sample?</strong></p><p>No. Replace any real names, emails, or account numbers with fake examples before sharing a sample. Claude needs the structure of your data, not the private values, so a made-up sample works just as well and keeps your information safe.</p>
<p><strong>Should Claude give me a formula or a script?</strong></p><p>It depends on the task. A single formula works well for a rule applied down one column, while a small script is better for processing an entire file or many files at once. Ask Claude Code which approach fits your case and to explain how to use it.</p>
<p><strong>Why run the automation on a copy first?</strong></p><p>Testing on a copy means a mistake in the rule costs you nothing but a second attempt, and your real data is never at risk. Duplicate the sheet, apply the automation to the copy, and spot-check rows where you know the answer. Only run it on your real data once the copy looks perfect.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Get Client Testimonials for Your AI Agency</title>
      <link>https://www.claudecodeclub.ai/blog/how-to-get-testimonials-for-your-ai-agency</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/how-to-get-testimonials-for-your-ai-agency</guid>
      <pubDate>Tue, 30 Jun 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Agency</category>
      <category>Marketing</category>
      <category>Clients</category>
      <description><![CDATA[Knowing how to get client testimonials turns finished projects into your best sales asset. This is the simple ask I use to collect proof that actually converts.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Ask for the testimonial at the moment of a win, not months later.</li><li>Make it easy with a template and ask for a specific result, not vague praise.</li><li>Get permission to use their name and turn the best ones into full case studies.</li></ul>
<h2>How to get client testimonials: ask at the win, make it easy</h2>
<p>Here is how to get client testimonials that actually win you new work: ask at the moment of a win, make it effortless for the client, and ask for a specific result rather than vague praise. Most agency owners get weak testimonials for one reason. They ask too late, too vaguely, and in a way that makes the client do all the work. Fix those three things and your proof gets sharper overnight.</p>
<p>I have spent fifteen years shipping inside teams at Apple, PlayStation and Schwab, and the same truth held in every one of them: people will happily say good things about your work if you catch them at the right moment and make it easy. Testimonials are not a favour you are begging for. They are a natural part of finishing well.</p>
<blockquote><strong>WARNING:</strong> A testimonial that says great to work with, highly recommend converts almost no one. A testimonial with a specific result does the selling for you.</blockquote>
<h2>The Proof Ask: five steps to a testimonial that sells</h2>
<p>The Proof Ask is our CCC method for collecting proof that converts. Five steps, run at the right moment, that turn a happy client into a sales asset you will use for years.</p>
<ol><li>Ask at the moment of a win. Right after you deliver something that clearly worked, when the client is delighted, is when you ask. Enthusiasm fades fast, so do not wait for the project to formally close.</li><li>Make it easy with a template. Do not ask them to write from scratch. Offer a short starting draft based on what they told you, and let them edit it. A blank page kills good intentions.</li><li>Ask for a specific result, not vague praise. Prompt them toward the concrete: what changed, how much time it saved, what the Claude Code build now does for them. Specifics are what future clients believe.</li><li>Get permission to use their name. A named testimonial with a role and company is worth many times an anonymous one. Ask plainly for permission to use their name, title, and logo.</li><li>Turn it into a case study. For your best results, expand the testimonial into a short case study: the problem, what you built, and the outcome. One strong case study can carry a lot of sales weight.</li></ol>
<blockquote><strong>TIP:</strong> Draft the testimonial for them in your own words based on what they said on your calls, then ask, does this feel accurate to you? Editing a draft is easy. Writing one is not.</blockquote>
<h2>Why specific results beat glowing adjectives</h2>
<p>A future client reading your site does not believe adjectives. They believe outcomes. Wonderful to work with tells them nothing they can act on. A line describing a real result, a task that used to take a day now taking minutes, tells a prospect exactly what they might get.</p>
<p>This is why the ask matters more than the wording. If you simply ask for a testimonial, you get praise. If you ask what changed after the build went live, you get a result. Guide the client toward the specific and your proof does real work.</p>
<h2>Handling the awkwardness and the no</h2>
<p>The reason most agency owners do not ask is that it feels awkward. The fix is to make asking a normal part of your process, expected and low pressure. Mention early in the engagement that if they are happy at the end you will ask for a short testimonial. Then it is no surprise.</p>
<p>Some clients will decline to be named, often for good internal reasons. Respect it. An anonymous testimonial with a specific result and a described role still carries weight. And a client who cannot go on record can often still give you a private reference, which is quietly one of the most powerful proofs of all.</p>
<blockquote><strong>TIP:</strong> Keep a simple record of every kind word a client sends you in passing. A line in a thank-you message is often a testimonial waiting to be formalised, with permission.</blockquote>
<h2>Make the ask routine, then compare notes</h2>
<p>The Proof Ask compounds. Every finished project that ends in a specific, named testimonial makes the next sale easier and lets you raise your prices with evidence behind you. Build the ask into your delivery process so it happens automatically, not when you remember.</p>
<p>The wording that gets the strongest results varies by client type. If you want to sharpen your own ask, bring your current testimonial template to the CCC community and compare notes on what has actually converted new work for other agency owners.</p>
<h2>FAQ</h2>
<p><strong>What is the Proof Ask?</strong></p><p>The Proof Ask is a CCC method for collecting testimonials that convert. You ask at the moment of a win, make it easy with a template, ask for a specific result rather than vague praise, get permission to use the client's name, and turn the best ones into case studies.</p>
<p><strong>When is the best time to ask for a testimonial?</strong></p><p>Right after a clear win, when the client is visibly delighted with something you delivered. Enthusiasm fades, so do not wait for the project to formally close. Catching the moment is the single biggest factor in getting a strong testimonial.</p>
<p><strong>How do I get a specific testimonial instead of vague praise?</strong></p><p>Ask about the outcome, not the experience. Instead of asking for a testimonial, ask what changed after the build went live or how much time it now saves. Guiding the client toward a concrete result is what makes the proof believable to future clients.</p>
<p><strong>Is it okay to write the testimonial for the client?</strong></p><p>Yes, as long as it reflects what they actually told you and they approve it. Draft it in your own words based on your calls, then ask if it feels accurate. Editing a draft is easy for a busy client, while writing from a blank page rarely happens.</p>
<p><strong>What if a client will not let me use their name?</strong></p><p>Respect it, since there are often valid internal reasons. An anonymous testimonial with a specific result and a described role still carries weight. Many such clients will also give a private reference, which is one of the strongest proofs you can have.</p>
<p><strong>How is a case study different from a testimonial?</strong></p><p>A testimonial is a short quote. A case study expands it into the problem, what you built, and the outcome. For your best results, turning the testimonial into a short case study gives prospects the full story and carries far more sales weight.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code Hooks: How to Automate Your Workflow</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-hooks</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-hooks</guid>
      <pubDate>Tue, 30 Jun 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Automation</category>
      <category>Workflows</category>
      <category>Tutorials</category>
      <description><![CDATA[A Claude Code hook is a shell command the app runs automatically at set moments in a session, like right after an edit or before a tool runs. Here is what hooks are, the four moments they can fire, and two you can copy today to auto-format your code and protect files you never want touched.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>A Claude Code hook is a shell command the app runs for you at a fixed point in a session. You do not ask for it and Claude does not decide to run it: the app fires it automatically when the event happens.</li><li>Hooks fire at four everyday moments we call the hook clock: when you submit a prompt, before a tool runs, after a tool runs, and when Claude stops. Pick the moment, attach a command, and it runs every time from then on.</li><li>The two starter hooks that pay for themselves are a PostToolUse hook that auto-formats every file Claude edits, and a PreToolUse hook that blocks edits to files you never want touched. Both are a few lines in settings.json.</li></ul>
<h2>What a Claude Code hook is</h2>
<p>A Claude Code hook is a shell command the app runs for you automatically at a fixed point in a session. The key word is automatically. You do not type a prompt to trigger it, and Claude does not choose to run it. The app itself fires the command the moment a set event happens, every single time, whether you remember it or not.</p>
<p>That distinction is the whole value. A prompt is something you have to remember to send. A hook is a rule the app enforces on your behalf. If your rule is format the code after every edit, a hook makes that happen on edit number one and edit number four hundred, with the same reliability, because it is wired into the session lifecycle rather than left to habit.</p>
<blockquote><strong>NOTE:</strong> Hooks work the same in the Claude Code desktop app and the terminal. They are ordinary shell commands the app runs, so anything you can script, you can hook.</blockquote>
<h2>The hook clock: the four moments a hook can fire</h2>
<p>Claude Code exposes several lifecycle events, but four of them cover almost everything a builder wants. We call these four the hook clock, because they mark the turning points of a single turn. Before you write a hook, the only real question is which moment on the clock you want to attach to.</p>
<ul><li>UserPromptSubmit: fires the instant you send a message, before Claude reads it. Good for injecting context or catching a prompt you want to block.</li><li>PreToolUse: fires right before Claude runs a tool, like an edit or a shell command. This is the one moment where you can stop an action before it happens.</li><li>PostToolUse: fires right after a tool finishes successfully. This is where you react to a change, for example by formatting the file that was just edited.</li><li>Stop: fires when Claude finishes its turn and is about to hand control back to you. Good for a desktop notification, a log line, or a final check.</li></ul>
<p>There are more events beyond these four, including ones for when a session starts and ends and when a tool fails, but the clock is where you should start. Match the job to the moment: react to a change with PostToolUse, prevent a change with PreToolUse, and you have covered most real workflows.</p>
<h2>Where hooks live</h2>
<p>Hooks are configured in a settings.json file, not in code. You have three places to put them, and the choice decides who the hook applies to.</p>
<ul><li>Your home settings at ~/.claude/settings.json: the hook applies to every project you work on. Use this for personal rules like a notification when a turn ends.</li><li>Project settings at .claude/settings.json: the hook is checked into the repo and applies to everyone on the team. Use this for shared rules like formatting standards.</li><li>Local project settings at .claude/settings.local.json: the hook applies only to you on that project and is kept out of version control. Use this for machine-specific paths.</li></ul>
<p>Inside the file, hooks live under a hooks key, grouped by event name. Each entry can carry a matcher that narrows it to specific tools, and a list of commands to run. The shape is the same for every event, so once you have written one hook you can write any of them.</p>
<h2>Your first hook: auto-format after every edit</h2>
<p>The hook that earns its keep fastest is a PostToolUse hook that formats code the moment Claude edits it. You stop asking Claude to run the formatter, you stop noticing messy diffs, and every file that leaves a session is already clean. Here is the shape in settings.json.</p>
<table><thead><tr><th>Field</th><th>Value</th><th>What it does</th></tr></thead><tbody><tr><td>Event</td><td>PostToolUse</td><td>Run the command after a tool completes.</td></tr><tr><td>matcher</td><td>Edit|Write</td><td>Only fire for edits and file writes, not for reads or searches.</td></tr><tr><td>type</td><td>command</td><td>Run a shell command (the only hook type).</td></tr><tr><td>command</td><td>your formatter script</td><td>The command the app runs on each matching edit.</td></tr></tbody></table>
<p>When the hook fires, Claude Code sends the details of the event to your command as JSON on standard input, including which file was touched. Your script reads that, formats the file, and exits. Point the command at a small script in your repo so the whole team gets the same behavior, and formatting stops being something anyone has to think about.</p>
<blockquote><strong>TIP:</strong> Keep hook commands fast. They run inline in your session, so a slow command makes every edit feel sluggish. Format the single changed file, not the entire project.</blockquote>
<h2>The guardrail hook: block a change before it happens</h2>
<p>The second hook worth having is a PreToolUse guardrail. Because PreToolUse fires before the tool runs, it is the one place you can stop an action entirely. The classic use is protecting files you never want an agent to touch, like a production environment file or a lock file.</p>
<p>You attach the hook to PreToolUse with a matcher for edits, and your command inspects the incoming JSON to see which file is about to change. If it is on your do-not-touch list, the command blocks the edit. This turns a vague hope that the agent behaves into a hard rule the app enforces, which matters a lot more once you start letting Claude run with less supervision.</p>
<blockquote><strong>NOTE:</strong> A PreToolUse hook blocks by exiting with a non-zero status, or by returning a small JSON object that denies the action and tells Claude why. The reason you give is fed back to Claude, so it understands the boundary instead of blindly retrying.</blockquote>
<h2>How a hook talks back</h2>
<p>Every hook communicates in two directions, and understanding both is what lets you go past copy-paste examples. Inbound, the app hands your command a JSON payload on standard input describing the event: the session, the tool, the files involved, and more. Your script reads that to decide what to do.</p>
<p>Outbound, your command reports back through its exit code and its output. The simple version: exit zero and the session continues, exit non-zero on a blocking event and the action is stopped. The advanced version: print a JSON object to standard output to do more, such as denying a specific tool call, adding context to the conversation, or telling Claude to keep going with extra instructions. Start with exit codes and reach for JSON output when you need the control.</p>
<h2>Hooks, skills, and subagents: which one to reach for</h2>
<p>Hooks are one of several ways to shape Claude Code, and they are not always the right one. The rule of thumb: a hook is for something that must happen automatically and deterministically, every time, no judgment involved. Formatting on save and blocking a protected file are perfect hooks because there is nothing to decide.</p>
<p>When the job needs judgment or a lot of reasoning, you want a different tool. A repeatable expert task belongs in a subagent, and a packaged capability with its own instructions belongs in a skill. If you are weighing these against each other, our guide on [when to use skills, subagents, MCP, and hooks](/blog/claude-code-skills-subagents-mcp-hooks-when-to-use) walks through the decision, and our piece on [Claude Code subagents](/blog/claude-code-subagents) covers the delegation side in depth.</p>
<h2>A starter setup you can copy this week</h2>
<p>Here is a concrete way to get value from hooks on your next project. It takes about fifteen minutes the first time and then runs forever.</p>
<ol><li>Add a PostToolUse hook matched to Edit and Write that formats the changed file, so every edit lands clean.</li><li>Add a PreToolUse hook matched to Edit and Write that blocks changes to a short list of protected files, so an agent can never overwrite your secrets or lock files.</li><li>Add a Stop hook that sends you a desktop notification, so you know the moment a long turn is done and can step away without babysitting it.</li><li>Put the formatting and protection hooks in the project's .claude/settings.json so your whole team inherits them, and keep the notification hook in your personal ~/.claude/settings.json.</li><li>Once these feel natural, pair them with the commands you run by hand, covered in our guide to [slash commands you use every day](/blog/claude-code-slash-commands-you-use-every-day).</li></ol>
<p>The pattern to internalize is simple: hooks turn your good intentions into rules the app keeps for you. Anything you keep reminding Claude to do, or keep hoping it will not do, is a candidate for a hook.</p>
<h2>Learn this with us</h2>
<p>Inside Claude Code Club we share the hooks that actually earn their place, from formatters to guardrails to notifications, and help each other wire them up without breaking a workflow. Start with the [curriculum](/curriculum) or join us at https://www.skool.com/claudecodeclub/about and bring the one thing you keep reminding Claude to do.</p>
<h2>FAQ</h2>
<p><strong>What is a hook in Claude Code?</strong></p><p>A hook is a shell command that Claude Code runs automatically at a set point in a session, such as before a tool runs or right after an edit. You do not trigger it with a prompt and Claude does not decide to run it: the app fires it every time the event happens. Hooks are configured in a settings.json file and work in both the desktop app and the terminal.</p>
<p><strong>When do Claude Code hooks fire?</strong></p><p>Hooks fire at fixed lifecycle moments. The four most useful are UserPromptSubmit when you send a message, PreToolUse right before Claude runs a tool, PostToolUse right after a tool finishes, and Stop when Claude ends its turn. There are additional events for session start and end and for tool failures, but those four cover most everyday automation.</p>
<p><strong>How do I set up a Claude Code hook?</strong></p><p>Add it to a settings.json file: ~/.claude/settings.json for every project, .claude/settings.json to share it with your team, or .claude/settings.local.json for just you on one project. Under the hooks key, choose the event, add an optional matcher to target specific tools, and give it a command to run. The app passes your command a JSON payload on standard input describing the event.</p>
<p><strong>Can a hook stop Claude from doing something?</strong></p><p>Yes, if you attach it to a blocking event like PreToolUse, which fires before the tool runs. Your command can block the action by exiting with a non-zero status or by returning a JSON object that denies it and explains why. This is how you protect files you never want touched, because the reason is fed back to Claude so it understands the boundary.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code Subagents: How to Actually Use Them</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-subagents</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-subagents</guid>
      <pubDate>Tue, 30 Jun 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>AI Agents</category>
      <category>Workflows</category>
      <category>Tutorials</category>
      <description><![CDATA[A subagent is a second Claude Code instance that runs a job in its own context window and reports back. Here is what Claude Code subagents are, the three jobs they do well, how to spawn and build your own, and what the June 2026 update changed.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>A Claude Code subagent is a separate Claude instance you hand a single job. It runs in its own fresh context window, does the work, and returns only the result to your main session.</li><li>Subagents are good at three things: running independent work in parallel, isolating a noisy job so it does not clog your main context, and acting as a specialist you have configured for one kind of task.</li><li>You can spawn one in a single sentence, or define a reusable custom subagent as a markdown file in .claude/agents. The June 2026 update added hierarchical subagents, multi-repository sessions, and an agents view that shows every running job on one screen.</li></ul>
<h2>What a Claude Code subagent is</h2>
<p>A Claude Code subagent is a separate Claude instance that your main session hands a single job. It spins up with its own fresh context window, does the work you described, and returns only the result. Think of your main session as a conductor and each subagent as a player: the conductor does not play every instrument, it assigns parts and listens for what comes back.</p>
<p>The detail that matters is the separate context window. When a subagent reads twenty files to answer one question, all of that reading happens in its window, not yours. Your main session never sees the twenty files, only the two-sentence answer. That keeps your own context clean and focused, which is the single biggest reason experienced builders reach for subagents.</p>
<blockquote><strong>NOTE:</strong> Subagent and sub-agent are the same thing. Claude Code spawns them through its task tool, and you manage your saved ones with the /agents command inside the app.</blockquote>
<h2>The subagent triad: the three jobs they do well</h2>
<p>Most good uses of a subagent fall into one of three jobs. We call this the subagent triad, and naming it makes the decision fast: before you spawn one, ask which of the three you are actually buying.</p>
<ul><li>Parallelize: run independent work at the same time. Three subagents can each research a different library, or audit a different folder, while you wait once instead of three times.</li><li>Isolate: push a token-heavy job into its own window so it does not flood your main session. A subagent that greps a huge codebase returns the answer, not the thousand lines it read to find it.</li><li>Specialize: hand a job to an instance you have pre-configured for exactly that task, with its own instructions and its own limited set of tools, so it behaves consistently every time.</li></ul>
<p>If your task is none of those three, you probably do not need a subagent. A quick edit in a file you already have open is faster done directly. The triad is the filter.</p>
<h2>How to spawn a subagent (the one-line version)</h2>
<p>The simplest way to use a subagent is to ask for one in plain language. Inside Claude Code, say something like: use a subagent to find every place we call the old billing API and list the files. Claude launches a fresh instance, it does the search in its own window, and you get back a clean list without the search noise landing in your session.</p>
<p>To run work in parallel, ask for several at once: spin up three subagents, one to check the auth flow, one to check the payment flow, and one to check the email flow, and report what each found. They run together and each reports back. This is the everyday use, and it needs no setup at all.</p>
<blockquote><strong>TIP:</strong> A subagent cannot ask you a follow-up mid-task the way your main session can. Give it everything it needs in the request: the goal, the constraints, and exactly what to return. A vague brief gets a vague result.</blockquote>
<h2>How to create a custom subagent</h2>
<p>When you find yourself describing the same kind of job over and over, turn it into a reusable subagent. A custom subagent is a markdown file in the .claude/agents folder of your project (or in your home folder to use it everywhere). The file is short: a few lines of frontmatter and then the instructions.</p>
<ul><li>name: a short identifier, for example test-runner or code-reviewer.</li><li>description: one line on when this subagent should be used. Claude reads this to decide when to reach for it on its own.</li><li>tools: the limited set of tools it is allowed to touch. A reviewer that can read but not write is safer and more predictable.</li><li>model: which model it runs on, so you can route cheap jobs to a smaller model and hard jobs to a bigger one.</li></ul>
<p>Below the frontmatter you write the system prompt: the role, the rules, and what good output looks like. Once saved, you can call it by name (use the code-reviewer subagent on this diff) and Claude can also invoke it automatically when a task matches the description. This is how a one-off becomes part of your standing workflow. If you are still deciding between subagents, skills, and other tools, our guide on [when to use skills, subagents, MCP, and hooks](/blog/claude-code-skills-subagents-mcp-hooks-when-to-use) lays out the decision.</p>
<h2>What the June 2026 update changed</h2>
<p>The June 2026 Claude Code release made subagents meaningfully more powerful, and it is worth knowing what is new before you design a workflow around them.</p>
<ul><li>Hierarchical subagents: a subagent can now spawn its own subagents, several levels deep. An orchestrator can break a large job into branches and let each branch fan out further on its own.</li><li>Multi-repository sessions: subagents can operate across more than one local repository in a single session, which makes cross-project jobs like a synchronized dependency bump possible from one place.</li><li>The agents view: the claude agents screen shows every session at once, including what is running, what is blocked waiting on you, and what is done.</li><li>Cleaner permissions: background subagents now surface their permission prompts in your main session instead of silently denying them, so a job no longer stalls out of sight.</li></ul>
<blockquote><strong>NOTE:</strong> These capabilities are documented on Anthropic's own site at https://code.claude.com/docs. We link the primary source so you can confirm the current behavior yourself rather than take a summary on faith, because agent features are moving fast right now.</blockquote>
<h2>When not to use a subagent</h2>
<p>Subagents are not free. Each one is a fresh instance with its own startup and its own token cost, and it cannot see your main conversation unless you put the context in the request. That makes them the wrong tool in three cases.</p>
<ul><li>Tightly dependent steps: if step two needs the exact output of step one, running them as separate parallel subagents just creates coordination overhead. Do sequential work in one place.</li><li>Tiny tasks: spawning a subagent to rename a variable costs more time in setup than doing it yourself.</li><li>Jobs that need your live context: if the work depends on the long discussion you have been having, a subagent that starts blank will miss it.</li></ul>
<p>The honest rule is the triad in reverse: no parallel work, no context to isolate, and no repeatable specialty means no subagent. Reaching for one out of habit is how you slow yourself down while feeling productive.</p>
<h2>A starter workflow you can copy this week</h2>
<p>Here is a concrete loop to try on your next real task. It uses all three jobs of the triad and takes about ten minutes to set up the first time.</p>
<ol><li>Pick a job with independent parts, for example reviewing a pull request that touches three areas of the codebase.</li><li>Ask your main session to spawn one subagent per area, each told to review only its area and return the top three issues it finds.</li><li>Let them run in parallel while you keep working in your main session.</li><li>When they report back, you have a clean, isolated summary from each, with none of the file-reading noise in your window.</li><li>If one of those reviews is something you do every week, save it as a custom subagent in .claude/agents so next time it is one word away.</li></ol>
<p>That is the whole idea: delegate the independent and the noisy work, keep your own context for the thinking. Once it clicks, you stop doing everything in one long thread and start running a small team. For the next step up, our walkthrough on [building your first AI agent with Claude Code](/blog/build-your-first-ai-agent-with-claude-code) shows how these same pieces assemble into a standing agent.</p>
<h2>Learn this with us</h2>
<p>Inside Claude Code Club we build subagent workflows like this in the open, share the custom agents that earn their keep, and help each other turn one-off prompts into repeatable systems. Start with the [curriculum](/curriculum) or join us at https://www.skool.com/claudecodeclub/about and bring the one task you most want to stop doing by hand.</p>
<h2>FAQ</h2>
<p><strong>What is a subagent in Claude Code?</strong></p><p>A subagent is a separate Claude instance that your main session hands a single job. It runs in its own fresh context window, completes the task, and returns only the result. Because its work happens in a separate window, it keeps your main session's context clean while it handles research, audits, or other focused jobs.</p>
<p><strong>How do I create a custom subagent?</strong></p><p>Create a markdown file in the .claude/agents folder of your project, or in your home folder to use it everywhere. Add frontmatter with a name, a one-line description of when to use it, the tools it is allowed to use, and the model it runs on. Below that, write its instructions. Once saved, you can call it by name and Claude can also invoke it automatically when a task matches the description.</p>
<p><strong>When should I not use a subagent?</strong></p><p>Skip a subagent when steps are tightly dependent on each other, when the task is tiny enough that setup costs more than doing it directly, or when the work depends on the live context of your current conversation. Subagents shine for parallel, noisy, or repeatable specialist work, not for quick sequential edits.</p>
<p><strong>What changed for subagents in June 2026?</strong></p><p>The June 2026 Claude Code update added hierarchical subagents that can spawn their own subagents several levels deep, multi-repository sessions that let subagents work across more than one local repo at once, an agents view that shows every running job on one screen, and cleaner permission handling so background subagents surface prompts in your main session instead of silently denying them.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Run Multiple Client Projects at Once in Claude Code</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-multiple-projects</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-multiple-projects</guid>
      <pubDate>Tue, 30 Jun 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Claude Code</category>
      <category>Agencies</category>
      <category>Workflows</category>
      <category>Productivity</category>
      <description><![CDATA[Juggling several clients in Claude Code does not have to mean a dozen scattered windows. Here is the client cockpit method: one repo and one CLAUDE.md per client, one view to see every job, and the guardrails that keep client work from bleeding together.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Running multiple client projects in Claude Code works best when each client is its own repository with its own CLAUDE.md, so context never leaks from one to another.</li><li>Treat Claude Code as a cockpit: the June 2026 agents view shows every running job on one screen, and multi-repository sessions let you push the same task across several client repos at once.</li><li>The hard part is not technical, it is hygiene. Keep client keys, data, and context strictly separated so one engagement can never contaminate another.</li></ul>
<h2>The hidden tax of juggling clients</h2>
<p>Running multiple client projects in Claude Code gets expensive in a way that does not show up on an invoice: the cost of switching. Every time you jump from one client to another, you reload their context in your own head, remember their conventions, and hope you did not carry a habit over from the last one. Do that twelve times a day and you have lost an hour to nothing but mental gear-changing.</p>
<p>The fix is not to work harder across scattered windows. It is to set up one calm command center where every client project has its own lane and you can see the state of all of them at a glance. We call that the client cockpit, and the rest of this post is how to build one.</p>
<h2>The client cockpit: one view for every project</h2>
<p>The client cockpit is a simple idea: you operate every client project from one consistent place, and the tool keeps the projects apart so you do not have to hold them apart in your head. The principle is one lane per client, one view over all lanes.</p>
<p>Claude Code's June 2026 agents view makes the over-all view real. The claude agents screen shows every session you have running at once: which client job is working, which one is blocked waiting on a decision from you, and which one is finished. Instead of hunting through terminal tabs to remember what each client agent was doing, you read the board. That single screen is the cockpit's dashboard.</p>
<blockquote><strong>NOTE:</strong> These capabilities are documented on Anthropic's own site at https://code.claude.com/docs. We link the primary source so you can confirm the current behavior yourself, because the agent features are changing quickly.</blockquote>
<h2>Set it up: one repo and one CLAUDE.md per client</h2>
<p>The foundation of the cockpit is separation. Each client gets its own repository and its own CLAUDE.md, and that one rule prevents most of the mess before it starts.</p>
<ul><li>One repository per client: never share a working folder between two engagements. Separate repos mean separate histories, separate dependencies, and no chance of one client's code showing up in another's commit.</li><li>One CLAUDE.md per client: this is the project memory that makes any agent productive in that client's codebase on day one. It holds their conventions, their stack, their do-not-touch list, and the context you would otherwise re-explain every session.</li><li>Consistent structure across clients: keep the same folder shape and the same CLAUDE.md sections for every client, so switching lanes feels identical even though the contents differ.</li></ul>
<p>The CLAUDE.md is the part that pays off most. A good one means you open a client's project and the agent already knows the rules, so you spend your time on the work instead of the briefing. Our guide on [CLAUDE.md templates by project type](/blog/claude-md-templates-by-project-type) gives you a starting shape for each kind of client.</p>
<h2>Run cross-client tasks in a single session</h2>
<p>Some jobs are the same across every client, and doing them one repo at a time is wasted effort. The June 2026 multi-repository sessions let a single Claude Code session operate across several local repositories at once, which is exactly what an agency needs for the work that repeats.</p>
<ul><li>A security patch: bump the same vulnerable dependency across every client that uses it, in one pass, instead of opening each project in turn.</li><li>A shared convention change: roll out the same lint rule or the same CLAUDE.md section to all of your active clients at once.</li><li>A portfolio audit: ask one session to check every client repo for the same issue and report which ones are affected.</li></ul>
<p>The leverage here is real: the work that used to scale with your client count now happens once. That is how you take on the eighth client without it feeling like eight times the maintenance.</p>
<h2>Keep client work from bleeding together</h2>
<p>The power to touch every client at once is also the risk. The one discipline that makes the cockpit safe is strict separation of anything sensitive, and this is not optional when other people's businesses are in your care.</p>
<ul><li>Never share keys: each client's API keys, tokens, and credentials live only in that client's project, in its own environment file, never in a shared location. One client's key should never be reachable from another client's session.</li><li>Never share data: do not let one client's data, customer records, or content land in another client's repo, prompt, or context. A multi-repo session is convenient, but you still decide what goes where.</li><li>Scope each task: when you run a cross-client job, name the repos it should touch and confirm the agents view shows it acting only on those. Do not let a broad instruction wander into a project it had no business in.</li></ul>
<blockquote><strong>WARNING:</strong> Treat every client boundary as a wall, not a suggestion. A leaked key or a piece of one client's data showing up in another's project is not a small bug, it is a breach of trust that can end the relationship. The cockpit gives you reach, so your hygiene has to match it.</blockquote>
<h2>A Monday operating routine</h2>
<p>Here is a routine that turns the cockpit into a habit. It takes about fifteen minutes and sets the week up so no client quietly falls through the cracks.</p>
<ol><li>Open the agents view and read the board: what finished over the weekend, what is still blocked, and on what.</li><li>Clear every blocked job first, because a blocked agent is a client waiting on you.</li><li>Run your one cross-client pass for the week: the shared dependency check or convention update, done once across all repos.</li><li>Glance at each client's CLAUDE.md and update anything that drifted, so the project memory stays true.</li><li>Queue the week's work per client, then let the cockpit show you status instead of you chasing it.</li></ol>
<p>Done weekly, this is what lets a small team carry a full client roster calmly. The point of the cockpit is not to do more frantic switching faster, it is to switch less and see more. Once your delivery runs this way, turning it into a repeatable offer is the natural next move, which our guide on [how to productize a service with Claude Code](/blog/how-to-productize-a-service-with-claude-code) walks through.</p>
<h2>Run your agency with us</h2>
<p>Inside Claude Code Club we help agency owners build the systems that let them carry more clients without more chaos: the per-client CLAUDE.md playbooks, the cross-client routines, and the offers that turn it all into revenue. Start with the [curriculum](/curriculum) or join us at https://www.skool.com/claudecodeclub/about and bring the client workload you most want to get under control.</p>
<h2>FAQ</h2>
<p><strong>How do I run multiple client projects in Claude Code without mixing them up?</strong></p><p>Give each client its own repository and its own CLAUDE.md so context, code, and credentials stay separated. Use the agents view to see every running job on one screen, and when you run a cross-client task, name the exact repos it should touch. The separation is what keeps one client's work from leaking into another's.</p>
<p><strong>Can one Claude Code session work across several repositories?</strong></p><p>Yes. The June 2026 update added multi-repository sessions, so a single session can operate across more than one local repository at once. That makes cross-client jobs like a synchronized dependency bump, a shared convention change, or a portfolio-wide audit possible from one place instead of one project at a time.</p>
<p><strong>What is the client cockpit method?</strong></p><p>It is operating every client project from one consistent command center: one repository and one CLAUDE.md per client for separation, the agents view as your dashboard over all running jobs, and multi-repo sessions for the work that repeats across clients. The goal is to switch lanes less and see the whole roster at a glance.</p>
<p><strong>How do I keep client data and keys separate across projects?</strong></p><p>Keep every client's API keys and credentials only in that client's project and environment file, never in a shared location. Never let one client's data land in another client's repo or prompt. When running a cross-client task, scope it to named repositories and confirm in the agents view that it touched only those. Treat each client boundary as a hard wall.</p>]]></content:encoded>
    </item>
    <item>
      <title>The Claude Code Git Workflow That Keeps Your Work Safe: The Safe Commit Loop</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-git-workflow</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-git-workflow</guid>
      <pubDate>Mon, 29 Jun 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Git</category>
      <category>Workflow</category>
      <description><![CDATA[A simple Claude Code Git workflow that protects your work with save points. Learn the Safe Commit Loop, explained in plain English for non-technical builders.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>A good Claude Code Git workflow treats Git like a save-point system so you can always go back to a version that worked.</li><li>Follow the Safe Commit Loop: commit before you let Claude run, work in small steps, review the diff, commit again with a clear message, and branch for anything risky.</li><li>You can run this entirely from the Claude desktop app without memorizing any commands.</li></ul>
<h2>The Claude Code Git Workflow: Use the Safe Commit Loop</h2>
<p>The Claude Code Git workflow that keeps your work safe is the Safe Commit Loop, our method at Claude Code Club for never losing a version that worked. In one breath: commit before you let Claude run, work in small steps, review the diff, commit again with a clear message, and branch for anything risky. Do that and you can always return to a good state.</p>
<p>First, plain English. Git is a save-point system for your project. Every time you commit, you create a snapshot of all your files exactly as they are right now. If a change goes wrong, you can jump back to any earlier snapshot. That is the whole idea. You do not need to understand anything deeper to use it safely, and Claude Code handles the mechanics for you.</p>
<ol><li>Commit before you let Claude run, so you have a clean save point.</li><li>Work in small steps, one change at a time.</li><li>Review the diff to see exactly what changed.</li><li>Commit again with a clear message describing what you did.</li><li>Branch for anything risky so your main version stays untouched.</li></ol>
<blockquote><strong>TIP:</strong> You never have to type Git commands from memory. Ask Claude Code to commit, show the diff, or make a branch in plain words, and it runs the right command. The terminal is optional.</blockquote>
<h2>Step One: Commit Before You Let Claude Run</h2>
<p>Before you let Claude make a big change, commit. This creates a clean save point of everything that currently works. If the next round of changes goes sideways, you have somewhere safe to return to. Just tell Claude Code to commit your current work with a short message like working version before adding search. Now you are protected.</p>
<p>Think of this as buckling in before the drive. It costs a few seconds and it means the worst outcome of any change is going back to right now. In the Claude desktop app you never have to remember the command, you just ask Claude to commit and give it a short message. Do it every single time before you attempt something big.</p>
<blockquote><strong>WARNING:</strong> The most common way people lose work is letting Claude make a huge sweeping change with no commit beforehand. If it goes wrong, there is nothing to fall back to. Commit first, every time, before anything big.</blockquote>
<h2>Step Two: Work in Small Steps</h2>
<p>Then work in small steps. Ask Claude for one change, not ten. Small steps mean that when something breaks, the amount of new code to check is tiny, and your last commit is close behind you. This is the same instinct as debugging: keep the distance between save points short so you are never far from solid ground.</p>
<p>A small step is something you can describe in one sentence and check in a minute. Add the button, then commit. Change the color, then commit. This rhythm feels slow at first, but it is the fastest way to build without fear, because you are never more than one commit away from a version that worked.</p>
<blockquote><strong>TIP:</strong> If you cannot describe the next change in a single sentence, it is too big. Break it into two smaller changes and commit between them.</blockquote>
<h2>Step Three and Four: Review the Diff, Then Commit With a Clear Message</h2>
<p>After a change, review the diff. A diff is a side-by-side view of exactly what changed: what was added, what was removed, and where. Ask Claude Code to show you the diff and explain it in plain words. This is your chance to catch a change you did not want before it becomes part of your project. Reviewing takes a minute and saves hours.</p>
<p>When the change looks right, commit again with a clear message. A clear message is a short line that says what you did, like added a search box to the top of the page. Future you will thank present you, because those messages become a readable history of your project. Ask Claude to suggest a message, then adjust it so it describes the change honestly.</p>
<ul><li>Ask Claude to show the diff and explain what changed and why.</li><li>Confirm the change matches what you actually asked for.</li><li>If something looks wrong, ask Claude to undo it before committing.</li><li>Commit with a short, honest message describing the change.</li></ul>
<blockquote><strong>TIP:</strong> Good commit messages describe the change, not the feeling. Write added dark mode toggle, not fixed stuff finally. Clear messages make it easy to find the exact save point you want later.</blockquote>
<h2>Step Five: Branch for Anything Risky</h2>
<p>For anything risky or experimental, branch first. A branch is a separate copy of your project where you can try bold changes without touching the version that works. If the experiment succeeds, you merge it back in. If it fails, you throw the branch away and your main version was never in danger. Tell Claude Code to create a branch named for the experiment, like trying new layout.</p>
<p>Branching is what lets you be brave. Big rewrites, a whole new feature, or a change you are not sure about all belong on a branch. The main version stays clean and shippable while you play. This is the piece that turns the Safe Commit Loop from cautious into confident, because you can attempt anything knowing your working project is safe.</p>
<ol><li>Ask Claude to create a new branch named after the experiment.</li><li>Do the risky work there, committing in small steps as usual.</li><li>If it works, ask Claude to merge the branch back into your main version.</li><li>If it does not, discard the branch and your main version is untouched.</li></ol>
<p>That is the Safe Commit Loop: commit first, small steps, review the diff, commit clearly, branch for risk. Once it becomes a habit, you stop fearing changes because you can always go back. If you get tangled up in Git, bring your situation to the Claude Code Club community and we will walk you back to safe ground together. ⚡</p>
<h2>FAQ</h2>
<p><strong>What is the Safe Commit Loop?</strong></p><p>The Safe Commit Loop is a five-step Claude Code Git workflow from Claude Code Club: commit before you let Claude run, work in small steps, review the diff, commit again with a clear message, and branch for anything risky. It treats Git like a save-point system so you can always return to a version that worked.</p>
<p><strong>What is Git, in plain English?</strong></p><p>Git is a save-point system for your project. Each commit is a snapshot of all your files at that moment, and you can jump back to any earlier snapshot if a change goes wrong. That is all you need to understand to use it safely with Claude Code.</p>
<p><strong>Do I need to learn Git commands to use this workflow?</strong></p><p>No. You can ask Claude Code in plain English to commit, show the diff, or make a branch, and it runs the correct command for you. Everything works from the Claude desktop app, and the terminal is an optional path.</p>
<p><strong>What is a diff and why should I review it?</strong></p><p>A diff is a view of exactly what changed in your files: what was added, what was removed, and where. Reviewing it lets you catch an unwanted change before it becomes part of your project. Ask Claude Code to show and explain the diff after every change.</p>
<p><strong>When should I create a branch?</strong></p><p>Create a branch for anything risky or experimental, like a big rewrite or a feature you are unsure about. A branch is a separate copy where you can try bold changes without touching your working version. If the experiment fails, you discard the branch and lose nothing.</p>
<p><strong>What makes a good commit message?</strong></p><p>A good commit message is a short, honest line describing what changed, like added a search box to the header. Avoid vague messages like fixed stuff. Clear messages turn your commit history into a readable timeline you can navigate later.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Handle Scope Creep on Client Projects</title>
      <link>https://www.claudecodeclub.ai/blog/how-to-handle-scope-creep-on-client-projects</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/how-to-handle-scope-creep-on-client-projects</guid>
      <pubDate>Mon, 29 Jun 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Agency</category>
      <category>Clients</category>
      <category>Project Management</category>
      <description><![CDATA[Knowing how to handle scope creep is what separates a profitable agency from a busy one. This is the simple line I hold on every project so the extras get paid for.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Draw a clear line between what was agreed and what is new, and hold it every time.</li><li>Log every new request, price it as a change, and get a yes in writing before you build.</li><li>Never silently absorb extra work. Silent absorption trains the client to expect free work.</li></ul>
<h2>How to handle scope creep: draw a line and hold it</h2>
<p>Here is how to handle scope creep on client projects: draw a clear line between what was agreed and what is new, then treat everything on the new side of that line as a change to be logged, priced, and approved in writing before you build it. Scope creep is not the client being difficult. It is the natural, gravitational pull of every project toward more, and your job is to meet it with a process rather than a sigh.</p>
<p>I have spent fifteen years shipping inside teams at Apple, PlayStation and Schwab, and I have never seen a project where the scope did not try to grow. The agencies that stay profitable are not the ones with tougher clients. They are the ones who handle the growth calmly, out loud, and on the record.</p>
<blockquote><strong>WARNING:</strong> The most expensive words in agency work are, I will just quickly add that. Quickly adding it, unpriced, is how a profitable project becomes a loss.</blockquote>
<h2>The Change Line: four steps to hold the boundary</h2>
<p>The Change Line is our CCC method for handling scope creep without friction. It is one clear boundary between the agreed work and the new work, and a four-step routine you run every time something crosses it. The point is not to say no. The point is to say yes on terms.</p>
<ol><li>Log the request. The moment a new ask appears, write it down and name it as a new item, out loud, to the client. Naming it is half the battle, because it moves the request from an assumption to a decision.</li><li>Price it as a change. Size the new work the way you sized the original scope. It gets its own small fee or its own line, separate from the agreed price.</li><li>Get a yes in writing. A short message confirming the change and its cost is enough. No written yes, no build. This protects both sides and removes the awkward conversation at invoice time.</li><li>Then build it. Only after the written yes does the work start. In that order, every time, without exception.</li></ol>
<blockquote><strong>TIP:</strong> Keep the change process light. A two-line message and a small fee feels reasonable. A heavy formal change order for a tiny ask feels bureaucratic and trains clients to route around you.</blockquote>
<h2>Why silent absorption is the real trap</h2>
<p>The instinct that quietly kills agencies is absorption. The request is small, the client is nice, and it feels easier to just do it than to have the conversation. So you absorb it. Then the next one. Each absorption is tiny. The sum is your margin.</p>
<p>Worse, silent absorption teaches the client that extra work is free. The precedent you set on the third small ask determines what happens on the fifteenth. Holding the Change Line from the first request is kinder to the relationship than caving early and resenting it later.</p>
<p>This is doubly true for Claude Code builds, where a small-sounding request, add one more integration, handle one more input type, can hide real work behind a friendly sentence. The Change Line forces that hidden work into the open where it can be priced.</p>
<h2>Saying yes on terms, without friction</h2>
<p>Handled well, the Change Line makes you look more professional, not less. Clients trust a supplier who tells them the cost before doing the work far more than one who surprises them on the invoice. The change conversation, done calmly, is a trust-building moment.</p>
<p>Frame every change as a yes. Not, that is out of scope, but, I can absolutely do that, here is what it adds. You are on the client's side, helping them get what they want, and being straight about what it costs. That framing keeps the relationship warm while your margin stays intact.</p>
<blockquote><strong>TIP:</strong> Set the expectation at the start. A single line in your proposal saying new requests are handled as small priced changes makes every later change conversation feel expected, not confrontational.</blockquote>
<h2>Hold the line, then compare notes</h2>
<p>The Change Line is not a document. It is a discipline. It works because you run it consistently from the very first new request, before any precedent of free work has set. Hold it early and the rest of the project runs on rails.</p>
<p>Every agency owner has a project where they absorbed too much and learned the hard way. If you are wrestling with a client who keeps nudging the line, bring the situation to the CCC community and compare notes on how others have held it without losing the relationship.</p>
<h2>FAQ</h2>
<p><strong>What is the Change Line?</strong></p><p>The Change Line is a CCC method for handling scope creep. It is a clear boundary between the agreed work and new requests, plus a four-step routine: log the request, price it as a change, get a yes in writing, then build. It keeps extra work paid for.</p>
<p><strong>How do I say no to scope creep without upsetting the client?</strong></p><p>You do not say no. You say yes on terms. Frame the new request as something you can absolutely do, then state what it adds in cost. Being straight about the price before you build is what clients trust, and it keeps the relationship warm.</p>
<p><strong>Should I ever absorb a small request for free?</strong></p><p>Be very careful. The occasional tiny goodwill gesture is fine, but silent absorption teaches the client that extra work is free and sets a precedent that compounds. If you do absorb something, name it out loud as a one-time gesture so the boundary stays visible.</p>
<p><strong>Do I need a formal change order for every request?</strong></p><p>No. Keep it light. A two-line message confirming the change and its small fee is usually enough. Heavy formal change orders for tiny asks feel bureaucratic and push clients to route around your process.</p>
<p><strong>How do I prevent scope creep before it starts?</strong></p><p>Set the expectation in your proposal. A single line saying new requests are handled as small priced changes makes every later change feel expected rather than confrontational. Clear original scope and a named sign-off person also reduce creep.</p>
<p><strong>Why is scope creep worse on AI and Claude Code projects?</strong></p><p>Because a friendly-sounding request can hide real work. Add one more integration or handle one more input type can each be significant effort behind a short sentence. The Change Line forces that hidden work into the open where it can be sized and priced.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Tag: Claude Can Now Join Your Slack as a Teammate</title>
      <link>https://www.claudecodeclub.ai/blog/claude-tag-claude-in-slack</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-tag-claude-in-slack</guid>
      <pubDate>Mon, 29 Jun 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>News</category>
      <category>Workflows</category>
      <category>AI Agents</category>
      <description><![CDATA[Anthropic launched Claude Tag, a new way to put Claude inside Slack as a standing teammate you tag like any coworker. Here is what it does, who can use it today, and the standing-agent shift it points every builder toward.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Claude Tag is Anthropic's new way for teams to work with Claude. It starts inside Slack, where anyone in a channel can tag @Claude and hand it a task, the same way you would tag a coworker.</li><li>It is more than a chatbot. One Claude lives in the channel for the whole team, learns from the channel history and connected data, and can work asynchronously, even scheduling tasks for itself over hours or days.</li><li>It is in beta from June 23, 2026 for Claude Enterprise and Team customers only. But the real signal matters to every builder: we are moving from prompting an agent to keeping a standing agent that lives where work happens.</li></ul>
<h2>What Claude Tag is</h2>
<p>Claude Tag is Anthropic's new way for teams to work with Claude, and it starts inside Slack. Once it is added to a workspace, anyone in a channel can tag @Claude and hand it a request, the same way you would tag a coworker. Instead of opening a separate app and copying context back and forth, you delegate the task right where the conversation already lives.</p>
<p>The shift is small to describe and large in practice. For two years the default way to use Claude was to start a session, give it context, and prompt it. Claude Tag flips that. Claude becomes a participant in the room your team already works in, watching the thread, holding the context, and waiting to be handed work.</p>
<blockquote><strong>NOTE:</strong> Claude Tag is announced on Anthropic's own site at https://www.anthropic.com/news/introducing-claude-tag. We link the primary source so you can verify the details yourself rather than take our summary on faith.</blockquote>
<h2>What makes it different from a chatbot</h2>
<p>Claude Tag is not a private chat window bolted onto Slack. Four properties make it behave like a teammate rather than a tool, and each one changes how you would actually use it.</p>
<ul><li>Multiplayer: one Claude instance lives in the channel and is visible to everyone, so the whole team shares the same context instead of each person briefing their own private bot.</li><li>Learning: it builds context over time from the channel history and the data sources you connect, so it gets sharper about your project the longer it sits there.</li><li>Proactive: when ambient behavior is enabled, it can flag relevant information on its own rather than only answering when asked.</li><li>Asynchronous: it works independently and can schedule tasks for itself, pursuing a project autonomously over hours or days.</li></ul>
<p>That last property is the one to sit with. An agent that can schedule its own follow-up work and run a project over days is the same idea behind running Claude Code on a loop. If that pattern is new to you, read [what are agent loops in Claude Code](/blog/claude-code-agent-loops) and [schedule Claude Code agents while you sleep](/blog/schedule-claude-code-agents-while-you-sleep), because Claude Tag is that capability brought into your team chat.</p>
<h2>What it can do</h2>
<p>Anthropic positions Claude Tag for real work, not novelty. The tasks it lists are the ones a team actually hands off: generating code, analyzing data and tracking metrics, managing support tickets, and investigating bugs down to root cause. You tag it, describe the job, and it runs.</p>
<p>Picture the loop in a single channel. A bug report lands, someone tags @Claude to investigate, it reads the thread and the connected repo, proposes a root cause, and drafts the fix. Later that day it checks back on a metric it was asked to watch. None of that required a person to leave Slack or re-explain the project. That is the appeal.</p>
<h2>Who can use it today, and the honest caveats</h2>
<p>Here is the part most hype posts skip. Claude Tag is in beta starting June 23, 2026, and it is limited to Claude Enterprise and Team customers. It runs on Opus 4.8. If you are a solo builder on an individual plan, you cannot tag @Claude in your Slack today. That is a real limit, not a detail to gloss over.</p>
<p>There are also sensible guardrails for the teams that do get it. Claude Tag replaces the existing Claude in Slack app with a 30-day opt-in window, so it is a migration, not a brand new install for everyone. Admins can restrict Claude's access by channel, set token spend limits, and view activity logs. If you have read our warnings about never letting an agent spend without a ceiling, you will recognize why those controls matter.</p>
<blockquote><strong>WARNING:</strong> An always-on agent that can act and spend tokens on its own needs a budget and a boundary. The token spend limits and per-channel access controls are not optional niceties. Set them before you turn on ambient behavior, not after the first surprise bill.</blockquote>
<h2>The standing-agent shift, and what it means for builders</h2>
<p>We call the bigger pattern here the standing-agent shift, and it is the part worth internalizing even if you never get Claude Tag itself. The shift is from prompting an agent on demand to keeping a standing agent that lives where your work happens, holds context, and is ready to be handed a task without a fresh briefing every time.</p>
<p>You do not need an Enterprise seat to practice it. In the Claude Code desktop app you already have a standing agent in your project. The move is to stop treating each session as a cold start, write a CLAUDE.md so it keeps your context, and let it run loops on real jobs. Claude Tag is simply the team version of the habit our members build solo every day.</p>
<p>If you want to feel the difference now, read [Claude Code auto mode runs on its own](/blog/claude-code-auto-mode-runs-on-its-own) and then point a standing agent at one repetitive job in your week. The teams getting value from Claude Tag are not doing anything magic. They are delegating to an agent that already knows the project, and you can build that exact muscle today.</p>
<h2>Start building the standing-agent habit</h2>
<p>Inside Claude Code Club we teach the standing-agent shift from day one, with a community that reviews your setup and a course that turns it into a repeatable habit instead of a one-off experiment. Start with the [curriculum](/curriculum) or join us at https://www.skool.com/claudecodeclub/about and bring the one workflow you most want off your plate.</p>
<h2>FAQ</h2>
<p><strong>What is Claude Tag?</strong></p><p>Claude Tag is Anthropic's new way for teams to work with Claude, starting inside Slack. Anyone in a channel can tag @Claude and delegate a task to it. One Claude instance lives in the channel for the whole team, learns from the channel history and connected data sources, and can work asynchronously, including scheduling tasks for itself over hours or days.</p>
<p><strong>Who can use Claude Tag?</strong></p><p>As of the beta that began June 23, 2026, Claude Tag is available to Claude Enterprise and Team customers only, and it runs on Opus 4.8. Individual and solo plans do not have access yet. It also replaces the existing Claude in Slack app, with a 30-day opt-in window for teams migrating over.</p>
<p><strong>How is Claude Tag different from using Claude normally?</strong></p><p>Normal use means you start a session and prompt Claude on demand. Claude Tag is a standing agent that lives in your Slack channel, is visible to the whole team, holds context over time, can act proactively when ambient behavior is on, and can run tasks asynchronously. You delegate to it in the channel instead of opening a separate app.</p>
<p><strong>Can I get the same benefit without Claude Tag?</strong></p><p>Yes, in spirit. You cannot tag @Claude in Slack without an Enterprise or Team plan, but you can practice the same standing-agent habit in the Claude Code desktop app: keep a CLAUDE.md so the agent retains your context, stop treating each session as a cold start, and let it run loops on real jobs. That is the solo version of what Claude Tag does for teams.</p>]]></content:encoded>
    </item>
    <item>
      <title>What the $60 Billion Cursor Acquisition Means for Claude Code Agencies</title>
      <link>https://www.claudecodeclub.ai/blog/cursor-acquisition-what-it-means-for-agencies</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/cursor-acquisition-what-it-means-for-agencies</guid>
      <pubDate>Mon, 29 Jun 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Agency</category>
      <category>News</category>
      <category>Strategy</category>
      <category>Claude Code</category>
      <description><![CDATA[SpaceX is buying Cursor's parent Anysphere for $60 billion in stock, days after its own IPO. Here is what the Cursor acquisition actually signals, and why the durable moat for an agency is the system you own, not the editor you open.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>SpaceX agreed to acquire Anysphere, the company behind the AI coding tool Cursor, for $60 billion in an all-stock deal announced June 16, 2026, just days after SpaceX's own IPO.</li><li>The Cursor acquisition is the loudest signal yet that AI coding tools are consolidating into giant platforms with their own agendas.</li><li>For an agency, the lesson is not which editor to pick. It is to own the workflow-not-the-editor moat: your skills, your CLAUDE.md systems, your client relationships. Those survive any acquisition.</li></ul>
<h2>What actually happened</h2>
<p>SpaceX agreed to acquire Anysphere, the company behind the AI coding tool Cursor, for $60 billion in an all-stock deal. The deal was announced on June 16, 2026, just days after SpaceX's own IPO on June 12, and it is meant to boost SpaceX's AI division. In plain terms, one of the most valuable companies on Earth just bought one of the most popular AI coding tools to fold it into its own ambitions.</p>
<blockquote><strong>NOTE:</strong> This is a news post, so we link a primary source for the figures: Reuters reported the deal at https://www.reuters.com/legal/transactional/spacex-buy-anysphere-60-billion-2026-06-16/. Verify the numbers yourself rather than trust a summary.</blockquote>
<h2>Why a $60 billion number should make you think, not panic</h2>
<p>A $60 billion all-stock price is a headline, and headlines off a single event are easy to over-read. What it confirms is direction, not destiny: serious money now believes AI coding tools are strategic infrastructure worth owning outright. That is the fact. Everything past it is interpretation, so treat the rest of this post as our read, not as gospel.</p>
<p>Our read is that the era of the scrappy independent AI editor is closing. Tools that hit real scale are being absorbed into platforms with their own roadmaps, their own pricing power, and their own reasons for existing that may have nothing to do with your agency's needs. When the tool you build on becomes a line item in a much larger company's strategy, your leverage over it drops.</p>
<h2>The risk this creates for agencies</h2>
<p>If your agency's entire value is that you are fast in one specific editor, an acquisition like this is a quiet threat. Roadmaps shift after a deal. Pricing changes. Features you depended on get reprioritized toward the new owner's goals. The tool that made you fast last year can become the tool that slows you down next year, and you do not get a vote.</p>
<p>This is the trap of tying your identity to a single tool. Clients never actually hired you to use Cursor, or to use anything else. They hired you to ship a working result on time and on budget. The editor is a means. When you forget that, every acquisition headline feels like an existential event instead of what it is: a tooling change you should be able to absorb.</p>
<h2>The workflow-not-the-editor moat</h2>
<p>The durable moat for an agency is the workflow-not-the-editor principle: your value lives in the system you own, not the application you happen to open. The editor can be acquired, repriced, or sunset. The system you have built around it cannot be taken from you, because it lives in your repos, your processes, and your client trust.</p>
<ul><li>Your skills and reusable prompts: the packaged routines that let you deliver a type of project fast, independent of which tool runs them.</li><li>Your CLAUDE.md systems: the project memory and conventions that make any capable agent productive in your clients' codebases on day one.</li><li>Your delivery process: scoping, review, and verification habits that produce predictable quality no matter what the underlying model is.</li><li>Your client relationships: the trust and outcomes that make you the person they call, which no acquisition can purchase away from you.</li></ul>
<p>Notice that none of those four are an editor. This is exactly why we build on Claude Code the way we do. Claude Code is backed by Anthropic, an independent AI company, and the desktop-app workflow keeps your systems portable: your skills, your CLAUDE.md, and your process travel with you. If you are weighing the options, our [Claude Code vs Cursor](/blog/claude-code-vs-cursor) comparison lays out the honest tradeoffs.</p>
<h2>What to do this week</h2>
<p>Do not switch tools in a panic. Audit your dependence instead. Spend an hour answering one question: if your primary AI coding tool changed its pricing or its roadmap tomorrow, how much of your delivery would break? The honest answer tells you how much of your value is the tool versus the system around it.</p>
<p>Then move value out of the tool and into your system. Turn your best repeated job into a reusable skill. Write the CLAUDE.md you keep meaning to write. Document the delivery process a new hire could follow. Our guide on [how to productize a service with Claude Code](/blog/how-to-productize-a-service-with-claude-code) walks through turning that system into an offer clients pay for, acquisition headlines or not.</p>
<blockquote><strong>TIP:</strong> The agencies that sleep fine through deals like this are the ones whose moat is portable. Build the system, not the editor dependence, and a $60 billion headline becomes someone else's problem.</blockquote>
<h2>Build the moat with us</h2>
<p>Inside Claude Code Club we help agency owners build the portable systems that outlast any tool: the skills, the CLAUDE.md playbooks, and the productized offers that keep clients coming back. Start with the [curriculum](/curriculum) or join us at https://www.skool.com/claudecodeclub/about and bring the one client workflow you most want to make acquisition-proof.</p>
<h2>FAQ</h2>
<p><strong>Who is buying Cursor, and for how much?</strong></p><p>SpaceX agreed to acquire Anysphere, the parent company of the AI coding tool Cursor, for $60 billion in an all-stock deal. It was announced on June 16, 2026, days after SpaceX's own IPO on June 12, and is intended to strengthen SpaceX's AI division.</p>
<p><strong>Should my agency stop using Cursor because of the acquisition?</strong></p><p>Not in a panic. The right move is to audit your dependence on any single tool, then shift your real value into systems you own: reusable skills, CLAUDE.md project memory, a documented delivery process, and client relationships. If those are solid, you can absorb a tooling change calmly instead of treating it as an emergency.</p>
<p><strong>Why does this make Claude Code a safer bet for agencies?</strong></p><p>Claude Code is backed by Anthropic, an independent AI company focused on the model and the developer workflow, and its desktop-app approach keeps your systems portable. The point is not that Claude Code can never change. It is that your moat should live in your skills, your CLAUDE.md, and your process, which travel with you regardless of which tool is acquired next.</p>
<p><strong>What is the workflow-not-the-editor moat?</strong></p><p>It is the principle that an agency's durable value lives in the system it owns rather than the application it opens. Editors can be acquired, repriced, or sunset. Your packaged skills, project memory, delivery process, and client trust cannot be taken from you, so that is where you should invest.</p>]]></content:encoded>
    </item>
    <item>
      <title>Build a Chrome Extension With Claude Code: The Extension Starter Path for Total Beginners</title>
      <link>https://www.claudecodeclub.ai/blog/build-a-chrome-extension-with-claude-code</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/build-a-chrome-extension-with-claude-code</guid>
      <pubDate>Sun, 28 Jun 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Building</category>
      <category>Chrome Extension</category>
      <description><![CDATA[You can build a Chrome extension with Claude Code even with no prior experience. Follow the Extension Starter Path to go from an idea to a working extension in your browser.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>You can build a Chrome extension with Claude Code with zero prior experience by following the Extension Starter Path.</li><li>Start by describing the single job your extension does, then let Claude scaffold the files and manifest.</li><li>Load it unpacked in your browser to test, iterate on the popup and permissions, then package it.</li></ul>
<h2>How to Build a Chrome Extension With Claude Code, Start to Finish</h2>
<p>To build a Chrome extension with Claude Code, follow the Extension Starter Path, our five-step method at Claude Code Club for going from an idea to a working browser extension with no prior experience. You describe the one job the extension does, let Claude scaffold the files, load it unpacked in your browser to test, iterate on the popup and permissions, and then package it. That is the whole journey.</p>
<p>A Chrome extension is just a small folder of files that your browser knows how to run. There is a settings file called a manifest, maybe a little popup window, and some code that does the actual work. You do not need to memorize any of that. Claude Code writes those files for you in the Claude desktop app, and your job is to describe what you want and test the result.</p>
<ol><li>Describe the one job the extension does, in a single sentence.</li><li>Let Claude scaffold the manifest and files for you.</li><li>Load it unpacked in your browser to test it live.</li><li>Iterate on the popup and permissions until it feels right.</li><li>Package it so you can keep it or share it.</li></ol>
<blockquote><strong>TIP:</strong> You can do all of this from the Claude desktop app. It creates the files and folder for you. The terminal is optional and never required to get a working extension.</blockquote>
<h2>Step One: Describe the One Job the Extension Does</h2>
<p>Start by describing the single job your extension does in one sentence. Good extensions do one thing well. A one-sentence job might be: highlight every phone number on a page, or add a button that copies the current page title, or hide distracting sidebars on reading sites. If you need the word and twice to describe it, you are trying to build two extensions. Pick one.</p>
<p>Tell Claude Code that sentence and ask it to confirm the plan back to you before writing anything. This catches misunderstandings early. A clear one-line job is the single biggest predictor of whether your first extension works, because it tells Claude exactly what to build and what permissions it will need.</p>
<blockquote><strong>TIP:</strong> Write your job sentence as: this extension lets me do X on Y pages. That format forces you to name both the action and where it happens, which is exactly what Claude needs.</blockquote>
<h2>Step Two: Let Claude Scaffold the Manifest and Files</h2>
<p>Next, let Claude scaffold the manifest and files. Ask Claude Code to create a new folder for the extension and generate the manifest file plus any code and popup it needs. The manifest is the settings file that tells the browser the extension's name, what it is allowed to do, and which files to run. Claude writes all of it, so you get a complete, working folder without touching the details.</p>
<p>Ask Claude to explain, in one or two sentences, what each file it created does. You do not need to understand the code, but knowing that one file is the settings, one is the popup, and one is the logic makes the folder feel far less mysterious. This is the moment your idea becomes real files sitting on your computer, ready to load.</p>
<ul><li>Ask Claude to create the extension folder and the manifest file.</li><li>Have Claude generate any popup and code the one job needs.</li><li>Ask for a one-line explanation of what each file does.</li><li>Confirm the folder is complete before you try to load it.</li></ul>
<blockquote><strong>TIP:</strong> Keep every file for one extension in a single folder. When you load unpacked, you point the browser at that folder, so a tidy folder makes the next step painless.</blockquote>
<h2>Step Three: Load It Unpacked in Your Browser</h2>
<p>Then load it unpacked in your browser to test it. Loading unpacked means pointing your browser at that folder directly, which is how you run an extension you are still building. Open your browser's extensions page, turn on developer mode, choose load unpacked, and pick the folder Claude made. Ask Claude for the exact clicks if you are unsure. Your extension appears in the toolbar, and you can try it immediately.</p>
<p>Now try the extension on a real page and watch what it does. This first live test almost never works perfectly, and that is completely normal. Note anything that feels off so you can describe it clearly in the next step. Seeing your own extension show up in the toolbar is the moment most beginners realize they actually built something.</p>
<ul><li>Open your browser's extensions page and turn on developer mode.</li><li>Choose load unpacked and select the folder Claude created.</li><li>Try the extension on a real page and note anything that feels off.</li><li>Write down the difference between what happened and what you wanted.</li></ul>
<blockquote><strong>WARNING:</strong> If the extension will not load, the error the browser shows is your friend. Copy that exact message into Claude Code and it will tell you what to fix. Do not delete the folder and start over.</blockquote>
<h2>Step Four and Five: Iterate on the Popup and Permissions, Then Package It</h2>
<p>Now iterate on the popup and permissions. The popup is the little window that opens when you click the extension icon, and permissions are the list of things the extension is allowed to touch. Tell Claude Code plainly what to change: make the button bigger, only run this on certain sites, add a toggle. After each change, reload the extension from the extensions page and test again. Small changes, tested one at a time, is the pattern.</p>
<p>Ask Claude to keep permissions as narrow as possible. An extension should request only what its one job needs and nothing more. When it works the way you want, package it. Ask Claude Code to help you zip the folder or prepare it for the browser's store if you want to share it. For personal use, the unpacked folder already works, so packaging is only for distribution.</p>
<ol><li>Describe one change to the popup or permissions in plain words.</li><li>Ask Claude to keep permissions limited to what the one job needs.</li><li>Reload the extension and test after every change.</li><li>Repeat until it does exactly what you described in step one.</li><li>Package the folder when you are ready to keep or share it.</li></ol>
<p>That is the Extension Starter Path, start to finish. Describe the job, let Claude scaffold, load it unpacked, iterate, and package. Your first extension will be small, and that is exactly right. When it is working, share it in the Claude Code Club community and tell us the one job it does. Seeing what other beginners built is the fastest way to get your next idea. ⚡</p>
<h2>FAQ</h2>
<p><strong>What is the Extension Starter Path?</strong></p><p>The Extension Starter Path is a five-step Claude Code Club method for building a Chrome extension with no prior experience: describe the one job, let Claude scaffold the files, load it unpacked in the browser, iterate on the popup and permissions, and package it. It is designed so a total beginner can go from idea to a working extension.</p>
<p><strong>Do I need to know how to code to build a Chrome extension with Claude Code?</strong></p><p>No. You describe what you want in plain English, and Claude Code writes the manifest, the code, and the popup for you. Your job is to describe the one thing the extension does and to test the result in your browser.</p>
<p><strong>What does load unpacked mean?</strong></p><p>Load unpacked means pointing your browser directly at the folder of files for an extension you are still building, instead of installing it from a store. You turn on developer mode on your browser's extensions page, choose load unpacked, and pick the folder. It is the normal way to test an extension while you build it.</p>
<p><strong>What is a manifest file?</strong></p><p>The manifest is the settings file that tells the browser your extension's name, what it is allowed to do, and which files to run. Claude Code writes it for you, so you do not need to learn its format. It is the one file every extension must have.</p>
<p><strong>Why should I keep permissions narrow?</strong></p><p>An extension should only request access to what its one job actually needs. Narrow permissions are safer and easier to trust, and browsers may warn users about broad ones. Ask Claude Code to request the minimum, and only add more when a feature truly requires it.</p>
<p><strong>Can I use my extension without publishing it to a store?</strong></p><p>Yes. For personal use, the unpacked folder you loaded in developer mode already works and stays in your browser. Packaging and publishing to a store is only needed if you want to share the extension with other people.</p>]]></content:encoded>
    </item>
    <item>
      <title>Client Discovery Questions to Ask Before You Quote an AI Project</title>
      <link>https://www.claudecodeclub.ai/blog/client-discovery-questions-before-you-quote</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/client-discovery-questions-before-you-quote</guid>
      <pubDate>Sun, 28 Jun 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Agency</category>
      <category>Sales</category>
      <category>Clients</category>
      <description><![CDATA[The right client discovery questions turn a guessing game into a confident quote. These are the ten I ask on every discovery call before a number exists.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Ask ten specific discovery questions before you quote, not after.</li><li>Discovery is not a sales call. It is you deciding whether and how to price the work.</li><li>The answers you cannot get are themselves the most important finding.</li></ul>
<h2>Client discovery questions: ask these ten before you quote</h2>
<p>The client discovery questions below are the ones I ask before any number exists, because a quote built on assumptions is a quote built on sand. Discovery is not the friendly warm-up before the real sales pitch. Discovery is the work. It is where you decide whether the project is worth doing, what it will actually take, and whether this is a client you want.</p>
<p>I have spent fifteen years shipping inside teams at Apple, PlayStation and Schwab, and the pattern held everywhere: the projects that went sideways were the ones where nobody asked the uncomfortable questions early. A good discovery call is mostly listening. Your job is to ask the ten things that let you price with your eyes open.</p>
<blockquote><strong>TIP:</strong> Do not quote on the discovery call. Say you will send a proposal. The pause protects you from a number blurted under pressure.</blockquote>
<h2>The Discovery Ten: the questions that decide the quote</h2>
<p>The Discovery Ten is our CCC checklist for a discovery call. Ten questions, asked in roughly this order, that surface the outcome, the constraints, and the risk. You do not need clever wording. You need to actually ask them and to write down the answers.</p>
<ol><li>What does success look like? Get them to describe the result in their own words, the outcome they are buying, not the feature they named.</li><li>Who owns the data? Find out whose data the Claude Code build will touch, where it lives, and whether the person on the call can actually grant access to it.</li><li>What systems must it connect to? Every integration is a dependency you do not fully control. List them now, not during the build.</li><li>Who signs off? Identify the single person whose yes ends the project. If there are three, you have a problem to solve before you quote.</li><li>What is the deadline, and why? A date with a real reason behind it is a constraint. A date with no reason is often movable, and knowing which is which changes your price.</li><li>What is the budget range? Ask plainly. If they will not give a range, you are guessing, and guessing is how you underquote.</li><li>What have they already tried? Their past attempts tell you what is genuinely hard here and where the real friction sits.</li><li>Who maintains it after you leave? A build nobody can maintain is a build that fails in a month. This shapes your handover and your scope.</li><li>What could go wrong? Ask them directly. Their fears reveal the edge cases and the reliability work you will need to price.</li><li>What happens if you do nothing? This tells you what the project is really worth to them, which tells you whether your number will land.</li></ol>
<blockquote><strong>WARNING:</strong> If a client refuses to name a sign-off person or a budget range, treat it as a finding. Both refusals predict a painful project.</blockquote>
<h2>Why each question earns its place</h2>
<p>Every question in the Discovery Ten either sizes the work or sizes the risk. The success and do-nothing questions tell you what the outcome is worth. The data, systems, and sign-off questions tell you where the project can stall. The maintenance and what-could-go-wrong questions tell you how much of the invisible last mile you have to build and charge for.</p>
<p>Notice that only one of the ten is about money. That is deliberate. If you understand the outcome and the constraints, the budget conversation gets easier, because you are talking about value and not just cost.</p>
<h2>Reading the answers you do not get</h2>
<p>The most useful moments in discovery are often the non-answers. A client who cannot say who owns the data usually does not control it. A client who dodges the budget range is often shopping on price alone. A client who cannot name a single sign-off is describing a committee, and committees turn small builds into long ones.</p>
<p>None of these are automatic reasons to walk. They are reasons to price differently, to add a discovery phase, or to slow down. A missing answer is data. Write it down and let it shape the number.</p>
<blockquote><strong>TIP:</strong> Send a short recap after the call listing what you heard and what is still open. It confirms you listened and it flushes out anything they forgot to mention.</blockquote>
<h2>Run the Ten every time, then trade notes</h2>
<p>The Discovery Ten only works if it becomes a habit. Keep it open on the call. Tick the questions off. The moment you start freestyling to seem relaxed is the moment you skip the one question that would have saved the project.</p>
<p>Different niches surface different landmines, so the way you weight these questions will evolve. If you are refining your own discovery process for AI work, bring your version to the CCC community and compare notes. The eleventh question you are missing is probably one someone else learned the hard way.</p>
<h2>FAQ</h2>
<p><strong>What are the most important client discovery questions?</strong></p><p>The two that carry the most weight are what success looks like and what happens if they do nothing. Together they tell you the outcome the client is buying and what it is genuinely worth to them. From there the constraint and risk questions size the work.</p>
<p><strong>Should I quote a price on the discovery call?</strong></p><p>No. Say you will send a proposal after the call. Quoting live puts you under pressure and leads to numbers you regret. The pause also lets you actually think through the answers you just heard.</p>
<p><strong>What if a client will not share their budget range?</strong></p><p>Ask once, plainly. If they still refuse, treat it as a finding rather than a dead end. A hidden budget often signals price shopping, so you may price more conservatively or add a small discovery phase before committing to a full number.</p>
<p><strong>Why ask who maintains the build after I leave?</strong></p><p>Because a Claude Code build that nobody on the client side can maintain will fail soon after handover, and that reflects on you. The answer shapes how much documentation, training, and handover work you scope and charge for.</p>
<p><strong>How long should a discovery call be?</strong></p><p>Long enough to get honest answers to the Discovery Ten, usually a focused session rather than a rushed fifteen minutes. Keep the checklist open and let the client talk. Most of the value is in listening, not pitching.</p>
<p><strong>What does the do-nothing question actually reveal?</strong></p><p>It reveals the cost of the status quo, which is the real value of your project. If nothing bad happens when they do nothing, the urgency is low and your number needs to reflect that. If the status quo is expensive, your work is worth more.</p>]]></content:encoded>
    </item>
    <item>
      <title>10 Claude Code Mistakes Beginners Make (And How to Fix Them)</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-mistakes-beginners-make</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-mistakes-beginners-make</guid>
      <pubDate>Sun, 28 Jun 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Beginners</category>
      <category>Mistakes</category>
      <category>Tutorial</category>
      <description><![CDATA[Most Claude Code mistakes are not about the tool, they are about how you brief it. Here are the 10 mistakes beginners make most, the exact fix for each, and the CCC brief, scope, verify framework that prevents almost all of them.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Most Claude Code mistakes are not about the tool, they are about how you brief it - vague goals, no way to verify, and no context discipline cause the majority of bad results.</li><li>The CCC fix is one habit repeated everywhere: brief, scope, verify. Tell it exactly what done looks like, hand it only the files that matter, and give it a way to check its own work.</li><li>Below are the 10 mistakes beginners make most, each paired with the exact fix you can apply on your next prompt.</li></ul>
<h2>The most common Claude Code mistakes come from the brief, not the tool</h2>
<p>Most Claude Code mistakes are not about the tool, they are about how you brief it. When I watch a beginner get a bad result, the agent almost always did exactly what it was told - the problem was that it was told something vague, broad, or impossible to check. Fix the brief and the same model that frustrated you yesterday ships clean work today.</p>
<p>Inside Claude Code Club we teach one habit that prevents most of these mistakes, and we call it brief, scope, verify. Brief means tell the agent exactly what done looks like. Scope means hand it only the files and context that matter. Verify means give it a way to check its own work before it hands the result to you. Almost every mistake below is a missing piece of that framework.</p>
<blockquote><strong>TIP:</strong> If you remember one thing from this post, remember brief, scope, verify. Run every prompt through it - what does done look like, which files are in play, and how will the agent know it worked - and the other nine fixes mostly take care of themselves.</blockquote>
<h2>Mistake 1 and 2: a vague goal with no finish line, and no way to verify</h2>
<p>The two biggest Claude Code mistakes are asking for something with no finish line and giving the agent no way to check its work. 'Improve this code' has no done state, so the agent guesses what improve means and you get a change you did not want. And without a test or an expected output, the agent cannot tell a working result from a broken one, so it ships confidently wrong code.</p>
<p>The fix for both is in the brief. Replace 'improve this' with 'add input validation to the signup form and make the existing tests pass'. That gives the agent a clear finish line and a thing to verify against in the same sentence. When the agent can run a test, a build, or inspect an output, its loop self-corrects instead of stopping at its first guess.</p>
<h2>Mistake 3 and 4: no CLAUDE.md file, and dumping the whole codebase as context</h2>
<p>Beginners skip the CLAUDE.md file, then wonder why the agent forgets their stack, their conventions, and how they like things done. CLAUDE.md is the memory file the agent reads first, so without it you repeat the same context in every prompt and still get inconsistent results. The fix is to write one early, even a short one. Start from our [CLAUDE.md templates by project type](/blog/claude-md-templates-by-project-type) and tune from there.</p>
<p>The flip side mistake is dumping the entire codebase into context and hoping the agent finds the relevant part. More context is not better context. A bloated prompt buries the files that matter and makes the agent slower and less accurate. The fix is to scope: point it at the two or three files in play and name the function or feature, not the whole repo.</p>
<h2>Mistake 5 and 6: ignoring context bloat, and not using skills</h2>
<p>Letting a single session run forever is a quiet Claude Code mistake. As a conversation grows, the context fills with old, irrelevant work and the agent starts losing the thread. The fix is to manage context deliberately - clear the slate for a fresh task and compact a long session to keep the useful parts. See which commands do this in our [Claude Code slash commands you use every day](/blog/claude-code-slash-commands-you-use-every-day).</p>
<p>The other half is reinventing work the community already packaged as skills. Beginners hand-build the same review, planning, and formatting routines that a skill would do in one call. The fix is to install a few proven skills before you start grinding by hand. Our [Claude Code skills to install first](/blog/claude-code-skills-to-install-first) is the shortlist I give every new member.</p>
<h2>Mistake 7 through 10: trusting blindly, no checkpoints, fighting the format, and quitting after one prompt</h2>
<p>The last four mistakes are about how you work with the result. Blindly trusting output means you ship code you never read - always review before you accept, especially anything that touches money, auth, or data. No git checkpoints means a big change you cannot undo - commit before any large edit so you can roll back in one command. Fighting the format means forcing the agent into a workflow it resists instead of matching the approach that already works. And quitting after one prompt is the most common one of all - the agent runs a loop, so the second and third prompt are where the good work usually happens.</p>
<p>Iterating is not a sign you briefed it wrong - it is how the agent is meant to be used. It gathers context, acts, checks the result, and repeats. When you treat a flat first answer as the end, you stop right before the payoff. Understanding that cycle changes how you work, and we break it down in [what are agent loops in Claude Code](/blog/claude-code-agent-loops).</p>
<blockquote><strong>WARNING:</strong> The single most expensive habit is accepting output you did not read, with no git checkpoint to undo it. Commit before big changes and review every diff. That one pairing saves you from almost every 'the agent broke my project' story.</blockquote>
<h2>The 10 Claude Code mistakes and their fixes, at a glance</h2>
<p>Here is the full list in one table you can save and check before your next session. Every fix traces back to brief, scope, verify - the more of these you build into how you work, the faster you climb.</p>
<table><caption>10 Claude Code mistakes beginners make and the fix for each</caption><thead><tr><th>The mistake</th><th>The fix</th></tr></thead><tbody><tr><td>Vague goal with no finish line</td><td>State exactly what done looks like in the prompt</td></tr><tr><td>No way for the agent to verify its work</td><td>Name a test, build, or output it can check against</td></tr><tr><td>No CLAUDE.md file</td><td>Write one early so the agent keeps your context</td></tr><tr><td>Dumping the whole codebase as context</td><td>Scope to the few files and the feature in play</td></tr><tr><td>Ignoring context bloat in a long session</td><td>Clear for a new task, compact a long one</td></tr><tr><td>Not using skills</td><td>Install proven skills instead of grinding by hand</td></tr><tr><td>Blindly trusting output</td><td>Review every diff before you accept it</td></tr><tr><td>No git checkpoints before big changes</td><td>Commit first so you can undo in one command</td></tr><tr><td>Fighting the format instead of matching it</td><td>Use the workflow the agent already does well</td></tr><tr><td>Giving up after one prompt</td><td>Iterate - the second and third prompt do the work</td></tr></tbody></table>
<p>Avoiding these is what separates the levels of skill with this tool. If you want to see where you are and what is next, read [the 5 levels of Claude Code](/blog/the-5-levels-of-claude-code), and keep the [Claude Code cheat sheet](/blog/claude-code-cheat-sheet) open while you work. None of these mistakes are permanent - they are just habits you have not built yet, and every one of them is fixable on your very next prompt.</p>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club we walk you past every one of these mistakes with a community that reviews your work and a course that builds the brief, scope, verify habit from day one. Start with the [curriculum](/curriculum) or join us at https://www.skool.com/claudecodeclub/about.</blockquote>
<h2>FAQ</h2>
<p><strong>What is the most common Claude Code mistake beginners make?</strong></p><p>Giving a vague goal with no finish line. 'Improve this code' has no done state, so the agent guesses what you meant and returns a change you did not want. The fix is to state exactly what done looks like, like 'add input validation to the signup form and make the existing tests pass'.</p>
<p><strong>Why does Claude Code keep giving me bad results?</strong></p><p>Almost always because of the brief, not the tool. Vague goals, no way for the agent to verify its work, and dumping too much context are the top causes. Run every prompt through brief, scope, verify - what does done look like, which files matter, and how will the agent check it worked.</p>
<p><strong>Do I really need a CLAUDE.md file?</strong></p><p>Yes, even a short one. CLAUDE.md is the memory file the agent reads first, so it keeps your stack, conventions, and preferences without you repeating them every prompt. Skipping it is why results feel inconsistent. Start from a template by project type and tune it as you go.</p>
<p><strong>Should I give Claude Code my whole codebase as context?</strong></p><p>No. More context is not better context. Dumping the entire repo buries the files that matter and makes the agent slower and less accurate. Scope it down to the two or three files in play and name the function or feature you are working on.</p>
<p><strong>Is it normal to need more than one prompt?</strong></p><p>Yes, it is how the tool is meant to work. Claude Code runs a loop - gather, act, verify, repeat - so the second and third prompt are usually where the good work happens. Quitting after one prompt stops you right before the payoff.</p>
<p><strong>How do I avoid breaking my project with Claude Code?</strong></p><p>Commit to git before any large change so you can undo in one command, and review every diff before you accept it. Never ship output you did not read, especially anything touching money, auth, or data. That single pairing prevents most 'the agent broke my project' stories.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Productize a Service With Claude Code (3 Templates)</title>
      <link>https://www.claudecodeclub.ai/blog/how-to-productize-a-service-with-claude-code</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/how-to-productize-a-service-with-claude-code</guid>
      <pubDate>Sun, 28 Jun 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Claude Code</category>
      <category>Agency</category>
      <category>Productize</category>
      <category>Business</category>
      <description><![CDATA[To productize a service means turning custom, hourly work into a fixed, repeatable offer with a clear scope and price. Here is why it scales an agency, the CCC productization loop, and 3 productized offer templates you can launch this week.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>To productize a service means turning custom, hourly work into a fixed, repeatable offer with a clear scope and a clear price.</li><li>Claude Code makes each deliverable repeatable - the same prompts and templates every time - which is what lets a productized offer scale without scaling your hours.</li><li>Below is the CCC productization loop and 3 ready-to-launch offer templates: a fixed-scope build sprint, a monthly care plan, and a self-serve audit.</li></ul>
<h2>What it means to productize a service</h2>
<p>To productize a service means turning custom, hourly work into a fixed, repeatable offer with a clear scope and a clear price. Instead of quoting every project from scratch and billing by the hour, you package one outcome, name it, set the boundaries of what is and is not included, and sell it like a product. The buyer knows exactly what they get and what it costs before they say yes.</p>
<p>Custom work is sold by the hour and rebuilt every time. A productized service is sold by the outcome and delivered the same way every time. That single shift - from bespoke to repeatable - is what turns an agency from a job you own into a business that scales.</p>
<h2>Why productizing scales an agency</h2>
<p>Productizing scales an agency because it makes margin, delivery, and sales predictable. When the scope is fixed, your margin stops swinging with how long a project happened to take. When the deliverable is the same every time, delivery gets faster and easier to hand off. And when the offer has a name and a price, selling it gets simpler because the buyer is comparing one clear thing instead of negotiating a custom quote.</p>
<ul><li>Predictable margin: a fixed scope and price means a fixed cost to deliver, so your profit stops depending on how long the work ran.</li><li>Easier delivery: the same deliverable every time means a repeatable process you can refine, document, and eventually hand to someone else.</li><li>Easier to sell: a named offer with a clear price shortens the sales conversation - the buyer evaluates an outcome, not an estimate.</li><li>Easier to scale: once delivery is repeatable, you grow by selling more of the same offer instead of inventing a new project each time.</li></ul>
<h2>The CCC productization loop: standardize, template, price</h2>
<p>Claude Code is what makes a productized service genuinely repeatable, because it runs the same prompts and templates on every engagement. The bottleneck in productizing has always been consistency - a human delivers it a little differently each time. When the work runs through saved prompts and templates, the deliverable comes out the same whether it is your first client or your fortieth. Inside Claude Code Club we call the method the CCC productization loop, and it has three steps.</p>
<ol><li>Standardize the deliverable: define exactly what the client receives, down to the format and the boundaries. If you cannot describe the output in one sentence, it is not productized yet.</li><li>Template the prompts: capture the prompts, the CLAUDE.md, and the slash commands that produce that deliverable, so every engagement runs the same way instead of from memory.</li><li>Price the outcome: set one price for the result, not for your hours, so the buyer pays for the value and your margin stays fixed.</li></ol>
<blockquote><strong>TIP:</strong> The loop is the unlock: standardize so you know what you are selling, template so Claude Code can deliver it the same way every time, and price the outcome so your margin holds. Skip the templating step and you are back to bespoke work with extra steps.</blockquote>
<h2>Template 1: the fixed-scope build sprint</h2>
<p>The fixed-scope build sprint is the easiest productized offer to start with. You sell one clearly bounded build, delivered in a fixed window, for a fixed price. The scope is the product: a defined feature, a landing page, an integration, or an automation - one outcome, not an open-ended engagement.</p>
<ul><li>Scope: one defined build with explicit boundaries on what is and is not included, delivered in a set window such as one or two weeks.</li><li>What is fixed: the deliverable, the timeline, and the price. Anything outside the named scope becomes the next sprint, not a free add-on.</li><li>Price framing: a flat project fee priced to the outcome. Position it as your entry tier - the offer that lets a new client work with you at a known cost.</li><li>Claude Code powers it: a build-spec prompt that turns the client brief into a plan, a project CLAUDE.md so the agent holds the conventions, and the build loop that ships and verifies the work.</li></ul>
<p>Pricing the sprint is the part people get wrong - they default to hours. Price the outcome instead, using the approach in [how to price a Claude Code agency project](/blog/how-to-price-a-claude-code-agency-project).</p>
<h2>Template 2: the monthly care plan</h2>
<p>The monthly care plan is the retainer that turns one-off builds into recurring revenue. The client pays a fixed monthly fee for ongoing maintenance, small changes, and improvements within a defined envelope. It is the most valuable template because it makes your revenue predictable month to month.</p>
<ul><li>Scope: a defined monthly envelope - updates, fixes, small features, and monitoring - with clear limits so it does not silently become unlimited custom work.</li><li>What is fixed: the monthly price and the boundaries of the envelope. Larger requests convert into a separate build sprint.</li><li>Price framing: a recurring monthly fee, usually tiered, so a client can step up as their needs grow. Position it as the natural next step after a build sprint.</li><li>Claude Code powers it: saved maintenance prompts, a shared CLAUDE.md so context carries between sessions, and a regular review loop that catches issues before the client does.</li></ul>
<p>The care plan runs on a small set of automations you reuse across every client - the same recurring checks and reports every month. Build that stack from [AI automations every agency should steal](/blog/ai-automations-every-agency-should-steal).</p>
<h2>Template 3: the self-serve audit, and how to launch this week</h2>
<p>The self-serve audit is the most leveraged template because it delivers a report instead of a build, so it barely costs you time. The client buys a structured review - of a codebase, a website, a funnel, or an automation - and receives a clear report with findings and recommendations. It also works as a paid front door: the audit naturally surfaces the work that becomes a build sprint or a care plan.</p>
<ul><li>Scope: a structured review of one defined thing, delivered as a fixed report format every time.</li><li>What is fixed: the report template, the turnaround, and the price. The output looks the same for every client, which is what makes it self-serve.</li><li>Price framing: a low, flat entry price that is easy to say yes to. Position it as the lead offer that opens the door to your higher tiers.</li><li>Claude Code powers it: an audit prompt pack and a report template, so the agent runs the same review and fills the same structure on every order.</li></ul>
<p>To launch your first productized offer this week, pick one of these three, write the one-sentence deliverable, save the prompts that produce it, and put a single price on the page. Do not wait for all three - one named, priced offer beats a menu of maybes. Get the delivery prompts running with [5 Claude Code workflows that get you paid](/blog/5-claude-code-workflows-that-get-you-paid), build the rest of your stack from the [agency AI tech stack for 2026](/blog/agency-ai-tech-stack-2026), and put it in front of clients with the [client proposal template pack for Claude Code](/blog/client-proposal-template-pack-claude-code).</p>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club we help you stand up your first productized offer end to end - the deliverable, the prompt templates, and the pricing - with operators who have already done it. Start with the [curriculum](/curriculum) or join us at https://www.skool.com/claudecodeclub/about.</blockquote>
<h2>FAQ</h2>
<p><strong>What does it mean to productize a service?</strong></p><p>To productize a service means turning custom, hourly work into a fixed, repeatable offer with a clear scope and a clear price. Instead of quoting every project from scratch, you package one outcome, name it, set what is included, and sell it like a product so the buyer knows exactly what they get and what it costs.</p>
<p><strong>Why should an agency productize its services?</strong></p><p>Because it makes margin, delivery, and sales predictable. A fixed scope means a fixed cost to deliver, so profit stops depending on how long the work ran. The same deliverable every time makes delivery faster and easier to hand off, and a named, priced offer shortens the sales conversation.</p>
<p><strong>How does Claude Code help productize a service?</strong></p><p>Claude Code makes each deliverable repeatable by running the same prompts and templates on every engagement. Consistency has always been the bottleneck in productizing, and saved prompts plus a shared CLAUDE.md mean the output comes out the same whether it is your first client or your fortieth.</p>
<p><strong>What is the CCC productization loop?</strong></p><p>It is the three-step method we teach for productizing with Claude Code: standardize the deliverable so you know exactly what you sell, template the prompts so the agent delivers it the same way every time, and price the outcome so the buyer pays for the result and your margin stays fixed.</p>
<p><strong>What is the easiest productized offer to start with?</strong></p><p>The fixed-scope build sprint - one clearly bounded build, in a fixed window, for a flat price. The scope is the product, so there is no open-ended commitment. It works as your entry tier and naturally leads into a monthly care plan or a self-serve audit.</p>
<p><strong>How do I launch my first productized offer this week?</strong></p><p>Pick one of the three templates, write the deliverable in one sentence, save the Claude Code prompts that produce it, and put a single price on the page. One named, priced offer beats a menu of maybes, so ship one this week and refine it with real clients.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Debug With Claude Code: The Bug Triage Loop That Actually Works</title>
      <link>https://www.claudecodeclub.ai/blog/how-to-debug-with-claude-code</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/how-to-debug-with-claude-code</guid>
      <pubDate>Sat, 27 Jun 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Debugging</category>
      <category>Workflow</category>
      <description><![CDATA[Learn how to debug with Claude Code using a repeatable five-step loop, so you stop guessing and start fixing bugs with calm, one change at a time.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Debugging with Claude Code works best as a loop, not a random hunt: reproduce, isolate, hypothesize, fix small, verify.</li><li>Open the Claude desktop app, describe the exact broken behavior, and let Claude read the relevant files instead of guessing.</li><li>Apply one small fix at a time and confirm the bug is truly gone before moving on.</li></ul>
<h2>How to Debug With Claude Code: Follow the Bug Triage Loop</h2>
<p>Here is how to debug with Claude Code: run the Bug Triage Loop, a repeatable five-step method we teach at Claude Code Club. Instead of poking at code and hoping, you reproduce the bug, isolate where it breaks, form one hypothesis, apply the smallest fix, and verify it is actually gone. The loop turns a scary error into a short checklist.</p>
<p>The Bug Triage Loop is our own framework, and it is deliberately boring. Boring is good when something is broken. You are not trying to be clever. You are trying to change one thing, watch what happens, and keep the parts that work. Claude Code is the partner that reads the files and suggests the change, and you stay in control of what actually gets applied.</p>
<ol><li>Reproduce it: make the bug happen on purpose so you can see it every time.</li><li>Isolate where it breaks: narrow it down to one file, one function, or one step.</li><li>Form one hypothesis: state a single, testable guess about the cause.</li><li>Apply the smallest fix: change the least amount of code that could solve it.</li><li>Verify it is actually gone: reproduce your original steps and confirm the bug no longer happens.</li></ol>
<blockquote><strong>TIP:</strong> Do the whole loop inside the Claude desktop app first. Describe the bug in plain words, let Claude read your project, and only reach for the terminal if you actually want to. Most everyday builders never need to.</blockquote>
<h2>Step One: Reproduce the Bug on Purpose</h2>
<p>Start by reproducing the bug on purpose. A bug you can trigger every time is a bug you can fix. Tell Claude Code the exact steps: what you clicked, what you typed, what you expected, and what happened instead. Specifics matter more than feelings here, so write the real error text, not a summary of it.</p>
<p>In the Claude desktop app, describe the reproduction steps in plain words and paste the full error message if you have one. A bug that shows up reliably gives you something solid to test against. If you can only make it happen sometimes, spend a little more time nailing down the exact conditions before you move on, because an unpredictable bug is nearly impossible to verify as fixed later.</p>
<ul><li>Paste the full error message, including the file name and line if you have it.</li><li>Describe the exact steps that trigger the bug, in order.</li><li>Say what you expected to happen so Claude knows the target behavior.</li><li>Confirm the bug happens every time before moving to the next step.</li></ul>
<blockquote><strong>WARNING:</strong> Do not skip past a bug that only appears sometimes. If you cannot reproduce it on demand, you cannot prove you fixed it. Pin down the conditions first.</blockquote>
<h2>Step Two: Isolate Where It Breaks</h2>
<p>Once it reproduces reliably, isolate where it breaks. Ask Claude to trace the behavior back to the smallest possible spot: a single file, a single function, a single line. In the desktop app you can point Claude at your project and let it read the relevant code, then ask which piece is most likely responsible. Narrowing the search area is often ninety percent of the work.</p>
<p>Resist the urge to change anything yet. This step is only about finding the location, not fixing it. Ask Claude to point at the single most likely source and to explain how it reached that conclusion. When you know exactly where the problem lives, the fix almost writes itself, and you avoid touching parts of the project that were never broken.</p>
<blockquote><strong>WARNING:</strong> Do not let Claude fix five things at once while you are still isolating. A wide change makes it impossible to know what actually solved the problem. Narrow first, then fix.</blockquote>
<h2>Step Three: Form One Hypothesis Before You Touch Anything</h2>
<p>Before you change a single line, form one hypothesis. A hypothesis is a plain-English guess you can test, like the date is being read as text instead of a number, or the button runs before the data has loaded. One guess, not five. This is the step most people skip, and skipping it is why debugging feels like flailing.</p>
<p>Ask Claude Code to give you its single best guess for the cause and to explain why in one or two sentences. If it lists several possibilities, ask it to rank them and pick the most likely one to test first. You are looking for a clear statement you can prove right or wrong, because a testable guess is what keeps the loop moving forward instead of in circles.</p>
<blockquote><strong>TIP:</strong> Write your hypothesis down in one sentence. If you cannot state it in one sentence, you have not isolated the bug enough yet. Go back to step two.</blockquote>
<h2>Step Four and Five: Apply the Smallest Fix, Then Verify</h2>
<p>Now apply the smallest fix that could prove your hypothesis. Ask Claude Code for the minimal change, not a rewrite. A small fix has two gifts: it is easy to understand, and if it does not work, it is easy to undo. Review the change before you accept it so you know exactly what moved. You stay the decision-maker, and Claude does the typing.</p>
<p>Then verify it is actually gone. Run your original reproduction steps from step one and confirm the bug does not happen. This sounds obvious, but people constantly assume a fix worked without re-testing it. If the bug is still there, your hypothesis was wrong, which is fine. Go back to step three with what you just learned and form a new one.</p>
<ol><li>Ask for the smallest possible change tied to your one hypothesis.</li><li>Review the change before accepting it so you understand what moved.</li><li>Re-run the exact steps that caused the bug.</li><li>Confirm the bug is gone and nothing else broke.</li><li>If it is not fixed, form a new hypothesis and run the loop again.</li></ol>
<p>That is the whole Bug Triage Loop. Reproduce, isolate, hypothesize, fix small, verify. When you get stuck on a bug that will not budge, bring it to the Claude Code Club community and post your steps and your hypothesis. Someone has almost certainly seen it, and the loop gives everyone a shared way to help you. ⚡</p>
<h2>FAQ</h2>
<p><strong>What is the Bug Triage Loop?</strong></p><p>The Bug Triage Loop is a five-step debugging method from Claude Code Club: reproduce it, isolate where it breaks, form one hypothesis, apply the smallest fix, and verify it is actually gone. It replaces random guessing with a repeatable checklist. You run it with Claude Code doing the reading and suggesting while you make the calls.</p>
<p><strong>Do I need to use the terminal to debug with Claude Code?</strong></p><p>No. You can debug entirely inside the Claude desktop app by describing the bug and letting Claude read your project files. The terminal is an optional path for people who prefer it, but it is never required to get value.</p>
<p><strong>Why should I only apply one small fix at a time?</strong></p><p>One small fix is easy to understand and easy to undo. If you change five things at once and the bug goes away, you have no idea which change did it. Small changes keep the cause and effect clear.</p>
<p><strong>What if Claude Code fixes the bug but breaks something else?</strong></p><p>That is why the verify step re-runs your original steps and checks that nothing else broke. If a new problem appears, treat it as a fresh bug and run the loop again on it. Small fixes make this rare and easy to trace.</p>
<p><strong>How do I reproduce a bug I only saw once?</strong></p><p>Write down everything you remember about what you did right before it happened, then try those exact steps again. Ask Claude Code to help you find the conditions that trigger it. A bug you cannot reproduce is a bug you cannot reliably fix, so this step is worth the patience.</p>
<p><strong>What if my hypothesis is wrong?</strong></p><p>A wrong hypothesis is normal and useful, because it rules out a cause and teaches you something. Go back to the hypothesis step, use what you just learned, and form a new one. The loop is designed to be run more than once.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Scope a Claude Code Project Without Underquoting</title>
      <link>https://www.claudecodeclub.ai/blog/how-to-scope-a-claude-code-client-project</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/how-to-scope-a-claude-code-client-project</guid>
      <pubDate>Sat, 27 Jun 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Agency</category>
      <category>Scoping</category>
      <category>Clients</category>
      <description><![CDATA[Learning how to scope a Claude Code project is the difference between a profitable build and a quiet loss. This is the method I use to size work before a number ever leaves my mouth.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Scope the outcome the client actually wants first, then the deliverables, then the unknowns.</li><li>Size each piece of work as a rung on a ladder and add a buffer for anything you cannot see yet.</li><li>Never quote until every unknown is either priced or explicitly parked.</li></ul>
<h2>How to scope a Claude Code project: pin the outcome, then size the rungs</h2>
<p>Here is how to scope a Claude Code project without underquoting: pin the outcome the client actually wants, break it into deliverables, mark every unknown before you price it, then size each rung and add a buffer for the parts you cannot see yet. Underquoting almost never comes from bad math. It comes from quoting the thing the client asked for instead of the thing they actually need, and from pricing the parts you understand while waving past the parts you do not.</p>
<p>I have spent fifteen years shipping inside teams at Apple, PlayStation and Schwab, and the projects that lost money were rarely the hard ones. They were the ones that looked simple and hid a swamp underneath. A clear scope is not paperwork. It is the thing that keeps you solvent.</p>
<blockquote><strong>WARNING:</strong> If you cannot describe what done looks like in one sentence the client would sign off on, you are not ready to quote yet.</blockquote>
<h2>The Scope Ladder: a five-rung method for pricing a build</h2>
<p>The Scope Ladder is our CCC method for turning a vague request into a defensible number. Each rung has to hold weight before you climb to the next. You work top down, from outcome to price, so the number rests on the outcome and not on your optimism.</p>
<ol><li>Pin the outcome the client actually wants. Not the feature they named, the result they are buying. Fewer hours on a task, faster replies to customers, a report that writes itself. Write it as one plain sentence.</li><li>Break it into deliverables. List the concrete artefacts that produce that outcome: the Claude Code agent, the prompt library, the integration, the handover doc. If it is not on the list, it is not in the price.</li><li>Mark the unknowns. Go through every deliverable and flag anything you have not personally done before or cannot confirm without access. An unmarked unknown is where the money leaks.</li><li>Size each rung. Estimate the effort for each deliverable on its own. Small pieces are easier to size honestly than one big lump, and a lump always gets rounded down.</li><li>Add a buffer for the unknowns. The parts you flagged in rung three carry the most risk, so they carry the most padding. This is not a fudge. It is priced risk.</li></ol>
<blockquote><strong>TIP:</strong> Size the deliverables you understand and the unknowns separately. Mixing them lets the confident parts hide the risky parts.</blockquote>
<h2>Where scope goes wrong with AI builds specifically</h2>
<p>AI builds carry a specific trap. The demo works in ten minutes and the client assumes the whole thing is ten minutes. The last mile, making a Claude Code workflow reliable across real inputs, edge cases, and the client's actual data, is most of the work and none of the wow.</p>
<p>Scope that last mile explicitly. Put reliability, testing against real examples, and handover on the deliverables list as named rungs. If they are invisible, the client will not value them and you will not get paid for them.</p>
<p>The other trap is access. A large share of AI work depends on data and systems you do not control on day one. Treat every dependency you cannot verify as an unknown and price it as risk, not as a rounding error.</p>
<h2>Turning the ladder into a number the client will accept</h2>
<p>Once the rungs are sized, the number almost writes itself. Present it as a fixed fee tied to the deliverables, not an open hourly count, so the client is buying an outcome and not renting your time. A fixed fee also protects you: if you get faster, you keep the upside.</p>
<p>For a piece where the unknowns are genuinely large, quote a small fixed fee for a short discovery phase first. You learn what you are actually dealing with, and you get paid to reduce your own risk before you commit to the full number. Clients respect this. It reads as competence, not hesitation.</p>
<blockquote><strong>TIP:</strong> State clearly what is not included. The exclusions list protects your scope as much as the inclusions list does.</blockquote>
<h2>Make it a habit, then compare notes</h2>
<p>The Scope Ladder is only useful if you run it every time, including on the small jobs that feel too simple to bother with. Those are the ones that quietly eat weekends. Five rungs, top to bottom, before any number leaves your mouth.</p>
<p>Every agency owner has a story about the project that looked simple and was not. If you are scoping a Claude Code build right now and want a second pair of eyes on your rungs, bring it to the CCC community and compare notes. Someone there has almost certainly priced something close to it.</p>
<h2>FAQ</h2>
<p><strong>What is the Scope Ladder?</strong></p><p>The Scope Ladder is a CCC method for scoping a Claude Code project in five steps. You pin the outcome, break it into deliverables, mark the unknowns, size each rung, then add a buffer for the unknowns. It builds your price from the outcome up so the number is defensible.</p>
<p><strong>How do I avoid underquoting an AI build?</strong></p><p>Underquoting usually comes from pricing the parts you understand and skipping the parts you do not. Mark every unknown before you quote and price it as risk. Scope the reliability and handover work as named deliverables, because that last mile is most of the effort.</p>
<p><strong>Should I charge fixed price or hourly for a Claude Code project?</strong></p><p>A fixed fee tied to deliverables is usually stronger. The client buys an outcome instead of renting your time, and you keep the upside if you get faster. Reserve hourly for genuinely open-ended work where the scope cannot be pinned yet.</p>
<p><strong>What if the client's scope is still vague?</strong></p><p>Quote a small fixed fee for a short discovery phase first. You get paid to reduce your own risk, learn what you are actually dealing with, and then quote the full build with confidence. It reads as competence, not hesitation.</p>
<p><strong>How big should the buffer for unknowns be?</strong></p><p>There is no single number. The buffer should scale with how many unknowns you flagged and how far outside your experience they sit. The point is that the buffer is priced risk on the specific unmarked parts, not a vague pad on the whole job.</p>
<p><strong>Do I really need to scope the small jobs?</strong></p><p>Yes. The small jobs that look too simple to formally scope are the ones that quietly run over and eat your margin. Running the ladder takes minutes and it catches the hidden swamp before you commit to a number.</p>]]></content:encoded>
    </item>
    <item>
      <title>12 Claude Code Slash Commands You'll Use Every Day</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-slash-commands-you-use-every-day</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-slash-commands-you-use-every-day</guid>
      <pubDate>Sat, 27 Jun 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Slash Commands</category>
      <category>Productivity</category>
      <category>Reference</category>
      <description><![CDATA[These are the Claude Code slash commands I reach for every single day, what each one does in plain language, and when to use it. Save this as your quick reference, then build your own custom command on top.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Claude Code slash commands are short typed commands, each starting with a slash, that control the session instead of asking the agent to do work - things like clearing context, setting up a project, or switching models.</li><li>I lean on about a dozen of them every day. The two that matter most for keeping the agent sharp are /clear and /compact - I call this habit command hygiene.</li><li>Below is a copy-paste reference table, plain-language notes on the highest-value commands, and how to build your own custom slash command.</li></ul>
<h2>What are Claude Code slash commands?</h2>
<p>Claude Code slash commands are short commands you type, each starting with a slash, that tell the session what to do instead of asking the agent to write code. Where a normal prompt says 'fix this bug', a slash command says 'clear the conversation' or 'set up this project' or 'switch the model'. They run the harness, not the model.</p>
<p>I use them in the desktop app the same way I use them in the terminal: type a slash, pick the command, hit enter. Once a few of these become muscle memory, your sessions get faster and your context stays clean. That is the whole point - slash commands are how you stay in control of a long working session.</p>
<p>You do not need to memorize all of them. You need about twelve. Below is the set I actually reach for every day, what each one does, and the moment I reach for it.</p>
<h2>The 12 Claude Code slash commands I use every day</h2>
<p>Here is the reference table. Each row is a command I use in real sessions, what it does in plain language, and when to reach for it. Save or pin this - it is meant to live next to your editor.</p>
<table><caption>Everyday Claude Code slash commands</caption><thead><tr><th>Command</th><th>What it does</th><th>When to use it</th></tr></thead><tbody><tr><td>/help</td><td>Lists the available commands and basic usage.</td><td>When you forget a command name or are brand new to a session.</td></tr><tr><td>/clear</td><td>Clears the current conversation and starts fresh.</td><td>When you switch to a new task and the old context is just noise.</td></tr><tr><td>/compact</td><td>Summarizes the conversation so far to free up context.</td><td>When a long session is getting heavy but you still need its history.</td></tr><tr><td>/init</td><td>Sets up a CLAUDE.md memory file for the current project.</td><td>On day one in a new repo, so the agent knows your project.</td></tr><tr><td>/review</td><td>Asks Claude to review code or a change.</td><td>Before you ship - a second set of eyes on a diff or a file.</td></tr><tr><td>/agents</td><td>Manages subagents you can hand focused work to.</td><td>When a task is big enough to split into specialized helpers.</td></tr><tr><td>/skills</td><td>Manages reusable skills the agent can call.</td><td>When you want a repeatable capability available across sessions.</td></tr><tr><td>/mcp</td><td>Manages connected MCP servers and tools.</td><td>When you want Claude to reach an outside tool or data source.</td></tr><tr><td>/config</td><td>Opens your Claude Code settings.</td><td>When you want to change how the session behaves.</td></tr><tr><td>/model</td><td>Switches which Claude model the session uses.</td><td>When you want more reasoning power or a faster, lighter pass.</td></tr><tr><td>/cost</td><td>Shows usage for the current session.</td><td>When you want to keep an eye on what a long session is using.</td></tr><tr><td>/resume</td><td>Picks up a previous conversation.</td><td>When you want to continue work you started earlier.</td></tr></tbody></table>
<p>Commands evolve as Claude Code does, so type [/help](/blog/claude-code-cheat-sheet) inside your own session to see exactly what is available to you today. The dozen above are the stable core I keep coming back to.</p>
<h2>Command hygiene: why /clear and /compact run my day</h2>
<p>The two commands that change your results the most are /clear and /compact, because they manage the agent's context. I call the habit of using them often command hygiene, and it is the single fastest way to get sharper output without changing anything else.</p>
<p>/clear wipes the conversation and gives you a clean slate. I use it every time I switch to a new task. A session full of an old, unrelated problem drags the agent off course - clearing it removes that drag. /compact is the gentler move: it summarizes the conversation so far so the important history survives while the bloat goes away. I use it mid-task on a long session that I do not want to lose.</p>
<blockquote><strong>TIP:</strong> Command hygiene in one line: /clear when you change tasks, /compact when the same task gets long. Do this often and the agent stops dragging stale context into fresh work. It is the cheapest quality upgrade in Claude Code.</blockquote>
<h2>Set up your project once with /init</h2>
<p>/init is the command I run on day one in any new project. It creates a CLAUDE.md memory file - a plain document that tells Claude Code what your project is, how it is built, and how you like to work. From then on the agent reads it automatically, so you stop re-explaining the basics every session.</p>
<p>A good CLAUDE.md is the difference between an agent that guesses and an agent that already knows your stack. Run /init to start one, then keep it tight and current. For ready-made starting points, see our [CLAUDE.md templates by project type](/blog/claude-md-templates-by-project-type).</p>
<h2>Reusable power: /agents and /skills</h2>
<p>/agents and /skills are how you turn one-off work into reusable power. /skills manages skills - packaged capabilities the agent can call again and again. /agents manages subagents - focused helpers you hand a slice of a big job. Both move you from typing the same instructions over and over to triggering them on demand.</p>
<ul><li>Use /skills when you have a capability you want every session to have - a workflow, a format, a repeatable task.</li><li>Use /agents when a job is big enough to split, so one helper handles a part of it while the main session stays focused.</li><li>Reach for skills first for most everyday work; reach for subagents when the task is genuinely large or parallel.</li></ul>
<p>If you are deciding which to use, start with [the skills to install first](/blog/claude-code-skills-to-install-first) and then read [skills, subagents, MCP, and hooks: when to use each](/blog/claude-code-skills-subagents-mcp-hooks-when-to-use). Those two cover the whole map.</p>
<h2>Build your own custom slash command</h2>
<p>The best slash command is the one you make yourself. A custom slash command is just a reusable prompt you trigger with a slash. Instead of retyping the same long instruction every time, you save it once and call it whenever you need it. That is the whole idea - turn your best prompt into a one-word command.</p>
<p>Think about what you type again and again - a code review checklist, a commit-message format, a way you like features planned. Any prompt you repeat is a candidate. You write that prompt down as a custom command, give it a name, and from then on the slash plus that name runs it. This is where the dozen built-in commands turn into your own personal toolkit.</p>
<blockquote><strong>NOTE:</strong> The CCC rule of thumb: if you have typed the same instruction three times, it should be a custom slash command. Capture it once, trigger it forever. That single habit compounds faster than any other Claude Code tip.</blockquote>
<p>For the full set of moves around these commands, keep our [Claude Code cheat sheet](/blog/claude-code-cheat-sheet) open, and to put it all together into a real workflow, read [how to use Claude Code like a pro](/blog/how-to-use-claude-code-like-a-pro).</p>
<h2>Make slash commands a daily habit</h2>
<p>Slash commands are small, but the habit is what pays off. Practice command hygiene with /clear and /compact, set up every project with /init, build reusable power with /skills and /agents, then capture your repeated prompts as custom commands. Do that and your sessions get faster and cleaner without learning anything new.</p>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club we teach this command-hygiene habit and the full daily workflow, with a community that ships in public. Start with the [curriculum](/curriculum) or join us at https://www.skool.com/claudecodeclub/about.</blockquote>
<h2>FAQ</h2>
<p><strong>What are slash commands in Claude Code?</strong></p><p>Slash commands are short commands you type, each starting with a slash, that control the session rather than asking the agent to write code. They handle things like clearing the conversation, setting up a project memory file, switching the model, or managing skills and subagents. Type /help in your session to see the ones available to you.</p>
<p><strong>What is the difference between /clear and /compact?</strong></p><p>/clear wipes the conversation and starts fresh, which is what you want when you switch to a new task. /compact summarizes the conversation so far to free up context while keeping the important history, which is what you want mid-task on a long session. Using both often is the habit we call command hygiene.</p>
<p><strong>What does /init do in Claude Code?</strong></p><p>/init sets up a CLAUDE.md memory file for your project - a plain document that tells Claude Code what the project is and how you like to work. After that the agent reads it automatically, so you stop re-explaining the basics every session. Run it once on day one in a new repo.</p>
<p><strong>Can I create my own slash command?</strong></p><p>Yes. A custom slash command is a reusable prompt you save once and trigger with a slash, instead of retyping the same long instruction. Any prompt you find yourself repeating - a review checklist, a commit format, a planning style - is a good candidate to turn into your own command.</p>
<p><strong>How do I see every available slash command?</strong></p><p>Type /help inside your own Claude Code session. Because the command set evolves as Claude Code updates, /help always shows the current list available to you, which is more reliable than memorizing a fixed list.</p>
<p><strong>Do slash commands work in the desktop app?</strong></p><p>Yes. The same slash commands work in the desktop app, the terminal, and the IDE. You type a slash, pick the command, and hit enter the same way in each, so the habit carries across wherever you run Claude Code.</p>]]></content:encoded>
    </item>
    <item>
      <title>The Client Proposal Template Pack (Built With Claude Code)</title>
      <link>https://www.claudecodeclub.ai/blog/client-proposal-template-pack-claude-code</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/client-proposal-template-pack-claude-code</guid>
      <pubDate>Sat, 27 Jun 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Claude Code</category>
      <category>Agency</category>
      <category>Proposals</category>
      <category>Templates</category>
      <description><![CDATA[A client proposal template is the difference between winning a deal in an hour and losing a week. Here is the full reusable proposal structure we use, section by section, with a copy-paste Claude Code prompt to draft each part from your discovery-call notes.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>A client proposal template is the difference between winning a deal in an hour and losing a week - it turns your discovery notes into a clear, confident document fast.</li><li>Below is the full CCC proposal skeleton: the problem in their words, the outcome, scope and deliverables, timeline, three pricing tiers, terms, and one clear next step.</li><li>For each section you get a copy-paste Claude Code prompt that drafts it from your call notes, so a full proposal comes together in minutes.</li></ul>
<h2>Why a client proposal template wins deals</h2>
<p>A client proposal template is the difference between winning a deal in an hour and losing a week. When a prospect is warm, speed matters - the proposal that lands while they still feel the problem closes far more often than the polished one that arrives five days later. A reusable template removes the blank page so you send fast and consistent every time.</p>
<p>The template below is what we call the CCC proposal skeleton. It is seven sections, in order, that walk a prospect from 'you understand my problem' to 'here is exactly what I do next'. You fill it once from your discovery-call notes, and Claude Code does the drafting. The structure does the persuading.</p>
<p>The point is not a prettier document. It is a faster, clearer one that says the right things in the right order. Below, each section comes with a copy-paste Claude Code prompt that turns your raw notes into finished text.</p>
<h2>The CCC proposal skeleton: seven sections in order</h2>
<p>Every proposal we send follows the same seven sections, in this order. The order matters: you earn agreement on the problem and the outcome before you ever talk price, so the price lands as the cost of a result they already want.</p>
<ol><li>The problem in their words - prove you listened.</li><li>The outcome - the result they get, not the tasks you do.</li><li>Scope and deliverables - exactly what is included.</li><li>Timeline - the path and the milestones.</li><li>Pricing - three tiers, good, better, best.</li><li>Terms - the simple ground rules.</li><li>The next step - one clear action to say yes.</li></ol>
<blockquote><strong>TIP:</strong> Keep the sections in this order in every proposal. Agreement on the problem and the outcome comes first; price comes after. Lead with price and you invite a comparison; lead with the result and price becomes the cost of getting it.</blockquote>
<h2>Sections 1-3: problem, outcome, scope</h2>
<p>The first three sections build trust before you ask for anything. State the problem in the client's own language, name the outcome they actually want, then list the scope so there is no ambiguity about what they are buying. Here are the copy-paste Claude Code prompts that draft each one from your discovery-call notes.</p>
<p>Section 1, the problem in their words. Prompt: 'Here are my notes from a discovery call. Write a short Problem section for a client proposal that restates this client's main problem in their own words, using the phrases they used. Two to three sentences. Make them feel understood, do not pitch anything yet. Notes: [paste your notes].'</p>
<p>Section 2, the outcome. Prompt: 'From these same notes, write an Outcome section that describes the result this client gets when the work is done - in terms of their business, not my tasks. Focus on what changes for them. Three to four sentences. Notes: [paste your notes].'</p>
<p>Section 3, scope and deliverables. Prompt: 'From these notes, write a Scope and Deliverables section as a clear bulleted list of exactly what is included in this engagement. Be specific so there is no ambiguity. Add a short line on what is explicitly out of scope. Notes: [paste your notes].'</p>
<blockquote><strong>NOTE:</strong> Always paste your real discovery-call notes into the prompt. The proposal is only as sharp as the input - Claude Code turns good notes into good copy, but it cannot invent details you did not capture on the call.</blockquote>
<h2>Sections 4-5: timeline and three-tier pricing</h2>
<p>The middle two sections turn intent into a plan and a price. The timeline shows the path and the milestones so the client can picture the work happening. The pricing section gives three tiers - good, better, best - so the client chooses how much to buy instead of whether to buy. Here are the prompts.</p>
<p>Section 4, timeline. Prompt: 'From these notes, write a Timeline section for the proposal. Break the work into clear phases with milestones and rough durations. Keep it realistic and easy to scan. Notes: [paste your notes].'</p>
<p>Section 5, three-tier pricing. Prompt: 'From these notes, write a Pricing section with three tiers named good, better, and best. The good tier solves the core problem, the better tier adds clear value, and the best tier is the full result with extras. For each tier list what is included and leave a placeholder for the price. Make the better tier the obvious recommended choice. Notes: [paste your notes].'</p>
<p>Pricing the tiers themselves is its own skill. For how to set the numbers so each tier is profitable and the middle one wins, see [how to price a Claude Code agency project](/blog/how-to-price-a-claude-code-agency-project).</p>
<h2>Sections 6-7: terms and one clear next step</h2>
<p>The last two sections close the loop. Terms set the simple ground rules - payment, revisions, timeline expectations - so there are no surprises later. The next step gives the client exactly one action to take to say yes. One action, not three. Here are the prompts.</p>
<p>Section 6, terms. Prompt: 'From these notes, write a short Terms section for the proposal covering payment schedule, number of revisions, what I need from the client, and how either side can end the engagement. Keep it plain and fair, not legalese. Notes: [paste your notes].'</p>
<p>Section 7, the next step. Prompt: 'Write a short closing Next Step section for the proposal that gives the client exactly one clear action to accept and start - for example approve a tier and book a kickoff. Make it confident and frictionless. One action only.'</p>
<p>Once the proposal is accepted, the work starts at onboarding. Hand off cleanly with the prompts in our [Claude Code client onboarding prompt pack](/blog/claude-code-client-onboarding-prompt-pack).</p>
<h2>Spin up a full proposal in minutes</h2>
<p>Once you have the skeleton and the seven prompts, a full proposal comes together in minutes. The fastest way is to give Claude Code your whole notes once and ask it to draft every section in order, then refine each one. Here is the single prompt that does it.</p>
<p>Prompt: 'You are drafting a client proposal using the CCC proposal skeleton: problem in their words, outcome, scope and deliverables, timeline, three-tier pricing (good, better, best), terms, and one clear next step. Draft all seven sections in that order from the discovery-call notes below. Keep the language plain and confident, restate the problem in their own words, and make the better pricing tier the recommended choice. Notes: [paste your notes].'</p>
<p>Then read it back, tighten anything that sounds generic, drop in your real prices, and send. The skeleton keeps every proposal consistent, and Claude Code removes the slow part - the blank page. For the broader set of agency workflows that turn drafts into revenue, see [5 Claude Code workflows that get you paid](/blog/5-claude-code-workflows-that-get-you-paid).</p>
<h2>Why tiered pricing and one next step raise close rates</h2>
<p>Three pricing tiers and one clear next step are not decoration - they change how the client decides. Tiers shift the question from 'should I buy this?' to 'which version do I want?', which is a far easier yes. A single next step removes the friction that lets a warm prospect drift and go cold.</p>
<ul><li>Three tiers give the client control, so they feel like they chose rather than were sold.</li><li>A clear middle tier becomes the natural pick - most people avoid the cheapest and the priciest.</li><li>The top tier resets what 'expensive' means, which makes the middle feel reasonable.</li><li>One next step removes decision friction; multiple options at the close invite delay.</li></ul>
<p>This is also why a repeatable proposal is the first step toward a productized offer - the same skeleton, the same tiers, sent again and again. To take that further, see [how to productize a service with Claude Code](/blog/how-to-productize-a-service-with-claude-code).</p>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club we teach the full agency workflow - proposals, pricing, onboarding, and delivery - with a community of operators who ship for real clients. Start with the [curriculum](/curriculum) or join us at https://www.skool.com/claudecodeclub/about.</blockquote>
<h2>FAQ</h2>
<p><strong>What is a client proposal template?</strong></p><p>A client proposal template is a reusable structure you fill in for each prospect instead of writing every proposal from scratch. It removes the blank page so you can send a clear, consistent document fast - which matters because the proposal that lands while a prospect is still warm closes far more often than a slow one.</p>
<p><strong>What sections should a client proposal include?</strong></p><p>The CCC proposal skeleton uses seven sections in order: the problem in the client's own words, the outcome they get, the scope and deliverables, the timeline, three-tier pricing (good, better, best), the terms, and one clear next step. The order matters - agreement on the problem and outcome comes before price.</p>
<p><strong>How does Claude Code help write a proposal?</strong></p><p>You paste your discovery-call notes into a prompt and Claude Code drafts each section for you - restating the problem in the client's words, naming the outcome, listing scope, building tiers, and writing the close. It removes the slow part, the blank page, while you supply the real details and the final prices.</p>
<p><strong>Why use three pricing tiers in a proposal?</strong></p><p>Three tiers change the client's question from 'should I buy?' to 'which version do I want?', which is an easier yes. The middle tier becomes the natural pick because most people avoid the cheapest and the priciest, and the top tier makes the middle feel reasonable by comparison.</p>
<p><strong>Why should a proposal end with one next step?</strong></p><p>A single clear next step removes the friction that lets a warm prospect drift and go cold. When the close offers one action - approve a tier and book a kickoff - it is easy to say yes. Multiple options at the end invite delay and second-guessing.</p>
<p><strong>Can I reuse the same proposal template for every client?</strong></p><p>Yes. The skeleton stays the same for every client; only the notes you paste in change. Reusing one structure keeps your proposals consistent and fast, and it is the first step toward productizing your service - the same skeleton and tiers, sent again and again.</p>]]></content:encoded>
    </item>
    <item>
      <title>Copy-Paste CLAUDE.md Templates for 8 Project Types</title>
      <link>https://www.claudecodeclub.ai/blog/claude-md-templates-by-project-type</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-md-templates-by-project-type</guid>
      <pubDate>Fri, 26 Jun 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>CLAUDE.md</category>
      <category>Templates</category>
      <category>Setup</category>
      <description><![CDATA[A CLAUDE.md template is the single highest-leverage file in any Claude Code project, because it is the memory the agent reads every time it works. Here is the CCC project-brief skeleton plus 8 ready-to-paste CLAUDE.md templates, one per project type.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>A CLAUDE.md template is the instruction file Claude Code reads at the start of every session, so it is the highest-leverage file in your project.</li><li>A great one follows the CCC project-brief skeleton: overview, stack, conventions, commands, and do/don't rules.</li><li>Below are 8 copy-paste CLAUDE.md templates, one per project type, ready to drop into the root of your repo today.</li></ul>
<h2>What a CLAUDE.md template is and why it matters</h2>
<p>A CLAUDE.md template is the instruction file you drop in the root of your project so Claude Code knows how your project works before it touches a single line. Claude Code reads CLAUDE.md at the start of every session. That makes it the memory and the house rules for the agent, and the single highest-leverage file you will ever write for a build.</p>
<p>I treat it like the brief I would hand a new contractor on day one. Without it, the agent guesses your stack, your naming, and your commands, and it guesses differently every session. With it, the agent shows up already knowing the project. The same prompt gets you a far better result, and you stop repeating yourself.</p>
<blockquote><strong>TIP:</strong> Put CLAUDE.md in the root of the repo and keep it short. The agent reads it every time, so a tight one-page file beats a sprawling wiki. If a rule does not change the agent's output, it does not belong in CLAUDE.md.</blockquote>
<h2>The CCC project-brief skeleton: anatomy of a great CLAUDE.md</h2>
<p>Every strong CLAUDE.md follows the same five-part shape. We call it the CCC project-brief skeleton, and once you can see the five parts you can write one for any project in a couple of minutes. Each part answers a question the agent would otherwise have to guess.</p>
<ol><li>Project overview: one or two sentences on what this project is and who it is for. This anchors every decision the agent makes.</li><li>Stack: the languages, frameworks, and key libraries in play, so the agent writes code that fits instead of importing something you do not use.</li><li>Conventions: how you name things, structure folders, and format code, so output matches the rest of the repo.</li><li>Commands: the exact commands to install, run, test, build, and deploy, so the agent can verify its own work.</li><li>Do / don't rules: the short list of hard lines - what to always do and what to never touch.</li></ol>
<blockquote><strong>NOTE:</strong> The Commands and the do/don't sections do the heaviest lifting. Commands give the agent a way to check its work, which is what keeps an agent loop on the rails. The do/don't list is where you stop the mistakes you keep seeing.</blockquote>
<h2>Templates 1-4: web app, API, data/ML, mobile</h2>
<p>Here are the first four CLAUDE.md templates. Each follows the CCC project-brief skeleton. Open Claude Code in the desktop app, create a CLAUDE.md in your project root, paste the one that fits, and swap the generic details for your real ones.</p>
<p>1) Web app: '# Project. A web app for [users] to [job]. Stack: React + TypeScript on the front end, Node on the back end, Postgres for data. Conventions: function components, hooks over classes, colocate tests next to source. Commands: npm install, npm run dev, npm test, npm run build. Do: keep components small and typed. Don't: add a new dependency without flagging it; never commit secrets.'</p>
<p>2) REST/GraphQL API: '# Project. A REST API serving [clients]. Stack: Node + Express, Postgres via an ORM, JWT auth. Conventions: one route file per resource, validate every input, return typed error shapes. Commands: npm install, npm run dev, npm test, npm run migrate. Do: write a test for every new endpoint. Don't: log secrets or tokens; never ship an endpoint without auth and rate limiting.'</p>
<p>3) Data/ML project: '# Project. A pipeline that [trains/scores] on [data]. Stack: Python, pandas, scikit-learn, notebooks for exploration and scripts for production. Conventions: raw data is read-only, every transform is a pure function, fix the random seed. Commands: pip install -r requirements.txt, python train.py, pytest. Do: log metrics for every run. Don't: edit files in data/raw; never commit datasets or model weights.'</p>
<p>4) Mobile app: '# Project. A mobile app for [platform] that [job]. Stack: React Native + TypeScript, REST API back end. Conventions: screens in /screens, shared UI in /components, no business logic in views. Commands: npm install, npm run ios, npm run android, npm test. Do: handle offline and loading states. Don't: hardcode API URLs; never block the main thread.'</p>
<h2>Templates 5-8: landing site, automation, library, agency repo</h2>
<p>Here are the last four CLAUDE.md templates, covering the project types most builders and agencies actually ship. Same skeleton, same paste-and-edit move.</p>
<p>5) Marketing/landing site: '# Project. A landing site for [product] built to convert. Stack: static site generator, plain CSS or Tailwind, deployed to a CDN. Conventions: one section per component, copy lives in content files, keep it fast. Commands: npm install, npm run dev, npm run build. Do: keep Lighthouse green and images optimized. Don't: add heavy JS for effects; never break the mobile layout.'</p>
<p>6) Automation + scripts: '# Project. A set of scripts that automate [task]. Stack: Python or Node, run on a schedule. Conventions: one script does one job, config in env vars, every script is idempotent. Commands: pip install -r requirements.txt, python run.py. Do: log what ran and what changed; make every run safe to repeat. Don't: hardcode credentials; never delete data without a dry-run flag.'</p>
<p>7) Open-source library: '# Project. A library that [does X] for other developers. Stack: TypeScript, zero runtime dependencies where possible. Conventions: semantic versioning, public API documented, breaking changes flagged. Commands: npm install, npm test, npm run build, npm run lint. Do: write a test for every public function and update the changelog. Don't: change the public API without a major version bump.'</p>
<p>8) Agency client repo: '# Project. Client work for [client]. Stack: [their stack, not ours]. Conventions: match the client's existing style exactly, branch per task, descriptive commits. Commands: [their install/run/test/deploy]. Do: ask before introducing a new tool; keep the handoff clean and documented. Don't: refactor outside the ticket; never push to main or deploy without sign-off.'</p>
<blockquote><strong>TIP:</strong> The agency repo template is the one I lean on hardest. The 'match the client's style' and 'never deploy without sign-off' lines stop the two mistakes that lose client trust: code that looks foreign to their team, and changes that ship before they approved them.</blockquote>
<h2>How CLAUDE.md fits the way Claude Code actually works</h2>
<p>CLAUDE.md earns its keep because of how Claude Code runs. The agent works in a loop - it gathers context, acts, then verifies. CLAUDE.md is the context it gathers first, every single time, and the Commands section gives it the way to verify its own work. A good CLAUDE.md makes both ends of that loop sharper.</p>
<p>If you want to see that cycle in detail, read [what are agent loops in Claude Code](/blog/claude-code-agent-loops). For the broader habits that separate fast builders from frustrated ones, [how to use Claude Code like a pro](/blog/how-to-use-claude-code-like-a-pro) is the next step.</p>
<table><caption>What each CLAUDE.md section does for the agent</caption><thead><tr><th>Section</th><th>What it gives the agent</th></tr></thead><tbody><tr><td>Overview</td><td>The why, so its choices serve the project</td></tr><tr><td>Stack</td><td>The tools to use, so it does not invent new ones</td></tr><tr><td>Conventions</td><td>The style to match, so output fits the repo</td></tr><tr><td>Commands</td><td>A way to run and verify its own work</td></tr><tr><td>Do / don't</td><td>The hard lines that stop repeat mistakes</td></tr></tbody></table>
<h2>How to keep your CLAUDE.md current</h2>
<p>A CLAUDE.md is a living file, not a one-time setup. The fastest way to rot one is to write it on day one and never touch it again. Treat it like the project's running memory and it keeps paying off.</p>
<ul><li>When the agent makes the same mistake twice, add a do/don't line that prevents it. That is the highest-value edit you can make.</li><li>When you change a command, a framework, or a folder structure, update CLAUDE.md in the same commit.</li><li>Keep it tight. If a section is no longer true or no longer changes the output, delete it.</li><li>Ask Claude Code to update its own CLAUDE.md after a big change - it knows what shifted and can draft the edit for you to approve.</li></ul>
<p>Skipping the file entirely is one of the most common beginner errors, and it is covered in [Claude Code mistakes beginners make](/blog/claude-code-mistakes-beginners-make). A stale or missing CLAUDE.md is why two people get wildly different results from the same prompt.</p>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club we share the CLAUDE.md files our members actually ship with, by project type, and review each other's setups so yours gets sharper fast. Browse the [curriculum](/curriculum) or join us at https://www.skool.com/claudecodeclub/about.</blockquote>
<h2>FAQ</h2>
<p><strong>What is a CLAUDE.md template?</strong></p><p>A CLAUDE.md template is a starter instruction file you place in the root of your project. Claude Code reads it at the start of every session, so it tells the agent your project overview, stack, conventions, commands, and hard rules before it does any work. It is the highest-leverage file in a Claude Code project.</p>
<p><strong>Where do I put the CLAUDE.md file?</strong></p><p>Put CLAUDE.md in the root of your repository. Claude Code reads it automatically when it starts a session in that folder, so the agent shows up already knowing how your project works.</p>
<p><strong>What should a good CLAUDE.md include?</strong></p><p>Follow the CCC project-brief skeleton: a one-line project overview, the stack, your conventions, the exact commands to install and test and build, and a short do/don't list. Keep it to about a page so the agent reads it cleanly every time.</p>
<p><strong>How long should a CLAUDE.md be?</strong></p><p>Short. Aim for roughly one page. The agent reads CLAUDE.md every session, so a tight file beats a long one. If a line does not change the agent's output, cut it.</p>
<p><strong>Do I need a different CLAUDE.md for each project type?</strong></p><p>Yes, tailor it. A web app, an API, a data project, and an agency client repo each need different stack, commands, and rules. Start from the matching template above, then swap the generic details for your real ones.</p>
<p><strong>How do I keep my CLAUDE.md from going stale?</strong></p><p>Update it in the same commit whenever you change a command, framework, or folder structure, and add a do/don't line every time the agent repeats a mistake. You can also ask Claude Code to draft the update for you after a big change.</p>]]></content:encoded>
    </item>
    <item>
      <title>The Agency Owner's AI Tech Stack for 2026</title>
      <link>https://www.claudecodeclub.ai/blog/agency-ai-tech-stack-2026</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/agency-ai-tech-stack-2026</guid>
      <pubDate>Fri, 26 Jun 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Claude Code</category>
      <category>Agency</category>
      <category>Tech Stack</category>
      <category>AI</category>
      <description><![CDATA[Your agency AI tech stack is not 20 tools - it is a few layers that compound. Here is the CCC agency stack: build, automation, knowledge, delivery, and ops, with the trap to avoid at each layer.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>A modern agency AI tech stack is not 20 tools - it is five layers that compound on each other.</li><li>The CCC agency stack: build, automation and orchestration, knowledge and memory, client delivery, and ops and billing.</li><li>Start with one layer, the build layer, and add the rest only when a real bottleneck demands it.</li></ul>
<h2>What the agency AI tech stack actually is</h2>
<p>A modern agency AI tech stack is not a list of 20 tools. It is a handful of layers that compound, and most agencies get this backward. They collect tools, pay for ten subscriptions, and still feel slow, because none of the tools build on each other. The agencies that pull ahead pick one tool per layer and let the layers stack.</p>
<p>We call this the CCC agency stack. It is five layers, each with one job. When you see the agency AI tech stack as layers instead of a tool list, two things get easier: you know what to buy next, and you know what to ignore. The order of the layers matters more than any single product in them.</p>
<table><caption>The CCC agency stack: five layers and their jobs</caption><thead><tr><th>Layer</th><th>Its job</th><th>Kind of tool</th></tr></thead><tbody><tr><td>Build</td><td>Produce the actual work: code, sites, automations</td><td>An AI coding agent (Claude Code)</td></tr><tr><td>Automation + orchestration</td><td>Connect steps and trigger work without you</td><td>Workflow runner, schedulers, agent triggers</td></tr><tr><td>Knowledge + memory</td><td>Hold what the agency and each client knows</td><td>Project memory files, a searchable knowledge base</td></tr><tr><td>Client delivery</td><td>Package, present, and hand off the work</td><td>Hosting, demos, proposal and onboarding docs</td></tr><tr><td>Ops + billing</td><td>Run the business behind the work</td><td>Project tracking, invoicing, payments</td></tr></tbody></table>
<h2>The build layer: Claude Code</h2>
<p>The build layer is where the work gets made, and for an agency in 2026 that layer is Claude Code. This is the layer that produces the deliverable - the website, the app, the automation, the fix. Everything else in the stack exists to feed this layer or to ship what it produces. Get this layer right and the rest gets simpler.</p>
<p>Put your strongest AI coding agent here and learn it deeply rather than spreading across three half-learned tools. The trap to avoid is tool sprawl at the build layer: a different assistant for code, another for content, another for fixes. Pick one build tool, go deep, and let it do more of the job. Our [5 Claude Code workflows that get you paid](/blog/5-claude-code-workflows-that-get-you-paid) shows what this layer looks like in billable practice.</p>
<h2>The automation and knowledge layers</h2>
<p>The automation and orchestration layer connects the steps so work happens without you in the loop for every click. This is where scheduled runs, triggers, and connected tools live. Put the repetitive, predictable parts of your delivery here - the things you do the same way on every project. The trap is automating a messy process: automation makes a bad workflow run faster, not better, so clean the workflow first.</p>
<p>The knowledge and memory layer holds what your agency knows and what each client needs. This is project memory files, a searchable knowledge base, and the context your build layer reads before it works. The trap here is letting knowledge live only in people's heads or scattered chat threads, so every project starts from zero. Structure it. Our [Claude Code memory system: the three tiers](/blog/claude-code-memory-system-three-tiers) explains how to layer agency-wide and per-client memory so the build layer always has the right context.</p>
<p>Both layers often plug into the build layer through connectors. If you are deciding what to wire in, [the best Claude Code MCP servers](/blog/best-claude-code-mcp-servers) is the shortlist worth starting from - and a reminder to add connections only when a real task needs them, not because they exist.</p>
<h2>The delivery and ops layers</h2>
<p>The client delivery layer packages and hands off the work. This is hosting, live demos, and the documents that wrap the deliverable - proposals, onboarding, handoff notes. The trap is treating delivery as an afterthought: great work presented sloppily reads as cheap work. Standardize how you ship so every handoff feels the same and feels premium.</p>
<p>The ops and billing layer runs the business behind the work: project tracking, invoicing, and payments. The trap is over-engineering it early. A solo or small agency does not need enterprise ops software - it needs a simple, reliable way to track what is due and get paid on time. Add complexity only when the volume forces it.</p>
<blockquote><strong>TIP:</strong> Most agencies overbuild the ops and billing layer and underbuild the build and knowledge layers. It feels productive to set up dashboards, but the layers that compound your output are build, automation, and knowledge. Invest there first.</blockquote>
<h2>How the layers connect</h2>
<p>The layers are not independent - the build layer is the center of gravity, and the other four either feed it or ship what it makes. Knowledge and memory feed context into the build layer. Automation triggers the build layer and moves its output along. Delivery packages what the build layer produced. Ops tracks and bills for it. When you remember this, you stop buying tools that do not connect to anything.</p>
<ul><li>Knowledge feeds build: the agent reads your memory and client context before it works.</li><li>Automation drives build: triggers and schedules start the work and pass results downstream.</li><li>Delivery ships build: hosting and documents turn output into something a client receives.</li><li>Ops measures build: tracking and billing close the loop from work done to money in.</li></ul>
<blockquote><strong>NOTE:</strong> If a tool you are evaluating does not feed, trigger, ship, or measure the build layer, it is probably tool sprawl. The strongest agency stacks are small because every layer points back at the work.</blockquote>
<h2>Start lean: one layer first</h2>
<p>You do not build the whole stack on day one. Start with one layer - the build layer - and get genuinely good at it before you add anything else. A solo operator who is excellent with the build layer out-delivers an agency drowning in ten half-used tools. Lean and deep beats broad and shallow every time.</p>
<ol><li>Master the build layer first. Learn Claude Code until it is producing real, billable client work.</li><li>Add the knowledge layer next, so the build layer stops starting from zero on every project.</li><li>Add automation once you notice the same steps repeating across clients.</li><li>Standardize delivery once you have enough projects that handoffs feel inconsistent.</li><li>Formalize ops and billing last, only when volume makes a simple system stop working.</li></ol>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club we help agency owners build this exact stack one layer at a time, starting with the build layer, alongside operators doing the same work. See the [curriculum](/curriculum) or join us at https://www.skool.com/claudecodeclub/about.</blockquote>
<h2>FAQ</h2>
<p><strong>What is an agency AI tech stack?</strong></p><p>An agency AI tech stack is the set of tools an agency uses to produce and deliver work, organized as layers rather than a long list. The CCC agency stack has five layers: build, automation and orchestration, knowledge and memory, client delivery, and ops and billing. Each layer has one job, and they compound on each other.</p>
<p><strong>How many tools does an agency really need?</strong></p><p>Far fewer than most agencies run. Aim for roughly one strong tool per layer of the stack. Tool sprawl - a dozen half-used subscriptions that do not connect - makes an agency feel slow. A small stack where every tool feeds the build layer is faster.</p>
<p><strong>What is the most important layer in the stack?</strong></p><p>The build layer, where the actual work gets made. For an agency in 2026 that layer is Claude Code. It is the center of gravity: the other four layers either feed it context, trigger it, ship its output, or bill for it.</p>
<p><strong>Which layer should I set up first?</strong></p><p>Start with the build layer and get genuinely good at it before adding anything else. Then add knowledge and memory, then automation, then standardized delivery, and formalize ops and billing last, only when volume demands it.</p>
<p><strong>How do I avoid tool sprawl?</strong></p><p>Use one test: does this tool feed, trigger, ship, or measure the build layer? If it does not connect to the work, it is sprawl. The strongest agency stacks stay small because every layer points back at the build layer.</p>
<p><strong>Can a solo operator run this whole stack?</strong></p><p>Yes. A solo operator does not need enterprise tools at every layer. Master the build layer first, add a simple knowledge layer, and keep ops and billing lightweight. Lean and deep out-delivers broad and shallow.</p>]]></content:encoded>
    </item>
    <item>
      <title>The Claude Code Cheat Sheet: Commands, Skills, and Shortcuts</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-cheat-sheet</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-cheat-sheet</guid>
      <pubDate>Thu, 25 Jun 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Cheat Sheet</category>
      <category>Commands</category>
      <category>Reference</category>
      <description><![CDATA[A Claude Code cheat sheet you can screenshot: the essential slash commands, the four core concepts (skills, subagents, MCP servers, hooks), and the CCC build flow I run every day. Plain-language purpose for each one, no fluff.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>This Claude Code cheat sheet collects the slash commands, core concepts, and daily flow I actually use, in tables you can screenshot.</li><li>It describes each command's purpose in plain language - it does not invent flags or syntax, so what you see is safe to trust.</li><li>Use the CCC build flow at the bottom as the repeatable loop: open the desktop app, point at a folder, give a goal with a finish line, tell it how to verify, then review.</li></ul>
<h2>The Claude Code cheat sheet: essential slash commands</h2>
<p>This Claude Code cheat sheet starts with the slash commands I reach for every session. A slash command is a built-in shortcut you type starting with a forward slash, and it controls the session itself rather than asking the agent to build something. Learn these and you stop fighting the tool.</p>
<p>The table below describes what each command is for in plain language. I am deliberately not listing flags or exact arguments, because those shift between versions and I would rather you trust this than memorize something that breaks. When you want the full daily set with examples, see [the Claude Code slash commands you use every day](/blog/claude-code-slash-commands-you-use-every-day).</p>
<table><caption>Essential Claude Code slash commands and what each one is for</caption><thead><tr><th>Command</th><th>What it does</th></tr></thead><tbody><tr><td>/help</td><td>Lists the available commands and shows quick guidance, so it is the first thing to run when you forget a command.</td></tr><tr><td>/clear</td><td>Clears the current conversation context and starts fresh, which is what you want before an unrelated task.</td></tr><tr><td>/compact</td><td>Condenses the running conversation so a long session keeps its key context without filling up.</td></tr><tr><td>/init</td><td>Sets up the project so Claude Code understands the codebase, including creating the memory file it reads on startup.</td></tr><tr><td>/review</td><td>Asks Claude Code to review code, a useful checkpoint before you commit or hand work off.</td></tr><tr><td>/agents</td><td>Manages subagents - the specialised helpers a main agent can hand a focused job to.</td></tr><tr><td>/mcp</td><td>Shows and manages the connected MCP servers, the tools and data sources Claude Code can reach.</td></tr><tr><td>/config</td><td>Opens the settings for the session and your preferences, where you adjust how Claude Code behaves.</td></tr><tr><td>/cost</td><td>Reports the token usage and cost of the current session, so you can see what a run actually spent.</td></tr><tr><td>/model</td><td>Switches which Claude model the session uses, letting you trade speed for depth on demand.</td></tr><tr><td>/resume</td><td>Picks up a previous conversation so you can continue a session you left earlier.</td></tr><tr><td>/skills</td><td>Lists and manages the skills available to the agent - reusable packaged know-how it can load on demand.</td></tr></tbody></table>
<blockquote><strong>TIP:</strong> Run /help first whenever you sit down. It is the cheat sheet inside the cheat sheet, and it always reflects the version you actually have installed - which is safer than trusting any flag I could print here.</blockquote>
<h2>The four core concepts table: skills, subagents, MCP servers, hooks</h2>
<p>Four concepts cover almost everything advanced you will do in Claude Code: skills, subagents, MCP servers, and hooks. Most people confuse them, then reach for the wrong one. This table gives each one a single row - what it is and when to use it - so you can pick fast.</p>
<table><caption>Claude Code core concepts: what each is and when to use it</caption><thead><tr><th>Concept</th><th>What it is</th><th>When to use it</th></tr></thead><tbody><tr><td>Skill</td><td>A reusable package of instructions and know-how the agent loads on demand.</td><td>When you repeat the same kind of task and want the agent to do it the same way every time.</td></tr><tr><td>Subagent</td><td>A focused helper agent the main agent hands a contained job to.</td><td>When a big task has a separable piece that deserves its own context and attention.</td></tr><tr><td>MCP server</td><td>A connector that gives Claude Code access to an outside tool or data source.</td><td>When the agent needs to reach something beyond your files, like a database, an API, or a service.</td></tr><tr><td>Hook</td><td>An automatic action the harness runs at a set point in the session.</td><td>When you want a behaviour to fire every time on its own, with no prompting from you.</td></tr></tbody></table>
<p>The trap is using a subagent when you needed an MCP server, or a skill when you needed a hook. For the full decision tree on which one to reach for, read [skills, subagents, MCP, and hooks: when to use each](/blog/claude-code-skills-subagents-mcp-hooks-when-to-use).</p>
<h2>The CCC build flow: my everyday Claude Code loop</h2>
<p>The CCC build flow is the five-step loop I run for almost every task, and it is desktop-app-first because that is where most members start. Memorize this and you have the only workflow you need on the cheat sheet. No commands required, just a clear pattern.</p>
<ol><li>Open Claude Code in the desktop app so you have a clean window and no terminal to wrangle.</li><li>Point it at a real project folder so the agent has actual files to read for context.</li><li>Give it a goal with a finish line: not 'clean this up' but 'rename these three functions and keep the tests passing'.</li><li>Tell it how to verify: name the command to run, the build to pass, or the exact output you expect.</li><li>Review what it did before you accept it - read the change, not just the summary.</li></ol>
<blockquote><strong>NOTE:</strong> This is the same loop, scaled up or down. A one-line fix and a full feature both follow it. If a run goes sideways, nine times out of ten step three or step four was vague. For the deeper version, see [how to use Claude Code like a pro](/blog/how-to-use-claude-code-like-a-pro).</blockquote>
<h2>Prompt-quality shortcuts that get better results</h2>
<p>A Claude Code cheat sheet is not just commands - the biggest quality lever is how you write the prompt. Three habits do most of the work, and I run all three on every non-trivial ask. They cost ten extra seconds and save you a bad run.</p>
<ul><li>BLUF the goal: put the outcome you want in the first sentence, before any background. The agent weights the start of your message most.</li><li>Scope the files: name the folder or files in play so the agent does not wander into code you did not mean to touch.</li><li>Give it a check: hand over a test, a build, or an expected output so the agent can verify its own work instead of guessing.</li></ul>
<table><caption>Weak prompt versus scoped prompt</caption><thead><tr><th>Weak prompt</th><th>Scoped prompt</th></tr></thead><tbody><tr><td>Make the login better</td><td>Add email validation to the login form in /auth and make the existing auth tests pass</td></tr><tr><td>Fix the bug</td><td>The cart total is wrong when a coupon applies; fix it in cart.ts and verify with the cart test</td></tr><tr><td>Clean up the code</td><td>Remove the unused imports in /components and confirm the build still passes</td></tr></tbody></table>
<blockquote><strong>WARNING:</strong> The single most common reason a run disappoints is a goal with no finish line and no check. If you only adopt one shortcut from this cheat sheet, give every prompt something concrete to verify against.</blockquote>
<h2>Keep this Claude Code cheat sheet close</h2>
<p>Screenshot the tables above and you have the working set: the slash commands, the four core concepts, the CCC build flow, and the prompt-quality shortcuts. That is the spine of using Claude Code well, and it stays true as the tool grows because it focuses on purpose, not on syntax that changes.</p>
<p>Everything past this cheat sheet is reps. Run the build flow on a real task today, scope your prompt, and give the agent a way to check itself. The fluency comes from doing it, not from reading about it.</p>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club we go far past the cheat sheet - the full 636-lesson [curriculum](/curriculum), live builds, and a community that ships in public. Start there or join us at https://www.skool.com/claudecodeclub/about.</blockquote>
<h2>FAQ</h2>
<p><strong>What is a Claude Code cheat sheet?</strong></p><p>A Claude Code cheat sheet is a quick-reference of the slash commands, core concepts, and workflow you use most, written so you can screenshot it and stop looking things up. This one describes each command's purpose in plain language rather than listing flags that change between versions.</p>
<p><strong>What are the most useful Claude Code slash commands?</strong></p><p>The ones you reach for daily are /help, /clear, /compact, /init, /review, /agents, /mcp, /config, /cost, /model, /resume, and /skills. Run /help first whenever you are unsure, since it always reflects the exact version you have installed.</p>
<p><strong>What is the difference between a skill, a subagent, an MCP server, and a hook?</strong></p><p>A skill is reusable know-how the agent loads on demand. A subagent is a focused helper for a contained job. An MCP server connects Claude Code to an outside tool or data source. A hook fires an action automatically at a set point. Use a skill to repeat a task the same way, a subagent for a separable piece, an MCP server to reach outside data, and a hook for behaviour that should happen every time on its own.</p>
<p><strong>Do I need the terminal to use Claude Code?</strong></p><p>No. The desktop app runs the same agent without any terminal, which is why the CCC build flow starts there. You open the app, point it at a folder, give it a goal with a finish line, tell it how to verify, and review the result.</p>
<p><strong>How do I get better results from Claude Code prompts?</strong></p><p>Use three habits: put the goal in the first sentence (BLUF), name the files or folder in play to scope the work, and give the agent a way to check itself such as a test or expected output. Most disappointing runs come from a goal with no finish line and no check.</p>
<p><strong>Why does this cheat sheet not list command flags?</strong></p><p>Flags and exact syntax shift between Claude Code versions, so printing them would make the cheat sheet wrong over time. Describing each command's purpose stays accurate, and /help always shows the precise options for the version you have installed.</p>]]></content:encoded>
    </item>
    <item>
      <title>10 AI Automations Every Agency Should Steal in 2026</title>
      <link>https://www.claudecodeclub.ai/blog/ai-automations-every-agency-should-steal</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/ai-automations-every-agency-should-steal</guid>
      <pubDate>Thu, 25 Jun 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Claude Code</category>
      <category>Agency</category>
      <category>Automation</category>
      <category>AI</category>
      <description><![CDATA[AI automations for agencies are how lean teams grow margin without growing headcount. Here are 10 concrete automations you can build with Claude Code - what each one replaces and the rough trigger that fires it - plus the CCC automation ladder for deciding what to automate first.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>AI automations for agencies are the lever that grows margin without growing headcount - the work still gets done, just not by a person each time.</li><li>Below are 10 automations you can build with Claude Code, each with what it replaces and the rough trigger that starts it.</li><li>Use the CCC automation ladder - do it, document it, delegate it to the agent - to pick which one to build first instead of trying to automate everything at once.</li></ul>
<h2>Why automate before you hire</h2>
<p>The fastest way to grow an agency's margin is to automate the repeatable work before you hire for it. Every new head adds cost, management, and risk. A well-built automation adds capacity at near-zero marginal cost and never has an off day. Lean agencies win on margin, and automation is how you protect it as you scale.</p>
<p>The mistake is trying to automate everything at once. The discipline is choosing what to automate and in what order. That is what the framework below is for.</p>
<blockquote><strong>TIP:</strong> The CCC automation ladder is the order we teach: do it, document it, delegate it to the agent. First do the task by hand until you understand it. Then document the exact steps and decisions. Only then hand the documented process to a Claude Code agent. Skipping a rung is why most agency automations break - you cannot automate a process you have not pinned down.</blockquote>
<h2>The AI automations for agencies that actually move the needle</h2>
<p>The AI automations for agencies worth building share one trait: they sit on a task you already do often, with a clear input and a clear output. The ten below are the ones we see pay back fastest, built with Claude Code rather than a pile of disconnected tools. Each row names the automation, what it replaces, and the rough trigger that fires it.</p>
<table><caption>10 AI automations every agency can build with Claude Code</caption><thead><tr><th>Automation</th><th>What it replaces</th><th>Rough trigger</th></tr></thead><tbody><tr><td>Lead intake and qualification</td><td>Someone manually reading and scoring every inbound form</td><td>A new lead lands in the form, inbox, or CRM</td></tr><tr><td>First-draft proposals</td><td>An hour of copy-pasting a template and tailoring it by hand</td><td>A lead is marked qualified</td></tr><tr><td>Client onboarding docs</td><td>Rebuilding the same welcome pack and access checklist each time</td><td>A deal is marked won</td></tr><tr><td>Weekly client reports</td><td>A team member assembling the same status report every Friday</td><td>A weekly schedule, on report day</td></tr><tr><td>Content repurposing</td><td>Manually cutting one asset into posts, clips, and emails</td><td>A long-form asset is published or finished</td></tr><tr><td>QA and code review</td><td>A senior person eyeballing every change before it ships</td><td>A change is ready for review or a pull request opens</td></tr><tr><td>Invoice and follow-up reminders</td><td>Chasing unpaid invoices and silent threads by memory</td><td>An invoice passes its due date or a reply goes quiet</td></tr><tr><td>Meeting notes to task lists</td><td>Someone retyping call notes into action items by hand</td><td>A meeting transcript or recording is available</td></tr><tr><td>Churn and at-risk watch</td><td>Noticing too late that an account went quiet</td><td>Activity or engagement drops below a threshold</td></tr><tr><td>SEO content briefs</td><td>Building each writer brief from scratch</td><td>A target keyword or topic is approved</td></tr></tbody></table>
<p>Notice that none of these replace your judgment. They replace the repetitive assembly around it. You still approve the proposal, still sign off the report, still decide how to save an at-risk account - the agent just does the gathering and the first draft.</p>
<h2>Client-facing automations: intake, proposals, onboarding, reports</h2>
<p>The four automations that touch clients directly are the ones that make an agency feel bigger than it is. They tighten response time and remove the ragged edges, which is what clients actually notice. Build these first because they protect revenue you already have.</p>
<ul><li>Lead intake and qualification: a new inbound triggers the agent to summarise the lead, score fit against your criteria, and route it - replacing manual triage that lets warm leads go cold.</li><li>First-draft proposals: when a lead is qualified, the agent drafts a proposal from your template using the lead's context, so a person edits rather than writes from zero. See [the client proposal template pack](/blog/client-proposal-template-pack-claude-code).</li><li>Client onboarding docs: a won deal triggers the agent to generate the welcome pack, access checklist, and kickoff agenda. Our [client onboarding prompt pack](/blog/claude-code-client-onboarding-prompt-pack) is the starting set.</li><li>Weekly client reports: on a schedule, the agent pulls the week's numbers and assembles the report in your format, leaving a person to add the commentary.</li></ul>
<blockquote><strong>NOTE:</strong> These four are also the easiest to productize, because they already have a repeatable shape. If you are turning a service into a fixed offer, read [how to productize a service with Claude Code](/blog/how-to-productize-a-service-with-claude-code).</blockquote>
<h2>Internal automations: content, QA, invoices, notes, churn, briefs</h2>
<p>The remaining six automations run inside the business and quietly buy back hours. They are less visible to clients but they are where margin actually leaks, because they are the tasks nobody schedules and everybody resents. Automating them removes the friction without adding a hire.</p>
<ul><li>Content repurposing: a finished long-form asset triggers the agent to cut it into platform-ready posts, clips, and an email, replacing manual reformatting.</li><li>QA and code review: an open pull request triggers a review pass for obvious issues before a human looks, replacing some of the senior-time bottleneck. See [the 5 Claude Code workflows that get you paid](/blog/5-claude-code-workflows-that-get-you-paid).</li><li>Invoice and follow-up reminders: an overdue invoice or a quiet thread triggers a drafted, on-brand nudge, replacing the chasing you do from memory.</li><li>Meeting notes to task lists: a new transcript triggers the agent to extract owners, actions, and dates into your task tracker, replacing the retype.</li><li>Churn and at-risk watch: a drop in client activity triggers an alert and a suggested save play, replacing the late realization that an account is slipping.</li><li>SEO content briefs: an approved keyword triggers a structured brief with intent, headings, and entities for the writer, replacing the from-scratch build.</li></ul>
<p>Most of these connect to tools you already use through Claude Code's connectors. For the full stack we recommend, see [the agency AI tech stack for 2026](/blog/agency-ai-tech-stack-2026).</p>
<h2>How to start with one automation</h2>
<p>Do not build ten automations this quarter. Build one, fully, and let it earn its keep before you build the next. The right first automation is the task you do most often that you most dislike, because that is where the payback and the relief are both highest.</p>
<ol><li>Pick the one repetitive task you do most and like least.</li><li>Walk the CCC automation ladder: do it once by hand, document the exact steps and decisions, then hand the documented process to a Claude Code agent.</li><li>Start with the agent assisting, not running solo - keep a human approving the output until you trust it.</li><li>Measure the time it actually saves over two weeks before you build the next one.</li></ol>
<blockquote><strong>WARNING:</strong> The agencies that get burned automate a process they never documented, then cannot tell why the output is wrong. Document before you delegate. That single rung on the ladder is what separates a reliable automation from a fast way to make mistakes.</blockquote>
<h2>Build your first agency automation this week</h2>
<p>You now have ten AI automations for agencies, the trigger for each, and a ladder for deciding what to build first. The work from here is reps: ship one, prove the hours it saves, then climb. That is how a lean agency grows margin without growing headcount.</p>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club we build these automations with members live, with the prompt packs and the [curriculum](/curriculum) to back them up. Start there or join us at https://www.skool.com/claudecodeclub/about.</blockquote>
<h2>FAQ</h2>
<p><strong>What are the best AI automations for agencies?</strong></p><p>The ones that pay back fastest sit on a frequent task with a clear input and output: lead intake and qualification, first-draft proposals, client onboarding docs, weekly client reports, content repurposing, QA and code review, invoice and follow-up reminders, meeting notes to task lists, churn and at-risk watch, and SEO content briefs. All ten can be built with Claude Code.</p>
<p><strong>What is the CCC automation ladder?</strong></p><p>It is the order we teach for automating any task: do it, document it, delegate it to the agent. You do the task by hand until you understand it, document the exact steps and decisions, then hand that documented process to a Claude Code agent. Skipping a rung is the main reason agency automations break.</p>
<p><strong>Which automation should an agency build first?</strong></p><p>The task you do most often and like least. That gives you the highest time payback and the most relief. Build that one fully, keep a human approving its output until you trust it, and measure the hours saved before building the next.</p>
<p><strong>Do AI automations replace agency staff?</strong></p><p>No. These automations replace the repetitive assembly around your judgment, not the judgment itself. You still approve the proposal, sign off the report, and decide how to handle an at-risk account. The agent does the gathering and the first draft, which lets a lean team take on more without hiring.</p>
<p><strong>Can I build these automations with Claude Code instead of stitching tools together?</strong></p><p>Yes. Claude Code can run the logic and reach your existing tools through connectors, so you build the automation in one place rather than wiring together several disconnected apps. The agency AI tech stack guide covers the connectors and tools we recommend.</p>
<p><strong>How long does it take to build the first one?</strong></p><p>If the process is already documented, a first working automation is often a same-week build, with a human still approving the output. The slow part is not the building - it is documenting the process clearly enough that the agent can follow it reliably.</p>]]></content:encoded>
    </item>
    <item>
      <title>10 Claude Code Prompts That Do a Week of Work in a Day</title>
      <link>https://www.claudecodeclub.ai/blog/10-claude-code-prompts-that-do-a-week-of-work</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/10-claude-code-prompts-that-do-a-week-of-work</guid>
      <pubDate>Wed, 24 Jun 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Prompts</category>
      <category>Productivity</category>
      <category>Tutorial</category>
      <description><![CDATA[These are the 10 Claude Code prompts I run when I want a week of work done in a day - audit a codebase, write tests, fix a failing build, ship a feature, and more. Copy them, swap in your details, and run them in the desktop app today.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>The best Claude Code prompts share three parts: a clear goal, a finish line, and something the agent can verify against. I call it the CCC prompt formula.</li><li>Below are 10 copy-paste prompts that each replace a slow, manual job - auditing code, writing tests, fixing a build, shipping a feature, reviewing a PR, and more.</li><li>Run them in the Claude Code desktop app, point them at a real repo, and turn your best one into a reusable skill so you never type it twice.</li></ul>
<h2>What makes a Claude Code prompt do a week of work</h2>
<p>The Claude Code prompts that do a week of work in a day all share the same shape. They are not clever wording. They give the agent a clear goal, a finish line, and something to verify against. Weak prompts ask for help. Strong prompts hand over a whole job and a way to know it is done.</p>
<p>I call this the CCC prompt formula: Goal plus Finish line plus Check. The Goal is the outcome in plain words. The Finish line is the 'done' state the agent should reach. The Check is the test, the build, or the output the agent uses to confirm it actually got there. Drop any one of the three and the agent wanders.</p>
<blockquote><strong>TIP:</strong> Every prompt below is written for the Claude Code desktop app pointed at a real project folder. The agent runs its own loop on each one - it reads, acts, checks its work, and repeats. If that loop is new to you, read [what are agent loops in Claude Code](/blog/claude-code-agent-loops) first, then come back and run these.</blockquote>
<h2>The 10 Claude Code prompts, ready to copy</h2>
<p>Here are the 10 Claude Code prompts I reach for most. Each one names a job, gives you the exact text to paste, and tells you when to run it. Open the desktop app, point Claude Code at your repo, paste the prompt, and let the loop work. Swap the bracketed parts for your own details.</p>
<ol><li>Codebase audit - paste this on day one of any project so you understand it before you touch it: &quot;Read this whole repository and give me a map of it. List the main folders and what each one does, the entry points, the key data models, how data flows from request to response, and the riskiest or most confusing parts. Do not change any code. End with the five files I should read first to understand this project.&quot;</li><li>Write tests - run this when a critical file has no coverage: &quot;Look at [path/to/file] and write a focused test suite for it using the test framework already in this repo. Cover the happy path, the edge cases, and the error cases. Run the tests and keep fixing them until they all pass. Show me the final test output.&quot;</li><li>Refactor safely - run this when a file has grown messy but works: &quot;Refactor [path/to/file] for readability without changing its behavior. First run the existing tests and confirm they pass. Make the changes in small steps. After each step, run the tests again. If any test fails, undo that step. Finish only when the file is cleaner and every test still passes.&quot;</li><li>Fix a failing build - run this the moment CI or your local build breaks: &quot;The build is failing. Run the build command, read the full error output, find the root cause, and fix it. Do not silence the error or skip the broken step. Re-run the build after each change and keep going until it passes cleanly. Tell me what was actually wrong.&quot;</li><li>Write the docs - run this before you hand a project to anyone else: &quot;Read this repository and write a clear README. Include what the project does, how to install and run it locally, the environment variables it needs, the main commands, and how to run the tests. Use simple language a new developer could follow on their first day. Save it as README.md.&quot;</li><li>Set up a project - run this on an empty folder to skip the boilerplate: &quot;Set up a new [language or framework] project in this folder. Add a sensible folder structure, a starter config, a test runner, a lint setup, and a .gitignore. Create one tiny passing test so I can confirm the tooling works. Run it and show me the green result.&quot;</li><li>Build a small feature end to end - run this when you know the outcome you want: &quot;Build [feature, described in plain words] in this codebase. Follow the patterns already used here. Add or update the tests for it. Run the tests and the build, fix anything that breaks, and stop when both pass. Pause and ask me before doing anything destructive or irreversible.&quot;</li><li>Review a PR - run this on a branch before you merge it: &quot;Review the changes on this branch against the main branch. Tell me what changed and why, flag bugs, security issues, and missing tests, and rate each issue as must-fix, should-fix, or nice-to-have. Do not change code yet. Give me a short, prioritized review I could paste into a pull request.&quot;</li><li>Migrate or upgrade a dependency - run this when a library is out of date: &quot;Upgrade [dependency] from its current version to [target version] in this repo. Read the changelog for breaking changes, update the code to match the new version, run the tests and the build, and fix anything that breaks. Stop when everything passes and summarize exactly what you changed.&quot;</li><li>Turn a repeated task into a skill - run this once you have done the same thing twice: &quot;I keep asking you to [describe the repeated task]. Turn this into a reusable Claude Code skill. Write the skill so I can trigger it by name, document what inputs it needs, and include a short example. Save it in the right place and tell me how to run it next time.&quot;</li></ol>
<blockquote><strong>NOTE:</strong> Notice the pattern: every prompt names a Goal, sets a Finish line ('stop when both pass', 'show me the green result'), and gives the agent a Check to verify against. That is the CCC prompt formula at work. Copy the shape, not just the words.</blockquote>
<h2>When to run each prompt at a glance</h2>
<p>Most of these prompts map to a moment in a project. Use this table to grab the right one fast instead of rereading the list. The 'Check' column is the verify step that keeps the loop honest.</p>
<table><caption>The 10 prompts by job, trigger, and what the agent checks against</caption><thead><tr><th>Prompt</th><th>Run it when</th><th>Check</th></tr></thead><tbody><tr><td>Codebase audit</td><td>You inherit or open an unfamiliar repo</td><td>A readable map, no code changed</td></tr><tr><td>Write tests</td><td>A critical file has no coverage</td><td>All new tests pass</td></tr><tr><td>Refactor safely</td><td>Code works but is messy</td><td>Behavior unchanged, tests still green</td></tr><tr><td>Fix a failing build</td><td>CI or local build breaks</td><td>Build passes cleanly</td></tr><tr><td>Write the docs</td><td>Before handing off a project</td><td>A README a new dev can follow</td></tr><tr><td>Set up a project</td><td>Starting from an empty folder</td><td>One tiny passing test</td></tr><tr><td>Build a feature</td><td>You know the outcome you want</td><td>Tests and build both pass</td></tr><tr><td>Review a PR</td><td>Before merging a branch</td><td>A prioritized review, no edits yet</td></tr><tr><td>Migrate a dependency</td><td>A library is out of date</td><td>Tests and build pass on the new version</td></tr><tr><td>Make a skill</td><td>You have done the same task twice</td><td>A named, reusable skill</td></tr></tbody></table>
<h2>How to adapt these prompts to your own repo</h2>
<p>These prompts work on any codebase once you make three swaps. The wording is a starting point, not a script. Adapt it and the agent fits your project instead of fighting it.</p>
<ul><li>Swap the brackets. Replace [path/to/file], [dependency], and [feature] with the real names in your repo. The more specific you are, the better the Gather step reads the right context.</li><li>Name your verify command. If your project uses a specific test or build command, say it out loud in the prompt. The agent then has a concrete Check instead of guessing.</li><li>Set the blast radius. Add a line like 'only touch files inside [folder]' so the agent stays scoped to the task and does not edit things you did not mean to change.</li><li>Add a checkpoint. For anything risky, end with 'pause and confirm before deleting, migrating data, or pushing'. That one sentence keeps a fast prompt from becoming an expensive mistake.</li></ul>
<p>The skill that makes all of this faster is writing the goal sharply the first time. I go deep on that in [how to use Claude Code like a pro](/blog/how-to-use-claude-code-like-a-pro). The difference between an okay result and a week-of-work result is almost always the clarity of the prompt, not the model.</p>
<h2>Turn your best prompt into a repeatable skill</h2>
<p>The real leverage is not running a great prompt once. It is never typing it again. When a prompt earns its keep, turn it into a Claude Code skill so you trigger it by name from then on. Prompt number 10 above is the prompt that does exactly that.</p>
<p>A skill captures your winning prompt, its inputs, and its checks so the whole team runs it the same way every time. Your codebase audit becomes a one-word command. Your PR review becomes a habit. To see which skills are worth setting up first, read [the Claude Code skills to install first](/blog/claude-code-skills-to-install-first).</p>
<blockquote><strong>TIP:</strong> Start a prompt library today. Every time a prompt does a week of work, save it. Within a month you have a personal toolkit that turns most of your job into 'run the prompt, review the result'. That library is your real edge, not any single prompt.</blockquote>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club we share the prompts and skills our members run every day, plus the workflows behind them, with a community shipping in public. Browse the [curriculum](/curriculum), grab more prompts in the [library](/library), or join us at https://www.skool.com/claudecodeclub/about.</blockquote>
<h2>FAQ</h2>
<p><strong>What are the best Claude Code prompts for getting real work done?</strong></p><p>The best Claude Code prompts give the agent a clear goal, a finish line, and something to verify against - what we call the CCC prompt formula. The 10 prompts in this post cover the highest-leverage jobs: auditing a codebase, writing tests, refactoring safely, fixing a failing build, writing docs, setting up a project, building a feature, reviewing a PR, upgrading a dependency, and turning a repeated task into a skill.</p>
<p><strong>Do I need the terminal to use these Claude Code prompts?</strong></p><p>No. Every prompt here runs in the Claude Code desktop app. You open the app, point it at a real project folder, paste the prompt, and let the agent loop through the work. The same prompts also work in the web app, your IDE, or the terminal if you prefer them.</p>
<p><strong>Why do my Claude Code prompts give vague results?</strong></p><p>Usually the prompt is missing a finish line or a way to verify success. Add a clear 'done' state and a concrete check like 'run the tests and stop when they pass'. Naming the exact file, command, or outcome you want also sharpens the result far more than longer wording.</p>
<p><strong>How do I adapt these prompts to my own codebase?</strong></p><p>Swap the bracketed parts for the real names in your repo, name your actual test or build command, set the blast radius so the agent only touches the files you intend, and add a checkpoint before anything risky. Those four edits make any prompt here fit your project.</p>
<p><strong>How do I save a prompt so I do not have to retype it?</strong></p><p>Turn it into a Claude Code skill. Once a prompt proves its value, ask Claude Code to convert it into a named, reusable skill that documents its inputs and checks. After that you trigger the whole job by name. Prompt number 10 in this post does exactly this.</p>
<p><strong>Are these prompts safe to run on a live project?</strong></p><p>They are safer when you scope them. Tell the agent which files or folders it may touch, and add a line that makes it pause and confirm before anything destructive like deleting files, migrating data, or pushing. With those guardrails in place, these prompts are designed to verify their own work before they finish.</p>]]></content:encoded>
    </item>
    <item>
      <title>The Claude Code Client Onboarding Prompt Pack (7 Prompts)</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-client-onboarding-prompt-pack</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-client-onboarding-prompt-pack</guid>
      <pubDate>Wed, 24 Jun 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Claude Code</category>
      <category>Agency</category>
      <category>Client Onboarding</category>
      <category>Templates</category>
      <description><![CDATA[Client onboarding is where most agencies quietly leak time and trust. This Claude Code client onboarding pack gives you 7 copy-paste prompts that turn discovery notes into a welcome doc, a scope summary, a kickoff questionnaire, an access checklist, and a first-week plan in minutes.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Client onboarding is where agencies leak the most time and trust - and it is the easiest part to systematize.</li><li>This Claude Code client onboarding pack is 7 copy-paste prompts that turn your messy discovery notes into clean, consistent onboarding documents.</li><li>Run the pack on every new client, then save it as a reusable skill so onboarding becomes a one-click step instead of a scramble.</li></ul>
<h2>Why Claude Code client onboarding fixes your biggest leak</h2>
<p>Claude Code client onboarding fixes the part of agency work that quietly costs you the most: the first two weeks with a new client. Onboarding is where time leaks and trust erodes. Scope is fuzzy, access is missing, and the client wonders if they hired the right team. None of that is a skill problem. It is a process problem, and a process problem is exactly what a prompt pack solves.</p>
<p>Most agencies onboard from memory. Every project starts a little differently, so quality swings with how tired you were that week. A prompt pack ends that. You feed Claude Code your raw discovery notes, and it produces the same clean, consistent onboarding documents every time. The client feels a calm, organized start. You stop reinventing the wheel on every kickoff.</p>
<blockquote><strong>TIP:</strong> We call the 7 prompts below the CCC onboarding pack. Treat them as one system, not seven one-offs. Run them in order on each new client and you produce a complete onboarding kit in the time it used to take to write a single welcome email.</blockquote>
<h2>The 7 Claude Code client onboarding prompts</h2>
<p>Here is the full CCC onboarding pack. Each prompt names what it produces, gives you the exact text to paste into Claude Code, and tells you what to feed it. Most of them run off the same input: your discovery or sales call notes. Paste them in, then edit the output instead of writing from a blank page.</p>
<ol><li>Welcome and what-happens-next doc - paste this with your notes to produce the first thing the client reads: &quot;Using these discovery notes, write a short, warm welcome document for our new client [client name]. Cover what we are building together, the three or four phases ahead, who their main point of contact is, and what they can expect in the first week. Keep the tone calm and confident, avoid jargon, and end with one clear next step for them.&quot;</li><li>Plain-English scope summary - run this to make sure both sides agree on what is and is not included: &quot;Read these notes and write a plain-English scope summary for [client name]. List what is included in this engagement, what is explicitly out of scope, the main deliverables, and the rough timeline. Use simple bullet points a non-technical client can understand. Flag anything in the notes that is ambiguous and needs confirming before we start.&quot;</li><li>Kickoff questionnaire - run this to collect everything you need before the first working session: &quot;Create a kickoff questionnaire for [client name] based on what is still unclear in these discovery notes. Ask only for what we genuinely need - brand assets, goals and success metrics, examples they like, decision-makers, and any deadlines. Group the questions into clear sections and keep the whole thing short enough that a busy client will actually finish it.&quot;</li><li>Project brief from discovery notes - run this to turn a rambling call into a brief the team can build from: &quot;Turn these discovery call notes into a clear internal project brief for [client name]. Include the client's goal in one sentence, the problem we are solving, the deliverables, the constraints, the key stakeholders, and the success criteria. Pull the important details out of the notes and leave out the small talk. Write it so any team member could pick it up cold.&quot;</li><li>Access and credentials checklist - run this so nothing stalls the project on day three: &quot;Based on this scope, write an access and credentials checklist for [client name]. List every account, tool, login, domain, and asset we will need from them to do this work, why we need each one, and the safest way for them to share it. Order it by what blocks us first. Add a short note reminding them to use a secure method to share passwords.&quot;</li><li>Communication cadence plan - run this to set expectations before the client sets them for you: &quot;Write a simple communication plan for our engagement with [client name]. Recommend how often we meet, which channel we use for quick questions versus formal updates, who attends, expected response times on both sides, and how we will report progress. Keep it light and realistic for a busy client, and frame it as a proposal they can adjust.&quot;</li><li>First-week action plan - run this to start fast and visibly: &quot;Create a first-week action plan for the [client name] engagement using this scope and brief. List what our team will do day by day, what we need from the client and when, and one small visible win we can deliver in the first week to build trust. Keep it to a single page and make every item concrete and assignable.&quot;</li></ol>
<blockquote><strong>NOTE:</strong> Feed all seven prompts from the same source: your discovery call notes plus the signed scope. The more raw detail you paste in, the less you edit afterward. Claude Code reads the notes, does the writing, and hands you a draft you refine in minutes.</blockquote>
<h2>What the onboarding pack produces at a glance</h2>
<p>Run all seven prompts and you hold a complete onboarding kit. This table shows what each prompt produces and who it is for, so you can decide which to send to the client and which to keep internal.</p>
<table><caption>The CCC onboarding pack: prompt, output, and audience</caption><thead><tr><th>Prompt</th><th>What it produces</th><th>For</th></tr></thead><tbody><tr><td>Welcome doc</td><td>A warm what-happens-next overview</td><td>Client</td></tr><tr><td>Scope summary</td><td>Plain-English in and out of scope</td><td>Both sides</td></tr><tr><td>Kickoff questionnaire</td><td>A short form that gathers what you need</td><td>Client</td></tr><tr><td>Project brief</td><td>A build-ready internal brief</td><td>Your team</td></tr><tr><td>Access checklist</td><td>Every login and asset, ordered by urgency</td><td>Client</td></tr><tr><td>Cadence plan</td><td>Meeting and response-time expectations</td><td>Both sides</td></tr><tr><td>First-week plan</td><td>A day-by-day plan with an early win</td><td>Your team</td></tr></tbody></table>
<h2>How to turn the pack into a repeatable system</h2>
<p>Run the pack once by hand. Then make it a system so it runs the same way for every client, no matter who on your team is driving. Three steps get you there.</p>
<ol><li>Save your edited prompts. After the first client, you will have tightened the wording. Keep the improved versions in one document so the whole team works from the same pack.</li><li>Add your house style. Paste a paragraph of your brand voice and standard terms into each prompt so the output already sounds like your agency instead of generic.</li><li>Turn the pack into a skill. Ask Claude Code to bundle the seven prompts into one reusable onboarding skill you trigger by name. From then on, new client onboarding is one command plus a quick review, not a from-scratch scramble.</li></ol>
<p>This is the same move that makes the rest of agency delivery profitable: systematize the repeatable parts so your senior people spend their hours on judgment, not formatting. We walk through more of these money-making systems in [5 Claude Code workflows that get you paid](/blog/5-claude-code-workflows-that-get-you-paid).</p>
<h2>Why faster onboarding protects your margin and retention</h2>
<p>Faster onboarding is not just tidier. It directly protects your margin and your retention. Onboarding hours are usually unbilled, so every hour you cut goes straight to your bottom line. When the pack turns a half-day of admin into a short review, that recovered time is pure margin on every project you sign.</p>
<p>Retention starts in week one. A client who feels organized, informed, and quick to a first win decides early that they made the right call. A messy start plants doubt that no amount of good work fully removes later. A consistent onboarding pack makes that strong first impression the default, not a happy accident.</p>
<p>Onboarding is only part of the margin picture. How you scope and price the work sets the ceiling. If you want the full pricing side, read [how to price a Claude Code agency project](/blog/how-to-price-a-claude-code-agency-project) and pair it with this pack so you start every engagement profitable and organized.</p>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club we build and share agency systems like this onboarding pack with operators running real client work. See the [curriculum](/curriculum), and when you are ready to systematize your whole delivery, join us at https://www.skool.com/claudecodeclub/about.</blockquote>
<h2>FAQ</h2>
<p><strong>What is a Claude Code client onboarding prompt pack?</strong></p><p>It is a set of reusable prompts that turn your raw discovery notes into a complete onboarding kit. This CCC onboarding pack has 7 prompts that produce a welcome doc, a plain-English scope summary, a kickoff questionnaire, an internal project brief, an access checklist, a communication cadence plan, and a first-week action plan. You feed Claude Code your notes and it does the writing.</p>
<p><strong>Why is client onboarding worth automating with Claude Code?</strong></p><p>Onboarding is where agencies leak the most time and trust. The work is repetitive, usually unbilled, and inconsistent because every project starts from memory. A prompt pack makes the output the same high quality every time, recovers hours that go straight to margin, and gives clients a calm, organized start that protects retention.</p>
<p><strong>What do I feed these onboarding prompts?</strong></p><p>Mostly your discovery or sales call notes plus the signed scope. Paste the raw notes into each prompt and Claude Code pulls out the relevant details. The more detail you include, the less you have to edit afterward. For a few prompts you also add the client name and any deadlines.</p>
<p><strong>How do I make the onboarding pack sound like my agency?</strong></p><p>Add a short paragraph of your brand voice and standard terms to each prompt before you run it. Once you have edited the outputs for your first client, save those tightened versions so the whole team works from the same pack and the tone stays consistent across every engagement.</p>
<p><strong>Can I turn these 7 prompts into one reusable system?</strong></p><p>Yes. Once you have refined the prompts, ask Claude Code to bundle them into a single onboarding skill you trigger by name. After that, onboarding a new client becomes one command plus a quick review instead of writing every document from scratch.</p>
<p><strong>Do I need to be technical to use this onboarding pack?</strong></p><p>No. These prompts produce documents, not code, so any agency owner or freelancer can run them. You open Claude Code, paste a prompt with your notes, and edit the draft it returns. The pack is built for operators who run client work, not just developers.</p>]]></content:encoded>
    </item>
    <item>
      <title>What Are Agent Loops in Claude Code and How to Run One</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-agent-loops</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-agent-loops</guid>
      <pubDate>Tue, 23 Jun 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Agents</category>
      <category>Workflow</category>
      <category>Tutorial</category>
      <description><![CDATA[Claude Code agent loops are the engine behind the magic: the agent gathers context, acts, checks its own work, and repeats until the job is done. Here is what an agent loop is, the CCC loop framework, and how to run your first one today.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>A Claude Code agent loop is the cycle the agent runs on its own: gather context, take an action, check the result, then repeat until the goal is met.</li><li>You do not write the loop by hand. You set a clear goal and the guardrails, and the agent loops through the work across files, commands, and tools.</li><li>Below is the CCC loop framework, the exact steps to run your first loop today, and how to let a loop run unattended once you trust it.</li></ul>
<h2>What is an agent loop in Claude Code?</h2>
<p>A Claude Code agent loop is the repeating cycle the agent runs to finish a task without you driving each step. It gathers context, takes one action, checks whether that action worked, and then decides what to do next. It keeps looping until the goal is reached or it hits a limit you set.</p>
<p>This is the core difference between a chatbot and an agent. A chatbot answers once and stops. An agent loops: read, act, verify, repeat. That loop is why Claude Code can edit many files, run commands, fix its own errors, and come back with a working result instead of a suggestion you have to apply yourself.</p>
<p>You do not type the loop. You give the agent a goal in plain language, and the loop is what happens under the hood. Your job is to define the goal clearly and set the guardrails. The agent handles the iteration.</p>
<h2>The CCC loop: the four steps every agent loop runs</h2>
<p>Every agent loop in Claude Code, simple or complex, runs the same four steps. We call it the CCC loop, and naming it makes the agent's behavior predictable instead of magical. Once you can see these four steps, you can steer them.</p>
<ol><li>Gather: the agent reads the context it needs - your prompt, the relevant files, command output, and any connected tools or data.</li><li>Act: it takes one concrete step - edits a file, runs a command, calls a tool, or writes new code.</li><li>Verify: it checks the result of that step - reads the error, runs the test, confirms the file changed as intended.</li><li>Repeat: it uses what it learned to decide the next action, and loops back to Gather until the goal is met.</li></ol>
<blockquote><strong>TIP:</strong> The Verify step is what separates a good loop from a runaway one. When you give the agent a way to check its own work - a test to run, a build to pass, an output to inspect - the loop self-corrects instead of confidently shipping a mistake. Always give the loop something to check against.</blockquote>
<h2>How to run your first agent loop</h2>
<p>Running your first agent loop takes one good prompt, not a config file. The skill is writing a goal the loop can actually finish and verify. Here is the exact sequence we teach inside Claude Code Club.</p>
<ol><li>Open Claude Code in the desktop app, the web, your IDE, or the terminal - any of them runs the same loop.</li><li>Point it at a real project folder so the Gather step has context to read.</li><li>Give it a goal with a finish line: not 'improve this code' but 'add input validation to the signup form and make the existing tests pass'.</li><li>Tell it how to verify: name the test command, the build, or the exact output you expect to see.</li><li>Let the loop run, and watch the Act and Verify steps scroll by. Step in only when it asks or when it drifts.</li></ol>
<p>That is the whole move. The agent will loop through Gather, Act, and Verify on its own, often many times, before it hands you a finished change. If you want a guided first build, our [build your first AI agent with Claude Code](/blog/build-your-first-ai-agent-with-claude-code) walk-through gets you a working result the same day.</p>
<h2>Single-task loop vs multi-step loop</h2>
<p>Not every loop is the same size. A single-task loop fixes one thing. A multi-step loop chains many actions toward a larger goal, sometimes splitting work across subagents that each run their own loop. Knowing which one you are asking for keeps your expectations and your guardrails right.</p>
<table><caption>Two shapes of Claude Code agent loop</caption><thead><tr><th></th><th>Single-task loop</th><th>Multi-step loop</th></tr></thead><tbody><tr><td>Goal</td><td>One clear change</td><td>A feature or a workflow</td></tr><tr><td>Iterations</td><td>A handful</td><td>Many, often nested</td></tr><tr><td>Verify against</td><td>One test or output</td><td>A checklist of outcomes</td></tr><tr><td>Best for</td><td>Bug fixes, small edits</td><td>Building or refactoring</td></tr><tr><td>Watch for</td><td>Wrong assumption</td><td>Drift from the goal</td></tr></tbody></table>
<p>Multi-step loops are where Claude Code earns its keep, but they also drift further if the goal is vague. The fix is the same as always: a sharp goal and a clear way to verify each milestone. For when to reach for subagents inside a big loop, see [skills, subagents, MCP, and hooks: when to use each](/blog/claude-code-skills-subagents-mcp-hooks-when-to-use).</p>
<h2>How to keep an agent loop on the rails</h2>
<p>A loop is only as good as its guardrails. Left undefined, an agent can loop on the wrong assumption, edit files you did not mean to touch, or keep going long after it should have stopped to ask. These are the rails that keep a loop productive.</p>
<ul><li>Give it a finish line. A goal with a clear 'done' state ends the loop cleanly instead of letting it wander.</li><li>Give it something to verify against. A test, a build, or an expected output turns guessing into self-correction.</li><li>Scope the blast radius. Tell it which files or folders are in play so it does not edit beyond the task.</li><li>Set a checkpoint. Ask it to pause and confirm before anything risky or hard to undo.</li><li>Read the Verify steps. If the loop keeps 'fixing' the same thing, the goal was ambiguous - stop and sharpen it.</li></ul>
<blockquote><strong>WARNING:</strong> An agent loop with no way to check its work is the most common reason a build goes sideways. If you only do one thing from this post, give every loop a test or an output to verify against. That single habit fixes most runaway loops.</blockquote>
<h2>Let the loop run while you are away</h2>
<p>Once you trust a loop, the next unlock is letting it run without you watching. The same Gather, Act, Verify cycle can run headless, on a schedule, or kicked off by an event - so the work happens while you sleep and you review the result in the morning.</p>
<p>That is exactly what we cover in [schedule Claude Code agents while you sleep](/blog/schedule-claude-code-agents-while-you-sleep) and [Claude Code auto mode that runs on its own](/blog/claude-code-auto-mode-runs-on-its-own). Master the loop first, then automate it - in that order, because an unattended loop with weak guardrails just makes mistakes faster.</p>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club we teach the agent loop end to end, from your first single-task loop to multi-step builds and scheduled runs, with a community that ships in public. Start with the [curriculum](/curriculum) or join us at https://www.skool.com/claudecodeclub/about.</blockquote>
<h2>FAQ</h2>
<p><strong>What is an agent loop in Claude Code?</strong></p><p>An agent loop is the repeating cycle Claude Code runs to finish a task on its own: it gathers context, takes an action, verifies the result, and repeats until the goal is met. It is the reason the agent can edit files, run commands, and fix its own errors instead of just answering once.</p>
<p><strong>Do I have to write the loop myself?</strong></p><p>No. You give Claude Code a goal in plain language and set the guardrails. The loop runs under the hood automatically. Your job is to define a clear finish line and a way for the agent to verify its own work.</p>
<p><strong>Why does my agent loop keep going in circles?</strong></p><p>Usually because the goal is ambiguous or there is no way to verify success. Give the loop a clear 'done' state and something concrete to check against, like a test or an expected output, and it will self-correct instead of repeating the same step.</p>
<p><strong>How is an agent loop different from a chatbot?</strong></p><p>A chatbot answers once and stops. An agent loops: it reads, acts, verifies, and repeats until the task is finished. That iteration is what makes Claude Code an agent rather than a chat window.</p>
<p><strong>Can an agent loop run without me watching?</strong></p><p>Yes. The same loop can run headless, on a schedule, or triggered by an event, so the work happens unattended and you review the result afterward. Learn the loop manually first, then automate it so the guardrails are solid before it runs alone.</p>
<p><strong>How do I keep a long agent loop from going off track?</strong></p><p>Give it a finish line, a way to verify each step, and a scoped set of files to work in. Add a checkpoint so it pauses before anything risky. Those rails keep a multi-step loop pointed at the goal instead of drifting.</p>]]></content:encoded>
    </item>
    <item>
      <title>The Best Claude Code Plugins to Install in 2026</title>
      <link>https://www.claudecodeclub.ai/blog/best-claude-code-plugins</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/best-claude-code-plugins</guid>
      <pubDate>Tue, 23 Jun 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Claude Code</category>
      <category>Plugins</category>
      <category>Setup</category>
      <category>Tools</category>
      <description><![CDATA[The best Claude Code plugins bundle commands, subagents, MCP servers, and hooks into one install so your agent shows up ready for a specific job. Here are the plugins worth installing, what each unlocks, and how to add one without bloating your setup.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>A Claude Code plugin is a single install that bundles slash commands, subagents, MCP servers, and hooks for one job - so your agent arrives pre-configured instead of you wiring it up piece by piece.</li><li>The best Claude Code plugins are the ones that match a job you do often: code review, testing, git and pull requests, documentation, and project memory.</li><li>Below is what a plugin actually is, the plugins worth installing by job, how to add one, and the CCC rule for keeping your setup lean.</li></ul>
<h2>What a Claude Code plugin actually is</h2>
<p>A Claude Code plugin is one install that bundles several capabilities together for a specific job. Instead of adding a slash command here, a subagent there, and an MCP server somewhere else, a plugin packages them as a unit you turn on once. The agent then shows up already knowing how to do that job.</p>
<p>Think of it as a kit. A code-review plugin might ship the review command, a reviewer subagent, the hooks that run it automatically, and the connection to your repo - all in one. You install the kit, not the individual parts.</p>
<table><caption>What can live inside a Claude Code plugin</caption><thead><tr><th>Piece</th><th>What it adds</th></tr></thead><tbody><tr><td>Slash commands</td><td>Shortcuts that trigger a packaged workflow</td></tr><tr><td>Subagents</td><td>Specialist workers for one kind of task</td></tr><tr><td>MCP servers</td><td>Connections to your tools and data</td></tr><tr><td>Hooks</td><td>Actions that fire automatically on events</td></tr><tr><td>Skills</td><td>Packaged know-how the agent applies</td></tr></tbody></table>
<h2>How plugins differ from skills and MCP servers</h2>
<p>Plugins, skills, and MCP servers are easy to confuse because a plugin can contain the other two. The simplest way to hold it: a skill is know-how, an MCP server is a connection, and a plugin is the box that ships them together for a job.</p>
<ul><li>A skill teaches the agent how to do something - a repeatable method it follows.</li><li>An MCP server connects the agent to an outside tool or data source so it can act on real systems.</li><li>A plugin bundles commands, subagents, skills, MCP servers, and hooks into one install aimed at a single job.</li></ul>
<p>So you do not choose between them - plugins are how the others travel together. If you want the deeper breakdown of each part on its own, read [skills, subagents, MCP, and hooks: when to use each](/blog/claude-code-skills-subagents-mcp-hooks-when-to-use), and for connections specifically, [the best Claude Code MCP servers to install](/blog/best-claude-code-mcp-servers).</p>
<h2>The best Claude Code plugins to install, by job</h2>
<p>The best Claude Code plugins are not the flashiest - they are the ones that match a job you already do over and over. Install by job, not by hype. These are the categories worth a plugin for most builders, and what each one unlocks.</p>
<ul><li>Code review: a plugin that adds a review command plus a reviewer subagent, so every change gets a second pair of eyes before it ships.</li><li>Testing and QA: bundles a test-runner workflow and hooks that run your suite automatically, so the agent verifies its own work inside the loop.</li><li>Git and pull requests: packages commit, branch, and PR commands so the agent can open clean, well-described pull requests for you.</li><li>Documentation: a plugin that keeps READMEs, changelogs, and inline docs current as the code changes, instead of letting them rot.</li><li>Project memory and context: connects the agent to your project's standards and history so it stops re-asking what it should already know.</li><li>Security review: adds a pass that flags risky patterns - exposed keys, unsafe inputs, missing auth - before they reach production.</li><li>Frontend and design: bundles the commands and context for building UI to a consistent style instead of a different look every time.</li></ul>
<blockquote><strong>TIP:</strong> Start with the job that costs you the most time today. For most builders that is code review or testing, because those are the steps people skip when they are moving fast - and the steps a plugin makes automatic.</blockquote>
<h2>How to install a plugin in Claude Code</h2>
<p>Installing a plugin is a short, repeatable flow. The point is that one install brings in everything the plugin bundles - commands, subagents, connections, and hooks - so you are configured for the job in a single step.</p>
<ol><li>Open Claude Code in the desktop app, IDE, web, or terminal - plugins work the same across all of them.</li><li>Browse the plugin you want and confirm what it bundles, so you know which commands and connections you are adding.</li><li>Install it, then approve any permissions or connections it needs, like access to your repo or a tool.</li><li>Run the plugin's main command on a real task to confirm it behaves the way you expect.</li><li>Keep it only if it earns its place. If you never reach for it, remove it.</li></ol>
<p>If this is early in your setup, install plugins after you have your first few skills in place. Our guide to [the Claude Code skills to install first](/blog/claude-code-skills-to-install-first) is the right starting point, and plugins build on top of that foundation.</p>
<h2>How to choose plugins without bloating your setup</h2>
<p>More plugins is not better. Every plugin you add is more for the agent to consider and more for you to maintain. The CCC rule is simple: a plugin earns its place by saving you real time on a job you actually do, or it comes back out.</p>
<ul><li>Install for a job you do weekly, not one you might do someday.</li><li>Add one at a time and use it on a real task before adding the next.</li><li>Prefer a plugin that bundles a complete workflow over one that adds a single loose command.</li><li>Review your installed plugins now and then, and remove anything you have not reached for.</li><li>If two plugins overlap, keep the one you actually use and drop the other.</li></ul>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club we share the plugin and skill setups our members actually run day to day, so you install what works instead of guessing. Start with the [curriculum](/curriculum) or join us at https://www.skool.com/claudecodeclub/about.</blockquote>
<h2>FAQ</h2>
<p><strong>What is a Claude Code plugin?</strong></p><p>A Claude Code plugin is a single install that bundles slash commands, subagents, MCP servers, hooks, and skills for one job. Instead of wiring those pieces up separately, you install the plugin once and the agent shows up ready to do that job.</p>
<p><strong>What is the difference between a plugin and an MCP server?</strong></p><p>An MCP server is a connection that lets the agent act on an outside tool or data source. A plugin is a larger bundle that can contain MCP servers along with commands, subagents, and hooks. The plugin is the box; the MCP server is one thing inside it.</p>
<p><strong>Which Claude Code plugins should I install first?</strong></p><p>Start with the job that costs you the most time, usually code review or testing. Those are the steps builders skip when moving fast, and a plugin makes them automatic. Add one plugin at a time and only keep the ones you actually use.</p>
<p><strong>Do plugins work outside the terminal?</strong></p><p>Yes. Plugins work the same whether you run Claude Code in the desktop app, an IDE, the web, or the terminal. The install and the bundled commands behave consistently across all of them.</p>
<p><strong>Can too many plugins slow Claude Code down?</strong></p><p>Yes, in the sense that every plugin is more for the agent to weigh and more for you to maintain. Keep your setup lean: install for jobs you do regularly, add one at a time, and remove plugins you stop reaching for.</p>
<p><strong>Are plugins the same as skills?</strong></p><p>No. A skill is packaged know-how the agent follows. A plugin is a bundle that can include skills along with commands, subagents, MCP servers, and hooks. Skills can ship on their own or as part of a plugin.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code vs Cursor: Which AI Coding Tool Should You Use? (2026)</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-vs-cursor</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-vs-cursor</guid>
      <pubDate>Mon, 22 Jun 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Cursor</category>
      <category>Comparison</category>
      <category>Tools</category>
      <description><![CDATA[Claude Code vs Cursor is the wrong question until you know which one fits how you actually work. Here is a clear, honest comparison of the two, what each is best at, and a five-minute test to pick the right one.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Claude Code vs Cursor is not better-or-worse, it is a difference in shape: Cursor is an AI code editor you type inside, Claude Code is an AI agent that works across your whole project for you.</li><li>Pick Cursor if you live in an editor and want smarter autocomplete and inline edits. Pick Claude Code if you want to delegate whole tasks and orchestrate work, including from a desktop app without living in a terminal.</li><li>Most serious builders end up using both. The five-minute CCC fit test below tells you which one to lead with.</li></ul>
<h2>Claude Code vs Cursor: the short answer</h2>
<p>Here is the short answer on Claude Code vs Cursor. Cursor is an AI-first code editor, so it is the place you write and edit code with AI help built into every keystroke. Claude Code is an AI coding agent, so it is a worker you hand a task to and it edits files, runs commands, and reports back. One upgrades the editing. The other replaces a chunk of the doing.</p>
<p>That single distinction decides almost everything else: how you work, who each tool fits, and when one clearly beats the other. The rest of this post breaks down both, compares them feature by feature, and ends with a quick test so you stop debating and start building.</p>
<table><caption>Claude Code vs Cursor at a glance</caption><thead><tr><th></th><th>Claude Code</th><th>Cursor</th></tr></thead><tbody><tr><td>What it is</td><td>An AI coding agent</td><td>An AI-first code editor</td></tr><tr><td>You mainly</td><td>Delegate tasks and review</td><td>Write and edit with AI help</td></tr><tr><td>Lives in</td><td>Terminal, desktop app, IDE, or web</td><td>Its own editor (a VS Code fork)</td></tr><tr><td>Best at</td><td>Multi-file work that runs itself</td><td>Fast inline edits and autocomplete</td></tr><tr><td>Models</td><td>Claude models</td><td>Multiple models, including Claude</td></tr><tr><td>Extends with</td><td>Skills, subagents, MCP, hooks</td><td>Rules and MCP</td></tr></tbody></table>
<h2>What Claude Code is and who it is for</h2>
<p>Claude Code is an agentic coding tool from Anthropic. You give it a goal in plain language, and it plans the work, edits files across your whole project, runs terminal commands, and checks its own output. It is not a chat window bolted to an editor. It is closer to a junior teammate who can take a ticket and come back with a working change.</p>
<p>It is also not terminal-only, which is the biggest misconception. Claude Code runs as a desktop app on Mac and Windows, in the web, and inside IDE extensions, as well as the original command line. That matters because it means a non-traditional coder can drive a real agent from a clean desktop window, not just a terminal. If you want the full mental model, we walk through it in [how to use Claude Code like a pro](/blog/how-to-use-claude-code-like-a-pro).</p>
<p>The deeper advantage is extensibility. Claude Code adds skills (packaged know-how), subagents (parallel workers), MCP servers (connections to your tools and data), and hooks (automatic actions on events). Together they turn a chat assistant into a system you configure once and reuse on every project. That is the part Cursor users tend to underestimate.</p>
<h2>What Cursor is and who it is for</h2>
<p>Cursor is an AI-first code editor built as a fork of VS Code. It feels familiar instantly if you have ever used VS Code, because it is the same editor with AI woven through it. Its standout features are inline autocomplete that predicts your next edit, an in-editor chat that knows your codebase, and an agent mode that can make multi-file changes while you watch.</p>
<p>Cursor is at its best when you are a developer who wants to stay in the editor and write code faster. You keep your hands on the keyboard, accept or reject suggestions, and steer constantly. It is multi-model, so you can route requests to Claude or other models depending on the task. For someone who already thinks in files and functions, it removes friction without changing how they work.</p>
<p>The trade-off is that Cursor keeps you in the loop by design. You are still the one driving the editor. That is a feature if you want control over every line, and a limit if your goal is to hand off whole tasks and only review the result.</p>
<h2>Claude Code vs Cursor, feature by feature</h2>
<p>Compare them on the things that actually change your day, not the spec sheet. The table below maps the real differences. Read it as two different tools for two different jobs, because that is what they are.</p>
<table><caption>How Claude Code and Cursor differ in practice</caption><thead><tr><th>Dimension</th><th>Claude Code</th><th>Cursor</th></tr></thead><tbody><tr><td>Core job</td><td>Do the task and report back</td><td>Help you write the task yourself</td></tr><tr><td>Autonomy</td><td>High: plans and executes multi-step work</td><td>Medium: agent mode, but editor-led</td></tr><tr><td>Form factor</td><td>Editor-agnostic; works alongside any setup</td><td>A complete editor you commit to</td></tr><tr><td>Learning curve</td><td>Plain-language first, deep config later</td><td>Instant for VS Code users</td></tr><tr><td>Automation</td><td>Runs headless, on a schedule, in CI</td><td>Interactive, inside the editor</td></tr><tr><td>Reuse across projects</td><td>Skills, subagents, MCP, hooks</td><td>Rules files and MCP</td></tr><tr><td>Best for non-coders</td><td>Strong, via the desktop app</td><td>Weaker, assumes an editor workflow</td></tr></tbody></table>
<h2>When Claude Code is the better choice</h2>
<p>Choose Claude Code when your goal is to delegate, not to type. If you find yourself describing what you want done and wishing someone would just do it across the project, that is the Claude Code use case. It shines on multi-file refactors, building a feature from a spec, wiring up integrations, and any job you would rather hand off and review.</p>
<ul><li>You want to assign whole tasks and check the result, not steer every edit.</li><li>You are building automations that run on a schedule or in CI without a human watching.</li><li>You are not a traditional developer and prefer a clean desktop app over an editor.</li><li>You want to encode your standards once with skills and reuse them on every project.</li><li>You need the agent to touch many files, run commands, and verify its own work.</li></ul>
<h2>When Cursor is the better choice</h2>
<p>Choose Cursor when the editor is your home and you want it smarter. If you already write code all day and your wish is faster edits, better autocomplete, and a chat that understands your repo, Cursor fits your hands without retraining them. It is the lowest-friction upgrade for a working developer.</p>
<ul><li>You live in VS Code and want the same editor with AI built in.</li><li>You prefer to keep control of every line and accept changes one at a time.</li><li>Your work is mostly inside one codebase you know well.</li><li>You want to switch between several AI models from one editor.</li><li>You value inline autocomplete that predicts your next keystroke.</li></ul>
<blockquote><strong>TIP:</strong> These are not mutually exclusive. Plenty of builders write in Cursor and delegate the big multi-file jobs to Claude Code in the same project. The question is which one leads your workflow, not which one you are allowed to own.</blockquote>
<h2>The CCC fit test: how to decide in five minutes</h2>
<p>Use the CCC fit test to settle Claude Code vs Cursor for your own work. It is three questions, and your answers point you to the right lead tool. We built it because the generic comparison advice ignores the one thing that matters: how you personally want to work.</p>
<ol><li>Do you want to write code or get code written? Write means lean Cursor. Get it written means lean Claude Code.</li><li>Do you want to live in an editor or work from anywhere? An editor means Cursor. Anywhere, including a desktop app, means Claude Code.</li><li>Do you want to reuse your setup as a system across many projects and automations? If yes, Claude Code's skills and MCP are the deciding edge.</li></ol>
<p>If you answered toward Claude Code and you want the fastest path to using it well, start with a real project. Our [build your first AI agent with Claude Code](/blog/build-your-first-ai-agent-with-claude-code) walk-through gets you a working result the same day, and [the Claude Code skills to install first](/blog/claude-code-skills-to-install-first) shows you which add-ons earn their place early.</p>
<blockquote><strong>NOTE:</strong> Inside Claude Code Club we teach the agentic workflow end to end, from the desktop app to skills, subagents, and MCP, with a community that builds in public. If you want to go from picking a tool to shipping with it, join us at https://www.skool.com/claudecodeclub/about or start with the [curriculum](/curriculum).</blockquote>
<h2>FAQ</h2>
<p><strong>Is Claude Code better than Cursor?</strong></p><p>Neither is universally better. Claude Code is better when you want to delegate whole tasks to an agent that edits files and runs commands for you. Cursor is better when you want a smarter editor to write code in yourself. Pick the one that matches how you want to work.</p>
<p><strong>Can you use Claude Code and Cursor together?</strong></p><p>Yes, and many builders do. You can write and make small edits in Cursor while handing larger multi-file tasks and automations to Claude Code in the same project. They solve different problems, so they coexist well.</p>
<p><strong>Do I need to use a terminal to run Claude Code?</strong></p><p>No. Claude Code runs as a desktop app on Mac and Windows, in the web, and inside IDE extensions, in addition to the command line. The terminal is optional, which makes it accessible to people who are not traditional developers.</p>
<p><strong>Does Cursor use Claude?</strong></p><p>Cursor is multi-model and can route requests to Claude as well as other models. Claude Code uses Claude models specifically. So you can reach Claude through either tool, but only Claude Code is built entirely around it.</p>
<p><strong>Which is better for non-developers?</strong></p><p>Claude Code, in most cases. Its desktop app lets you describe what you want in plain language and have the agent do the work, without committing to an editor-centric workflow. Cursor assumes you are comfortable working inside a code editor.</p>
<p><strong>What can Claude Code do that Cursor cannot?</strong></p><p>Claude Code can run headless and on a schedule, orchestrate subagents in parallel, and extend with skills, MCP servers, and hooks that you reuse across every project. That turns it into a configurable system, not just an in-editor assistant.</p>]]></content:encoded>
    </item>
    <item>
      <title>The Best Claude Code MCP Servers to Install (And What Each One Unlocks)</title>
      <link>https://www.claudecodeclub.ai/blog/best-claude-code-mcp-servers</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/best-claude-code-mcp-servers</guid>
      <pubDate>Mon, 22 Jun 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Claude Code</category>
      <category>MCP</category>
      <category>Workflows</category>
      <category>Tools</category>
      <description><![CDATA[The best Claude Code MCP servers are the ones that connect the agent to the tools and data you already use. Here are the ones worth installing, what each unlocks, and how to add them without bloating your setup.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>The best Claude Code MCP servers are the ones that connect the agent to a tool or data source you actually use, so it can act, not just talk.</li><li>Start with filesystem, GitHub, a database, and a browser server. Those four cover most real work.</li><li>Install by need, not by collection. A few connected tools beat a long list you never call.</li></ul>
<h2>The best Claude Code MCP servers, and how to choose</h2>
<p>Straight up: the best Claude Code MCP servers are the ones that plug the agent into a tool or data source you already work with every day. An MCP server gives Claude Code a live connection to something outside itself, like your files, your repo, your database, or a browser. Without one, the agent can only reason about what you paste in. With the right ones, it can actually go and do the work.</p>
<p>So the choosing rule is simple. Install a server when you have a repeated task that needs that system, and skip it otherwise. If you do not touch a database, a Postgres server is dead weight. The list below is ranked by how often it pays off for a typical builder, not by how impressive it sounds. If you want the background on what MCP is first, we cover it in [what are MCP servers and why they matter](/blog/what-are-mcp-servers-and-why-they-matter).</p>
<table><caption>The best Claude Code MCP servers, ranked by how often they earn their place</caption><thead><tr><th>MCP server</th><th>What it unlocks</th><th>Install it when</th></tr></thead><tbody><tr><td>Filesystem</td><td>Read and write files in folders you choose</td><td>Almost always, for work outside the project dir</td></tr><tr><td>GitHub</td><td>Issues, pull requests, code, and reviews</td><td>You ship code or manage repos</td></tr><tr><td>Database (Postgres)</td><td>Query and inspect a real database</td><td>Your app has a database to work against</td></tr><tr><td>Browser (Playwright)</td><td>Drive a real browser and read live pages</td><td>You test, scrape, or automate the web</td></tr><tr><td>Fetch / web</td><td>Pull and read a specific URL on demand</td><td>The agent needs current, real web content</td></tr><tr><td>Slack</td><td>Read and post messages in channels</td><td>Your team or clients live in Slack</td></tr><tr><td>Google Drive</td><td>Read docs and sheets</td><td>Your source material sits in Drive</td></tr><tr><td>Memory</td><td>A persistent knowledge graph across sessions</td><td>You want recall that survives restarts</td></tr></tbody></table>
<h2>Filesystem: the one almost everyone needs</h2>
<p>Install the filesystem MCP server first. It lets Claude Code read and write files in folders you explicitly allow, beyond the single project it was launched in. That sounds small, but it is what turns the agent loose on real tasks: organizing a downloads folder, generating a batch of files, or working across two projects at once. You grant specific directories, so it stays scoped to what you intend.</p>
<h2>GitHub: for anyone who ships code</h2>
<p>Add the GitHub MCP server if you work with repositories. It connects Claude Code to issues, pull requests, code, and reviews, so the agent can open a PR, triage an issue, or read a repo it does not have checked out locally. For an agency, this is the difference between an assistant that suggests a fix and one that opens the pull request with the fix already in it.</p>
<h2>Database and browser: where real apps live</h2>
<p>Install a database server, such as the Postgres MCP server, when your work touches real data. It lets the agent inspect a schema, run read queries, and reason about your actual tables instead of guessing. Pair it with care: scope it to read-only or a safe database when you can, because a connected agent is a powerful one.</p>
<p>Add a browser server, such as the Playwright MCP server, when you need the agent to act on the live web. It can open pages, click, fill forms, and read what actually renders. That covers testing a flow, checking a deployed page, or pulling structured data from a site. It is the server that lets Claude Code see the web the way a user does, not just fetch raw HTML.</p>
<h2>Fetch, Slack, Drive, and Memory: the situational picks</h2>
<p>These four are worth it only when they map to your workflow. The fetch or web server pulls a specific URL on demand, which is useful when the agent needs current content from a page you name. The Slack server reads and posts messages, which pays off when your team or clients coordinate there. The Google Drive server reads docs and sheets, which helps when your source material lives in Drive. The memory server keeps a persistent knowledge graph across sessions, so the agent recalls facts after a restart.</p>
<blockquote><strong>NOTE:</strong> Notice the pattern: each one connects Claude Code to a place your work already happens. That is the whole test for whether an MCP server belongs in your setup.</blockquote>
<h2>How to install an MCP server in Claude Code</h2>
<p>Installing an MCP server is a config step, not a coding project. You register the server with Claude Code, then restart so it loads. There are two common paths, and both take a few minutes.</p>
<ol><li>Pick the server and find its command. Most servers tell you the exact run command and any keys or tokens they need.</li><li>Add it to your MCP config. Use the Claude Code command to add a server, or edit the config file the desktop app reads.</li><li>Provide credentials as needed. GitHub, Slack, and database servers want a token or connection string, kept in your config or environment.</li><li>Restart Claude Code so it picks up the new server, then ask the agent to use it on a small task to confirm it connected.</li></ol>
<blockquote><strong>WARNING:</strong> Treat MCP credentials like production secrets, because they are. A connected server can act on the real system. Scope tokens to the minimum access the task needs, and never wire a server with write access to something you cannot afford to have changed by accident.</blockquote>
<h2>How many MCP servers should you run?</h2>
<p>Run as few as cover your real work. More servers mean more context, more credentials to manage, and more surface area for the agent to misfire on. Four well-chosen servers you call often beat a dozen you installed once and forgot. This is the same principle behind picking [the Claude Code skills to install first](/blog/claude-code-skills-to-install-first): match the tool to the work in front of you, then add more only when a new repeated task demands it.</p>
<h2>The agency angle: which MCP servers earn their keep on client work</h2>
<p>For client work, the servers that pay are the ones that compress delivery time. GitHub turns review notes into shipped pull requests. A database server lets you answer data questions without a round trip to the client's engineer. A browser server lets you verify a live deployment before you tell the client it is done. Each one removes a handoff, and removed handoffs are where agency margin comes from.</p>
<p>Price that leverage deliberately. When MCP servers let you deliver in hours what used to take days, that is value to bill for, not a discount to pass on. We break down how to think about it in [how to price a Claude Code agency project](/blog/how-to-price-a-claude-code-agency-project).</p>
<blockquote><strong>NOTE:</strong> Want the connected, agentic workflow taught end to end, with the server setups that actually hold up on client work? That is what we build inside Claude Code Club. Join us at https://www.skool.com/claudecodeclub/about or start with the [curriculum](/curriculum).</blockquote>
<h2>FAQ</h2>
<p><strong>What is the best MCP server to install first in Claude Code?</strong></p><p>The filesystem MCP server. It lets Claude Code read and write files in folders you allow, which is the foundation for almost every real task. After that, add GitHub, a database server, and a browser server based on the work you do.</p>
<p><strong>What does an MCP server do in Claude Code?</strong></p><p>An MCP server gives Claude Code a live connection to a tool or data source outside itself, like your files, a repo, a database, or a browser. It lets the agent act on real systems instead of only reasoning about text you paste in.</p>
<p><strong>How do I install an MCP server in Claude Code?</strong></p><p>Register the server with Claude Code using its add-server command or by editing the config file the desktop app reads, provide any tokens it needs, then restart Claude Code. Test it on a small task to confirm the connection.</p>
<p><strong>How many MCP servers should I run at once?</strong></p><p>As few as cover your real work, often around four. Each server adds context and credentials to manage, so a small set you use often beats a long list you installed and forgot.</p>
<p><strong>Are MCP servers safe to use?</strong></p><p>They are as safe as the access you grant. A connected server can act on the real system, so scope tokens to the minimum the task needs, prefer read-only access where possible, and never connect write access to something you cannot afford to have changed by accident.</p>
<p><strong>Which MCP servers are best for agency and client work?</strong></p><p>GitHub, a database server, and a browser server tend to earn their keep, because they turn review notes into shipped pull requests, answer data questions without a client round trip, and verify live deployments. Each removes a handoff, which is where agency margin comes from.</p>]]></content:encoded>
    </item>
    <item>
      <title>12 Claude Code Project Ideas to Build This Weekend (Beginner to Advanced)</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-project-ideas-to-build-this-weekend</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-project-ideas-to-build-this-weekend</guid>
      <pubDate>Sun, 21 Jun 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Building</category>
      <category>Getting Started</category>
      <category>Projects</category>
      <description><![CDATA[Stuck on what to build? Here are 12 Claude Code project ideas sorted into three tiers, from a one-sitting starter to a self-running system, each with the exact first move so you actually finish.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>The reason you run out of Claude Code project ideas is not a lack of ideas - it is picking projects that are too big or too vague to ever finish.</li><li>Use the CCC build ladder: sort every idea into Starter (one sitting), Leverage (a weekend), or System (runs itself), then build one rung above where you are now.</li><li>Below are 12 concrete projects across those three tiers, each with the single first move so you start instead of planning.</li><li>Pick one today, finish it, and let the win pull you up the ladder.</li></ul>
<h2>Why you keep running out of Claude Code project ideas</h2>
<p>Here is the honest reason most people stall: it is not that they cannot think of anything to build with Claude Code. It is that every idea they think of is either so big it never gets finished, or so vague that they never actually start. &quot;Build an app&quot; is not a project. It is a wish.</p>
<p>A good Claude Code project has three traits. It is small enough to finish in a known amount of time. It solves a real annoyance you actually have. And it teaches you exactly one new capability you did not have before. Get those three right and you finish, and finishing is the only thing that compounds.</p>
<p>So this is not a list of 12 wishes. Each idea below names what it is, why it is worth your time, and the single first move that gets you off zero. They are sorted into three tiers by how much time and skill they take, so you can pick one that fits the weekend you actually have.</p>
<table><caption>12 Claude Code project ideas at a glance</caption><thead><tr><th>Tier</th><th>Project</th><th>What it teaches you</th></tr></thead><tbody><tr><td>Starter</td><td>Personal CLAUDE.md operating manual</td><td>Persistent memory and context</td></tr><tr><td>Starter</td><td>Folder-cleanup command-line tool</td><td>Reading a real spec and running scripts</td></tr><tr><td>Starter</td><td>One-page personal site</td><td>Shipping something live</td></tr><tr><td>Starter</td><td>Explain-this-codebase doc generator</td><td>Reading and summarizing code</td></tr><tr><td>Leverage</td><td>Slash-command pack for repeat tasks</td><td>Reusable workflows</td></tr><tr><td>Leverage</td><td>Daily digest that writes itself</td><td>Fetching and shaping real data</td></tr><tr><td>Leverage</td><td>MCP link to an app you already use</td><td>Letting Claude touch real systems</td></tr><tr><td>Leverage</td><td>Client dashboard from a CSV</td><td>Turning data into a deliverable</td></tr><tr><td>System</td><td>A reviewer subagent</td><td>Delegating to a focused helper</td></tr><tr><td>System</td><td>A scheduled overnight agent</td><td>Work that runs without you</td></tr><tr><td>System</td><td>A small internal tool (form to action)</td><td>A real input-to-output product</td></tr><tr><td>System</td><td>A content repurposing pipeline</td><td>One input, many outputs</td></tr></tbody></table>
<h2>How to pick: the CCC build ladder</h2>
<p>Before you pick a project, find your rung. The CCC build ladder has three: Starter, Leverage, and System. Starter projects are finished in one sitting and teach you the basics of working with Claude Code. Leverage projects take a weekend and start saving you real time. System projects run on their own and do work while you are away.</p>
<p>The rule is simple: build one rung above where you are right now. If you have only ever had one-off chats with Claude, your next project is a Starter, not a self-running system. Skipping rungs is exactly how people end up with a half-built mess they abandon. If you want the full picture of how this progression works, the five levels of Claude Code walks the whole climb in detail at [the 5 levels of Claude Code](/blog/the-5-levels-of-claude-code).</p>
<blockquote><strong>TIP:</strong> Pick the smallest project that still teaches you one new thing. A finished Starter beats an abandoned System every single time.</blockquote>
<h2>Tier 1: Starter projects you can finish in one sitting</h2>
<p>These four are the on-ramp. None of them need much code, and each one ends with something you keep using. Start here if Claude Code still feels like a fancy chat box.</p>
<p>1. A personal CLAUDE.md operating manual. This is a plain text file that tells Claude who you are, what you are working on, and how you like things done. It is the single highest-leverage thing a beginner can build, because every future session reads it and stops making you repeat yourself. First move: create a project folder, add a file named CLAUDE.md, and write five lines about your current project and your preferences.</p>
<p>2. A folder-cleanup command-line tool. Point Claude at a messy Downloads or Desktop folder and have it write a small script that sorts files by type and date. You learn how to hand Claude a real spec and let it run a script for you. First move: describe the exact folder and the exact sorting rule you want in one sentence, then ask for a script you can run and undo safely.</p>
<p>3. A one-page personal site. A single page about you or your work, deployed somewhere public. The whole point is the feeling of shipping something real and seeing it live on the internet. First move: tell Claude the three things the page should say and ask it to build a single self-contained HTML page you can open in a browser.</p>
<p>4. An explain-this-codebase doc generator. Hand Claude a project you did not write - even an open one you cloned - and ask it to produce a short plain-English map of what each part does. You learn how Claude reads and summarizes code, which is half of what makes it useful. First move: open any project folder and ask for a one-page overview aimed at someone who has never seen it. If this is your first real build, start with [building your first app with Claude Code](/blog/build-your-first-app-with-claude-code).</p>
<h2>Tier 2: Leverage projects worth a weekend</h2>
<p>Leverage projects take longer but they pay you back every week after. Each one turns a task you currently do by hand into something Claude does for you. Build one of these once you are comfortable running a project with a CLAUDE.md.</p>
<p>5. A slash-command pack for your repeat tasks. Any ask you type more than twice - a commit message, a weekly summary, a code review - becomes a saved slash command you fire in two words. You learn to turn habits into reusable workflows. First move: write down the three asks you repeat most this week and save the first one as a command. For ideas on which commands and skills are worth setting up first, see [10 Claude Code skills to install first](/blog/claude-code-skills-to-install-first).</p>
<p>6. A daily digest that writes itself. A small routine that gathers something you check every morning - your calendar, a few news sources, your open tasks - and writes you one clean summary file. You learn to fetch real data and shape it into something readable. First move: pick the single source you check first each day and ask Claude to pull it and write a short summary to a file.</p>
<p>7. An MCP link to an app you already use. MCP is the standard that lets Claude Code reach into a real system, like your notes, a database, or a project tracker. Connect one and build a tool that queries it for you. You learn the move that takes Claude from talking about your work to acting on it. First move: pick one app you live in and connect it, then ask one real question that needs live data to answer.</p>
<p>8. A client dashboard from a CSV. Take a spreadsheet of real numbers and have Claude turn it into a clean, shareable dashboard someone could actually log into. You learn to turn raw data into a deliverable, which is the core of getting paid for this. First move: export any data you have as a CSV and ask for a single-page dashboard that shows the three numbers that matter most.</p>
<h2>Tier 3: Self-running systems</h2>
<p>Top of the ladder. These projects do work without you sitting there. They take the most setup, but they are the difference between operating a tool and owning a system. Build these once the lower rungs feel routine.</p>
<p>9. A reviewer subagent. A subagent is a focused helper you hand one job to, so your main work stays clean. Build one whose only role is to review your code or your writing and flag problems before you ship. You learn to delegate to a specialist instead of doing everything in one thread. First move: define one narrow review job in a sentence and create a subagent that does only that.</p>
<p>10. A scheduled overnight agent. A routine that runs on a schedule and finishes a recurring task while you sleep - a morning brief, a backup, a daily report. You learn what it feels like to wake up to finished work. First move: take the daily digest you built in Tier 2 and schedule it to run before you wake up. For a deeper walkthrough, see [how to schedule Claude Code agents to run while you sleep](/blog/schedule-claude-code-agents-while-you-sleep).</p>
<p>11. A small internal tool that turns a form into an action. A real input-to-output product: someone fills in a short form, and your system does something useful with it - drafts a reply, files a record, kicks off a task. You learn to wire a front door to a real backend action. First move: name the one action you wish a teammate could trigger without bothering you, and build the simplest form that triggers it.</p>
<p>12. A content repurposing pipeline. One input - a transcript, a doc, a recording - that Claude fans out into several finished outputs, like a summary, social posts, and an email. You learn to chain steps into a pipeline, which is the shape of most real automation. First move: take one thing you already made and ask Claude to turn it into three different formats in a single pass. If you want to build a true autonomous worker, start with [building your first AI agent with Claude Code](/blog/build-your-first-ai-agent-with-claude-code).</p>
<h2>Pick one and start today</h2>
<p>The whole list is useless if you read it and close the tab. So do not. Find your rung, pick the one project on it that made you think &quot;oh, I actually want that,&quot; and make the first move right now. It is one sentence to Claude. That is the entire barrier.</p>
<p>If you want people to build alongside, get unstuck fast, and see what others are shipping each week, that is exactly what the community is for. Come build with us and bring whichever project you just picked.</p>
<h2>FAQ</h2>
<p><strong>What should a complete beginner build first with Claude Code?</strong></p><p>Start with a personal CLAUDE.md operating manual. It is a short text file that tells Claude who you are and how you work, it takes one sitting, and every future session reads it - so it pays off immediately and teaches you how persistent memory works.</p>
<p><strong>Do I need to know how to code to build these projects?</strong></p><p>No for the Starter tier and most of the Leverage tier. You describe what you want in plain English and Claude writes and runs the code. The System tier goes smoother if you understand the basics, but you can climb into it gradually rather than learning everything up front.</p>
<p><strong>How long does a Claude Code project actually take?</strong></p><p>It depends on the tier. Starter projects are built to finish in one sitting, Leverage projects are a weekend, and System projects take longer because they are set up to run on their own afterward. Pick the tier that matches the time you actually have.</p>
<p><strong>What makes a good Claude Code project versus a bad one?</strong></p><p>A good project is small enough to finish, solves a real annoyance you have, and teaches you exactly one new capability. A bad project is big and vague, like &quot;build an app,&quot; which never gets finished. Match the project to one rung above your current skill.</p>]]></content:encoded>
    </item>
    <item>
      <title>Build a Father's Day Gift With Claude Code in One Afternoon</title>
      <link>https://www.claudecodeclub.ai/blog/build-a-fathers-day-gift-with-claude-code</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/build-a-fathers-day-gift-with-claude-code</guid>
      <pubDate>Sun, 21 Jun 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Getting Started</category>
      <category>Beginners</category>
      <category>Building</category>
      <description><![CDATA[Forgot to order something again? Good. A thing you build beats a thing you bought. Here are four Father's Day gifts you can ship this afternoon with Claude Code, even if you have never written a line of code.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Father's Day 2026 lands on Sunday, June 21, and you can still build a real, personal gift this afternoon.</li><li>Four ideas a total beginner can ship: a photo memory page, a little web app or game dad would love, a printable book from family messages, and a this-day-in-our-family tool.</li><li>Each one is doable in a single afternoon with Claude Code and zero coding background.</li><li>A gift you built outweighs anything you could have panic-ordered, every time.</li></ul>
<h2>Why a Father's Day gift with Claude Code beats anything you can buy</h2>
<p>Real talk: it is Sunday, it is Father's Day, and the shipping window closed days ago. Perfect. Because the best gift on the table right now is not something you order, it is something you make, and Claude Code lets a complete beginner make something genuinely good in an afternoon.</p>
<p>Dads are an easy audience in the best way. They do not want expensive, they want thoughtful. A web page full of family photos with a note attached, or a silly little game with his name in it, lands harder than another tie or gadget because you clearly spent attention, not just money.</p>
<p>And here is the quiet bonus: building one of these is the friendliest possible on-ramp to Claude Code itself. You will finish today with a finished gift and a real first project under your belt. If this is your very first build, skim [building your first app with Claude Code](/blog/build-your-first-app-with-claude-code) alongside this and you will move fast.</p>
<blockquote><strong>TIP:</strong> Pick one idea below and commit to it. The fastest way to ruin your afternoon is to try to build all four. One finished gift beats four half-built ones.</blockquote>
<h2>Pick your build: four gifts, one afternoon</h2>
<p>Here are four builds, sorted so you can match the gift to the dad and to how much time you actually have left today. None of them require coding experience. You describe what you want in plain language, and Claude Code builds it with you, step by step.</p>
<table><caption>Four Father's Day builds, matched to dad and effort</caption><thead><tr><th>Gift idea</th><th>Who it suits</th><th>Rough effort</th></tr></thead><tbody><tr><td>Photo memory page</td><td>Any dad, sentimental or not</td><td>1 to 2 hours</td></tr><tr><td>Little web app or game</td><td>Playful dad, grandkids in the mix</td><td>2 to 3 hours</td></tr><tr><td>Printable book from family messages</td><td>The dad who keeps everything</td><td>2 to 3 hours</td></tr><tr><td>This day in our family tool</td><td>Story-teller dad, big on dates</td><td>1 to 2 hours</td></tr></tbody></table>
<p>Read the four below, pick the one that made you smile, and ignore the rest. You can always build another one for his birthday.</p>
<h2>Idea 1: A personalized photo memory page</h2>
<p>This is the crowd-pleaser and the fastest win. You build a single web page that tells a story with photos: a few favorite pictures, short captions, and a heartfelt note at the bottom. Think of it as a digital card that actually feels personal.</p>
<ol><li>Gather five to ten photos you love and write one line about each.</li><li>Tell Claude Code: &quot;Build me a one-page website that displays these photos in a warm, scrollable layout with captions and a closing note.&quot;</li><li>Hand it your captions and the note, and let it lay everything out.</li><li>Tweak the colors and wording until it feels like him, then open it on your phone to check it looks great there too.</li></ol>
<p>Show it to him on a laptop or send the link. It takes an hour or two and it is the kind of thing dads quietly keep open in a browser tab for weeks.</p>
<h2>Idea 2: A little web app or game he would actually use</h2>
<p>If your dad is the playful type, build him something small and silly that has his name on it. A tiny trivia game about your family. A coin-flip decision-maker for his endless &quot;what should we grill&quot; debates. A simple scoreboard for whatever he is competitive about.</p>
<p>The trick here is to keep it tiny. One screen, one job, one joke. You describe the idea in plain words, Claude Code builds the interactive version, and you test it together. Beginners are always shocked that a working little game comes together this fast.</p>
<blockquote><strong>WARNING:</strong> Resist the urge to make it fancy. A one-screen game you finish today beats an elaborate app you abandon at 6pm. Lock the scope small and ship it.</blockquote>
<h2>Idea 3 and 4: A family message book and a this-day-in-our-family tool</h2>
<p>Idea three is the tearjerker. Quietly collect a short message from each family member, a kid, a sibling, a grandparent, then have Claude Code compile them into a clean, printable book or letter. Nice typography, a cover with his name, a page per person. Print it at a local shop or hand him a beautiful PDF. For the dad who saves every card, this one lands hard.</p>
<p>Idea four is for the storyteller. Build a small &quot;this day in our family&quot; tool: enter a date and it surfaces the family memories, milestones, and photos tied to it. You give Claude Code your list of family dates and moments, and it builds a simple page that looks them up. It is the gift that keeps giving long after today, because he will play with it on every birthday and anniversary.</p>
<p>Both of these are an afternoon of work and both feel like you spent a week on them. That gap between effort and impact is the whole magic of building with Claude Code. If you want to get sharper at it after today, [how to use Claude Code like a pro](/blog/how-to-use-claude-code-like-a-pro) is a great next read.</p>
<h2>Ship it today, then keep building</h2>
<p>Hot take: the version you finish and give him today beats the perfect version you are still tinkering with next week. Pick one idea, keep the scope small, and get it into his hands before the day is over. Done and given is the entire goal.</p>
<p>And notice what just happened. You did not just make a gift, you shipped your first real Claude Code project. That same skill builds your next idea, and the one after that. The gift is the warm-up.</p>
<p>If today lit something up and you want to keep going, that is exactly what we do inside the [Claude Code Club](https://www.skool.com/claudecodeclub/about). A whole room of people building real things, sharing what works, and helping each other ship. Come show us what you made for dad. ❤️</p>
<h2>FAQ</h2>
<p><strong>When is Father's Day 2026?</strong></p><p>Father's Day 2026 falls on Sunday, June 21. If you are reading this on the day itself, you still have time to build one of these gifts in an afternoon.</p>
<p><strong>Can I build a Father's Day gift with Claude Code if I have never coded?</strong></p><p>Yes. Every idea here is built by describing what you want in plain language while Claude Code does the building with you. A photo memory page or a this-day-in-our-family tool are the easiest starting points and take an hour or two.</p>
<p><strong>What is the fastest Father's Day gift to build with Claude Code?</strong></p><p>A personalized photo memory page. Gather five to ten photos and a short note, tell Claude Code to build a one-page site that displays them warmly, and tweak until it feels like him. Most people finish in one to two hours.</p>
<p><strong>What is a good Father's Day gift for a dad who has everything?</strong></p><p>Build something money cannot buy: a printable book compiled from short messages by every family member, or a this-day-in-our-family tool that surfaces memories tied to any date. Both are personal, both take an afternoon, and neither is something he could have bought himself.</p>
<p><strong>How do I avoid running out of time building a gift today?</strong></p><p>Pick exactly one idea and keep the scope small. One screen, one job, one story. The biggest time sink is trying to build all four ideas or making one of them too fancy. A finished simple gift beats an ambitious unfinished one every time.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code Artifacts: Turn a Build Into a Live Client Dashboard</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-artifacts-live-client-dashboard</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-artifacts-live-client-dashboard</guid>
      <pubDate>Sat, 20 Jun 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Claude Code</category>
      <category>Agency</category>
      <category>Building</category>
      <category>Monetization</category>
      <description><![CDATA[Claude Code Artifacts now ships live, shared dashboards and interactive workspaces. Here is how an agency turns a one-off build into a deliverable the client can actually log into - and bill on a retainer.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Claude Code Artifacts now brings live, shared dashboards and interactive workspaces to Team and Enterprise.</li><li>For agencies, this turns a one-off build into a deliverable a client can log into and use.</li><li>A live artifact is a retainer conversation, not a flat-fee handoff.</li></ul>
<h2>What the Claude Code Artifacts update actually shipped</h2>
<p>Straight up, this is the kind of update that changes what you can sell, not just how you work. The Claude Code Artifacts update brought live, shared dashboards and interactive workspaces to Team and Enterprise around June 18 2026, reported here: https://venturebeat.com/data/anthropics-claude-code-artifacts-update-brings-live-shared-dashboards-and-interactive-workspaces-to-enterprises .</p>
<p>Read that as an agency, not as a developer. The old story was: you build something, you hand over a file or a repo, the client says thanks and you both move on. The new story is: you build something that stays live, that the client and their team can open, share, and use. That is the difference between a deliverable and a destination.</p>
<p>If you have been running Claude Code well already - and the [pro workflow guide](/blog/how-to-use-claude-code-like-a-pro) covers the habits - this update is the part that turns your output into something a client logs into rather than something they download once and lose.</p>
<h2>Static deliverable vs live artifact dashboard</h2>
<p>The clearest way to see why this matters is to put the old deliverable next to the new one. The work to build them can be similar. What you can charge, and how long the relationship lasts, is not.</p>
<table><caption>The same build, sold two different ways.</caption><thead><tr><th>Static deliverable</th><th>Live artifact dashboard</th></tr></thead><tbody><tr><td>A file, export, or repo handed over once</td><td>A workspace the client logs into and uses</td></tr><tr><td>Goes stale the moment you send it</td><td>Stays current as data and inputs change</td></tr><tr><td>Client forgets it exists in a month</td><td>Client opens it weekly, sees your name on it</td></tr><tr><td>Flat fee, then the relationship ends</td><td>Natural retainer - it needs upkeep and updates</td></tr><tr><td>No shared visibility across their team</td><td>Shared across their team, used in their meetings</td></tr></tbody></table>
<blockquote><strong>NOTE:</strong> The live, shared Artifacts experience covered in this update is a Team and Enterprise capability per https://venturebeat.com/data/anthropics-claude-code-artifacts-update-brings-live-shared-dashboards-and-interactive-workspaces-to-enterprises . Check your own plan tier before you promise a client a live, shared workspace, and price the build with that requirement in the open.</blockquote>
<h2>How an agency turns a build into a live dashboard</h2>
<p>Here is the move, concretely. You already build things for clients - a metrics view, a content tracker, an internal tool, a reporting layer. Instead of shipping it as a one-off, you ship it as a live artifact the client can open.</p>
<ol><li>Pick a deliverable the client already wants to look at repeatedly - reporting and dashboards beat one-time scripts.</li><li>Build it as a live, shared artifact so their team can open and read it, not just you.</li><li>Wire it to the real inputs so it reflects current state, not a frozen snapshot from launch day.</li><li>Hand over the link, not a file. The deliverable is a place they go, not a thing they store.</li><li>Put your maintenance and updates on a recurring scope, because a live thing needs tending.</li></ol>
<p>The psychological shift for the client is the whole point. A file they downloaded is something they paid for once. A dashboard they open every Monday is part of how they run their business. The second one renews. The first one gets forgotten.</p>
<p>If you want to wire that dashboard to outside data sources cleanly, the [guide to MCP servers](/blog/what-are-mcp-servers-and-why-they-matter) is the right next read - that is how you feed a live artifact real, current inputs instead of static numbers.</p>
<h2>Why a live artifact is a pricing conversation</h2>
<p>This is where the money logic changes. A static deliverable is a flat-fee transaction. A live artifact is a relationship. Something that stays current has to be kept current, and keeping it current is recurring work you can scope and bill.</p>
<p>The honest framing for the client is simple. The build gets it live. The retainer keeps it accurate, adds the next view they ask for, and keeps it running as their needs change. That is not a tax. It is the difference between a dashboard that is right and one that quietly went stale three weeks after launch.</p>
<blockquote><strong>TIP:</strong> Quote the build and the upkeep as two line items from day one. If you bundle them, the client only sees the build number and balks at the retainer later. Split them, and the retainer reads as the obvious cost of keeping a live thing alive.</blockquote>
<p>For how to actually put numbers on this - build fee versus monthly upkeep - work through [how to price a Claude Code agency project](/blog/how-to-price-a-claude-code-agency-project). A live artifact is the cleanest retainer argument you will get, so do not undersell it as a one-off.</p>
<h2>The reliability test before you ship it live</h2>
<p>A live artifact is more exposed than a file you emailed. The client can open it any time, including the moment it breaks. That raises the bar on reliability, and it is worth a short checklist before you hand over the link.</p>
<ul><li>Confirm the data the dashboard reads is something you control and can keep flowing.</li><li>Make sure a broken input fails visibly inside the artifact, not silently with stale numbers.</li><li>Set expectations on refresh cadence so the client knows how current the view is.</li><li>Decide who on their team can see it before you share the link widely.</li><li>Agree the upkeep scope in writing so a live thing does not become unpaid support.</li></ul>
<p>Get those right and the live artifact does what a static file never could: it keeps your work in front of the client every week, and it gives you a clean reason to be on retainer rather than chasing the next one-off.</p>
<h2>Which client builds make the best live artifacts</h2>
<p>Not every build wants to be a live dashboard. The ones that do share a trait: the client benefits from looking at them more than once. A one-time migration script is not a dashboard. A view of how that migrated data is performing every week absolutely is. Pick the work where current state matters and you have your candidate.</p>
<p>A few that translate cleanly into a live artifact an agency can bill on a retainer:</p>
<ul><li>A reporting view that rolls up the numbers a client checks on a regular cadence anyway.</li><li>An operations board the client's team reads in their own standups and meetings.</li><li>A tracker for a project you are running for them, so status is always live, not emailed.</li><li>A monitoring view that flags when something they care about drifts out of range.</li><li>A research or competitor brief that refreshes on a schedule and stays current.</li></ul>
<p>Notice the through-line. Each of these is something the client returns to, which is exactly why it earns a retainer rather than a flat fee. A thing you look at once is a purchase. A thing you look at every week is a subscription, and that is the relationship you want with an agency client.</p>
<p>There is a second reason these win. A build the client uses constantly is a build they ask to extend. They will want one more view, one more metric, one more cut of the data. With a static file, those requests are awkward - you delivered, you are done, why are they asking for more. With a live artifact, those requests are the point. Each one is scoped, quoted, and added to the same workspace, and your retainer grows because the client keeps finding new reasons to need it. The deliverable that gets used is the deliverable that keeps paying.</p>
<blockquote><strong>TIP:</strong> When you pitch a live artifact, demo it with the client's own data, not a sample. The moment they see their real numbers in a shared workspace they can open any time, the retainer stops being a hard sell and starts being obvious. Real data in the demo does more work than any pitch deck.</blockquote>
<p>Operators inside the community are already turning builds into live, billable dashboards. If you want their setups and pricing scripts, [join the Claude Code Club](https://www.skool.com/claudecodeclub/about). More agency playbooks live on the [blog](/blog).</p>
<h2>FAQ</h2>
<p><strong>What did the Claude Code Artifacts update add?</strong></p><p>It brought live, shared dashboards and interactive workspaces to Team and Enterprise around June 18 2026, per https://venturebeat.com/data/anthropics-claude-code-artifacts-update-brings-live-shared-dashboards-and-interactive-workspaces-to-enterprises .</p>
<p><strong>What tier do live, shared Artifacts require?</strong></p><p>The reported live, shared workspace capability is a Team and Enterprise feature. Confirm your own plan tier before promising a client a live, shared dashboard.</p>
<p><strong>Why is a live dashboard better than a file for an agency?</strong></p><p>A file is a one-time handoff that goes stale. A live dashboard stays current, the client opens it repeatedly, and keeping it current is recurring work you can put on a retainer.</p>
<p><strong>How do I price a live artifact dashboard?</strong></p><p>Split it into a build fee and a monthly upkeep line from the start. The build gets it live, the retainer keeps it accurate. See /blog/how-to-price-a-claude-code-agency-project for the numbers.</p>
<p><strong>How do I feed a live dashboard real data?</strong></p><p>Connect it to your data sources, often through MCP servers, so it reflects current state instead of a frozen snapshot. See /blog/what-are-mcp-servers-and-why-they-matter .</p>]]></content:encoded>
    </item>
    <item>
      <title>71% of AI Agent Developers Use Claude Code: Here's Why</title>
      <link>https://www.claudecodeclub.ai/blog/why-developers-use-claude-code-71-percent</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/why-developers-use-claude-code-71-percent</guid>
      <pubDate>Sat, 20 Jun 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Building</category>
      <category>Tools</category>
      <description><![CDATA[A single survey of around 15,000 developers found Claude Code on top by a wide margin. The number is the hook. The real lesson is the why, and you can copy it whether or not the survey holds.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>A single survey of roughly 15,000 developers found about 71% of AI-agent developers use Claude Code, ahead of the next two most-used tools.</li><li>One survey is a signal, not gospel. Treat the number as a hook, not a settled fact.</li><li>The reasons behind the adoption are copyable today: it acts on your real codebase, plugs into MCP and tools, runs subagents, and remembers your conventions.</li></ul>
<h2>Why so many developers use Claude Code</h2>
<p>Hot take: the headline number is the least interesting part of this story. A single survey of roughly 15,000 developers found that about 71% of AI-agent developers reported using Claude Code, compared with around 46% for the next most-used tool and around 39% for the one after that. You can read the survey writeup here: https://newsletter.pragmaticengineer.com/p/ai-tooling-2026</p>
<blockquote><strong>NOTE:</strong> What that number does and does not prove: it is one survey, of one population of developers, at one moment in time. It shows strong reported adoption among people already building with AI agents. It does not prove Claude Code is best for every job, that the percentage holds across the whole industry, or that it will stay there. Treat it as a signal worth understanding, not a settled fact.</blockquote>
<p>So why does the adoption keep happening? Not because of a number on a chart. People reach for it because of what it actually does on a real project. The rest of this post is the payload: the reasons behind the trend, all of which you can put to work today regardless of what any single survey says.</p>
<h2>Reason 1: it acts on your actual codebase</h2>
<p>The biggest leap is the one that is easiest to undersell. A one-off chat assistant gives you text to copy and paste. An agentic coding tool reads your real files, edits them, runs your commands, and checks the result. The loop closes inside your project instead of in a browser tab.</p>
<p>That difference compounds fast. When the tool can see the whole repo, it stops guessing at your structure and starts working with it. It can trace a bug across files, run the test suite, read the failure, and fix it. That is a fundamentally different job than autocomplete, and once you feel it you do not go back. If you are new to this, the [getting started guide](/blog/how-to-use-claude-code-like-a-pro) walks through the first real loop.</p>
<p>Here is why this is the reason that pulls people in first. The most expensive part of working with a copy-paste assistant is not the typing, it is the translation. You have to describe your codebase to the tool, paste in the relevant chunks, then carry its answer back and adapt it to the parts you did not paste. That round trip is where the time goes and where the errors creep in. An agent that reads the repo directly deletes that whole translation layer. You stop being the messenger between your code and the model.</p>
<h2>Reason 2: MCP, tools, and subagents</h2>
<p>The second reason is reach. Claude Code does not live in a sandbox. Through the Model Context Protocol it can connect to your database, your docs, your issue tracker, your design files, and more. That means the agent works with the same context you do, not a stale copy of it.</p>
<p>If MCP is new to you, start with [what MCP servers are and why they matter](/blog/what-are-mcp-servers-and-why-they-matter). The short version: MCP is the plug that lets the agent talk to your real systems through a standard interface, so you are not pasting context back and forth by hand.</p>
<p>On top of that, subagents let the main agent spin up focused helpers for big jobs, like searching a large codebase or analyzing many files at once, then report back. You get parallelism and separation of concerns without managing it all yourself.</p>
<p>Think about what that combination unlocks in a real workflow. You ask for a feature. The agent pulls your real schema from the database through MCP, checks the related tickets in your issue tracker, dispatches a subagent to map every place in the codebase that touches the area, and only then starts writing. That is the same sequence a careful senior developer would follow, except you did not have to gather all the context by hand and feed it in. The reach is what turns a clever responder into something that operates the way you actually work.</p>
<blockquote><strong>TIP:</strong> If you only adopt one thing from this post, make it MCP. Connecting the agent to the systems you already use is the single biggest jump from a clever chat toy to a teammate that actually moves your work forward.</blockquote>
<h2>Reason 3: memory and workflows</h2>
<p>The third reason is that it remembers. A generic assistant forgets your conventions the moment the chat ends. An agentic tool with a memory system keeps your project rules, your stack, and your preferences on hand across sessions, so you stop re-explaining yourself every morning.</p>
<p>That is the difference between a tool you operate and a teammate who already knows the house style. The [three-tier memory system](/blog/claude-code-memory-system-three-tiers) breaks down how to set it up so the agent carries the right context at the right scope.</p>
<p>Memory plus repeatable workflows is where the money shows up. Once the agent knows your patterns, you can wire up routines you run again and again. If you want concrete ones, the [5 workflows that get you paid](/blog/5-claude-code-workflows-that-get-you-paid) is a good starting set.</p>
<p>The compounding effect is the whole game. The first time you run a task, you teach the agent your conventions. The hundredth time, it already knows them, so it gets to a good result faster and with fewer corrections. A copy-paste assistant resets to zero every session, which means you pay the teaching cost over and over. Persistent memory means you pay it once and keep collecting the interest. Over a few weeks that gap between a tool that forgets and a tool that remembers gets enormous.</p>
<h2>Chat assistant vs agentic coding tool</h2>
<p>Here is the split that explains the adoption better than any percentage. I am keeping this generic on purpose, no brand names, because the category difference is the real lesson.</p>
<table><caption>Two different categories, not two versions of the same thing</caption><thead><tr><th>Capability</th><th>One-off chat assistant</th><th>Agentic coding tool</th></tr></thead><tbody><tr><td>Sees your real codebase</td><td>No, you paste snippets</td><td>Yes, reads and edits files directly</td></tr><tr><td>Runs commands and tests</td><td>No</td><td>Yes, and reads the results</td></tr><tr><td>Connects to your systems</td><td>Limited or none</td><td>Yes, via MCP and tools</td></tr><tr><td>Delegates big jobs</td><td>No</td><td>Yes, via subagents</td></tr><tr><td>Remembers your conventions</td><td>Forgets each session</td><td>Persists across sessions via memory</td></tr><tr><td>Takes multi-step action</td><td>No, returns text</td><td>Yes, acts then reports back</td></tr></tbody></table>
<p>When you line it up like this, the survey number stops being surprising. People did not flock to a slightly better chatbot. They moved to a different category of tool, one that does the work instead of describing the work. That shift is what the number is measuring, even if the exact figure only holds for that one group of developers.</p>
<h2>What this means for you</h2>
<p>Do not adopt a tool because a survey says it is popular. Adopt the capabilities, because those are what actually move your output. Here is the honest takeaway.</p>
<ul><li>The 71% figure is one survey of one population. Use it as a reason to look, not a reason to believe.</li><li>The copyable reasons are real and available now: codebase-aware editing, MCP connections, subagents, and persistent memory.</li><li>Pick one capability this week. Connect one MCP server, or set up memory, and feel the difference yourself.</li><li>Your own results beat any chart. Run it on a real task and judge it on the output.</li></ul>
<p>That is the builder move. Treat the number as a nudge to go test the thing, then let your own work decide. If you want people to test alongside, swap MCP setups with, and learn the workflows faster, come build with us in the [Claude Code Club community](https://www.skool.com/claudecodeclub/about). 🔥</p>
<h2>FAQ</h2>
<p><strong>Is the 71% number reliable?</strong></p><p>It comes from a single survey of roughly 15,000 developers, so treat it as a strong signal among AI-agent developers, not a settled industry-wide fact. The survey writeup is at https://newsletter.pragmaticengineer.com/p/ai-tooling-2026</p>
<p><strong>What were the other tools in the survey?</strong></p><p>The next two most-used tools came in around 46% and around 39% in that same survey. We are focusing on the capabilities rather than naming competing assistants, because the category difference is the real lesson.</p>
<p><strong>What makes an agentic coding tool different from a chat assistant?</strong></p><p>A chat assistant returns text you copy. An agentic tool reads and edits your real files, runs commands and tests, connects to your systems via MCP, delegates work to subagents, and remembers your conventions across sessions.</p>
<p><strong>What should I try first?</strong></p><p>Connect one MCP server to a system you already use, or set up a memory system so the agent keeps your conventions. Then run it on a real task and judge it on the output, not on any survey.</p>
<p><strong>Does popularity mean it is best for my use case?</strong></p><p>Not automatically. A high adoption figure among AI-agent developers is a reason to evaluate it, not proof it fits your specific job. Run it on your own work and let the results decide.</p>]]></content:encoded>
    </item>
    <item>
      <title>10 Claude Code Skills to Install First (And What Each Does)</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-skills-to-install-first</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-skills-to-install-first</guid>
      <pubDate>Thu, 18 Jun 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Claude Code</category>
      <category>Workflows</category>
      <category>Productivity</category>
      <category>Getting Started</category>
      <description><![CDATA[A practical starter set of skills that earn their place on real work. Each one is described by what it does and when it pays off, so you install the ones that match your actual workload, not a pile you never use.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Start with skills that match work you already do every day: review, debugging discipline, planning, and clean commits.</li><li>A skill is packaged know-how, so each one should encode a standard you keep re-explaining.</li><li>Install by need, not by collection. Five well-scoped skills you actually use beat twenty that load noise.</li></ul>
<h2>The Claude Code skills to install first, and how to choose</h2>
<p>Straight up: the Claude Code skills to install first are the ones that match work you already repeat. A skill is packaged know-how, a written standard that loads when it is relevant, so the value comes from encoding something you would otherwise re-explain every session. If you do not do a kind of work yet, do not install a skill for it.</p>
<p>That is the filter for this whole list. Each entry below is a category described by capability, not by any brand or author. Read what it does, read when it earns its place, and install the ones that map to your actual workload. If you want the broader mental model for how skills sit alongside subagents, MCP, and hooks, we cover that in [how to use Claude Code like a pro](/blog/how-to-use-claude-code-like-a-pro).</p>
<p>A quick note on order. I have ranked these by how soon they pay off for a typical builder, not by how impressive they sound. The first four touch almost every coding session, so they return value immediately. The later six are real and worth having, but they only start working once your projects include that kind of task. Installing a test-writer skill before you write tests, or an accessibility checker before you build UI, just adds weight you carry without benefit. Match the tool to the work in front of you.</p>
<blockquote><strong>NOTE:</strong> A skill governs how work is done. It does not connect to outside systems and it does not run on its own. Keep each one narrow so the right one engages at the right time.</blockquote>
<h2>The 10 skills, ranked by how soon they pay off</h2>
<p>Here is the order I would set them up in. The first few apply to almost everyone who writes code. The later ones are situational and earn their place once your work includes that kind of task.</p>
<ol><li>Code-review skill. Encodes what a good review looks like for you: the things you always check, the patterns you reject, the standards you hold. It pays off the moment a second set of eyes matters, which is most of the time on shared code.</li><li>Debugging-discipline skill. Forces a method instead of guessing: reproduce, isolate, form a hypothesis, test it. It earns its place the first time a bug eats an afternoon because nobody slowed down to think.</li><li>Planning and brainstorming skill. Turns a vague request into a scoped plan before any code is written. Install it when tasks are bigger than a single edit and you keep skipping straight to typing.</li><li>Git-commit helper. Produces clean, consistent commit messages and sensible staging. Worth it the moment more than one person reads your history, which is every real project.</li><li>Memory and wrap-up skill. Writes a short summary at the end of a session so context survives. It pays off when work spans multiple sessions or days and you are tired of re-establishing where you were.</li><li>Docs-writer skill. Generates and maintains readable documentation in your house style. Install it when other people, including future you, have to use what you built.</li><li>Test-writer skill. Produces tests that match how you structure coverage. It earns its place as soon as the cost of a regression is higher than the cost of writing the test.</li><li>Accessibility checker. Reviews UI for common accessibility failures before they ship. Worth it the moment you build anything a real user touches.</li><li>Design-system and UI skill. Keeps components and styling consistent with an established system. Install it when you have a design language to honor and want to stop drifting from it.</li><li>Database helper. Encodes safe conventions for queries, migrations, and schema changes. It pays off the first time a careless change to data costs you a recovery, which you only want to learn once.</li></ol>
<h2>Quick reference table</h2>
<p>The same ten, condensed. Scan the right column and install the ones where the trigger has already happened to you. If the trigger has not happened yet, wait.</p>
<table><caption>Skill type to what it does to when to install</caption><thead><tr><th>Skill type</th><th>What it does</th><th>When to install</th></tr></thead><tbody><tr><td>Code review</td><td>Applies your review checklist and rejected patterns</td><td>As soon as anyone else reads your code</td></tr><tr><td>Debugging discipline</td><td>Enforces reproduce, isolate, hypothesize, test</td><td>After a bug eats an afternoon</td></tr><tr><td>Planning and brainstorming</td><td>Scopes a plan before code is written</td><td>When tasks exceed a single edit</td></tr><tr><td>Git-commit helper</td><td>Writes clean messages and stages sensibly</td><td>The moment history is shared</td></tr><tr><td>Memory and wrap-up</td><td>Summarizes the session so context survives</td><td>When work spans multiple sessions</td></tr><tr><td>Docs-writer</td><td>Generates and maintains readable docs</td><td>When others have to use your work</td></tr><tr><td>Test-writer</td><td>Produces tests matching your coverage style</td><td>When a regression costs more than a test</td></tr><tr><td>Accessibility checker</td><td>Catches common accessibility failures</td><td>When real users touch the UI</td></tr><tr><td>Design-system and UI</td><td>Keeps components consistent with a system</td><td>When you have a design language to honor</td></tr><tr><td>Database helper</td><td>Encodes safe query and migration conventions</td><td>Before a careless data change costs you</td></tr></tbody></table>
<blockquote><strong>TIP:</strong> Install three or four to start, not all ten. Live with them for a week, see which ones actually engage, then add the next one. A skill you never trigger is just noise.</blockquote>
<h2>How to install and keep them clean</h2>
<p>The mechanics matter less than the discipline. Set up the skill, give it a narrow scope so it loads only when relevant, and write its instructions the way you would brief a careful junior: specific, with the standards spelled out. A vague skill is worse than none because it adds tokens without adding judgment.</p>
<p>Keep them pruned. Every quarter, look at which skills are actually firing. If one has not engaged in weeks, either your work changed or the scope is wrong. Either way, fix it or remove it. The goal is a small set where each skill reliably does its job, not a trophy shelf.</p>
<p>Resist the urge to make one skill do everything. A review skill that also tries to write commits and run tests is harder to scope and harder to trust, because you can no longer predict when it will engage or what it will touch. One skill, one job. If a second responsibility shows up, that is a signal to split it into a second skill, not to bolt it onto the first. Narrow skills compose cleanly; broad ones collide.</p>
<p>If you want context to survive between sessions alongside these skills, pair the memory and wrap-up skill with a deliberate setup. We walk through that in [the Claude Code memory system](/blog/claude-code-memory-system-three-tiers). And once these are humming, the next step is putting them to work on paid projects, which we cover in [5 Claude Code workflows that get you paid](/blog/5-claude-code-workflows-that-get-you-paid).</p>
<h2>Where this list earns its keep</h2>
<p>On client work, the difference between a calm project and a stressful one is rarely raw capability. It is consistency. Skills are how you make the good version of your judgment the default instead of something you have to remember to apply. The review skill catches what you would have caught on a good day, every day. The database helper stops the careless change before it happens, not after.</p>
<p>Start with the first four, add the rest as the triggers hit, and keep the set lean. If you want to compare notes on how other operators have scoped their skills for real client work, that is most of what we trade inside the Claude Code Club community: https://www.skool.com/claudecodeclub/about . The full [blog index](/blog) has the rest of the guides.</p>
<h2>FAQ</h2>
<p><strong>How many Claude Code skills should I install at first?</strong></p><p>Three or four. Install the ones that match work you already repeat, live with them for a week, then add the next. A skill you never trigger only adds noise to your context.</p>
<p><strong>What is the single most useful skill to start with?</strong></p><p>A code-review skill for most people, because it applies on almost every shared codebase. If you spend more time chasing bugs than reviewing, start with a debugging-discipline skill instead.</p>
<p><strong>Do skills connect to my database or external tools?</strong></p><p>No. A skill only governs how work is done. To reach external tools or data such as a live database, you use MCP. The database-helper skill in this list encodes safe conventions, but it does not itself connect to anything.</p>
<p><strong>How do I know when a skill has stopped being useful?</strong></p><p>Check which skills are actually firing every quarter. If one has not engaged in weeks, either your work changed or its scope is too narrow or too vague. Fix the scope or remove it.</p>
<p><strong>Should a new builder install all ten of these immediately?</strong></p><p>No. Install by need, not by collection. Most of these earn their place only after a specific trigger, like a regression or a bigger task. A small set you actually use beats a large set you never trigger.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Build Your First AI Agent With Claude Code in an Afternoon</title>
      <link>https://www.claudecodeclub.ai/blog/build-your-first-ai-agent-with-claude-code</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/build-your-first-ai-agent-with-claude-code</guid>
      <pubDate>Thu, 18 Jun 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Building</category>
      <category>Getting Started</category>
      <category>MCP</category>
      <description><![CDATA[An agent is not magic and it is not months of work. It is a clear job, a subagent or two, and a few tools it can call. Here is how to build your first one this afternoon, start to finish.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>An AI agent is just Claude Code with a clear job, one or two subagents, and tools it can call to act on real systems.</li><li>You can build your first AI agent with Claude Code in a single afternoon, no computer science degree required.</li><li>We will define agent versus chat plainly, then walk a real example build (an inbox summarizer) step by step.</li><li>The number one thing that sinks a first agent is scope creep, so we keep it tiny on purpose.</li></ul>
<h2>What it really means to build your first AI agent with Claude Code</h2>
<p>Real talk: the word &quot;agent&quot; has been hyped into mush. People imagine some sci-fi mind that runs your whole business. That is not what you are building this afternoon, and honestly that is not what most working agents are anyway.</p>
<p>Here is the plain version. An agent is Claude Code set up with three things: a clear job, one or two subagents that handle specialized pieces of that job, and a set of tools it can call to act on real systems. That is it. A clear job, helpers, and hands. When those three line up, you have an agent.</p>
<p>If you have already done [your first app with Claude Code](/blog/build-your-first-app-with-claude-code), you have most of the muscle for this. An agent is just the next shape that muscle takes.</p>
<table><caption>Chat versus agent, the honest difference</caption><thead><tr><th></th><th>Plain chat</th><th>An agent</th></tr></thead><tbody><tr><td>Job</td><td>You ask, it answers</td><td>It has one defined job it does repeatedly</td></tr><tr><td>Memory</td><td>Forgets between sessions</td><td>Knows its job and context every time</td></tr><tr><td>Help</td><td>One conversation does everything</td><td>Subagents handle specialized pieces</td></tr><tr><td>Action</td><td>Talks about doing things</td><td>Calls tools to actually do them</td></tr></tbody></table>
<p>The line that matters: a chat talks, an agent acts. The moment Claude can call a tool to do real work toward a defined job, you have crossed from chatting into an agent.</p>
<h2>The two ingredients that make it an agent</h2>
<p>Two features do the heavy lifting, and both are real, documented parts of Claude Code. You do not have to invent anything.</p>
<p>First, subagents. These are specialized helpers, each with a focused job, so instead of one overloaded chat trying to do everything, you get a small team. One subagent fetches, another summarizes, another double-checks. The official documentation lives at https://docs.anthropic.com/en/docs/claude-code/sub-agents and it is the single most useful page to read before you start.</p>
<p>Second, tools via MCP. The Model Context Protocol is the standard way to connect Claude Code to real systems like an inbox, a calendar, a repo, or a database. If MCP is new to you, [this primer on MCP servers](/blog/what-are-mcp-servers-and-why-they-matter) gets you oriented in five minutes. Tools are the hands. Without them, your agent can only think out loud.</p>
<blockquote><strong>TIP:</strong> You do not need both ingredients to start. A great first agent can be one clear job plus one tool, with subagents added later once the basic loop works. Smaller is better on day one.</blockquote>
<h2>The afternoon build: an inbox summarizer agent</h2>
<p>Let me make this concrete with a build you can actually finish today. We are making an inbox summarizer: an agent whose one job is to read your recent messages and hand you a short, ranked summary so you stop drowning in your inbox.</p>
<p>It is the perfect first agent because the job is crisp, the value is obvious, and the scope is naturally small. A research agent that monitors a topic and reports back works the same way if you would rather build that. Same shape, different job.</p>
<ol><li>Define the one job in a sentence. Write it down: &quot;Read my last 24 hours of messages and give me a ranked summary of what needs a reply.&quot; If you cannot say it in one sentence, the scope is too big.</li><li>Create a project folder and a CLAUDE.md. Put the job statement, your preferences (tone, length, what counts as urgent), and any context the agent needs every run. This is the agent's brief.</li><li>Connect one tool via MCP. Wire in read access to your inbox so Claude can actually fetch messages. Start with read-only. Do not give it send access on day one.</li><li>Test the raw loop. Ask the agent to fetch and summarize once, by hand. Confirm the summary is genuinely useful before you automate anything. Tune the CLAUDE.md until the output is what you want.</li><li>Add a subagent if needed. If summarizing and ranking in one pass gets sloppy, split it: one subagent extracts, one ranks by urgency. Only add this once the single-pass version is working.</li><li>Lock the routine. Save the run as a slash command so you fire it the same way every time, and only later consider scheduling it to run on its own.</li></ol>
<p>That is a real agent. Clear job, a tool wired in, an optional subagent, and a repeatable trigger. You can have a rough version working before dinner.</p>
<h2>The mistake that kills almost every first agent</h2>
<p>Hot take: the thing that sinks first agents is never the tech. It is scope creep. You start with &quot;summarize my inbox,&quot; and by hour two you have decided it should also auto-reply, file things into folders, schedule meetings, and write your newsletter. Now nothing works, you cannot tell which part is broken, and you quit.</p>
<blockquote><strong>WARNING:</strong> Pick one job and refuse every shiny add-on until that one job works end to end. A boring agent that reliably does one thing beats an ambitious agent that does nothing. Write the new ideas on a list and build them as separate agents later.</blockquote>
<p>There is a money-and-safety angle here too. The smaller and more read-only your first agent is, the less can go wrong. Give it the minimum access it needs. Keep anything that sends, spends, or deletes off the table until you trust the loop completely, and put a human check on anything hard to reverse.</p>
<h2>From first agent to a setup that earns</h2>
<p>Once your first agent works, the path forward is obvious and fun. You add a second tool. You split jobs across subagents. You schedule a run so the agent works while you do something else. Each step is small, and each one makes the agent more capable without a rebuild.</p>
<p>And yes, this turns into income. The same inbox-summarizer pattern is a service you can sell, and the broader playbook is in [five Claude Code workflows that get you paid](/blog/5-claude-code-workflows-that-get-you-paid). If you want the operator habits that make agents reliable, [how to use Claude Code like a pro](/blog/how-to-use-claude-code-like-a-pro) is the companion read.</p>
<p>Want help building yours and a room full of people who have shipped theirs? That is what we do inside the [Claude Code Club](https://www.skool.com/claudecodeclub/about). Bring your one-sentence job, build it live with us this week, and walk out with a working first agent. 🙌</p>
<h2>FAQ</h2>
<p><strong>What is an AI agent in Claude Code?</strong></p><p>It is Claude Code set up with three things: a clear single job, one or two subagents that handle specialized pieces of that job, and tools it can call via MCP to act on real systems. A chat talks, an agent acts. The moment it calls a tool to do real work toward a defined job, it is an agent.</p>
<p><strong>How long does it take to build your first AI agent with Claude Code?</strong></p><p>A focused first agent, like an inbox summarizer, takes an afternoon. Define the one job, create a project folder with a CLAUDE.md, connect one read-only tool via MCP, test the loop by hand, and save it as a slash command. You can have a rough working version before dinner.</p>
<p><strong>Do I need to know how to code to build an AI agent?</strong></p><p>No. A first agent is built mostly with plain-language instructions in a CLAUDE.md, a connected tool, and an optional subagent. The job is defining the task clearly and wiring in one tool, not writing code by hand.</p>
<p><strong>What is the difference between a subagent and a regular Claude Code session?</strong></p><p>A subagent is a specialized helper with its own focused job, documented by Anthropic at https://docs.anthropic.com/en/docs/claude-code/sub-agents. Instead of one chat trying to do everything, you give each piece of the work its own subagent, which keeps each part clean and reliable.</p>
<p><strong>What is the most common mistake when building a first AI agent?</strong></p><p>Scope creep. People start with one job and keep bolting on features until nothing works and they cannot tell what broke. Pick one job, make it work end to end, keep the agent read-only and minimally scoped at first, and build extra ideas as separate agents later.</p>
<p><strong>Is it safe to let my first agent take real actions?</strong></p><p>Start read-only. Give the agent the minimum access it needs and keep anything that sends, spends, or deletes off the table until you trust the loop. Put a human check on anything hard to reverse, and add write access only once the basic version is proven.</p>]]></content:encoded>
    </item>
    <item>
      <title>The Claude Billing Change and How to Reprice Agency Work</title>
      <link>https://www.claudecodeclub.ai/blog/duncan-claude-billing-change-agency-pricing</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/duncan-claude-billing-change-agency-pricing</guid>
      <pubDate>Wed, 17 Jun 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Monetization</category>
      <category>Pricing</category>
      <category>Agency</category>
      <description><![CDATA[The June 15 Claude billing change turns programmatic Claude usage into a real per-seat cost. Here is how to reprice client work, claim your credit, and bill agents as infrastructure instead of eating the API bill.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>The June 15 Claude billing change moves programmatic usage (Agent SDK, headless Claude Code, GitHub Actions) onto a separate monthly credit, then API rates.</li><li>If you run agents for clients, that is now a real per-seat, pass-through cost - not a rounding error hiding inside your Max plan.</li><li>Reprice now: claim the per-user credit, meter heavy automations, and bill usage as infrastructure - not as your subscription.</li></ul>
<h2>What the Claude billing change means for your agency</h2>
<p>Straight up: the Claude billing change that landed on June 15, 2026 is a pricing event for your agency, not a technical footnote. As of that date, programmatic Claude usage - the Agent SDK, headless 'claude -p', Claude Code in GitHub Actions, and third-party agents - no longer counts against your Pro or Max plan limit. It moves to a separate monthly credit you claim, and bills at standard API rates after that (Anthropic's details are at https://support.claude.com/en/articles/15036540-use-the-claude-agent-sdk-with-your-claude-plan).</p>
<p>Why should you care more than a hobbyist does? Because the agents you build for clients run in the background, on cron, all month. That usage used to hide inside your personal subscription for free. Now it is metered. If you do not adjust, that cost quietly comes out of your margin.</p>
<blockquote><strong>NOTE:</strong> Effective June 15, 2026. Applies to Pro, Max, Team, and Enterprise plans. The credit is per-user and refreshes each billing cycle - it is not pooled across your team.</blockquote>
<h2>The cost that used to be invisible</h2>
<p>Here is the trap most shops are about to walk into. Say you have a Gmail-to-CRM agent on a $2,400/month retainer, running every few minutes on a client's inbox. Until June 15, that agent's compute rode along on your Max plan and felt free. You priced the retainer on your time to build it, not on what it costs to run.</p>
<p>Now multiply that by every client agent you have in production. Each one draws on the new programmatic track. Once your monthly credit is spent, every run after that bills at API rates. That is real money leaving your account every month for work you already quoted as a flat retainer. The cost did not appear - it was always there. June 15 just made it visible.</p>
<h2>Reprice in three moves</h2>
<p>I spent eight years inside Apple, PlayStation, and Schwab, and the one thing enterprise pricing always got right was separating build cost from run cost. Apply the same discipline here. Three moves:</p>
<table><caption>How to reprice for the new track</caption><thead><tr><th>Deliverable</th><th>Old assumption</th><th>New pricing move</th></tr></thead><tbody><tr><td>One-off build (audit, migration)</td><td>Flat fee, compute is free</td><td>Flat fee plus a one-line usage estimate - compute is trivial here, so keep it simple</td></tr><tr><td>Always-on agent on retainer</td><td>Retainer covers everything</td><td>Retainer for the workflow, plus a metered usage line for heavy runs above the credit</td></tr><tr><td>High-volume agent (thousands of runs/day)</td><td>Same as any other retainer</td><td>Pass programmatic usage through at cost or cost-plus - this is infrastructure, bill it like infrastructure</td></tr></tbody></table>
<p>Notice the pattern: you are not raising prices across the board. You are pricing the build and the run separately, the way every serious infrastructure vendor does. We broke down the deeper logic of pricing the workflow instead of the hours in our writeup on Claude Code workflows that get you paid (/blog/5-claude-code-workflows-that-get-you-paid), and this change makes that split mandatory, not optional.</p>
<h2>Claim the per-user credit and mind the seats</h2>
<p>Before you reprice anything, claim what Anthropic is giving you. Eligible Pro, Max, Team, and Enterprise users get a separate monthly Agent SDK credit that applies only to programmatic usage and refreshes with the billing cycle. Eligible users were emailed instructions before June 15 - find that email.</p>
<p>The detail that bites agencies: the credit is per-user, not pooled. A five-person shop cannot run everything through one account's credit and call it covered. And members on seat-based Enterprise plans with Standard seats are not eligible for the credit at all. Map your seats before you map your prices.</p>
<blockquote><strong>WARNING:</strong> Do not assume the credit scales with your team. It is per-user and cannot be shared. If you concentrate all client agents on one login to 'save money', you will blow through that one credit and pay API rates on everything else.</blockquote>
<h2>Sell usage as infrastructure, not as your plan</h2>
<p>Here is the mechanic that protects your margin: stop treating Claude usage as a cost you absorb to look cheap, and start treating it as infrastructure the client pays for. Name the outcome - 'your inbox triaged and logged to the CRM, every five minutes, forever' - price the build and the workflow as a deliverable, and add a transparent usage line for the compute that runs it.</p>
<p>Clients already pay this way for hosting, for Twilio, for every API their software depends on. An always-on Claude agent is no different. When you frame programmatic usage as the engine under the deliverable, a usage line is obvious and fair - not a surprise. If you want the full scoping-and-packaging playbook, we laid it out in how to price a Claude Code agency project (/blog/how-to-price-a-claude-code-agency-project), and you can see more of how I package this kind of work on my author page (/author/duncan-rogoff).</p>
<h2>The trap to avoid</h2>
<p>The trap most new AI agencies will fall into this month: eating the API bill to keep a flat retainer looking clean. Do not. That is how you end up running a client's automation at a loss without noticing for a quarter. Meter the heavy agents, watch the token spend, and pass through what runs hot.</p>
<blockquote><strong>TIP:</strong> Pick your three highest-volume client agents this week, check their usage, and decide which need a metered line in the next invoice. Sell the outcome, bill the engine separately. 📈</blockquote>
<p>The shops that win the back half of 2026 are the ones who treated June 15 as a pricing upgrade, not a tax. Claim your credit, separate build from run, and charge for the engine like the infrastructure it is.</p>
<h2>FAQ</h2>
<p><strong>Which plans does the Claude billing change apply to?</strong></p><p>Pro, Max, Team, and Enterprise plans, effective June 15, 2026. The change moves programmatic usage - Agent SDK, headless 'claude -p', GitHub Actions, and third-party agents - off your plan limit and onto a separate monthly credit.</p>
<p><strong>Is the Agent SDK credit pooled across my team?</strong></p><p>No. The credit is per-user and refreshes with each billing cycle. It cannot be shared or pooled, and members on seat-based Enterprise plans with Standard seats are not eligible for it.</p>
<p><strong>What happens to programmatic usage above the credit?</strong></p><p>It bills at standard API rates once the monthly Agent SDK credit is used up. For high-volume client agents, treat that as a real recurring cost and price for it.</p>
<p><strong>Does this change how I should price retainers?</strong></p><p>Yes. Separate the build from the run: keep a flat fee or retainer for the workflow, and add a metered usage line for heavy, always-on agents that run above the credit.</p>
<p><strong>Should I pass Claude usage costs to clients?</strong></p><p>For high-volume, always-on agents, yes - bill programmatic usage as infrastructure, the same way clients already pay for hosting and other APIs. For light one-off builds, the compute is trivial and not worth metering.</p>]]></content:encoded>
    </item>
    <item>
      <title>The June 15 Claude Code Billing Change: What Builders Do Now</title>
      <link>https://www.claudecodeclub.ai/blog/david-claude-code-billing-change-june-15</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/david-claude-code-billing-change-june-15</guid>
      <pubDate>Wed, 17 Jun 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Automation</category>
      <category>Pricing</category>
      <description><![CDATA[As of June 15, 2026, headless Claude Code and Agent SDK runs stop counting against your Pro or Max limit. Here is what changed, which automations are affected, and the one thing you have to claim before it costs you.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>As of June 15, 2026, your headless Claude Code runs (claude -p) and Agent SDK scripts stop eating your Pro or Max interactive limit.</li><li>Anthropic is giving eligible Pro, Max, Team, and Enterprise users a separate monthly Agent SDK credit - but you have to claim it.</li><li>If you automate anything on cron, check your email, claim the credit, and budget for API rates once it runs out.</li></ul>
<h2>What the Claude Code billing change actually does</h2>
<p>Real talk: this is the most important Claude Code billing change for builders all year, and it is easy to miss because nothing on your screen looks different. As of June 15, 2026, programmatic Claude Code usage - the headless 'claude -p' print mode, the Claude Agent SDK, and the agents you wire into cron jobs or GitHub Actions - no longer counts against the usage limit on your Pro or Max plan (see Anthropic's own writeup at https://support.claude.com/en/articles/15036540-use-the-claude-agent-sdk-with-your-claude-plan).</p>
<p>Here is why that matters. Before this change, every overnight script you ran was quietly competing with you for the same pool of usage. You would sit down at 9am to build, and your limit was already half gone because a nightly report agent had been grinding since 3am. Now Anthropic has split the two. Your interactive usage - you, at the keyboard, in Claude Code, Claude Cowork, or Claude - keeps its own limit, untouched. Your automations run on a separate track.</p>
<p>So the headline is good news for anyone who builds with agents: your robots and your hands no longer fight over the same gas tank. But there is a catch, and it has a deadline, so read to the end before you go back to shipping.</p>
<blockquote><strong>NOTE:</strong> Effective June 15, 2026. Applies to Pro, Max, Team, and Enterprise plans. Your interactive Claude Code, Claude Cowork, and Claude usage limits are unchanged - this only moves programmatic usage onto its own track.</blockquote>
<h2>What changed, in plain terms</h2>
<p>If you only remember one table from this post, make it this one. Same work, completely different billing path depending on whether a human or a script is driving.</p>
<table><caption>Before vs after June 15, 2026</caption><thead><tr><th>Before</th><th>After</th><th>Why it matters</th></tr></thead><tbody><tr><td>Headless 'claude -p' runs counted against your plan limit</td><td>They draw on a separate monthly Agent SDK credit instead</td><td>Your automations stop stealing your interactive budget</td></tr><tr><td>Agent SDK and cron agents ate into the same pool you used by hand</td><td>Programmatic usage is metered on its own track</td><td>You can run agents overnight without burning your day</td></tr><tr><td>No way to budget automation separately</td><td>A claimable per-user credit, then API rates</td><td>Heavy automation becomes a line item you can actually plan for</td></tr></tbody></table>
<p>The short version: interactive usage stays exactly as it was. Programmatic usage moves off your plan limit, onto a separate credit you claim, and bills at standard API rates once that credit is gone.</p>
<h2>Which of your workflows are affected</h2>
<p>If you have followed any of the automation builds we run in the Club, some of your stuff is now on the new track. Anything where Claude runs without you sitting there is programmatic. Concretely:</p>
<ul><li>Headless scripts using 'claude -p' - the nightly report writer, the inbox triager, the changelog generator.</li><li>Anything built on the Claude Agent SDK - your custom agents and internal tools.</li><li>Claude Code in GitHub Actions - the PR reviewer, the test-fixer, the docs updater that runs on push.</li><li>Third-party agents and apps that call Claude on your behalf in the background.</li></ul>
<p>What is NOT affected: you typing in Claude Code, using Claude Cowork, or chatting in Claude. That is interactive, and it keeps its normal plan limit. The clean mental model is simple - if a human kicked it off and is watching it run, it is interactive; if a clock or a webhook kicked it off, it is programmatic. We walk through wiring these background agents up in our guide on connecting Claude Code to n8n with MCP (/blog/how-to-connect-claude-code-to-n8n-with-mcp), and most of those builds now live on the new track.</p>
<h2>Claim your monthly Agent SDK credit</h2>
<p>This is the part people will sleep on, so do it today. Eligible Pro, Max, Team, and Enterprise users can claim a separate monthly credit that applies only to Agent SDK usage and refreshes with your billing cycle. The key word is claim - it is not automatic for everyone, and Anthropic emailed eligible users with instructions before the June 15 switch.</p>
<p>Three things to do right now:</p>
<ol><li>Search your inbox for the Anthropic email about the Agent SDK credit and follow the claim link.</li><li>Confirm your plan is eligible - Pro, Max, Team, and Enterprise qualify, but members on seat-based Enterprise plans with Standard seats are not eligible for the credit.</li><li>Note that the credit is per-user and refreshes each billing cycle - it is not pooled, so it cannot be shared across teammates.</li></ol>
<blockquote><strong>WARNING:</strong> The trap: assuming the credit just shows up. If you never claim it, or you are on a Standard Enterprise seat, your programmatic runs go straight to API-rate billing. Check before your next cron fires.</blockquote>
<h2>Budget for what happens after the credit</h2>
<p>Once you use up the monthly Agent SDK credit, programmatic usage bills at standard API rates. That is not a bad thing - it just means heavy automation now behaves like an API cost line instead of a free side effect of your subscription. Treat it that way.</p>
<p>Practical move: figure out which of your agents are cheap and which are expensive. A script that writes one Monday report is rounding-error territory. An agent that loops over a thousand support tickets every night is a real cost. Put the expensive ones on a budget, log their token usage, and decide whether the output is worth the spend. This is the exact muscle we build in the dynamic-workflows writeup (/blog/how-to-use-claude-code-dynamic-workflows) - the same discipline that keeps a workflow fast now keeps it cheap.</p>
<blockquote><strong>TIP:</strong> Stop thinking of automation as free because it fit under your plan. Price each agent by what it saves you. If a nightly agent saves you four hours and costs a few dollars in API spend, that is the easiest yes you will make this week.</blockquote>
<h2>What this signals for builders</h2>
<p>Zoom out and the move is obvious. Anthropic is separating interactive from programmatic because they expect builders to run fleets of agents, not just chat in a window. They are pricing for a world where your background workers do more work than you do by hand.</p>
<p>So lean into it. The skill that pays in 2026 is not prompting faster - it is designing automations that run while you sleep and knowing exactly what each one costs. Claim your credit, meter your heavy agents, and go build the boring overnight worker that saves you a few hours every week. That is the whole game right now. If you want the structured path through it, the build modules in our curriculum (/curriculum) cover the agent and MCP patterns end to end. 🎯</p>
<h2>FAQ</h2>
<p><strong>Does this change my interactive Claude Code limit?</strong></p><p>No. Interactive Claude Code, Claude Cowork, and Claude usage limits are unchanged. The June 15 change only moves programmatic usage - headless 'claude -p', the Agent SDK, GitHub Actions, and third-party agents - onto a separate track.</p>
<p><strong>What counts as programmatic usage?</strong></p><p>Anything Claude does without you driving it: headless 'claude -p' runs, the Claude Agent SDK, Claude Code in GitHub Actions, and third-party agents that call Claude in the background.</p>
<p><strong>Do I have to do anything to get the credit?</strong></p><p>Yes. Eligible Pro, Max, Team, and Enterprise users have to claim the monthly Agent SDK credit. Anthropic emailed eligible users with instructions before June 15, so check your inbox.</p>
<p><strong>What happens when the credit runs out?</strong></p><p>Programmatic usage bills at standard API rates once your monthly Agent SDK credit is used up. The credit refreshes with your billing cycle.</p>
<p><strong>Is everyone eligible for the credit?</strong></p><p>Pro, Max, Team, and Enterprise plans qualify, but members on seat-based Enterprise plans with Standard seats are not eligible. The credit is per-user and cannot be pooled across a team.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Schedule Claude Code Agents to Run While You Sleep</title>
      <link>https://www.claudecodeclub.ai/blog/schedule-claude-code-agents-while-you-sleep</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/schedule-claude-code-agents-while-you-sleep</guid>
      <pubDate>Tue, 16 Jun 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Claude Code</category>
      <category>Automation</category>
      <category>Workflows</category>
      <description><![CDATA[A practical guide to scheduling recurring Claude Code agents - a morning report, a nightly cleanup, a weekly research pull - and the one rule that keeps unattended runs from costing you a client.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>You can schedule Claude Code agents to run on a recurring cadence using cron-style triggers and routines.</li><li>Best jobs are read-heavy and low-stakes: morning reports, nightly cleanups, weekly research pulls.</li><li>Never let an unattended run spend money or touch production without a human checkpoint.</li></ul>
<h2>Why schedule Claude Code agents at all</h2>
<p>Straight up, most of the value an agency gets from automation is not the clever build. It is the boring work that happens on a schedule whether or not anyone remembers to kick it off. A report that lands at 7am. A repo that gets tidied at midnight. A research pull that runs every Monday before the team logs on. That is the work that quietly makes you look reliable to clients.</p>
<p>Claude Code can now run on a recurring cadence. You can schedule a Claude Code agent to run on a recurring schedule using scheduled tasks and cron-style triggers, documented here: https://code.claude.com/docs/en/scheduled-tasks . There is also a higher-level Routines feature for repeatable, recurring work: https://claude.com/blog/introducing-routines-in-claude-code . If you manage agents at the team level, the managed-agents update covers how this fits together: https://claude.com/blog/whats-new-in-claude-managed-agents .</p>
<p>The shift is small but real. Instead of an agent you have to babysit, you get an agent that shows up on time. For client work, on time is most of the job. If you are new to running agents in the first place, start with [how to use Claude Code like a pro](/blog/how-to-use-claude-code-like-a-pro) before you put anything on a timer.</p>
<h2>The scheduling primitives, in plain terms</h2>
<p>There are three ways to think about putting a Claude Code agent on a clock. They overlap, and you do not need to memorise the exact menu. What matters is the shape of each.</p>
<ul><li>Scheduled tasks: a defined job that runs at a set time. The clearest mental model is a cron job - it fires on a cadence you set, with no one watching. See https://code.claude.com/docs/en/scheduled-tasks .</li><li>Cron-style triggers: the timing layer underneath scheduled tasks. You describe the cadence (every morning, every Sunday night, the first of the month) and the trigger handles the rest.</li><li>Routines: a packaged, repeatable run for recurring work, described here: https://claude.com/blog/introducing-routines-in-claude-code . Good when the same multi-step job runs over and over and you want it named and reusable rather than reassembled each time.</li></ul>
<p>Do not over-engineer this. Pick one job you currently do by hand on a predictable rhythm, and move that one job onto a schedule first. Watch it for a week. Then add the next.</p>
<blockquote><strong>TIP:</strong> Write the agent's instructions as if a junior teammate will run them with zero context, because that is effectively what is happening at 3am. Tight scope, explicit inputs, explicit outputs. Vague instructions fail quietly when no one is watching.</blockquote>
<h2>Three jobs worth scheduling first</h2>
<p>These are the ones that pay for themselves quickly and carry almost no downside if they hiccup.</p>
<p>A morning report. Have the agent read yesterday's activity - commits, open issues, a metrics file, a changelog - and write a short plain-language summary to a doc or a channel before you start the day. You walk in already briefed. Clients notice when you open a call already knowing the numbers.</p>
<p>A nightly cleanup. Point the agent at a repo or a working folder and have it do the low-risk housekeeping: flag stale branches, draft a tidy-up list, regenerate a stale index, surface anything that drifted. It proposes, it does not force. You review the proposal with coffee.</p>
<p>A recurring research pull. Once a week, have the agent gather and summarise what changed in an area you track for a client - a competitor's public changes, a docs update, a pricing shift - into a short brief. Reading-heavy, low-stakes, and exactly the kind of work that slips when you are busy. The CCC [memory system](/blog/claude-code-memory-system-three-tiers) helps here - give the agent persistent context so each weekly run builds on the last instead of starting cold.</p>
<h2>Good scheduled-agent jobs vs jobs to never automate unattended</h2>
<p>This is the table to keep on the wall. The left column is safe to run while you sleep. The right column needs a human in the loop, every time, no exceptions.</p>
<table><caption>Schedule these freely. Never run the right column unattended.</caption><thead><tr><th>Safe to schedule unattended</th><th>Never automate unattended</th></tr></thead><tbody><tr><td>Read-only morning reports and summaries</td><td>Anything that spends money or moves funds</td></tr><tr><td>Draft cleanups that propose, not apply</td><td>Pushes to production or live client environments</td></tr><tr><td>Weekly research and changelog briefs</td><td>Sending external emails or messages to clients</td></tr><tr><td>Generating internal docs and indexes</td><td>Deleting data or force-overwriting files</td></tr><tr><td>Flagging issues for human review</td><td>Provisioning paid infrastructure or API keys</td></tr></tbody></table>
<blockquote><strong>WARNING:</strong> An unattended agent that can spend money or touch production is an open faucet. If a scheduled run can call a paid API, deploy, or send a client-facing message, put a human checkpoint in front of that step. The agent prepares, you approve, then it acts. No exceptions for jobs that are hard to reverse.</blockquote>
<p>The pattern that keeps you out of trouble: scheduled agents are allowed to gather, summarise, and draft. They are not allowed to commit anything irreversible without a person saying yes. Build the checkpoint into the job, not into your memory of the job.</p>
<h2>A safe setup checklist</h2>
<p>Before you let any agent run on a timer, walk this list. It takes ten minutes and saves the kind of mistake that costs a client's trust.</p>
<ol><li>Scope the job to one clear task with named inputs and one named output.</li><li>Make the output a draft or a proposal, not an applied change, for anything reversible-but-annoying.</li><li>Remove the agent's ability to spend, deploy, or message externally unless a human approves first.</li><li>Run it once manually and read the full output before you ever schedule it.</li><li>Set the cadence conservatively - daily before hourly, weekly before daily.</li><li>Log where the output lands so a failed run is obvious, not silent.</li><li>Review the first week of runs by hand before you trust it to run alone.</li></ol>
<p>If the job clears that checklist, schedule it and forget it. If it does not, it is not ready to run while you sleep - it is a job you still need to be present for.</p>
<h2>Building trust with the cadence over time</h2>
<p>The real payoff of scheduled agents is compounding, and it is worth being patient about it. The first week, you are not saving time - you are checking the agent's work, which costs about as much attention as doing the job yourself. That is fine. You are buying confidence, not time, in week one.</p>
<p>By week three, if the job has run clean, you stop reading every output line by line. You skim it. You trust it. That is the moment the schedule starts paying you back, because the work now happens without occupying your head. Multiply that across a morning report, a nightly cleanup, and a weekly research pull, and you have quietly removed three standing tasks from your week without dropping any of them.</p>
<p>For client work specifically, this is where reliability becomes visible. A client does not see your automation. They see that the report is always there, the numbers are always current, and you always seem to know what changed. That perception is worth more than the hours saved. It is the difference between an agency that scrambles and one that is simply on top of things.</p>
<p>Resist the urge to schedule everything at once. The failure mode is a stack of half-trusted jobs you are nervously babysitting, which is worse than the manual work you started with. One job, proven over a week, then the next. Earn the trust, then expand the cadence. The [memory system](/blog/claude-code-memory-system-three-tiers) is what lets each run inherit the context of the last, so the longer a scheduled job runs, the smarter it gets rather than the staler.</p>
<p>This is the kind of quiet reliability work members trade notes on inside the community. If you want the working setups other operators are running, [join the Claude Code Club](https://www.skool.com/claudecodeclub/about) and you can lift them directly. More guides like this live on the [blog](/blog).</p>
<h2>FAQ</h2>
<p><strong>Can I really schedule a Claude Code agent to run on its own?</strong></p><p>Yes. Claude Code supports scheduled tasks and cron-style triggers that run on a recurring cadence, plus Routines for repeatable work. See https://code.claude.com/docs/en/scheduled-tasks and https://claude.com/blog/introducing-routines-in-claude-code .</p>
<p><strong>What is the safest first job to automate?</strong></p><p>A read-only morning report. It gathers yesterday's activity and writes a short summary. It touches nothing it could break, so a bad run costs you nothing but a glance.</p>
<p><strong>What should I never let a scheduled agent do unattended?</strong></p><p>Anything that spends money, deploys to production, sends external messages, or deletes data. Those need a human approval step in front of them, every time.</p>
<p><strong>How often should a scheduled agent run?</strong></p><p>Start conservative. Daily beats hourly, weekly beats daily. You can always tighten the cadence once you trust the job. Loosen first, tighten later.</p>
<p><strong>How do I know a scheduled run failed?</strong></p><p>Make the output land somewhere visible - a doc, a channel, a log file. If the run fails silently with no output, you will not notice until it matters. Design for the failure to be loud.</p>]]></content:encoded>
    </item>
    <item>
      <title>How Claude Code Auto Mode Runs Tasks on Its Own (Safely)</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-auto-mode-runs-on-its-own</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-auto-mode-runs-on-its-own</guid>
      <pubDate>Tue, 16 Jun 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Workflows</category>
      <category>Automation</category>
      <description><![CDATA[Auto mode lets Claude Code take a whole sequence of actions while you watch from checkpoints. Here is what it actually changes, and how to use it without burning money or breaking something you cannot undo.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Claude Code auto mode lets the agent take a sequence of actions on its own, with checkpoints you can review and revert.</li><li>The big shift: you go from approving every step to scoping a task and reviewing the result.</li><li>Use it safely by starting on low-stakes work, keeping money and irreversible actions gated, and reading the diff before you accept.</li></ul>
<h2>What Claude Code auto mode actually is</h2>
<p>Real talk: the thing that scares people about agents is the same thing that makes them useful. They keep going without asking. Claude Code auto mode is exactly that, done with guardrails. Instead of stopping to ask permission before every single edit or command, the agent takes a run of actions in sequence and drops checkpoints along the way that you can review and revert.</p>
<p>Anthropic describes this as enabling Claude Code to work more autonomously, with longer self-running tasks and the ability to take multiple actions before handing control back to you. The official write-ups are here: https://www.anthropic.com/news/enabling-claude-code-to-work-more-autonomously and here: https://www.anthropic.com/engineering/claude-code-auto-mode</p>
<p>The mental model that helped me: a checkpoint is a save point in a game. Claude moves forward, the world changes, and you can always rewind to a known-good state. That is the whole safety story in one sentence. If you are still learning the fundamentals, start with [how to use Claude Code like a pro](/blog/how-to-use-claude-code-like-a-pro) and come back to auto mode once the basics feel boring.</p>
<p>Worth being clear on what this is not. Auto mode is not a fire-and-forget robot that ships your product overnight while you sleep. It is a way to let the agent string together the small steps that you would otherwise approve one at a time, so a ten-step task does not need ten interruptions. The autonomy is bounded by the task you scope and the checkpoints it leaves behind. You are still the one who decides what good looks like and whether the result ships.</p>
<p>The reason this matters now and not a year ago is reliability. Stringing many actions together only pays off if each step lands more often than it fails. When the success rate per step is high enough, a long chain of them becomes useful instead of a pile of compounding mistakes. That is the quiet shift that makes auto mode worth your attention as a builder, and the official engineering notes go into the tradeoffs at https://www.anthropic.com/engineering/claude-code-auto-mode</p>
<h2>What it changes for builders</h2>
<p>Before auto mode, your job was babysitter. You approved each step, which meant you were chained to the keyboard for the whole task. The work was real, but your attention was the bottleneck. The agent could only move as fast as you could click yes.</p>
<p>With auto mode, your job changes from approver to scoper-and-reviewer. You spend your energy up front writing a tight task description, then you let it run, then you spend energy at the end reading what it did. That is a genuinely different workflow, and it is why longer tasks suddenly become practical. A refactor that touches twelve files is annoying to approve step by step. It is pleasant to scope once and review once.</p>
<blockquote><strong>TIP:</strong> Treat the task description like a contract. The tighter and more specific you are about what done looks like, the less likely the agent wanders. Vague scope is the number one reason an auto run goes sideways.</blockquote>
<p>Here is the part people miss. The skill is not in clicking the auto mode button. The skill is in the front and the back. Up front, you write a scope tight enough that there is only one reasonable interpretation of done. At the back, you read the result like a senior reviewer reads a junior's pull request, looking for the thing that technically works but is not what you meant. The middle, where the agent actually grinds through the steps, is the part you no longer have to babysit.</p>
<p>There is a second-order benefit that surprised me. Because you have to scope tightly before you let it run, you end up thinking more clearly about the task than you would have otherwise. Half the value is the agent doing the work. The other half is that auto mode forces you to define done before you start, which is a habit that makes you a better builder even on the tasks you do by hand.</p>
<p>This pairs beautifully with a good memory setup. When the agent already knows your conventions, it makes fewer wrong turns on a long run. If you have not set that up, the [Claude Code memory system in three tiers](/blog/claude-code-memory-system-three-tiers) is the place to start.</p>
<h2>Good first auto-mode tasks vs tasks to keep manual</h2>
<p>Do not start by pointing auto mode at your production billing flow. Start where a mistake is cheap and obvious. Here is the split I use.</p>
<table><caption>Where to let auto mode run, and where to stay hands-on</caption><thead><tr><th>Good first auto-mode tasks</th><th>Keep these manual or gated</th></tr></thead><tbody><tr><td>Renaming variables or files across a repo</td><td>Anything that spends money or hits a paid API</td></tr><tr><td>Writing or fixing unit tests</td><td>Deleting data, dropping tables, or destructive migrations</td></tr><tr><td>Updating docs and comments to match code</td><td>Pushing to production or deploying live</td></tr><tr><td>Reformatting and linting cleanups</td><td>Editing auth, secrets, or access control</td></tr><tr><td>Adding a small self-contained feature in a branch</td><td>Force-pushing or rewriting git history</td></tr></tbody></table>
<p>The pattern is simple. The left column is reversible and visible. If it goes wrong, you read the diff, you revert, you move on, and nobody loses anything. The right column is where a single bad step costs real money or destroys something you cannot get back. Those stay behind a human yes.</p>
<p>Notice that the dividing line is not difficulty, it is reversibility. A complex refactor is fine for auto mode because if it goes wrong you just revert it. A simple delete of one row in production is not fine, because there is no revert button for that. Train yourself to ask one question before you hand a task off: if this goes wrong, how hard is it to undo? Cheap to undo means let it run. Hard or impossible to undo means keep your hand on it.</p>
<p>Branches are your friend here. Running an auto task on its own branch turns almost any code change into the reversible column, because the worst case is you throw the branch away. That one habit, work in a branch, lets you be far more generous about what you hand off, because git itself becomes your safety net on top of the agent's checkpoints.</p>
<h2>How to use Claude Code auto mode safely</h2>
<p>Safety here is not a vibe, it is a checklist. Run these five and auto mode goes from risky to boring in the best way.</p>
<ol><li>Scope the task tight. One clear goal, a clear definition of done, and the files or area it is allowed to touch.</li><li>Start on low-stakes work. Build trust on tests and renames before you ever point it at anything important.</li><li>Review the diff and the checkpoints. Do not accept blind. Read what changed and why before you keep it.</li><li>Gate money and irreversible actions. Never let an unsupervised run trigger spend, deploys, deletes, or anything you cannot undo.</li><li>Keep a human in the loop. Auto mode is a faster collaborator, not a replacement for your judgment on the call that matters.</li></ol>
<blockquote><strong>WARNING:</strong> Never let auto mode run unsupervised on anything that spends money or is hard to undo. A funded API key, a deploy command, or a destructive migration left ungated can do real damage in one sequence of actions. Gate those behind your explicit approval, every time.</blockquote>
<p>The good news is that checkpoints make recovery cheap for the reversible stuff. If a run goes somewhere you did not want, you revert to the last good checkpoint and re-scope. That review-and-revert loop is the entire point. It is what lets you give the agent room to move without handing it the keys to things that bite back.</p>
<h2>A simple starter routine</h2>
<p>Here is the exact on-ramp I give people who are nervous about turning the agent loose. Do this on a real but low-stakes task this week.</p>
<ol><li>Pick a chore you would normally avoid, like adding tests to one neglected module.</li><li>Write a one-paragraph scope: the goal, the definition of done, and which files it can touch.</li><li>Run it in auto mode in a branch, not on main.</li><li>When it finishes, read the full diff before accepting anything.</li><li>Revert to a checkpoint if needed, tighten your scope, and run again.</li></ol>
<p>After a couple of these you will develop a feel for what to hand off and what to keep close. That instinct is the real skill. The tooling is easy. Knowing the boundary between a cheap mistake and an expensive one is the part that pays you back. If you want a crowd of people building this muscle alongside you, come hang out in the [Claude Code Club community](https://www.skool.com/claudecodeclub/about) and trade your scoping templates. 🚀</p>
<h2>FAQ</h2>
<p><strong>Does auto mode mean Claude Code runs with no oversight?</strong></p><p>No. It takes a sequence of actions on its own, but it leaves checkpoints you can review and revert, and you still scope the task and approve the result. The safe pattern keeps a human in the loop for anything that matters.</p>
<p><strong>What is the safest first task to try with auto mode?</strong></p><p>Something reversible and visible, like writing unit tests, renaming variables across a repo, or cleaning up formatting. If it goes wrong, you read the diff and revert with no real cost.</p>
<p><strong>Can auto mode spend money or deploy on its own?</strong></p><p>Only if you let it. The rule is to gate anything that spends money, deploys to production, or is hard to undo behind your explicit approval. Never leave those ungated on an unsupervised run.</p>
<p><strong>What is a checkpoint?</strong></p><p>A save point the agent creates as it works. You can review the changes at each one and revert to a known-good state if a run goes somewhere you did not intend.</p>
<p><strong>How is this different from approving each step manually?</strong></p><p>Manual approval makes you the bottleneck on every action. Auto mode flips your role to scoping the task up front and reviewing the result, which is what makes longer self-running tasks practical.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code Skills, Subagents, MCP, and Hooks: When to Use Each</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-skills-subagents-mcp-hooks-when-to-use</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-skills-subagents-mcp-hooks-when-to-use</guid>
      <pubDate>Mon, 15 Jun 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Claude Code</category>
      <category>Building</category>
      <category>Workflows</category>
      <category>MCP</category>
      <description><![CDATA[Four primitives, one decision. This is the plain-English guide to Claude Code skills, subagents, MCP, and hooks, with a table that tells you which to reach for and the mistakes that quietly slow your work down.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Skills package know-how, subagents do isolated sub-tasks in their own context, MCP connects external tools and data, and hooks fire automatic actions on events.</li><li>Pick by the question you are answering: is this knowledge, work, a connection, or an automatic reaction?</li><li>Most slowdowns come from reaching for a subagent when a skill would do, or wiring a hook for something you only do once.</li></ul>
<h2>Claude Code skills, subagents, MCP, and hooks, defined plainly</h2>
<p>Straight up: the reason these four get confused is that they all sound like ways to make Claude Code do more. They are, but they answer different questions. Before you decide when to use each, you need a clean definition of each one that does not lean on the others.</p>
<p>A skill is packaged know-how. It is a set of instructions, conventions, and sometimes helper files that teaches Claude how you want a particular kind of work done. Think of it as a written standard operating procedure that loads when it is relevant. A skill does not run on its own and it does not connect to anything outside. It shapes how the work is done.</p>
<p>A subagent is a separate worker with its own context window, dispatched to handle a focused sub-task and report back. It keeps its own scratch space, so the noise of a big investigation does not crowd the main conversation. Anthropic documents subagents as a first-class feature here: https://docs.anthropic.com/en/docs/claude-code/sub-agents . The key word is isolation. A subagent exists to do a chunk of work without polluting the main thread.</p>
<p>An MCP server is a connection to external tools and data. It is how Claude Code reaches a database, a ticketing system, a design file, or an internal API in a structured way. If you want the deeper background, we wrote it up in [what are MCP servers and why they matter](/blog/what-are-mcp-servers-and-why-they-matter). MCP is about reach, not behavior.</p>
<p>A hook is an automatic action that fires on an event. When something happens, such as a file being edited or a session wrapping up, the hook runs a command you defined. You are not asking Claude to remember to do it. The harness does it every time, deterministically.</p>
<blockquote><strong>NOTE:</strong> One sentence each: a skill is how, a subagent is who, MCP is where, and a hook is when. Hold those four words and most of the confusion goes away.</blockquote>
<h2>The one question that picks the right primitive</h2>
<p>When a teammate asks which one to use, I do not start by describing features. I ask what they are actually trying to change. There are only four honest answers, and each maps to one primitive.</p>
<ol><li>If the answer is &quot;I keep re-explaining how I want this done,&quot; you want a skill. You are encoding a standard.</li><li>If the answer is &quot;this sub-task is big and noisy and I do not want it cluttering the main thread,&quot; you want a subagent. You are isolating work.</li><li>If the answer is &quot;Claude needs to read or write something that lives outside the codebase,&quot; you want MCP. You are adding reach.</li><li>If the answer is &quot;this should just happen automatically every time X occurs,&quot; you want a hook. You are removing a manual step.</li></ol>
<p>Notice that none of these is about power. They are about the shape of the problem. The most common waste I see is people reaching for the heaviest tool because it feels the most capable, when a one-paragraph skill would have solved it cleanly.</p>
<h2>The decision table</h2>
<p>Here is the reference I hand to people on client teams. Find the situation that matches, use the primitive in the middle column, and the right column tells you why it is the right call rather than one of the others.</p>
<table><caption>Situation to primitive to reason</caption><thead><tr><th>Situation</th><th>Use</th><th>Why</th></tr></thead><tbody><tr><td>You repeat the same instructions for how a task should be done</td><td>Skill</td><td>It packages the know-how so you stop re-explaining the standard</td></tr><tr><td>A focused sub-task generates a lot of intermediate noise</td><td>Subagent</td><td>It runs in its own context so the main thread stays clean</td></tr><tr><td>You want a second opinion or parallel investigation while you keep working</td><td>Subagent</td><td>Isolation lets it work without consuming or derailing your context</td></tr><tr><td>Claude needs to query a live database or internal API</td><td>MCP</td><td>MCP is the structured connection to external tools and data</td></tr><tr><td>Claude needs to read tickets, design files, or another system</td><td>MCP</td><td>Same reason: reach into systems that are not in the repo</td></tr><tr><td>You want tests to run automatically after every edit</td><td>Hook</td><td>A hook fires deterministically on the event, no reminder needed</td></tr><tr><td>You want a wrap-up note written at the end of every session</td><td>Hook</td><td>The harness runs it every time, so it never gets skipped</td></tr><tr><td>A one-off check you will run twice this week</td><td>None of these</td><td>Just ask directly; automation overhead is not worth it yet</td></tr></tbody></table>
<blockquote><strong>TIP:</strong> Skills and subagents stack well. A subagent can run with a skill loaded, so the isolated worker still follows your standard. They are not competitors.</blockquote>
<h2>Common mistakes that slow you down</h2>
<p>These are the patterns I correct most often. None of them break anything outright. They just add friction or cost that you stop noticing, which is worse.</p>
<p>The first is using a subagent when a skill would do. People dispatch a subagent to &quot;review code the way we like it,&quot; when what they actually needed was a written review standard. A skill is cheaper, it is reusable, and it does not spin up a separate context for what is really just guidance. Reach for the subagent when the work is genuinely large or noisy, not when you only needed to tell Claude how you want it done.</p>
<p>The second is wiring a hook for something you do once. Hooks earn their keep on repetition. If you are only going to run a check twice, the time spent configuring and testing the hook outpaces the time it saves. Automate the thing you do every session, not the thing you did once and labeled a workflow.</p>
<p>The third is reaching for MCP when the data is already local. If the information lives in the repo, Claude can already read it. MCP is for systems outside the codebase. Adding a connection you do not need is just another moving part to maintain.</p>
<p>The fourth is letting skills pile up. A skill that loads when it is not relevant adds noise. Keep your skills narrow and well-scoped so the right one engages at the right time. We go deeper on keeping context clean in [how to use Claude Code like a pro](/blog/how-to-use-claude-code-like-a-pro) and on persistent memory in [the Claude Code memory system](/blog/claude-code-memory-system-three-tiers).</p>
<blockquote><strong>WARNING:</strong> If you find yourself building infrastructure before you have felt the pain twice, stop. The friction tells you which primitive you need. Premature automation usually solves the wrong problem.</blockquote>
<h2>How they fit together on a real project</h2>
<p>On a typical client build, all four show up, each in its lane. Skills carry our standards: how we review, how we commit, how we write tests. Subagents take the heavy investigations, like tracing a bug through an unfamiliar module, so the main thread stays focused on shipping. MCP connects to the client's staging database and their ticket system so Claude is working from real context, not guesses. Hooks keep the boring discipline automatic, running the test suite after edits and writing a short session summary at the end.</p>
<p>The point is not to use all four. The point is to recognise which question you are answering so you stop forcing one primitive to do another's job. Get that right and the system feels calm and predictable, which is the whole goal on paid work.</p>
<p>If you want to see how operators actually wire these together day to day, that is most of what we trade notes on inside the Claude Code Club community: https://www.skool.com/claudecodeclub/about . Worth a look if you are setting this up for real client work. For more guides, the [blog index](/blog) has the rest.</p>
<h2>FAQ</h2>
<p><strong>What is the difference between a skill and a subagent?</strong></p><p>A skill is packaged know-how that shapes how a task is done. A subagent is a separate worker with its own context that does an isolated sub-task and reports back. Use a skill to set a standard, a subagent to isolate noisy work.</p>
<p><strong>When should I use MCP instead of a skill?</strong></p><p>Use MCP when Claude needs to reach external tools or data, such as a live database, an API, or a ticketing system. A skill cannot connect to anything outside; it only governs behavior. If the data is already in your repo, you do not need MCP.</p>
<p><strong>Are hooks worth setting up for a small project?</strong></p><p>Only if you repeat the action. Hooks fire automatically on events, so they pay off when you do something every session, like running tests after an edit. For a one-off, configuring a hook costs more than it saves.</p>
<p><strong>Can I use a skill and a subagent at the same time?</strong></p><p>Yes. A subagent can run with a skill loaded, so the isolated worker still follows your standard. They are complementary, not competing.</p>
<p><strong>Where can I read Anthropic's official documentation on subagents?</strong></p><p>Anthropic documents subagents as a first-class Claude Code feature at https://docs.anthropic.com/en/docs/claude-code/sub-agents .</p>]]></content:encoded>
    </item>
    <item>
      <title>The 5 Levels of Claude Code: From First Chat to Self-Running Systems</title>
      <link>https://www.claudecodeclub.ai/blog/the-5-levels-of-claude-code</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/the-5-levels-of-claude-code</guid>
      <pubDate>Mon, 15 Jun 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Workflows</category>
      <category>Building</category>
      <category>Getting Started</category>
      <description><![CDATA[Most people stall at Level 1 and never realize there are four more above them. Here is the full progression, how to self-diagnose where you are, and the one concrete move that gets you to the next level.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>There are five levels of Claude Code, and almost everyone gets stuck at Level 1 (one-off chats) without knowing the rest exist.</li><li>Each level adds one new capability: memory, then repeatable workflows, then real tools via MCP, then subagents and scheduled runs.</li><li>The jump that changes everything is Level 4 to 5, where Claude stops being something you operate and starts being a system that runs itself.</li><li>Find your level below, take the single next move listed, and you climb without overwhelm.</li></ul>
<h2>The 5 levels of Claude Code, explained</h2>
<p>Real talk: most people who try Claude Code judge the whole thing by their first ten minutes with it. They open it, type a prompt, get an answer, and decide it is basically a fancier chat window. Then they wonder why other builders are shipping apps, running agencies, and waking up to work that finished itself overnight.</p>
<p>The difference is not talent and it is not some secret prompt. It is altitude. There are five levels of Claude Code, and each one unlocks a capability the level below it did not have. You do not skip levels. You climb them, and every climb is one small concrete move, not a rebuild of your whole life.</p>
<p>This post is your map. I will walk all five levels, show you exactly what each one looks like in practice, and give you the single next move to climb. If you are brand new, start with [building your first app with Claude Code](/blog/build-your-first-app-with-claude-code) and come back here to see where that fits on the ladder.</p>
<table><caption>The 5 levels of Claude Code at a glance</caption><thead><tr><th>Level</th><th>What it looks like</th><th>Your next move</th></tr></thead><tbody><tr><td>1. First chat</td><td>One-off prompts, no memory, you re-explain context every time</td><td>Start a real project folder and add a CLAUDE.md</td></tr><tr><td>2. Real project</td><td>A project with a CLAUDE.md and persistent memory</td><td>Save your repeated asks as slash commands</td></tr><tr><td>3. Repeatable workflows</td><td>Slash commands and a routine you run the same way each time</td><td>Wire in one MCP server so Claude touches a real system</td></tr><tr><td>4. Tools wired in</td><td>MCP and tools let Claude act on real apps and data</td><td>Add a subagent and schedule one run to fire on its own</td></tr><tr><td>5. Self-running systems</td><td>Subagents plus scheduled or autonomous runs doing work without you</td><td>Audit, harden, and let the system carry recurring work</td></tr></tbody></table>
<h2>Level 1: The first chat (where almost everyone stops)</h2>
<p>Level 1 is the open box. You type something, Claude responds, you copy the result, you move on. There is no memory between sessions, so every conversation starts from zero. You find yourself re-explaining what your project is, what stack you use, and what you actually want, over and over.</p>
<p>This level is genuinely useful for quick questions and throwaway scripts. The trap is that it feels complete, so people never look up. They get a real answer, decide that is the ceiling, and never discover the four levels above.</p>
<p>How to know you are here: you open Claude Code, you paste context every single time, and nothing you do today carries into tomorrow. That is fine for a week. It is a cage if you stay.</p>
<blockquote><strong>NOTE:</strong> Level 1 is not bad. It is just the ground floor. The whole point of this post is that the door to Level 2 is one file away.</blockquote>
<p>The next move: stop working in scattered chats and create one real project folder. Anchor it with a CLAUDE.md file that describes your project, your preferences, and your context. That single file is the doorway to Level 2.</p>
<h2>Level 2: A real project with memory</h2>
<p>Level 2 is when Claude Code stops forgetting you. You give it a project folder and a CLAUDE.md, and now it remembers your stack, your conventions, and your goals across every session. You stop re-explaining and start building on top of yesterday.</p>
<p>This is the single biggest quality jump most people feel, and it costs almost nothing. The memory layer is structured, and it is worth understanding properly. I broke the whole thing down in [the memory system in three tiers](/blog/claude-code-memory-system-three-tiers), which is the post I would hand any Level 1 builder who wants to climb fast.</p>
<ul><li>Project context lives in the project, so Claude knows your codebase without a fresh briefing</li><li>Your preferences persist, so it stops suggesting the wrong framework or the wrong tone</li><li>Decisions you made last week are still on the table this week</li><li>You begin to feel like you have a teammate, not a vending machine</li></ul>
<p>How to know you are here: you have at least one CLAUDE.md, and Claude already knows things about your work without you saying them. Nice. You are past the part where most people quit.</p>
<p>The next move: notice the asks you make again and again, like &quot;write a commit message&quot; or &quot;draft a changelog&quot; or &quot;review this file for bugs.&quot; Those repeats are begging to become slash commands. That is Level 3.</p>
<h2>Level 3: Repeatable workflows and slash commands</h2>
<p>Level 3 is where you stop being a prompt artist and start being an operator. The same valuable tasks you do over and over get captured as slash commands and repeatable workflows. Instead of crafting a careful prompt each time, you fire one command and the workflow runs the way it always runs.</p>
<p>This is the level where speed compounds. A task that took five minutes of typing context now takes one command. And because the workflow is fixed, the quality stops swinging around with your mood. If you want to see what a polished operator routine feels like, [how to use Claude Code like a pro](/blog/how-to-use-claude-code-like-a-pro) lays out the habits, and [five workflows that get you paid](/blog/5-claude-code-workflows-that-get-you-paid) shows how people turn those routines into income.</p>
<blockquote><strong>TIP:</strong> Your first slash command should be the boring task you secretly hate. The one you avoid. Automating the chore you dread is what makes the whole system feel like a relief instead of homework.</blockquote>
<p>How to know you are here: you have a handful of slash commands, you run them without thinking, and your output is consistent across days. You are no longer improvising. You are executing.</p>
<p>The next move: so far everything has lived inside the conversation. The leap now is to let Claude reach out and touch a real system, your calendar, your repo, your database, your inbox. That is what MCP unlocks, and it is Level 4.</p>
<h2>Level 4: Tools and MCP wired into real systems</h2>
<p>Level 4 is where Claude Code grows hands. Up to now it could think, write, and edit files. With MCP servers and tools connected, it can act on the actual systems you use, reading and writing to your real apps and data instead of just talking about them.</p>
<p>MCP, the Model Context Protocol, is the standard way to plug those tools in. If the acronym is new, read [what MCP servers are and why they matter](/blog/what-are-mcp-servers-and-why-they-matter) first, because this is the level that turns a smart assistant into an operator that does things in the world.</p>
<ul><li>Connect a repo and Claude can open, edit, and ship code in context</li><li>Connect a database and it can query and update real records</li><li>Connect a project tool and it can move tasks and read status</li><li>Connect an inbox or calendar and it can summarize, draft, and triage</li></ul>
<p>How to know you are here: Claude is no longer just suggesting actions, it is taking them inside tools you actually rely on, with your guardrails in place. This is the level where the work stops being theoretical.</p>
<blockquote><strong>WARNING:</strong> With great hands comes great responsibility. Anything that can write to a real system, spend money, or touch a live database needs guardrails, scoped permissions, and a human check on anything hard to reverse. Wire tools in carefully, not all at once.</blockquote>
<p>The next move: you have one Claude doing real work in real tools. Now split that work across specialists and let some of it run on a schedule. That is the top of the ladder.</p>
<h2>Level 5: Self-running systems with subagents and auto runs</h2>
<p>Level 5 is the one people do not believe is real until they live it. Here Claude Code stops being something you operate session by session and becomes a system that runs itself. Two capabilities make this possible: subagents and autonomous or scheduled runs.</p>
<p>Subagents are a real, documented feature. They let you spin up specialized helpers, each with its own focused job, so a research subagent, a writing subagent, and a review subagent can each do one thing well instead of one overloaded chat doing everything. The official rundown is at https://docs.anthropic.com/en/docs/claude-code/sub-agents and it is worth reading before you build at this level.</p>
<p>The other half is letting Claude Code work without you hovering. Anthropic has shipped features for working more autonomously, including checkpoints so a long run can be reviewed and rewound safely, documented at https://www.anthropic.com/news/enabling-claude-code-to-work-more-autonomously and https://www.anthropic.com/engineering/claude-code-auto-mode. Combine subagents with scheduled runs and you get work that happens while you sleep.</p>
<ul><li>A morning routine that gathers your data and hands you a briefing before you open your laptop</li><li>A research agent that monitors a topic and reports back on a schedule</li><li>A pipeline where one subagent drafts, another reviews, and you only see the finished result</li><li>Recurring chores that simply stop being your problem</li></ul>
<p>How to know you are here: things get done that you did not personally trigger today, and you trust the system enough to let it. This is the level that changes your relationship with work.</p>
<blockquote><strong>WARNING:</strong> Self-running does not mean unsupervised forever. Audit your systems regularly, keep spend caps and scoped permissions on anything that can cost money, and never let an autonomous run touch something hard to reverse without a checkpoint and a human in the loop.</blockquote>
<h2>How to climb without burning out</h2>
<p>Hot take: the reason people stall is not difficulty, it is trying to jump from Level 1 to Level 5 in one weekend. You cannot. Each level is the foundation for the next. Memory makes workflows possible. Workflows make tools worth wiring in. Tools make subagents worth building.</p>
<p>So pick your level honestly from the table at the top, do the single next move, and live there until it feels boring. When the level feels easy, that is your signal to climb. One move at a time is how you go from a first chat to a system that runs your recurring work for you.</p>
<p>If you want company on the climb, this is exactly what we do together inside the [Claude Code Club](https://www.skool.com/claudecodeclub/about). Builders at every level swapping the exact CLAUDE.md files, slash commands, MCP setups, and subagent recipes that got them up the ladder. Come find your level and grab your next move. 🚀</p>
<h2>FAQ</h2>
<p><strong>What are the levels of Claude Code?</strong></p><p>There are five: Level 1 is one-off chats with no memory, Level 2 is a real project with a CLAUDE.md and persistent memory, Level 3 is repeatable workflows and slash commands, Level 4 is tools and MCP wired into real systems, and Level 5 is self-running systems built on subagents and scheduled or autonomous runs.</p>
<p><strong>What level of Claude Code am I at?</strong></p><p>If you re-explain your context every session, you are at Level 1. If you have a CLAUDE.md and Claude remembers your project, you are at Level 2. Slash commands put you at Level 3, connected MCP tools put you at Level 4, and work that runs on its own puts you at Level 5.</p>
<p><strong>How do I get to the next level of Claude Code?</strong></p><p>Each level has exactly one next move. From Level 1, create a project folder with a CLAUDE.md. From Level 2, turn repeated asks into slash commands. From Level 3, wire in one MCP server. From Level 4, add a subagent and schedule one run. Do the single move, then live there until it feels easy.</p>
<p><strong>Do I need to be a coder to reach the higher levels?</strong></p><p>No. Plenty of non-coders run Level 4 and Level 5 setups. The levels are about how you structure your work with Claude Code, not about writing code by hand. Memory, workflows, tools, and subagents are all configured in plain language and config files.</p>
<p><strong>Is it safe to let Claude Code run autonomously at Level 5?</strong></p><p>It can be, with guardrails. Use scoped permissions, keep spend caps on anything that can cost money, and require a human check on actions that are hard to reverse. Anthropic ships checkpoints for exactly this reason, so long autonomous runs can be reviewed and rewound safely.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Use Claude Code Dynamic Workflows (Hands-Off Builds)</title>
      <link>https://www.claudecodeclub.ai/blog/how-to-use-claude-code-dynamic-workflows</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/how-to-use-claude-code-dynamic-workflows</guid>
      <pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Claude Code</category>
      <category>Workflows</category>
      <category>Building</category>
      <description><![CDATA[Claude Code can now write its own harness for a task, fan the work across subagents, and run it in the background while your session stays free. Here is how to turn dynamic workflows on and run your first one today.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Dynamic workflows let Claude Code write a custom script that spawns subagents and runs your build in the background, so one long task no longer ties up your whole session.</li><li>They are a research preview in Claude Code v2.1.154 and up, on every paid plan. You switch them on in /config and trigger them with the keyword ultracode.</li><li>Save the ones that work to .claude/workflows and you have a repeatable command you can rerun, share with your team, or wrap into a paid deliverable.</li></ul>
<h2>Claude Code Dynamic Workflows: What Actually Changed</h2>
<p>Straight up, this is the biggest change to how Claude Code runs a long job since subagents shipped. As of the research preview released the first week of June 2026, Claude Code can write its own harness for a task on the fly - a custom script built for that exact job - instead of grinding through it turn by turn in your main session. Anthropic laid it out in their own writeup, A harness for every task (https://claude.com/blog/a-harness-for-every-task-dynamic-workflows-in-claude-code).</p>
<p>Here is the part that matters for anyone running client work. The default Claude Code harness was built for coding. It is good at a lot of things because a lot of tasks look like coding. But research, security review, large refactors, anything that fans out into dozens of parallel steps - those always wanted a custom harness. Dynamic workflows let Claude build that harness itself, then run it in the background while your session stays open for everything else.</p>
<p>I have spent fifteen years shipping inside teams at Apple, PlayStation and Schwab, and the pattern is always the same: the work that eats your week is the multi-step stuff a junior could run if someone wrote the runbook. This is the runbook, written by Claude, executed by Claude. That is the whole idea.</p>
<blockquote><strong>TIP:</strong> Dynamic workflows are a research preview. They need Claude Code v2.1.154 or later and run on every paid plan, plus the Anthropic API, Amazon Bedrock, Google Cloud Vertex AI and Microsoft Foundry. Run claude --version first and update if you are behind.</blockquote>
<h2>Turn Dynamic Workflows On in Two Minutes</h2>
<p>On a paid plan, open /config and flip the row marked Dynamic workflows. That is the whole setup. On Pro it is off by default, so this one toggle is the gate.</p>
<p>Once it is on, you have two ways to trigger a workflow. The simplest is to just ask: put use a workflow or run a workflow in your prompt and Claude treats it as an opt-in. The deliberate way is the keyword ultracode - type it in your prompt and Claude writes a workflow script for the task instead of working through it live. One version note that will trip you up: before v2.1.160 the trigger word was literally workflow, so if ultracode does nothing, update your CLI.</p>
<p>Want every substantive task in a session to run as a workflow without thinking about it? Set /effort ultracode and Claude plans a harness for each meaningful job automatically. For an agency, that is the setting you leave on during a heavy build day.</p>
<blockquote><strong>WARNING:</strong> If Claude highlights the keyword and you did not mean to start a workflow, press Option+W on macOS or Alt+W on Windows and Linux to dismiss it. You can also turn off the Ultracode keyword trigger in /config so it never fires by accident mid-prompt.</blockquote>
<h2>Run Your First One: /deep-research</h2>
<p>Do not write a workflow from scratch on day one. Claude Code ships with one already built so you can see the shape of the thing. Run /deep-research with a real question and watch what happens: agents work through a set of phases in the background, your session stays free the entire time, and instead of a turn-by-turn transcript you get one cited report at the end.</p>
<p>Open /workflows while it runs. That view is your control panel - you can watch each phase, pause, resume, and save the run. The first time you see several agents fanning out across sources while you keep typing in the same session, the model clicks. This is not a chat that happens to be long. It is a background job with a progress bar.</p>
<table><caption>Turn-by-turn session vs a dynamic workflow</caption><thead><tr><th>What you care about</th><th>Default turn-by-turn</th><th>Dynamic workflow</th></tr></thead><tbody><tr><td>Your session while it runs</td><td>Blocked until the task finishes</td><td>Free - the work runs in the background</td></tr><tr><td>How the work is structured</td><td>One long thread of context</td><td>Phases of subagents coordinated by a script</td></tr><tr><td>What you get at the end</td><td>A scrolling transcript</td><td>One synthesized, cited result</td></tr><tr><td>Repeatability</td><td>Re-prompt from memory each time</td><td>Saved as a command you rerun</td></tr><tr><td>Best fit</td><td>A single focused change</td><td>Research, audits, big multi-file builds</td></tr></tbody></table>
<h2>The Primitives: phase, agent, pipeline, parallel</h2>
<p>Under the hood a workflow is a JavaScript file with a handful of special functions. You do not have to hand-write it - Claude authors it for you - but knowing the four pieces helps you steer the prompt and read what it built.</p>
<ul><li>meta - an export that names the workflow, describes it, and lists its phases.</li><li>phase(&quot;name&quot;) - a marker that segments the progress view, one row per phase in /workflows.</li><li>agent(prompt, options) - launches one subagent. You pass it a label, an output schema, and which phase it belongs to.</li><li>pipeline(items, stage1, stage2, ...) - staged processing that feeds each stage's output into the next.</li><li>parallel([fn, fn, ...]) - runs an array of functions at the same time.</li></ul>
<p>The reason to care: when you lock an agent's output to a JSON schema, the next phase can trust the shape of what it receives. That is what turns a flaky multi-step prompt into something you would put in front of a paying client. The full primitive reference lives in the Claude Code docs (https://code.claude.com/docs/en/workflows).</p>
<h2>Save It, Reuse It, Sell It</h2>
<p>Here is where this stops being a neat demo and starts being margin. Once you get a run you are happy with, open /workflows, select it, and press s to save. Save to .claude/workflows in the repo and your whole team gets it. Save to ~/.claude/workflows and it is yours across every project. Either way you now call it like any command, for example /article-fact-check or /onboarding-audit.</p>
<p>Two more moves worth your time. Pair a workflow with /goal to set a hard completion bar and /loop to rerun it on an interval - that combination is how you get triage and verification that runs without a human babysitting it. And you can ship a workflow inside a skill: drop the JavaScript files in the skill folder and reference them in the SKILL file, which is how you hand a client a repeatable system instead of a one-time result.</p>
<p>That last point is the business case. A one-off run is a service. A saved, shareable workflow is a product. The shops that figure out which of their repeatable jobs - audits, migrations, research briefs - can be frozen into a workflow and sold as a fixed deliverable are the ones who stop trading hours for money. We broke down that pricing shift in our writeup on Claude Code workflows that get you paid (/blog/5-claude-code-workflows-that-get-you-paid), and the logic applies directly here.</p>
<blockquote><strong>TIP:</strong> Start by saving the workflows you already run by hand every week: client onboarding audits, competitor research, release checks. Those are the ones that pay for themselves the first time you rerun them.</blockquote>
<h2>FAQ</h2>
<p><strong>What version of Claude Code do I need for dynamic workflows?</strong></p><p>Claude Code v2.1.154 or later. They are a research preview available on every paid plan, plus the Anthropic API, Amazon Bedrock, Google Cloud Vertex AI and Microsoft Foundry. Run claude --version to check, and note that before v2.1.160 the trigger keyword was workflow rather than ultracode.</p>
<p><strong>How do I turn dynamic workflows on?</strong></p><p>Open /config and enable the Dynamic workflows row. On Pro plans it is off by default, so that toggle is the only setup step. After that, trigger a workflow by asking for one in plain language or by typing the keyword ultracode in your prompt.</p>
<p><strong>Do I have to write the JavaScript myself?</strong></p><p>No. You describe the task and Claude authors the workflow script for you, including the phases and subagents. Knowing the primitives - phase, agent, pipeline, parallel - just helps you write a sharper prompt and read what Claude produced.</p>
<p><strong>What is the difference between a workflow and a subagent?</strong></p><p>A subagent is a single delegated task. A dynamic workflow is the script that spawns and coordinates many subagents across phases, runs in the background, and returns one result. Think of the workflow as the runbook and the subagents as the people running it.</p>
<p><strong>Can I reuse a workflow across projects or share it with my team?</strong></p><p>Yes. In the /workflows view, select a run and press s to save it. Save to .claude/workflows for the whole team in a repo, or ~/.claude/workflows for just you across projects. You can also bundle workflows inside a skill to distribute them.</p>
<p><strong>Is this worth it for client work specifically?</strong></p><p>That is the strongest use case. The repeatable multi-step jobs an agency runs - audits, research, migrations - are exactly what workflows freeze into a single command. Save one, pair it with /goal and /loop, and you can sell a repeatable system as a fixed deliverable instead of billing hours. See more from Duncan on his author page.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Connect Claude Code to n8n with MCP</title>
      <link>https://www.claudecodeclub.ai/blog/how-to-connect-claude-code-to-n8n-with-mcp</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/how-to-connect-claude-code-to-n8n-with-mcp</guid>
      <pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>MCP</category>
      <category>Automation</category>
      <category>Building</category>
      <description><![CDATA[Wire the n8n MCP server into Claude Code and it can read all 1,851 n8n nodes, build the workflow for you, and deploy it straight to your instance. Here is the full setup, start to finish.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>The n8n MCP server gives Claude Code deep knowledge of all 1,851 n8n nodes, so it stops guessing at automations and starts building ones that actually run.</li><li>Fastest path: add it with npx, no install. Add your n8n API key and Claude Code can create, validate and deploy workflows straight into your instance.</li><li>Best first builds are the boring money-makers: outreach, reporting, lead reactivation. Each one is a billable deliverable once it works.</li></ul>
<h2>How to Connect Claude Code to n8n with MCP: The Short Version</h2>
<p>Real talk - the reason most people's n8n automations break is that the AI building them is guessing. It half-remembers what a node does, wires the wrong field, and you spend an hour fixing the thing that was supposed to save you an hour. The n8n MCP server kills that problem. It hands Claude Code real, structured knowledge of n8n's 1,851 nodes (822 core plus 1,029 community), so it builds from the actual node docs instead of vibes. 🎯</p>
<p>The project is czlonkowski/n8n-mcp on GitHub, sitting north of 20,000 stars (https://github.com/czlonkowski/n8n-mcp). It is a Model Context Protocol server, which is the open standard Claude Code uses to reach outside tools. If you have never set one up, start with our explainer on what MCP servers are and why they matter (/blog/what-are-mcp-servers-and-why-they-matter), then come back here and wire your first real one.</p>
<p>Two levels to this. Without an n8n API key, Claude Code gets the documentation and validation tools - it can look up any node and check a workflow before you paste it in. Add your n8n API URL and key and it gets the management tools too - it can create, update, test and deploy workflows directly into your instance. We will set up both.</p>
<blockquote><strong>TIP:</strong> You do not need to self-host to try this. The npx method runs the server on demand with nothing to install. Get it working there first, then decide if you want a Docker or local setup later.</blockquote>
<h2>Install the n8n MCP Server</h2>
<p>The fastest way to try it is npx - no install, no clone. You point Claude Code at the package and it pulls and runs the server the first time you use it. If you would rather self-host, the repo documents Docker, Railway and a local build (git clone, npm install, npm run build, npm run rebuild, npm start), but do not start there. Start with npx and earn the complexity later.</p>
<p>For the documentation-only tier you need nothing but Node installed. For the full tier, grab two things from your n8n instance: your API URL (looks like https://your-instance.app.n8n.cloud) and an API key from Settings, n8n API. Keep them handy - they go into the MCP server's environment as N8N_API_URL and N8N_API_KEY.</p>
<blockquote><strong>WARNING:</strong> Treat your n8n API key like a password. It can create and run workflows on your instance, which means it can touch every credential those workflows use. Never paste it into a chat, and scope it down if your n8n version lets you.</blockquote>
<h2>Wire It Into Claude Code</h2>
<p>From your terminal, register the server with the Claude Code MCP command. The documentation-only setup is one line pointing at the npx package. For full access you pass the same command plus the two environment variables. Here is the order that works:</p>
<ol><li>Run claude mcp add to register the n8n MCP server, pointing at the npx package.</li><li>For full access, add N8N_API_URL and N8N_API_KEY as environment variables on that server.</li><li>Restart Claude Code and run /mcp to confirm the n8n server shows as connected.</li><li>Ask Claude to list a few n8n nodes - if it answers with real node names and fields, the docs layer is live.</li></ol>
<p>That /mcp check is the step people skip and then wonder why nothing works. If the server is not listed, it is almost always a Node version issue or a typo in the package name. Fix that before you try to build anything.</p>
<h2>Docs-Only vs Full API Mode</h2>
<table><caption>What you get with and without an n8n API key</caption><thead><tr><th>Capability</th><th>Docs only</th><th>Full API mode</th></tr></thead><tbody><tr><td>Look up any of the 1,851 nodes</td><td>Yes</td><td>Yes</td></tr><tr><td>Validate a workflow before you run it</td><td>Yes</td><td>Yes</td></tr><tr><td>Create a workflow in your instance</td><td>No</td><td>Yes - n8n_create_workflow</td></tr><tr><td>Make targeted edits to a live workflow</td><td>No</td><td>Yes - n8n_update_partial_workflow</td></tr><tr><td>Run a workflow to test it</td><td>No</td><td>Yes - n8n_test_workflow</td></tr></tbody></table>
<h2>Have Claude Code Build the Workflow</h2>
<p>Now the fun part. With full mode on, you describe the automation in plain English and Claude Code does the build loop itself. The tools it reaches for are n8n_create_workflow to deploy, n8n_validate_workflow to check the result, n8n_update_partial_workflow to make targeted edits without rewriting the whole thing, and n8n_test_workflow to run it.</p>
<p>The rhythm that works is the same one that works for any Claude Code build: one tight slice at a time. Do not ask for a full CRM sync with enrichment and Slack alerts in one prompt. Ask for the trigger and one action, watch it validate, then add the next node. Because Claude is reading the real node properties through MCP, the validation step actually catches the field mismatches before they hit your instance. ⚡</p>
<p>Quick example of the payoff. A daily outreach workflow - pull five rows from a Google Sheet, research each contact, draft a personalized email, log the result - is the kind of thing that used to take a careful afternoon of clicking through n8n's UI. With the MCP server wired in, you describe it, Claude builds and validates it node by node, and you are testing a live version inside an hour. That is the whole difference. No cap.</p>
<h2>What to Build First (and Bill For)</h2>
<p>Do not start with the flashy agent demo. Start with the boring workflows businesses actually pay for, because those are the ones with an obvious dollar value attached:</p>
<ul><li>Lead reactivation - re-engage a database of old leads on a schedule. The revenue is already paid for; you are just collecting it.</li><li>Internal reporting - pull numbers from a few tools each morning and drop one clean summary in Slack. Fixes the visibility gap that slows every decision.</li><li>Outreach and research - the daily five-rows-at-a-time system above, personalized and logged.</li></ul>
<p>Each of those is a fixed-scope deliverable, not an hourly grind. Build it once with Claude Code and the n8n MCP server, validate it, hand it over. If you are turning this into client work, the pricing logic matters as much as the build - we walked through exactly how to charge for it in our guide on Claude Code workflows that get you paid (/blog/5-claude-code-workflows-that-get-you-paid), and you can see more of what I am building on my author page (/author/david-iya). 💎</p>
<p>The bigger point: connecting Claude Code to n8n is the moment the tool stops being a code assistant and starts being an automation engineer that lives in your real stack. Wire it up this week, build one boring workflow, and ship it. 🔥</p>
<h2>FAQ</h2>
<p><strong>What is the n8n MCP server?</strong></p><p>It is a Model Context Protocol server, czlonkowski/n8n-mcp on GitHub, that gives Claude Code structured access to all 1,851 n8n nodes - 822 core and 1,029 community. With it connected, Claude builds n8n workflows from the real node documentation instead of guessing at fields and operations.</p>
<p><strong>Do I need an n8n API key to use it?</strong></p><p>Not for the basics. Without a key you get the documentation and validation tools, so Claude can look up nodes and check a workflow. Add your N8N_API_URL and N8N_API_KEY and Claude can also create, update, test and deploy workflows straight into your instance.</p>
<p><strong>What is the fastest way to install it?</strong></p><p>The npx method - no clone, no install. You register the package as an MCP server in Claude Code and it runs on demand. Docker, Railway and a local build are documented in the repo if you want to self-host later, but npx is the right starting point.</p>
<p><strong>How do I confirm it connected?</strong></p><p>Restart Claude Code and run /mcp. The n8n server should show as connected. Then ask Claude to list a few n8n nodes - if it returns real node names and fields, the documentation layer is working. If the server is missing, it is usually a Node version problem or a typo in the package name.</p>
<p><strong>Is it safe to give Claude Code my n8n API key?</strong></p><p>Treat it like a password. The key lets the server create and run workflows on your instance, which means access to the credentials those workflows use. Never paste it into a chat, set it only as an environment variable on the MCP server, and scope it down if your n8n version supports limited keys.</p>
<p><strong>What should I build first?</strong></p><p>Start with a boring, high-value workflow rather than a flashy agent: lead reactivation, internal reporting, or daily outreach. Each one has a clear dollar value and makes a clean fixed-scope deliverable. Build it one node at a time and validate as you go.</p>]]></content:encoded>
    </item>
    <item>
      <title>The 3-Tier Claude Code Memory System That Stops the Amnesia</title>
      <link>https://www.claudecodeclub.ai/blog/claude-code-memory-system-three-tiers</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/claude-code-memory-system-three-tiers</guid>
      <pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Workflows</category>
      <category>Building</category>
      <description><![CDATA[Your Claude Code sessions keep forgetting what you're building because you only set up one layer of memory. There are three. Here's the stack the shippers are running this month - and how to install it in a weekend.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>If Claude Code keeps &quot;forgetting&quot; what you're building, you're running one layer of memory when you need three.</li><li>Tier 1 is who you are, Tier 2 is what you're shipping right now, Tier 3 is everything that's happened before - each one lives in a different place and feeds every prompt silently.</li><li>You can install the full stack in a weekend, and once it's in, every fresh chat opens with the same context as your best session.</li></ul>
<h2>The Claude Code Memory System: Why Your Sessions Keep Going Blank</h2>
<p>Real talk - if Claude Code keeps &quot;forgetting&quot; what you're building, the problem isn't Claude. It's you. You're running one layer of memory when the shippers in this community are running three. The pattern shook out the same way across enough of the CCC Crew this year that I'm calling it: this is the meta. So this is the post on what that three-tier stack actually is, why a single CLAUDE.md isn't enough, and how to install the whole thing this weekend.</p>
<p>Quick story. My first six months on Claude Code, every new session started the same way - me re-explaining what the project was, who it was for, what stack I'd already picked, what we'd already decided not to do. Twenty minutes of context-loading before I wrote a single useful prompt. Multiply that by four sessions a day and that's eighty minutes a day on memory tax. Over a month that's almost twenty hours - one full week of work, gone to amnesia. No cap, this is the actual reason most people feel &quot;slow&quot; with Claude Code. The model isn't slow. The setup is.</p>
<table><caption>The three tiers - what each one is, where it lives, when it gets refreshed</caption><thead><tr><th>Tier</th><th>Question it answers</th><th>Where it lives</th><th>How often it changes</th></tr></thead><tbody><tr><td>Tier 1 - Short-term</td><td>Who am I?</td><td>Global CLAUDE.md / Claude desktop instructions</td><td>Once a quarter at most</td></tr><tr><td>Tier 2 - Mid-term</td><td>What am I shipping right now?</td><td>Per-project folder with its own CLAUDE.md</td><td>Every week, on the active projects</td></tr><tr><td>Tier 3 - Long-term</td><td>What happened before?</td><td>Obsidian vault or a Pinecone index</td><td>Appended to at the end of every session</td></tr></tbody></table>
<blockquote><strong>TIP:</strong> Read the three tiers as a stack, not a menu. You don't pick one - you install all three, in order, smallest first. Tier 1 takes twenty minutes. Tier 2 takes a Saturday. Tier 3 takes a Sunday afternoon. By Monday you have a brain.</blockquote>
<h2>Tier 1 - Who Am I (The 20-Minute Setup You'll Never Touch Again)</h2>
<p>Tier 1 is the part most people already half-do and then never finish. It's the answer to one question: who am I? Your name, your role, the tools you actually use, the way you want answers framed, the things you've already decided are non-negotiable. The stuff that doesn't change every week but defines every single reply. It belongs in the global instructions slot - in Claude desktop that's the personalization panel, in Claude Code that's a root CLAUDE.md you copy into every project.</p>
<p>Mine reads like this, almost verbatim: &quot;I'm David. I build with Claude Code, Next.js, Tailwind, and Vercel. I ship small things weekly. Default to the simplest version that solves the problem. Skip the disclaimer paragraphs. If you're unsure between two approaches, name both and pick one - don't ask me to choose. No em dashes in copy.&quot; Six lines. Under 200 words. And every fresh chat opens with that context baked in.</p>
<p>The trap here is treating Tier 1 like a wishlist. Don't. The shorter and more specific it is, the harder it lands on every reply. If you find yourself writing paragraphs about your goals or your bio, you're doing Tier 2's job. Tier 1 is the tone, the stack, the non-negotiables. Twenty minutes one time. You'll edit it twice a year, max.</p>
<h2>Tier 2 - What Am I Shipping (One CLAUDE.md Per Active Project)</h2>
<p>Tier 2 is where most builders quietly lose the game. This is the mid-term memory - the thing you're working on right now, this week, with these stakes. It changes. It needs to change. And it can't live in the global instructions because then it pollutes every other project you touch.</p>
<p>The move is simple: every active project gets its own folder with its own CLAUDE.md at the root. Not five paragraphs - one tight brief. What the project is, who uses it, the stack you've picked, the decisions already made (so Claude doesn't relitigate them), and what &quot;done&quot; looks like for this version. The first time I did this on my landing-page generator, my session-one productivity tripled. Same model, same me. Different briefing.</p>
<p>Cap yourself at six or seven active projects. That's the real ceiling, even if you think you can run more. Anything past seven and you stop opening the folder before you prompt, which means Tier 2 stops loading, which means you're back to the amnesia tax. If you've got eight things on your plate, you don't have a memory problem - you have a priority problem. Pick six and ship.</p>
<blockquote><strong>WARNING:</strong> Don't paste your Tier 1 into every Tier 2 file. Tier 1 already loads from the global slot. Duplicating it everywhere is how you end up with seven slightly-different versions and Claude blending them on bad days.</blockquote>
<h2>Tier 3 - What Happened Before (Where the Real Compounding Lives)</h2>
<p>Tier 3 is where the 10x actually shows up. This is the long-term archive: every meaningful session, every decision, every chunk of expert knowledge you've ever fed to Claude. It lives outside any single project, and the trick is that every prompt - in any chat - can reach back into it.</p>
<p>There are two flavors and they both work. Flavor one is a notebook-style vault - markdown files in folders, cross-linked, read like a wiki. You edit it by hand and ask Claude to consult it on the way into a session. Flavor two is a vector index - a real searchable store you push session wrap-ups into and query by meaning, not folder. The vault wins if you like reading your own notes. The index wins if you've got thousands of sessions and want semantic search across all of them. Pick one and commit. The wrong move is running both half-way.</p>
<p>The skill that makes Tier 3 actually work is the wrap-up - a one-prompt habit at the end of every session that asks Claude to summarize what got built, what got decided, and what's queued for next time, then dumps that summary into your vault or your index. Five minutes. Compounds for years. Skip it and Tier 3 is just storage. Run it and Tier 3 becomes the brain.</p>
<h2>The Weekend Install Plan</h2>
<p>If you sit down Saturday morning and follow this in order, you'll have all three tiers running by Sunday night. The order matters - skip ahead and you'll be debugging the wrong thing.</p>
<ol><li>Saturday morning, 20 minutes. Write Tier 1. Under 200 words. Paste it into Claude desktop's instructions slot AND save it as a global CLAUDE.md you'll drop into every new project.</li><li>Saturday afternoon, 90 minutes. List the projects you're actually working on right now. Cap at seven. For each one, create a folder and a CLAUDE.md - one paragraph each on the project, the user, the stack, the decisions already made.</li><li>Sunday morning, 60 minutes. Pick Obsidian or Pinecone. Set up the empty vault or the empty index. Don't load it with old chats yet - just get the plumbing live.</li><li>Sunday afternoon, 30 minutes. Write the wrap-up prompt. Save it as a Claude Code skill you can call with one slash command. Run it at the end of every session from now on.</li><li>Sunday evening, 30 minutes. Open a fresh chat. Ask it a hard question about one of your projects. Notice how it lands - the first time you feel the three tiers loading together, you'll understand why this is the meta.</li></ol>
<p>That's the whole install. Five blocks of work, under four hours total. By Monday morning your first session opens with the full stack already in its head, and you spend the first hour of the day building instead of re-explaining. Multiply that by five days a week and the math is loud.</p>
<h2>The One Habit That Decides Whether the Stack Sticks</h2>
<p>Here's the part nobody talks about. The three-tier stack only works if you run the wrap-up at the end of every meaningful session. That's the load-bearing habit. Skip the wrap-up for two weeks and Tier 3 quietly turns into dead storage - the index stops growing, the vault stops getting backlinks, and the next fresh chat opens just as blank as before you started.</p>
<p>So if you only install one thing this weekend, install the wrap-up. Save it as a one-line slash command. Run it the second you finish a session, while the context is still hot. Two minutes of writing the summary saves twenty minutes of re-establishing it tomorrow. That single ratio is the whole reason this stack works.</p>
<p>Install the three tiers this weekend, run the wrap-up at the end of every session this week, and your shipping rate next month won't look like the same person's. That's the whole play. Drop your setup in the community and tag me - I want to see what you've got running by Friday.</p>
<h2>FAQ</h2>
<p><strong>What is a Claude Code memory system?</strong></p><p>It's a three-tier stack that gives Claude Code persistent context across sessions. Tier 1 is your global identity and preferences, Tier 2 is the active project you're building right now, and Tier 3 is the long-term archive of every session, decision, and chunk of expert knowledge. Together they feed every prompt silently, so Claude stops &quot;forgetting&quot; what you're working on.</p>
<p><strong>Why does Claude Code seem to forget what I'm building?</strong></p><p>Because most builders only set up one layer of memory - usually a single CLAUDE.md - and assume that's enough. It isn't. Without a global identity file, a per-project brief, and a long-term archive, every new chat opens blank and you end up re-explaining the project for the first twenty minutes of every session. The three-tier stack fixes that.</p>
<p><strong>Do I need Pinecone or can I just use Obsidian for Tier 3?</strong></p><p>Either works. Obsidian wins if you like reading your own notes by hand and want a visual graph of how ideas connect. Pinecone wins if you've got hundreds of sessions and want semantic search across all of them. The wrong move is running both half-way. Pick one and commit to filling it.</p>
<p><strong>How long does it take to install the full three-tier system?</strong></p><p>About a weekend if you follow the install plan in this post. Tier 1 is twenty minutes. Tier 2 is a Saturday afternoon. Tier 3 is a Sunday afternoon. The whole stack is live by Monday morning. The part that takes the rest of your career is running the end-of-session wrap-up - that's the habit that keeps Tier 3 alive.</p>
<p><strong>What's the single most important habit if I can only do one thing this week?</strong></p><p>Write the wrap-up prompt and run it at the end of every Claude Code session. The wrap-up is what turns Tier 3 from empty storage into a real brain that compounds week over week. Even without Tier 1 or Tier 2 fully built out, a religious wrap-up habit gets you most of the way there on its own.</p>
<p><strong>How does this fit with the rest of the Claude Code Club workflow?</strong></p><p>The three-tier memory stack sits underneath every other habit in the club - shipping the ugly version on day one, slice-based building, the morning plan. All of them get sharper when Claude opens every session with the full context already loaded. There's more on the daily workflow side over on the Claude Code Club blog under the Workflows tag.</p>]]></content:encoded>
    </item>
    <item>
      <title>Memory Engineering Is the New $5K Retainer for Claude Code Shops</title>
      <link>https://www.claudecodeclub.ai/blog/selling-claude-code-memory-engineering-retainer</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/selling-claude-code-memory-engineering-retainer</guid>
      <pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Monetization</category>
      <category>Freelancing</category>
      <category>Workflows</category>
      <description><![CDATA[Every business running Claude Code is bleeding context. They don't know it's a problem yet. The shops that show up with a productized memory-engineering deliverable are about to spend twelve months printing $5K retainers. Here's how I'm pricing it.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Every team running Claude Code is bleeding context across sessions - and almost none of them have named the problem yet. That's the opening.</li><li>Memory engineering productized as a three-tier install (global instructions, per-project briefs, long-term archive) is a clean $5K-a-month retainer.</li><li>Sell the outcome, not the wiki. Price against the hours the client's team is currently burning re-loading context, not the hours it takes you to ship.</li></ul>
<h2>Claude Code Memory Engineering: The Retainer Hiding in Plain Sight</h2>
<p>Straight up - every team running Claude Code at any kind of scale is bleeding context, and almost none of them have named it as a problem yet. Their devs re-explain the codebase to Claude every morning. Their ops people reset the same prompt every Monday. Their founders open a new chat every afternoon and start from zero. They don't see it as a hole because nobody on the inside is measuring it. That gap is the cleanest agency offer of the next twelve months, and the shops that show up with a productized fix are about to print retainers.</p>
<p>The fix is a three-tier memory stack - global instructions, per-project briefs, long-term archive - but the version you sell isn't the version a builder installs for themselves on a Saturday. The agency version is documented, locked to the client's stack, tied to their actual workflows, and maintained on a recurring engagement. That distance between &quot;a builder could do this in a weekend&quot; and &quot;a business needs someone who actually does it on a Friday&quot; is the whole arbitrage. Same install. Completely different conversation.</p>
<p>I spent eight years inside Apple, PlayStation, and Schwab. The pattern I watched on every team there was the same: the moment a tool became business-critical, nobody on the team had time to set it up properly. They needed an external pair of hands to design the system, document the rules, and own the maintenance loop. Claude Code just hit that point. Memory engineering is the install layer. Charge accordingly.</p>
<h2>What You're Actually Selling (Hint: Not the Wiki)</h2>
<p>First move on any pricing conversation is to translate the technology back into language the client already speaks. Don't sell a &quot;three-tier memory system.&quot; Sell &quot;a documented context layer that stops your team losing forty minutes a day re-loading Claude.&quot; Don't sell &quot;an Obsidian vault.&quot; Sell &quot;a searchable institutional memory for every Claude session your team has ever run.&quot; The client buys the outcome. The wiki is the invisible infrastructure underneath it.</p>
<p>Here's a concrete shape. I scoped one of these for an e-commerce client last week. On paper it's a global CLAUDE.md, six project briefs, an Obsidian vault, and a session wrap-up skill - maybe a week of focused work. On the invoice it's &quot;Claude Code Context Engineering Engagement,&quot; priced at a $4,800 setup plus a $2,400-a-month retainer for ongoing maintenance. Same code, same install. Different framing. The work isn't the system. The work is naming the leak the client already feels and pricing the patch like infrastructure.</p>
<blockquote><strong>TIP:</strong> If a client asks what they're really paying for, the honest answer is &quot;a system that stops your team from re-explaining the company to Claude every single morning.&quot; Lead with the outcome on every line of the SOW. The mechanism stays in the appendix.</blockquote>
<h2>The Three-Tier Deliverable You Can Productize This Week</h2>
<p>The agency version of the three-tier stack is the part where you turn a builder's weekend project into a repeatable engagement. Same architecture, productized so you can sell it to ten clients with light tweaks instead of bespoking it every time.</p>
<table><caption>The three productized tiers and what each one actually delivers to the client</caption><thead><tr><th>Tier</th><th>Deliverable</th><th>Why the client buys it</th></tr></thead><tbody><tr><td>Tier 1 - Identity layer</td><td>A documented global CLAUDE.md tuned to the client's stack, tone, decisions, and non-negotiables</td><td>Their team stops getting wildly different answers depending on who opened the chat</td></tr><tr><td>Tier 2 - Project layer</td><td>One CLAUDE.md per active project, with the stack, the decisions already made, and the definition of done locked in</td><td>New hires and contractors hit the ground running instead of spending a week loading context</td></tr><tr><td>Tier 3 - Archive layer</td><td>An Obsidian vault or Pinecone index plus a session wrap-up skill the team runs at the end of every meaningful chat</td><td>Institutional memory that doesn't walk out the door when a contractor finishes the engagement</td></tr></tbody></table>
<p>The thing that makes this productizable is that the architecture is identical across every client - only the contents change. So your second engagement takes half the time. Your fifth takes a third. By the tenth you've built a template, a discovery checklist, and a one-page SOW that closes itself. That's a real business, not a project.</p>
<h2>Pricing the Engagement (Anchor on the Replaced Cost)</h2>
<p>The single most useful number in this pricing conversation isn't your cost - it's the client's. Specifically, how many hours a week is the team currently burning re-loading Claude's context? Take a rough guess on the call: a five-person team averaging twenty minutes a day of context tax is over eight hours a week of lost engineering time. At a $120 internal blended rate, that's $1,000 a week leaking out of the dev budget. A $2,400-a-month retainer that closes the leak is a 40% return inside the first month.</p>
<p>Once the replaced cost is on the table, the pricing shape almost picks itself. A typical engagement runs as a fixed setup plus a recurring retainer, with the retainer doing the heavy lifting on lifetime value. The shape I'm running this quarter:</p>
<ul><li>Setup engagement - $3,500 to $6,500 depending on team size and how many active projects need a Tier 2 brief. Three weeks of work. Locks the architecture.</li><li>Ongoing retainer - $1,500 to $5,000 per month. Covers monthly Tier 2 refreshes, Tier 3 maintenance, new project onboarding, and one round of system updates per quarter.</li><li>Productized add-ons - $800 to $2,400 each. New project brief, custom wrap-up skill, team training session, vault audit. Sold as line items, not hours.</li></ul>
<p>The trap most new shops fall into is hourly. Don't. Memory engineering is infrastructure - it gets faster to install every quarter as your templates mature, and the client doesn't care how long it took. Price it on the outcome. The same engagement that takes you six hours next year took you three days last year. Your invoice should not shrink because you got better.</p>
<h2>The Scope-of-Work That Locks the Engagement In</h2>
<p>Memory engineering without a tight SOW is the fastest way to bleed margin on this kind of engagement. The work feels small from the outside - &quot;it's just markdown files&quot; - so every &quot;can you also add this one project&quot; is unbilled work the client genuinely thinks is included. The SOW shuts that down before it starts.</p>
<p>The shape that works for engagements under $8K: one paragraph naming the outcome (&quot;reduce context-loading time across the team and produce a maintained Claude Code memory system&quot;), a bulleted list of exactly what's included (one Tier 1 file, up to six Tier 2 files, one Tier 3 vault or index, one wrap-up skill, one team training call), a bulleted list of what's explicitly NOT included (additional Tier 2 briefs beyond six, integration with non-Claude tools, custom MCP server development), a three-week timeline, and 50% up front. One page. Sent before any work starts. Signed before you write a single prompt.</p>
<p>The exclusions list is the load-bearing part. Most scope creep on this kind of engagement happens because the client says &quot;can we also do the marketing project?&quot; and you say sure because it's an hour of work. That hour becomes ten across the engagement. Put a number on extra briefs in the SOW - $800 per additional Tier 2 project - and the conversation flips from a favor to a productized add-on the client expects to pay for.</p>
<h2>The Traps Most New Shops Will Fall Into</h2>
<p>Four mistakes are going to kill more memory-engineering engagements than anything else this year. They're all preventable with a single decision up front.</p>
<ol><li>Selling the wiki. The deliverable is the outcome - context loaded silently into every session. The wiki is the implementation detail. Lead with the wiki and the client thinks they're paying for markdown files.</li><li>One-time pricing. The setup is where most new shops stop. Don't. The retainer is the engagement. The setup exists to make the retainer obvious. Quote them together or you've left 70% of the lifetime value on the table.</li><li>Skipping the training. If the team doesn't know how to run the wrap-up skill or update the Tier 2 brief, the system dies in week three and they blame your work for it. Bundle a one-hour team training in every engagement and put it in the SOW.</li><li>Hourly anything. The whole arbitrage on this work is that the architecture is reusable and your templates compound. Hourly billing throws all of that compounding into the client's column instead of yours. Price the outcome, every time.</li></ol>
<p>Run the setup-plus-retainer shape with a one-page SOW and a productized add-on menu and the first three engagements pay for the template that closes the next ten. That's the real arbitrage. Not the install - the second time you do it. For more on the agency side of building with Claude Code, the rest of the playbook lives under the Monetization tag on the Claude Code Club blog and on the Duncan author page. Ship the first engagement this month.</p>
<h2>FAQ</h2>
<p><strong>What is Claude Code memory engineering?</strong></p><p>It's the discipline of designing and installing the three-tier context system a team needs to stop re-loading Claude Code every session. Tier 1 is global identity, Tier 2 is per-project briefs, Tier 3 is a long-term archive plus a wrap-up habit. As a productized deliverable, the agency version is documented, tuned to the client's stack, and maintained on a recurring engagement.</p>
<p><strong>How much should I charge for a Claude Code memory engineering engagement?</strong></p><p>Setup engagements typically run $3,500 to $6,500 depending on team size and active project count. The recurring retainer sits between $1,500 and $5,000 a month. The exact number is anchored on the client's replaced cost - the engineering hours their team is currently losing to context re-loading - not on how long it takes you to install the system.</p>
<p><strong>Why not charge hourly for this kind of work?</strong></p><p>Because your templates compound. The fifth engagement takes a third the time of the first one. Hourly pricing means your invoices shrink as you get better, which is the wrong direction for a business. Price the outcome - the documented memory system plus its ongoing maintenance - and the speed gains stay in your column.</p>
<p><strong>What goes in the retainer versus the setup?</strong></p><p>Setup covers the initial install: one Tier 1 file, up to six Tier 2 briefs, a Tier 3 vault or index, and the team training. The retainer covers monthly Tier 2 refreshes on active projects, Tier 3 maintenance (vault grooming or index pruning), new project onboarding, and one round of system updates per quarter. Additional projects beyond the included six are priced as productized add-ons.</p>
<p><strong>What's the single biggest mistake new shops make with this offer?</strong></p><p>Selling the wiki instead of the outcome. The deliverable the client is actually buying is &quot;context loaded silently into every session&quot; - the markdown files are the invisible infrastructure underneath that outcome. Leading the SOW with the wiki turns the conversation into a markdown-files line item. Leading with the time the team gets back turns it into infrastructure.</p>
<p><strong>How long does a full Claude Code memory engineering engagement take to deliver?</strong></p><p>About three weeks for the setup if the client has six or fewer active projects. The first week is discovery and Tier 1 design. The second is the Tier 2 briefs. The third is the Tier 3 install plus the training call. The retainer kicks in from week four and runs indefinitely until the client cancels - in practice, most engagements run twelve months or longer because the maintenance only stays valuable as long as it's actually being maintained.</p>]]></content:encoded>
    </item>
    <item>
      <title>Anthropic Is Now the Most Valuable Company in the World - What That Means for Builders</title>
      <link>https://www.claudecodeclub.ai/blog/anthropic-most-valuable-company-builders</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/anthropic-most-valuable-company-builders</guid>
      <pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Building</category>
      <category>Workflows</category>
      <description><![CDATA[The headlines led with the valuation. The part that actually matters: the model sitting under your Claude Code session is about to get longer, cheaper, and faster shipped. Here's what the milestone unlocks for builders, and the habit stack to install this week so you ride it.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Anthropic crossed every other company in the world this week, and the headlines focused on the number. The interesting part is what it unlocks for builders sitting at Claude Code on a Tuesday.</li><li>The capital pours into three things that hit your daily session - longer context, cheaper tokens, and a faster shipping cadence on Claude Code itself.</li><li>The move now isn't to celebrate. It's to install the habits that turn a better model into more shipped product. Specifics inside.</li></ul>
<h2>Anthropic Most Valuable Company - The Headline in Plain English</h2>
<p>Real talk - the headlines this week have all led with the valuation. Anthropic is now the most valuable company in the world, and every business outlet on the internet has run some version of the same chart with an arrow pointing up. Cool, fine, the number is the number. The reason it matters to anyone sitting at Claude Code on a Tuesday is not the chart. It's what the chart unlocks underneath your keyboard.</p>
<p>Valuations are downstream of conviction. A market this size has decided that the company building the model you're already using is the single best bet on what software gets built next. That conviction is about to print in three places you'll feel every day - more context per session, less money per token, and a faster shipping cadence on Claude Code itself. The rest of this post is what to do about that.</p>
<blockquote><strong>TIP:</strong> Read the milestone less as news and more as a forward signal. The next twelve months of Claude Code are going to look different from the last twelve, and the builders who adjust their habits early will pull away from the ones still running 2025-shaped workflows.</blockquote>
<h2>What the Capital Actually Buys (Three Things That Hit Your Session)</h2>
<p>Strip out the press-release language and the capital lands in three places that matter to a builder. None of them are flashy on Twitter. All three of them compound on your shipping rate.</p>
<table><caption>Where the money goes, and how it shows up in your Claude Code week</caption><thead><tr><th>Where the capital lands</th><th>What it changes for you</th><th>Window to feel it</th></tr></thead><tbody><tr><td>Longer context windows</td><td>Whole codebases in one prompt, less stitching, more end-to-end edits</td><td>Already shipping in waves</td></tr><tr><td>Lower per-token pricing</td><td>You stop self-censoring on long prompts and let Claude read the full context every time</td><td>Quarterly cuts, compounding</td></tr><tr><td>Faster Claude Code release cadence</td><td>New skills, slash commands, and MCP partners landing weekly instead of monthly</td><td>Visible inside 90 days</td></tr></tbody></table>
<p>The one that surprised me most when I sat with it - the pricing line. Most builders I talk to are still pruning prompts to save tokens like it's 2024. That habit is about to be the wrong habit. When the per-token cost falls, the move is to feed Claude the full picture every time - the whole repo, the whole brief, the whole memory wrap-up - and let it work with what it has. Builders who keep self-censoring will keep getting half-context answers from a model that could have given them the full thing.</p>
<h2>The Other Updates That Got Buried Under the Valuation Headline</h2>
<p>The valuation ate every other story this week, which is a shame because three other things landed that matter more to a builder. Quick rundown of what to keep on your radar.</p>
<ul><li>The Claude Code release cadence visibly tightened. Skills, slash commands, and MCP integrations are landing on a weekly drumbeat now, not the old monthly one.</li><li>The MCP partner list keeps growing. Every week another tool you already use ships an official MCP server, which means you stop writing glue code and start calling the integration directly.</li><li>Sonnet and Haiku tier separation got sharper. The play now is to route the cheap, fast work to Haiku and the deep reasoning to Sonnet inside the same workflow, and Claude Code is making the routing easier session by session.</li><li>Claude SDK support for multi-agent orchestration deepened. The pattern of one planner agent dispatching to specialist sub-agents is becoming the default, not the advanced move.</li></ul>
<blockquote><strong>NOTE:</strong> If you're only reading mainstream coverage this week, you'll see the number and miss the shipping. Sign up for the Claude Code changelog if you haven't yet. The weekly diff is where the actual signal lives.</blockquote>
<h2>What This Doesn't Change For Builders</h2>
<p>Here's the part I have to be honest about. A more capable model doesn't make you a more capable builder. The valuation doesn't fix your briefs, doesn't fill your Tier 2 CLAUDE.md, doesn't write your end-of-session wrap-up. If your workflow was leaking last month, it'll leak harder when the model gets faster, because more output produced badly is just more bad output shipped faster.</p>
<p>The fundamentals don't move. You still ship the ugly version on day one. You still install the three-tier memory stack. You still run the wrap-up at the end of every session. You still pick six active projects and put a CLAUDE.md in each one. None of that is going out of style because Anthropic crossed the valuation line. If anything, those habits compound harder now, because the model under them is sharper.</p>
<h2>The Habit Stack to Install This Week</h2>
<p>If you want to actually ride this wave instead of read about it, here's the install plan I'd run this week. None of it takes more than an evening. All of it pays back inside a month.</p>
<ol><li>Subscribe to the Claude Code changelog and block 10 minutes every Monday morning to read the diff. That's how you spot new slash commands and MCP partners before everyone else does.</li><li>Stop pruning your prompts to save tokens. Start every session with the full Tier 1, Tier 2, and recent Tier 3 wrap-up pasted in. Trust the long context.</li><li>Audit your MCP servers this Sunday. Anything you wrote glue code for in 2025 probably has an official MCP server now. Swap to the official one and delete the glue.</li><li>Pick one workflow you currently run in a single chat and split it into a planner-plus-specialist setup. Claude SDK or Claude Code skills, doesn't matter. Feel the difference in one week.</li><li>Re-read your Tier 2 CLAUDE.md files for your active projects. If you wrote them three months ago, they're already stale. Sharper briefs into a sharper model is how the multiplier shows up.</li></ol>
<h2>What I'm Watching For Next</h2>
<p>Two things I'm watching from here. First, how fast the rest of the dev tools ecosystem responds. Editors, CI, deploy platforms, error trackers - the ones that ship MCP servers in the next ninety days are the ones that survive the realignment. The ones that don't are quietly going to feel old. Second, how Claude Code's orchestration story matures. We're already past the point where one chat is the unit of work. The next unit is a fleet of specialist agents running on a plan you wrote on Monday, and the platform that makes that loop frictionless wins the next year of mind share.</p>
<p>Bottom line - the valuation is a milestone, not a finish line. The builders who treat it as a forward signal and install the habit stack this week will look like they got a quiet upgrade by July. The ones who scroll past it will wonder why their Tuesday sessions feel slower than everyone else's. No cap, the gap is going to open. Pick the side you're on, and start tonight.</p>
<h2>FAQ</h2>
<p><strong>What does Anthropic becoming the most valuable company in the world mean for Claude Code users?</strong></p><p>Directionally, three things. Longer context windows means whole-codebase prompts become standard. Lower per-token pricing means you stop pruning prompts to save money and start feeding Claude the full picture every time. And a faster Claude Code release cadence means new skills, slash commands, and MCP partners land on a weekly drumbeat instead of monthly. All three compound on your daily shipping rate.</p>
<p><strong>Should I switch from another AI tool to Claude Code now that Anthropic is the most valuable company?</strong></p><p>Valuation alone is a bad reason to switch tools. The better reason is the release cadence. Claude Code is shipping more useful changes per week than any other agentic coding tool I run, and that gap is widening. If you've already tried Claude Code and bounced, this is a fair quarter to come back and re-evaluate. If you're happy on a different stack, run a one-week side-by-side and let the output decide.</p>
<p><strong>Will Claude Code get more expensive now that Anthropic is the most valuable company?</strong></p><p>The directional bet across the industry is the opposite. Per-token pricing has been falling on a clockwork cadence for the last two years and there's no signal that's reversing. The right planning assumption is that the same prompt will cost less in twelve months than it does today, which means the habit to install now is feeding Claude the full context every time instead of pruning to save tokens.</p>
<p><strong>What are the other Anthropic updates I should pay attention to besides the valuation?</strong></p><p>Four to track. The Claude Code release cadence visibly tightened. The MCP partner list keeps growing, which means more official integrations and less glue code. The Sonnet versus Haiku tier separation got sharper, which makes routing work to the right model easier. And the Claude SDK support for multi-agent orchestration deepened, which means planner-plus-specialist patterns are becoming default instead of advanced.</p>
<p><strong>Do I need to change my Claude Code workflow because of the milestone?</strong></p><p>Not in big ways. The fundamentals don't move - ship the ugly version on day one, install the three-tier memory stack, run the end-of-session wrap-up. What does change is the small habits. Stop pruning prompts. Audit your MCP servers and swap to official ones. Split one workflow into a planner-plus-specialist setup. Re-read your Tier 2 briefs and sharpen them. Five evenings of work, payoff inside a month.</p>
<p><strong>Is now a good time to start learning Claude Code if I'm a complete beginner?</strong></p><p>It's the best window in two years. The release cadence means the rough edges from last year are mostly gone, the documentation is finally caught up, and the community has settled on workflows that actually work. The Claude Code Club is built for exactly this moment. If you're looking for a structured way in, that's the fastest path I know.</p>]]></content:encoded>
    </item>
    <item>
      <title>I Fired My Biggest Client This Month - and Margin Doubled in 30 Days</title>
      <link>https://www.claudecodeclub.ai/blog/fired-my-biggest-client-margin-doubled</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/fired-my-biggest-client-margin-doubled</guid>
      <pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Monetization</category>
      <category>Freelancing</category>
      <category>Workflows</category>
      <description><![CDATA[The client that pays the most isn't always the client that earns the most. I cut my biggest invoice in May, and the agency's margin doubled by the end of June. Here's the math that made the call obvious - and the playbook for spotting your version of the same client.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Your largest invoice isn't your most profitable client. The one that quietly eats your team's hours is.</li><li>I tracked five honest numbers per client for one quarter and the answer fell out - my biggest logo was running at single-digit margin while three smaller ones were at 60% or above.</li><li>I cut the big one, redirected the team to the smaller ones, and net profit doubled in 30 days. The playbook is in the post.</li></ul>
<h2>Why Firing Your Biggest Client Is The Move Nobody Talks About</h2>
<p>Straight up - the client that pays the most is almost never the client that earns the most. In agency land, every operator I respect has had the same conversation in the last twelve months: the biggest logo on the deck is the one quietly killing the margin, and nobody wants to be the one who says it out loud. I said it out loud in May. I fired the largest invoice on my book. Thirty days later, net profit on the agency had roughly doubled. This post is the math that made it obvious and the playbook for spotting your version of the same client.</p>
<p>Most agency owners track revenue per client and think they're tracking the business. They're not. Revenue is a vanity metric. The two numbers that actually run the agency are hours-per-engagement and gross margin per client. The big logo wins on revenue. The small ones win on margin. The difference is what you take home, and I'd been ignoring it for eight months because the invoice number looked good in the quarterly review.</p>
<blockquote><strong>WARNING:</strong> If you've never run a per-client P&amp;L, you don't know which clients are profitable. You know which clients pay you the most. Those are two completely different things, and the gap between them is usually where the agency's margin disappears.</blockquote>
<h2>The Five Numbers You Need Per Client</h2>
<p>Before I made the call, I ran the same five-number audit on every client on the book. It's not fancy. It fits on a Google Sheet. But once you've got the five numbers in front of you, you can't unsee the answer.</p>
<table><caption>Run this on every client for one quarter and the answer falls out</caption><thead><tr><th>Number</th><th>What it tells you</th><th>How to pull it</th></tr></thead><tbody><tr><td>Monthly revenue</td><td>What they pay you</td><td>Your invoicing tool</td></tr><tr><td>Delivery hours per month</td><td>What it costs you to keep them</td><td>Time tracking, honest</td></tr><tr><td>Fully-loaded hourly rate</td><td>Your real cost per delivery hour, including overhead</td><td>Annual cost divided by delivery hours</td></tr><tr><td>Gross margin per client</td><td>Revenue minus delivery cost</td><td>Revenue minus (hours times loaded rate)</td></tr><tr><td>Scope creep ratio</td><td>How often the work overruns the SOW</td><td>Hours delivered divided by hours quoted</td></tr></tbody></table>
<p>When I ran this for the May audit, the picture was ugly. My biggest client paid roughly five times what my smallest paid, but they consumed roughly nine times the hours. Gross margin on them was sitting at 11%. Three of my smaller clients were at 62%, 58%, and 71%. The math wasn't even close. I'd been running half the team on the lowest-margin work on the book and calling it strategy.</p>
<h2>The Three Signals That A Client Should Go</h2>
<p>Margin alone doesn't decide it. Plenty of new engagements run low margin for the first two months and then climb. The real signal is three patterns showing up at the same time on the same client. If you see all three, the answer is to part ways. If you see one, you can usually fix it. If you see two, you should be having the conversation.</p>
<ul><li>Scope creep ratio above 1.5x for three months running. You're not delivering an engagement anymore. You're absorbing one.</li><li>Gross margin under 20% and not trending up. Anything in this band is paying you to be busy, not paying you to build a business.</li><li>The team flinches when the client's name shows up in the inbox. This one isn't on the spreadsheet. It's on the faces in the standup. Trust it.</li></ul>
<blockquote><strong>TIP:</strong> The team-flinch signal is the most reliable of the three. The spreadsheet can be argued with. The energy in the room can't. Watch the standup for a week and tell yourself the truth about which client name causes the dip.</blockquote>
<h2>How To Actually Have The Conversation</h2>
<p>Once the math is in front of you, the hard part isn't the decision. It's the conversation. The right move is not to ghost, not to raise prices into the moon hoping they leave, and not to pick a fight. The right move is a short, professional, no-drama call where you tell them their engagement no longer fits the way your agency is structured, you give them a clean offboarding window, and you offer two warm referrals.</p>
<p>I structure it the same way every time. Twenty minutes on the call. First five, I tell them what's changed in our delivery model and why their scope no longer fits. No villainy, no apology, no over-explaining. Next ten, I walk them through a sixty-day offboarding plan covering what we'll finish and what we won't start, with the handoff date in writing. Last five, I introduce two other shops that would deliver the engagement better than we currently are, with warm email intros by end of week. Most clients respect the honesty more than they would have respected continued mediocre delivery, and a meaningful share of them refer business back to me later.</p>
<h2>What You Reinvest The Capacity Into</h2>
<p>Firing a client only pays back if you redirect the freed-up capacity into the high-margin clients you already have. The mistake I see other agency owners make is cutting the bad client and then immediately prospecting for a replacement at the same revenue level. That's how you re-create the same problem with a new logo on the SOW.</p>
<p>The play instead is to invest the capacity in three places, in this order. First, deepen scope on your top-margin client. There's almost always a productized add-on you've been too busy to sell them. Second, raise your floor. The next new engagement signs at 30% above your current rate, because you have the capacity to walk away from a no. Third, build a productized offer the freed-up team can deliver on autopilot. Memory engineering retainers, Claude Code workflow audits, MCP server setups - all of these run at margins your custom work won't touch.</p>
<blockquote><strong>TIP:</strong> The 30-day window after you fire a low-margin client is the highest-leverage selling window your agency gets all year. The team is rested, the capacity is real, and the math on the next engagement is brutally clear. Use it.</blockquote>
<h2>The Quarterly Audit That Stops You Getting Stuck Again</h2>
<p>The mistake I'd been making for eight months was running the five-number audit once, at the start of an engagement, and never again. Clients change. Scope grows quietly. The hours creep without showing up on a quarterly review. So now I run the audit on every active client on the first Monday of every quarter. Sixty minutes flat, no exceptions.</p>
<p>If the numbers are healthy, the client stays and we plan the deepening conversation. If two of the three warning signals are firing, we plan the price increase or scope change. If all three are firing, we plan the offboarding. The whole audit fits on one tab in a sheet, and it's the single highest-leverage hour my agency runs each quarter. The biggest invoice on your book isn't sacred. The margin is. Run the math, have the conversation, and your next thirty days will look different from your last thirty.</p>
<h2>FAQ</h2>
<p><strong>Why would I fire my biggest client when they're paying me the most?</strong></p><p>Because the biggest invoice isn't the same as the biggest profit. When you run a per-client P&amp;L with delivery hours and a fully-loaded hourly rate, you almost always find that the largest client is running at single-digit margin while smaller clients are at 60% or above. The cash flow looks great. The actual take-home is being eaten by delivery cost. Cutting the low-margin work and redirecting the capacity to the high-margin clients usually doubles net profit inside thirty days.</p>
<p><strong>How do I calculate gross margin per client?</strong></p><p>Five numbers. Monthly revenue from the client. Delivery hours per month spent on them. Your fully-loaded hourly rate, meaning your total annual cost divided by total annual delivery hours, not just salary. Multiply hours by the loaded rate to get delivery cost. Subtract delivery cost from revenue to get gross margin. If you don't track delivery hours honestly, none of this works. That's the unglamorous prerequisite.</p>
<p><strong>What's a healthy gross margin per client for an agency?</strong></p><p>Anything above 50% is healthy. 35% to 50% is a watch zone where you can usually fix it with scope renegotiation or a price increase. Under 20% and not trending up is the band where you should be planning to part ways. New engagements often start in the watch zone and climb as you systematize delivery. The danger is when a client stays in the low band for three months running without improving.</p>
<p><strong>How do I actually tell a client we're ending the engagement?</strong></p><p>Twenty-minute call. First five minutes you tell them what's changed in your delivery model and why their scope no longer fits, no villainy and no over-apologizing. Next ten you walk them through a sixty-day offboarding plan covering what you'll finish and what you won't start. Last five you introduce two other shops that would deliver the work better, with warm email intros by end of week. Most clients respect the honesty more than they would have respected continued mediocre delivery.</p>
<p><strong>Won't firing my biggest client crater my cash flow?</strong></p><p>Only if you don't redirect the freed-up capacity. The order to invest it in is, first, deepening scope on your highest-margin existing client. Second, raising your floor on the next new engagement by 20 to 30%, because you now have the capacity to walk away. Third, building a productized offer the team can deliver on autopilot. Run those three plays inside the first thirty days and the net cash position usually ends up ahead of where it started.</p>
<p><strong>How often should I run the per-client audit?</strong></p><p>Once a quarter, the first Monday, sixty minutes, no exceptions. The mistake most agency owners make is running it once when they sign a client and never again. Clients change. Scope creeps quietly. The hours expand without showing up anywhere visible. A quarterly audit catches the drift while it's still recoverable, instead of eight months later when the margin is already gone.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Use Claude Code Like a Pro: 7 Habits That Separate Shippers from Tinkerers</title>
      <link>https://www.claudecodeclub.ai/blog/how-to-use-claude-code-like-a-pro</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/how-to-use-claude-code-like-a-pro</guid>
      <pubDate>Thu, 04 Jun 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Workflows</category>
      <category>Building</category>
      <description><![CDATA[Most builders learn Claude Code. The ones who ship have a different set of habits. Here are seven of them - the ones that take you from tinkering forever to actually shipping the thing this week.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>The gap between a tinkerer and a shipper isn't talent - it's seven repeatable habits, and you can install all of them this week.</li><li>The single biggest one: ship the ugly version on day one, then iterate from real feedback, not imagined feedback.</li><li>Run through the Shipper vs Tinkerer table below - if you recognize yourself on the left, the fix is on the right.</li></ul>
<h2>How to Use Claude Code Like a Pro: The Setup That Decides Everything</h2>
<p>Real talk - most people who download Claude Code never ship a single thing with it. Not because they can't. Because they skip the seven habits that turn the tool from a fancy autocomplete into a shipping machine. I've watched it from both sides: the builders who go from zero to $30K MRR in a year, and the builders who, six months in, are still tweaking their init script. The gap between them isn't talent. It's seven habits, and you can install all of them this week.</p>
<p>Before we get into them, the framing matters. Tinkering is what happens when there's no shipping deadline, no real user, and no consequence for the build looking ugly. Pro shipping is the opposite - every session ends with something runnable, something a stranger could click, something you could send a friend. If you keep that single bar in front of you on every session, half the habits below take care of themselves.</p>
<table><caption>Shipper vs Tinkerer - recognize yourself, then flip the column</caption><thead><tr><th>Behavior</th><th>Tinkerer</th><th>Shipper</th></tr></thead><tbody><tr><td>First prompt of a new project</td><td>&quot;Build me a SaaS for X&quot;</td><td>&quot;Add one button that does Y&quot;</td></tr><tr><td>Reaction to an error</td><td>Rewrites the function from scratch</td><td>Pastes the exact error back to Claude</td></tr><tr><td>Project context</td><td>Re-explained every session</td><td>Written once in a CLAUDE.md file</td></tr><tr><td>End of day one</td><td>Still researching the stack</td><td>Ugliest possible version deployed</td></tr></tbody></table>
<blockquote><strong>TIP:</strong> Before you write a single line of code, spend twenty minutes writing a CLAUDE.md file that says what you're building, who it's for, and what &quot;done&quot; looks like. That one file is the highest-ROI prompt in your project - every future turn is sharper because of it.</blockquote>
<h2>Habit 1: Treat the Project File as Your Brief</h2>
<p>The single biggest difference between someone who ships with Claude Code and someone who burns weeks on the same project is whether they wrote anything down before they started. I'm not talking about a spec. I'm talking about three or four bullet points in a CLAUDE.md at the root of the project - what the thing is, who uses it, what the first shipped version contains, what it explicitly does NOT contain.</p>
<p>Sounds obvious. Almost nobody does it. And then they wonder why every session feels like starting from zero, why Claude keeps &quot;forgetting&quot; what they're building, why the codebase wanders. It's not Claude - it's the briefing. Claude is a senior engineer who'll do anything you ask, but you have to tell it what you're actually doing first. Twenty minutes on a CLAUDE.md saves you eight hours of zig-zagging the rest of the week.</p>
<p>Quick story. My first real Claude Code project was a landing-page generator I wanted to sell to local restaurants. I spent the first session vibing - describing what I wanted in chat, generating files, regenerating files. By session three I had three different layouts and zero of them I liked. Session four I deleted everything, wrote a 12-line CLAUDE.md (&quot;This is a one-page menu site for restaurants. Sections: hero, menu, hours, contact. Use Tailwind. No login, no admin, no cart.&quot;), and rebuilt the whole thing cleaner in two hours. That one file is the difference.</p>
<h2>Habit 2: Ship the Ugly Version First</h2>
<p>Hot take: your first version should embarrass you a little. If it doesn't, you're polishing too early.</p>
<p>The shipping motion is: get the ugliest possible version of the core idea running, look at it, and then iterate from real feedback instead of imagined feedback. Pros do this on day one. Tinkerers do it on day fourteen, after they've rewritten the navbar three times. The reason this matters isn't aesthetic - it's that an ugly running version teaches you what's actually broken about your idea, and an imagined polished version teaches you nothing.</p>
<p>Here's the concrete bar. By the end of session one, you should have a thing that loads in a browser, performs the one core action of your app (even badly), and has at least one wired-up button. Not styled. Not responsive. Not even pretty. Loaded, clickable, functional in the literal sense of &quot;function returned a value.&quot; That's the bar. If you hit it, the rest is iteration. If you don't, you're still tinkering. No cap.</p>
<h2>Habit 3: Paste the Error Back - Don't Rewrite It</h2>
<p>When Claude Code throws an error, there are two paths. Tinkerers see red text, panic, and rewrite the function - or worse, the whole file. Shippers copy the exact error message, including the stack trace, paste it straight back to Claude, and let it diagnose. Same error, completely different outcomes.</p>
<p>The reason is that error messages are the densest, most specific feedback you'll ever get. They tell you the exact line, the exact mismatch, the exact missing thing. Claude is unusually good at reading them. Most of the time it nails the fix on the first try. When tinkerers rewrite around the error instead of with it, they end up with a working app that's twice as long and has the original bug hiding behind two layers of new code.</p>
<p>There's a deeper habit underneath this one: stop being afraid of red text. Bugs aren't failures - they're the most precise lesson you get during the build. Every shipper I know runs toward the error, not away. That single mental flip is half the battle.</p>
<h2>Habit 4: One Tight Slice at a Time</h2>
<p>This is the one that took me the longest to learn. Tinkerers ask Claude to build the whole app in one prompt. Shippers ask Claude to add one button.</p>
<p>Big prompts produce big messes. Claude will absolutely write you 400 lines across six files in response to &quot;build me a habit tracker with auth and analytics&quot; - and you'll have no idea what any of it does, no way to debug it, and no confidence to change it. Tight slices are the opposite: &quot;add a button labeled Add Habit that pushes a row into the list.&quot; That you can verify in thirty seconds. You can change it. You own it.</p>
<p>The rhythm is: smallest possible visible slice, run it, look at it, smallest possible next slice. Repeat until shipped. Each loop is two minutes. You stack twenty of them in a session and the project is alive. Try to shortcut it and you'll spend the whole session generating code you don't trust. That's the entire game.</p>
<blockquote><strong>WARNING:</strong> If you can't describe in one sentence what the next slice is supposed to do, the slice is too big. Cut it in half and try again.</blockquote>
<h2>Habit 5: Use MCP Servers Like Power Tools</h2>
<p>For a long time I treated MCP servers as a future-me problem - something I'd get to once I &quot;leveled up.&quot; Wrong move. MCP servers are how Claude Code stops being a clever autocomplete and starts being an agent that lives in your real stack. Email, calendar, GitHub, your database, web search - once Claude can reach them, the kind of thing you can build in a weekend changes by an order of magnitude.</p>
<p>Quietly, the best move I made this year was deleting half my SaaS stack and rebuilding it with MCP servers and a single Claude Code workflow. Notion in, Gmail out, one prompt holding the loop together. The whole setup runs me $20 a month. It replaced about $340 a month of disconnected tools. That ratio isn't a one-time fluke - it's available to anyone willing to wire two MCP servers together this week. If you've never built one, start with our explainer on MCP servers - it's the single most underused habit in the club.</p>
<h2>Habit 6: Deploy on Day One</h2>
<p>I'm not joking about day one. The first time you put your project somewhere a URL points to, the entire psychological frame changes. It stops being a folder on your laptop and becomes a real thing in the world. That shift matters more than any feature you'll add this month.</p>
<p>Tinkerers hold deployment as the reward at the end. Shippers use it as the kickoff. Get the ugliest version live behind a URL on day one, even if &quot;live&quot; means a personal Vercel link nobody else has. Then every iteration ships to that same URL. Suddenly you're not building toward a launch - you ARE launched, and you're improving in public. That's a completely different game, and it's available right now.</p>
<p>The mechanics are easier than ever: ask Claude Code to walk you through it, point at a git repo, follow the prompts. The real obstacle was never technical - it was the belief that the project had to be &quot;ready&quot; first. It doesn't. Ship it ugly, then iterate. That's been the formula all along. There's a longer write-up on this rhythm in our beginner-to-shipping roadmap if you want the day-by-day version.</p>
<h2>Habit 7: Build in Public - The Compounding Habit</h2>
<p>The last one is the one that compounds. Every session, write down ONE sentence about what you built. Post it somewhere - a Slack, an X thread, the Claude Code Club community, anywhere with at least one other human in it. That's it.</p>
<p>Two things happen. One, you create a public log of your progress that future-you (and future hires, and future clients) can point at. Two, you turn yourself into someone people associate with shipping - which is the single highest-ROI personal brand move available right now, because almost nobody is doing it consistently. Most builders share polished launches. Shippers share the work in progress. That's why the work in progress is what gets seen.</p>
<p>Install these seven habits this week and you'll ship more in the next thirty days than you have in the last six months. I've watched it happen to enough people that it stopped feeling like coincidence. Pick one habit, install it tomorrow, and keep going. That's the whole play.</p>
<h2>FAQ</h2>
<p><strong>How do I use Claude Code like a pro if I'm a complete beginner?</strong></p><p>The same way the pros do - start with one tiny project, one CLAUDE.md file, and one shipped link by the end of week one. The habits in this post work the same whether you've been coding for ten years or you opened a terminal for the first time yesterday. The setup is what scales, not the prior experience.</p>
<p><strong>What's a CLAUDE.md file and why does it matter so much?</strong></p><p>It's a plain markdown file at the root of your project that tells Claude what you're building, who it's for, and what &quot;done&quot; looks like. Claude Code reads it on every turn, so you stop re-explaining yourself every session. Twenty minutes spent writing it saves hours of zig-zagging the rest of the week.</p>
<p><strong>Should I learn syntax first before adopting these habits?</strong></p><p>No. The whole point of Claude Code is that it handles the syntax for you. What matters is the loop - describe, run, look, fix, ship. These seven habits are the loop. You install them on your first project, not your tenth.</p>
<p><strong>How long does it take to install all seven habits?</strong></p><p>About a week of deliberate practice on one small project. None of the habits are complicated - the friction is breaking the tinkering reflex, which only happens when you're actively shipping something. So pick a tiny project, run through the habits, and ship it. The habits stick after one full loop.</p>
<p><strong>What's the single most important habit if I can only install one?</strong></p><p>Ship the ugly version on day one. Every other habit gets easier once there's a live URL to point at. The polish-before-launch instinct is the one thing that keeps tinkerers stuck - kill it on the first project and the rest follows.</p>
<p><strong>Where should I go next after installing these habits?</strong></p><p>Once your loop is solid, the next move is connecting Claude Code to your real tools via MCP servers - that's where personal automations and billable client work start to appear. The Claude Code Club walks you through it step by step, and you can read more from David on his author page.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Price a Claude Code Agency Project (Without Selling Hours)</title>
      <link>https://www.claudecodeclub.ai/blog/how-to-price-a-claude-code-agency-project</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/how-to-price-a-claude-code-agency-project</guid>
      <pubDate>Thu, 04 Jun 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Monetization</category>
      <category>Freelancing</category>
      <category>Workflows</category>
      <description><![CDATA[The fastest way to cap your agency's earnings is to charge by the hour for something Claude Code builds in a weekend. Here's the pricing system top AI shops actually use - and why the unit you sell matters more than the rate.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Selling hours on Claude Code work is the fastest way to cap your agency revenue - the model gets faster every quarter, your rate doesn't.</li><li>Pick a pricing shape that matches the work: fixed scope for one-offs, retainers for ongoing agents, per-deliverable for productized work.</li><li>Anchor on the cost you're replacing, not the time you took. A $2,400/month retainer is a different conversation than a $200/hour invoice.</li></ul>
<h2>How to Price a Claude Code Agency Project: Why Hours Are the Wrong Unit</h2>
<p>Straight up - the second you put hours on a Claude Code invoice, you've capped your own ceiling. The model gets faster every quarter. Your rate doesn't. So a project that took two days last spring takes six hours today and three hours next year, and if you're billing by the hour your invoice shrinks every cycle. That's the wrong direction for a business.</p>
<p>The right unit to sell is the outcome - the thing the client actually wanted before they ever heard the word &quot;Claude.&quot; A small business doesn't want &quot;twelve hours of MCP setup&quot;; they want a Gmail-to-CRM automation that saves their ops manager an afternoon a week. A SaaS founder doesn't want &quot;prompt engineering hours&quot;; they want a working onboarding agent. Price the outcome and the arbitrage of using Claude Code stays in your column, where it belongs.</p>
<p>I spent eight years inside Apple, PlayStation, and Schwab. The thing those teams all had in common? Nobody could ship under three months. A Claude Code agency can deliver the same scope in three weeks. That speed gap is the entire arbitrage - and you only capture it if you price on what you delivered, not how long it took.</p>
<h2>Step 1: Name the Outcome, Not the Tech</h2>
<p>The first move in any pricing conversation is to translate the technology back into the language the client already uses. Don't sell an &quot;MCP server.&quot; Sell &quot;a Gmail-to-CRM automation that runs every morning at 7 a.m.&quot; Don't sell &quot;a Claude Code agent.&quot; Sell &quot;a weekly client report your ops manager doesn't have to write anymore.&quot; The client buys the outcome, the tech is invisible, and your scope-of-work reads like a deliverable instead of a hobby.</p>
<p>Here's a concrete shape. I shipped a Gmail-to-CRM agent to a real-estate client last month. On paper it's an MCP server plus a Claude Code cron prompt - maybe a weekend of work. On the invoice it's &quot;Inbound lead routing automation,&quot; priced as a $2,400-a-month retainer. Same code. Completely different conversation. The work isn't the agent. The work is naming the outcome the client already wants and pricing it like infrastructure.</p>
<blockquote><strong>TIP:</strong> If a client asks how long it took, the honest answer is &quot;twelve years of context plus a weekend.&quot; That's the only true reply. Charge accordingly.</blockquote>
<h2>Step 2: Pick a Pricing Shape That Matches the Work</h2>
<p>There isn't one correct way to price a Claude Code agency project - there are four, and the trick is matching the shape to the kind of work. Hourly is almost always the wrong call for the reasons above. The other three each fit a different engagement type cleanly.</p>
<table><caption>Pricing shape vs the kind of work it fits</caption><thead><tr><th>Pricing shape</th><th>Best for</th><th>Example deliverable</th><th>Typical range</th></tr></thead><tbody><tr><td>Fixed scope</td><td>One-off builds with a clear definition of done</td><td>A booking site, a Stripe checkout funnel, an internal tool replacing a spreadsheet</td><td>$1.5K – $15K per project</td></tr><tr><td>Monthly retainer</td><td>Ongoing agents, automations, or systems that need maintenance</td><td>A lead-routing agent, a weekly report bot, a Slack-to-Notion sync</td><td>$1.5K – $8K / month</td></tr><tr><td>Per-deliverable / productized</td><td>The same thing sold to many clients with light tweaks</td><td>A Stripe buy-button install, a booking widget, an onboarding-form-to-CRM hookup</td><td>$500 – $3K each</td></tr><tr><td>Hourly</td><td>Almost nothing in this category. Use only for true discovery work, capped</td><td>A two-hour audit of an existing stack before scoping a real engagement</td><td>Avoid for delivery</td></tr></tbody></table>
<p>Most new AI shops default to hourly because it feels safe. It's the opposite. Hourly invites clients to renegotiate every line and trains them to value your time the same way they'd value an assistant's. Pick one of the top three shapes per engagement and the conversation becomes about scope, not the clock.</p>
<h2>Step 3: Anchor on the Replaced Cost</h2>
<p>The single most useful number in any pricing conversation isn't your cost - it's the client's. Specifically, what was the thing they were doing (or paying) before you showed up? An ops manager spending six hours a week on a manual lead handoff is a $30K-a-year cost line. A $2,400-a-month automation that eliminates that work is a 20% saving, not an expense. That's the framing that makes a retainer obvious.</p>
<p>The math runs the same direction across every engagement. A small business pays a part-time bookkeeper $1,500 a month. A scoped &quot;books-to-dashboard&quot; automation at $1,800 a month is more expensive on paper and a third the cost on outcomes. A founder pays a junior dev $7K a month to glue together their stack. A retainer at $5K that does the same gluing with Claude Code and one MCP server is a $24K-a-year saving for the client and a higher-margin engagement for you. Anchor every quote on the replaced cost and the price stops feeling like a number you made up.</p>
<h2>Step 4: Build a Three-Tier Offer Stack</h2>
<p>Once you've named the outcome and picked the shape, present three tiers - good, better, best - and let the client pick. This single move eliminates 80% of the back-and-forth that kills new agency deals. Instead of negotiating one price, the client is choosing between three versions of the same offer, which is a completely different psychological exercise.</p>
<ul><li>Tier 1 - the minimum viable engagement. The deliverable, no maintenance, no support beyond a two-week bug-fix window. The price an unsure client can say yes to.</li><li>Tier 2 - the standard package. Deliverable plus a month of refinement, plus one round of changes after launch. This is the tier most clients pick.</li><li>Tier 3 - the agency-of-record tier. Deliverable plus a recurring retainer for ongoing maintenance, new feature requests, and quarterly upgrades. This is the tier that builds the business.</li></ul>
<p>Price the tiers so the middle one is the obvious value. The first tier exists to make the second look like a steal; the third tier exists so the second doesn't feel like the ceiling. Most clients will land on tier two on their own, which is exactly what you want. And once they're in tier two, upgrading to tier three is a conversation, not a sale.</p>
<h2>Step 5: Lock the Scope on Paper (Even at $5K)</h2>
<p>Pricing without a scope-of-work is the single fastest way to bleed a Claude Code engagement. Every &quot;can you just add this one thing&quot; is free money out of your pocket if it's not in writing. Even a small fixed-scope project deserves a one-page SOW: deliverable, exclusions, timeline, payment terms, and what &quot;done&quot; looks like. Especially exclusions. Most scope creep happens because the client genuinely thought a feature was included and you genuinely thought it wasn't.</p>
<p>The SOW doesn't need to be a 20-page legal document. The shape that works for most engagements under $15K is: one paragraph naming the outcome, a bulleted list of exactly what's included, a bulleted list of what's explicitly NOT included, a single-line timeline, and a payment-terms line (50% on signing, 50% on delivery is the default that works almost everywhere). One page. Sent before any work starts. Signed back before you write a single prompt. That single discipline saves more revenue than any rate increase.</p>
<h2>Common Pricing Traps for New AI Agencies</h2>
<p>A handful of pricing mistakes kill more new AI shops than anything technical. They're all preventable with a single decision up front.</p>
<ol><li>Hourly for agents. An agent runs forever and gets faster every model release. You'll be invoicing zero hours in eighteen months. Price it as infrastructure on a retainer instead.</li><li>Refusing a deposit. The minute you start work without money in hand, the project's priority drops on the client's end. 50% upfront isn't aggressive - it's normal, and asking for it filters out the engagements that would have ghosted you anyway.</li><li>Discounting for &quot;the first client.&quot; Every new shop does this and regrets it within ninety days. Discounted clients refer more discounted clients. Start at the rate you want to sustain, even if the first deal takes longer to close.</li><li>Selling discovery for free. A two-hour scoping call IS the engagement starter - charge a small fixed fee for it, credit it against the full engagement if they sign, keep it if they don't. This single move cuts your pipeline noise in half.</li><li>Promising support you didn't price. If maintenance isn't in the SOW, every &quot;quick fix&quot; the client asks for after launch is unpaid work eating your next engagement's margin. Bundle a defined support window or quote a retainer - don't do open-ended.</li></ol>
<p>None of these are about being aggressive. They're about pricing the way a real services business prices, which is what a Claude Code shop is - even when it's one person and a laptop. Hold the line on the five above and the rest of the math takes care of itself. For more on the agency-side of building with Claude Code, the full playbook lives on the Duncan author page and on the Claude Code Club blog under the Monetization tag.</p>
<h2>FAQ</h2>
<p><strong>How do I price a Claude Code agency project as a beginner with no portfolio?</strong></p><p>Start with a productized offer - pick one specific outcome (a Gmail-to-CRM automation, a Stripe checkout install, a booking widget) and price it as a fixed package in the $500–$1,500 range. You're not selling your time, you're selling a finished thing. That makes the first sale easier and gives you something portfolio-able for the next one.</p>
<p><strong>Should I ever charge hourly for Claude Code work?</strong></p><p>Almost never for delivery. Hourly invites the client to renegotiate every line and trains them to value your time like an assistant's. The only real exception is paid discovery - a short, fixed-fee scoping call (often credited against the full engagement) so the conversation has skin in the game.</p>
<p><strong>How much does a typical Claude Code agency project cost?</strong></p><p>Fixed-scope builds usually land between $1,500 and $15,000 depending on integration count. Retainers for ongoing agents tend to sit between $1,500 and $8,000 a month. Productized deliverables (booking widgets, checkout installs, single automations) run $500 to $3,000 each. The exact number depends entirely on the replaced cost on the client's side.</p>
<p><strong>What if the client wants to know how long it took me?</strong></p><p>Tell the truth: &quot;twelve years of context plus a weekend.&quot; The pricing isn't a timesheet - it's the outcome. If you've named the deliverable correctly and anchored on what you replaced for them, the time conversation rarely comes up. When it does, redirect to the value of what's now running for them automatically.</p>
<p><strong>Do I need a contract for projects under $5,000?</strong></p><p>Yes, but a single-page scope-of-work is plenty. Outcome paragraph, included list, excluded list, timeline, payment terms (50% on signing, 50% on delivery). One page, signed before work starts. That single discipline prevents the scope creep that quietly eats margin on every small engagement.</p>
<p><strong>How do I justify a retainer to a client who's never paid for one?</strong></p><p>Anchor on the replaced cost. If the automation saves them six hours a week of an ops manager's time, you're charging a fraction of what they were already spending. Frame it as ongoing infrastructure, not subscription software. The retainer covers maintenance, model upgrades, and quarterly improvements - three things they'd otherwise have to manage themselves.</p>]]></content:encoded>
    </item>
    <item>
      <title>How I Priced My First Claude Code Project (And What I'd Charge Today)</title>
      <link>https://www.claudecodeclub.ai/blog/how-i-priced-my-first-claude-code-project</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/how-i-priced-my-first-claude-code-project</guid>
      <pubDate>Thu, 04 Jun 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Monetization</category>
      <category>Freelancing</category>
      <category>Pricing</category>
      <description><![CDATA[The real numbers behind my first freelance Claude Code invoice - what I charged, what I should have charged, and the pricing system I run my agency on now.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>My first Claude Code project was a $500 fixed-fee build that should have been $3,500 - I priced the time, not the outcome.</li><li>The pricing range that works today: $500 productized, $1,500–$15K fixed-scope, $1,500–$8K monthly retainer, $15K–$25K for full agency engagements.</li><li>Value-based pricing kicks in the moment you can name what the client was paying (or losing) before you showed up - until then, package it.</li></ul>
<h2>How I Priced My First Claude Code Project: The Embarrassing Number</h2>
<p>My first paid Claude Code project was a $500 flat fee for a real-estate agent who wanted a single-page website with a property gallery and a contact form. The whole build, including the back-and-forth on copy, took me about six hours over two evenings. I sent the invoice, she paid same day, and I felt like a genius. I was not a genius. I had just sold a $3,500 outcome for $500 because I priced what I knew - the time - instead of what she actually got, which was a real online storefront for her business and three weeks faster to launch than the local web shop had quoted her.</p>
<p>I'm telling that story up front because everyone undercharges on their first Claude Code project. Every single person I've watched go through this. The reason is structural - when you're new, you can only see the inputs (your time, your effort, your nerves) and you can't yet see the outputs (the client's relief, the revenue they unlock, the months of decision they avoid). Until you can see the outputs clearly, you'll keep pricing the inputs. That's the whole trap.</p>
<p>The point of this piece isn't to make you feel bad about your first invoice. It's to compress the lesson so your second invoice is closer to the right number. I'll walk through what I actually charged on a handful of early projects, what the same scope would cost today, and the three-shape pricing system that runs my agency now.</p>
<h2>Hourly vs Project vs Retainer: Three Shapes, Three Use Cases</h2>
<p>Pricing freelance Claude Code work comes down to three shapes - and you almost never want the first one. Hourly is the default trap because it feels safe and familiar, but every quarter the model gets faster and your hourly invoice shrinks for the same outcome. Project pricing fixes a number to a deliverable, which is where most of my work lives now. Retainers turn a one-time build into ongoing infrastructure for the client, which is where the actual business gets built.</p>
<p>The instinct as a beginner is to default to hourly because you've seen agencies and dev shops do it. Don't copy the dev shop. A dev shop bills hourly because their unit cost is human hours and those hours move slowly. Your unit cost is a Claude Code session that moves at a different speed entirely. Selling that as an hourly rate is selling your ceiling on day one. The cleaner play is to define a scope, name a flat fee, and let the model speed compound in your column.</p>
<p>The shape to pick depends on the work. A landing page, a Stripe checkout, a one-off internal tool - fixed-scope project. An automation that runs every day forever and might need tweaks as the client's process evolves - monthly retainer. An identical productized deliverable you can sell to dozens of clients with light customization - per-deliverable pricing, usually $500 to $3,000. Hourly stays in your toolbox for paid discovery (a $300 audit call that gets credited if they engage) and nothing else.</p>
<h2>Three Real Scopes and What They Should Cost</h2>
<p>Let me get concrete. Below are three scopes I've actually shipped, what I originally charged, and what the same scope goes out the door at today. These aren't theoretical numbers - they're the prices that have actually cleared on real invoices.</p>
<p>Scope one: a single-page small business website with a hero, three content sections, a gallery, and a contact form that emails the owner. My first invoice for this was $500. Today the same scope is a $1,800 productized package with a two-week delivery window and a one-month tweak period bundled in. The reason the price tripled isn't that the build got harder - it got easier. The price tripled because I learned to anchor on what the client gets (a live web presence by next Friday) instead of what I do (six hours of building).</p>
<p>Scope two: a Gmail-to-CRM automation that reads inbound leads from a form, scores them, and pushes the qualified ones into a sales tool with a daily digest emailed to the founder. First version of this I built for $1,200 as a one-shot project. Today this is a $2,400-a-month retainer that includes maintenance, model upgrades, and one new feature request per quarter. Same code under the hood. Completely different framing on the invoice, because the client isn't buying a script - they're buying ongoing lead routing as infrastructure.</p>
<p>Scope three: a full agency engagement for a 12-person services business - three connected automations (lead routing, client onboarding, weekly reporting), an internal dashboard, plus quarterly upgrades and a Slack channel for support. This is where you land in the $15K to $25K range, paid as either a six-month fixed engagement or as a recurring $4K-a-month retainer with a $5K kickoff fee. The work is bigger but the multiplier comes from the relationship: you're now the AI partner for a whole business, not the freelancer for a single deliverable.</p>
<blockquote><strong>TIP:</strong> Anchor every quote on the cost you're replacing. &quot;This automation saves you eight hours of your ops manager's time a week&quot; is a $30K-a-year line item. A $2,400 monthly retainer against that is a saving, not an expense - and that framing is what closes the deal.</blockquote>
<h2>When to Switch to Value-Based Pricing</h2>
<p>Value-based pricing - charging a percentage of the outcome rather than a fee for the build - sounds great in books and is genuinely hard in practice. The reason it's hard is that it only works when you can clearly measure what the client gained, and most early projects don't have that data clean enough to anchor on. So the realistic answer is: don't lead with value-based pricing on your first ten projects. Lead with fixed scope or retainer, and let value-based emerge as a third tier once you have a track record.</p>
<p>The signal that you're ready to quote a value-based number is when the client can tell you, on the discovery call, exactly what the current state is costing them. &quot;We lose three hours a day on this handoff.&quot; &quot;Our conversion rate is 1.2% and every point is worth $40K.&quot; &quot;We're paying a part-time bookkeeper $1,500 a month for work that should be automated.&quot; Once you hear a number like that, you have a real anchor. A quote of 20-30% of the first year's saving is generally easy to defend and generous enough that the client doesn't blink.</p>
<p>Until you hear that number, package the work. Three tiers - good, better, best - at flat prices, with the middle tier being the one most clients pick. That packaging move alone will move your average invoice up about 60% over leading with a single number, because clients land naturally on the middle option when there's a third one to anchor against. It also makes the sales conversation about which version they want instead of whether the price is reasonable, which is the only conversation you actually want to be having.</p>
<h2>How to Package So the Price Feels Easy</h2>
<p>Packaging is the single biggest move you can make to raise prices without raising friction. Instead of quoting one number, you present three versions of the same offer at three price points. The math the buyer is doing changes completely - they're no longer asking &quot;is this worth it?&quot; they're asking &quot;which of these three is the right fit for me?&quot; That second question closes far more often than the first.</p>
<ul><li>Starter tier - the deliverable only, two-week bug-fix window, no support after that. The price someone unsure of you can say yes to without losing sleep.</li><li>Standard tier - deliverable plus 30 days of refinement, plus one round of changes after launch. This is the tier most clients pick, and it's the one you should price most carefully.</li><li>Pro tier - deliverable plus a monthly retainer for ongoing maintenance and new feature requests. The tier that turns a one-time build into a real client relationship.</li></ul>
<p>Price the tiers so the middle is the obvious value - the starter should feel a little thin, the pro a little ambitious, and the standard should feel like the smart move. Most clients self-select into the middle without you steering them, which is exactly what you want. The ones who pick pro are the relationships that compound for years. The ones who pick starter were never going to be your best client anyway, and now you've at least gotten paid to find out.</p>
<h2>What I'd Tell My First-Project Self</h2>
<p>If I could send one message back to the version of me about to send that $500 invoice, it would be: triple it, and put it in a one-page scope-of-work before you start. The price would have cleared at $1,500 with zero negotiation because the client was thrilled at $500 - she was comparing me to the $4,000 local web shop, not to free. I left $1,000 on the table because I priced relative to my own anxiety instead of relative to the alternative she was actually weighing.</p>
<p>The other thing I'd tell my younger self: stop treating the first project like a referendum on whether you're &quot;worth&quot; professional rates. The first project is just the first project. You'll learn more about pricing in the second engagement than the first, and more in the third than the second, because each one teaches you what the client actually valued and what they wouldn't have paid an extra dollar for. That feedback loop is the thing - not getting the first number perfectly right.</p>
<p>And the last thing: if you're sitting on the first invoice and the number feels too low, it is. Raise it before you send. Almost nobody pushes back on a price that's already inside their budget envelope, and the price that feels uncomfortable to you is usually still well inside theirs. That single adjustment - sending a number that scares you a little - is what moves you from hobbyist rates to real freelance rates faster than anything else I know. I'm still inside the club every day at $9 a month learning from people who price better than me, and that compounding is the actual answer to where the rates come from.</p>
<h2>FAQ</h2>
<p><strong>How much should I charge for my first Claude Code project?</strong></p><p>Whatever number scares you a little. If your gut says $500, send $1,500. The biggest mistake on the first invoice is pricing your time instead of the client's replaced cost - and almost every client is comparing you to a much more expensive alternative they were already considering. Lead with a flat fee and a one-page scope-of-work, not an hourly rate.</p>
<p><strong>Should I price Claude Code work hourly, by project, or on retainer?</strong></p><p>Almost never hourly for delivery. Fixed-scope project pricing fits one-off builds (landing pages, internal tools, single automations) in the $1,500–$15K range. Monthly retainers fit ongoing agents and automations that need maintenance, usually $1,500–$8K a month. Hourly is fine for paid discovery calls and nothing else, because the model speed compounds against you on hourly work.</p>
<p><strong>When does value-based pricing actually make sense?</strong></p><p>Once the client can tell you on the discovery call exactly what the current state is costing them - hours lost, conversion percentage, dollars spent. With that anchor you can quote 20-30% of the first year's saving and defend the price easily. Before you have that data, package the work into three flat-fee tiers and let the middle tier do the selling for you.</p>
<p><strong>What's a realistic range for a small Claude Code project today?</strong></p><p>Productized deliverables (booking widgets, checkout installs, single small automations) run $500–$3,000 each. A small business website with a contact form and gallery is around $1,800. A more involved Gmail-to-CRM automation lands as a $2,400-a-month retainer. Full agency engagements for 10–15-person businesses sit in the $15K–$25K range as a six-month commitment.</p>
<p><strong>How do I justify a retainer to a client who's never paid for one?</strong></p><p>Anchor on the replaced cost - what they were already spending on the manual version of the same work. If the automation saves them eight hours of an ops manager's week, you're charging a fraction of what they were already paying. Frame the retainer as ongoing infrastructure that includes maintenance and model upgrades, not as software they could cancel next month.</p>
<p><strong>Should I always send a scope-of-work, even for small projects?</strong></p><p>Yes, even on a $1,500 project. A one-page SOW with the outcome, included list, explicitly excluded list, timeline, and payment terms (usually 50% on signing, 50% on delivery) prevents the scope creep that quietly eats every small engagement. The discipline of sending it before any work starts is more important than the legal weight of the document itself.</p>]]></content:encoded>
    </item>
    <item>
      <title>What I Built In My First Week of Claude Code Club</title>
      <link>https://www.claudecodeclub.ai/blog/what-i-built-in-week-one-of-the-club</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/what-i-built-in-week-one-of-the-club</guid>
      <pubDate>Thu, 04 Jun 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Getting Started</category>
      <category>Beginners</category>
      <category>Building</category>
      <description><![CDATA[Seven days, four shipped things, a Chrome extension that almost killed my browser, and the exact moment Claude Code stopped feeling like magic and started feeling like a tool.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Day-by-day rundown of the four real things I shipped in week one - a landing page, an inbox cleaner, a Chrome extension, and a tiny client report bot.</li><li>The week-one lessons that actually stuck: ship ugly on day one, paste errors back instead of rewriting, keep a small CLAUDE.md, and stop trying to build the whole thing in one prompt.</li><li>What broke (a lot), what clicked (eventually), and the exact moment Claude Code stopped feeling like magic and started feeling like a tool.</li></ul>
<h2>What I Built In My First Week of Claude Code: The Setup</h2>
<p>I joined the club at $9 a month on a Sunday night and told myself the only rule for the week ahead was that I had to ship one thing a day. Not finish, not polish, not perfect - just ship. A live URL, a working extension, a script that ran. The whole point of the week was to feel the loop rather than read about it. Below is the honest account of what got built, what broke, and what shifted in my head along the way.</p>
<p>Quick context on where I started. I'd written maybe twenty lines of HTML in my life, had never opened a terminal except to follow a tutorial step by step, and could not have told you what a Git commit was without Googling it. I'd also been around enough AI tools to know the conversational ones felt useful but rarely produced anything I shipped. So when I opened Claude Code on day one, my expectations were tempered. By day seven they were not.</p>
<p>One thing I'll flag up front: every single project below started ugly. The day-one landing page had Comic-Sans-energy. The inbox cleaner deleted the wrong email on the first run. The Chrome extension froze my whole browser and made me force-quit. None of that is in the highlight reel anyone else posts. I'm leaving it in because the ugly middle is where the actual learning happened, and pretending it didn't exist would be the most useless version of this post I could write.</p>
<h2>Day 1: A Landing Page That Loaded</h2>
<p>The first build was a one-page personal site at my own name. Bio, links, a contact button. I sat down at 8 p.m., asked Claude Code to create a single page with three sections and a clean look, and watched it scaffold an entire project structure I didn't understand. Twenty minutes in I had something running locally that looked like a real website. The font was wrong, the spacing was off, and the contact button did nothing - but it was a real page in a real browser, and that was the bar.</p>
<p>What I learned in those first two hours wasn't a technical skill, it was the cadence. Ask for one small thing, run it, look at it, ask for the next small thing. The temptation when something works is to immediately ask for five more features at once. The temptation when something breaks is to delete everything and start over. Both impulses kill the rhythm. The win on day one was deploying that ugly page to a free hosting service before I went to bed, so I had a real URL to send myself a screenshot of in the morning.</p>
<p>One small win on day one - I wrote a four-line CLAUDE.md at the root of the project that said what the page was, who the audience was, and what tone to use. I did not understand at the time how much that one file was doing in the background. Every later session, Claude already knew context I would otherwise have had to re-explain. That was probably the single best decision of the whole week, and I made it almost by accident.</p>
<h2>Day 2: An Inbox Cleaner (That Almost Deleted My Inbox)</h2>
<p>Day two I got ambitious and wired up a Gmail MCP server to clean my inbox. The plan was simple - find every unread newsletter from the last 90 days and archive it. The first version of the script worked, in the sense that it ran. It also archived three personal emails I needed because my filter for &quot;newsletter&quot; was sloppier than I thought. I dug them out of the archive, calmed down, and wrote down the lesson: when you give Claude reach into a real account, the cost of being imprecise jumps from &quot;a wasted hour&quot; to &quot;oops, I just acted on three months of mail.&quot;</p>
<p>I rewrote the script with two guards. First, a dry-run mode that printed every action it would take without actually taking it. Second, a five-email limit on each run so a bug couldn't cascade into a disaster. With those guards in place, the cleaner did its job - about 340 newsletters archived over the next hour, none of them anything I needed. The clean inbox felt great. The real win was internalizing that any automation touching a real account needs guardrails baked in from the first version, not added after the first scare.</p>
<blockquote><strong>WARNING:</strong> If your script touches a real account on day one, the first version should be a dry run that only prints what it would do. Add the actual action in the second version, after you've read the dry-run output and confirmed it's targeting what you think it's targeting.</blockquote>
<h2>Day 3 and 4: A Chrome Extension That Broke My Browser</h2>
<p>The middle of the week I tried to build a Chrome extension. I'd seen people post about tiny extensions that did one useful thing, and I wanted one that highlighted certain keywords on any page I visited. Claude Code generated the manifest, the content script, the popup - everything looked right. I loaded it as an unpacked extension and within ten seconds my browser went unresponsive. The script was running an infinite loop on every page load. I force-quit, dug through the code with Claude, found the runaway loop, fixed it, and reloaded. Browser back. Lesson learned.</p>
<p>Day four was finishing it. The extension worked, but the UI was an eyesore - a default-styled popup with a single textarea. I spent the evening iterating on small visible slices: rounded the corners, added padding, changed the font, made the highlight color configurable. None of those changes were technically hard, but they each taught me something about the loop. The big realization was that I'd spent two days mostly fighting the same kind of small UI issues, not because they were complex, but because I kept asking for them in batches of three or four at a time. The moment I started asking for one tweak at a time and running between each, the progress accelerated.</p>
<p>By the end of day four I had a Chrome extension I actually used. It's not a product, it doesn't make money, and nobody else has installed it. But it's mine, it lives in my browser, and it works. That sounds like a tiny thing. After three days of believing I'd never be able to build a browser extension, it did not feel tiny at all.</p>
<h2>Day 5 and 6: A Tiny Client Report Bot</h2>
<p>Day five was when the picture started to compose. I'd been talking to a friend who runs a small consultancy and has to send weekly status reports to four clients. Same shape every week - what we shipped, what's blocking, what's next. He hated it. I asked if I could try to automate it and he said yes, more out of curiosity than confidence. Two evenings later he had a script that pulled the week's commits and notes from his project tool, drafted the report in his voice, and saved it to a doc he could review before sending.</p>
<p>The build itself was nothing fancy - read from one MCP server, prompt for the report, write to another. What made it click was watching him use it. The first draft was almost right. The second iteration, after he gave me three pieces of feedback, was indistinguishable from the reports he'd been hand-writing. He shipped it to his actual clients the next week. The moment I realized something I'd built was being used by a real person to do real work, the whole week reframed. It wasn't &quot;I'm learning Claude Code.&quot; It was &quot;I built a thing someone else uses.&quot; Those are different sentences.</p>
<p>I didn't charge him for it - it was a favor and I learned more from the build than he could have paid me for - but I noted what the equivalent project would cost on a real invoice. Based on what I've read inside the club, a productized version of that report bot is in the $1,500 to $2,400 range as a one-off, or about $400 a month as a retainer. I'm not running an agency yet. But day five was the first time I could honestly imagine running one.</p>
<h2>Day 7: What Clicked</h2>
<p>Day seven was reflection, not building. I spent an hour going back through the week - opening each project, reading the CLAUDE.md files, looking at the shape of the prompts I'd sent. A few things stood out clearly enough that I want to flag them, because they're the lessons that would compress the next person's week if they took them seriously from day one.</p>
<ol><li>Ship something runnable on day one, even if it embarrasses you. Every day after gets easier when there's already a live thing to iterate on, and harder when there isn't.</li><li>Write a tiny CLAUDE.md before you start. Four lines is enough. Claude reads it every session and stops forgetting what you're building.</li><li>When something breaks, paste the exact error back. The instinct to rewrite the whole function from scratch is almost always wrong and almost always slower than asking Claude to read the actual error.</li><li>Ask for one small slice at a time. Big-batch prompts produce big-batch confusion. Two-minute loops compound; thirty-minute loops fall apart.</li><li>Add guardrails before reach. Any automation that touches a real account should start as a dry run that prints what it would do, then add the action in the second version.</li></ol>
<p>The moment Claude Code stopped feeling like magic and started feeling like a tool was somewhere around day four, halfway through fixing the Chrome extension. The magic phase is fun but it doesn't survive contact with real problems - you can't be in awe of the same tool that just froze your browser. What replaces awe, if you stick with the loop, is something better: a calm, working trust that you can ask for something specific and probably get it. That's the shift. That's why I'm still here at $9 a month, and that's why I'd do the first week again exactly the same way.</p>
<h2>FAQ</h2>
<p><strong>Do I need to know how to code before joining a club like this?</strong></p><p>No. I'd written about twenty lines of HTML in my life and had never used a terminal seriously before week one. The cadence of the loop - ask, run, look, fix - is the actual skill, and you install that by doing tiny projects rather than studying syntax. The four things I shipped in week one all started from descriptions in plain English, not code.</p>
<p><strong>What's a realistic week-one outcome for a beginner?</strong></p><p>Four shipped things, each ugly and each small. A landing page on day one, a useful script on day two, a slightly bigger project across days three and four, and one thing built for someone other than yourself by the end of the week. Polished isn't the goal - runnable is. The week is about internalizing the loop, not building a portfolio piece.</p>
<p><strong>What's a CLAUDE.md file and why does it matter?</strong></p><p>It's a plain-text file at the root of a project that tells Claude what you're building, who it's for, and what tone or constraints matter. Claude reads it on every session so you stop re-explaining yourself. Four lines is enough to start, and writing it before you build anything is the single highest-ROI move of the first week.</p>
<p><strong>How do I avoid breaking something important when an automation touches my real accounts?</strong></p><p>Make the first version of any script a dry run that prints exactly what it would do without actually doing it. Add a small limit (five actions per run, for example) so a bug can't cascade. Only switch to live actions after you've read the dry-run output and confirmed it's targeting what you intended. That single discipline would have saved me an hour of inbox panic on day two.</p>
<p><strong>What broke the most in week one?</strong></p><p>The Chrome extension, by a wide margin. An infinite loop in the content script made my whole browser unresponsive within ten seconds of loading the extension. The fix wasn't dramatic once Claude could see the error, but the experience reset my expectations - when a tool can act in your real environment, small bugs have bigger consequences than they do in an isolated script.</p>
<p><strong>What's the one habit from week one I'd tell a beginner to install on day one?</strong></p><p>Ship something runnable on day one, even if it's ugly. A live URL or a running script changes the psychological frame of the whole week - you stop building toward a launch and start improving something that already exists. Every other habit gets easier once there's a real artifact to point at.</p>]]></content:encoded>
    </item>
    <item>
      <title>The Claude Code Workflow That Saves Builders 20 Hours a Week</title>
      <link>https://www.claudecodeclub.ai/blog/the-claude-code-workflow-that-saved-me-20-hours-a-week</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/the-claude-code-workflow-that-saved-me-20-hours-a-week</guid>
      <pubDate>Thu, 04 Jun 2026 00:00:00 GMT</pubDate>
      <dc:creator>Claude Code Club</dc:creator>
      <category>Workflows</category>
      <category>Productivity</category>
      <category>Building</category>
      <description><![CDATA[Inside the club, a daily rhythm has emerged that's quietly giving builders back half a working week. Here's the workflow - morning planning, slice-based builds, agentic test loops, end-of-day commits - broken down by where the hours come from.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>A daily workflow has emerged among club members that consistently gives them back roughly 20 hours a week - split across planning, building, testing, and shipping.</li><li>The shape: a 15-minute morning plan, slice-based building in 90-minute focus blocks, agentic test loops, and a tight end-of-day commit ritual.</li><li>Most of the hours come from removing context-switching and rework - not from typing faster. The workflow is about staying in flow longer, not about being clever.</li></ul>
<h2>The Claude Code Workflow That Saves Builders 20 Hours a Week: Where the Hours Come From</h2>
<p>Inside the club, a daily rhythm has quietly emerged. It wasn't designed by anyone - it composed itself out of a few hundred builders comparing notes in the community and converging on the same handful of moves. Members who run it consistently report getting back roughly 20 hours a week compared to how they used to work. That number sounds inflated until you sit with where the hours actually come from. Almost none of them come from typing faster. Most come from removing rework, context-switching, and the half-hour-of-staring-at-the-screen that used to start every session.</p>
<p>The workflow has four parts: a 15-minute morning plan, slice-based building inside 90-minute focus blocks, an agentic test loop that runs while the builder thinks, and a 20-minute end-of-day commit and reset. None of the parts are novel on their own. The compounding effect is what makes the math work - each piece makes the next one cheaper. The piece below describes the workflow as it's actually being run, not as a theoretical ideal.</p>
<p>One framing note. The hours saved aren't time taken back from work - they're time stolen back from rework. Builders inside the club aren't suddenly working three-day weeks; they're shipping in three focused days what used to take five distracted ones. The freed time goes into new projects, sales conversations, or actual rest. The workflow makes the unit of useful work cheaper, which is the only honest version of &quot;saving time&quot; that survives scrutiny.</p>
<h2>The 15-Minute Morning Plan</h2>
<p>The day opens with a fifteen-minute planning session - not in a project tool, not in a notebook, but in Claude itself. Builders open a session and ask, in plain English, what the priorities for the day are based on yesterday's notes and the open threads in their projects. They describe what was shipped yesterday, what's still in flight, and what new requests came in overnight. Claude lays out a proposed order with estimated time per item. The builder edits the order, commits to it, and that becomes the day's plan.</p>
<p>The hour math here is real. The unstructured version of this - opening a laptop, scrolling messages, picking the first thing that catches the eye - typically costs about an hour of low-quality drift before real work begins. The structured version costs fifteen minutes and produces an explicit list. Net saving: about 45 minutes a day, which is roughly four hours a week recovered from the start of every morning. That's already a fifth of the headline number, and the day hasn't even started.</p>
<p>The secondary benefit is that the plan becomes a context document Claude can read for the rest of the day. When a session two hours later asks &quot;where were we on the onboarding flow,&quot; the morning plan is already in context. The same fifteen minutes pays itself off in every subsequent session by reducing the re-explaining cost. That's the workflow's first compounding move - make the planning artifact itself a piece of context that the rest of the day rides on.</p>
<h2>Slice-Based Building Inside 90-Minute Blocks</h2>
<p>Building happens in 90-minute focus blocks, two or three per day. Inside each block the rule is one slice at a time. A slice is the smallest visible piece of progress - one button, one route, one form field, one passing test. The builder describes the slice to Claude in one or two sentences, lets Claude implement it, runs the result, looks at it, and starts the next slice. The loop typically takes two to four minutes. A 90-minute block stacks 20-30 slices.</p>
<p>Compare that to the older rhythm of asking Claude for a whole feature in one big prompt. Big-batch prompts produce big-batch confusion - code the builder can't fully follow, errors that ripple in unclear ways, and a half-hour debugging session that ends with the feature partially rewritten by hand. The slice-based version is slower per prompt and dramatically faster per finished feature, because there's no untangling phase. Builders inside the club estimate slice-based building saves them roughly six hours a week compared to their previous big-batch habits. That's the workflow's biggest single contribution to the headline number.</p>
<blockquote><strong>TIP:</strong> If you can't describe the next slice in one sentence, it's too big. The rule that pays off most reliably is: when a slice starts to feel ambiguous, cut it in half before you ask for it.</blockquote>
<p>Inside the 90-minute block, distractions stay closed. Email, Slack, the phone - all silenced. The cost of context-switching during a flow state is measured in fifteen-minute slumps after every interruption, and the slice loop dies fast under that kind of repeated cost. Two clean blocks of 90 minutes consistently outproduce four hours of leaky, interrupted work. That math is well-documented outside of Claude Code; this workflow just inherits it cleanly because the loop is so fast.</p>
<h2>Agentic Test Loops That Run While You Think</h2>
<p>The third piece of the workflow is the agentic test loop. As the builder ships slices, they ask Claude to write a small test for each one and to keep a running test suite passing. Then - and this is the unlock - they let Claude run the suite in the background while they think about the next slice. When a test fails, Claude has already started diagnosing it by the time the builder looks up. The thinking time becomes free testing time. Two parallel streams of useful work in the same wall clock.</p>
<p>The hour math here surprised a lot of members the first time they sat down with the numbers. The old rhythm was: write code, manually test it, find a bug, debug it, fix it, retest. The agentic loop compresses the test/diagnose/fix step into something that overlaps with the next slice of thinking. The recovered time is roughly three hours a week across a busy build week - not because tests run faster, but because the builder isn't waiting for them, and isn't doing the diagnose-and-fix loop themselves on every failure.</p>
<p>Two cautions members surface consistently. First, the test suite has to be lightweight or the loop becomes a bottleneck. Heavy integration tests every slice will kill the rhythm. Second, the builder still reads the failures - the agentic loop is a draft of a diagnosis, not a substitute for understanding what broke. The members who use the loop well treat it as a fast first opinion, not a final answer. Used that way, it's one of the highest-leverage pieces of the whole rhythm.</p>
<h2>The End-of-Day Commit Ritual</h2>
<p>The day ends with a twenty-minute commit and reset. The builder asks Claude to summarize what was shipped today across the open projects, then writes the commit messages, pushes them, and updates the project notes with what's still in flight. Tomorrow morning's planning session inherits all of this context cleanly. The end-of-day twenty minutes pays itself back several times over the next morning, because the next plan starts from a clear picture rather than yesterday's fog.</p>
<p>The other thing the ritual does is psychological. It ends the working day with a definite punctuation mark - a commit, a note, a closed laptop - rather than a slow trailing-off into half-attention. Members who run this consistently report measurably better focus the next morning, which is hard to quantify but easy to feel. The freed evening hours are real. They show up as time spent on actual sales conversations, family dinners, or genuinely closed-out rest - not as more low-quality work bleeding into the evening.</p>
<p>Across all four pieces - planning, building, testing, committing - the recovered time math composes to roughly twenty hours a week for a builder running at consistent intensity. The exact number varies by person and project; some members report sixteen, some report twenty-four. What stays consistent is the shape: a small daily investment in planning and committing produces a much larger daily payoff in unbroken flow time. The trade is always favorable, which is why the rhythm keeps showing up in the community without anyone formally teaching it.</p>
<h2>How to Install the Workflow This Week</h2>
<p>The workflow doesn't have to be installed all at once. Members who try to switch to the full rhythm in a single day often abandon parts of it by Wednesday. The members who keep it running for months tend to have installed it one piece at a time, in roughly this order, over the course of a couple of weeks.</p>
<ol><li>Start with the 15-minute morning plan tomorrow. Open Claude, describe yesterday's state, ask for today's order. That single change alone pays back the first four hours of the week.</li><li>Add the slice-based building rule by the end of week one. Ban the big-batch prompt for one project and watch what happens - the pace will feel slower for a day, then sharply faster.</li><li>Introduce the agentic test loop in week two, on a project that already has a small test suite. Don't try to add the loop and a brand new test suite at the same time - they're two separate habits and they'll interfere.</li><li>Add the 20-minute end-of-day commit ritual last, once the morning plan has been running for a week. The reason for the order is that the morning plan benefits most from the end-of-day commit, so the commit ritual has its biggest payoff after the morning habit is already in place.</li></ol>
<p>The whole workflow is documented openly inside the club, where members compare their daily rhythms, share the exact prompts that have shaped each piece, and refine the shape together. A lot of the small tweaks that make the workflow work - the test-suite lightness rule, the no-distraction enforcement, the inheritance from morning to evening to next morning - emerged from those conversations rather than any single instruction. Membership is $9 a month, which is also the only commitment level that keeps the conversation honest, because nobody is performing for an audience at that price point. They're just builders comparing what works.</p>
<p>Twenty hours a week is a big number to claim. The honest version is that it's the high end of a range that runs from twelve to twenty-four depending on the person, the project, and how disciplined the focus blocks are. What stays true regardless of the exact number is that builders running this rhythm consistently outship builders who don't, and the gap widens over months. The workflow doesn't make anyone smarter. It just removes the friction that quietly steals half a working week from most builders, and gives that time back to be spent on the work that actually matters.</p>
<h2>FAQ</h2>
<p><strong>Where does the 20 hours a week actually come from?</strong></p><p>Roughly four hours from the morning plan replacing the first hour of daily drift, six hours from slice-based building eliminating rework, three hours from the agentic test loop overlapping with thinking time, and the rest from cleaner end-of-day handoffs that compound into better starts the next morning. The exact split varies by person, but those four pieces are where the bulk of the saving lives.</p>
<p><strong>What is slice-based building?</strong></p><p>Asking Claude to implement the smallest possible visible piece of progress at a time - one button, one route, one passing test - instead of asking for a whole feature in one big prompt. Each slice takes two to four minutes, and a 90-minute focus block typically stacks 20 to 30 slices. The rhythm produces code the builder can actually follow and edit, instead of big-batch output that's hard to trust.</p>
<p><strong>What is an agentic test loop?</strong></p><p>A rhythm where Claude writes a small test for each shipped slice and runs the test suite in the background while the builder thinks about the next slice. When a test fails, Claude has already begun diagnosing the failure by the time the builder looks up. The thinking time and the testing time happen in parallel, which recovers about three hours a week on a busy build week.</p>
<p><strong>How long does it take to install the full workflow?</strong></p><p>About two weeks if installed one piece at a time. Trying to switch the whole rhythm in a single day usually backfires by mid-week. The order that works most reliably: morning plan first, slice-based building in the same week, agentic test loop in week two, end-of-day commit ritual last once the morning habit is already in place.</p>
<p><strong>Do I need to be technical to run this workflow?</strong></p><p>Helpful but not required. The workflow's biggest pieces - morning planning, slice-based building, end-of-day commits - are habits about pacing and context, not technical skills. The agentic test loop is the one part where a small amount of test-writing literacy helps, and even that can be picked up by asking Claude to draft the first test for a new project and adapting from there.</p>
<p><strong>What's the single piece I should install first if I can only pick one?</strong></p><p>The 15-minute morning plan. It costs almost nothing to start tomorrow, it pays back the first four hours of the week immediately, and it produces a context document that makes every later session of the day sharper. Every other piece of the workflow gets easier once the morning plan is in place - and harder if it isn't.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Build Your First App with Claude Code (Without Knowing How to Code)</title>
      <link>https://www.claudecodeclub.ai/blog/build-your-first-app-with-claude-code</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/build-your-first-app-with-claude-code</guid>
      <pubDate>Thu, 28 May 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Getting Started</category>
      <category>Beginners</category>
      <category>Building</category>
      <description><![CDATA[A step-by-step walkthrough of going from a blank folder to a working app in an afternoon - the exact setup, prompts, and mindset that get beginners shipping on day one.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>You do not need to memorize a programming language to build a working app - you need to direct an AI that already knows the syntax for you.</li><li>The whole job is one loop: describe a small change in plain English, run it, look at what's wrong, describe the next change.</li><li>Finish one tiny app this week instead of half-building an ambitious one - the complete blank-folder-to-shipped loop is the real skill.</li></ul>
<h2>Build Your First App with Claude Code: The Myth to Drop First</h2>
<p>The biggest myth about building software is that you need to memorize a programming language before you can make anything real. With Claude Code that's no longer true. If you can describe what you want in plain English and you're willing to iterate, you can build a working app this week. The skill that matters now isn't syntax - it's knowing how to direct a capable AI that already knows the syntax for you.</p>
<p>That reframe is the entire unlock. Once you stop treating &quot;I can't code&quot; as the blocker and start treating &quot;I haven't described it clearly enough yet&quot; as the blocker, every problem in front of you becomes solvable in plain English. The rest of this walkthrough is the exact loop that takes you from an empty folder to something you can send a friend a link to - this afternoon.</p>
<blockquote><strong>TIP:</strong> Pick a project you would actually use - a todo list, a habit tracker, a tool that renames your files. Building something real keeps you motivated when the first bug shows up.</blockquote>
<h2>Step 1: Set Up and Make Your First Tiny Request</h2>
<p>Start by setting up Claude Code properly. Install it, point it at an empty project folder, and resist the temptation to ask for everything at once. Your first instruction should be small and concrete: &quot;Create a single-page app that lets me add tasks to a list and check them off.&quot; A tight, specific first prompt gives Claude a clear target and gives you something runnable in minutes rather than a sprawling half-built mess.</p>
<p>The instinct most beginners fight is the urge to ask for the finished product in one breath - &quot;build me a full task manager with accounts and reminders and a calendar.&quot; Don't. A giant first prompt produces a giant pile of code you can't read, can't run cleanly, and can't fix. One small, visible thing on screen is worth more than four hundred lines you don't understand.</p>
<h2>Step 2: Run, Look, Describe - the Loop That Is the Whole Job</h2>
<p>Once you have something on screen, the real work begins - and it's not coding, it's reviewing. Run the app, click around, and notice what's wrong or missing. Then describe the change the same way you'd explain it to a teammate: &quot;The checked-off tasks should move to the bottom and turn gray.&quot; Claude makes the edit, you re-run, you look again. This tight loop of describe, run, observe is the entire job. Most beginners get stuck because they try to imagine the whole thing in their head instead of building it one visible step at a time.</p>
<ol><li>Describe one small change in plain English.</li><li>Let Claude make the edit.</li><li>Run the app and actually look at it.</li><li>Notice the next thing that's wrong or missing - and describe that.</li></ol>
<p>Twenty laps of that loop and you have a real app. There is no secret beyond it. The builders who ship are simply the ones who run the loop instead of trying to plan the whole thing in their head first.</p>
<h2>Step 3: Write Down Your Context Once</h2>
<p>Give Claude context about your goal up front. A short note in your project - what the app is for, who uses it, what matters most - dramatically improves every response that follows. Claude Code can read that context on each turn, so instead of re-explaining yourself constantly, you write it down once and let the tool carry it forward. This single habit is the difference between fighting the AI and flowing with it.</p>
<blockquote><strong>NOTE:</strong> A CLAUDE.md file at the root of your project is where this context lives. Three or four bullet points - what the app is, who it's for, what's in and out of scope - is enough to sharpen every future turn.</blockquote>
<h2>Step 4: Expect Errors, and Paste Them Straight Back</h2>
<p>Expect things to break, and don't panic when they do. When you hit an error, copy the exact message and paste it straight back to Claude. Errors are not failures - they're the most precise feedback you can get, and Claude is unusually good at reading a stack trace and fixing the underlying cause. The builders who progress fastest are simply the ones who treat every error as a normal step rather than a sign they're not cut out for this.</p>
<p>Resist scope creep on your first project. It is far better to fully finish a tiny app - one that you actually use - than to half-build something ambitious you abandon. A finished todo list, a personal habit tracker, a tiny tool that renames your files: any of these teaches you the full loop from blank folder to working software. That complete loop is the thing you're really learning, and it transfers to everything you build next.</p>
<h2>Step 5: Ship It Somewhere You Can Reach</h2>
<p>When it works, ship it somewhere you can reach it. Deploying your first project, even just for yourself, changes how the whole thing feels - it stops being a toy in a folder and becomes a real thing that exists. Claude Code can walk you through getting it online step by step. The moment you send a friend a link to something you built, the abstract idea of &quot;learning to code&quot; becomes a concrete skill you obviously have.</p>
<p>Your first app won't be impressive, and that's exactly the point. The goal of week one isn't a portfolio piece - it's proof to yourself that the loop works and that you can drive it. Once you've felt the rhythm of describe, build, review, fix, ship even once, every future project is just a longer version of the same motion. That's the entire foundation, and most people never give themselves the chance to feel it.</p>
<h2>FAQ</h2>
<p><strong>Can I really build an app with Claude Code if I can't code?</strong></p><p>Yes. Claude Code handles the syntax - your job is to describe what you want clearly and review what comes back. The skill you're building isn't memorizing a language, it's directing the AI and running the describe-run-look loop. A first working app in an afternoon is a realistic goal for a complete beginner.</p>
<p><strong>What should my first project be?</strong></p><p>Something tiny that you'd actually use - a todo list, a habit tracker, a tool that renames files. The point of the first project isn't to impress anyone; it's to complete the full loop from empty folder to shipped app once, so the motion becomes familiar. Small and finished beats ambitious and abandoned.</p>
<p><strong>What do I do when Claude Code throws an error?</strong></p><p>Copy the exact error message, including the stack trace, and paste it straight back to Claude. Errors are the most precise feedback you get, and Claude is unusually good at reading them and fixing the underlying cause. Don't rewrite the code around the error - hand the error to Claude and let it diagnose.</p>
<p><strong>How do I stop Claude from forgetting what I'm building?</strong></p><p>Write a short context note - a CLAUDE.md file at the root of your project - with what the app is, who uses it, and what matters most. Claude Code reads it every turn, so you stop re-explaining yourself each session. Twenty minutes on that file makes every later response sharper.</p>
<p><strong>How long does it take to build a first app?</strong></p><p>An afternoon for something tiny and working. The slow part of building - learning syntax and wrestling with tools - is mostly handled for you, so what's left is direction and iteration. Keep the scope small, run the loop, and you'll have something runnable the same day you start.</p>
<p><strong>Should I deploy my first app even if it's rough?</strong></p><p>Yes - deploy it on day one even if it's ugly and only you have the link. Putting it behind a real URL changes how the project feels and turns it from a folder on your laptop into a real thing. Claude Code can walk you through deployment step by step.</p>]]></content:encoded>
    </item>
    <item>
      <title>What Are MCP Servers, and Why Do They Matter for Claude Code?</title>
      <link>https://www.claudecodeclub.ai/blog/what-are-mcp-servers-and-why-they-matter</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/what-are-mcp-servers-and-why-they-matter</guid>
      <pubDate>Thu, 21 May 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>MCP</category>
      <category>Building</category>
      <category>Automation</category>
      <description><![CDATA[MCP servers are how Claude Code reaches out of the chat window and into your real tools - Gmail, GitHub, your database, the web. Here's what they actually are and why they change what you can build.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>MCP servers are the doorways that let Claude Code reach out of the chat window into your real tools - Gmail, GitHub, your database, the live web.</li><li>Each server is a translator with a job description: it exposes a specific, permissioned menu of actions, so you decide exactly what Claude can touch.</li><li>The real unlock is combining servers - research, draft, and log a follow-up in one pass - which is where the time-saving automations start.</li></ul>
<h2>What Are MCP Servers? The Doorways Out of the Box</h2>
<p>When people first use Claude Code, it feels like a brilliant assistant trapped in a box. It can read and write files in your project, but it can't check your email, query your database, or look something up on the live web. MCP servers are the doorways out of that box. MCP - the Model Context Protocol - is a standard way to give Claude safe, structured access to outside tools and data, and once you understand it, the ceiling on what you can build lifts dramatically.</p>
<p>The simplest way to think about an MCP server is as a translator with a job description. It sits between Claude and some external system - say, your Notion workspace - and exposes a clear menu of actions Claude is allowed to take: search pages, create a page, update a property. Claude doesn't need to know how Notion's internals work; it just calls the actions on the menu. The server handles the messy details and the permissions, so you stay in control of exactly what Claude can and cannot touch.</p>
<blockquote><strong>NOTE:</strong> Mental model: Claude is the brain, MCP servers are its hands, and each server is a specific, permissioned reach into a specific tool. Once that picture is clear, you stop asking &quot;can Claude do this?&quot; and start asking &quot;which server gives it the reach it needs?&quot;</blockquote>
<h2>Why They Matter: Most Software Is Just Plumbing</h2>
<p>This matters because most useful software is really just plumbing between systems. A tool that turns starred emails into tasks, a script that pulls your calendar and drafts a daily plan, an agent that watches a folder and files documents - none of that is possible from inside a sealed chat. With the right MCP servers connected, Claude Code can read your Gmail, write to your task manager, and check your calendar in a single workflow, which is where the genuinely time-saving automations start to appear.</p>
<p>There's already a rich ecosystem of MCP servers for the tools you use every day - Gmail, Google Drive, GitHub, Slack, Notion, databases, and web search are all common. Connecting one is usually a matter of adding it to your configuration and authenticating once. After that, Claude treats it as a native capability: you can simply ask it to &quot;check my unread email and summarize anything urgent,&quot; and it knows how to reach the Gmail server to do exactly that.</p>
<h2>Permissions Are a Feature, Not an Afterthought</h2>
<p>Security is a feature here, not an afterthought. Because each server defines precisely which actions are available, you decide the blast radius. A read-only web-search server can't delete anything; a calendar server you set up for reading won't suddenly start sending invites. This explicit, per-tool permission model is what makes it sane to let an AI act on your real accounts - you're never handing over a blank check, just a specific, revocable set of keys.</p>
<blockquote><strong>WARNING:</strong> Start read-only. When you connect a new server, give it the narrowest set of actions that does the job - reading before writing, one account before many. You can always widen the permissions once you trust the workflow.</blockquote>
<h2>The Real Unlock: Combining Servers</h2>
<p>The real unlock comes when you combine servers. Connect web search, your email, and your task manager, and you can ask Claude to research a topic, draft an outreach email, and log a follow-up task in one pass. Each server is modest on its own, but chained together they let Claude operate across your whole stack the way a capable assistant would. This composition is where members of the club tend to have their &quot;oh, this changes everything&quot; moment.</p>
<p>You don't need to understand the protocol's internals to benefit from it, just as you don't need to understand TCP to send an email. What's worth knowing is the mental model above - brain, hands, specific reach. Everything else is picking the servers that match the tools you already live in.</p>
<h2>Where to Start</h2>
<p>If you're just starting, pick one server tied to a tool you already live in - email or your notes app are great choices - and build one small automation end to end. Feeling Claude act on your real data for the first time is genuinely a different experience from watching it edit files. That first connected workflow is usually the moment the whole concept of building with AI snaps into focus.</p>
<h2>FAQ</h2>
<p><strong>What does MCP stand for?</strong></p><p>MCP is the Model Context Protocol - a standard way to give Claude safe, structured access to outside tools and data. An MCP server is a small program that implements the protocol for one system (Gmail, GitHub, a database) and exposes a menu of actions Claude is allowed to take against it.</p>
<p><strong>What can MCP servers actually let Claude Code do?</strong></p><p>They let Claude reach beyond your project files into real tools - reading your Gmail, writing to a task manager, querying a database, searching the live web, updating a Notion page. Anything with an MCP server becomes a native capability Claude can use as part of a workflow.</p>
<p><strong>Are MCP servers safe to connect to my real accounts?</strong></p><p>Yes, because each server defines exactly which actions are available, so you control the blast radius. A read-only web-search server can't delete anything; a calendar server set up for reading won't send invites. You're handing over a specific, revocable set of keys, not a blank check - and it's good practice to start read-only.</p>
<p><strong>Do I need to understand the protocol to use MCP servers?</strong></p><p>No. Just as you don't need to understand TCP to send an email, you don't need the protocol's internals to benefit from MCP. The useful model is: Claude is the brain, servers are its hands, each server is a specific reach into a specific tool. That's enough to start building.</p>
<p><strong>How do I connect an MCP server to Claude Code?</strong></p><p>Usually you add the server to your configuration and authenticate once. After that, Claude treats it as a built-in capability - you can ask it to &quot;check my unread email and summarize anything urgent&quot; and it knows to reach the Gmail server to do it.</p>
<p><strong>Which MCP server should I set up first?</strong></p><p>Pick one tied to a tool you already use daily - email or your notes app are great first choices - and build one small automation end to end. Feeling Claude act on your real data is a different experience from watching it edit files, and that first connected workflow is usually when the whole concept clicks.</p>]]></content:encoded>
    </item>
    <item>
      <title>5 Claude Code Workflows That Actually Get You Paid</title>
      <link>https://www.claudecodeclub.ai/blog/5-claude-code-workflows-that-get-you-paid</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/5-claude-code-workflows-that-get-you-paid</guid>
      <pubDate>Thu, 14 May 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Monetization</category>
      <category>Freelancing</category>
      <category>Workflows</category>
      <description><![CDATA[Learning Claude Code is fun, but turning it into income is the goal. Here are five concrete, repeatable workflows our members use to land clients and ship paid work.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>The gap between knowing Claude Code and earning with it is smaller than most people think - it comes down to packaging a specific, repeatable outcome.</li><li>Five workflows consistently convert the skill into revenue: small business sites, operator automations, internal tools, content systems, and productized fixes.</li><li>Across all five the pattern is identical - choose a narrow, nameable deliverable, ship it fast, and let the relationship expand from there.</li></ul>
<h2>Claude Code Workflows That Get You Paid: Sell an Outcome, Not &quot;AI&quot;</h2>
<p>There's a gap between knowing how to use Claude Code and earning money with it, and it's smaller than most people think. The builders who get paid aren't necessarily the most technical - they're the ones who package a specific, repeatable outcome someone will pay for. Below are five workflows that consistently turn the skill into revenue, each built around a clear deliverable rather than vague &quot;AI consulting.&quot;</p>
<table><caption>Five paid workflows at a glance</caption><thead><tr><th>Workflow</th><th>What you sell</th><th>Why it pays</th></tr></thead><tbody><tr><td>Small business website</td><td>A live, professional site this week</td><td>Flat fee, fast delivery, clear value</td></tr><tr><td>Operator automation</td><td>Hours given back each week</td><td>Becomes a monthly retainer</td></tr><tr><td>Internal tool</td><td>A spreadsheet replaced by real software</td><td>Tailored, so more valuable than off-the-shelf</td></tr><tr><td>Content system</td><td>A machine that produces more, faster</td><td>Compounds into the next system</td></tr><tr><td>Productized fix</td><td>The same proven solution, repeatedly</td><td>High margin, rising rates</td></tr></tbody></table>
<h2>1. The Small Business Website</h2>
<p>The first is the small business website. Plenty of local businesses still have no site or an embarrassing one, and a clean, fast, single-page site is something you can build with Claude Code in an afternoon. The pitch is simple and concrete: a professional web presence, live this week, for a flat fee. You're not selling code - you're selling a finished, working website - and Claude handles the parts that used to require a developer, so your time goes into design, copy, and the client relationship.</p>
<h2>2. Automation for Busy Operators</h2>
<p>The second is automation for busy operators. Almost everyone running a business has some repetitive weekly task they hate: copying data between tools, sending the same follow-ups, compiling a report. With MCP servers connected, Claude Code can automate these end to end. The workflow is to interview the client about where their week leaks time, build one tight automation that plugs the biggest leak, and charge for the hours you give back. Done well, this turns into a monthly retainer because their needs keep evolving.</p>
<h2>3. The Internal Tool</h2>
<p>The third is the internal tool. Teams constantly cobble together fragile spreadsheets to track things software should handle - leads, inventory, onboarding steps. You can build a simple, purpose-fit internal tool that replaces the spreadsheet entirely. Because it's tailored to exactly how they work, it's far more valuable to them than any off-the-shelf product, and it's the kind of project that's quick for you with Claude Code but feels like magic to a non-technical client.</p>
<h2>4. Content and Marketing Systems</h2>
<p>The fourth is content and marketing systems. Creators and marketers drown in repetitive production work, and Claude Code can build them systems that don't - faceless video pipelines, content repurposing tools, prompt libraries wired to their brand voice. Here you're selling leverage: a machine that produces more of what they already need, faster. This work tends to compound, because once a client trusts you with one system they'll ask you to build the next.</p>
<h2>5. The Productized Fix</h2>
<p>The fifth is the productized fix. Instead of custom work, you identify one specific, common problem and build the same solution for many clients - a booking widget, a lead-capture form that routes to their CRM, a Stripe buy button wired into their site. Productizing means you build it well once and deliver it repeatedly with small tweaks, which dramatically improves your margins and lets you raise your rates as your delivery gets faster.</p>
<h2>The Pattern Underneath All Five</h2>
<p>Across all five, the pattern is the same: choose a narrow, nameable outcome, deliver it fast with Claude Code, and let the relationship expand from there. Clients don't buy &quot;AI&quot; - they buy a website that's live, a task that's automated, a spreadsheet that's finally real software. The more concrete your offer, the easier it is to sell, and the faster you go from learning to actually getting paid.</p>
<blockquote><strong>TIP:</strong> The hardest part is almost always the first sale, not the building. Pick one of these workflows and pitch it this week - you won't feel ready, you'll feel ready after the first client, which is exactly backwards from how most people expect it to go.</blockquote>
<h2>FAQ</h2>
<p><strong>Do I need to be a strong coder to get paid with Claude Code?</strong></p><p>No. The builders who get paid aren't the most technical - they're the ones who package a specific, repeatable outcome a client will pay for. Claude Code handles the building; your edge is choosing a narrow deliverable and managing the client relationship around it.</p>
<p><strong>Which workflow should I start with?</strong></p><p>The small business website is the most beginner-friendly: the deliverable is obvious, you can build it in an afternoon, and the pitch (&quot;a professional site, live this week, for a flat fee&quot;) is easy to make. Once you've shipped one, the automation and internal-tool workflows open up naturally.</p>
<p><strong>How do I turn a one-off project into recurring income?</strong></p><p>Operator automations and content systems naturally become retainers because the client's needs keep evolving - once you've plugged the biggest time leak, there's always a next one. Deliver one tight win, then stay close enough to spot the next, and the one-off becomes a monthly relationship.</p>
<p><strong>What makes a productized offer better than custom work?</strong></p><p>You build it well once and deliver it repeatedly with small tweaks - a booking widget, a lead-capture form, a Stripe buy button. That repetition improves your margins and lets you raise rates as delivery gets faster, instead of re-solving the same problem from scratch each time.</p>
<p><strong>What do clients actually want to buy?</strong></p><p>Not &quot;AI&quot; - a concrete result. A website that's live, a task that's automated, a spreadsheet that's finally real software. The more specific and nameable your offer, the easier it is to sell and to refer, because people know exactly what to send you.</p>
<p><strong>When should I start pitching?</strong></p><p>This week, before you feel ready. The first sale is harder than the building, and the confidence you're waiting for only arrives after you've delivered one paid project. Pick a workflow, name the outcome, and make the offer rather than waiting to feel fully prepared.</p>]]></content:encoded>
    </item>
    <item>
      <title>From Complete Beginner to Shipping in Week One: A Realistic Roadmap</title>
      <link>https://www.claudecodeclub.ai/blog/from-beginner-to-shipping-in-week-one</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/from-beginner-to-shipping-in-week-one</guid>
      <pubDate>Thu, 07 May 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Getting Started</category>
      <category>Beginners</category>
      <category>Building</category>
      <description><![CDATA[Shipping something real in your first week sounds like hype until you see the path. Here's a day-by-day roadmap that takes you from zero to a deployed project - calmly, without burning out.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Shipping in week one is realistic because Claude Code handles the slow part - syntax and tooling - leaving you direction and iteration to learn by doing.</li><li>It's not about grinding twelve hours a day; it's a small amount of deliberate progress each day that compounds into a deployed project by the weekend.</li><li>The day-by-day roadmap below takes you from setup on day one to a live URL by day six, with reflection and the next loop on day seven.</li></ul>
<h2>From Beginner to Shipping in Week One: Why It's Actually Realistic</h2>
<p>&quot;Ship in week one&quot; can sound like marketing, but it's achievable for a real reason: with Claude Code, the slow part of building - learning syntax and wrestling with tools - is mostly handled for you. What's left is direction and iteration, and those you can learn by doing in a few focused sessions. The roadmap below isn't about grinding twelve hours a day; it's about a small amount of deliberate progress each day that compounds into a shipped project by the weekend.</p>
<table><caption>The week-one roadmap</caption><thead><tr><th>Day</th><th>Focus</th><th>Outcome</th></tr></thead><tbody><tr><td>1</td><td>Setup + first runnable thing</td><td>A page with one working button</td></tr><tr><td>2</td><td>Context + intention</td><td>Project purpose written down</td></tr><tr><td>3-4</td><td>Build in visible slices</td><td>Core feature working, then the next</td></tr><tr><td>5</td><td>Rough edges + bugs</td><td>Not embarrassing to show a friend</td></tr><tr><td>6</td><td>Deployment</td><td>A live public URL</td></tr><tr><td>7</td><td>Reflection + next loop</td><td>Belief that the loop works</td></tr></tbody></table>
<h2>Day 1: Setup and Your First Runnable Thing</h2>
<p>On day one, your only job is setup and your first runnable thing. Install Claude Code, open an empty folder, and build the smallest possible version of something - a page that says hello and has one button that does something. This sounds trivial, but it teaches you the entire core loop: ask, run, look, adjust. Don't skip past how small this is. The goal today is not progress on a product, it's fluency with the motion you'll repeat all week.</p>
<h2>Day 2: Context and Intention</h2>
<p>Day two is about context and intention. Decide what you're actually building this week - keep it tiny and personal, like a tool you'd genuinely use - and write down its purpose in your project so Claude can read it. Spending twenty minutes describing what you want and who it's for makes every later prompt sharper. Beginners who skip this step end up re-explaining themselves constantly; the ones who do it find Claude suddenly seems to &quot;get&quot; them.</p>
<h2>Days 3-4: Build in Visible Slices</h2>
<p>Days three and four are the build, done in visible slices. Pick the single most important feature and get it working before you touch anything else. Then add the next slice, run it, and review. Resist the urge to ask for the whole app in one giant prompt - you'll get something you can't understand or fix. The rhythm of one small working slice at a time keeps you in control and means you always have something runnable, which keeps the whole thing from feeling overwhelming.</p>
<blockquote><strong>WARNING:</strong> If you can't describe the next slice in one sentence, it's too big. Cut it in half. A vague, oversized prompt is the single most common reason a beginner's week-one project stalls.</blockquote>
<h2>Day 5: Rough Edges and Your Most Instructive Bugs</h2>
<p>Day five is for the rough edges, and this is where it starts to feel real. Fix the layout, handle the obvious errors, make it look like something you'd show a friend. You don't need polish - you need it to not be embarrassing. This is also where you'll hit your most instructive bugs, so lean into them: copy each error back to Claude, understand roughly what went wrong, and watch how it gets resolved. Every fixed bug makes you a little more capable of fixing the next one yourself.</p>
<h2>Day 6: Deployment - the Step Most Beginners Avoid</h2>
<p>Day six is deployment, and it's the step most beginners avoid for too long. Getting your project online - even just for yourself - is what turns it from an experiment into a real thing that exists in the world. Claude Code can walk you through it. The first time you open a public link to something you built, the entire abstract goal of &quot;learning to build software&quot; collapses into a simple, undeniable fact: you did it, it's live, here's the proof.</p>
<h2>Day 7: Reflection and the Next Loop</h2>
<p>Day seven is reflection and the next loop. Look at what you shipped, note what was hard, and pick the next slightly bigger thing to build. The point of week one was never the project itself - it was internalizing the loop and proving to yourself it works. Once that belief is in place, the second week is just a longer, more confident version of the first, and the curve from here is much gentler than it looked from the start.</p>
<p>The reason this works is psychological as much as technical. Most people never ship because they wait to feel ready, and readiness never comes from waiting. By forcing one small, shippable outcome in seven days, you skip the endless preparation phase entirely and land directly in the only place real learning happens: building, breaking, and fixing actual things. That's the whole secret, and it's available to anyone willing to start small.</p>
<h2>FAQ</h2>
<p><strong>Can a complete beginner really ship something in a week?</strong></p><p>Yes, because Claude Code handles the slow part - syntax and tooling - so what's left is direction and iteration, which you learn by doing. Keep the project tiny and personal, make a little deliberate progress each day, and a deployed project by the weekend is a realistic outcome, not hype.</p>
<p><strong>How many hours a day does this take?</strong></p><p>Not many - this isn't a twelve-hour-a-day grind. The roadmap is built around a small amount of focused progress each day that compounds. A couple of intentional sessions daily is enough to go from setup on day one to a live URL by day six.</p>
<p><strong>What should I build for my first week?</strong></p><p>Something tiny and personal that you'd genuinely use - a small tool, a tracker, a simple page that does one thing. The project itself isn't the point; internalizing the describe-run-look loop is. A finished tiny app teaches you more than an ambitious one you abandon.</p>
<p><strong>Why write down the project's purpose on day two?</strong></p><p>Because Claude Code reads that context on every turn, so twenty minutes describing what you're building and who it's for makes every later prompt sharper. Beginners who skip it re-explain themselves constantly; the ones who do it find Claude suddenly seems to understand what they want.</p>
<p><strong>Do I really need to deploy on day six?</strong></p><p>It's the step most beginners avoid, and it's the one that changes everything. Putting the project online - even just for yourself - turns it from an experiment into a real thing and collapses &quot;learning to build software&quot; into an undeniable fact: it's live, here's the link. Claude Code can walk you through it.</p>
<p><strong>What happens after week one?</strong></p><p>Week two is just a longer, more confident version of week one. Once you've proven the loop works by shipping something real, the learning curve gets much gentler than it looked at the start. Pick the next slightly bigger thing and run the same motion.</p>]]></content:encoded>
    </item>
    <item>
      <title>ChatGPT vs Claude Code for Building Software: An Honest Comparison</title>
      <link>https://www.claudecodeclub.ai/blog/chatgpt-vs-claude-code-for-building-software</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/chatgpt-vs-claude-code-for-building-software</guid>
      <pubDate>Thu, 30 Apr 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Iya</dc:creator>
      <category>Claude Code</category>
      <category>Tools</category>
      <category>Building</category>
      <description><![CDATA[Both can write code, so why do serious builders reach for Claude Code? An honest look at where each tool fits, and why the difference comes down to acting in your project, not just chatting about it.]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>Both can write code, but they do different jobs: ChatGPT hands you snippets to copy and paste; Claude Code acts inside your project, editing files and fixing what breaks.</li><li>The real difference is the loop - a chat tool makes you the glue between browser and editor, while Claude Code closes the build-test-fix loop itself.</li><li>Use a chat tool to think and explore; use Claude Code to build and ship software that lives in a real project and touches your real tools.</li></ul>
<h2>ChatGPT vs Claude Code for Building Software: Different Jobs, Not Rivals</h2>
<p>ChatGPT and Claude Code can both write code, so it's fair to ask why anyone serious about building reaches for one over the other. The honest answer is that they're different kinds of tools doing different jobs. ChatGPT is a brilliant conversation partner that hands you code to copy and paste. Claude Code is an agent that lives inside your project and actually does the work - reading your files, editing them, running commands, and fixing what breaks. That distinction sounds small but it changes the entire experience of building.</p>
<table><caption>ChatGPT vs Claude Code for building software</caption><thead><tr><th>Dimension</th><th>ChatGPT</th><th>Claude Code</th></tr></thead><tbody><tr><td>The loop</td><td>You copy snippets and errors back and forth</td><td>Edits files, runs the project, reads errors, iterates</td></tr><tr><td>Context</td><td>Only what you've pasted in</td><td>Reads your whole project + your context file</td></tr><tr><td>Reach</td><td>Describes integrations</td><td>Acts on tools via MCP servers</td></tr><tr><td>Best for</td><td>Learning, exploring, second opinions</td><td>Building and shipping real software</td></tr></tbody></table>
<h2>The Core Difference Is the Loop</h2>
<p>The core difference is the loop. With a chat tool, you describe a problem, get an answer, copy it into your editor, run it, hit an error, copy the error back, and repeat - you are the glue holding the whole process together. Claude Code closes that loop itself. It sees the file it's editing, runs the project, reads the actual error, and corrects course without you ferrying information back and forth. For real software with many interconnected files, removing that manual shuttling is the difference between flow and friction.</p>
<h2>Context and Reach: The Two Gaps That Compound</h2>
<p>Context is the second big gap. A chat window only knows what you've pasted into it, so as your project grows you spend more and more effort re-explaining how the pieces fit. Claude Code can read your whole project directly, including a context file you write describing your goals. It already knows your file structure, your conventions, and what you're trying to achieve, which means its suggestions fit your actual codebase instead of a generic imagined one. That fit compounds enormously as projects get larger.</p>
<p>Then there's reach. Through MCP servers, Claude Code can connect to your real tools - email, databases, the web, your task manager - and take action across them. A chat tool can describe how you might integrate those things, but it can't reach out and do it. If your goal is software that touches the real world rather than code snippets in isolation, that ability to actually act is decisive, and it's a category of capability a pure chat interface simply doesn't have.</p>
<h2>ChatGPT Isn't Bad - It's Built for a Different Job</h2>
<p>None of this makes ChatGPT bad - it makes it different. For explaining a concept, brainstorming an approach, or getting a quick second opinion, a fast conversational tool is genuinely excellent and often the right call. Many builders use both: a chat tool to think out loud and explore ideas, and Claude Code to actually build and ship. Recognizing which job you're doing in the moment is more useful than declaring one tool the winner.</p>
<p>Where the gap becomes obvious is on anything that spans more than a single file or a single step. Building a real app means dozens of files that reference each other, errors that ripple across them, and changes that have to stay consistent everywhere. Driving that through copy-paste from a chat window is exhausting and error-prone. An agent that holds the whole project in view and edits it directly is built for exactly this, which is why it becomes the default tool the moment your ambitions outgrow a single snippet.</p>
<h2>Why the Agent Model Is Gentler for Beginners</h2>
<p>For beginners specifically, the agent model is also gentler, which is counterintuitive. You might assume a more powerful tool is harder, but Claude Code lets you stay in plain English and never forces you to understand the mechanics of copying code into the right place. You describe what you want, it handles the wiring, and you review the result. That keeps you focused on the part you can actually reason about - the outcome - rather than the plumbing, which is exactly where beginners get stuck with a chat-only setup.</p>
<blockquote><strong>TIP:</strong> Match the tool to the task: reach for a chat tool when you want to learn, explore, or get unstuck on a concept; reach for Claude Code when you want to build and ship something real. Used that way they're complementary, not competing.</blockquote>
<h2>FAQ</h2>
<p><strong>Is Claude Code better than ChatGPT for coding?</strong></p><p>For actually building and shipping software inside a real project, yes - Claude Code edits your files, runs your code, and fixes errors without the copy-paste loop. ChatGPT is excellent for learning, exploring, and explaining code. They're complementary: think in ChatGPT, build in Claude Code.</p>
<p><strong>Why is the copy-paste loop such a big deal?</strong></p><p>Because with a chat tool you're the glue - describe, copy the snippet into your editor, run it, copy the error back, repeat. That's fine for one file but exhausting for a real app with many interconnected files. Claude Code closes the loop itself, which is the difference between flow and friction.</p>
<p><strong>Can ChatGPT see my whole project like Claude Code?</strong></p><p>No. A chat window only knows what you've pasted into it, so as your project grows you spend more effort re-explaining how the pieces fit. Claude Code reads your whole project directly, including a context file you write, so its changes fit your actual codebase instead of a generic imagined one.</p>
<p><strong>Should I stop using ChatGPT if I get Claude Code?</strong></p><p>No - keep both. ChatGPT is genuinely great for explaining concepts, brainstorming approaches, and quick second opinions. The useful habit is recognizing which job you're doing: thinking and exploring in ChatGPT, building and shipping in Claude Code.</p>
<p><strong>Is Claude Code harder for beginners than ChatGPT?</strong></p><p>Counterintuitively, no. Claude Code lets you stay in plain English and never makes you figure out where to paste code. You describe what you want, it handles the wiring, you review the result - which keeps a beginner focused on the outcome rather than the plumbing where chat-only setups tend to trip people up.</p>
<p><strong>What can Claude Code do that ChatGPT can't?</strong></p><p>Act in your project and on your tools. Through MCP servers it can read your email, query a database, search the live web, and update a task manager - then edit your files and run your code to use what it found. ChatGPT can describe those integrations but can't reach out and perform them.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to Land Your First Claude Code Client in 30 Days</title>
      <link>https://www.claudecodeclub.ai/blog/land-your-first-claude-code-client-in-30-days</link>
      <guid isPermaLink="true">https://www.claudecodeclub.ai/blog/land-your-first-claude-code-client-in-30-days</guid>
      <pubDate>Thu, 23 Apr 2026 00:00:00 GMT</pubDate>
      <dc:creator>Duncan Rogoff</dc:creator>
      <category>Monetization</category>
      <category>Freelancing</category>
      <category>Getting Started</category>
      <description><![CDATA[Most builders learn the tools and then freeze at the part where someone actually pays them. Here's the 30-day plan I'd hand my younger self for going from "learning Claude Code" to "first paid client."]]></description>
      <content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul><li>The gap between knowing Claude Code and getting paid for it is mostly a confidence gap, not a skill gap - and 30 days is enough to close it.</li><li>Four weeks, each building on the last: positioning, outbound, the first call, and delivery.</li><li>The two requests that change everything come at the end - a written testimonial and one introduction - which is how a single 30-day push turns into repeatable income.</li></ul>
<h2>Land Your First Claude Code Client in 30 Days: It's a Confidence Gap</h2>
<p>The gap between knowing Claude Code and getting paid for Claude Code is mostly a confidence gap, not a skill gap. Every month I talk to builders who can ship a real tool in an afternoon but won't send a single outbound message until they feel &quot;ready.&quot; Readiness, in this game, is something you earn by doing - and 30 days is more than enough to engineer that first paid project if you spend the time correctly. The plan below is the one I'd give my younger self, broken into four weeks that each compound on the last.</p>
<table><caption>The 30-day plan</caption><thead><tr><th>Week</th><th>Focus</th><th>The win</th></tr></thead><tbody><tr><td>1</td><td>Positioning + a proof piece</td><td>A one-line offer and a live demo</td></tr><tr><td>2</td><td>Outbound - one message a day</td><td>Enough conversations to land a client</td></tr><tr><td>3</td><td>The first call</td><td>A flat fee quoted and committed on the call</td></tr><tr><td>4</td><td>Delivery + the two asks</td><td>A shipped v1, a testimonial, and an intro</td></tr></tbody></table>
<h2>Week 1: Positioning, Not Building</h2>
<p>Week one is positioning, not building. Pick one outcome you can confidently deliver in under a week with Claude Code - a small business website, one focused automation, a simple internal tool - and write a one-line offer around it. &quot;I build small business websites that go live in seven days for a flat fee&quot; beats &quot;I help with AI&quot; every time. The narrowness is the feature: a specific promise is far easier to sell than a vague capability, and it's also far easier for someone to refer you because they finally know what to send people to you for.</p>
<p>While you're locking in your offer, build one tiny portfolio piece that proves it. Don't wait for a client to give you something to point at - invent a fake business, build the exact deliverable, and host it live. This piece does double duty: it's proof you can ship, and it's the rehearsal that surfaces every awkward part of your workflow before a paying client is watching. Spending two evenings on this in week one means you'll never have to send a cold message and pray someone trusts you on vibes alone.</p>
<h2>Week 2: Outbound - Where Most People Quietly Quit</h2>
<p>Week two is outbound, and this is where most people quietly quit. Make a list of 30 plausible targets - local businesses, creators in your niche, small operators in your network - and reach out to one per day with a specific, no-fluff message. Reference something real about them, name the outcome, and offer a short call. You're not asking for a project on the first message; you're asking for ten minutes. Thirty messages over fourteen days will produce more than enough conversations to land a first client, and the early ones will feel awkward in exactly the way that's normal.</p>
<p>Treat every reply, even the rejections, as paid training. The objections you hear in week two are the ones every future client will raise - too expensive, not the right time, already working with someone - and learning to answer them calmly is what separates people who land clients from people who write more posts about wanting to. Keep a simple doc of objections and your improving responses to them. By the end of the second week, you'll notice your replies have gotten shorter, more confident, and more concrete, which is the whole point.</p>
<blockquote><strong>WARNING:</strong> Outbound is the week people abandon the plan, because it's the only part that can feel like rejection. Send the one message a day anyway. The awkwardness is not a sign you're doing it wrong - it's the cost of admission, and it fades fast.</blockquote>
<h2>Week 3: The First Call - Listen, Then Quote on the Call</h2>
<p>Week three is where the first real conversation usually lands, and the goal of that call is to listen, not to pitch. Ask about the problem in their own words, restate it back, and only then describe how you'd solve it with the offer you defined in week one. Quote a flat fee on the call - not later, not over email - and give a timeline tied to a specific week. Builders lose so many deals to the gap between &quot;interesting call&quot; and &quot;I'll send a proposal next week&quot; that they never make up. If you can quote and commit on the call, you'll close more often than people with twice your skill.</p>
<h2>Week 4: Delivery and the Two Asks That Compound</h2>
<p>Week four is delivery, and the trap here is over-engineering. Your client doesn't want a masterpiece; they want a working version of the outcome you promised, ideally a day or two sooner than you said. Use Claude Code to ship a clean v1 fast, then spend the remaining time on the parts the client will actually notice - copy, layout, the moment they first see it work. Send small visible updates along the way so they feel progress instead of waiting in silence. The way you make them feel during delivery is what determines whether they refer you, not the elegance of what's under the hood.</p>
<p>Once the project is live, ask for two things before you send the final invoice: a short written testimonial and one introduction to someone in their network. These two requests cost the client nothing and they're the seeds of everything that follows. The testimonial unlocks your second client by removing the doubt that paralyzed your first outreach. The intro is the cheat code that makes month two feel completely different from month one - and that compounding is how a single 30-day push turns into a real, repeatable income from Claude Code work.</p>
<p>If you do this for one focused month, you will almost certainly land a paid client, and you will definitely come out the other side a sharper operator regardless of the outcome of any single conversation. The builders who get paid with Claude Code aren't the ones with the best stack - they're the ones who decided that getting paid was a skill worth practicing on a deadline. Pick your offer this weekend, write your first message Monday, and let the calendar do the rest.</p>
<h2>FAQ</h2>
<p><strong>Do I need to be highly skilled to land a paying client in 30 days?</strong></p><p>No - the gap is usually confidence, not skill. If you can ship a small deliverable with Claude Code in an afternoon, you can land a client; what's missing is the outbound and the offer, not technical ability. The 30-day plan is mostly about practicing the selling, which is its own learnable skill.</p>
<p><strong>What should my offer be?</strong></p><p>One outcome you can confidently deliver in under a week - a small business website, a focused automation, a simple internal tool - phrased as a specific one-liner. &quot;I build small business websites that go live in seven days for a flat fee&quot; beats &quot;I help with AI&quot; because a narrow promise is easier to sell and easier to refer.</p>
<p><strong>How do I get a portfolio piece with no clients yet?</strong></p><p>Invent a fake business, build the exact deliverable you're selling, and host it live. It proves you can ship and rehearses your workflow before a paying client is watching - so you never have to send a cold message hoping someone trusts you on vibes alone. Two evenings in week one is enough.</p>
<p><strong>How much outbound do I actually need to do?</strong></p><p>Aim for 30 targets, one specific message a day over two weeks. Reference something real about them, name the outcome, and ask for ten minutes - not a project. Thirty messages reliably produces enough conversations to land a first client, even though the early ones feel awkward.</p>
<p><strong>When should I quote a price?</strong></p><p>On the first call, not later and not over email. Listen to the problem in their words, restate it, describe your solution, then quote a flat fee with a timeline tied to a specific week. Most deals die in the gap between &quot;interesting call&quot; and &quot;I'll send a proposal&quot; - quoting live closes far more often.</p>
<p><strong>What should I ask for after delivering?</strong></p><p>Two things before the final invoice: a short written testimonial and one introduction to someone in their network. Both cost the client nothing and seed everything next - the testimonial removes the doubt that paralyzed your first outreach, and the intro makes month two feel completely different from month one.</p>]]></content:encoded>
    </item>
  </channel>
</rss>
