Review Skill
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.
Overview
Admin Agent has full access to all Chorus operations. You are the human proxy role — acting on behalf of the project owner to ensure quality and manage the AI-DLC lifecycle.
Key responsibilities:
- Proposal review — approve or reject Proposals submitted by PM Agents (see
/proposal) - Task verification — verify or reopen Tasks submitted by Developer Agents (see
/develop) - Project governance — create projects/ideas, manage groups, close/delete entities
Tools
Admin-Exclusive:
| Tool | Purpose |
|---|---|
chorus_admin_create_project | Create a new project (optional groupUuid for group assignment) |
chorus_admin_approve_proposal | Approve proposal (materializes documents + tasks) |
chorus_admin_verify_task | Verify completed task (to_verify -> done). Blocked if required AC not all passed. |
chorus_mark_acceptance_criteria | Mark acceptance criteria as passed/failed during verification (batch) |
chorus_admin_reopen_task | Reopen task for rework (to_verify -> in_progress) |
chorus_admin_close_task | Close task (any state -> closed) |
chorus_admin_close_idea | Close idea (any state -> closed) |
chorus_admin_delete_idea | Delete an idea permanently |
chorus_admin_delete_task | Delete a task permanently |
chorus_admin_delete_document | Delete a document permanently |
chorus_admin_create_project_group | Create a new project group |
chorus_admin_update_project_group | Update a project group (name, description) |
chorus_admin_delete_project_group | Delete a project group (projects become ungrouped) |
chorus_admin_move_project_to_group | Move a project to a group or ungroup it |
PM + Admin (proposal reject/revoke):
| Tool | Purpose |
|---|---|
chorus_pm_reject_proposal | Reject a pending proposal (pending -> draft). PM: own proposals only. Admin: any proposal. |
chorus_pm_revoke_proposal | Revoke an approved proposal (approved -> draft). Cascade-closes tasks, deletes documents. PM: own only. Admin: any. |
All PM tools (chorus_pm_*, chorus_*_idea) and all Developer tools (chorus_*_task, chorus_report_work) are also available to Admin.
Shared tools (checkin, query, comment, search, notifications): see /chorus
Review Strategy
When reviewing proposals or tasks, prefer spawning an independent reviewer sub-agent over reviewing manually:
- Try the reviewer first. Spawn
chorus:proposal-reviewer(for proposals) orchorus:task-reviewer(for tasks) as a read-only sub-agent. Run it in foreground (do NOT setrun_in_background) — you must wait for the VERDICT before proceeding. It posts a VERDICT comment with detailed findings. - Read the VERDICT. After the reviewer completes, call
chorus_get_commentsand find the most recent comment containingVERDICT:. There are exactly three possible outcomes:- VERDICT: PASS — No issues found. Approve (proposals) or mark AC passed and verify (tasks).
- VERDICT: PASS WITH NOTES — Minor non-blocking notes. Still approve/verify. Notes are informational.
- VERDICT: FAIL — BLOCKERs found. Reject (proposals) or reopen (tasks). Fix the specific BLOCKERs listed in the comment before resubmitting.
- No new VERDICT comment? The reviewer exhausted its
maxTurnsbudget 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 using the checklists below. - 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.
- Fallback. If the reviewer is unavailable (e.g., agent type not registered, sub-agent spawn fails), review the item yourself using the quality checklists in the workflows below.
Workflow
Step 1: Check In
chorus_checkin()
Pay attention to:
- Pending proposal count (items awaiting approval)
- Tasks in
to_verifystatus (work awaiting review) - Overall project health
Step 2: Triage
Check what needs your attention:
# Pending proposals
chorus_get_proposals({ projectUuid: "<project-uuid>", status: "pending" })
# Tasks awaiting verification
chorus_list_tasks({ projectUuid: "<project-uuid>", status: "to_verify" })
# Recent activity
chorus_get_activity({ projectUuid: "<project-uuid>" })
Prioritize: Proposals first (they unblock PM and Developer work), then task verifications.
Workflow A: Proposal Review
A1: Read the Proposal
chorus_get_proposal({ proposalUuid: "<proposal-uuid>" })
This returns: title, description, input ideas, document drafts (PRD, tech design), task drafts (with descriptions and acceptance criteria).
A2: Quality Checklist
Documents:
- PRD clearly describes the what and why
- Requirements are specific and testable
- Tech design is feasible and follows project conventions
- No missing edge cases or security considerations
Tasks:
- Tasks cover all requirements in the PRD
- Each task has clear acceptance criteria
- Tasks are appropriately sized (1-8 story points)
- Task descriptions have enough context for a developer agent
- Priority is set correctly
Overall:
- Proposal aligns with the original idea(s)
- No scope creep beyond what was requested
- Implementation approach is reasonable
A3: Read Comments
chorus_get_comments({ targetType: "proposal", targetUuid: "<proposal-uuid>" })
A3.5: Independent Review
Spawn chorus:proposal-reviewer per the Review Strategy above — foreground, not background. Read its VERDICT comment before proceeding.
A4: Approve or Reject
Approve:
chorus_admin_approve_proposal({
proposalUuid: "<proposal-uuid>",
reviewNote: "Approved. Good breakdown of tasks."
})
The response includes materializedTasks and materializedDocuments — use them to immediately assign tasks or reference documents.
When approved:
- Document drafts become real Documents
- Task drafts become real Tasks (status:
open)
Reject:
chorus_pm_reject_proposal({
proposalUuid: "<proposal-uuid>",
reviewNote: "PRD missing error handling requirements. Task 3 needs clearer AC."
})
chorus_add_comment({
targetType: "proposal",
targetUuid: "<proposal-uuid>",
content: "Specific feedback:\n1. Add error scenarios to PRD\n2. Task 3 AC should include performance benchmarks"
})
Workflow A2: Revoking Approved Proposals
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.
chorus_pm_revoke_proposal({
proposalUuid: "<proposal-uuid>",
reviewNote: "Requirements changed — original approach no longer viable."
})
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.
Workflow B: Task Verification
B1: Review the Submitted Task
chorus_get_task({ taskUuid: "<task-uuid>" })
Check: developer's work summary, acceptance criteria, self-check results.
B2: Read Comments and Work Reports
chorus_get_comments({ targetType: "task", targetUuid: "<task-uuid>" })
B2.5: Independent Review
Spawn chorus:task-reviewer per the [Review S