chris-code

The complete guide

Claude Code, with an opinion about how to build.

chris-code turns Claude Code from a free-form chat assistant into a spec-driven engineering workflow: settle intent, design before code, dispatch focused agents, and gate drift before it reaches main. It ships 25 skills and a 13-agent layer — and where that breadth is spent tells you what it values.

25skills · 8 groups
13scoped agents
3 : 10coders vs. checkers
1fixed pipeline

What it is

A workflow layer, not a bigger chat box.

It routes every non-trivial change through a fixed pipeline, so the first thing that compiles never becomes the design by default.

A free-form assistant fails three ways on work with a real design space:

  • the first approach that compiles quietly becomes the design;
  • agent-written changes land before anyone reviews them;
  • a fresh agent that never heard your conversation reconstructs your intent — confidently, and wrong.

chris-code closes all three with a pipeline built from skills (auto-firing instruction modules) and agents (role-scoped subagents, each in its own context). You describe the work; the machinery decides what runs.

Reach for it when

  • The change is substantial enough to deserve a design and a review.
  • You want intent settled before code, and drift caught before main.
  • You work primarily in Python or Rust — the coder and review agents are language-scoped (the workflow skills are language-agnostic).

Skip it when

  • You just want a quick one-off answer or a throwaway snippet.
  • The task is trivial enough that a design and a review would be pure overhead.
  • It earns its keep on real changes — not on trivia.

The core idea

Spec-driven development, for an agent.

Settle what and why before how — and write it into durable artifacts a fresh agent can execute without re-deriving your intent.

Why the artifacts, and not just a prompt?

Hand an agent only what and where and it will optimize the diff and ship the wrong thing correctly. So intent is written first, elaborated into contracts, then a thin plan, then code — and the final gate checks the running system back against the original ask. Each artifact is what makes the next handoff lossless.

design — settle what & why build prove
brainstormintent ledger, frozen in your words
lean-speccontracts & invariants
lean-planwhat & where, no code
executea coder agent per task
verifygates + intent re-check
finishmerge / PR

The intent ledger

The one artifact a spec check can't quietly redefine.

Up to seven acceptance statements, in your words, frozen at brainstorm — you approve them, you don't write them. It lives outside the spec on purpose: at verify, a spec-blind reviewer checks the running system against this ledger, making it the only gate that can catch a spec that drifted from what you actually asked for.

Lean artifacts: contracts stay, choreography goes

The spec keeps behavior, interfaces, and invariants. The plan keeps what and where. Neither pastes code the agent would just rewrite.

If a line would change when you reimplement in another language, it's choreography — it belongs in the plan, not the spec. Code belongs in neither.

Why lean makes dispatch safe

A fresh subagent rebuilds its understanding only from what it can read — the brief, the spec, the repo. So the rule: dispatch when the context is recoverable from artifacts; stay in-session when the why lives only in the conversation. The brief always carries the why; everything else it references.

Two kinds of work

Not every change needs a brainstorm.

The pipeline forks on one question — is what to build already settled? — and sends determined work through a dedicated engine instead of a full design cycle.

answer: no

Design-open

“What should this be?” is still live — a new feature, a component, a behavior change.

→ brainstorming settles the design, then rejoins the pipeline

answer: yes

Determined

Behavior is settled — a refactor, a migration, an API alignment, an already-specced feature. Only which implementation fits is open. Determined ≠ trivial.

→ the coherent-change engine

The engine's premise, and the thing newcomers get wrong: a change can work and still be wrong.

  • Every candidate that compiles has the same behavior — tests can't tell them apart.
  • The real difference (a reused helper vs. a reinvented one; a mirrored error convention vs. a third new one) is invisible on the day you ship, expensive the day the next reader hits the seam.
  • So the coherent implementation is discovered from the codebase, not invented — and the tell that research isn't done is that you can name only one approach.

The defended choice — produced every time

1

Reframe

the two or three facts from research that change the problem — what's in scope, where the real boundary sits.

2

Proposed change

concrete and minimal: what changes, what's deleted, what's deliberately left untouched.

3

Correct across every case

a table over all affected cases, plus a required “cases I might be missing, and how I'd find them” line — proving coverage, not asserting it.

4

Why it's most coherent

reuse, idiom-fit, whether it mirrors an existing strategy, smallest correct blast radius.

5

Defense of alternatives

a real rebuttal of every rejected candidate — not a one-liner.

The point is not a working diff. It is a defensible one.

The assurance model

Many gates — and honest about what green proves.

A green pipeline means “nothing these lenses caught,” not “nothing is wrong” — the confidence comes from independent checks, not the number of passes.

The completion gate — six steps, in order

1

Tests

full suite, zero failures.

2

Lints

project linter, zero warnings.

3

Design review

senior *-design-reviewer agents → PASS / CONCERNS.

4

Requirements

every spec item traced to code and a test.

5

Intent re-check

a spec-blind reviewer compares shipped behavior to the frozen ledger.

6

Mutation re-check

mutation-tester mutates changed lines in an isolated worktree; gates any test that runs the code but detects no change.

Why more passes ≠ more proof

Most gates are LLM judgments sharing a model, distribution, and framing — so they miss the same things together. Stacking them raises recall, never certainty. Only a few axes are genuinely independent, and those are the ones that count:

deterministic linter spec-blind intent re-check mutation probe a real failing test your own read

Conformance asks “does the code match the spec?” — which is not correctness. A build can conform perfectly to a spec that drifted from your ask. Step 5 is the only gate that never reads the spec, which is exactly why it catches that drift.

A PASS that carries findings is not clean. Green raises recall; it doesn't prove absence.

The 25 skills

Eight functional groups, one idea-to-integration pipeline.

The first three groups are the pipeline's spine; the rest cover the change engine, testing, completion, review, campaigns, and meta. Colour marks each skill's nature.

build — produce & ship assure — test, review, debug, verify meta & ops

Design & planning

3

Settle what and why before any how.

brainstorminglean-speclean-plan

Execution

4

Turn a plan into code — dispatched or inline, always isolated.

subagent-driven-developmentexecuting-plansdispatching-parallel-agentsusing-git-worktrees

The change engine

3

The universal application point for any determined change.

coherent-changeremediating-issuessystematic-debugging

Testing

2

Test-first, and lock every fix against regression.

test-driven-developmentregression-test

Completion

2

The hard gate before "done," then integration.

verification-before-completionfinishing-a-development-branch

Review

5

On-demand senior review, plus how to give and take it.

requesting-code-reviewreceiving-code-reviewpython-reviewrust-reviewtechnical-review

Quality campaigns

3

Repeatable, parallel bug-finding sweeps across a codebase.

bug-hunttest-sweepcode-archaeology

Meta & ops

3

How the plugin finds its own skills, and ships itself.

using-chris-codewriting-skillsrelease

The 14 agents · where the weight goes

For every agent that writes code, nearly four exist only to check it.

Fourteen dedicated agents auto-dispatch by file type. Three are coders; the other eleven test, review, or verify. The plugin spends its agent budget on assurance, not authorship.

3coders — write the change
11reviewers, verifiers & test-writers — check it
build assure

The ratio is the philosophy.

A free-form assistant is all author and no auditor. chris-code inverts that: writing the code is the small part; proving it correct is the large one.

It shows up in skills too — of 25, 13 are testing, review, or debugging and 9 are building.

3 coders · 3 quality reviewers · 2 commit-lite gates · 2 design reviewers · 2 conformance · 1 test-writer · 1 mutation gate

Coders

build · 3

One writes the change per task; the rest verify it.

python-coderpytorch-coderrust-coder

Quality reviewers

assure · 3

Post-spec review of principle adherence and bugs.

python-quality-reviewerpytorch-quality-reviewerrust-quality-reviewer

Commit-lite gates

assure · 2

Fast pre-commit idiom + lint: clean / block / escalate.

python-review-literust-review-lite

Design reviewers

assure · 2

Senior read-only cohesion / API review at the final gate.

python-design-reviewerrust-design-reviewer

Conformance pair

assure · 2

Code↔spec per task; spec-blind behavior↔intent at completion.

spec-reviewerintent-reviewer

Campaign

assure · 1

Adversarial edge-case test writer, one per subsystem. Never fixes.

bug-hunter

Mutation gate

assure · 1

Mutation testing in an isolated worktree; gates trivial tests at the final gate, advisory on-demand.

mutation-tester

The dispatch difference · most easily missed

Quality isn't a prompt the orchestrator remembers. It's baked into who does the work.

superpowers hands work to a generic subagent. chris-code hands it to an agent whose system prompt already knows what good looks like.

superpowers

Generic subagents, steered per dispatch

  • Coding and review run through generic subagents driven by prompt-template files the orchestrator supplies each time.
  • Code quality depends on the orchestrator remembering to ask — cohesion, idiom, and API-design cues live in a hand-rolled prompt, or don't.
  • Every dispatch is hand-steered; the reviewer is only as good as that turn's instructions.

chris-code

Scoped agents that carry their own mandate

  • Thirteen named agents auto-dispatch by file extension and project dependencies — pytorch-coder beats python-coder in a torch repo; all matching reviewers fire.
  • Each agent's system prompt already carries the quality bar — coders internalize the review principles so code passes first time; reviewers enforce cohesion, idiom, and API design by role.
  • Quality is a property of who runs the task, not of whether the orchestrator thought to request it. It can't be forgotten.

Coming from superpowers?

You already know 80% of it.

It forked from obra/superpowers at v5.1.0 and kept the entire pipeline — this is the 20% that changed, and why.

Inventorysuperpowerschris-code
Skills1425
Agents013
Commands00
Hooks10

Every superpowers skill carries over — one renamed (using-superpowersusing-chris-code), one split (writing-planslean-plan + lean-spec). chris-code is a true superset: 11 new skills and the entire agent layer on top.

Six thematic shifts

  • 01Lean artifacts. Contracts stay, choreography goes — no 10k-word plans full of code the agent rewrites.
  • 02A real agent layer, dispatched by scope. Named coders and reviewers auto-fire by file type — not generic subagents.
  • 03A uniform, multi-stage review gate. Spec → quality → commit-lite per task, plus a spec-blind intent re-check.
  • 04Parallelism is a feature. Footprint-mapped staging, not the red flag superpowers calls it.
  • 05Native tools, hard gate. No silent fallback when worktree tooling is missing — stop and warn.
  • 06Coherence enforcement. One application engine (coherent-change) every determined change routes through. The largest divergence.

Where muscle memory will mislead you — before → after

Skill you knowin superpowersin chris-code
writing-plansExhaustive, full code in every step.Split: plan slimmed to lean-plan, spec promoted to lean-spec. Spec = contracts; plan = what/where, no inline code.
subagent-driven-developmentTwo-stage review; parallel implementers discouraged.Three gates per task (spec → quality → commit-lite), scope-based agent selection, deliberate staged parallelism by file footprint.
verification-before-completionSingle-command gate: “what proves this? run it.”Six-step pipeline: Tests → Lints → Design review → Requirements → spec-blind intent re-check → mutation re-check.
requesting-code-reviewThe primary, mandatory review path.Demoted to ad-hoc — routine review now lives in the automated agent gates.

What stayed the same

If you relied on these, they carry over essentially unchanged (renames aside):

brainstorming test-driven-development systematic-debugging finishing-a-development-branch dispatching-parallel-agents receiving-code-review using-chris-code

There's also a quieter shift in voice: chris-code strips superpowers' persuasion scaffolding — “Red Flags — STOP” lists, rationalization tables, real-world-impact blocks — for terse, mechanical instructions. Same rules, less rhetoric.

Getting started

Enable it, then describe the work.

chris-code is distributed through a personal Claude Code marketplace. Add it to ~/.claude/settings.json:

"extraKnownMarketplaces": {
  "chris-code": {
    "source": { "source": "github",
      "repo": "chris-santiago/claude-plugins" }
  }
},
"enabledPlugins": {
  "chris-code@chris-code": true
}

Claude Code fetches and caches the plugin automatically. The repo also ships ml-lab and ml-journal — enable those separately if you want them.

Then take one change through the whole pipeline:

  1. Start with intent. Describe what you want, or run /brainstorming. It won't code until a design exists and you've approved it — and it freezes your intent ledger.
  2. Watch the spec and plan appear. lean-spec writes contracts; lean-plan writes the thin what/where handoff.
  3. Let execution dispatch the work. A scoped coder per task, each passing spec → quality → commit-lite review.
  4. Verify before “done.” The six-step gate runs a spec-blind intent re-check against your ledger, then a mutation re-check that proves your tests can detect a change.
  5. Finish the branch. Merge, open a PR, keep, or discard — with worktree cleanup handled.