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.

01

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.

02

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.

What the protocol said
What Claude Code ships
The fit

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.

03

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.

04

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/goal
    Needs 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.
  • enhancesHooks
    Need 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.
  • enhancesSkills
    Need a routing taxonomy. The protocol's extensions (ea, pa, km, ab) are the taxonomy. Domain-shaped, named, with their own triggering rules.
  • enhancesNative memory
    Needs a schema, not free-text drift. The protocol's PERSONA.md is the schema. Fields, format, what belongs at user vs project level.
  • enhancesPlan / Auto
    Need a rubric for when to use which. The protocol's ..architect / ..builder are 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.

05

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.