@chorus-aidlc/chorus-openclaw-plugin 0.4.0 → 0.5.3

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.
Files changed (58) hide show
  1. package/README.md +208 -278
  2. package/dist/commands.d.ts +5 -0
  3. package/dist/commands.d.ts.map +1 -0
  4. package/dist/commands.js +147 -0
  5. package/dist/commands.js.map +1 -0
  6. package/dist/config.d.ts +38 -0
  7. package/dist/config.d.ts.map +1 -0
  8. package/dist/config.js +57 -0
  9. package/dist/config.js.map +1 -0
  10. package/dist/event-router.d.ts +55 -0
  11. package/dist/event-router.d.ts.map +1 -0
  12. package/dist/event-router.js +157 -0
  13. package/dist/event-router.js.map +1 -0
  14. package/dist/index.d.ts +3 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +108 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/mcp-client.d.ts +37 -0
  19. package/dist/mcp-client.d.ts.map +1 -0
  20. package/dist/mcp-client.js +137 -0
  21. package/dist/mcp-client.js.map +1 -0
  22. package/dist/mcp-registration.d.ts +25 -0
  23. package/dist/mcp-registration.d.ts.map +1 -0
  24. package/dist/mcp-registration.js +93 -0
  25. package/dist/mcp-registration.js.map +1 -0
  26. package/dist/sse-listener.d.ts +37 -0
  27. package/dist/sse-listener.d.ts.map +1 -0
  28. package/dist/sse-listener.js +152 -0
  29. package/dist/sse-listener.js.map +1 -0
  30. package/dist/wake.d.ts +67 -0
  31. package/dist/wake.d.ts.map +1 -0
  32. package/dist/wake.js +234 -0
  33. package/dist/wake.js.map +1 -0
  34. package/openclaw.plugin.json +13 -12
  35. package/package.json +23 -5
  36. package/skills/brainstorm/SKILL.md +163 -0
  37. package/skills/chorus/SKILL.md +114 -97
  38. package/skills/develop/SKILL.md +197 -52
  39. package/skills/idea/SKILL.md +136 -150
  40. package/skills/openspec-aware/SKILL.md +425 -0
  41. package/skills/proposal/SKILL.md +162 -153
  42. package/skills/proposal-reviewer/SKILL.md +118 -0
  43. package/skills/quick-dev/SKILL.md +34 -10
  44. package/skills/review/SKILL.md +109 -35
  45. package/skills/task-reviewer/SKILL.md +113 -0
  46. package/skills/yolo/SKILL.md +501 -0
  47. package/src/commands.ts +138 -71
  48. package/src/config.ts +23 -10
  49. package/src/event-router.ts +46 -54
  50. package/src/index.ts +56 -83
  51. package/src/mcp-client.ts +17 -0
  52. package/src/mcp-registration.ts +142 -0
  53. package/src/openclaw-sdk.d.ts +95 -0
  54. package/src/wake.ts +310 -0
  55. package/src/tools/admin-tools.ts +0 -126
  56. package/src/tools/common-tools.ts +0 -575
  57. package/src/tools/dev-tools.ts +0 -105
  58. package/src/tools/pm-tools.ts +0 -411
@@ -1,10 +1,12 @@
1
1
  ---
2
2
  name: chorus
3
- description: Chorus AI Agent collaboration platform — overview, tools, and workflow routing.
3
+ description: Chorus AI Agent collaboration platform — overview, common tools, setup, and routing to stage-specific skills.
4
+ license: AGPL-3.0
4
5
  metadata:
5
- openclaw:
6
- emoji: "🎵"
7
- homepage: "https://github.com/Chorus-AIDLC/Chorus"
6
+ author: chorus
7
+ version: "0.9.4"
8
+ category: project-management
9
+ mcp_server: chorus
8
10
  ---
9
11
 
10
12
  # Chorus Skill
@@ -13,6 +15,8 @@ Chorus is a work collaboration platform for AI Agents, enabling multiple Agents
13
15
 
14
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.
15
17
 
18
+ > **⚠️ Tool namespace under OpenClaw.** The Chorus tools are exposed by the connected Chorus **MCP server**, and OpenClaw namespaces MCP-sourced tools with a `chorus__` prefix. Wherever this skill (or any Chorus skill) writes a bare tool name like `chorus_get_task`, the actual callable name in your OpenClaw session is `chorus__chorus_get_task` (e.g. `chorus_checkin` → `chorus__chorus_checkin`, `chorus_submit_for_verify` → `chorus__chorus_submit_for_verify`). The bare names are kept in the docs for readability and parity with the Chorus tool reference; **prepend `chorus__` when you actually invoke them.** This single rule applies to every Chorus skill — it is not repeated in each one.
19
+
16
20
  ---
17
21
 
18
22
  ## Overview
@@ -33,27 +37,43 @@ creates analyzes drafts PRD codes & reviews closes
33
37
 
34
38
  | Role | Responsibility | MCP Tools |
35
39
  |------|---------------|-----------|
36
- | **PM Agent** | Analyze Ideas, create Proposals (PRD + Task drafts), manage documents | Common + `chorus_pm_*` + `chorus_claim_idea` |
37
- | **Developer Agent** | Claim Tasks, write code, report work, submit for verification | Common + `chorus_claim_task` + `chorus_report_work` |
38
- | **Admin Agent** | Create projects/ideas, approve/reject proposals, verify tasks, manage lifecycle | Common + `chorus_admin_*` + PM + Developer tools |
40
+ | **PM Agent** | Analyze Ideas, create Proposals (PRD + Task drafts), manage documents | Public + `chorus_pm_*` + `chorus_*_idea` + `task:write` tools (claim/release/submit/report) |
41
+ | **Developer Agent** | Claim Tasks, write code, report work, submit for verification | Public + `chorus_*_task` + `chorus_report_work` |
42
+ | **Admin Agent** | Create projects/ideas, approve/reject proposals, verify tasks, manage lifecycle | Public + `chorus_admin_*` + PM + Developer tools |
43
+
44
+ ### Permissions
45
+
46
+ 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).
47
+
48
+ **Role presets** map to permission sets:
49
+
50
+ | Preset | Permissions |
51
+ |--------|-------------|
52
+ | `developer_agent` | all `*:read` + `task:write` |
53
+ | `pm_agent` | all `*:read` + `idea:write` + `proposal:write` + `document:write` + `task:write` + `project:write` |
54
+ | `admin_agent` | all 15 permissions (every `read` + `write` + `admin`) |
55
+
56
+ **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.
57
+
58
+ > **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.
39
59
 
40
60
  ---
41
61
 
42
62
  ## Common Tools (All Roles)
43
63
 
44
- All Agent roles can use the following tools for querying information and collaboration.
64
+ All Agent roles can use the following tools for querying information and collaboration. (Reminder: prepend `chorus__` when invoking — see the namespace note above.)
45
65
 
46
66
  ### Checkin
47
67
 
48
68
  | Tool | Purpose |
49
69
  |------|---------|
50
- | `chorus_checkin` | Call at startup: get Agent persona, role, current assignments, pending work counts, and unread notification count |
70
+ | `chorus_checkin` | Call at session start: get Agent persona, role, current assignments, pending work counts, and unread notification count |
51
71
 
52
72
  The checkin response includes **owner/master information** for the agent:
53
73
  - `agent.owner`: `{ uuid, name, email }` or `null` — the human user who owns this agent
54
74
  - Use the owner info to know who to @mention for confirmations and approvals
55
75
 
56
- ### Project Filtering
76
+ #### Project Filtering
57
77
 
58
78
  Results can be filtered by project(s) using the `projectUuids` array in the plugin configuration (see [Setup](#setup) below).
59
79
 
@@ -63,6 +83,18 @@ Results can be filtered by project(s) using the `projectUuids` array in the plug
63
83
 
64
84
  **Affected tools**: `chorus_checkin`, `chorus_get_my_assignments`
65
85
 
86
+ ### Session (Sub-Agents Only)
87
+
88
+ Unlike the Claude Code plugin (which fully automates session lifecycle via hooks), **OpenClaw does not run the Claude Code SubagentStart / heartbeat / cleanup hooks**. Session handling is therefore **manual** on OpenClaw. See `/develop` for the full manual session protocol. In short, a sub-agent must:
89
+
90
+ 1. `chorus_create_session` — create its own session once, near the start (or reuse an injected `sessionUuid` if the host provided one)
91
+ 2. `chorus_session_checkin_task` — before starting work on a task
92
+ 3. Pass `sessionUuid` to `chorus_update_task` and `chorus_report_work`
93
+ 4. `chorus_session_checkout_task` — when done with a task
94
+ 5. `chorus_close_session` — when the sub-agent finishes (no hook closes it for you)
95
+
96
+ Main agent / Team Lead: no session needed — call tools without `sessionUuid`.
97
+
66
98
  ### Project Groups
67
99
 
68
100
  Projects can be organized into **Project Groups** — a single-level grouping that lets you categorize related projects together.
@@ -71,6 +103,7 @@ Projects can be organized into **Project Groups** — a single-level grouping th
71
103
  |------|---------|
72
104
  | `chorus_get_project_groups` | List all project groups with project counts |
73
105
  | `chorus_get_project_group` | Get a single project group by UUID with its projects list |
106
+ | `chorus_get_group_dashboard` | Get aggregated dashboard stats for a project group |
74
107
 
75
108
  ### Project & Activity
76
109
 
@@ -84,23 +117,27 @@ Projects can be organized into **Project Groups** — a single-level grouping th
84
117
 
85
118
  | Tool | Purpose |
86
119
  |------|---------|
87
- | `chorus_get_ideas` | List project Ideas (filterable by status, paginated) |
88
- | `chorus_get_idea` | Get a single Idea's details |
120
+ | `chorus_get_ideas` | List project Ideas (filterable by status, paginated; rows include `reportCount`) |
121
+ | `chorus_get_idea` | Get a single Idea's details (includes `reports[]` with full content) |
89
122
  | `chorus_get_available_ideas` | Get claimable Ideas (status=open) |
90
123
 
91
124
  ### Documents
92
125
 
93
126
  | Tool | Purpose |
94
127
  |------|---------|
95
- | `chorus_get_documents` | List project documents (filterable by type: prd, tech_design, adr, spec, guide) |
128
+ | `chorus_get_documents` | List project documents (filterable by type: prd, tech_design, adr, spec, guide, report) |
96
129
  | `chorus_get_document` | Get a single document's content |
97
130
 
131
+ ### Reports
132
+
133
+ 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 tool's description carries the section template — read it there. `/yolo` writes one mandatorily; `/develop` offers it advisorily on last-task verify.
134
+
98
135
  ### Proposals
99
136
 
100
137
  | Tool | Purpose |
101
138
  |------|---------|
102
- | `chorus_get_proposals` | List project Proposals (filterable by status: draft, pending, approved, rejected) |
103
- | `chorus_get_proposal` | Get a single Proposal's details, including documentDrafts and taskDrafts |
139
+ | `chorus_get_proposals` | List project Proposals (filterable by status: pending, approved, rejected) |
140
+ | `chorus_get_proposal` | Get a single Proposal, sliced by `section` (default `basic`: metadata + lightweight draft index; `documents`/`tasks`/`full` for the draft bodies) |
104
141
 
105
142
  ### Tasks
106
143
 
@@ -110,8 +147,6 @@ Projects can be organized into **Project Groups** — a single-level grouping th
110
147
  | `chorus_get_task` | Get a single Task's details and context |
111
148
  | `chorus_get_available_tasks` | Get claimable Tasks (status=open, optional proposalUuids filter) |
112
149
  | `chorus_get_unblocked_tasks` | Get tasks ready to start — all dependencies resolved (done/closed). `to_verify` is NOT considered resolved. |
113
- | `chorus_create_tasks` | Batch create tasks. Two modes: Quick Task (omit proposalUuid) or Proposal-linked (pass proposalUuid). Supports intra-batch dependencies via draftUuid + dependsOnDraftUuids. |
114
- | `chorus_update_task` | Update task fields (title, description, priority, storyPoints, dependencies) or change status (in_progress, to_verify). |
115
150
 
116
151
  **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).
117
152
 
@@ -154,7 +189,7 @@ Use @mentions to notify specific users or agents. Mention syntax: `@[DisplayName
154
189
  3. Mentioned users/agents automatically receive a notification
155
190
 
156
191
  **When to @mention:**
157
- - **Elaboration completion** — confirm understanding with the answerer before validating
192
+ - **Elaboration completion** — confirm understanding with the answerer before validating (see `/idea`)
158
193
  - **Proposal creation/update** — notify stakeholders when submitting
159
194
  - **Task submission** — notify PM/owner for significant decisions
160
195
  - **Blocking issues** — notify relevant person for human input
@@ -176,6 +211,7 @@ Use @mentions to notify specific users or agents. Mention syntax: `@[DisplayName
176
211
  | Tool | Purpose |
177
212
  |------|---------|
178
213
  | `chorus_get_notifications` | Get your notifications (default: unread only, auto-marks as read) |
214
+ | `chorus_mark_notification_read` | Mark a single notification or all notifications as read |
179
215
 
180
216
  **Recommended workflow:**
181
217
  1. `chorus_checkin()` — check `notifications.unreadCount`
@@ -184,49 +220,6 @@ Use @mentions to notify specific users or agents. Mention syntax: `@[DisplayName
184
220
 
185
221
  ---
186
222
 
187
- ## Role-Specific Tools
188
-
189
- ### Developer Tools
190
-
191
- | Tool | Purpose |
192
- |------|---------|
193
- | `chorus_claim_task` | Claim an open task (open -> assigned) |
194
- | `chorus_report_work` | Report work progress or completion on a task |
195
- | `chorus_submit_for_verify` | Submit task for human verification (in_progress -> to_verify) |
196
- | `chorus_report_criteria_self_check` | Report self-check results on acceptance criteria before submitting |
197
-
198
- ### PM Tools
199
-
200
- | Tool | Purpose |
201
- |------|---------|
202
- | `chorus_claim_idea` | Claim an open Idea for elaboration (open -> elaborating) |
203
- | `chorus_start_elaboration` | Start an elaboration round with structured questions |
204
- | `chorus_validate_elaboration` | Validate elaboration answers (empty issues = resolved) |
205
- | `chorus_create_proposal` | Create an empty Proposal container |
206
- | `chorus_add_document_draft` | Add a document draft to a Proposal |
207
- | `chorus_add_task_draft` | Add a task draft to a Proposal |
208
- | `chorus_update_document_draft` | Update a document draft in a Proposal |
209
- | `chorus_update_task_draft` | Update a task draft in a Proposal |
210
- | `chorus_remove_document_draft` | Remove a document draft from a Proposal |
211
- | `chorus_remove_task_draft` | Remove a task draft from a Proposal |
212
- | `chorus_validate_proposal` | Validate a Proposal before submission (always call before submit) |
213
- | `chorus_submit_proposal` | Submit a Proposal for approval (draft -> pending) |
214
- | `chorus_pm_assign_task` | Assign a task to a specific Developer Agent |
215
- | `chorus_move_idea` | Move an Idea to a different project |
216
- | `chorus_pm_create_idea` | Create a new Idea in a project |
217
-
218
- ### Admin Tools
219
-
220
- | Tool | Purpose |
221
- |------|---------|
222
- | `chorus_admin_create_project` | Create a new project (optionally in a group) |
223
- | `chorus_admin_create_project_group` | Create a new project group |
224
- | `chorus_admin_approve_proposal` | Approve a Proposal — materializes drafts into real Documents and Tasks |
225
- | `chorus_admin_verify_task` | Verify a task (to_verify -> done). Unblocks downstream dependencies. |
226
- | `chorus_mark_acceptance_criteria` | Mark acceptance criteria as passed/failed during verification |
227
-
228
- ---
229
-
230
223
  ## Setup
231
224
 
232
225
  ### 1. Obtain API Key
@@ -236,16 +229,19 @@ API Keys must be created manually by the user in the Chorus Web UI.
236
229
  **Ask the user to:**
237
230
  1. Open the Chorus settings page (e.g., `https://chorus.example.com/settings`)
238
231
  2. Click **Create API Key**
239
- 3. Enter Agent name, select role (Developer / PM / Admin)
232
+ 3. Enter Agent name, then either:
233
+ - Pick a **role preset** (Developer / PM / Admin) — recommended for the common case
234
+ - Or pick a preset and **add/remove individual permissions** (5 resources × 3 actions = 15 permissions) to get a precise custom set
240
235
  4. Click create and **immediately copy the key** (shown only once)
241
236
 
242
237
  **Security notes:**
243
- - Each Agent should have its own API Key with the minimum required role
238
+ - Each Agent should have its own API Key with the minimum required permissions
239
+ - Presets are the fastest path; custom permissions let you grant narrowly (e.g. a dev agent that also needs `idea:write` to file bugs)
244
240
  - API Keys should not be committed to version control
245
241
 
246
242
  ### 2. Plugin Configuration
247
243
 
248
- Config file: `~/.openclaw/openclaw.json`
244
+ The OpenClaw Chorus plugin auto-registers the Chorus MCP server (streamable-http + Bearer) from your plugin config. Config file: `~/.openclaw/openclaw.json`.
249
245
 
250
246
  Add the Chorus plugin configuration under `plugins.entries.chorus-openclaw-plugin.config`:
251
247
 
@@ -276,35 +272,51 @@ Add the Chorus plugin configuration under `plugins.entries.chorus-openclaw-plugi
276
272
  | `projectUuids` | No | Array of project UUIDs to monitor. Empty array = all projects. |
277
273
  | `autoStart` | No | Auto-claim and begin work on `task_assigned` events (default: `true`) |
278
274
 
275
+ Once registered, every Chorus tool is reachable as `chorus__<tool_name>` (the `chorus__` prefix comes from the MCP server id; see the namespace note at the top of this skill).
276
+
279
277
  ### 3. Verify Connection
280
278
 
281
- After configuring, the plugin will automatically connect. Verify by calling:
279
+ After configuring, the plugin connects and registers the MCP server automatically. Verify by calling:
282
280
 
283
281
  ```
284
- chorus_checkin()
282
+ chorus__chorus_checkin()
285
283
  ```
286
284
 
287
- If it fails, check: API Key correct (`cho_` prefix)? URL reachable? Plugin enabled in config?
285
+ If it fails, check: API Key correct (`cho_` prefix)? URL reachable? Plugin enabled in config? MCP server shown as connected in OpenClaw?
286
+
287
+ ### 4. Tool Access by Preset
288
+
289
+ 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.
290
+
291
+ | Tool Group | Required Permission | Developer | PM | Admin |
292
+ |------------|--------------------|-----------|------|-------|
293
+ | `chorus_get_*` / `chorus_list_*` / `chorus_search*` | (public, read) | Yes | Yes | Yes |
294
+ | `chorus_checkin` | (public) | Yes | Yes | Yes |
295
+ | `chorus_add_comment` / `chorus_get_comments` | (public) | Yes | Yes | Yes |
296
+ | `chorus_update_task` (field edits + status) | (public; assignee required for status) | Yes | Yes | Yes |
297
+ | `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 |
298
+ | `chorus_claim_idea` / `chorus_release_idea` / `chorus_move_idea` / `chorus_pm_create_idea` / `chorus_pm_*_elaboration` | `idea:write` | No | Yes | Yes |
299
+ | `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 |
300
+ | `chorus_pm_create_document` / `chorus_pm_update_document` / `chorus_create_report` | `document:write` | No | Yes | Yes |
301
+ | `chorus_admin_create_project` / `chorus_admin_*_project_group` / `chorus_admin_move_project_to_group` | `project:write` | No | **Yes** (0.7.0+) | Yes |
302
+ | `chorus_admin_approve_proposal` / `chorus_admin_close_proposal` | `proposal:admin` | No | No | Yes |
303
+ | `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 |
304
+ | `chorus_admin_delete_idea` | `idea:admin` | No | No | Yes |
305
+ | `chorus_admin_delete_document` | `document:admin` | No | No | Yes |
306
+
307
+ ### 5. Review Skills
308
+
309
+ The plugin bundles two independent **review skills**: `/proposal-reviewer` and `/task-reviewer`. They are read-only and end by posting a `VERDICT:` comment (PASS / PASS WITH NOTES / FAIL) on the proposal/task.
288
310
 
289
- ### 4. Role-Specific Tool Access
311
+ **How review runs on OpenClaw.** There is no PostToolUse hook to inject a "spawn the reviewer" reminder after submit, and OpenClaw has no Claude-Code-style typed agent definitions. Instead, the proposal/develop/yolo skills put the reviewer step **inline**: the orchestrating agent uses the OpenClaw `sessions_spawn` tool to spawn a sub-agent and instructs it (in the spawn `task`) to **run the `/proposal-reviewer` or `/task-reviewer` skill** against the entity, then waits for the VERDICT (poll `subagents` / `sessions_yield`). Spawned sub-agents inherit the plugin's skills, so those slash-commands are available to them. If `sessions_spawn` is unavailable (spawning disabled by policy), run the review yourself as a focused read-only pass following the reviewer skill's procedure and record the VERDICT via `chorus_add_comment`. See the relevant stage skill for the exact procedure.
290
312
 
291
- | Tool Prefix | Developer | PM | Admin |
292
- |-------------|-----------|------|-------|
293
- | `chorus_get_*` / `chorus_list_*` | Yes | Yes | Yes |
294
- | `chorus_checkin` | Yes | Yes | Yes |
295
- | `chorus_add_comment` / `chorus_get_comments` | Yes | Yes | Yes |
296
- | `chorus_create_tasks` / `chorus_update_task` | Yes | Yes | Yes |
297
- | `chorus_search` / `chorus_search_mentionables` | Yes | Yes | Yes |
298
- | `chorus_claim_task` / `chorus_report_work` | Yes | No | Yes |
299
- | `chorus_submit_for_verify` / `chorus_report_criteria_self_check` | Yes | No | Yes |
300
- | `chorus_claim_idea` / `chorus_pm_*` | No | Yes | Yes |
301
- | `chorus_admin_*` | No | No | Yes |
313
+ Results are advisory they do not hard-block approval or verification, but you should act on a FAIL by fixing the listed BLOCKERs before proceeding.
302
314
 
303
315
  ---
304
316
 
305
317
  ## SSE Event-Driven Model
306
318
 
307
- The OpenClaw Chorus plugin uses a **Server-Sent Events (SSE)** model to receive real-time notifications from the Chorus server. Instead of polling, the plugin maintains a persistent SSE connection and automatically wakes the agent when relevant events occur.
319
+ The OpenClaw Chorus plugin runs a background service that holds a **Server-Sent Events (SSE)** connection to the Chorus server and wakes the agent (via the plugin's in-process system-event bridge) when relevant events arrive. Instead of polling, the agent is notified the moment something needs its attention.
308
320
 
309
321
  ### How It Works
310
322
 
@@ -312,7 +324,7 @@ The OpenClaw Chorus plugin uses a **Server-Sent Events (SSE)** model to receive
312
324
  2. When a notification event arrives, the plugin fetches the full notification details
313
325
  3. If `projectUuids` is configured, events from other projects are filtered out
314
326
  4. The plugin routes the event to the agent with context-rich instructions
315
- 5. If `autoStart` is enabled, certain events (like `task_assigned`) will auto-claim before waking the agent
327
+ 5. If `autoStart` is enabled, certain events (like `task_assigned`) auto-claim before waking the agent
316
328
 
317
329
  ### Event Types
318
330
 
@@ -334,17 +346,18 @@ Each event includes the entity UUID, project UUID, and actor information so the
334
346
 
335
347
  ## Execution Rules
336
348
 
337
- 1. **Always check in first** — Call `chorus_checkin()` at startup to learn your role and assignments
338
- 2. **Stay in your role** — Only use tools available to your role
339
- 3. **Report progress** — Use `chorus_report_work` or `chorus_add_comment` to keep the team informed
340
- 4. **Follow the lifecycle** — Ideas flow through Proposals to Tasks; don't skip steps
341
- 5. **Set up task dependency DAG** — Use `dependsOnDraftUuids` in task drafts to express execution order
342
- 6. **Verify before claiming** — Check available items before claiming
343
- 7. **Document decisions** — Add comments explaining your reasoning
344
- 8. **Respect the review process** — Submit work for verification; don't assume it's done until Admin verifies
345
- 9. **Self-check acceptance criteria** — Before submitting for verify, call `chorus_get_task` to review acceptance criteria, then use `chorus_report_criteria_self_check` to report self-check results
346
- 10. **Respond to SSE events promptly** — When the plugin wakes you with an event, handle it before starting other work
347
- 11. **@mention after completing work** — When an event includes actor info, @mention the actor in your response comment
349
+ 1. **Always check in first** — Call `chorus_checkin()` at session start
350
+ 2. **Sessions are manual on OpenClaw** — OpenClaw does not run the Claude Code session hooks. Sub-agents create their own session (`chorus_create_session`), checkin/checkout per task, pass `sessionUuid`, and close it on exit. The main agent skips session tools. See `/develop`.
351
+ 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.
352
+ 4. **Stay in your role** — Only use tools available to your role
353
+ 5. **Report progress** — Use `chorus_report_work` or `chorus_add_comment`
354
+ 6. **Follow the lifecycle** — Ideas flow through Proposals to Tasks; don't skip steps
355
+ 7. **Set up task dependency DAG** — Use `dependsOnDraftUuids` in task drafts to express execution order
356
+ 8. **Verify before claiming** — Check available items before claiming
357
+ 9. **Document decisions** — Add comments explaining your reasoning
358
+ 10. **Respect the review process** — Submit work for verification; don't assume it's done until Admin verifies
359
+ 11. **Elaboration questions are plain text on OpenClaw** — OpenClaw has no `AskUserQuestion` primitive. Present elaboration questions as plain-text prompts and collect free-text answers (see `/idea`). In `/yolo` the agent self-answers without any user interaction.
360
+ 12. **Verify sub-agent tasks (admin team lead)** — When a sub-agent reports a task is `to_verify`, review and verify. Tasks in `to_verify` do NOT unblock downstream — only `done` does.
348
361
 
349
362
  ---
350
363
 
@@ -371,6 +384,7 @@ open --> assigned --> in_progress --> to_verify --> done
371
384
  ```
372
385
  draft --> pending --> approved
373
386
  \-> rejected --> revised --> pending ...
387
+ approved --> draft (via revoke — cascade-closes tasks, deletes documents)
374
388
  ```
375
389
 
376
390
  ---
@@ -381,16 +395,19 @@ This is the core overview skill. For stage-specific workflows, use:
381
395
 
382
396
  | Stage | Skill | Description |
383
397
  |-------|-------|-------------|
384
- | **Quick Dev** | `/quick-dev` | Skip Idea->Proposal, create tasks directly, execute, and verify |
398
+ | **Full Auto** | `/yolo` | Full-auto AI-DLC pipeline — from prompt to done. Automates IdeaProposal Execute Verify with adversarial reviewers |
399
+ | **Quick Dev** | `/quick-dev` | Skip Idea→Proposal, create tasks directly, execute, and verify |
385
400
  | **Ideation** | `/idea` | Claim Ideas, run elaboration rounds, prepare for proposal |
386
401
  | **Planning** | `/proposal` | Create Proposals with document & task drafts, manage dependency DAG, submit for review |
387
- | **Development** | `/develop` | Claim Tasks, report work, execute, submit for verification |
402
+ | **Development** | `/develop` | Claim Tasks, report work, manual session & sub-agent management |
388
403
  | **Review** | `/review` | Approve/reject Proposals, verify Tasks, project governance |
404
+ | **OpenSpec mode** | `openspec-aware` | Opt-in **shared sub-procedure** invoked by `/proposal`, `/develop`, and `/yolo` whenever the user has the `openspec` CLI installed. Scaffolds `openspec/changes/<slug>/` on disk and mirrors files into Chorus document drafts via the `chorus-api.sh` wrapper. Runs an inline three-check detection (no SessionStart hook on OpenClaw). Skips silently in fallback mode. |
389
405
 
390
406
  ### Getting Started
391
407
 
392
408
  1. Call `chorus_checkin()` to learn your role and assignments
393
409
  2. Based on your role, use the appropriate skill:
394
- - PM Agent -> `/idea` then `/proposal`
395
- - Developer Agent -> `/develop`
396
- - Admin Agent -> `/review` (also has access to all PM and Developer tools)
410
+ - **Full Auto** `/yolo` give a prompt, agent handles everything (requires Admin-preset permissions: write on every resource + approve/verify admin bits)
411
+ - PM Agent `/idea` then `/proposal`
412
+ - Developer Agent `/develop`
413
+ - Admin Agent → `/review` (also has access to all PM and Developer tools)