<?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/">
  <channel>
    <title>DEV Community: speedy_devv</title>
    <description>The latest articles on DEV Community by speedy_devv (@speedy_devv).</description>
    <link>https://dev.to/speedy_devv</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3882972%2F4d901804-cbc3-4bae-95ee-901bf0ed6631.jpg</url>
      <title>DEV Community: speedy_devv</title>
      <link>https://dev.to/speedy_devv</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/speedy_devv"/>
    <language>en</language>
    <item>
      <title>Claude for Small Business</title>
      <dc:creator>speedy_devv</dc:creator>
      <pubDate>Mon, 18 May 2026 19:27:09 +0000</pubDate>
      <link>https://dev.to/speedy_devv/claude-for-small-business-3ejm</link>
      <guid>https://dev.to/speedy_devv/claude-for-small-business-3ejm</guid>
      <description>&lt;p&gt;Anthropic announced Claude for Small Business on May 13, 2026, and the headlines made it sound like a new SKU.&lt;/p&gt;

&lt;p&gt;It is not. There is no new pricing tier. There is no separate plan to buy.&lt;/p&gt;

&lt;p&gt;It is a feature toggle inside Claude Cowork that turns on 15 prebuilt workflows wired to QuickBooks, PayPal, HubSpot, and a few other tools you probably already pay for. If you have Claude Pro at $20 per month, you already have it. Open the desktop app, find Cowork, flip the switch.&lt;/p&gt;

&lt;p&gt;That is the whole product. The rest of this post is what it actually does, who it fits, an&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3gqus0xffavmxu0zkg5l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3gqus0xffavmxu0zkg5l.png" alt=" " width="800" height="420"&gt;&lt;/a&gt;d where it falls short.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the confusion is fair
&lt;/h2&gt;

&lt;p&gt;Anthropic ran a real press cycle. TechCrunch, Axios, 9to5Mac. They kicked off a 10-city Claude SMB Tour in Chicago on May 14. The launch page opens with a stat about small businesses being 44 percent of US GDP. That looks like a SKU launch.&lt;/p&gt;

&lt;p&gt;The product is real. The pricing line is just not what people assumed.&lt;/p&gt;

&lt;p&gt;If you were searching for "claude for small business pricing" expecting a new plan around $50 or $100 per month, the answer is zero dollars on top of your existing Claude subscription.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the toggle actually does
&lt;/h2&gt;

&lt;p&gt;You sign in with your existing Claude account, open Cowork, and a Small Business mode appears next to your usual chat. That mode loads a library of prebuilt workflows ready to fire against your connected business tools.&lt;/p&gt;

&lt;p&gt;Anthropic calls them agentic workflows because each one is an end-to-end job, not a one-shot prompt. Chasing 12 unpaid invoices is one job. Doing the month-end close is another. The workflow knows the steps, asks for the data it needs, and stops at every action that would touch real money or send a message.&lt;/p&gt;

&lt;p&gt;The approval gate matters. Per Anthropic and TechCrunch, you initiate each workflow, approve the plan, and sign off before anything gets sent, posted, or paid. Claude only sees what your connected account already lets it see. No new permissions are added on its behalf.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 15 workflows in plain English
&lt;/h2&gt;

&lt;p&gt;Six categories: finance, operations, sales, marketing, HR, customer service. The named examples from the launch page and Axios coverage:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Payroll planning&lt;/li&gt;
&lt;li&gt;Monthly close&lt;/li&gt;
&lt;li&gt;Cash-flow analysis&lt;/li&gt;
&lt;li&gt;Month-end prep&lt;/li&gt;
&lt;li&gt;Tax organization&lt;/li&gt;
&lt;li&gt;Campaign management&lt;/li&gt;
&lt;li&gt;Lead triage&lt;/li&gt;
&lt;li&gt;Invoice chasing&lt;/li&gt;
&lt;li&gt;Contract review&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Underneath sit 15 reusable skills. Skills are smaller pieces a workflow can call. Margin analysis, content strategy, and business pulse reporting are the three Anthropic names by name. The rest are not enumerated on the public launch page.&lt;/p&gt;

&lt;p&gt;The split is the same mental model as Claude Code. Workflows are jobs. Skills are tools the jobs use. You stay in the driver's seat.&lt;/p&gt;

&lt;h2&gt;
  
  
  The integrations
&lt;/h2&gt;

&lt;p&gt;Confirmed by Anthropic's launch page plus TechCrunch, Axios, and Quartz coverage:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;QuickBooks for invoices, expenses, P and L, payroll data&lt;/li&gt;
&lt;li&gt;PayPal for payments, payouts, transaction lookups&lt;/li&gt;
&lt;li&gt;HubSpot for contacts, deals, lead routing, campaigns&lt;/li&gt;
&lt;li&gt;Canva for brand assets and marketing templates&lt;/li&gt;
&lt;li&gt;DocuSign for contracts and signature requests&lt;/li&gt;
&lt;li&gt;Google Workspace for Gmail, Drive, Calendar&lt;/li&gt;
&lt;li&gt;Microsoft 365 for Outlook, Excel, OneDrive, Teams&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Slack, Square, Stripe, and Webflow show up in supporting coverage. Treat that second set as expected rather than confirmed in the official Anthropic post.&lt;/p&gt;

&lt;p&gt;A fair critique making the rounds: the real customer for this launch is QuickBooks. Integration partners get lock-in. Small businesses get features that work as long as they keep paying both Claude and the partner tool. You can decide if that bothers you. It is true either way.&lt;/p&gt;

&lt;h2&gt;
  
  
  How much it actually costs
&lt;/h2&gt;

&lt;p&gt;Nothing extra. Direct quote from TechCrunch: "no extra charge for Claude for Small Business beyond the cost of Claude licenses and whatever partner tools a business already pays for, such as QuickBooks, PayPal or HubSpot."&lt;/p&gt;

&lt;p&gt;You still need the underlying Claude subscription. Today's published prices from claude.com/pricing:&lt;/p&gt;

&lt;p&gt;Claude Pro is $20 per month, single seat, the cheapest path to the toggle.&lt;/p&gt;

&lt;p&gt;Claude Max is $100 or $200 per month, single seat, with higher usage caps.&lt;/p&gt;

&lt;p&gt;Claude Team Standard is $20 per seat per month on annual billing, $25 monthly, five seat minimum, with 1.25x more usage per session than Pro.&lt;/p&gt;

&lt;p&gt;Claude Team Premium is $100 per seat per month annual, $125 monthly, five seat minimum, with 6.25x usage and Claude Code included.&lt;/p&gt;

&lt;p&gt;Claude Enterprise is custom pricing with SSO, audit logs, and custom retention.&lt;/p&gt;

&lt;p&gt;A 15-person HVAC team on Team Standard pays 15 x $20 x 12, so $3,600 per year. Add QuickBooks Online Plus at roughly $1,080 per year for a multi-user seat. You are at $4,680 in software for a fully connected setup before you book a single job. The Small Business toggle adds nothing on top.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pro vs Max vs Team, in one paragraph
&lt;/h2&gt;

&lt;p&gt;The toggle is the same on every tier. You get the same 15 workflows on Pro that you get on Enterprise. What changes is the underlying plan. Pro fits a solo operator running the workflows alone. Max fits a power user with heavy daily volume. Team Standard fits a 5 to 30 person business that needs a shared workspace. Team Premium fits a 5 to 50 person business that also wants Claude Code seats and 6.25x usage. Enterprise fits 50-plus headcount and regulated industries that need SSO and audit logs.&lt;/p&gt;

&lt;p&gt;A higher tier does not unlock more workflows. It buys you room to run more of them, more often, with more people, and with stronger data controls.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the launch left out
&lt;/h2&gt;

&lt;p&gt;The Hacker News thread on the launch had over 500 points and 450 comments within hours. Three concerns came up over and over.&lt;/p&gt;

&lt;p&gt;Privacy. Anthropic states it does not train on Team and Enterprise data by default. Pro is weaker. HN commenters specifically flagged that Claude Cowork is not under Zero Data Retention. If you are about to connect a QuickBooks account with payroll in it, read your tier's privacy terms first.&lt;/p&gt;

&lt;p&gt;Compliance. There is no HIPAA Business Associate Agreement for Cowork at launch, and no documented audit trail of every action a workflow took. For regulated industries, that is a hard stop.&lt;/p&gt;

&lt;p&gt;Vibecoding fragility. The agentic workflow pattern works when the connected tool API is stable and the data is clean. When QuickBooks throws an error mid-run or HubSpot rate-limits a sync, the workflow can stall in a way the average non-developer cannot debug.&lt;/p&gt;

&lt;p&gt;None of this is a reason to skip the toggle. It is a reason to start with low-stakes workflows and expand once you trust what it does.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to set it up
&lt;/h2&gt;

&lt;p&gt;You need three things. A Claude Pro, Max, or Team subscription. The Claude desktop app. The partner accounts you want to connect.&lt;/p&gt;

&lt;p&gt;Then:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open the Claude desktop app and click into Cowork.&lt;/li&gt;
&lt;li&gt;Find the Small Business toggle in settings and turn it on.&lt;/li&gt;
&lt;li&gt;Connect each integration one at a time. Each connection runs an OAuth flow.&lt;/li&gt;
&lt;li&gt;Open the workflow library and pick one low-stakes job to test, like business pulse reporting.&lt;/li&gt;
&lt;li&gt;Read the plan Claude proposes, approve it, and watch the run.&lt;/li&gt;
&lt;li&gt;Repeat with the next workflow once you trust the first.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The 10-minute claim from other coverage holds if your partner accounts are already set up. If you are also wiring QuickBooks for the first time, plan an afternoon.&lt;/p&gt;

&lt;h2&gt;
  
  
  Should you turn it on
&lt;/h2&gt;

&lt;p&gt;Use it if you run a 10-to-100 person business, already pay for QuickBooks or HubSpot, and want to take repetitive back-office work off your team's plate. It is included with the subscription you already pay for. The downside of trying it is approximately zero.&lt;/p&gt;

&lt;p&gt;Skip it if you handle HIPAA-regulated data, need a documented audit trail for every action, or run on vertical software that is not in the integration list. Wait for the next release. It will get there.&lt;/p&gt;

&lt;h2&gt;
  
  
  Automation is the floor. Owning the product is the ceiling.
&lt;/h2&gt;

&lt;p&gt;Claude for Small Business automates the back office. That is the floor.&lt;/p&gt;

&lt;p&gt;A 30-person landscaper using the toggle automates invoice chasing in QuickBooks. A 30-person landscaper that wants its own client portal, with scheduling, invoicing, and route optimization built around how the business actually runs, needs to ship custom software. The automation buys back hours. Owning the product changes the business.&lt;/p&gt;

&lt;p&gt;If a freelancer once quoted you $15,000 and three months for a small custom app and you put the idea on a shelf, that is the gap to close next. Same Claude account. Same $20 per month subscription. From idea to live product in a weekend, not a quarter.&lt;/p&gt;

&lt;p&gt;The toggle is the floor. You automate the busywork in QuickBooks. You free up the team. You decide what to build with the time.&lt;/p&gt;

&lt;p&gt;Full breakdown with the source links and FAQ is on the live post: &lt;a href="https://www.buildthisnow.com/blog/guide/mechanics/claude-for-small-business" rel="noopener noreferrer"&gt;https://www.buildthisnow.com/blog/guide/mechanics/claude-for-small-business&lt;/a&gt;&lt;/p&gt;

</description>
      <category>claude</category>
      <category>smallbusiness</category>
      <category>saas</category>
      <category>ai</category>
    </item>
    <item>
      <title>Claude Opus 4.7 vs 4.6</title>
      <dc:creator>speedy_devv</dc:creator>
      <pubDate>Mon, 18 May 2026 08:17:03 +0000</pubDate>
      <link>https://dev.to/speedy_devv/claude-opus-47-vs-46-4m0d</link>
      <guid>https://dev.to/speedy_devv/claude-opus-47-vs-46-4m0d</guid>
      <description>&lt;p&gt;The price page hasn't moved. Five dollars per million input. Twenty-five per million output. Identical to Opus 4.6.&lt;/p&gt;

&lt;p&gt;Run the same Claude Code call on both, though, and 4.7 hands you a bigger bill. A representative agent call with 25K of context and 4K of output went from $0.225 on 4.6 to $0.2805 on 4.7. That's a 24.7 percent jump for the exact same job, the exact same prompt, the exact same code shipped.&lt;/p&gt;

&lt;p&gt;Nothing in the rate card explains it. The new tokenizer does. And one day before this writeup, Claude Code v2.1.142 made 4.7 the fast-mode default. So your next session is paying the new rate unless you go opt back.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhg3kbyxw89bzmliltptz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhg3kbyxw89bzmliltptz.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Tokenizer Is the Story
&lt;/h2&gt;

&lt;p&gt;Simon Willison ran one system prompt through Anthropic's own &lt;code&gt;count_tokens&lt;/code&gt; API on both models. Opus 4.6 returned 5,039 tokens. Opus 4.7 returned 7,335. That's a 1.46x ratio on plain English text, and it sits eleven points above the 1.0 to 1.35x ceiling Anthropic published themselves.&lt;/p&gt;

&lt;p&gt;OpenRouter then ran the comparison across one million real production requests. Their finding: 12 to 27 percent more billed tokens on typical 2K to 25K prompts after prompt caching. Without caching, 32 to 45 percent more.&lt;/p&gt;

&lt;p&gt;Same English in. More tokens counted. Same per-token rate. Bigger bill out.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the Worked Math Looks Like
&lt;/h2&gt;

&lt;p&gt;A standard Claude Code build call. The agent reads roughly 25K tokens of context (your repo plus a spec) and writes roughly 4K tokens of code.&lt;/p&gt;

&lt;p&gt;On Opus 4.6:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;input:  25,000 tokens × $5/1M  = $0.125
output:  4,000 tokens × $25/1M = $0.100
total                          = $0.225
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;On Opus 4.7, the same English source gets recounted by the new tokenizer. OpenRouter measured native input inflation at 1.34x for 25K to 50K prompts, and 13 to 30 percent longer completions at long context. Apply both:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;input:  25,000 × 1.34 = 33,500 tokens × $5/1M  = $0.1675
output:  4,000 × 1.13 =  4,520 tokens × $25/1M = $0.1130
total                                          = $0.2805
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A 24.7 percent effective increase. Nothing in the menu warned you. The tokenizer ate your margin.&lt;/p&gt;

&lt;p&gt;Run that across a working day. A solo founder pushing 200 agent calls daily moves from $45 to $56. About $330 a month in spend you didn't opt into.&lt;/p&gt;

&lt;p&gt;Two cases flip. Long-context calls at 128K and up get prompt caching to absorb roughly 93 percent of the inflation, so the gap shrinks to about 15 percent. Short calls under 2K tokens actually get cheaper by 1.6 percent, because completions on 4.7 are about 62 percent shorter at that size.&lt;/p&gt;

&lt;p&gt;The mid range, where most agent calls sit, is where it hurts.&lt;/p&gt;

&lt;p&gt;The kicker: prompt caching has to be on for the 12 to 27 percent figure to hold. Without it you're staring at 32 to 45 percent more billed tokens for the same English text. A lot of indie setups don't have caching wired up because the docs treat it as a power-user feature. On 4.7 it's not optional anymore. It's the difference between a quiet price hike and a loud one.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Default Flip Nobody Warned You About
&lt;/h2&gt;

&lt;p&gt;Claude Code v2.1.142 shipped on 2026-05-14. The changelog buries the change two bullets deep: fast mode now runs on Opus 4.7 by default. Every &lt;code&gt;/fast&lt;/code&gt; you typed yesterday on 4.6 fires on 4.7 today.&lt;/p&gt;

&lt;p&gt;Fast mode is six times the per-token price of standard mode. Multiply that by the new tokenizer ratio on long English prompts and a fast call now bills closer to seven and a half times the cost of standard 4.6, depending on prompt size.&lt;/p&gt;

&lt;p&gt;You can pin it back. Anthropic shipped a new env var alongside the default flip:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Pin Claude Code fast mode to Opus 4.6 (not the new 4.7 default).&lt;/span&gt;
&lt;span class="c"&gt;# Active as of Claude Code v2.1.142 (2026-05-14).&lt;/span&gt;
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;CLAUDE_CODE_OPUS_4_6_FAST_MODE_OVERRIDE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1

&lt;span class="c"&gt;# Verify:&lt;/span&gt;
claude &lt;span class="nt"&gt;--version&lt;/span&gt;   &lt;span class="c"&gt;# expect 2.1.142 or later&lt;/span&gt;
claude /fast       &lt;span class="c"&gt;# confirm fast mode is on&lt;/span&gt;
&lt;span class="c"&gt;# Fast mode now runs on Opus 4.6 regardless of any other env var.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A few notes on the flag. It takes precedence over &lt;code&gt;CLAUDE_CODE_ENABLE_OPUS_4_7_FAST_MODE&lt;/code&gt; if both are set. Drop it in &lt;code&gt;~/.zshrc&lt;/code&gt; for global stickiness, or your project &lt;code&gt;.env&lt;/code&gt; for per-repo control. Confirm it still ships in your version with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude &lt;span class="nt"&gt;--help&lt;/span&gt; | &lt;span class="nb"&gt;grep &lt;/span&gt;OPUS_4_6
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Anthropic typically keeps these flags around for six to twelve months after a default flip.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where 4.7 Earns Its Keep
&lt;/h2&gt;

&lt;p&gt;The benchmark gains are real, and they cluster.&lt;/p&gt;

&lt;p&gt;SWE-bench Pro climbed +10.9 points (53.4 to 64.3). That's the largest jump on the table for hard, multi-file agent coding work. CharXiv (no tools) gained +13.0 points (69.1 to 82.1), so chart and figure parsing got a real upgrade. SWE-bench Verified, Terminal-Bench 2.0, GPQA Diamond, OSWorld-Verified all moved up too.&lt;/p&gt;

&lt;p&gt;One regression stands out. BrowseComp, the agentic web research benchmark, dropped from 83.7 to 79.3 percent. That's 4.4 points worse on 4.7 than on 4.6.&lt;/p&gt;

&lt;p&gt;Stay on 4.7 when the call profile matches at least one of these:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hard SWE work where the +10.9 SWE-bench Pro lift compounds across long tasks&lt;/li&gt;
&lt;li&gt;High-resolution images, charts, or PDFs where +13.0 CharXiv shows up in your output&lt;/li&gt;
&lt;li&gt;Prompts at 128K and up where caching captures most of the tokenizer inflation&lt;/li&gt;
&lt;li&gt;Plan-then-execute agents where one stronger plan saves five weaker build cycles&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  When to Pin Back to 4.6
&lt;/h2&gt;

&lt;p&gt;Three workloads regress or break even on 4.7 once you account for cost. Override fast mode back to 4.6 when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Prompts sit between 2K and 25K and you don't use prompt caching. This is the worst tokenizer cost zone.&lt;/li&gt;
&lt;li&gt;The job involves agentic web research. BrowseComp dropped 4.4 points.&lt;/li&gt;
&lt;li&gt;You're on a Claude Max plan and your session caps now burn down 1.3 to 3 times faster than they did last month.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Evaluator and judgment work doesn't need the SWE-bench Pro lift. Linters and doc writers don't gain from CharXiv. Those agents produce identical output on 4.6 at a real discount.&lt;/p&gt;

&lt;h2&gt;
  
  
  Per-Agent Model Selection Is the Real Move
&lt;/h2&gt;

&lt;p&gt;Most teams pick one model per project. The 4.7 cost shift makes per-agent selection the better default.&lt;/p&gt;

&lt;p&gt;A planner reads a spec, decides the file layout, picks the build order. SWE-bench Pro +10.9 lands here. Keep planners on 4.7.&lt;/p&gt;

&lt;p&gt;A backend agent or designer writes code. Same SWE-bench Pro lift. Keep them on 4.7.&lt;/p&gt;

&lt;p&gt;An evaluator reads code and finds gaps. Judgment work. Pin to 4.6 with the override flag and pocket the difference.&lt;/p&gt;

&lt;p&gt;A linter, a formatter, a doc writer. Mechanical work. Pin to 4.6.&lt;/p&gt;

&lt;p&gt;A test agent runs the test plan and reports back. Mechanical too. Pin to 4.6.&lt;/p&gt;

&lt;p&gt;Five agents pinned to 4.6. Three on 4.7. The build still gets the planner and builder lifts where they matter. The cheap loops stay cheap.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Verdict
&lt;/h2&gt;

&lt;p&gt;Same rate card. Different bill.&lt;/p&gt;

&lt;p&gt;Opus 4.7 prints better numbers on the benchmarks that matter for hard agent coding. It costs more for the same English prompt almost everywhere except the very short tail. And the default fast-mode flip means the new bill is already running on your laptop right now if you haven't set the override.&lt;/p&gt;

&lt;p&gt;Pin 4.6 for evaluators, linters, and doc writers. Keep 4.7 for planners and SWE-heavy builders. Set the override flag once, forget about it, and let each agent role buy what it actually needs.&lt;/p&gt;

&lt;p&gt;Full benchmark table, sources, and the override config: &lt;a href="https://www.buildthisnow.com/blog/models/claude-opus-4-7-vs-4-6" rel="noopener noreferrer"&gt;https://www.buildthisnow.com/blog/models/claude-opus-4-7-vs-4-6&lt;/a&gt;&lt;/p&gt;

</description>
      <category>claude</category>
      <category>claudeopus</category>
      <category>ai</category>
      <category>developertools</category>
    </item>
    <item>
      <title>How Garry Tan (YC CEO) Uses Claude Code: Inside the 23-Tool gstack Setup</title>
      <dc:creator>speedy_devv</dc:creator>
      <pubDate>Sun, 17 May 2026 17:00:29 +0000</pubDate>
      <link>https://dev.to/speedy_devv/how-garry-tan-yc-ceo-uses-claude-code-inside-the-23-tool-gstack-setup-fmi</link>
      <guid>https://dev.to/speedy_devv/how-garry-tan-yc-ceo-uses-claude-code-inside-the-23-tool-gstack-setup-fmi</guid>
      <description>&lt;p&gt;"I just open-sourced my entire Claude Code setup I used to average 10K LOC and 100 PRs per week in the last 50 days."&lt;/p&gt;

&lt;p&gt;That was Garry Tan, President and CEO of Y Combinator, on March 12, 2026. He dropped a repo called gstack. Six weeks later it has 97k stars, 14.5k forks, and is still pulling 915 stars in the last 24 hours.&lt;/p&gt;

&lt;p&gt;Half of X is calling it god mode. The other half is calling it a folder of prompts in a text file. Both sides are partially right. Neither side is showing you the actual table of what is in there.&lt;/p&gt;

&lt;p&gt;This post does.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fknzx4p3gvgyd2epxs2l1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fknzx4p3gvgyd2epxs2l1.png" alt=" " width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  What gstack Actually Is
&lt;/h2&gt;

&lt;p&gt;gstack is an open-source pack of opinionated Claude Code skills. MIT license. One install line. Each slash command embodies a specialist persona with its own priorities, constraints, and outputs. The work moves through a fixed loop: Think, Plan, Build, Review, Test, Ship, Reflect.&lt;/p&gt;

&lt;p&gt;As of 2026-05-15, the README ships 23 core skills. The count grew from 6 at launch, to 13 by the TechCrunch coverage on March 17, to 23 today.&lt;/p&gt;

&lt;p&gt;That progression matters. The repo is moving fast. Pin the commit you cloned if you want a stable reference.&lt;/p&gt;
&lt;h2&gt;
  
  
  Why The Source Matters
&lt;/h2&gt;

&lt;p&gt;YC has funded 4,000+ companies. The CEO running that engine is publishing the exact skill setup he uses to ship code. That is the rarest possible signal for a Claude Code workflow.&lt;/p&gt;

&lt;p&gt;You can argue with the design. You cannot argue with who shipped it.&lt;/p&gt;

&lt;p&gt;The 10K LOC and 100 PRs per week number is self-reported. Frame it that way. The shape of the workflow is the part you can copy.&lt;/p&gt;
&lt;h2&gt;
  
  
  The Role-Based Architecture
&lt;/h2&gt;

&lt;p&gt;gstack groups every skill under a job title. A role owns priorities, constraints, and outputs. Free-form prompting asks Claude to wear many hats inside one message. Roles split the hats and pass work between them.&lt;/p&gt;

&lt;p&gt;Six core roles plus a Chief Security Officer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;CEO / Founder&lt;/strong&gt;: Scope, product framing, what to build&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Designer&lt;/strong&gt;: Visual system, mockups, AI slop detection&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Eng Manager&lt;/strong&gt;: Architecture, data flow, edge cases&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Release Manager&lt;/strong&gt;: Sync, test, push, PR, deploy&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Doc Engineer&lt;/strong&gt;: Docs in sync with shipped code&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;QA Lead&lt;/strong&gt;: Real browser testing, bug fixes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Chief Security Officer&lt;/strong&gt;: OWASP Top 10 plus STRIDE threat modeling&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The loop reads as one sentence: Think (Office Hours plus CEO review), Plan (Eng plus Design plus DevEx review), Build, Review, Test (QA plus CSO), Ship, Reflect (retro).&lt;/p&gt;
&lt;h2&gt;
  
  
  The 23 Tools
&lt;/h2&gt;

&lt;p&gt;Sourced verbatim from the gstack README and docs/skills.md, accessed 2026-05-15.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Think and Plan&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;/office-hours&lt;/code&gt; (YC Office Hours): Six forcing questions that reframe the product before any code&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/plan-ceo-review&lt;/code&gt; (CEO / Founder): Scope review across four modes: expansion, selective, hold, reduction&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/plan-eng-review&lt;/code&gt; (Eng Manager): Architecture, data flow, diagrams, edge cases, test matrix&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/plan-design-review&lt;/code&gt; (Senior Designer): 0 to 10 ratings per design dimension, flags AI slop&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/plan-devex-review&lt;/code&gt; (DX Lead): Interactive developer-experience audit, three modes&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Design&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;/design-consultation&lt;/code&gt; (Design Partner): End-to-end design system, research plus mockups&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/design-shotgun&lt;/code&gt; (Design Explorer): 4 to 6 AI mockup variants with taste-memory learning&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/design-html&lt;/code&gt; (Design Engineer): Mockup converted to production HTML, ~30KB, zero deps&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Review and Investigate&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;/review&lt;/code&gt; (Staff Engineer): Production bug detection with auto-fixes and coverage audit&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/investigate&lt;/code&gt; (Debugger): Systematic root-cause analysis, traces data flow, three-fix limit&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/design-review&lt;/code&gt; (Designer Who Codes): Post-ship design audit and atomic-commit auto-fixes&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/devex-review&lt;/code&gt; (DX Tester): Live onboarding audit with timing and error screenshots&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Test&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;/qa&lt;/code&gt; (QA Lead): Browser testing, fixes bugs, generates regression tests&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/qa-only&lt;/code&gt; (QA Reporter): Bug reports only, no code edits&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/cso&lt;/code&gt; (Chief Security Officer): OWASP Top 10 plus STRIDE, 17 false-positive exclusions&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Ship&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;/ship&lt;/code&gt; (Release Engineer): Sync, test, audit, push, open PR, bootstraps frameworks&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/land-and-deploy&lt;/code&gt; (Release Engineer): Merge, run CI, deploy, verify production health&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/canary&lt;/code&gt; (SRE): Post-deploy monitoring, console errors, perf, failures&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/benchmark&lt;/code&gt; (Performance Engineer): Core Web Vitals, resource sizes, before-and-after diffs&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Document and Reflect&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;/document-release&lt;/code&gt; (Technical Writer): Auto-updates docs, Diataxis coverage map&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/document-generate&lt;/code&gt; (Doc Author): Generates missing reference, how-to, and tutorial docs&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/retro&lt;/code&gt; (Eng Manager): Weekly retro, per-person breakdowns, streak tracking&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/browse&lt;/code&gt; (QA Engineer): Real Chromium browser, ~100ms per command&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That is the 23-tool count locked to today. The README is moving fast.&lt;/p&gt;
&lt;h2&gt;
  
  
  A Real Workflow End To End
&lt;/h2&gt;

&lt;p&gt;A clean session moves through six commands in this order: think, plan, build, review, test, ship.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;/office-hours&lt;/code&gt; runs first. Six forcing questions reframe the feature. You answer in plain English. Output is a sharper scope.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;/plan-ceo-review&lt;/code&gt; checks scope across four modes: expand, selective, hold, reduce. Often kills work before it starts.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;/plan-eng-review&lt;/code&gt; drafts architecture, data flow, edge cases, and a test matrix.&lt;/p&gt;

&lt;p&gt;You implement against the plan as Claude normally would.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;/review&lt;/code&gt; scans for production bugs and applies atomic auto-fixes. Coverage audit runs in the same pass.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;/qa&lt;/code&gt; opens a real Chromium browser, runs the flow, fixes bugs it finds, and writes regression tests.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;/ship&lt;/code&gt; syncs, tests, audits, pushes, and opens a PR in one chain.&lt;/p&gt;

&lt;p&gt;Each command keeps Claude in one role for the duration of that step. That is the design choice the rest of the system is built on.&lt;/p&gt;
&lt;h2&gt;
  
  
  The Power Tools Most Posts Skip
&lt;/h2&gt;

&lt;p&gt;Beyond the 23 there is a second tier of utility commands: &lt;code&gt;/codex&lt;/code&gt;, &lt;code&gt;/careful&lt;/code&gt;, &lt;code&gt;/freeze&lt;/code&gt;, &lt;code&gt;/guard&lt;/code&gt;, &lt;code&gt;/unfreeze&lt;/code&gt;, &lt;code&gt;/open-gstack-browser&lt;/code&gt;, &lt;code&gt;/setup-deploy&lt;/code&gt;, &lt;code&gt;/gstack-upgrade&lt;/code&gt;, &lt;code&gt;/setup-browser-cookies&lt;/code&gt;, &lt;code&gt;/setup-gbrain&lt;/code&gt;, &lt;code&gt;/sync-gbrain&lt;/code&gt;, &lt;code&gt;/autoplan&lt;/code&gt;, &lt;code&gt;/pair-agent&lt;/code&gt;, &lt;code&gt;/context-restore&lt;/code&gt;, &lt;code&gt;/learn&lt;/code&gt;. Two CLI binaries also ship with the repo: &lt;code&gt;gstack-model-benchmark&lt;/code&gt; and &lt;code&gt;gstack-taste-update&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The big one for teams is &lt;code&gt;/pair-agent&lt;/code&gt;. It coordinates Claude Code, Codex, and Hermes against the same task. Garry sits on top of this layer when he runs many sessions at once.&lt;/p&gt;

&lt;p&gt;His own framing: "gstack is powerful with one sprint. It is transformative with ten running at once."&lt;/p&gt;
&lt;h2&gt;
  
  
  What Garry Says, In His Own Words
&lt;/h2&gt;

&lt;p&gt;Three quotes worth keeping near the workflow.&lt;/p&gt;

&lt;p&gt;On the philosophy: "A single builder with the right tooling can move faster than a traditional team."&lt;/p&gt;

&lt;p&gt;On the cost: "I sleep, like, four hours a night right now. I have cyber psychosis." (SXSW with Bill Gurley, March 2026)&lt;/p&gt;

&lt;p&gt;That last quote matters. Throughput at this rate is not the average user's normal day. Treat the headline numbers as a ceiling, not a floor.&lt;/p&gt;
&lt;h2&gt;
  
  
  The Reception Was Split
&lt;/h2&gt;

&lt;p&gt;The launch trended on Product Hunt and pulled 33k stars in week one. Now 97k. Garry's tweet hit 849k views. A CTO friend called it god mode.&lt;/p&gt;

&lt;p&gt;The pushback was loud too. Mo Bitar shipped a critique calling gstack "a bunch of prompts in a text file." Sherveen Mashayekhi argued the visibility came from Tan's YC role, not from the artifact's merit.&lt;/p&gt;

&lt;p&gt;The steelman of the critique is fair. gstack does not run novel infrastructure. Each skill is markdown plus a system prompt. You could write the same files yourself in a weekend.&lt;/p&gt;

&lt;p&gt;The counter is also fair. Most people will not write the same files in a weekend. They will write three, ship none, and revert to free-form prompting. A finished, opinionated set, vetted by someone shipping 10K lines a week, is a different artifact than your own half-written prompts.&lt;/p&gt;

&lt;p&gt;Both readings are correct. Pick the one your team needs to hear.&lt;/p&gt;
&lt;h2&gt;
  
  
  Five Lessons For Founders
&lt;/h2&gt;

&lt;p&gt;Roles beat prompts. Defining a persona with priorities and constraints produces more consistent output than asking one Claude to wear seven hats.&lt;/p&gt;

&lt;p&gt;Forcing functions before code. &lt;code&gt;/office-hours&lt;/code&gt; exists because reframing the product is cheaper than rewriting it.&lt;/p&gt;

&lt;p&gt;AI slop is a real failure mode. A dedicated Senior Designer skill exists specifically to catch it.&lt;/p&gt;

&lt;p&gt;Ship is a workflow, not a button. &lt;code&gt;/ship&lt;/code&gt; and &lt;code&gt;/land-and-deploy&lt;/code&gt; chain sync, test, audit, push, deploy, verify into one command.&lt;/p&gt;

&lt;p&gt;Parallelism multiplies leverage. Garry runs 10 to 15 sprints at once. Solo builders get a structured team. Team leads get a fleet.&lt;/p&gt;
&lt;h2&gt;
  
  
  Clone gstack In 5 Minutes
&lt;/h2&gt;

&lt;p&gt;You need Claude Code, Git, Bun v1.0+, and Node.js if you are on Windows. A Claude Pro subscription ($20/mo) is required for Claude Code itself.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone &lt;span class="nt"&gt;--single-branch&lt;/span&gt; &lt;span class="nt"&gt;--depth&lt;/span&gt; 1 https://github.com/garrytan/gstack.git &lt;span class="se"&gt;\&lt;/span&gt;
  ~/.claude/skills/gstack &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;cd&lt;/span&gt; ~/.claude/skills/gstack &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; ./setup
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then follow the loop. Start with &lt;code&gt;/office-hours&lt;/code&gt; to reframe the product. Move to &lt;code&gt;/plan-ceo-review&lt;/code&gt; and &lt;code&gt;/plan-eng-review&lt;/code&gt;. Build. Run &lt;code&gt;/review&lt;/code&gt;. Run &lt;code&gt;/qa&lt;/code&gt;. Ship with &lt;code&gt;/ship&lt;/code&gt;. That is the loop Garry is using to move at his stated rate.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Honest Bottom Line
&lt;/h2&gt;

&lt;p&gt;The CEO of YC published his exact Claude Code stack. The 23 commands are listed. The criticism is real. Pick the parts that fit your team and leave the rest.&lt;/p&gt;

&lt;p&gt;Full breakdown with the complete tool table, comparison to default Claude Code, and where gstack stops: &lt;a href="https://www.buildthisnow.com/blog/guide/agents/garry-tan-gstack-claude-code" rel="noopener noreferrer"&gt;https://www.buildthisnow.com/blog/guide/agents/garry-tan-gstack-claude-code&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Tags: #ClaudeCode #YCombinator #AI #DeveloperTools #BuildInPublic&lt;/p&gt;

</description>
      <category>ai</category>
      <category>claude</category>
      <category>opensource</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Claude for Small Business Owners: Build Your Own Software in a Weekend</title>
      <dc:creator>speedy_devv</dc:creator>
      <pubDate>Sun, 17 May 2026 16:00:47 +0000</pubDate>
      <link>https://dev.to/speedy_devv/claude-for-small-business-owners-build-your-own-software-in-a-weekend-36nl</link>
      <guid>https://dev.to/speedy_devv/claude-for-small-business-owners-build-your-own-software-in-a-weekend-36nl</guid>
      <description>&lt;p&gt;You run a real business. You also pay for six SaaS tools that almost fit your workflow. QuickBooks for the books. HubSpot for the pipeline that nobody on the team actually opens. Calendly for bookings. Canva for assets. A CRM you keep meaning to clean up. A client portal you never built, so you settled for emailing PDFs.&lt;/p&gt;

&lt;p&gt;Every quote you have ever asked for from a freelancer or agency starts at twenty thousand dollars. The 2026 cost guides put a small business custom tool at $30,000 to $100,000 all in, with a 3 to 6 month timeline.&lt;/p&gt;

&lt;p&gt;There is a different number worth holding next to that one. $79 to $197 one-time, plus $20&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F57igqshle8jinbccqkng.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F57igqshle8jinbccqkng.png" alt=" " width="800" height="420"&gt;&lt;/a&gt; a month for a Claude Pro subscription. Same finished software. Live by Sunday night. Code in your own GitHub.&lt;/p&gt;

&lt;p&gt;That gap is the whole post.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Anthropic just shipped
&lt;/h2&gt;

&lt;p&gt;Two days ago, Anthropic launched Claude for Small Business. It comes with 15 ready-to-run agentic workflows and 15 repeatable task skills, plugged into QuickBooks, PayPal, HubSpot, Canva, Docusign, Google Workspace, Microsoft 365, and Slack.&lt;/p&gt;

&lt;p&gt;Daniela Amodei framed the launch around a stat worth keeping. SMBs make up 44 percent of US GDP and almost half the private workforce, and have lagged in AI adoption.&lt;/p&gt;

&lt;p&gt;So Claude for Small Business automates the tools you already pay for. Lead triage, month-end reconciliation, payroll forecasting, invoice chasing.&lt;/p&gt;

&lt;p&gt;It does not build you a new app. That is the part nobody else has written about yet.&lt;/p&gt;

&lt;p&gt;Build This Now is the other half of the picture. Same Claude underneath. Different job. You describe a piece of software you wish you had. 32 specialist AI agents plan it, build it, test it, and ship it as real production code in your own GitHub. By Sunday night, the app is live, accepting payments, and sending email.&lt;/p&gt;

&lt;h2&gt;
  
  
  The four paths an SMB owner can pick from in 2026
&lt;/h2&gt;

&lt;p&gt;Pick honestly. Each one solves a different version of your problem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Path one: DIY no-code.&lt;/strong&gt; Bubble, Glide, Softr. Costs zero to two hundred dollars to set up, then $49 to $399 a month forever. Time to a live app: two to six weeks. You do not own the code, and you are locked to the platform. This works for a directory or a static intake form. It cracks the moment you need a workflow that does not exist as a drag-and-drop block. Bubble's pricing now spikes through usage-based Workload Units, and exceeding record limits stops new data entry cold. Glide tops out at 25K rows and bills per seat. Softr caps complex SaaS logic.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Path two: hire a freelancer or agency.&lt;/strong&gt; Twenty thousand to a hundred thousand dollars up front. Three to six months to a live app. Five hundred to five thousand a month in maintenance. You usually own the code, if you specified that in the contract. This solves the "almost what I need" problem. It also takes a quarter of a year and the cost of a used car.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Path three: Claude for Small Business.&lt;/strong&gt; No extra cost over your Claude license. Same-day setup for the prebuilt workflows. You do not own new code, because there is no new code. Claude works inside the tools you already pay for. User approval is required before Claude sends, posts, or pays, and existing tool permissions are preserved. This is the right answer for "automate the work I already do inside QuickBooks, HubSpot, and PayPal."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Path four: Build This Now.&lt;/strong&gt; Seventy-nine to one hundred ninety-seven dollars one-time. Twenty dollars a month for Claude Pro. Forty-eight hours from idea to a focused MVP. You own the full source code in your GitHub. This is the right answer for "build the thing nobody sells me yet."&lt;/p&gt;

&lt;p&gt;Claude for Small Business and Build This Now are not competing. They cover different gaps. Both run on Claude.&lt;/p&gt;

&lt;h2&gt;
  
  
  Five pieces of software a small business can build this weekend
&lt;/h2&gt;

&lt;p&gt;Each one names a real SaaS tool it replaces and a real price. Match these to your business and pick one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Custom client portal with invoicing and document signing.&lt;/strong&gt; Replaces SuiteDash at $19 plus per user per month and Dubsado at $40 plus per month. Service businesses, consultants, agencies. The no-code wall hits the moment you want a workflow that is not a checklist. With Build This Now, the portal lives in your GitHub, signs with your domain, and bills through your Stripe account.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Niche scheduling app with Stripe deposits.&lt;/strong&gt; Replaces a Calendly Pro plus Acuity stack. Salons, clinics, tutors, coaches, mobile service providers. A custom build lets you take a deposit at booking, charge a no-show fee on policy, and send the reminder text in your own voice.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Internal CRM tailored to your sales process.&lt;/strong&gt; Replaces a watered-down HubSpot or a Trello plus Google Sheets duct-tape rig. Real estate teams, B2B sales shops. The shape of your pipeline is the asset. A custom CRM lets you build it, not retrofit it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Customer-facing dashboard for your service.&lt;/strong&gt; Replaces "weekly PDF report we email." Marketing agencies, IT MSPs, accounting firms. Clients log in. They see results live. Renewals stop being a fight.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Inventory or job tracker with photo uploads and team logins.&lt;/strong&gt; Replaces spreadsheets plus a WhatsApp group. Trades, contractors, e-commerce ops. Field staff post photos, the back office sees status, and nothing falls through the cracks.&lt;/p&gt;

&lt;p&gt;Each one of these would cost $20K to $75K from a freelancer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Friday to Sunday, hour by hour
&lt;/h2&gt;

&lt;p&gt;Friday, 7 PM. Run &lt;code&gt;npx buildthisnow init&lt;/code&gt;. Link Supabase, Stripe, Resend.&lt;/p&gt;

&lt;p&gt;Friday, 8 PM. Run &lt;code&gt;/discover&lt;/code&gt;. The agent team turns a plain-English description of your business into a product spec.&lt;/p&gt;

&lt;p&gt;Friday, 10 PM. Read the seven generated docs. Sleep on it.&lt;/p&gt;

&lt;p&gt;Saturday, 9 AM. Run &lt;code&gt;/mvp-spec&lt;/code&gt;. Discovery becomes a feature-by-feature plan.&lt;/p&gt;

&lt;p&gt;Saturday, 10 AM to 6 PM. Run &lt;code&gt;/ship {feature}&lt;/code&gt; six to eight times, one per core feature. Each one runs through planning, build, evaluation, and testing automatically.&lt;/p&gt;

&lt;p&gt;Saturday, 7 PM. Run &lt;code&gt;/security&lt;/code&gt; and &lt;code&gt;/audit&lt;/code&gt;. The build gets locked down.&lt;/p&gt;

&lt;p&gt;Sunday, 10 AM. Run &lt;code&gt;/landing-design&lt;/code&gt; and &lt;code&gt;/seo&lt;/code&gt;. The marketing surface gets dressed.&lt;/p&gt;

&lt;p&gt;Sunday, 2 PM. Run &lt;code&gt;/deploy&lt;/code&gt;. The app goes to Vercel. Point your custom domain.&lt;/p&gt;

&lt;p&gt;Sunday, 4 PM. The app is live, accepting payments, sending emails, and signing up users.&lt;/p&gt;

&lt;p&gt;This pipeline is real, not a marketing diagram. Indie hackers are already shipping MVPs in two days using Claude with no coding background.&lt;/p&gt;

&lt;h2&gt;
  
  
  The honest math
&lt;/h2&gt;

&lt;p&gt;Build This Now is $79 one-time for CodeKit. $197 one-time for Speedy Swarm, the macOS dashboard for running multiple builds side by side. Both prices are one payment. No per-seat. No subscription on the framework itself.&lt;/p&gt;

&lt;p&gt;You also need a Claude Pro subscription at $20 per month to run the agents. That requirement is real and not optional. Add free-tier Supabase, Stripe, Resend, and Vercel for most early-stage workloads, and your total monthly burn for a live app is $20.&lt;/p&gt;

&lt;p&gt;Compare that to the $30,000 to $100,000 freelancer quote. Compare it to a no-code stack at $49 to $399 per month that you never own.&lt;/p&gt;

&lt;p&gt;A few honest disclaimers. Build This Now is no-code at the prompt level, not at the operating system level. You will run an &lt;code&gt;npx&lt;/code&gt; command in a terminal and edit a &lt;code&gt;.env&lt;/code&gt; file. You will not write a line of TypeScript unless you choose to. The agents handle the code. You describe the feature. The production skeleton ships with auth, payments, email, storage, and row-level security on every database table already wired up.&lt;/p&gt;

&lt;p&gt;Use Claude for Small Business for the work you already do inside QuickBooks, HubSpot, and PayPal. Use Build This Now for the custom software you wish existed. Neither of those decisions has to wait until next quarter.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to do this week
&lt;/h2&gt;

&lt;p&gt;You have a real workflow nobody else has. Stop renting six tools that almost fit. Spend one weekend building the one app that does.&lt;/p&gt;

&lt;p&gt;Read the full post with the cost tables and source links here: &lt;a href="https://www.buildthisnow.com/blog/build-this-now/small-business-build-software-weekend" rel="noopener noreferrer"&gt;Claude for Small Business Owners: Build Your Own Software in a Weekend&lt;/a&gt;. If you want to start, the framework lives at &lt;a href="https://buildthisnow.com" rel="noopener noreferrer"&gt;buildthisnow.com&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Tags: #SmallBusiness #SaaS #NoCode #ClaudeAI #BuildInPublic&lt;/p&gt;

</description>
    </item>
    <item>
      <title>What Are Claude Skills</title>
      <dc:creator>speedy_devv</dc:creator>
      <pubDate>Sun, 17 May 2026 08:00:53 +0000</pubDate>
      <link>https://dev.to/speedy_devv/what-are-claude-skills-m57</link>
      <guid>https://dev.to/speedy_devv/what-are-claude-skills-m57</guid>
      <description>&lt;p&gt;You keep seeing "Claude Skills" in repos, on X, in YouTube thumbnails. You still are not sure what the thing is. Anthropic's docs read like a spec. Most blog posts bury the answer under five paragraphs of intro.&lt;/p&gt;

&lt;p&gt;Here it is in 30 seconds. A Claude Skill is a small folder with one file inside it called &lt;code&gt;SKILL.md&lt;/code&gt;. That file tells Claude how to do one specific thing. Build the folder once. Claude uses it forever.&lt;/p&gt;

&lt;p&gt;That sentence is the whole concept. The rest of this post is the proof, the parts list, the 12 real ones people are running today, and the 5-way matrix that tells you when to reach for a skill instead of a&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flb49ycukenliswts6kjd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flb49ycukenliswts6kjd.png" alt=" " width="800" height="420"&gt;&lt;/a&gt;n MCP server, a subagent, a plugin, or a project.&lt;/p&gt;
&lt;h2&gt;
  
  
  The One-Paragraph Definition
&lt;/h2&gt;

&lt;p&gt;A Claude Skill is a folder of instructions Claude reads when it decides the topic fits your request. The folder lives at &lt;code&gt;.claude/skills/your-skill-name/&lt;/code&gt; and contains a single required file, &lt;code&gt;SKILL.md&lt;/code&gt;. Claude scans the descriptions of every skill you have installed. When one matches what you asked for, it loads the body and follows it. You can also call a skill by hand with &lt;code&gt;/skill-name&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Anthropic's own line: "Skills are folders containing instructions, scripts, and resources that Claude discovers and loads dynamically when relevant to a task." (Source: &lt;a href="https://claude.com/blog/skills-explained" rel="noopener noreferrer"&gt;claude.com/blog/skills-explained&lt;/a&gt;.)&lt;/p&gt;

&lt;p&gt;Three things follow from that. Skills sit on disk. Skills are discovered by description-matching, not by file extension or folder location. Skills are reusable across every session in the project they live in.&lt;/p&gt;
&lt;h2&gt;
  
  
  A Real SKILL.md File, Opened Up
&lt;/h2&gt;

&lt;p&gt;Here is a working skill in ten lines, taken from Anthropic's own docs at &lt;a href="https://code.claude.com/docs/en/skills" rel="noopener noreferrer"&gt;code.claude.com/docs/en/skills&lt;/a&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Summarizes&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;uncommitted&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;changes&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;and&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;flags&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;anything&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;risky.&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Use&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;when&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;the&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;asks&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;what&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;changed,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;wants&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;a&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;commit&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;message,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;or&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;asks&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;to&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;review&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;their&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;diff."&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;

&lt;span class="c1"&gt;## Current changes&lt;/span&gt;

&lt;span class="kt"&gt;!&lt;/span&gt;&lt;span class="err"&gt;`&lt;/span&gt;&lt;span class="s"&gt;git diff HEAD`&lt;/span&gt;

&lt;span class="c1"&gt;## Instructions&lt;/span&gt;

&lt;span class="s"&gt;Summarize the changes above in two or three bullet points, then list any risks you notice.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Two parts. The block at the top fenced by &lt;code&gt;---&lt;/code&gt; lines is the frontmatter. It is a tiny block of settings written in YAML. The only required line is &lt;code&gt;description&lt;/code&gt;, which tells Claude what the skill does and when to load it.&lt;/p&gt;

&lt;p&gt;Below the frontmatter is plain Markdown. That is the body Claude reads when the skill fires. The line &lt;code&gt;!\&lt;/code&gt;git diff HEAD`` is a shell command that runs first, with its output dropped into the message Claude sees. Then Claude follows the instructions under "Instructions". That is it. No build step. No registration. Save the file and Claude can use it on the next prompt.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Claude Decides to Run a Skill
&lt;/h2&gt;

&lt;p&gt;Two paths. You can call it by name, like &lt;code&gt;/code-review&lt;/code&gt;, and the autocomplete list shows you every installed skill. Or you can let Claude pick. In a normal session, Claude only sees the descriptions of every installed skill, not the bodies. It reads the descriptions, decides which ones fit your prompt, and pulls in the full body of any that do. The body stays in context for the rest of the session.&lt;/p&gt;

&lt;p&gt;This is why the description matters more than anything else in the file. Bad description, the skill never fires. Good description, Claude reaches for it the moment the topic lands.&lt;/p&gt;

&lt;p&gt;Two caps you should know about. The combined &lt;code&gt;description&lt;/code&gt; plus &lt;code&gt;when_to_use&lt;/code&gt; text gets truncated at 1,536 characters in the listing Claude sees. So write the description to fit. The default budget for all skill listings together is 1% of the model's context window, configurable via a setting called &lt;code&gt;skillListingBudgetFraction&lt;/code&gt;. Past that budget, lower-priority skills get cut. (Source: &lt;a href="https://code.claude.com/docs/en/skills" rel="noopener noreferrer"&gt;code.claude.com/docs/en/skills&lt;/a&gt;.)&lt;/p&gt;

&lt;p&gt;Skills hot-reload. Edit the file mid-session and the change is live on the next turn.&lt;/p&gt;

&lt;h2&gt;
  
  
  12 Real Claude Skills People Run Today
&lt;/h2&gt;

&lt;p&gt;Pulled from Anthropic's official set and the three highest-starred community repos on GitHub.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;pdf&lt;/code&gt; from &lt;a href="https://github.com/anthropics/skills" rel="noopener noreferrer"&gt;Anthropic&lt;/a&gt;: generate and process PDF documents. "Make a one-page PDF report from this CSV."&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;xlsx&lt;/code&gt; from &lt;a href="https://github.com/anthropics/skills" rel="noopener noreferrer"&gt;Anthropic&lt;/a&gt;: create and edit Excel spreadsheets. "Turn this list into an Excel file with totals."&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;pptx&lt;/code&gt; from &lt;a href="https://github.com/anthropics/skills" rel="noopener noreferrer"&gt;Anthropic&lt;/a&gt;: build PowerPoint decks. "Generate a 10-slide deck from this brief."&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;mcp-builder&lt;/code&gt; from &lt;a href="https://github.com/anthropics/skills" rel="noopener noreferrer"&gt;Anthropic&lt;/a&gt;: scaffold a new MCP server. "Build an MCP server that talks to my internal API."&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;skill-creator&lt;/code&gt; from &lt;a href="https://github.com/anthropics/skills" rel="noopener noreferrer"&gt;Anthropic&lt;/a&gt;: help Claude write new skills. "I keep doing X by hand. Make a skill out of it."&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;webapp-testing&lt;/code&gt; from &lt;a href="https://github.com/anthropics/skills" rel="noopener noreferrer"&gt;Anthropic&lt;/a&gt;: run automated browser tests. "Click through the signup flow and tell me what breaks."&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;tdd&lt;/code&gt; from &lt;a href="https://github.com/mattpocock/skills" rel="noopener noreferrer"&gt;mattpocock&lt;/a&gt;: red-green-refactor TDD loop. "Add this feature using test-driven development."&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;caveman&lt;/code&gt; from &lt;a href="https://github.com/mattpocock/skills" rel="noopener noreferrer"&gt;mattpocock&lt;/a&gt;: compress prose to roughly 75% fewer tokens. "Rewrite this in caveman so it costs less to send."&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;diagnose&lt;/code&gt; from &lt;a href="https://github.com/mattpocock/skills" rel="noopener noreferrer"&gt;mattpocock&lt;/a&gt;: structured debugging methodology. "This bug is weird. Walk through it methodically."&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;code-review-and-quality&lt;/code&gt; from &lt;a href="https://github.com/addyosmani/agent-skills" rel="noopener noreferrer"&gt;addyosmani&lt;/a&gt;: five-axis code review with severity labels. "Review this PR like a senior engineer would."&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;security-and-hardening&lt;/code&gt; from &lt;a href="https://github.com/addyosmani/agent-skills" rel="noopener noreferrer"&gt;addyosmani&lt;/a&gt;: OWASP Top 10 prevention checks. "Audit my app for the top web security risks."&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;systematic-debugging&lt;/code&gt; from &lt;a href="https://github.com/obra/superpowers" rel="noopener noreferrer"&gt;obra&lt;/a&gt;: four-phase root-cause analysis. "Don't patch the symptom. Find the actual root cause."&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The three community repos behind rows 7 to 12 carry well over 80,000 stars each on GitHub, with &lt;code&gt;obra/superpowers&lt;/code&gt; the most-starred of the bunch.&lt;/p&gt;

&lt;h2&gt;
  
  
  Skill vs Subagent vs MCP vs Plugin vs Project
&lt;/h2&gt;

&lt;p&gt;Five things people confuse with each other. Here is the plain-English version.&lt;/p&gt;

&lt;p&gt;Use a &lt;strong&gt;Skill&lt;/strong&gt; when you want to teach Claude how to do something the same way every time. Static instructions Claude reads when the description matches. Cheap. Lives on disk.&lt;/p&gt;

&lt;p&gt;Use an &lt;strong&gt;MCP server&lt;/strong&gt; when you want to connect Claude to a live system like Stripe, Postgres, or Slack. MCP is the connection layer. It pulls live data and runs actions.&lt;/p&gt;

&lt;p&gt;Use a &lt;strong&gt;subagent&lt;/strong&gt; when you want to spawn an isolated worker with its own context window and tools. Subagents have their own context, system prompt, and tool list.&lt;/p&gt;

&lt;p&gt;Use a &lt;strong&gt;plugin&lt;/strong&gt; when you want to bundle skills, MCP servers, commands, and hooks together to share. A plugin is the distributable container around the other primitives.&lt;/p&gt;

&lt;p&gt;Use a &lt;strong&gt;project&lt;/strong&gt; when you want to provide background reference for one workspace. Projects hold knowledge files scoped to one workspace.&lt;/p&gt;

&lt;p&gt;Anthropic's own framing: "If you've got more skills than MCP servers, you're probably doing it right." (Source: &lt;a href="https://claude.com/blog/skills-explained" rel="noopener noreferrer"&gt;claude.com/blog/skills-explained&lt;/a&gt;.)&lt;/p&gt;

&lt;p&gt;Cleanest way to remember it. MCP brings live data in. Subagents fork off a worker. Plugins package the whole bundle for distribution. Projects hold reference material. Skills teach procedure.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Else Goes Inside a Skill Folder
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;SKILL.md&lt;/code&gt; is the only required file. Most production skills also carry one or more of these:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;scripts/&lt;/code&gt; for helper scripts the skill calls&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;references/&lt;/code&gt; for documentation Claude can read on demand&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;examples/&lt;/code&gt; for sample inputs and outputs&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;templates/&lt;/code&gt; for files the skill copies and fills in&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of those are loaded into context by default. Claude opens them only when the body of &lt;code&gt;SKILL.md&lt;/code&gt; tells it to. That is how a skill can carry hundreds of pages of reference without burning tokens until it needs them.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Changed in 2026
&lt;/h2&gt;

&lt;p&gt;The skills format moved fast through the spring. Three things worth knowing as of May 2026.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Root SKILL.md auto-surface.&lt;/strong&gt; Around Claude Code v2.1.69 in late April 2026, plugins with a root-level &lt;code&gt;SKILL.md&lt;/code&gt; and no &lt;code&gt;skills/&lt;/code&gt; subdirectory now show up as a single skill. Single-file plugin distribution is no longer awkward.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Custom commands merged into skills.&lt;/strong&gt; A file at &lt;code&gt;.claude/commands/deploy.md&lt;/code&gt; and a skill at &lt;code&gt;.claude/skills/deploy/SKILL.md&lt;/code&gt; both create &lt;code&gt;/deploy&lt;/code&gt; and behave the same way. Old &lt;code&gt;.claude/commands/&lt;/code&gt; files keep working. The distinction has dissolved.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;An open standard.&lt;/strong&gt; The format is published at &lt;a href="https://agentskills.io" rel="noopener noreferrer"&gt;agentskills.io&lt;/a&gt;, so the same &lt;code&gt;SKILL.md&lt;/code&gt; file works across more than just Claude. Community marketplaces collectively list more than 4,000 skills as of May 2026. The official source remains &lt;a href="https://github.com/anthropics/skills" rel="noopener noreferrer"&gt;github.com/anthropics/skills&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Bundled skills now ship with Claude Code itself: &lt;code&gt;/simplify&lt;/code&gt;, &lt;code&gt;/batch&lt;/code&gt;, &lt;code&gt;/debug&lt;/code&gt;, &lt;code&gt;/loop&lt;/code&gt;, &lt;code&gt;/claude-api&lt;/code&gt;, &lt;code&gt;/init&lt;/code&gt;, &lt;code&gt;/review&lt;/code&gt;, &lt;code&gt;/security-review&lt;/code&gt;. You already have those even if you have never installed a thing.&lt;/p&gt;

&lt;h2&gt;
  
  
  When a Skill Refuses to Fire
&lt;/h2&gt;

&lt;p&gt;Most common reason: Claude never picked your skill, because the description did not match the prompt the user wrote. Three fixes.&lt;/p&gt;

&lt;p&gt;Rewrite the description to lead with what the skill does, then add explicit example phrases the user might say. The 1,536-character cap is generous, so use it.&lt;/p&gt;

&lt;p&gt;Run &lt;code&gt;/doctor&lt;/code&gt; to confirm Claude is seeing the skill at all. The output lists every skill loaded in the current session, with their descriptions.&lt;/p&gt;

&lt;p&gt;If you have hundreds of skills installed and most are getting cut from the listing, raise &lt;code&gt;skillListingBudgetFraction&lt;/code&gt; past the default 1%.&lt;/p&gt;

&lt;p&gt;Triggering is probabilistic, not deterministic. Claude usually picks the right skill. Sometimes it does not. The description is the lever.&lt;/p&gt;

&lt;h2&gt;
  
  
  Closing
&lt;/h2&gt;

&lt;p&gt;A skill is a folder. A folder is a file. A file is a description plus a recipe. Build the folder once. Claude uses it forever.&lt;/p&gt;

&lt;p&gt;Full version with the live decision matrix and frontmatter field reference: &lt;a href="https://www.buildthisnow.com/blog/guide/mechanics/what-are-claude-skills" rel="noopener noreferrer"&gt;https://www.buildthisnow.com/blog/guide/mechanics/what-are-claude-skills&lt;/a&gt;&lt;/p&gt;

</description>
      <category>claudecode</category>
      <category>cloudskills</category>
      <category>ai</category>
      <category>buildinpublic</category>
    </item>
    <item>
      <title>Cut Claude Code Token Costs</title>
      <dc:creator>speedy_devv</dc:creator>
      <pubDate>Sat, 16 May 2026 16:45:07 +0000</pubDate>
      <link>https://dev.to/speedy_devv/cut-claude-code-token-costs-4lil</link>
      <guid>https://dev.to/speedy_devv/cut-claude-code-token-costs-4lil</guid>
      <description>&lt;p&gt;Your Claude Code bill went up twice in 30 days. You felt it on the invoice before you understood why.&lt;/p&gt;

&lt;p&gt;On June 15, 2026, Anthropic moves Agent SDK, &lt;code&gt;claude -p&lt;/code&gt;, and Claude Code GitHub Actions onto a separate metered credit pool that does not roll over. Once the pool drains, you pay full API rates.&lt;/p&gt;

&lt;p&gt;At the same time, the new Opus 4.7 tokenizer reports about 1.46x more text tokens than 4.6 at the same per-token price. Simon Willison flagged it as "actually a pretty big price bump." Image content can hit 3.01x. Same prompt, same dollars per token, more tokens per request.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkqazwzh5z2fcad5s8uss.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkqazwzh5z2fcad5s8uss.png" alt=" " width="800" height="420"&gt;&lt;/a&gt;&lt;br&gt;
Five open-source repos fight back. I ranked them by max stated savings, with install commands and where each percentage actually comes from. Every number in this post is vendor-stated. Real savings shift with codebase size, MCP server count, and how often your sessions repeat work.&lt;/p&gt;
&lt;h2&gt;
  
  
  Why your bill is climbing right now
&lt;/h2&gt;

&lt;p&gt;Three things are stacking on top of each other.&lt;/p&gt;

&lt;p&gt;First, the June 15 split. Programmatic Claude Code usage gets its own dedicated budget instead of sharing the chat pool. The Pro plan ships $20 of Agent SDK credit, Max 5x ships $100, Max 20x ships $200. None of it rolls over. Interactive Claude Code in your terminal is unaffected.&lt;/p&gt;

&lt;p&gt;Second, the Opus 4.7 tokenizer. Same price per token, more tokens per request. Willison's testing measured 1.46x for plain text and up to 3.01x for images. A 15MB PDF only inflated 1.08x, so the impact varies with content type.&lt;/p&gt;

&lt;p&gt;Third, Fast Mode now defaults to Opus 4.7 in recent Claude Code releases. Faster, smarter, and quietly more expensive per request than the 4.6 baseline you had a month ago.&lt;/p&gt;

&lt;p&gt;The fix is not "use Sonnet for everything." The fix is fewer tokens hitting the wire on every call you do make.&lt;/p&gt;
&lt;h2&gt;
  
  
  The five tools, ranked by max stated savings
&lt;/h2&gt;

&lt;p&gt;Verify each one in your own workflow. Percentages come straight from each repo's README or the third-party listing noted.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;lean-ctx&lt;/strong&gt;: 60% to 95% reduction across reads, up to 99% on cached reads (vendor README).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;airis-mcp-gateway&lt;/strong&gt;: up to 97% context token reduction. The 97% figure comes from the VoltAgent awesome-claude-code-subagents listing*, not the repo itself. The repo's own README says only "Token Efficiency: Measurable reduction in initial context overhead" with no number.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;agentmemory&lt;/strong&gt;: 92% fewer tokens than pasting full context across sessions. Badge sits at the top of the README.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;9router&lt;/strong&gt;: 20% to 40% per request via RTK token compression on tool output. Worked example in the README: 47K tokens shrunk to 28K.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;cc-ledger&lt;/strong&gt;: 0% direct savings. This is the meter. You need it on before you can prove the other four did anything.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;(*third-party listing, not vendor)&lt;/p&gt;
&lt;h2&gt;
  
  
  lean-ctx: compress the inputs
&lt;/h2&gt;

&lt;p&gt;lean-ctx is a single Rust binary that sits between Claude Code and your filesystem. It hooks every file read, every grep, every shell command. Output gets compressed before it reaches the model.&lt;/p&gt;

&lt;p&gt;Headline claim is 60% to 95% reduction, with up to 99% on cached reads. The 99% figure assumes cache hits. Cold runs see less.&lt;/p&gt;

&lt;p&gt;Three commands stand it up:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://leanctx.com/install.sh | sh
lean-ctx setup
lean-ctx init &lt;span class="nt"&gt;--agent&lt;/span&gt; claude-code
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Best fit: workflows where you re-read the same files often. Worst fit: thin sessions with mostly short prompts. The compression overhead pays off only when there is something to compress.&lt;/p&gt;

&lt;h2&gt;
  
  
  airis-mcp-gateway: compress the tool listings
&lt;/h2&gt;

&lt;p&gt;If your Claude Code talks to Sentry, GitHub, Linear, Postgres, and a couple of other MCP servers, the system prompt pays a tax for every tool listing on every turn. airis-mcp-gateway aggregates many MCP servers behind a single SSE endpoint with intelligent routing and on-demand lifecycle management.&lt;/p&gt;

&lt;p&gt;The 97% figure that travels with this repo comes from the VoltAgent awesome-claude-code-subagents listing. The repo itself is more conservative. Read both before you quote a number to your team.&lt;/p&gt;

&lt;p&gt;Production install:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://raw.githubusercontent.com/agiletec-inc/airis-mcp-gateway/main/install.sh | bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Skip this one if your &lt;code&gt;.mcp.json&lt;/code&gt; lists fewer than five servers. The savings come from collapsing tool listings, and a slim setup has nothing to collapse.&lt;/p&gt;

&lt;h2&gt;
  
  
  agentmemory: stop paying for re-explaining your project
&lt;/h2&gt;

&lt;p&gt;Every new Claude Code session starts fresh. You re-paste the stack notes, the rules, the patterns. agentmemory kills that cost. It captures what the agent does via hooks, compresses into searchable observations, and injects relevant prior context into future sessions.&lt;/p&gt;

&lt;p&gt;The README claims 92% fewer tokens against the worst-case "paste full context every session" baseline. Worked comparison in the repo: about 170K tokens per year (around $10) with agentmemory versus 19.5M+ tokens pasting full context manually.&lt;/p&gt;

&lt;p&gt;Install:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx @agentmemory/agentmemory
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you already use Claude Code's &lt;code&gt;/resume&lt;/code&gt; and a tight &lt;code&gt;CLAUDE.md&lt;/code&gt;, the marginal savings are smaller than the badge implies. Still useful. Just not 92% useful.&lt;/p&gt;

&lt;h2&gt;
  
  
  9router: compress the outputs and arbitrage providers
&lt;/h2&gt;

&lt;p&gt;9router is a multi-provider router with two tricks. The first is RTK Token Saver, which auto-compresses &lt;code&gt;tool_result&lt;/code&gt; content like git diff, grep, find, ls, tree, and log output. The README quotes 20% to 40% per request and shows a worked example: 47K tokens without RTK, 28K tokens with it, a 40% cut on that one call.&lt;/p&gt;

&lt;p&gt;The second trick is provider routing. 9router fronts 40+ providers including Kiro AI (Claude 4.5), OpenCode Free, Vertex AI's $300 credit pool, GLM at $0.6/1M, MiniMax at $0.2/1M, and Kimi at $9/month.&lt;/p&gt;

&lt;p&gt;Install:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; 9router
9router
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Caveat worth saying out loud. Routing to non-Anthropic providers changes the trust profile, the latency, the model quality, and the data handling. Read the provider's terms before you push real client code through it.&lt;/p&gt;

&lt;h2&gt;
  
  
  cc-ledger: see what you spent
&lt;/h2&gt;

&lt;p&gt;You cannot manage what you cannot see. cc-ledger captures every Claude Code edit, prompt, and per-turn token cost via Claude Code hooks. It writes to &lt;code&gt;~/.cc-ledger/ledger.db&lt;/code&gt; and tracks five token classes per turn: &lt;code&gt;input&lt;/code&gt;, &lt;code&gt;output&lt;/code&gt;, &lt;code&gt;cache_read&lt;/code&gt;, &lt;code&gt;cache_write_5m&lt;/code&gt;, and &lt;code&gt;cache_write_1h&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Those classes match Anthropic's own pricing model. Cache reads bill at 0.10x input rates. 5-minute cache writes bill at 1.25x. 1-hour cache writes bill at 2x. Without a ledger, prompt caching feels invisible. With one, you see the line move.&lt;/p&gt;

&lt;p&gt;Install:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://ccledger.dev/install | bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;cc-ledger also computes "shadow billing", which estimates what your subscription usage would have cost on the API. Sat at six stars on May 15, 2026. Early-stage. Use it for visibility, not as a billing system of record.&lt;/p&gt;

&lt;h2&gt;
  
  
  The do-this-in-order recipe
&lt;/h2&gt;

&lt;p&gt;Stack the savings in this order. Each step compounds on the last, and the ledger lets you see what each step actually saved.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Install cc-ledger first. You need a baseline. Run it, then work normally for one day. Note the daily spend.&lt;/li&gt;
&lt;li&gt;Install agentmemory. This kills the cost of re-explaining your project on every new session.&lt;/li&gt;
&lt;li&gt;Install lean-ctx. This compresses every file read and shell command before it hits the model.&lt;/li&gt;
&lt;li&gt;Add airis-mcp-gateway only if you have five or more MCP servers configured. Otherwise skip it.&lt;/li&gt;
&lt;li&gt;Add 9router only if you are willing to route to non-Anthropic providers. Highest impact for Pro users on tight budgets, also the most disruptive change to your workflow.&lt;/li&gt;
&lt;li&gt;Re-check cc-ledger after one week. Compare against your baseline.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;One install at a time, with the ledger between each step. That's how you tell which tool moved the line.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Anthropic itself recommends (free)
&lt;/h2&gt;

&lt;p&gt;Before any third-party tool, the free moves from Anthropic's own cost guide:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Run &lt;code&gt;/clear&lt;/code&gt; between unrelated tasks so context does not balloon.&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;/compact&lt;/code&gt; with custom instructions to keep only what the next step needs.&lt;/li&gt;
&lt;li&gt;Set &lt;code&gt;MAX_THINKING_TOKENS=8000&lt;/code&gt; so extended thinking has a ceiling.&lt;/li&gt;
&lt;li&gt;Prefer CLI tools over MCP servers when the CLI is installed already.&lt;/li&gt;
&lt;li&gt;Move CLAUDE.md detail into skills, so the bytes load only when needed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Anthropic also publishes a "$13 per developer per active day" enterprise benchmark, and notes that agent teams use about 7x more tokens than standard sessions. Worth knowing before you launch a fleet of subagents on a tight budget.&lt;/p&gt;

&lt;h2&gt;
  
  
  Risks and caveats
&lt;/h2&gt;

&lt;p&gt;A few honest gotchas, in order of how often they bite people.&lt;/p&gt;

&lt;p&gt;Every percentage above is vendor-stated. The 97% airis figure comes from a third-party listing, not the repo itself. The 99% lean-ctx figure assumes cache hits. The 92% agentmemory figure compares against the worst-case baseline. The 40% 9router figure is one worked example, not a benchmark.&lt;/p&gt;

&lt;p&gt;9router routes traffic to non-Anthropic providers. That changes trust, latency, quality, and data handling.&lt;/p&gt;

&lt;p&gt;cc-ledger is early-stage. Use it for visibility, not as a billing system of record.&lt;/p&gt;

&lt;p&gt;The June 15 split is recent. Anthropic has changed billing twice in two months. Check the official pricing page before making subscription decisions based on this post.&lt;/p&gt;

&lt;p&gt;Stacking five tools adds operational surface area. Bash install, Docker, npm global, npx daemon, hook scripts. Install one at a time and re-measure with cc-ledger between each.&lt;/p&gt;

&lt;p&gt;None of these tools is endorsed by Anthropic. They are community projects.&lt;/p&gt;

&lt;p&gt;The bill went up twice in 30 days. The fix is not one tool. The fix is a stack with a meter on top. Install the ledger first, then layer the rest.&lt;/p&gt;

&lt;p&gt;Full breakdown with every source link: &lt;a href="https://www.buildthisnow.com/blog/guide/mechanics/cut-claude-code-token-costs" rel="noopener noreferrer"&gt;https://www.buildthisnow.com/blog/guide/mechanics/cut-claude-code-token-costs&lt;/a&gt;&lt;/p&gt;

</description>
      <category>claudecode</category>
      <category>ai</category>
      <category>tokencosts</category>
      <category>developertools</category>
    </item>
    <item>
      <title>I Shipped a SaaS MVP With Three Emails. Then I Watched It Die.</title>
      <dc:creator>speedy_devv</dc:creator>
      <pubDate>Sun, 03 May 2026 15:16:06 +0000</pubDate>
      <link>https://dev.to/speedy_devv/i-shipped-a-saas-mvp-with-three-emails-then-i-watched-it-die-3dej</link>
      <guid>https://dev.to/speedy_devv/i-shipped-a-saas-mvp-with-three-emails-then-i-watched-it-die-3dej</guid>
      <description>&lt;p&gt;I just shipped a SaaS MVP last month. Auth worked. Payments worked. The product did the thing it was supposed to do. I opened the dashboard on a Monday morning, coffee in hand, ready to watch the trials convert.&lt;/p&gt;

&lt;p&gt;Three weeks later my trial-to-paid was sitting at 8%. Users were signing up, clicking around for a day, and vanishing. Nobody was churning loudly. They were just leaving. Quietly. Like the app was a restaurant they walked into, looked at the menu, and walked out of without ordering.&lt;/p&gt;

&lt;p&gt;I looked at my email setup. A welcome email, a password reset, a payment receipt. That was it. Three emails covering maybe 10% of the lifecycle. The other 90% was silence, and that silence was costing me every single trial that did not convert on its own.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgn0qeiqvmn6kl05fcjum.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgn0qeiqvmn6kl05fcjum.png" alt=" " width="800" height="420"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/.%2Fhero.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/.%2Fhero.png" alt="AI Email Sequences" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Number That Made Me Stop Coding and Start Reading
&lt;/h2&gt;

&lt;p&gt;I went down a research rabbit hole for two days. I read every email marketing study I could find. One number kept showing up, and it kept me up at night.&lt;/p&gt;

&lt;p&gt;Automated email flows make up about 2% of total email volume but drive 37% of email revenue. Two percent. Thirty-seven percent. That ratio is insane. The emails most founders skip are the ones generating most of the money.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Two percent of your email volume drives 37% of your revenue. That is the gap where silent SaaS products go to die.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I had shipped the product. I had not shipped the lifecycle. And the lifecycle was the product, because nobody reaches the product if nobody leads them to it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I Stopped Trusting My Email Tool
&lt;/h2&gt;

&lt;p&gt;The standard advice is: open your email platform, pick a template, write the copy, set a 3-day delay, repeat. I tried that. I hated it. Here is what I kept running into.&lt;/p&gt;

&lt;h3&gt;
  
  
  Timers Ignore What Users Actually Do
&lt;/h3&gt;

&lt;p&gt;Most tools schedule emails on fixed delays. Send email 2 three days after email 1. That logic treats every user the same. A user who activated on day 1 gets the same nudge as someone who never logged in. It is spam disguised as personalization.&lt;/p&gt;

&lt;p&gt;The research is blunt about this. Triggered emails, meaning emails sent based on what a user does, get 76% higher open rates and 152% higher click-through rates than timed sends. If I wanted the 37% revenue, I had to build triggered, not timed.&lt;/p&gt;

&lt;h3&gt;
  
  
  HTML Templates Look Professional and Underperform
&lt;/h3&gt;

&lt;p&gt;I had been building rich HTML emails with my logo, images, layout grids, the whole thing. They looked great in preview. They also tanked in practice.&lt;/p&gt;

&lt;p&gt;Plain text emails get 42% more clicks than HTML. Gmail and Apple Mail render plain text well. Heavy HTML triggers spam filters. Half the devices your users carry render your beautiful layout like a ransom note. I had been optimizing for what looked good in my design tool, not for what clicked in real inboxes.&lt;/p&gt;

&lt;h3&gt;
  
  
  External Tools Have No Idea What Your App Is Doing
&lt;/h3&gt;

&lt;p&gt;This is the one that killed me. My email platform could not check if a user had already activated before sending the activation nudge. It could not skip the upgrade email for someone who upgraded yesterday. The email system and the product lived in separate worlds. I was sending people upgrade prompts after they had upgraded.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Actually Wanted to Build
&lt;/h2&gt;

&lt;p&gt;I wrote down what a correct email system would do. It would:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Read my product, my user journeys, my brand voice, and design sequences that sounded like my product&lt;/li&gt;
&lt;li&gt;Cover all six major lifecycle stages, not just welcome and billing&lt;/li&gt;
&lt;li&gt;React to what users do, not when they signed up&lt;/li&gt;
&lt;li&gt;Check the database between every email so I never sent something stupid&lt;/li&gt;
&lt;li&gt;Render both HTML and plain text so every client got the version it preferred&lt;/li&gt;
&lt;li&gt;Wire triggers to events my app already fires (signup, limit hit, cancellation)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then I looked at what that would take to build by hand. Seventeen templates. Six background job functions. Trigger wiring across three codebases. Type checking. Tests. Maybe a week of focused work if nothing went sideways.&lt;/p&gt;

&lt;p&gt;I did not have a week. I had a conversion problem right now.&lt;/p&gt;

&lt;p&gt;So I built it differently.&lt;/p&gt;

&lt;h2&gt;
  
  
  One Command, Six Agents, Seventeen Emails
&lt;/h2&gt;

&lt;p&gt;I built a slash command called &lt;code&gt;/emails&lt;/code&gt; that runs a pipeline of Claude Code agents. One command reads my product, designs every sequence, waits for approval, then builds in parallel.&lt;/p&gt;

&lt;p&gt;The command runs in two phases.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Phase 1 is design.&lt;/strong&gt; One agent reads my product overview, user journeys, brand guidelines, feature map, auth flow, billing setup, and brand colors. From that it builds an Email Brief: the product name, the "aha moment" (the specific action where the product clicks), pricing model, top features to educate about, and upgrade triggers. Then it designs all 17 emails. Subject lines, timing, goals, copy angles.&lt;/p&gt;

&lt;p&gt;Nothing gets built yet. The plan goes to me first. I can cut sequences, rewrite subject lines, change timing, or kill emails I do not want. The build phase uses my approved plan as its spec.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Phase 2 is build.&lt;/strong&gt; Six agents work in parallel. One base agent goes first and creates the shared layout and sending utility. Then five agents build their sequences at the same time. Templates are React components. Background jobs use Inngest (a job engine that handles scheduling, retries, and event-driven workflows).&lt;/p&gt;

&lt;p&gt;Twenty minutes of wall-clock time. Six parallel agents. Seventeen typed templates. Six functions. One type check at the end.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/.%2Fslide-02.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/.%2Fslide-02.png" alt="Email Sequences Overview" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Six Sequences Every SaaS Is Missing
&lt;/h2&gt;

&lt;p&gt;Here is the lifecycle the system builds. I did not invent this. I read about 40 email marketing studies and pulled the pattern that worked.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Welcome (4 emails, days 0 to 7)
&lt;/h3&gt;

&lt;p&gt;This is the highest-value sequence you will ever send. First welcome emails average 55 to 70% open rates. Top-performing SaaS companies hit 75% plus. That is the best attention you will ever get from a user. Four emails over the first seven days, each one guiding them closer to the moment your product clicks for them.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Activation Nudge (+48h if no key action)
&lt;/h3&gt;

&lt;p&gt;Someone finishes onboarding, sees the dashboard, and leaves. This is the single biggest drop-off point in most SaaS products. One email 48 hours later, focused on one specific action, pulls a chunk of them back.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Feature Education (days 14 to 28)
&lt;/h3&gt;

&lt;p&gt;The user is active but only uses one feature. Three emails, each highlighting something they have not touched yet. Segmented campaigns like this drive up to 760% more revenue than broadcast blasts.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Upgrade Prompt (on limit hit)
&lt;/h3&gt;

&lt;p&gt;This one fires when the user hits a real limit, not on a timer. They tried to do something the free plan does not allow. That is the moment they actually understand the value. Three emails over five days: what happened, what the paid plan includes, and an offer.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Churn Prevention (7 to 30 days inactive)
&lt;/h3&gt;

&lt;p&gt;Runs on a daily cron job. Every morning at 9 AM, the system queries the database for users inactive for 7 plus days. Three emails spread across the next 30 days, each using a different angle: here is what you are missing, your data is still here, tell us what went wrong.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Win-Back (0 to 30 days after cancellation)
&lt;/h3&gt;

&lt;p&gt;Starts when Stripe sends a cancellation webhook. Three emails over 30 days. The first acknowledges the cancellation. The second highlights what improved. The third makes an offer.&lt;/p&gt;

&lt;p&gt;Here is the part that floored me. A study of 38 SaaS companies found that only 2 covered all of these stages. Two out of thirty-eight. Most stop at welcome and billing. The other 36 are leaving 37% of their email revenue on the table.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Only 2 of 38 SaaS companies cover all nine lifecycle stages. Everyone else is bleeding revenue politely.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The Part That Actually Matters: Behavioral Branching
&lt;/h2&gt;

&lt;p&gt;The thing that separates a real lifecycle system from a timer-based drip is branching. Reacting to what users do, not when they signed up.&lt;/p&gt;

&lt;p&gt;Inngest has a feature called &lt;code&gt;step.waitForEvent&lt;/code&gt;. In plain terms, it pauses a sequence and waits for a specific thing to happen before continuing. If that thing does not happen in a time limit, the sequence takes a different path.&lt;/p&gt;

&lt;p&gt;Here is how that plays out for a new user.&lt;/p&gt;

&lt;p&gt;They sign up. The welcome sequence starts. Email 1 sends immediately. Then the function calls &lt;code&gt;step.waitForEvent&lt;/code&gt; and waits up to 48 hours for a &lt;code&gt;user.activated&lt;/code&gt; event, meaning the user completed the product's core action.&lt;/p&gt;

&lt;p&gt;If the event arrives, the sequence skips the activation nudge and jumps straight to feature education. The user already found the value. Nudging them would be noise.&lt;/p&gt;

&lt;p&gt;If the event does not arrive, the activation nudge fires. One email focused on the specific action they have not taken.&lt;/p&gt;

&lt;p&gt;That same branching happens inside every sequence. The upgrade prompt checks if the user upgraded between emails. Churn prevention checks if they logged back in. Win-back checks if they re-subscribed. Between every &lt;code&gt;step.sleep()&lt;/code&gt; call, the function opens a fresh database connection and checks the user's current state. If the user already converted, the sequence stops.&lt;/p&gt;

&lt;p&gt;No one gets an upgrade email the day after they upgraded. No one gets a churn email the morning they came back. The email system knows what the product knows, because it is built inside the same app.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Copy Angle Nobody Teaches You: Loss Framing
&lt;/h2&gt;

&lt;p&gt;I want to single out one specific thing the research changed about my copy. The win-back sequence.&lt;/p&gt;

&lt;p&gt;Most founders write cancellation follow-ups that are sunny and optimistic. "Come back, we miss you, look at all the great new things we built." Positive framing. It feels right.&lt;/p&gt;

&lt;p&gt;It underperforms. By a lot.&lt;/p&gt;

&lt;p&gt;Loss-framed messaging, meaning what you are giving up, converts 21 to 32% better than positive framing. My win-back emails now lead with what the user loses by staying away. The data they cannot access. The automations still running in the background waiting for them. The integration they set up that is about to go stale.&lt;/p&gt;

&lt;p&gt;It feels counterintuitive. Loss framing sounds mean. But humans are wired to avoid loss more than to seek gain, and email copy is the place where that wiring shows up most clearly.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Happened When I Actually Used This
&lt;/h2&gt;

&lt;p&gt;I rolled out the full seven-email onboarding arc on my MVP.&lt;/p&gt;

&lt;p&gt;Trial-to-paid went from 12% to 22% over six weeks. Monthly churn dropped from 8% to 4.8%. Those are the two numbers that compound. A 10-point conversion lift plus a 3-point churn reduction changes the math on every marketing dollar I spend. Every channel I was running suddenly paid back more, because the funnel behind it stopped leaking at the bottom.&lt;/p&gt;

&lt;p&gt;The other thing I did not expect: my support volume went down. People stopped asking me basic feature questions. The education sequence was answering them before they hit the contact form.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Trial-to-paid went from 12% to 22%. Churn went from 8% to 4.8%. Support volume dropped. The emails did the work my onboarding was supposed to do.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Six Rules I Would Keep Even If I Rebuilt This
&lt;/h2&gt;

&lt;p&gt;The pattern works with any email provider, any job engine, any framework. Here is what I would carry forward.&lt;/p&gt;

&lt;h3&gt;
  
  
  Read the product before designing emails
&lt;/h3&gt;

&lt;p&gt;The most common mistake is writing emails that sound generic because the person writing them did not understand the product deeply enough. Feed the system your product docs, user journeys, and brand voice before it touches a template.&lt;/p&gt;

&lt;h3&gt;
  
  
  Design before you build
&lt;/h3&gt;

&lt;p&gt;Present the full plan. Get approval. Then build. Changing a subject line in a plan is free. Changing it in a built template means re-rendering, re-testing, re-deploying.&lt;/p&gt;

&lt;h3&gt;
  
  
  Check user state between every email
&lt;/h3&gt;

&lt;p&gt;Never assume the user is still in the state they were in when the sequence started. A &lt;code&gt;step.sleep("3d")&lt;/code&gt; means three days of potential changes. Query the database before sending.&lt;/p&gt;

&lt;h3&gt;
  
  
  One action per email
&lt;/h3&gt;

&lt;p&gt;Not two buttons. Not three links. One clear next step. Emails with a single call to action get higher click-through rates because there is no decision to make.&lt;/p&gt;

&lt;h3&gt;
  
  
  Build plain text alongside HTML
&lt;/h3&gt;

&lt;p&gt;Do not treat plain text as an afterthought. Render both versions from the same template. Plain text emails get 42% more clicks in head-to-head tests, and you get it for free if you design for both.&lt;/p&gt;

&lt;h3&gt;
  
  
  Wire triggers to events your app already fires
&lt;/h3&gt;

&lt;p&gt;Signup already happens. Cancellation already happens. Limit hits already happen. The email system hooks into events that already exist. That is zero new infrastructure.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Pattern Works Beyond Email
&lt;/h2&gt;

&lt;p&gt;The parallel-agents pattern, one base agent builds shared infrastructure, then specialized agents build on top of it at the same time, is not specific to email.&lt;/p&gt;

&lt;p&gt;I have since used the same shape for notification systems (push, in-app, SMS), onboarding flows (modal, tour, checklist, empty states), and documentation (structure and shared components, then sections written in parallel). Same coordination. Same speed win.&lt;/p&gt;

&lt;p&gt;Read the product context first. Design before building. Build in parallel with shared infrastructure. Check state before acting. Type-check everything at the end. That is the entire recipe.&lt;/p&gt;

&lt;h2&gt;
  
  
  If You Want the Whole Thing
&lt;/h2&gt;

&lt;p&gt;The &lt;code&gt;/emails&lt;/code&gt; command is part of Build This Now. It is an AI-powered build system for shipping production SaaS in 48 hours. Eighteen specialist agents, 55+ skills, a full production codebase with auth, payments, storage, analytics, and security built in. One-time payment. No subscriptions.&lt;/p&gt;

&lt;p&gt;If you want to stop shipping products that die quietly three weeks after launch, start here:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Full system: &lt;a href="https://buildthisnow.com" rel="noopener noreferrer"&gt;buildthisnow.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Read the full technical breakdown on the blog: &lt;a href="https://buildthisnow.com/blog/ai-email-sequences" rel="noopener noreferrer"&gt;buildthisnow.com/blog/ai-email-sequences&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The MVP is the product. The lifecycle is the business. Build both.&lt;/p&gt;




</description>
      <category>ai</category>
      <category>claudecode</category>
      <category>saas</category>
      <category>emailmarketing</category>
    </item>
    <item>
      <title>MCP Tool Hooks in Claude Code</title>
      <dc:creator>speedy_devv</dc:creator>
      <pubDate>Fri, 24 Apr 2026 13:22:05 +0000</pubDate>
      <link>https://dev.to/speedy_devv/mcp-tool-hooks-in-claude-code-24f6</link>
      <guid>https://dev.to/speedy_devv/mcp-tool-hooks-in-claude-code-24f6</guid>
      <description>&lt;p&gt;Your hooks run shell scripts. Every time a hook needs to call an MCP server, it spawns a subprocess, wires up transport, handles auth, parses the response, and formats JSON back to stdout. For a security check that fires on every file write, that overhead adds up fast.&lt;/p&gt;

&lt;p&gt;As of Claude Code v2.1.118, there is a cleaner path. Hooks have a new type that calls MCP tools directly. No subprocess. The MCP server is already running. The hook calls straight into its RPC connection.&lt;/p&gt;

&lt;p&gt;Add this to &lt;code&gt;.claude/settings.json&lt;/code&gt; to run a security scan after every file write:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7ijs867pybukqry3xh6y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7ijs867pybukqry3xh6y.png" alt=" " width="800" height="420"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"hooks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"PostToolUse"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"matcher"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Write|Edit"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"hooks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"mcp_tool"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"server"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"semgrep"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"tool"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"scan_file"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"input"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"path"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"${tool_input.file_path}"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is the whole thing. The tool's text output goes through the same JSON decision parser as any command hook. No shell, no PATH problems, no jq dependency.&lt;/p&gt;

&lt;h2&gt;
  
  
  What type: "mcp_tool" actually is
&lt;/h2&gt;

&lt;p&gt;Before v2.1.118, hooks had four handler types: &lt;code&gt;command&lt;/code&gt;, &lt;code&gt;http&lt;/code&gt;, &lt;code&gt;prompt&lt;/code&gt;, and &lt;code&gt;agent&lt;/code&gt;. Now there are five:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;command&lt;/code&gt; — shell subprocess (stdin/stdout)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;http&lt;/code&gt; — POST to a URL endpoint&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;mcp_tool&lt;/code&gt; — direct RPC call to a connected MCP server&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;prompt&lt;/code&gt; — single-turn LLM evaluation (Haiku default)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;agent&lt;/code&gt; — multi-turn subagent with Read/Grep/Glob access&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The &lt;code&gt;mcp_tool&lt;/code&gt; type works on every hook event, same as &lt;code&gt;command&lt;/code&gt; and &lt;code&gt;http&lt;/code&gt;. One practical caveat: &lt;code&gt;SessionStart&lt;/code&gt; and &lt;code&gt;Setup&lt;/code&gt; fire while servers are still connecting. Those hooks may get a "server not connected" error on first run. Subsequent runs are fine.&lt;/p&gt;

&lt;h2&gt;
  
  
  The full schema
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"mcp_tool"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"server"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"my-mcp-server"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"tool"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"tool_name"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"input"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"arg1"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"${tool_input.file_path}"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"arg2"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"${session_id}"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"timeout"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"statusMessage"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Checking..."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"if"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Edit(*.ts|*.tsx)"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Three fields are specific to &lt;code&gt;mcp_tool&lt;/code&gt; hooks: &lt;code&gt;server&lt;/code&gt;, &lt;code&gt;tool&lt;/code&gt;, and &lt;code&gt;input&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;server&lt;/code&gt; must exactly match the server name in your MCP configuration. One character difference and the hook silently fails with a non-blocking error.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;input&lt;/code&gt; values support &lt;code&gt;${field.path}&lt;/code&gt; dot-notation into the hook's full event JSON. For a &lt;code&gt;PostToolUse&lt;/code&gt; hook on a &lt;code&gt;Write&lt;/code&gt; call, the event includes &lt;code&gt;tool_input.file_path&lt;/code&gt;, &lt;code&gt;tool_input.content&lt;/code&gt;, &lt;code&gt;session_id&lt;/code&gt;, &lt;code&gt;cwd&lt;/code&gt;, &lt;code&gt;duration_ms&lt;/code&gt;, and more. Any field is reachable.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;if&lt;/code&gt; uses permission-rule syntax. &lt;code&gt;"Edit(*.py|*.ts|*.js)"&lt;/code&gt; means the hook only fires when the matched file extension applies. On a docs-heavy project with constant markdown edits, this is a real performance difference.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters vs. command hooks
&lt;/h2&gt;

&lt;p&gt;Two concrete differences, not just speed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stateful servers.&lt;/strong&gt; A shell subprocess starts fresh every time. An MCP server is a live process with its own state: loaded configs, open connections, caches, accumulated session context. A linting MCP that pre-parsed your &lt;code&gt;tsconfig.json&lt;/code&gt; on startup does not re-parse it on every file write. A command hook does.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No shell environment dependency.&lt;/strong&gt; Command hooks fail silently when &lt;code&gt;PATH&lt;/code&gt; is wrong, when &lt;code&gt;jq&lt;/code&gt; is not installed, when &lt;code&gt;~/.zshrc&lt;/code&gt; prints something to stdout on non-interactive shells. MCP tool hooks bypass all of that. The call goes from Claude Code to the server over the existing RPC connection.&lt;/p&gt;

&lt;h2&gt;
  
  
  How the output is processed
&lt;/h2&gt;

&lt;p&gt;The MCP tool's text content is treated exactly like a command hook's stdout. If it parses as valid JSON, Claude Code acts on the decision fields. If not, the text becomes context for Claude.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"decision"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"block"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"reason"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Security issue found in src/api.ts: SQL injection risk on line 42."&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Return this from a &lt;code&gt;PostToolUse&lt;/code&gt; MCP tool hook and Claude gets the message and fixes the file. For blocking before a tool runs, use &lt;code&gt;PreToolUse&lt;/code&gt; and return &lt;code&gt;permissionDecision: "deny"&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;One field is exclusive to &lt;code&gt;mcp_tool&lt;/code&gt; hooks on &lt;code&gt;PostToolUse&lt;/code&gt;: &lt;code&gt;updatedMCPToolOutput&lt;/code&gt;. It replaces what Claude sees as the tool's output before it enters the conversation. A running MCP server can post-process another tool's result before Claude reads it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pattern 1: Security scanning on every write
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"hooks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"PostToolUse"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"matcher"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Write|Edit"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"hooks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"mcp_tool"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"server"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"semgrep"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"tool"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"scan_file"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"if"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Write(*.ts|*.py|*.js|*.go)"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"input"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"path"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"${tool_input.file_path}"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"statusMessage"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Scanning..."&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The scan runs on the server's cached ruleset. Not a fresh subprocess parse on every keystroke. If the tool finds something, return &lt;code&gt;decision: "block"&lt;/code&gt; with the finding. Claude reworks the file before continuing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pattern 2: Stop hook with external verification
&lt;/h2&gt;

&lt;p&gt;A Stop hook that calls a Linear MCP to check whether the related ticket is actually closed before Claude declares done:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"hooks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"Stop"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"hooks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"mcp_tool"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"server"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"linear"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"tool"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"get_issue_status"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"input"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"issue_id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"${tool_input.issue_id}"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Always check &lt;code&gt;stop_hook_active&lt;/code&gt; in your Stop hook logic. The event JSON includes this field as &lt;code&gt;"true"&lt;/code&gt; when Claude is already continuing from a previous Stop hook firing. A server that ignores this creates an infinite loop. Build the guard into the MCP tool: if &lt;code&gt;stop_hook_active&lt;/code&gt; is &lt;code&gt;"true"&lt;/code&gt; in the input, return empty output and exit cleanly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pattern 3: Production error check before stopping
&lt;/h2&gt;

&lt;p&gt;After Claude finishes a feature, check whether anything new broke in staging before marking the session complete:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"hooks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"Stop"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"hooks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"mcp_tool"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"server"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"sentry"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"tool"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"get_new_errors_since"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"input"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"minutes"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"5"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"skip_if_active"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"${stop_hook_active}"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If new errors appeared in the last five minutes, the MCP tool returns them with &lt;code&gt;decision: "block"&lt;/code&gt;. Claude reads the error details and fixes the regression before stopping.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pattern 4: Auto-inject docs before every prompt
&lt;/h2&gt;

&lt;p&gt;A &lt;code&gt;UserPromptSubmit&lt;/code&gt; hook with a Context7 MCP fetches live documentation for any library mentioned in the prompt, before Claude processes it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"hooks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"UserPromptSubmit"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"hooks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"mcp_tool"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"server"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"context7"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"tool"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"get_library_docs"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"input"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"prompt"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"${prompt}"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"timeout"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;15&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Previously this required Claude to explicitly call the MCP tool. Now it happens on every prompt automatically. Claude starts with current docs instead of training data.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pattern 5: Policy enforcement for agent teams
&lt;/h2&gt;

&lt;p&gt;When running multi-agent workflows, a shared policy MCP server can enforce which agent writes to which directories:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"hooks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"PreToolUse"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"matcher"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Write|Edit"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"hooks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"mcp_tool"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"server"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"policy-server"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"tool"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"check_write_permission"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"input"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
              &lt;/span&gt;&lt;span class="nl"&gt;"agent"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"${agent_name}"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
              &lt;/span&gt;&lt;span class="nl"&gt;"path"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"${tool_input.file_path}"&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Update the server once and every agent in every project inherits the new rules. No touching individual &lt;code&gt;settings.json&lt;/code&gt; files.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pattern 6: MCP tool hooks in agent frontmatter
&lt;/h2&gt;

&lt;p&gt;Hooks can live in an agent's YAML frontmatter, scoped to that agent's lifecycle:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;backend-developer&lt;/span&gt;
&lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Builds&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;API&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;endpoints&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;and&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;database&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;logic"&lt;/span&gt;
&lt;span class="na"&gt;hooks&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;PostToolUse&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;matcher&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Write"&lt;/span&gt;
      &lt;span class="na"&gt;hooks&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;mcp_tool&lt;/span&gt;
          &lt;span class="na"&gt;server&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;semgrep&lt;/span&gt;
          &lt;span class="na"&gt;tool&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;scan_file&lt;/span&gt;
          &lt;span class="na"&gt;input&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;path"&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;${tool_input.file_path}"&lt;/span&gt; &lt;span class="pi"&gt;}&lt;/span&gt;
  &lt;span class="na"&gt;Stop&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;hooks&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;agent&lt;/span&gt;
          &lt;span class="na"&gt;prompt&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Verify&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;all&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;API&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;endpoints&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;have&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;corresponding&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;tests.&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Block&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;if&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;any&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;are&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;missing."&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each specialist agent in an orchestrated team carries its own validation logic. The backend agent scans for security issues. The frontend agent checks accessibility. Neither needs a global hook that applies to everyone.&lt;/p&gt;

&lt;h2&gt;
  
  
  MCP servers worth pairing with hooks
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Server&lt;/th&gt;
&lt;th&gt;Event&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Semgrep&lt;/td&gt;
&lt;td&gt;PostToolUse: Write&lt;/td&gt;
&lt;td&gt;Security scan on every write&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sentry&lt;/td&gt;
&lt;td&gt;Stop&lt;/td&gt;
&lt;td&gt;Check for new staging errors before completing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Linear / Jira&lt;/td&gt;
&lt;td&gt;Stop&lt;/td&gt;
&lt;td&gt;Verify ticket status, update on completion&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Context7&lt;/td&gt;
&lt;td&gt;UserPromptSubmit&lt;/td&gt;
&lt;td&gt;Auto-fetch live docs for mentioned libraries&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ElevenLabs&lt;/td&gt;
&lt;td&gt;Stop&lt;/td&gt;
&lt;td&gt;TTS audio on task completion&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Slack&lt;/td&gt;
&lt;td&gt;Notification, Stop&lt;/td&gt;
&lt;td&gt;Team alerts without curl boilerplate&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;E2B&lt;/td&gt;
&lt;td&gt;Stop&lt;/td&gt;
&lt;td&gt;Run generated scripts in a sandbox before marking done&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;claude-mem&lt;/td&gt;
&lt;td&gt;PostCompact, SessionStart&lt;/td&gt;
&lt;td&gt;Restore session context after compaction&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;n8n&lt;/td&gt;
&lt;td&gt;TaskCompleted&lt;/td&gt;
&lt;td&gt;Trigger an external workflow on completion&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Known issue: PostToolUse + MCP events + additionalContext
&lt;/h2&gt;

&lt;p&gt;There is an open bug (GitHub issue #24788) where &lt;code&gt;additionalContext&lt;/code&gt; from hooks gets silently dropped when the triggering event was an MCP tool call. This affects &lt;code&gt;type: "command"&lt;/code&gt; hooks that respond to MCP tool events, not &lt;code&gt;mcp_tool&lt;/code&gt; hooks themselves.&lt;/p&gt;

&lt;p&gt;The distinction matters: hooks that are MCP invocations work fine. Hooks that respond to MCP tool calls and return &lt;code&gt;additionalContext&lt;/code&gt; do not. Workaround is &lt;code&gt;exit 2&lt;/code&gt; plus stderr for critical messages. The blocking pattern works. Advisory injection does not.&lt;/p&gt;

&lt;h2&gt;
  
  
  The hook system's last missing piece
&lt;/h2&gt;

&lt;p&gt;Before this, hooks were a safety net. Shell commands that could block dangerous things or run formatters. Stateless, process-local, disconnected from everything your MCP servers already know.&lt;/p&gt;

&lt;p&gt;After: hooks are a deterministic orchestration layer. Any event, any MCP tool, full decision control, with state that persists across calls and no subprocess overhead.&lt;/p&gt;

&lt;p&gt;PreToolUse validates. PostToolUse formats and scans. PostToolBatch runs tests. Stop verifies with real external data. Every step can be an MCP tool invocation. None of them require a shell script.&lt;/p&gt;

&lt;p&gt;Full reference with schema, substitution syntax, and all event types: &lt;a href="https://buildthisnow.com/blog/tools/hooks/mcp-tool-hooks" rel="noopener noreferrer"&gt;https://buildthisnow.com/blog/tools/hooks/mcp-tool-hooks&lt;/a&gt;&lt;/p&gt;

</description>
      <category>claude</category>
      <category>cli</category>
      <category>mcp</category>
      <category>tooling</category>
    </item>
    <item>
      <title>5 Frontier Models Compared</title>
      <dc:creator>speedy_devv</dc:creator>
      <pubDate>Thu, 23 Apr 2026 19:43:03 +0000</pubDate>
      <link>https://dev.to/speedy_devv/5-frontier-models-compared-3mgb</link>
      <guid>https://dev.to/speedy_devv/5-frontier-models-compared-3mgb</guid>
      <description>&lt;p&gt;I kept picking the wrong model.&lt;/p&gt;

&lt;p&gt;Not because I didn't know the benchmarks. Because the benchmarks don't tell you what a model actually costs when you're running it daily, or whether it holds up across a 3-hour agent session, or whether it can fit your whole codebase without truncating half of it.&lt;/p&gt;

&lt;p&gt;Five frontier models shipped in early 2026. All of them are good. None of them is good at everything. DeepSeek V3.2 costs $1 per million input tokens. GPT-5.4 costs $2.50 for the same volume. That is a 2.5x spread at the top of the lineup, and the cheaper model is not always worse for the job at hand.&lt;/p&gt;

&lt;p&gt;Here is what I learned after running them all.&lt;/p&gt;




&lt;h2&gt;
  
  
  The price gap nobody talks about
&lt;/h2&gt;

&lt;p&gt;The headline numbers first, because they set the frame.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Input / Output (per 1M tokens)&lt;/th&gt;
&lt;th&gt;Context Window&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Claude Opus 4.7&lt;/td&gt;
&lt;td&gt;$5 / $25&lt;/td&gt;
&lt;td&gt;1M tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT-5.4&lt;/td&gt;
&lt;td&gt;$2.50 / $15&lt;/td&gt;
&lt;td&gt;256K tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Kimi K2.6&lt;/td&gt;
&lt;td&gt;$3 / $15&lt;/td&gt;
&lt;td&gt;512K tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gemini 3.1 Pro&lt;/td&gt;
&lt;td&gt;$2 / $12&lt;/td&gt;
&lt;td&gt;2M tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DeepSeek V3.2&lt;/td&gt;
&lt;td&gt;$1 / $4&lt;/td&gt;
&lt;td&gt;128K tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The price gap is real. DeepSeek V3.2 costs a fifth of what Opus 4.7 costs per input token. Context windows vary by 16x from smallest to largest. DeepSeek's 128K window handles a medium codebase. Gemini's 2M window fits an entire monorepo.&lt;/p&gt;

&lt;p&gt;These gaps are not footnotes. For the right workloads, they are the whole decision.&lt;/p&gt;

&lt;h2&gt;
  
  
  Coding: where the separation actually shows up
&lt;/h2&gt;

&lt;p&gt;The standard benchmark is SWE-Bench, real GitHub issues where the model writes a fix that passes the test suite. Good benchmark. It skews toward clean, well-specified problems.&lt;/p&gt;

&lt;p&gt;CursorBench runs a different evaluation. Real prompts from Cursor users. Messy, underspecified, half-broken codebases. The kind of problems actual developers bring to an AI every day.&lt;/p&gt;

&lt;p&gt;Opus 4.7 leads CursorBench at 70%. GPT-5.4 comes close at 68% on SWE-Bench. On clean, well-defined problems the two are nearly even. On messy problems, the gap widens.&lt;/p&gt;

&lt;p&gt;What makes Opus 4.7 different on hard coding tasks is self-correction. Most models generate code, declare it done, and move on. Opus 4.7 reviews what it just wrote, spots the type error or logic gap, and fixes it in the same pass. One fewer debugging loop per session adds up across a week of engineering work. I noticed it first on a nasty legacy codebase with no tests and inconsistent patterns: Opus 4.7 held the thread across multiple refactoring steps where others started drifting.&lt;/p&gt;

&lt;p&gt;Gemini 3.1 Pro scores 63% on SWE-Bench and is a solid coding model when the task requires pulling context from a large codebase. The 2M window means it can read the whole thing. Where it falls behind is on complex reasoning chains where the model has to hold a long chain of logic without losing it.&lt;/p&gt;

&lt;p&gt;DeepSeek V3.2 at 52% is surprisingly capable on standard implementation tasks for its price. Clear prompt, unambiguous problem, it delivers. It does not belong on hard, ambiguous work, and it mostly knows that.&lt;/p&gt;

&lt;h2&gt;
  
  
  Long documents: two different dimensions
&lt;/h2&gt;

&lt;p&gt;Context window size and document reasoning quality are separate things. A huge window is useless if the model loses the plot. Strong reasoning is limited if the document doesn't fit.&lt;/p&gt;

&lt;p&gt;Gemini 3.1 Pro's 2M context is genuinely useful for real workloads: a large monorepo, a full set of legal contracts, a year of financial filings. Nothing gets truncated. If the task is "read everything and extract what matters," Gemini is the right tool.&lt;/p&gt;

&lt;p&gt;Opus 4.7's edge is accuracy over what it reads. On dense source material, it produces 21% fewer errors than its predecessor. That gap shows up most clearly in legal and financial work where a wrong clause or misread number has consequences. You can fit more raw text into Gemini, but Opus 4.7 does more with the text it reads.&lt;/p&gt;

&lt;p&gt;A practical combination for large, high-stakes documents: Gemini 3.1 Pro for the initial pass across the full document, Opus 4.7 for the sections that require careful reasoning. Full picture from Gemini, accuracy from Opus on the parts that matter.&lt;/p&gt;

&lt;h2&gt;
  
  
  Multi-step agents: where the real separation is
&lt;/h2&gt;

&lt;p&gt;Agent tasks are where the gap between models becomes undeniable. A model that is great at one-shot prompts can fall apart when it has to run for 20 steps, use tools, and keep track of what it already did.&lt;/p&gt;

&lt;p&gt;The failure mode looks the same across models: the agent starts losing coherence around step 10 to 15. It forgets what it already checked. It tries an approach it already tried. It produces a "done" message when the task is half-finished.&lt;/p&gt;

&lt;p&gt;Opus 4.7 stays coherent across hours of work. It has the lowest tool error rate of the group. When a tool call returns an unexpected result, it adjusts rather than proceeding on a false assumption. The practical payoff: you can set Opus 4.7 on a multi-hour task, walk away, and come back to actual results.&lt;/p&gt;

&lt;p&gt;GPT-5.4 is strong on short chains, 3 to 5 steps, well-defined, fast. It is the fastest model in this group, which matters for interactive workflows where you are watching and course-correcting in real time. At the long end, reliability drops compared to Opus 4.7.&lt;/p&gt;

&lt;p&gt;DeepSeek V3.2 is the right call for lightweight agent work at volume. Bulk tagging, classification pipelines, structured extraction from well-formatted documents. Running 10M tokens through DeepSeek instead of Opus saves about $61 per batch.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it actually costs per real workload
&lt;/h2&gt;

&lt;p&gt;Headline prices only tell half the story. The actual cost depends on what you are running.&lt;/p&gt;

&lt;p&gt;Daily coding sessions (roughly 200K tokens each):&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Cost per Session&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;DeepSeek V3.2&lt;/td&gt;
&lt;td&gt;$0.26&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gemini 3.1 Pro&lt;/td&gt;
&lt;td&gt;$0.75&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Kimi K2.6&lt;/td&gt;
&lt;td&gt;$0.90&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT-5.4&lt;/td&gt;
&lt;td&gt;$1.60&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Opus 4.7&lt;/td&gt;
&lt;td&gt;$1.75&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;For coding sessions, DeepSeek is nearly 7x cheaper than Opus 4.7. GPT-5.4 and Opus are actually close in per-session cost — GPT-5.4 wins on speed, Opus wins on hard problems.&lt;/p&gt;

&lt;p&gt;High-volume automation (10M tokens per month):&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Monthly Cost&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;DeepSeek V3.2&lt;/td&gt;
&lt;td&gt;$14&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gemini 3.1 Pro&lt;/td&gt;
&lt;td&gt;$35&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Kimi K2.6&lt;/td&gt;
&lt;td&gt;$39&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Opus 4.7&lt;/td&gt;
&lt;td&gt;$75&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT-5.4&lt;/td&gt;
&lt;td&gt;$78&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;At bulk volumes, DeepSeek is in a different price category. $14 versus $78 for the same token volume is a fundamentally different operating cost. Gemini 3.1 Pro at $35/month is the surprise here: 2M context at less than half the price of Opus.&lt;/p&gt;

&lt;h2&gt;
  
  
  The default pair for most builders
&lt;/h2&gt;

&lt;p&gt;Opus 4.7 handles the tasks where quality decides the outcome: hard coding, debugging legacy code, long agent runs, precise document analysis. DeepSeek V3.2 handles the tasks where volume and cost decide the outcome: bulk automation, classification, templated generation, anything with a clear spec.&lt;/p&gt;

&lt;p&gt;Those two together cover 90% of what most builders actually need.&lt;/p&gt;

&lt;p&gt;The other three have specific edges worth knowing. Gemini 3.1 Pro for any workload that needs a 2M context window at a competitive price. GPT-5.4 for fast interactive work on clean codebases. Kimi K2.6 for Chinese-language documents at a competitive price.&lt;/p&gt;

&lt;p&gt;The question is never "which model is best." It is "which model is right for this task." Get that right and you spend less, finish faster, and fix fewer mistakes on the other side.&lt;/p&gt;

&lt;p&gt;Full breakdown with all the benchmark tables and cost scenarios is here: &lt;a href="https://dev.tourl"&gt;buildthisnow.com/blog/models/2026-04-21-opus47-vs-frontier&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>claudecode</category>
      <category>saas</category>
      <category>buildinpublic</category>
    </item>
    <item>
      <title>Claude Opus 4.7: What Actually Changed for Agentic Coding</title>
      <dc:creator>speedy_devv</dc:creator>
      <pubDate>Thu, 16 Apr 2026 17:46:11 +0000</pubDate>
      <link>https://dev.to/speedy_devv/claude-opus-47-what-actually-changed-for-agentic-coding-4i27</link>
      <guid>https://dev.to/speedy_devv/claude-opus-47-what-actually-changed-for-agentic-coding-4i27</guid>
      <description>&lt;p&gt;Anthropic shipped Opus 4.7 on April 16, 2026. Same $5/$25 pricing as 4.6. Same 1M context. Same 128K output ceiling. Different model entirely when you put it in an agentic coding loop.&lt;/p&gt;

&lt;p&gt;If you run Claude Code or build agent pipelines on the Claude API, this post is the migration brief I wish someone had handed me on release day. Benchmarks, the five behavioral shifts that actually matter, the new API features, and the breaking changes you will hit if you just flip the model ID.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Benchmark Table First
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;| Benchmark              | Opus 4.6 | Opus 4.7              |
|------------------------|----------|-----------------------|
| CursorBench            | 58%      | 70%                   |
| Rakuten-SWE-Bench      | Baseline | 3x resolution         |
| XBOW visual-acuity     | 54.5%    | 98.5%                 |
| OfficeQA Pro errors    | Baseline | 21% fewer             |
| BigLaw Bench (Harvey)  | Lower    | 90.9% at high effort  |
| Notion Agent errors    | Baseline | 1/3 the errors        |
| Factory Droids         | Baseline | +10-15% task success  |
| Bolt long-running apps | Baseline | +10% best case        |
| CodeRabbit recall      | Baseline | +10%                  |
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Rakuten's 3x is the one I keep coming back to. That is real production SWE tasks, not a synthetic eval. CursorBench moving 58 to 70 is what you actually feel in a Claude Code session: fewer rounds per feature.&lt;/p&gt;

&lt;h2&gt;
  
  
  Five Behavioral Shifts
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Self-Verification Is New
&lt;/h3&gt;

&lt;p&gt;Prior Claude models did not verify their own assumptions before acting unless you prompted them to. 4.7 does.&lt;/p&gt;

&lt;p&gt;Vercel reports the model runs proofs on systems code before starting work. Hex reports it flags missing data instead of inventing plausible-but-wrong fallbacks, and resists dissonant-data traps that 4.6 falls for.&lt;/p&gt;

&lt;p&gt;In a Claude Code session this looks like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Before I write this migration, let me verify the actual shape
of the response object, because my assumption here might be wrong.

[reads file]
[runs grep]

Confirmed. Writing migration now.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You did not ask for that step. The model added it.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Long Runs Stay Coherent
&lt;/h3&gt;

&lt;p&gt;Devin reports 4.7 works coherently for hours on hard problems instead of giving up. Genspark measured loop rates: prior models looped indefinitely on roughly 1 in 18 queries, 4.7 posts the highest quality-per-tool-call ratio they have ever measured.&lt;/p&gt;

&lt;p&gt;Notion saw tool errors cut to a third of 4.6's rate on multi-step workflows. That is not a small optimization. That is a different failure mode.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Fewer Tool Calls, More Thinking
&lt;/h3&gt;

&lt;p&gt;Default behavior shifted. 4.7 thinks more and acts less. Ramp reports less need for step-by-step guidance on cross-tool, cross-codebase debugging.&lt;/p&gt;

&lt;p&gt;If you want the old tool-heavy behavior, raise effort:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude &lt;span class="nt"&gt;--model&lt;/span&gt; claude-opus-4-7 &lt;span class="nt"&gt;--effort&lt;/span&gt; high
&lt;span class="c"&gt;# or&lt;/span&gt;
claude &lt;span class="nt"&gt;--model&lt;/span&gt; claude-opus-4-7 &lt;span class="nt"&gt;--effort&lt;/span&gt; xhigh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4. Instructions Get Read Literally
&lt;/h3&gt;

&lt;p&gt;Prompts that relied on 4.6 quietly filling in the gaps will hit unexpected behavior on 4.7. The fix is usually shorter and more explicit, not longer.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Fewer Subagents by Default
&lt;/h3&gt;

&lt;p&gt;If your orchestrator relied on 4.6 fanning out aggressively to specialists, 4.7 will pull that back. You can still request parallel subagent work explicitly.&lt;/p&gt;

&lt;h2&gt;
  
  
  The &lt;code&gt;xhigh&lt;/code&gt; Effort Tier
&lt;/h2&gt;

&lt;p&gt;Adaptive thinking gained a fifth setting. Ordering is now:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;low &amp;lt; medium &amp;lt; high &amp;lt; xhigh &amp;lt; max
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;xhigh&lt;/code&gt; sits between &lt;code&gt;high&lt;/code&gt; and &lt;code&gt;max&lt;/code&gt;. Claude Code raised the default to &lt;code&gt;xhigh&lt;/code&gt; on all plans.&lt;/p&gt;

&lt;p&gt;For API work, Anthropic recommends starting at &lt;code&gt;xhigh&lt;/code&gt; and dialing down:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;anthropic&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;anthropic&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Anthropic&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;claude-opus-4-7&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;max_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;8192&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;thinking&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;adaptive&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;effort&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;xhigh&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Your agentic task here&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}]&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Hex's quote is the cost-math line worth memorizing: "low-effort Opus 4.7 is roughly equivalent to medium-effort Opus 4.6." Same quality, lower tier, fewer tokens.&lt;/p&gt;

&lt;h2&gt;
  
  
  Task Budgets (Public Beta)
&lt;/h2&gt;

&lt;p&gt;Task budgets are the feature I keep recommending first. An advisory cap on a full agentic loop: thinking, tool calls, tool results, final output. The model sees a running countdown and self-paces against it.&lt;/p&gt;

&lt;p&gt;Minimum value is 20k tokens. Distinct from &lt;code&gt;max_tokens&lt;/code&gt;, which is a hard ceiling the model never sees.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;anthropic&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;anthropic&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Anthropic&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;claude-opus-4-7&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;max_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;8192&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;extra_headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;anthropic-beta&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;task-budgets-2026-03-13&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="n"&gt;task_budget&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;200000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;thinking&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;adaptive&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;effort&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;xhigh&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Build this feature end to end&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}]&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The model can now plan: "I have 200k tokens to spend. I will use 30k on exploration, 90k on writing, 40k on review, and leave a buffer." A hard &lt;code&gt;max_tokens&lt;/code&gt; just cuts off mid-thought.&lt;/p&gt;

&lt;h2&gt;
  
  
  Vision: 3x Resolution
&lt;/h2&gt;

&lt;p&gt;First Claude model with high-resolution image support. Max image resolution went from 1568px / 1.15MP on prior models to 2576px / 3.75MP on 4.7. Roughly 3x the pixel budget.&lt;/p&gt;

&lt;p&gt;What changes in practice:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Dense screenshots where small text has to be readable&lt;/li&gt;
&lt;li&gt;Complex diagrams with nested labels&lt;/li&gt;
&lt;li&gt;High-fidelity design mockups&lt;/li&gt;
&lt;li&gt;Pointing, measuring, counting, bounding-box localization&lt;/li&gt;
&lt;li&gt;Coordinates returned are 1-to-1 with real image pixels (no scale conversion)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cost note: a full-resolution image can consume up to roughly 4,784 tokens, versus roughly 1,600 on prior models. Downsample when you do not need the fidelity.&lt;/p&gt;

&lt;h2&gt;
  
  
  Breaking Changes in the API
&lt;/h2&gt;

&lt;p&gt;This is the section you have to read before flipping the model ID.&lt;/p&gt;

&lt;h3&gt;
  
  
  Extended Thinking Is Removed
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# 4.6 and earlier (still valid on 4.6)
&lt;/span&gt;&lt;span class="n"&gt;thinking&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;enabled&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;budget_tokens&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;8192&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;# 4.7 (old shape returns 400)
&lt;/span&gt;&lt;span class="n"&gt;thinking&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;adaptive&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;effort&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;xhigh&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Adaptive thinking is now off by default on 4.7. A request with no &lt;code&gt;thinking&lt;/code&gt; field runs with no thinking at all.&lt;/p&gt;

&lt;h3&gt;
  
  
  Sampling Parameters Are Removed
&lt;/h3&gt;

&lt;p&gt;Setting &lt;code&gt;temperature&lt;/code&gt;, &lt;code&gt;top_p&lt;/code&gt;, or &lt;code&gt;top_k&lt;/code&gt; to non-default values returns a 400:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Returns 400 on 4.7
&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;claude-opus-4-7&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;temperature&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;# &amp;lt;-- remove this
&lt;/span&gt;    &lt;span class="n"&gt;top_p&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.9&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;        &lt;span class="c1"&gt;# &amp;lt;-- remove this
&lt;/span&gt;    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[...]&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Drop them. Use prompting to shape behavior.&lt;/p&gt;

&lt;h3&gt;
  
  
  Thinking Content Is Omitted by Default
&lt;/h3&gt;

&lt;p&gt;Thinking blocks still appear in the response stream but their &lt;code&gt;thinking&lt;/code&gt; field is empty unless you opt in:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;thinking&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;adaptive&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;effort&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;xhigh&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;display&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;summarized&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If your UI streamed thinking to users on 4.6, the new default reads as a long pause before output begins. Add &lt;code&gt;display: "summarized"&lt;/code&gt; back.&lt;/p&gt;

&lt;h3&gt;
  
  
  Prefill Is Blocked
&lt;/h3&gt;

&lt;p&gt;Prefilling assistant messages returns a 400. Use structured outputs or &lt;code&gt;output_config.format&lt;/code&gt; instead. This one carries over from 4.6.&lt;/p&gt;

&lt;h3&gt;
  
  
  New Tokenizer
&lt;/h3&gt;

&lt;p&gt;The same input can now map to 1.0x to 1.35x the prior token count, content-dependent. Re-run &lt;code&gt;/v1/messages/count_tokens&lt;/code&gt; against your representative payloads and re-baseline:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;max_tokens&lt;/code&gt; ceilings&lt;/li&gt;
&lt;li&gt;Compaction triggers&lt;/li&gt;
&lt;li&gt;Client-side token estimates&lt;/li&gt;
&lt;li&gt;Cost projections&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Automated Migration
&lt;/h3&gt;

&lt;p&gt;Inside Claude Code, most of the above is handled for you. On the API side:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude /claude-api migrate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Applies the changes across the codebase.&lt;/p&gt;

&lt;h2&gt;
  
  
  New Product Features
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;/ultrareview&lt;/code&gt;&lt;/strong&gt; runs a review session reading through changes and flagging bugs a careful human reviewer would catch. Pro and Max users get three free ultrareviews. I have been using it as a pre-commit gate.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Auto mode for Max.&lt;/strong&gt; Previously gated to Team and Enterprise. Now extends to Max subscribers. Longer runs with fewer interruptions, and with less risk than fully skipping permissions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;File-system memory improvements.&lt;/strong&gt; Agents keeping a scratchpad, notes file, or structured memory store across turns make cleaner notes and actually leverage them on later tasks.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pricing Did Not Move
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Input:        $5.00 / 1M tokens
Output:      $25.00 / 1M tokens
Prompt cache: up to 90% savings
Batch:        50% savings
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Two things will nudge your bill up:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;New tokenizer (up to 1.35x input token count on some content)&lt;/li&gt;
&lt;li&gt;High-resolution images (up to ~4,784 tokens each)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Task budgets and the effort parameter are how you trade back.&lt;/p&gt;

&lt;p&gt;On GitHub Copilot, 4.7 went GA the same day on Pro+, Business, and Enterprise, carrying a 7.5x premium request multiplier through April 30 as promotional pricing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Switching Claude Code to 4.7
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Set as default&lt;/span&gt;
claude config &lt;span class="nb"&gt;set &lt;/span&gt;model claude-opus-4-7

&lt;span class="c"&gt;# Or override per session&lt;/span&gt;
claude &lt;span class="nt"&gt;--model&lt;/span&gt; claude-opus-4-7
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;opus&lt;/code&gt; alias in Claude Code points at it on current releases. Available on claude.ai, Claude Platform API, AWS Bedrock (research preview), Google Cloud Vertex AI, Microsoft Foundry, and GitHub Copilot.&lt;/p&gt;

&lt;h2&gt;
  
  
  When to Reach for It
&lt;/h2&gt;

&lt;p&gt;4.7 when reasoning depth, long agent runs, or high-resolution screenshots are what the job needs. Sonnet 4.6 is still the right call for smaller, faster work where speed and cost decide the tradeoff.&lt;/p&gt;

&lt;p&gt;Full breakdown on the webapp: &lt;a href="https://buildthisnow.com/blog/models/claude-opus-4-7" rel="noopener noreferrer"&gt;buildthisnow.com/blog/models/claude-opus-4-7&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Build your own agentic SaaS with Claude Code in 48 hours: &lt;a href="https://buildthisnow.com" rel="noopener noreferrer"&gt;buildthisnow.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>claude</category>
      <category>ai</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
