status · git:20260517.6abc798 · 2026-05-17 · sha256 0ec20137ceeeb4ec
status git:20260517.6abc798A
Immutable. This exact content is served forever at /api/v1/blob/0ec20137ceeeb4ec.
---
name: status
description: Display current progress of Draft tracks and active tasks. Shows phases, completion percentages, and blocked items.
---
# Draft Status
Display a comprehensive overview of project progress.
## Red Flags - STOP if you're:
- Reporting status without actually reading the files
- Making up progress percentages
- Skipping blocked items in the report
- Not checking each active track's actual state
- Summarizing without evidence from the files
**Always read before reporting.**
---
## Gather Data
1. Read `draft/tracks.md` for track list
2. For each active track, read:
- `draft/tracks/<id>/metadata.json` for stats. If `metadata.json` is malformed or unreadable, display `(metadata unavailable)` for that track's statistics instead of failing.
- `draft/tracks/<id>/plan.md` for task status
- `draft/tracks/<id>/architecture.md` for module status (if exists)
- `metadata.json:scope_includes` / `scope_excludes` for the track's
scope footprint. Surface these in the status output so reviewers can
spot overlap at a glance. Conflicts are detected by
`scripts/tools/check-scope-conflicts.sh` (see
[core/shared/template-contract.md](../../core/shared/template-contract.md)).
3. Check for project-wide `draft/.ai-context.md` (or legacy `draft/architecture.md`) for module status
4. **Detect orphaned tracks:**
- Scan `draft/tracks/` for all directories
- For each directory, check if it has `metadata.json`
- Cross-reference with `draft/tracks.md` entries
- If directory has metadata.json but NOT in tracks.md → orphaned track
- Collect list of orphaned track IDs for warning section
### Optional: report rollup & freshness signals
If `parse-reports.sh` and `freshness-check.sh` are available, gather structured signals to enrich the status output (severity counts per track, stale `draft/` docs). Resolve via the canonical tool resolver (see [core/shared/tool-resolver.md](../../core/shared/tool-resolver.md)):
```bash
DRAFT_TOOLS="${DRAFT_PLUGIN_ROOT:-$HOME/.claude/plugins/draft}/scripts/tools"
[ -d "$DRAFT_TOOLS" ] || DRAFT_TOOLS="$HOME/.cursor/plugins/local/draft/scripts/tools"
[ -d "$DRAFT_TOOLS" ] || DRAFT_TOOLS="$PWD/scripts/tools"
# Per-track report severity rollup (bughunt, review, tech-debt, etc.):
[ -x "$DRAFT_TOOLS/parse-reports.sh" ] && \
bash "$DRAFT_TOOLS/parse-reports.sh" --root draft/
# Stale draft/ docs (sha256 drift since last index):
[ -x "$DRAFT_TOOLS/freshness-check.sh" ] && [ -f draft/.state/freshness.json ] && \
bash "$DRAFT_TOOLS/freshness-check.sh" --state draft/.state/freshness.json
```
Surface non-zero severity counts inline with each track. Surface stale-doc warnings in a "STALE DOCS" section after BLOCKED ITEMS. Both signals are best-effort — skip silently if scripts or state are absent.
## Output Format
Check each track's `metadata.json` `type` field to determine display format.
### Standard (multi-phase) tracks
```
---
DRAFT STATUS
---
PROJECT: [from product.md title]
ACTIVE TRACKS
---
[track-id-1] Feature Name
Status: [~] In Progress
Phase: 2/3 (Phase 2: [Phase Name])
Tasks: 5/12 complete
├─ [x] Task 1.1: Description
├─ [x] Task 1.2: Description
├─ [~] Task 2.1: Description ← CURRENT
├─ [ ] Task 2.2: Description
└─ [!] Task 2.3: Blocked - [reason]
[track-id-2] Another Feature
Status: [ ] Not Started
Phase: 0/2
Tasks: 0/6 complete
```
### Quick-mode tracks (metadata.json `type` is `"quick"`)
Quick-mode tracks use flat task numbering (`Task 1:`, `Task 2:`) without phases. Display them with a flat task list instead of the phase-grouped tree:
```
[track-id-3] Quick Feature
Status: [~] In Progress
Type: quick
Tasks: 2/5 complete
├─ [x] Task 1: Description
├─ [x] Task 2: Description
├─ [~] Task 3: Description ← CURRENT
├─ [ ] Task 4: Description
└─ [ ] Task 5: Description
```
Do **not** show `Phase: X/Y` for quick-mode tracks — they have no phases.
### Remaining sections (shared by both formats)
```
MODULES (if architecture.md exists)
---
Module A [x] Complete (Coverage: 96.2%)
Module B [~] In Progress - 3/5 tasks
Module C [ ] Not Started
BLOCKED ITEMS
---
- [track-id-1] Task 2.3: [blocked reason]
ORPHANED TRACKS
---
⚠ The following tracks have metadata.json but are missing from tracks.md:
- draft/tracks/orphan-track-id/
Recovery options:
1. Add to tracks.md manually if track is valid
2. Remove orphaned track directory if no longer needed
RECENTLY COMPLETED
---
- [track-id-3] - Completed [date]
QUICK STATS
---
Active Tracks: 2
Total Tasks: 18
Completed: 5 (28%)
Blocked: 1
---
```
## Module Reporting
When `.ai-context.md` or `architecture.md` exists for a track (track-level or project-level):
1. Read the `.ai-context.md` (or `architecture.md`) module definitions from `## Modules` section
2. For each module, determine status from its status marker:
- `[ ]` Not Started
- `[~]` In Progress — count completed vs total tasks mapped to this module
- `[x]` Complete — include coverage percentage if recorded
- `[!]` Blocked — include reason
3. Display in the MODULES section of the track report
4. If project-wide `draft/.ai-context.md` (or legacy `draft/architecture.md`) exists, show a project-level module summary after QUICK STATS
---
## If No Tracks
```
---
DRAFT STATUS
---
PROJECT: [from product.md title]
No active tracks.
Get started:
/draft:new-track "Your feature description"
---
```
## If Not Initialized
```
Draft not initialized in this project.
Run /draft:init to initialize.
```