Best for
- Rule-following / checklist / rubric work with 10+ independent criteria.
- A single agent currently applies the whole ruleset in one pass (slow + silent drops).
- The ruleset can be split into scenario-bound jobs with some overlap.
Jamie-BitFlight/claude_skills/plugins/plugin-creator/skills/ensemble-rule-review/SKILL.md
Design pattern for converting rule-following, checklist, or rubric skills into a fan-out map-reduce ensemble of parallel rigid sub-agents with corroboration-weighted merge; worker model tier and diversity are knobs matched to inference load and stakes, not fixed values. Apply when creating or refactoring a skill or agent that applies 10+ independent criteria in a single pass. Triggers on: 'review against a checklist', 'fan out', 'map reduce review', 'ensemble', 'split the rules', 'apply rubric',
Decision brief
A skill-design pattern for rule-following work. Instead of one agent holding the whole ruleset in a single pass, partition the ruleset across multiple rigid, parallel sub-agents whose coverage deliberately overlaps. Collect findings in a fixed schema, then weight by cross-agent…
Compatibility matrix
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/Jamie-BitFlight/claude_skills --skill "plugins/plugin-creator/skills/ensemble-rule-review"Inspect the Agent Skill "ensemble-rule-review" from https://github.com/Jamie-BitFlight/claude_skills/blob/b70ba8737e664d9e2482912e3ddbe7ecb77e0539/plugins/plugin-creator/skills/ensemble-rule-review/SKILL.md at commit b70ba8737e664d9e2482912e3ddbe7ecb77e0539. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
A compact selection aid: pick a fleet composition by matching the dominant error source and the stakes of the slice, not by a blanket cost rule. The flowchart branches on the discriminator (error-correlation structure / stakes / cost); the four compositions below are the leaves.
Explicit lists — partition is free. When the ruleset already names its categories, those categories ARE the worker boundaries. Examples:
The pattern is already running in-repo as a partial implementation:
One move underlies every variant: partition the attention surface across a shared goal. Each agent attends to less and therefore attends better; aggregating the results averages out the spikiness of any single agent's reliability. Focus and agent attention are the same thing — a…
A single agent holding a large ruleset (10+ criteria) and reviewing non-trivial input:
Permission review
No configured static risk pattern was detected
This is not proof of safety. Runtime behavior, indirect dependencies, and hidden external systems are outside the static scan.
Evidence record
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 100/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 64 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
A skill-design pattern for rule-following work. Instead of one agent holding the whole ruleset in a single pass, partition the ruleset across multiple rigid, parallel sub-agents whose coverage deliberately overlaps. Collect findings in a fixed schema, then weight by cross-agent corroboration and drop the low-weight tail. Worker model tier is a knob: the cheapest tier is the default for mechanical-matching slices; escalate to a more capable tier or heterogeneous families when a slice needs judgment or when de-correlating shared-model bias matters more than cost.
One move underlies every variant: partition the attention surface across a shared goal. Each agent attends to less and therefore attends better; aggregating the results averages out the spikiness of any single agent's reliability. Focus and agent attention are the same thing — a finite budget over the context that degrades as the surface grows (exactly the failure named below). Everything else is a knob on this invariant: what you partition (rule slices, personas, files), how fine each slice is, which tier attends to it, how diverse the attenders are, and how you recombine — corroboration for bounded / mechanical work, synthesis for unbounded / judgment work. Cheap, homogeneous, rule-sliced workers are one common setting of those knobs, not the invariant itself.
A single agent holding a large ruleset (10+ criteria) and reviewing non-trivial input:
This is the same failure mode as instruction bloat: more rules in one context window means higher probability each individual rule is under-applied.
Control header. One line at the top compiles an effort/scale parameter into concrete knobs: worker count, candidates per worker, verify policy, output cap. The same skill body scales rigor by the parameter. Two further knobs — worker model tier and worker diversity (homogeneous vs heterogeneous families / temperature / prompt framing) — are selected separately, by error-correlation structure and stakes rather than by the effort parameter, so they do not auto-scale with it. See "Model and Effort Guidance" for their selection criteria.
Deliberate overlap, not just partition. Worker scenarios are engineered so their goals INTERSECT. A genuine finding falls inside multiple workers' coverage and is reported more than once. A hallucination falls inside one worker's blank-filling and is reported once. Overlap converts N cheap opinions into a signal-to-noise instrument. Pure non-overlapping partition gives speed but NOT denoising. For the overlap construction, use a balanced rotating assignment (cyclic block design — N groups, N agents, each agent a window of w groups) so every rule gets equal redundancy; see the playbook's "Balanced rotating overlap" section.
Zero-creativity workers. Each sub-agent gets a rigid, explicit process and a PARTIAL rule set — stated methodology, fixed output schema, no interpretation latitude. Shrink each worker's job until it is mechanical matching, which is the band where a cheap model is reliable.
Match worker tier to inference load. The load-bearing invariants are rigid + partial ruleset + parallel — they are what make this pattern work, and they hold at any tier. Worker tier is a knob layered on top: the cheapest tier is the default because the design has already removed inference from the worker's job, so a model that is unreliable at open-ended inference is reliable at mechanical matching. Cheapness is an economics enabler — it makes running several overlapping workers over the same input affordable — not a core mechanism. Escalate the tier (or go heterogeneous) when a slice still requires judgment or when shared-model error must be de-correlated; the invariants stay fixed, only the tier knob moves.
Fixed candidate schema. Every worker emits the same shape (e.g., rule_id, location, verdict, evidence). This contract makes dedup, corroboration counting, and merge possible.
Corroboration weighting + drop the tail (the reducer). The orchestrator collects all
findings, deduplicates near-identical ones, raises weight for findings corroborated across
overlapping workers and sinks lone-worker findings, trashes the low-weight tail, keeps the
high-weight set. A single worker's random hallucination sinks below the keep threshold ONLY
when the precision gate is set (keep_threshold = window); the default keep_threshold = 1 is
recall-biased — it dedups and ranks but drops nothing. Caveat: the precision gate drops lone
findings of ALL kinds, including a true critical that only one worker's slice happened to cover —
so exempt critical/high severity from the tail cut and surface them flagged-but-uncorroborated
rather than silently dropping them.
More total facts pass through cheap/fast workers, and corroboration weighting cancels the noise — for ONE of two error sources. Overlapping rule slices denoise coverage / attention variance: a rule a worker under-applies in one pass is caught by another worker holding an overlapping slice. This is bagging / majority-vote ensembling applied to LLM rule-checking, and it is the genuine win.
It does NOT cancel shared-model bias. A construct the worker model systematically misreads is misread the same way by every worker that shares that model, so corroboration weighting boosts that shared error instead of cancelling it. The variance of an N-worker average floors at the correlated-error term ρσ² — the part adding workers cannot average away (the random-forest / correlated-Condorcet result). Net: the surviving set is more reliable than one cheap agent on attention errors, and no more reliable on systematic ones. The rule partition is a real de-correlation axis, but it varies which rules each worker checks, not how it reasons over the shared input — so to denoise the second source it must be paired with diversity on the axes it does NOT vary (worker model family, temperature, prompt framing) and a keep threshold calibrated on labelled data.
SOURCE: User-reported result (conversation 2026-05-30, not independently reproduced): a scientific-journal review skill — one Sonnet agent holding the full ruleset took 14-18 minutes on a 300-line file and returned 13 findings. Splitting the rules into 4 categories and running 4 Haiku agents (each with a partial rule list) on the same file returned 14 findings in 25 seconds — comparable recall, ~35x faster.
flowchart TD
P0["Phase 0 — Scope<br>Deterministically define the exact<br>input set (script / git diff / file)<br>No reasoning yet"] --> P1
P1["Phase 1 — Fan-out (map)<br>Dispatch N rigid workers<br>Each has a partial overlapping rule set<br>Each emits up to K candidates<br>in the fixed schema<br>Recall comes from here"] --> P2
P2["Phase 2 — Reduce<br>Dedup → weight by corroboration<br>→ drop low-weight tail<br>Optional: one-vote verifier per<br>surviving candidate<br>(CONFIRMED / PLAUSIBLE / REFUTED)<br>Precision comes from here"] --> OUT
OUT["Output<br>Ranked, capped, structured<br>Empty result is a valid terminal"]
| Component | Freedom | Reason |
|---|---|---|
| Worker process & schema | HIGH rigidity / LOW freedom | Rigid rule list, fixed schema; shrinks job to mechanical matching |
| Worker model tier & diversity | TUNABLE knob — select by criterion | Cheapest homogeneous tier is the default for mechanical-matching slices; escalate to a more capable tier or heterogeneous families for judgment-heavy / high-stakes / very-large-ruleset slices to de-correlate shared-model error |
| Reducer + output contract | LOW freedom | Fixed verdict set, fixed schema, hard cap |
Tier and worker diversity are knobs, not fixed values. Select them by matching to
per-rule competence, error-correlation structure, and stakes — the same axis the experiment
matrix names as THE de-correlation lever (./references/experiment-matrix.md,
"worker model" row) and the fit gate tests as a mandatory converse (./references/candidate-fit.md,
Q5 + rubric #5). Set the chosen tier in the worker agent's frontmatter model: field — never as
a prose mandate (./references/instruction-hygiene.md §3).
SOURCE: /plugin-creator:agentskills — degrees-of-freedom guidance and model selection by
task cognitive requirement. Tier/diversity-as-knob criteria: ./references/experiment-matrix.md
(worker-model de-correlation lever) and ./references/candidate-fit.md (Q5 + rubric #5 diversity gate).
A compact selection aid: pick a fleet composition by matching the dominant error source and the stakes of the slice, not by a blanket cost rule. The flowchart branches on the discriminator (error-correlation structure / stakes / cost); the four compositions below are the leaves.
flowchart TD
Start([Configure the worker fleet for a slice]) --> Q1{"Is the slice reducible to<br>mechanical matching after<br>thin slicing?"}
Q1 -->|"Yes — mechanical"| Q2{"High stakes OR shared-model<br>systematic miss likely<br>on this construct?"}
Q1 -->|"No — needs judgment"| Q3{"Can you inject diversity<br>(heterogeneous families /<br>temperature / framing)?"}
Q2 -->|"No — low stakes,<br>cost dominates"| CH["Cheap-homogeneous (DEFAULT)<br>Cheapest tier x N, same family<br>Rigidity + overlap denoise attention errors<br>Right for most slices"]
Q2 -->|"Yes — de-correlation matters"| HET["Heterogeneous-capable<br>Different model families and/or<br>varied temperature/framing<br>Breaks shared-model bias the vote<br>cannot otherwise cancel"]
Q3 -->|"Yes"| MIX["Mixed-tier fleet<br>Cheap workers on mechanical sub-slices<br>+ one or more capable/different-family<br>workers on the judgment sub-slice<br>Diversity is mandatory here (candidate-fit Q5)"]
Q3 -->|"No — cannot inject diversity"| Single["Not an ensemble fit<br>Keep a single capable agent<br>Corroboration would boost shared bias<br>(candidate-fit Q5 -> Stop)"]
CH --> Verify{"Need an independent<br>precision check on<br>surviving findings?"}
HET --> Verify
MIX --> Verify
Verify -->|"Yes — false positives costly"| IndV["Add independent different-model verifier<br>One capable worker from a different family<br>than the workers, voting CONFIRMED/PLAUSIBLE/REFUTED<br>per surviving candidate<br>A same-model verifier shares the workers' blind spot"]
Verify -->|"No — recall-biased, low stakes"| NoV["No separate verifier<br>Reducer keep-threshold handles precision"]
Diversity is multi-axis. Worker diversity is not only model family / temperature / prompt framing — it ALSO includes role / persona / expert-framework diversity (e.g. distinct advisor personas, each carrying a different expert lens, over one unbounded problem). Treat role/persona as a first-class diversity axis alongside the model-level axes when de-correlation matters.
Reduce method follows boundedness. Bounded / mechanical rule-checking → corroboration-weight + drop-tail over a cheap homogeneous swarm (this skill); unbounded / judgment problems → escalate to synthesis across diverse lenses (a capable, role-diverse panel), whose reduce step is synthesis, not corroboration counting (see ./references/methodology-selection.md). Example: a cheap mechanical codebase-rule swarm (this skill) vs a role-diverse strong advisor panel on an open design question (synthesis, not this skill's reducer).
The four compositions, by selection criterion:
candidate-fit.md Q5, diversity is mandatory once judgment is involved.Criterion in one line: mechanical + low-stakes → cheap-homogeneous; shared-bias risk or high
stakes → heterogeneous; mixed work → mixed-tier; costly false positives → add an independent
different-model verifier. Set the chosen tiers via each worker agent's frontmatter model:
field. Full factor sweep: ./references/experiment-matrix.md.
For the full go/no-go decision — candidate signals, the ensemble-denoising-vs-other-flavor alignment check, and the fit-killer where corroboration boosts shared-model bias — load ./references/candidate-fit.md. To choose among the wider family of fan-out methodologies (work-partition, Best-of-N, debate, DAG) when this skill is not the right one, load ./references/methodology-selection.md.
Use when:
Do NOT use when:
Multi-phase / sequential workflows are NOT disqualified. Do not score the whole pipeline as one unit — score each phase. A sequential workflow is the conductor; each rule-following phase becomes its own internal ensemble and each independent-work phase becomes a work-partition fan-out, while the phase ordering stays sequential. There are two fan-out flavors:
See ./references/composing-in-workflows.md for the per-phase classification rule and a worked map of a 9-phase workflow.
Explicit lists — partition is free. When the ruleset already names its categories, those categories ARE the worker boundaries. Examples:
## Checklist or ## Quality Criteria section.Implicit lists — enumerate first, then partition. A rubric is named but not enumerated; make it explicit, then split. Examples:
The tell: any instruction containing "ensure … follows", "review for", "look for … opportunities", or a named framework is an implicit (or pre-partitioned) checklist.
For the full typology of implicit-checklist patterns grouped by partition-readiness — named principle sets, "modernization / idiomatic / pythonic", "review X for quality", and prompt-engineering / skill-quality self-review (with per-pattern examples) — load ./references/partitioning-patterns.md.
Two procedures and one reusable contract turn this pattern from concept into action:
multi-perspective-review prior art below.)./scripts/plan_ensemble.py RULES.json --report-dir /abs/dir (tested;
./scripts/test_plan_ensemble.py) to compute the rotating-overlap assignment deterministically.
It assigns each worker its groups + an absolute OUTFILE, tags rules per-group, verifies uniform
redundancy, and prints the recommended --keep-threshold — removing the manual bookkeeping that
caused this session's bugs (wrong paths, drifted group ids, ad-hoc overlap, per-worker tagging)../scripts/reduce.py (tested; ./scripts/test_reduce.py) over the
worker output files to dedup, corroboration-weight on (group, location), drop the tail, and
rank. Workers emit a stable group id (the corroboration key) plus a free-form rule slug
(descriptive only) — keying on the slug would never corroborate, since workers name rules
differently.The two scripts are deterministic bookends around the only fuzzy step (the LLM workers' rule matching): plan_ensemble.py → spawn focused-reviewer ×N → reduce.py.
Spawn the plugin-creator:focused-reviewer agent as each map worker — a lean haiku agent with
minimal tools (Read, Grep, Glob, Bash, Write) and no inherited skills, built to apply one rule
slice and emit the fixed schema. Do NOT use general-purpose workers: they inherit every skill
and MCP tool description, adding a large constant token cost to every one of the N parallel
workers. For web/API targets, the spawner adds the one specific MCP tool to the worker's tools.
Every worker reviews the SAME input; only its rule slice differs. The denoising comes from overlapping rule coverage on shared input — multiple workers independently reaching the same finding, which the reducer counts as corroboration. Sharding the input instead (different files per worker) buys speed but NOT denoising, because no two workers can corroborate the same location. Shard input only as a secondary axis when one worker cannot hold the whole input, and keep rule-overlap within each shard.
The pattern is already running in-repo as a partial implementation:
plugins/development-harness/skills/multi-perspective-review/SKILL.md — a working 4-worker
parallel review fan-out (Security, Performance, Quality, Accessibility) with per-worker SOPs
and a merge gate.plugins/development-harness/agents/reviewer-{security,quality,performance,accessibility}.md
— the rigid worker agents.It lacks two pieces vs the full pattern: a fixed candidate schema and an explicit corroboration-weight reducer (it merges by any-REJECT, not corroboration weighting).
The control-header + finder-angles + constrained-verdict-verify + capped-output structure
originates in the Anthropic-bundled /code-review built-in skill.
SOURCE: /plugin-creator:agentskills — progressive disclosure, lean SKILL.md, skill packaging
discipline.
For the ranked catalog of in-repo conversion candidates (Tier 0-3, clusters C1-C9), load ./references/conversion-candidates.md.
Frequently asked questions
A skill-design pattern for rule-following work. Instead of one agent holding the whole ruleset in a single pass, partition the ruleset across multiple rigid, parallel sub-agents whose coverage deliberately overlaps. Collect findings in a fixed schema, then weight by cross-agent…
The source record exposes this install command: npx skills add https://github.com/Jamie-BitFlight/claude_skills --skill "plugins/plugin-creator/skills/ensemble-rule-review". Inspect the command and pinned source before running it.
Alternatives
coreyhaines31/marketingskills
When the user wants to plan, design, or implement an A/B test or experiment, or build a growth experimentation program. Also use when the user mentions "A/B test," "split test," "experiment," "test this change," "variant copy," "multivariate test," "hypothesis," "should I test this," "which version is better," "test two versions," "statistical significance," "how long should I run this test," "growth experiments," "experiment velocity," "experiment backlog," "ICE score," "experimentation program
coreyhaines31/marketingskills
When the user wants to reduce churn, build cancellation flows, set up save offers, recover failed payments, or implement retention strategies. Also use when the user mentions 'churn,' 'cancel flow,' 'offboarding,' 'save offer,' 'dunning,' 'failed payment recovery,' 'win-back,' 'retention,' 'exit survey,' 'pause subscription,' 'involuntary churn,' 'people keep canceling,' 'churn rate is too high,' 'how do I keep users,' or 'customers are leaving.' Use this whenever someone is losing subscribers o
prowler-cloud/prowler
PostgreSQL indexing best practices for Prowler: index design, partial indexes, partitioned table indexing, EXPLAIN ANALYZE validation, concurrent operations, monitoring, and maintenance. Trigger: When creating or modifying PostgreSQL indexes, analyzing query performance with EXPLAIN, debugging slow queries, reviewing index usage statistics, reindexing, dropping indexes, or working with partitioned table indexes. Also trigger when discussing index strategies, partial indexes, or index maintenance
oaustegard/claude-skills
Generate hierarchical _FEATURES.md files that describe what a codebase DOES from a user/consumer perspective, anchored to source symbols via tree-sitting. Supports large complex codebases through feature-driven decomposition into sub-feature files. Uses a multi-pass synthesis: orientation → detail → overview rewrite. Use when someone says "what does this do", "document features", "feature inventory", "_FEATURES.md", or needs to understand a codebase's purpose before modifying it. Complements tre