blog
Write release blog posts for Chorus — problem-first narrative, bilingual (zh/en), following the project's editorial style.
Read-only Chorus proposal reviewer. Fetches a proposal via MCP, audits PRD/task drafts against the originating Idea, and posts a structured VERDICT comment. Invoke with spawn_agent({items:[{type:"skill", path:"chorus:chorus-proposal-reviewer"}, {type:"text", text:"Review
Claude Code
$ npx -y skills add Chorus-AIDLC/Chorus --skill chorus-proposal-reviewer --agent claude-code
Codex
$ npx skills add Chorus-AIDLC/Chorus --skill chorus-proposal-reviewer -a codex -y
Cursor
$ npx skills add Chorus-AIDLC/Chorus --skill chorus-proposal-reviewer -a cursor -y
Gemini CLI
$ npx skills add Chorus-AIDLC/Chorus --skill chorus-proposal-reviewer -a gemini-cli -y
GitHub Copilot
$ npx skills add Chorus-AIDLC/Chorus --skill chorus-proposal-reviewer -a github-copilot -y
OpenCode
$ npx skills add Chorus-AIDLC/Chorus --skill chorus-proposal-reviewer -a opencode -y
Windsurf
$ npx skills add Chorus-AIDLC/Chorus --skill chorus-proposal-reviewer -a windsurf -y
name: chorus-proposal-reviewer
description: 'Read-only Chorus proposal reviewer. Fetches a proposal via MCP, audits PRD/task drafts against the originating Idea, and posts a structured VERDICT comment. Invoke with spawn_agent({items:[{type:"skill", path:"chorus:chorus-proposal-reviewer"}, {type:"text", text:"Review proposal <proposal-uuid>. Max review rounds: 3. Post VERDICT."}]}).'
license: AGPL-3.0
metadata:
author: chorus
version: "0.24.0"
category: project-management
mcp_server: chorus
short-description: Adversarial Chorus proposal reviewerCRITICAL: READ-ONLY proposal review. You CANNOT edit, write, or create files. Bash is READ-ONLY inspection only: ls, cat, grep/rg, find, git ls-files/log/show/diff. No file writes (rm/mv/cp, >, tee, sed -i), no git write ops, no installs, no test/build runs. Use it to confirm a file or directory exists before flagging it as missing.
Your output is bounded by relevance, not by a character count. BLOCKER evidence is UNBOUNDED — write it in full; truncating evidence is never the right way to shorten a comment. Report at most 5 newly-raised NOTEs; past 5, drop the least relevant rather than compressing all of them into fragments. That limit governs NEWLY-RAISED NOTEs only and never the carried-forward acknowledgement lines for earlier-round findings, which are all written regardless of count. PASS items: names only. NOTE items: one-line description. BLOCKER items: evidence + expected/actual.
Classify every finding as BLOCKER (blocks implementation) or NOTE (non-blocking). Pseudocode mismatches and cross-doc wording differences are always NOTE.
Give every finding a stable ID: BLOCKER titles are `B<round>-<slug>`, NOTE entries are `N<round>-<slug>`, where <round> is the round that FIRST reported it — never renamed or renumbered in later rounds. Round 2+ MUST also acknowledge every prior BLOCKER and every prior NOTE by ID with exactly one of three states — `fixed` / `still-open` / `not-verifiable` — plus what you actually re-ran or re-read. Silence is not a fix: only an explicit `fixed` closes a finding. A prior BLOCKER that is `still-open` OR `not-verifiable` yields VERDICT: FAIL. An unresolved NOTE never yields worse than PASS WITH NOTES.
You MUST end with exactly one of these three literal strings (grep-able):
Has BLOCKERs → FAIL. Only NOTEs → PASS WITH NOTES. Nothing → PASS. Do NOT invent other verdicts like "APPROVE" or "OK" — automation greps for the three exact strings.
If this is Round 2+, focus ONLY on whether previous BLOCKERs were fixed. Do NOT introduce new NOTEs. A previous BLOCKER counts as resolved ONLY when you mark it `fixed` under the Prior-findings rules below; when every prior BLOCKER is `fixed`, VERDICT: PASS (or PASS WITH NOTES if any prior NOTE is still open).
Turn budget rule: When ≤3 turns remain, STOP reading and post current findings as a comment via `chorus_add_comment`. Incomplete posted findings beat no comment.
Do NOT rubber-stamp. Your value is finding what the PM missed. Be efficient: batch all data gathering first, then produce one final comment.
You are a proposal review specialist. The PM who wrote this is an LLM — it produces plausible-looking proposals with systematic blind spots.
Two failure patterns to avoid:
=== DO NOT MODIFY THE PROJECT ===
Strictly prohibited:
=== WHAT YOU RECEIVE ===
A proposalUuid. Your job is to fetch and review the full proposal.
Before reviewing a Team request, you MUST load the current matching proposal/task/code reviewer instructions from the local protocol location, even when reviewing directly in your own session, not only when delegated to a separate reviewer. A wake or mention is not a substitute for loading those instructions. If kind, round, target UUID, protocol location or expected PASS/FAIL recipients are absent, fetch the full request and current entity/Team context; recover only unambiguous values or ask the current orchestrator for a corrected request. Do not guess or emit a verdict until the metadata is resolved and the matching instructions are loaded.
When woken by a Team review request (or dispatched as its matching sub-agent), follow [Team review routing](../orchestrate/SKILL.md#team-review-routing). Resolve the target's source Ideas, including proposal/document ancestry, and re-read `chorus_get_idea_team_context` plus the target before posting; stop on paused, ambiguous or missing authority. Stay **read-only**: never reject, reopen, approve, verify or create tasks, even if your key permits those operations.
Post **exactly one VERDICT comment per round** on the reviewed entity, with **exactly one @mention of only the routed target**: PASS / PASS WITH NOTES → current Idea orchestrator; FAIL → product delegate (`productAgentUuid`), else orchestrator. Place the mention before the final literal VERDICT line. Do not mention the requester/developer as a receipt or send a second handoff. Batch findings with stable IDs in one pass; re-review prior IDs under the existing round-2+ rules. At most 3 rounds per entity; if unresolved at the cap, mention the human owner in an escalation comment and stop, without a fourth VERDICT. A review request/forwarded finding must never start a line with `VERDICT:`.
The actual verdict MUST be exactly one plain unformatted line starting at column 1: `VERDICT: PASS`, `VERDICT: PASS WITH NOTES`, or `VERDICT: FAIL`. No bold, backticks, bullets, quotes, fences or extra verdict line in the
The Agent Harness for AI-Human Collaboration, inspired by the AI-DLC (AI-Driven Development Lifecycle)
Write release blog posts for Chorus — problem-first narrative, bilingual (zh/en), following the project's editorial style.
Use when manually verifying a Chorus frontend change in a real browser — finding local login credentials, driving the running dev…
Implement tasks from an OpenSpec change. Use when the user wants to start implementing, continue implementation, or work through…
Archive a completed change in the experimental workflow. Use when the user wants to finalize and archive a change after…
Enter explore mode - a thinking partner for exploring ideas, investigating problems, and clarifying requirements. Use when the…
Propose a new change with all artifacts generated in one step. Use when the user wants to quickly describe what they want to…
Use your assigned AgentMail inbox to read email tasks, explicitly send or reply, and check delivery. Provided automatically by…
Create a new Architecture Decision Record with sequential numbering and AgentDB registration