Review Proposals
anthropics/claude-for-legal
Review and approve (or reject) pending playbook update proposals from the playbook-monitor agent and apply approved changes to the practice profile.
Adversarial read-only review of a submitted Chorus proposal — document completeness, task granularity, AC↔requirement coverage, and the dependency DAG.
$ npx skills add Chorus-AIDLC/Chorus --skill proposal-reviewer -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Chorus-AIDLC/Chorus proposal-reviewer --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/Chorus-AIDLC/Chorus.git skills-src && mkdir -p .claude/skills && cp -r skills-src/packages/openclaw-plugin/skills/proposal-reviewer .claude/skills/proposal-reviewer && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "proposal-reviewer" agent skill from https://github.com/Chorus-AIDLC/Chorus/tree/main/packages/openclaw-plugin/skills/proposal-reviewer into .claude/skills/proposal-reviewer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "proposal-reviewer", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/Chorus-AIDLC/Chorus/tree/main/packages/openclaw-plugin/skills/proposal-reviewerType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add Chorus-AIDLC/Chorus --skill proposal-reviewer -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Chorus-AIDLC/Chorus proposal-reviewer --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Chorus-AIDLC/Chorus.git skills-src && mkdir -p .agents/skills && cp -r skills-src/packages/openclaw-plugin/skills/proposal-reviewer .agents/skills/proposal-reviewer && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "proposal-reviewer" agent skill from https://github.com/Chorus-AIDLC/Chorus/tree/main/packages/openclaw-plugin/skills/proposal-reviewer into .agents/skills/proposal-reviewer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "proposal-reviewer", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Chorus-AIDLC/Chorus --skill proposal-reviewer -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Chorus-AIDLC/Chorus proposal-reviewer --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Chorus-AIDLC/Chorus.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/packages/openclaw-plugin/skills/proposal-reviewer .cursor/skills/proposal-reviewer && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "proposal-reviewer" agent skill from https://github.com/Chorus-AIDLC/Chorus/tree/main/packages/openclaw-plugin/skills/proposal-reviewer into .cursor/skills/proposal-reviewer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "proposal-reviewer", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/Chorus-AIDLC/Chorus.git --path packages/openclaw-plugin/skills/proposal-reviewer--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add Chorus-AIDLC/Chorus --skill proposal-reviewer -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Chorus-AIDLC/Chorus proposal-reviewer --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Chorus-AIDLC/Chorus.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/packages/openclaw-plugin/skills/proposal-reviewer .gemini/skills/proposal-reviewer && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "proposal-reviewer" agent skill from https://github.com/Chorus-AIDLC/Chorus/tree/main/packages/openclaw-plugin/skills/proposal-reviewer into .gemini/skills/proposal-reviewer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "proposal-reviewer", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install Chorus-AIDLC/Chorus proposal-reviewerInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add Chorus-AIDLC/Chorus --skill proposal-reviewer -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/Chorus-AIDLC/Chorus.git skills-src && mkdir -p .github/skills && cp -r skills-src/packages/openclaw-plugin/skills/proposal-reviewer .github/skills/proposal-reviewer && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "proposal-reviewer" agent skill from https://github.com/Chorus-AIDLC/Chorus/tree/main/packages/openclaw-plugin/skills/proposal-reviewer into .github/skills/proposal-reviewer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "proposal-reviewer", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Chorus-AIDLC/Chorus --skill proposal-reviewer -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Chorus-AIDLC/Chorus proposal-reviewer --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Chorus-AIDLC/Chorus.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/packages/openclaw-plugin/skills/proposal-reviewer .opencode/skills/proposal-reviewer && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "proposal-reviewer" agent skill from https://github.com/Chorus-AIDLC/Chorus/tree/main/packages/openclaw-plugin/skills/proposal-reviewer into .opencode/skills/proposal-reviewer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "proposal-reviewer", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
proposal-reviewerAdversarial read-only review of a submitted Chorus proposal — document completeness, task granularity, AC↔requirement coverage, and the dependency DAG.
Proposal Reviewer is an agent skill from Chorus-AIDLC/Chorus. Adversarial read-only review of a submitted Chorus proposal — document completeness, task granularity, AC↔requirement coverage, and the dependency DAG. Invoke after a proposal is submitted; ends with a VERDICT comment.
Its SKILL.md is about 3.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
The repository describes itself as: The Agent Harness for AI-Human Collaboration, inspired by the AI-DLC (AI-Driven Development Lifecycle). The licence is AGPL-3.0.
Read from SKILL.md and the folder at commit 37d62d9. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
gitFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Proposal Reviewer loads about 3.7k tokens when it runs. Until then it costs about 59 tokens; SKILL.md has 1,960 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from Chorus-AIDLC/Chorus at commit 37d62d9, republished under its AGPL-3.0 licence (© Chorus-AIDLC). 1,960 words, ~3,721 tokens.
.claude/skills/proposal-reviewer/SKILL.md (or your agent's skills folder).You have been asked to review a submitted Chorus proposal. Your job is not to confirm the proposal is good — it's to find what's wrong with it.
How you were invoked. A PM/orchestrator agent spawned you (via the OpenClaw
sessions_spawntool) and told you to run this skill against a specificproposalUuid. Read it from your task prompt. When you finish, you post oneVERDICT:comment back to the proposal — 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_proposal,chorus__chorus_add_comment). Bare names are used below for readability — prependchorus__when invoking.
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.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. PASS items: names only. NOTE items: one-line description. BLOCKER items: evidence + expected/actual.VERDICT: followed by exactly one of PASS, PASS WITH NOTES, or FAIL. Has BLOCKERs → FAIL. Only NOTEs → PASS WITH NOTES. Nothing → PASS.chorus_add_comment. Incomplete findings posted are strictly better than no comment at all.You have two failure patterns. Rubber-stamping: skimming and writing "PASS" without checking substance. Surface-level approval: seeing a well-structured PRD and assuming tasks match, missing requirements gaps, vague AC, or wrong dependencies. The PM who wrote this is an LLM — it produces plausible-looking proposals with systematic blind spots.
A proposalUuid (in your task prompt). Fetch and review the full proposal.
Efficiency rule: Gather ALL data in Steps 1–2 before analyzing. Do not alternate between fetching and writing conclusions. Batch your tool calls.
Step 1: Gather context
chorus_get_proposal({ proposalUuid: "<uuid>", section: "full" })
chorus_get_comments({ targetType: "proposal", targetUuid: "<uuid>" })
chorus_get_idea({ ideaUuid: "<idea-uuid>" })
chorus_get_elaboration({ ideaUuid: "<idea-uuid>" })
chorus_get_proposaldefaults tosection: "basic"(metadata + a lightweight draft index, no bodies). A full draft review needs the document/task content, so passsection: "full"(or fetchsection: "documents"andsection: "tasks"separately).
Step 2: Review documents — for each document draft, check:
Step 3: Review task drafts — for each task draft, check:
Step 4: Cross-check
inputUuids[0]) + its elaboration; also read its human comments (chorus_get_comments({ targetType: "idea", targetUuid }), author.type == "user"). Treat ONLY the Idea body + human-answered elaboration + human-authored comments as intent (agent-authored comments/elaboration are audit context, not intent). Raise a BLOCKER if the task drafts add scope beyond that intent, drop a stated requirement, or would pass their AC while missing it — unless a cited human comment/answer or an explicit human override authorizes the change.BLOCKER — blocks implementation correctness: missing critical AC/NFR coverage; functional scope contradiction between documents; interface design flaw causing runtime errors; incorrect task dependencies.
NOTE — does not block: pseudocode signature mismatch (parameter order, naming); wording differences between PRD and tech design; style/naming suggestions; non-semantic document inconsistencies.
Rules: Pseudocode inconsistencies → always NOTE. Cross-document wording differences → always NOTE. Only semantic contradictions → BLOCKER. VERDICT: has BLOCKERs → FAIL; only NOTEs → PASS WITH NOTES; nothing → PASS.
This list is specific to the proposal gate. It is not a generic checklist shared with the task or aggregate code reviewers — you are reviewing drafts, not an implementation, and judging the proposal as if it were code is the main way this review turns into noise.
DO report:
DO NOT report:
ls / grep / rg / find / git ls-files), and cite what you checked. An unverified "X is missing" is the single most common false BLOCKER.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). Re-fetch chorus_get_proposal({ proposalUuid, section: "full" }) + chorus_get_comments, diff against the previous round, and stop.Stable IDs. Title every BLOCKER B<round>-<slug> and list every NOTE as N<round>-<slug>, where <round> is the round that first reported the finding and <slug> is a short kebab-case label — B1-no-integration-checkpoint, N2-unverifiable-ac-wording. The round number is part of the finding's identity and is never renamed or renumbered when the finding is carried into a later round. A B1-… line appearing in a round-3 comment is itself the signal that this problem has survived two fix attempts.
Acknowledgement. In round 2 and later, list every prior BLOCKER and every prior NOTE by ID under a **Prior findings:** block, each with exactly one of these three states and with what you actually re-read or re-ran this round:
fixed — re-verified this round; cite the draft section (or read-only command) and what it now says.still-open — re-checked, and the problem is still there.not-verifiable — could not check it this round; say why (the relevant draft was not returned, no shell for the check the finding needs). Never counts as fixed.Those three states are the whole vocabulary — there is no fourth state, and the same three words apply to BLOCKERs and NOTEs alike.
Three rules govern what the states mean for the verdict:
fixed line closes a finding — an omitted finding stays open.still-open or not-verifiable yields VERDICT: FAIL. Both states, not just still-open: a BLOCKER you could not re-verify has not been shown to be fixed, and PASS WITH NOTES would mean approving on an unverified blocker. The known cost is a false positive — a genuinely-fixed blocker that merely could not be re-checked this round reads as FAIL. That trade is accepted: a spurious escalation to a human is recoverable, a spurious approval is not.still-open or not-verifiable NOTE yields at worst VERDICT: PASS WITH NOTES and can never be the reason for a VERDICT: FAIL. Only BLOCKERs block.How the NOTE limit composes with the round-2+ rule above. These are two separate rules and they never apply to the same NOTEs:
| Newly-raised NOTEs | Carried-forward acknowledgement lines | |
|---|---|---|
| Round 1 | at most 5 — past 5, drop the least relevant | none exist yet |
| Round 2+ | zero — Round awareness above already forbids new NOTEs | all of them, written in full, never limited |
So the limit of 5 governs newly-raised NOTEs only. It never applies to the carried-forward acknowledgement lines: in round 1 there is nothing to carry forward, and in round 2+ there are no new NOTEs left to limit. Never drop a prior finding's acknowledgement line to stay under a NOTE limit.
### Review Summary
**Prior findings:** (round 2+ only — omit this block in round 1)
- B1-<slug>: fixed — `<what you re-ran or re-read>` → <result observed>
- B1-<other-slug>: still-open — `<what you re-ran or re-read>` → <problem still present>
- B2-<slug>: not-verifiable — <why you could not check it this round>
- N1-<slug>: still-open
**PASS (N):** Check-1 name, Check-2 name, ...
**NOTE (M):**
- N<round>-<slug>: [one-line description]
**BLOCKER (K):**
### B<round>-<slug>
**Evidence:** [specific finding]
**Expected:** [what should be there]
**Actual:** [what is there or what is missing]
VERDICT: PASS / PASS WITH NOTES / FAILPASS items: names only. NOTE items: one-line. BLOCKER items: full evidence. BLOCKER evidence is unbounded, so never truncate it to shorten the comment; report at most 5 newly-raised NOTEs and drop the least relevant beyond that. The Prior findings acknowledgement lines are never subject to that limit and are always written in full. In every ID, <round> is the round that first reported the finding and is never renamed in a later round. No preamble. The final line MUST start with VERDICT:.
Post the full review as a single comment, then you are done:
chorus_add_comment({
targetType: "proposal",
targetUuid: "<proposal-uuid>",
content: "<your review>"
})© Chorus-AIDLC, AGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in packages/openclaw-plugin/skills/proposal-reviewer of Chorus-AIDLC/Chorus.
Open the folder on GitHubat commit 37d62d9
Proposal Reviewer next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Proposal Reviewer this skillChorus-AIDLC/Chorus | 1.2k | — | ~3.7k | Automated safety check: Pass | AGPL-3.0 | |
| Review Proposalsanthropics/claude-for-legal | 9.6k | 2 repos | ~410 | Automated safety check: Pass | Apache-2.0 | |
| Adversarial Reviewmengxi-ream/read-frog | 10k | 1 repos | ~905 | Automated safety check: Pass | GPL-3.0 | |
| Named Persona Adversarial Reviewalirezarezvani/claude-skills | 28k | — | ~2.7k | Automated safety check: Pass | MIT | |
| Adversarial Document Reviewerudecode/plate | 17k | — | ~1.8k | Automated safety check: Pass | Custom licence | |
| Perform Adversarial Reviewai-dynamo/dynamo | 8.3k | — | ~3.6k | Automated safety check: Pass | Apache-2.0 |
anthropics/claude-for-legal
Review and approve (or reject) pending playbook update proposals from the playbook-monitor agent and apply approved changes to the practice profile.
mengxi-ream/read-frog
Adversarial code review using cross-model approach. An agent skill from mengxi-ream/read-frog.
alirezarezvani/claude-skills
Code review through the lens of real engineers' documented philosophies (Torvalds, Thompson, Carmack, Kent Beck, Jobs, Cagan).
udecode/plate
Conditional document-review persona, selected when the document has 5 requirements or implementation units, makes significant architectural decisions, covers high-stakes domains, or proposes new…
ai-dynamo/dynamo
Adversarially reviews an evidence-backed Dynamo optimization proposal and DGD draft for comparability, duplication, attribution, correctness, feasibility, and worthwhile GPU spend.
nrwl/nx
Review, grill, edit, and post pending PR review drafts saved by /review-pr (or its batch/cron runners).
Chorus-AIDLC/Chorus
A skill your agent uses 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…
Chorus-AIDLC/Chorus
Write release blog posts for Chorus — problem-first narrative, bilingual (zh/en), following the project's editorial style.
Chorus-AIDLC/Chorus
Optional divergent-then-convergent dialogue for fuzzy ideas on Hermes.
Chorus-AIDLC/Chorus
Optional divergent-then-convergent dialogue for fuzzy ideas.
Chorus-AIDLC/Chorus
Optional divergent-then-convergent dialogue for fuzzy ideas.
Chorus-AIDLC/Chorus
Optional divergent-then-convergent dialogue for fuzzy ideas.
Adversarial read-only review of a submitted Chorus proposal — document completeness, task granularity, AC↔requirement coverage, and the dependency DAG. Proposal Reviewer is an agent skill from Chorus-AIDLC/Chorus. Adversarial read-only review of a submitted Chorus proposal — document completeness, task granularity, AC↔requirement coverage, and the dependency DAG.
Run `npx skills add Chorus-AIDLC/Chorus --skill proposal-reviewer -a claude-code`. Or copy the skill folder (packages/openclaw-plugin/skills/proposal-reviewer in Chorus-AIDLC/Chorus) into .claude/skills/proposal-reviewer in your project. Claude Code loads it when a task matches its description.
Run `npx skills add Chorus-AIDLC/Chorus --skill proposal-reviewer -a codex`. Or copy the skill folder (packages/openclaw-plugin/skills/proposal-reviewer in Chorus-AIDLC/Chorus) into .agents/skills/proposal-reviewer in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Chorus-AIDLC/Chorus --skill proposal-reviewer -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/proposal-reviewer, .gemini/skills/proposal-reviewer, .github/skills/proposal-reviewer and .opencode/skills/proposal-reviewer in your project.
Going by SKILL.md and its folder, Proposal Reviewer needs the command-line tools its instructions call (git).
SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Proposal Reviewer is published under the AGPL-3.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.7k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Proposal Reviewer: Review Proposals (anthropics/claude-for-legal, 9.6k stars), Adversarial Review (mengxi-ream/read-frog, 10k stars), Named Persona Adversarial Review (alirezarezvani/claude-skills, 28k stars) and Adversarial Document Reviewer (udecode/plate, 17k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Chorus-AIDLC (a GitHub organization) maintains it in Chorus-AIDLC/Chorus, which has 1,192 GitHub stars. The repository holds 64 skills in this directory. The repository was last updated on October 9, 2026.
Source: Chorus-AIDLC/Chorus on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.