agentleFS
lennytoolslennytools/lenny/skills/council/SKILL.md

council

Skill1 starsChanged 2 months agoMITView on GitHub

Part of the Lenny suite. The generic debate and model-council framework for convening N independent seats, having them reason blind, then debating to a consensus with a dissent register. Use to build your own review board for any domain instead of trusting one model's single pass. Triggers "council", "convene a council", "debate council", "model council", "adversarial review", "build a review board". This is the pattern; you supply the seats.

143 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

We split this skill into the rules it gives an agent

7 rules. 0 are common, 5 are distinctive, and 2 are very specific to this project.

  • 0

    Common

    Most of the 128 edited versions we read keep these.

  • 5

    Distinctive

    This author's own choices. Worth a look.

  • 2

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Use native Codex subagents when one test dispatch succeeds and returns a real task identifier.

    line 46
  2. Very specific:

    If the dispatch errors, returns no task identifier or reports that the parent thread does not exist, do not wait on it and do not retry it.

    line 48
  3. Very specific:

    Verify codex --version and codex login status before using the CLI fallback.

    line 54
  4. Distinctive:

    If either fails, mark the independent council unavailable and stop.

    line 55
  5. Distinctive:

    Round 2, cross-critique: Every seat now receives the others' theses and attacks or defends them.

    line 79
  6. Distinctive:

    Independence before debate: Never let seats see each other's Round 1 output.

    line 122
  7. Distinctive:

    If they do, you have one opinion in three costumes.

    line 123

“Common” is measured: kept by at least 6 in 10 of the 128 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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Council: the debate framework (bring your own seats)

A council is a structured way to get MORE than one model's single opinion: several independent seats, each carrying a distinct lens, that reason separately and then argue to a consensus. It exists because one model's one pass has one set of blind spots. Diverse seats that must defend their claims against each other catch both false positives (a claim that does not survive scrutiny) and surviving bugs (a real problem the happy-path pass missed).

This skill is the pattern, not a fixed panel. You define the seats for your domain. A code team defines correctness / security / simplicity seats; a research team defines different ones. The protocol below is the same regardless.

When to use

  • Any decision or artifact important enough that one model's single review is not enough: a design, a diff, a plan, a risky change.
  • As a gate inside a larger pipeline (e.g. a conductor's review phase).
  • Whenever you catch yourself trusting a lone "looks good to me."

Define your council (this is the only thing you supply)

A council is a list of seats. Each seat is config the agent READS:

seat:
  name: <who/what this lens is>
  lens: <the ONE thing this seat interrogates, and how it judges>
  output: severity (BLOCKER/HIGH/MEDIUM/LOW) + confidence (0-1) + file:line or section evidence

Seats can be role lenses ("the security reviewer") or embodied personas ("a veteran operator who has run this in production"). Both work; the honesty rail below governs personas.

Isolation ladder (Codex)

Blind seats require separate model contexts, not three headings written by the driver. Before Round 1, probe the live host once:

  1. Use native Codex subagents when one test dispatch succeeds and returns a real task identifier.
  2. If the dispatch errors, returns no task identifier or reports that the parent thread does not exist, do not wait on it and do not retry it. Immediately run one fresh codex exec --ephemeral process per seat against the same frozen commit. Give each process only the common evidence packet plus that seat's lens, write each raw output to a different file and wait for all process exit codes before cross-critique.
  3. Verify codex --version and codex login status before using the CLI fallback. If either fails, mark the independent council unavailable and stop. Never manufacture blind agreement inside the driver context.

The fallback is still Codex-first. It changes process isolation, not the reviewer vendor. Never recursively ask a fallback reviewer to convene another council.

A neutral worked example (a generic code-review council) ships in references/example-code-review-council.md - copy it and swap the seats for yours.

Mode A - roundtable (default, fast)

Round 1 only. Each seat, as an INDEPENDENT and BLIND pass (it has not seen the other seats' output), gives a thesis (a committed ruling, not a hedge) plus a confidence 0 to 1. Synthesize the theses. Use when you want diverse coverage quickly and the stakes do not warrant a full debate.

Mode B - debate protocol (merge-blocking, three rounds)

  1. Round 1, independent and BLIND. Each seat is a SEPARATE pass that has NOT seen any other seat's output. It writes a thesis: a load-bearing argument, a ruling, and a confidence 0 to 1. A seat that hedges without ruling has failed its round. Independence here is non-negotiable; it is what preserves the blind-spot coverage the whole method exists for.
  2. Round 2, cross-critique. Every seat now receives the others' theses and attacks or defends them. Claims get strengthened with new argument, softened, or killed. This round kills false positives AND surfaces bugs the first round missed (the seats review each other's reviews).
  3. Round 3, consensus + dissent register. ONE unified verdict from what survived, recording what changed between rounds, per-finding confidence, and a dissent register of any disagreement that did NOT resolve. Bounded to 3 rounds; if it does not converge, surface the deadlock honestly rather than faking consensus.

Cross-cutting doctrine (applies to every council)

  • Diversity charter. Consensus among diverse seats is signal; consensus among similar seats is a shared blind spot wearing a badge. Make the seats genuinely different lenses, and where possible run at least one seat on a different model/vendor (different training, different blind spots).
  • Shared-blind-spot rule. Answer the upstream question before the downstream one (e.g. "is the data / premise sound?" before "is the method good?"). A council that all assumes a bad premise agrees its way off a cliff.
  • Honesty framing. Embodied personas are an ANALYTICAL DEVICE, not real people. Never fabricate a quote or a credential; any quoted text must be a real, cited quote. A persona's value is the lens, not a fake biography.
  • Per-seat known-limits. Each seat states what it is NOT positioned to judge, so its silence on something is not mistaken for a pass.
  • Findings are hypotheses. A council finding is a claim to validate against the actual artifact/code before it gates anything. Cite evidence (file:line or section). An unvalidated finding never blocks on its own.

Output schema (what a council returns)

A ranked findings list, each with: severity (BLOCKER / HIGH / MEDIUM / LOW), confidence (0 to 1), evidence (file:line or section), and a one-line statement of the defect. Then a verdict (e.g. GO / BLOCKED, or adopt / adopt-with-fixes / reject) and the dissent register. Nothing else. Severity is "how bad if real"; confidence is "how sure it is real" - keep them separate, and give a high-severity / low-confidence finding extra validation before it gates.

Hard rails

  • Config the agent READS, never a runtime it executes. A council is a lens the agent applies, not an engine. Do not build a parser that "runs" councils; that forfeits portability across harnesses.
  • Independence before debate. Never let seats see each other's Round 1 output. If they do, you have one opinion in three costumes.
  • Dissent is preserved, never averaged away. A minority finding that survives the debate is logged with its rationale, not erased by "consensus."
  • No fabricated quotes or credentials (see honesty framing).

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.