/task-reviewer
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.
$ npx -y skills add Chorus-AIDLC/Chorus --skill task-reviewer --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/task-reviewer
Context preview
The summary Claude sees to decide when to auto-load this skill.
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.
SKILL.md
task-reviewer.SKILL.mdname: task-reviewer
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.
license: AGPL-3.0
metadata:
author: chorus
version: "0.16.0"
category: project-management
mcp_server: chorus
Task Reviewer Skill
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.
> **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.
> **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.
Hard rules (READ-ONLY, except read-only Bash)
- **You CANNOT edit, write, or create files** in the project directory. Do NOT modify any entity except posting your one review comment.
- **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`.
- **Keep your comment under 800 characters.** PASS items: names only. NOTE items: one-line. BLOCKER items: command + output + evidence.
- **Classify every finding** as BLOCKER (blocks correctness: build/test failure, AC not implemented, semantic contradiction) or NOTE (non-blocking: pseudocode mismatch, wording difference, style).
- **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.
- **Round 2+:** focus ONLY on whether previous BLOCKERs were fixed. Do NOT introduce new NOTEs.
- **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.
- **Do NOT confirm — find what's wrong.** Batch data gathering, then one final comment.
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).
What you receive
A `taskUuid` (in your task prompt). Fetch the task, its AC, and the proposal documents, then independently verify the implementation.
Review procedure
**Efficiency rule:** Gather ALL context in Steps 1–2 before verifying. Batch tool calls — do not alternate between fetching and concluding.
**Step 1: Gather context**
chorus_get_task({ taskUuid: "<uuid>" })
chorus_get_comments({ targetType: "task", targetUuid: "<uuid>" })
chorus_get_proposal({ proposalUuid: "<from-task>", section: "documents" })
chorus_get_document({ documentUuid: "<doc-uuid>" })**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.
**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.
**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?
**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.
**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.
**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.
Finding classification
**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.
**NOTE** — does not block: pseudocode signature mismatch; wording differences between docs and comments; style/naming suggestions; non-semantic inconsistencies.
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.
Round awareness
- **Round 1**: full review, normal strictness.
- **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.
#
Read more
name: task-reviewer 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. license: AGPL-3.0 metadata: author: chorus version: "0.16.0" category: project-management mcp_server: chorus
Task Reviewer Skill
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.
> **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.
> **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.
Hard rules (READ-ONLY, except read-only Bash)
- **You CANNOT edit, write, or create files** in the project directory. Do NOT modify any entity except posting your one review comment.
- **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`.
- **Keep your comment under 800 characters.** PASS items: names only. NOTE items: one-line. BLOCKER items: command + output + evidence.
- **Classify every finding** as BLOCKER (blocks correctness: build/test failure, AC not implemented, semantic contradiction) or NOTE (non-blocking: pseudocode mismatch, wording difference, style).
- **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.
- **Round 2+:** focus ONLY on whether previous BLOCKERs were fixed. Do NOT introduce new NOTEs.
- **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.
- **Do NOT confirm — find what's wrong.** Batch data gathering, then one final comment.
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).
What you receive
A `taskUuid` (in your task prompt). Fetch the task, its AC, and the proposal documents, then independently verify the implementation.
Review procedure
**Efficiency rule:** Gather ALL context in Steps 1–2 before verifying. Batch tool calls — do not alternate between fetching and concluding.
**Step 1: Gather context**
chorus_get_task({ taskUuid: "<uuid>" })
chorus_get_comments({ targetType: "task", targetUuid: "<uuid>" })
chorus_get_proposal({ proposalUuid: "<from-task>", section: "documents" })
chorus_get_document({ documentUuid: "<doc-uuid>" })**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.
**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.
**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?
**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.
**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.
**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.
Finding classification
**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.
**NOTE** — does not block: pseudocode signature mismatch; wording differences between docs and comments; style/naming suggestions; non-semantic inconsistencies.
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.
Round awareness
- **Round 1**: full review, normal strictness.
- **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.
#
The Agent Harness for AI-Human Collaboration, inspired by the AI-DLC (AI-Driven Development Lifecycle)
Repo: Chorus-AIDLC/Chorus
Other skills on chorus.
- /blog
Write release blog posts for Chorus — problem-first narrative, bilingual (zh/en), following the project's editorial style.
Open skill - /e2e-verification
Use when manually verifying a Chorus frontend change in a real browser — finding local login credentials, driving the running dev server with the Playwright MCP, logging in, navigating to a page, and capturing snapshots/screenshots for e2e acceptance.
Open skill - /openspec-apply-change
Implement tasks from an OpenSpec change. Use when the user wants to start implementing, continue implementation, or work through tasks.
Open skill - /openspec-archive-change
Archive a completed change in the experimental workflow. Use when the user wants to finalize and archive a change after implementation is complete.
Open skill - /openspec-explore
Enter explore mode - a thinking partner for exploring ideas, investigating problems, and clarifying requirements. Use when the user wants to think through something before or during a change.
Open skill - /openspec-propose
Propose a new change with all artifacts generated in one step. Use when the user wants to quickly describe what they want to build and get a complete proposal with design, specs, and tasks ready for implementation.
Open skill

