Claude Code · Cursor · Codex
I was building software long before coding agents.
I learned the long way: reading a codebase, writing the code, reviewing it line by line. Agents compress the distance between a decision and a diff. I still take the keyboard back.
-
Claude (opens in a new tab)
Anthropic
Claude Code
Plan, spec, and review
Plan mode first. intent.md, then spec.md, then plan.md.
-
Cursor (opens in a new tab)
Anysphere
Cursor
The file I am looking at
Composer in the tree. Figma, browser, Vercel, Sentry in the same session.
-
OpenAI Codex (opens in a new tab)
OpenAI
Codex
Parallel implementation
Same AGENTS.md and hooks. I review the artifact, not the stream.
The loop I actually run
-
01 Plan
intent.md
I write the problem. Nothing is designed until I accept it.
-
02 Design
spec.md
Taste, brand, and the security boundary sit in the session before UI exists.
-
03 Build
plan.md
I interrogate blast radius. Then Claude Code, Cursor, or Codex implement.
-
04 Test
Playwright, axe
Tests ship with the code. A Stop hook asks if this session ran them.
-
05 Deploy
the PR
I still merge. Auth, money, and merchant data never auto-accept.
-
06 Maintain
incident.md
A production miss writes the next intent. The loop does not end at merge.
A merged PR starts the pipeline. A production miss writes the next intent.md.
Skills
caveman/
-
SKILL.mdRequired. Frontmatter, then the instructions. -
references/Loaded when the task needs the extra chapter. -
scripts/Run. The source does not enter context.
-
01 Discovery
name + description Always in the prompt. Enough to know when to load the rest. -
02 Activation
SKILL.md The body lands only when the task matches. -
03 Execution
references/ · scripts/ Read or run on demand. Not stuffed into the window.
Compression
-
Caveman
Cuts filler so context lasts. Lite on client work, full on a long session.
Claude Code · Cursor · Codex
-
Cavecrew
Investigator, builder, reviewer as compressed subagents.
Claude Code · Cursor
-
Caveman commit
Conventional commits. Why over what. Readable at 1am.
Claude Code · Cursor · Codex
Taste
-
Design taste
Anti-slop frontend. The page has to look like this site, not a template.
Claude Code · Cursor
-
Frontend design
One signature move, then restraint. Decoration that does not serve the brief gets cut.
Claude Code · Cursor
-
Brandkit
Art direction for a mark or a board. Not a random logo generator.
Claude Code · Cursor
Guardrails
-
Ponytail
Stdlib, then native, then the repo, then the smallest change that holds.
Claude Code · Cursor · Codex
-
Security review
Auth, secrets, injection, tenancy. Then a hook so the policy is not optional.
Claude Code · Cursor · Codex
-
Caveman review
Location, problem, fix. One line per finding on the diff I still merge.
Claude Code · Cursor · Codex
Craft
-
Senior backend
APIs, Postgres, tenancy, retries. The boring correctness commerce actually fails on.
Claude Code · Codex
-
Playwright
Drives the same flows a person will. A DOM dump is not done.
Claude Code · Cursor
MCP
How the agent leaves the chat. Design, deploys, tickets, and production stay in the session.
-
Figma
Design context into the editor
-
GitHub
PRs, issues, the audit trail
-
Vercel
Previews, env, the deploy I just pushed
-
Sentry
Production back into the next intent
-
Prisma
Schema and migrations without folklore
-
Supabase
Tables, policies, the live project
-
Playwright
A real browser, not a guessed DOM
-
Cursor browser
Verify the thing I just shipped locally
-
Context7
Current library docs, not training-cut memory
-
BigCommerce
Platform docs next to the integration
-
Postman
Collections and the request that actually failed
-
Render
Services that are not on Vercel
-
ClickUp
The ticket the intent.md came from
-
tldraw
A canvas when a table is the wrong shape
-
BrowserStack
The device I do not have on the desk
-
Mobbin
How real apps solved this flow
Hooks
Skills advise. Hooks refuse, even when the model is tired, eager, or wrong.
| Event | Host | What it does |
|---|---|---|
SessionStart | Claude Code, Cursor, Codex | Load CLAUDE.md / AGENTS.md, caveman lite, ponytail, and the design skill that matches the repo. |
PreToolUse: Write / Edit | Claude Code, Codex | Refuse writes to .env, credentials, id_rsa, and anything gitignored as a secret. Refuses .env, *.pem, google-services.json. |
PreToolUse: Bash | Claude Code, Codex, Cursor | Deny git push --force, git reset --hard, and git checkout -- on uncommitted work. Refuses force-push, hard reset, clobber. |
UserPromptSubmit | Claude Code, Codex | On implementation prompts, inject the six-rung ladder so the first draft is the smallest one that holds. |
PreToolUse: Write (multi-file) | Claude Code | If the blast radius is over three files and there is no accepted plan.md, switch the session back to plan mode. |
PostToolUse: Edit | Claude Code, Cursor | Run the repo formatter and linter on the file that changed so drift never accumulates. |
Stop | Claude Code, Cursor | If this session touched UI or a route and did not run Playwright or axe, ask before closing. |
PR / GitHub check | GitHub + Codex review | The merged diff is checked against plan.md. Drift is a comment, not a surprise in production. |
Which model, and when
Leaderboards move weekly. The Intelligence Index below is live.
-
Claude Code
Claude Fable 5.1
Architecture, spec, and the decision to stop
Best at saying no. Reads the repo, writes intent.md and spec.md, and will argue with a bad plan before it writes code.
-
Codex
GPT-6 Astra / GPT-5.3 Codex
Implementation once the plan is accepted
Arena WebDev leader, terminal-native, happy in a worktree. I let it run longer once hooks and tests are in front of it.
-
Cursor
Grok 4.6 / Composer 2.5
In-file loop while I am looking at the UI
Lives in the editor I already have open. MCPs, lints, and the browser tools are right there. Speed beats a two-point Elo gap.
-
Any host with a Gemini key
Gemini 3.8 Flash
Long context, vision, and bulk reads
Index score is mid. Tokens per second and dollars per million are not. I use it to read, not to decide.
Artificial Analysis · Intelligence Index
Live board. Score is the Index, not a percentage.
Best of both worlds is not a slogan
Accelerate what I can verify. Refuse what I cannot. That is the whole method.