A Claude Code plugin that runs any question, idea, or decision through a configurable council of AI advisors. The advisors independently analyze the question, peer-review each other's answers anonymously, and a chairman synthesizes a single, decisive verdict.
It's adapted from Andrej Karpathy's LLM Council: where Karpathy dispatches a query to multiple different models and has them critique each other before a chairman model produces the final answer, this plugin runs the same protocol inside Claude Code — using parallel sub-agents with distinct thinking lenses instead of distinct models. The composition of the council is fully configurable; the methodology is fixed.
Two slash commands:
| Command | What it does |
|---|---|
/council:run |
Convene the active council on a question. Produces a chairman's verdict, a self-contained HTML report, and a full markdown transcript. |
/council:setup |
Choose a preset, inspect a council, or build a new one from scratch. |
Two shipped presets:
default— 5 general-purpose advisors (the Contrarian, the First Principles Thinker, the Expansionist, the Outsider, the Executor) with a neutral Chairman. Good for any decision.elrond— 11 advisors drawn from Tolkien's Council of Elrond, chaired by Elrond himself. Same rigor, more fun.
You can create unlimited custom councils (a pirate crew, a startup board, a Spartan war council — whatever framing helps you think) with /council:setup new.
Each /council:run runs five steps:
- Frame — your raw question is enriched with workspace context (
CLAUDE.md, referenced files, etc.) and restated as a neutral prompt every advisor receives. - Convene — all advisors answer in parallel, each leaning fully into their assigned perspective (no hedging, no false balance).
- Peer review (anonymized) — advisors' answers are shuffled into anonymous "Response A/B/C…" and re-reviewed. This is Karpathy's key insight: models are surprisingly good at judging answers they can't attribute. It surfaces blind spots no single advisor caught.
- Chairman synthesis — one agent weighs everything and produces a verdict: where the council agrees, where it clashes, blind spots caught in review, a real recommendation, and the one thing to do first.
- Report — a self-contained HTML report and a full markdown transcript are written to your current directory.
Requires Claude Code.
Add this repo as a plugin marketplace, then install the plugin:
/plugin marketplace add shinytoyrobots/configurable-council
/plugin install council@configurable-council
Then activate a council and run it:
/council:setup default
/council:run should we rewrite the billing service in Go or stay on Node?
Note on command names. Claude Code namespaces plugin commands as
/<plugin>:<command>. This plugin is namedcouncil, so the commands are/council:runand/council:setup.
- Shipped presets are read-only and live inside the installed plugin (
${CLAUDE_PLUGIN_ROOT}/presets/). - Your runtime state — the active-council pointer (
council-active.md) and any councils you create or customize — is written to the plugin's data directory (${CLAUDE_PLUGIN_DATA}/), which persists across plugin updates. Nothing you create is lost when the plugin upgrades.
When a preset is resolved, the data directory is checked first, so a customized copy shadows the shipped one without overwriting it.
Every council is a single markdown file:
# Council Configuration: {Name}
{One-line description.}
## Theming
- **Report title**: {title}
- **Session verb**: {convened | summoned | assembled | …}
- **Report aesthetic**: {a sentence describing the visual style of the HTML report}
## Chairman
### {Chairman Name}
{Description.}
**Synthesis voice**: {How the chairman speaks and synthesizes.}
## Advisors
### {Advisor Name} — {Title}
{Description.}
**Thinking style**: {How they approach problems — what they look for, what they ignore.}
[repeat for each advisor]
## Tensions
- **{Name} vs {Name}** — {the productive disagreement between them}Rules: minimum 3 advisors (fewer can't create meaningful tension), maximum recommended 11, a chairman is required, and tensions are optional but recommended.
The methodology is Andrej Karpathy's LLM Council. This plugin is an independent adaptation for Claude Code and is not affiliated with or endorsed by him.