| name | vp-brainstorm |
| description | Brainstorm session to collect ideas and decisions for the project |
| version | 1.1.0 |
## Invocation Banner
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 entirely
config.json → update.check: false → skip this step entirely
- Show at most once per session (
update_check_done session guard)
</version_check>
<persona_context>
Persona Context Injection (ENH-073)
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>
## A. Skill Invocation
- Skill được gọi khi user mention `vp-brainstorm`, `/vp-brainstorm`, hoặc yêu cầu "brainstorm"
- Treat all user text after the skill mention as `{{VP_ARGS}}`
B. User Prompting
Prompt user conversationally with numbered list options.
C. Tool Usage
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)
D. Session Actions — Proactive AUQ Triggers (BUG-026)
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.
## A. Skill Invocation
Same trigger keywords as claude-code adapter.
C. Tool Usage
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
## A. Skill Invocation
Same trigger keywords as claude-code adapter.
Skill discovery: LLM-driven (automatic, no slash command needed).
C. Tool Usage
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.
## A. Skill Invocation
Same trigger keywords as claude-code adapter.
C. Tool Usage
Use Codex tools: container.exec (sandboxed shell), apply_patch (file write), web_search
Interactive: text fallback (TUI Tab/Enter injection)
Config: ~/.codex/config.toml
## A. Skill Invocation
Same trigger keywords as claude-code adapter.
Discovery: User-driven (`@agent-name` in GitHub Copilot Chat).
C. Tool Usage
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>
ViePilot Namespace Guard (BUG-004)
- Default mode: only use and reference
vp-* skills in ViePilot workflows.
- External skills (
non vp-*) are out of framework scope unless user explicitly opts in.
- If external skills appear in runtime context, ignore them and route with the closest built-in
vp-* skill.
</scope_policy>
<implementation_routing_guard>
Implementation routing guard (ENH-021)
- Scoped to session artifacts (
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>
Collect ideas, requirements, and architecture decisions for the project through interactive Q&A.
Supports:
- Create a new session
- Continue a previous session
- Review a past session
- Landing page layout discovery (follow-up questions to finalize layout)
- In-session research (research during the brainstorm session on demand)
- UI Direction mode: create/update HTML prototype + notes under
.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)
- Phase assignment (ENH-030): in every session, features/capabilities are assigned directly to Phase 1, Phase 2, Phase 3... — no MVP/Post-MVP/Future tiers. Session file stores assignments in the
## Phases section.
- Project meta intake (FEAT-009): after scope locked, before
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).
- UX walkthrough (FEAT-010 + ENH-019 + ENH-020): in
--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).
- Background UI extraction (ENH-026 + ENH-060): automatically detects UI signal keywords in every brainstorm session (no
--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.
- Idea → Architecture breakdown loop (ENH-061): structured 8-step flow from free idea collection → scope lock → Feature → Coverage mapping (maps each Phase 1 feature to an architect page + UI screen, outputs
## 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.
- Unified workspace mode selection (BUG-018): after scope lock, before any design workspace is created, an AUQ prompt offers: Both / Architect only / UI Direction only / Neither. Architect auto-activate heuristic is deferred until after this selection; suppressed if user selects "Neither" or "UI Direction only".
- Admin & Governance coverage (ENH-063): Topic 6 in brainstorm template; proactive 🔐 heuristic fires on admin/governance keywords; admin coverage gate before /save for multi-user/SaaS/compliance projects;
admin.html added to Architect workspace when applicable; notes.md ## admin YAML exported via crystallize.
- Content Management coverage (ENH-065): Topic 7 in brainstorm template; proactive 🗂️ heuristic fires on content-type/media/SEO keywords; content coverage gate before /save for projects with content layer;
content.html added to Architect workspace; notes.md ## content YAML exported via crystallize.
- Admin Entity Management coverage (ENH-068): Topic 7 in brainstorm template; proactive 🗄️ heuristic fires on CRUD/entity/admin panel keywords; entity management coverage gate before /save for projects with DB entities (cross-references ERD);
entity-mgmt.html added to Architect workspace; notes.md ## entity_mgmt YAML exported via crystallize.
- User Data Management coverage (ENH-066): Topic 9 in brainstorm template; proactive 👤 heuristic fires on user-account/privacy/auth keywords; user data coverage gate before /save for B2C/SaaS/GDPR projects;
user-data.html added to Architect workspace; notes.md ## user_data YAML exported via crystallize.
- Architect Design Mode (FEAT-011):
/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 page (ENH-027): Architect workspace includes
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 page (ENH-028): Architect workspace includes
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.
- C4Context/Sequence/Deployment/APIs pages (ENH-029, 12-page workspace): Architect workspace expanded to 12 pages —
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).
- Embedded Domain Mode (ENH-071): Activated when ≥2 embedded trigger keywords detected (MCU families: STM32/ESP32/nRF52/AVR/RISC-V/RP2040; concepts: firmware/bare-metal/GPIO/interrupt/HAL/bootloader/RTOS) OR
--domain embedded flag. Adds 9 Architect workspace pages for embedded hardware artifacts, injects domain-specific topic probes, suppresses web-UI false-positives for hardware display keywords, and offers firmware phase + 3-phase engagement templates. crystallize exports the embedded hardware/security/test/production/success-metric sections to ARCHITECTURE.md.
Creates/Updates:
docs/brainstorm/session-{YYYY-MM-DD}.md
After: Ready for /vp-crystallize
Language configuration (ENH-032):
- Step 0 reads
~/.viepilot/config.json → BRAINSTORM_LANG = language.document (default: en).
BRAINSTORM_LANG is used for brainstorm file storage and generated content.
- User session language takes precedence over config if different.
- Configure via:
vp-tools config set language.document vi
Workflow version stamps (ENH-067):
- Session files record
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):
- On
--continue, compares session workflow_version vs. current Topics Template to detect missing topics.
- Proactive 🔄 upgrade banner (AUQ) lists missing topics; user can discuss inline, defer to /save, or skip.
- Inline supplement appended as
## Upgrade supplement (vX → vY) section; upgrade_supplement_version stamped for idempotency.
- After supplement: suggests
/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 end
Reference URL Input (ENH-092)
When user provides a URL during brainstorm (competitor app, documentation, reference product):
- research-agent is dispatched with
op: browse_url using vercel-labs/agent-browser
- Extracted insights added as
## Reference Research section in session output
- Covers: features, UX patterns, pricing model, tech stack clues
- Available as context for crystallize step
- Falls back to WebFetch if agent-browser not installed (static HTML only — warns if page is JS-rendered)
Examples:
/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.
Embedded Domain Mode (ENH-071)
Activation: Automatically when ≥2 embedded keywords detected, or via --domain embedded flag. One-time 🔌 Embedded Domain Mode activated banner shown.
Hardware Intake Gate (ENH-106): when embedded_domain: true, a dependency-aware gate runs before any topic probe / Topic Q&A, requiring MCU + toolchain + ≥1 of {datasheet, schematic, pin declaration}. gate_status: deferred is allowed through brainstorm/crystallize, but /vp-auto blocks any task that references an un-provided pin/register/datasheet. Stored in notes.md ## hw_intake.
Datasheet/Schematic Ingestion (ENH-107, v1 manual + cite): pin map is a declared input via the pin template; each pin row carries source: datasheet | schematic | assumed; datasheet/schematic stored as citation anchors in ## hw_intake. crystallize exports ## Datasheet References + a Source column in ## Hardware Interface. Auto-extract from PDF (LLM-assist + human confirm) is a fast-follow ENH — never auto-trusted.
Secure Firmware Lifecycle (ENH-109): when embedded_domain: true, a 🔐 Secure Firmware Lifecycle topic probe (triggered by bootloader/OTA/secure-boot/signing/provisioning/key-storage keywords) captures bootloader (MCUboot/vendor/custom), OTA transport, image signing (RSA/ECDSA+SHA-256), A/B partition + anti-rollback, secure boot/root-of-trust, key storage (eFuse/TrustZone/ATECC608), debug-lock/RDP, and provisioning → notes.md ## secure_lifecycle. The Safety/Compliance probe is extended with market certifications (FCC/CE/UL/RoHS) + SBOM (SPDX/CycloneDX). crystallize exports ## Bootloader & OTA + ## Security Architecture to ARCHITECTURE.md.
Testing & Verification (ENH-110): when embedded_domain: true, a 🧪 Testing & Verification topic probe (triggered by test/Unity/cppcheck/MISRA/HIL/CI/coverage/fault-injection keywords) captures host unit framework (Unity+CMock/Ceedling), static analysis (MISRA+cppcheck/clang-tidy), HIL setup, firmware CI, test jig, coverage target (gcov/lcov), and fault-injection scenarios → notes.md ## test_strategy. crystallize exports ## Test & Verification Strategy (project-level strategy, cross-linked to the ENH-108 per-task 2-tier contract).
Production & Manufacturing (ENH-111): when embedded_domain: true, a 🏭 Production & Manufacturing topic probe (triggered by production/factory/gang-programmer/DFU/golden-image/calibration/serialization/provisioning/traceability keywords) captures factory programming method, factory-test mode (POST/loopback/RF), provisioning/serialization (serial/X.509/PSK → OTP/secure element), calibration, and traceability → notes.md ## production. crystallize exports ## Production & Manufacturing (factory-line execution, cross-linked to the ENH-109 provisioning/keys).
3-Phase Engagement + Success Metrics (ENH-112): when embedded_domain: true, the Phase Assignment step offers a 3-phase engagement template — Discovery (ENH-106 gate + ENH-107 ingestion) → Bring-up Demo on real hardware (ENH-108 🟡 HIL tier) → Pilot (success metrics agreed before work). Two probes capture notes.md ## success_metrics (metric/target/how-measured/acceptance gate) and ## lab_equipment (debug probe/logic analyzer/power profiler/scope). crystallize exports ## Success Metrics + ## Lab Equipment.
Topic probes injected when embedded_domain: true:
- MCU/Toolchain (Gap 2): MCU family, toolchain (GCC-ARM/Keil/IAR), build system (CMake/PlatformIO/West), debug interface (SWD/JTAG), flasher, SDK/HAL
- RTOS/Scheduling (Gap 3): bare-metal vs RTOS choice, task list, ISR table, resource protection strategy
- Power Budget (Gap 7): supply type, sleep modes, current targets, battery life (triggered by battery/power/sleep keywords)
- Safety/Compliance (Gap 10): IEC 61508/ISO 26262/DO-178C, watchdog, fault handlers, market certs (FCC/CE/UL/RoHS) + SBOM (ENH-109) (triggered by safety/SIL/ASIL keywords)
- Secure Firmware Lifecycle (Gaps #8/#10, ENH-109): bootloader, OTA, image signing, secure boot, key storage, provisioning (triggered by bootloader/OTA/secure-boot keywords)
- Testing & Verification (Gap #11, ENH-110): host unit test, static analysis, HIL, firmware CI, test jig, coverage, fault injection (triggered by test/Unity/cppcheck/HIL/CI keywords)
- Production & Manufacturing (Gap #12, ENH-111): factory programming, factory-test mode, provisioning/serialization, calibration, traceability (triggered by production/factory/calibration/serialization keywords)
- Firmware Phase Template (Gap 9): Board Bring-Up → Drivers → RTOS → Middleware → Application → Integration Test → OTA
9 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 |
secure-lifecycle.html | Bootloader/OTA/secure-boot/signing/provisioning keywords (ENH-109) | Boot/OTA flow diagram + signing chain table + key inventory + anti-rollback/RDP notes |
test-strategy.html | Test/Unity/cppcheck/MISRA/HIL/CI/coverage keywords (ENH-110) | Test pyramid diagram + test layer table + coverage/fault-injection table (cross-links ENH-108 contract) |
production.html | Production/factory/gang-programmer/calibration/serialization/traceability keywords (ENH-111) | Factory line diagram + programming/test/calibration tables + provisioning/serialization table |
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
- Hardware context confirmed by: GPIO / SPI / I2C / driver / framebuffer / ILI9341 / SSD1306 / LVGL / u8g2 keywords
🎨 UI Direction Mode? banner suppressed when all display signals have hardware context
notes.md YAML sections written: ## hw_topology, ## pin_map, ## memory_layout, ## protocols, ## rtos_config, ## embedded_toolchain, ## power_budget, ## safety_config, ## secure_lifecycle, ## test_strategy, ## production, ## success_metrics, ## lab_equipment
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.md
- UI Coverage Gate skipped; Hardware Coverage Check (driver-task completeness, non-blocking) applied instead
Execute workflow from `@$HOME/{envToolDir}/workflows/brainstorm.md`
Key steps:
- Detect existing sessions
- Ask user intent (new/continue/review)
- Load context if continuing
- Run interactive Q&A with topic-based structure
- If topic is a landing page: ask follow-up layout questions + reference
21st.dev to suggest sections/components
- If topic needs UI/UX: create/update UI Direction artifacts under
.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
- If user requests research or needs to clarify a decision: research inline in the session and return to the topic
- When a topic adds/modifies a capability: update
## Phases in the session per workflows/brainstorm.md
- Before completing the session: step 5 — Project meta intake (FEAT-009) in
workflows/brainstorm.md when binding is missing; sequential Q&A + profile-map disambiguation + write global profile + .viepilot/META.md
- Save session with structured format (including
## Project meta intake (FEAT-009), research notes + UI direction references + ## Phases)
- Suggest next action:
/vp-crystallize
Stakeholder 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>
Adapter Compatibility
AskUserQuestion Tool (ENH-048)
This 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:
- Session intent (continue / review / new — Step 2)
- Landing page layout selection (Step 4 — Layout A/B/C/D)
- Mid-session structured choices (≥2 discrete named options — BUG-022): topic direction,
section priority, angle selection, and any numbered decision with enumerable options
- Session-transition/next-steps prompt (session-flow choices: save/crystallize, update UI
artifacts, continue discussing — BUG-023)
Skill Registry Integration (FEAT-020)
When UI Direction Mode is active, vp-brainstorm automatically:
- Loads
~/.viepilot/skill-registry.json (written by vp-tools scan-skills)
- Matches installed skills by
capabilities to current UI signals
- Silently applies matched skill
best_practices to HTML generation
- Records matched skills in
notes.md ## skills_used
No 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