agentleFS
EtanHeyEtanHey/golems/skills/golem-powers/plan-council/SKILL.md

plan-council

Skill0 starsChanged 16 days agoApache-2.0View on GitHub

Plan councils, anonymized candidate ranking, bulk judge fleets, assumption checks. Triggers: council, review my plan, score the plan, judge the plan, validate plan, check assumptions, cross-family judges, lift round, exact-head review, conditional GO, MUST_FIX, peer ranking, anonymized review, adversarial verification, score multiple candidates, judge fleet, bulk judge, R3 verdicts, kg-judge, RT gate, evidence_degraded. NOT for one-off PR/code review.

1 other project uses a version of this.

Adopted by

Most recently taken up by

The file

We split this skill into the rules it gives an agent

8 rules. About 0 are common, 5 are distinctive, and 3 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈5

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 3

    Very specific

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

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    EVERY artifact this protocol emits — ballot, lift table, convener report — leads with its table.

    line 18
  2. Very specific:

    Anonymized ranking: no authorship leak (never name a participant engine or say "my proposal"), a numeric Score: per candidate, an ## Inputs …

    line 30
  3. Distinctive:

    Assumption check: run it before any overnight or multi-agent sprint.

    line 37
  4. Distinctive:

    Use references/seat-briefs.md and workflows/run-council.md.

    line 54
  5. Very specific:

    Do not average disagreement away.

    line 60
  6. Distinctive:

    Run workflows/lift-round.md.

    line 77
  7. Very specific:

    Every execution verdict names the exact head SHA.

    line 83
  8. Distinctive:

    Every review round declares its axis and method.

    line 87

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “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

Plan Council

Review one authored plan or spec with declared cross-family judges. Disagreement is evidence: preserve each judge's independent rubric, validate claims against live local state, and let the conservative non-author-family score govern disputed lanes.

Scope

The council runs 3 visible seats from 3 model families, self-invented rubrics, live-repo read-only validation, measured same-family bias, a lift round, and exact-head review loops.

Output contract

EVERY artifact this protocol emits — ballot, lift table, convener report — leads with its table; environment caveats and preamble go BELOW the first table, never above it.

Route first

NeedUse
Review one authored plan/spec with declared judge families and measured biasthis page (Five laws below)
Rank multiple anonymized candidates without authorship signalsreferences/anonymized-ranking.md + its own validator, anonymized_ranking/council_lint_cli.py
Fan out bulk verdict production over many prompts/itemsreferences/bulk-judging.md (seven rules + dispatcher checklist)
Check a multi-agent plan's claims before running it (VERIFIED / ESTIMATED / PHANTOM), then rewrite itreferences/assumption-check.md

Load-bearing rules from those references, so a router that stops here still gets them right:

  • Anonymized ranking: no authorship leak (never name a participant engine or say "my proposal"), a numeric Score: per candidate, an ## Inputs read section, and the sentinel as the last line. Resolve every cited symbol/line against the code before hand-off.
  • Bulk judging: probe brain_search before fan-out (an enrichment-locked DB → HOLD); stage under a durable eval_results/<campaign>/, never /tmp; reason per prompt (scripts may validate, never produce verdicts); completion = DONE/<worker>.done files; append-only collab sections; flag evidence_degraded and filter it before bulk-apply; red-team gate before any bulk-apply.
  • Assumption check: run it before any overnight or multi-agent sprint. Every PHANTOM claim is killed or verified; quantitative claims need a source.

Five laws

1. Seats

  • Convene 3 voting seats from 3 model families in visible cmux panes: R1 claude.judgment, R2 codex.implement, and the separately declared R3 Fable 5 seat. Never use background subagents.
  • Pin every seat explicitly and verify the effective model from the pane. The Fable seat uses raw claude --dangerously-skip-permissions --model claude-fable-5 because the repoGolem launcher cannot express it.
  • Supply no shared rubric. Each judge invents named dimensions and weights totaling 100.
  • Each judge scores every lane 1-10, checks the live repo read-only, makes findings falsifiable, gives GO / NO-GO / CONDITIONAL GO per gated unit, names its top three changes, signs its family, and ends with its agreed sentinel.
  • Each judge's FIRST output line after the ballot heading must be the scorecard TABLE header; judges write no prose before it.

Use references/seat-briefs.md and workflows/run-council.md.

2. Merge

  • The plan author holds no seat and scores nothing.
  • Do not average disagreement away. For each disputed lane: merged(lane) = min(non-author-family judge scores).
  • Report same-family bias per lane and the round mean. Flag a same-family judge at ≥ +2 above the conservative non-family read.
python3 <plan-council-skill-dir>/council_bias.py <ballots-dir> --author-family <author-family>

3. Lift round

For every lane below 8, ask every judge for THE ONE artifact that would lift it above 8 and an explicit research call. The governing instruction is:

one artifact each, and it must be the thing whose absence is why the score is low — not a wish list.

Run workflows/lift-round.md. Conditions addressed to the author are work: apply them and continue. They are not ratification theater. Irreversible state changes retain their own receipt-first HARD STOP.

4. Exact-head review

Every execution verdict names the exact head SHA. ACCEPT / ITERATE / MUST_FIX without that SHA is void. The ACCEPTED head is the merged head; any later head movement makes the verdict stale and requires re-review.

Every review round declares its axis and method. A stale-only round counts toward a published stop-line only when it explores the same axis as the prior round and uses an adversarial method that attempts to defeat the rules. A confirmatory happy-path round never counts; changing axis resets the counter. Publish axis, method, counter, and stop-line before dispatch. See workflows/exact-head-review.md.

5. Conditions are work

Apply council conditions assigned to the author and go. Do not park approved work behind another ratification step. This does not weaken independent data-safety gates for migrations, backfills, or other irreversible operations.

Validate ballots

python3 <plan-council-skill-dir>/council_lint_cli.py ballot.md \
  --lane "W3 preconditions" --lane "3a source_class" \
  --author-seat <author-voting-seat-or-nonseat-id> --sentinel DONE_COUNCIL_R1
python3 -m pytest <plan-council-skill-dir>/tests/ -q
RuleRequired invariant
table-not-firstFirst content after the ballot heading is a markdown table.
missing-rubricMultiple named rubric dimensions carry weights.
rubric-weights-not-100Weights sum to 100 within ±0.5.
unscored-laneEvery CLI-declared lane has a numeric score.
score-out-of-rangeEvery score is within 1-10.
unfalsifiable-findingAt least one F-numbered finding has a file:line, command, query, PR, or issue locator. If the ballot is checkable overall, each remaining uncited finding is reported as a warning.
missing-refuter (warning)No explicit Refute me with: / Falsifier: guidance; reported but never exit-1.
missing-live-receipts (warning)No distinct self-verified receipts section; reported but never exit-1.
missing-conditional-verdictThe ballot gives at least one explicit uppercase gating verdict: GO / NO-GO / CONDITIONAL GO / BLOCK / HOLD / RESHAPE / RESCOPE / REDESIGN.
missing-family-signatureSignature is — R<n> · <declared family> · <harness>; any declared family is legal.
missing-sentinelThe agreed sentinel is the final non-empty line.
author-scoredThe signed voting-seat ID is not the seat held by the plan author (--author-seat R<n>). When the author holds no seat, pass its non-seat ID; family equality never fails lint.

author-scored enforces the operator-declared author seat; detecting covert authorship would require adding agent identity to the signature contract.

The mechanical contract has 10 gate rule IDs + 3 warning types. Checkability is ballot-scoped: unfalsifiable-finding rejects a ballot when none of its findings has a concrete locator, then warns on individual uncited findings when at least one sibling is cited. The refuter and receipts warnings remain visible but non-gating; the source corpus proves that strong ballots can omit those house-style forms and can include a paper-contract finding beside live verified findings.

Anti-patterns

Don'tEvidence
Run judges as background subagentsEtan distrusted the council; visible panes from round one.
tail -f a collab for judge outputIt dies silently; use marker-count polling, one monitor per lane, killed with the lane.
Assume a spawned seat bootedA lane was lost to a silently dead launcher; verify with read_screen within 30 seconds.
Re-brief a running judge by editing a fileFiles do not bind running agents; re-brief in-pane.
Accept prose-first ballotsUse table-first, one page: running / needs-receipt / needs-rework.
Average disputed scoresSame-family bias ran +3 to +5; the conservative non-family read governs.
Park approved work behind ratificationConditions to the author are work; apply and go.
Merge a head the reviewer never ruled onThe ACCEPTED head is the merged head.
Stop after quiet rounds that changed axisAn axis-changing round found a hole twelve prior heads missed.

Receipts

The numeric claims and worked example come from the read-only source trail documented in references/worked-example.md.

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.