craft-analyze
Post-cycle analysis — QA, UX, Creative, and Style audits using MCP browser tools.
One source for every design waiting to be built: mockups that converged or were parked, and annotate runs still open. This file owns four things only: the search, the list, the pick and the hand-off. It writes no story and no record text. Each design is built by its existing
> /plugin marketplace add drobins25/craft > /plugin install craft@craft
How it fires
How this command gets triggered: by you, by Claude, or both.
/story-from-craft-designsContext preview
What this command does when you run it.
One source for every design waiting to be built: mockups that converged or were parked, and annotate runs still open. This file owns four things only: the search, the list, the pick and the hand-off. It writes no story and no record text. Each design is built by its existing
One source for every design waiting to be built: mockups that converged or were parked, and annotate runs still open. This file owns four things only: the search, the list, the pick and the hand-off. It writes no story and no record text. Each design is built by its existing graduation reference, which does all the pre-fill and graduation; this file hands it the record path.
This flow asks no questions through a widget - there is no AskUserQuestion anywhere in it, because the callers have already spent their question budget or run where batch-saving is in play. Where a choice is needed, ask in plain conversation.
Find the project root first: `$CRAFT_PROJECT_ROOT` when it is set, else the folder the before-init lookup prints, so a design saved before `/craft:init` is still found. Nothing here assigns or exports `CRAFT_PROJECT_ROOT`; it keeps meaning "a set-up project".
ROOT="${CRAFT_PROJECT_ROOT:-}"
[ -n "$ROOT" ] || ROOT=$(bash -c 'source "$1" >/dev/null 2>&1; craft_before_init_root' _ "${CLAUDE_PLUGIN_ROOT}/hooks/scripts/find-workshop.sh")
ROOT="${ROOT%/}"
echo "ROOT $ROOT"
for r in "$ROOT"/.craft/mockups/*/record.md; do
[ -f "$r" ] || continue
if grep -qE '^status: (converged|parked)$' "$r"; then echo "MOCKUP $r"; fi
done
for r in "$ROOT"/.craft/annotations/*/record.md; do
[ -f "$r" ] || continue
if grep -q '^status: open' "$r" && ! grep -q '^outcome: error' "$r"; then echo "ANNOTATE $r"; fi
doneThe output is a `ROOT <folder>` line, then one `MOCKUP <record.md path>` line per waiting mockup, then one `ANNOTATE <record.md path>` line per waiting run. Nothing waiting prints only the ROOT line.
What waits:
**Counts phrase** (for a caller's question text): `<N> mockup` or `<N> mockups`, then `<M> annotate run` or `<M> annotate runs`, comma-joined, mockups first, a zero kind left out. For example "2 mockups, 1 annotate run". Count the MOCKUP and ANNOTATE lines, never the folders on disk.
Read each waiting record's first lines so the list can say what it holds: a mockup's `## Brief`, an annotate run's `subject`.
The chosen record's `record.md` path goes to its graduation reference, read inline with the Read tool, never via the Skill tool (a Skill call breaks control flow back to the caller):
Read "${CLAUDE_PLUGIN_ROOT}/commands/references/story-from-mockup.md"for a mockup, or
Read "${CLAUDE_PLUGIN_ROOT}/commands/references/story-from-annotate.md"for an annotate run. Hand it the record path so its Phase 1 uses that record and skips its own pick. Tell it to write the story at the absolute `<root>/.craft/backlog/<story-name>.md` (the ROOT line from the Search) instead of its relative target, so the story lands in the right folder even before `/craft:init`.
When the caller is not story-new, first Read the Step 10 frontmatter block from `${CLAUDE_PLUGIN_ROOT}/commands/craft-story-new.md`; the graduation references point at it for the standard story frontmatter.
When the graduation reference reaches "The parent flow is DONE", that design's story is written. What follows belongs to the caller.
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
Post-cycle analysis — QA, UX, Creative, and Style audits using MCP browser tools.
Point at anything in a live browser tab - every pin gets a live attempt on the page the moment you SEND it, and the session keeps…
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 -…
File a bug without fixing it, from a person mid-conversation or an agent mid-run. One door, a complete record on disk, nobody…