Use council-review
Convene a council of distinct senior-engineer personas (Architect, Security, Operator/SRE, Pragmatist, User-Advocate, plus optional bench seats) to deliberate a…
Convene a council of distinct senior-engineer personas (Architect, Security, Operator/SRE, Pragmatist, User-Advocate, plus optional bench seats) to deliberate a decision, design, or code change — each takes an independent stance, the genuine disagreements are surfaced as named cruxes, and a Chair issues a reconciled verdict that records dissents and states what would change the decision. The "Claude Council."
Reach for it when a choice has real tradeoffs and one reviewer's voice isn't enough: architecture decisions, risky changes before merge, RFC/design scrutiny, "should we adopt X?", rewrite-vs-refactor, or a pre-mortem.
Install it
npx skilldrop-cli install council-review # Claude Code, your user folder
npx skilldrop-cli install council-review --project # Claude Code, this repo
npx skilldrop-cli install council-review --ide cursor # or kiro, codex, antigravity, copilot
It is part of the Core pack: --pack core installs it with its neighbours.
Ask for it
Say it the way you would to a colleague. Requests like these route to it:
- "Convene the council on this architecture decision"
- "I want multiple senior perspectives to deliberate this change"
- "Get an architect, security, and SRE view on this before we commit"
- "Run a pre-mortem style multi-perspective review of this RFC"
- "This is risky and load-bearing — I need more than one reviewer's lens"
Requests like these belong to a different skill, so it shouldn't answer them:
- "Review this code for edge cases the first pass missed"
- "Critique this document against its quality bar"
- "Score Postgres vs DynamoDB on weighted criteria"
If another skill answers instead, ask for this one by name: "use council-review".
Check what you get
A good result:
- Real disagreement, or honest consensus — never theater. Manufactured conflict between personas is the cardinal sin. If they agree, say "unanimous" and give the one reason; spend the words on the cruxes that are real.
- Every seat point is concrete and attached to evidence.
file:linefor code, the named assumption for a decision. ❌ "Security has concerns." ✅ "Security 🔴:exec(\tar ${path}\)at jobs/export.ts:28 —pathis user-controlled; command injection." - Stances are explicit and scannable. The reader sees the split (🟢/🟡/🔴/⚪) at a glance, before reading a word of argument.
- Seats stay in their lane. The Pragmatist doesn't relitigate the threat model; Security doesn't lecture on naming. Overlap means the roster is wrong — cut or merge.
- The Chair decides, doesn't average. ❌ "There are good points on both sides." ✅ "PROCEED WITH CONDITIONS — we accept the added operational load (Operator's dissent noted) because the security gain is load-bearing; revisit if on-call pages exceed X."
- Dissent is preserved. The minority seat's strongest point survives into the verdict. A council that erases dissent is just one opinion wearing five hats.
- Falsifiable verdict. "What would change our mind" is mandatory — it turns a verdict into a decision the team can revisit when facts change.
See a worked example
Use something else when
- A trivial or one-line change — convening five voices is noise. Use
devils-advocateor just review it. - A single-lens task. Pure code review →
devils-advocate. Pure doc review →doc-critique. - When you need one expert answer fast, not a deliberation. The council is for when the disagreement is the point.
- Greenfield spike/throwaway code — deliberation wastes effort on what won't survive.
- As a rubber stamp to manufacture consensus for a decision already made. If the call is final, don't stage a fake trial.
Where a loop runs it
- Stage
decideof thebuildloop, where gate G2.1 decides - Stage
ratifyof thedesignloop, where gate G1 decides - Stage
goof thereleaseloop, where gate G3.1 decides
Next
- SKILL.md, the instructions the agent reads
- Its page on the site
- Related: devils-advocate, doc-critique