Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Optional divergent-then-convergent dialogue for fuzzy ideas. Invoked from the chorus-idea skill as a prelude to structured elaboration; produces one ElaborationRound of decision-point Q&A and returns control. Never writes files, never posts comments, never resolves elaboration.
.claude/skills/chorus-aidlc-chorus-brainstorm/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-10 | ✗→✓ | ▲ Improved | 139% | 0% |
| case-14 | ✗→✓ | ▲ Improved | 135% | 0% |
| case-07 | ✓→✗ | ▼ Worse | 10% | 0% |
| case-08 | ✓→✗ | ▼ Worse | 362% | 0% |
| case-15 | ✓→✗ | ▼ Worse | 192% | 0% |
A divergent-then-convergent dialogue cadence for ideas whose direction is still being formed. Compresses the conversation into one ElaborationRound of decision-point Q&A — same shape as a structured elaboration round, but the questions, options and answers are synthesized at the end of the conversation rather than asked up front.
This skill is a producer of one elaboration round; the scheduler decision (resolve vs. follow-up) belongs to the calling /chorus-idea skill.
Only as a sub-step of the /chorus-idea skill, only after the user has explicitly opted in via an interactive question. Never run standalone, never run without user opt-in. The expected entry point is the idea skill's "Step 4.5: Brainstorm Mode (Optional Prelude)" — see /chorus-idea for the surrounding flow.
ElaborationRound and nothing else on disk.chorus_add_comment from this skill. Comments belong to the /chorus-idea skill or the user, not to the brainstorm step.validate_elaboration call. Do NOT call chorus_pm_validate_elaboration from this skill. Whether to resolve the elaboration or open a follow-up round (chorus_pm_start_elaboration again) is the calling /chorus-idea skill's decision, not this skill's.Before asking the first divergent question, read the idea and surrounding project state. Mirror the /chorus-idea gather-context list:
chorus_get_idea({ ideaUuid })
chorus_get_documents({ projectUuid })
chorus_get_document({ documentUuid }) # for any document worth reading in full
chorus_get_proposals({ projectUuid, status: "approved" }) # to understand patterns
chorus_list_tasks({ projectUuid }) # to avoid duplicating existing work
chorus_get_comments({ targetType: "idea", targetUuid: ideaUuid })Skim each result for: stated background, stated requirements, stated constraints, and what is conspicuously NOT stated. The gaps are the questions worth asking.
Ask one question at a time (interactive, single-purpose). Aim to surface:
Keep each question single-purpose. If you need to ask three things, that is three turns, not one combined question.
When the goal, constraints, and success criteria are clear enough that you can name distinct approaches, present them in a single question:
Question: "<the convergence question>"
Options:
- "Option A (Recommended)" — <what + tradeoff>
- "Option B" — <what + tradeoff>
- "Option C" — <what + tradeoff>
(single-select)The recommendation must be visibly marked to the user. State why you recommend it — usually a sentence about the dominant tradeoff.
Do not proceed to synthesis if the user has not selected one of the options. If the user answers with free text (a new constraint), treat that as a refinement — go back to step 2 or step 3 with the refined direction.
For each material decision the user made during the conversation, build one ElaborationQuestion. A "material decision" is a moment where the user chose between alternatives or set scope explicitly. Map each decision per the synthesis spec below.
Call chorus_pm_start_elaboration with the synthesized questions:
chorus_pm_start_elaboration({
ideaUuid,
depth: "standard",
questions: [
{ id: "q1", text: "...", category: "...", options: [...] },
...
]
})Then submit the answers in one call:
chorus_answer_elaboration({
ideaUuid,
roundUuid,
answers: [
{ questionId: "q1", selectedOptionId: "...", customText: "<rationale>" },
...
]
})Stop here. Do NOT call chorus_pm_validate_elaboration. The /chorus-idea caller now decides:
chorus_pm_validate_elaboration.chorus_pm_start_elaboration again.The depth of any follow-up round is the caller's call, not yours.
Each material decision becomes exactly one ElaborationQuestion with these fields:
| Field | Source | |---|---| | text | The decision question, phrased neutrally. Example: "Which depth-model placement?" | | category | functional, non_functional, business_context, technical_context, user_scenario, or scope — derived from the topic. | | options | All directions that were considered, length 2-5. Collapse near-duplicates into one option. | | selectedOptionId | The id of the option the user approved. | | customText | A 1-3 sentence rationale capturing the constraint or tradeoff that drove the choice. Not a transcript dump. |
Rules:
customText longer than ~3 sentences is a sign you are summarizing transcript instead of capturing rationale. Cut.options array of length 2 with binary "yes / no" framing is a sign you pre-narrowed alternatives. Re-examine — there are usually at least three meaningfully different paths, even if two of them get rejected quickly.Do not do any of the following. Each has a specific failure mode that this skill must prevent:
customText blob. Compressing the entire conversation into one ElaborationQuestion with a long markdown summary in customText. The schema is multi-question for a reason — preserve the decision granularity.validate_elaboration calls. Closing the elaboration phase from this skill. The lifecycle decision belongs to the /chorus-idea skill. Calling it here strips the caller of its scheduler role.Other measured skills in the registry, with their headline benchmark lift.