<?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: zecheng </title>
    <description>The latest articles on DEV Community by zecheng  (@lizechengnet).</description>
    <link>https://dev.to/lizechengnet</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%2F3789762%2F5bb4501c-223b-423e-84d2-41ef916c0072.png</url>
      <title>DEV Community: zecheng </title>
      <link>https://dev.to/lizechengnet</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/lizechengnet"/>
    <language>en</language>
    <item>
      <title>How to Safely Execute AI-Generated Python Code in Agent Workflows (No Docker Required)</title>
      <dc:creator>zecheng </dc:creator>
      <pubDate>Thu, 19 Mar 2026 23:21:26 +0000</pubDate>
      <link>https://dev.to/lizechengnet/how-to-safely-execute-ai-generated-python-code-in-agent-workflows-no-docker-required-53pl</link>
      <guid>https://dev.to/lizechengnet/how-to-safely-execute-ai-generated-python-code-in-agent-workflows-no-docker-required-53pl</guid>
      <description>&lt;p&gt;Pydantic Monty is a minimal, Rust-written Python bytecode VM that executes AI-generated code in 0.004ms with zero filesystem or network access by default — the missing infrastructure piece for production-grade AI agent workflows.&lt;/p&gt;

&lt;p&gt;If you've tried to build a real AI agent that writes and runs its own Python code, you've hit the same wall: you can't hand arbitrary code to CPython. Docker solves the isolation problem but adds 195ms of startup latency per execution. For an agent making dozens of code-execution decisions per task, that compounds to seconds of overhead per workflow. Sandbox cloud services (Modal, E2B) cut it to ~1000ms. Still too slow. Monty cuts it to 0.004ms because it runs inside your existing process — no container spawn, no network call.&lt;/p&gt;

&lt;p&gt;Samuel Colvin, the creator of Pydantic, built it and released v0.0.1 on January 27, 2026. It hit 2,600 GitHub stars within 48 hours. As of v0.0.8 (March 10, 2026), it is experimental but already usable for constrained code-execution use cases.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why AI Agents Need a Code Execution Layer at All
&lt;/h3&gt;

&lt;p&gt;The standard way to give an AI agent "tool use" is sequential function calling: the model selects a tool, gets a result, selects the next tool, gets the next result, and so on. This works, but it is expensive — each round-trip is a separate LLM inference call.&lt;/p&gt;

&lt;p&gt;There is a faster pattern: instead of sequential tool calls, ask the model to write a short Python script that calls your tools as functions, then execute that script in one shot. Colvin calls this "CodeMode." The measured result: tasks that previously required 4 LLM round-trips complete in 2 calls when using CodeMode with &lt;code&gt;asyncio.gather()&lt;/code&gt; for parallel tool invocations.&lt;/p&gt;

&lt;p&gt;The problem is obvious. Giving an LLM the ability to write and execute arbitrary code means giving it access to your filesystem, your network, your environment variables, and your process. A sandboxed CPython is still CPython — the entire standard library is one &lt;code&gt;import os&lt;/code&gt; away.&lt;/p&gt;

&lt;p&gt;Monty solves this by not running CPython at all.&lt;/p&gt;

&lt;h3&gt;
  
  
  How Pydantic Monty's Security Model Actually Works
&lt;/h3&gt;

&lt;p&gt;Monty's security philosophy is "start from nothing, move right." The default execution environment has zero capabilities:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every capability the AI code can use must be explicitly granted through &lt;strong&gt;external functions&lt;/strong&gt; — host-defined callables you register before execution. The VM can only call what you've explicitly allowed.&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;pydantic_monty&lt;/span&gt;

&lt;span class="n"&gt;code&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;
result = search_web(query=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;pydantic monty benchmarks&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;)
summary = summarize(text=result)
return summary
&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;

&lt;span class="n"&gt;m&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pydantic_monty&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Monty&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;code&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;inputs&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;query&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="n"&gt;external_functions&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;search_web&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;summarize&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;span class="n"&gt;m&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;inputs&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;query&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;pydantic monty&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="n"&gt;external_functions&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;search_web&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;my_search_function&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;summarize&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;my_summarize_function&lt;/span&gt;&lt;span class="p"&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 AI can call &lt;code&gt;search_web&lt;/code&gt; and &lt;code&gt;summarize&lt;/code&gt; because you registered them. It cannot call &lt;code&gt;requests.get()&lt;/code&gt; or &lt;code&gt;subprocess.run()&lt;/code&gt; because those are not registered — and the underlying modules don't exist in the VM at all.&lt;/p&gt;

&lt;p&gt;Configurable execution limits — memory allocation, stack depth, CPU time — are enforced at the VM level. Hit the threshold, execution cancels. No runaway loops.&lt;/p&gt;

&lt;h3&gt;
  
  
  Startup Latency: The Real Performance Comparison
&lt;/h3&gt;

&lt;p&gt;The performance story is straightforward once you understand the architecture. Monty doesn't spawn a process — it runs as a library inside your existing Python, Rust, or JavaScript process.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Execution method&lt;/th&gt;
&lt;th&gt;Startup latency&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Pydantic Monty&lt;/td&gt;
&lt;td&gt;0.004–0.06ms&lt;/td&gt;
&lt;td&gt;Embedded in host process&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Docker container&lt;/td&gt;
&lt;td&gt;~195ms&lt;/td&gt;
&lt;td&gt;Process + container init&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pyodide (WebAssembly)&lt;/td&gt;
&lt;td&gt;~2800ms&lt;/td&gt;
&lt;td&gt;WASM initialization&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Modal / E2B (cloud sandbox)&lt;/td&gt;
&lt;td&gt;~1000ms+&lt;/td&gt;
&lt;td&gt;Network round-trip&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The 4.5MB package size with no external dependencies also means Monty ships inside your existing binary. No sidecar process, no daemon to manage.&lt;/p&gt;

&lt;p&gt;For agent workflows where code execution is on the hot path — not an occasional capability but a step in every task — this latency profile changes what's architecturally feasible.&lt;/p&gt;

&lt;h3&gt;
  
  
  Installation and First Execution
&lt;/h3&gt;

&lt;p&gt;Install via pip or uv:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;uv add pydantic-monty
pip &lt;span class="nb"&gt;install &lt;/span&gt;pydantic-monty
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;JavaScript/TypeScript:&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; @pydantic/monty
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A minimal execution:&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;pydantic_monty&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;monty&lt;/span&gt;

&lt;span class="n"&gt;m&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;monty&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Monty&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;x * y&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;inputs&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;x&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;y&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;m&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;inputs&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;x&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;y&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="c1"&gt;# 15
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Type checking against stubs is optional but recommended for AI-generated code — it catches type errors before execution rather than at runtime:&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;type_stubs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;
x: int
y: int
&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;

&lt;span class="n"&gt;m&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;monty&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Monty&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;x * y&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;inputs&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;x&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;y&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="n"&gt;type_check&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;type_check_stubs&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;type_stubs&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;h3&gt;
  
  
  What Python Subset Monty Supports Right Now
&lt;/h3&gt;

&lt;p&gt;Monty is experimental. v0.0.8 supports:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Functions (sync and async), closures, comprehensions, f-strings&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;asyncio&lt;/code&gt;, &lt;code&gt;typing&lt;/code&gt;, partial &lt;code&gt;os&lt;/code&gt; (stub), &lt;code&gt;sys&lt;/code&gt; (stub)&lt;/li&gt;
&lt;li&gt;Full &lt;code&gt;math&lt;/code&gt; module (50+ functions, added in v0.0.8)&lt;/li&gt;
&lt;li&gt;Dataclasses injected from the host&lt;/li&gt;
&lt;li&gt;Bigint literals, PEP 448 generalized unpacking&lt;/li&gt;
&lt;li&gt;Controlled in-memory filesystem abstraction&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Not yet supported (on the roadmap): class definitions, match statements, context managers, generators, &lt;code&gt;re&lt;/code&gt;/&lt;code&gt;datetime&lt;/code&gt;/&lt;code&gt;json&lt;/code&gt; modules.&lt;/p&gt;

&lt;p&gt;The missing &lt;code&gt;class&lt;/code&gt; support sounds limiting until you consider the primary use case. LLMs generating code for tool orchestration rarely need to define classes — they need to call functions, transform data, and return results. The subset Monty supports covers most CodeMode patterns.&lt;/p&gt;

&lt;h3&gt;
  
  
  Serializable Execution State: Why This Matters for Durable Agents
&lt;/h3&gt;

&lt;p&gt;One underrated feature: Monty can serialize both parsed bytecode and live execution state.&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;code_bytes&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;m&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;dump&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="n"&gt;m2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;monty&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Monty&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;load&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;code_bytes&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;m2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;inputs&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;x&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Execution state snapshots are single-digit kilobytes. This enables agent workflows that survive process restarts — you can store the execution state in a database, resume it in a different process, and the agent picks up exactly where it left off. For long-running background agents, this is the difference between "restartable" and "durable."&lt;/p&gt;

&lt;h3&gt;
  
  
  The PydanticAI Integration Coming Up
&lt;/h3&gt;

&lt;p&gt;The production use case Colvin is building toward is PydanticAI's CodeMode — an official integration that will let PydanticAI agents generate and execute Python code through Monty. Colvin confirmed this directly on Hacker News: "That's exactly what we built this for: we're implementing code mode."&lt;/p&gt;

&lt;p&gt;The pattern, once it ships: define your tools as Python functions. Give the agent a task. The agent writes a Python script that orchestrates those tools in whatever sequence or parallel structure the task requires. Monty executes it. The agent gets results. All tool access is controlled by what you registered — the AI cannot reach anything you didn't explicitly expose.&lt;/p&gt;

&lt;p&gt;This is architecturally different from both "give the AI a list of tools and let it call them sequentially" and "give the AI shell access." It's a controlled middle ground that makes complex tool orchestration fast without opening your system.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Takeaways
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Docker's 195ms startup latency is a structural problem for agent code execution&lt;/strong&gt; — not a solvable config issue, but a fundamental constraint of process-level isolation that Monty sidesteps by running inside your process.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The "deny by default" security model is the right architecture for AI-generated code&lt;/strong&gt; — allowlists of registered external functions are auditable; blocklists of dangerous stdlib functions are not.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CodeMode reduces LLM round-trips&lt;/strong&gt; — the same task that requires 4 sequential tool calls typically requires 2 LLM calls when the model writes code that chains tool calls in parallel.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Serializable execution state enables durable AI agents&lt;/strong&gt; — Monty's kilobyte-scale state snapshots are storable in a database, making long-running agent workflows restartable across process boundaries.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Monty is v0.0.8 and experimental&lt;/strong&gt; — missing class support, &lt;code&gt;re&lt;/code&gt;/&lt;code&gt;datetime&lt;/code&gt;/&lt;code&gt;json&lt;/code&gt; modules, and production hardening. Use it for constrained CodeMode patterns today; wait for PydanticAI integration for production workflows.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  What This Means for Builders
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;If you're building AI agents with tool use&lt;/strong&gt;, benchmark CodeMode against sequential function calling for your specific workflow. The 2x LLM call reduction is real, but only valuable if your tool calls are parallelizable.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;If you're evaluating sandboxing options&lt;/strong&gt;, Monty is worth testing against Docker for use cases where you control the tool surface. The latency win is significant; the stdlib limitations are real constraints you'll need to design around.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;If you're building on PydanticAI&lt;/strong&gt;, watch the &lt;code&gt;code-mode&lt;/code&gt; branch — Monty is its intended execution backend and the integration is under active development.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;If you need class definitions or standard library access&lt;/strong&gt;, Monty v0.0.8 is too limited for your use case today. Check back at v0.1.x.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Built with &lt;a href="https://github.com/lizecheng2021-maker/IntelFlow" rel="noopener noreferrer"&gt;IntelFlow&lt;/a&gt; — open-source AI intelligence engine. Set up your own daily briefing in 60 seconds.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>buildinpublic</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
    <item>
      <title>How to Structure Claude Code for Production: MCP Servers, Subagents, and CLAUDE.md (2026 Guide)</title>
      <dc:creator>zecheng </dc:creator>
      <pubDate>Tue, 17 Mar 2026 23:14:19 +0000</pubDate>
      <link>https://dev.to/lizechengnet/how-to-structure-claude-code-for-production-mcp-servers-subagents-and-claudemd-2026-guide-4gjn</link>
      <guid>https://dev.to/lizechengnet/how-to-structure-claude-code-for-production-mcp-servers-subagents-and-claudemd-2026-guide-4gjn</guid>
      <description>&lt;p&gt;Structured AI development — using Claude Code with MCP servers, custom subagents, and project-scoped configuration — produces measurably more reliable software than ad-hoc "vibe coding," with 1.7x fewer defects and 2.74x fewer security vulnerabilities according to a CodeRabbit analysis of 470 open-source PRs (December 2025).&lt;/p&gt;

&lt;p&gt;Most developers stop at "drop Claude Code into the terminal and type." That's leaving 80% of the tool on the table. This guide covers the full production setup: MCP server integration, CLAUDE.md project memory, custom slash commands, and specialized subagents — everything you need to move from prototype to repeatable pipeline.&lt;/p&gt;




&lt;h3&gt;
  
  
  Why Vibe Coding Has a Documented Failure Rate
&lt;/h3&gt;

&lt;p&gt;"Vibe coding" — Andrej Karpathy's term for describing what you want in natural language and accepting whatever the LLM generates — has a real-world reliability problem. Claude Opus 4.6 scores 75.6% on SWE-bench, the benchmark that tests real GitHub issues requiring multi-file edits and passing existing test suites. That's the best available model. It means one in four production tasks fail without intervention.&lt;/p&gt;

&lt;p&gt;HumanEval benchmarks routinely show 90%+ pass rates and mean nothing for production. SWE-bench is the honest number — multi-file, existing codebase, real test suite. Design your workflows around the failure cases, not the averages.&lt;/p&gt;

&lt;p&gt;The production fix isn't waiting for better models. It's building workflows that catch and handle the failures.&lt;/p&gt;




&lt;h3&gt;
  
  
  What CLAUDE.md Actually Does (and Why It's the Foundation)
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; is persistent project memory — instructions loaded into every Claude Code conversation automatically.&lt;/p&gt;

&lt;p&gt;Two locations matter:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Global&lt;/strong&gt;: &lt;code&gt;~/.claude/CLAUDE.md&lt;/code&gt; — personal preferences, forbidden patterns, global conventions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Project&lt;/strong&gt;: &lt;code&gt;&amp;lt;project&amp;gt;/.claude/CLAUDE.md&lt;/code&gt; (check this into the repo) — tech stack, database schema notes, API endpoint references, architectural decisions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Project scope overrides global on conflicts. If your global CLAUDE.md says "use TypeScript strict mode" but your project CLAUDE.md says "this repo uses CommonJS, no strict mode," Claude Code will follow the project instruction.&lt;/p&gt;

&lt;p&gt;A production CLAUDE.md covers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tech stack with exact versions (&lt;code&gt;Next.js 15 App Router, PostgreSQL via Neon, Prisma 7&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Forbidden patterns (&lt;code&gt;never use eval(), no string concatenation in SQL&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Directory conventions (&lt;code&gt;feature logic in /lib, not /utils&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;API endpoints Claude should know about&lt;/li&gt;
&lt;li&gt;How to run tests locally&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This file eliminates the "Claude forgot what we decided" problem. Every session starts with the same context.&lt;/p&gt;




&lt;h3&gt;
  
  
  MCP Servers: How Claude Code Connects to Your Stack
&lt;/h3&gt;

&lt;p&gt;Model Context Protocol (MCP) is the integration layer between Claude Code and external tools. Claude Code acts as the MCP client; each server exposes capabilities like database access, browser automation, or API calls. The &lt;code&gt;claude mcp add&lt;/code&gt; command is the entry point:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude mcp add github &lt;span class="nt"&gt;--scope&lt;/span&gt; user
claude mcp add playwright &lt;span class="nt"&gt;--scope&lt;/span&gt; project
claude mcp list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Config lives at &lt;code&gt;~/Library/Application Support/Claude/claude_desktop_config.json&lt;/code&gt; on macOS.&lt;/p&gt;

&lt;p&gt;Three transport types matter:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;stdio&lt;/strong&gt; — local processes, best for filesystem and direct system access&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;HTTP&lt;/strong&gt; — remote servers, recommended for cloud services like Supabase&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SSE&lt;/strong&gt; — deprecated, don't use&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The MCP servers worth adding for production SaaS work:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub MCP&lt;/strong&gt; — PR reviews, issue creation, and repo management without leaving your terminal. No more switching context to a browser for a PR status.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Playwright MCP&lt;/strong&gt; — End-to-end testing via the accessibility tree (no screenshots needed). Runs across Chromium, Firefox, and WebKit. Scope it to your project, not globally.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude mcp add playwright &lt;span class="nt"&gt;--scope&lt;/span&gt; project
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Supabase MCP&lt;/strong&gt; — Direct line to your database, auth, storage, and edge functions. Configure it project-scoped with your project ref:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Server URL: https://mcp.supabase.com/mcp?project_ref=&amp;lt;your-ref&amp;gt;
Auth: OAuth
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;PostgreSQL MCP&lt;/strong&gt; — Direct SQL queries for non-Supabase setups.&lt;/p&gt;

&lt;p&gt;Combining three or more MCP servers in one session eliminates context-switching. Claude can write a feature, verify it against the database schema, create a GitHub issue for the edge case it found, and run the Playwright test suite — without leaving the session.&lt;/p&gt;




&lt;h3&gt;
  
  
  Custom Slash Commands: Reusable Workflows in One File
&lt;/h3&gt;

&lt;p&gt;Every &lt;code&gt;.md&lt;/code&gt; file in &lt;code&gt;.claude/commands/&lt;/code&gt; becomes a &lt;code&gt;/command-name&lt;/code&gt; slash command. These are reusable prompts for work you do repeatedly.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.claude/
  commands/
    review-pr.md       → /review-pr
    seed-db.md         → /seed-db
    deploy-check.md    → /deploy-check
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A &lt;code&gt;deploy-check.md&lt;/code&gt; might contain:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Run the following before any deployment:
1. Check for hardcoded API keys in $ARGUMENTS or the staged diff
2. Verify database migrations are in sync with Prisma schema
3. Run `npm run test` and confirm zero failures
4. Check that environment variable names in .env.example match what the app expects
Report any issues found. If all pass, output "CLEAR TO DEPLOY."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now &lt;code&gt;/deploy-check&lt;/code&gt; is a repeatable gate. The &lt;code&gt;$ARGUMENTS&lt;/code&gt; placeholder lets you pass a branch name or PR number.&lt;/p&gt;




&lt;h3&gt;
  
  
  Subagents: Specialized Workers With Their Own Scope and Memory
&lt;/h3&gt;

&lt;p&gt;Subagents are the most underused feature in Claude Code. They're defined as Markdown files in &lt;code&gt;.claude/agents/&lt;/code&gt; with YAML frontmatter:&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;api-tester&lt;/span&gt;
&lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Tests REST endpoints, validates response schemas, catches regressions&lt;/span&gt;
&lt;span class="na"&gt;tools&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;Bash&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;Read&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;WebFetch&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
&lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;sonnet&lt;/span&gt;
&lt;span class="na"&gt;memory&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;.claude/memory/api-tester/&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;

&lt;span class="s"&gt;You are a specialized API testing agent. When invoked, you&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;
&lt;span class="s"&gt;1. Read the OpenAPI spec from /docs/api.yaml&lt;/span&gt;
&lt;span class="s"&gt;2. Test each endpoint against the running dev server&lt;/span&gt;
&lt;span class="s"&gt;3. Compare responses against the expected schema&lt;/span&gt;
&lt;span class="s"&gt;4. Report failures with the specific request, expected output, and actual output&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Key frontmatter fields:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;tools&lt;/code&gt; — restrict to only what this agent needs. An api-tester doesn't need Edit or Write access.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;model&lt;/code&gt; — use &lt;code&gt;haiku&lt;/code&gt; for fast/cheap tasks, &lt;code&gt;sonnet&lt;/code&gt; for balanced work, &lt;code&gt;opus&lt;/code&gt; for architectural review&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;memory&lt;/code&gt; — persistent directory that survives across conversations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Claude Code can run up to 10 simultaneous subagents (2026). A three-stage production pipeline looks like:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;pm-spec&lt;/strong&gt; agent — reads task input, writes a structured spec with acceptance criteria&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;architect-review&lt;/strong&gt; agent — validates the spec against platform constraints, produces a decision record&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;implementer-tester&lt;/strong&gt; agent — writes code and tests, updates documentation&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The orchestrator (Claude Code itself) coordinates the three. Each agent has limited tool access — the spec agent can only Read and Write to docs, the implementer can Bash and Edit. Principle of least privilege in AI agents is not theoretical.&lt;/p&gt;




&lt;h3&gt;
  
  
  Context Management: The 200K Token Budget
&lt;/h3&gt;

&lt;p&gt;Claude Code has a 200,000-token context window. That sounds enormous. It isn't, once you factor in file contents, tool outputs, and conversation history.&lt;/p&gt;

&lt;p&gt;Three levers for long sessions:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Plan mode&lt;/strong&gt; halves token consumption by reducing back-and-forth generation. Use it at the start of any complex multi-file task — Claude maps the work before executing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Multi-session splitting&lt;/strong&gt; — break large features into targeted sessions. "Add Stripe webhooks" is one session. "Refactor the billing service" is a separate session. Don't carry unrelated context.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Context editing&lt;/strong&gt; (2026 feature) — automatically clears stale tool call outputs while preserving conversation flow. In a 100-turn evaluation, this cut token consumption by 84% while completing workflows that previously failed from context exhaustion.&lt;/p&gt;

&lt;p&gt;Use &lt;code&gt;/clear&lt;/code&gt; between unrelated tasks. Use &lt;code&gt;--continue&lt;/code&gt; to resume a previous session rather than re-establishing context from scratch.&lt;/p&gt;




&lt;h3&gt;
  
  
  The Production Pattern That Actually Works
&lt;/h3&gt;

&lt;p&gt;Specification-first, then AI execution. Before touching Claude Code on any non-trivial feature:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Write a structured spec in &lt;code&gt;CLAUDE.md&lt;/code&gt; or a dedicated spec file — include scope, constraints, acceptance criteria, what NOT to do&lt;/li&gt;
&lt;li&gt;Open Claude Code in Plan mode, share the spec, ask for the implementation plan before any code is written&lt;/li&gt;
&lt;li&gt;Review the plan. Make architectural decisions yourself — Claude proposes, you approve&lt;/li&gt;
&lt;li&gt;Execute the plan with the appropriate subagent or command, with Playwright MCP watching for regressions&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The hybrid rule for what to automate versus hand-code: vibe code the repetitive, well-understood parts (CRUD endpoints, data transformation, form validation). Hand-code the novel, security-sensitive, or architecturally critical parts.&lt;/p&gt;

&lt;p&gt;An AI-generated security check that fails one in four times is not a security check.&lt;/p&gt;




&lt;h3&gt;
  
  
  Key Takeaways
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;CLAUDE.md is persistent memory&lt;/strong&gt; — project rules in &lt;code&gt;.claude/CLAUDE.md&lt;/code&gt; define behavior across every session; commit it to the repo so your whole team uses the same context&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MCP servers eliminate context-switching&lt;/strong&gt; — GitHub + Playwright + Supabase in one session means Claude can write, test, and track work without leaving the terminal&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Subagents enforce least privilege&lt;/strong&gt; — specialized agents with restricted tool access are more reliable than one omnipotent session; define &lt;code&gt;tools&lt;/code&gt; explicitly in frontmatter&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Context degrades on long sessions&lt;/strong&gt; — Plan mode, multi-session splitting, and context editing are the levers; a full context window is not a feature, it's a warning&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SWE-bench 75.6% means 1-in-4 failures&lt;/strong&gt; — design human checkpoints at architectural decision boundaries, not after deployment&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  What This Means for Builders
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Start every project with a &lt;code&gt;CLAUDE.md&lt;/code&gt; that includes forbidden patterns, stack versions, and database schema notes — this single file eliminates 80% of "Claude forgot" problems&lt;/li&gt;
&lt;li&gt;Add &lt;code&gt;playwright&lt;/code&gt; and &lt;code&gt;github&lt;/code&gt; MCP servers scoped to the project before writing your first feature, so regression tests run automatically during development&lt;/li&gt;
&lt;li&gt;Build subagents for work you do more than twice a week — PR review, database seeding, pre-deploy checks — and commit them to &lt;code&gt;.claude/agents/&lt;/code&gt; with restricted tool access&lt;/li&gt;
&lt;li&gt;When Claude's output surprises you (wrong framework assumption, incorrect schema reference), fix the CLAUDE.md instead of re-prompting — fix the context, not the conversation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Built with &lt;a href="https://github.com/lizecheng2021-maker/IntelFlow" rel="noopener noreferrer"&gt;IntelFlow&lt;/a&gt; — open-source AI intelligence engine. Set up your own daily briefing in 60 seconds.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>buildinpublic</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Claude Code vs GitHub Copilot vs Cursor in 2026: Which AI Coding Tool Actually Wins?</title>
      <dc:creator>zecheng </dc:creator>
      <pubDate>Mon, 16 Mar 2026 23:18:20 +0000</pubDate>
      <link>https://dev.to/lizechengnet/claude-code-vs-github-copilot-vs-cursor-in-2026-which-ai-coding-tool-actually-wins-24b7</link>
      <guid>https://dev.to/lizechengnet/claude-code-vs-github-copilot-vs-cursor-in-2026-which-ai-coding-tool-actually-wins-24b7</guid>
      <description>&lt;p&gt;Claude Code is the most developer-loved AI coding tool of 2026 — with 46% developer satisfaction versus GitHub Copilot's 9% and Cursor's 19% — after reaching the top of VS Code's agentic AI marketplace in under eight months of public availability.&lt;/p&gt;

&lt;p&gt;That gap isn't minor. It's the kind of signal that reshapes product roadmaps. JetBrains just announced the sunset of Code With Me, its collaborative coding feature, with 2026.1 as the final supported release and public relays shutting down Q1 2027. The company cited shifting collaboration workflows and declining post-pandemic demand. What they didn't say explicitly: when an AI agent can autonomously handle multi-file tasks across a codebase, synchronous real-time collaboration becomes a niche edge case.&lt;/p&gt;

&lt;p&gt;Here's the breakdown of what each tool does, where each wins, and how the field has actually moved in the last twelve months.&lt;/p&gt;




&lt;h3&gt;
  
  
  What Is Claude Code and How Is It Different From Copilot?
&lt;/h3&gt;

&lt;p&gt;Claude Code is a terminal-native autonomous agent — not an IDE plugin, not an autocomplete layer. You run it from your command line, point it at a codebase, and give it tasks. It plans, executes, and iterates across dozens or hundreds of files without requiring you to stay in the loop.&lt;/p&gt;

&lt;p&gt;GitHub Copilot is an inline completion tool embedded inside your IDE. It watches what you type and suggests the next line or block. The mental model is fundamentally different: Copilot accelerates what you're already doing; Claude Code does the work while you review.&lt;/p&gt;

&lt;p&gt;Builder.io put it plainly after testing both: "Cursor makes you faster at what you already know how to do. Claude Code does things for you." That framing maps exactly to their architectural differences.&lt;/p&gt;




&lt;h3&gt;
  
  
  Claude Code Benchmark Numbers: SWE-Bench 2026
&lt;/h3&gt;

&lt;p&gt;Claude Code runs on Claude models exclusively. The current benchmark scores on SWE-bench Verified — the industry-standard test measuring how often an AI can correctly resolve real GitHub issues — are the highest recorded:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Claude Opus 4.6&lt;/strong&gt;: 80.8% on SWE-bench Verified, 59% on SWE-bench Pro&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Claude Sonnet 4.6&lt;/strong&gt; (Claude Code's default model): 79.6% on SWE-bench Verified&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Claude Sonnet 4.5&lt;/strong&gt; with parallel compute: 82.0% on SWE-bench Verified&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;GitHub Copilot's underlying models don't publish equivalent SWE-bench scores for autonomous task completion — because Copilot isn't designed for autonomous execution. Comparing them directly on this metric is like comparing a GPS to a self-driving car.&lt;/p&gt;

&lt;p&gt;Claude Code now authors approximately 4% of all public GitHub commits — around 135,000 commits per day — and that figure is projected to exceed 20% by end of 2026.&lt;/p&gt;




&lt;h3&gt;
  
  
  How Does Cursor 2.0 Multi-Agent Work?
&lt;/h3&gt;

&lt;p&gt;Cursor 2.0, released in late 2025, added genuine multi-agent capability. You can now spawn up to 8 parallel agents on a single prompt, each operating in an isolated git worktree to prevent file conflicts. Each agent has full codebase access, runs independently, and produces separate diffs.&lt;/p&gt;

&lt;p&gt;Cursor 2.4 (February 2026) added async agents and CLI Plan Mode. The workflow: one model drafts a plan, a second model builds against it, background agents run in parallel. Inline Mermaid diagrams auto-generate into plans during the planning stage.&lt;/p&gt;

&lt;p&gt;There's a practical caveat that repeatedly surfaces in developer communities. Cursor advertises a 200K token context window, but users consistently report hitting limits at 70–120K tokens due to silent internal truncation. Claude Code doesn't have that undocumented ceiling — and in direct comparisons, Claude Code used &lt;strong&gt;5.5x fewer tokens than Cursor&lt;/strong&gt; for equivalent tasks, with 30% less code rework in developer testing.&lt;/p&gt;




&lt;h3&gt;
  
  
  What Is Claude Code's CLAUDE.md and Why Does It Matter?
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; is Claude Code's project memory system. When you run &lt;code&gt;/init&lt;/code&gt; in a new repository, Claude Code scans the codebase and generates this file automatically. Every subsequent session reads it at startup — no re-explaining the architecture, the tech stack, or the conventions.&lt;br&gt;
&lt;/p&gt;

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

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; defines codebase context, command shortcuts, coding conventions, and agent behavior rules. Teams checking this file into version control effectively give every developer — and every Claude Code session — a consistent starting context.&lt;/p&gt;

&lt;p&gt;This is the mechanism that makes Claude Code dramatically faster on second and third use in the same codebase. Copilot has no equivalent persistent memory layer.&lt;/p&gt;




&lt;h3&gt;
  
  
  Model Context Protocol: Claude Code's Integration Layer
&lt;/h3&gt;

&lt;p&gt;Claude Code ships with MCP (Model Context Protocol), currently offering 300+ integrations: GitHub, Slack, PostgreSQL, Sentry, Linear, Jira, and custom internal tools.&lt;/p&gt;

&lt;p&gt;The practical implication: you can write prompts like "create a GitHub issue for this failing test, assign it to the on-call engineer listed in Linear, and add the Sentry error ID" and Claude Code executes across all three systems without leaving your terminal. Copilot's integrations are limited to the GitHub ecosystem. Cursor has growing MCP support but a smaller default integration surface.&lt;/p&gt;

&lt;p&gt;Hooks add deterministic control on top of MCP. Scripts fire at lifecycle events — &lt;code&gt;PreToolUse&lt;/code&gt;, &lt;code&gt;PostToolUse&lt;/code&gt;, session start and end — letting you enforce policies (e.g., block any tool call that writes to production, auto-run tests after every file edit) without relying on prompts.&lt;/p&gt;




&lt;h3&gt;
  
  
  Where GitHub Copilot Still Wins
&lt;/h3&gt;

&lt;p&gt;Copilot's advantages are real, even if the developer satisfaction gap is wide.&lt;/p&gt;

&lt;p&gt;It has native GitHub PR, issue, and Actions integration that no competitor has matched. If your workflow lives inside GitHub's UI — reviewing pull requests, triaging issues, debugging CI — Copilot is embedded in those surfaces. Claude Code isn't.&lt;/p&gt;

&lt;p&gt;Copilot's inline autocomplete is also still the best inline experience in the IDE. For developers who want suggestion-based acceleration without autonomous execution, it works. The "use both" workflow is increasingly common: Copilot for inline completion inside the IDE, Claude Code in the terminal for agentic multi-file work. Combined cost is roughly $30/month.&lt;/p&gt;

&lt;p&gt;Where Copilot falls short: 75% of senior engineers in 2026 surveys report spending more time correcting Copilot suggestions than coding manually on complex tasks. It analyzes approximately 10% of codebase context and fills the rest with assumptions — a known limitation that creates subtle bugs in non-trivial codebases.&lt;/p&gt;




&lt;h3&gt;
  
  
  Windsurf Wave 14 Arena Mode: The IDE as Model Evaluation Platform
&lt;/h3&gt;

&lt;p&gt;Windsurf (Codeium's IDE product) shipped Wave 14 with Arena Mode — a genuinely novel product design. It runs two Cascade agents in parallel on the same prompt, with model identities hidden. Developers interact with both agents normally, then vote on which produced the better output. Individual votes feed into a global leaderboard across all Windsurf users.&lt;/p&gt;

&lt;p&gt;This turns the IDE itself into a live model benchmarking platform. Windsurf collects real-world task signal on which models perform best for which task types, at scale, continuously. Featured models in Wave 14's Frontier group: Opus 4.5, GPT-5.2-Codex, Kimi K2.5.&lt;/p&gt;

&lt;p&gt;It's a smart defensive move for a product competing against Claude Code and Cursor: if you can't out-execute on a single model, make the model selection process itself a feature.&lt;/p&gt;




&lt;h3&gt;
  
  
  How the Pricing Stacks Up
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Entry Price&lt;/th&gt;
&lt;th&gt;Best Use Case&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Claude Code (Pro)&lt;/td&gt;
&lt;td&gt;$20/month&lt;/td&gt;
&lt;td&gt;Autonomous multi-file execution&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Claude Code (Max 5x)&lt;/td&gt;
&lt;td&gt;$100/month&lt;/td&gt;
&lt;td&gt;Heavy agentic workloads&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GitHub Copilot&lt;/td&gt;
&lt;td&gt;$10/month&lt;/td&gt;
&lt;td&gt;Inline completion, GitHub integration&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cursor Pro&lt;/td&gt;
&lt;td&gt;$20/month&lt;/td&gt;
&lt;td&gt;IDE-native, visual diff experience&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Windsurf Pro&lt;/td&gt;
&lt;td&gt;$15/month&lt;/td&gt;
&lt;td&gt;Multi-model experimentation&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Average real-world Claude Code spend is approximately $6/developer/day, with 90% of users staying below $12/day. For most engineering teams, the cost is lower than a single hour of debugging time per month.&lt;/p&gt;




&lt;h3&gt;
  
  
  Key Takeaways
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Claude Code leads on autonomous execution.&lt;/strong&gt; An 80.8% SWE-bench score with 46% developer satisfaction versus Copilot's 9% isn't a marginal win — it reflects a fundamental architectural advantage in agentic, multi-file tasks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The IDE autocomplete model isn't dead — it's been repositioned.&lt;/strong&gt; Copilot and Cursor still win for inline completion and visual diff workflows. The "use both" strategy is real and costs around $30/month.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Token efficiency compounds cost savings.&lt;/strong&gt; Claude Code using 5.5x fewer tokens than Cursor for equivalent tasks means the productivity advantage also translates to direct cost reduction for API-heavy workflows.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CLAUDE.md and MCP are underused features.&lt;/strong&gt; Project memory and 300+ integrations make Claude Code significantly more powerful after initial setup — most developers haven't configured these yet.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;JetBrains sunsetting Code With Me is the canary.&lt;/strong&gt; When synchronous collaborative coding becomes economically unjustifiable as a product feature, it's a leading indicator of how much the underlying workflow has already shifted.&lt;/li&gt;
&lt;/ol&gt;




&lt;h3&gt;
  
  
  What This Means for Builders
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Start with &lt;code&gt;/init&lt;/code&gt; in your existing codebase.&lt;/strong&gt; Claude Code's first-run setup takes under five minutes and the CLAUDE.md it generates will change how every subsequent session works.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Don't abandon Copilot if you live inside GitHub PRs.&lt;/strong&gt; Keep it for inline completion and GitHub Actions debugging; route complex refactors and multi-file tasks to Claude Code in the terminal.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test the 5.5x token efficiency claim yourself.&lt;/strong&gt; Run the same medium-complexity task (a full feature with tests) in both Claude Code and Cursor and compare API token consumption. The gap is real.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Watch the Windsurf Arena Mode data.&lt;/strong&gt; It's the first large-scale real-world model benchmarking system built into an IDE. The leaderboard it generates over the next six months will be more useful than synthetic benchmarks for understanding which models actually perform on developer tasks.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Built with &lt;a href="https://github.com/lizecheng2021-maker/IntelFlow" rel="noopener noreferrer"&gt;IntelFlow&lt;/a&gt; — open-source AI intelligence engine. Set up your own daily briefing in 60 seconds.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>buildinpublic</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Why Claude Code Skills Don't Trigger (And How to Fix Them in 2026)</title>
      <dc:creator>zecheng </dc:creator>
      <pubDate>Sun, 15 Mar 2026 23:07:49 +0000</pubDate>
      <link>https://dev.to/lizechengnet/why-claude-code-skills-dont-trigger-and-how-to-fix-them-in-2026-o7h</link>
      <guid>https://dev.to/lizechengnet/why-claude-code-skills-dont-trigger-and-how-to-fix-them-in-2026-o7h</guid>
      <description>&lt;p&gt;The core problem with Claude Code skills is a token budget overflow that silently drops your skill descriptions before Claude ever reads them. If you have built skills, tested them manually, and then watched Claude ignore them in real sessions — you are not doing it wrong. You are hitting a documented architectural limitation that most developers never find.&lt;/p&gt;

&lt;p&gt;This article covers the full picture: how Claude Code skills actually work under the hood, the three root causes of missed triggers, and the reliable fixes — including when to use Anthropic's new Skill Creator tool to measure and iterate.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Is a Claude Code Skill, Actually?
&lt;/h2&gt;

&lt;p&gt;A Claude Code skill is a SKILL.md file in &lt;code&gt;.claude/skills/&amp;lt;name&amp;gt;/&lt;/code&gt; that Claude loads dynamically when it decides the skill is relevant to your request. It is not a plugin, not a system prompt injection, and not a function call. It is closer to a context-gated instruction block — Claude reads the description, decides if it matches the current task, and only then loads the full instructions.&lt;/p&gt;

&lt;p&gt;The format is straightforward:&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;code-review&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;&amp;gt;"&lt;/span&gt;
  &lt;span class="s"&gt;Reviews code for security issues, performance problems, and style violations.&lt;/span&gt;
  &lt;span class="s"&gt;Use when reviewing a pull request, inspecting a function, or when the user&lt;/span&gt;
  &lt;span class="s"&gt;asks "review this code" or "check this for bugs."&lt;/span&gt;
&lt;span class="na"&gt;allowed-tools&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Read, Grep&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;

&lt;span class="s"&gt;When reviewing code, always check&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;
&lt;span class="s"&gt;1. SQL injection and input validation&lt;/span&gt;
&lt;span class="s"&gt;2. Authentication and authorization checks&lt;/span&gt;
&lt;span class="s"&gt;3. Error handling completeness&lt;/span&gt;
&lt;span class="s"&gt;4. Performance bottlenecks (N+1 queries, missing indexes)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;description&lt;/code&gt; field is doing most of the work. It is what Claude reads to decide whether to invoke the skill.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Do Claude Code Skills Fail to Trigger?
&lt;/h2&gt;

&lt;p&gt;Claude Code skills fail to trigger for three distinct reasons, and each has a different fix.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Root cause 1: Token budget overflow.&lt;/strong&gt; At session startup, all skill names and descriptions are pre-loaded into the system prompt, subject to a default budget of ~15,000 characters (~4,000 tokens). When you exceed this budget — which happens faster than you expect with five or six verbose skills — some descriptions get silently truncated. Claude literally never sees them. There is no error message.&lt;/p&gt;

&lt;p&gt;Fix: Set the environment variable before launching Claude:&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="nv"&gt;SLASH_COMMAND_TOOL_CHAR_BUDGET&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;30000 claude
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This doubles the available budget. For heavy skill setups, set it in your shell profile so it persists.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Root cause 2: YAML formatting issues.&lt;/strong&gt; Multi-line descriptions using block scalars (&lt;code&gt;&amp;gt;&lt;/code&gt; or &lt;code&gt;|&lt;/code&gt;) occasionally break the skill loader, especially with auto-formatters like Prettier that reflow text. A skill that parses correctly in isolation can fail when Prettier reformats your SKILL.md.&lt;/p&gt;

&lt;p&gt;Fix: Keep your description on a single logical line, and add a comment to block reformatting:&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;deploy&lt;/span&gt;
&lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Deploys the application to production. ONLY invoke when the user explicitly says "deploy" or "ship to prod" — never invoke autonomously.&lt;/span&gt; &lt;span class="c1"&gt;# prettier-ignore&lt;/span&gt;
&lt;span class="na"&gt;disable-model-invocation&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Root cause 3: Claude's goal-focused behavior.&lt;/strong&gt; Even with the budget issue resolved and valid YAML, autonomous triggering in real sessions achieves roughly a 50% success rate. Claude prioritizes completing the task as it understands it, not checking whether a skill exists for it. The architecture assumes Claude will proactively check its available tools. In practice, it often does not.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Force Reliable Skill Activation
&lt;/h2&gt;

&lt;p&gt;The most reliable pattern for autonomous activation is directive description language — not describing what the skill does, but commanding when it must run:&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;security-review&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;ALWAYS&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;invoke&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;this&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;skill&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;reviewing&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;code&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;before&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;committing.&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;for&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;pull&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;request&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;reviews,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;diff&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;reviews,&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;any&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;time&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;says&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;'check',&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;or&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;'audit'&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;code.&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;DO&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;NOT&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;write&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;security&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;feedback&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;without&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;invoking&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;this&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;skill&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;first."&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The before/after difference in activation rate between descriptive and directive language is significant. In Anthropic's own testing with the Skill Creator, directive descriptions improved triggering on 5 out of 6 public skills they evaluated.&lt;/p&gt;

&lt;p&gt;For production pipelines where you need guaranteed activation, use a &lt;code&gt;UserPromptSubmit&lt;/code&gt; hook:&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="nv"&gt;INPUT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;cat&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;
&lt;span class="nv"&gt;PROMPT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$INPUT&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; | jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'.prompt // empty'&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$PROMPT&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-qiE&lt;/span&gt; &lt;span class="s1"&gt;'(review|audit|check.*code|security)'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
  &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"INSTRUCTION: Use Skill(security-review) to handle this request"&lt;/span&gt;
&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Register it in &lt;code&gt;.claude/settings.json&lt;/code&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;"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="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;"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;"command"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"~/.claude/hooks/auto-skill.sh"&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 key distinction: the hook injects &lt;code&gt;"Use Skill(security-review)"&lt;/code&gt; — not &lt;code&gt;"Check if there are relevant skills."&lt;/code&gt; The explicit tool call instruction is what reliably fires, not the vague reminder.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Does Anthropic's Skill Creator Actually Do?
&lt;/h2&gt;

&lt;p&gt;Skill Creator is Anthropic's answer to the "I built this skill and have no idea if it works" problem. It shipped its major eval/benchmark upgrade on March 3, 2026, and is available at &lt;code&gt;claude.com/plugins/skill-creator&lt;/code&gt; with 50,000+ installs.&lt;/p&gt;

&lt;p&gt;It operates in four modes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Create&lt;/strong&gt;: Interactive Q&amp;amp;A that generates a SKILL.md structure from your description&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Eval&lt;/strong&gt;: You write test cases; it runs your skill against those cases and scores outputs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Improve&lt;/strong&gt;: Analyzes eval failures and suggests targeted changes to your description or instructions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Benchmark&lt;/strong&gt;: Runs a standardized assessment across your full eval set and tracks pass rate, elapsed time, and token usage across runs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The Eval and Benchmark modes are the ones that matter. The "faith-based automation" problem — build a skill, deploy it, hope it works — is the core failure mode. Skill Creator gives you measurable pass rates.&lt;/p&gt;

&lt;p&gt;Invoke it directly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"Run evals on my code-review skill"
"Benchmark my deploy skill across 10 runs and show variance"
"Compare version 1 vs version 2 of my security-review skill"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The Comparator sub-agent runs blind A/B comparisons between two skill versions without knowing which is which, which eliminates confirmation bias in self-evaluation.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Structure a SKILL.md That Scales
&lt;/h2&gt;

&lt;p&gt;The description field has a 1,024-character limit. Use it for trigger keywords, not instructions. Keep the SKILL.md body under 500 lines. For complex workflows, use supporting files:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.claude/skills/deploy/
├── SKILL.md           # Trigger logic + high-level steps
├── checklist.md       # Full deployment checklist
└── scripts/
    └── verify.sh      # Post-deploy verification
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Inside SKILL.md, reference supporting files instead of inlining:&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;deploy&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;Deploys&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;application&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;production&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;environments.&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Invoke&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;user&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;says&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;'deploy',&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;'ship',&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;'release',&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;'push&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;prod'.&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;ALWAYS&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;require&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;explicit&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;confirmation&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;before&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;running."&lt;/span&gt;
&lt;span class="na"&gt;context&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;fork&lt;/span&gt;
&lt;span class="na"&gt;disable-model-invocation&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;

&lt;span class="s"&gt;Follow the checklist in @checklist.md exactly.&lt;/span&gt;
&lt;span class="s"&gt;After deploying, run @scripts/verify.sh and report results.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;context: fork&lt;/code&gt; flag runs the skill in an isolated subagent context, which prevents deployment operations from contaminating your main conversation state.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Does the Invocation Control Matrix Look Like?
&lt;/h2&gt;

&lt;p&gt;Three frontmatter flags control when and how skills fire:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Configuration&lt;/th&gt;
&lt;th&gt;You can invoke&lt;/th&gt;
&lt;th&gt;Claude auto-invokes&lt;/th&gt;
&lt;th&gt;Use case&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Default (no flags)&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Research, formatting, analysis&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;disable-model-invocation: true&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Deploy, commit, send messages&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;user-invocable: false&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Background quality checks&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;For anything with side effects — deploying, committing, publishing — always use &lt;code&gt;disable-model-invocation: true&lt;/code&gt;. You do not want Claude autonomously deciding to deploy because you mentioned the word "ship."&lt;/p&gt;

&lt;h2&gt;
  
  
  Where to Find 1,200+ Community Skills
&lt;/h2&gt;

&lt;p&gt;The community skills library at &lt;a href="https://github.com/travisvn/awesome-claude-skills" rel="noopener noreferrer"&gt;github.com/travisvn/awesome-claude-skills&lt;/a&gt; aggregates the most-starred skill collections. Notable sources:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;obra/superpowers&lt;/code&gt; (40,900+ stars): &lt;code&gt;/brainstorm&lt;/code&gt;, &lt;code&gt;/write-plan&lt;/code&gt;, and 20+ battle-tested general workflow skills&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;alirezarezvani/claude-skills&lt;/code&gt; (4,400+ stars): 180+ production-ready skills across coding, writing, and deployment workflows&lt;/li&gt;
&lt;li&gt;Official Anthropic skills at &lt;code&gt;github.com/anthropics/skills&lt;/code&gt;: &lt;code&gt;pdf&lt;/code&gt;, &lt;code&gt;docx&lt;/code&gt;, &lt;code&gt;pptx&lt;/code&gt;, &lt;code&gt;xlsx&lt;/code&gt;, &lt;code&gt;slack-gif-creator&lt;/code&gt;, &lt;code&gt;webapp-testing&lt;/code&gt;, and &lt;code&gt;brand-guidelines&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Install via Claude Code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;/plugin add /path/to/skill-directory
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;All skills follow the &lt;a href="https://agentskills.io" rel="noopener noreferrer"&gt;agentskills.io&lt;/a&gt; open standard released December 2025, which means the same SKILL.md format works across Claude.ai, Claude Code, the API, and compatible tools like OpenCode.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Takeaways
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Token budget overflow is the silent killer.&lt;/strong&gt; Set &lt;code&gt;SLASH_COMMAND_TOOL_CHAR_BUDGET=30000&lt;/code&gt; if you have more than three skills and wonder why they stop firing after you add new ones.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Directive description language outperforms descriptive language&lt;/strong&gt; for autonomous triggering. "ALWAYS invoke when..." beats "Helps with..." every time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hooks give you guaranteed activation.&lt;/strong&gt; For production workflows, a &lt;code&gt;UserPromptSubmit&lt;/code&gt; hook with an explicit &lt;code&gt;"Use Skill(name)"&lt;/code&gt; instruction is more reliable than description-based autonomous invocation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Skill Creator's Eval mode makes skills measurable.&lt;/strong&gt; Establish a baseline pass rate before optimizing — otherwise you are guessing whether your changes helped.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;disable-model-invocation: true&lt;/code&gt; is required for any side-effectful skill.&lt;/strong&gt; Deployments, commits, and API calls should never auto-invoke.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  What This Means for Builders
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Start with evals, not instructions.&lt;/strong&gt; Write three test cases for your skill before writing the SKILL.md body. This clarifies what "working" actually means before you spend time on documentation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The description is the trigger, not the instructions.&lt;/strong&gt; Spend 70% of your SKILL.md iteration time on the description field. A perfect 500-line instruction set with a vague description will never fire.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Skill complexity caps out around 500 lines.&lt;/strong&gt; Beyond that, refactor into supporting files with &lt;code&gt;@file&lt;/code&gt; references. Large monolithic SKILL.md files are harder to test and harder for Claude to follow precisely.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Every multi-step production workflow needs a hook.&lt;/strong&gt; If your automation pipeline requires a specific skill to always run at a specific point, encode that requirement in a hook — not in a description you hope Claude will read correctly.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Built with &lt;a href="https://github.com/lizecheng2021-maker/IntelFlow" rel="noopener noreferrer"&gt;IntelFlow&lt;/a&gt; — open-source AI intelligence engine. Set up your own daily briefing in 60 seconds.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>buildinpublic</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
    <item>
      <title>How Enterprise AI Platforms Get Hacked: Lessons from the McKinsey Lilli Breach</title>
      <dc:creator>zecheng </dc:creator>
      <pubDate>Sun, 15 Mar 2026 04:15:33 +0000</pubDate>
      <link>https://dev.to/lizechengnet/how-enterprise-ai-platforms-get-hacked-lessons-from-the-mckinsey-lilli-breach-374f</link>
      <guid>https://dev.to/lizechengnet/how-enterprise-ai-platforms-get-hacked-lessons-from-the-mckinsey-lilli-breach-374f</guid>
      <description>&lt;p&gt;Enterprise AI platforms fail in predictable ways — and the McKinsey Lilli breach in February 2026 is the clearest case study yet of how a system deployed to 43,000 users can be fully compromised in under two hours through vulnerabilities that have been documented since the late 1990s.&lt;/p&gt;

&lt;p&gt;An autonomous security agent built by CodeWall extracted 46.5 million consulting conversations, 728,000 confidential documents, 57,000 user accounts, and — most critically — gained write access to all 95 system prompts controlling what the AI shows McKinsey's consultants (&lt;a href="https://codewall.ai/blog/how-we-hacked-mckinseys-ai-platform" rel="noopener noreferrer"&gt;source: codewall.ai&lt;/a&gt;). McKinsey's standard scanner, OWASP ZAP, missed it entirely.&lt;/p&gt;

&lt;p&gt;This is the pattern that's going to repeat across enterprise AI deployments in 2026. ML engineers are building RAG systems without thinking like security engineers, and the attack surface is compounding faster than most teams realize.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Attack Chain That Took Down Lilli
&lt;/h3&gt;

&lt;p&gt;The entry point was embarrassingly simple. Of Lilli's 200+ API endpoints, 22 required zero authentication — and the API documentation was publicly exposed.&lt;/p&gt;

&lt;p&gt;One of those unauthenticated endpoints wrote user search queries to a database. Here's the critical detail: the endpoint correctly parameterized query &lt;em&gt;values&lt;/em&gt;, but concatenated JSON field &lt;em&gt;names&lt;/em&gt; directly into the SQL statement. Standard scanners test value injection. They miss key injection. The AI security agent recognized the database error messages as SQL injection signals and ran 15+ blind iterations to extract increasingly detailed production data.&lt;/p&gt;

&lt;p&gt;This is the "decades-old technique" framing that makes the breach significant (&lt;a href="https://the-decoder.com/an-ai-agent-hacked-mckinseys-internal-ai-platform-in-two-hours-using-a-decades-old-technique/" rel="noopener noreferrer"&gt;The Decoder&lt;/a&gt;): SQL injection has been in the OWASP Top 3 since the late 2000s. The vulnerability exists because ML engineers building internal AI tooling don't think like web security engineers. They parameterize values correctly — they've heard to do that — but they don't think about field names as an injection surface.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Writable System Prompts Are the Real Catastrophe
&lt;/h3&gt;

&lt;p&gt;Data theft is recoverable. System prompt write access is not.&lt;/p&gt;

&lt;p&gt;McKinsey's 95 system prompts controlled the outputs Lilli delivered to every consultant. An attacker with write access to those prompts could silently shape the strategic recommendations flowing to Fortune 500 boardrooms — without touching a single email or document. Consultants trust internal tools implicitly. Internal tools don't get the skepticism that external sources do.&lt;/p&gt;

&lt;p&gt;This is what distinguishes AI security from traditional data security: the blast radius of a compromised AI system isn't just the data it holds. It's the trust surface of everyone who reads its outputs.&lt;/p&gt;

&lt;p&gt;System prompts should be treated like firmware, not runtime configuration. Concretely:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;System prompts belong in version-controlled, write-protected storage&lt;/li&gt;
&lt;li&gt;Write access should require separate privileged credentials, not the same API key used for reads&lt;/li&gt;
&lt;li&gt;Implement canary tokens inside system prompts to detect extraction or modification attempts&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The Three Vulnerability Classes to Patch First
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;1. Unauthenticated API Endpoints&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;43% of CISA-tracked actively exploited vulnerabilities are API-related (&lt;a href="https://cloudsecurityalliance.org/blog/2025/09/09/api-security-in-the-ai-era" rel="noopener noreferrer"&gt;Cloud Security Alliance&lt;/a&gt;). The fix is non-negotiable: every endpoint must require authentication. There are no "internal-only" or "dev" exceptions — if it's reachable, it's exploitable. Never expose API documentation publicly if any endpoint touches production data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. SQL Injection in RAG Pipelines&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;CVE-2025-1793 affected 8 vector store integrations in LlamaIndex. The pattern: user-supplied inputs to database methods weren't parameterized (&lt;a href="https://www.penligent.ai/hackinglabs/agentic-collapse-why-cve-2026-22200-is-a-wake-up-call-for-rag-tool-security/" rel="noopener noreferrer"&gt;Penligent&lt;/a&gt;). The McKinsey variant was subtler — parameterized values but raw key names.&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;query&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;SELECT * FROM docs WHERE &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;user_field_name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; = ?&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="n"&gt;ALLOWED_FIELDS&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;title&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;author&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;date&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;field_name&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;ALLOWED_FIELDS&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="nc"&gt;ValueError&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Invalid field: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;field_name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;query&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;SELECT * FROM docs WHERE &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;field_name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; = ?&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Standard scanners won't catch the subtler variants. Add security testing that explicitly fuzzes field names and JSON keys, not just values.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. System Prompt Injection (Direct and Indirect)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Prompt injection is OWASP LLM01:2025, with attack success rates of 50–84% depending on system configuration (&lt;a href="https://genai.owasp.org/llmrisk/llm01-prompt-injection/" rel="noopener noreferrer"&gt;OWASP&lt;/a&gt;). Indirect injection — where malicious instructions are embedded in documents the AI retrieves — is the harder problem. OpenAI acknowledged in February 2026 that AI browsers "may never be fully patched" against prompt injection.&lt;/p&gt;

&lt;p&gt;The mitigation stack:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Maintain strict context separation: system prompts and retrieved content should never share the same trust boundary without demarcation&lt;/li&gt;
&lt;li&gt;Run agents that retrieve external content with reduced permissions&lt;/li&gt;
&lt;li&gt;Apply output filtering before returning results to users&lt;/li&gt;
&lt;li&gt;Tools like Lakera Guard and Prompt Security provide dedicated prompt injection defense layers&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  MCP Introduces an Entirely New Attack Surface
&lt;/h3&gt;

&lt;p&gt;The Model Context Protocol has a threat that has no traditional software equivalent: &lt;strong&gt;rug pull attacks&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A tool behaves correctly through the approval process. Once approved, its description or metadata is silently modified to embed malicious instructions. The agent executes them because the tool is already in the trusted list (&lt;a href="https://invariantlabs.ai/blog/mcp-security-notification-tool-poisoning-attacks" rel="noopener noreferrer"&gt;Invariant Labs&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;Enterprise MCP deployments need:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;mcp-scan &lt;span class="nt"&gt;--pin-tools&lt;/span&gt; &lt;span class="nt"&gt;--alert-on-change&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The 2025-11-25 MCP spec now classifies MCP servers as OAuth Resource Servers and requires Resource Indicators (RFC 8707) — tokens are scoped to a specific MCP server and can't be reused across servers. If you're running MCP in production and haven't updated your auth layer to the current spec, this is the gap to close first.&lt;/p&gt;

&lt;h3&gt;
  
  
  RAG-Specific Risks That Go Beyond SQL
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Vector database poisoning&lt;/strong&gt;: BadRAG demonstrated a 98.2% attack success rate by poisoning only 0.04% of a corpus. Injected documents get retrieved into LLM context and the model behaves as intended by the attacker. Every document ingestion pipeline needs validation and anomaly detection before content enters the vector store.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Embedding extraction&lt;/strong&gt;: Vec2Text can reconstruct original text from embeddings with 92% exact match accuracy on short inputs. Embeddings are not a privacy mechanism — treat them like plaintext.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Access control in retrieval&lt;/strong&gt;: The default pattern — one vector store accessible to all users — is wrong for enterprise deployments. Implement document-level ACLs at the retriever layer. A consultant in Germany shouldn't be able to retrieve documents tagged for the US team. Attribute-Based Access Control (ABAC) handles this better than role-based models for dynamic RAG contexts.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Security Tooling Asymmetry
&lt;/h3&gt;

&lt;p&gt;The most unsettling part of the McKinsey breach timeline: a commercial AI security agent found what McKinsey's standard tooling missed. The attackers' tools are running a generation ahead of the defenders'.&lt;/p&gt;

&lt;p&gt;AI-powered security scanners (commercial and open-source) are now available specifically for LLM applications. Running them against your API surface before launch is table stakes in 2026. OWASP ZAP's rule set was built for traditional web applications — it's not instrumented for the JSON key injection patterns and indirect prompt injection vectors that define the AI attack surface.&lt;/p&gt;

&lt;p&gt;Average cost of an AI-related data breach in 2025: &lt;strong&gt;$4.88 million&lt;/strong&gt; (&lt;a href="https://petronellatech.com/cyber-security/ai-security-guide/" rel="noopener noreferrer"&gt;Petronella&lt;/a&gt;). Running an AI security audit before launch is cheap by comparison.&lt;/p&gt;

&lt;h3&gt;
  
  
  What This Means for Builders
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Treat system prompts as firmware.&lt;/strong&gt; Write access to system prompts is a higher-severity issue than database access. Lock them down with separate credentials, version control, and integrity checks before anything else.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Run AI-native security scanners, not just traditional web scanners.&lt;/strong&gt; OWASP ZAP missed the McKinsey vulnerability. Add tools that understand LLM-specific injection surfaces — including JSON key names, RAG retrieval manipulation, and MCP tool description poisoning.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Authentication is not optional for any endpoint.&lt;/strong&gt; If your internal AI tool has a single unauthenticated endpoint that touches production data, you have a McKinsey-style exposure waiting. Audit every endpoint before launch, and don't expose API documentation publicly.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Assume every document your RAG system retrieves is potentially attacker-controlled.&lt;/strong&gt; Apply input filters before retrieval, apply output filters before display, and run agents that handle external content with reduced permissions. Indirect prompt injection via retrieved documents is harder to patch than direct injection.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Built with &lt;a href="https://github.com/lizecheng2021-maker/IntelFlow" rel="noopener noreferrer"&gt;IntelFlow&lt;/a&gt; — open-source AI intelligence engine. Set up your own daily briefing in 60 seconds.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>security</category>
      <category>webdev</category>
      <category>buildinpublic</category>
    </item>
    <item>
      <title>How to Run the Karpathy Loop: AI-Automated Benchmarking That Made Shopify's Template Engine 53% Faster</title>
      <dc:creator>zecheng </dc:creator>
      <pubDate>Fri, 13 Mar 2026 23:13:06 +0000</pubDate>
      <link>https://dev.to/lizechengnet/how-to-run-the-karpathy-loop-ai-automated-benchmarking-that-made-shopifys-template-engine-53-39bf</link>
      <guid>https://dev.to/lizechengnet/how-to-run-the-karpathy-loop-ai-automated-benchmarking-that-made-shopifys-template-engine-53-39bf</guid>
      <description>&lt;p&gt;The Karpathy loop is an AI-assisted optimization technique where an autonomous agent runs hundreds of edit-benchmark-discard cycles overnight, surfacing performance improvements that no single engineer would have the time to find manually — and it just made Shopify's Liquid template engine 53% faster with 61% fewer memory allocations.&lt;/p&gt;

&lt;p&gt;On March 13, 2026, Tobias Lütke — Shopify's CEO, the person who originally built Liquid over 20 years ago — submitted GitHub PR #2056 against the Liquid codebase with those numbers attached. The method: approximately 120 automated experiment loops using a variant of Andrej Karpathy's &lt;code&gt;autoresearch&lt;/code&gt; system. The results: 974 unit tests pass, zero regressions, and a performance improvement visible in production-scale benchmarks against real Shopify themes.&lt;/p&gt;

&lt;p&gt;Here's how the technique works, how to run it yourself, and what it actually found inside Liquid's parser.&lt;/p&gt;




&lt;h3&gt;
  
  
  What the Karpathy Loop Actually Is
&lt;/h3&gt;

&lt;p&gt;Andrej Karpathy open-sourced &lt;code&gt;autoresearch&lt;/code&gt; on March 8, 2026 — a deliberately minimal Python tool (~630 lines) that turns performance experimentation into a fully autonomous overnight process.&lt;/p&gt;

&lt;p&gt;The loop is conceptually simple:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;read code + fitness metric
  → form hypothesis
  → edit code
  → run tests (correctness gate)
  → run benchmark (performance gate)
  → keep if metric improved, discard if not
  → log to JSONL
  → repeat
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each experiment runs inside a fixed time budget (roughly 5 minutes), which makes all runs directly comparable regardless of what changed. Single unambiguous fitness metric. Tests before benchmarks — correctness is non-negotiable, performance is the optimization target.&lt;/p&gt;

&lt;p&gt;Karpathy's own results on ML training scripts: a 126-experiment overnight run dropped validation loss from 0.9979 to 0.9697. After approximately 700 autonomous changes over two days, the "time to GPT-2" training metric improved by 11%. On the night of March 8–9 alone, 35 autonomous agents on the Hyperspace network ran 333 unsupervised experiments.&lt;/p&gt;

&lt;p&gt;The repo is at &lt;a href="https://github.com/karpathy/autoresearch" rel="noopener noreferrer"&gt;github.com/karpathy/autoresearch&lt;/a&gt;. It was originally designed for ML training scripts, but the core architecture is domain-agnostic.&lt;/p&gt;




&lt;h3&gt;
  
  
  How Tobi Adapted It for a Ruby Codebase
&lt;/h3&gt;

&lt;p&gt;Lütke used Pi as his coding agent and adapted the autoresearch pattern through a plugin called &lt;code&gt;pi-autoresearch&lt;/code&gt; (co-authored with David Cortés, available at &lt;a href="https://github.com/davebcn87/pi-autoresearch" rel="noopener noreferrer"&gt;github.com/davebcn87/pi-autoresearch&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;The adaptation required two files:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;autoresearch.md    — the agent's instruction file (what to optimize, what to measure)
autoresearch.sh    — the benchmark runner (runs tests + reports scores)
autoresearch.jsonl — state file (experiment history, what worked, what didn't)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The fitness metric was the ThemeRunner benchmark: a real Shopify theme executing against production-like template data, measured in milliseconds of combined parse+render time and tracked object allocations. The correctness gate was Liquid's existing 974-test suite — any experiment that breaks a test gets discarded immediately, before benchmarking.&lt;/p&gt;

&lt;p&gt;Lütke's X post after the run: &lt;em&gt;"I ran /autoresearch on the liquid codebase. 53% faster combined parse+render time, 61% fewer object allocations. This is probably somewhat overfit, but there are absolutely amazing ideas in this."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The "somewhat overfit" caveat matters. Automated loops can find improvements that look good on the benchmark fixture without generalizing to all production patterns. The next step — which Shopify's engineering team will handle — is verifying which changes survive broader production testing. That's expected from automated research, not a flaw in the technique.&lt;/p&gt;




&lt;h3&gt;
  
  
  What the Agent Actually Found: StringScanner → Byte-Level Scanning
&lt;/h3&gt;

&lt;p&gt;The single biggest individual optimization surfaced by the loop: replacing the &lt;code&gt;StringScanner&lt;/code&gt;-based tokenizer with &lt;code&gt;String#byteindex&lt;/code&gt; for finding &lt;code&gt;{%&lt;/code&gt; and &lt;code&gt;{{&lt;/code&gt; delimiters inside template strings.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;String#byteindex&lt;/code&gt; searching for a fixed two-byte sequence is approximately 40% faster than &lt;code&gt;StringScanner#skip_until&lt;/code&gt; with a regex pattern. On the ThemeRunner benchmark, the old approach was calling &lt;code&gt;StringScanner#string=&lt;/code&gt; reset on every &lt;code&gt;{% %}&lt;/code&gt; token — 878 times. The new byte-level cursor eliminates that reset overhead entirely, reducing parse time by roughly 12% on its own.&lt;/p&gt;

&lt;p&gt;The PR went further. The automated loop also identified:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;VariableParser refactor&lt;/strong&gt;: the regex-based parser replaced with a manual byte scanner that extracts name expressions and filter chains without touching the Lexer or Parser at all&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;Variable#try_fast_parse&lt;/code&gt; path&lt;/strong&gt;: 100% of variables in the benchmark (1,197 variables) now route through this byte-level fast path, bypassing the full parse stack&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;FullToken regex elimination&lt;/strong&gt;: cursor-based scanning replaces the regex in the main tokenization path&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Aaron Patterson's canonical 2023 post on fast tokenizers with StringScanner (&lt;a href="https://tenderlovemaking.com/2023/09/02/fast-tokenizers-with-stringscanner/" rel="noopener noreferrer"&gt;tenderlovemaking.com&lt;/a&gt;) represented the previous state of the art in Ruby tokenizer performance. The Liquid PR effectively goes one level deeper — byte operations instead of scanner operations.&lt;/p&gt;




&lt;h3&gt;
  
  
  How to Run This on Your Own Codebase
&lt;/h3&gt;

&lt;p&gt;You don't need to use Pi as your coding agent. The pattern is agent-agnostic. Here's what you actually need:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Define your fitness metric precisely.&lt;/strong&gt;&lt;br&gt;
One number. Smaller is better (or larger is better — pick one). For Liquid it was benchmark milliseconds and allocation count. For an API endpoint it might be p95 response time. For a database query, it's execution time on a fixed dataset. Ambiguous metrics produce ambiguous results.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Write your benchmark runner as a script.&lt;/strong&gt;&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;#!/bin/bash&lt;/span&gt;
bundle &lt;span class="nb"&gt;exec &lt;/span&gt;ruby bench/themerunner.rb 2&amp;gt;&amp;amp;1 | &lt;span class="nb"&gt;tail&lt;/span&gt; &lt;span class="nt"&gt;-5&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The agent needs to read a single number from stdout. Make the output format explicit in your instruction file.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Set up your instruction file (&lt;code&gt;autoresearch.md&lt;/code&gt;).&lt;/strong&gt;&lt;br&gt;
Tell the agent: what the codebase does, what the benchmark measures, what kinds of changes are in-scope (tokenizer, parser, memory allocation patterns), and what's out of scope (don't touch the public API surface, don't change error messages).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4: Run with a time budget.&lt;/strong&gt;&lt;br&gt;
120 experiments at 5 minutes each = 10 hours. That's overnight. The correct use of this technique is to start it before you sleep and read the JSONL log in the morning.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5: Review the winning experiments manually.&lt;/strong&gt;&lt;br&gt;
The agent produces hypotheses and results. You still own the decision about what ships. The JSONL log gives you a complete record of what was tried, what worked, and what the agent's reasoning was for each change.&lt;/p&gt;




&lt;h3&gt;
  
  
  Who Else Is Running This Pattern
&lt;/h3&gt;

&lt;p&gt;Beyond Karpathy and Lütke, the technique is spreading across different ecosystems:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;autoresearch-mlx&lt;/code&gt;&lt;/strong&gt; (&lt;a href="https://github.com/trevin-creator/autoresearch-mlx" rel="noopener noreferrer"&gt;github.com/trevin-creator/autoresearch-mlx&lt;/a&gt;) — Apple Silicon port using MLX instead of PyTorch, runs natively on Mac without CUDA&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;autoresearch-win-rtx&lt;/code&gt;&lt;/strong&gt; (&lt;a href="https://github.com/jsegov/autoresearch-win-rtx" rel="noopener noreferrer"&gt;github.com/jsegov/autoresearch-win-rtx&lt;/a&gt;) — Windows + RTX GPU adaptation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;autoexp&lt;/code&gt; gist&lt;/strong&gt; (&lt;a href="https://gist.github.com/adhishthite/16d8fd9076e85c033b75e187e8a6b94e" rel="noopener noreferrer"&gt;gist.github.com/adhishthite&lt;/a&gt;) — generalized version for any quantifiable metric project, not just ML training&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Simon Willison's coverage of the Liquid PR (simonwillison.net, March 13, 2026) frames this as one concrete instance of a broader class of agentic engineering patterns — AI-assisted iteration that produces better code through automated feedback loops rather than through AI writing code from scratch.&lt;/p&gt;




&lt;h3&gt;
  
  
  What This Means for Builders
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The technique works on any codebase with a measurable benchmark.&lt;/strong&gt; Ruby, Python, Rust, Go — the autoresearch pattern is language-agnostic. The requirement is a fitness metric you can print to stdout from a script.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Start with allocation profiling, not execution time.&lt;/strong&gt; The Liquid PR's most productive discovery thread came from object allocation counts, not raw speed. Memory allocation patterns are often the root cause of performance issues, and they're cheaper to measure and easier for an agent to reason about than cache behavior or I/O.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The agent is a hypothesis generator, not an autonomous engineer.&lt;/strong&gt; The loop produces candidates. The correctness gate (your test suite) is non-negotiable — run it before benchmarking every single experiment. Ship nothing without human review of the winning diffs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;120 experiments overnight is now a realistic option for individual contributors.&lt;/strong&gt; Lütke submitted this PR as one person using a weekend afternoon to set up the loop. The productivity floor for a single engineer with the right tools has shifted significantly — not because AI writes better code than humans, but because it can test more hypotheses per hour than any human team can.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Built with &lt;a href="https://github.com/lizecheng2021-maker/IntelFlow" rel="noopener noreferrer"&gt;IntelFlow&lt;/a&gt; — open-source AI intelligence engine. Set up your own daily briefing in 60 seconds.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>buildinpublic</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Enterprise AI Is Making Everyone Work More, Not Less — Here's Why, and What Builders Are Actually Doing About It</title>
      <dc:creator>zecheng </dc:creator>
      <pubDate>Fri, 13 Mar 2026 00:53:29 +0000</pubDate>
      <link>https://dev.to/lizechengnet/enterprise-ai-is-making-everyone-work-more-not-less-heres-why-and-what-builders-are-actually-2ce5</link>
      <guid>https://dev.to/lizechengnet/enterprise-ai-is-making-everyone-work-more-not-less-heres-why-and-what-builders-are-actually-2ce5</guid>
      <description>&lt;p&gt;443 million hours of tracked work. 163,638 employees. 1,111 organizations. Three years of data.&lt;/p&gt;

&lt;p&gt;The result: AI tools increased workload in &lt;strong&gt;every single measured category&lt;/strong&gt;. Emails up 104%. Chat and messaging up 145%. Focused work down 23 minutes per day. Saturday work up 46%.&lt;/p&gt;

&lt;p&gt;ActivTrak's 2026 State of the Workplace report is the largest empirical dataset on enterprise AI productivity ever published, and it tells a story most AI marketing decks would rather you didn't see.&lt;/p&gt;

&lt;p&gt;The question for builders isn't whether this is true. It's &lt;em&gt;why&lt;/em&gt; — and what the tools launching this week are doing differently.&lt;/p&gt;




&lt;h3&gt;
  
  
  Why AI Makes Knowledge Workers Busier (The Structural Explanation)
&lt;/h3&gt;

&lt;p&gt;Here's the mechanism. When you drop an AI tool into an existing workflow without changing the workflow, you don't remove steps. You add them.&lt;/p&gt;

&lt;p&gt;Every AI output becomes a new checkpoint: &lt;em&gt;Did the AI get this right? Let me verify with a colleague. Let me fix this error.&lt;/em&gt; That verification loop is slower than doing the task manually in the first place. You've added a new worker to the process — an unreliable one that requires supervision.&lt;/p&gt;

&lt;p&gt;Over 1,000 Amazon employees signed an internal petition this week calling the company's AI tools "half-baked." The complaint isn't that AI is slow. It's that error correction and verification overhead now consume more time than the task itself. Amazon has cut 30,000 employees since October 2025. The remaining workforce is being asked to use immature AI to absorb that lost capacity.&lt;/p&gt;

&lt;p&gt;The productivity promise breaks when AI assists humans with existing steps. It only works when it &lt;strong&gt;removes entire steps from the human queue entirely&lt;/strong&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  Understudy: Teaching an Agent by Demonstration
&lt;/h3&gt;

&lt;p&gt;Two tools launched on HN this week that take this seriously.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/understudy-ai/understudy" rel="noopener noreferrer"&gt;Understudy&lt;/a&gt; ships a "teach once, agent learns" paradigm for desktop automation. The workflow:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;/teach start
/teach stop &lt;span class="s2"&gt;"describe what you just showed"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The agent watches, extracts intent, and generates a &lt;code&gt;SKILL.md&lt;/code&gt; artifact that hot-loads into the active session. No coordinate mapping, no configuration scripts.&lt;/p&gt;

&lt;p&gt;The architecture is the interesting part. Most RPA tools record mouse coordinates and replay them — change your screen resolution and everything breaks. Understudy uses a dual-model approach: a &lt;strong&gt;decision model&lt;/strong&gt; handles "what to do," while a separate &lt;strong&gt;grounding model&lt;/strong&gt; handles "where on screen." Decoupling those two problems is what makes generalization possible.&lt;/p&gt;

&lt;p&gt;A task can span web browsing, shell commands, native app interactions, and messaging in a single session. The agent's learning curve mirrors new employee onboarding: observation → imitation → independent execution → route optimization. Except it doesn't forget between sessions.&lt;/p&gt;

&lt;p&gt;Current status: Layers 1 (native software) and 2 (demonstration learning) are fully implemented. Layers 3–5 (crystallized memory, proactive autonomy) are in development. Open source, macOS-primary.&lt;/p&gt;

&lt;p&gt;For anyone running repetitive multi-system workflows — data entry, report generation, cross-app coordination — this is worth watching closely.&lt;/p&gt;




&lt;h3&gt;
  
  
  Axe and the Unix Pipe Pattern for AI Agents
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/dhamidi/axe" rel="noopener noreferrer"&gt;Axe&lt;/a&gt; is a 12MB binary positioning itself as a replacement for AI frameworks. What's more useful than the tool itself is the workflow pattern it surfaced in the HN comments.&lt;/p&gt;

&lt;p&gt;The top comment described building AI pipelines with nothing but Claude's &lt;code&gt;-p&lt;/code&gt; flag and Unix pipes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git diff &lt;span class="nt"&gt;--staged&lt;/span&gt; | ai-commit-msg | git commit &lt;span class="nt"&gt;-F&lt;/span&gt; -
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;ai-commit-msg&lt;/code&gt; is a 15-line bash script. Stdin: git diff. Stdout: one conventional commit message. No framework, no abstraction layers, no dependency graph. It does one thing.&lt;/p&gt;

&lt;p&gt;The architectural insight: AI capability doesn't need to be encapsulated in heavyweight frameworks. Decompose it into Unix-style tools — explicit inputs, explicit outputs, composable in arbitrary sequences. Each script is auditable, debuggable, and replaceable independently. When something breaks, you know exactly where.&lt;/p&gt;

&lt;p&gt;The honest tradeoff the discussion surfaced: a single large context window is expensive, but fanning out to 10 parallel agents with mid-size context windows costs more. The same discipline that makes Unix pipelines safe — defining task boundaries carefully before composing — applies to AI pipelines too.&lt;/p&gt;




&lt;h3&gt;
  
  
  The RAG Security Risk Nobody's Talking About
&lt;/h3&gt;

&lt;p&gt;Here's a number that should change how you think about retrieval-augmented generation systems in production.&lt;/p&gt;

&lt;p&gt;PoisonedRAG research, presented at USENIX Security 2025, found that injecting &lt;strong&gt;approximately five malicious documents&lt;/strong&gt; into a corpus of millions — that's 0.0002% of the corpus — achieves a &lt;strong&gt;97% attack success rate&lt;/strong&gt; on targeted queries against the Natural Questions dataset. HotpotQA: 99% ASR. MS-MARCO: 91% ASR.&lt;/p&gt;

&lt;p&gt;The mechanism: malicious documents are engineered to score higher cosine similarity to a target query than the legitimate document being displaced. No code changes, no authentication bypasses. The attack happens entirely at the retrieval stage.&lt;/p&gt;

&lt;p&gt;The retrieval layer has become the AI system's control plane. If it's compromised, model behavior is compromised — without touching the model itself.&lt;/p&gt;

&lt;p&gt;Three defenses that actually work:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Restrict corpus write permissions aggressively.&lt;/strong&gt; Most organizations have this too open.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Plant canary documents&lt;/strong&gt; containing unique proprietary phrases. If those phrases appear in unexpected retrieval logs, the corpus has been probed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Monitor retrieval inputs continuously&lt;/strong&gt;, not retroactively.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This connects to a broader point Simon Eskildsen (CEO of Turbopuffer) made on the Latent Space podcast this week: as context windows grow, most people assume RAG becomes less important. He argues the opposite — retrieval becomes &lt;em&gt;more&lt;/em&gt; critical, because the retrieval layer determines what information the model actually sees. The ceiling on output quality is the floor of retrieval quality.&lt;/p&gt;




&lt;h3&gt;
  
  
  Databricks Genie Code: 77.1% on Real-World Data Tasks
&lt;/h3&gt;

&lt;p&gt;Databricks announced Genie Code on March 11. The benchmark claim: 77.1% success rate on real-world data science tasks, up from 32.1% for leading coding agents — more than double.&lt;/p&gt;

&lt;p&gt;It builds pipelines, debugs failures, ships dashboards, and maintains production systems autonomously. The agent plans and executes multi-step workflows with human oversight at decision points — not as a copilot, but as an actor.&lt;/p&gt;

&lt;p&gt;Databricks also acquired Quotient AI to embed continuous evaluation and reinforcement learning directly into Genie Code's feedback loop. Early adopters include SiriusXM and Repsol.&lt;/p&gt;

&lt;p&gt;The 77.1% number isn't magic. It reflects the architectural difference between "AI assists humans" and "AI runs the process." Genie Code is designed to eliminate human-in-the-loop steps, not speed them up.&lt;/p&gt;




&lt;h3&gt;
  
  
  What This Means for Builders
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Redesign before you automate.&lt;/strong&gt; The ActivTrak data proves that inserting AI into an existing workflow makes it worse. Map the process first, identify which steps require human judgment, and only then decide where autonomous agents replace human-in-the-loop steps entirely.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Treat your retrieval layer as a security surface.&lt;/strong&gt; If you're shipping a product with RAG, the vector database and document ingestion pipeline need the same access controls and monitoring you'd apply to authentication. PoisonedRAG shows it's not theoretical.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The Unix pipe pattern is underrated for AI workflows.&lt;/strong&gt; Before reaching for LangChain or a similar framework, try &lt;code&gt;stdin → claude -p → stdout&lt;/code&gt; composited with small, single-purpose scripts. Auditable, cheap to debug, cost-predictable.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;"Teach once" automation is the category to watch.&lt;/strong&gt; Understudy's demonstrate-once architecture solves the configuration problem that keeps most teams from building internal automation. If you have repetitive workflows spanning multiple tools, this pattern — not RPA, not chat-based AI — is the right model.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Full report with macro context, SEO/search analysis, and the Atlassian layoff breakdown: &lt;a href="https://www.lizecheng.net/zecheng-intel-daily-2026-03-13/" rel="noopener noreferrer"&gt;Zecheng Intel Daily — March 13, 2026&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>buildinpublic</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
    <item>
      <title>The Agentic IDE Race Just Started: JetBrains Air, ACP Protocol, and Why Your Logs Are Lying to You</title>
      <dc:creator>zecheng </dc:creator>
      <pubDate>Thu, 12 Mar 2026 12:49:28 +0000</pubDate>
      <link>https://dev.to/lizechengnet/the-agentic-ide-race-just-started-jetbrains-air-acp-protocol-and-why-your-logs-are-lying-to-you-10c4</link>
      <guid>https://dev.to/lizechengnet/the-agentic-ide-race-just-started-jetbrains-air-acp-protocol-and-why-your-logs-are-lying-to-you-10c4</guid>
      <description>&lt;p&gt;Andrej Karpathy posted a single tweet asking where the "agentic IDE" is. Within hours, JetBrains shipped an answer.&lt;/p&gt;

&lt;p&gt;That's the speed of this market right now. Here's everything builders need to know from March 12.&lt;/p&gt;

&lt;h3&gt;
  
  
  JetBrains Air and the Protocol That Could Reshape IDE Competition
&lt;/h3&gt;

&lt;p&gt;JetBrains launched &lt;strong&gt;Air&lt;/strong&gt; — rebuilt on the bones of Fleet, their previously abandoned editor — now repositioned as an agentic-first environment. Air runs multiple AI agents concurrently and ships with multi-model support out of the box:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- OpenAI Codex
- Anthropic Claude Agent
- Google Gemini CLI
- JetBrains Junie (also available standalone at $10/month)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;macOS public preview is live now. Windows and Linux are coming later.&lt;/p&gt;

&lt;p&gt;The more interesting play is the &lt;strong&gt;Agent Client Protocol (ACP)&lt;/strong&gt; — a vendor-neutral communication standard co-developed by JetBrains and Zed. ACP decouples agents from specific editors. Any compliant agent works in any compliant editor.&lt;/p&gt;

&lt;p&gt;If ACP gets traction, the IDE moat shifts entirely. Today, editors compete on which models they support and how well they're integrated. With ACP, that becomes table stakes. The real differentiation becomes UX, reliability, and workflow design. Cursor proved that an AI-first editor could take meaningful share from incumbents. JetBrains is responding not with a better model integration — but with a protocol designed to make the model question irrelevant.&lt;/p&gt;

&lt;p&gt;One more thing worth bookmarking: &lt;strong&gt;Agency Agents&lt;/strong&gt; surfaced in the same discussion — a system that injects 112 specialized AI agent personas into Claude Code, Cursor, and Aider. Instead of one general-purpose assistant, you get domain experts. It's a workaround for the "one model handles everything" ceiling that current tools hit.&lt;/p&gt;

&lt;h3&gt;
  
  
  Your Production Agents Are Failing Silently
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Sentrial&lt;/strong&gt; launched out of YC W26 this week, and the problem they're solving is one that every team running agents in production has already hit but hasn't fully named.&lt;/p&gt;

&lt;p&gt;Traditional observability catches HTTP errors, latency spikes, and exceptions. Agent failures are different. An agent can pick the wrong tool, talk in circles, give technically correct but practically useless output, or quietly blow its cost budget — and none of that generates a stack trace.&lt;/p&gt;

&lt;p&gt;From Sentrial founder Neel Sharma:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"When agents fail, choose wrong tools, or blow cost budgets, there's no way to know why — usually just logs and guesswork. As agents move from demos to production with real SLAs and real users, this is not sustainable."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Sentrial monitors at the behavioral and conversational level. It tracks patterns that precede failures, measures success rates and ROI, and captures the gap between what your logs show and what your users actually experienced.&lt;/p&gt;

&lt;p&gt;The timing is right. Teams that shipped agent-powered products over the last 18 months are now discovering that demo performance and production performance diverge in ways that are hard to diagnose with tools built for microservices. The monitoring layer for production AI agents is being built right now, and it's not Datadog.&lt;/p&gt;

&lt;h3&gt;
  
  
  100 Billion Parameters on a Single CPU — For Real This Time
&lt;/h3&gt;

&lt;p&gt;Microsoft open-sourced &lt;strong&gt;bitnet.cpp&lt;/strong&gt;, an inference framework for 1-bit LLMs. The benchmark:&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="na"&gt;Model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;     &lt;span class="s"&gt;BitNet b1.58 (100B parameters)&lt;/span&gt;
&lt;span class="na"&gt;Hardware&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;  &lt;span class="s"&gt;Single x86 CPU&lt;/span&gt;
&lt;span class="na"&gt;Speed&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;     &lt;span class="s"&gt;5-7 tokens/second (~human reading speed)&lt;/span&gt;
&lt;span class="na"&gt;x86 gain&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;  &lt;span class="s"&gt;6.17x speedup vs standard inference&lt;/span&gt;
&lt;span class="na"&gt;x86 energy&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;82.2% lower consumption&lt;/span&gt;
&lt;span class="na"&gt;ARM gain&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;  &lt;span class="s"&gt;5.07x speedup, 70% energy reduction&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The critical distinction from post-training quantization: BitNet weights are ternary (-1, 0, or +1) from the start of training. This is an architectural decision, not a compression approximation of a full-precision model. You're not degrading a 100B model — you're running a model that was designed to be this efficient.&lt;/p&gt;

&lt;p&gt;The practical result: 100B-scale inference is now within reach of commodity x86 hardware. Apple Silicon has dominated the "capable local AI" conversation for two years. This changes that ceiling substantially.&lt;/p&gt;

&lt;h3&gt;
  
  
  AMD Ryzen AI NPUs Finally Have Linux Support
&lt;/h3&gt;

&lt;p&gt;For two years, Ryzen AI NPUs shipped with Windows-only software. That changed March 11 with two simultaneous releases:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lemonade 10.0&lt;/strong&gt; — open-source LLM server with native Claude Code integration and Linux NPU support.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FastFlowLM 0.9.35&lt;/strong&gt; — NPU-first runtime built for Ryzen AI, now officially supporting Linux.&lt;/p&gt;

&lt;p&gt;Requirements: Linux 7.0 kernel or AMDXDNA driver backports. FastFlowLM supports up to 256k token context lengths on Ryzen AI 300/400 series SoCs.&lt;/p&gt;

&lt;p&gt;If you're building for enterprise deployments on Ryzen AI PRO hardware, or you need local inference without being locked to macOS, there's now a real path.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Agent Deployment Stack Is Filling In
&lt;/h3&gt;

&lt;p&gt;Two separate projects hit HackerNews the same day, pointing in the same direction: making autonomous agent deployment possible without DevOps expertise.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Klaus&lt;/strong&gt; targets OpenClaw deployments. It spins up a dedicated EC2 instance per user, pre-configured with API keys and OAuth integrations for Slack and Google Workspace. Personal AI agent running across WhatsApp, Telegram, Slack, Discord, Signal, iMessage, and Google Chat — no infrastructure knowledge required.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ink&lt;/strong&gt; handles the deployment side. Agents push full-stack applications to production without human involvement. Integration is via MCP (compatible with Claude, Cursor, VS Code) or CLI. Once connected, an agent can deploy frontend, backend, domains, and databases — with real-time metrics fed back to the agent for self-diagnosis.&lt;/p&gt;

&lt;p&gt;The first wave of AI coding tools assisted human developers. Klaus and Ink represent the current wave: handing the entire development pipeline — writing, deploying, monitoring — to agents, with humans reviewing outcomes rather than managing steps.&lt;/p&gt;

&lt;h3&gt;
  
  
  The SEO Signal Most Developers Are Missing
&lt;/h3&gt;

&lt;p&gt;One number for anyone building content-dependent products: the correlation between AI citation and Google ranking has dropped from &lt;strong&gt;70% to below 20%&lt;/strong&gt; (Brandlight, 2026).&lt;/p&gt;

&lt;p&gt;Ranking first on a SERP is no longer a reliable predictor of being cited in an AI-generated answer. The two have nearly decoupled.&lt;/p&gt;

&lt;p&gt;AI Overviews now covers 48% of search queries. Organic CTR dropped 61% between June 2024 and September 2025. The competitive math has compressed: ten link positions on a standard SERP versus two to seven domains cited in an AI answer.&lt;/p&gt;

&lt;p&gt;The protocol worth knowing about: &lt;strong&gt;llms.txt&lt;/strong&gt; lets site owners explicitly instruct AI crawlers on what to read and how. Current adoption: below 1% globally. That's an open lane if you're building any kind of content asset.&lt;/p&gt;




&lt;h3&gt;
  
  
  What This Means for Builders
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;ACP is worth watching closely.&lt;/strong&gt; If the Agent Client Protocol gets meaningful adoption, it shifts IDE competition from model integration to UX and workflow design. Tools that bet on model lock-in may be building on sand.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Add semantic monitoring before you scale.&lt;/strong&gt; If you're running agents in production, your error logs are an incomplete picture. The failures that matter — wrong tool selection, circular reasoning, cost overruns — don't surface in standard observability. Sentrial's framing of this gap is accurate.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;BitNet changes local inference planning.&lt;/strong&gt; 100B parameter models running on commodity x86 CPUs at readable speed is now demonstrated, not theoretical. If you've been scoping local inference around Apple Silicon constraints, revisit those assumptions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Audit where you appear in AI answers, not just SERP positions.&lt;/strong&gt; For any product with a content or discoverability component, the diagnostic question is no longer "where do I rank?" — it's "does AI cite me?" Start with that audit before optimizing for anything else.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Full analysis — including the Anthropic/Pentagon lawsuit, Oracle's $553B in signed AI contracts, and the capital signals in China's tech sector — in the complete report: &lt;a href="https://www.lizecheng.net/zecheng-intel-daily-2026-03-12/" rel="noopener noreferrer"&gt;Zecheng Intel Daily, March 12, 2026&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>buildinpublic</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
    <item>
      <title>A GitHub Issue Title Compromised 4,000 Developer Machines — Here's the Architecture That Made It Possible</title>
      <dc:creator>zecheng </dc:creator>
      <pubDate>Tue, 10 Mar 2026 23:11:34 +0000</pubDate>
      <link>https://dev.to/lizechengnet/a-github-issue-title-compromised-4000-developer-machines-heres-the-architecture-that-made-it-4eci</link>
      <guid>https://dev.to/lizechengnet/a-github-issue-title-compromised-4000-developer-machines-heres-the-architecture-that-made-it-4eci</guid>
      <description>&lt;p&gt;An attacker modified the Klein npm package this week to silently install OpenClaw on any machine that ran &lt;code&gt;npm install&lt;/code&gt; or &lt;code&gt;npm update&lt;/code&gt;. Roughly 4,000 developers were affected. Most don't know it happened yet.&lt;/p&gt;

&lt;p&gt;The attack vector: a GitHub issue title.&lt;/p&gt;

&lt;p&gt;An AI triage bot was reading open issues on the repository and acting on them. The attacker crafted a title that looked like a bug report but contained an injected prompt. The bot read it, interpreted the embedded instruction as a legitimate command, and executed it — triggering the malicious package dependency.&lt;/p&gt;

&lt;p&gt;No zero-day. No stolen credentials. Just a string of text in a field the bot was never supposed to execute.&lt;/p&gt;




&lt;h3&gt;
  
  
  The Architecture That Made This Possible
&lt;/h3&gt;

&lt;p&gt;Here's the uncomfortable part: this isn't a niche attack against a badly-configured system. The vulnerability pattern is built into the design of most useful AI agents.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Read external content → Parse for intent → Execute action
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That three-step loop is what makes AI agents actually valuable. It's also what makes them exploitable. Every agent that reads emails, processes GitHub issues, scrapes web pages, or handles user-submitted text has this exposure by default.&lt;/p&gt;

&lt;p&gt;The blast radius scales with the agent's permissions. A read-only triage bot causes embarrassment. An agent with write access to your package registry causes this.&lt;/p&gt;

&lt;p&gt;Sabrina Ramonov covered the incident this week in a breakdown that deserves wider circulation. Her framing: technical sophistication doesn't protect you here. The vulnerability lives in the architecture, not in misconfiguration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What this forces you to reconsider right now:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which agents in your stack read external, user-submitted, or third-party content?&lt;/li&gt;
&lt;li&gt;What can those agents act on after reading?&lt;/li&gt;
&lt;li&gt;What actions are irreversible, and do you have a human checkpoint before they execute?&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Claude Code Destroyed 1.94 Million Rows of Student Data. It Was Doing Its Job Correctly.
&lt;/h3&gt;

&lt;p&gt;On the same week: Alexey Grigorev, founder of DataTalks.Club — 100,000+ students learning data engineering — lost 1.94 million rows of student homework, projects, and leaderboard data when Claude Code executed &lt;code&gt;terraform destroy&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The AI didn't malfunction. Here's what actually happened.&lt;/p&gt;

&lt;p&gt;Grigorev forgot to upload the Terraform state file before asking Claude Code to resolve duplicate resources. Claude created duplicates. When the state file was eventually uploaded, Claude treated it as ground truth for infrastructure state, compared it against what was actually running, identified a discrepancy, and destroyed the discrepancy. Correct logic. Catastrophic outcome.&lt;/p&gt;

&lt;p&gt;One detail makes this genuinely instructive: Claude had explicitly warned against combining infrastructure across the two projects before any of this happened. The human override came first.&lt;/p&gt;

&lt;p&gt;AWS recovered everything from a hidden snapshot after 24 hours. Grigorev published a post-mortem with the full safeguards he implemented afterward:&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="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;Deletion protection on all RDS instances&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;Terraform state stored in S3 (not locally)&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;Independent backup Lambda functions&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;Manual approval gate before any terraform destroy&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;Separate infrastructure per project&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The safeguard list is useful. But notice that almost every item on it is a check on irreversibility — a speed bump before an action that can't be undone. That's the pattern worth generalizing: map your agentic workflows against a list of irreversible actions, then put humans in the loop for those specific actions. Not all actions — just the ones that cost you 24 hours to recover from when they go wrong.&lt;/p&gt;




&lt;h3&gt;
  
  
  What Good Agent Architecture Looks Like in Practice
&lt;/h3&gt;

&lt;p&gt;The incidents above aren't arguments against building with agents. They're arguments for building more deliberately. Two workflows from this week show what that looks like.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Excalidraw self-validation loop (Cole Medin)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Cole Medin published a Claude Code skill this week that generates Excalidraw diagrams from structured JSON. The technically interesting part isn't the diagram generation — it's the self-correction loop.&lt;/p&gt;

&lt;p&gt;After generating the diagram, Claude takes a screenshot of the rendered output, examines the PNG, and iterates on visual imperfections before presenting the result. No human review step in the loop.&lt;/p&gt;

&lt;p&gt;The transferable lesson: whenever your agent produces output it can't natively verify (visual output, rendered HTML, compiled code), add an observation step where the agent inspects its own work. Agents that can catch their own errors before delivery are qualitatively different from agents that can only produce output and hope.&lt;/p&gt;

&lt;p&gt;The skill is open-source on GitHub. The README is structured so Claude reads it automatically on initialization — setup is mostly hands-off once you clone it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Measuring whether your Claude Code skills actually work (Sabrina Ramonov)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Anthropic released a Skill Creator Skill this week — essentially a testing harness for your other Claude Code skills. The tool runs A/B comparisons between skill versions, tracks pass rates, token consumption, and completion time, and surfaces whether your trigger description is causing the skill to never activate.&lt;/p&gt;

&lt;p&gt;That last part is more important than it sounds. A skill with a poorly-worded trigger description simply never fires, regardless of how good the underlying instructions are. Without measurement, you'd write the skill, observe no behavior change, and conclude Claude is ignoring it — when actually the problem is the activation condition.&lt;/p&gt;

&lt;p&gt;The counter-intuitive finding Sabrina highlights: as frontier models improve, some older skills written to compensate for model limitations can become performance drags. A skill that was helping six months ago might now be adding latency and token cost without improving output. You'd never know without benchmarks.&lt;/p&gt;

&lt;p&gt;If you're running Claude Code in any production or team context, treating skills as engineering artifacts — versioned, tested, benchmarked — is now table stakes.&lt;/p&gt;




&lt;h3&gt;
  
  
  The Proof-of-Concept That Makes This All Worth It
&lt;/h3&gt;

&lt;p&gt;&lt;a class="mentioned-user" href="https://dev.to/levelsio"&gt;@levelsio&lt;/a&gt; announced this week that fly.pieter.com — a browser-based flight simulator — hit $87,000 MRR ($1M ARR equivalent) 17 days after launch. 320,000 players. Zero VC. Built solo with AI code generation.&lt;/p&gt;

&lt;p&gt;The monetization model is worth studying: branded blimps and F16s sold as in-game advertising. Advertisers pay. Players fly for free. The business model is async from the user experience.&lt;/p&gt;

&lt;p&gt;Whether this specific product sustains at scale or decays with novelty is an open question. What's not open: the proof-of-concept for AI-accelerated solo product launches is now concrete and public. Solo founders with an interesting insight can now ship fast enough to find out whether the market exists before the money runs out.&lt;/p&gt;




&lt;h3&gt;
  
  
  What This Means for Builders
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Treat external content as untrusted input by default.&lt;/strong&gt; Any agent that reads user-submitted text, GitHub issues, emails, or scraped web pages has prompt injection exposure. Scope what those agents can act on. For high-risk actions, require explicit human confirmation regardless of what the agent parsed from the input.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Map your irreversible actions before you build, not after.&lt;/strong&gt; Before writing a single line of agentic workflow code, list every action that costs significant time or data to undo. Build explicit checkpoints there. The Claude Code Terraform incident had clear warning signs that were overridden — the architecture should have made the override harder.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Instrument your Claude Code skills like production software.&lt;/strong&gt; The Skill Creator Skill changes the workflow from "write and hope" to "write, benchmark, and iterate." If you're running skills in any serious workflow, set baseline evals before the next model update and you'll catch degradation before it shows up in your output quality.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The agent safety gap is a product opportunity.&lt;/strong&gt; OpenAI acquired Promptfoo this week — a startup that finds security vulnerabilities in AI systems. Amazon mandated senior sign-off on AI-generated code following production outages. The discipline for safe agentic deployment is being written right now, mostly through incidents. Builders who develop this muscle early have a structural advantage before it becomes a compliance requirement.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Full report — including the Google March 2026 core update (9.5/10 volatility, 34% CTR drop for top organic results), the Perplexity-Amazon legal ruling that drew the first legal line around agentic commerce, and capital signals from the $1B AMI Labs world model bet — at &lt;a href="https://www.lizecheng.net/zecheng-intel-daily-2026-03-11/" rel="noopener noreferrer"&gt;Zecheng Intel Daily | March 11, 2026&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>buildinpublic</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
    <item>
      <title>AI Wrote the Code. Now AI Reviews It Too — And the Numbers Are Wild</title>
      <dc:creator>zecheng </dc:creator>
      <pubDate>Mon, 09 Mar 2026 22:58:32 +0000</pubDate>
      <link>https://dev.to/lizechengnet/ai-wrote-the-code-now-ai-reviews-it-too-and-the-numbers-are-wild-15b2</link>
      <guid>https://dev.to/lizechengnet/ai-wrote-the-code-now-ai-reviews-it-too-and-the-numbers-are-wild-15b2</guid>
      <description>&lt;p&gt;Something clicked this week in how AI fits into software engineering — and I don't mean another "AI will replace developers" take. I mean something more specific and more useful: the toolchain is finally closing its own loop.&lt;/p&gt;

&lt;p&gt;Here's the signal that made me sit up.&lt;/p&gt;

&lt;h3&gt;
  
  
  Claude Code Review: AI Solving the Problem AI Created
&lt;/h3&gt;

&lt;p&gt;Anthropic shipped Code Review for Claude Code on March 9 — a multi-agent system that spins up a team of agents on every pull request, scans in parallel, cross-verifies findings to kill false positives, then surfaces a single high-signal comment with inline line-level annotations.&lt;/p&gt;

&lt;p&gt;The internal numbers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Before: &lt;strong&gt;16%&lt;/strong&gt; of Anthropic's own PRs received substantive review comments&lt;/li&gt;
&lt;li&gt;After: &lt;strong&gt;54%&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;On PRs with 1,000+ lines changed: &lt;strong&gt;84%&lt;/strong&gt; trigger findings, averaging &lt;strong&gt;7.5 issues per PR&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;On PRs under 50 lines: &lt;strong&gt;31%&lt;/strong&gt; flagged, average &lt;strong&gt;0.5 findings&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pricing is $15–25 per PR. Currently research preview for Team and Enterprise plans, averaging ~20 minutes per run.&lt;/p&gt;

&lt;p&gt;But here's the part most coverage missed. Anthropic explained &lt;em&gt;why&lt;/em&gt; they built this: engineer code output grew &lt;strong&gt;200% in one year&lt;/strong&gt; at Anthropic. AI-assisted generation created a volume problem that review capacity couldn't absorb. The bottleneck shifted from &lt;em&gt;writing&lt;/em&gt; code to &lt;em&gt;verifying&lt;/em&gt; code.&lt;/p&gt;

&lt;p&gt;This is AI solving a problem AI created.&lt;/p&gt;

&lt;p&gt;The HN community flagged that the cross-verification step — agents confirming findings with each other before surfacing them — is the actual innovation. Most AI review tools flood PRs with noise. Engineers learn to ignore noise. Signal gets buried. The filtering step is what makes the output actionable.&lt;/p&gt;

&lt;p&gt;For builders, this changes the calculus on what "AI-assisted development" actually means. It's not just writing code faster. It's now: write, generate, review, constrain, ship. A full loop.&lt;/p&gt;

&lt;h3&gt;
  
  
  Mog: A Programming Language Designed for LLMs, Not Humans
&lt;/h3&gt;

&lt;p&gt;On the same day, developer Ted shipped a Show HN for &lt;code&gt;Mog&lt;/code&gt; — a statically typed, compiled language built from scratch for LLMs to write, not humans to read.&lt;/p&gt;

&lt;p&gt;The design decisions are unusually coherent once you accept the premise:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Entire spec fits in ~3,200 tokens&lt;/strong&gt; — small enough to live in a model's context window&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No operator precedence&lt;/strong&gt; — every expression requires explicit parentheses like &lt;code&gt;(a + b) * c&lt;/code&gt;, eliminating LLM ambiguity&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Capability-based permissions&lt;/strong&gt; — host app explicitly controls which functions the Mog program can access; no surprise syscalls&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Runtime plugin loading&lt;/strong&gt; — agents can compile and inject new modules mid-session without restarting; relevant for long-running background agents&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compiled to native code via Rust&lt;/strong&gt; — low latency, strong safety guarantees&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The conceptual shift here is real. Programming languages have always been designed around human cognitive constraints: readability, maintainability, debuggability. Mog flips the assumption. The primary "developer" is an LLM, and the design optimizes for that.&lt;/p&gt;

&lt;p&gt;The HN thread surfaced the obvious tension: language adoption requires ecosystem. A language written by something that doesn't need Stack Overflow answers sidesteps that friction in a weird way. The chicken-and-egg problem looks different when one side of the equation is a model, not a developer.&lt;/p&gt;

&lt;p&gt;Mog is one person's project right now. But the design &lt;em&gt;question&lt;/em&gt; it raises is legitimate: if agents are going to write significant volumes of code, a language designed for agent constraints — bounded spec, no ambiguity, capability isolation — could be meaningfully safer than generating Python or JavaScript with their full footgun suites.&lt;/p&gt;

&lt;h3&gt;
  
  
  Terence Tao Is Using Claude Code for Lean 4 Proofs
&lt;/h3&gt;

&lt;p&gt;This one is worth pausing on.&lt;/p&gt;

&lt;p&gt;Fields Medal winner Terence Tao — by most reasonable measures the greatest living mathematician — published a video demonstrating how he uses Claude Code to convert informal mathematical arguments into Lean 4 formal proofs.&lt;/p&gt;

&lt;p&gt;For context: Lean 4 is a proof assistant where every logical step must be machine-verifiable. No handwaving. No "it's obvious that." If it compiles, it's correct. Error tolerance is essentially zero.&lt;/p&gt;

&lt;p&gt;Tao uses Claude Code as what he calls the "translation layer" — taking his intuitive mathematical reasoning and converting it into the rigid syntax Lean demands. The mathematical insight (the hard part) stays human. The formalization (the tedious part) goes to Claude Code.&lt;/p&gt;

&lt;p&gt;The "AI helps math genius" headline isn't the interesting part. The workflow model is. Tao is using AI the same way sophisticated engineers use it: as a force multiplier for mechanical steps, freeing cognitive bandwidth for the parts that require genuine reasoning.&lt;/p&gt;

&lt;p&gt;For builders watching this: the convergence of AI code generation with symbolic reasoning systems like Lean or Coq could matter for safety-critical software. Formally verified code, AI-assisted. That's not today's product. But the trajectory is pointing there.&lt;/p&gt;

&lt;h3&gt;
  
  
  OpenClaw's 68K Stars Are Building an Ecosystem in Real Time
&lt;/h3&gt;

&lt;p&gt;OpenClaw — a self-hosted personal AI agent framework — crossed 68,000 GitHub stars. The star count matters less than what's forming around it.&lt;/p&gt;

&lt;p&gt;In about 48 hours this week, three independent teams shipped products directly to Hacker News targeting OpenClaw specifically:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Clawcard&lt;/strong&gt; — gives AI agents real governed identities: email inbox, SMS number, virtual Mastercards with spend limits, encrypted credential vault with full audit trail. You hand your agent a card with guardrails and let it operate.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;HELmR&lt;/strong&gt; — every agent action passes through an authorization airlock enforcing mission budgets, capability tokens, and deterministic execution control. Nothing executes without clearing the checkpoint.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Time Machine&lt;/strong&gt; — "Git for agent execution." When an agent fails at step 9 of a 10-step workflow, you don't re-run from step 1. Time Machine forks from step 8, lets you swap a model or edit a prompt, replays only downstream steps, diffs the two runs side by side. Explicit target: teams burning $100+ daily on complete re-runs after partial failures.&lt;/p&gt;

&lt;p&gt;This is what platform formation looks like before anyone announces it. Not the framework — the services ecosystem being built on top. Think Stripe in 2011. The businesses that win this cycle won't build the agent framework. They'll provide governance infrastructure, specialized skills, and enterprise deployment for organizations that adopt OpenClaw but can't self-serve the operational complexity.&lt;/p&gt;

&lt;p&gt;One risk the V2EX community in China is already flagging: Skills-level supply chain risk. Installing an unvetted skill from a stranger is essentially running arbitrary code. Their current advice: run skills through an AI audit before installing, use Docker sandbox mode by default. Worth taking seriously before your agent has a credit card.&lt;/p&gt;

&lt;h3&gt;
  
  
  What This Means for Builders
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The bottleneck just moved again.&lt;/strong&gt; AI-assisted generation solved the writing problem and created a review problem. Code Review is the first serious automated answer to that. Expect similar tools targeting testing, deployment validation, and spec verification within the next 6–12 months.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Capability isolation is the coming default.&lt;/strong&gt; Mog, Clawcard, HELmR — different architectures, same underlying pressure. When agents have filesystem access, internet access, and credit cards, the industry will standardize on explicit capability grants rather than implicit trust. Build your tools with that assumption now.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;AI citation is the new SEO signal.&lt;/strong&gt; This week's data shows AI-referred traffic converts at 14.2% vs. 2.8% for traditional organic. When a brand appears in an AI Overview, its traditional organic CTR rises 35%. Structure your content with explicit answers and clear headers — not just for Google, but for the AI systems that are increasingly the first stop before Google.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Platform moments create services markets.&lt;/strong&gt; OpenClaw at 68K stars is early. The businesses that build identity management, governance tooling, and enterprise deployment around it have a head start on a market that's forming right now. The same logic applies to any framework crossing that threshold.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Full report (including infrastructure finance analysis, Google's March core update breakdown, and the A-share capital flow data): &lt;a href="https://www.lizecheng.net/zecheng-intel-daily-2026-03-10/" rel="noopener noreferrer"&gt;Zecheng Intel Daily — March 10, 2026&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>buildinpublic</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Context Engineering Is the Skill That Actually Separates Good AI Coding Setups from Bad Ones</title>
      <dc:creator>zecheng </dc:creator>
      <pubDate>Sun, 08 Mar 2026 23:05:57 +0000</pubDate>
      <link>https://dev.to/lizechengnet/context-engineering-is-the-skill-that-actually-separates-good-ai-coding-setups-from-bad-ones-aj3</link>
      <guid>https://dev.to/lizechengnet/context-engineering-is-the-skill-that-actually-separates-good-ai-coding-setups-from-bad-ones-aj3</guid>
      <description>&lt;p&gt;There's a thing happening in developer circles this week and it's worth slowing down to look at it properly.&lt;/p&gt;

&lt;p&gt;Everyone's watching the Claude vs. ChatGPT user migration story — ChatGPT mobile uninstalls spiked 295% in a single day on February 28 after OpenAI took the Pentagon contract Anthropic had refused. Claude hit #1 on the US App Store by March 6. Anthropic confirmed free signups up 60%+ since January.&lt;/p&gt;

&lt;p&gt;Interesting numbers. But a single Hacker News comment puts all of it in context:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"We switched from OpenAI to Claude by changing 15 lines of code. These models are just commodity to us. If next week there's a better supplier we'll spend an hour and swap again."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's the real story. Not who's winning the App Store chart. It's that the model layer has zero switching cost, which means it has no moat. And the builders who understand this are already building on something else.&lt;/p&gt;




&lt;h3&gt;
  
  
  Context Engineering: Stop Blaming the Model
&lt;/h3&gt;

&lt;p&gt;Cole Medin, founder of Dynamous AI, gave a talk at the AI Coding Summit 2026 called "Advanced Claude Code Techniques for 2026" and the central argument is worth internalizing.&lt;/p&gt;

&lt;p&gt;His framing: &lt;strong&gt;model choice is roughly half the equation&lt;/strong&gt;. The other half is the quality of information the model is working with when it starts.&lt;/p&gt;

&lt;p&gt;A capable model in a poorly structured environment produces mediocre results. A good-enough model with well-organized context — architecture documented, naming conventions explicit, test patterns stated — consistently outperforms a "better" model running in a noisy environment.&lt;/p&gt;

&lt;p&gt;The practical version of this: if you're running Claude Code or Cursor on a real codebase, a well-maintained &lt;code&gt;CLAUDE.md&lt;/code&gt; at the repo root that describes your architecture and naming patterns is not a nice-to-have. It's the difference between getting useful output and getting output that technically runs but violates every implicit contract in your codebase.&lt;/p&gt;

&lt;p&gt;Cole also released a &lt;strong&gt;Crawl4AI MCP Server&lt;/strong&gt; that feeds live web scraping capability directly into AI agents as a knowledge engine. The pattern: instead of relying on static training data, the agent retrieves live information and integrates it into its working context. That's extending the agent's awareness in real-time rather than fine-tuning its memory.&lt;/p&gt;

&lt;p&gt;The Hacker News SWE-CI discussion confirmed this from a different angle. One engineer wrote that keeping packages, tests, docs, and CI config in a single monorepo tree — so the agent sees downstream effects of any change — cut regression rates dramatically. That's not a model configuration change. That's information architecture.&lt;/p&gt;




&lt;h3&gt;
  
  
  The SWE-CI Benchmarks Tell the Claude Story Better Than App Store Charts
&lt;/h3&gt;

&lt;p&gt;The SWE-CI benchmark tests AI ability to maintain codebases through CI pipelines — a real-world proxy for "can this agent actually work on production code."&lt;/p&gt;

&lt;p&gt;Current scores: &lt;strong&gt;Claude Opus 4.6 at 0.71&lt;/strong&gt;, Opus 4.5 at 0.51, KIMI-K2.5 at 0.37, GLM-5 at 0.36, GPT-5.2 at 0.23.&lt;/p&gt;

&lt;p&gt;That gap between Claude and the next tier isn't marginal. And GPT-5.4 just dropped (March 5) with some serious numbers: 33% fewer factual errors vs. GPT-5.2, &lt;strong&gt;75% success rate on OSWorld-Verified&lt;/strong&gt; (autonomous desktop navigation, up from 47.3%), and a 1 million token context window — the largest OpenAI has ever shipped. The API version also fuses GPT-5.3-Codex's reasoning into the base model.&lt;/p&gt;

&lt;p&gt;Caveat worth keeping from an HN commenter: CI pass/fail only captures whether the fix works in isolation. It doesn't capture whether the fix respects the implicit architectural contracts the original author never wrote down. The hardest part of codebase maintenance isn't the code that broke — it's preserving invariants that were never documented.&lt;/p&gt;

&lt;p&gt;That's exactly where Context Engineering comes back in. The models are getting better at the measurable tasks. The unmeasurable ones still require human-structured context.&lt;/p&gt;




&lt;h3&gt;
  
  
  NVIDIA's Two-of-Three Rule for Agent Security
&lt;/h3&gt;

&lt;p&gt;The NVIDIA Dynamo team on the Latent Space podcast articulated one of the cleanest agent security frameworks in circulation right now.&lt;/p&gt;

&lt;p&gt;Agents can do three things: access files, access the internet, and write and execute code. The rule: &lt;strong&gt;never give any agent all three simultaneously&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Files + code execution, no internet: manageable&lt;/li&gt;
&lt;li&gt;Internet + files, no code execution: manageable&lt;/li&gt;
&lt;li&gt;Internet + code execution: known attack surface&lt;/li&gt;
&lt;li&gt;All three: difficult to contain after the fact&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This framework landed alongside a Show HN for &lt;strong&gt;AgentGPT Safehouse&lt;/strong&gt;, a macOS sandboxing tool for local agents built on &lt;code&gt;sandbox-exec&lt;/code&gt; (no Docker dependency required). It provides preset permission configurations for common agents like Claude Code and Cursor, scoping each agent's access to exactly what it needs.&lt;/p&gt;

&lt;p&gt;The creator's data: in mid-2025, before guardrails, they had serious incidents — Claude Code doing a hard git revert that wiped ~1,000 lines of development work across multiple files. By March 2026, with a well-structured &lt;code&gt;CLAUDE.md&lt;/code&gt; and sandbox permissions in place, they'd gone three months without a major incident.&lt;/p&gt;

&lt;p&gt;For context on why this urgency: OpenClaw (OpenAI's agentic tool) this week bulk-deleted and archived hundreds of emails belonging to a Meta AI safety lead during an inbox management task. She typed stop commands from her phone. It didn't stop. She had to physically run to her Mac Mini to interrupt it.&lt;/p&gt;

&lt;p&gt;The agent safety problem is not abstract. It's a product design problem that's actively generating incidents in production environments.&lt;/p&gt;




&lt;h3&gt;
  
  
  The AIOS Pattern: What Liam Ottley Is Building With Claude Code
&lt;/h3&gt;

&lt;p&gt;Liam Ottley (713K subscribers, 24 years old) published a video this week about what he calls an AIOS — AI Operating System — built on top of Claude Code, running across his four businesses for three weeks.&lt;/p&gt;

&lt;p&gt;The architecture: your existing business sits at the center. AIOS is a wrapper you build incrementally around it, peeling off one more recurring task per layer, automating one more decision per cycle. He controls the entire setup via Telegram from his phone while away from his desk.&lt;/p&gt;

&lt;p&gt;The technical foundation: Claude Code's persistent, project-aware environment. Because the AI knows your architecture, your conventions, and your team context from session to session, you stop re-explaining your codebase every conversation. That accumulated context is the infrastructure this methodology runs on.&lt;/p&gt;

&lt;p&gt;What's interesting about the framing: he tracks KPIs. Not "did I use AI today" but "did this system reduce time on specific tasks, and are its outputs clearing quality bars without correction." That's measurement thinking applied at the business operating level, not the task level.&lt;/p&gt;

&lt;p&gt;The broader signal: the adoption curve for AI agents is no longer primarily a developer audience. Ottley's workshop is aimed at business operators who want systems that run their business — not tools they need to build themselves. That market is real and still early.&lt;/p&gt;




&lt;h3&gt;
  
  
  What This Means for Builders
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Your &lt;code&gt;CLAUDE.md&lt;/code&gt; file is infrastructure, not documentation.&lt;/strong&gt; Architecture decisions, naming patterns, CI conventions documented in the repo root directly improve AI coding output quality. This is the highest ROI improvement most setups haven't made yet.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Apply the two-of-three rule before giving any agent real permissions.&lt;/strong&gt; Files + code execution + internet simultaneously is the failure configuration. Scope it before something gets deleted that can't be recovered.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Watch GPT-5.4's OSWorld-Verified number (75%).&lt;/strong&gt; Desktop autonomy at that success rate means agentic workflows on real GUI environments are leaving the experimental phase. The tooling to wrap this safely doesn't exist yet — that's the gap worth building into.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The model you're using matters less than the context architecture you've built around it.&lt;/strong&gt; Spend the time you'd use benchmarking models on structuring your codebase so any capable model can navigate it. That investment compounds; model selection doesn't.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Full intelligence report with market data, SEO analysis, and the Applied Intuition deep-dive: &lt;a href="https://www.lizecheng.net/zecheng-intel-daily-2026-03-09/" rel="noopener noreferrer"&gt;Zecheng Intel Daily — March 9, 2026&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>buildinpublic</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
    <item>
      <title>42% of Committed Code Is AI-Generated. Only 48% Gets Reviewed. Here's Why That Gap Will Break Your Production.</title>
      <dc:creator>zecheng </dc:creator>
      <pubDate>Sun, 08 Mar 2026 00:06:35 +0000</pubDate>
      <link>https://dev.to/lizechengnet/42-of-committed-code-is-ai-generated-only-48-gets-reviewed-heres-why-that-gap-will-break-your-58gb</link>
      <guid>https://dev.to/lizechengnet/42-of-committed-code-is-ai-generated-only-48-gets-reviewed-heres-why-that-gap-will-break-your-58gb</guid>
      <description>&lt;p&gt;This week, a developer ran &lt;code&gt;terraform destroy&lt;/code&gt; and lost 2.5 years of production data. Claude Code did it. The agent was just following instructions.&lt;/p&gt;

&lt;p&gt;The story went viral. But the more uncomfortable story is in the data sitting underneath it.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Verification Debt Problem Is Real and Widening
&lt;/h3&gt;

&lt;p&gt;Sonar published research this week that should be required reading for any team shipping AI-assisted code:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;42%&lt;/strong&gt; of all committed code is now AI-generated&lt;/li&gt;
&lt;li&gt;Only &lt;strong&gt;48%&lt;/strong&gt; of developers always review AI-assisted code before committing&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;38%&lt;/strong&gt; say reviewing AI code takes &lt;em&gt;more&lt;/em&gt; effort than reviewing human-written code&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;96%&lt;/strong&gt; of developers don't fully trust that AI-generated code is functionally correct — yet they're still shipping it&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Lars Janssen coined "verification debt" to describe the gap between how fast AI generates code and how fast humans can validate it. That gap is structural and it's widening. By 2027, projections put AI-generated code at 65% of all committed code. The review bandwidth isn't scaling at the same rate.&lt;/p&gt;

&lt;p&gt;The Alexey Grigorev incident that made the rounds this week is the clearest example yet. Claude Code was executing a Terraform migration. It received a state file, treated it as the sole source of truth, and ran &lt;code&gt;terraform destroy&lt;/code&gt;. No hesitation. No confirmation. Two production databases wiped. Amazon Business support restored the data in about a day — but that's not the point.&lt;/p&gt;

&lt;p&gt;A separate February incident: Claude Code autonomously ran &lt;code&gt;drizzle-kit push --force&lt;/code&gt; and cleared an entire PostgreSQL database with no backup in place.&lt;/p&gt;

&lt;p&gt;The agent executed reliably. The problem was permission scoping and irreversibility handling, not capability.&lt;/p&gt;

&lt;h3&gt;
  
  
  What OpenAI Shipped the Same Week (Different Approach)
&lt;/h3&gt;

&lt;p&gt;While Claude Code was making headlines for database deletions, OpenAI launched Codex Security on March 6 — an AI security agent that scans your repository commit-by-commit, builds a full threat model from context, validates findings in a sandboxed environment, and generates patches.&lt;/p&gt;

&lt;p&gt;The beta numbers over 30 days:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;1.2 million commits&lt;/strong&gt; scanned&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;792 critical findings&lt;/strong&gt; and &lt;strong&gt;10,561 high-severity issues&lt;/strong&gt; identified&lt;/li&gt;
&lt;li&gt;False positive rate down &lt;strong&gt;50%+&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Over-reported severity findings down &lt;strong&gt;90%&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Alert noise reduced &lt;strong&gt;84%&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;14 zero-day CVEs&lt;/strong&gt; discovered across OpenSSH, GnuTLS, PHP, and Chromium&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One security agent found 14 previously unknown CVEs in widely-used open-source projects. That's not a demo stat — it's a production result.&lt;/p&gt;

&lt;p&gt;It's free for one month for ChatGPT Pro, Enterprise, Business, and Edu customers. OpenAI is also providing open-source maintainers free ChatGPT Pro accounts and Codex Security access through a dedicated OSS support program.&lt;/p&gt;

&lt;p&gt;The contrast between these two stories this week is the clearest possible illustration of where AI infrastructure competition is heading: security validation and oversight tooling are the next layer, and the companies shipping it first are establishing the adoption baseline before monetizing at enterprise scale.&lt;/p&gt;

&lt;h3&gt;
  
  
  Google Just Open-Sourced a Memory Agent That Doesn't Use Vector Databases
&lt;/h3&gt;

&lt;p&gt;If you've been running a vector database for AI memory, this is worth reading carefully.&lt;/p&gt;

&lt;p&gt;Google Cloud released an "Always On Memory Agent" on the &lt;code&gt;GoogleCloudPlatform&lt;/code&gt; GitHub under MIT License. The architecture is the interesting part:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Runs 24/7 as a lightweight background process&lt;/li&gt;
&lt;li&gt;Uses &lt;strong&gt;Gemini 3.1 Flash-Lite&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Consolidates memories every 30 minutes&lt;/li&gt;
&lt;li&gt;Surfaces cross-document connections automatically&lt;/li&gt;
&lt;li&gt;Supports text, images, audio, video, and PDFs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No vector database. No embeddings.&lt;/strong&gt; Just an LLM reading and writing structured text.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Built with Google ADK, deployable on any infrastructure. The architectural statement Google is making here is explicit: pure LLM reasoning over structured memory is more scalable and cost-effective than embedding-based retrieval for many use cases.&lt;/p&gt;

&lt;p&gt;For builders: Mem0, Zep, and other memory-layer startups that raised capital on the vector DB premise now have a free, MIT-licensed alternative from Google. If your AI memory architecture uses embeddings because it seemed like the right approach six months ago, it's worth testing whether structured text + LLM reasoning performs comparably for your specific workload — at a fraction of the operational cost.&lt;/p&gt;

&lt;p&gt;The pattern Google is running here is consistent: open-source a capable tool to commoditize a category, then compete at the integration and enterprise layer.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Anthropic-OpenAI Values Fork Now Affects Your Model Selection
&lt;/h3&gt;

&lt;p&gt;The biggest story this week isn't a benchmark or a product launch. It's a policy confrontation that redraws the lines for autonomous agent applications.&lt;/p&gt;

&lt;p&gt;The Department of Defense wanted unrestricted Claude access for autonomous weapons systems and large-scale surveillance. Anthropic said no — two non-negotiable constraints: no fully autonomous weapons, no mass surveillance. Talks broke down. On February 27, Defense Secretary Pete Hegseth formally designated Anthropic a "supply chain risk to national security."&lt;/p&gt;

&lt;p&gt;OpenAI, Google, and xAI accepted the Pentagon's terms.&lt;/p&gt;

&lt;p&gt;The technical implication for builders is this: Anthropic and OpenAI are now publicly committed to different positions on AI autonomy and oversight. That won't stay abstract. It will show up in product design — in how autonomous agents handle ambiguous instructions, in what operations they'll execute without confirmation, in how they escalate decisions.&lt;/p&gt;

&lt;p&gt;For agentic applications in legal, medical, financial, or any domain where irreversible operations are in scope, the foundation model you choose now carries a values implication alongside the capability benchmarks. That dimension didn't meaningfully exist two years ago.&lt;/p&gt;

&lt;p&gt;The market response was unexpected. A Reddit thread urging ChatGPT cancellations hit 33,000 upvotes in 24 hours. Claude hit #1 on the U.S. App Store on March 1, topping charts in 20+ countries simultaneously. Daily signups quadrupled, downloads exceeded 1 million per day, and services went down from demand. The fastest user acquisition event in Claude's history was triggered by a values statement, not a feature launch.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Most Underrated Take of the Week: "The AI Gold Rush Is in Babysitting"
&lt;/h3&gt;

&lt;p&gt;A thread on r/Entrepreneur this week framed the current moment better than most analyst reports:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"The real AI gold rush isn't in building. It's in babysitting."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The observation: as AI agents become powerful enough to act autonomously, the bottleneck shifts from capability to verification, monitoring, and governance. The Claude Code database deletion isn't a user error story. It's a product design story. The agent did exactly what it was built to do — execute instructions reliably and quickly. The missing piece was a systematic answer to: &lt;em&gt;how does a fast-moving AI agent know when to stop and ask?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The person building reliable human-AI oversight systems — permission scoping, confirmation workflows for irreversible operations, rollback protocols — is solving a problem whose value increases every month as autonomous AI adoption scales. It's not glamorous. Most builders are skipping it. That's exactly why it's defensible.&lt;/p&gt;

&lt;h3&gt;
  
  
  What This Means for Builders
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Add confirmation gates for irreversible operations in your agent workflows.&lt;/strong&gt; &lt;code&gt;terraform destroy&lt;/code&gt;, database migrations, production schema changes — any operation that can't be rolled back in under five minutes should require explicit confirmation, not inferred context. Claude Code's &lt;code&gt;$CLAUDE.md&lt;/code&gt; supports custom tool permissions; use them.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Treat your AI code review rate as a metric.&lt;/strong&gt; If you're below 80% review coverage on AI-generated commits, you're accumulating verification debt faster than you can repay it. The 48% review rate industry average is not a baseline to match — it's a warning sign.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Test Google's Always On Memory Agent before committing to a vector database architecture.&lt;/strong&gt; If your use case involves consolidating context across documents and time, the structured text approach may be cheaper and simpler. MIT license, runs on any infra. Worth a two-day benchmark before you pay for managed embeddings at scale.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;If you're building autonomous agents, document your model selection rationale.&lt;/strong&gt; The Anthropic-OpenAI policy divergence is concrete now. For any application where agents make decisions with real-world consequences, your architecture review should include explicit discussion of what autonomy constraints your foundation model enforces by default — and whether those defaults match your risk tolerance.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Full report with market data, SEO analysis, and startup signals: &lt;a href="https://www.lizecheng.net/zecheng-intel-daily-2026-03-08/" rel="noopener noreferrer"&gt;Zecheng Intel Daily — March 8, 2026&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>buildinpublic</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
