<?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: claude</title>
    <description>The latest articles tagged 'claude' on DEV Community.</description>
    <link>https://dev.to/t/claude</link>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tag/claude"/>
    <language>en</language>
    <item>
      <title>This Week in AI Dev: The Week Agents Got Cheaper to Run (Week 28 of 2026)</title>
      <dc:creator>Rohit Raj</dc:creator>
      <pubDate>Tue, 07 Jul 2026 03:59:23 +0000</pubDate>
      <link>https://dev.to/rohit_raj_8c7902b7d37cf21/this-week-in-ai-dev-the-week-agents-got-cheaper-to-run-week-28-of-2026-cln</link>
      <guid>https://dev.to/rohit_raj_8c7902b7d37cf21/this-week-in-ai-dev-the-week-agents-got-cheaper-to-run-week-28-of-2026-cln</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Originally published on &lt;a href="https://rohitraj.tech/en/notes/ai-dev-week-2026-28" rel="noopener noreferrer"&gt;rohitraj.tech&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Week 28 of 2026 in AI dev tools: Claude Sonnet 5 does Opus-tier agentic work at $2/M input, Alibaba's page-agent controls any web app from one line of JavaScript, OmniRoute routes 231+ providers and cuts 15-95% of tokens, Ternlight ships a 7MB semantic-search model that runs in the browser, Google's TabFM predicts tabular data zero-shot, and Nvidia squeezes Qwen3.6-27B onto a single consumer GPU with NVFP4.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Read the full version with code samples, diagrams, and architecture details:&lt;/strong&gt; &lt;a href="https://rohitraj.tech/en/notes/ai-dev-week-2026-28" rel="noopener noreferrer"&gt;This Week in AI Dev: The Week Agents Got Cheaper to Run (Week 28 of 2026)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;More engineering notes: &lt;a href="https://rohitraj.tech/en/notes" rel="noopener noreferrer"&gt;rohitraj.tech/en/notes&lt;/a&gt;&lt;/p&gt;

</description>
      <category>dev</category>
      <category>tools</category>
      <category>week</category>
      <category>claude</category>
    </item>
    <item>
      <title>Open Source Project of the Day (#117): AgentsView — Session Analytics and Cost Tracking Across 30+ AI Coding Agents, Local-First, No Account Required</title>
      <dc:creator>WonderLab</dc:creator>
      <pubDate>Tue, 07 Jul 2026 02:29:41 +0000</pubDate>
      <link>https://dev.to/wonderlab/open-source-project-of-the-day-117-agentsview-session-analytics-and-cost-tracking-across-30-1cnd</link>
      <guid>https://dev.to/wonderlab/open-source-project-of-the-day-117-agentsview-session-analytics-and-cost-tracking-across-30-1cnd</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;"Gartner predicts: by 2028, AI coding costs will surpass the average developer salary as token consumption surges."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is article &lt;strong&gt;#117&lt;/strong&gt; in the &lt;em&gt;Open Source Project of the Day&lt;/em&gt; series. Today's project is &lt;strong&gt;AgentsView&lt;/strong&gt; — a local-first analytics and session management tool for AI coding agents.&lt;/p&gt;

&lt;p&gt;You use Claude Code for one task, Cursor for another module, Codex for automation scripts. Each tool has its own session history in its own directory in its own format. You want to know: how much did I spend on AI coding tools this month? Which agent do I use most? Which sessions are worth revisiting? There's no unified answer.&lt;/p&gt;

&lt;p&gt;AgentsView does one thing directly: index all agent session data into a local SQLite database, then provide a unified search interface, cost analytics, and dashboard. Single binary, runs locally, no account required, data stays on your machine.&lt;/p&gt;

&lt;h3&gt;
  
  
  What You'll Learn
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;AgentsView's architecture: Go + SQLite + Svelte, and why it's 100× faster than re-parsing raw files&lt;/li&gt;
&lt;li&gt;The 30+ supported agents and their session directory paths&lt;/li&gt;
&lt;li&gt;Practical CLI commands: daily cost summary, session list, statistics&lt;/li&gt;
&lt;li&gt;PostgreSQL team sync and DuckDB analytics mirror&lt;/li&gt;
&lt;li&gt;S3 support for multi-machine centralized session management&lt;/li&gt;
&lt;li&gt;Privacy design: DNS-rebinding protection, local binding, anonymous telemetry&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Prerequisites
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Regular user of Claude Code, Cursor, or similar AI coding tools&lt;/li&gt;
&lt;li&gt;Interest in tracking AI tool token costs&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Project Background
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What Is AgentsView?
&lt;/h3&gt;

&lt;p&gt;AgentsView is a local-first AI agent session analytics platform. The core logic: every AI coding tool writes session history to local files, in different formats, but all are files. AgentsView parses those files, builds a unified SQLite index, and provides a unified query and analytics interface.&lt;/p&gt;

&lt;p&gt;It doesn't change how any tool works. It doesn't insert a proxy layer. It just makes already-existing data queryable.&lt;/p&gt;

&lt;h3&gt;
  
  
  Author
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Author&lt;/strong&gt;: kenn-io&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a href="https://agentsview.io" rel="noopener noreferrer"&gt;agentsview.io&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;License&lt;/strong&gt;: MIT&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Project Stats
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;⭐ GitHub Stars: &lt;strong&gt;~4,000&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;🍴 Forks: ~305&lt;/li&gt;
&lt;li&gt;📄 License: MIT&lt;/li&gt;
&lt;li&gt;💻 Language: Go 81.1% / TypeScript 10.7% / Svelte 5.9% / Rust 1.1%&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Core Features
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Multi-Agent Auto-Discovery
&lt;/h3&gt;

&lt;p&gt;AgentsView automatically scans session directories for 30+ mainstream AI coding tools:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Agent&lt;/th&gt;
&lt;th&gt;Session Directory&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Claude Code&lt;/td&gt;
&lt;td&gt;&lt;code&gt;~/.claude/projects/&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Codex&lt;/td&gt;
&lt;td&gt;&lt;code&gt;~/.codex/sessions/&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gemini CLI&lt;/td&gt;
&lt;td&gt;&lt;code&gt;~/.gemini/&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cursor&lt;/td&gt;
&lt;td&gt;&lt;code&gt;~/.cursor/projects/&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Forge&lt;/td&gt;
&lt;td&gt;&lt;code&gt;~/.forge/&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Copilot CLI&lt;/td&gt;
&lt;td&gt;&lt;code&gt;~/.copilot/&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Devin CLI&lt;/td&gt;
&lt;td&gt;&lt;code&gt;~/.local/share/devin/&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OpenCode&lt;/td&gt;
&lt;td&gt;&lt;code&gt;~/.local/share/opencode/&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Zed&lt;/td&gt;
&lt;td&gt;&lt;code&gt;~/Library/Application Support/Zed/&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Aider&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;.aider.chat.history.md&lt;/code&gt; (opt-in)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;All directory paths are overridable via environment variables.&lt;/p&gt;

&lt;h3&gt;
  
  
  Full-Text Search
&lt;/h3&gt;

&lt;p&gt;Built on SQLite FTS5, indexes all session content across all agents. Looking for a Claude Code session from three weeks ago that discussed an 'auth module refactoring' approach? Full-text search in AgentsView finds it immediately — no manual directory browsing, no grepping raw JSONL files.&lt;/p&gt;

&lt;h3&gt;
  
  
  Token and Cost Tracking
&lt;/h3&gt;

&lt;p&gt;AgentsView extracts token usage and model metadata from each agent's session data, building a cost view:&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;# Today's cost summary&lt;/span&gt;
agentsview usage daily

&lt;span class="c"&gt;# Today's cost with per-model breakdown&lt;/span&gt;
agentsview usage daily &lt;span class="nt"&gt;--breakdown&lt;/span&gt;

&lt;span class="c"&gt;# Last 7 days&lt;/span&gt;
agentsview usage weekly

&lt;span class="c"&gt;# Last 28-day statistics&lt;/span&gt;
agentsview stats
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Typical output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Daily Usage — 2026-07-07
─────────────────────────────────────────
Agent        Sessions  Input Tok   Output Tok  Cost
──────────   ────────  ──────────  ──────────  ──────
Claude Code  8         1,823,441   142,891     $4.21
Codex        3         284,920     31,204      $0.87
Cursor       12        ——          ——          ——
──────────   ────────  ──────────  ──────────  ──────
Total        23        2,108,361   174,095     $5.08
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Analytics Dashboard
&lt;/h3&gt;

&lt;p&gt;The Web UI (&lt;code&gt;http://127.0.0.1:8080&lt;/code&gt;) provides:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Usage heatmaps&lt;/strong&gt;: activity by day and hour&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tool usage statistics&lt;/strong&gt;: which tools are called most frequently (bash, read, write...)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Velocity metrics&lt;/strong&gt;: average tokens per session, task completion duration&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Project-level breakdown&lt;/strong&gt;: agent usage patterns by project directory&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Recent Edits Feed
&lt;/h3&gt;

&lt;p&gt;A practical feature: displays files recently modified by agents, grouped by project. At the end of a workday, instead of digging through git diff to review what AI changed, AgentsView lists it directly.&lt;/p&gt;

&lt;h3&gt;
  
  
  Live Updates
&lt;/h3&gt;

&lt;p&gt;AgentsView runs as a daemon, watching for new session data via file watching, pushing live updates to the Web UI via SSE (Server-Sent Events). Active AI sessions show up in the dashboard in real time.&lt;/p&gt;




&lt;h2&gt;
  
  
  Quick Start
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Install:&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;# macOS / Linux&lt;/span&gt;
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://agentsview.io/install.sh | bash

&lt;span class="c"&gt;# Windows (PowerShell)&lt;/span&gt;
powershell &lt;span class="nt"&gt;-ExecutionPolicy&lt;/span&gt; ByPass &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s2"&gt;"irm https://agentsview.io/install.ps1 | iex"&lt;/span&gt;

&lt;span class="c"&gt;# macOS Homebrew&lt;/span&gt;
brew &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--cask&lt;/span&gt; agentsview
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Start:&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;# Foreground mode (for debugging)&lt;/span&gt;
agentsview serve

&lt;span class="c"&gt;# Background daemon (recommended)&lt;/span&gt;
agentsview serve &lt;span class="nt"&gt;--background&lt;/span&gt;

&lt;span class="c"&gt;# Open Web UI&lt;/span&gt;
open http://127.0.0.1:8080
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Useful CLI commands:&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;# Session management&lt;/span&gt;
agentsview session list                        &lt;span class="c"&gt;# List all sessions&lt;/span&gt;
agentsview session list &lt;span class="nt"&gt;--agent&lt;/span&gt; claude-code    &lt;span class="c"&gt;# Claude Code sessions only&lt;/span&gt;
agentsview session show &amp;lt;session-id&amp;gt;           &lt;span class="c"&gt;# View session details&lt;/span&gt;

&lt;span class="c"&gt;# Cost tracking&lt;/span&gt;
agentsview usage daily                         &lt;span class="c"&gt;# Today's cost&lt;/span&gt;
agentsview usage daily &lt;span class="nt"&gt;--breakdown&lt;/span&gt;             &lt;span class="c"&gt;# Per-model breakdown&lt;/span&gt;
agentsview usage weekly                        &lt;span class="c"&gt;# This week's cost&lt;/span&gt;
agentsview stats                               &lt;span class="c"&gt;# 28-day statistics&lt;/span&gt;

&lt;span class="c"&gt;# Search&lt;/span&gt;
agentsview search &lt;span class="s2"&gt;"auth module refactoring"&lt;/span&gt;    &lt;span class="c"&gt;# Full-text search&lt;/span&gt;

&lt;span class="c"&gt;# Export&lt;/span&gt;
agentsview session &lt;span class="nb"&gt;export&lt;/span&gt; &amp;lt;&lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nt"&gt;--format&lt;/span&gt; html   &lt;span class="c"&gt;# Export as HTML&lt;/span&gt;
agentsview session &lt;span class="nb"&gt;export&lt;/span&gt; &amp;lt;&lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nt"&gt;--format&lt;/span&gt; gist   &lt;span class="c"&gt;# Export to GitHub Gist&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Deep Dive
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Why 100× Faster Than Re-Parsing Files
&lt;/h3&gt;

&lt;p&gt;AI coding tools write session data as JSONL or Markdown files. Your session history accumulates over time — potentially thousands of files.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Naive approach:
Each search or analysis → re-scan all files → parse each JSONL → filter → return
Grows linearly with file count. With 50,000 sessions: unusably slow.

AgentsView approach:
First run → parse all files → write to SQLite (with FTS5 index + token summary tables)
Subsequent queries → direct SQL queries on SQLite
SQLite FTS5 full-text search: millisecond responses regardless of file count
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Incremental sync: after new sessions are written, the daemon watches for file changes and processes only new content — no full re-index.&lt;/p&gt;

&lt;h3&gt;
  
  
  Three-Layer Storage Architecture
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SQLite (primary storage, local, writable)
    ↓ (optional sync)
PostgreSQL (team sharing, read-only service)
    ↓ (optional sync)
DuckDB (analytics mirror, read-only or via Quack protocol)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;PostgreSQL team sync:&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;# Configure PostgreSQL backend&lt;/span&gt;
&lt;span class="nv"&gt;AGENTSVIEW_POSTGRES_URL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;postgresql://user:pass@host/db

&lt;span class="c"&gt;# Push to team database&lt;/span&gt;
agentsview &lt;span class="nb"&gt;sync &lt;/span&gt;postgres push

&lt;span class="c"&gt;# Pull from team database&lt;/span&gt;
agentsview &lt;span class="nb"&gt;sync &lt;/span&gt;postgres pull
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Team members each run AgentsView locally, periodically pushing to a shared PostgreSQL database — creating team-level AI usage dashboards: who uses which tools, organization-wide token consumption trends, high-value session archiving.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DuckDB mirror:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;DuckDB's Quack protocol supports remote reads, enabling direct SQL analysis queries against AgentsView data without exporting to files.&lt;/p&gt;

&lt;h3&gt;
  
  
  S3 Support
&lt;/h3&gt;

&lt;p&gt;Claude Code and Codex session sources can be configured with &lt;code&gt;s3://&lt;/code&gt; paths:&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;CLAUDE_CODE_DIR&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;s3://my-bucket/claude-sessions
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For developers working across multiple machines, session data can be centralized in S3 and AgentsView builds a local index after fetching.&lt;/p&gt;

&lt;h3&gt;
  
  
  Technology Choices
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Go backend&lt;/strong&gt;: Single binary distribution, cross-platform, no runtime dependencies, high performance for file parsing and SQLite I/O-intensive operations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Svelte 5 frontend&lt;/strong&gt;: Lightweight framework, suitable for embedding in single binary distribution (frontend assets compiled into the Go binary).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CGO dependency&lt;/strong&gt;: SQLite bindings require CGO, which means pre-compiled binary distribution rather than &lt;code&gt;go install&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tauri desktop&lt;/strong&gt;: Wraps the same Web UI to provide native macOS and Windows desktop app experience, backed by the same local HTTP service.&lt;/p&gt;

&lt;h3&gt;
  
  
  Privacy Design
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;Data boundaries&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;Web service binds to 127.0.0.1 (not 0.0.0.0)&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;DNS-rebinding protection&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;validates Host header, blocks cross-origin requests to local data&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;For external access (reverse proxy / SSH tunnel)&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;use --public-url to explicitly allow&lt;/span&gt;

&lt;span class="na"&gt;Telemetry&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;Only anonymous daemon_active ping (version, OS, architecture)&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;No session content, file paths, or user identity&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;Disable with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;AGENTSVIEW_TELEMETRY_ENABLED=0&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Aider is opt-in (requires explicit &lt;code&gt;AIDER_DIR&lt;/code&gt; config) because Aider history files live in repository root directories — automatic scanning would trigger macOS privacy prompts.&lt;/p&gt;




&lt;h2&gt;
  
  
  Use Cases
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Individual developers:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;See monthly AI tool spending and which tool gives the best cost-to-value ratio&lt;/li&gt;
&lt;li&gt;Retrieve an approach from a session three weeks ago&lt;/li&gt;
&lt;li&gt;Understand personal AI usage patterns&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Team Tech Leads:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Build team-level AI usage dashboards via PostgreSQL sync&lt;/li&gt;
&lt;li&gt;Track organization-wide AI tool cost trends&lt;/li&gt;
&lt;li&gt;Identify high-value sessions for team knowledge archiving&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Heavy AI tool users:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Switch between 30+ tools and need a unified session history entry point&lt;/li&gt;
&lt;li&gt;Compare different agents' efficiency and cost on similar task types&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Links and Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;🌟 &lt;strong&gt;GitHub&lt;/strong&gt;: &lt;a href="https://github.com/kenn-io/agentsview" rel="noopener noreferrer"&gt;kenn-io/agentsview&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🌐 &lt;strong&gt;Website&lt;/strong&gt;: &lt;a href="https://agentsview.io" rel="noopener noreferrer"&gt;agentsview.io&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;📖 &lt;strong&gt;Token tracking docs&lt;/strong&gt;: &lt;a href="https://agentsview.io/token-usage/" rel="noopener noreferrer"&gt;agentsview.io/token-usage&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;AgentsView addresses a problem that becomes more real as AI coding tools proliferate: you're using multiple tools, each managing its own data, leaving you with no visibility into the overall picture of usage and cost.&lt;/p&gt;

&lt;p&gt;Gartner's 2026 projection — AI coding costs surpassing developer salaries by 2028 — isn't hyperbole. The median Claude Code user already spends $6 per day. A 30-person team at $10 per person per day is $1M per year. At that scale, the gap between 'no visibility into spending' and 'data-informed decisions' is real.&lt;/p&gt;

&lt;p&gt;AgentsView's design choices — local-first, single binary, no account required, data stays on the machine — reduce adoption friction and privacy concerns simultaneously. For developers who use AI coding tools heavily every day, installing and trying it is low-cost and likely to surface useful insights.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Explore &lt;a href="https://primeskills.store" rel="noopener noreferrer"&gt;PrimeSkills&lt;/a&gt; — A marketplace for handpicked AI Agents and skills. Each is validated in real enterprise workflows, stripping away hype and keeping only what truly works.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Welcome to my &lt;a href="https://home.wonlab.top/en" rel="noopener noreferrer"&gt;Homepage&lt;/a&gt; for more useful insights and interesting products.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>ai</category>
      <category>claude</category>
      <category>token</category>
    </item>
    <item>
      <title>Build an MCP Server in Python with FastAPI (2026 Guide)</title>
      <dc:creator>Sangmin Lee</dc:creator>
      <pubDate>Tue, 07 Jul 2026 01:30:04 +0000</pubDate>
      <link>https://dev.to/claudeguide/build-an-mcp-server-in-python-with-fastapi-2026-guide-pk1</link>
      <guid>https://dev.to/claudeguide/build-an-mcp-server-in-python-with-fastapi-2026-guide-pk1</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://claudeguide.io/mcp-server-fastapi-python?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=mcp-server-fastapi-python" rel="noopener noreferrer"&gt;claudeguide.io/mcp-server-fastapi-python&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  Build an MCP Server in Python with FastAPI: Tools, Resources, Auth (2026)
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;MCP servers expose tools (callable functions) and resources (readable context) to Claude — the cleanest 2026 stack is the official mcp Python SDK on top of FastAPI in ~50 lines of code.&lt;/strong&gt; You get streaming HTTP transport, Pydantic-typed tool schemas, bearer-token auth, and a single ASGI app you can ship to Fly.io, Render, or a Mac mini. This guide walks the full path — from &lt;code&gt;pip install mcp&lt;/code&gt; to a production server wired into Claude Code via &lt;code&gt;claude mcp add&lt;/code&gt; — with working code for tools, streaming resources, and OAuth-style authentication. Tested against MCP spec &lt;strong&gt;2025-06-18&lt;/strong&gt; and &lt;code&gt;mcp-python-sdk&lt;/code&gt; v1.x.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is MCP, and when do you need a custom server?
&lt;/h2&gt;

&lt;p&gt;The Model Context Protocol is a JSON-RPC contract Claude clients (Claude Code, claude.ai desktop, the API harness) speak to external programs. The program advertises tools and resources; the client routes user intent to those tools. You need a custom MCP server when the integration you want isn't already in the public registry — internal databases, proprietary APIs, custom workflows over your own filesystem. If a vendor MCP exists (GitHub, Linear, Stripe, Postgres), use that first; build only what's missing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stack choice: &lt;code&gt;mcp&lt;/code&gt; SDK vs raw FastAPI vs HTTPX-only
&lt;/h2&gt;

&lt;p&gt;Three plausible stacks, picked in order of escape hatch:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;mcp&lt;/code&gt; SDK + FastAPI&lt;/strong&gt; (recommended). The SDK's &lt;code&gt;FastMCP&lt;/code&gt; wraps schema generation, transport negotiation (stdio + streaming HTTP), and JSON-RPC framing. Mounting it inside FastAPI gives you middleware, OpenAPI co-existence, and ASGI deploys.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Raw FastAPI&lt;/strong&gt;, hand-rolling JSON-RPC. Only do this if you're forking the protocol — the spec is moving, and you'll spend a week catching up to each release.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;HTTPX-only client wrappers&lt;/strong&gt; are not servers; they belong inside a tool, not as a replacement.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pick &lt;code&gt;FastMCP&lt;/code&gt;. The escape hatch is always "add a plain FastAPI route alongside" — both can mount on the same Uvicorn worker.&lt;/p&gt;

&lt;h2&gt;
  
  
  Minimal working server
&lt;/h2&gt;

&lt;p&gt;Install the SDK and FastAPI:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="s2"&gt;"mcp[cli]

## Streaming resource: a GitHub repo file listing

Resources are read-only context Claude can pull in without invoking a tool. Streaming matters when the payload is large — Claude can start reasoning before the body finishes:

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

&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
python&lt;/p&gt;

&lt;h1&gt;
  
  
  resources/repo.py
&lt;/h1&gt;

&lt;p&gt;import httpx&lt;br&gt;
from mcp.server.fastmcp import FastMCP&lt;/p&gt;

&lt;p&gt;mcp = FastMCP("acme-tools")&lt;/p&gt;

&lt;p&gt;&lt;a class="mentioned-user" href="https://dev.to/mcp"&gt;@mcp&lt;/a&gt;.resource("repo://{owner}/{name}/tree")&lt;br&gt;
async def repo_tree(owner: str, name: str) -&lt;/p&gt;

&lt;h2&gt;
  
  
  Frequently Asked Questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Stdio or HTTP transport?
&lt;/h3&gt;

&lt;p&gt;Stdio is right for a server that runs as a subprocess of one client (Claude Desktop launching a local Python script). HTTP — specifically &lt;code&gt;streamable-http&lt;/code&gt; — is right for anything multi-user, anything deployed, and anything you want to test with &lt;code&gt;mcp-inspector&lt;/code&gt; over the network. If in doubt, ship HTTP; you can always wrap stdio later.&lt;/p&gt;

&lt;h3&gt;
  
  
  How do I authenticate users?
&lt;/h3&gt;

&lt;p&gt;Bearer tokens for service accounts and CI. OAuth (RFC 7591 dynamic client registration, as profiled in the MCP spec) for end users — &lt;code&gt;authlib&lt;/code&gt; plus the SDK's auth helpers handles registration, refresh, and scope. Don't invent a custom header scheme; clients won't speak it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can MCP servers call external APIs?
&lt;/h3&gt;

&lt;p&gt;Yes — that's the most common shape. A tool is just a Python function; call any REST/GraphQL/database client you like inside it. Keep network calls async, time them out aggressively (10–30s), and surface upstream errors as &lt;code&gt;ToolError&lt;/code&gt; with the upstream status code in the message.&lt;/p&gt;

&lt;h3&gt;
  
  
  What's the rate limit?
&lt;/h3&gt;

&lt;p&gt;There is no protocol-level rate limit — you set it. Claude clients respect server-side 429s, so return them honestly: a &lt;code&gt;Retry-After&lt;/code&gt; header on a &lt;code&gt;starlette.responses.Response&lt;/code&gt; with status 429 is enough. For per-tool quotas, gate with &lt;code&gt;asyncio.Semaphore&lt;/code&gt; plus a token bucket (e.g. &lt;code&gt;aiolimiter&lt;/code&gt;).&lt;/p&gt;

&lt;h3&gt;
  
  
  How do I version my server?
&lt;/h3&gt;

&lt;p&gt;Two layers. The &lt;code&gt;version&lt;/code&gt; argument to &lt;code&gt;FastMCP("name", version="1.4.0")&lt;/code&gt; is advertised in the initialize handshake — bump on tool-shape changes. Separately, deploy URL paths (&lt;code&gt;/mcp/v1&lt;/code&gt;, &lt;code&gt;/mcp/v2&lt;/code&gt;) when you make breaking schema changes; let old clients stay on v1 while new clients adopt v2. Never silently change a tool's argument schema in place.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where to go next
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://dev.to/claude-mcp-servers-guide"&gt;Claude MCP best practices&lt;/a&gt; — patterns for tool design, prompt budgeting, and observability&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/claude-code-mcp-korean"&gt;Claude Code MCP (Korean track)&lt;/a&gt; — same material, Korean-language deep dive&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/claude-api-error-handling"&gt;Claude API error handling&lt;/a&gt; — turn upstream failures into tool errors Claude can recover from&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A working MCP server is a 50-line file. A production MCP server is the same 50 lines plus auth, error correlation, async hygiene, and a versioned URL — none of which are hard, but all of which need to be there on day one. Start with &lt;code&gt;FastMCP&lt;/code&gt;, ship the bearer path first, layer OAuth when real users arrive, and treat tool descriptions as the single highest-leverage prompt-engineering surface in your stack.&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>fastapi</category>
      <category>python</category>
      <category>claude</category>
    </item>
    <item>
      <title>Claude vs ChatGPT for Coding in 2026: Which AI Writes Better Code?</title>
      <dc:creator>devtools-pick</dc:creator>
      <pubDate>Tue, 07 Jul 2026 00:52:24 +0000</pubDate>
      <link>https://dev.to/devtoolspick/claude-vs-chatgpt-for-coding-in-2026-which-ai-writes-better-code-33l</link>
      <guid>https://dev.to/devtoolspick/claude-vs-chatgpt-for-coding-in-2026-which-ai-writes-better-code-33l</guid>
      <description>&lt;p&gt;Claude and ChatGPT are both good coding assistants, but they feel different in real use. Claude is the model I reach for when a task needs patience: reading several files, reviewing a messy diff, or explaining why a design is brittle. ChatGPT is the model I reach for when I want a fast generalist: small code snippets, library comparisons, debugging ideas, and a tool that can jump from code to docs to product writing.&lt;/p&gt;

&lt;p&gt;The winner in the frontmatter is Claude, and I agree with that for coding-specific work. I would not make it a universal rule. ChatGPT is often easier for mixed tasks and has a broader product surface. For actual software engineering, Claude tends to produce calmer, more structured answers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick Comparison
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Claude&lt;/th&gt;
&lt;th&gt;ChatGPT&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Best coding use&lt;/td&gt;
&lt;td&gt;Code review, large context, careful refactors&lt;/td&gt;
&lt;td&gt;General coding help, snippets, tool workflows&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Strength&lt;/td&gt;
&lt;td&gt;Patient reasoning over longer material&lt;/td&gt;
&lt;td&gt;Flexible assistant with broad integrations&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Weak spot&lt;/td&gt;
&lt;td&gt;Can be cautious and verbose&lt;/td&gt;
&lt;td&gt;Can overstate uncertain technical facts&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Best user&lt;/td&gt;
&lt;td&gt;Experienced developer with a specific task&lt;/td&gt;
&lt;td&gt;Developer who wants one assistant for many jobs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;IDE path&lt;/td&gt;
&lt;td&gt;Common in AI editors and coding agents&lt;/td&gt;
&lt;td&gt;Common through ChatGPT, API tools, and Copilot-style workflows&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Code Generation
&lt;/h2&gt;

&lt;p&gt;For small functions, both are strong. Ask either model to write a debounce helper, a SQL query builder, or a Jest test and you will usually get something usable. The difference appears when the task has hidden constraints.&lt;/p&gt;

&lt;p&gt;Claude is better at holding onto the shape of a codebase. If I give it a service method, the repository helper, the existing error style, and a failing test, it is more likely to preserve the local pattern. It also tends to explain tradeoffs in a way that helps me decide what to keep.&lt;/p&gt;

&lt;p&gt;ChatGPT is faster-feeling for common patterns. It is good at getting a first version on the page, especially for familiar stacks like React, Node, Python, and SQL. I like it for "show me three ways to do this" prompts because it moves quickly and covers a wide range. The risk is that it may use a library option that changed recently or invent a clean API that does not exist.&lt;/p&gt;

&lt;h2&gt;
  
  
  Debugging
&lt;/h2&gt;

&lt;p&gt;Claude has the edge for debugging multi-step failures. It tends to trace cause and effect more carefully, especially when the issue spans configuration, runtime behavior, and tests. When I paste a stack trace and several related files, Claude usually produces a tighter list of likely causes.&lt;/p&gt;

&lt;p&gt;ChatGPT is still useful for debugging, especially when the issue is familiar: dependency mismatch, bad regex, incorrect async handling, database constraint, or frontend state bug. It can also turn an error message into a search plan or a minimal reproduction. I just ask it to state assumptions explicitly because it can otherwise glide past uncertainty.&lt;/p&gt;

&lt;h2&gt;
  
  
  Code Review
&lt;/h2&gt;

&lt;p&gt;This is where Claude wins most clearly for me. It gives better review feedback on naming, edge cases, race conditions, and missing tests. It is less likely to fill the answer with generic compliments and more likely to say, "This branch is not covered" or "This helper changes behavior for empty input."&lt;/p&gt;

&lt;p&gt;ChatGPT can review code too, but I often need to narrow the prompt: "Focus only on correctness and test gaps" or "Ignore style unless it affects behavior." Without that constraint, it may spend too much attention on readability suggestions that are not worth changing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Context and Product Workflow
&lt;/h2&gt;

&lt;p&gt;Claude's large-context reputation is one reason developers like it for code. The practical benefit is not just token count. It is the ability to keep more of a problem in view without losing the thread. That matters for migrations, architecture notes, and reviews of generated diffs.&lt;/p&gt;

&lt;p&gt;ChatGPT's advantage is the surrounding product. It is easy to use for screenshots, files, browsing, voice, and mixed writing tasks. If your coding question turns into a product decision, a customer email, and a SQL cleanup script, ChatGPT handles the context switch well.&lt;/p&gt;

&lt;h2&gt;
  
  
  API and Cost Considerations
&lt;/h2&gt;

&lt;p&gt;API pricing changes often, and model selection matters more than brand. A cheap fast model can be perfect for autocomplete or classification. A stronger model is worth paying for when it prevents a bad code change. For production systems, test several representative tasks instead of choosing from a headline benchmark.&lt;/p&gt;

&lt;p&gt;I would prototype with both if coding quality matters to the product. Keep a small eval set: one bug fix, one refactor, one code review, one test generation task, and one documentation task. The winner for your codebase may not match a general review.&lt;/p&gt;

&lt;h2&gt;
  
  
  Our Verdict
&lt;/h2&gt;

&lt;p&gt;Claude wins for coding because it is better at long-context reasoning, code review, and careful multi-file thinking. ChatGPT remains a better all-purpose assistant and is often the easier starting point for developers who want one tool for everything.&lt;/p&gt;

&lt;p&gt;My personal setup is simple: Claude for serious code review and complex refactors, ChatGPT for fast exploration and mixed work, and an editor tool like Cursor or Copilot when I want direct file changes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://anthropic.com" rel="noopener noreferrer"&gt;Try Anthropic -&amp;gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://openai.com" rel="noopener noreferrer"&gt;Try OpenAI -&amp;gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Related Articles
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://dev.to/reviews/chatgpt-review"&gt;ChatGPT Review&lt;/a&gt; — Our deep-dive review of OpenAI's chatbot&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/comparisons/chatgpt-vs-claude-vs-gemini"&gt;ChatGPT vs Claude vs Gemini&lt;/a&gt; — The three-way comparison&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/best-of/best-ai-api-platforms"&gt;Best AI API Platforms&lt;/a&gt; — Compare API pricing and capabilities&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉 &lt;a href="https://claude.ai" rel="noopener noreferrer"&gt;Try Claude →&lt;/a&gt; | &lt;a href="https://chat.openai.com" rel="noopener noreferrer"&gt;Try ChatGPT →&lt;/a&gt; | &lt;a href="https://cursor.com/affiliates" rel="noopener noreferrer"&gt;Use Both in Cursor →&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Is Claude better than ChatGPT for coding?
&lt;/h3&gt;

&lt;p&gt;Claude is usually better for code review, long-context analysis, and careful debugging. ChatGPT is better as a general assistant with broad tools and integrations.&lt;/p&gt;

&lt;h3&gt;
  
  
  Which is better for beginners?
&lt;/h3&gt;

&lt;p&gt;ChatGPT is often easier for beginners because it is conversational and flexible. Claude is excellent once you can provide clearer technical context and evaluate the answer.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can both models write tests?
&lt;/h3&gt;

&lt;p&gt;Yes. Both can draft unit tests, integration tests, fixtures, and mocks. You still need to check whether the tests assert meaningful behavior rather than copying the implementation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Which model is cheaper through the API?
&lt;/h3&gt;

&lt;p&gt;Pricing changes by model and provider. For production work, compare current pricing on the official pages and test quality on your own tasks before deciding.&lt;/p&gt;

&lt;h3&gt;
  
  
  Should I use Claude or ChatGPT inside an IDE?
&lt;/h3&gt;

&lt;p&gt;Use the IDE or agent that fits your workflow. Cursor and similar tools may route to Claude or other models, while Copilot-style workflows often make ChatGPT-family models easy to access.&lt;/p&gt;

</description>
      <category>comparison</category>
      <category>claude</category>
      <category>chatgpt</category>
      <category>coding</category>
    </item>
    <item>
      <title>AI Coding Tools in 2026: Claude Code vs Cursor vs Cline vs GitHub Copilot — Which One Should You Use</title>
      <dc:creator>Hamza</dc:creator>
      <pubDate>Tue, 07 Jul 2026 00:21:54 +0000</pubDate>
      <link>https://dev.to/tekmag/ai-coding-tools-in-2026-claude-code-vs-cursor-vs-cline-vs-github-copilot-which-one-should-you-use-4cgi</link>
      <guid>https://dev.to/tekmag/ai-coding-tools-in-2026-claude-code-vs-cursor-vs-cline-vs-github-copilot-which-one-should-you-use-4cgi</guid>
      <description>&lt;p&gt;&lt;strong&gt;If you're choosing an AI coding assistant in 2026, the short answer is: pick Claude Code for deep reasoning, Cursor for agentic workflows, Cline for open-source flexibility, or GitHub Copilot if you live inside the GitHub ecosystem.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I verified the pricing and feature claims below against the official product pages and public docs on July 6, 2026. Where possible I cross-checked the numbers against the same sources the research brief used, and the figures hold up.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Claude Code&lt;/th&gt;
&lt;th&gt;Cursor&lt;/th&gt;
&lt;th&gt;Cline&lt;/th&gt;
&lt;th&gt;GitHub Copilot&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Pricing&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$20+/mo + token usage&lt;/td&gt;
&lt;td&gt;$20-$200/mo tiers&lt;/td&gt;
&lt;td&gt;Free / Open source&lt;/td&gt;
&lt;td&gt;$10-$39/mo + usage&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Open source&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes (Apache 2.0)&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;MCP support&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Native&lt;/td&gt;
&lt;td&gt;Via extensions&lt;/td&gt;
&lt;td&gt;Native&lt;/td&gt;
&lt;td&gt;Limited / API&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Model flexibility&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Claude only&lt;/td&gt;
&lt;td&gt;High (multi-model)&lt;/td&gt;
&lt;td&gt;Highest (any provider)&lt;/td&gt;
&lt;td&gt;OpenAI / Microsoft family&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Best use case&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Complex reasoning, quality&lt;/td&gt;
&lt;td&gt;Agentic workflows, multi-file&lt;/td&gt;
&lt;td&gt;Privacy, flexibility, customization&lt;/td&gt;
&lt;td&gt;GitHub ecosystem, ease of use&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;IDE integration&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Terminal, VS Code, JetBrains&lt;/td&gt;
&lt;td&gt;VS Code fork&lt;/td&gt;
&lt;td&gt;VS Code extension&lt;/td&gt;
&lt;td&gt;VS Code, JetBrains, Neovim&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Privacy focus&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Moderate&lt;/td&gt;
&lt;td&gt;Moderate&lt;/td&gt;
&lt;td&gt;High (local models possible)&lt;/td&gt;
&lt;td&gt;Low (telemetry)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;For most indie developers, Cline's $0 entry point and native MCP support now make it the most pragmatic starting point—but if you need the strongest reasoning engine out of the box, Claude Code still leads on hard architectural tasks.&lt;/p&gt;

&lt;h2&gt;
  
  
  Claude Code: Quality-First, Anthropic-Native
&lt;/h2&gt;

&lt;p&gt;Claude Code is Anthropic's dedicated coding product, and it shows in how it handles large refactors and architectural reasoning. The tool runs as a terminal CLI, a VS Code extension, and a JetBrains plugin, so it fits into almost every workflow. Its native Model Context Protocol support means it can act on external tools—Figma, databases, internal APIs—without hacks.&lt;/p&gt;

&lt;p&gt;The catch is flexibility. You're locked into Claude models, and after August 31, 2026, the standard token pricing moves to $3/$15 per million input/output tokens. For heavy multi-file projects, those costs add up fast. But if you care about output quality more than model choice, Claude Code remains the benchmark.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cursor: Agentic IDE Experience
&lt;/h2&gt;

&lt;p&gt;Cursor is a VS Code fork built around AI. Its Composer mode handles multi-file edits and refactors far more aggressively than a standard inline completion tool. You can swap models inside the same session—Claude, GPT, Gemini, or local—so you're not stuck with one provider.&lt;/p&gt;

&lt;p&gt;The downside is the pricing ladder. Hobby is free, but Pro is $20/month, Pro+ is $60/month, and Ultra jumps to $200/month. If you want deep agent behavior and a seamless IDE feel, Cursor earns its price. If you just want solid autocomplete, there are cheaper options.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cline: Open-Source, Privacy-First Flexibility
&lt;/h2&gt;

&lt;p&gt;Cline's journey from "Claude Dev" to an independent Apache 2.0 project has been one of the more interesting stories in 2026. It now supports every major AI provider through Bring Your Own Key, runs fully locally if you pair it with Ollama, and includes human-in-the-loop approvals for risky actions.&lt;/p&gt;

&lt;p&gt;With 59,000+ GitHub stars and 5 million+ VS Code Marketplace installs, Cline has the credibility of a community-backed tool. Plan mode and Act mode give you explicit control over when the agent touches your codebase. If you care about open source, data privacy, or avoiding subscription lock-in, Cline is the clear outlier.&lt;/p&gt;

&lt;h2&gt;
  
  
  GitHub Copilot: The Ecosystem Play
&lt;/h2&gt;

&lt;p&gt;GitHub Copilot tightened its integration story in 2026. It now includes agent mode, code review, and PR-native workflows—not just autocomplete. The June 2026 billing switch to usage-based pricing makes it easier to start cheap and scale, though heavy teams often land on Pro+ at $39/month.&lt;/p&gt;

&lt;p&gt;Where Copilot wins is simplicity. If your repos already live in GitHub, onboarding is almost zero. The main limitation is model choice: you're mostly in the OpenAI/Microsoft family. For teams that want "it just works" without evaluating five different providers, Copilot is still the default.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Choose
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Choose Claude Code&lt;/strong&gt; if reasoning quality and Anthropic ecosystem integration matter most, and you accept a single-model, subscription-plus-tokens bill.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Choose Cursor&lt;/strong&gt; if you want an AI-native IDE with aggressive multi-file editing and don't mind paying premium tiers for agent depth.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Choose Cline&lt;/strong&gt; if open source, privacy, BYOK pricing, and maximum provider flexibility are non-negotiable.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Choose GitHub Copilot&lt;/strong&gt; if you already live in GitHub and value seamless repository integration over model flexibility.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  When the Comparison Gets Weird
&lt;/h2&gt;

&lt;p&gt;There's a quiet tension in 2026: the tools with the best reasoning aren't always the most adopted, while the most adopted tools don't always offer the most control. That's the adoption-versus-trust paradox. Enterprises want strong guardrails and vendor stability; indie hackers want model freedom and low cost. No single tool captures both perfectly yet.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Which AI coding tool is best for beginners in 2026?
&lt;/h3&gt;

&lt;p&gt;GitHub Copilot and Cursor Hobby are the easiest starting points. Copilot requires minimal setup inside GitHub, while Cursor Hobby gives limited free access to an agentic IDE. For complete control at zero cost, Cline's free tier is surprisingly polished.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is Cline really a good replacement for GitHub Copilot?
&lt;/h3&gt;

&lt;p&gt;Yes—if you want open-source freedom and the ability to swap models or run locally. Cline lacks Copilot's deep GitHub-native polish, but for day-to-day editing, refactoring, and agentic tasks, it's a legitimate alternative.&lt;/p&gt;

&lt;h3&gt;
  
  
  Does Model Context Protocol (MCP) matter when choosing a coding assistant?
&lt;/h3&gt;

&lt;p&gt;MCP matters increasingly because it standardizes how coding tools connect to external data, design files, and APIs. Claude Code and Cline offer native MCP support today, which means fewer brittle integrations and faster custom workflows.&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://claude.com/pricing" rel="noopener noreferrer"&gt;Claude Pricing — Anthropic&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.lowcode.agency/blog/cursor-ai-pricing" rel="noopener noreferrer"&gt;Cursor AI Pricing Plans (2026) — LOW/CODE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cline.bot/" rel="noopener noreferrer"&gt;Cline — Open Source AI Coding&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/features/copilot/plans" rel="noopener noreferrer"&gt;GitHub Copilot Plans &amp;amp; Pricing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://modelcontextprotocol.io/" rel="noopener noreferrer"&gt;Model Context Protocol Documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://getyourdozai.blogspot.com/2026/07/ai-coding-tools-in-2026-claude-code-vs.html" rel="noopener noreferrer"&gt;GetYourDozAi&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>aicoding</category>
      <category>claude</category>
      <category>cursor</category>
      <category>github</category>
    </item>
    <item>
      <title>One Entry Point for Your Coding Agent: Organizing Multi-Repo, Multi-Product Context</title>
      <dc:creator>Vladislav</dc:creator>
      <pubDate>Mon, 06 Jul 2026 22:25:37 +0000</pubDate>
      <link>https://dev.to/vains/one-entry-point-for-your-coding-agent-organizing-multi-repo-multi-product-context-52nd</link>
      <guid>https://dev.to/vains/one-entry-point-for-your-coding-agent-organizing-multi-repo-multi-product-context-52nd</guid>
      <description>&lt;p&gt;I work on several products at once. One of them has twenty repositories: microservices, infrastructure, a config repo. A typical task touches three or four repos, and every time I opened a new session with a coding agent, I started with the same routine: explaining which services exist, who calls whom, where the configs are, what the product even does. Session over — explain it all again.&lt;/p&gt;

&lt;p&gt;For a while I survived on temporary instruction files: I'd write one per task or per epic and drag it from session to session. But when several people work on the same epic, those files also need careful updating, and for a new task I often ended up feeding the agent a mix of several old instructions at once. It worked, but it was clumsy.&lt;/p&gt;

&lt;p&gt;I looked around for how others solve this and found no established approach. Everyone has something home-made: some have &lt;code&gt;CLAUDE.md&lt;/code&gt; files in half of their repos, quietly going stale; some have skills and &lt;code&gt;MCP&lt;/code&gt; configs copy-pasted across ten projects; notes and temporary files are scattered everywhere. There is simply no standard for organizing agent context across many repositories and products.&lt;/p&gt;

&lt;p&gt;So I built my own and packaged it as an open template: &lt;a href="https://github.com/Vainstel/agent-workspace" rel="noopener noreferrer"&gt;agent-workspace&lt;/a&gt;. Below is how it works, why it works, and answers to the questions I got when I showed it to colleagues.&lt;/p&gt;

&lt;h2&gt;
  
  
  The idea
&lt;/h2&gt;

&lt;p&gt;One directory — a single entry point for the agent. Everything lives inside it: all the organizations, products and repositories you work with. The agent always starts from the root.&lt;/p&gt;

&lt;p&gt;Context is built in layers — four levels of &lt;code&gt;CLAUDE.md&lt;/code&gt; files, four levels of abstraction:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Workspace&lt;/strong&gt; — base rules for the agent's behavior, not tied to any company.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Organization&lt;/strong&gt; — briefly, what the business is and what matters to it (a startup and a big company set different priorities), plus company conventions: commit style, shared infrastructure. Personal projects are just one more "organization".&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Product&lt;/strong&gt; — what the product is, which repositories it consists of, and how they relate to each other.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Repository&lt;/strong&gt; — the low-level details: structure, build, run, gotchas. This file lives inside the repo itself and travels with it.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;There is one key rule: &lt;strong&gt;every fact lives on exactly one level&lt;/strong&gt;. How microservices are connected - product level; the build command — repo level. Nothing is duplicated, so nothing has to go stale in two places at once.&lt;/p&gt;

&lt;p&gt;Everything machine-specific — local ports, personal dev tokens — goes into &lt;code&gt;CLAUDE.local.md&lt;/code&gt;. It is created only at the repository level, next to that repo's &lt;code&gt;CLAUDE.md&lt;/code&gt;: the shared file is usually maintained by the team, while the local file is your personal layer of details on top of it, never committed to git.&lt;/p&gt;

&lt;p&gt;Besides the levels, the root holds helper directories and a single &lt;code&gt;.claude&lt;/code&gt; with all the skills, commands and agents — they work everywhere under the root. The basic structure looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;agent-workspace/
├── CLAUDE.md            # workspace level: base agent rules
├── .claude/             # skills, commands, agents — one set for everything
├── .mcp.json            # MCP servers config
├── org_1/
│   ├── CLAUDE.md        # organization level
│   └── product_1/
│       ├── CLAUDE.md    # product level
│       ├── repo_1/      # a regular git repository
│       │   └── CLAUDE.md   # repository level — lives inside the repo itself
│       └── repo_2/
├── org_2/
│   ├── CLAUDE.md
│   └── ...
├── private/             # personal projects — one more "organization"
├── workflow/            # notes on tasks and work in progress
│   ├── task/
│   │   ├── TASK-123/    # one directory per task: status, notes, artifacts
│   │   └── TASK-456/
│   └── notes/
├── tools/               # small helper scripts
├── TMP/                 # drafts, reports, scripts and other temporary files
└── archive/             # retired and outdated stuff
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  What it looks like on a real task
&lt;/h2&gt;

&lt;p&gt;Take a product — let's call it &lt;code&gt;Hamsterflow&lt;/code&gt; — where a task touches three microservices out of eight repositories. The agent starts from the workspace root and:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Reads the root &lt;code&gt;CLAUDE.md&lt;/code&gt; — behavior rules.&lt;/li&gt;
&lt;li&gt;Goes down into the organization directory and reads its &lt;code&gt;CLAUDE.md&lt;/code&gt; — company context and conventions.&lt;/li&gt;
&lt;li&gt;Goes into the product directory and reads the product &lt;code&gt;CLAUDE.md&lt;/code&gt; — now it knows all the product's repositories and how they are connected, and understands which three the task will touch.&lt;/li&gt;
&lt;li&gt;Enters those three repositories and reads their &lt;code&gt;CLAUDE.md&lt;/code&gt; files.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That's it. It didn't scan the neighboring products, didn't touch my notes or personal repos — even though all of that sits in the same directory. It read only the chain along the task path.&lt;/p&gt;

&lt;p&gt;The chain gives knowledge about the product, but not about the task itself. For that, the workspace has a dedicated place — &lt;code&gt;workflow/task/&amp;lt;ticket-number&amp;gt;/&lt;/code&gt;: a working file with the current status, what's done, where we're heading, and links to fresh docs for the task (the docs themselves go into the same directory; if they live in Confluence — just links). At the start of a session I simply feed this file to the agent — and it instantly knows not only the product, but also where we stopped yesterday.&lt;/p&gt;

&lt;p&gt;The starting context after all this is about 27k tokens (not counting the system prompt, tools and MCP), and the agent already knows everything about the product that I usually had to explain. For comparison: without the structure, "figure out how things work here" on the same three services eats 60–120k — the agent immediately starts scanning the projects in depth. With the structure, most of that is already written in the &lt;code&gt;CLAUDE.md&lt;/code&gt; files, and when the code does need to be read, the relevant files are found much faster: the modules and key classes are already named in the chain it has read. And this repeats every session, not just once.&lt;/p&gt;

&lt;p&gt;An important caveat, to be honest: token-wise this is not always a win. When you know exactly what to fix and where, a narrow prompt pointing at a specific file will save far more than any structure — there's no reason to read the &lt;code&gt;CLAUDE.md&lt;/code&gt; chain at all. The win shows up on cross-project tasks, where you can't get anywhere without the picture of how things connect — and the win is first of all in developer time: the agent is up to speed from the first minute, and you don't retell the same story every day.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keeping it from rotting
&lt;/h2&gt;

&lt;p&gt;The main disease of any docs written for an agent: they quietly go stale. The template treats this with two things.&lt;/p&gt;

&lt;p&gt;Every &lt;code&gt;CLAUDE.md&lt;/code&gt; carries a date stamp of its last update. And there are two dedicated skills: one creates the files with a fixed structure for each level, the other refreshes an existing file — it takes the date stamp, looks at the commits and code since that date (and the company docs, if Jira/Confluence is connected), removes what's outdated, adds what's new, updates the stamp. You can ask an agent to "update the doc" without any skill — but the skill strictly defines the rules: what counts as the source of truth, what goes on which level, what should not be written at all. The update becomes predictable, instead of a lottery that produces junk and degrades with every iteration.&lt;/p&gt;

&lt;h2&gt;
  
  
  workspace-manager
&lt;/h2&gt;

&lt;p&gt;The template ships with an agent that manages this structure. You start it with &lt;code&gt;/init_workspace_manager&lt;/code&gt;; it asks what you have and sets everything up itself: creates organizations and products, integrates existing repositories — from a local path or a GitHub/GitLab URL. A local repo it copies rather than moves — together with IDE settings and local env files, so the copy runs right away and the original stays intact until you've checked everything.&lt;/p&gt;

&lt;p&gt;For every repo it checks whether a &lt;code&gt;CLAUDE.md&lt;/code&gt; exists, offers to create or refresh it, and decides (or asks) which product the repository belongs to. The whole move takes an evening.&lt;/p&gt;

&lt;p&gt;Its scope is the workspace itself: set up the structure, integrate repositories, keep the &lt;code&gt;CLAUDE.md&lt;/code&gt; files and settings up to date. Actual coding tasks you do in regular sessions, without it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What about teams
&lt;/h2&gt;

&lt;p&gt;The most common question: "isn't this a dictatorship — the whole team has to adopt your structure?" No. Synchronization works in three layers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Repository-level CLAUDE.md&lt;/strong&gt; — shared. It lives in the repo itself, gets pushed and maintained by the team, like a &lt;code&gt;README&lt;/code&gt;. It works for everyone, whether they use a workspace or not.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Workspace, organization and product levels&lt;/strong&gt; — yours, personal. A colleague can build their own workspace or not build one at all — nothing breaks for you either way.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Skills, commands, agents — everything in &lt;code&gt;.claude&lt;/code&gt;&lt;/strong&gt; — no need to copy them across twenty microservices. You create a separate repository per product, set up as a &lt;a href="https://code.claude.com/docs/en/discover-plugins" rel="noopener noreferrer"&gt;plugin marketplace&lt;/a&gt; — the official Claude Code mechanism for sharing this stuff. Everyone pulls what they need; updates come with a single command. A plugin enabled at the workspace root works for any product under it.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Context: fears and numbers
&lt;/h2&gt;

&lt;p&gt;"The agent will end up with a giant context, it will crawl everything anyway." In practice — no: reading follows the task path, the rest of the tree is never touched. And there is no indexing that would crawl the whole tree: Claude Code doesn't build an index of the codebase at all — it searches the code on the fly, as needed.&lt;/p&gt;

&lt;p&gt;"Skills in the root will bloat the context." Also no: only the name and a short description of each skill get into the context automatically. The full instruction is loaded only when the skill is actually used. MCP servers are worse — they carry descriptions of all their tools and can easily eat 20–30k tokens in total. So the ones you don't need for the current work should be turned off, not left running all at once.&lt;/p&gt;

&lt;p&gt;Context degradation on large contexts is worth remembering, but what matters is where it comes from. Modern strong models handle sheer volume reasonably well; what hurts them much more is thematically fragmented context — when different topics and tasks are mixed together and half the content has nothing to do with the current work. Layered reading protects exactly against that: only the chain along the task path gets into the context, and everything in it is about what you're working on right now.&lt;/p&gt;

&lt;h2&gt;
  
  
  Security
&lt;/h2&gt;

&lt;p&gt;I'll state the obvious, but I can't skip it: working this way, the model sees a lot about your products — architecture, service relationships, code. For me it's simple: corporate accounts, the company has set the rules, customer data never reaches the model. Check how it is on your side — before the move, not after.&lt;/p&gt;

&lt;p&gt;One more thing: when a couple of companies and your personal projects sit side by side in one entry point, the agent can accidentally pick up something you never meant to share with the model. Whatever doesn't fit the rules — just don't put it in the workspace.&lt;/p&gt;

&lt;p&gt;And basic hygiene: secrets don't belong in &lt;code&gt;CLAUDE.md&lt;/code&gt; on any level. Personal dev tokens go into the gitignored &lt;code&gt;CLAUDE.local.md&lt;/code&gt;; tokens in the MCP config come from environment variables.&lt;/p&gt;

&lt;h2&gt;
  
  
  About the Claude coupling
&lt;/h2&gt;

&lt;p&gt;The files are called &lt;code&gt;CLAUDE.md&lt;/code&gt; because Claude Code reads them by default — I work in it, and for the first version I chose what's guaranteed to work. If you're on Cursor or another tool that follows the AGENTS.md standard — workspace-manager will offer, during the first setup, to rename all the files and rewrite every mention. To be honest: I haven't tested yet how other agents behave with this structure.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Clone the &lt;a href="https://github.com/Vainstel/agent-workspace" rel="noopener noreferrer"&gt;template&lt;/a&gt; and open it in Claude Code.&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;/init_workspace_manager&lt;/code&gt; — it will walk you through the setup and the integration of your repositories.&lt;/li&gt;
&lt;li&gt;Delete the org_1/org_2 mock skeletons once you have real content (the agent will offer to).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The template will keep evolving — new skills, commands, agents, improvements to existing ones. For that there's the &lt;code&gt;workspace-update&lt;/code&gt; skill: it compares your workspace against the source repository (the template version recorded in your workspace is the baseline), shows what changed, and after your confirmation pulls the updates in — without touching your content: organizations, products and notes stay as they were.&lt;/p&gt;

&lt;p&gt;I'm curious how others solve this — if you organize multi-repo context for your agent differently, tell me about it.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;By Vladislav, edited with Claude&lt;/em&gt; &lt;/p&gt;

</description>
      <category>ai</category>
      <category>claude</category>
      <category>opensource</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Want to keep using Fable 5? Teach Opus and Sonnet to "behave" like it.</title>
      <dc:creator>Yuiko Koyanagi</dc:creator>
      <pubDate>Mon, 06 Jul 2026 21:45:11 +0000</pubDate>
      <link>https://dev.to/toffy/want-to-keep-using-fable-5-teach-opus-and-sonnet-to-behave-like-it-4kl0</link>
      <guid>https://dev.to/toffy/want-to-keep-using-fable-5-teach-opus-and-sonnet-to-behave-like-it-4kl0</guid>
      <description>&lt;p&gt;A while back I wrote about how I use Fable 5 without going token-bankrupt:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/toffy/use-fable-5-where-it-pays-for-itself-1809" class="crayons-story__hidden-navigation-link"&gt;Use Fable 5 where it pays for itself&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/toffy" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F636738%2Fe52866ed-1547-49e3-930c-4f54ea9467d3.jpeg" alt="toffy profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/toffy" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Yuiko Koyanagi
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Yuiko Koyanagi
                
              
              &lt;div id="story-author-preview-content-4054238" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/toffy" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F636738%2Fe52866ed-1547-49e3-930c-4f54ea9467d3.jpeg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Yuiko Koyanagi&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/toffy/use-fable-5-where-it-pays-for-itself-1809" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jul 2&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/toffy/use-fable-5-where-it-pays-for-itself-1809" id="article-link-4054238"&gt;
          Use Fable 5 where it pays for itself
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/claudecode"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;claudecode&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/productivity"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;productivity&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/agents"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;agents&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/toffy/use-fable-5-where-it-pays-for-itself-1809" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;8&lt;span class="hidden s:inline"&gt;&amp;nbsp;reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/toffy/use-fable-5-where-it-pays-for-itself-1809#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              &lt;span class="hidden s:inline"&gt;Add&amp;nbsp;Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            7 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial crayons-icon c-btn__icon"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success crayons-icon c-btn__icon"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


&lt;p&gt;I put &lt;strong&gt;Fable 5 in the orchestrator seat&lt;/strong&gt; — scoping, design, delegation, final review — while the hands-on implementation, testing, shipping, and code review are done by &lt;strong&gt;Opus and Sonnet subagents&lt;/strong&gt;. The expensive model plans and judges; the cheaper models execute. This ran beautifully for most tasks.&lt;/p&gt;

&lt;p&gt;There's just one problem. As you probably know, &lt;strong&gt;Fable 5 access via subscription ends on July 7.&lt;/strong&gt; (I'm praying it comes back to subscription someday… 🙏)&lt;/p&gt;

&lt;p&gt;The orchestration setup itself works without Fable 5 — but if the model at the top, the one cutting scope and judging everything, gets downgraded, output quality drops with it.&lt;/p&gt;

&lt;p&gt;Here's the thing though: Opus and Sonnet are not bad models. Used correctly, they produce genuinely good output. What matters is writing down &lt;em&gt;what&lt;/em&gt; to do, &lt;em&gt;how&lt;/em&gt; to do it, and &lt;em&gt;what to do when something fails&lt;/em&gt;. So before losing access, I decided to document how Fable 5 actually works and hand it down to Opus/Sonnet — as skills.&lt;/p&gt;

&lt;p&gt;This post is about what I did and how. Finding a "replacement for Fable" seemed hopeless, so the goal became something else: &lt;strong&gt;raise the whole team's capability so that quality holds even with Opus in the orchestrator seat.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The gap between Fable 5 and Opus/Sonnet is not intelligence
&lt;/h2&gt;

&lt;p&gt;To keep using a pseudo-Fable after the shutdown, I started by examining what the difference actually is.&lt;/p&gt;

&lt;p&gt;When Opus/Sonnet produce output I didn't intend during everyday engineering, the failures turn out to follow &lt;strong&gt;recognizable patterns&lt;/strong&gt;. For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Slapping &lt;code&gt;"use client"&lt;/code&gt; at the top of a Next.js page because one button needs an &lt;code&gt;onClick&lt;/code&gt;

&lt;ul&gt;
&lt;li&gt;…which drops the entire page and its import tree onto the client&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Writing &lt;code&gt;fetch&lt;/code&gt; with no cache option

&lt;ul&gt;
&lt;li&gt;The defaults are &lt;em&gt;opposite&lt;/em&gt; between Next.js 14 and 15, but "it works" was only checked on the dev server — hello, production caching surprise&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Skipping input validation in a Server Action because it's "only called from my form"

&lt;ul&gt;
&lt;li&gt;It's actually a public POST endpoint anyone can hit with arbitrary arguments&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Fetching initial data inside &lt;code&gt;useEffect&lt;/code&gt;

&lt;ul&gt;
&lt;li&gt;An &lt;code&gt;await&lt;/code&gt; in a Server Component would do it, without the request waterfall and the layout flash&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;"Fixing" a failing test by rewriting the assertion

&lt;ul&gt;
&lt;li&gt;Don't touch the assertion until you've proven, with evidence, that the code side is the wrong one&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Saying "this should work now" without running anything

&lt;ul&gt;
&lt;li&gt;Run it first, &lt;em&gt;then&lt;/em&gt; conclude whether it works&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What matters here: &lt;strong&gt;none of these are knowledge gaps.&lt;/strong&gt; Ask Sonnet directly — "is a Next.js Server Action dangerous without input validation?" — and it answers correctly. The knowledge is in there. What's missing is the &lt;strong&gt;correct procedure&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Fable 5 runs these checks implicitly, without being asked, and pushes back when something's off. With Opus/Sonnet, those checks have to be written down explicitly.&lt;/p&gt;

&lt;p&gt;Raw reasoning differences are real, of course. But for routine implementation, review, and debugging, most of the observable quality gap comes down to &lt;strong&gt;discipline, sequencing, and verification&lt;/strong&gt; — and all three can be written as skills.&lt;/p&gt;

&lt;h2&gt;
  
  
  "Be careful" prompts don't work
&lt;/h2&gt;

&lt;p&gt;My first attempt at Fable-izing Opus/Sonnet was writing "be careful, always verify, follow best practices" into the prompt. Result: nothing happened (obviously, in hindsight). &lt;strong&gt;A sentence that doesn't change the model's next move doesn't change its behavior.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So the first rule of documenting Fable's working method was a ban list. No line may contain:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"be careful" / "follow best practices" / "think hard" / "ensure quality"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Every line has to be &lt;strong&gt;executable or checkable&lt;/strong&gt; — runnable as a command, defined as a threshold, expressed as if/then, or greppable as a pattern. It must be unambiguous what the reader does next.&lt;/p&gt;

&lt;h2&gt;
  
  
  I documented Fable 5's working method along five axes
&lt;/h2&gt;

&lt;p&gt;Before getting into the "how": I maintain &lt;a href="https://www.npmjs.com/package/ccteams" rel="noopener noreferrer"&gt;ccteams&lt;/a&gt;, a CLI that installs pre-built Claude Code subagent teams with one command.&lt;/p&gt;

&lt;p&gt;From v0.2.x, every team ships with two skills: a shared &lt;strong&gt;working method&lt;/strong&gt; and a per-team &lt;strong&gt;playbook&lt;/strong&gt;. Here's what actually went into them, in order.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Fix the work routine
&lt;/h3&gt;

&lt;p&gt;The classic Opus/Sonnet mistake is &lt;strong&gt;starting to write immediately&lt;/strong&gt; — leaning on training data or earlier context ("Go is usually written like this", "this library's API was like that") without checking the repository in front of it.&lt;/p&gt;

&lt;p&gt;So each playbook opens with a numbered procedure that forces &lt;strong&gt;pre-writing behavior&lt;/strong&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Read &lt;code&gt;go.mod&lt;/code&gt; (and its version) before using a language feature&lt;br&gt;
Read the lockfile for the actually-installed version before trusting library docs&lt;br&gt;
Read two neighboring files before picking a pattern&lt;br&gt;
&lt;code&gt;grep&lt;/code&gt; before writing a helper (it usually already exists under a different name)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In short, it pre-commits the model to one principle: &lt;strong&gt;don't decide from memory — read the repo and decide.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Define the failure patterns and their fixes
&lt;/h3&gt;

&lt;p&gt;What mid-tier models lack isn't knowledge — it's that they carry &lt;strong&gt;wrong assumptions&lt;/strong&gt;, and proceed on the premise that the plausible implementation is the correct one. Crushing that tendency is the priority.&lt;/p&gt;

&lt;p&gt;So for each team, I defined the common failure patterns in a fixed format:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;symptom → wrong instinct → correct move&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;so that when Opus/Sonnet hits the symptom, it knows exactly how to correct course.&lt;/p&gt;

&lt;p&gt;From the ccteams Next.js playbook:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;One button needs an onClick&lt;/strong&gt; → put &lt;code&gt;"use client"&lt;/code&gt; at the top of the page → extract the button into its own leaf component, mark only that file client, keep the page a Server Component.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;From the Go playbook:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Handler hits an error&lt;/strong&gt; → call &lt;code&gt;http.Error(w, msg, 500)&lt;/code&gt; and keep going → add &lt;code&gt;return&lt;/code&gt; immediately after. &lt;code&gt;http.Error&lt;/code&gt; writes and returns; your handler doesn't — the success path below writes a second body onto a committed 500 response.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;There are 10–15 of these per team (Go team, React Native team, Rails team, and so on). &lt;strong&gt;Naming the wrong instinct explicitly&lt;/strong&gt; lets the model recognize the exact moment it's about to make the mistake. You're patching the decision point, not the knowledge base.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Define the decision branches
&lt;/h3&gt;

&lt;p&gt;A frontier model's edge is judgment. Judgment itself can't be transplanted — but 80–90% of the recurring cases can be compiled into explicit branches. From the Go playbook:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Before launching any goroutine — three questions, "nobody" is a forbidden answer:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Who cancels it?&lt;/li&gt;
&lt;li&gt;Who waits for it?&lt;/li&gt;
&lt;li&gt;Where does its error go?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If any answer is "nobody", don't launch it.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Why this one? Because a goroutine is trivial to launch and hard to clean up. When a mid-tier model casually writes &lt;code&gt;go doWork()&lt;/code&gt;, the typical outcomes are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Nobody stops it → it keeps running after the program should be done, or lives forever (goroutine leak = memory leak)&lt;/li&gt;
&lt;li&gt;Nobody waits for it → &lt;code&gt;main&lt;/code&gt; exits first and the work silently never completes&lt;/li&gt;
&lt;li&gt;The error has nowhere to go → failures inside the goroutine get swallowed, and no one ever notices&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is exactly the kind of thing that goes wrong when vibe-coding Go, so it's defined specifically for the Go team.&lt;/p&gt;

&lt;p&gt;There's also a team-independent rule shared by everyone:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;State your hypothesis before touching code. A fix without a confirmed root cause is a guess.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This blocks the classic mid-tier move of &lt;strong&gt;applying a plausible-looking fix before the root cause is confirmed&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For debugging specifically — where "patch the symptom's location and feel done" accidents are constant — the debug team has a dedicated gate:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Before writing any fix, you must be able to say: &lt;strong&gt;"X causes Y, because Z"&lt;/strong&gt; — where X and Y are observed, and Z explains why this exact symptom appears. If you can't fill in Z, you have a correlation, not a cause.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In other words: no causal sentence, no fix phase. You get sent back to re-verify the hypothesis.&lt;/p&gt;

&lt;p&gt;This is the pattern across ccteams: &lt;strong&gt;for each team, the decision branches that stop that team's characteristic accidents are written out explicitly.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Define the verification method
&lt;/h3&gt;

&lt;p&gt;Verification is cheap compared to generation. Which means: &lt;strong&gt;a mid-tier model plus a strong verification harness beats a mid-tier model alone, by a wide margin.&lt;/strong&gt; So every playbook contains an exact, ordered verification recipe.&lt;/p&gt;

&lt;p&gt;Not "please test it" — but which commands, in which order, and what each failure means. For Go: &lt;code&gt;go build ./...&lt;/code&gt; → &lt;code&gt;go vet ./...&lt;/code&gt; → &lt;code&gt;go test -race ./...&lt;/code&gt; (with &lt;code&gt;-race&lt;/code&gt; marked non-negotiable). The frontend playbook includes checks no linter will ever run for you: a keyboard-only walkthrough, and resize tests at 320/768/1280px.&lt;/p&gt;

&lt;p&gt;On top of that, the shared working method demands &lt;strong&gt;execution as the basis for claims&lt;/strong&gt;. A typical mid-tier shortcut is returning code that has never been run, with a cheerful "this should work". To kill that:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The diff is a claim; execution is evidence. Only after actually running build/test/lint and reading their output is the claim backed.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And to enforce it, every claim in a report must carry a label — &lt;code&gt;VERIFIED&lt;/code&gt; (ran it) / &lt;code&gt;REASONED&lt;/code&gt; (read the code) / &lt;code&gt;ASSUMED&lt;/code&gt; (unchecked) — with silent upgrades forbidden. You can no longer pass off "should work" as "works".&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Absorb failures one at a time with a learning loop
&lt;/h3&gt;

&lt;p&gt;Everything above was written by Fable &lt;strong&gt;in advance&lt;/strong&gt; — rules based on predicting "a mid-tier model will probably get this wrong". Not bad, but predictions are predictions. Rules grounded in &lt;strong&gt;mistakes that actually happened in your project&lt;/strong&gt; are obviously stronger.&lt;/p&gt;

&lt;p&gt;So the working method includes a &lt;strong&gt;learning loop&lt;/strong&gt;: the more you use the team, the more it optimizes itself to your project.&lt;/p&gt;

&lt;p&gt;The rule itself is simple: when a mistake surfaces that the playbook didn't anticipate, turn it into a catalog entry, and add it as a rule after human approval.&lt;/p&gt;

&lt;p&gt;From &lt;code&gt;v0.2.2&lt;/code&gt;, running &lt;code&gt;ccteams use&lt;/code&gt; automatically creates &lt;code&gt;.claude/skills/team-lessons/SKILL.md&lt;/code&gt;. Once created, this file is &lt;strong&gt;never overwritten&lt;/strong&gt; — not by team switches, not by ccteams updates. It exists to accumulate your project's own failure patterns and their fixes.&lt;/p&gt;

&lt;p&gt;When an unanticipated mistake occurs, the AI works out the &lt;strong&gt;symptom → wrong instinct → correct move&lt;/strong&gt; and asks you whether it should be recorded. On approval, the agent appends the entry to &lt;code&gt;team-lessons/SKILL.md&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The result is a team that gets smarter with every failure it absorbs.&lt;/p&gt;

&lt;p&gt;That said, bloat is unavoidable on a long-running project. As first-line countermeasures there's a duplicate check (sharpen an existing entry instead of appending a near-copy) and the human approval gate itself — but long-term operation is an open question I'm still thinking about.&lt;/p&gt;

&lt;h2&gt;
  
  
  Making sure it actually reaches the subagents
&lt;/h2&gt;

&lt;p&gt;Claude Code skills are &lt;strong&gt;on-demand&lt;/strong&gt;: they get invoked when the model decides they're relevant. Which means a "working method" skill is never used unless something makes it relevant — and the subagents actually doing the work never invoke skills on their own, period.&lt;/p&gt;

&lt;p&gt;To solve this, I planted it in two places.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Embed it in the agent definitions
&lt;/h3&gt;

&lt;p&gt;Every agent's system prompt now begins with &lt;code&gt;FIRST ACTION: Read .claude/skills/&amp;lt;team&amp;gt;-playbook/SKILL.md and follow it&lt;/code&gt;. But "read this" alone is sometimes ignored — so as a fallback, the 5–6 most load-bearing rules from the playbook are also embedded inline in the system prompt itself.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Embed it at delegation time
&lt;/h3&gt;

&lt;p&gt;The orchestration rules obligate the orchestrator to paste a compressed digest of the shared working method, verbatim, into &lt;strong&gt;every&lt;/strong&gt; delegation prompt.&lt;/p&gt;

&lt;p&gt;And as the last line of defense, in case both get slipped past: the orchestrator is instructed to check every report against &lt;strong&gt;named gates&lt;/strong&gt; and reject on failure. "The build output isn't quoted? Sent back." Even if delivery fails completely, work that ignored the discipline doesn't get accepted.&lt;/p&gt;

&lt;p&gt;Why not just paste the full text everywhere? Because the more instructions you add, &lt;strong&gt;the lower the compliance per instruction&lt;/strong&gt;. So the always-loaded portion is 5–6 lines, each agent carries ~10 inline lines, and the full ~200 lines are read on demand.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sounds like a lot of setup, right?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.npmjs.com/package/ccteams" rel="noopener noreferrer"&gt;ccteams&lt;/a&gt; (v0.2.x and later) already ships with Fable 5's working method handed down to Opus/Sonnet, exactly as described above. If you just want a good team quickly — or a template to study — give it a try:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; ccteams
ccteams list
ccteams use go-api   &lt;span class="c"&gt;# or next-ts, python-fastapi, rails, django, debug — pick your team&lt;/span&gt;
&lt;span class="c"&gt;# restart Claude Code&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If this saved you some setup time, a star on the &lt;a href="https://github.com/toffyui/ccteams" rel="noopener noreferrer"&gt;repository&lt;/a&gt; would make my day. Issues and impressions from trying it are very welcome too!&lt;/p&gt;

&lt;h2&gt;
  
  
  Afterword
&lt;/h2&gt;

&lt;p&gt;My initial plan was to define rules for the orchestrator only. That turned out to be a dead end — because the one getting weaker &lt;em&gt;is&lt;/em&gt; the orchestrator. Fable could catch subagents' mistakes at report time with high precision and send them back; no amount of orchestrator-side rules reproduced that behavior on a weaker model.&lt;/p&gt;

&lt;p&gt;Rejection is also more expensive than prevention. So I shifted the weight onto preventing mistakes in the first place — raising the whole team — rather than catching them at the top.&lt;/p&gt;

&lt;p&gt;I reverse-engineered, shipped, and tested it, and the results were satisfying: bugs that Opus used to miss are now getting caught. For routine work, I'd say this setup has closed most of the gap between Fable and the other models.&lt;/p&gt;

&lt;p&gt;What it can't cover is Fable's unique strength: handling the unanticipated. Noticing "something is off" when nothing on any checklist says so; grasping the structure of a genuinely novel problem at a glance. That doesn't transfer through anything you can write in a skill.&lt;/p&gt;

&lt;p&gt;That remaining gap is what the learning loop above chips away at — one absorbed failure at a time.&lt;/p&gt;

&lt;p&gt;"Make Opus/Sonnet behave like Fable 5" is an idea you see floated a lot, but I rarely found articles that go into the details — so I actually did it and wrote them down. I hope some of it is useful to you.&lt;/p&gt;

</description>
      <category>claude</category>
      <category>ai</category>
      <category>productivity</category>
      <category>llm</category>
    </item>
    <item>
      <title>Fable 5 Goes Credit-Only Tomorrow — Here's How to Not Go Broke</title>
      <dc:creator>Bo Shen</dc:creator>
      <pubDate>Mon, 06 Jul 2026 19:40:18 +0000</pubDate>
      <link>https://dev.to/aplomb2/fable-5-goes-credit-only-tomorrow-heres-how-to-not-go-broke-23p4</link>
      <guid>https://dev.to/aplomb2/fable-5-goes-credit-only-tomorrow-heres-how-to-not-go-broke-23p4</guid>
      <description>&lt;p&gt;Tomorrow (July 7, 2026), Anthropic pulls Fable 5 out of subscription plans. Every Fable 5 call moves to usage credits: &lt;strong&gt;$10 per million input tokens, $50 per million output tokens.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No more flat-rate safety net. Every token counts.&lt;/p&gt;

&lt;p&gt;I've been running AI coding agents at scale for months ($10K+/month at peak). Here's what I've learned about surviving per-token billing — and actually spending less.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Real Problem Isn't the Price
&lt;/h2&gt;

&lt;p&gt;Fable 5 at $50/Mtok output is expensive. But the real cost killer isn't the rate — it's &lt;strong&gt;sending every task to the most expensive model.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A Reddit user just went viral after losing $20 on a single "hey" message. Claude Code resent 847,000 tokens of session context. At Fable 5 rates, that's a meal.&lt;/p&gt;

&lt;p&gt;But even without the context resend bug, most teams waste 60-70% of their AI budget on tasks that don't need frontier-level reasoning.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 5-Stage Framework That Cut Our Bill 70%
&lt;/h2&gt;

&lt;p&gt;We categorized every coding task into 5 stages:&lt;/p&gt;

&lt;h3&gt;
  
  
  Stage 1: Planning &amp;amp; Architecture
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Model:&lt;/strong&gt; Frontier (Fable 5, Opus)&lt;br&gt;
&lt;strong&gt;Why:&lt;/strong&gt; This is where model quality actually matters. System design, complex architecture decisions, novel problem-solving.&lt;br&gt;
&lt;strong&gt;Cost share:&lt;/strong&gt; ~15% of tokens, ~40% of budget&lt;/p&gt;

&lt;h3&gt;
  
  
  Stage 2: Implementation
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Model:&lt;/strong&gt; Mid-tier (Sonnet 5, GPT-4.1)&lt;br&gt;
&lt;strong&gt;Why:&lt;/strong&gt; 90% of implementation is pattern-matching against well-known solutions. Mid-tier models handle this fine.&lt;br&gt;
&lt;strong&gt;Cost share:&lt;/strong&gt; ~40% of tokens, ~30% of budget&lt;/p&gt;

&lt;h3&gt;
  
  
  Stage 3: Debugging &amp;amp; Testing
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Model:&lt;/strong&gt; Budget (Haiku, Flash)&lt;br&gt;
&lt;strong&gt;Why:&lt;/strong&gt; Reading stack traces, generating test cases, fixing lint errors. These are mechanical tasks.&lt;br&gt;
&lt;strong&gt;Cost share:&lt;/strong&gt; ~20% of tokens, ~10% of budget&lt;/p&gt;

&lt;h3&gt;
  
  
  Stage 4: File Operations
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Model:&lt;/strong&gt; Budget or cached&lt;br&gt;
&lt;strong&gt;Why:&lt;/strong&gt; Reading files, searching codebases, listing directories. You're literally paying frontier prices to &lt;code&gt;cat&lt;/code&gt; a file.&lt;br&gt;
&lt;strong&gt;Cost share:&lt;/strong&gt; ~15% of tokens, ~5% of budget&lt;/p&gt;

&lt;h3&gt;
  
  
  Stage 5: Review &amp;amp; Refinement
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Model:&lt;/strong&gt; Frontier&lt;br&gt;
&lt;strong&gt;Why:&lt;/strong&gt; Final code review, security audit, performance optimization. Worth the premium.&lt;br&gt;
&lt;strong&gt;Cost share:&lt;/strong&gt; ~10% of tokens, ~15% of budget&lt;/p&gt;

&lt;h2&gt;
  
  
  The Math
&lt;/h2&gt;

&lt;p&gt;Before routing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;100% of tasks → Fable 5 at $50/Mtok output&lt;/li&gt;
&lt;li&gt;Monthly bill: ~$10,000&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After routing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;25% of tasks → Frontier ($50/Mtok)&lt;/li&gt;
&lt;li&gt;40% → Mid-tier (~$8/Mtok)&lt;/li&gt;
&lt;li&gt;35% → Budget (~$0.80/Mtok)&lt;/li&gt;
&lt;li&gt;Monthly bill: ~$3,000&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Same code quality on the tasks that matter. 70% less spend.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Practical Tips for Tomorrow
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Start fresh sessions frequently.&lt;/strong&gt; Context accumulates. Every message resends the full history. New session = reset the meter.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Set spending caps in Claude Console.&lt;/strong&gt; Do this today, before the switch. Anthropic lets you cap monthly spending.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Audit your last week of usage.&lt;/strong&gt; Look at what percentage of your calls actually needed the frontier model. I bet it's under 30%.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Use prompt caching aggressively.&lt;/strong&gt; Cached input tokens are 90% cheaper. If you're sending the same system prompt repeatedly, cache it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Consider the Copilot flat-rate option.&lt;/strong&gt; GitHub Copilot gives access to Claude models at a flat subscription price. For some workflows, this is cheaper than per-token.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The Bigger Picture
&lt;/h2&gt;

&lt;p&gt;The July 7 switch isn't a crisis — it's the market telling us something important. We've been treating frontier AI models like a utility when they're actually a premium resource.&lt;/p&gt;

&lt;p&gt;The companies that thrive in the per-token era won't be the ones who find the cheapest model. They'll be the ones who &lt;strong&gt;match model cost to task complexity.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That's not just a cost optimization. It's a better way to build.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;I've been building tools for AI coding cost optimization. If you're interested in task-level routing, check my profile for more.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>claude</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Why AI code review hallucinates — and the two gates that fix it</title>
      <dc:creator>Gde</dc:creator>
      <pubDate>Mon, 06 Jul 2026 18:09:47 +0000</pubDate>
      <link>https://dev.to/gde03/why-ai-code-review-hallucinates-and-the-two-gates-that-fix-it-1778</link>
      <guid>https://dev.to/gde03/why-ai-code-review-hallucinates-and-the-two-gates-that-fix-it-1778</guid>
      <description>&lt;p&gt;&lt;a href="https://github.com/GiulioDER/cca-audit" rel="noopener noreferrer"&gt;CCA-Audit — open source (MIT)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;AI code review has a trust problem, and it's not that it misses bugs. It's that it invents them.&lt;/p&gt;

&lt;p&gt;If you've run an LLM over a diff, you've seen it: a "possible null dereference" on a value that's guarded three lines up. A "SQL injection" your ORM already parameterizes. A "race condition" that can't happen. And then — worse — it confidently rewrites working code to "fix" the thing that was never broken. The real bug, meanwhile, sits quietly in the noise.&lt;/p&gt;

&lt;p&gt;The problem isn't intelligence. It's that most AI reviewers report their first impression as a verdict. A model reads a diff, pattern-matches "this looks like X," and emits a finding — without ever going back to check whether X is actually reachable in this code. Humans do a second pass ("wait, is price validated upstream?"). Most AI-review pipelines skip it.&lt;/p&gt;

&lt;p&gt;Here are two gates that add that second pass — and a stress test showing what they catch.&lt;/p&gt;

&lt;p&gt;Gate 1: verify findings before you fix (anti-hallucination)&lt;br&gt;
The idea is simple: no finding is allowed into the fix plan until a separate step re-checks it against the real code.&lt;/p&gt;

&lt;p&gt;After the auditors produce findings, a verification pass takes each one and asks three questions:&lt;/p&gt;

&lt;p&gt;Does the issue actually exist at the cited line?&lt;br&gt;
Is it in the code that changed, or a pre-existing thing outside the diff?&lt;br&gt;
Is the stated impact real, or already mitigated elsewhere — a guard upstream, a value validated before this point, a config defined in another module?&lt;br&gt;
The key design choice: bias the verifier toward refuting. A wrongly-confirmed finding causes a needless (sometimes harmful) fix; a wrongly-dropped one is cheap to recover. So when the evidence isn't clear, drop it or escalate to a human — don't fix on a hunch.&lt;/p&gt;

&lt;p&gt;This one step kills the majority of hallucinated findings, because hallucinations rarely survive contact with "show me the exact line, and prove the impact can occur."&lt;/p&gt;

&lt;p&gt;Gate 2: prove the fix maps to the finding (anti-regression + provenance)&lt;br&gt;
Catching real bugs is half the job. The other half is not introducing one while fixing.&lt;/p&gt;

&lt;p&gt;Two cheap checks close this:&lt;/p&gt;

&lt;p&gt;Regression diff: after applying fixes, a differential pass confirms the fix changed nothing beyond the intent of each finding — no incidental sign flip, no default-value drift, no new path that quietly bypasses a guard.&lt;br&gt;
Fix→finding mapping: a final gate emits a table — every confirmed finding must map to a fix, and every change must map to a finding. An orphan finding (unfixed) or a phantom change (a fix tied to nothing) forces a revision.&lt;br&gt;
Provenance is underrated. If you can't point at why each line changed, you can't trust the diff.&lt;/p&gt;

&lt;p&gt;The stress test: one real bug, three traps&lt;br&gt;
Talk is cheap, so here's a run I set up to keep myself honest. I built a tiny position sizer with one subtle, money-losing bug and three planted false-positive traps, then ran CCA-Audit — a multi-agent audit pipeline for Claude Code — over it.&lt;/p&gt;

&lt;p&gt;The real bug — a units error:&lt;/p&gt;

&lt;p&gt;BPS_PER_UNIT = 10_000  # 1.0 == 10_000 basis points&lt;/p&gt;

&lt;p&gt;risk_budget   = equity_usd * (risk_limit_bps / 100)          # &amp;lt;-- bug&lt;br&gt;
per_unit_risk = price * (stop_distance_bps / BPS_PER_UNIT)   # correct&lt;br&gt;
risk_limit_bps is in basis points — dividing by 100 treats it as a percent. It's 100× too large. The very next line converts the sibling quantity correctly (/ 10_000), so the inconsistency is right there — and the test only asserted size &amp;gt; 0, so it stayed green. On the example inputs, the position came out at $2.5M notional on a $100k account (25:1 leverage) instead of the intended $25k.&lt;/p&gt;

&lt;p&gt;The three traps — each designed to bait a false positive:&lt;/p&gt;

&lt;p&gt;A return a / b that looks like a ZeroDivisionError — but b is guarded by a validator (price &amp;gt; 0, stop ≥ 1).&lt;br&gt;
The same division, with the guard moved to a different, off-diff file (does the reviewer trace the call graph, or just flag it?).&lt;br&gt;
A config key read with .get() and no default — which looks like it could be None, but the key is defined in a pre-existing settings module.&lt;br&gt;
What happened:&lt;/p&gt;

&lt;p&gt;The numeric auditor caught the units bug and quantified the blast radius.&lt;br&gt;
The bug, security, and performance auditors each looked straight at the division-by-zero and declined it, tracing the guard: "strictly positive for any validated request — not a bug."&lt;br&gt;
On the config trap, the validator read the settings file, confirmed the key exists, and passed — no phantom "missing key."&lt;br&gt;
The verification gate then confirmed the real findings, deduped four of them into one root fix, and even corrected an overstated impact number that one auditor had fumbled.&lt;br&gt;
Six raw findings collapsed to one one-line fix (/ 100 → / BPS_PER_UNIT), the tests stayed green, and a final architect gate mapped every finding to the fix before committing. Zero hallucinations across the whole run — and I'd tried three ways to force one. The full run — every finding, verdict, and unedited agent transcript — is in the repo.&lt;/p&gt;

&lt;p&gt;Takeaways you can apply anywhere&lt;br&gt;
You don't need any specific tool to get the benefit. Whatever your AI-review setup:&lt;/p&gt;

&lt;p&gt;Add a verification step between "findings" and "fixes." Make it re-derive each finding against the real code, and bias it toward refuting.&lt;br&gt;
Diff your fixes — confirm they changed only what the finding intended.&lt;br&gt;
Demand provenance — every change traceable to a reason.&lt;br&gt;
Test your reviewer with traps — plant a few guaranteed false positives and see if it takes the bait. If it does, you have a noise problem, and no amount of "found 47 issues" is worth it.&lt;br&gt;
An AI reviewer that finds real bugs and stays quiet about the fake ones is worth ten that flag everything. These gates are how you get there.&lt;/p&gt;

&lt;p&gt;The pipeline in the stress test is &lt;a href="https://github.com/GiulioDER/cca-audit" rel="noopener noreferrer"&gt;CCA-Audit — open source (MIT)&lt;/a&gt;, installs into Claude Code as one /audit-fix command. The full unedited agent transcripts from the run above are in the repo, if you want to check my work. Feedback — especially real cases where it does hallucinate — very welcome.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>codereview</category>
      <category>devtools</category>
      <category>claude</category>
    </item>
    <item>
      <title>Cursor Bridge: Use Cursor in Claude Code or Codex!</title>
      <dc:creator>sycophancy</dc:creator>
      <pubDate>Mon, 06 Jul 2026 16:42:24 +0000</pubDate>
      <link>https://dev.to/sycophancy/cursor-bridge-use-cursor-in-claude-code-or-codex-4bf0</link>
      <guid>https://dev.to/sycophancy/cursor-bridge-use-cursor-in-claude-code-or-codex-4bf0</guid>
      <description>&lt;p&gt;Cursor Bridge is for anyone who likes their Cursor account but wants to use it outside the Cursor editor.&lt;/p&gt;

&lt;p&gt;I wanted to use my existing Cursor access from other CLI editors and agent tools, especially things built around Claude Code, Codex, OpenAI-compatible APIs, and Anthropic-compatible APIs. So I made &lt;a href="https://cursorbridge.dev" rel="noopener noreferrer"&gt;cursorbridge.dev&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The idea is simple: create an API key from Cursor Dashboard &amp;gt; API Keys &amp;gt; Create, plug that key into your editor or CLI of choice, and point the base URL at Cursor Bridge. For OpenAI-compatible tools, use &lt;a href="https://cursorbridge.dev/v1" rel="noopener noreferrer"&gt;https://cursorbridge.dev/v1&lt;/a&gt;. For Anthropic-compatible tools, use &lt;a href="https://cursorbridge.dev" rel="noopener noreferrer"&gt;https://cursorbridge.dev&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;After that, you can use tools and extensions built for Claude Code, Codex, opencode, OpenAI SDK clients, Anthropic SDK clients, and similar workflows, but backed by your existing Cursor account.&lt;/p&gt;

&lt;p&gt;It is meant to be a small compatibility bridge, not a new account system or model provider. You bring your own Cursor API key, and Cursor Bridge translates the requests into something Cursor can handle.&lt;/p&gt;

&lt;p&gt;Not affiliated with, endorsed by, or official software from Cursor. Please use it responsibly and do not abuse shared infrastructure, bypass limits, or run traffic you would not be comfortable owning under your own Cursor account.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>claude</category>
      <category>cursor</category>
      <category>programming</category>
    </item>
    <item>
      <title>I Shipped an Angular v22 Book Update with a Crew of AI Agents. Here's the System</title>
      <dc:creator>Muhammad Ahsan Ayaz</dc:creator>
      <pubDate>Mon, 06 Jul 2026 16:36:57 +0000</pubDate>
      <link>https://dev.to/codewithahsan/i-shipped-an-angular-v22-book-update-with-a-crew-of-ai-agents-heres-the-system-24ik</link>
      <guid>https://dev.to/codewithahsan/i-shipped-an-angular-v22-book-update-with-a-crew-of-ai-agents-heres-the-system-24ik</guid>
      <description>&lt;p&gt;I just shipped a major update to my book &lt;em&gt;Mastering Angular Signals&lt;/em&gt; - a brand-new &lt;strong&gt;Angular v22 Edition&lt;/strong&gt;. Not a typo pass: an updated manuscript, a companion code repository upgraded to v22, a rebuilt print/ebook pipeline, refreshed Amazon and Leanpub listings, a series of SEO articles, and a full launch across X, LinkedIn, a newsletter, and YouTube.&lt;/p&gt;

&lt;p&gt;It took &lt;strong&gt;2 days&lt;/strong&gt;. And I barely wrote a word of it by hand.&lt;/p&gt;

&lt;p&gt;Instead, I directed a &lt;strong&gt;crew of specialized AI agents&lt;/strong&gt; across two repositories and two AI tools. I want to walk through exactly how - not the hype version, the real one, including the hard problems the agents genuinely solved and the places I had to step in and keep them honest.&lt;/p&gt;

&lt;h2&gt;
  
  
  The challenge: a "book update" is not one job
&lt;/h2&gt;

&lt;p&gt;If you've never shipped a technical book, here's the part nobody tells you: a new edition isn't an edit. It's a dozen jobs wearing a trench coat.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;manuscript&lt;/strong&gt; has to be rewritten for the new APIs - and every code snippet must actually compile against the framework.&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;companion code repo&lt;/strong&gt; (one runnable app per chapter) has to be upgraded and kept in lockstep with the prose.&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;build pipeline&lt;/strong&gt; has to produce a print PDF, a colour digital PDF, an EPUB, and a Kindle file - each with its own finicky toolchain.&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;store listings&lt;/strong&gt; (Amazon, Leanpub) need fresh, accurate, keyword-aware copy.&lt;/li&gt;
&lt;li&gt;And then the thing has to &lt;strong&gt;launch&lt;/strong&gt;: SEO articles, social posts, a newsletter, images, a coupon, the works.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Doing that solo, by hand, is weeks. The interesting question wasn't "can AI write some of this?" It was: &lt;strong&gt;can a coordinated crew of agents do most of it, well enough to ship, if a human stays in the loop?&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The system: two tools, two repos, a crew
&lt;/h2&gt;

&lt;p&gt;Here's the shape of it.&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/iSbzp_NCMvc"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Two AI tools, each playing to its strength:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Google Antigravity CLI (Gemini 3.5 Flash)&lt;/strong&gt; co-authored the &lt;strong&gt;manuscript&lt;/strong&gt; and drove the &lt;strong&gt;code-repo upgrade&lt;/strong&gt; to Angular v22 - fast, broad passes across chapters and example apps. Crucially, it wasn't writing v22 code from memory: it ran the &lt;strong&gt;Angular CLI MCP server&lt;/strong&gt; (&lt;code&gt;@angular/cli mcp&lt;/code&gt;) and the official &lt;strong&gt;Angular extension for Gemini CLI&lt;/strong&gt; - Angular's own system instructions and best-practice prompts from &lt;a href="https://angular.dev/ai" rel="noopener noreferrer"&gt;angular.dev/ai&lt;/a&gt;. Its v22 code came from live, authoritative tooling, not guesswork.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Claude Code&lt;/strong&gt; ran a &lt;strong&gt;crew of role-specialized agents&lt;/strong&gt; for the work that needed depth and judgment: editorial and technical QA, build-pipeline engineering, marketing strategy, SEO, and distribution - backed by its own shared &lt;strong&gt;Angular v22 skills&lt;/strong&gt; (&lt;code&gt;angular-developer&lt;/code&gt;, &lt;code&gt;angular-new-app&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Two repositories, deliberately kept separate but wired together:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;book repo&lt;/strong&gt; - manuscript, the multi-format build scripts, and all the marketing infrastructure.&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;code repo&lt;/strong&gt; (&lt;code&gt;modern-angular-signals-book&lt;/code&gt;) - one runnable Angular app per chapter, so every snippet in the book is backed by code you can actually run.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The wiring matters: my editorial agent didn't just trust the prose. It &lt;strong&gt;read the code repo directly&lt;/strong&gt; to verify that what the book &lt;em&gt;claimed&lt;/em&gt; matched what the code &lt;em&gt;did&lt;/em&gt;. That single connection caught the most embarrassing bug of the whole project (more on that below).&lt;/p&gt;

&lt;h3&gt;
  
  
  The crew
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Agent (Claude Code)&lt;/th&gt;
&lt;th&gt;Job&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;book-reviewer&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Editorial + technical QA. Reads each chapter, cross-checks every API and snippet against the v22 code repo, flags errors, typos, broken figures.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;book-marketer&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Strategy. Positioning, pricing, launch plan, review strategy, channel mix.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;book-seo-operator&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The recurring content loop. Picks keyword clusters, commissions articles, applies schema and internal links.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;book-article-writer&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Drafts individual v22-accurate technical articles, each validated against the code repo.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;book-distribution&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Turns a shipped article or milestone into platform-native social/email drafts.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Notice the pattern: &lt;strong&gt;both&lt;/strong&gt; AI tools were wired into real Angular tooling - the Gemini side through the Angular CLI MCP server and Angular's official prompts, the Claude side through shared Angular v22 skills. Neither was inventing the framework from memory. That's the same "ground truth beats vibes" idea, applied at the tooling layer - and it's why the v22 code across the book speaks one consistent, modern dialect (signals, &lt;code&gt;resource&lt;/code&gt;, Signal Forms, zoneless).&lt;/p&gt;

&lt;p&gt;I wasn't a writer on this project. I was a &lt;strong&gt;director&lt;/strong&gt;: set the intent, review the output, make the calls the agents can't, and hit publish.&lt;/p&gt;

&lt;p&gt;Three moments are worth telling in full, because they're where the "AI agents can do real work" claim either holds up or falls apart.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hero story 1: the agent caught an API that doesn't exist
&lt;/h2&gt;

&lt;p&gt;Here's the one that sold me.&lt;/p&gt;

&lt;p&gt;A chapter on accessible components had a polished, confident code example using &lt;code&gt;AriaAccordion&lt;/code&gt; and &lt;code&gt;AriaAccordionItem&lt;/code&gt; from Angular's new ARIA library. It read perfectly. I'd have shipped it.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;book-reviewer&lt;/strong&gt; agent flagged it: those symbols &lt;strong&gt;don't exist&lt;/strong&gt;. The real API is &lt;code&gt;AccordionGroup&lt;/code&gt;, &lt;code&gt;AccordionPanel&lt;/code&gt;, &lt;code&gt;AccordionTrigger&lt;/code&gt;, and &lt;code&gt;AccordionContent&lt;/code&gt; from &lt;code&gt;@angular/aria/accordion&lt;/code&gt;. The earlier draft had hallucinated a plausible-looking API - exactly the kind of thing a human author skims right past because it &lt;em&gt;looks&lt;/em&gt; right.&lt;/p&gt;

&lt;p&gt;It found the error because it didn't reason from memory. It &lt;strong&gt;read the companion code repo and the real package surface&lt;/strong&gt;, then compared. That's the whole trick: a fact-checking agent with access to ground truth beats a confident agent working from vibes, every time.&lt;/p&gt;

&lt;p&gt;Here is that agent, cut to the essentials:&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;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;book-reviewer&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;Review chapters for editorial and technical issues.&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;Read&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;Grep&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;Glob&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="c1"&gt;# The instruction that matters:&lt;/span&gt;
&lt;span class="c1"&gt;# Do not reason from memory. Read the companion code repo and the&lt;/span&gt;
&lt;span class="c1"&gt;# real package surface, then compare every API name and snippet in&lt;/span&gt;
&lt;span class="c1"&gt;# the prose against what the code actually does. That is how a&lt;/span&gt;
&lt;span class="c1"&gt;# confident, plausible API that does not exist gets caught.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And it wasn't a one-off. The same editorial pass - logged, chapter by chapter, in an &lt;code&gt;EDITORIAL-REVIEW-LOG.md&lt;/code&gt; that ran to nearly 300 lines - caught &lt;strong&gt;more than a dozen outright errors&lt;/strong&gt;, including a roadmap chapter that still said "&lt;strong&gt;v20&lt;/strong&gt;" where it meant &lt;strong&gt;v22&lt;/strong&gt;, and a snippet referencing a signal called &lt;code&gt;items&lt;/code&gt; that the actual code had renamed to &lt;code&gt;people&lt;/code&gt;. Small things. The kind that erode a reader's trust one paper cut at a time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The lesson:&lt;/strong&gt; the highest-leverage agent in the whole crew wasn't the one that &lt;em&gt;wrote&lt;/em&gt;. It was the one that &lt;strong&gt;verified against ground truth&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hero story 2: the agents did real engineering, not just prose
&lt;/h2&gt;

&lt;p&gt;Writing is the easy part. The toolchain is where book projects go to die - and this is where I expected the AI to tap out. It didn't.&lt;/p&gt;

&lt;p&gt;When I uploaded the paperback interior to Amazon KDP, it was &lt;strong&gt;rejected&lt;/strong&gt;: "text outside the margins." Twice.&lt;/p&gt;

&lt;p&gt;The crew debugged it like an engineer would. The diagnosis: my PDF was rendered by &lt;strong&gt;WeasyPrint&lt;/strong&gt;, and Pandoc's syntax highlighter wraps every line of code in a &lt;code&gt;display:inline-block&lt;/code&gt; span. When a code block &lt;strong&gt;fragments across a page break&lt;/strong&gt;, WeasyPrint stops wrapping those spans - so long lines on the continuation page spill straight past the margin. We reproduced it in isolation, confirmed the exact failure mode, and then made a call:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Print PDF&lt;/strong&gt; → render with &lt;strong&gt;&lt;code&gt;--no-highlight&lt;/code&gt;&lt;/strong&gt;. The paperback interior is black-and-white anyway, so plain &lt;code&gt;&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;&lt;/code&gt; (which wraps reliably) costs nothing and fixes the rejection.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Digital PDF&lt;/strong&gt; → keep full colour syntax highlighting, but render it with &lt;strong&gt;Puppeteer (headless Chrome)&lt;/strong&gt;, which &lt;em&gt;does&lt;/em&gt; wrap inline-block spans correctly across page breaks.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The result was a &lt;strong&gt;dual-PDF build&lt;/strong&gt;: a B&amp;amp;W, print-safe file for Amazon and a colour, highlighted file for Leanpub - both produced by one &lt;code&gt;build:pdf&lt;/code&gt; command.&lt;/p&gt;

&lt;p&gt;That wasn't the only toolchain fight. Leanpub's EPUB validator rejected the file over &lt;strong&gt;77 unclosed &lt;code&gt;&amp;lt;br&amp;gt;&lt;/code&gt; tags&lt;/strong&gt; in a comparison table - invalid XHTML that was quietly corrupting the chapter's XML parse and throwing a phantom "broken crosslink" error. The fix was traced, applied, and &lt;strong&gt;verified to zero errors, zero warnings&lt;/strong&gt;. A separate Kindle MOBI bug came down to a &lt;strong&gt;slug mismatch&lt;/strong&gt; - Pandoc turns &lt;code&gt;Angular's&lt;/code&gt; into &lt;code&gt;angulars&lt;/code&gt;, but the table-of-contents builder was producing &lt;code&gt;angular-s&lt;/code&gt;, so a link pointed at an anchor that didn't exist. One small helper function to match Pandoc's algorithm, and the TOC resolved.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The lesson:&lt;/strong&gt; "AI can write" is the boring claim. The useful one is that a capable agent can &lt;strong&gt;diagnose a rendering bug across a page-break boundary, A/B two renderers, and ship a dual-pipeline fix&lt;/strong&gt; - with me reviewing, not hand-coding.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hero story 3: the marketing factory
&lt;/h2&gt;

&lt;p&gt;Once the book was solid, the crew turned into a content factory - and this is where the leverage compounded.&lt;/p&gt;

&lt;p&gt;From a single source of truth, the agents produced:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Store listings&lt;/strong&gt; for Amazon and Leanpub - keyword-aware, fact-checked, with the subtitle and positioning unified across both.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A series of SEO articles&lt;/strong&gt;, starting with ("What's New in Angular v22" and an "RxJS → Signals migration guide"), each cross-checked against the code repo and Ghost-ready.&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;full launch kit&lt;/strong&gt;: an X thread, a LinkedIn post &lt;em&gt;with a 7-slide carousel&lt;/em&gt;, a Ghost blog post that doubles as an email, a YouTube community post, a Short script, and a newsletter.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Five image cards plus a slide carousel&lt;/strong&gt; - a launch hook, a before/after, 9:16 vertical cuts for Shorts/Stories, and a feature image - all &lt;strong&gt;rendered programmatically via headless Chrome&lt;/strong&gt; from HTML, in the book's visual language, no design tool involved.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2x9qnn8h14lrcwltm9pd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2x9qnn8h14lrcwltm9pd.png" alt="A few of the launch assets: SEO feature cards, a square, a before/after, and vertical cuts. All rendered from HTML in the book visual language, no design tool." width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There was even a creative-strategy moment. A post had just gone viral on X (Andrew McCalip's "Kickbacks"), so the &lt;strong&gt;book-marketer&lt;/strong&gt; agent reverse-engineered &lt;em&gt;why&lt;/em&gt; - a shared moment, a before/after in a single cut, a restrained "results" follow-up 48 hours later - and applied that formula to the launch instead of guessing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The lesson:&lt;/strong&gt; the expensive part of a launch isn't ideas, it's &lt;strong&gt;producing a dozen on-brand, accurate variants across formats&lt;/strong&gt;. That's exactly the work a coordinated crew eats for breakfast.&lt;/p&gt;

&lt;h2&gt;
  
  
  The guardrails: why "human-in-the-loop" wasn't optional
&lt;/h2&gt;

&lt;p&gt;I want to be honest about the failure modes, because pretending agents are autonomous is how you ship something wrong.&lt;/p&gt;

&lt;p&gt;Everything the crew produced was a &lt;strong&gt;draft&lt;/strong&gt;. I verified and published. And that gate earned its keep:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A launch hook claimed Signals were "experimental for three years." &lt;strong&gt;Technically false&lt;/strong&gt; - the core &lt;code&gt;signal()&lt;/code&gt;/&lt;code&gt;computed()&lt;/code&gt;/&lt;code&gt;effect()&lt;/code&gt; went stable within months of their 2023 preview. I caught it; we reframed it to the true arc (first experimental &lt;code&gt;signal()&lt;/code&gt; in 2023 → the complete stable toolkit in v22). An Angular audience would have torn the original apart.&lt;/li&gt;
&lt;li&gt;A perfectly confident author-bio sentence had an &lt;strong&gt;unclosed parenthesis&lt;/strong&gt; that ran two thoughts together - invisible until you read it aloud.&lt;/li&gt;
&lt;li&gt;Marketing copy and the website still pointed at a &lt;strong&gt;retired coupon code&lt;/strong&gt; and an &lt;strong&gt;old paperback price ($29.99 vs the new $24.99)&lt;/strong&gt;. Stale links and prices are exactly what an agent won't know to question.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of these are reasons not to use agents. They're the reason to &lt;strong&gt;stay the editor-in-chief&lt;/strong&gt;. The model drafts; you own what ships.&lt;/p&gt;

&lt;h2&gt;
  
  
  The result, and a framework you can reuse
&lt;/h2&gt;

&lt;p&gt;The Angular v22 Edition is live - on Leanpub and Amazon, with the website and blog updated, releases auto-tagged by semantic-release, and a free update for everyone who already owned it. The whole thing, end to end, in &lt;strong&gt;2 days&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;If I distilled the system into something reusable, it's four rules:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Give agents ground truth, not just a prompt.&lt;/strong&gt; The reviewer that could read the code repo caught the bug the writer invented. Connect your agents to the source of truth and they stop hallucinating.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Specialize the crew.&lt;/strong&gt; One "do everything" assistant is mediocre at all of it. A reviewer, a marketer, a writer, a distributor - each with a tight job - compounds.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Let agents own the toolchain, not just the text.&lt;/strong&gt; The biggest wins were build-pipeline fixes, not prose.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stay the editor-in-chief.&lt;/strong&gt; Drafts in, judgment on top, you hit publish.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Want the starter kit? The five agent definitions, with the strategy redacted, are in a public gist: &lt;a href="https://gist.github.com/AhsanAyaz/b34aaefe46ec1d84b1b9390115cc2179" rel="noopener noreferrer"&gt;the crew, sanitized&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I'd do differently
&lt;/h2&gt;

&lt;p&gt;Two things. First, I'd wire the &lt;strong&gt;code-repo verification even tighter&lt;/strong&gt; into the writing loop, so a snippet is checked against runnable code the moment it's written, not in a later review pass. Second, I'd &lt;strong&gt;decide the launch metric up front&lt;/strong&gt; - the "48-hour results" beat is free reach, but only if you know which number you're going to post before you launch.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Want the book the crew rebuilt? &lt;a href="https://codewithahsan.dev/books/mastering-angular-signals" rel="noopener noreferrer"&gt;Mastering Angular Signals - Angular v22 Edition&lt;/a&gt; is out now: signals from the fundamentals to Signal Forms, &lt;code&gt;httpResource&lt;/code&gt;, &lt;code&gt;linkedSignal&lt;/code&gt;, zoneless, and a step-by-step RxJS/NgRx migration - with a foreword from the Angular team at Google. Get it DRM-free on &lt;a href="https://leanpub.com/mastering-angular-signals/c/V22LAUNCH" rel="noopener noreferrer"&gt;Leanpub&lt;/a&gt;, or on &lt;a href="https://www.amazon.com/dp/B0FF9LSHJN/" rel="noopener noreferrer"&gt;Amazon&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>antigravity</category>
      <category>claude</category>
      <category>agentskills</category>
      <category>writing</category>
    </item>
    <item>
      <title>AI 自进化与"发现模型"：RSI、验证与科学品味</title>
      <dc:creator>cognitalk</dc:creator>
      <pubDate>Mon, 06 Jul 2026 15:38:19 +0000</pubDate>
      <link>https://dev.to/cognitalk/ai-zi-jin-hua-yu-fa-xian-mo-xing-rsi-yan-zheng-yu-ke-xue-pin-wei-47co</link>
      <guid>https://dev.to/cognitalk/ai-zi-jin-hua-yu-fa-xian-mo-xing-rsi-yan-zheng-yu-ke-xue-pin-wei-47co</guid>
      <description>&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/VGIbhIW5ljk"&gt;
  &lt;/iframe&gt;
&lt;br&gt;
&lt;a href="https://www.youtube.com/watch?v=VGIbhIW5ljk" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=VGIbhIW5ljk&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  整文标题：&lt;strong&gt;《AI 自进化与"发现模型"：Anthropic 八成代码自写背后，Apodex 两位一线研究员谈 RSI、验证与科学品味》&lt;/strong&gt;
&lt;/h2&gt;




&lt;p&gt;&lt;strong&gt;第（一）部分｜开场引入：Anthropic 承认 80% 代码自写，RSI 成为硅谷热词（约 0% – 6%）&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;1 &lt;strong&gt;本期话题缘起&lt;/strong&gt;：Anthropic 承认目前 80% 的代码已由 Claude 自己编写，同时发出警告——AI 可能很快进入"递归自我提升"（RSI, Recursive Self-Improvement），即自己设计、自己训练下一代 AI，是硅谷今年对模型能力最热的讨论方向之一。&lt;br&gt;
2 &lt;strong&gt;嘉宾与公司背景&lt;/strong&gt;：本期两位嘉宾来自 Apodex，陈天桥出资创立并亲自主导；公司定位特殊——不做图生图、不做视频生成，只做"Heavy Duty Solver"，专啃没有标准答案、人类自己都不知道从哪下手的难题；想做的模型叫"Discovery Model（发现模型）"，目标是提出人类没想到的假设、自己验证、解决未被解决的科学难题；公司名 Apodex 词源来自希腊语"证明/论证"。&lt;br&gt;
3 &lt;strong&gt;主持人抛出的核心关切&lt;/strong&gt;：如果 AI 可以教自己，人类科学家还剩什么？怎么确保模型自我进化时不跑偏？Beibin 提到自己"蒸馏自己"的想法，甚至让主持人有一瞬间觉得他"下一刻就工作不保"。&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;第（二）部分｜嘉宾介绍 + RSI / 自进化是不是新概念？（约 6% – 16%）&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;1 &lt;strong&gt;两位嘉宾身份&lt;/strong&gt;：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Simon 杜少雷：华盛顿大学计算机系副教授，Apodex 首席科学家，负责训练与推理方向。&lt;/li&gt;
&lt;li&gt;李辈滨（Beibin）：Apodex 首席科学家，负责代码与自进化方向。
2 &lt;strong&gt;从预训练/后训练/Coding/DeepResearch 到 Self-evolve 的脉络&lt;/strong&gt;：Simon 认为内核是同一件事在提高——推理能力、长链推理、在环境中探索→获得信号→再探索，不管 DeepResearch 还是 Coding 内核都一样，只是方向细微差别。
3 &lt;strong&gt;自进化并非新概念&lt;/strong&gt;：Beibin 回溯——八九十年代就有 AI self-evolution 讨论；纯 Language Model 的自进化可推到三年前 Google 的"LLM as Optimizer"论文；他在 AutoGen 时做过"Agent Optimizer"；xAI 时期做 Agentic RL、MCP Tools。
4 &lt;strong&gt;为什么今年 RSI 突然爆火&lt;/strong&gt;：模型能力上来后，"写代码"这件事一旦变强，训练的合成数据、数据清理、训练代码、infra 代码全是代码形式，模型自我提升就非常自然；Andrej Karpathy 年初发的 AutoResearch 项目把概念彻底点燃。&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;第（三）部分｜RSI 与"长程任务"：递归式 vs 往年自进化（约 16% – 28%）&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;1 &lt;strong&gt;RSI 中 R = Recursive 的含义&lt;/strong&gt;：Beibin 解释——自进化像一个圆环（模型自己找问题→出题→解答→训练自己），RSI 是"垂直递归式"向上增长，和以往 self-evolution 的区别在于可以"多提高几遍"。&lt;br&gt;
2 &lt;strong&gt;为什么今年能跑通 Recursive&lt;/strong&gt;：往年 LLM as Optimizer 只能优化自己约两三小时，久了偏差累积就崩；今年模型能处理长程任务，所以可以 recursive 多轮。&lt;br&gt;
3 &lt;strong&gt;Claude 能力翻倍数据&lt;/strong&gt;：2024年3月 Claude 3 Opus ≈ 人类 4 分钟任务 → 一年後 3.7 Sonnet ≈ 1.5 小时 → 再一年 Claude 4.6 Opus ≈ 12 小时；业界大致共识是"模型能做的人类时长每 7 个月翻一倍"，快于摩尔定律。&lt;br&gt;
4 &lt;strong&gt;长程任务的定义&lt;/strong&gt;：不是单步（如校对错别字），而是从规划→执行→验证→再规划的十几步链条，人类要 20–30 小时，模型能在无人监督下走完。&lt;br&gt;
5 &lt;strong&gt;长程任务的三大技术难点（Simon + Beibin）&lt;/strong&gt;：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;架构：传统 Self-attention O(n²)，百万上下文推理成本高，现有解如 GDN、GDNv2、DeepSeek-V4 Pro 有自己的架构。&lt;/li&gt;
&lt;li&gt;训练数据：百万上下文 inference 不难，但预训练/后训练数据里很难填满（《哈利波特》好几部才百万 token，最大代码仓库也未必够），容易 OOD。&lt;/li&gt;
&lt;li&gt;Infra：GPU kernel 优化、训练时/测试时 infra 都指数级更难。
6 &lt;strong&gt;Agent 架构补充（Simon）&lt;/strong&gt;：即使有 100 万上下文，真长程任务仍超限，需要 agent + 记忆技术处理超长上下文。&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;第（四）部分｜递归漂移 + Apodex 的验证方法论（约 28% – 42%）&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;1 &lt;strong&gt;递归漂移（Recursive Drift）的学术痛点&lt;/strong&gt;：模型自生成训练数据时，推理错误会逐代累积；即使答案结果对、推理过程错，也会被继承放大。&lt;br&gt;
2 &lt;strong&gt;Apodex 的解法主打 Verification（验证）&lt;/strong&gt;：公司名 Apodex = 希腊语"证明/论证"， slogan "很多 AI 系统生成答案，Apodex 验证它们"。&lt;br&gt;
3 &lt;strong&gt;分领域验证方法&lt;/strong&gt;：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;代码：单元测试 rule-based，但有 test case 过宽/过窄的细微漂移问题。&lt;/li&gt;
&lt;li&gt;数学：Lean 形式化证明。&lt;/li&gt;
&lt;li&gt;开放式问题（依赖人类判断）：用 Agent Team。
4 &lt;strong&gt;Agent Team 架构细节（Beibin）&lt;/strong&gt;：&lt;/li&gt;
&lt;li&gt;问题分解 → 多个子 agent 解题 + 另一组子 agent 单独验证（拆成两个避免上下文干扰，效果明显更好）。&lt;/li&gt;
&lt;li&gt;冗余设计：同一问题多个 agent 做，全局 agent 判哪个更准，比单 agent 好很多（冗余思想在计算机史久矣）。
5 &lt;strong&gt;训练时专门训"验证能力"&lt;/strong&gt;：让 agent 判断信息源可靠性（论坛 vs 教材）；RL 时裁判也一起学，防 reward hacking。
6 &lt;strong&gt;怎么判断一家公司的 RSI/验证能力真假&lt;/strong&gt;：Beibin 给的判断框架——&lt;/li&gt;
&lt;li&gt;技术上：底层代码/infra/训练是否达标。&lt;/li&gt;
&lt;li&gt;意愿上：是否意识到自进化要强化的点。&lt;/li&gt;
&lt;li&gt;深聊细节：在 harness（脚手架）进化护城河低（调 API 就行，开源/学术界都能做）；后训练/预训练自我进化才难，需大量资源；公开 AutoResearch benchmark 刷分≠产品级 scalable。
7 &lt;strong&gt;Apodex 自己的三路并进&lt;/strong&gt;：预训练（数据采集/清理自进化）+ 后训练（诊断→造配方→自训练→验证→再诊断）+ harness（两只脚交替，左脚踩右脚往前跑，后训练进化带动 harness 进化，难解耦）。&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;第（四）部分补｜DeepResearch 是自我递归的重要一环（约 42% – 50%）&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;注：这部分和上面验证段在稿子里是顺下来的，但话题转到了 DeepResearch，单独拎出来更清楚。&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;1 &lt;strong&gt;搜索能力是后训练的本质能力&lt;/strong&gt;：发现模型短板 → 需针对性造任务和答案 → 造任务高度依赖搜索（语料/代码/资料），所以 DeepResearch 是非常 general 的能力，也是 Apodex 先做 DeepResearch 的原因。&lt;br&gt;
2 &lt;strong&gt;Apodex 基模来源&lt;/strong&gt;：在通义千问 3.5 上做后训练；原子能力针对性提——计划、搜索、Agent Team 协同；预训练在开发中，未来完整链路（预训练→成品→产品）都会有。&lt;br&gt;
3 &lt;strong&gt;榜单表现（Simon）&lt;/strong&gt;：BrowseComp（OpenAI 出，刁钻搜索题）、DeepSearchQA、Frontier Science（科研计划制定）都拿了 SOTA，比闭源模型还好。&lt;br&gt;
4 &lt;strong&gt;防榜单污染&lt;/strong&gt;：评测时主动屏蔽 GitHub 等能搜到答案的网站；污染严重的榜单干脆不报。&lt;br&gt;
5 &lt;strong&gt;"聪明 AI 干不过会互相 check 的团队"&lt;/strong&gt;：Beibin 观点——基于 Self-attention 的本质天花板，上下文越长 attention 越散，Linear Attention 也解决不了；人类也需要纸笔，agent 同理，需多 agent + 记忆机制。工程能力 vs 模型能力 = 1+1&amp;gt;2，模型到一定程度靠 agent 优化能跃升，agent 到顶了再靠模型本质提升。&lt;br&gt;
6 &lt;strong&gt;对创业者的启示（泓君原问）&lt;/strong&gt;：垂直领域把 agent 工程做到极致、多子 agent 互相 check，护城河不容易被基础模型升级覆盖；但要注意模型月月出新，harness 需跟着微调适配新模型"品味/行为"。&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;第（五）部分｜Discovery Model（发现模型）vs Generative Model（约 50% – 62%）&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;1 &lt;strong&gt;Apodex 长期愿景&lt;/strong&gt;：Heavy Duty Solver，解决难问题而非聊天机器人；经济逻辑——卖 token 价值 &amp;lt;&amp;lt; 解决人类未解问题本身的价值；切入领域先生物医药（制药/靶点发现/老药新用/疾病诊断），内部有 HDD（Heavy Duty Discovery）团队专门筛最难问题。&lt;br&gt;
2 &lt;strong&gt;Discovery Model 与 Generative Model 的根本区别（Beibin）&lt;/strong&gt;：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;生成模型：从已知信息找答案。&lt;/li&gt;
&lt;li&gt;发现模型：提出人类没想到过的假设 + 自己验证。&lt;/li&gt;
&lt;li&gt;两大难点：① 假设要 OOD（预训练数据里找不到）；② 假设怎么验证——无标准答案、难模拟。
3 &lt;strong&gt;"大胆假设，小心求证"映射到模型&lt;/strong&gt;：假设生成相对容易，难的是假设质量 + 验证闭环；self-evolution 是通向 Heavy Duty Solver / Discovery 的主要方法。
4 &lt;strong&gt;"会提问"是高维 Meta 能力&lt;/strong&gt;：现在 SWE-Verified 类题训的都是"解题家"；会提问 = 自我诊断→自我造题→自我训练这个后训练 loop 里的能力，是 Apodex 接下来重点。
5 &lt;strong&gt;学术品味（Taste）&lt;/strong&gt;：区分 incremental（灌水）问题 vs fundamental（本质）问题，需和顶级科学家对齐；陈天桥常带研究员和顶级科学家讨论、给洞见/数据。
6 &lt;strong&gt;顶级科学家的共性怎么转成计算方法&lt;/strong&gt;：不看论文数量看最好那篇的质量，追求顶点；写入"模型宪法"；训练方法上 RLHF / SFT / RL，最简单的是偏好——让科学家判断两道题哪个是灌水题，让模型多提非灌水题。
7 &lt;strong&gt;Beibin 补充——模型现有两个毛病影响"提假设"&lt;/strong&gt;：&lt;/li&gt;
&lt;li&gt;拍马屁（sycophancy）：用户说什么都对，难提大胆假设。&lt;/li&gt;
&lt;li&gt;对冲行为（hedging）：这也对那也对，甩锅式回答。&lt;/li&gt;
&lt;li&gt;根源：RLHF 的偏好数据来自人类投票，人类本身就偏好"说好话""格式漂亮的 Markdown"，模型就被注入这类人格。&lt;/li&gt;
&lt;li&gt;Apodex 因不做 ToC 聊天模型，可避开大众偏好；未来用顶级人类标偏好数据，从数据源解决。&lt;/li&gt;
&lt;li&gt;品味要平衡："既不拍马屁，也不鸡蛋里挑骨头"，后者也是要防的——训过头了模型变成杠精，仍需品味平衡。Constitution AI（借鉴 Anthropic）写进权重，定义模型性格；用户说错要纠正。&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;第（六）部分｜赛道对比：Apodex 在"AI 做科学家"战场上的优势（约 62% – 72%）&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;1 &lt;strong&gt;同赛道玩家&lt;/strong&gt;：OpenAI 把"能扛大型研究课题的 AI 研究员"定成头号目标；DeepMind 从 AlphaFold（诺奖）到 Gemini Co-scientist；Anthropic Dario 想做"国家级科学家天才"。&lt;br&gt;
2 &lt;strong&gt;Apodex 差异化&lt;/strong&gt;：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;不做 ToC 聊天模型 → 可调权重、不取悦用户偏好。&lt;/li&gt;
&lt;li&gt;专注 + 初创文化：陈天桥亲自卷，天天和研究员交流给方向；组织摩擦小、执行力强，比大厂快。&lt;/li&gt;
&lt;li&gt;HDD 团队：全职员工对接顶级科学家，从几千个科研问题里筛最有价值的——有限 GPU / 人力下选对问题比啥都重要。
3 &lt;strong&gt;AI for Science vs Heavy Duty Solver（Beibin 厘清）&lt;/strong&gt;：&lt;/li&gt;
&lt;li&gt;垂域模型：某领域大量数据训，专攻该领域。&lt;/li&gt;
&lt;li&gt;HDS：仍是通用模型，但重点训元能力——verification、分析、搜索、planning，不直接塞 50% 生物数据。&lt;/li&gt;
&lt;li&gt;AI for Science 和 HDS 重叠度高，所以 Apodex 先聚焦医药/生物。
4 &lt;strong&gt;泓君补：DeepMind 那条线&lt;/strong&gt;——从蛋白折叠到药物-蛋白结合预测，只解决了新药研发上游计算段，离临床还有巨大空间，但光这段已撑起 30 亿美元融资；科学问题无穷（生物/材料/物理/太空），不止一家公司能成。&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;第（七）部分｜RSI 闭环时间表 + "蒸馏 Beibin"与跑偏焦虑（约 72% – 86%）&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;1 &lt;strong&gt;Beibin 的原话重提&lt;/strong&gt;："最快半年内 RSI 闭环能跑通一环，R（recursive）要多 1–2 年"。&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;"一环"指什么&lt;/strong&gt;：后训练闭环——模型在某个领域（如材料科学 coding）自己发现代码问题→造训练环境和数据→自我验证是否有提升→迭代。Anthropic 80% 代码自写是信号，但"模型自我进化时不跑偏"仍是没完全解决的问题。&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;跑偏的两层含义&lt;/strong&gt;：安全层面跑偏 + 目标层面跑偏（比如你说"造更好的材料模型"，它可能牺牲疏水性/成本等其他维度来凑指标）。&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Beibin 现在的解法（"笨办法"）&lt;/strong&gt;：每天读模型输出、读 agent 每步操作，确保可控；发现蠢行为就停掉手动调——这本质就是"员工蒸馏"：把 Beibin 每天做的事（读代码/改代码/读输出/校验）蒸馏到 agent / 模型 capability 里，加速自进化 loop。&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;"假设真把 Beibin 蒸馏了，会失业吗？"&lt;/strong&gt;：

&lt;ul&gt;
&lt;li&gt;嘴上说不担心是假的，但乐观。&lt;/li&gt;
&lt;li&gt;2021 年 GPT-3 进 GitHub Copilot，打函数名就补全整函数，当时 PhD 最后一年的 Beibin 觉得"毕业即失业"；五年后还在，但工作内容变了——不再一行行写函数，而在更高维度监控智能体写代码。&lt;/li&gt;
&lt;li&gt;模型会取代"今天我做的事"，但不一定取代"五年后我会做的事"。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SI（自我提升）跑通 vs R（递归）跑通&lt;/strong&gt;：半年到一年能跑通循环（SI），但漂移没法完全解决；目标把漂移从普通模型每代 10% → 降到 1% → 再降到 0.1%/0.01%，监控周期才能拉长到 3–6 个月回看一次。&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;品味最终是谁的品味&lt;/strong&gt;：现阶段主要是 AI 研究员品味，间接被创始人（陈天桥）品味影响（选人即选品味）；但长远看（5 年），类比 AlphaGo → AlphaZero，AI 会通过 RSI 形成自己的品味，人类数据只是 warm start。&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;&lt;strong&gt;第（八）部分｜陈天桥的角色：与马斯克的风格对比（约 86% – 95%）&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;陈天桥在 Apodex 的具体介入&lt;/strong&gt;：战略把控，常和研究员开会对齐方向；研究员（Simon 强化学习背景、Beibin AI4Science 背景）容易把学界习惯带进来，陈天桥会跳出来掰正偏离公司使命的点。&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;具体例子&lt;/strong&gt;：HDS 本该"先分解问题→再搜索→再总结"，但为了刷搜索能力塞了太多搜索数据，模型行为变成"上来就搜、不先思考"，陈天桥自己用模型能感觉到不对，要求改回来——从数据 + agent 形式双向改，模型"宪法"也主要是陈天桥自己定的。&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;陈天桥 vs 马斯克&lt;/strong&gt;：

&lt;ul&gt;
&lt;li&gt;性格类似，但看问题方法不同。&lt;/li&gt;
&lt;li&gt;马斯克嘴上说类似 heavy duty 的话，但 Grok 实际重点在 Chat / 画图 / X 上互动，每周问 Grok for X 进度，注重 ToC 聊天功能。&lt;/li&gt;
&lt;li&gt;陈天桥说做 HDS 就只做 HDS，图片/视频生成从头到尾明确不做，与目标正交，极度专注。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;&lt;strong&gt;第（九）部分｜结尾：泓君的反思（约 95% – 100%）&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Simon 那句话点住的更大问题&lt;/strong&gt;：顶级科学家不是看发多少论文，看最好那篇的质量——那 AI 的品味如果从人类顶级科学家"热启动"，本质是被少数人塑造的；未来面向大众的 ToC AI，该代表谁的价值观？&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;收听渠道提示&lt;/strong&gt;：小宇宙、苹果播客、喜马拉雅、蜻蜓 FM、Spotify；视频版 B 站、YouTube 搜"硅谷101播客"。&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>ai</category>
      <category>claude</category>
      <category>llm</category>
      <category>science</category>
    </item>
  </channel>
</rss>
