consilium
Skill1 starsChanged 8 days agoMITView on GitHub
Convene a multi-model DECISION council on the cli-council engine (`council decide`) — several independent subscription-CLI models recommend, anonymously peer-rank, a chairman synthesizes ONE audit-gated recommendation with action tiers. Auto-use when the user wants MORE than a single-model answer on a genuine decision or trade-off — convening a council / a consilium / a second opinion from several models, deciding between clear alternatives with real trade-offs, or asks for a consilium or council by name, in English or Russian. Each run spends a few wall-minutes across the CLIs you already authed ($0, no API keys) — reserve it for decisions worth that, not trivial or quick-fact questions (for those, just answer directly).
6 other projects use a version of this.
Adopted by
Most recently taken up by
- AndreySukhanov/mementotheir own version, first seen Nov 8, 2026
- edloidas/skillstheir own version, first seen Nov 1, 2026
- specscore/specstudio-skillstheir own version, first seen Oct 8, 2026
- kavyrshin/Consiliumtheir own version, first seen Sep 19, 2026
- alxyrgin/health-ostheir own version, first seen Aug 6, 2026
- 3952801-sudo/claude-code-master-agenttheir own version, first seen Apr 19, 2026
Other versions6 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 6
- alxyrgin/health-os★ 38same name
- edloidas/skills★ 2same name
- 3952801-sudo/claude-code-master-agent★ 1same name
- kavyrshin/Consilium★ 1same name
- AndreySukhanov/memento★ 0same name
- specscore/specstudio-skills★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository2 other files it gives its agents.
- llms.txtllms.txt
- consreviewSkill
The file
We split this skill into the rules it gives an agent
6 rules. 0 are common, 1 is distinctive, and 5 are very specific to this project.
0
Common
Most of the 4 edited versions we read keep these.
1
Distinctive
This author's own choices. Worth a look.
5
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 9
Input: If this ran as /consilium <decision>, that argument is the decision.
- Very specific: line 41
Run an Exa search on the decision's factual premises BEFORE launching the council and put the findings, with their URLs, into question.md: …
- Distinctive: line 138
Self-bias safeguard: write the initial lean BEFORE launching the voices.
- Very specific: line 154
All fallback features are opt-in via council.toml — a fresh install with no fallbacks configured behaves identically to before.
- Very specific: line 174
Every consilium runs all four outside voices: Gemini (agy), Grok (grok-p), Muse (muse-batch) and the OpenAI voice: ChatGPT Chat, falling …
- Very specific: line 189
After the run, check pipeline-status.json: every voice in reviewers, none in opinion_errors.
“Common” is measured: kept by at least 6 in 10 of the 4 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Convene a decision/opinion council on the cli-council engine (council decide).
Input. If this ran as /consilium <decision>, that argument is the decision. If it
auto-triggered from the conversation, extract the decision to weigh yourself — the forks,
the constraints, and what a good answer must address. If the decision is empty or too
vague to frame, ask ONE clarifying question before firing (a run is $0 via the user's
subscriptions but burns a few minutes of wall time). If the request is a trivial or
quick-fact question, do NOT convene the council — just answer.
What this is
A decision/opinion council on the cli-council engine (council decide,
pipeline.run_decide_pipeline) — the SAME engine as consreview, pointed at a
DECISION instead of a diff. One council decide call runs the whole shape: every
enrolled voice gives a recommendation → anonymized peer-ranking → a chairman
synthesizes ONE recommendation with the action tiers → a mandatory audit panel
gates it (worst-wins — a rule, not a chairman, so no model can soften the gate).
Decision mode = recommendations + trade-offs + action tiers, NOT code-review
SHIP/FIX verdicts. $0 (subprocess to the subscription CLIs you authed), stdlib-only.
Why audit but no redteam by default: a redteam refutes a claim — high-signal for
code (a bug is true or false), but a decision has no ground truth to refute. The
load-bearing guard for a recommendation is the audit — is the synthesis faithful to
the raw voices (no invented convergence, misattribution, or action-tier inflation). Opt
into adversarial pressure on the recommendation with --redteam.
Voices: whatever you enrolled in council.toml ([council].voices, and the
[decide] audit/redteam panels). A decision needs ≥3 model families — a family
quorum, so no single vendor's models decide alone; the shipped council.example.toml
enrols a diverse keyless CLI roster that clears it. Two voices of one house (e.g. two
Claude models) count as one family.
Step 0 — Exa grounding (before any voice runs)
Run an Exa search on the decision's factual premises BEFORE launching the council and put the findings, with their
URLs, into question.md: facts, not guesses. If Exa fails, label the run "ungrounded" in the question and in the
report. Consilium is not a review loop:
- the prompt asks each voice for its perspective, not for bugs;
- the output is opinions with arguments, one round, then a synthesis and the user decides;
- Claude is the synthesiser, not a vote counter: one unique minority insight can outweigh five agreeing voices; resolve by the project concept and the evidence.
Procedure
- Preflight.
councilmust be on PATH (run the repo'sinstall.sh, or putbin/on PATH) andcouncil.tomlmust enrol your voices — the blessed path ispython3 installer/doctor.py enroll agy grok muse chatgpt(the roster below; a re-enroll keeps the chairman already incouncil.toml): it re-smokes each and writes a GATED config with the[decide]audit panel already filled in from your voices. Hand-copyingcouncil.example.tomlworks too, but its[decide]block ships commented out — leave it commented and the run isunverified(no audit gate, noAUDIT_VERDICT.md). The engine auto-discoverscouncil.toml(cwd or the repo root); an explicit--config <path>to a file that doesn't exist fails loud (it won't silently fall back to one voice). Frame the decision → write it to a file so a long / multi-line decision pipes cleanly on stdin (the engine reads a positional arg OR stdin):
DIR="$(mktemp -d)/consilium"; mkdir -p "$DIR" # write the framed decision to "$DIR/question.md": state the forks, the constraints, # and what a good answer must address — a decision, not a vague prompt.Run the decision council (background it — a few minutes with the slow reasoning voices and the audit panel):
council decide --out "$DIR" < "$DIR/question.md" 2>"$DIR/engine.log" echo "exit=$? · dir=$DIR"; tail -12 "$DIR/engine.log"- A short one-liner instead of the file:
council decide "<the question>" --out "$DIR". --redteamrequested → append--redteam <v1,v2>(a lean adversarial panel that stress-tests the recommendation; off by default because a decision has no ground-truth claim to refute).--no-verify→ append--no-verify— skips the audit panel → statusunverified, no gate. Use only for a quick unguarded opinion sweep; an unverified run is NEVER reported as a clean recommendation.--voices a,b,cnarrows the roster;--chairman Xchanges the synthesizer. Peer-ranking is intrinsic — there is no--no-rank.- Non-zero exit = the council itself failed — all voices dead, or fewer than 3 model
families answered (the family-quorum abort) — read
engine.log. Adegradedstatus is exit 0: a gate flagged the synthesis (steps 5–6).
- A short one-liner instead of the file:
- Artifacts in
$DIR:SYNTHESIS.md(the recommendation) ·v-<voice>.md(raw recommendations) ·a-<voice>.md(audit panelists) ·AUDIT_VERDICT.md·RANKINGS.md·MECHANICAL.md·pipeline-status.json(machine-readable gate) ·PIPELINE_DEGRADED.md(only when not clean) ·decide_prompt.md(the exact prompt). With--redteam: alsoREDTEAM_VERDICT.md+r-<voice>.md. Readpipeline-status.jsonfirst for the verdict, then the prose inSYNTHESIS.md. Read
pipeline-status.json+SYNTHESIS.md+AUDIT_VERDICT.md(+RANKINGS.md) and report:- Recommendation (the one-line lead of
SYNTHESIS.md) + per-voice stances (which voices converged / which split) + status (clean/degraded [finding|infra| mixed]/unverified) +opinion_errors. - Peer leaderboard (
RANKINGS.md): top / bottom voices. A weighting SIGNAL only — never present rank as proof, and never drop a voice because of rank. - Key convergences (2+ voices) with verbatim quotes · disagreements.
- Audit verdict —
AUDIT_VERDICT.mdfirst line# CLEAN | ISSUES | INVALID(worst-wins across panelists) + which panelist(s) set it. (redteam=SKIPPEDon a default run — expected; aREDTEAM_VERDICT.mdappears only with--redteam.) - Action classification —
SYNTHESIS.mdheadings `## BLOCKER / ## IMPORTANT /CHECK / ## ACCEPT / ## NOISE`. Present in that order.
For
CHECKitems, verify before presenting as actionable. ForBLOCKER/IMPORTANTitems with specific numbers/paths, spot-check against the actual source/data first.status: degradedis NOT a failure — a gate flagged the synthesis.degraded_kind:finding= a verifier caught a real problem (hand-verify before applying);infra= a verifier or the chairman synthesis couldn't complete (re-run);mixed= both.- Recommendation (the one-line lead of
- 🚨 Re-synth gate — MANDATORY when
AUDIT_VERDICTisISSUES/INVALID: do NOT apply rawSYNTHESIS.md. The engine gates but does not auto-re-synth (an auto-loop would let the panel out-vote a correct minority). Re-synth + primary-source verify: a. Read eachv-*.mddirectly (don't trustSYNTHESIS.mdcounts) + the flagginga-*.md. b. Rebuild by hand: recount convergences, drop inventions (phrases not literally in any voice), fix attributions, add missed convergences. c. Verify each claim with a concrete identifier (number, %, date) — 2+ independent sources. d. Apply only verified; consilium-only = tentative; disproven → drop.
Auto-Consilium (auto-decide)
- Activation: the user says "auto-decide"; it stays on until "stop auto-decide" or the session ends.
- Scope: the implementation phase only. Discovery, research and plan decisions always go to the user.
- Rule: where Claude would ask the user an implementation question, it runs this skill's council instead and acts on the synthesis. At most 5 auto-consiliums per task. A wrong answer that costs under 1 h of rework → decide; one that costs over a day → ask the user.
- Never auto-decided (always ask the user): permission-gated actions, spending over $1, scope expansion, security decisions, anything contradicting the concept or charter.
- Self-bias safeguard: write the initial lean BEFORE launching the voices. Confidence high (3 of 4 voices or more, plus evidence) → decide; medium (2 of 4) → decide with caution; low (split or weak) → ask the user. A council that merely confirms the lean with less than high confidence → ask the user.
- Log: append to the project's
consilium-log.md: question, initial lean, votes, audit verdict, confidence, decision.
Fallback chain (optional)
Voices can declare fallbacks = ["name1", "name2"] in council.toml. If the
primary fails (usage limit, version error, timeout), fallbacks are tried in
order; the first success wins. A dead-provider cache ensures a failed primary
is skipped instantly on subsequent stages (stage 2/3/panels pay zero retry
cost). Codex voices can add auth_check for a quick usage-limit preflight
(~20s instead of 30min hang). SSH-based fallback providers (bin = "ssh")
get automatic ControlMaster warm-up at pipeline start.
All fallback features are opt-in via council.toml — a fresh install with no fallbacks configured behaves identically to before.
Dependencies
- cli-council on PATH (
bin/council→python3 -m council; Python 3.11+, stdlib only)- a
council.tomlenrolling your voices (per-machine, git-ignored — copycouncil.example.toml).
- a
- The subscription CLIs you enrolled, each authed (
python3 installer/doctor.py smoke <voice>PASSES).
Related
consreview— code-review council on the same engine (council review; it adds a redteam panel — a bug has ground truth to refute).commands/consilium.md— the explicit slash-command form of this exact procedure.- Engine internals:
council/{decide,pipeline,audit,stages}.py.
Required roster (2026-10-01)
Every consilium runs all four outside voices: Gemini (agy), Grok
(grok-p), Muse (muse-batch) and the OpenAI voice: ChatGPT Chat, falling back
to dot, then Sol (gpt-6.1-sol), for an ordinary council (owner rule 2026-10-21),
Astra (gpt-6-astra at "extra" = xhigh) for a heavy one (skill codex-cli,
section "Sol or Astra — which one"). The roster, routes and fallbacks live once, in the
global contract (~/.claude/rules/team-rules.md, from claude-setup contract.md,
section "Review Cycle", "The four outside voices"); this section only says how this skill meets it.
council.tomlenrolsagy, grok, muse, chatgptby default (chairmanchatgpt; both use the chainchatgpt→dot→sol;solon a Mac without a Chat route; decide auditagy, grok, muse), so the procedure's barecouncil decideruns them; a heavy decision (costly trade-off, or stuck after a Sol council) runs--voices agy,grok,muse,astra --chairman astra. Never pass a--voiceslist that drops a family. The Claude voices, the terra/sol codex voices andagy38remain opt-in.- After the run, check
pipeline-status.json: every voice inreviewers, none inopinion_errors. Since 2026-10-01 a missing voice makes the rundegraded(required voice <v> missing). Four houses leave a family-quorum margin of one: two missing voices abort the decide. - A missing voice is re-probed and re-run, never replaced by another model (no Qwen, DeepSeek, Mistral, default Codex, Claude or OpenRouter stand-in); if it still cannot run after both routes and retries, report it as missing.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

