agentleFS
Moe1117Moe1117/claude-council/SKILL.md

council

Skill1 starsChanged 4 months agoMITView on GitHub

Use when someone runs /council <question>, says "convene the council" or "council this", or wants a decision, tradeoff, design, or strategy question stress-tested from independent perspectives before committing — product/architecture/business calls, engineering and science design choices, "should I X or Y", "which approach". Panels adapt the bench to the question (strategy vs engineering vs science). Not for factual lookups, questions with one checkable answer, or trivial choices — answer those directly.

150 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use agent-payment-x402, motion-advanced and 10 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • TironFoxSkill

    agent-payment-x402

    Add x402 payment execution to AI agents — per-task budgets, spending controls, and non-custodial wallets via MCP tools. Use when agents need to pay for APIs, services, or other agents.

    Also in 5 projects that use this

  • renepfSkill

    motion-advanced

    Advanced motion patterns for React / Next.js — drag & drop, gestures, text animations, SVG path drawing, custom hooks, imperative sequences (useAnimate), loaders, and the full API decision tree. Requires motion-foundations.

    Also in 4 projects that use this

  • RojiosSkill

    defi-amm-security

    Security checklist for Solidity AMM contracts, liquidity pools, and swap flows. Covers reentrancy, CEI ordering, donation or inflation attacks, oracle manipulation, slippage, admin controls, and integer math.

    Also in 6 projects that use this

  • scottwaterSkill

    modernize

    Rebase an aging PR onto its current base and decide whether it should be modernized, reworked, or closed. Use when asked to rebase, update, or modernize an old PR.

    Also in 7 projects that use this

  • RojiosSkill

    dart-flutter-patterns

    Production-ready Dart and Flutter patterns covering null safety, immutable state, async composition, widget architecture, popular state management frameworks (BLoC, Riverpod, Provider), GoRouter navigation, Dio networking, Freezed code generation, and clean architecture.

    Also in 5 projects that use this

  • scottwaterSkill

    leaving-pr-comments

    Format comments an agent posts on GitHub on the user's behalf. Use whenever leaving a PR comment, review comment, or reply.

    Also in 6 projects that use this

  • +1 more from scottwater
  • +1 more from Rojios

The file

Files
SKILL.md

Council — structured multi-mind deliberation

Flow: QUESTION → COUNCIL (independent seats) → DEBATE (challenge → revise) → SYNTHESIS → ANSWER

Core principle: independence first, adversarial debate second, one decision last. The council advises; the deliberation core (you, in main context) decides. Dissent is preserved, never averaged away.

Seats

Nine seats across two benches. A panel fires six of them (see Panels); full fires all nine.

Judgment bench

SeatCharter
logicChecks reasoning: argument validity, evidence quality, hidden premises, internal consistency, fallacies
strategySees moves ahead: second-order effects, timing, optionality, reversibility, competitive response
systemsSees interactions: feedback loops, incentives, bottlenecks, where the change propagates, unintended effects
philosophyQuestions framing: is this the right question, definitions, hidden values, reframes that dissolve or sharpen it
first-principlesStrips assumptions: rebuilds from what is actually true or constrained (physics, economics, law, user behavior)
ethicsChecks consequences for people: stakeholders, harms/benefits, duties, trust, the regret test

Technical bench

SeatCharter
empiricistDemands evidence over argument: what observation would falsify this, the cheapest decisive experiment, what the data actually shows vs what's asserted, reproducibility, sample size, correlation ≠ causation. The seat that says "stop debating, run the test."
red-teamAssumes failure and traces it: pre-mortem, failure modes (FMEA), threat model, edge cases, behaviour under load/scale/adversarial input, single points of failure. Actively tries to break the proposal.
pragmatistShips the simplest thing that survives maintenance: build cost, YAGNI, complexity budget, tech debt, the maintenance tail, implementation reversibility, who owns this in a year. Resists gold-plating and premature abstraction.

Panels

Fire the bench that fits the question, not always the same six. A panel = six seats unless full.

PanelSeatsUse for
core (default)logic, strategy, systems, philosophy, first-principles, ethicsstrategy, product, business, life, "should I X or Y"
technicallogic, systems, first-principles, empiricist, red-team, pragmatistcode, architecture, systems design, infra, tooling
sciencelogic, systems, first-principles, empiricist, red-team, philosophyresearch, experiment design, data claims, mechanism
fullall ninehighest-stakes calls where cost is no object

Orchestrator (Phase 0): pick the panel that fits and state it. Default core for judgment questions, technical for code/engineering/infra, science for research/data/mechanism. panel= overrides your pick; seats= overrides everything.

Modes

Everything after /council is the question, minus leading flags.

FlagEffect
(none)Full protocol on the auto-selected panel, seats on model: "sonnet"
panel=core|technical|science|fullForce a panel (see table above)
seats=a,b,cExact seat list, overrides panel (e.g. seats=empiricist,red-team,logic)
deepSeats inherit the session model (≈3–5× cost; hardest questions only)
quickNo subagents: inline mini-council, one take ≤80 words per seat + synthesis, one context
nomapSkip the Phase 5 deliberation-map widget

Protocol (full)

Phase 0 — intake. Restate the question in one crisp sentence plus the decision criteria. Choose the panel and name it (or honour panel=/seats=). Seats see NOTHING but what you give them: gather whatever they need (files, memory, prior conversation) into a CONTEXT block ≤400 words BEFORE spawning. A context-starved council hallucinates specifics — if seats would need to research, do that research now, in main context.

Phase 1 — respond. Spawn ALL seats in ONE message (parallel Agent calls, subagent_type: "general-purpose", background, model: "sonnet" unless deep). Round-1 prompt per seat:

You are the {SEAT} seat on a deliberation council of {N} seats. Charter: {CHARTER}.
Other seats cover other lenses — stay in yours. You have NOT seen their views.
Do not use tools or search; reason only from CONTEXT.

QUESTION: {QUESTION}
CONTEXT: {CONTEXT}

Return exactly, ≤250 words, no preamble:
POSITION: your answer, 1-2 sentences
REASONING: through your charter's lens only
ASSUMPTIONS: the 2-3 your position rests on
FLIP: what would change your mind

Phase 1.5 / 3.5 — grounding check. Runs twice: after round 1 before the challenge digest, and after round 3 before synthesis. Both are injection points where an unsupported claim can enter shared reasoning. Skip in quick mode.

This is NOT deterministic and NOT a verifier — with no code, it is one narrow LLM pass. It may only ADD flags; it never strips a claim and never certifies one. Absence from its list means "not flagged", never "verified". Spawn one subagent (model: "haiku"):

You are a grounding checker, not a council participant. Do not judge the
reasoning or take a side.

List every SPECIFIC factual claim in the seat outputs that CONTEXT does not
support — named tools, systems, numbers, dates, people, capabilities, events,
or states of the world CONTEXT never states. Ignore reasoning, argument,
opinion, and general knowledge that makes no specific claim about THIS case.

Output ONLY:
UNSUPPORTED:
- {seat} → "{quoted claim}"
...or exactly: UNSUPPORTED: none flagged

Never mark anything verified, correct, or supported. You add flags only.

CONTEXT: {CONTEXT}
SEAT OUTPUTS: {outputs}

Measured behaviour (n=1 per variant — directional, not conclusive). Tested against a real run containing two known fabrications. The prompt above caught one of the two, produced zero false positives, and additionally caught an overstatement the author had missed. Two variants were tried and neither beat it:

  • More claim-classes (adding "process mechanics" and "misquotes of CONTEXT"): gained the mechanics catch but lost the misquote — extra instructions shifted attention rather than adding recall.
  • Two output tiers (FABRICATED / INFERRED): clearly worse — given a softer bucket the checker made zero hard calls and routed every finding, including an outright fabricated quotation, into "inferred". Keep it single-tier; a hedge option gets used as an escape hatch.

Expect a real miss rate. This is exactly why an unflagged claim is never "verified", and why tuning this further needs a proper eval set rather than single runs.

Then: the digest you pass onward MUST carry an UNSUPPORTED CLAIMS: line — always present, reading none flagged when empty. Never fold it in as optional prose; a discretionary merge becomes the new skippable seam. Annotate flagged claims in place rather than deleting them, so seats can weigh the flag themselves. Any flag still standing at Phase 4 goes into the synthesis output.

Phase 2 — challenge. Load SendMessage (ToolSearch "select:SendMessage"), then message every seat (by its agent id) with the OTHER seats' positions (POSITION + one line of reasoning each):

Round 2 — challenge. The other seats' positions:
{POSITIONS}

Steelman, then attack. Pick the 2 positions weakest or most in tension with
yours; strongest objection to each, ≤80 words per target. Polite agreement is
a failed round. Then name the single strongest point any seat made AGAINST
your position.

CHALLENGE → {seat}: ...
CHALLENGE → {seat}: ...
STRONGEST-AGAINST-ME: ...

Phase 3 — revise. Message each seat the challenges aimed at IT:

Round 3 — revise. Challenges aimed at your position:
{CHALLENGES}

Return ≤150 words:
REVISED-POSITION: 1-2 sentences (unchanged is fine if defended)
CONCEDED: what you now accept
DISSENT: what you still reject and why
CONFIDENCE: low | medium | high

Phase 4 — synthesis. In main context. Weigh, then DECIDE — a 4–2 split with a sharp dissent beats mushy consensus. Output:

**Answer** — the decision first, 1-3 sentences
**Why** — which arguments won and why, short prose
**Convergence** — where seats independently agreed
**Tensions** — each live tradeoff and the call made on it
**Dissent register** — unresolved objections worth carrying, attributed by seat
**Confidence** — low/med/high + what would flip the decision

Phase 5 — deliberation map (visual, optional). AFTER the text synthesis, never instead of it. Only when mcp__visualize__show_widget is available; skip silently in terminal sessions or when nomap was passed. First call mcp__visualize__read_me (modules ["diagram","data_viz"]) without narrating it, then render ONE HTML widget. Host design system wins over house style — flat surfaces, CSS variables only, auto light/dark, sentence case, Tabler outline icons, no gradients/blur/shadows.

Structure (top to bottom), all data from the run just completed:

  1. Header — mono overline deliberation map · N rounds · N seats, the question as h3, verdict chip (--bg-success/--text-success).
  2. Core card — --surface-2, 2px solid var(--border-accent) border, four + corner ticks (--text-muted), overline deliberation core · synthesize, weigh, refine, decide, the Answer sentence, one muted line of implementation/alarm detail.
  3. Seat grid — repeat(auto-fit,minmax(200px,minmax(0,1fr))), one card per seat: Tabler icon + name + confidence chip (high → success tint, medium → warning tint, low → plain border), then three lines: position (13px, 500), Conceded — … (--text-secondary), Holds — … (--text-danger). Each card onclick="sendPrompt('Show the {seat} seat's full three-round record from the {topic} council run')". Icons: logic ti-brain, strategy ti-chess-knight, systems ti-settings, philosophy ti-building-bank, first-principles ti-triangle, ethics ti-scale, empiricist ti-flask, red-team ti-shield-bolt, pragmatist ti-tools.
  4. Challenge ledger — wrap row of hairline chips, attacker → target · ≤4-word gist, one per Round-2 challenge.
  5. Dissent register — flag-icon lines (ti-flag, --text-danger), one per carried dissent.
  6. Metric row — --surface-1 tiles: verdict split, challenges filed, self-retractions, open dissents.
  7. Rounds strip — dashed chips 01 question … 05 synthesis with ti-check, plus right-aligned hint click a seat to interrogate it ↗.

Begin the widget with a sr-only h2 one-line summary. Keep <style> ≤15 lines; inline styles elsewhere. No prose paragraphs inside the widget — analysis lives in the chat text.

Quick mode

One context, no subagents: write each panel seat's take (≤80 words, charter-pure, genuinely different — if two agree, sharpen until they diverge or note real convergence), then the same synthesis block.

Failure modes

SymptomFix
Round 2 comes back polite / agreeingFailed round: resend with "find the real weakness or state which seat is wrong and why"
Seats assert facts not in CONTEXTThe grounding check (Phase 1.5/3.5) exists for this and fires every run — observed three times in live runs, including a seat inventing a detail during a debate about this very failure. If flags are frequent, intake was thin: rebuild CONTEXT and respawn. Never treat an unflagged claim as verified
Synthesis reads like an averageThe core must pick; write the Answer sentence before the map
Seat dies or returns junkProceed with remaining seats; note the empty chair in the dissent register
Rounds bloatEnforce the word caps; pass only POSITION + one line of reasoning between seats
Wrong bench for the questionRe-run with panel= or seats=; a code question on the core panel wastes philosophy/ethics

Cost

A six-seat panel ≈ 18 sonnet subagent exchanges + 2 cheap grounding checks + main-context synthesis. full (nine) ≈ 27. quick ≈ zero subagents. Don't full-council trivia; don't quick-council a company-direction call.

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.