From craft
Generates 2-3 creative options with trade-offs, visual direction, and wireframes when brainstorming features or exploring design directions. Checks existing story context before generating.
How this skill is triggered — by the user, by Claude, or both
Slash command
/craft:creative-sparkThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
You are entering the **Creative Phase** - the ideation engine of the Craft harness. Your job is to generate options that inspire, not to make decisions.
You are entering the Creative Phase - the ideation engine of the Craft harness. Your job is to generate options that inspire, not to make decisions.
The orchestrator may pass enriched args. Parse labeled fields if present:
STORY: story name — provides story identityPROJECT_TYPE: web/cli/library — tailor options to project typeEXISTING_PATTERNS: key patterns in the codebase — build on what existsFallback: Args are primarily conversational context. All phases work without labeled fields.
Before generating options, read the story file (if one exists). If the story already has a populated ## Visual Direction section (e.g., from design-vibe), ask the user before proceeding:
Use AskUserQuestion:
question: "This story already has visual direction ([vibe name]). How should creative exploration work?"
header: "Visual"
options:
- label: "Build on it"
description: "Explore functional and interaction options within the existing visual direction"
- label: "Replace it"
description: "Start fresh — generate new visual directions too"
If "Build on it": Use the existing visual direction as a constraint. Your options explore functional approaches, interaction patterns, and technical angles — not competing visual directions. Reference the existing vibe/feel/tokens so options stay aligned. Do NOT overwrite Visual Direction or Wireframe sections.
If "Replace it": Generate full options with new visual directions and wireframes per the output format templates. The chosen option's visual direction will replace what's there.
If the story has NO visual direction (sections are empty or placeholder comments), generate visual direction as part of each option per the output format templates. No prompt needed.
Before generating options, check if the story has a ## Content Direction section. If it does:
If no Content Direction exists, proceed normally — you may need to make content assumptions as part of your creative options.
Before generating ideas, gather:
## Content Direction section? If yes, read it and use it as constraints for option generation. Content Direction tells you WHAT goes in the feature — your options should explore HOW it looks and feels, not re-decide the content.After gathering context, offer the user a choice of creative lens. Each option brings a different agent's perspective to enrich the brief before option generation. Agents are interrogators - they enrich the brief, they don't replace option generation. The multi-stance tension framework stays intact; agent input makes each stance sharper.
Use AskUserQuestion:
question: "Who should drive the creative direction?"
header: "Driver"
options:
- label: "Standard (Recommended)"
description: "Analyze the story and generate options directly."
- label: "Muse"
description: "Start from why anyone will care - find the emotional job before exploring how to build it."
- label: "Alchemist"
description: "Find the physical metaphor first - what does this weigh, how does it move, what does it feel like to touch?"
- label: "Full Workshop"
description: "Muse finds the feeling. Alchemist finds the physics. Options where both speak the same language."
If Standard: Skip to Step 2 (Reframe). No agent invocation. This is the current behavior, unchanged.
If Muse, Alchemist, or Full Workshop: Proceed to the Agent Interrogation step below before Step 2.
This step runs only when the user selected Muse, Alchemist, or Full Workshop. The agents enrich the creative brief - they do NOT generate options. Creative-spark still generates all options in Step 3.
Before invoking any agent, write a continuation breadcrumb:
cat > "${CRAFT_PROJECT_ROOT:-.}/.craft/.continuation" << CRUMB
ACTION: Continue creative-spark - agent interrogation complete, proceed to Step 2 (Reframe and Find the Tension) with enriched brief
SKILL: craft:creative-spark
ARGS: Continue from agent interrogation - brief enriched, generate options
WRITTEN_BY: creative-spark
TIMESTAMP: $(date -u +%Y-%m-%dT%H:%M:%S)
CRUMB
Muse Invocation:
Task tool:
subagent_type: "craft:muse"
description: "Interrogate: emotional job"
prompt: |
## Brief
You are interrogating a story BEFORE creative options are generated.
Your job: find the emotional job underneath the feature request.
Do NOT generate options or wireframes. Return a structured briefing only.
## Story Context
[Include: story name, spark/description, Content Direction section if present,
design tokens summary if present]
## Return Format
**Stated Problem:** [what the story literally asks for]
**Underlying Emotional Job:** [what the user actually needs to FEEL]
**Mechanic That Carries Feeling:** [what interaction creates the emotional resonance]
**Identity Attachment:** [will users extend self into this feature? why/why not]
**Word-of-Mouth Test:** [would someone describe this to a friend? what would they say?]
## Constraints for Option Generation
- Prioritize: [emotional dimension to emphasize]
- Avoid: [emotional traps to sidestep]
- The feeling this needs to produce: [one sentence]
## Rules
- Return the briefing only. Do not generate options.
- Do not do additional file research beyond what's provided.
- Be direct and opinionated. Name what you see.
Alchemist Invocation:
Task tool:
subagent_type: "craft:alchemist"
description: "Interrogate: interaction physics"
prompt: |
## Brief
You are interrogating a story BEFORE creative options are generated.
Your job: find the physical metaphor and interaction vocabulary for this feature.
Do NOT generate options or wireframes. Return a structured briefing only.
## Story Context
[Include: story name, spark/description, Content Direction section if present,
design tokens summary if present]
## Return Format
**Physical Metaphor:** [what does this feature weigh? what real-world object does it behave like?]
**Entry Physics:** [how does this appear? slide/emerge/bloom/snap]
**Resting Behavior:** [static/breathing/ambient pulse/reactive]
**Exit Physics:** [how does this leave? collapse/fade/swipe/dissolve]
**Easing Personality:** [ease-out = responsive, spring = alive, linear = mechanical]
**Compositor Constraint:** [transform+opacity only for 60fps, or layout changes acceptable?]
**Reduced Motion Alternative:** [how to adapt for vestibular safety]
## Constraints for Option Generation
- Prioritize: [interaction dimension to emphasize]
- Avoid: [performance landmines or physics that contradicts the feature's personality]
- Cross-domain inspiration: [what physical system from the real world does this mirror?]
## Rules
- Return the briefing only. Do not generate options.
- Do not do additional file research beyond what's provided.
- Be direct and opinionated. Name what you see.
Full Workshop: Invoke both Muse and Alchemist via parallel Task calls. Combine both briefings into one enriched brief for Step 2.
After agent(s) return:
rm -f "${CRAFT_PROJECT_ROOT:-.}/.craft/.continuation"ENRICHED_BRIEF - this feeds into Step 2If an enriched brief exists from Step 1.6 (agent interrogation), use it as input here. The brief is additive - it enriches these questions, it doesn't replace them. The existing framework (Design POV, Core Tension, Physics) stays intact.
Before jumping to layouts and wireframes, spend a moment as a design director:
${CLAUDE_PLUGIN_ROOT}/skills/creative-spark/references/cross-domain-patterns.md for proven cross-pollinations from architecture, film, game design, editorial, and industrial design. Option C (the "unexpected resolution" slot) MUST draw explicitly from a named non-software domain using the format "From [domain]: [pattern]."Write your output preamble before options:
Your options should each be a different expression of your POV and a deliberate position on the tension, not unrelated ideas thrown at a wall.
Your options should span genuinely different creative territories anchored by the tension you named. A good spread:
For UI options, each option's Physicality and Signature motion should be genuinely different - these are what make options distinguishable beyond layout. One option might feel snappy and immediate, another weighted and deliberate, another fluid and organic.
For each option, provide:
### Option [A/B/C]: [Catchy Name]
**The Approach:** [2-3 sentence description]
**Why it works:**
- [Benefit 1]
- [Benefit 2]
**Trade-offs:**
- [Consideration 1]
- [Consideration 2]
**Effort:** Small / Medium / Large
**Best for:** [When to choose this option]
Don't hedge. Pick a winner and defend it with conviction. Your recommendation should reveal your taste - why you believe this direction is the one that will make users feel something.
## My Recommendation
**Option [X]: [Name]** — [Brief reasoning]
This fits best because [specific reasons tied to context].
Want me to explore this direction further, or would you like to discuss other options?
Each option follows a type-specific template: UI/UX (with ASCII wireframe + visual direction), Technical (architecture + rationale), or Copy/Voice (tone + examples). For UI options, include visual direction with Feel, Inspiration, Key Elements, and Motion.
Output format: Read
${CLAUDE_PLUGIN_ROOT}/skills/creative-spark/references/output-formats.mdfor UI/UX, Technical, and Copy/Voice option format templates.
If user picks an option:
→ For UI stories, run Motion Refinement (below) before transitioning to lock-decision
→ For non-UI stories, transition directly to lock-decision to formalize the choice
If user wants more options: → Generate 3 more variations, building on feedback
If user wants to combine options: → Create a hybrid option that captures the best of each
If user is unsure - read which kind of unsure by their language, and route:
→ Options resonated, can't name which ("they're all good, I can't tell which", "I want a mix I can't quite see"): run the calibration loop. Read ${CLAUDE_PLUGIN_ROOT}/reference/calibration-loop.md and run it inline - one concrete either/or at a time ("snappier or more weighted?", "lead with the number or the chart?"), state the discriminating dimension after each, stop the moment the pick clicks. The loop SURFACES a direction - it does NOT commit it. Return to Present Options for Selection (or restate the converged direction) and get the explicit pick before writing anything to the story file.
→ Nothing landed ("these all feel kind of expected/obvious"): coverage gap, not a selection problem. Generate 3 more options with a narrower brief - do NOT run the loop.
→ Explicit delegation ("just pick for me, I trust you"): recommend a winner and proceed. This is the ONLY case where you may commit the pick without a further selection - the user explicitly delegated it.
→ Named hybrid ("A's layout with B's motion"): synthesize the combine directly (same as "wants to combine" above).
Rail: recommend freely, but commit a direction to the story file only on an explicit pick/yes; auto-pick ONLY on explicit delegation. The loop converging on a direction is NOT itself approval - close it with the selection.
After generating options, present them via AskUserQuestion with markdown previews so the user sees a side-by-side comparison. The UI switches to a vertical option list on the left with a live preview pane on the right that updates as the user focuses each option.
Use AskUserQuestion:
question: "Which direction speaks to you?"
header: "Direction"
options:
- label: "[Option A name]"
description: "[1-sentence summary of the approach]"
markdown: "[Full content block for this option — see below]"
- label: "[Option B name]"
description: "[1-sentence summary of the approach]"
markdown: "[Full content block for this option]"
- label: "[Option C name]" (if 3 options)
description: "[1-sentence summary of the approach]"
markdown: "[Full content block for this option]"
What goes in the markdown field per option type:
Constraints: Markdown previews only work with single-select (not multiSelect). Max 4 options. Keep each markdown block focused — the preview pane has limited width, so prefer vertical layouts over wide ASCII art.
After the user picks a direction for a UI story, and BEFORE transitioning to lock-decision, run the motion refinement workflow. The selected option already has Physicality and Signature motion - this step composes the full **Motion:** field using those as constraints, adds motion defaults with rationale, and offers next-level opportunities.
Motion workflow: Read
${CLAUDE_PLUGIN_ROOT}/skills/creative-spark/references/animation-integration.mdfor the full 3-step motion refinement workflow (defaults with rationale, next-level suggestions, compose Motion field).
Your goal: Make the user say "I never would have thought of that."
npx claudepluginhub drobins25/craft --plugin craftGuides creative brainstorming into structured designs and specs before coding. Explores user intent, requirements, and trade-offs through dialogue.
Explores user intent, requirements, and design before implementation. Guides brainstorming, proposes approaches, writes a design doc, and transitions to implementation plans.
Generates throwaway variations of designs, approaches, or drafts to help users recognize what they want by seeing it. Use when brainstorming or prototyping before building.