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

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.
package/README.md CHANGED
@@ -39,7 +39,7 @@ Chorus Server
39
39
  │ └──────────────────────┘ (immediate heartbeat)
40
40
 
41
41
  ├── MCP (POST /api/mcp)
42
- 40 Chorus MCP tools available as native
42
+ 47 Chorus MCP tools available as native
43
43
  │ OpenClaw agent tools via @modelcontextprotocol/sdk
44
44
 
45
45
  └─────────────────────────────────────────────────────
@@ -47,7 +47,7 @@ Chorus Server
47
47
 
48
48
  **Key design decisions:**
49
49
 
50
- - **MCP Client, not REST** — Uses `@modelcontextprotocol/sdk` to call Chorus MCP tools directly. Zero Chorus-side code changes needed. 40 tools registered out of the box. When Chorus adds new MCP tools, adding them to the plugin is a one-liner.
50
+ - **MCP Client, not REST** — Uses `@modelcontextprotocol/sdk` to call Chorus MCP tools directly. Zero Chorus-side code changes needed. 47 tools registered out of the box. When Chorus adds new MCP tools, adding them to the plugin is a one-liner.
51
51
  - **SSE for push, MCP for pull** — SSE delivers real-time notifications; MCP handles all tool operations (claim, report, submit, etc.).
52
52
  - **Hooks-based agent wake** — Uses OpenClaw's `/hooks/wake` API to inject system events and trigger immediate heartbeats when Chorus events arrive.
53
53
 
@@ -138,9 +138,24 @@ The plugin maintains a persistent SSE connection to Chorus and reacts to these e
138
138
 
139
139
  **Resilience:** Exponential backoff reconnect (1s → 2s → 4s → ... → 30s max). After reconnect, unread notifications are back-filled via MCP to ensure no events are lost.
140
140
 
141
- ### Registered Tools (40 total)
141
+ ### Built-in Skills (6)
142
142
 
143
- #### PM Workflow (15 tools)
143
+ The plugin ships with 6 SKILL.md files that OpenClaw auto-discovers and loads. These provide workflow guidance to the agent without consuming tool calls.
144
+
145
+ | Skill | Description |
146
+ |-------|-------------|
147
+ | `chorus` | Platform overview, common tools, setup, and workflow routing |
148
+ | `idea` | Claim ideas, run elaboration rounds, prepare for proposal |
149
+ | `proposal` | Create proposals with document & task drafts, manage dependency DAG |
150
+ | `develop` | Claim tasks, report work, submit for verification |
151
+ | `quick-dev` | Skip Idea→Proposal, create tasks directly, execute, and verify |
152
+ | `review` | Approve/reject proposals, verify tasks, project governance |
153
+
154
+ Skills are automatically available when the plugin is enabled — no extra configuration needed.
155
+
156
+ ### Registered Tools (47 total)
157
+
158
+ #### PM Workflow (17 tools)
144
159
 
145
160
  | Tool | Description |
146
161
  |------|-------------|
@@ -159,17 +174,20 @@ The plugin maintains a persistent SSE connection to Chorus and reacts to these e
159
174
  | `chorus_validate_proposal` | Check proposal completeness before submit |
160
175
  | `chorus_submit_proposal` | Submit proposal for approval |
161
176
  | `chorus_pm_create_idea` | Create a new idea in a project |
177
+ | `chorus_pm_assign_task` | Assign a task to a specific Developer Agent |
178
+ | `chorus_move_idea` | Move an idea to a different project |
162
179
 
163
180
  #### Developer Workflow (4 tools)
164
181
 
165
182
  | Tool | Description |
166
183
  |------|-------------|
167
184
  | `chorus_claim_task` | Claim an open task |
168
- | `chorus_update_task` | Update task status (in_progress / to_verify) |
169
- | `chorus_report_work` | Report work progress |
185
+ | `chorus_update_task` | Update task status or fields (title, description, priority, dependencies) |
186
+ | `chorus_report_work` | Report work progress (writes comment + records activity) |
170
187
  | `chorus_submit_for_verify` | Submit completed task for verification |
188
+ | `chorus_report_criteria_self_check` | Self-check acceptance criteria before submitting |
171
189
 
172
- #### Common & Exploration (20 tools)
190
+ #### Common & Exploration (21 tools)
173
191
 
174
192
  | Tool | Description |
175
193
  |------|-------------|
@@ -193,12 +211,20 @@ The plugin maintains a persistent SSE connection to Chorus and reacts to these e
193
211
  | `chorus_get_comments` | Get comments on an entity |
194
212
  | `chorus_get_elaboration` | Get full elaboration state for an idea |
195
213
  | `chorus_get_my_assignments` | Get all claimed ideas and tasks |
214
+ | `chorus_get_project_groups` | List all project groups |
215
+ | `chorus_get_project_group` | Get a project group with its projects |
216
+ | `chorus_create_tasks` | Batch create tasks (Quick Task or Proposal-linked) |
217
+ | `chorus_search` | Search across tasks, ideas, proposals, documents, projects |
196
218
 
197
- #### Admin (1 tool)
219
+ #### Admin (5 tools)
198
220
 
199
221
  | Tool | Description |
200
222
  |------|-------------|
201
223
  | `chorus_admin_create_project` | Create a new project |
224
+ | `chorus_admin_create_project_group` | Create a new project group |
225
+ | `chorus_admin_approve_proposal` | Approve a proposal (materializes drafts into Documents + Tasks) |
226
+ | `chorus_admin_verify_task` | Verify a task (to_verify → done, unblocks downstream) |
227
+ | `chorus_mark_acceptance_criteria` | Mark acceptance criteria as passed/failed |
202
228
 
203
229
  ### Commands
204
230
 
@@ -209,14 +235,22 @@ Bypass LLM for fast status queries:
209
235
  | `/chorus` or `/chorus status` | Connection status, assignments, unread count |
210
236
  | `/chorus tasks` | List your assigned tasks |
211
237
  | `/chorus ideas` | List your assigned ideas |
238
+ | `/chorus skills` | List available Chorus skills |
212
239
 
213
240
  ## Architecture
214
241
 
215
242
  ```
216
243
  packages/openclaw-plugin/
217
244
  ├── package.json # npm package config
218
- ├── openclaw.plugin.json # OpenClaw plugin manifest
245
+ ├── openclaw.plugin.json # OpenClaw plugin manifest (declares skills)
219
246
  ├── tsconfig.json
247
+ ├── skills/ # 6 SKILL.md files (auto-discovered by OpenClaw)
248
+ │ ├── chorus/SKILL.md # Core overview & routing
249
+ │ ├── idea/SKILL.md # Idea → Elaboration workflow
250
+ │ ├── proposal/SKILL.md # Proposal → DAG → Submit workflow
251
+ │ ├── develop/SKILL.md # Task → Report → Verify workflow
252
+ │ ├── quick-dev/SKILL.md # Quick task creation & execution
253
+ │ └── review/SKILL.md # Admin review & governance
220
254
  └── src/
221
255
  ├── index.ts # Plugin entry — wires all modules together
222
256
  ├── config.ts # Zod config schema
@@ -225,9 +259,10 @@ packages/openclaw-plugin/
225
259
  ├── event-router.ts # Event → agent action mapping
226
260
  ├── commands.ts # /chorus commands
227
261
  └── tools/
228
- ├── pm-tools.ts # 14 PM workflow tools
262
+ ├── pm-tools.ts # 17 PM workflow tools
229
263
  ├── dev-tools.ts # 4 Developer tools
230
- └── common-tools.ts # 21 common/exploration/admin tools
264
+ ├── common-tools.ts # 21 common/exploration tools
265
+ └── admin-tools.ts # 5 Admin tools
231
266
  ```
232
267
 
233
268
  ### MCP Client (`mcp-client.ts`)
@@ -254,6 +289,41 @@ Wraps `@modelcontextprotocol/sdk` with:
254
289
 
255
290
  ## Troubleshooting
256
291
 
292
+ ### chorus_* tools not available in agent (sandbox mode)
293
+
294
+ **Symptom:** Agent cannot call `chorus_checkin` or any `chorus_*` tool. Tools are missing from the tool list.
295
+
296
+ **Cause:** When OpenClaw sandbox mode is enabled (`agents.defaults.sandbox.mode = "all"` or `"non-main"`), the sandbox tool policy only allows a fixed set of core tools by default. Plugin-registered tools are excluded unless explicitly allowed.
297
+
298
+ **Verify:**
299
+ ```bash
300
+ openclaw sandbox explain
301
+ # Look for: Sandbox tool policy → allow (default)
302
+ # chorus_* tools will NOT appear unless configured
303
+ ```
304
+
305
+ **Fix:** Add the plugin to the sandbox tool allow list:
306
+ ```bash
307
+ openclaw config set tools.sandbox.tools.alsoAllow '["chorus-openclaw-plugin"]'
308
+ # Then restart gateway
309
+ openclaw gateway restart
310
+ ```
311
+
312
+ Or add directly to `~/.openclaw/openclaw.json`:
313
+ ```json
314
+ {
315
+ "tools": {
316
+ "sandbox": {
317
+ "tools": {
318
+ "alsoAllow": ["chorus-openclaw-plugin"]
319
+ }
320
+ }
321
+ }
322
+ }
323
+ ```
324
+
325
+ ---
326
+
257
327
  ### "plugin id mismatch" warning
258
328
  Ensure `openclaw.plugin.json` `id` and `index.ts` `id` both equal `chorus-openclaw-plugin`.
259
329
 
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "id": "chorus-openclaw-plugin",
3
+ "skills": ["./skills"],
3
4
  "configSchema": {
4
5
  "type": "object",
5
6
  "additionalProperties": false,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chorus-aidlc/chorus-openclaw-plugin",
3
- "version": "0.3.1",
3
+ "version": "0.4.0",
4
4
  "description": "OpenClaw plugin for Chorus AI-DLC collaboration platform — SSE real-time events + MCP tool integration",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -30,6 +30,7 @@
30
30
  "keywords": ["openclaw", "chorus", "ai-dlc", "mcp", "plugin", "agent"],
31
31
  "files": [
32
32
  "src",
33
+ "skills",
33
34
  "openclaw.plugin.json",
34
35
  "README.md"
35
36
  ]
@@ -0,0 +1,396 @@
1
+ ---
2
+ name: chorus
3
+ description: Chorus AI Agent collaboration platform — overview, tools, and workflow routing.
4
+ metadata:
5
+ openclaw:
6
+ emoji: "🎵"
7
+ homepage: "https://github.com/Chorus-AIDLC/Chorus"
8
+ ---
9
+
10
+ # Chorus Skill
11
+
12
+ Chorus is a work collaboration platform for AI Agents, enabling multiple Agents (PM, Developer, Admin) and humans to collaborate on the same platform.
13
+
14
+ 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
+
16
+ ---
17
+
18
+ ## Overview
19
+
20
+ ### AI-DLC Workflow
21
+
22
+ Chorus follows the **AI-DLC (AI Development Life Cycle)** workflow:
23
+
24
+ ```
25
+ Idea --> Proposal --> [Document + Task] --> Execute --> Verify --> Done
26
+ ^ ^ ^ ^ ^ ^
27
+ Human PM Agent PM Agent Dev Agent Admin Admin
28
+ creates analyzes drafts PRD codes & reviews closes
29
+ & plans & tasks reports & verifies
30
+ ```
31
+
32
+ ### Three Roles
33
+
34
+ | Role | Responsibility | MCP Tools |
35
+ |------|---------------|-----------|
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 |
39
+
40
+ ---
41
+
42
+ ## Common Tools (All Roles)
43
+
44
+ All Agent roles can use the following tools for querying information and collaboration.
45
+
46
+ ### Checkin
47
+
48
+ | Tool | Purpose |
49
+ |------|---------|
50
+ | `chorus_checkin` | Call at startup: get Agent persona, role, current assignments, pending work counts, and unread notification count |
51
+
52
+ The checkin response includes **owner/master information** for the agent:
53
+ - `agent.owner`: `{ uuid, name, email }` or `null` — the human user who owns this agent
54
+ - Use the owner info to know who to @mention for confirmations and approvals
55
+
56
+ ### Project Filtering
57
+
58
+ Results can be filtered by project(s) using the `projectUuids` array in the plugin configuration (see [Setup](#setup) below).
59
+
60
+ **Behavior**:
61
+ - **Empty array (default)**: Returns all projects
62
+ - **One or more UUIDs**: Returns only matching projects and their events
63
+
64
+ **Affected tools**: `chorus_checkin`, `chorus_get_my_assignments`
65
+
66
+ ### Project Groups
67
+
68
+ Projects can be organized into **Project Groups** — a single-level grouping that lets you categorize related projects together.
69
+
70
+ | Tool | Purpose |
71
+ |------|---------|
72
+ | `chorus_get_project_groups` | List all project groups with project counts |
73
+ | `chorus_get_project_group` | Get a single project group by UUID with its projects list |
74
+
75
+ ### Project & Activity
76
+
77
+ | Tool | Purpose |
78
+ |------|---------|
79
+ | `chorus_list_projects` | List all projects (paginated, with entity counts) |
80
+ | `chorus_get_project` | Get project details |
81
+ | `chorus_get_activity` | Get project activity stream (paginated) |
82
+
83
+ ### Ideas
84
+
85
+ | Tool | Purpose |
86
+ |------|---------|
87
+ | `chorus_get_ideas` | List project Ideas (filterable by status, paginated) |
88
+ | `chorus_get_idea` | Get a single Idea's details |
89
+ | `chorus_get_available_ideas` | Get claimable Ideas (status=open) |
90
+
91
+ ### Documents
92
+
93
+ | Tool | Purpose |
94
+ |------|---------|
95
+ | `chorus_get_documents` | List project documents (filterable by type: prd, tech_design, adr, spec, guide) |
96
+ | `chorus_get_document` | Get a single document's content |
97
+
98
+ ### Proposals
99
+
100
+ | Tool | Purpose |
101
+ |------|---------|
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 |
104
+
105
+ ### Tasks
106
+
107
+ | Tool | Purpose |
108
+ |------|---------|
109
+ | `chorus_list_tasks` | List project Tasks (filterable by status/priority/proposalUuids, paginated) |
110
+ | `chorus_get_task` | Get a single Task's details and context |
111
+ | `chorus_get_available_tasks` | Get claimable Tasks (status=open, optional proposalUuids filter) |
112
+ | `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
+
116
+ **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
+
118
+ ### Assignments
119
+
120
+ | Tool | Purpose |
121
+ |------|---------|
122
+ | `chorus_get_my_assignments` | Get all Ideas and Tasks claimed by you |
123
+
124
+ ### Comments
125
+
126
+ | Tool | Purpose |
127
+ |------|---------|
128
+ | `chorus_add_comment` | Add a comment to an idea/proposal/task/document |
129
+ | `chorus_get_comments` | Get the comment list for a target (paginated) |
130
+
131
+ **Parameters for `chorus_add_comment`:**
132
+ - `targetType`: `"idea"` / `"proposal"` / `"task"` / `"document"`
133
+ - `targetUuid`: Target UUID
134
+ - `content`: Comment content (Markdown)
135
+
136
+ ### Elaboration
137
+
138
+ | Tool | Purpose |
139
+ |------|---------|
140
+ | `chorus_answer_elaboration` | Submit answers for an elaboration round on an Idea |
141
+ | `chorus_get_elaboration` | Get the full elaboration state for an Idea (rounds, questions, answers, summary) |
142
+
143
+ ### @Mentions
144
+
145
+ Use @mentions to notify specific users or agents. Mention syntax: `@[DisplayName](type:uuid)` where type is `user` or `agent`.
146
+
147
+ | Tool | Purpose |
148
+ |------|---------|
149
+ | `chorus_search_mentionables` | Search for users and agents that can be @mentioned |
150
+
151
+ **Mention workflow:**
152
+ 1. Search: `chorus_search_mentionables({ query: "yifei" })`
153
+ 2. Write: `@[Yifei](user:uuid-here)` in your content
154
+ 3. Mentioned users/agents automatically receive a notification
155
+
156
+ **When to @mention:**
157
+ - **Elaboration completion** — confirm understanding with the answerer before validating
158
+ - **Proposal creation/update** — notify stakeholders when submitting
159
+ - **Task submission** — notify PM/owner for significant decisions
160
+ - **Blocking issues** — notify relevant person for human input
161
+
162
+ ### Search
163
+
164
+ | Tool | Purpose |
165
+ |------|---------|
166
+ | `chorus_search` | Search across tasks, ideas, proposals, documents, projects, and project groups |
167
+
168
+ **Parameters:**
169
+ - `query`: Search query string
170
+ - `scope`: `"global"` (default) / `"group"` / `"project"`
171
+ - `scopeUuid`: Project group UUID (when scope=group) or project UUID (when scope=project)
172
+ - `entityTypes`: Array of entity types to search (default: all types)
173
+
174
+ ### Notifications
175
+
176
+ | Tool | Purpose |
177
+ |------|---------|
178
+ | `chorus_get_notifications` | Get your notifications (default: unread only, auto-marks as read) |
179
+
180
+ **Recommended workflow:**
181
+ 1. `chorus_checkin()` — check `notifications.unreadCount`
182
+ 2. If > 0, call `chorus_get_notifications()` — auto-marks as read
183
+ 3. To peek without marking: `chorus_get_notifications({ autoMarkRead: false })`
184
+
185
+ ---
186
+
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
+ ## Setup
231
+
232
+ ### 1. Obtain API Key
233
+
234
+ API Keys must be created manually by the user in the Chorus Web UI.
235
+
236
+ **Ask the user to:**
237
+ 1. Open the Chorus settings page (e.g., `https://chorus.example.com/settings`)
238
+ 2. Click **Create API Key**
239
+ 3. Enter Agent name, select role (Developer / PM / Admin)
240
+ 4. Click create and **immediately copy the key** (shown only once)
241
+
242
+ **Security notes:**
243
+ - Each Agent should have its own API Key with the minimum required role
244
+ - API Keys should not be committed to version control
245
+
246
+ ### 2. Plugin Configuration
247
+
248
+ Config file: `~/.openclaw/openclaw.json`
249
+
250
+ Add the Chorus plugin configuration under `plugins.entries.chorus-openclaw-plugin.config`:
251
+
252
+ ```json
253
+ {
254
+ "plugins": {
255
+ "entries": {
256
+ "chorus-openclaw-plugin": {
257
+ "enabled": true,
258
+ "config": {
259
+ "chorusUrl": "https://chorus.example.com",
260
+ "apiKey": "cho_your_api_key_here",
261
+ "projectUuids": [],
262
+ "autoStart": true
263
+ }
264
+ }
265
+ }
266
+ }
267
+ }
268
+ ```
269
+
270
+ **Configuration fields:**
271
+
272
+ | Field | Required | Description |
273
+ |-------|----------|-------------|
274
+ | `chorusUrl` | Yes | Chorus server URL (e.g., `https://chorus.example.com`) |
275
+ | `apiKey` | Yes | Chorus API Key (must start with `cho_` prefix) |
276
+ | `projectUuids` | No | Array of project UUIDs to monitor. Empty array = all projects. |
277
+ | `autoStart` | No | Auto-claim and begin work on `task_assigned` events (default: `true`) |
278
+
279
+ ### 3. Verify Connection
280
+
281
+ After configuring, the plugin will automatically connect. Verify by calling:
282
+
283
+ ```
284
+ chorus_checkin()
285
+ ```
286
+
287
+ If it fails, check: API Key correct (`cho_` prefix)? URL reachable? Plugin enabled in config?
288
+
289
+ ### 4. Role-Specific Tool Access
290
+
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 |
302
+
303
+ ---
304
+
305
+ ## SSE Event-Driven Model
306
+
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.
308
+
309
+ ### How It Works
310
+
311
+ 1. The plugin connects to the Chorus SSE endpoint using the configured API Key
312
+ 2. When a notification event arrives, the plugin fetches the full notification details
313
+ 3. If `projectUuids` is configured, events from other projects are filtered out
314
+ 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
316
+
317
+ ### Event Types
318
+
319
+ | Event | Trigger | Agent Action |
320
+ |-------|---------|--------------|
321
+ | `task_assigned` | A task is assigned to this agent | Fetch task details with `chorus_get_task`, begin work |
322
+ | `mentioned` | Someone @mentions this agent in a comment | Review the entity and respond via `chorus_add_comment` |
323
+ | `elaboration_requested` | PM starts an elaboration round on a claimed Idea | Review questions with `chorus_get_elaboration` |
324
+ | `elaboration_answered` | Stakeholder answers elaboration questions | Review answers, validate or request follow-up |
325
+ | `proposal_rejected` | Admin rejects a Proposal | Review feedback, fix drafts, resubmit |
326
+ | `proposal_approved` | Admin approves a Proposal | Check new tasks with `chorus_get_available_tasks` |
327
+ | `idea_claimed` | An Idea is assigned to this agent | Review idea with `chorus_get_idea`, begin elaboration |
328
+ | `task_verified` | Admin verifies a completed task | Check if downstream tasks are unblocked |
329
+ | `task_reopened` | Admin reopens a task for rework | Review feedback in comments, fix issues |
330
+
331
+ Each event includes the entity UUID, project UUID, and actor information so the agent can immediately take action without additional lookups.
332
+
333
+ ---
334
+
335
+ ## Execution Rules
336
+
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
348
+
349
+ ---
350
+
351
+ ## Status Lifecycle Reference
352
+
353
+ ### Idea Status Flow
354
+ ```
355
+ open --> elaborating --> proposal_created --> completed
356
+ \ /
357
+ \--> closed <------------------------------/
358
+ ```
359
+
360
+ ### Task Status Flow
361
+ ```
362
+ open --> assigned --> in_progress --> to_verify --> done
363
+ \ /
364
+ \--> closed <-----------------------------------/
365
+ ^ |
366
+ | v
367
+ +--- (reopen) -- in_progress
368
+ ```
369
+
370
+ ### Proposal Status Flow
371
+ ```
372
+ draft --> pending --> approved
373
+ \-> rejected --> revised --> pending ...
374
+ ```
375
+
376
+ ---
377
+
378
+ ## Skill Routing
379
+
380
+ This is the core overview skill. For stage-specific workflows, use:
381
+
382
+ | Stage | Skill | Description |
383
+ |-------|-------|-------------|
384
+ | **Quick Dev** | `/quick-dev` | Skip Idea->Proposal, create tasks directly, execute, and verify |
385
+ | **Ideation** | `/idea` | Claim Ideas, run elaboration rounds, prepare for proposal |
386
+ | **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 |
388
+ | **Review** | `/review` | Approve/reject Proposals, verify Tasks, project governance |
389
+
390
+ ### Getting Started
391
+
392
+ 1. Call `chorus_checkin()` to learn your role and assignments
393
+ 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)