원클릭으로
Brainstorm session to collect ideas and decisions for the project
npx skills add https://github.com/0-CODE/viepilot --skill vp-brainstorm이 명령을 Claude Code에 복사하여 붙여넣어 스킬을 설치하세요
Brainstorm session to collect ideas and decisions for the project
npx skills add https://github.com/0-CODE/viepilot --skill vp-brainstorm이 명령을 Claude Code에 복사하여 붙여넣어 스킬을 설치하세요
LLM-driven QA agent team generator — research codebase, generate context-aware QA scanning agents
Autonomous execution loop with control points and recovery
Convert brainstorm sessions into executable artifacts
Import and triage tickets from Excel/M365 Online, Google Sheets, or CSV/TSV files — classify as BUG/ENH, accept/decline via AskUserQuestion, write back to source, generate TRIAGE report
Audit state, docs drift, and stack best-practice compliance — works on any project
Create new request: feature, bug fix, enhancement, or brainstorm continuation
| name | vp-brainstorm |
| description | Brainstorm session to collect ideas and decisions for the project |
| version | 1.1.0 |
Output this banner as the first thing on every invocation — before questions, work, or any other output:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
VIEPILOT ► VP-BRAINSTORM v1.1.0 (fw 2.19.0)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
## Version Update Check (ENH-072)
After displaying the greeting banner, run:
node "$HOME/.claude/viepilot/bin/vp-tools.cjs" check-update --silent
If exit code = 1 (update available — new version printed to stdout): Display notice banner before any other output:
┌──────────────────────────────────────────────────────────────────┐
│ ✨ ViePilot {latest_version} available (installed: {current}) │
│ npm i -g viepilot && vp-tools install --target {adapter_id} │
└──────────────────────────────────────────────────────────────────┘
Replace {latest_version} with stdout from the command, {current} with the installed
version, {adapter_id} with the active adapter (claude-code / cursor / antigravity / codex / copilot).
If exit code = 0 or command unavailable: silent, continue.
Suppression rules:
--no-update-check flag on skill invocation → skip this step entirelyconfig.json → update.check: false → skip this step entirelyupdate_check_done session guard)
</version_check>
<persona_context>At skill start, run:
node "$HOME/.claude/viepilot/bin/vp-tools.cjs" persona auto-switch
node "$HOME/.claude/viepilot/bin/vp-tools.cjs" persona context
Inject the output as ## User Persona context before any task execution.
Silent if command unavailable or errors.
</persona_context>
Prompt user conversationally with numbered list options.
Use Claude Code tools: Bash (shell), Read (file), Edit + Write (file write/patch),
Grep (search), Glob (file patterns), LS, WebSearch, WebFetch,
Agent (spawn subagent — multi-level nesting supported)
Interactive: AskUserQuestion (deferred — preload via ToolSearch before first call)
No slash sub-commands. All session actions are triggered proactively by the AI via
AskUserQuestion at the right moment — no user typing required.
| Action | Trigger condition | AUQ prompt |
|---|---|---|
| Save + crystallize handoff | User signals done: "save", "done", "xong", "lưu", "finished", "ready", "crystallize", or equivalent intent | "Save session and prepare for /vp-crystallize?" |
| UX walkthrough | In UI session AND user mentions "research", "test", "UX", "walkthrough" — OR ≥1 UI signals accumulated | "Run UX walkthrough (3-phase simulate + research + update HTML)?" |
| Architecture review | User asks "review decisions", "check arch", "summarize choices", or equivalent intent | "Generate architecture review summary table?" |
| Sync UI → Arch | After arch update when UI workspace also active | "Sync architecture changes to UI Direction workspace?" |
Why: In Claude Code terminal, any /command is intercepted by the shell as a skill invocation. Using proactive AUQ triggers works identically on ALL adapters — no adapter-specific typing rules needed.
Use Cursor tools: run_terminal_cmd (shell), read_file (read), edit_file (write/edit),
grep_search (search), web_search, codebase_search, list_dir, file_search
Interactive: text list fallback (AskQuestion available in Plan Mode only; Agent Mode = text)
Subagent: /multitask (user command, single-level only — not a callable tool)
MCP limit: 40 tools
Use Antigravity tools: shell (cmd), file_read, file_write, MCP plugins
Interactive: text fallback (TUI-based; no formal AskUserQuestion)
Skill path: .agents/skills/<skill>/SKILL.md (project) or ~/.gemini/antigravity/skills/ (global)
Note: Gemini CLI deprecated June 18, 2026 — use Antigravity CLI.
Use Codex tools: container.exec (sandboxed shell), apply_patch (file write), web_search
Interactive: text fallback (TUI Tab/Enter injection)
Config: ~/.codex/config.toml
Use Copilot tools: runCommands (shell), read/readfile (read), edit/editFiles (write),
code_search, find_references
Interactive: askQuestions (main agent only — NOT available in subagents; VS Code issue #293745)
Skill path: .github/agents/<name>.agent.md
<scope_policy>
vp-* skills in ViePilot workflows.non vp-*) are out of framework scope unless user explicitly opts in.vp-* skill.
</scope_policy><implementation_routing_guard>
docs/brainstorm/*, .viepilot/ui-direction/*). Does not implement on behalf of /vp-auto for lib/, tests/, or framework workflows//skills/ changes — after brainstorm use /vp-crystallize / /vp-evolve → /vp-auto depending on the stage. Explicit override — state it in chat.
</implementation_routing_guard>Supports:
.viepilot/ui-direction/{session-id}/ — supports multi-page (pages/{slug}.html + hub index.html) and the ## Pages inventory hook in notes.md when pages/ exists (FEAT-007)## Phases section.Completed / /end, if .viepilot/META.md (viepilot_profile_id) is missing — run sequential Q&A with proposals; read/write ~/.viepilot/profile-map.md; create ~/.viepilot/profiles/<slug>.md + binding per docs/dev/global-profiles.md. If a profile is already bound — skip intake by default (ask if change needed).--ui mode, proactively offered via AUQ when user mentions "research", "test UX", "walkthrough" — or when ≥1 UI signals accumulated. Runs 3 phases: simulates end-user (with content stress pass + stress recipes by archetype → Stress findings) → UX designer + web research → update index.html / pages/*.html / style.css and write ## UX walkthrough log in notes.md (sync hub + Pages inventory for multi-page).--ui flag required). Auto-suggests itself (ENH-060): if the initial message contains ≥1 UI keyword, shows a proactive 🎨 banner immediately — mirrors Architect Design Mode's 🏗️ proactive activation. Accumulation starts at ≥1 signal (was ≥3); surfaces for confirmation when topic ends, user signals done, or ≥2 unique signals accumulated (was ≥5) — does not interrupt the main conversation.## Coverage matrix in notes.md) → Architect Design → arch_to_ui_sync reverse sync (surfaces UI implications of architectural decisions; proactively offered via AUQ after arch updates) → UI Direction → completeness gate (CHECK 4: warns if any Phase 1 feature has no coverage in either mode, non-blocking). See Recommended Breakdown Ordering section in workflows/brainstorm.md.admin.html added to Architect workspace when applicable; notes.md ## admin YAML exported via crystallize.content.html added to Architect workspace; notes.md ## content YAML exported via crystallize.entity-mgmt.html added to Architect workspace; notes.md ## entity_mgmt YAML exported via crystallize.user-data.html added to Architect workspace; notes.md ## user_data YAML exported via crystallize./vp-brainstorm --architect or auto-activate when ≥3 components/services detected; generate HTML workspace (architecture, data-flow, decisions, tech-stack, tech-notes, feature-map) with Mermaid diagrams; incremental update per decision; architecture review offered via AUQ when user asks to review decisions; machine-readable notes.md YAML schema.erd.html — Mermaid erDiagram, entity list table, relationship summary; triggered by DB/entity/table/relationship keywords; notes.md ## erd YAML section exported to ARCHITECTURE.md ## Database Schema via crystallize Step 1D.user-use-cases.html — actor/use-case diagram (Mermaid flowchart), use case table; triggered by user/role/actor/story keywords; notes.md ## use_cases YAML section exported to PROJECT-CONTEXT.md ## User Stories & Use Cases via crystallize Step 1D.sequence-diagram.html (per-scenario sequenceDiagram), deployment.html (infra graph + environments + CI/CD pipeline), apis.html (endpoint tables with HTTP method badges); page boundary rules table; trigger keywords for sequence/deploy/API; notes.md ## apis YAML section; deployment+APIs exported to ARCHITECTURE.md via crystallize Step 1D (sequence excluded — scenario docs are not architecture artifacts).--domain embedded flag. Adds 6 Architect workspace pages for embedded hardware artifacts, injects domain-specific topic probes, suppresses web-UI false-positives for hardware display keywords, and offers a firmware phase ordering template. crystallize exports 8 YAML sections to ARCHITECTURE.md hardware sections.Creates/Updates:
docs/brainstorm/session-{YYYY-MM-DD}.mdAfter: Ready for /vp-crystallize
Language configuration (ENH-032):
~/.viepilot/config.json → BRAINSTORM_LANG = language.document (default: en).BRAINSTORM_LANG is used for brainstorm file storage and generated content.vp-tools config set language.document viWorkflow version stamps (ENH-067):
workflow_version (current ViePilot semver) at create/save time.upgrade_supplement_version stamped after gap-detection supplement completes (idempotency guard).Upgrade gap detection (ENH-067):
--continue, compares session workflow_version vs. current Topics Template to detect missing topics.## Upgrade supplement (vX → vY) section; upgrade_supplement_version stamped for idempotency./vp-crystallize --upgrade to patch project artifacts.
<execution_context> @$HOME/{envToolDir}/workflows/brainstorm.md </execution_context>
Optional flags: - `--new` : Force create a new session - `--continue` : Continue the most recent session - `--list` : List all sessions - `--landing` : Prioritize the Landing Page layout discovery flow - `--research` : Enable proactive research suggestions during the session - `--ui` : Enable UI Direction mode (live HTML/CSS direction artifacts + auto-generates `design.md` when design keywords present — ENH-076) - `--domain embedded` : Force-activate Embedded Domain Mode (hardware topology, RTOS, pin map, memory layout, protocol matrix, power budget pages + topic probes) - `--no-stakeholders` : Skip stakeholder agent generation at session endWhen user provides a URL during brainstorm (competitor app, documentation, reference product):
op: browse_url using vercel-labs/agent-browser## Reference Research section in session outputExamples:
/vp-brainstorm I want to build a task manager. Reference: https://linear.app
/vp-brainstorm --new Compare these two tools: https://notion.so https://coda.io
Multiple URLs: dispatches compare_products op → side-by-side comparison table.
Activation: Automatically when ≥2 embedded keywords detected, or via --domain embedded flag. One-time 🔌 Embedded Domain Mode activated banner shown.
Topic probes injected when embedded_domain: true:
6 new Architect workspace pages (in .viepilot/architect/{session-id}/):
| Page | Trigger | Content |
|---|---|---|
hw-topology.html | Always in embedded domain | MCU block diagram (Mermaid graph TD) + component/bus/power-rail tables |
pin-map.html | GPIO/pin/pinout keywords | Pin assignment table (Pin# / GPIO / Function / Peripheral / Direction / Pull / Voltage) |
memory-layout.html | Flash/RAM/linker/bootloader/OTA keywords | Flash + RAM regions tables + linker constraint notes |
protocol-matrix.html | CAN/I2C/SPI/BLE/LoRa/MQTT/Modbus keywords | Bus protocol + wireless connectivity tables (distinct from apis.html HTTP REST) |
rtos-scheduler.html | RTOS/FreeRTOS/task/ISR/scheduler keywords | Task priority table + ISR table + state diagram (≤5 tasks) |
power-budget.html | Battery/sleep/power/µA/mAh keywords | Power modes table + battery life estimate |
Pages linked in index.html under an Embedded nav section.
UI Direction false-positive suppression (Gap 6):
LCD / OLED / TFT / display / screen in hardware context → routed to hw-topology peripherals, NOT UI Direction buffer🎨 UI Direction Mode? banner suppressed when all display signals have hardware contextnotes.md YAML sections written: ## hw_topology, ## pin_map, ## memory_layout, ## protocols, ## rtos_config, ## embedded_toolchain, ## power_budget, ## safety_config
crystallize Step 1D item 13 exports:
## Hardware Architecture (from hw_topology)## Hardware Interface (from pin_map)## Memory Map (from memory_layout)## Communication Protocols (from protocols) — distinct from ## APIs## RTOS & Task Model (from rtos_config)## Toolchain & Build System (from embedded_toolchain)## Power Budget (from power_budget)## Safety & Reliability (from safety_config)## Embedded Domain: true + MCU family written to PROJECT-CONTEXT.mdKey steps:
21st.dev to suggest sections/components.viepilot/ui-direction/{session-id}/ — legacy: index.html + style.css + notes.md; multi-page: add pages/*.html, index.html as hub, and after each page change update ## Pages inventory in notes.md (see docs/user/features/ui-direction.md)
6b. When user types /research-ui or /research ui during a UI session: follow workflows/brainstorm.md exactly (FEAT-010) — do not merge into the short regular research step## Phases in the session per workflows/brainstorm.mdworkflows/brainstorm.md when binding is missing; sequential Q&A + profile-map disambiguation + write global profile + .viepilot/META.md## Project meta intake (FEAT-009), research notes + UI direction references + ## Phases)/vp-crystallizeStakeholder Generation (ENH-098):
At session end (scope locked), automatically infers project stakeholders from the domain and
creates .claude/agents/{project-slug}-{role}.md agent files. These are consumed by
/vp-crystallize Step 1G for parallel context review. Skip with --no-stakeholders.
<success_criteria>
## Pages inventory stay in sync with pages/*.html/research-ui (when --ui) runs all 3 phases, including content stress pass + archetype recipes + ## UX walkthrough log (with Stress findings) when prototype is updated## Phases present with Phase 1 having real content when scope is discussed## Project meta intake (FEAT-009)design.md generated in session directory when UI mode active and ≥2 design keywords present; notes.md ## design_tokens populatedThis skill uses adapter-aware interactive prompts. Behavior depends on your adapter:
| Adapter | Interactive Prompts | Notes |
|---|---|---|
| Claude Code (terminal) | ✅ AskUserQuestion tool — REQUIRED | Must call AUQ; plain-text only if tool errors or is unavailable |
| Claude Code (VS Code ext) | ⚠️ Partial | Terminal yes; VS Code UI pending anthropics/claude-code#12609 |
| Cursor (Plan Mode) | ⚠️ Partial | AskQuestion in Plan Mode only — not in Agent/Skills Mode |
| Cursor (Agent/Skills) | ❌ Text fallback | AskQuestion not available in Agent Mode |
| Codex CLI | ❌ Text fallback | Native tool N/A; community MCP available |
| Antigravity (native agent) | ❌ Text fallback | Artifact model, no raw tool calls |
| GitHub Copilot | ✅ /skill-name in Chat | Via .agent.md custom agent; AUQ not available — text fallback |
Claude Code (terminal) — AUQ preload required (ENH-059):
Before the first interactive prompt, call ToolSearch with query: "select:AskUserQuestion" to load the deferred tool schema. Only after ToolSearch succeeds can AskUserQuestion be invoked. If ToolSearch returns an error, fall back to plain-text numbered list for that session.
When AskUserQuestion is not available on other adapters, the skill automatically falls back to
plain-text numbered list prompts — no configuration required.
Prompts using AskUserQuestion in this skill:
When UI Direction Mode is active, vp-brainstorm automatically:
~/.viepilot/skill-registry.json (written by vp-tools scan-skills)capabilities to current UI signalsbest_practices to HTML generationnotes.md ## skills_usedNo prompt is shown — integration is transparent. Skills with relevant
capabilities (e.g., ui-generation, component-design, responsive-layout)
are detected automatically.
Skill decisions are locked at crystallize time (see /vp-crystallize).
/vp-auto executes with those locked decisions — no re-asking.
Install skills via vp-tools install-skill <source>.
See: docs/user/features/skill-registry.md