/craft-analyze
Post-cycle analysis — QA, UX, Creative, and Style audits using MCP browser tools.
$ 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-analyze
Context preview
What this command does when you run it.
Post-cycle analysis — QA, UX, Creative, and Style audits using MCP browser tools.
Command definition
craft-analyze.mdname: analyze
description: "Post-cycle analysis — QA, UX, Creative, and Style audits using MCP browser tools."
Analyze
Run comprehensive analysis on what you've built. Findings persist between sessions — nothing gets lost.
Analysis Types
| Type | Agent | Finds | |------|-------|-------| | **QA** | qa-analyzer | Bugs, errors, edge cases | | **UX** | ux-analyzer | Friction, accessibility, heuristic violations | | **Creative** | creative-analyzer | Delight opportunities, feature ideas | | **Style** | style-analyzer | Token violations, pattern drift | | **Walkthrough** | walkthrough-analyzer | "Does it actually work for a human?" - clicks everything, checks every state |
Flow
Step 1: Check Pending Findings
Before any new analysis, check for existing pending findings of the requested type.
**If pending findings exist:**
> "You have [N] pending [type] findings from [date]: > > **Critical/High:** [count] > **Medium:** [count] > **Low:** [count] > > What would you like to do?"
Use **AskUserQuestion**:
question: "What would you like to do with pending findings?"
header: "Pending"
options:
- label: "Review pending findings now"
description: "Go through existing findings before new analysis"
- label: "Continue analysis (keep pending)"
description: "Run new analysis, existing findings stay queued"
- label: "Clear pending and start fresh"
description: "Dismiss old findings, start new analysis"**If user provides custom text:** Ask a clarifying AskUserQuestion before proceeding.
**If user chooses "Review pending"** → Go to Step 5 (Review Findings)
**If user chooses "Continue" or "Clear"** → Proceed to Step 2
Step 2: Select Analysis Type
> "What kind of analysis?"
Use **AskUserQuestion**:
question: "What kind of analysis?"
header: "Type"
options:
- label: "QA Pass"
description: "Find bugs and errors"
- label: "UX Insights"
description: "Usability and accessibility review"
- label: "Creative Exploration"
description: "Find delight opportunities"
- label: "Style Audit"
description: "Design consistency check"
- label: "Walkthrough"
description: "Click everything in the live app, report what doesn't feel right"**Note:** "Full Analysis" runs all types sequentially. If user selects "Other" and mentions "full" or "all", run all types.
**If user provides custom text:** Ask a clarifying AskUserQuestion to confirm which analysis type(s) they want.
Step 3: Select Scope
> "What should I analyze?"
Use **AskUserQuestion**:
question: "What should I analyze?"
header: "Scope"
options:
- label: "Current cycle"
description: "All stories in active cycle"
- label: "Specific story"
description: "Pick one story from the cycle"
- label: "Specific pages"
description: "I'll specify which pages/URLs"
- label: "Whole application"
description: "Full app analysis"**If user provides custom text:** Ask a clarifying AskUserQuestion to confirm the scope.
**If user selects "Specific pages":**
Use **AskUserQuestion**:
question: "Which pages should I analyze?"
header: "Pages"
options:
- label: "[Known page 1]"
description: "Based on project structure"
- label: "[Known page 2]"
- label: "[Known page 3]"**If scope is ambiguous or Claude is unsure:**
Use **AskUserQuestion**:
question: "I want to make sure I analyze the right things. Can you confirm?"
header: "Clarify"
options:
- label: "[Option based on understanding]"
- label: "[Alternative interpretation]"
- label: "Let me explain differently"
**IMPORTANT:** Always confirm scope before running analysis. If uncertain about:
- Which URLs to visit
- Which components to inspect
- What user flows to test
- What the acceptance criteria mean
Ask first. Don't assume.
Step 4: Run Analysis
**Check MCP availability first.** Chrome-devtools MCP should be available — the Craft plugin bundles it automatically.
If chrome-devtools MCP tools are not available:
> "Chrome DevTools MCP should be available through the Craft plugin, but I'm not seeing it. > > Try restarting Claude Code (`exit` then `claude`) to reload the plugin's MCP servers. > > Then run `/craft:analyze` again."
**If MCP is available**, **INVOKE the appropriate analyzer agent using the Task tool**:
- QA analysis: `craft:qa-analyzer`
- UX analysis: `craft:ux-analyzer`
- Creative analysis: `craft:creative-analyzer`
- Style analysis: `craft:style-analyzer`
- Walkthrough: `craft:walkthrough-analyzer`
Pass the confirmed scope and any relevant context to the agent.
**For walkthrough analysis**, assemble a structured brief before invoking the agent (the agent does NOT read story files - it only interacts with the browser):
1. Read `project.md` for dev server command and port 2. For each `type: ui` story in scope, extract: feature name, trigger, expected behavior 3. Pass the brief with dev server command, URL, test plan, and story context 4. The agent returns findings - you write them to `.craft/analysis/pending/walkthrough.yaml`
**After the agent completes, YOU (the orchestrator) must write findings to disk.** The analyzer agents have Write/Edit disabled — they return findings in their output text only.
**Write findings to** `.craft/analysis/pending/[type].yaml`: 1. Create `.craft/analysis/pending/` directory if it doesn't exist: `mkdir -p .craft/analysis/pending` 2. Read the existing pending file (if any) to preserve prior findings 3. Parse the agent's output for findings (bugs, issues, opportunities) 4. Append new findings to the YAML file using the template format from `${CLAUDE_PLUGIN_ROOT}/templates/analysis/pending/[type].yaml` 5. Set `updated:` to current date and `scope:` to what was analyzed
**This is critical.** If you don't write findings to disk, they exist only in conversation context and will be lost on compaction.
User can **stop at any time** — write all findings discovered so far before stopping.
**During analysis, Claude should:**
Read more
name: analyze description: "Post-cycle analysis — QA, UX, Creative, and Style audits using MCP browser tools."
Analyze
Run comprehensive analysis on what you've built. Findings persist between sessions — nothing gets lost.
Analysis Types
| Type | Agent | Finds | |------|-------|-------| | **QA** | qa-analyzer | Bugs, errors, edge cases | | **UX** | ux-analyzer | Friction, accessibility, heuristic violations | | **Creative** | creative-analyzer | Delight opportunities, feature ideas | | **Style** | style-analyzer | Token violations, pattern drift | | **Walkthrough** | walkthrough-analyzer | "Does it actually work for a human?" - clicks everything, checks every state |
Flow
Step 1: Check Pending Findings
Before any new analysis, check for existing pending findings of the requested type.
**If pending findings exist:**
> "You have [N] pending [type] findings from [date]: > > **Critical/High:** [count] > **Medium:** [count] > **Low:** [count] > > What would you like to do?"
Use **AskUserQuestion**:
question: "What would you like to do with pending findings?"
header: "Pending"
options:
- label: "Review pending findings now"
description: "Go through existing findings before new analysis"
- label: "Continue analysis (keep pending)"
description: "Run new analysis, existing findings stay queued"
- label: "Clear pending and start fresh"
description: "Dismiss old findings, start new analysis"**If user provides custom text:** Ask a clarifying AskUserQuestion before proceeding.
**If user chooses "Review pending"** → Go to Step 5 (Review Findings)
**If user chooses "Continue" or "Clear"** → Proceed to Step 2
Step 2: Select Analysis Type
> "What kind of analysis?"
Use **AskUserQuestion**:
question: "What kind of analysis?"
header: "Type"
options:
- label: "QA Pass"
description: "Find bugs and errors"
- label: "UX Insights"
description: "Usability and accessibility review"
- label: "Creative Exploration"
description: "Find delight opportunities"
- label: "Style Audit"
description: "Design consistency check"
- label: "Walkthrough"
description: "Click everything in the live app, report what doesn't feel right"**Note:** "Full Analysis" runs all types sequentially. If user selects "Other" and mentions "full" or "all", run all types.
**If user provides custom text:** Ask a clarifying AskUserQuestion to confirm which analysis type(s) they want.
Step 3: Select Scope
> "What should I analyze?"
Use **AskUserQuestion**:
question: "What should I analyze?"
header: "Scope"
options:
- label: "Current cycle"
description: "All stories in active cycle"
- label: "Specific story"
description: "Pick one story from the cycle"
- label: "Specific pages"
description: "I'll specify which pages/URLs"
- label: "Whole application"
description: "Full app analysis"**If user provides custom text:** Ask a clarifying AskUserQuestion to confirm the scope.
**If user selects "Specific pages":**
Use **AskUserQuestion**:
question: "Which pages should I analyze?"
header: "Pages"
options:
- label: "[Known page 1]"
description: "Based on project structure"
- label: "[Known page 2]"
- label: "[Known page 3]"**If scope is ambiguous or Claude is unsure:**
Use **AskUserQuestion**:
question: "I want to make sure I analyze the right things. Can you confirm?" header: "Clarify" options: - label: "[Option based on understanding]" - label: "[Alternative interpretation]" - label: "Let me explain differently"
**IMPORTANT:** Always confirm scope before running analysis. If uncertain about:
- Which URLs to visit
- Which components to inspect
- What user flows to test
- What the acceptance criteria mean
Ask first. Don't assume.
Step 4: Run Analysis
**Check MCP availability first.** Chrome-devtools MCP should be available — the Craft plugin bundles it automatically.
If chrome-devtools MCP tools are not available:
> "Chrome DevTools MCP should be available through the Craft plugin, but I'm not seeing it. > > Try restarting Claude Code (`exit` then `claude`) to reload the plugin's MCP servers. > > Then run `/craft:analyze` again."
**If MCP is available**, **INVOKE the appropriate analyzer agent using the Task tool**:
- QA analysis: `craft:qa-analyzer`
- UX analysis: `craft:ux-analyzer`
- Creative analysis: `craft:creative-analyzer`
- Style analysis: `craft:style-analyzer`
- Walkthrough: `craft:walkthrough-analyzer`
Pass the confirmed scope and any relevant context to the agent.
**For walkthrough analysis**, assemble a structured brief before invoking the agent (the agent does NOT read story files - it only interacts with the browser):
1. Read `project.md` for dev server command and port 2. For each `type: ui` story in scope, extract: feature name, trigger, expected behavior 3. Pass the brief with dev server command, URL, test plan, and story context 4. The agent returns findings - you write them to `.craft/analysis/pending/walkthrough.yaml`
**After the agent completes, YOU (the orchestrator) must write findings to disk.** The analyzer agents have Write/Edit disabled — they return findings in their output text only.
**Write findings to** `.craft/analysis/pending/[type].yaml`: 1. Create `.craft/analysis/pending/` directory if it doesn't exist: `mkdir -p .craft/analysis/pending` 2. Read the existing pending file (if any) to preserve prior findings 3. Parse the agent's output for findings (bugs, issues, opportunities) 4. Append new findings to the YAML file using the template format from `${CLAUDE_PLUGIN_ROOT}/templates/analysis/pending/[type].yaml` 5. Set `updated:` to current date and `scope:` to what was analyzed
**This is critical.** If you don't write findings to disk, they exist only in conversation context and will be lost on compaction.
User can **stop at any time** — write all findings discovered so far before stopping.
**During analysis, Claude should:**
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-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 - /craft-cycle-start
Activate a cycle and start implementing its stories.
Open command

