decompose
Greenfield decomposition interview — a layered interview that populates .codearbiter/ and locks it initialized.
What it does
Section titled “What it does”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:decomposeNo arguments — the interview itself elicits everything it needs; you can hand it a summary at any point if you already have one written down.
Example
Section titled “Example”> /ca:decompose
Switching to decomposition mode. Six layers, one question at a time — typically 60-110 questionstotal, 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 dothey 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 therest of the doc set... CONTEXT.md marked initialized.When to reach for it
Section titled “When to reach for it”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.
| Gate | When | Effect |
|---|---|---|
| greenfield check | before the interview starts | any meaningful source code already in the repo redirects to create-context instead |
| layer-by-layer persistence | throughout the interview | each of the six layers writes to disk as it’s answered, so closing the session mid-interview loses nothing |
| initialization lock | at the end of the interview | the completion marker is written only once every required doc is present and non-empty |
Related
Section titled “Related”Source
Section titled “Source”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 canonicalfor 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 isdetected (route to `/ca:create-context`). BLOCK if any `[CONFIRM-NN]` exits synthesis unresolved andundeferred. MUST NOT write `<!--INITIALIZED-->` until every required doc is present and non-empty.