Brainstorming Ideas Into Designs
Language: Write the documents this skill produces in Vietnamese — headings, prose, business rules, edge cases, test case names.
Language: Talk to the user in Vietnamese. Keep code, identifiers, file paths, commands and type names in their original form.
Help turn ideas into fully formed designs and specs through natural collaborative dialogue.
Start by classifying how much process the request needs, then work
through your path: understand the context, refine the idea, present a
design, and get your human partner's approval.
The same holds for HOW the work runs: explore, research and write inline
in this session. Dispatching a subagent — to research, to draft, to
implement — is the user's decision, not yours. See
subagent-gate.
Four Paths
Before your first question, classify the request and say the
classification out loud — "this looks bounded, so I'll go straight to a
short plan instead of writing a spec". If you landed on bounded or
architectural, stop there and confirm it (see "Confirm The
Classification"); spike and bug have their own gates and skip this one.
- Spike — a feasibility question ("can we...", "is it possible...",
"quick and dirty is fine") whose output is an answer, not code you
keep. Present the question and what you'll try in 2-3 sentences, get
a nod, then find out as cheaply as correctness allows. No spec, no
plan — but the answer is written down: record it as a research doc
following writing-research, then
report findings as a recommendation; anything you built stays labeled
throwaway.
- Bug — wrong behavior: a runtime error, a wrong result, a failing
test, a regression, something that used to work and no longer does.
Do not brainstorm a design for a symptom. Stop this path and invoke
the
qskill-systematic-debugging skill to find the root cause first.
With the root cause in hand, come back here, classify the fix
(usually bounded; architectural if the structure has to change), and
continue on that path.
- Bounded — a well-scoped change to code that already exists in
this repo: a new flag, a small endpoint, a one-file fix.
Understanding the kind of app is not enough — bounded means the flow
you are changing is already here to read. If there is no existing
flow to change, the task is not bounded. Ask the clarifying questions
that matter; in chat raise ONLY what your human partner has to decide
(open questions, choices, trade-offs) — do not restate the whole
design there. Once no questions are left, do NOT write a spec: invoke
the
qskill-write-ba-plan skill to write a short plan, and let that
skill handle the file, the commit and the review gate (see "Bounded
Goes To write-ba-plan").
- Architectural — new projects, new subsystems, changes that
restructure how components fit together or alter interfaces others
depend on. Follow the full process: questions, approaches, sectioned
design, written spec, then the write-ba-plan skill. Everything about
approaches, design presentation and the spec document itself lives in
writing-specs — read it before
exploring approaches.
When in doubt between two paths, take the heavier one and say so while
asking — doubt is a reason to ask better, never a reason to skip the
gate.
After the gate the ratchet is one-way: hidden complexity discovered
mid-task upgrades the path — stop, say so, and step up. Nothing
downgrades mid-task. The gate is the ONE place a path can move down,
and only because your human partner moved it.
Confirm The Classification
Ask with AskUserQuestion, in Vietnamese, with one sentence of
reasoning for the path you picked. Two options, and the second one
depends on where you landed:
- Classified bounded → 1. Đúng, tiếp tục · 2. Nâng lên architectural
- Classified architectural → 1. Đúng, tiếp tục · 2. Hạ xuống bounded
Take their answer as given; do not argue the label. Why this gate
exists: the bounded/architectural line is drawn by intent, and intent
lives with your partner, not in the diff.
Commits Apply To Every Path
Read this while you classify — the commit rules bind every path, not just
the architectural one. Skipping the full spec does not skip the commit; a
bounded fix landing uncommitted is exactly the mess this rule exists to
prevent.
Git gate, before any path starts: run git rev-parse --git-dir. If this is
not a Git repository, STOP and ask the user to initialize Git. Do not probe, do
not implement, do not write a document. Without version control, several tasks
pile up in one working tree and the commits that eventually get made are dirty.
Every commit carries a slug, as the subject prefix [<slug>]. The slug is
always the path's own document filename minus its extension, date included —
YYYY-MM-DD-<topic> — so the whole work stream stays groupable from
git log --oneline --grep. Never strip the date. Which document, and the exact
commit format, belong to the path:
| Path |
Document the slug comes from |
Rules live in |
| Spike |
the research doc |
writing-research |
| Bounded |
the plan |
qskill-write-ba-plan / qskill-executing-plans |
| Architectural |
the spec, then the plan |
writing-specs |
| Bug |
none of its own — it ends at a root cause |
the path the fix is re-classified into |
Before reporting done on any path, run git status --porcelain. Anything
still listed is unfinished work: commit it, or say explicitly what you left
uncommitted and why. Full rules:
commit-convention.
Bounded Goes To write-ba-plan
Bounded writes no spec, but it still leaves a document behind — and that
document is a plan, not a file format of its own.
Why: a bounded task can still stretch across several sessions. In a
later session your human partner runs qskill-executing-plans to carry
on, and that skill reads only plan documents under
docs/superpowers/plans/. A design parked in a spec or a bespoke brief
file leaves nothing to execute — so bounded and architectural funnel
into the same single document type.
When no questions are left: say briefly that you are moving on to
write the plan, then invoke the qskill-write-ba-plan skill. From that
point everything — plan content, file path, slug, commits, the user
review gate, the handoff to qskill-executing-plans — follows that
skill's rules. Do not restate or reinvent those rules here.
The one difference from architectural: a bounded task has no spec
document, so in the plan header the Spec: field reads none (bounded task) followed by a sentence or two summarizing the request and why
this approach was chosen — that is the record someone reads later to
learn why the change was made this way.
The approval gate is unchanged: you do not write code in the turn
where you hand over. The plan gets written, committed, reviewed by your
human partner, and only then implemented.
Anti-Pattern: "Too Simple To Need Approval"
Every path ends with your human partner approving your intent before
implementation. A todo list, a single-function utility, a config
change — the plan may be a few lines, but you MUST put it in front of
your human partner and get approval. "Simple" tasks are where unexamined assumptions
cause the most wasted work. What scales with simplicity is the
artifact, never the approval.
Red Flags
| Thought |
Reality |
| "I said it's bounded, that's the announcement done" |
Announcing is not confirming. Ask, then wait for the answer. |
| "The classification is obvious, no need to ask" |
Obvious to you, from the diff. Your partner classifies from intent. Ask anyway. |
| "I'll ask about the path while I start exploring context" |
Exploring is the path already running. The gate is before step 1, not alongside it. |
| "They downgraded me to bounded but I know it's architectural" |
Their answer replaces your judgement. Take the path they chose and move on. |
| "They confirmed bounded, so I can downgrade later too" |
The gate is the only place a path moves down. Mid-task, the ratchet is still one-way. |
| "This is too simple to need a design" |
Simple means a short design, not no design. Write the short plan, then wait for approval. |
| "I'll call it bounded and skip the spec" |
Reaching for a label to skip work IS the doubt — take the heavier path. |
| "Bounded means nothing gets written down" |
Bounded still produces a plan via qskill-write-ba-plan. A later session needs something to execute. |
| "The short design is in the chat, no need for a plan" |
Chat is not searchable three months later, and executing-plans cannot read chat. |
| "I'll restate the whole design in chat to be safe" |
Chat is only for what your partner must decide. The design lives in the plan. |
| "It's a small bounded task, I'll just write my own design file" |
One document type: the plan. A bespoke file is a file no skill can run. |
| "It's only a small bug, I can guess where it broke" |
Bugs go through qskill-systematic-debugging first. A guess is not a root cause. |
| "It's bounded and the design is obvious — I'll start while they read it" |
The gate is the approval, not the design's length. Present, then stop until you hear yes. |
| "I understand this kind of app, so it's bounded" |
Bounded measures the repo, not your familiarity. A new project has no existing flow — it is architectural. |
| "The spike works, so I'll keep the code" |
A spike's output is an answer. Keeping the code is a new request — classify it. |
| "It grew, but I'm almost done — no need to re-classify" |
Hidden complexity upgrades the path mid-task. Stop and say so. |
| "They approved the spike, so the follow-up change is approved too" |
Each task gets its own classification and its own approval. |
| "No spec, so there is no slug to commit with" |
Spike uses the slug from its research filename; bounded uses the slug from the plan filename. No spec never means no document and never means no commit. |
| "The spike answer is in the chat, that's enough" |
Chat is not searchable three months later. A spike ends at a committed research doc under docs/superpowers/research/. |
| "I'll write the spec from memory, I know the rules" |
Spec rules live in references/writing-specs.md. Read the file before writing the spec. |
| "It's a bounded one-file fix — the user can commit it" |
The path that writes the file commits the file. Leaving it dirty is what makes later history unreadable. |
| "The spike code is throwaway, so I'll just leave it lying around" |
Throwaway means deleted. Anything still on disk gets committed. |
Checklist
Classify first, announce the path, and — for bounded or architectural —
get it confirmed. Then create a task for each item on the confirmed
path and complete them in order. If your partner moves the level, drop
that checklist and run the other one from the top.
Spike:
- Explore project context — enough to frame the probe
- Present question + probe plan — 2-3 sentences
- Get approval — a nod on the probe is enough
- Investigate — as cheaply as correctness allows
- Write the research doc — per writing-research: write it, self-review, commit it
- Commit or delete what you built — throwaway probes get deleted; anything kept is committed under the research slug, then
git status --porcelain must be clean
- Report findings — a recommendation; label anything built as throwaway
Bug:
- Invoke
qskill-systematic-debugging — before anything else; no guessing, no patching the symptom
- Report root cause — state the real cause and the evidence for it
- Re-classify the fix — bounded or architectural, then run that path's checklist in full (approval gate and plan document included)
Bounded:
0. Confirm the classification — ask: tiếp tục / nâng lên architectural; nothing below starts before the answer
- Explore project context — check files, docs, recent commits
- Ask clarifying questions — one at a time, the ones that matter
- Raise in chat only what your partner must decide — open questions, choices between approaches, trade-offs; do not restate the whole design
- Invoke qskill-write-ba-plan — once no questions are left; a short plan, with
Spec: reading none (bounded task) plus a summary of the request and why this approach was chosen
- Follow that skill's rules from there — it owns the plan file, slug, commits, the user review gate, and the handoff to qskill-executing-plans
Architectural:
0. Confirm the classification — ask: tiếp tục / hạ xuống bounded; nothing below starts before the answer
- Explore project context — check files, docs, recent commits
- Ask clarifying questions — one at a time, understand purpose/constraints/success criteria
- Read writing-specs — it owns approaches, design presentation, spec content and the spec document
- Propose 2-3 approaches — with trade-offs and your recommendation
- Present design — in sections scaled to their complexity, get user approval after each section
- Write design doc — per writing-specs: write it, then commit it
- Spec self-review — per the same reference; fix inline
- User reviews written spec — ask user to review the spec file before proceeding
- Transition to implementation — invoke write-ba-plan skill to create implementation plan
Process Flow
digraph brainstorming {
"Classify: spike / bug / bounded / architectural" [shape=diamond];
"Bounded: tiếp tục / nâng lên?" [shape=diamond];
"Architectural: tiếp tục / hạ xuống?" [shape=diamond];
"Invoke qskill-systematic-debugging" [shape=box];
"Report root cause; re-classify the fix" [shape=box];
"Present question + probe (2-3 sentences)" [shape=box];
"Ask clarifying questions (bounded)" [shape=box];
"Raise only what the user must decide" [shape=box];
"Invoke write-ba-plan skill (bounded)" [shape=doublecircle];
"Human approves probe?" [shape=diamond];
"Investigate" [shape=box];
"Write research doc + commit" [shape=box];
"Report recommendation" [shape=doublecircle];
"Explore project context" [shape=box];
"Ask clarifying questions" [shape=box];
"Propose 2-3 approaches" [shape=box];
"Present design sections" [shape=box];
"User approves design?" [shape=diamond];
"Write design doc" [shape=box];
"Spec self-review\n(fix inline)" [shape=box];
"User reviews spec?" [shape=diamond];
"Invoke write-ba-plan skill" [shape=doublecircle];
"Hidden complexity? Upgrade path" [shape=box];
"Classify: spike / bug / bounded / architectural" -> "Present question + probe (2-3 sentences)" [label="spike"];
"Classify: spike / bug / bounded / architectural" -> "Invoke qskill-systematic-debugging" [label="bug"];
"Classify: spike / bug / bounded / architectural" -> "Bounded: tiếp tục / nâng lên?" [label="bounded"];
"Classify: spike / bug / bounded / architectural" -> "Architectural: tiếp tục / hạ xuống?" [label="architectural"];
"Bounded: tiếp tục / nâng lên?" -> "Ask clarifying questions (bounded)" [label="tiếp tục"];
"Bounded: tiếp tục / nâng lên?" -> "Explore project context" [label="nâng lên"];
"Architectural: tiếp tục / hạ xuống?" -> "Explore project context" [label="tiếp tục"];
"Architectural: tiếp tục / hạ xuống?" -> "Ask clarifying questions (bounded)" [label="hạ xuống"];
"Invoke qskill-systematic-debugging" -> "Report root cause; re-classify the fix";
"Report root cause; re-classify the fix" -> "Classify: spike / bug / bounded / architectural";
"Present question + probe (2-3 sentences)" -> "Human approves probe?";
"Ask clarifying questions (bounded)" -> "Raise only what the user must decide";
"Raise only what the user must decide" -> "Invoke write-ba-plan skill (bounded)" [label="no questions left"];
"Human approves probe?" -> "Investigate" [label="yes"];
"Investigate" -> "Write research doc + commit";
"Write research doc + commit" -> "Report recommendation";
"Hidden complexity? Upgrade path" -> "Classify: spike / bug / bounded / architectural";
"Explore project context" -> "Ask clarifying questions";
"Ask clarifying questions" -> "Propose 2-3 approaches";
"Propose 2-3 approaches" -> "Present design sections";
"Present design sections" -> "User approves design?";
"User approves design?" -> "Present design sections" [label="no, revise"];
"User approves design?" -> "Write design doc" [label="yes"];
"Write design doc" -> "Spec self-review\n(fix inline)";
"Spec self-review\n(fix inline)" -> "User reviews spec?";
"User reviews spec?" -> "Write design doc" [label="changes requested"];
"User reviews spec?" -> "Invoke write-ba-plan skill" [label="approved"];
}
Terminal states are path-bound. Architectural: the ONLY skill you
invoke after brainstorming is qskill-write-ba-plan — never any other
implementation skill. Bounded: also ends at qskill-write-ba-plan — the
only difference is that no spec document precedes it. Spike: the terminal
state is a committed research doc plus a reported recommendation. Bug: the terminal state is a root
cause plus a re-classification — the fix runs on its own path.
The Process
The subsections below are shared by every path that designs something —
bounded and architectural alike. A spike stops at "present the probe, get
a nod" and then records the answer per
writing-research.
The architectural-only depth — exploring approaches, presenting the design
in sections, and every rule about the spec document — lives in
writing-specs. For bounded work, context
plus a few questions plus a short in-chat design is the whole process.
Understanding the idea:
- Check out the current project state first (files, docs, recent commits)
- Before asking detailed questions, assess scope: if the request describes multiple independent subsystems (e.g., "build a platform with chat, file storage, billing, and analytics"), flag this immediately. Don't spend questions refining details of a project that needs to be decomposed first.
- If the project is too large for a single spec, help the user decompose into sub-projects: what are the independent pieces, how do they relate, what order should they be built? Then brainstorm the first sub-project through the normal design flow. Each sub-project gets its own spec → plan → implementation cycle.
- For appropriately-scoped projects, ask questions one at a time to refine the idea
- Prefer multiple choice questions when possible, but open-ended is fine too
- Only one question per message - if a topic needs more exploration, break it into multiple questions
- Focus on understanding: purpose, constraints, success criteria
Design for isolation and clarity:
- Break the system into smaller units that each have one clear purpose, communicate through well-defined interfaces, and can be understood and tested independently
- For each unit, you should be able to answer: what does it do, how do you use it, and what does it depend on?
- Can someone understand what a unit does without reading its internals? Can you change the internals without breaking consumers? If not, the boundaries need work.
- Smaller, well-bounded units are also easier for you to work with - you reason better about code you can hold in context at once, and your edits are more reliable when files are focused. When a file grows large, that's often a signal that it's doing too much.
Working in existing codebases:
- Explore the current structure before proposing changes. Follow existing patterns.
- Where existing code has problems that affect the work (e.g., a file that's grown too large, unclear boundaries, tangled responsibilities), include targeted improvements as part of the design - the way a good developer improves code they're working in.
- Don't propose unrelated refactoring. Stay focused on what serves the current goal.
Delegation
GATE FIRST: ../shared/subagent-gate.md —
the user decides whether this run uses subagents at all. Propose the split
below, stop for their answer, and run inline until it comes.
REQUIRED REFERENCE once they choose subagents:
../shared/subagent-delegation.md —
capability check, role selection (Oh-My-Pi: role task, backup tiny), the
lead contract, the dispatch prompt contract.
When subagents are available you are the lead: you hold the conversation, the
classification and the design judgment; subagents do the reading. Fan them out
in parallel — the units here are independent by nature.
Delegate (parallel, one output file each):
- Surveying the current project state: structure, existing patterns, relevant
modules, recent commits.
- One agent per open question that needs code or docs read to answer it.
- Spike probes: one agent per candidate approach, each reporting findings
against the same question.
Never delegate:
- Asking the user questions, or interpreting their answers. One voice talks to
the user — yours.
- The classification decision and its confirmation.
- The design itself, or the spec / research document. You write those from
what the subagents found.
Wait for the batch, read the reports, and only then ask your next question —
questions built on a guess you could have delegated are wasted turns.
Path References
The rest of the process is path-specific. Read only the file for the path
you classified into:
- Spike — writing-research: where the
research doc goes, its header, content rules, self-review and commit.
- Architectural — writing-specs:
exploring approaches, presenting the design, spec content rules, the spec
document, its commit, self-review and the user review gate.
- Bounded — no reference file here; invoke
qskill-write-ba-plan and
follow that skill.
- Bug — no reference file here; invoke
qskill-systematic-debugging,
then re-classify.
1---2name: qskill-brainstorming3description: You MUST use this before any creative work - creating features, building components, adding functionality, or modifying behavior. Explores user intent, requirements and design before implementation.4---56# Brainstorming Ideas Into Designs78**Language:** Write the documents this skill produces in Vietnamese — headings, prose, business rules, edge cases, test case names.9**Language:** Talk to the user in Vietnamese. Keep code, identifiers, file paths, commands and type names in their original form.1011Help turn ideas into fully formed designs and specs through natural collaborative dialogue.1213Start by classifying how much process the request needs, then work14through your path: understand the context, refine the idea, present a15design, and get your human partner's approval.1617<HARD-GATE>18Do NOT invoke any implementation skill, write any code, scaffold any19project, or take any implementation action until you have told your20human partner what you intend and they have approved it. This applies21to EVERY task on EVERY path below — the ceremony scales with the task;22the approval gate never does.2324The same holds for HOW the work runs: explore, research and write inline25in this session. Dispatching a subagent — to research, to draft, to26implement — is the user's decision, not yours. See27[subagent-gate](../shared/subagent-gate.md).28</HARD-GATE>2930## Four Paths3132Before your first question, classify the request and say the33classification out loud — "this looks bounded, so I'll go straight to a34short plan instead of writing a spec". If you landed on **bounded or35architectural**, stop there and confirm it (see "Confirm The36Classification"); spike and bug have their own gates and skip this one.3738- **Spike** — a feasibility question ("can we...", "is it possible...",39 "quick and dirty is fine") whose output is an answer, not code you40 keep. Present the question and what you'll try in 2-3 sentences, get41 a nod, then find out as cheaply as correctness allows. No spec, no42 plan — but the answer is written down: record it as a research doc43 following [writing-research](references/writing-research.md), then44 report findings as a recommendation; anything you built stays labeled45 throwaway.46- **Bug** — wrong behavior: a runtime error, a wrong result, a failing47 test, a regression, something that used to work and no longer does.48 Do not brainstorm a design for a symptom. Stop this path and invoke49 the `qskill-systematic-debugging` skill to find the root cause first.50 With the root cause in hand, come back here, classify the fix51 (usually bounded; architectural if the structure has to change), and52 continue on that path.53- **Bounded** — a well-scoped change to code that already exists in54 this repo: a new flag, a small endpoint, a one-file fix.55 Understanding the kind of app is not enough — bounded means the flow56 you are changing is already here to read. If there is no existing57 flow to change, the task is not bounded. Ask the clarifying questions58 that matter; in chat raise ONLY what your human partner has to decide59 (open questions, choices, trade-offs) — do not restate the whole60 design there. Once no questions are left, do NOT write a spec: invoke61 the `qskill-write-ba-plan` skill to write a short plan, and let that62 skill handle the file, the commit and the review gate (see "Bounded63 Goes To write-ba-plan").64- **Architectural** — new projects, new subsystems, changes that65 restructure how components fit together or alter interfaces others66 depend on. Follow the full process: questions, approaches, sectioned67 design, written spec, then the write-ba-plan skill. Everything about68 approaches, design presentation and the spec document itself lives in69 [writing-specs](references/writing-specs.md) — read it before70 exploring approaches.7172When in doubt between two paths, take the heavier one and say so while73asking — doubt is a reason to ask better, never a reason to skip the74gate.7576After the gate the ratchet is one-way: hidden complexity discovered77mid-task upgrades the path — stop, say so, and step up. Nothing78downgrades mid-task. The gate is the ONE place a path can move down,79and only because your human partner moved it.8081## Confirm The Classification8283<HARD-GATE>84Announcing bounded or architectural is not confirming it. Stop and ask,85and start nothing — no clarifying questions, no context exploration —86until your human partner answers.87</HARD-GATE>8889Ask with `AskUserQuestion`, in Vietnamese, with one sentence of90reasoning for the path you picked. Two options, and the second one91depends on where you landed:9293- Classified **bounded** → 1. Đúng, tiếp tục · 2. Nâng lên architectural94- Classified **architectural** → 1. Đúng, tiếp tục · 2. Hạ xuống bounded9596Take their answer as given; do not argue the label. Why this gate97exists: the bounded/architectural line is drawn by intent, and intent98lives with your partner, not in the diff.99100## Commits Apply To Every Path101102**Read this while you classify — the commit rules bind every path, not just103the architectural one.** Skipping the full spec does not skip the commit; a104bounded fix landing uncommitted is exactly the mess this rule exists to105prevent.106107**Git gate, before any path starts:** run `git rev-parse --git-dir`. If this is108not a Git repository, STOP and ask the user to initialize Git. Do not probe, do109not implement, do not write a document. Without version control, several tasks110pile up in one working tree and the commits that eventually get made are dirty.111112**Every commit carries a slug**, as the subject prefix `[<slug>]`. The slug is113always the path's own document filename minus its extension, date included —114`YYYY-MM-DD-<topic>` — so the whole work stream stays groupable from115`git log --oneline --grep`. Never strip the date. Which document, and the exact116commit format, belong to the path:117118| Path | Document the slug comes from | Rules live in |119|---|---|---|120| **Spike** | the research doc | [writing-research](references/writing-research.md) |121| **Bounded** | the plan | `qskill-write-ba-plan` / `qskill-executing-plans` |122| **Architectural** | the spec, then the plan | [writing-specs](references/writing-specs.md) |123| **Bug** | none of its own — it ends at a root cause | the path the fix is re-classified into |124125**Before reporting done on any path**, run `git status --porcelain`. Anything126still listed is unfinished work: commit it, or say explicitly what you left127uncommitted and why. Full rules:128[commit-convention](../qskill-executing-plans/references/commit-convention.md).129130## Bounded Goes To write-ba-plan131132Bounded writes no spec, but it still leaves a document behind — and that133document is a **plan**, not a file format of its own.134135Why: a bounded task can still stretch across several sessions. In a136later session your human partner runs `qskill-executing-plans` to carry137on, and that skill reads only plan documents under138`docs/superpowers/plans/`. A design parked in a spec or a bespoke brief139file leaves nothing to execute — so bounded and architectural funnel140into the same single document type.141142**When no questions are left:** say briefly that you are moving on to143write the plan, then invoke the `qskill-write-ba-plan` skill. From that144point everything — plan content, file path, slug, commits, the user145review gate, the handoff to `qskill-executing-plans` — follows that146skill's rules. Do not restate or reinvent those rules here.147148**The one difference from architectural:** a bounded task has no spec149document, so in the plan header the `Spec:` field reads `none (bounded150task)` followed by a sentence or two summarizing the request and why151this approach was chosen — that is the record someone reads later to152learn why the change was made this way.153154**The approval gate is unchanged:** you do not write code in the turn155where you hand over. The plan gets written, committed, reviewed by your156human partner, and only then implemented.157158## Anti-Pattern: "Too Simple To Need Approval"159160Every path ends with your human partner approving your intent before161implementation. A todo list, a single-function utility, a config162change — the plan may be a few lines, but you MUST put it in front of163your human partner and get approval. "Simple" tasks are where unexamined assumptions164cause the most wasted work. What scales with simplicity is the165artifact, never the approval.166167## Red Flags168169| Thought | Reality |170|---------|---------|171| "I said it's bounded, that's the announcement done" | Announcing is not confirming. Ask, then wait for the answer. |172| "The classification is obvious, no need to ask" | Obvious to you, from the diff. Your partner classifies from intent. Ask anyway. |173| "I'll ask about the path while I start exploring context" | Exploring is the path already running. The gate is before step 1, not alongside it. |174| "They downgraded me to bounded but I know it's architectural" | Their answer replaces your judgement. Take the path they chose and move on. |175| "They confirmed bounded, so I can downgrade later too" | The gate is the only place a path moves down. Mid-task, the ratchet is still one-way. |176| "This is too simple to need a design" | Simple means a short design, not no design. Write the short plan, then wait for approval. |177| "I'll call it bounded and skip the spec" | Reaching for a label to skip work IS the doubt — take the heavier path. |178| "Bounded means nothing gets written down" | Bounded still produces a plan via qskill-write-ba-plan. A later session needs something to execute. |179| "The short design is in the chat, no need for a plan" | Chat is not searchable three months later, and executing-plans cannot read chat. |180| "I'll restate the whole design in chat to be safe" | Chat is only for what your partner must decide. The design lives in the plan. |181| "It's a small bounded task, I'll just write my own design file" | One document type: the plan. A bespoke file is a file no skill can run. |182| "It's only a small bug, I can guess where it broke" | Bugs go through qskill-systematic-debugging first. A guess is not a root cause. |183| "It's bounded and the design is obvious — I'll start while they read it" | The gate is the approval, not the design's length. Present, then stop until you hear yes. |184| "I understand this kind of app, so it's bounded" | Bounded measures the repo, not your familiarity. A new project has no existing flow — it is architectural. |185| "The spike works, so I'll keep the code" | A spike's output is an answer. Keeping the code is a new request — classify it. |186| "It grew, but I'm almost done — no need to re-classify" | Hidden complexity upgrades the path mid-task. Stop and say so. |187| "They approved the spike, so the follow-up change is approved too" | Each task gets its own classification and its own approval. |188| "No spec, so there is no slug to commit with" | Spike uses the slug from its research filename; bounded uses the slug from the plan filename. No spec never means no document and never means no commit. |189| "The spike answer is in the chat, that's enough" | Chat is not searchable three months later. A spike ends at a committed research doc under `docs/superpowers/research/`. |190| "I'll write the spec from memory, I know the rules" | Spec rules live in references/writing-specs.md. Read the file before writing the spec. |191| "It's a bounded one-file fix — the user can commit it" | The path that writes the file commits the file. Leaving it dirty is what makes later history unreadable. |192| "The spike code is throwaway, so I'll just leave it lying around" | Throwaway means deleted. Anything still on disk gets committed. |193194## Checklist195196Classify first, announce the path, and — for bounded or architectural —197get it confirmed. Then create a task for each item on the confirmed198path and complete them in order. If your partner moves the level, drop199that checklist and run the other one from the top.200201**Spike:**2021. **Explore project context** — enough to frame the probe2032. **Present question + probe plan** — 2-3 sentences2043. **Get approval** — a nod on the probe is enough2054. **Investigate** — as cheaply as correctness allows2065. **Write the research doc** — per [writing-research](references/writing-research.md): write it, self-review, commit it2076. **Commit or delete what you built** — throwaway probes get deleted; anything kept is committed under the research slug, then `git status --porcelain` must be clean2087. **Report findings** — a recommendation; label anything built as throwaway209210**Bug:**2111. **Invoke `qskill-systematic-debugging`** — before anything else; no guessing, no patching the symptom2122. **Report root cause** — state the real cause and the evidence for it2133. **Re-classify the fix** — bounded or architectural, then run that path's checklist in full (approval gate and plan document included)214215**Bounded:**2160. **Confirm the classification** — ask: tiếp tục / nâng lên architectural; nothing below starts before the answer2171. **Explore project context** — check files, docs, recent commits2182. **Ask clarifying questions** — one at a time, the ones that matter2193. **Raise in chat only what your partner must decide** — open questions, choices between approaches, trade-offs; do not restate the whole design2204. **Invoke qskill-write-ba-plan** — once no questions are left; a short plan, with `Spec:` reading `none (bounded task)` plus a summary of the request and why this approach was chosen2215. **Follow that skill's rules from there** — it owns the plan file, slug, commits, the user review gate, and the handoff to qskill-executing-plans222223**Architectural:**2240. **Confirm the classification** — ask: tiếp tục / hạ xuống bounded; nothing below starts before the answer2251. **Explore project context** — check files, docs, recent commits2262. **Ask clarifying questions** — one at a time, understand purpose/constraints/success criteria2273. **Read [writing-specs](references/writing-specs.md)** — it owns approaches, design presentation, spec content and the spec document2284. **Propose 2-3 approaches** — with trade-offs and your recommendation2295. **Present design** — in sections scaled to their complexity, get user approval after each section2306. **Write design doc** — per [writing-specs](references/writing-specs.md): write it, then commit it2317. **Spec self-review** — per the same reference; fix inline2328. **User reviews written spec** — ask user to review the spec file before proceeding2339. **Transition to implementation** — invoke write-ba-plan skill to create implementation plan234235## Process Flow236237```dot238digraph brainstorming {239 "Classify: spike / bug / bounded / architectural" [shape=diamond];240 "Bounded: tiếp tục / nâng lên?" [shape=diamond];241 "Architectural: tiếp tục / hạ xuống?" [shape=diamond];242 "Invoke qskill-systematic-debugging" [shape=box];243 "Report root cause; re-classify the fix" [shape=box];244 "Present question + probe (2-3 sentences)" [shape=box];245 "Ask clarifying questions (bounded)" [shape=box];246 "Raise only what the user must decide" [shape=box];247 "Invoke write-ba-plan skill (bounded)" [shape=doublecircle];248 "Human approves probe?" [shape=diamond];249 "Investigate" [shape=box];250 "Write research doc + commit" [shape=box];251 "Report recommendation" [shape=doublecircle];252 "Explore project context" [shape=box];253 "Ask clarifying questions" [shape=box];254 "Propose 2-3 approaches" [shape=box];255 "Present design sections" [shape=box];256 "User approves design?" [shape=diamond];257 "Write design doc" [shape=box];258 "Spec self-review\n(fix inline)" [shape=box];259 "User reviews spec?" [shape=diamond];260 "Invoke write-ba-plan skill" [shape=doublecircle];261 "Hidden complexity? Upgrade path" [shape=box];262263 "Classify: spike / bug / bounded / architectural" -> "Present question + probe (2-3 sentences)" [label="spike"];264 "Classify: spike / bug / bounded / architectural" -> "Invoke qskill-systematic-debugging" [label="bug"];265 "Classify: spike / bug / bounded / architectural" -> "Bounded: tiếp tục / nâng lên?" [label="bounded"];266 "Classify: spike / bug / bounded / architectural" -> "Architectural: tiếp tục / hạ xuống?" [label="architectural"];267 "Bounded: tiếp tục / nâng lên?" -> "Ask clarifying questions (bounded)" [label="tiếp tục"];268 "Bounded: tiếp tục / nâng lên?" -> "Explore project context" [label="nâng lên"];269 "Architectural: tiếp tục / hạ xuống?" -> "Explore project context" [label="tiếp tục"];270 "Architectural: tiếp tục / hạ xuống?" -> "Ask clarifying questions (bounded)" [label="hạ xuống"];271 "Invoke qskill-systematic-debugging" -> "Report root cause; re-classify the fix";272 "Report root cause; re-classify the fix" -> "Classify: spike / bug / bounded / architectural";273 "Present question + probe (2-3 sentences)" -> "Human approves probe?";274 "Ask clarifying questions (bounded)" -> "Raise only what the user must decide";275 "Raise only what the user must decide" -> "Invoke write-ba-plan skill (bounded)" [label="no questions left"];276 "Human approves probe?" -> "Investigate" [label="yes"];277 "Investigate" -> "Write research doc + commit";278 "Write research doc + commit" -> "Report recommendation";279 "Hidden complexity? Upgrade path" -> "Classify: spike / bug / bounded / architectural";280 "Explore project context" -> "Ask clarifying questions";281 "Ask clarifying questions" -> "Propose 2-3 approaches";282 "Propose 2-3 approaches" -> "Present design sections";283 "Present design sections" -> "User approves design?";284 "User approves design?" -> "Present design sections" [label="no, revise"];285 "User approves design?" -> "Write design doc" [label="yes"];286 "Write design doc" -> "Spec self-review\n(fix inline)";287 "Spec self-review\n(fix inline)" -> "User reviews spec?";288 "User reviews spec?" -> "Write design doc" [label="changes requested"];289 "User reviews spec?" -> "Invoke write-ba-plan skill" [label="approved"];290}291```292293**Terminal states are path-bound.** Architectural: the ONLY skill you294invoke after brainstorming is qskill-write-ba-plan — never any other295implementation skill. Bounded: also ends at qskill-write-ba-plan — the296only difference is that no spec document precedes it. Spike: the terminal297state is a committed research doc plus a reported recommendation. Bug: the terminal state is a root298cause plus a re-classification — the fix runs on its own path.299300## The Process301302The subsections below are shared by every path that designs something —303bounded and architectural alike. A spike stops at "present the probe, get304a nod" and then records the answer per305[writing-research](references/writing-research.md).306307The architectural-only depth — exploring approaches, presenting the design308in sections, and every rule about the spec document — lives in309[writing-specs](references/writing-specs.md). For bounded work, context310plus a few questions plus a short in-chat design is the whole process.311312**Understanding the idea:**313314- Check out the current project state first (files, docs, recent commits)315- Before asking detailed questions, assess scope: if the request describes multiple independent subsystems (e.g., "build a platform with chat, file storage, billing, and analytics"), flag this immediately. Don't spend questions refining details of a project that needs to be decomposed first.316- If the project is too large for a single spec, help the user decompose into sub-projects: what are the independent pieces, how do they relate, what order should they be built? Then brainstorm the first sub-project through the normal design flow. Each sub-project gets its own spec → plan → implementation cycle.317- For appropriately-scoped projects, ask questions one at a time to refine the idea318- Prefer multiple choice questions when possible, but open-ended is fine too319- Only one question per message - if a topic needs more exploration, break it into multiple questions320- Focus on understanding: purpose, constraints, success criteria321322**Design for isolation and clarity:**323324- Break the system into smaller units that each have one clear purpose, communicate through well-defined interfaces, and can be understood and tested independently325- For each unit, you should be able to answer: what does it do, how do you use it, and what does it depend on?326- Can someone understand what a unit does without reading its internals? Can you change the internals without breaking consumers? If not, the boundaries need work.327- Smaller, well-bounded units are also easier for you to work with - you reason better about code you can hold in context at once, and your edits are more reliable when files are focused. When a file grows large, that's often a signal that it's doing too much.328329**Working in existing codebases:**330331- Explore the current structure before proposing changes. Follow existing patterns.332- Where existing code has problems that affect the work (e.g., a file that's grown too large, unclear boundaries, tangled responsibilities), include targeted improvements as part of the design - the way a good developer improves code they're working in.333- Don't propose unrelated refactoring. Stay focused on what serves the current goal.334335## Delegation336337**GATE FIRST:** [../shared/subagent-gate.md](../shared/subagent-gate.md) —338the user decides whether this run uses subagents at all. Propose the split339below, stop for their answer, and run inline until it comes.340341**REQUIRED REFERENCE once they choose subagents:**342[../shared/subagent-delegation.md](../shared/subagent-delegation.md) —343capability check, role selection (Oh-My-Pi: role `task`, backup `tiny`), the344lead contract, the dispatch prompt contract.345346When subagents are available you are the lead: you hold the conversation, the347classification and the design judgment; subagents do the reading. Fan them out348in parallel — the units here are independent by nature.349350**Delegate (parallel, one output file each):**351- Surveying the current project state: structure, existing patterns, relevant352 modules, recent commits.353- One agent per open question that needs code or docs read to answer it.354- Spike probes: one agent per candidate approach, each reporting findings355 against the same question.356357**Never delegate:**358- Asking the user questions, or interpreting their answers. One voice talks to359 the user — yours.360- The classification decision and its confirmation.361- The design itself, or the spec / research document. You write those from362 what the subagents found.363364Wait for the batch, read the reports, and only then ask your next question —365questions built on a guess you could have delegated are wasted turns.366367## Path References368369The rest of the process is path-specific. Read only the file for the path370you classified into:371372- **Spike** — [writing-research](references/writing-research.md): where the373 research doc goes, its header, content rules, self-review and commit.374- **Architectural** — [writing-specs](references/writing-specs.md):375 exploring approaches, presenting the design, spec content rules, the spec376 document, its commit, self-review and the user review gate.377- **Bounded** — no reference file here; invoke `qskill-write-ba-plan` and378 follow that skill.379- **Bug** — no reference file here; invoke `qskill-systematic-debugging`,380 then re-classify.