Cold Outbound Optimizer
ericosiu/ai-marketing-skills
Design, analyze, and optimize cold outbound email campaigns for Instantly.
Chorus Idea workflow on Hermes — claim ideas, run elaboration rounds (asked in chat, or via @mention when Chorus wakes the gateway), and prepare for proposal creation.
$ npx skills add Chorus-AIDLC/Chorus --skill idea -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Chorus-AIDLC/Chorus idea --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/Chorus-AIDLC/Chorus.git skills-src && mkdir -p .claude/skills && cp -r skills-src/packages/chorus-hermes/chorus/skills/idea .claude/skills/idea && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "idea" agent skill from https://github.com/Chorus-AIDLC/Chorus/tree/main/packages/chorus-hermes/chorus/skills/idea into .claude/skills/idea/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "idea", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/Chorus-AIDLC/Chorus/tree/main/packages/chorus-hermes/chorus/skills/ideaType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add Chorus-AIDLC/Chorus --skill idea -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Chorus-AIDLC/Chorus idea --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Chorus-AIDLC/Chorus.git skills-src && mkdir -p .agents/skills && cp -r skills-src/packages/chorus-hermes/chorus/skills/idea .agents/skills/idea && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "idea" agent skill from https://github.com/Chorus-AIDLC/Chorus/tree/main/packages/chorus-hermes/chorus/skills/idea into .agents/skills/idea/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "idea", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Chorus-AIDLC/Chorus --skill idea -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Chorus-AIDLC/Chorus idea --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Chorus-AIDLC/Chorus.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/packages/chorus-hermes/chorus/skills/idea .cursor/skills/idea && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "idea" agent skill from https://github.com/Chorus-AIDLC/Chorus/tree/main/packages/chorus-hermes/chorus/skills/idea into .cursor/skills/idea/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "idea", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/Chorus-AIDLC/Chorus.git --path packages/chorus-hermes/chorus/skills/idea--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add Chorus-AIDLC/Chorus --skill idea -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Chorus-AIDLC/Chorus idea --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Chorus-AIDLC/Chorus.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/packages/chorus-hermes/chorus/skills/idea .gemini/skills/idea && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "idea" agent skill from https://github.com/Chorus-AIDLC/Chorus/tree/main/packages/chorus-hermes/chorus/skills/idea into .gemini/skills/idea/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "idea", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install Chorus-AIDLC/Chorus ideaInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add Chorus-AIDLC/Chorus --skill idea -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/Chorus-AIDLC/Chorus.git skills-src && mkdir -p .github/skills && cp -r skills-src/packages/chorus-hermes/chorus/skills/idea .github/skills/idea && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "idea" agent skill from https://github.com/Chorus-AIDLC/Chorus/tree/main/packages/chorus-hermes/chorus/skills/idea into .github/skills/idea/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "idea", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Chorus-AIDLC/Chorus --skill idea -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Chorus-AIDLC/Chorus idea --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Chorus-AIDLC/Chorus.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/packages/chorus-hermes/chorus/skills/idea .opencode/skills/idea && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "idea" agent skill from https://github.com/Chorus-AIDLC/Chorus/tree/main/packages/chorus-hermes/chorus/skills/idea into .opencode/skills/idea/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "idea", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
ideaChorus Idea workflow on Hermes — claim ideas, run elaboration rounds (asked in chat, or via @mention when Chorus wakes the gateway), and prepare for proposal creation.
Idea is an agent skill from Chorus-AIDLC/Chorus. Chorus Idea workflow on Hermes — claim ideas, run elaboration rounds (asked in chat, or via @mention when Chorus wakes the gateway), and prepare for proposal creation.
Its SKILL.md is about 7.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Sales & Support. The repository describes itself as: The Agent Harness for AI-Human Collaboration, inspired by the AI-DLC (AI-Driven Development Lifecycle). The licence is AGPL-3.0.
8 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 37d62d9. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md.
From the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
github.comnext-intl.devFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Idea loads about 7.2k tokens when it runs. Until then it costs about 43 tokens; SKILL.md has 3,507 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from Chorus-AIDLC/Chorus at commit 37d62d9, republished under its AGPL-3.0 licence (© Chorus-AIDLC). 3,507 words, ~7,249 tokens.
.claude/skills/idea/SKILL.md (or your agent's skills folder).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.
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 the proposal skill (skill_view("chorus:proposal")) to create a Proposal with document and task drafts.
Idea status lifecycle (3 stored states):
open --> elaborating --> elaboratedAll post-elaboration progress (planning, building, verifying, done) is derived from the state of linked Proposals and Tasks. No agent should set Idea status directly beyond elaboration -- all transitions are side-effects of claiming, releasing, or completing elaboration.
Idea Management:
| Tool | Purpose |
|---|---|
chorus_pm_create_idea | Create a new idea in a project (on behalf of humans). Optional parentUuid derives a child idea from an existing same-project idea (single-parent lineage). |
chorus_edit_idea | Edit an existing idea's title, description, and/or lineage parent. parentUuid: another same-project idea to reparent under, null to detach to top-level, omit to leave unchanged (cycle-checked + same-project). Single-parent weak lineage — a parent shows a read-only +N derived rollup but never blocks either idea's flow. Records an "edited" activity and signals presence. |
chorus_claim_idea | Claim an open idea (open -> elaborating) |
chorus_release_idea | Release a claimed idea (elaborating -> open) |
chorus_pm_assign_idea | Assign an idea to an agent (must hold idea:write) or a user, on a human's behalf — the counterpart to chorus_claim_idea (self-claim). Silently takes over any existing assignee; an open idea moves to elaborating, any other status is preserved. Optional instanceUuid pins an agent assignment to a specific AgentInstance (agent-only) — but a project-fixed cwd target configured for the owner takes precedence and supplies the instance automatically, overriding instanceUuid. Assigning a new owner wakes it best-effort (offline still persists the assignment); re-assigning the same owner may update its pin/cwd but is wake-deduplicated. Assigning to a user notifies them with no daemon wake. Requires idea:admin. |
chorus_move_idea | Move an Idea to a different Project. Cascade-migrates the Idea and its full lineage subtree (all descendant Ideas; the moved root is detached from any parent left behind), all linked Proposals (any status), all materialized Documents and Tasks, and all related Activities atomically. Comments, TaskDependency, AcceptanceCriterion, AgentSession, SessionTaskCheckin, Notification history, and Task assignees are NOT modified. Returns moved: { ideas, proposals, documents, tasks, activities } counts. Requires idea:write only — no project-level checks. |
Requirements Elaboration:
| Tool | Purpose |
|---|---|
chorus_pm_start_elaboration | Generate an elaboration round (first, follow-up, or appended-after-resolution) |
chorus_pm_validate_elaboration | Mark the whole elaboration complete (requires idea:admin; requires human confirmation first) — callable by the Idea's assignee, or by a non-assignee idea:admin caller acting as a resolve gateway (wakes the assignee) |
chorus_pm_skip_elaboration | Skip elaboration for trivially clear Ideas |
chorus_answer_elaboration | Submit answers for an elaboration round (roundUuid optional — auto-locates the active round) |
chorus_get_elaboration | Get full elaboration state (rounds, questions, answers) |
Shared tools (checkin, query, comment, search, notifications): see the overview skill (skill_view("chorus:chorus"))
Hermes has no interactive question widget, so every human question in this skill goes through Chorus. First decide which mode the current turn is in:
hermes gateway, platform chorus: idea assigned, elaboration answered, @mention, comment added), in the session keyed idea:<ideaUuid>; or, more generally, no human is reading the chat.Then route each kind of question:
| Question kind | Interactive mode | Gateway mode |
|---|---|---|
| Structured questions (elaboration rounds) | Create the round with chorus_pm_start_elaboration, then list its questions in chat — numbered, lettered options, your recommended option marked. Record the replies with chorus_answer_elaboration. The human may answer in the Chorus UI instead; check chorus_get_elaboration before re-asking. | Create the round, then post one chorus_add_comment on the Idea that @mentions the owner and points to the pending round. END THE TURN. Do not poll. The gateway wakes you when the round is answered or the owner replies. |
| Yes/no permission or confirmation (brainstorm opt-in, permission to skip elaboration, confirming your understanding before resolving) | Ask in chat and wait for the reply. | Post a chorus_add_comment on the Idea that @mentions the owner and states the question; END THE TURN; act on the reply when woken. |
Owner mention: take the owner from the ## Checkin block that the Chorus Hermes plugin's pre_llm_call check-in injected (or call chorus_checkin(); the owner is agent.owner), and write it as @[Owner Name](user:<ownerUuid>). If needed, look it up with chorus_search_mentionables({ query: "owner-name" }).
On wake: successive wakes for one Idea share the idea:<ideaUuid> session, but context may have been compressed. Re-read chorus_get_elaboration and chorus_get_comments to recover where you were before continuing.
Never answer on the human's behalf (yolo mode, which self-answers by design, is the only exception).
When the current instruction is an explicit Tracker Research action, route directly to the research skill (skill_view("chorus:research"), research-only contract) and the result-saving rules in Step 4.45. Check current authoritative development eligibility before executing. This branch bypasses the normal claim and elaboration sequence below: preserve the existing Idea, root session, pending questions, answers, resolution, proposal approval and task states. Save findings to the latest Idea body with real citations and report, then return. If development has begun, report the changed stage without researching or editing. Record impacts on approved scope as follow-up in the Idea; do not mutate locked proposals.
The Chorus Hermes plugin already ran chorus_checkin on the first turn of this session (and again after /reset or context compression) and injected the result as ## Checkin. Call it again whenever you need fresh data:
chorus_checkin()Review your persona, current assignments, and pending work counts.
chorus_get_available_ideas({ projectUuid: "<project-uuid>" })Or check existing assignments:
chorus_get_my_assignments()In gateway mode the wake itself usually names the Idea (an idea-assigned notification); start from that Idea.
Claiming automatically transitions the Idea to elaborating status:
chorus_claim_idea({ ideaUuid: "<idea-uuid>" })(Skip this when the Idea is already assigned to you, e.g. you were woken by an assignment.)
Before elaborating, understand the full picture:
Read the idea in detail:
chorus_get_idea({ ideaUuid: "<idea-uuid>" })Read existing project documents (for context, tech stack, conventions):
chorus_get_documents({ projectUuid: "<project-uuid>" })
chorus_get_document({ documentUuid: "<doc-uuid>" })Review past proposals (to understand patterns and standards):
chorus_get_proposals({ projectUuid: "<project-uuid>", status: "approved" })Check existing tasks (to avoid duplication):
chorus_list_tasks({ projectUuid: "<project-uuid>" })Read comments on the idea for additional context:
chorus_get_comments({ targetType: "idea", targetUuid: "<idea-uuid>" })Make attaching external references a reflex, not an afterthought. While gathering context you will often surface external links that are evidence for this Idea — a precedent issue or PR, a reference implementation, official documentation, a paper or blog post. The moment you see one, attach it as a reference artifact. References are read back inline by chorus_get_idea / chorus_get_proposal / chorus_get_task, so they carry the "why" forward to whoever picks up the proposal or task next.
Prefer attaching at creation time via the inline references[] param on chorus_pm_create_idea (and later chorus_pm_create_proposal / chorus_create_tasks) rather than a post-hoc chorus_add_reference. Attaching at create means the evidence is present from the first read; use chorus_add_reference only when the link surfaces after the entity already exists.
Pick the type that fits the link:
type | Use for |
|---|---|
docs | Official documentation — framework / API / library reference |
repo | A reference implementation or source repository |
issue_pr | An issue or pull-request thread — precedent, prior art, the delivering PR |
paper_blog | A paper or blog post — background or design rationale |
Example — a new localization Idea, attaching the precedent PR and the framework docs inline at creation:
chorus_pm_create_idea({
projectUuid: "<project-uuid>",
title: "Add Portuguese (pt) locale",
content: "...",
references: [
{ type: "issue_pr", url: "https://github.com/org/repo/pull/411",
title: "PR #411 — prior locale work (precedent to mirror)" },
{ type: "docs", url: "https://next-intl.dev/docs/routing",
title: "next-intl routing docs (locale registration)" }
]
})Before the first formal clarification round, delegate factual checks to the research skill (skill_view("chorus:research"), shared rules). Supply the Idea stage, focused question, current body and evidence, user intent and budget. This applies equally to conversational, form-created and MCP-created Ideas; it does not depend on a Checkbox or daemon flag. Follow the shared trigger/skip and re-entry rules. If the direction is still fuzzy, use the existing focusing/brainstorm choice first; once focused, apply these rules before synthesizing formal questions.
Consume useful findings by reusing existing References or attaching new sources with chorus_add_reference (the Idea already exists). Use its returned reference uuid, or read chorus_get_idea().references[].uuid; the Idea UUID is not an evidence UUID. Re-read the latest Idea body, merge facts and implications while preserving user text, and save with chorus_edit_idea, citing relevant statements as [1](ref:<actual-reference-uuid>). Keep uncertainty explicit; empty/unavailable results do not need invented citations. Then continue the existing elaboration/decomposition flow and human gates. Returning from brainstorm consumes any returned findings here without searching again.
If the Idea is fuzzy and you'd struggle to enumerate concrete multi-choice questions, offer the user a brainstorm prelude before structured elaboration. Ask once, as a yes/no question with two choices: "Already clear, run structured elaboration" and "Brainstorm first to explore directions".
Interactive mode: ask in chat, e.g. "This Idea is still fuzzy. (a) It's already clear, run structured elaboration, or (b) brainstorm first to explore directions?" and wait for the reply.
Gateway mode: post one comment on the Idea and end the turn:
chorus_add_comment({
targetType: "idea",
targetUuid: "<idea-uuid>",
content: "@[Owner Name](user:<owner-uuid>) Before I elaborate this Idea: should I (a) run structured elaboration now — it's already clear — or (b) brainstorm first to explore directions? Reply a or b."
})Act on the reply when the gateway wakes you. Do not start brainstorming or elaborating before the reply arrives.
"Already clear": Skip to Step 5.
"Brainstorm first": Load the brainstorm skill (skill_view("chorus:brainstorm")) and follow it. See that skill for the dialogue cadence (one question at a time — a chat question, or a single-question round in gateway mode) and synthesis rules — do NOT re-implement them here.
When the brainstorm skill returns, you own the lifecycle decision (the brainstorm skill deliberately leaves it to you):
chorus_pm_validate_elaboration to resolve the elaboration. (Resolve needs idea:admin — see the permission note in Step 5, item 6 if your key is pm_agent-preset; a non-assignee idea:admin caller can also resolve as a gateway, which wakes the assignee.)chorus_pm_start_elaboration again to open a structured Round 2. Pick the depth yourself — do NOT re-prompt the user about depth.Either outcome ends Step 4.5; skip Step 5's first round (continue with the confirm/resolve loop of Step 5, items 3-6, for any Round 2).
Every Idea should go through elaboration. Skip only when requirements are completely unambiguous (e.g., bug fix with clear steps). Elaboration improves Proposal quality and reduces rejection cycles.
You may skip elaboration, but you MUST ask the user for permission first before calling chorus_pm_skip_elaboration. Never skip on your own judgment alone.
<reason>. May I skip elaboration?") and wait for an explicit yes.Once permission is granted:
chorus_pm_skip_elaboration({
ideaUuid: "<idea-uuid>",
reason: "Bug fix with clear reproduction steps"
})Elaboration is a loop, not a straight line. Steps 2–5 below are one round. Keep looping back to
chorus_pm_start_elaboration(a new round) until every open question is settled, then resolve once in Step 6. You re-enter the loop whenever:
- the answers to a round derive new questions or surface a contradiction/gap, or
- at the resolve gate (Step 5d / Step 6) the human raises a new concern or correction.
Each new round is just another
chorus_pm_start_elaborationcall — there is no separate "follow-up" flag, and you do not resolve until the loop is genuinely done. Round cap is 10.
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)Create elaboration questions:
Note: Do NOT include an "Other" option in your questions. The UI automatically adds a free-text "Other" option to every question.
chorus_pm_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)" }
]
}
]
})Present questions to the human — through Chorus, never as an unrecorded side conversation. The round you just created is the record; how you reach the human depends on the mode:
Interactive mode — list every question of the round in chat, numbered, with lettered options matching the option ids, and mark your recommended option:
Elaboration round 1 (also visible in the Chorus elaboration panel):
1. Which new locales should be prioritized for V1? [scope]
a) Japanese only — single locale for initial release (Recommended)
b) Japanese + Korean — two East Asian locales
2. ...
Reply like "1a, 2c", or write your own answer for any question.After the human replies, map their choices back to option IDs and call chorus_answer_elaboration. If they wrote their own answer ("Other"), set selectedOptionId: null and customText to their input. If they say they answered in the Chorus UI, read chorus_get_elaboration instead of re-asking.
Gateway mode — post one pointer comment, then end the turn:
chorus_add_comment({
targetType: "idea",
targetUuid: "<idea-uuid>",
content: "@[Owner Name](user:<owner-uuid>) Elaboration round 1 (<n> questions) is ready for you in the Idea's elaboration panel. Key open points: <one line>."
})Do not poll. When the gateway wakes you (elaboration answered), read the answers with chorus_get_elaboration and continue with item 5. The human answering in the UI submits the answers, so skip item 4 in that case.
Submit answers (interactive mode, from the chat replies):
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:
selectedOptionId: "a", customText: nullselectedOptionId: "a", customText: "additional context"selectedOptionId: null, customText: "your answer" — customText is required when no option is selected
roundUuidis optional onchorus_answer_elaboration. Omit it and the service auto-locates the Idea's single active (pending_answers) round. Pass it explicitly only when you need to target a specific round.
Review answers and confirm with the owner (@mention flow):
After answers are submitted, @mention the answerer (typically the agent's owner) with a summary of your understanding. This prevents misinterpretation before you resolve.
a. Get owner info from the injected ## Checkin / chorus_checkin response (agent.owner) or search:
chorus_search_mentionables({ query: "owner-name" })b. Post a summary comment on the idea (in both modes — it is the audit trail of the confirmation):
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?"
})c. Wait for confirmation.
d. Based on the response — this is the loop decision point:
chorus_pm_validate_elaboration.chorus_pm_start_elaboration capturing the new questions, collect answers (Steps 2–5 again), and re-confirm. Repeat until the human has no remaining concerns.chorus_pm_start_elaboration for another round before resolving.Resolve the elaboration (the single commit gate — only when the loop is done):
Resolving marks the whole elaboration phase complete — it sets idea.elaborationStatus = "resolved" (Idea → elaborated), which is the gating signal that lets a downstream Proposal be submitted. It is an Idea-level action (takes only ideaUuid, does not target a round). Resolve once, only after the Step 5d loop has fully settled — every derived question answered and the human has no remaining concerns. If anything is still open, go back to chorus_pm_start_elaboration instead of resolving.
Precondition: resolve requires the Idea to have at least one round and every round to be fully answered (none left in
pending_answers). If a round still has open questions, answer it (or it'll be rejected).
⚠️ Human confirmation required. Outside YOLO automation you MUST obtain explicit human confirmation before resolving. The "Confirmed" reply in step 5d above counts as that confirmation. Never resolve on your own judgment alone.
Permission (N1):
chorus_pm_validate_elaborationrequiresidea:admin. Thepm_agentpreset only grantsidea:write, so a PM-preset agent cannot resolve — it must hand off to anadmin_agent-preset agent (or an admin-preset API key) to perform the resolve. If your key lacksidea:admin, surface this to the human (in chat, or via an @mention comment) and request the handoff instead of failing silently.
Assignee OR idea:admin gateway (N2): the resolving actor may be the Idea's assignee, OR a non-assignee holding
idea:adminacting as a resolve gateway (a Chorus permission concept, unrelated tohermes gateway). A gateway resolve (or skip viachorus_pm_skip_elaboration) is the MCP analogue of the human UI Verify-Elaborate: it logs anelaboration_verifiedactivity that wakes the Idea's assignee agent to write the proposal. So an orchestrator/admin no longer needs to claim/reassign the Idea to resolve it — holdingidea:adminis enough. (Assignee self-resolve/skip is unchanged and wakes no one.)
chorus_pm_validate_elaboration({
ideaUuid: "<idea-uuid>"
})Want a follow-up round instead of resolving? Just call chorus_pm_start_elaboration again — there is no separate "open a round" flag. It works while still elaborating (a normal follow-up round) and, after you've already resolved, as an appended round (isAppended: true) that keeps the Idea elaborated and never blocks an in-flight Proposal. Per-question issue tagging no longer exists.
Check elaboration status at any time:
chorus_get_elaboration({ ideaUuid: "<idea-uuid>" })Elaboration as audit trail: Even if the user discusses requirements with you outside the formal elaboration flow (for example in a Hermes chat), record key decisions as elaboration rounds so they are persisted and visible to the team.
Question categories: functional, non_functional, business_context, technical_context, user_scenario, scope
Ideas can form a single-parent forest: an idea may have one parent (parentUuid), establishing a weak lineage. "Weak" means the parent only shows a read-only +N derived rollup of its direct children — it never blocks or alters either idea's elaboration/proposal/task flow, and a parent is always a full first-class idea (it can have its own content, proposals, and tasks).
When a new direction surfaces (during elaboration, brainstorm, or review), decide where it belongs:
chorus_pm_create_idea with parentUuid, or chorus_edit_idea with parentUuid to reparent an existing idea) when the new direction needs its own elaboration/proposal lifecycle — it is an independent AI-DLC pass.parentUuid) when there is no lineage to the current idea.This is a soft heuristic, not a rule — use judgment. Cycle prevention is automatic: you cannot set a parent that is the idea itself or one of its descendants. Parent and child must be in the same project (cross-project lineage is not supported yet). Deleting a parent re-parents its children to top-level (it never cascades).
A theme is an idea that only groups related children under a shared direction — it is not a deliverable itself. Set isContainer: true on chorus_pm_create_idea / chorus_edit_idea (or the detail-panel toggle) to make one; it is freely reversible. The one rule that matters: a theme cannot create a proposal — to deliver its direction, derive a child idea (parentUuid = <theme>) and write the proposal on the child. A theme may still elaborate (its elaboration is shared context for children), and its status/progress rolls up from its children. Everything else is self-documented on the tool params.
When a theme is created via the conversational "help me break this into child ideas" entry, don't create children immediately — propose then create: (1) edit the theme + optionally one short scope-elaboration round; (2) propose the candidate children as an elaboration round (chorus_pm_start_elaboration), one single-select question per candidate, for the user to accept/decline in the panel (in gateway mode, post the @mention pointer comment and end the turn); (3) on the answer re-wake, create each accepted child with chorus_pm_create_idea (parentUuid = <theme>, left in open).
skill_view("chorus:proposal")) to create a Proposal with document and task draftshermes gateway) to write the proposal — so the woken agent picks up this idea→proposal handoff automatically (no human-authored proposal needed).start_development wake means: claim and execute ALL remaining tasks of the idea's approved proposal in dependency order until none are claimable — not just one task.yolo_requested wake means: drive the WHOLE idea to done via the yolo skill (skill_view("chorus:yolo"), the full-auto AI-DLC pipeline) — read the idea's current state first and resume from whatever phase it is in (self-elaborate + write the proposal if not yet resolved; execute if a proposal is approved with open tasks; etc.), never assuming a fixed stage. Complete through done + the completion report, but never merge or push a PR without explicit human approval.skill_view("chorus:chorus")© Chorus-AIDLC, AGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in packages/chorus-hermes/chorus/skills/idea of Chorus-AIDLC/Chorus.
Open the folder on GitHubat commit 37d62d9
Idea next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Idea this skillChorus-AIDLC/Chorus | 1.2k | — | ~7.2k | Automated safety check: Pass | AGPL-3.0 | |
| Cold Outbound Optimizerericosiu/ai-marketing-skills | 3.6k | 1 repos | ~1.7k | Automated safety check: Pass | MIT | |
| Doc Coauthoringaws-samples/sample-strands-agent-with-agentcore | 195 | 40 repos | ~3.2k | Automated safety check: Pass | MIT | |
| Amazon Buy Box Monitorbrowser-act/skills | 6.1k | 1 repos | ~1.6k | Automated safety check: Pass | MIT | |
| Review Analysisliangdabiao/amazon-sorftime-research-MCP-skill | 959 | 1 repos | ~2.5k | Automated safety check: Pass | None | |
| Deskcomm Extensaomelgarafael/DeskcommCRM | 4.5k | — | ~2.7k | Automated safety check: Pass | MIT |
ericosiu/ai-marketing-skills
Design, analyze, and optimize cold outbound email campaigns for Instantly.
aws-samples/sample-strands-agent-with-agentcore
Guide users through a structured workflow for co-authoring documentation.
browser-act/skills
Pulls Amazon product details, competing seller prices and seller ratings for a given ASIN through the BrowserAct API, without browser automation.
liangdabiao/amazon-sorftime-research-MCP-skill
对亚马逊商品评论进行深度分析,自动识别产品痛点、分析退货原因,生成改进建议和客服回复模板。Invoke when user uses /review-analysis command with a product ASIN.
melgarafael/DeskcommCRM
Guia para criar uma extensão do DeskcommCRM — o pacote declarativo — em vez de abrir um PR no núcleo.
tourmind-com/Tourmind-Booking-Skills
MUST USE for any hotel or accommodation intent in any language, including hotel search, hotel recommendations, nearby accommodation, hostels, guesthouses, resorts, where-to-stay questions, room…
Chorus-AIDLC/Chorus
A skill your agent uses when manually verifying a Chorus frontend change in a real browser — finding local login credentials, driving the running dev server with the Playwright MCP, logging in…
Chorus-AIDLC/Chorus
Write release blog posts for Chorus — problem-first narrative, bilingual (zh/en), following the project's editorial style.
Chorus-AIDLC/Chorus
Optional divergent-then-convergent dialogue for fuzzy ideas on Hermes.
Chorus-AIDLC/Chorus
Optional divergent-then-convergent dialogue for fuzzy ideas.
Chorus-AIDLC/Chorus
Optional divergent-then-convergent dialogue for fuzzy ideas.
Chorus-AIDLC/Chorus
Optional divergent-then-convergent dialogue for fuzzy ideas.
Categories
Chorus Idea workflow on Hermes — claim ideas, run elaboration rounds (asked in chat, or via @mention when Chorus wakes the gateway), and prepare for proposal creation. Idea is an agent skill from Chorus-AIDLC/Chorus. Chorus Idea workflow on Hermes — claim ideas, run elaboration rounds (asked in chat, or via @mention when Chorus wakes the gateway), and prepare for proposal creation.
Idea fits situations like: sales & Support work in your project.
Run `npx skills add Chorus-AIDLC/Chorus --skill idea -a claude-code`. Or copy the skill folder (packages/chorus-hermes/chorus/skills/idea in Chorus-AIDLC/Chorus) into .claude/skills/idea in your project. Claude Code loads it when a task matches its description.
Run `npx skills add Chorus-AIDLC/Chorus --skill idea -a codex`. Or copy the skill folder (packages/chorus-hermes/chorus/skills/idea in Chorus-AIDLC/Chorus) into .agents/skills/idea in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Chorus-AIDLC/Chorus --skill idea -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/idea, .gemini/skills/idea, .github/skills/idea and .opencode/skills/idea in your project.
SKILL.md names no scripts, command-line tools or credentials: Idea is instructions for the agent only.
SKILL.md names 2 domains. In commands or code: github.com and next-intl.dev; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Idea is published under the AGPL-3.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 7.2k tokens (SKILL.md is roughly 29k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Idea: Cold Outbound Optimizer (ericosiu/ai-marketing-skills, 3.6k stars), Doc Coauthoring (aws-samples/sample-strands-agent-with-agentcore, 195 stars), Amazon Buy Box Monitor (browser-act/skills, 6.1k stars) and Review Analysis (liangdabiao/amazon-sorftime-research-MCP-skill, 959 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Chorus-AIDLC (a GitHub organization) maintains it in Chorus-AIDLC/Chorus, which has 1,192 GitHub stars. The repository holds 64 skills in this directory. The repository was last updated on October 9, 2026.
Source: Chorus-AIDLC/Chorus on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.