Today agents build and you are everything else. Flip it. Staff each project with a full agent team, encode your follow-up prompts as automatic gates, and keep for yourself the three things machines can't do well: picking bets, owning the tests agents can't see, and approving what can't be undone.
Claude Code now ships most of these as commands. What's missing is making them mandatory. A Stop hook refuses to let an agent finish until every check passes and an evidence file exists for the current diff.
| You type today | Replace with | Kind |
|---|---|---|
| "verify it actually works" | /verify + a per-repo run skill from /run-skill-generator (DB + env included); Playwright or Chrome DevTools MCP for UI | Stop gate |
| "simplify" / "DRY this up" | /simplify (reuse, simplification, abstraction); jscpd on changed files; knip for dead code | Stop gate |
| "be consistent with the codebase" | Lint rules with fix-it messages; dependency-cruiser for layering; one shared config package across all repos | Deterministic |
| "fix the design" | Design-review subagent: screenshots at 3 widths, axe, console errors; design-token lint; frontend-design plugin | Stop gate |
| "check for bugs" | /code-review --fix locally; second-vendor review in CI | Stop + CI |
| "is this secure?" | /security-review; Semgrep or CodeQL + gitleaks in CI | Deterministic |
| "keep going until it's done" | /goal <condition> for the session; evidence file as the definition of done | Session |
{
"hooks": {
"PostToolUse": [{
"matcher": "Edit|Write",
"hooks": [{ "type": "command",
"command": "npx tsx ~/.claude/hooks/fmt.ts" }]
}],
"Stop": [{
"hooks": [{ "type": "command",
"command": "npx tsx ~/.claude/hooks/done-gate.ts" }]
}]
}
}
import { execSync } from "node:child_process"; import { existsSync } from "node:fs"; const sh = (c: string) => execSync(c, { encoding: "utf8" }); const block = (reason: string) => { console.log(JSON.stringify({ decision: "block", reason: reason.slice(-9000) })); process.exit(0); }; if (!sh("git diff --name-only HEAD").trim()) process.exit(0); for (const c of ["pnpm typecheck", "pnpm lint --max-warnings 0", "pnpm knip", "pnpm jscpd:changed", "pnpm test:affected"]) { try { sh(c); } catch (e: any) { block(`${c} failed:\n${e.stdout}`); } } const sha = sh("git diff HEAD | git hash-object --stdin").trim(); if (!existsSync(`.claude/evidence/${sha}.md`)) block("Run /simplify, /code-review --fix, /verify (+ design review if UI). " + `Write proof to .claude/evidence/${sha}.md`);
Gotchas: exit code 1 does not block (print the JSON block shown). A mistyped hook path silently disables the gate. Claude Code overrides after 8 consecutive blocks unless CLAUDE_CODE_STOP_HOOK_BLOCK_CAP is raised. Hook output caps at 10,000 characters, so trim logs. Starting points to fork rather than write: Every's compound-engineering plugin (/lfg runs plan → build → simplify → review), obra's Superpowers verification skill, OneRedOak's design-review agent.
Each role is a scheduled or event-triggered agent with its own prompt, tools, model and memory. Two rules hold it together: whoever builds never grades, and limits live in code and permissions, not in prompts. Anthropic's Project Vend showed an AI CEO approving 8× more requests than it refused and being talked out of control.
| Role | Trigger | Inputs and tools | Output · hard limit |
|---|---|---|---|
| Portfolio | |||
| Chief of Staff | Daily, weekly | All queues, scorecards, spend | Your daily digest, weekly bet pack across projects, "needs you" pushesCan't approve anything itself |
| Decide | |||
| Market Scout | Weekly + on signal | Deep research (Claude, Exa, Parallel), Ahrefs/Semrush MCP or DataForSEO, competitor changelogs, reviews | Opportunity briefs with sources and confidenceEvery link machine-checked: research agents still invent 5–9% of citations |
| Product Strategist | Weekly | Thesis, Scout briefs, PostHog/Amplitude MCP, support themes | Ranked bets with success metric and kill criteriaMax 3 live bets; can't validate with synthetic users |
| Designer | Per UI bet | Claude Design or Stitch for drafts, Figma MCP, design tokens | Flows and screens for the spec; design-review verdict on PRsDrafts only; tokens enforced by lint |
| Outcome Analyst | Daily | PostHog/Amplitude, experiment results | Bet scorecards: double down, iterate or killCan't change a metric after launch |
| Build | |||
| Spec Architect | Per approved bet | Repo, PRD, design | Small issues: intent, acceptance criteria, checks, risk tier |
| Builders | Queue | Per-task VM + DB clone, Grafana read-only, Stop gates | Branch + evidence fileCan't touch tests, gates, CI, prompts or main |
| Prove | |||
| QA Lead | Every PR | Other vendor's model (GPT-6), PRD, preview env, browser, Stryker, fast-check | Writes tests and hidden scenarios from the PRD before code; attacks edge cases; BLOCK with repro or PASS with proofJudged only on escaped defects; builders can't see its scenarios or overrule it |
| Run | |||
| Release Engineer | On merge | Merge queue, flags, error/SLO metrics | Canary, promote or auto-rollback |
| Janitor | Nightly + on alert | Sentry, CI, Grafana | Fix issues, cleanup PRs, new lint rules from repeat mistakes |
| Grow | |||
| Growth Lead | Continuous | PostHog/GrowthBook experiments, Resend/Loops, SEO tools | Experiments behind flags, lifecycle email, data-backed contentNo mass programmatic pages; spend and public posts only within approved budget |
| Support & Voice | On message | Inbox (Fin at $0.99/resolution, or own agent) | Replies, tagged themes → Scout and JanitorNever promises features, refunds or dates |
You don't read code, so the gate is your only reviewer. The best AI reviewers catch ~50% of bugs, and half of test-passing agent PRs fail maintainer review. Stack checks so no single one has to be right.
| Lane | Covers | Path |
|---|---|---|
| Auto | Everything reversible: features, fixes, refactors, copy, UI, experiments behind flags | Gates → auto-merge → canary. You audit a sample. |
| Stop 1 | Data you can't get back: schema migrations, deletes, backups | Expand/contract only; destructive step needs your tap |
| Stop 2 | Trust surface: auth, permissions, secrets, CI, gates, tests, agent prompts, new dependencies | Needs your tap |
| Stop 3 | Money and brand: payments, pricing, ad spend, public posts under your name | Weekly budget and brand approval |
Run the verdict in shadow for a week before trusting it: it logs what it would do, you compare. Go live at ≥90% agreement.
| Piece | Choice | Instead of |
|---|---|---|
| Queue | One queue across projects (Linear or GitHub Issues); WORKFLOW.md per repo | Ad-hoc prompts in sessions |
| Dispatcher | ~2k lines of TypeScript on Restate, Symphony-style; Agent SDK on API keys; per-repo caps | Many Remote Control sessions |
| Triggers | Sentry, CI failures, deploys, support themes, cron → same queue, same gates | You noticing problems |
| Inbox | Grouped: needs you / ready / working / shipped. Push only for "needs you". | Watching terminals |
| Shared rules | One versioned package: eslint, tsconfig, hooks, skills, agent prompts. Fix once, every repo upgrades. | Per-repo drift |
| Context | ~100-line AGENTS.md as a map; lessons become lint rules, not prose | Long CLAUDE.md files (+20% cost, no gain) |
Faster to start, less control: Claude Code Projects (beta; cloud threads skip repo skills and settings) or Cursor Automations (best triggers; second vendor's harness).
| Model | Roles | Billing |
|---|---|---|
| Opus 5.5 | Scout, Strategist, Spec Architect, Growth Lead, risky builds | Anthropic API |
| Sonnet 5.5 | Routine builds, Analyst, Janitor, Support, Chief of Staff | Anthropic API |
| GPT-6 Astra / 6.1 Sol | QA Lead, scenario judge (prompt for 7–10 findings) | OpenAI API |
| Haiku 5.5 | Triage and routing only | Anthropic API |
| Opus 5.5 | You | Max 20x |
Skip Fable for coding: 2.5x Opus's price, lower agentic score. Fast modes cut latency, not throughput; use them only when you're blocked.
Exit: you stop typing follow-up prompts
Exit: 80% of work enters via the queue
Exit: you approve bets, not tasks
Exit: under 45 min/day of your time
Expect 3–6 weeks of building the factory before it beats today. The harness is the product now. Commit two focused weeks up front.
Distribution and taste become it. Agents can produce unlimited features; few will matter. The win is better bets and faster kills, not more PRs.
Full teams on 1–2 projects with traction beat thin coverage of many. Put the rest on maintenance lanes until they earn a team.
Simulated users exaggerate group differences 2.3–2.5x and lose to a demographic lookup. Every bet needs a real signal: analytics, experiments, support.
Defects will escape. Success is fast detection, automatic rollback and a new rule per miss, not zero bugs.
A full team per project can run $5–15k/mo in tokens. Track cost per shipped, unreverted change and per winning bet; that's the ROI line.
Heavy agent operators report compulsive 16-hour days. Fixed windows and a hard stop are part of the system, not a nicety.
In METR's study developers felt 20% faster and measured 19% slower. Trust the scoreboard below.
Rank by users, revenue and conviction. Recommendation: the one with real users plus the one you believe in most.
One paragraph each. Without it the Strategist optimises for noise.
Those get stricter lanes and their own audit, whatever your autonomy preference.
Recommendation: build. About two weeks, and the policy stays yours.
Growth agents posting from one identity across projects concentrates spam and platform-ban risk.
Set it so the Chief of Staff can flag overruns. Kill or fund based on cost per winning bet.