| name | module-ideation |
| description | Adaptive brainstorming for VCV Rack module concepts and improvements |
| allowed-tools | Read, Write, Bash |
| preconditions | None (entry point) |
module-ideation Skill
Purpose: Interactive brainstorming and creative vision capture for new VCV Rack modules and improvements to existing modules.
Mode Detection
Check if module exists:
grep "^### $MODULE_NAME$" MODULES.md
- If found → Improvement Mode
- If not found → New Module Mode
New Module Mode
Phase 1: Free-Form Collection
Start with open question:
What would you like to build?
Tell me about your module idea. Share as much or as little as you want—I'll ask follow-ups for anything missing.
Extract from response:
- Module name (if mentioned)
- Module category (Oscillator, Filter, VCA, Effect, Utility, Sequencer, etc.)
- Core concept and sonic/modular goals
- I/O ideas (CV inputs, audio inputs, gate inputs, polyphonic channels)
- Parameter ideas and voltage ranges
- Panel vision and HP width
- Use cases and target users
- Inspirations and references
Phase 2: Gap Analysis and Question Prioritization
Question Priority Tiers:
- Tier 1 (Critical): Module category (Oscillator/Filter/VCA/etc.), core concept (what it does)
- Tier 2 (Functional): I/O configuration (CV/audio/gate), voltage ranges (±5V, 1V/oct), processing behavior
- Tier 3 (Context): Use cases, inspirations, special features (polyphony, expanders, alternative panels)
- Tier 4 (NEVER ASK): Panel details - if user volunteers panel info, capture it in the brief but NEVER prompt for panel design in ideation phase
Extract from Phase 1 response, then identify gaps:
- Parse user's free-form description
- Check which tiers are covered
- Identify missing critical/functional information
- Never ask about already-provided information
Example of smart extraction:
User: "I want a wavefolder with a CV-controlled fold amount. Should have 4HP and a clean minimal design."
Extracted:
- Category: Effect (wavefolder) ✓
- Core concept: Wavefolder with CV control ✓
- I/O: fold CV input (1 mentioned) ✓
- Panel: 4HP, minimal ✓ (capture but don't expand)
Gaps identified:
- What other I/O? (audio in/out, polyphonic?) (Tier 2)
- What voltage range for fold CV? (Tier 2)
- Specific wavefolder algorithm? (Tier 3)
- Primary use case? (Tier 3)
Phase 3: Question Batch Generation
Generate exactly 4 questions using AskUserQuestion based on identified gaps.
Rules:
- If 4+ gaps exist: ask top 4 by tier priority
- If fewer gaps exist: pad with "nice to have" tier 3 questions
- Provide meaningful options (not just open text prompts)
- Always include "Other" option for custom input
- Users can skip questions via "Other" option and typing "skip"
VCV-specific considerations for questions:
- HP width (typical ranges: oscillators 8-12HP, filters 6-10HP, utilities 3-6HP, effects 6-12HP)
- Polyphony support (monophonic or up to 16 channels)
- Voltage standards (CV: ±5V or ±10V, Pitch: 1V/octave, Gates: 0V/10V)
- Port types (audio, CV, gate, trigger)
Example question batch (via AskUserQuestion):
For the wavefolder example above:
Question 1:
question: "What I/O configuration?"
header: "Ports"
options:
- label: "Simple (1 audio in/out)", description: "Minimal monophonic"
- label: "Stereo (2 audio in/out)", description: "Dual channel processing"
- label: "Polyphonic (poly in/out)", description: "Up to 16 channels"
- label: "Other", description: "Custom configuration"
Question 2:
question: "What voltage range for fold CV input?"
header: "CV range"
options:
- label: "±5V (standard)", description: "Standard Eurorack CV range"
- label: "0-10V (unipolar)", description: "Unipolar control"
- label: "±10V (extended)", description: "Extended range"
- label: "Other", description: "Custom range"
Question 3:
question: "Any specific wavefolder reference?"
header: "Inspiration"
options:
- label: "Buchla 259", description: "Classic complex waveforms"
- label: "Serge Wave Multipliers", description: "Multiple stages"
- label: "Modern digital", description: "Clean, precise"
- label: "Other", description: "Different reference or none"
Question 4:
question: "Primary use case?"
header: "Usage"
options:
- label: "Harmonics/timbre shaping", description: "Musical tone sculpting"
- label: "Extreme effects", description: "Aggressive distortion"
- label: "Both", description: "Versatile range"
- label: "Other", description: "Different use case"
After receiving answers:
- Accumulate context with previous responses
- Re-analyze gaps
- Proceed to decision gate
Phase 3.5: Decision Gate
Use AskUserQuestion with 3 options after each question batch:
Question:
question: "Ready to finalize the creative brief?"
header: "Next step"
options:
- label: "Yes, finalize it", description: "Create creative-brief.md"
- label: "Ask me 4 more questions", description: "Continue refining"
- label: "Let me add more context first", description: "Provide additional details"
Route based on answer:
- Option 1 → Proceed to Phase 4 (document creation)
- Option 2 → Return to Phase 2 (re-analyze gaps, generate next 4 questions)
- Option 3 → Collect free-form text, merge with context, return to Phase 2
Context accumulation example:
After Batch 1 answers: "Polyphonic", "±5V (standard)", "Serge Wave Multipliers", "Both"
Updated context:
- I/O: polyphonic audio in/out, fold CV input ✓
- CV range: ±5V ✓
- Inspiration: Serge Wave Multipliers ✓
- Use case: versatile ✓
New gaps for Batch 2:
- How many fold stages? (Tier 2)
- Additional CV modulation targets? (Tier 2)
- Symmetry/asymmetry control? (Tier 3)
- Specific Serge model reference? (Tier 3)
Phase 3.7: Module Name (if not yet provided)
Before creating documents, check if module name was provided at any point during conversation.
If name NOT yet provided, ask via AskUserQuestion:
Question:
question: "What should this module be called?"
header: "Module name"
options:
- label: "[SuggestedName1]", description: "Based on core concept"
- label: "[SuggestedName2]", description: "Alternative naming"
- label: "[SuggestedName3]", description: "Different approach"
- label: "Other", description: "I'll provide my own name"
Where suggested names are generated from the core concept.
Examples:
- Wavefolder → "FoldMaster", "HarmonicFolder", "WaveStack"
- Filter → "ResoMax", "MultiMode", "SlopeFilter"
- VCA → "VeloVCA", "PolyAmp", "DualVCA"
If name already provided (in initial description or in additional context), skip this phase entirely.
Name validation:
- Must be UpperCamelCase (e.g., "FoldMaster", not "fold master" or "foldmaster")
- No spaces or special characters
- If user provides invalid name, suggest cleaned version
Phase 4: Document Creation
When user chooses "finalize" and name is confirmed, create:
File: modules/[ModuleName]/.ideas/creative-brief.md
Format:
# [ModuleName] - Creative Brief
## Overview
**Category:** [Oscillator/Filter/VCA/Effect/Utility/Sequencer/etc.]
**Core Concept:** [One-sentence description]
**Status:** 💡 Ideated
**Created:** [Date]
## Vision
[Prose description of module concept, sonic/modular goals, inspiration]
## I/O Configuration
### Inputs
| Port | Type | Range | Polyphonic | Description |
|------|------|-------|------------|-------------|
| [Name] | [Audio/CV/Gate/Trigger] | [Range] | [Yes/No] | [Purpose] |
| ... | ... | ... | ... | ... |
### Outputs
| Port | Type | Range | Polyphonic | Description |
|------|------|-------|------------|-------------|
| [Name] | [Audio/CV/Gate/Trigger] | [Range] | [Yes/No] | [Purpose] |
| ... | ... | ... | ... | ... |
## Parameters
| Parameter | Range | Default | Description |
|-----------|-------|---------|-------------|
| [Name] | [Min-Max] | [Value] | [Purpose] |
| ... | ... | ... | ... |
## Panel Concept
**HP Width:** [N]HP ([N * 5.08]mm)
**Layout:** [Description]
**Visual Style:** [Description]
**Key Elements:** [List special panel components]
## Use Cases
- [Scenario 1]
- [Scenario 2]
- [Scenario 3]
## Inspirations
- [Module/hardware reference 1]
- [Module/hardware reference 2]
- [Sonic reference]
## Technical Notes
**Polyphony:** [Monophonic | Up to N channels]
**Sample Rate:** [Per-sample processing | Block-based]
**Special Considerations:** [Any specific DSP approaches, algorithms, or technical considerations mentioned]
## Next Steps
- [ ] Create panel mockup (`/dream [ModuleName]` → option 3)
- [ ] Start implementation (`/implement [ModuleName]`)
Also update MODULES.md:
Add entry if doesn't exist:
### [ModuleName]
**Status:** 💡 Ideated
**Category:** [Oscillator/Filter/VCA/Effect/Utility/Sequencer/etc.]
**Created:** [Date]
**Description:** [One-sentence summary]
Phase 5: Session Handoff
Create .continue-here.md in modules/[ModuleName]/.ideas/:
Format:
---
module: [ModuleName]
stage: ideation
status: creative_brief_complete
last_updated: [YYYY-MM-DD HH:MM:SS]
---
# Resume Point
## Current State: Creative Brief Complete
Creative brief has been finalized for [ModuleName]. Ready to proceed to panel mockup or implementation.
## Completed So Far
**Ideation:** ✓ Complete
- Core concept defined
- I/O configuration specified
- Parameters defined
- Panel vision captured
- Use cases identified
## Next Steps
1. Create panel mockup to visualize design (recommended)
2. Start implementation directly
3. Research similar modules for inspiration
## Context to Preserve
**Key Decisions:**
- Module category: [Oscillator/Filter/VCA/Effect/Utility/Sequencer/etc.]
- Core concept: [Brief summary]
- HP width: [N]HP
- Polyphony: [Monophonic | Polyphonic up to N channels]
**Files Created:**
- modules/[ModuleName]/.ideas/creative-brief.md
Phase 6: Decision Menu
Present next steps:
✓ Creative brief complete: [ModuleName]
What's next?
1. Create panel mockup (recommended) ← Visualize before building
2. Start implementation
3. Research similar modules ← Find inspiration and examples
4. Save for later
5. Other
Choose (1-5): _
Handle responses:
- Option 1 → Invoke
ui-mockupskill (adapted for VCV panels) - Option 2 → Invoke
module-workflowskill (after warning about contracts) - Option 3 → Invoke
deep-researchskill (Phase 7 - stub for now, just acknowledge) - Option 4 → Confirm handoff file created, exit
- Option 5 → Ask what they'd like to do
Improvement Mode
Phase 0: Vagueness Detection
Check if request is specific:
Request IS specific if it has:
- Feature name (e.g., "resonance parameter")
- Action (e.g., "add", "fix", "change")
- Acceptance criteria (e.g., "range 0-1V", "increase to 6HP")
Request IS vague if lacking above:
- "improve the filter"
- "better presets"
- "panel feels cramped"
If vague, present choice:
Your request is somewhat vague. How should I proceed?
1. Brainstorm approaches first (recommended) ← Explore options together
2. Implement something reasonable ← I'll investigate and propose a solution
Choose (1-2): _
If option 1 chosen, continue with improvement brainstorming. If option 2 chosen, exit to module-improve skill.
Phase 1: Free-Form Collection
Ask:
What would you like to improve in [ModuleName]?
Describe what you want to change, add, or fix. I'll ask follow-ups for anything missing.
Extract from response:
- What aspect (DSP/Parameters/I/O/Panel)
- Current pain point or limitation
- Proposed change
- Why this improvement matters
- Backward compatibility concerns
- How to test success
Phase 2: Gap Analysis and Question Prioritization
Question Priority Tiers:
- Tier 1 (Critical): What aspect (DSP/Parameters/I/O/Panel), current state vs proposed change
- Tier 2 (Implementation): Implementation details, testing criteria, backward compatibility
- Tier 3 (Context): Rationale, success metrics, version impact
Extract from Phase 1 response, then identify gaps:
- Parse user's improvement description
- Check which tiers are covered
- Identify missing critical information
- Never ask about already-provided information
Phase 3: Question Batch Generation
Generate exactly 4 questions using AskUserQuestion based on identified gaps.
Rules:
- If 4+ gaps exist: ask top 4 by tier priority
- If fewer gaps exist: pad with "nice to have" tier 3 questions
- Provide meaningful options (not just open text prompts)
- Always include "Other" option for custom input
Example question batch (via AskUserQuestion):
Question 1:
question: "Which aspect would you like to improve?"
header: "Aspect"
options:
- label: "Audio/CV processing (DSP)", description: "Change how it sounds/behaves"
- label: "Parameters/I/O", description: "Add/modify/remove controls or ports"
- label: "Panel interface", description: "Layout or visual changes"
- label: "Features/workflow", description: "Presets, polyphony, utilities"
Question 2:
question: "What's the current behavior you want to change?"
header: "Current state"
options:
- label: "It's broken", description: "Bug or error"
- label: "It's limited", description: "Missing functionality"
- label: "It's inefficient", description: "Performance issue"
- label: "Other", description: "Different issue"
Question 3:
question: "Version impact of this change?"
header: "Version bump"
options:
- label: "Patch (bugfix)", description: "v1.0.0 → v1.0.1"
- label: "Minor (new feature)", description: "v1.0.0 → v1.1.0"
- label: "Major (breaking change)", description: "v1.0.0 → v2.0.0"
- label: "Other", description: "Not sure"
Question 4:
question: "How to verify success?"
header: "Testing"
options:
- label: "A/B test audio", description: "Compare before/after sound"
- label: "Check parameter behavior", description: "Test controls work"
- label: "Visual inspection", description: "Panel looks correct"
- label: "Other", description: "Different testing approach"
After receiving answers:
- Accumulate context with previous responses
- Re-analyze gaps
- Proceed to decision gate
Phase 3.5: Decision Gate
Use AskUserQuestion with 3 options after each question batch:
Question:
question: "Ready to finalize the improvement brief?"
header: "Next step"
options:
- label: "Yes, finalize it", description: "Create improvement proposal"
- label: "Ask me 4 more questions", description: "Continue refining"
- label: "Let me add more context first", description: "Provide additional details"
Route based on answer:
- Option 1 → Proceed to Phase 4 (document creation)
- Option 2 → Return to Phase 2 (re-analyze gaps, generate next 4 questions)
- Option 3 → Collect free-form text, merge with context, return to Phase 2
Phase 4: Document Creation
Create: modules/[ModuleName]/.ideas/improvements/[feature-name].md
Format:
# [ModuleName] - [Improvement Name]
**Created:** [Date]
**Type:** [Feature/Enhancement/Fix]
**Aspect:** [DSP/Parameters/I/O/Panel]
**Version Impact:** [PATCH/MINOR/MAJOR]
## Current State
[Description of current behavior or limitation]
## Proposed Change
[Detailed description of what should change]
## Rationale
[Why this improvement matters]
## Implementation Notes
[Technical considerations, files to modify, algorithms to use]
## Backward Compatibility
[Breaking/Non-breaking, migration strategy if needed]
## Testing Criteria
- [ ] [Test 1]
- [ ] [Test 2]
- [ ] [Test 3]
## Success Metrics
[How to know the improvement is complete and working]
Phase 5: Session Handoff
Create .continue-here.md in modules/[ModuleName]/.ideas/:
---
module: [ModuleName]
stage: improvement_planning
status: improvement_brief_complete
improvement: [feature-name]
last_updated: [YYYY-MM-DD HH:MM:SS]
---
# Resume Point
## Current State: Improvement Brief Complete
Improvement proposal finalized for [ModuleName]: [ImprovementName]
## Completed So Far
**Planning:** ✓ Complete
- Current state analyzed
- Proposed change defined
- Testing criteria established
## Next Steps
1. Start implementation (/improve [ModuleName])
2. Research implementation approaches
3. Review existing code
## Context to Preserve
**Improvement:** [feature-name]
**Type:** [Feature/Enhancement/Fix]
**Version Impact:** [PATCH/MINOR/MAJOR]
**Files Created:**
- modules/[ModuleName]/.ideas/improvements/[feature-name].md
Phase 6: Decision Menu
✓ Improvement brief complete: [ImprovementName]
What's next?
1. Start implementation (recommended)
2. Research implementation approaches ← Find examples and best practices
3. Review existing code first
4. Save for later
5. Other
Choose (1-5): _
Handle responses:
- Option 1 → Invoke
module-improveskill - Option 2 → Invoke
deep-researchskill (Phase 7 - stub) - Option 3 → Read relevant source files, then re-present menu
- Option 4 → Confirm handoff file created, exit
- Option 5 → Ask what they'd like to do
Vagueness Detection Rules
Check for specificity:
Specific indicators:
- Named feature ("resonance parameter", "bypass switch")
- Concrete action ("add", "remove", "change from X to Y")
- Measurable criteria ("range 0-1V", "increase to 6HP", "reduce CPU by 20%")
Vague indicators:
- Generic improvements ("better", "improve", "enhance")
- Unspecified targets ("the panel", "presets", "sound")
- No success criteria mentioned
If 2+ vague indicators and 0 specific indicators → Present brainstorm vs implement choice.
Grounded Feasibility
When user proposes ambitious ideas:
Don't shut down creativity, but flag for research:
That's an interesting direction! [Specific technical consideration] might be complex—we can research approaches in Stage 0 (Research phase).
Continue exploring, or finalize brief with a research note?
Examples:
- Physical modeling → "Physical modeling can be CPU-intensive in per-sample processing"
- Complex FFT → "FFT operations require careful buffer management in VCV Rack"
- Heavy polyphony → "16-channel polyphonic processing requires optimized algorithms"
Gently note challenges without saying "no."
Examples: Question Generation Based on Input Detail
Example 1: Detailed Input (New Module)
User: "I want a wavefolder with CV-controlled fold amount. Should have 4HP and a minimal design."
Extracted:
- Category: Effect (wavefolder) ✓
- Core concept: Wavefolder with CV control ✓
- I/O: fold CV input (1 mentioned) ✓
- Panel: 4HP, minimal ✓ (capture but don't expand)
Gaps identified (4 needed):
- What other I/O? (audio in/out, polyphonic?) (Tier 2)
- What voltage range for fold CV? (Tier 2)
- Specific wavefolder algorithm? (Tier 3)
- Primary use case? (Tier 3)
Question Batch 1 (via AskUserQuestion):
1. "What I/O configuration?" → [Simple (1 audio in/out), Stereo, Polyphonic, Other]
2. "What voltage range for fold CV?" → [±5V (standard), 0-10V (unipolar), ±10V (extended), Other]
3. "Any specific wavefolder reference?" → [Buchla 259, Serge, Modern digital, Other]
4. "Primary use case?" → [Harmonics/timbre shaping, Extreme effects, Both, Other]
[Then decision gate with 3 options]
Example 2: Vague Input (New Module)
User: "A filter module"
Extracted:
- Category: Filter ✓
- Core concept: Filter (very generic)
Gaps identified (4 needed):
- What filter type? (Tier 1)
- What I/O configuration? (Tier 2)
- CV modulation targets? (Tier 2)
- Primary use case? (Tier 3)
Question Batch 1 (via AskUserQuestion):
1. "What filter type?" → [Low-pass (LP), High-pass (HP), Multi-mode (LP/BP/HP), Other]
2. "What I/O configuration?" → [Mono, Stereo, Polyphonic, Other]
3. "What CV modulation?" → [Cutoff only, Cutoff + Resonance, Full modulation matrix, Other]
4. "Primary use case?" → [Subtractive synthesis, Effects processing, Both, Other]
[Then decision gate]
If user chooses "Ask me 4 more questions":
- User answered: "Multi-mode", "Polyphonic", "Cutoff + Resonance", "Both"
Updated context:
- Category: Filter ✓
- Core concept: Multi-mode polyphonic filter ✓
- I/O: polyphonic audio in/out ✓
- CV: cutoff and resonance modulation ✓
- Use case: versatile ✓
New gaps for Batch 2:
- Cutoff CV range? (Tier 2)
- Resonance CV range? (Tier 2)
- Filter slope? (Tier 3)
- Specific filter reference? (Tier 3)
Question Batch 2:
1. "Cutoff CV range?" → [±5V (standard), 1V/oct (tracking), ±10V (extended), Other]
2. "Resonance CV range?" → [±5V (standard), 0-10V (unipolar), Other]
3. "Filter slope?" → [2-pole (12dB/oct), 4-pole (24dB/oct), Variable, Other]
4. "Specific filter reference?" → [Moog ladder, State variable, Sallen-Key, Other]
[Then decision gate again]
Adaptive Questioning Strategy
Extract first, then fill gaps:
- User provides initial description
- Parse response for covered topics
- Generate questions only for missing topics
- Present 4 questions via AskUserQuestion
- After each batch, re-evaluate what's still missing
- Present decision gate
- Repeat until user finalizes
Don't ask redundant questions.
If user says "I want a wavefolder with CV-controlled fold amount, 4HP, minimal design," don't ask:
- ❌ "What category of module?" (it's a wavefolder = effect)
- ❌ "HP width?" (4HP mentioned)
- ❌ "Visual style?" (minimal mentioned)
DO ask:
- ✓ "What I/O configuration?" (audio ports not specified)
- ✓ "What voltage range for fold CV?"
- ✓ "Any specific wavefolder references for the algorithm?"
Continuous Iteration Support
User can request deep dives:
User: "Ask me more about the panel"
→ System focuses on panel-specific questions
User: "Let's explore presets"
→ System asks about preset strategy
User: "Tell me what you think about the DSP"
→ System provides feasibility analysis
Support free-form exploration until user says "finalize."
Git Integration
After creating documents:
git add modules/[ModuleName]/.ideas/
git add MODULES.md
# Do NOT commit - user handles commits
Stage files but don't commit.
Error Handling
If module name contains invalid characters:
Module names should be UpperCamelCase with no spaces or special characters.
Suggested: [CleanName]
Use this name? (y/n): _
If improvement file already exists:
Improvement proposal "[feature-name].md" already exists.
Options:
1. Create new version (/improve is better for implementing existing proposals)
2. Choose different name
3. Overwrite existing (not recommended)
Choose (1-3): _
If creative brief already exists:
Creative brief already exists for [ModuleName].
Options:
1. View existing brief
2. Create improvement proposal instead (/improve)
3. Overwrite (will lose existing brief)
Choose (1-3): _
Integration Points
Invoked by:
/dreamcommand (new module or improvement)/dream [ModuleName]command- Natural language: "I want to make...", "Explore improvements to..."
Invokes:
ui-mockupskill (option after creative brief) - adapted for VCV panelsmodule-workflowskill (option after creative brief)module-improveskill (option after improvement brief)deep-researchskill (option for research) - Phase 7
Success Criteria
Skill is successful when:
- Creative brief captures complete vision
- No redundant questions asked
- User feels heard and understood
- Document is actionable for implementation
- Handoff file enables resume
- Next steps are clear and discoverable