Learn
/ Why we double down on Claude Code
Position · Claude Code
Why we double down on Claude Code.
The conventional read is that the protocol has to catch up to the new wave, /goal, Skills, Hooks, native memory, plan/auto mode. That read has it backwards. The wave isn't a wave. It's a stack. The protocol already drew this shape. Claude Code is the only runtime that ships the whole stack.
The wave that isn't a wave.
When uno shipped in early 2026, none of the following existed in any AI runtime. A slash-command that judges your work with a second model, a Skills system, a Stop hook documented as a coaching primitive, native cross-session memory, or an official answer to "how do you keep state between conversations."
The protocol invented its own answers to all of those. TODO.md was the completion condition. The RECORD/REFLECT seam at end-of-loop held the self-check. Extensions were the routing layer. PERSONA.md was the memory. ..architect / ..builder were the scope modes. The bet wasn't commands. The bet was a model of work, files as memory, lifecycle as enforceable, done-condition as stated, work as routable, persona as schema.
The runtime didn't catch up to the protocol. The runtime caught up to what the protocol was modelling.
What changed between January 2026 and today is that one harness shipped native primitives for every one of those bets. Not all the harnesses. One.
The convergence map.
Five primitives the protocol has always argued for. Five primitives Claude Code now ships natively. They line up because they're modelling the same thing.
TODO.md · AC
Write the done-condition down before the work starts. Acceptance criteria are not optional.
/goal
A completion_condition evaluated by a second-model judge after every turn.
1:1
AC translate directly into a completion_condition. The judge gets upgraded from "the same model" to "a different one."
..start · auto-RECORD · ..hygiene
Lifecycle moments are enforceable, not aspirational. Sessions begin, commit, and maintain with structure.
Hooks
UserPromptSubmit, Stop, PreToolUse. Runtime events the harness emits and you bind code to.
1:1
The protocol's lifecycle moments are exactly what hooks are for. ..start binds UserPromptSubmit, the auto-RECORD commit binds Stop, ..hygiene binds PreToolUse.
Extensions · ea / pa / km / ab
Route work by domain. Discovery is metadata. Each extension has a description and triggering rules.
Skills
SKILL.md files with a description, when-to-use rules, and auto-discovery routing.
1:1
The extension shape is the SKILL.md shape. Repackage and get auto-routing for free.
PERSONA.md
Persona is a structured schema, not a vibe. Filtered briefings per session.
Native memory
User-level facts persisted by the harness across sessions.
Complementary
PERSONA.md is the project-level schema. Native memory is the user-level slot. They compose, they don't compete.
..architect · ..builder
Context breadth is a scope choice. Different work needs different surface area.
Plan mode · Auto mode
Native scope toggles with built-in approval flows.
Native upgrade
Same concept. The native versions hook into approval surfaces the protocol can't reach from markdown.
Five bets the protocol placed in markdown. Five primitives the harness now ships in the runtime. That's not catch-up. That's convergence, and it points at one runtime.
Codex and Cursor, credit where credit is due.
Both are real, both are good. Neither is protocol-shaped in the same way.
openai · codex
Same word, different bet.
Codex's /goal ships first and solves a real failure mode, runs that burn budget. But it's self-audit, not external judge. The agent that wrote the work also declares it done, with a continuation.md prompt as the only guardrail. That's the failure mode the protocol's RECORD self-check already had.
cursor · agent mode
Strong loop, no lifecycle layer.
Cursor's planner/worker/judge writeup is excellent. The runtime ships the loop but not the hooks. Without a place to bind ..start, ..hygiene, and the auto-RECORD commit, the protocol's enforcement layer has nowhere to live. That's a structural gap, not a missing feature.
The protocol stays markdown-portable on purpose. But the implementation commits to Claude Code, because Claude Code is the only runtime where every primitive the protocol relies on has a native counterpart to wire into.
How the protocol enhances Claude Code.
The convergence runs both ways. Claude Code ships primitives. The protocol tells you what to put inside them. Without one, the other is incomplete.
- enhances/goalNeeds a completion_condition. The protocol's TODO.md AC supplies one, and supplies a whole project's worth, structured, versioned, and tied to specific tasks.
- enhancesHooksNeed lifecycle moments to bind to. The protocol's
..start,..hygiene, and the auto-RECORD commit define the lifecycle. What should fire at session open, at the maintenance pass, at end-of-loop commit. - enhancesSkillsNeed a routing taxonomy. The protocol's extensions (ea, pa, km, ab) are the taxonomy. Domain-shaped, named, with their own triggering rules.
- enhancesNative memoryNeeds a schema, not free-text drift. The protocol's PERSONA.md is the schema. Fields, format, what belongs at user vs project level.
- enhancesPlan / AutoNeed a rubric for when to use which. The protocol's
..architect / ..builderare the rubric. Context breadth, autonomy level, what triggers each.
Run Claude Code without a protocol and you have primitives with no structure inside them. Run the protocol without Claude Code and you have structure with no enforcement under it. Together they form a stack neither produces alone.
What would change our mind.
If we're wrong, we should be able to say what would prove it. Three specific things would move us off this position.
Falsification conditions
We'd revisit if any of these shipped.
- ?If Cursor ships hooks. Hooks are the structural primitive the protocol's lifecycle layer depends on. Without them, Cursor is a strong loop without a place to enforce structure. With them, the cross-harness story becomes real and "commit to Claude Code" gets harder to defend.
- ?If Codex's /goal adopts an external judge. Same-model self-audit is the failure mode the protocol's RECORD self-check already had. If Codex swaps in a second model, the architectural difference with Claude's /goal collapses, and the protocol's AC pattern routes to either harness equally.
- ?If native memory absorbs the protocol's role. Native memory is currently a user-level slot. If it grows into structured, project-scoped, schema-validated state, i.e. into what PERSONA.md, DECISIONS.md, and CONSTRAINTS.md do, large parts of the protocol become redundant rather than complementary. We don't think this happens (the protocol does more than persist) but it's the honest worst case.
None of those have shipped. Until they do, the position is, the protocol is most enforceable in Claude Code. Claude Code is most useful when it has a protocol. Double down on both.
Where to Go Next
Read on.
Previous essay
Where /goal fits in the loop →
The LinkedIn-post continuation. How /goal slots into the five-phase loop and why Claude's external judge maps to the protocol.
protocol
duo · construct →
AI works WITH you. The protocol where the convergence lands hardest. Grading hook, AC, Architect/Builder.
protocol
uno · operate →
AI works FOR you. The smallest version of a /goal-shaped loop. TODO.md + AC + the grading step.
read first
AI Basics 101 →
The memory myth, files as ground truth, hallucination prevention.
tools
AI Readiness Check →
12 production-ready capabilities. Tells you whether uno, duo, or tre fits today.