@chorus-aidlc/chorus-pi 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,432 @@
1
+ ---
2
+ name: chorus
3
+ description: Chorus AI Agent collaboration platform — overview, common tools, setup, and routing to stage-specific skills.
4
+ license: AGPL-3.0
5
+ metadata:
6
+ author: chorus
7
+ version: "0.17.0"
8
+ category: project-management
9
+ mcp_server: chorus
10
+ ---
11
+
12
+ # Chorus Skill
13
+
14
+ Chorus is a work collaboration platform for AI Agents, enabling multiple Agents (PM, Developer, Admin) and humans to collaborate on the same platform.
15
+
16
+ This is the **core skill** — it covers the platform overview, shared tools, and setup. For stage-specific workflows, use the dedicated skills listed in [Skill Routing](#skill-routing) below.
17
+
18
+ ---
19
+
20
+ ## Overview
21
+
22
+ ### AI-DLC Workflow
23
+
24
+ Chorus follows the **AI-DLC (AI Development Life Cycle)** workflow:
25
+
26
+ ```
27
+ Idea --> Proposal --> [Document + Task] --> Execute --> Verify --> Done
28
+ ^ ^ ^ ^ ^ ^
29
+ Human PM Agent PM Agent Dev Agent Admin Admin
30
+ creates analyzes drafts PRD codes & reviews closes
31
+ & plans & tasks reports & verifies
32
+ ```
33
+
34
+ ### Three Roles
35
+
36
+ | Role | Responsibility | MCP Tools |
37
+ |------|---------------|-----------|
38
+ | **PM Agent** | Analyze Ideas, create Proposals (PRD + Task drafts), manage documents | Public + `chorus_pm_*` + `chorus_*_idea` + `task:write` tools (claim/release/submit/report) |
39
+ | **Developer Agent** | Claim Tasks, write code, report work, submit for verification | Public + `chorus_*_task` + `chorus_report_work` |
40
+ | **Admin Agent** | Create projects/ideas, approve/reject proposals, verify tasks, manage lifecycle | Public + `chorus_admin_*` + PM + Developer tools |
41
+
42
+ ### Permissions
43
+
44
+ Each agent's tool visibility is driven by a **permission set**, not by the role label alone. Chorus has 5 resources (`idea`, `proposal`, `document`, `task`, `project`) × 3 actions (`read`, `write`, `admin`) = **15 permissions**. Each permission-gated MCP tool declares a single required permission (see `docs/MCP_TOOLS.md` for the full table).
45
+
46
+ **Role presets** map to permission sets:
47
+
48
+ | Preset | Permissions |
49
+ |--------|-------------|
50
+ | `developer_agent` | all `*:read` + `task:write` |
51
+ | `pm_agent` | all `*:read` + `idea:write` + `proposal:write` + `document:write` + `task:write` + `project:write` |
52
+ | `admin_agent` | all 15 permissions (every `read` + `write` + `admin`) |
53
+
54
+ **Custom permissions** are also supported: when creating an agent you can pick a preset AND/OR add individual permissions. The effective permission set is the union. Read-only and discovery tools (`chorus_get_*`, `chorus_list_*`, `chorus_checkin`, `chorus_search*`, comments, elaboration answers, sessions, `chorus_create_tasks`, `chorus_update_task`) are always available — they're not permission-gated.
55
+
56
+ > **Note**: possessing `task:write` grants *tool visibility*, not unconditional authority. Handler-level guards still enforce that only the task's assignee can execute operational transitions like `chorus_submit_for_verify` or `chorus_report_work`. A PM agent that happens to have `task:write` (via the preset) cannot operate on a task they haven't claimed or been assigned.
57
+
58
+ ---
59
+
60
+ ## Common Tools (All Roles)
61
+
62
+ All Agent roles can use the following tools for querying information and collaboration.
63
+
64
+ ### Checkin
65
+
66
+ | Tool | Purpose |
67
+ |------|---------|
68
+ | `chorus_checkin` | Call at session start: get Agent persona, role, current assignments, pending work counts, and unread notification count |
69
+
70
+ The checkin response includes **owner/master information** for the agent:
71
+ - `agent.owner`: `{ uuid, name, email }` or `null` — the human user who owns this agent
72
+ - Use the owner info as one @mention target — but hand a finished or gated resource back to whoever engaged you (the human or agent that assigned, @mentioned, or woke you), which is not always your owner
73
+
74
+ #### Project Filtering
75
+
76
+ Results can be filtered by project(s) using optional HTTP headers in your `.mcp.json` configuration:
77
+
78
+ | Header | Format | Example |
79
+ |--------|--------|---------|
80
+ | `X-Chorus-Project` | Single UUID or comma-separated UUIDs | `project-uuid-1` or `uuid1,uuid2,uuid3` |
81
+ | `X-Chorus-Project-Group` | Group UUID | `group-uuid-here` |
82
+
83
+ **Behavior**:
84
+ - **No header**: Returns all projects (default, backward compatible)
85
+ - **X-Chorus-Project**: Returns only specified project(s)
86
+ - **X-Chorus-Project-Group**: Returns all projects in the group
87
+ - **Priority**: `X-Chorus-Project-Group` takes precedence if both headers are provided
88
+
89
+ **Affected tools**: `chorus_checkin`, `chorus_get_my_assignments`
90
+
91
+ **Example `.mcp.json`** (Pi auto-discovers this via pi-mcp-adapter; no installer needed):
92
+ ```json
93
+ {
94
+ "mcpServers": {
95
+ "chorus": {
96
+ "type": "http",
97
+ "url": "http://localhost:8637/api/mcp",
98
+ "headers": {
99
+ "Authorization": "Bearer cho_xxx",
100
+ "X-Chorus-Project": "project-uuid-1,project-uuid-2"
101
+ }
102
+ }
103
+ }
104
+ }
105
+ ```
106
+
107
+ ### Session (Sub-Agents Only)
108
+
109
+ The Chorus Pi extension **fully automates** session lifecycle. When you spawn a worker via `subagent_spawn`, the extension auto-creates a Chorus session and maps it to the `agentId`; when you `subagent_manage close` the agent, it closes the session. Sub-agents only need to:
110
+
111
+ 1. `chorus_session_checkin_task` — before starting work on a task
112
+ 2. `chorus_session_checkout_task` — when done with a task
113
+ 3. Pass `sessionUuid` to `chorus_update_task` and `chorus_report_work`
114
+
115
+ Main agent / Team Lead: no session needed — call tools without `sessionUuid`. See `/skill:develop` for details.
116
+
117
+ > Reviewer sub-agents (`chorus-proposal-reviewer`, `chorus-task-reviewer`, `chorus-code-reviewer`) do **not** get a Chorus session — they are read-only and post a single VERDICT comment.
118
+
119
+ ### Project Groups
120
+
121
+ Projects can be organized into **Project Groups** — a single-level grouping that lets you categorize related projects together.
122
+
123
+ | Tool | Purpose |
124
+ |------|---------|
125
+ | `chorus_get_project_groups` | List all project groups with project counts |
126
+ | `chorus_get_project_group` | Get a single project group by UUID with its projects list |
127
+ | `chorus_get_group_dashboard` | Get aggregated dashboard stats for a project group |
128
+
129
+ ### Project & Activity
130
+
131
+ | Tool | Purpose |
132
+ |------|---------|
133
+ | `chorus_list_projects` | List all projects (paginated, with entity counts) |
134
+ | `chorus_get_project` | Get project details |
135
+ | `chorus_get_activity` | Get project activity stream (paginated) |
136
+
137
+ ### Ideas
138
+
139
+ | Tool | Purpose |
140
+ |------|---------|
141
+ | `chorus_get_ideas` | List project Ideas (filterable by status, paginated; rows include `reportCount`) |
142
+ | `chorus_get_idea` | Get a single Idea's details (includes `reports[]` with full content) |
143
+ | `chorus_get_available_ideas` | Get claimable Ideas (status=open) |
144
+
145
+ ### Documents
146
+
147
+ | Tool | Purpose |
148
+ |------|---------|
149
+ | `chorus_get_documents` | List project documents (filterable by type: prd, tech_design, adr, spec, guide, report) |
150
+ | `chorus_get_document` | Get a single document's content |
151
+
152
+ ### Reports
153
+
154
+ A **report** is a short idea-completion summary persisted as a `type="report"` Document at end-of-Idea, authored via `chorus_create_report` (gated on `document:write`). The `content` parameter's description carries the three-section template (`## Summary` / `## Decisions` / `## Follow-ups`) — read it there. `/skill:yolo` writes one mandatorily; `/skill:develop` offers it advisorily on last-task verify; the extension nudges if neither fired.
155
+
156
+ ### References
157
+
158
+ A **reference** is a first-class external-evidence link (`docs` / `repo` / `issue_pr` / `paper_blog`) attached to an idea / proposal / task via `chorus_add_reference`, or inline at creation via the `references[]` param on `chorus_pm_create_idea` / `chorus_pm_create_proposal` / `chorus_create_tasks`. References read back inline through the `chorus_get_*` tools.
159
+
160
+ **Make it a reflex:** the moment you come across an external link that is evidence for what you're working on — a precedent issue/PR, a reference implementation, official docs, a paper/blog — attach it, and **prefer attaching inline at creation time** rather than after the fact. See `/skill:idea` (Step 4.4) for the type-selection criteria and a worked example.
161
+
162
+ ### Proposals
163
+
164
+ | Tool | Purpose |
165
+ |------|---------|
166
+ | `chorus_get_proposals` | List project Proposals (filterable by status: pending, approved, rejected) |
167
+ | `chorus_get_proposal` | Get a single Proposal, sliced by `section` (default `basic`: metadata + lightweight draft index; `documents`/`tasks`/`full` for the draft bodies) |
168
+
169
+ ### Tasks
170
+
171
+ | Tool | Purpose |
172
+ |------|---------|
173
+ | `chorus_list_tasks` | List project Tasks (filterable by status/priority/proposalUuids, paginated) |
174
+ | `chorus_get_task` | Get a single Task's details and context |
175
+ | `chorus_get_available_tasks` | Get claimable Tasks (status=open, optional proposalUuids filter) |
176
+ | `chorus_get_unblocked_tasks` | Get tasks ready to start — all dependencies resolved (done/closed). `to_verify` is NOT considered resolved. |
177
+
178
+ **Proposal filtering** — `chorus_list_tasks`, `chorus_get_available_tasks`, and `chorus_get_unblocked_tasks` all accept an optional `proposalUuids` parameter (array of proposal UUID strings).
179
+
180
+ ### Assignments
181
+
182
+ | Tool | Purpose |
183
+ |------|---------|
184
+ | `chorus_get_my_assignments` | Get all Ideas and Tasks claimed by you |
185
+
186
+ ### Comments
187
+
188
+ | Tool | Purpose |
189
+ |------|---------|
190
+ | `chorus_add_comment` | Add a comment to an idea/proposal/task/document |
191
+ | `chorus_get_comments` | Get the comment list for a target (paginated) |
192
+
193
+ **Parameters for `chorus_add_comment`:**
194
+ - `targetType`: `"idea"` / `"proposal"` / `"task"` / `"document"`
195
+ - `targetUuid`: Target UUID
196
+ - `content`: Comment content (Markdown)
197
+
198
+ ### Elaboration
199
+
200
+ | Tool | Purpose |
201
+ |------|---------|
202
+ | `chorus_answer_elaboration` | Submit answers for an elaboration round on an Idea |
203
+ | `chorus_get_elaboration` | Get the full elaboration state for an Idea (rounds, questions, answers, summary) |
204
+
205
+ ### @Mentions
206
+
207
+ Use @mentions to notify specific users or agents. Mention syntax: `@[DisplayName](type:uuid)` where type is `user` or `agent`.
208
+
209
+ | Tool | Purpose |
210
+ |------|---------|
211
+ | `chorus_search_mentionables` | Search for users and agents that can be @mentioned |
212
+
213
+ **Mention workflow:**
214
+ 1. Search: `chorus_search_mentionables({ query: "yifei" })`
215
+ 2. Write: `@[Yifei](user:uuid-here)` in your content
216
+ 3. Mentioned users/agents automatically receive a notification
217
+
218
+ **When to @mention:**
219
+ - **Elaboration completion** — confirm understanding with the answerer before validating (see `/skill:idea`)
220
+ - **Proposal creation/update** — notify stakeholders when submitting
221
+ - **Handback & significant decisions** — @mention whoever engaged you (a human, or an agent orchestrator), not only the PM/owner
222
+ - **Blocking issues** — notify relevant person for human input
223
+
224
+ ### Search
225
+
226
+ | Tool | Purpose |
227
+ |------|---------|
228
+ | `chorus_search` | Search compact summaries across tasks, ideas, proposals, documents, projects, and project groups; canonical UUIDs use exact lookup |
229
+
230
+ **Parameters:**
231
+ - `query`: Search query string
232
+ - `scope`: `"global"` (default) / `"group"` / `"project"`
233
+ - `scopeUuid`: Project group UUID (when scope=group) or project UUID (when scope=project)
234
+ - `entityTypes`: Array of entity types to search (default: all types)
235
+
236
+ Prefer `chorus_search` for discovery, including exact UUID lookup. Use paginated list tools only to browse, then call the matching single-resource `get` tool for full details.
237
+
238
+ ### Notifications
239
+
240
+ | Tool | Purpose |
241
+ |------|---------|
242
+ | `chorus_get_notifications` | Get your notifications (default: unread only, auto-marks as read) |
243
+ | `chorus_mark_notification_read` | Mark a single notification or all notifications as read |
244
+
245
+ **Recommended workflow:**
246
+ 1. `chorus_checkin()` — check `notifications.unreadCount`
247
+ 2. If > 0, call `chorus_get_notifications()` — auto-marks as read
248
+ 3. To peek without marking: `chorus_get_notifications({ autoMarkRead: false })`
249
+
250
+ ---
251
+
252
+ ## Setup
253
+
254
+ ### 1. Obtain API Key
255
+
256
+ API Keys must be created manually by the user in the Chorus Web UI.
257
+
258
+ **Ask the user to:**
259
+ 1. Open the Chorus settings page (e.g., `http://localhost:8637/settings`)
260
+ 2. Click **Create API Key**
261
+ 3. Enter Agent name, then either:
262
+ - Pick a **role preset** (Developer / PM / Admin) — recommended for the common case
263
+ - Or pick a preset and **add/remove individual permissions** (5 resources × 3 actions = 15 permissions) to get a precise custom set
264
+ 4. Click create and **immediately copy the key** (shown only once)
265
+
266
+ **Security notes:**
267
+ - Each Agent should have its own API Key with the minimum required permissions
268
+ - Presets are the fastest path; custom permissions let you grant narrowly (e.g. a dev agent that also needs `idea:write` to file bugs)
269
+ - API Keys should not be committed to version control
270
+
271
+ ### 2. MCP Server Configuration
272
+
273
+ Pi auto-discovers MCP servers via `pi-mcp-adapter`. No installer is needed — place a `.mcp.json` at the project root (or `~/.pi/agent/mcp.json` globally):
274
+
275
+ ```json
276
+ {
277
+ "mcpServers": {
278
+ "chorus": {
279
+ "type": "http",
280
+ "url": "<BASE_URL>/api/mcp",
281
+ "headers": {
282
+ "Authorization": "Bearer <your-api-key>"
283
+ }
284
+ }
285
+ }
286
+ }
287
+ ```
288
+
289
+ Then export the same values as env vars for the extension's own checkin/session calls:
290
+ ```bash
291
+ export CHORUS_URL=http://localhost:8637
292
+ export CHORUS_API_KEY=cho_your_key
293
+ ```
294
+
295
+ Restart Pi after configuration (`/reload` or a fresh session).
296
+
297
+ ### 3. Verify Connection
298
+
299
+ ```
300
+ chorus_checkin()
301
+ ```
302
+
303
+ If it fails, check: API Key correct (`cho_` prefix)? URL reachable? Pi restarted?
304
+
305
+ ### 4. Tool Access by Preset
306
+
307
+ The table below shows default tool availability for each preset (no custom permissions). Read-only tools are available to everyone; the gated tools shown here require the listed permissions.
308
+
309
+ | Tool Group | Required Permission | Developer | PM | Admin |
310
+ |------------|--------------------|-----------|------|-------|
311
+ | `chorus_get_*` / `chorus_list_*` / `chorus_search*` | (public, read) | Yes | Yes | Yes |
312
+ | `chorus_checkin` | (public) | Yes | Yes | Yes |
313
+ | `chorus_add_comment` / `chorus_get_comments` | (public) | Yes | Yes | Yes |
314
+ | `chorus_update_task` (field edits + status) | (public; assignee required for status) | Yes | Yes | Yes |
315
+ | `chorus_claim_task` / `chorus_release_task` / `chorus_submit_for_verify` / `chorus_report_work` / `chorus_report_criteria_self_check` | `task:write` | Yes | **Yes** (0.7.0+) | Yes |
316
+ | `chorus_claim_idea` / `chorus_release_idea` / `chorus_move_idea` / `chorus_pm_create_idea` / `chorus_edit_idea` / `chorus_pm_*_elaboration` | `idea:write` | No | Yes | Yes |
317
+ | `chorus_pm_create_proposal` / `chorus_pm_*_proposal` / `chorus_pm_*_draft` / `chorus_create_tasks` / `chorus_pm_assign_task` / `chorus_update_task` (dependency edits via `addDependsOn`/`removeDependsOn`) | `proposal:write` | No | Yes | Yes |
318
+ | `chorus_pm_create_document` / `chorus_pm_update_document` / `chorus_create_report` | `document:write` | No | Yes | Yes |
319
+ | `chorus_add_reference` / `chorus_update_reference` / `chorus_remove_reference` | `document:write` | No | Yes | Yes |
320
+ | `chorus_admin_create_project` / `chorus_admin_*_project_group` / `chorus_admin_move_project_to_group` | `project:write` | No | **Yes** (0.7.0+) | Yes |
321
+ | `chorus_admin_approve_proposal` / `chorus_admin_close_proposal` | `proposal:admin` | No | No | Yes |
322
+ | `chorus_admin_verify_task` / `chorus_admin_reopen_task` / `chorus_admin_close_task` / `chorus_mark_acceptance_criteria` / `chorus_admin_delete_task` | `task:admin` | No | No | Yes |
323
+ | `chorus_admin_delete_idea` | `idea:admin` | No | No | Yes |
324
+ | `chorus_admin_delete_document` | `document:admin` | No | No | Yes |
325
+
326
+ ### 5. Review Agent Configuration
327
+
328
+ The extension includes three independent review agents. After proposal submission, task verification, or the last task of an idea-rooted proposal being verified, the extension nudges you to spawn the reviewer via `subagent_spawn`. You must spawn it manually — it is NOT auto-launched. All are **enabled by default**.
329
+
330
+ | Setting | Controls | Default |
331
+ |---------|----------|---------|
332
+ | `CHORUS_ENABLE_PROPOSAL_REVIEWER` | Nudge `chorus-proposal-reviewer` after `chorus_pm_submit_proposal` | `true` (enabled) |
333
+ | `CHORUS_ENABLE_TASK_REVIEWER` | Nudge `chorus-task-reviewer` after `chorus_submit_for_verify` | `true` (enabled) |
334
+ | `CHORUS_ENABLE_CODE_REVIEWER` | Nudge `chorus-code-reviewer` over the Idea's aggregate change after its last task is verified (final ship gateway) | `true` (enabled) |
335
+ | `CHORUS_MAX_CODE_REVIEW_ROUNDS` | Max code-review rounds before escalating the Idea's feature-level BLOCKERs to a human instead of shipping. `0` = unlimited. | `3` |
336
+
337
+ To disable, export the env var as `false`; to tune the code-review gateway loop cap, set `CHORUS_MAX_CODE_REVIEW_ROUNDS`:
338
+ ```bash
339
+ export CHORUS_ENABLE_PROPOSAL_REVIEWER=false
340
+ export CHORUS_ENABLE_TASK_REVIEWER=false
341
+ export CHORUS_ENABLE_CODE_REVIEWER=false
342
+ export CHORUS_MAX_CODE_REVIEW_ROUNDS=5 # 0 = unlimited
343
+ ```
344
+
345
+ When enabled, reviewers run as read-only sub-agents and post a VERDICT comment on the proposal/task/idea. Three possible outcomes: **PASS** (no issues), **PASS WITH NOTES** (minor non-blocking notes), or **FAIL** (BLOCKERs found). Results are advisory — they do not block approval, verification, or ship; the code-review gateway in particular is behavioral (it does not change the Idea's stored status). On a code-review FAIL, fix it via the `/skill:quick-dev` workflow: `chorus_create_tasks` with `proposalUuid` set to the current approved proposal so the fix tasks attach to it. Group related small BLOCKERs into one cohesive task by default; split only materially large or independently testable fixes. Each fix task must self-check its acceptance criteria and pass independent task review plus admin verification. Re-run the gateway only after every fix task is successfully `done`; if there is a failed or cancelled fix task, stop and escalate instead. Disabling reduces token usage but removes the independent quality gate.
346
+
347
+ ### 6. Enable OpenSpec Mode (Optional)
348
+
349
+ Opt-in spec-driven path: `/skill:proposal`, `/skill:develop`, and `/skill:yolo` write `proposal.md` / `design.md` / spec deltas on disk and mirror them into Chorus drafts. Fully optional — free-form authoring works without it. Activates only when all three hold: `CHORUS_OPENSPEC_MODE` ≠ `off`, an `openspec/` directory exists at the project root, and the `openspec` CLI is on `PATH`. The extension detects this at `session_start` and reports it in the injected context.
350
+
351
+ **When the user wants it on** (e.g. they ran `/skill:chorus enable openspec` after the `(OpenSpec off — …)` banner), actually **enable it for them** — run whichever steps are missing, don't just describe them:
352
+
353
+ ```bash
354
+ npm i -g @fission-ai/openspec # 1. install the CLI if it's not on PATH (global, pure Node)
355
+ openspec init # 2. scaffold openspec/ (interactive; pick your editor tooling)
356
+ ```
357
+
358
+ The OpenSpec signal is read **once at session start**, so it can't flip mid-session — after the steps succeed, tell the user to **restart the session**; the banner then reads `(OpenSpec Enabled)` and the stage skills fold in the `openspec-aware` skill automatically.
359
+
360
+ To turn it off, set `CHORUS_OPENSPEC_MODE=off` — the banner then reads a neutral `(OpenSpec off)`.
361
+
362
+ ---
363
+
364
+ ## Execution Rules
365
+
366
+ 1. **Always check in first** — Call `chorus_checkin()` at session start (the extension does this automatically and injects the result)
367
+ 2. **Sessions are automatic** — The extension creates, heartbeats, and closes sessions on `subagent_spawn` / `subagent_manage close`. Never call `chorus_create_session` or `chorus_close_session` yourself.
368
+ 3. **Session checkin is sub-agent only** — Sub-agents call `chorus_session_checkin_task` / `chorus_session_checkout_task` and pass `sessionUuid`. Main agent skips session tools entirely.
369
+ 4. **Stay in your role** — Only use tools available to your role
370
+ 5. **Report progress** — Use `chorus_report_work` or `chorus_add_comment`
371
+ 6. **Follow the lifecycle** — Ideas flow through Proposals to Tasks; don't skip steps
372
+ 7. **Set up task dependency DAG** — Use `dependsOnDraftUuids` in task drafts to express execution order
373
+ 8. **Verify before claiming** — Check available items before claiming
374
+ 9. **Document decisions** — Add comments explaining your reasoning
375
+ 10. **Respect the review process** — Submit work for verification; don't assume it's done until Admin verifies
376
+ 11. **Always use AskUserQuestion for human interaction** — NEVER display questions as plain text; use interactive radio buttons (the `ask_user_question` tool)
377
+ 12. **Close sub-agents after use** — Pi limits concurrent sub-agents; after a reviewer/worker finishes, call `subagent_manage close` to release the slot. `completed` does not release it.
378
+
379
+ ---
380
+
381
+ ## Status Lifecycle Reference
382
+
383
+ ### Idea Status Flow
384
+ ```
385
+ open --> elaborating --> proposal_created --> completed
386
+ \ /
387
+ \--> closed <------------------------------/
388
+ ```
389
+
390
+ ### Task Status Flow
391
+ ```
392
+ open --> assigned --> in_progress --> to_verify --> done
393
+ \ /
394
+ \--> closed <-----------------------------------/
395
+ ^ |
396
+ | v
397
+ +--- (reopen) -- in_progress
398
+ ```
399
+
400
+ ### Proposal Status Flow
401
+ ```
402
+ draft --> pending --> approved
403
+ \-> rejected --> revised --> pending ...
404
+ approved --> draft (via revoke — cascade-closes tasks, deletes documents)
405
+ ```
406
+
407
+ ---
408
+
409
+ ## Skill Routing
410
+
411
+ This is the core overview skill. For stage-specific workflows, use:
412
+
413
+ | Stage | Skill | Description |
414
+ |-------|-------|-------------|
415
+ | **Full Auto** | `/skill:yolo` | Full-auto AI-DLC pipeline — from prompt to done. Automates Idea → Proposal → Execute → Verify with adversarial reviewers |
416
+ | **Orchestration** | `/skill:orchestrate` | Coordinate OTHER agents & humans across the lifecycle — delegate ideas (`chorus_pm_assign_idea`) & tasks, fan a theme out to child ideas, run independent reviewers, and gatekeep the proposal/verify gates |
417
+ | **Quick Dev** | `/skill:quick-dev` | Skip Idea→Proposal, create tasks directly, execute, and verify |
418
+ | **Ideation** | `/skill:idea` | Claim Ideas, run elaboration rounds, prepare for proposal |
419
+ | **Planning** | `/skill:proposal` | Create Proposals with document & task drafts, manage dependency DAG, submit for review |
420
+ | **Development** | `/skill:develop` | Claim Tasks, report work, session & parallel sub-agent integration |
421
+ | **Review** | `/skill:review` | Approve/reject Proposals, verify Tasks, project governance |
422
+ | **Docs** | `/skill:docs` | Consult the live Chorus documentation site to answer product-usage questions — UI workflow, agent/plugin setup, API/MCP, deployment, operations |
423
+ | **OpenSpec mode** | `openspec-aware` | Opt-in **shared sub-procedure** invoked by `/skill:proposal`, `/skill:develop`, and `/skill:yolo` whenever the user has the `openspec` CLI installed. Scaffolds `openspec/changes/<slug>/` on disk and mirrors files into Chorus document drafts. Skips silently in fallback mode. See `skills/openspec-aware/SKILL.md`. |
424
+
425
+ ### Getting Started
426
+
427
+ 1. The extension auto-calls `chorus_checkin()` at session start and injects your role and assignments
428
+ 2. Based on your role, use the appropriate skill:
429
+ - **Full Auto** → `/skill:yolo` — give a prompt, agent handles everything (requires Admin-preset permissions: write on every resource + approve/verify admin bits)
430
+ - PM Agent → `/skill:idea` then `/skill:proposal`
431
+ - Developer Agent → `/skill:develop`
432
+ - Admin Agent → `/skill:review` (also has access to all PM and Developer tools)
@@ -0,0 +1,57 @@
1
+ ---
2
+ name: chorus-cli
3
+ description: How to install, configure, and use the `chorus` CLI — install it, manage agents with `chorus agents` (add/remove/list), the connection environment variables, and MCP operations via `chorus mcp`. A concise shared reference for any flow that drives Chorus from the shell.
4
+ license: AGPL-3.0
5
+ metadata:
6
+ author: chorus
7
+ version: "0.17.0"
8
+ category: project-management
9
+ mcp_server: chorus
10
+ ---
11
+
12
+ # chorus-cli — using the `chorus` CLI
13
+
14
+ `chorus` (published as `@chorus-aidlc/chorus`) is the one command that configures this
15
+ machine's coding agents for Chorus and talks to the Chorus MCP endpoint from the shell.
16
+ This is a concise reference — run `chorus --help` and `chorus <command> --help` for the
17
+ full flag surface.
18
+
19
+ ## 1. Install
20
+
21
+ ```bash
22
+ npm install -g @chorus-aidlc/chorus # unpinned — always installs the latest
23
+ chorus --version # must be >= 0.17.0 (provides `chorus agents` + `chorus mcp`)
24
+ ```
25
+
26
+ ## 2. Configure agents — `chorus agents`
27
+
28
+ Agent configuration lives in `~/.chorus/daemon.json`; `chorus agents` is the CRUD group:
29
+
30
+ - `chorus agents` (or `chorus agents list`) — list configured agents (name, UUID, backend).
31
+ The API key is never printed; the agent named by `CHORUS_AGENT_PROFILE` is marked.
32
+ - `chorus agents add [--agents <ids>] [--all] [--url <u>] [--api-key <cho_…>] [--yes] [--dsh-profile <name>]`
33
+ — detect installed coding agents, install each one's Chorus plugin, and seed credentials
34
+ (this is the former `chorus init`). Idempotent; safe to re-run. `--help` lists every flag.
35
+ - `chorus agents remove <name|uuid>` — remove a configured agent from `~/.chorus/daemon.json`
36
+ (matched by UUID or name; an ambiguous name → use the UUID).
37
+
38
+ ## 3. Connection environment variables
39
+
40
+ - `CHORUS_URL` — the Chorus instance URL.
41
+ - `CHORUS_API_KEY` — an agent API key (`cho_…`).
42
+ - `CHORUS_AGENT_PROFILE` — optional name or UUID of the agent to act as. When set, `chorus mcp`
43
+ resolves that agent's key from `~/.chorus/daemon.json`, so you need not export
44
+ `CHORUS_API_KEY` for the CLI path. Daemon-woken sessions receive it automatically.
45
+
46
+ ## 4. MCP operations — `chorus mcp`
47
+
48
+ Call any Chorus MCP tool from the shell — a byte-exact, token-free path for large content:
49
+
50
+ - `chorus mcp call <tool> ['<json>'] [--arg-file key=<file>] [--agent <name|uuid>]` — call a tool.
51
+ `--arg-file content=<file>` streams a file's raw bytes into the JSON `content` string (no
52
+ re-typing through the model). Identity resolves from `--agent` → `CHORUS_AGENT_PROFILE` →
53
+ `CHORUS_URL`+`CHORUS_API_KEY` → a single configured agent.
54
+ - `chorus mcp whoami` — print this agent's own UUID.
55
+ - `chorus mcp list` — list the tools this agent may call.
56
+
57
+ Requires `chorus >= 0.17.0` (the `chorus mcp` subcommand). See `chorus mcp --help`.