craft-analyze
Post-cycle analysis — QA, UX, Creative, and Style audits using MCP browser tools.
Flesh out a previously-roadmapped cycle: take stories that have only titles and add sparks, content direction, and visual direction per story. Fires when the user re-enters cycle-design with an existing planning cycle directory.
> /plugin marketplace add drobins25/craft > /plugin install craft@craft
How it fires
How this command gets triggered: by you, by Claude, or both.
/detailing-modeContext preview
What this command does when you run it.
Flesh out a previously-roadmapped cycle: take stories that have only titles and add sparks, content direction, and visual direction per story. Fires when the user re-enters cycle-design with an existing planning cycle directory.
Flesh out a previously-roadmapped cycle: take stories that have only titles and add sparks, content direction, and visual direction per story. Fires when the user re-enters cycle-design with an existing planning cycle directory.
The orchestrator command (`commands/craft-cycle-design.md`) defines the routing - this reference contains the full mode flow.
---
Entered when `/craft` routes here with an existing cycle directory name as arg. This mode adds sparks and detail to title-only stories created in Roadmap Mode.
If args are provided: 1. Check if `.craft/cycles/[arg]/` exists 2. Check if `cycle.yaml` has `status: planning` 3. If valid: set PLANNING_CYCLE, **capture cycle.yaml's `source_concept`** into context, and proceed to Step D1 4. If invalid: show error and offer cycle picker
Use **Read** to read `.craft/cycles/[arg]/cycle.yaml`. Parse `status:` AND `source_concept:` values.
If the file exists and `status == "planning"`:
${CLAUDE_PLUGIN_ROOT}/hooks/scripts/update-global-state.sh PLANNING_CYCLE "[arg]"Remember the cycle's `source_concept` for the rest of this session - it determines routing for any NEW stories added during detailing (see Step D2b).
If the file doesn't exist or status is not `planning` → show error and offer cycle picker.
Read all stories in the cycle. Check which have sparks, type tags, and creative tool output:
# Check story state Glob ".craft/cycles/[cycle]/stories/*.md" → story_files stories = [] for each story_file in story_files: Read story_file (limit: 50) → parse frontmatter + section headings - title: from frontmatter - has_spark: "## Spark" section has non-empty, non-comment content - type: from frontmatter `type` field (may be missing) - has_content_direction: "## Content Direction" section has non-comment content - has_visual_direction: "## Visual Direction" section has non-comment content stories.append(title, has_spark, type, has_content_direction, has_visual_direction)
**Batch type inference for stories with sparks but no type:**
If any stories have sparks but missing `type` field, infer the type from the spark content and present for confirmation:
> "I've inferred types for stories with existing sparks: > > | # | Story | Type (inferred) | > |---|-------|-----------------| > | 1 | [Title] | `ui` | > | 2 | [Title] | `technical` | > > Correct? (Say which to change, or confirm to update the files.)"
On confirmation, update each story's frontmatter to add the `type` field.
**Present the full status:**
> "**Cycle: [Name]** — Detailing Mode > > | # | Story | Spark | Type | Content | Visual | > |---|-------|-------|------|---------|--------| > | 1 | [Title] | ✓ | `ui` | — | — | > | 2 | [Title] | — | — | — | — | > | 3 | [Title] | ✓ | `technical` | ✓ | n/a | > > [N] stories need sparks. [M] stories are missing creative tool output."
The "Visual" column shows `n/a` for non-ui stories, `—` for ui stories missing Visual Direction, and `✓` for ui stories with it. The "Content" column shows `—` for any story missing Content Direction and `✓` for those with it.
Use **AskUserQuestion**:
question: "How do you want to detail these stories?"
header: "Approach"
options:
- label: "Go through all stories"
description: "Capture sparks for each story in order"
- label: "Pick specific stories"
description: "Choose which stories to detail now"
- label: "Add more stories first"
description: "Add new story titles before detailing"
- label: "Rearrange/rename"
description: "Reorder or rename existing stories"**If user provides custom text:** Ask a clarifying AskUserQuestion to understand their intent.
**Planning-source routing applies when cycle.yaml has `source_concept` set (captured in Pre-check).** For each story that needs a spark, apply the action-moment framing:
**CRITICAL: include the invocation marker** when executing the protocol. State explicitly in your context before running Phase 1:
> `INVOCATION: cycle-design - planning source already confirmed in cycle.yaml`
This marker is required for Phase 1's auto-resolve to fire. Without it, Phase 1 falls back to corpus-scan and asks the user to pick a concept.
For a freeform story (or when cycle.yaml has no source_concept), reuse the existing **Step 3** flow (Capture Each Story):
Stories that already have sparks are skipped unless user explicitly asks to revisit.
**Existing stories without source_concept are NOT retroactively stamped during detailing.** If an existing story is being detailed and the user signals that it's actually planning-sourced ("this one is from the company-onboarding concept"), the orchestrator MAY ask whether to populate source_concept retroactively - but never silently. Recovery affordance, not default behavior.
After writing/updating a story's spark (whether new or revised), run two independent checks. These also apply to stories that already ha
Stop Vibing. Start Crafting. A Claude Code plugin that acts as an intelligent harness for your development workflow: your codebase is read-only by default, every change passes through a Write Gate as planned and approved work, and craft tracks your project's
Repo: drobins25/craft
Post-cycle analysis — QA, UX, Creative, and Style audits using MCP browser tools.
Consult a craft agent. Routes your question to the best mind in the workshop - not a menu, a recommendation.
Agent crystallization command. Studies a tool, role, or person and produces a portable 9-section agent that inhabits the domain - with beliefs, scar tissue,…
Complete a cycle. Triggers reflection if pending learnings, then archives.
Design a cycle — create new cycles with planned stories, detail existing planning cycles, or quick-sketch a roadmap. Detects planning docs in .craft/planning/…