idea
$
npx mdskill add Chorus-AIDLC/Chorus/ideaThis skill covers the **Ideation** stage of the AI-DLC workflow: claiming Ideas, running structured elaboration rounds to clarify requirements, and preparing for Proposal creation.
SKILL.md
.github/skills/ideaView on GitHub ↗
---
name: idea
description: Chorus Idea workflow — claim ideas, run elaboration, and prepare for proposal.
metadata:
openclaw:
emoji: "💡"
---
# Idea Skill
This skill covers the **Ideation** stage of the AI-DLC workflow: claiming Ideas, running structured elaboration rounds to clarify requirements, and preparing for Proposal creation.
---
## Overview
Ideas are the starting point of the AI-DLC pipeline. Humans (or Admin agents) create Ideas describing what they need. The PM Agent claims an Idea, runs elaboration to clarify requirements, and then moves on to `/proposal` to create a Proposal with document and task drafts.
### Idea Lifecycle
```
open --> elaborating --> proposal_created --> completed
\--> closed
```
| Status | Meaning |
|--------|---------|
| `open` | Idea is available for an agent to claim |
| `elaborating` | An agent has claimed the idea and is gathering requirements |
| `proposal_created` | A Proposal has been created from this idea |
| `completed` | The resulting Proposal was approved and work is done |
| `closed` | Idea was closed without implementation |
Claiming an idea automatically transitions it from `open` to `elaborating`.
---
## Tools
**Idea Management:**
| Tool | Purpose |
|------|---------|
| `chorus_claim_idea` | Claim an open idea (open -> elaborating) |
| `chorus_get_available_ideas` | List open ideas in a project available to claim |
| `chorus_get_idea` | Get detailed information for a single idea |
| `chorus_get_ideas` | List ideas in a project with optional status filter |
| `chorus_pm_create_idea` | Create a new idea in a project |
| `chorus_move_idea` | Move an idea to a different project (also moves linked draft/pending proposals) |
**Requirements Elaboration:**
| Tool | Purpose |
|------|---------|
| `chorus_start_elaboration` | Start an elaboration round with structured questions |
| `chorus_validate_elaboration` | Validate answers — empty issues = resolved, with issues = follow-up round |
| `chorus_answer_elaboration` | Submit answers for an elaboration round |
| `chorus_get_elaboration` | Get full elaboration state (all rounds, questions, answers) |
**Shared tools** (checkin, query, comment, search, notifications): see `/chorus`
---
## SSE Wake Events (OpenClaw-Specific)
OpenClaw is a single-agent model with SSE-driven wake. The following notification events trigger the agent to wake and act:
| SSE Event | Trigger | Agent Action |
|-----------|---------|--------------|
| `idea_claimed` | An idea is assigned to you | Wake, review the idea with `chorus_get_idea`, claim it if not auto-claimed |
| `elaboration_requested` | Elaboration round started on an idea you own | Wake, review questions with `chorus_get_elaboration` |
| `elaboration_answered` | Answers submitted for your elaboration round | Wake, review answers, validate or create follow-up round |
When an SSE event fires, the plugin's event router fetches the notification details and triggers the agent with context (ideaUuid, projectUuid, action). You do not need to poll — work arrives via these events.
---
## Workflow
### Step 1: Check In
```
chorus_checkin()
```
Review your persona, current assignments, and pending work counts.
### Step 2: Find Work
```
chorus_get_available_ideas({ projectUuid: "<project-uuid>" })
```
Or check existing assignments:
```
chorus_get_my_assignments()
```
### Step 3: Claim an Idea
Claiming automatically transitions the Idea to `elaborating` status:
```
chorus_claim_idea({ ideaUuid: "<idea-uuid>" })
```
### Step 4: Gather Context
Before elaborating, understand the full picture:
1. **Read the idea in detail:**
```
chorus_get_idea({ ideaUuid: "<idea-uuid>" })
```
2. **Read existing project documents** (for context, tech stack, conventions):
```
chorus_get_documents({ projectUuid: "<project-uuid>" })
chorus_get_document({ documentUuid: "<doc-uuid>" })
```
3. **Review past proposals** (to understand patterns and standards):
```
chorus_get_proposals({ projectUuid: "<project-uuid>", status: "approved" })
```
4. **Check existing tasks** (to avoid duplication):
```
chorus_list_tasks({ projectUuid: "<project-uuid>" })
```
5. **Read comments** on the idea for additional context:
```
chorus_get_comments({ targetType: "idea", targetUuid: "<idea-uuid>" })
```
### Step 4.5: Brainstorm Mode (Optional Prelude)
If the Idea is fuzzy and you'd struggle to enumerate concrete multi-choice questions, offer a brainstorm prelude before structured elaboration. Surface the choice to the user using whatever interactive prompt mechanism your host provides — same idiom OpenClaw uses elsewhere in this skill. Two choices: `"Already clear, run structured elaboration"` and `"Brainstorm first to explore directions"`.
- **"Already clear":** Skip to Step 5.
- **"Brainstorm first":** Invoke the `/brainstorm` skill. See `/brainstorm` for the dialogue cadence and synthesis rules — do NOT re-implement them here.
When `/brainstorm` returns, you own the lifecycle decision (the brainstorm skill deliberately leaves it to you):
- If the synthesized round answers cover everything → call `chorus_validate_elaboration` with `issues: []` to resolve elaboration.
- If gaps remain → call `chorus_validate_elaboration` with `issues + followUpQuestions` to start a structured Round 2. Pick the depth yourself — do NOT re-prompt the user.
Either outcome ends Step 4.5; skip Step 5.
### Step 5: Elaborate on the Idea
**Every Idea should go through elaboration.** Elaboration improves Proposal quality and reduces rejection cycles.
#### Elaboration Depth
Determine depth based on idea complexity:
- `"minimal"` — 2-4 questions (small features, minor enhancements)
- `"standard"` — 5-10 questions (typical new features)
- `"comprehensive"` — 10-15 questions (large features, architectural changes)
#### Question Categories
`functional`, `non_functional`, `business_context`, `technical_context`, `user_scenario`, `scope`
#### Starting an Elaboration Round
> **Note:** Do NOT include an "Other" option in your questions. The UI automatically adds a free-text "Other" option to every question.
```
chorus_start_elaboration({
ideaUuid: "<idea-uuid>",
depth: "standard",
questions: [
{
id: "q1",
text: "What user roles should have access to this feature?",
category: "functional",
options: [
{ id: "a", label: "All users" },
{ id: "b", label: "Admin only" },
{ id: "c", label: "Role-based (configurable)" }
]
},
{
id: "q2",
text: "What is the expected data volume?",
category: "non_functional",
options: [
{ id: "a", label: "Low (<1000 records)" },
{ id: "b", label: "Medium (1K-100K records)" },
{ id: "c", label: "High (>100K records)" }
]
}
]
})
```
This triggers an `elaboration_requested` SSE event to stakeholders.
#### Submitting Answers
When answers arrive (via `elaboration_answered` SSE wake event or manual flow):
```
chorus_answer_elaboration({
ideaUuid: "<idea-uuid>",
roundUuid: "<round-uuid>",
answers: [
{ questionId: "q1", selectedOptionId: "c", customText: null },
{ questionId: "q2", selectedOptionId: null, customText: "Custom hybrid approach" }
]
})
```
Answer format:
- **Select an option**: `selectedOptionId: "a", customText: null`
- **Select an option + add a note**: `selectedOptionId: "a", customText: "additional context"`
- **Choose "Other" (free text)**: `selectedOptionId: null, customText: "your answer"` — customText is required when no option is selected
#### @Mention Workflow After Answers
After answers are submitted, **@mention the answerer** with a summary of your understanding. This prevents misinterpretation before you validate.
1. **Get mentionable info:**
```
chorus_search_mentionables({ query: "owner-name" })
```
2. **Post a summary comment** on the idea:
```
chorus_add_comment({
targetType: "idea",
targetUuid: "<idea-uuid>",
content: "@[Owner Name](user:owner-uuid) I've reviewed the elaboration answers. Here's my understanding:\n\n- Key requirement 1: ...\n- Key requirement 2: ...\n\nDoes this match your intent?"
})
```
3. **Wait for confirmation** via comments or a `mentioned` SSE event.
4. **Based on the response:**
- **Confirmed** — Proceed to validate with empty issues
- **Additions/corrections** — Incorporate feedback, optionally start a follow-up round
- **Unclear** — Ask clarifying questions via another comment
#### Validating the Elaboration
`chorus_validate_elaboration` is the **single commit gate for the entire elaboration phase**, NOT a per-round close. Calling it with `issues: []` resolves the whole elaboration (sets `idea.elaborationStatus = "resolved"`); calling it with `issues + followUpQuestions` opens a new round while keeping elaboration in progress. Do not call validate after every round — call it once when you believe elaboration is done, or when you want to start a follow-up round.
When answers are satisfactory:
```
chorus_validate_elaboration({
ideaUuid: "<idea-uuid>",
roundUuid: "<round-uuid>",
issues: []
})
```
If issues are found (contradictions, ambiguities, incomplete answers), include them and provide follow-up questions for a new round:
```
chorus_validate_elaboration({
ideaUuid: "<idea-uuid>",
roundUuid: "<round-uuid>",
issues: [
{ questionId: "q1", type: "ambiguity", description: "Role-based access selected but no roles defined" }
],
followUpQuestions: [
{
id: "fq1",
text: "Which specific roles should have access?",
category: "functional",
options: [
{ id: "a", label: "Admin + Editor" },
{ id: "b", label: "All authenticated users" }
]
}
]
})
```
This starts a new elaboration round, triggering another `elaboration_requested` event. The cycle repeats until all issues are resolved.
**Validation issue types:** `contradiction`, `ambiguity`, `incomplete`
#### Multi-Round Elaboration
Complex ideas may require multiple rounds:
1. Round 1: Broad scoping questions (functional, scope)
2. Round 2: Follow-up on ambiguous answers (technical_context)
3. Round 3: Final confirmation of edge cases (user_scenario)
Each round preserves the full history. Use `chorus_get_elaboration` at any time to see all rounds and their status.
#### Checking Elaboration Status
```
chorus_get_elaboration({ ideaUuid: "<idea-uuid>" })
```
Returns all rounds, questions, answers, and a progress summary.
---
## Tips
- When combining multiple ideas, explain how they relate in the proposal description
- Elaboration improves Proposal quality — run it for all non-trivial ideas
- Record decisions made in conversation as elaboration rounds for auditability
- Always @mention the owner to confirm understanding before validating
- SSE events mean you do not need to poll — the plugin wakes you when action is needed
---
## Next
- Once elaboration is resolved, use `/proposal` to create a Proposal with document and task drafts
- For platform overview and shared tools, see `/chorus`
More from Chorus-AIDLC/Chorus
- blogWrite release blog posts for Chorus — problem-first narrative, bilingual (zh/en), following the project's editorial style.
- brainstorm-chorusOptional divergent-then-convergent dialogue for fuzzy ideas. Invoked from the 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 validates elaboration.
- chorusChorus AI Agent collaboration platform — overview, tools, and workflow routing.
- chorus-proposal-reviewerRead-only Chorus proposal reviewer. Fetches a proposal via MCP, audits PRD/task drafts against the originating Idea, and posts a structured VERDICT comment. Invoke by mounting this skill into a default sub-agent via spawn_agent(agent_type="default", items=[{ type: "skill", path: "chorus:chorus-proposal-reviewer", ... }, { type: "text", text: "Review proposal <uuid>. Max review rounds: 3." }]).
- chorus-task-reviewerRead-only Chorus task reviewer. Fetches a task plus its acceptance criteria plus originating proposal documents via MCP, independently verifies the implementation, and posts a structured VERDICT comment. Invoke by mounting this skill into a default sub-agent via spawn_agent(agent_type="default", items=[{ type: "skill", path: "chorus:chorus-task-reviewer", ... }, { type: "text", text: "Review task <uuid>. Max review rounds: 3." }]).
- developChorus Development workflow — claim tasks, report work, and submit for verification.
- develop-chorusChorus Development workflow — claim tasks, report work, self-check acceptance criteria, and submit for verification.
- idea-chorusChorus Idea workflow — claim ideas, run elaboration rounds, and prepare for proposal creation.
- openspec-apply-changeImplement tasks from an OpenSpec change. Use when the user wants to start implementing, continue implementation, or work through tasks.
- openspec-archive-changeArchive a completed change in the experimental workflow. Use when the user wants to finalize and archive a change after implementation is complete.