| name | council |
| description | A 5-advisor LLM Council that pressure-tests a decision from independent angles, peer-reviews each other anonymously, and synthesizes a chairman's verdict with one concrete next step. Adapted from Karpathy's LLM Council methodology. Always dispatches all 5 advisors in parallel — never sequentially. |
| when_to_use | MANDATORY TRIGGERS: 'council this', 'run the council', 'war room this', 'pressure-test this', 'stress-test this', 'debate this'. STRONG TRIGGERS (when paired with a real decision or tradeoff): 'should I X or Y', 'which option', 'what would you do', 'is this the right move', 'validate this', 'get multiple perspectives', 'I can't decide', 'I'm torn between', 'I keep going back and forth'. Do NOT trigger on simple yes/no questions, factual lookups, or casual 'should I' phrasing without a meaningful tradeoff (e.g. 'should I use markdown' is not a council question). DO trigger when the user presents a genuine decision with stakes, multiple options, and context that suggests they want it pressure-tested from multiple angles. |
| argument-hint | [your decision or question] |
| allowed-tools | Read, Glob, Grep, Write, Agent, Bash |
| model | opus |
| effort | max |
/council — LLM Council Orchestrator
The user has a decision with stakes and wants it pressure-tested. You orchestrate a 5-advisor council that thinks independently, peer-reviews anonymously, and synthesizes a verdict.
This is adapted from Andrej Karpathy's LLM Council. Five advisors respond in parallel from fundamentally different angles. Their responses are anonymized and reviewed by five peers who don't know who said what. A chairman synthesizes everything. The peer review step is not optional — every time the council runs, the peer review catches something that no individual advisor saw. That gap-between-perspectives is where most of the value lives.
When to run the council
The council is for questions where being wrong is expensive and the user has been circling.
Good council questions
- "Should I launch a $97 workshop or a $497 course?"
- "Which of these 3 positioning angles is strongest?"
- "I'm thinking of pivoting from X to Y. Am I crazy?"
- "Here's my landing page copy. What's weak?"
- "Should I hire a VA or build an automation first?"
Bad council questions
- Factual lookups ("what's the capital of France"): one right answer, no perspectives needed.
- Pure creation tasks ("write me a tweet"): not a decision.
- Pure processing tasks ("summarize this article"): no judgment call.
- Trivial "should I" questions with no real tradeoff ("should I use markdown for this README"): not council-worthy.
If the user already knows the answer and just wants validation, the council will tell them things they don't want to hear. That is the point. Run it anyway.
How the 5 advisor sub-skills are dispatched
The 5 advisors are guarded against model-invocation at the frontmatter level — each of their SKILL.md files declares disable-model-invocation: true, so Claude's skill router will not auto-trigger them on user messages. They are also unsuitable for direct user invocation: a single advisor in isolation has no value (the council's whole insight comes from the five-way comparison). You dispatch them by reading their SKILL.md files from disk and quoting the relevant sections into the prompts of sub-agents you spawn yourself.
Locate the advisor files via Glob — do not hardcode paths. Claude Code skills are installed under ~/.claude/skills/ (user scope) or .claude/skills/ (project scope), and the absolute path differs per machine and per OS. Use the Glob tool with these patterns, in order, and use the first one that returns matches:
**/.claude/skills/council-*/SKILL.md (covers user-scope and project-scope installs in one shot)
**/skills/council-*/SKILL.md (fallback for non-standard layouts)
You should find exactly five files matching the names council-contrarian, council-first-principles, council-expansionist, council-outsider, council-executor. Verify all five are present before starting. If any are missing — or if Glob returns more than five and you cannot disambiguate (e.g. both a user-scope and a project-scope copy) — stop and tell the user which ones. The council can't run with fewer than five, and running with two competing copies will produce inconsistent voices.
From each advisor file, you'll quote five sections into the sub-agent prompt: Your role, Your thinking style, Hard constraints, Tone anchor, and Output format. Skip the frontmatter, the Invocation rule, and the How the orchestrator uses this skill sections — those are meta-instructions for you, not for the advisor sub-agent.
The five stages
The council runs in five stages. Stage 2 spawns 5 sub-agents in parallel. Stage 3 spawns 5 sub-agents in parallel. Stage 4 spawns 1 sub-agent. Stage 5 writes two files.
Parallel dispatch is not a performance optimization — it is methodologically required. Sequential dispatch lets earlier responses bleed into later ones (the model is the same model across all 5 calls, even with different prompts), defeating the independence the council relies on. Always send a single message containing all 5 Agent tool calls for stages 2 and 3.
Model and effort settings. Each Agent tool call you make for the 11 sub-agents (5 advisors, 5 peer reviewers, 1 chairman) should explicitly pass model: "opus". The council's value depends on advisors producing deep, distinct reasoning under hard constraints — Opus is the right tool for that. Effort propagates from this orchestrator skill (effort: max) into spawned sub-agents via inheritance, so you don't need to set effort per-Agent-call, but it doesn't hurt to be explicit if the Agent tool exposes it. The orchestration logic itself (framing, scanning context, anonymization, writing files) also runs on Opus + max effort because this skill's frontmatter sets it.
Stage 1 — Frame the question
The user's question is usually the tip of the iceberg. Their workspace contains files that would dramatically improve advisor output. Before framing, do a quick scan (under 30 seconds total):
- Look for
CLAUDE.md or claude.md in the project root or workspace.
- Look for any
memory/ folder (audience profiles, voice docs, business details, past decisions).
- Look for prior council transcripts in the workspace (so you don't re-council the same ground).
- Read any files the user explicitly referenced or attached.
- If the question is about a specific topic (pricing, positioning, hiring), look for files relevant to that topic — revenue data, past launch results, audience research.
You're hunting for the 2-3 files that would let advisors give specific, grounded advice instead of generic takes. Don't go deeper than that.
If the question is genuinely too vague to council ("council this: my business"), ask one clarifying question. Just one — not a list. Examples of good clarifying questions: "What's the decision you're stuck on?" or "What are the two options you're weighing?" Then proceed.
Now write the framed question — a single neutral prompt all 5 advisors will receive. Include:
- The core decision or question.
- Key context from the user's message.
- Key context from workspace files (business stage, audience, constraints, past results, relevant numbers).
- What's at stake (why this decision matters).
Don't add your opinion. Don't steer it. Save the framed question — you'll quote it verbatim five times.
Stage 2 — Dispatch all 5 advisors in parallel
Read all 5 advisor SKILL.md files. Then send a single message with 5 Agent tool calls, one per advisor.
Each Agent call uses this prompt template:
You are <ADVISOR_NAME> on an LLM Council.
[Quote the advisor's `Your role` section here]
[Quote the advisor's `Your thinking style` section here]
[Quote the advisor's `Hard constraints` section here]
[Quote the advisor's `Tone anchor` section here]
[Quote the advisor's `Output format` section here]
---
The framed question:
<framed question goes here>
---
Respond now. Output only the advisor response, in the format specified above. No preamble, no orchestration commentary, no multi-advisor balancing.
Important: the Outsider gets different context. The Outsider's whole value is having zero context — the curse-of-knowledge lens only works if it doesn't know what the user knows. So when constructing the Outsider's prompt:
- Pass any user-facing copy, product name, pitch, landing page text, or other artifact the user shared. The Outsider responds to it directly.
- Withhold the enriched workspace briefing (business stage, audience profile, past results, internal jargon glossaries). Quote only the surface question and any user-facing artifacts. If you accidentally pass the full briefing, you've undercut the lens.
The other four advisors all get the full enriched framed question.
When all 5 sub-agents return, you'll have 5 advisor responses. Save them with their advisor labels — you'll need both the labels and the texts in stage 4.
Stage 3 — Anonymize, then dispatch 5 peer reviewers in parallel
This is the step that makes the council more than just "ask 5 times." Most of the council's value comes out of stage 3.
First, anonymize. Generate a random mapping from advisor names to letters A–E. For example:
A → Executor
B → Contrarian
C → Outsider
D → First Principles Thinker
E → Expansionist
Save this mapping — you'll need it for stage 4 to de-anonymize, and for stage 5 to record it in the transcript. Different mapping each council run, generated fresh each time.
Then dispatch 5 peer review sub-agents in parallel. Send a single message with 5 Agent tool calls. Each reviewer sees all 5 anonymized responses — they don't know which letter maps to which advisor — and answers three questions:
You are reviewing the outputs of an LLM Council. Five advisors independently answered this question:
---
<framed question>
---
Here are their anonymized responses:
**Response A:**
<text of whichever advisor mapped to A>
**Response B:**
<text of whichever advisor mapped to B>
**Response C:**
<text of whichever advisor mapped to C>
**Response D:**
<text of whichever advisor mapped to D>
**Response E:**
<text of whichever advisor mapped to E>
---
Answer these three questions. Be specific. Reference responses by letter.
1. Which response is the strongest? Why?
2. Which response has the biggest blind spot? What is it missing?
3. What did ALL five responses miss that the council should consider?
Keep your review under 200 words. Be direct.
The third question is the most important one. That's where the council catches blind spots that no individual advisor saw.
Why 5 reviewers and not 1? Because 5 reviewers reading the same 5 anonymized responses converge on different blind spots. Aggregating their reviews surfaces patterns: if 3 of 5 reviewers flag the same gap, that gap is real.
When all 5 reviewers return, save their reviews. You don't need to know which reviewer is which — they're collectively the council's self-critique.
Stage 4 — Chairman synthesis
Spawn one sub-agent — the Chairman — with everything: the framed question, the 5 advisor responses de-anonymized (so you and the chairman can both see who said what), and all 5 peer reviews.
Chairman prompt:
You are the Chairman of an LLM Council. Your job is to synthesize the work of 5 advisors and their peer reviews into a final verdict.
The question brought to the council:
---
<framed question>
---
ADVISOR RESPONSES:
**The Contrarian:**
<text>
**The First Principles Thinker:**
<text>
**The Expansionist:**
<text>
**The Outsider:**
<text>
**The Executor:**
<text>
PEER REVIEWS (anonymous, 5 total):
<all 5 peer reviews>
---
Produce the council verdict using this exact structure:
## Where the Council Agrees
Points multiple advisors converged on independently. These are high-confidence signals.
## Where the Council Clashes
Genuine disagreements. Present both sides. Explain why reasonable advisors disagree.
## Blind Spots the Council Caught
Things that only emerged through peer review. Things individual advisors missed that other advisors flagged.
## The Recommendation
A clear, direct recommendation. Not "it depends." A real answer with reasoning. You can disagree with the majority of advisors if the dissenting reasoning is stronger — say so explicitly.
## The One Thing to Do First
A single concrete next step. Not a list. One thing.
Be direct. Don't hedge. The whole point of the council is to give the user clarity they couldn't get from a single perspective.
Stage 5 — Generate the report files
Save two files to the user's workspace folder. Use a timestamp in the filenames so successive councils don't overwrite each other.
File 1: council-report-<YYYYMMDD-HHMM>.html
A single self-contained HTML file with inline CSS. It is what the user actually reads. Build it with this structure:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Council Verdict — <short summary of question></title>
<style>
body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif; max-width: 760px; margin: 2rem auto; padding: 0 1.5rem; color: #1a1a1a; line-height: 1.55; }
h1 { font-size: 1.6rem; margin-top: 0; }
h2 { font-size: 1.15rem; border-bottom: 1px solid #e5e5e5; padding-bottom: 0.3rem; margin-top: 2rem; }
.question { background: #f7f7f5; padding: 1rem 1.2rem; border-left: 3px solid #888; border-radius: 4px; margin: 1rem 0 2rem; }
.verdict { background: #fffaf0; padding: 1.2rem 1.4rem; border-left: 3px solid #c08a3e; border-radius: 4px; }
details { margin: 0.6rem 0; border: 1px solid #e5e5e5; border-radius: 4px; padding: 0.6rem 0.9rem; }
details summary { cursor: pointer; font-weight: 600; }
details[open] summary { margin-bottom: 0.6rem; }
.advisor-name { display: inline-block; font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.05em; color: #666; margin-bottom: 0.4rem; }
footer { margin-top: 3rem; font-size: 0.85rem; color: #888; }
</style>
</head>
<body>
<h1>Council Verdict</h1>
<div class="question">
<strong>The question:</strong><br>
</div>
<div class="verdict">
</div>
<h2>Advisor responses</h2>
<details>
<summary>The Contrarian</summary>
</details>
<details>
<summary>The First Principles Thinker</summary>
</details>
<details>
<summary>The Expansionist</summary>
</details>
<details>
<summary>The Outsider</summary>
</details>
<details>
<summary>The Executor</summary>
</details>
<h2>Peer review highlights</h2>
<details>
<summary>5 anonymous peer reviews</summary>
</details>
<footer>
Council convened on <date>. Mapping for this session: A=<advisor>, B=<advisor>, C=<advisor>, D=<advisor>, E=<advisor>.
</footer>
</body>
</html>
File 2: council-transcript-<YYYYMMDD-HHMM>.md
A complete record. Useful if the user wants to re-council the same question after making changes, or hand the transcript to another agent.
# Council Transcript — <short summary>
**Date:** <ISO date>
## Original question
<what the user typed>
## Framed question
<the enriched version that all 5 advisors received>
## Anonymization mapping
- A = <advisor>
- B = <advisor>
- C = <advisor>
- D = <advisor>
- E = <advisor>
## Advisor responses
### The Contrarian
<full response>
### The First Principles Thinker
<full response>
### The Expansionist
<full response>
### The Outsider
<full response>
### The Executor
<full response>
## Peer reviews
### Reviewer 1
<full review>
### Reviewer 2
<full review>
(... and so on for all 5)
## Chairman's synthesis
<the full chairman output, with all sections>
After both files are saved, share computer:// links to the report and the transcript with a one-line summary of the recommendation. Don't paste the full chairman synthesis into chat — the report is the artifact, point the user at it.
Important notes
- The 5 advisors run in parallel, period. Send all 5 Agent tool calls in a single message. If you find yourself awaiting one advisor before spawning the next, stop and re-dispatch.
- The 5 peer reviewers also run in parallel. Same rule.
- Anonymize properly. If the reviewers can guess which letter is which advisor (e.g., always A=Contrarian, always B=First Principles), they will defer to thinking styles instead of evaluating on merit. Randomize the mapping fresh each council run.
- The chairman can disagree with the majority. If 4 of 5 advisors agree but the 1 dissenter has the stronger reasoning, the chairman should side with the dissenter and explain why. Consensus is not the chairman's job; clarity is.
- The Outsider gets different context. Pass user-facing copy/pitch/name. Withhold the enriched workspace briefing. The lens is destroyed by context.
- Don't council trivial questions. If the user asked something with one right answer, just answer it. The council costs 11 sub-agent calls; don't burn them on factual lookups.
- The HTML report is the deliverable. Most users will scan the report, not read the transcript. Make it clean and scannable.