with one click
status
// Report current status across all specs — what's done, in progress, blocked, and what's next. Reads reality (spec files, task files, git history) instead of relying on manually maintained status tables.
// Report current status across all specs — what's done, in progress, blocked, and what's next. Reads reality (spec files, task files, git history) instead of relying on manually maintained status tables.
Break down a spec into child specs — either design specs (non-leaf, need further iteration) or implementation tasks (leaf, ready to dispatch). Automatically determines breakdown mode from spec lifecycle state, or accepts an explicit override. Use when a spec needs decomposition.
Dispatch a validated spec to the task board. Validates prerequisites, resolves dependency wiring, creates the task, and updates the spec's dispatched_task_id atomically. Also supports undispatching (cancel + clear link). Use when a spec is ready for execution.
Implement a design spec from specs/ — reads the spec, plans the work, implements each item with tests and docs, then commits. Use when the user says "implement spec", "build spec", or references a spec file to implement.
Validate all specs against the document model rules — check required frontmatter fields, valid status/track/effort values, DAG acyclicity, dispatch consistency, orphan detection, and status consistency. Use to catch structural issues across the spec tree.
Compare a completed task's implementation against its source spec. Produces a structured divergence report — which acceptance criteria were satisfied, which diverged, and what was implemented but unspecified. Appends an Outcome section to the spec. Use after a dispatched task completes.
Create a new design spec in specs/. Gathers context, explores the codebase, writes the spec with proper frontmatter, and updates specs/README.md. Use when the user says "create a spec", "write a spec", "new spec", or "/spec".
| name | status |
| description | Report current status across all specs — what's done, in progress, blocked, and what's next. Reads reality (spec files, task files, git history) instead of relying on manually maintained status tables. |
| argument-hint | ["spec-file.md"] |
| allowed-tools | Read, Grep, Glob, Agent, Bash(git log *), Bash(ls *) |
Generate a live status report by reading specs, task files, and git history. If a specific spec is given, report on that spec only. Otherwise, report across all specs.
If an argument is provided, treat it as a spec file path for focused status. Otherwise, report on the full project.
specs/**/*.md (excluding README.md).
Specs are organized by track: specs/foundations/, specs/local/,
specs/cloud/, specs/shared/.title, status,
track, depends_on, affects, effort, dispatched_task_id.specs/<track>/foo.md with a directory specs/<track>/foo/ is a non-leaf
spec; its children are the specs inside that directory.specs/README.md for track organization and dependency context.For each spec file, use the frontmatter status field as the primary source of
truth:
status from frontmatter: vague, drafted, validated,
complete, stale, or archived. An archived spec is retired from the
live graph — read-only, hidden by default, and excluded from progress,
impact, drift, and dispatch.status: complete vs total leaves.N/M leaves done (X%).done and total.dispatched_task_id to see if the spec has been
dispatched to the board. If dispatched, cross-reference the task
status if possible.complete, optionally
verify the affects paths exist and look implemented. For specs that claim
validated but may be partially done, check git log for commits referencing
the spec or its affects paths.For each non-complete spec:
depends_on list from frontmatter. Each entry is a path to another
spec file.status. A dependency is met
only when its status is complete.status is validated, all
depends_on entries are complete, and the spec is a leaf (or has a child
breakdown ready). archived specs are never actionable — do not count them
in blocked or unblocked totals.depends_on entry is not
complete.status is stale and they need
human review before proceeding.From the actionable specs, determine the recommended next steps:
/wf-spec-implement./wf-spec-breakdown <spec> tasks first./wf-spec-refine first.## Status: <title> (<spec-path>)
Status: <frontmatter status>
Track: <track>
Effort: <effort>
Progress: N/M leaves complete (X%) [for non-leaf specs]
Blocked by: <nothing or list of incomplete depends_on entries>
Affects: <list of code paths from frontmatter>
### Child Specs [if non-leaf]
| Spec | Status | Effort | Depends on |
|------|--------|--------|-----------|
| <title> | complete | small | — |
| <title> | validated | medium | <sibling> |
### Next Action
<what to do next for this spec>
Group specs by track (foundations, local, cloud, shared), then by lifecycle state within each track:
## Project Status
### foundations
- <spec-name> (complete) — <one-line summary>
- <spec-name> (validated, 3/5 leaves done) — <progress note>
### local
- <spec-name> (drafted) — <one-line summary>
### cloud
- <spec-name> (vague) — <one-line summary>
### Actionable (ready to implement)
- <spec-name> — validated, all depends_on complete, <has/needs> child breakdown
### Blocked
- <spec-name> — waiting on: <depends_on list with statuses>
### Stale (needs review)
- <spec-name> — <reason for staleness or last updated date>
### Archived (hidden by default)
- <spec-name> — retired from the live graph; resurrect via `archived → drafted` transition
### Recommended Next Steps
1. <most impactful actionable item>
2. <second priority>
3. <third priority>
specs/README.md status is stale, note the
discrepancies but do not fix them (suggest /wf-spec-refine or manual update).