Master Spec Authoring
Author the canonical spec for $ARGUMENTS and decompose it into ordered phases for execution by execute-phase. Run once at project inception. Choose sane defaults; do not stop for input except at the architecture checkpoint (step 2) or a HALT CONDITION.
Preconditions
- A project brief exists: a path via $ARGUMENTS, the current conversation, or a notes doc. If the brief is too thin to derive a defensible scope and architecture, that is a genuine HALT — ask for the missing intent rather than inventing a project.
- The
/codex-review skill (Codex CLI) and ultracode workflow support are available — the review gates hard-require both. If either is missing, HALT; do not substitute an ad-hoc review and mark the gate passed.
- Working tree clean or understood; note branch (likely a fresh repo).
- Identify the project's handoff/state layout (Agent Handoff System) and existing conventions. Conform to them. If greenfield, this skill establishes the minimal layout the sibling skill expects.
Orchestration model
- Main session model: Opus (authoring + architecture judgment + synthesis).
- Review allocation (same philosophy as execute-phase): exactly ONE
ultracode workflow panel pass on the raw artifact, then /codex-review to convergence. Workflow workers Sonnet; Opus only for genuinely complex sub-tasks (e.g. validating the phase dependency graph against the spec). State the routing explicitly in each trigger.
- The master spec is the highest-leverage artifact in the system: a flaw propagates into every phase spec and all phase code. It receives phase-gate rigor applied to BOTH the spec content and the phase decomposition.
References
Shared standards live in ${CLAUDE_PLUGIN_ROOT}/references/. They are the rubric for both authoring and the review gate.
- Spec construction — core:
${CLAUDE_PLUGIN_ROOT}/references/spec-construction.md
- Spec construction — master delta:
${CLAUDE_PLUGIN_ROOT}/references/spec-construction-master.md
When this skill writes or reviews the master spec, the standard is the core PLUS the master delta (read both). The master delta governs the master's obligations: id'd cross-cutting decisions, the phase decomposition, scope coverage (every requirement → exactly one phase), and delegation of exhaustive detail to named planning artifacts.
This standard supersedes any external authoring skill. Do NOT invoke Superpowers brainstorming or writing-plans during autonomous steps — this skill provides its own process and this standard is the authority. (The architecture checkpoint in step 2 is this skill's own deliberate human gate, not Superpowers'.)
Validator gates (specpipe)
Structural gates run through the bundled specpipe CLI (a plain stdlib package — the invocation never writes into the plugin tree):
PYTHONPATH="${CLAUDE_PLUGIN_ROOT}/scripts/specpipe" uv run --no-project python -B -m specpipe <subcommand> …
(Below, specpipe <subcommand> abbreviates that invocation.) Errors (exit 1) MUST be fixed and the validator re-run clean BEFORE the gate's workflow/Codex pass — the deterministic pass is free; do not spend panel review on structural defects. Warnings may be accepted with a one-line recorded justification in the artifact. Validator failures are NOT halt conditions: fix and re-run.
Path convention: specpipe is layout-agnostic — every subcommand takes explicit paths. Examples below use the greenfield default docs/handoff/; if the project keeps its state elsewhere, resolve paths per that project's convention (the audit file always sits beside the phase plan in an audit/ subdirectory, and init-project accepts --handoff-dir).
Pipeline
1. Intake
- Read the brief. Establish, choosing sane defaults aligned with project and toolchain conventions (do not stop on resolvable choices):
- Problem statement; goals; explicit non-goals.
- Target environment(s) and dependency boundaries (runtime, OS/platform support, external services).
- Language/toolchain (default Python: uv, ruff, BasedPyright strict, pytest + coverage.py; FastAPI / Pydantic v2 / Typer as applicable).
- Hard constraints (performance, security, offline operation, data).
- Discover existing repo conventions and handoff layout; conform rather than invent.
2. Architecture & scope draft
- Define the system boundary, major components, key technical decisions (with the one defensible default chosen for each), and the data/interface shape.
- Draft the proposed phase breakdown — titles + one-line objectives only at this stage.
- HUMAN CHECKPOINT (the single deliberate stop): present scope boundary + architecture + proposed phase list for confirmation before authoring the full spec. These are the architectural, big-picture decisions the director owns; everything downstream drafts autonomously. To run fully unattended, skip this checkpoint by prior agreement.
3. Master spec authoring
- Instantiate
${CLAUDE_PLUGIN_ROOT}/templates/master-spec.md (its headings are the canonical grammar specpipe validates) and write the canonical spec per the spec construction standard — core + master delta (see References), formatted for LLM/agent consumption (structured, not narrative prose). Sections:
- Overview / problem / goals / non-goals
- Architecture (components, boundaries, key decisions + rationale)
- Data model / domain types
- Interfaces (CLI / API / contracts)
- Behavior & rules (per component)
- Error handling & failure modes
- Testing strategy (what TDD targets; high-level logic-bearing vs glue boundaries)
- Acceptance criteria (system-level)
- Out of scope
- Write so any single phase's slice is cleanly extractable: the sibling derives each per-phase spec from this document.
4. Phase decomposition
Decompose the spec into an ordered phase plan. Rules:
- Each phase is independently executable in a single
execute-phase session.
- Prefer VERTICAL slices that deliver testable behavior over horizontal layers (all-models-then-all-logic). Vertical slices make per-phase TDD meaningful and keep the logic-vs-glue classification honest.
- Phase 1 establishes the foundation: project skeleton, toolchain config (uv, ruff, BasedPyright strict, pytest, coverage.py), and CI scaffolding — so every later phase has a working test harness for RED→GREEN. Do not defer the test harness.
- Order by dependency; a phase may depend only on earlier phases. The dependency graph must be acyclic.
- Size each phase to the per-phase cost envelope: when run, each phase triggers two doc-review workflow passes + codex convergence + TDD + a final codex review. If a phase's spec would be too large to review in one workflow pass, or its implementation too large for one session, split it.
- Each phase entry uses this stable schema (consumed by execute-phase step 1), written to the phase-plan file instantiated from
${CLAUDE_PLUGIN_ROOT}/templates/phase-plan.md:
- id (stable integer) — title — status: pending
- objective (one line)
- scope: in / out
- depends_on: [phase ids]
- spec slice: which master-spec sections this phase implements
- acceptance criteria (phase-level, testable)
- size note
5. Review (spec + phase plan)
- VALIDATOR GATE: run
specpipe validate spec --kind master <spec-path> and specpipe validate phase-plan <plan-path>; fix all errors and re-run until clean before the workflow pass.
- WORKFLOW PASS (exactly one — do NOT loop to convergence):
ultracode: comprehensively review the master spec at <path> against the spec construction standard (core + master delta) AND the phase plan at <path>. Use Sonnet worker subagents; Opus only for genuinely complex sub-tasks (dependency-graph soundness, scope-coverage completeness). Independently verify each finding before reporting. Beyond prose quality the panel MUST verify: (a) every spec requirement is covered by exactly one phase — no orphaned or duplicated scope; (b) the dependency order is acyclic and correct; (c) each phase is independently executable and testable; (d) phase 1 establishes the test harness. Apply all justified fixes from this single pass.
- CODEX CONVERGENCE: run
/codex-review against the spec and phase plan. Apply justified fixes and re-run until either (a) a pass yields zero justified fixes, or (b) 3 rounds are reached. On hitting the cap, record remaining open findings and proceed. Count rounds deterministically: run specpipe rounds .spec-pipeline/state.json --gate spec --increment before each round; a cap-exceeded exit (1) ends the loop.
6. Initialize handoff / state
- Run
specpipe init-project to scaffold the minimal layout (docs/handoff/phase-plan.md from template, docs/handoff/audit/, .spec-pipeline/ gitignored); pass --handoff-dir when the project's existing state layout is not docs/handoff/. It is idempotent and never overwrites existing handoff files.
- Seed the project's handoff state (Agent Handoff System layout) so
execute-phase can resolve "next phase" (= first phase with status: pending), track completion, and carry context across sessions.
- Write the phase-plan file with per-phase status fields. The master spec's build-plan section is DEFINITIONAL (ids, objectives, scope, dependencies); the plan file is its status-tracking projection — statuses live in the file, definitions in the master, and on conflict the master governs. Location: the project's existing handoff convention; greenfield default
docs/handoff/phase-plan.md.
- Establish state.md / handoff scaffolding per the project's layout. If greenfield, create the minimal layout the sibling skill expects.
7. Close out
- Commit the master spec, phase plan, and handoff scaffolding with a clear imperative message.
- Push to the current branch's remote.
Contract with execute-phase
This skill produces exactly what the sibling consumes:
- Master spec — source of truth for every per-phase spec (sibling step 2).
- Phase plan — ordered, status-tracked projection of the master's build-plan section (definitions stay in the master). Sibling step 1 resolves "next phase" = first entry with status: pending; sibling step 2 then expands that entry into a per-phase spec.
- Handoff/state scaffolding — sibling reads/writes phase outcomes here at close-out.
Phase ids are STABLE: the sibling references phases by plan id across sessions. Never renumber a phase once execution has begun; append or split instead.
HALT CONDITIONS
/codex-review or ultracode workflow support is unavailable — the review gates hard-require them (see Preconditions).
- The brief is too thin to derive a defensible scope/architecture — ask for the missing intent.
- The architecture checkpoint (step 2) — the single deliberate stop, unless running fully unattended by prior agreement.
- An architectural decision is genuinely irreversible AND has no defensible default.
- Convergence would exceed the 3-round Codex cap with errors (not warnings) unresolved.
- Push fails for an auth/remote reason requiring human intervention.
Output
Brief report:
- Master spec path; phase count.
- Phase plan summary: id → title → depends_on → status.
- Scope coverage confirmation (no orphaned or duplicated requirements; phase 1 establishes the harness).
- Codex rounds consumed; open/deferred items.
- Commit SHA(s) pushed.
1---2name: author3description: Author the canonical project spec and decompose it into phases for execution by /spec-pipeline:execute-phase. Run once at project inception.4license: MIT5---67# Master Spec Authoring89Author the canonical spec for $ARGUMENTS and decompose it into ordered phases for execution by `execute-phase`. Run once at project inception. Choose sane defaults; do not stop for input except at the architecture checkpoint (step 2) or a HALT CONDITION.1011## Preconditions1213- A project brief exists: a path via $ARGUMENTS, the current conversation, or a notes doc. If the brief is too thin to derive a defensible scope and architecture, that is a genuine HALT — ask for the missing intent rather than inventing a project.14- The `/codex-review` skill (Codex CLI) and ultracode workflow support are available — the review gates hard-require both. If either is missing, HALT; do not substitute an ad-hoc review and mark the gate passed.15- Working tree clean or understood; note branch (likely a fresh repo).16- Identify the project's handoff/state layout (Agent Handoff System) and existing conventions. Conform to them. If greenfield, this skill establishes the minimal layout the sibling skill expects.1718## Orchestration model1920- Main session model: Opus (authoring + architecture judgment + synthesis).21- Review allocation (same philosophy as execute-phase): exactly ONE `ultracode` workflow panel pass on the raw artifact, then `/codex-review` to convergence. Workflow workers Sonnet; Opus only for genuinely complex sub-tasks (e.g. validating the phase dependency graph against the spec). State the routing explicitly in each trigger.22- The master spec is the highest-leverage artifact in the system: a flaw propagates into every phase spec and all phase code. It receives phase-gate rigor applied to BOTH the spec content and the phase decomposition.2324## References2526Shared standards live in `${CLAUDE_PLUGIN_ROOT}/references/`. They are the rubric for both authoring and the review gate.2728- Spec construction — core: `${CLAUDE_PLUGIN_ROOT}/references/spec-construction.md`29- Spec construction — master delta: `${CLAUDE_PLUGIN_ROOT}/references/spec-construction-master.md`3031When this skill writes or reviews the master spec, the standard is the core PLUS the master delta (read both). The master delta governs the master's obligations: id'd cross-cutting decisions, the phase decomposition, scope coverage (every requirement → exactly one phase), and delegation of exhaustive detail to named planning artifacts.3233This standard supersedes any external authoring skill. Do NOT invoke Superpowers `brainstorming` or `writing-plans` during autonomous steps — this skill provides its own process and this standard is the authority. (The architecture checkpoint in step 2 is this skill's own deliberate human gate, not Superpowers'.)3435## Validator gates (specpipe)3637Structural gates run through the bundled specpipe CLI (a plain stdlib package — the invocation never writes into the plugin tree):3839`PYTHONPATH="${CLAUDE_PLUGIN_ROOT}/scripts/specpipe" uv run --no-project python -B -m specpipe <subcommand> …`4041(Below, `specpipe <subcommand>` abbreviates that invocation.) Errors (exit 1) MUST be fixed and the validator re-run clean BEFORE the gate's workflow/Codex pass — the deterministic pass is free; do not spend panel review on structural defects. Warnings may be accepted with a one-line recorded justification in the artifact. Validator failures are NOT halt conditions: fix and re-run.4243Path convention: specpipe is layout-agnostic — every subcommand takes explicit paths. Examples below use the greenfield default `docs/handoff/`; if the project keeps its state elsewhere, resolve paths per that project's convention (the audit file always sits beside the phase plan in an `audit/` subdirectory, and `init-project` accepts `--handoff-dir`).4445## Pipeline4647### 1. Intake4849- Read the brief. Establish, choosing sane defaults aligned with project and toolchain conventions (do not stop on resolvable choices):50 - Problem statement; goals; explicit non-goals.51 - Target environment(s) and dependency boundaries (runtime, OS/platform support, external services).52 - Language/toolchain (default Python: uv, ruff, BasedPyright strict, pytest + coverage.py; FastAPI / Pydantic v2 / Typer as applicable).53 - Hard constraints (performance, security, offline operation, data).54- Discover existing repo conventions and handoff layout; conform rather than invent.5556### 2. Architecture & scope draft5758- Define the system boundary, major components, key technical decisions (with the one defensible default chosen for each), and the data/interface shape.59- Draft the proposed phase breakdown — titles + one-line objectives only at this stage.60- HUMAN CHECKPOINT (the single deliberate stop): present scope boundary + architecture + proposed phase list for confirmation before authoring the full spec. These are the architectural, big-picture decisions the director owns; everything downstream drafts autonomously. To run fully unattended, skip this checkpoint by prior agreement.6162### 3. Master spec authoring6364- Instantiate `${CLAUDE_PLUGIN_ROOT}/templates/master-spec.md` (its headings are the canonical grammar specpipe validates) and write the canonical spec per the spec construction standard — core + master delta (see References), formatted for LLM/agent consumption (structured, not narrative prose). Sections:65 - Overview / problem / goals / non-goals66 - Architecture (components, boundaries, key decisions + rationale)67 - Data model / domain types68 - Interfaces (CLI / API / contracts)69 - Behavior & rules (per component)70 - Error handling & failure modes71 - Testing strategy (what TDD targets; high-level logic-bearing vs glue boundaries)72 - Acceptance criteria (system-level)73 - Out of scope74- Write so any single phase's slice is cleanly extractable: the sibling derives each per-phase spec from this document.7576### 4. Phase decomposition7778Decompose the spec into an ordered phase plan. Rules:7980- Each phase is independently executable in a single `execute-phase` session.81- Prefer VERTICAL slices that deliver testable behavior over horizontal layers (all-models-then-all-logic). Vertical slices make per-phase TDD meaningful and keep the logic-vs-glue classification honest.82- Phase 1 establishes the foundation: project skeleton, toolchain config (uv, ruff, BasedPyright strict, pytest, coverage.py), and CI scaffolding — so every later phase has a working test harness for RED→GREEN. Do not defer the test harness.83- Order by dependency; a phase may depend only on earlier phases. The dependency graph must be acyclic.84- Size each phase to the per-phase cost envelope: when run, each phase triggers two doc-review workflow passes + codex convergence + TDD + a final codex review. If a phase's spec would be too large to review in one workflow pass, or its implementation too large for one session, split it.85- Each phase entry uses this stable schema (consumed by execute-phase step 1), written to the phase-plan file instantiated from `${CLAUDE_PLUGIN_ROOT}/templates/phase-plan.md`:86 - id (stable integer) — title — status: pending87 - objective (one line)88 - scope: in / out89 - depends_on: [phase ids]90 - spec slice: which master-spec sections this phase implements91 - acceptance criteria (phase-level, testable)92 - size note9394### 5. Review (spec + phase plan)9596- VALIDATOR GATE: run `specpipe validate spec --kind master <spec-path>` and `specpipe validate phase-plan <plan-path>`; fix all errors and re-run until clean before the workflow pass.97- WORKFLOW PASS (exactly one — do NOT loop to convergence): `ultracode: comprehensively review the master spec at <path> against the spec construction standard (core + master delta) AND the phase plan at <path>. Use Sonnet worker subagents; Opus only for genuinely complex sub-tasks (dependency-graph soundness, scope-coverage completeness). Independently verify each finding before reporting.` Beyond prose quality the panel MUST verify: (a) every spec requirement is covered by exactly one phase — no orphaned or duplicated scope; (b) the dependency order is acyclic and correct; (c) each phase is independently executable and testable; (d) phase 1 establishes the test harness. Apply all justified fixes from this single pass.98- CODEX CONVERGENCE: run `/codex-review` against the spec and phase plan. Apply justified fixes and re-run until either (a) a pass yields zero justified fixes, or (b) 3 rounds are reached. On hitting the cap, record remaining open findings and proceed. Count rounds deterministically: run `specpipe rounds .spec-pipeline/state.json --gate spec --increment` before each round; a cap-exceeded exit (1) ends the loop.99100### 6. Initialize handoff / state101102- Run `specpipe init-project` to scaffold the minimal layout (docs/handoff/phase-plan.md from template, docs/handoff/audit/, .spec-pipeline/ gitignored); pass `--handoff-dir` when the project's existing state layout is not docs/handoff/. It is idempotent and never overwrites existing handoff files.103- Seed the project's handoff state (Agent Handoff System layout) so `execute-phase` can resolve "next phase" (= first phase with status: pending), track completion, and carry context across sessions.104- Write the phase-plan file with per-phase status fields. The master spec's build-plan section is DEFINITIONAL (ids, objectives, scope, dependencies); the plan file is its status-tracking projection — statuses live in the file, definitions in the master, and on conflict the master governs. Location: the project's existing handoff convention; greenfield default `docs/handoff/phase-plan.md`.105- Establish state.md / handoff scaffolding per the project's layout. If greenfield, create the minimal layout the sibling skill expects.106107### 7. Close out108109- Commit the master spec, phase plan, and handoff scaffolding with a clear imperative message.110- Push to the current branch's remote.111112## Contract with execute-phase113114This skill produces exactly what the sibling consumes:115116- Master spec — source of truth for every per-phase spec (sibling step 2).117- Phase plan — ordered, status-tracked projection of the master's build-plan section (definitions stay in the master). Sibling step 1 resolves "next phase" = first entry with status: pending; sibling step 2 then expands that entry into a per-phase spec.118- Handoff/state scaffolding — sibling reads/writes phase outcomes here at close-out.119120Phase ids are STABLE: the sibling references phases by plan id across sessions. Never renumber a phase once execution has begun; append or split instead.121122## HALT CONDITIONS123124- `/codex-review` or ultracode workflow support is unavailable — the review gates hard-require them (see Preconditions).125- The brief is too thin to derive a defensible scope/architecture — ask for the missing intent.126- The architecture checkpoint (step 2) — the single deliberate stop, unless running fully unattended by prior agreement.127- An architectural decision is genuinely irreversible AND has no defensible default.128- Convergence would exceed the 3-round Codex cap with errors (not warnings) unresolved.129- Push fails for an auth/remote reason requiring human intervention.130131## Output132133Brief report:134135- Master spec path; phase count.136- Phase plan summary: id → title → depends_on → status.137- Scope coverage confirmation (no orphaned or duplicated requirements; phase 1 establishes the harness).138- Codex rounds consumed; open/deferred items.139- Commit SHA(s) pushed.