plugins/cc10x/skills/brainstorming/SKILL.md
Internal skill. Use cc10x-router for all development tasks.
npx skillsauth add romiluz13/cc10x brainstormingInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Help turn rough ideas into fully formed designs through collaborative dialogue. Don't jump to solutions - explore the problem space first.
Core principle: Understand what to build BEFORE designing how to build it. Use the user's language for domain concepts; do not invent new terminology when the repo or prompt already has a stable name for the thing.
Violating the letter of this process is violating the spirit of brainstorming.
NO DESIGN WITHOUT UNDERSTANDING PURPOSE AND CONSTRAINTS
If you can't articulate why the user needs this and what success looks like, you're not ready to design.
ALWAYS before:
Signs you need to brainstorm:
If user references a spec file (SPEC.md, spec.md, plan.md):
# Check for existing spec (permission-free)
Read(file_path="SPEC.md") # or spec.md if that doesn't exist
Before asking questions:
# Check recent context (permission-free) — skip if commands fail (new/empty project)
Bash(command="git log --oneline -10 2>/dev/null || echo 'No git history'")
Bash(command="ls src/ 2>/dev/null || ls . 2>/dev/null || echo 'Empty project'")
If project is empty/new: Skip project scan, start from user's description.
MANDATORY: Cover all 5 dimensions below, but only call AskUserQuestion for dimensions that are still unresolved after reading the user prompt, repo context, and any existing design/spec. Stop as soon as the intent contract is complete.
Skip a question when the answer is already explicit and high-confidence. In that case:
If only 1-2 dimensions remain unclear, ask only those 1-2 questions. Do not force a 5-question interview when the request is already concrete.
Q1 — Call AskUserQuestion NOW:
AskUserQuestion({
questions: [{
question: "What problem does this solve for users?",
header: "Purpose",
multiSelect: false,
options: [
{ label: "New feature", description: "Adding new functionality" },
{ label: "Bug fix", description: "Fixing broken behavior" },
{ label: "Refactor", description: "Improving existing code structure" },
{ label: "Something else", description: "I'll describe it" }
]
}]
})
Q2 — Call AskUserQuestion NOW (after Q1 answered):
AskUserQuestion({
questions: [{
question: "Who will use this?",
header: "Users",
multiSelect: false,
options: [
{ label: "Developers", description: "Engineering team or API consumers" },
{ label: "End users", description: "People using the product UI" },
{ label: "Admins", description: "Administrative or ops users" },
{ label: "Internal team", description: "Internal tooling only" }
]
}]
})
Q3 — Call AskUserQuestion NOW (after Q2 answered):
AskUserQuestion({
questions: [{
question: "How will we know this works well?",
header: "Success",
multiSelect: false,
options: [
{ label: "Tests pass", description: "Automated tests verify behavior" },
{ label: "Performance target met", description: "Specific speed or throughput goal" },
{ label: "User completes task", description: "End-to-end user flow works" },
{ label: "Describe it", description: "I'll type my own success criteria" }
]
}]
})
Q4 — Call AskUserQuestion NOW (after Q3 answered):
AskUserQuestion({
questions: [{
question: "What limitations or requirements exist?",
header: "Constraints",
multiSelect: true,
options: [
{ label: "No constraints", description: "No special requirements" },
{ label: "Performance", description: "Speed, memory, or throughput targets" },
{ label: "Security", description: "Auth, permissions, or data protection" },
{ label: "Time / deadline", description: "Must ship by a specific date" }
]
}]
})
Q5 — Call AskUserQuestion NOW (after Q4 answered):
AskUserQuestion({
questions: [{
question: "What's the scope of this change?",
header: "Scope",
multiSelect: false,
options: [
{ label: "Single module", description: "One focused area of the codebase (Recommended)" },
{ label: "Single file", description: "Isolated to one file" },
{ label: "Full feature", description: "Multiple files, end-to-end" },
{ label: "Cross-cutting", description: "Touches many parts of the system" }
]
}]
})
Optional Q6 (ask only when the user seems to have unexpressed aspirations): "If there were no constraints, what would the ideal version look like?" This unlocks hidden requirements and aspirational features — capture them, then apply YAGNI to defer what is not essential.
Q7 — Out-of-scope discovery (always ask): "What is explicitly NOT part of this? What should we defer?" Document answers in the Out of Scope section of the design document. This prevents scope creep from assumptions about what "should" be included.
After the unresolved dimensions are answered: Verify the collected intent passes the Intent Completeness Gate before proceeding:
If ANY check fails, ask one more targeted question to resolve the gap. Do NOT proceed with ambiguous or contradictory intent. Once all three checks pass, proceed to Phase 3 with collected answers. Do not force the full 7-question sequence when the intent contract is already complete.
Always present 2-3 options with trade-offs:
## Approaches
### Option A: [Name] (Recommended)
**Approach**: [Brief description]
**Pros**: [Benefits]
**Cons**: [Drawbacks]
**Why recommended**: [Reasoning]
### Option B: [Name]
**Approach**: [Brief description]
**Pros**: [Benefits]
**Cons**: [Drawbacks]
### Option C: [Name]
**Approach**: [Brief description]
**Pros**: [Benefits]
**Cons**: [Drawbacks]
Which direction feels right?
Once approach chosen, present design in sections (200-300 words each):
Architecture Overview - High-level structure (establishes shared mental model before details)
"Does this architecture make sense so far?"
Components - Key pieces (names the parts referenced in all later discussion)
"Do these components cover what you need?"
Data Flow - How data moves (validates components actually connect — catches orphaned pieces)
"Does this data flow work for your use case?"
Error Handling - What can go wrong (only meaningful after happy path is agreed)
"Are these error cases covered?"
Testing Strategy - How to verify (depends on all prior sections being stable)
"Does this testing approach give you confidence?"
After each section, ask if it looks right before continuing.
✅ "What problem does this solve?"
[Wait for answer]
"Who will use it?"
[Wait for answer]
❌ "What problem does this solve, who will use it,
what are the constraints, and what's the success criteria?"
✅ "Which approach fits better?
A. Simple file-based storage
B. Database with caching
C. External service integration"
❌ "How do you want to handle storage?"
✅ "You mentioned analytics - is that needed for v1
or can we defer it?"
❌ Adding analytics, caching, and multi-tenancy
because "we might need them later"
✅ Presenting 3 approaches with trade-offs
before asking which to pursue
❌ Jumping straight to your preferred solution
✅ "Here's the data model [200 words].
Does this match your mental model?"
❌ Presenting the entire design in one 2000-word block
If you find yourself:
STOP. Go back to Phase 2.
| Excuse | Reality | |--------|---------| | "I know what they need" | Ask. You might be wrong. | | "Multiple questions is faster" | Overwhelms. One at a time. | | "One approach is obviously best" | Present options. Let them choose. | | "They'll say if it's wrong" | Validate incrementally. Don't assume. | | "Details can wait" | Get details now. Assumptions cause rework. |
After brainstorming, save the validated design:
# [Feature Name] Design
## Purpose
[What problem this solves]
## Users
[Who will use this]
## Success Criteria
- [ ] [Criterion 1]
- [ ] [Criterion 2]
## Constraints
- [Constraint 1]
- [Constraint 2]
## Out of Scope
- [Explicitly excluded 1]
- [Explicitly excluded 2]
## Approach Chosen
[Which option and why]
## Architecture
[High-level structure]
## Components
[Key pieces]
## Data Flow
[How data moves]
## Error Handling
[What can go wrong and how handled]
## Testing Strategy
[How to verify]
## Observability (if applicable)
- Logging: [what to log]
- Metrics: [what to track]
- Alerts: [when to alert]
## UI Mockup (if applicable)
[ASCII mockup for UI features]
## Questions Resolved
- Q: [Question asked]
A: [Answer given]
For UI features, include ASCII mockup in the design:
┌─────────────────────────────────────────┐
│ [Component Name] │
├─────────────────────────────────────────┤
│ [Header/Navigation] │
├─────────────────────────────────────────┤
│ │
│ [Main content area] │
│ │
│ [Input fields, buttons, etc.] │
│ │
├─────────────────────────────────────────┤
│ [Footer/Actions] │
└─────────────────────────────────────────┘
Skip this for API-only or backend features.
One direct save and one router handoff are required - design file plus machine-readable handoff.
# Resolve absolute project directory FIRST (prevents wrong-CWD save — CC10X-006)
Bash(command="pwd") # Store output as PROJECT_DIR
# Example: if pwd = /workspace/github-horoscope, use that as prefix
# Create directory using absolute path
Bash(command="mkdir -p {PROJECT_DIR}/docs/plans")
# Then save design using Write tool (permission-free)
# IMPORTANT: Use absolute path. Relative paths save to workspace root, not project dir.
Write(file_path="{PROJECT_DIR}/docs/plans/YYYY-MM-DD-<feature>-design.md", content="[full design content from template above]")
# Naming convention: always use -design.md suffix (brainstorming output) vs -plan.md suffix (planner output) — prevents collision in docs/plans/
# Do NOT auto-commit — let the user decide when to commit
Do NOT edit .cc10x/v10/*.md from brainstorming.
Instead, end your response with this machine-readable handoff so the router can carry the design forward and let memory finalization persist it once:
### Brainstorming Handoff (MACHINE-READABLE)
DESIGN_FILE: "{PROJECT_DIR}/docs/plans/YYYY-MM-DD-<feature>-design.md"
DESIGN_SUMMARY: "[one-sentence summary of the chosen design]"
WHY BOTH: The design file is the artifact. The handoff tells the router what to pass to planner and what to persist later. Memory stays single-writer and router-owned.
Before presenting the saved design to the user, consider reviewing it for:
If concerns found, revise the design file before presenting. This is a self-review — no agents spawned.
Announce to the user:
"Design saved to
{DESIGN_FILE}. Router will carry the design reference forward and manage any research or planning transitions automatically."
The router handles workflow transitions — do not prompt the user for next steps. The router will proceed to research and/or planning automatically.
Before completing brainstorming:
tools
Safe cc10x upgrade that preserves local modifications. Stashes diffs, pulls upstream, rebuilds cache, rebases patches. Use this skill when: updating cc10x, upgrading, pulling latest cc10x, syncing plugin, refreshing cache, or checking for new versions. Triggers: update cc10x, upgrade cc10x, pull cc10x, sync plugin, refresh cc10x, check for updates, new version, update plugin, upgrade plugin.
development
Use when a BUILD phase completes, a commit is staged, or a PR is about to be created, and the diff has not yet been reflected in documentation. Also use when the user says "update docs", "sync docs", "document this", or asks whether documentation is up to date.
development
Use when a bug, flaky test, or runtime/build failure needs root-cause tracing and a nearby duplicate-pattern scan before any fix.
development
THE ONLY ENTRY POINT FOR CC10X. Activate this skill for build, debug, review, and plan requests. Use when the user asks to implement, fix, review, plan, test, refactor, or continue code work. Trigger keywords: build, implement, create, write, add, review, audit, debug, fix, error, bug, broken, plan, design, architect, spec, brainstorm, test, refactor, optimize, update, change, research, cc10x, c10x. CRITICAL: Route and execute immediately. Do not stop at describing capabilities.