name: brainstorming
Help turn ideas into fully formed designs and specs through natural collaborative dialogue.
Start by understanding the current project context, then ask questions one at a time to refine the idea. Once you understand what you're building, present the design in small sections (200-300 words), checking after each section whether it looks right so far.
Understanding the idea:
Exploring approaches:
Presenting the design:
Documentation:
docs/plans/YYYY-MM-DD-<topic>-design.mdImplementation (if continuing):
A browser-based visual companion for showing mockups, diagrams, and options. Use it whenever visual representation makes feedback easier. Only works in Claude Code.
Use the visual companion when seeing beats describing:
Always ask first:
"This involves some visual decisions. Would you like me to show mockups in a browser window? (Requires opening a local URL)"
Only proceed if they agree. Otherwise, describe options in text.
Scale fidelity to the question. If you're asking about layout structure, simple wireframes suffice. If you're asking about visual polish, show polish. Match the mockup's detail level to what you're trying to learn.
Explain the question on each page. Don't just show options—state what decision you're seeking. "Which layout feels more professional?" not just "Pick one."
Iterate before moving on. If feedback changes the current screen, update it and show again. Validate that your changes address their feedback before proceeding to the next question.
Limit choices to 2-4 options. More gets overwhelming. If you have more alternatives, narrow them down first or group them.
Use real content when it matters. For a photography portfolio, use actual images (Unsplash). For a blog, use realistic text. Placeholder content obscures design issues.
# Start server (creates unique session directory)
${CLAUDE_PLUGIN_ROOT}/lib/brainstorm-server/start-server.sh
# Returns: {"type":"server-started","port":52341,"url":"http://localhost:52341",
# "screen_dir":"/tmp/brainstorm-12345"}
Save screen_dir from the response. Tell user to open the URL.
Start watcher first (background bash) - avoids race condition:
${CLAUDE_PLUGIN_ROOT}/lib/brainstorm-server/wait-for-feedback.sh $SCREEN_DIR
Write HTML to a new file in screen_dir:
platform.html, visual-style.html, layout.htmlTell user what to expect:
Wait for feedback - call TaskOutput(task_id, block=true, timeout=600000)
Process feedback - returns JSON like {"choice": "a", "feedback": "make header smaller"}
Iterate or advance - if feedback changes current screen, write a new file (e.g., layout-v2.html). Only move to next question when current step is validated.
Repeat until done.
${CLAUDE_PLUGIN_ROOT}/lib/brainstorm-server/stop-server.sh $SCREEN_DIR
${CLAUDE_PLUGIN_ROOT}/lib/brainstorm-server/frame-template.html.options, .cards, .mockup, .split, .pros-cons${CLAUDE_PLUGIN_ROOT}/lib/brainstorm-server/CLAUDE-INSTRUCTIONS.md${CLAUDE_PLUGIN_ROOT}/skills/brainstorming/visual-companion.md