claude-code-council: A council of models that argues before it answers

Claude Code Council turns a coding CLI into a deliberation engine. It stages disagreement, hides model identities, and only then writes the verdict.

11 min read • View on GitHub • More from mtarcure

A wide courthouse-like chamber where five figures sit around a round table with a sealed dossier in the center, while a sixth chair holds the final stamp. It illustrates a coding assistant designed to debate trade-offs before producing an answer.
The project's core move is not speed. It is structured disagreement.
Key Takeaways

Most coding assistants are built to converge fast. Claude Code Council does the opposite: it spends effort making disagreement legible before it lets the room settle on an answer. That makes it feel less like autocomplete and more like a deliberation engine.

The plugin is small. The process is the product.

The repo is organized like a Claude Code plugin, not a traditional app. .claude-plugin/marketplace.json is the doorway, and plugins/council/skills/council/SKILL.md is the script that runs the show. That matters because the logic lives where Claude Code can execute it directly, instead of hiding inside a separate service with its own UI and state machine.

How the council decides

The council runs in three moves. First, it recalls project context so the debate starts from memory, not amnesia. Then it fans out to five advisors with deliberately different personalities. Finally, a peer-review step strips the responses down to anonymous options so the final synthesis weighs arguments before reputations.

Three stages, one goal: make disagreement legible before the final synthesis.

That anonymity is the sharpest idea in the repo. When the panel sees A through E instead of Claude versus GPT versus Gemini, it has to evaluate the actual reasoning. The system is not trying to eliminate bias entirely. It is trying to stop model brand from becoming a shortcut to confidence.

A close-up of shuffled index cards, a blindfold, and a pair of scales balancing two typed arguments. It explains the repo's anonymous peer review step, where arguments are judged before model identities.
Blind review is what keeps the panel focused on logic instead of model prestige.

Why the stack matters

The integration layer is the clever part. The repo does not stay inside one model family. It pulls in Claude-based advisors, dispatches one role through a Codex-style skill call, and reaches Gemini through a Node.js fetch wrapped in Bash. That is clunky by enterprise standards, but elegant by agent standards: the point is not purity, it is independent vantage points.

SystemWhat it optimizes forStrengthWeakness
Claude Code CouncilDeliberation and dissentIt surfaces trade-offs and makes the final answer easier to trust.It adds latency, API surface, and orchestration complexity.
Single-model assistantSpeed and convenienceIt gives a fast, low-friction answer with almost no setup.It can echo the user's framing too quickly.
Typical multi-agent swarmBreadth of ideasIt gathers many angles in parallel.It can drift into noisy consensus without anonymity.

That puts the project in a useful niche. It is not the tool for "what is this error message". It is the tool for choosing a database, weighing a security trade-off, or pressure-testing a plan you already half believe. In other words, it is better at being your skeptical room than your eager intern.


The cost is obvious: more moving parts, more API calls, and more chances for the whole thing to break in interesting ways. But that trade-off is the point. For high-stakes decisions, ceremony is not overhead. It is how the system earns the right to speak with confidence.