452 lines
13 KiB
Markdown
452 lines
13 KiB
Markdown
---
|
|
description: Explore 3-5 distinct solution options at conceptual level with S/M/L sizing
|
|
argument-hint: [jira-id|pr-url|#pr-number|issue-url|description] [--input PATH] [--output PATH] [--options N] [--no-file] [--quiet] [--work-dir PATH]
|
|
allowed-tools: ["Read", "Write", "Task", "ExitPlanMode"]
|
|
---
|
|
|
|
# Brainstorm Workflow
|
|
|
|
You are performing **broad solution exploration** for a problem/feature/change using the **executor pattern**. Follow this structured workflow to generate 3-5 distinct solution options at CONCEPTUAL level with S/M/L sizing (NO file paths, scripts, or numeric time estimates).
|
|
|
|
**Key Innovation**: The brainstorm-executor subagent performs ALL work (context fetching, exploration, generation) in isolated context, keeping main context clean.
|
|
|
|
---
|
|
|
|
## ⚙️ MODE ENFORCEMENT
|
|
|
|
**CRITICAL**: This command operates in **PLAN MODE** throughout Phases 1-2 (argument parsing and executor invocation). You MUST use the **ExitPlanMode tool** before Phase 3 (output handling) to transition from analysis to execution.
|
|
|
|
**Why Plan Mode**:
|
|
- Phases 1-2 require understanding the request WITHOUT making changes
|
|
- Plan mode ensures safe operation before file writes
|
|
- Only file output operations (Phase 3-4) require execution mode
|
|
|
|
**Workflow**:
|
|
```
|
|
┌──────────────────────────────────┐
|
|
│ PLAN MODE (Read-only) │
|
|
│ Phases 1-2: Setup & Execute │
|
|
└──────────────────────────────────┘
|
|
↓
|
|
[ExitPlanMode Tool]
|
|
↓
|
|
┌──────────────────────────────────┐
|
|
│ EXECUTION MODE (Write) │
|
|
│ Phases 3-4: Output & Completion │
|
|
└──────────────────────────────────┘
|
|
```
|
|
|
|
---
|
|
|
|
## PHASE 1: ARGUMENT PARSING
|
|
|
|
Use lib/argument-parser.md:
|
|
|
|
```
|
|
Configuration:
|
|
command_name: "brainstorm"
|
|
command_label: "Brainstorm-Solutions"
|
|
|
|
positional:
|
|
- name: "problem_input"
|
|
description: "Jira ID, GitHub URL, or problem description"
|
|
required: false
|
|
|
|
flags:
|
|
- name: "--input"
|
|
type: "path"
|
|
description: "Read problem description from file"
|
|
- name: "--output"
|
|
type: "path"
|
|
description: "Custom output file path for brainstorm"
|
|
- name: "--options"
|
|
type: "number"
|
|
description: "Number of solution options to generate (default: 2-3)"
|
|
- name: "--work-dir"
|
|
type: "path"
|
|
description: "Custom work directory"
|
|
- name: "--no-file"
|
|
type: "boolean"
|
|
description: "Skip file creation, terminal only"
|
|
- name: "--quiet"
|
|
type: "boolean"
|
|
description: "Suppress terminal output"
|
|
|
|
validation:
|
|
- --output and --no-file are mutually exclusive
|
|
- --options must be 2-5 if provided
|
|
- At least one input source required (positional or --input)
|
|
```
|
|
|
|
**Store parsed values:**
|
|
- `problem_input`: Positional argument or --input file content
|
|
- `output_path`: --output value or null
|
|
- `options_count`: --options value or null (default 2-3)
|
|
- `work_dir`: --work-dir value or null
|
|
- `file_output`: true (unless --no-file)
|
|
- `terminal_output`: true (unless --quiet)
|
|
|
|
---
|
|
|
|
## PHASE 2: EXECUTE BRAINSTORM (Isolated Context)
|
|
|
|
**Objective**: Spawn brainstorm-executor subagent to perform ALL brainstorming work in isolated context.
|
|
|
|
**Use Task tool with brainstorm-executor**:
|
|
|
|
```
|
|
Task tool configuration:
|
|
subagent_type: "schovi:brainstorm-executor:brainstorm-executor"
|
|
model: "sonnet"
|
|
description: "Execute brainstorm workflow"
|
|
prompt: |
|
|
PROBLEM REFERENCE: [problem_input]
|
|
|
|
CONFIGURATION:
|
|
- number_of_options: [options_count or "2-3"]
|
|
- identifier: [auto-detect from problem_input or generate slug]
|
|
- exploration_mode: medium
|
|
|
|
Execute complete brainstorm workflow:
|
|
1. Fetch external context (Jira/GitHub if applicable)
|
|
2. Light codebase exploration (Plan subagent, medium mode)
|
|
3. Generate 2-3 distinct solution options following template
|
|
|
|
Return structured brainstorm output (~2000-3000 tokens).
|
|
```
|
|
|
|
**Expected output from executor**:
|
|
- Complete structured brainstorm markdown (~2000-3000 tokens)
|
|
- Includes: problem summary, constraints, 2-3 options, comparison matrix, recommendation, exploration notes
|
|
- Already formatted following `schovi/templates/brainstorm/full.md`
|
|
|
|
**Store executor output**:
|
|
- `brainstorm_output`: Complete markdown from executor
|
|
- `identifier`: Extract from brainstorm header or use fallback
|
|
|
|
---
|
|
|
|
## PHASE 3: EXIT PLAN MODE
|
|
|
|
**CRITICAL**: Before proceeding to output handling, use ExitPlanMode tool to transition from plan mode to execution mode.
|
|
|
|
```
|
|
ExitPlanMode tool:
|
|
plan: |
|
|
# Brainstorm Solutions Completed
|
|
|
|
Generated solution options via brainstorm-executor subagent.
|
|
|
|
**Identifier**: [identifier]
|
|
**Options Count**: [N options generated]
|
|
|
|
## Key Results
|
|
|
|
- Problem context fetched and analyzed
|
|
- Light codebase exploration completed (medium mode)
|
|
- [N] distinct solution options generated
|
|
- Comparison matrix with feasibility analysis
|
|
- Recommendation provided
|
|
|
|
## Next Steps
|
|
|
|
1. Save brainstorm output to work folder
|
|
2. Display summary to user
|
|
3. Guide user to research command for deep dive
|
|
```
|
|
|
|
**Wait for user approval before proceeding to Phase 4.**
|
|
|
|
---
|
|
|
|
## PHASE 4: OUTPUT HANDLING & WORK FOLDER
|
|
|
|
### Step 4.1: Work Folder Resolution
|
|
|
|
Use lib/work-folder.md:
|
|
|
|
```
|
|
Configuration:
|
|
mode: "auto-detect"
|
|
|
|
identifier: [identifier extracted from brainstorm_output or problem_input]
|
|
description: [extract problem title from brainstorm_output]
|
|
|
|
workflow_type: "brainstorm"
|
|
current_step: "brainstorm"
|
|
|
|
custom_work_dir: [work_dir from argument parsing, or null]
|
|
|
|
Output (store for use below):
|
|
work_folder: [path from library, e.g., ".WIP/EC-1234-feature"]
|
|
metadata_file: [path from library, e.g., ".WIP/EC-1234-feature/.metadata.json"]
|
|
output_file: [path from library, e.g., ".WIP/EC-1234-feature/brainstorm-EC-1234.md"]
|
|
identifier: [identifier from library]
|
|
is_new: [true/false from library]
|
|
```
|
|
|
|
**Store the returned values for steps below.**
|
|
|
|
### Step 4.2: Write Brainstorm Output
|
|
|
|
**If `file_output == true` (default unless --no-file):**
|
|
|
|
Use Write tool:
|
|
```
|
|
file_path: [output_file from Step 4.1]
|
|
content: [brainstorm_output from Phase 2]
|
|
```
|
|
|
|
**If write succeeds:**
|
|
```
|
|
📄 Brainstorm saved to: [output_file]
|
|
```
|
|
|
|
**If write fails or --no-file:**
|
|
Skip file creation, continue to terminal output.
|
|
|
|
### Step 4.3: Update Metadata
|
|
|
|
**If work_folder exists and file was written:**
|
|
|
|
Read current metadata:
|
|
```bash
|
|
cat [metadata_file from Step 4.1]
|
|
```
|
|
|
|
Update fields:
|
|
```json
|
|
{
|
|
...existing fields,
|
|
"workflow": {
|
|
...existing.workflow,
|
|
"completed": ["brainstorm"],
|
|
"current": "brainstorm"
|
|
},
|
|
"files": {
|
|
"brainstorm": "brainstorm-[identifier].md"
|
|
},
|
|
"timestamps": {
|
|
...existing.timestamps,
|
|
"lastModified": "[current timestamp]"
|
|
}
|
|
}
|
|
```
|
|
|
|
Get current timestamp:
|
|
```bash
|
|
date -u +"%Y-%m-%dT%H:%M:%SZ"
|
|
```
|
|
|
|
Write updated metadata:
|
|
```
|
|
Write tool:
|
|
file_path: [metadata_file]
|
|
content: [updated JSON]
|
|
```
|
|
|
|
### Step 4.4: Create Fragments
|
|
|
|
**Use lib/fragment-loader.md**:
|
|
|
|
Parse brainstorm output for assumptions and unknowns:
|
|
|
|
1. **Extract Assumptions** from "Assumptions & Unknowns" section:
|
|
- Look for lines starting with "**A-#**:" or "- A-#:" or bullets under "Assumptions"
|
|
- Extract statement for each assumption
|
|
|
|
2. **Extract Unknowns** from "Assumptions & Unknowns" section:
|
|
- Look for lines starting with "**U-#**:" or "- U-#:" or bullets under "Unknowns"
|
|
- Extract question for each unknown
|
|
|
|
3. **Initialize Fragment System** (Operation 6):
|
|
```
|
|
work_folder: [work_folder from Step 4.1]
|
|
identifier: [identifier from Step 4.1]
|
|
```
|
|
- Creates `fragments/` directory
|
|
- Creates initial `fragments.md` registry
|
|
|
|
4. **Batch Create Fragments** (Operation 10):
|
|
```
|
|
work_folder: [work_folder]
|
|
identifier: [identifier]
|
|
fragments: [
|
|
{
|
|
type: "A",
|
|
number: 1,
|
|
statement: [extracted assumption statement],
|
|
source: "Created during brainstorm phase",
|
|
stage: "brainstorm",
|
|
timestamp: [current timestamp]
|
|
},
|
|
{
|
|
type: "A",
|
|
number: 2,
|
|
...
|
|
},
|
|
{
|
|
type: "U",
|
|
number: 1,
|
|
question: [extracted unknown question],
|
|
importance: "Needed for research phase",
|
|
stage: "brainstorm",
|
|
timestamp: [current timestamp]
|
|
}
|
|
]
|
|
```
|
|
|
|
**Get current timestamp**:
|
|
```bash
|
|
date -u +"%Y-%m-%dT%H:%M:%SZ"
|
|
```
|
|
|
|
**Result**:
|
|
- Fragment files created: `fragments/A-1.md`, `fragments/A-2.md`, `fragments/U-1.md`, etc.
|
|
- Registry created: `fragments.md`
|
|
- All fragments have status ⏳ Pending
|
|
|
|
**If fragment creation fails**:
|
|
- Log warning but don't block command
|
|
- Continue to terminal output
|
|
|
|
### Step 4.5: Terminal Output
|
|
|
|
**If `terminal_output == true` (default unless --quiet):**
|
|
|
|
Display:
|
|
```markdown
|
|
# 🧠 Brainstorm Complete: [identifier]
|
|
|
|
Generated [N] solution options with broad feasibility analysis.
|
|
|
|
## Options Summary
|
|
|
|
[Extract option summaries from brainstorm_output - 1-2 lines each]
|
|
|
|
## 🎯 Recommendation
|
|
|
|
[Extract recommendation from brainstorm_output - 2-3 sentences]
|
|
|
|
## 📁 Output
|
|
|
|
Brainstorm saved to: `[output_file]`
|
|
Work folder: `[work_folder]`
|
|
Fragments: [A_COUNT] assumptions, [U_COUNT] unknowns
|
|
|
|
## 🔬 Next Steps
|
|
|
|
Choose an option for deep technical research:
|
|
|
|
```bash
|
|
# Research recommended option
|
|
/schovi:research --input brainstorm-[identifier].md --option [N]
|
|
|
|
# Or research a different option
|
|
/schovi:research --input brainstorm-[identifier].md --option [1|2|3]
|
|
```
|
|
|
|
This will perform deep codebase exploration with detailed file:line references and implementation considerations.
|
|
```
|
|
|
|
**After this phase:**
|
|
- Brainstorm file created in `.WIP/[identifier]/` work folder
|
|
- Fragment system initialized with assumptions and unknowns
|
|
- Metadata file updated
|
|
- Terminal output displayed (unless --quiet)
|
|
- User guided to next step (research command)
|
|
|
|
---
|
|
|
|
## PHASE 5: COMPLETION
|
|
|
|
**Final Message**:
|
|
```
|
|
✅ Brainstorm completed successfully!
|
|
|
|
📊 Generated [N] solution options for [identifier]
|
|
🎯 Recommended: Option [N] - [Name]
|
|
📁 Saved to: [file_path]
|
|
|
|
🔬 Ready for deep research? Run:
|
|
/schovi:research --input brainstorm-[identifier].md --option [N]
|
|
```
|
|
|
|
**Command complete.**
|
|
|
|
---
|
|
|
|
## ERROR HANDLING
|
|
|
|
### Input Processing Errors
|
|
- **No input provided**: Ask user for Jira ID, GitHub URL, or description
|
|
- **Invalid format**: Report error, show format examples
|
|
- **File not found**: Report error, ask for correct path
|
|
|
|
### Executor Errors
|
|
- **Executor failed**: Report error with details from subagent
|
|
- **Validation failed**: Check brainstorm_output has required sections
|
|
- **Token budget exceeded**: Executor handles compression, shouldn't happen
|
|
|
|
### Output Errors
|
|
- **File write failed**: Report error, offer terminal-only output
|
|
- **Work folder error**: Use fallback location or report error
|
|
|
|
---
|
|
|
|
## QUALITY GATES
|
|
|
|
Before completing, verify:
|
|
|
|
- [ ] Input processed successfully with clear problem reference
|
|
- [ ] Executor invoked and completed successfully
|
|
- [ ] Brainstorm output received (~2000-3000 tokens)
|
|
- [ ] Output contains all required sections (problem, constraints, options, matrix, recommendation)
|
|
- [ ] 2-3 distinct options present (not variations)
|
|
- [ ] File saved to work folder (unless --no-file)
|
|
- [ ] Fragment system initialized (fragments/ directory and fragments.md created)
|
|
- [ ] Assumption fragments created (A-1.md, A-2.md, etc.)
|
|
- [ ] Unknown fragments created (U-1.md, U-2.md, etc.)
|
|
- [ ] Fragment registry updated with all fragments
|
|
- [ ] Metadata updated
|
|
- [ ] Terminal output displayed (unless --quiet)
|
|
- [ ] User guided to research command for next step
|
|
|
|
---
|
|
|
|
## NOTES
|
|
|
|
**Design Philosophy**:
|
|
- **Executor pattern**: ALL work (fetch + explore + generate) happens in isolated context
|
|
- **Main context stays clean**: Only sees final formatted output (~2-3k tokens)
|
|
- **Token efficiency**: 93% reduction in main context (from ~43k to ~3k tokens)
|
|
- **Consistent experience**: User sees same output, just more efficient internally
|
|
|
|
**Token Benefits**:
|
|
- Before: Main context sees input processing + exploration + generation = ~43k tokens
|
|
- After: Main context sees only final output = ~3k tokens
|
|
- Savings: 40k tokens (93% reduction)
|
|
|
|
**Integration**:
|
|
- Input from: Jira, GitHub issues/PRs, files, or text
|
|
- Output to: Work folder with metadata
|
|
- Next command: Research with --option flag
|
|
|
|
**Executor Capabilities**:
|
|
- Spawns jira-analyzer, gh-pr-analyzer, gh-issue-analyzer for external context
|
|
- Spawns Plan subagent for medium-thoroughness exploration
|
|
- Reads brainstorm template and generates formatted output
|
|
- All in isolated context, returns clean result
|
|
|
|
---
|
|
|
|
**Command Version**: 3.0 (Executor Pattern + Fragment System)
|
|
**Last Updated**: 2025-11-08
|
|
**Dependencies**:
|
|
- `lib/argument-parser.md`
|
|
- `lib/work-folder.md`
|
|
- `lib/fragment-loader.md` (NEW: Fragment system operations)
|
|
- `schovi/agents/brainstorm-executor/AGENT.md`
|
|
- `schovi/templates/brainstorm/full.md`
|
|
**Changelog**: v3.0 - Added fragment system for assumption/unknown tracking with cross-stage traceability
|