Skip to content

decompose

Greenfield decomposition interview — a layered interview that populates .codearbiter/ and locks it initialized.

This is the populator for a project that has no code yet to read. Rather than guessing at architecture, it runs a long, structured interview — six layers covering purpose, scope, users, vocabulary, and constraints — pushing back on vague answers and naming the complexity a quick answer tends to hide. Because a real interview like this can span multiple sessions, every layer is saved as it’s completed rather than held in memory until the end, so a context reset or a closed terminal doesn’t cost you the earlier answers. Once all six layers are solid, the surviving documents get written to the project’s state directory and the project is marked initialized — only then does normal operation resume.

/ca:decompose

No arguments — the interview itself elicits everything it needs; you can hand it a summary at any point if you already have one written down.

> /ca:decompose
Switching to decomposition mode. Six layers, one question at a time — typically 60-110 questions
total, all persisted so you can pick this back up later.
Layer 1 — Purpose. What problem does this project solve, in one sentence?
> a scheduling tool for community garden plot signups
"Scheduling tool" is broad — walk me through one signup, start to finish: who initiates it, what do
they choose, what confirms it?
...
[layers 2-6 continue across the session; each answer lands on disk as it's given]
All six layers complete. Writing tech-stack.md, coding-standards.md, security-controls.md, and the
rest of the doc set... CONTEXT.md marked initialized.

Reach for /ca:decompose on a genuinely greenfield project with .codearbiter/ already scaffolded by /ca:init. If source code already exists, /ca:create-context is the right populator instead.

GateWhenEffect
greenfield checkbefore the interview startsany meaningful source code already in the repo redirects to create-context instead
layer-by-layer persistencethroughout the intervieweach of the six layers writes to disk as it’s answered, so closing the session mid-interview loses nothing
initialization lockat the end of the interviewthe completion marker is written only once every required doc is present and non-empty
Source — plugins/ca/commands/decompose.md (v2.9.1)
---
description: Greenfield decomposition interview — a layered interview that populates .codearbiter/ and locks it initialized.
argument-hint: (none)
---
# /ca:decompose — greenfield populate
Stands up project state for a greenfield project — one with no meaningful source code yet. A senior-architect persona drives a six-layer interview eliciting purpose, scope, primary users, domain vocabulary, and architectural constraints, persisting each layer to disk so a context reset loses nothing, then writes the surviving `.codearbiter/` doc set and locks the project initialized. No arguments — the skill interviews the user (a handoff summary may be supplied freely during the interview).
The only permitted path to populate `.codearbiter/` when no meaningful source exists. For an existing codebase, use `/ca:create-context`.
## Routes to
The `decompose` skill (`${CLAUDE_PLUGIN_ROOT}/skills/decompose/SKILL.md`) — six gated phases:
pre-flight, persona adoption, layered interview, synthesis, population, lock. The skill is canonical
for the layers and their gates.
## When NOT to use
- Project already initialized (`<!--INITIALIZED-->` in `CONTEXT.md`) → `/ca:status`.
- Existing codebase with source present → `/ca:create-context`.
- `.codearbiter/` not yet scaffolded → `/ca:init` first.
- Update one doc → edit `${CLAUDE_PROJECT_DIR}/.codearbiter/` directly or use `/ca:feature`.
## Hard gate
BLOCK if `<!--INITIALIZED-->` is already present in `CONTEXT.md`. BLOCK if meaningful source is
detected (route to `/ca:create-context`). BLOCK if any `[CONFIRM-NN]` exits synthesis unresolved and
undeferred. MUST NOT write `<!--INITIALIZED-->` until every required doc is present and non-empty.

View in repo