/craft-status
Show current Craft progress — cycles, stories, backlog in a rich dashboard view.
$ npx -y skills add drobins25/craft --agent claude-codeShips with craft. Installing the plugin gets this command.
How it fires
How this command gets triggered: by you, by Claude, or both.
- Fires itselfClaude auto-loads it when your prompt matches the work.
- You can call itInvoke it directly when you want it.
- Slash command
/craft-status
Context preview
What this command does when you run it.
Show current Craft progress — cycles, stories, backlog in a rich dashboard view.
Command definition
craft-status.mdname: status
description: "Show current Craft progress — cycles, stories, backlog in a rich dashboard view."
Craft Status
Display a comprehensive view of current Craft state.
Dashboard Format
┌─────────────────────────────────────────────────────────────┐
│ CRAFT $X.XX │
├─────────────────────────────────────────────────────────────┤
│ │
│ ● Cycle [N]: [Name] [status] │
│ ├── ✓ [Story 1] complete │
│ ├── ◐ [Story 2] chunk X/Y ███░░ │
│ └── ○ [Story 3] ready │
│ │
│ ○ Cycle [N+1]: [Name] [status] │
│ └── X stories planned │
│ │
├─────────────────────────────────────────────────────────────┤
│ Backlog: X stories │
│ ├── [story-name] (priority) │
│ ├── [story-name] │
│ └── +N more │
└─────────────────────────────────────────────────────────────┘
Status Indicators
| Symbol | Meaning | |--------|---------| | `○` | Ready/Pending | | `◐` | In Progress | | `✓` | Complete | | `⚠` | Blocked | | `✗` | Failed |
Planning Section
If `.craft/planning/` exists, show a planning summary between the cycle dashboard and the backlog:
├─────────────────────────────────────────────────────────────┤
│ Planning updated 2 days ago │
│ ► customer-modernization (3 concepts, 1 planned) │
│ ├── profile-tab complete │
│ ├── cdb-mapping planned │
│ └── invoice-email open │
│ ○ permissions-cleanup open │
│ ○ user-preferences open │
│ ? 4 open questions across 3 concepts │
├─────────────────────────────────────────────────────────────┤
Planning data gathering
Use **Glob** with pattern `$PROJECT/.craft/planning/active.md` to check if planning exists. If not found, skip the planning section silently.
If found: 1. Use **Read** to read `$PROJECT/.craft/planning/active.md`. Extract `last_updated` from frontmatter. Calculate days since last update. If >3 days, show "updated N days ago" in the header. 2. Use **Read** to read `$PROJECT/.craft/planning/README.md`. Extract the Roadmap table rows for initiative/concept names and statuses. 3. For each initiative folder (detected via Glob `$PROJECT/.craft/planning/*/README.md`), read the initiative README to get sub-concept count and statuses. 4. Scan for open questions: Use **Bash** to count `- [ ]` items across all planning `.md` files:
grep -r "^- \[ \]" "${CRAFT_PROJECT_ROOT:-.}/.craft/planning/" --include="*.md" 2>/dev/null | wc -l5. **Broken link check:** For each concept file with a `stories:` frontmatter field containing paths, use **Glob** to verify each story path exists. Flag any that don't resolve as `[broken]` in the output.
Planning display rules
- Show initiatives as indented groups with their sub-concepts
- Show standalone concepts at root level
- Status indicators: `open`, `planned`, `complete`, `archived`
- Show open questions count if >0
- Show broken story links if any found
- If `last_updated` is missing from active.md frontmatter, show "updated: unknown"
Data Sources
Read from:
- `.craft/.global-state` — active cycle, global config
- `.craft/cycles/*/cycle.yaml` — cycle details
- `.craft/cycles/*/.state` — cycle state
- `.craft/cycles/*/stories/*.md` — story details
- `.craft/backlog/*.md` — backlog stories
- `.craft/planning/active.md` — planning live state (if exists)
- `.craft/planning/README.md` — planning roadmap index (if exists)
- `.craft/planning/*/README.md` — initiative details (if exists)
- `.craft/map/capability.json` — Living Map capability verdict (if exists)
- `.craft/map/index.json` — Living Map index: areas + per-file anchor keys (if exists)
- `.craft/mockups/*/record.md` — mockup records (if any exist)
Map status
The Living Map is an unrequested optimization, so its status is **pulled here, never pushed** - no toast or notice fires when a grammar degrades; the only place a user learns the map's state is by asking for it.
Render ONE line, only if `.craft/map/` exists (a project that has never needed the map shows nothing - that is the normal first-run state, not an error). Read `.craft/map/capability.json`:
- `mode: full` — `Map: active · N langs` (N = grammars that loaded true)
- `mode: partial` — `Map: active · N langs · M degraded` (M = grammars that loaded false; name them, e.g. "C# - why?", the "why?" pointing at `commands/references/map.md`)
- `mode: floor` — `Map: basic mode (full parsing unavailable - see references/map.md)`
- `mode: disabled` — `Map: off (map.enabled: false)`
This is render-only: read the cached verdict and print the line in the dashboard's existing style. Do NOT probe, build, or re-derive anything from the status command.
Gates posture
Render ONE line showing quality-gate coverage. Run the stack probe (sub-100ms, pure filesystem - the one exception to render-only, and it executes no toolchain commands):
bash ${CLAUDE_PLUGIN_ROOT}/hooks/scripts/gate-signals.sh scanEach output line is `manifest <glob> <count>` (undecided) or `manifest <glob> <count> <state> <date>` (recorded decision). Render:
- All signals wired or built-in-covered (package.json with runnable scripts) → `Gates: full coverage`
- Declined signals exist → append them labeled as chosen: `Gates: 1 ungated by choice: *.csproj (decli
Read more
name: status description: "Show current Craft progress — cycles, stories, backlog in a rich dashboard view."
Craft Status
Display a comprehensive view of current Craft state.
Dashboard Format
┌─────────────────────────────────────────────────────────────┐ │ CRAFT $X.XX │ ├─────────────────────────────────────────────────────────────┤ │ │ │ ● Cycle [N]: [Name] [status] │ │ ├── ✓ [Story 1] complete │ │ ├── ◐ [Story 2] chunk X/Y ███░░ │ │ └── ○ [Story 3] ready │ │ │ │ ○ Cycle [N+1]: [Name] [status] │ │ └── X stories planned │ │ │ ├─────────────────────────────────────────────────────────────┤ │ Backlog: X stories │ │ ├── [story-name] (priority) │ │ ├── [story-name] │ │ └── +N more │ └─────────────────────────────────────────────────────────────┘
Status Indicators
| Symbol | Meaning | |--------|---------| | `○` | Ready/Pending | | `◐` | In Progress | | `✓` | Complete | | `⚠` | Blocked | | `✗` | Failed |
Planning Section
If `.craft/planning/` exists, show a planning summary between the cycle dashboard and the backlog:
├─────────────────────────────────────────────────────────────┤ │ Planning updated 2 days ago │ │ ► customer-modernization (3 concepts, 1 planned) │ │ ├── profile-tab complete │ │ ├── cdb-mapping planned │ │ └── invoice-email open │ │ ○ permissions-cleanup open │ │ ○ user-preferences open │ │ ? 4 open questions across 3 concepts │ ├─────────────────────────────────────────────────────────────┤
Planning data gathering
Use **Glob** with pattern `$PROJECT/.craft/planning/active.md` to check if planning exists. If not found, skip the planning section silently.
If found: 1. Use **Read** to read `$PROJECT/.craft/planning/active.md`. Extract `last_updated` from frontmatter. Calculate days since last update. If >3 days, show "updated N days ago" in the header. 2. Use **Read** to read `$PROJECT/.craft/planning/README.md`. Extract the Roadmap table rows for initiative/concept names and statuses. 3. For each initiative folder (detected via Glob `$PROJECT/.craft/planning/*/README.md`), read the initiative README to get sub-concept count and statuses. 4. Scan for open questions: Use **Bash** to count `- [ ]` items across all planning `.md` files:
grep -r "^- \[ \]" "${CRAFT_PROJECT_ROOT:-.}/.craft/planning/" --include="*.md" 2>/dev/null | wc -l5. **Broken link check:** For each concept file with a `stories:` frontmatter field containing paths, use **Glob** to verify each story path exists. Flag any that don't resolve as `[broken]` in the output.
Planning display rules
- Show initiatives as indented groups with their sub-concepts
- Show standalone concepts at root level
- Status indicators: `open`, `planned`, `complete`, `archived`
- Show open questions count if >0
- Show broken story links if any found
- If `last_updated` is missing from active.md frontmatter, show "updated: unknown"
Data Sources
Read from:
- `.craft/.global-state` — active cycle, global config
- `.craft/cycles/*/cycle.yaml` — cycle details
- `.craft/cycles/*/.state` — cycle state
- `.craft/cycles/*/stories/*.md` — story details
- `.craft/backlog/*.md` — backlog stories
- `.craft/planning/active.md` — planning live state (if exists)
- `.craft/planning/README.md` — planning roadmap index (if exists)
- `.craft/planning/*/README.md` — initiative details (if exists)
- `.craft/map/capability.json` — Living Map capability verdict (if exists)
- `.craft/map/index.json` — Living Map index: areas + per-file anchor keys (if exists)
- `.craft/mockups/*/record.md` — mockup records (if any exist)
Map status
The Living Map is an unrequested optimization, so its status is **pulled here, never pushed** - no toast or notice fires when a grammar degrades; the only place a user learns the map's state is by asking for it.
Render ONE line, only if `.craft/map/` exists (a project that has never needed the map shows nothing - that is the normal first-run state, not an error). Read `.craft/map/capability.json`:
- `mode: full` — `Map: active · N langs` (N = grammars that loaded true)
- `mode: partial` — `Map: active · N langs · M degraded` (M = grammars that loaded false; name them, e.g. "C# - why?", the "why?" pointing at `commands/references/map.md`)
- `mode: floor` — `Map: basic mode (full parsing unavailable - see references/map.md)`
- `mode: disabled` — `Map: off (map.enabled: false)`
This is render-only: read the cached verdict and print the line in the dashboard's existing style. Do NOT probe, build, or re-derive anything from the status command.
Gates posture
Render ONE line showing quality-gate coverage. Run the stack probe (sub-100ms, pure filesystem - the one exception to render-only, and it executes no toolchain commands):
bash ${CLAUDE_PLUGIN_ROOT}/hooks/scripts/gate-signals.sh scanEach output line is `manifest <glob> <count>` (undecided) or `manifest <glob> <count> <state> <date>` (recorded decision). Render:
- All signals wired or built-in-covered (package.json with runnable scripts) → `Gates: full coverage`
- Declined signals exist → append them labeled as chosen: `Gates: 1 ungated by choice: *.csproj (decli
Showing the first part of this file.
Stop Vibing. Start Crafting. Claude Code plugin: guided + controlled development orchestration harness with built-in workflow + state management, for designing + building durable, production-ready software through the entire product lifecycle - new projects
Repo: drobins25/craft
Other commands on craft.
- /craft-analyze
Post-cycle analysis — QA, UX, Creative, and Style audits using MCP browser tools.
Open command - /craft-ask
Consult a craft agent. Routes your question to the best mind in the workshop - not a menu, a recommendation.
Open command - /craft-become
Agent crystallization command. Studies a tool, role, or person and produces a portable 9-section agent that inhabits the domain - with beliefs, scar tissue, and instincts.
Open command - /craft-cycle-assign
Move a story from backlog to a cycle.
Open command - /craft-cycle-complete
Complete a cycle. Triggers reflection if pending learnings, then archives.
Open command - /craft-cycle-design
Design a cycle — create new cycles with planned stories, detail existing planning cycles, or quick-sketch a roadmap. Detects planning docs in .craft/planning/ and sources the cycle from them when relevant.
Open command

