@chorus-aidlc/chorus-openclaw-plugin 0.4.0 → 0.5.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.
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 +113 -96
  38. package/skills/develop/SKILL.md +195 -51
  39. package/skills/idea/SKILL.md +136 -149
  40. package/skills/openspec-aware/SKILL.md +425 -0
  41. package/skills/proposal/SKILL.md +155 -157
  42. package/skills/proposal-reviewer/SKILL.md +117 -0
  43. package/skills/quick-dev/SKILL.md +31 -7
  44. package/skills/review/SKILL.md +105 -33
  45. package/skills/task-reviewer/SKILL.md +113 -0
  46. package/skills/yolo/SKILL.md +498 -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,15 +1,20 @@
1
1
  ---
2
2
  name: quick-dev
3
3
  description: Quick Task workflow — skip Idea→Proposal, create tasks directly, execute, and verify.
4
+ license: AGPL-3.0
4
5
  metadata:
5
- openclaw:
6
- emoji: ""
6
+ author: chorus
7
+ version: "0.9.0"
8
+ category: project-management
9
+ mcp_server: chorus
7
10
  ---
8
11
 
9
12
  # Quick Dev Skill
10
13
 
11
14
  Skip the full AI-DLC pipeline (Idea → Elaboration → Proposal → Approval) and create tasks directly. Ideal for small, well-understood work. The goal is for agents to **autonomously record their development work and verify task completion** through structured acceptance criteria.
12
15
 
16
+ > **Tool namespace:** Chorus tools are exposed by the connected MCP server under a `chorus__` prefix on OpenClaw (e.g. `chorus__chorus_create_tasks`). Bare names are used below for readability — prepend `chorus__` when invoking. See `/chorus` for the full rule.
17
+
13
18
  ---
14
19
 
15
20
  ## Overview
@@ -39,9 +44,9 @@ For complex work, use `/idea` + `/proposal` instead.
39
44
 
40
45
  ## Pre-Flight: Admin Self-Verify Check
41
46
 
42
- **Before creating tasks**, if you have the `admin_agent` role, ask the user:
47
+ **Before creating tasks**, if `chorus_checkin().agent.permissions.task` includes `"admin"`, ask the user (as a **plain-text prompt** — OpenClaw has no `AskUserQuestion`):
43
48
 
44
- > "I have admin privileges. After development, should I verify the task myself, or leave it for another admin to verify?"
49
+ > "I have admin privileges. After development, should I verify the task myself, or leave it for another admin to verify? Reply 'self' or 'other'."
45
50
 
46
51
  This matters because admin agents can call `chorus_admin_verify_task` to close the loop autonomously. If the user approves self-verification, you can complete the entire create → develop → verify cycle without human intervention. Record the decision and apply it in Step 7.
47
52
 
@@ -115,12 +120,18 @@ chorus_update_task({
115
120
  chorus_update_task({ taskUuid: "<task-uuid>", status: "in_progress" })
116
121
  ```
117
122
 
123
+ **Sub-agents:** create your own session first (manual on OpenClaw — see `/develop`), then pass `sessionUuid` for attribution:
124
+ ```
125
+ chorus_update_task({ taskUuid: "<task-uuid>", status: "in_progress", sessionUuid: "<session-uuid>" })
126
+ ```
127
+
118
128
  ### Step 5: Report Progress
119
129
 
120
130
  ```
121
131
  chorus_report_work({
122
132
  taskUuid: "<task-uuid>",
123
- report: "Fixed Safari cookie issue:\n- Root cause: SameSite=Strict incompatible with redirect\n- Changed to SameSite=Lax\n- Commit: abc1234"
133
+ report: "Fixed Safari cookie issue:\n- Root cause: SameSite=Strict incompatible with redirect\n- Changed to SameSite=Lax\n- Commit: abc1234",
134
+ sessionUuid: "<session-uuid>"
124
135
  })
125
136
  ```
126
137
 
@@ -145,7 +156,7 @@ chorus_submit_for_verify({
145
156
  })
146
157
  ```
147
158
 
148
- **Admin self-verification:** If you have the `admin_agent` role and the user approved self-verification in the Pre-Flight check, you can verify the task yourself immediately after submitting:
159
+ **Admin self-verification:** If you have `task: ["admin"]` in `permissions` and the user approved self-verification in the Pre-Flight check, you can verify the task yourself immediately after submitting:
149
160
 
150
161
  ```
151
162
  chorus_admin_verify_task({ taskUuid: "<task-uuid>" })
@@ -153,6 +164,19 @@ chorus_admin_verify_task({ taskUuid: "<task-uuid>" })
153
164
 
154
165
  This completes the full autonomous cycle: create → develop → verify → done.
155
166
 
167
+ > **Optional independent review:** for non-trivial quick tasks you may still run the `/task-reviewer` skill in a spawned sub-agent (`sessions_spawn` with a task telling it to run `/task-reviewer` against the taskUuid, then wait for the VERDICT) or do a focused read-only self-review before verifying — same pattern as `/develop` Step 8.5. There is no PostToolUse hook on OpenClaw, so do this inline if you want it.
168
+
169
+ ---
170
+
171
+ ## Session Integration
172
+
173
+ Quick Tasks support sub-agent execution just like proposal-based tasks. **Session lifecycle is manual on OpenClaw** (no SubagentStart/heartbeat/cleanup hooks):
174
+
175
+ - **Main agent**: create quick tasks, work them yourself, or hand task UUIDs to sub-agents
176
+ - **Sub-agents**: create your own session (`chorus_create_session`), checkin/checkout per task, pass `sessionUuid` to `chorus_update_task` / `chorus_report_work`, and close the session on exit — see `/develop` for the full manual protocol
177
+
178
+ > OpenClaw has no Agent Teams / `TeamCreate` primitive; if you need to run several quick tasks, work them sequentially as the main agent (or dispatch generic sub-agents one at a time).
179
+
156
180
  ---
157
181
 
158
182
  ## Tips
@@ -162,7 +186,7 @@ This completes the full autonomous cycle: create → develop → verify → done
162
186
  - Use `chorus_update_task` to refine tasks (including AC) after creation rather than deleting and recreating
163
187
  - Pass `proposalUuid` to attach follow-up or gap-filling tasks to an existing proposal — this keeps related work grouped in the same project context and DAG
164
188
  - Quick Tasks show up in the same project task list and DAG as proposal-based tasks
165
- - Admin agents can run the full lifecycle autonomously (create → develop → self-verify) — but always confirm with the user first
189
+ - Admin agents can run the full lifecycle autonomously (create → develop → self-verify) — but always confirm with the user first (plain-text prompt)
166
190
 
167
191
  ---
168
192
 
@@ -1,15 +1,20 @@
1
1
  ---
2
2
  name: review
3
- description: Chorus Review workflow — approve/reject proposals, verify tasks, and manage governance.
3
+ description: Chorus Review workflow — approve/reject proposals, verify tasks, and manage project governance.
4
+ license: AGPL-3.0
4
5
  metadata:
5
- openclaw:
6
- emoji: ""
6
+ author: chorus
7
+ version: "0.9.0"
8
+ category: project-management
9
+ mcp_server: chorus
7
10
  ---
8
11
 
9
12
  # Review Skill
10
13
 
11
14
  This skill covers the **Review** stage of the AI-DLC workflow: approving or rejecting Proposals, verifying completed Tasks, and managing overall project governance as an Admin Agent.
12
15
 
16
+ > **Tool namespace:** Chorus tools are exposed by the connected MCP server under a `chorus__` prefix on OpenClaw (e.g. `chorus__chorus_admin_verify_task`). Bare names are used below for readability — prepend `chorus__` when invoking. See `/chorus` for the full rule.
17
+
13
18
  ---
14
19
 
15
20
  ## Overview
@@ -19,7 +24,7 @@ Admin Agent has **full access to all Chorus operations**. You are the **human pr
19
24
  Key responsibilities:
20
25
  - **Proposal review** — approve or reject Proposals submitted by PM Agents (see `/proposal`)
21
26
  - **Task verification** — verify or reopen Tasks submitted by Developer Agents (see `/develop`)
22
- - **Project governance** — create projects, manage groups, organize work
27
+ - **Project governance** — create projects/ideas, manage groups, close/delete entities
23
28
 
24
29
  ---
25
30
 
@@ -30,28 +35,45 @@ Key responsibilities:
30
35
  | Tool | Purpose |
31
36
  |------|---------|
32
37
  | `chorus_admin_create_project` | Create a new project (optional `groupUuid` for group assignment) |
33
- | `chorus_admin_create_project_group` | Create a new project group for organizing projects |
34
38
  | `chorus_admin_approve_proposal` | Approve proposal (materializes documents + tasks) |
35
39
  | `chorus_admin_verify_task` | Verify completed task (to_verify -> done). Blocked if required AC not all passed. |
36
40
  | `chorus_mark_acceptance_criteria` | Mark acceptance criteria as passed/failed during verification (batch) |
41
+ | `chorus_admin_reopen_task` | Reopen task for rework (to_verify -> in_progress) |
42
+ | `chorus_admin_close_task` | Close task (any state -> closed) |
43
+ | `chorus_admin_close_idea` | Close idea (any state -> closed) |
44
+ | `chorus_admin_delete_idea` | Delete an idea permanently |
45
+ | `chorus_admin_delete_task` | Delete a task permanently |
46
+ | `chorus_admin_delete_document` | Delete a document permanently |
47
+ | `chorus_admin_create_project_group` | Create a new project group |
48
+ | `chorus_admin_update_project_group` | Update a project group (name, description) |
49
+ | `chorus_admin_delete_project_group` | Delete a project group (projects become ungrouped) |
50
+ | `chorus_admin_move_project_to_group` | Move a project to a group or ungroup it |
51
+
52
+ **PM + Admin (proposal reject/revoke):**
37
53
 
38
- **All PM tools** (`chorus_pm_*`, `chorus_*_idea`) and **all Developer tools** (`chorus_claim_task`, `chorus_report_work`, etc.) are also available to Admin.
54
+ | Tool | Purpose |
55
+ |------|---------|
56
+ | `chorus_pm_reject_proposal` | Reject a pending proposal (pending -> draft). PM: own proposals only. Admin: any proposal. |
57
+ | `chorus_pm_revoke_proposal` | Revoke an approved proposal (approved -> draft). Cascade-closes tasks, deletes documents. PM: own only. Admin: any. |
58
+
59
+ **All PM tools** (`chorus_pm_*`, `chorus_*_idea`) and **all Developer tools** (`chorus_*_task`, `chorus_report_work`) are also available to Admin.
39
60
 
40
61
  **Shared tools** (checkin, query, comment, search, notifications): see `/chorus`
41
62
 
42
63
  ---
43
64
 
44
- ## SSE Wake Events
45
-
46
- The OpenClaw plugin listens for SSE events relevant to admin review:
65
+ ## Review Strategy
47
66
 
48
- | SSE Event | Trigger | Agent Action |
49
- |-----------|---------|--------------|
50
- | `task_assigned` | A task is assigned to you | Wake and review/start work |
51
- | `mentioned` | You are @mentioned in a comment | Wake and respond |
52
- | `proposal_approved` / `proposal_rejected` | Proposal status changed | Informational — check new tasks or feedback |
67
+ When reviewing proposals or tasks, get an independent VERDICT before approving/verifying. On OpenClaw there is **no PostToolUse hook** to remind you — invoke the review yourself, inline.
53
68
 
54
- When tasks are submitted for verification or proposals are submitted for review, the admin agent is woken to process them.
69
+ 1. **Preferred spawn a reviewer sub-agent.** Use the OpenClaw `sessions_spawn` tool to spawn a sub-agent whose `task` tells it to **invoke the `/proposal-reviewer` skill** (for proposals) or the `/task-reviewer` skill (for tasks) — both bundled with this plugin — against the entity. Wait for it (poll the `subagents` tool or use `sessions_yield` — do NOT detach; you must have the VERDICT before proceeding). The sub-agent inherits the plugin skills, so the reviewer skill is available to it; it posts a VERDICT comment with detailed findings. Example task prompt: `Run the /proposal-reviewer skill to review proposalUuid <uuid>; post your VERDICT comment when done.`
70
+ 2. **Read the VERDICT.** After the reviewer completes, call `chorus_get_comments` and find the most recent comment containing `VERDICT:`. There are exactly three possible outcomes:
71
+ - **VERDICT: PASS** — No issues found. Approve (proposals) or mark AC passed and verify (tasks).
72
+ - **VERDICT: PASS WITH NOTES** — Minor non-blocking notes. Still approve/verify. Notes are informational.
73
+ - **VERDICT: FAIL** — BLOCKERs found. Reject (proposals) or reopen (tasks). Fix the specific BLOCKERs listed in the comment before resubmitting.
74
+ 3. **No new VERDICT comment?** The sub-agent exhausted its turn budget before posting. Respawn it ONCE with an explicit prompt like: *"Stay within your turn budget. Skip deep source verification — batch all MCP fetches up front, skim for obvious BLOCKERs only, and reserve your last few turns to post the VERDICT comment."* If the second attempt also fails to post, review manually (step 5).
75
+ 4. **Track rounds.** Count existing VERDICT comments before spawning. After 3 rounds of FAIL on the same item, stop the loop and escalate to human review.
76
+ 5. **Fallback — review it yourself (no `sessions_spawn` on the host).** If spawning is unavailable (disabled by policy, or the spawn fails), perform the review yourself as a **focused, read-only pass** using the quality checklists in the workflows below: read the entity, its comments, and the relevant documents/code, run read-only test/build commands where applicable, and do NOT modify anything. Then record your VERDICT via `chorus_add_comment` ending with a `VERDICT:` line (PASS / PASS WITH NOTES / FAIL), classifying every finding as BLOCKER or NOTE. The `/proposal-reviewer` and `/task-reviewer` skills are the authoritative checklists for this manual pass — read them and follow their procedure.
55
77
 
56
78
  ---
57
79
 
@@ -121,6 +143,10 @@ This returns: title, description, input ideas, **document drafts** (PRD, tech de
121
143
  chorus_get_comments({ targetType: "proposal", targetUuid: "<proposal-uuid>" })
122
144
  ```
123
145
 
146
+ #### A3.5: Independent Review
147
+
148
+ Get a VERDICT per the [Review Strategy](#review-strategy) above — spawn a sub-agent via `sessions_spawn` and have it run the `/proposal-reviewer` skill (wait for it), otherwise review yourself as a read-only pass and post the VERDICT. Read its VERDICT comment before proceeding.
149
+
124
150
  #### A4: Approve or Reject
125
151
 
126
152
  **Approve:**
@@ -140,16 +166,32 @@ When approved:
140
166
 
141
167
  **Reject:**
142
168
 
143
- Rejection is done by adding a comment with specific feedback. The PM agent will see the comment and can revise the proposal.
144
-
145
169
  ```
170
+ chorus_pm_reject_proposal({
171
+ proposalUuid: "<proposal-uuid>",
172
+ reviewNote: "PRD missing error handling requirements. Task 3 needs clearer AC."
173
+ })
174
+
146
175
  chorus_add_comment({
147
176
  targetType: "proposal",
148
177
  targetUuid: "<proposal-uuid>",
149
- content: "Rejecting — specific feedback:\n1. Add error scenarios to PRD\n2. Task 3 AC should include performance benchmarks"
178
+ content: "Specific feedback:\n1. Add error scenarios to PRD\n2. Task 3 AC should include performance benchmarks"
150
179
  })
151
180
  ```
152
181
 
182
+ ### Workflow A2: Revoking Approved Proposals
183
+
184
+ If an approved Proposal's direction turns out to be wrong, use `chorus_pm_revoke_proposal` to undo the approval. Unlike `reject` (which acts on pending proposals), `revoke` acts on already-approved proposals and rolls back all materialized resources.
185
+
186
+ ```
187
+ chorus_pm_revoke_proposal({
188
+ proposalUuid: "<proposal-uuid>",
189
+ reviewNote: "Requirements changed — original approach no longer viable."
190
+ })
191
+ ```
192
+
193
+ Cascade effects: all materialized Tasks are closed, all materialized Documents are deleted, and related AcceptanceCriteria/TaskDependencies/SessionCheckins are cleaned up. The Proposal returns to `draft` status so the PM can revise and resubmit.
194
+
153
195
  ### Workflow B: Task Verification
154
196
 
155
197
  #### B1: Review the Submitted Task
@@ -158,7 +200,7 @@ chorus_add_comment({
158
200
  chorus_get_task({ taskUuid: "<task-uuid>" })
159
201
  ```
160
202
 
161
- Check: developer's work summary, acceptance criteria, self-check results (devStatus and devEvidence on each criterion).
203
+ Check: developer's work summary, acceptance criteria, self-check results.
162
204
 
163
205
  #### B2: Read Comments and Work Reports
164
206
 
@@ -166,7 +208,12 @@ Check: developer's work summary, acceptance criteria, self-check results (devSta
166
208
  chorus_get_comments({ targetType: "task", targetUuid: "<task-uuid>" })
167
209
  ```
168
210
 
169
- Work reports are recorded as comments — look for implementation details, files changed, commits, and PRs.
211
+ #### B2.5: Independent Review
212
+
213
+ Get a VERDICT per the [Review Strategy](#review-strategy) above — spawn a sub-agent via `sessions_spawn` and have it run the `/task-reviewer` skill (wait for it), otherwise review yourself as a read-only pass and post the VERDICT. After it completes, read its VERDICT:
214
+
215
+ - **VERDICT: PASS** or **PASS WITH NOTES** → proceed to B3 (mark AC) and B4 (verify).
216
+ - **VERDICT: FAIL** → skip to B4 and **reopen** the task. Do NOT mark AC as passed.
170
217
 
171
218
  #### B3: Mark Acceptance Criteria
172
219
 
@@ -199,19 +246,31 @@ chorus_get_unblocked_tasks({ projectUuid: "<project-uuid>" })
199
246
 
200
247
  If new tasks are unblocked, assign them or notify developers.
201
248
 
202
- **Request rework:**
203
-
204
- If the task needs fixes, add a comment with specific feedback:
249
+ **Reopen (needs fixes):**
205
250
 
206
251
  ```
252
+ chorus_admin_reopen_task({ taskUuid: "<task-uuid>" })
253
+
207
254
  chorus_add_comment({
208
255
  targetType: "task",
209
256
  targetUuid: "<task-uuid>",
210
- content: "Needs rework: Missing error handling for user-not-found edge case."
257
+ content: "Reopened: Missing error handling for user-not-found edge case."
211
258
  })
212
259
  ```
213
260
 
214
- ### Workflow C: Project Management
261
+ The task returns to `in_progress`. All acceptance criteria are reset.
262
+
263
+ #### B5: Close / Delete Tasks
264
+
265
+ ```
266
+ # Close (preserves history)
267
+ chorus_admin_close_task({ taskUuid: "<task-uuid>" })
268
+
269
+ # Delete (permanent, use sparingly)
270
+ chorus_admin_delete_task({ taskUuid: "<task-uuid>" })
271
+ ```
272
+
273
+ ### Workflow C: Project & Idea Management
215
274
 
216
275
  #### Create Project
217
276
 
@@ -228,14 +287,25 @@ chorus_admin_create_project({
228
287
 
229
288
  ```
230
289
  chorus_admin_create_project_group({ name: "Mobile Apps", description: "All mobile projects" })
290
+ chorus_admin_move_project_to_group({ projectUuid: "<uuid>", groupUuid: "<uuid>" })
291
+ chorus_admin_move_project_to_group({ projectUuid: "<uuid>", groupUuid: null }) # Ungroup
292
+ chorus_admin_delete_project_group({ groupUuid: "<uuid>" }) # Projects become ungrouped
293
+ ```
294
+
295
+ #### Close / Delete Ideas
296
+
297
+ ```
298
+ chorus_admin_close_idea({ ideaUuid: "<idea-uuid>" })
299
+ chorus_admin_delete_idea({ ideaUuid: "<idea-uuid>" })
231
300
  ```
232
301
 
233
- #### Assign Tasks
302
+ > **Note:** Creating ideas is a PM tool (`chorus_pm_create_idea`). See `/idea`.
234
303
 
235
- Use the PM tool to assign tasks to specific agents:
304
+ #### Document Management
236
305
 
237
306
  ```
238
- chorus_pm_assign_task({ taskUuid: "<task-uuid>", assigneeUuid: "<agent-uuid>", assigneeType: "agent" })
307
+ chorus_admin_delete_document({ documentUuid: "<doc-uuid>" })
308
+ chorus_pm_update_document({ documentUuid: "<doc-uuid>", content: "Updated..." })
239
309
  ```
240
310
 
241
311
  ---
@@ -245,7 +315,7 @@ chorus_pm_assign_task({ taskUuid: "<task-uuid>", assigneeUuid: "<agent-uuid>", a
245
315
  1. **Check in** — `chorus_checkin()`
246
316
  2. **Review activity** — `chorus_get_activity()` for recent events
247
317
  3. **Process proposals** — Review and approve/reject pending proposals
248
- 4. **Verify tasks** — Review and verify tasks in `to_verify`
318
+ 4. **Verify tasks** — Review and verify/reopen tasks in `to_verify`
249
319
  5. **Create new ideas** — If the human has new requirements
250
320
  6. **Check project health** — Stale tasks? Blocked items? Orphaned ideas?
251
321
 
@@ -254,11 +324,13 @@ chorus_pm_assign_task({ taskUuid: "<task-uuid>", assigneeUuid: "<agent-uuid>", a
254
324
  ## Tips
255
325
 
256
326
  - **Review thoroughly** — Don't rubber-stamp proposals; check quality
257
- - **Give actionable feedback** — When requesting changes, explain specifically what to fix
327
+ - **Give actionable feedback** — When rejecting, explain specifically what to fix
258
328
  - **Verify against criteria** — Check acceptance criteria, not just the summary
329
+ - **Manage scope** — Close ideas and tasks that are no longer relevant
259
330
  - **Unblock the team** — Prioritize proposal reviews to keep PM and Developer work flowing
331
+ - **Use delete sparingly** — Prefer closing over deleting; closing preserves history
260
332
  - **Document decisions** — Use comments to explain approval/rejection reasoning
261
- - **Check downstream** — After verifying a task, check `chorus_get_unblocked_tasks` to see what was unblocked
333
+ - **Verify between waves** — In sequential wave execution, verify tasks to `done` between waves to unblock downstream dependencies
262
334
 
263
335
  ---
264
336
 
@@ -267,9 +339,9 @@ chorus_pm_assign_task({ taskUuid: "<task-uuid>", assigneeUuid: "<agent-uuid>", a
267
339
  1. **Quality over speed** — A rejected proposal now saves rework later
268
340
  2. **Actionable feedback** — Every rejection should include specific fixes
269
341
  3. **Criteria-based verification** — Verify against acceptance criteria, not just subjective impression
270
- 4. **Scope discipline** — Keep work focused on what was planned
342
+ 4. **Scope discipline** — Close what's no longer needed, don't let orphaned items pile up
271
343
  5. **Unblock others** — Your reviews are the bottleneck; prioritize them
272
- 6. **Preserve history** — Comments and decisions help future agents understand reasoning
344
+ 6. **Preserve history** — Close > Delete; comments > silent actions
273
345
  7. **Document reasoning** — Future agents will read your comments to understand decisions
274
346
 
275
347
  ---
@@ -0,0 +1,113 @@
1
+ ---
2
+ name: task-reviewer
3
+ description: Adversarial verification of a submitted Chorus task against its AC and proposal documents — read the code, verify each criterion, run tests. Invoke after a task is submitted for verify; ends with a VERDICT comment.
4
+ license: AGPL-3.0
5
+ metadata:
6
+ author: chorus
7
+ version: "0.9.0"
8
+ category: project-management
9
+ mcp_server: chorus
10
+ ---
11
+
12
+ # Task Reviewer Skill
13
+
14
+ You have been asked to **verify a submitted Chorus task**. Your job is **not** to confirm the implementation works — it's to find where it doesn't match the requirements.
15
+
16
+ > **How you were invoked.** A developer/orchestrator agent spawned you (via the OpenClaw `sessions_spawn` tool) and told you to run this skill against a specific `taskUuid`. Read it from your task prompt. When you finish, you post one `VERDICT:` comment back to the task — that comment IS your deliverable; the parent reads it.
17
+
18
+ > **Tool namespace.** Chorus tools come from the connected MCP server under a `chorus__` prefix (e.g. `chorus__chorus_get_task`, `chorus__chorus_add_comment`). Bare names are used below for readability — prepend `chorus__` when invoking.
19
+
20
+ ## Hard rules (READ-ONLY, except read-only Bash)
21
+
22
+ - **You CANNOT edit, write, or create files** in the project directory. Do NOT modify any entity except posting your one review comment.
23
+ - **Bash is READ-ONLY:** only test/build/lint commands and inspection (`cat`/`head`/`tail`/`wc`/`diff`, `grep`/`rg`/`ls`/`find`, `git diff`/`git log`/`git show`). **Strictly forbidden:** `git add`/`commit`/`push`/`checkout`/`reset`; `rm`/`mv`/`cp`/`echo >`/`tee`/`sed -i`; package installs (`npm install`, `pnpm add`, `pip install`); `curl -X POST/PUT/DELETE`.
24
+ - **Keep your comment under 800 characters.** PASS items: names only. NOTE items: one-line. BLOCKER items: command + output + evidence.
25
+ - **Classify every finding** as BLOCKER (blocks correctness: build/test failure, AC not implemented, semantic contradiction) or NOTE (non-blocking: pseudocode mismatch, wording difference, style).
26
+ - **End with a single line beginning `VERDICT:`** — exactly one of `PASS`, `PASS WITH NOTES`, `FAIL`. Has BLOCKERs → FAIL. Only NOTEs → PASS WITH NOTES. Nothing → PASS.
27
+ - **Round 2+:** focus ONLY on whether previous BLOCKERs were fixed. Do NOT introduce new NOTEs.
28
+ - **Budget rule:** if running low on turns/time, STOP reading files AND stop running bash/tests immediately and post your current findings via `chorus_add_comment`. Incomplete findings posted beat no comment.
29
+ - **Do NOT confirm — find what's wrong.** Batch data gathering, then one final comment.
30
+
31
+ You have two failure patterns. **Verification avoidance**: reading code, narrating what you would test, writing "PASS," never actually running anything. **Being seduced by the first 80%**: passing tests + clean code, not noticing AC are only superficially met, the implementation diverges from proposal documents, or edge cases silently fail. The developer is an LLM — its self-tests may be circular (testing mocks, not behavior).
32
+
33
+ ## What you receive
34
+
35
+ A `taskUuid` (in your task prompt). Fetch the task, its AC, and the proposal documents, then independently verify the implementation.
36
+
37
+ ## Review procedure
38
+
39
+ **Efficiency rule:** Gather ALL context in Steps 1–2 before verifying. Batch tool calls — do not alternate between fetching and concluding.
40
+
41
+ **Step 1: Gather context**
42
+ ```
43
+ chorus_get_task({ taskUuid: "<uuid>" })
44
+ chorus_get_comments({ targetType: "task", targetUuid: "<uuid>" })
45
+ chorus_get_proposal({ proposalUuid: "<from-task>" })
46
+ chorus_get_document({ documentUuid: "<doc-uuid>" })
47
+ ```
48
+
49
+ **Step 2: Read the code.** Use Glob/Grep to find relevant files, then read them. Do NOT rely on the developer's summary — read the code yourself.
50
+
51
+ **Step 3: Verify each AC independently.** For EACH acceptance criterion: (1) read what it requires, word by word; (2) find the code that implements it; (3) run a verification command if possible; (4) determine PASS or FAIL with evidence. Do NOT batch AC as "all look good." Check each one.
52
+
53
+ **Step 4: Cross-reference with proposal documents.** Does the PRD mention fields, behaviors, or error scenarios not covered by any AC? Does the tech design specify contracts the code doesn't follow?
54
+
55
+ **Step 5: Run tests/build if available.** A broken build or failing tests is an automatic FAIL. Test results are context, not proof — verify AC independently after noting results.
56
+
57
+ **Step 6: Adversarial probes.** Pick 2–3 probes that fit the task: boundary values, missing fields, error paths, concurrency. Run them — don't just describe them.
58
+
59
+ **Hallucination check:** Flag anything that looks LLM-fabricated as NOTE — API signatures, CLI flags, config keys, model IDs, endpoint URLs, package names, or any external detail the developer likely wrote from memory.
60
+
61
+ ## Finding classification
62
+
63
+ **BLOCKER** — blocks correctness: AC not actually implemented; build or test failures; implementation diverges from proposal documents (semantic contradiction); edge cases causing runtime errors; missing error handling for required scenarios.
64
+
65
+ **NOTE** — does not block: pseudocode signature mismatch; wording differences between docs and comments; style/naming suggestions; non-semantic inconsistencies.
66
+
67
+ Rules: Pseudocode inconsistencies → always NOTE. Cross-document wording differences → always NOTE. Only functional/behavioral issues → BLOCKER. VERDICT: has BLOCKERs → FAIL; only NOTEs → PASS WITH NOTES; nothing → PASS.
68
+
69
+ ## Round awareness
70
+
71
+ - **Round 1**: full review, normal strictness.
72
+ - **Round 2+**: focus ONLY on whether previous BLOCKERs were fixed. Do NOT introduce new NOTEs on unflagged areas. If all previous BLOCKERs resolved → VERDICT: PASS (or PASS WITH NOTES if old NOTEs remain). Re-read only the specific files and re-run only the specific tests tied to previous BLOCKERs — do not re-scan unrelated code or rerun the full suite. Trusting the developer's diff summary without targeted re-verification is the "verification avoidance" anti-pattern.
73
+
74
+ ## Recognize your own rationalizations
75
+
76
+ - "The code looks correct based on my reading" — reading is not verification. Run it.
77
+ - "The developer's tests already pass" — the developer is an LLM. Verify independently.
78
+ - "This AC is probably met" — probably is not verified. Find the specific code and check.
79
+ - "The API call looks right" — for external API/SDK calls, request execution evidence (run logs, test output, errors). If none and you cannot run it, flag as NOTE.
80
+
81
+ ## Output format (required)
82
+
83
+ ```
84
+ ### Review Summary
85
+
86
+ **PASS (N):** AC-1 name, AC-2 name, ...
87
+
88
+ **NOTE (M):**
89
+ - Note-1: [one-line description]
90
+
91
+ **BLOCKER (K):**
92
+ ### Blocker-1: name
93
+ **Command run:** [exact command executed]
94
+ **Output observed:** [actual output — copy-paste, not paraphrased]
95
+ **Evidence:** [file paths, line numbers]
96
+ **Expected:** [expected behavior]
97
+ **Actual:** [actual behavior]
98
+
99
+ VERDICT: PASS / PASS WITH NOTES / FAIL
100
+ ```
101
+
102
+ PASS items: names only. NOTE items: one-line. BLOCKER items: full command/output/evidence. Total under 800 chars. No preamble. The final line MUST start with `VERDICT:`.
103
+
104
+ ## Post results
105
+
106
+ Post the full review as a single comment, then you are done:
107
+ ```
108
+ chorus_add_comment({
109
+ targetType: "task",
110
+ targetUuid: "<task-uuid>",
111
+ content: "<your review>"
112
+ })
113
+ ```