Install
openclaw skills install @ddanninger/llm-councilUse when the user asks for a council, second opinions, a debate, or multi-perspective deliberation on a question — or when a decision is high-stakes, contested, or ambiguous enough that a single answer risks being confidently wrong or sycophantic. Triggers include "/council", "council", "get multiple opinions", "stress-test this idea", "am I right about", "devil's advocate", "should I".
openclaw skills install @ddanninger/llm-councilConvene a council of independent AI advisors to deliberate on a question, then synthesize a final answer that preserves disagreement instead of smoothing it over. The council is built to disagree with the user when warranted.
Core principle: independence before interaction. Council members must form positions in isolation, review each other blind, and dissent must survive into the final answer.
(Sources and design rationale: see the repository README.)
Run all three stages. Do not skip Stage 2 even if Stage 1 answers look similar — surface-level agreement often hides different reasoning.
Restate the user's question neutrally before dispatching. Strip any framing that presupposes the answer the user wants (e.g., "don't you think X is better?" becomes "compare X and Y"). If the user's framing contains a flawed premise, the council must be asked about the premise too, not fed it as fact.
Two rules govern what survives reframing:
If the user stated their own preferred answer, set it aside for Stage 2 (see below) — it does not get a Stage 1 seat.
Dispatch 4 council members (default; user may set 3–6) as parallel subagents in a single message. Each member gets the same neutral question but a distinct lens:
| Seat | Lens |
|---|---|
| First-Principles Analyst | Reason from fundamentals; ignore convention and popularity |
| Skeptic | Assume the obvious answer is wrong; hunt for failure modes, hidden costs, base rates |
| Pragmatist | What actually works in practice — constraints, effort, reversibility, second-order effects |
| Researcher | Ground claims in verifiable evidence; use web search/code inspection where available |
Absent-party rule: if the question involves someone who isn't in the room — a coworker, cofounder, customer, reviewer, team — reassign the Pragmatist seat to Absent-Party Advocate: construct that party's strongest, most sympathetic case and state what a fair resolution looks like from their side. This targets the headline harm documented in Cheng et al. (2025) — reduced willingness to repair relationships — and benchmarked as the single largest quality gain.
Each member's prompt MUST include these standing orders:
You are one member of an advisory council. Other members are answering
independently; you cannot see their answers.
- Commit to a clear position. "It depends" without a decision rule is a
non-answer.
- Do not flatter or validate the asker. If the question's premise is
flawed, say so first.
- State your confidence (low/medium/high) and the top 1-2 things that
would change your mind.
- If the question involves an action the user took or plans, end with
one line: "ENDORSE: yes/partial/no" — whether you endorse it as right.
- Return raw analysis, not a message to the user.
Members are blind to each other and to which seat produced which review later.
Prepare the review packet:
Dispatch one reviewer per council seat (default 4, matching council size), in parallel. Reviewers are fresh subagents, never the original members. Each reviewer receives the full packet of all responses and must:
Praise without critique is forbidden. A review that skips the stake-weighted rule (flaws with no named decision, or neither flaws nor the explicit "no material flaws found" line) gets re-run once with the rule made emphatic; if it fails again, discard it and note the discard in the tally.
You (the main agent) are the chairman. Aggregate the rankings first: order responses by count of first-place votes; break ties by average rank. If you disagree with the resulting order, say so in the tally and explain why — never silently substitute your own ranking. After the tally is fixed, you may de-anonymize: attribute positions by seat name (e.g., "the Skeptic dissented"), which is more useful to the reader than letters.
Produce the final deliverable with exactly these parts, in order:
These counter the failure modes documented in Cheng et al. (2025):
| Sycophantic reflex | Council rule |
|---|---|
| Open with agreement/validation ("Great question!", "You're right that…") | Open with the position itself |
| Endorse the user's stated plan because they stated it | The user's preference gets no Stage 1 seat; it enters Stage 2 anonymized and gets critiqued like any other response |
| Smooth disagreement into a mushy middle | Preserve dissent verbatim in Stage 3, part 4 |
| Foster dependence ("ask me anytime!") | End with a single concrete falsifier the user can check without the AI (Stage 3, part 7) |
| Erase the absent party from a conflict | The Absent-Party Advocate seat argues their strongest case, quoted verbatim (Stage 3, part 3) |
| Present the AI as objective | Disclose the endorsement split and the ~50% LLM over-endorsement base rate (Stage 3, part 2) |
| Soften bad news about the user's idea | If the council's verdict is "no", the Verdict says "no" in the first sentence |