/council
Compare independent opinions from several models or contexts without inflating agreement. Use when: wanting a second opinion or debate, or summarizing several reviewers'' results.
Claude Code
$ npx -y skills add boshu2/agentops --skill council --agent claude-code
Codex
$ npx skills add boshu2/agentops --skill council -a codex -y
Cursor
$ npx skills add boshu2/agentops --skill council -a cursor -y
Gemini CLI
$ npx skills add boshu2/agentops --skill council -a gemini-cli -y
GitHub Copilot
$ npx skills add boshu2/agentops --skill council -a github-copilot -y
OpenCode
$ npx skills add boshu2/agentops --skill council -a opencode -y
Windsurf
$ npx skills add boshu2/agentops --skill council -a windsurf -y
SKILL.md
council.SKILL.mdname: council
description: 'Compare independent opinions from models or contexts without inflating agreement. Use when: wanting several opinions or a debate, or summarizing several reviewers'' results.'
practices: [llm-eval-harness, design-by-contract]
hexagonal_role: domain
consumes: [explicit-question, evidence]
produces: [council-report.v1]
context_rel: []
skill_api_version: 1
user-invocable: true
metadata:
graph_root: true
tier: judgment
dependencies: []
capabilities: [collect_independent_judgments, synthesize_disagreement, bounded_deliberation, duel_scored_ideas, answer_interview_panel]
effects: [write_advisory_council_report]
canonical_status: canonical
disposition: keep_strategy
output_contract: council-report.v1 JSON (schemas/council-report.v1.schema.json) validated by this skill's scripts/validate-output.sh
Council
Council collects sealed judgments from independent contexts, then synthesizes them so that agreement from one model or one method counts once, dissent and the caller's own decisions survive, and no verdict comes out. Use it when the caller selects several views, or asks you to summarize views already collected, and name the uncertainty that makes the extra contexts worth their cost; routine work needs no council.
| Use instead | When | |---|---| | [Review](../review/SKILL.md) | one opinion or look-over | | [Premortem](../premortem/SKILL.md) | how a plan could fail | | [Idea Genie](../idea-genie/SKILL.md) | options to build, or one consequential choice for Plan | | [Validate](../validate/SKILL.md) | an acceptance verdict |
Rules that decide the synthesis
They hold for a council you run and for judgments the caller already collected elsewhere (several reviews, subagent reads) and asks you to synthesize. Judgments made against different revisions are separate subjects, never agreement on one.
- **No verdict.** Council returns no `PASS`, `FAIL`, `NOT_PROVEN`, readiness
or approval, even when asked to turn agreement into one. Decline, and say that a fresh Validate read owns that judgment. The report goes to the caller as advisory findings, which cannot stand in for it.
- **Echo consensus weighs as one.** Agreement among judges that share one
model or one evidence method counts as one confirmation, however many judges share it: unanimity from identical inputs and one shared method is not independent confirmation. Each consensus point names the `methodologies` (static reading, executing the subject, tracing history) and, where judges record `model_identity`, the `models` of its supporting judges; a point with only one of either sets `weighs_as_one: true`.
- **The caller's direction stays the default.** A judgment that contradicts
what the caller decided becomes a `caller_challenge` entry with all five fields, never a consensus point or a quiet change to the recommendation.
- **Nothing is dropped.** Initial views are sealed before any is shared, every
finding lands in exactly one synthesis bucket, and dissent survives.
Run a council
| Use | Ask each participant for | Return to the caller | |---|---|---| | Brainstorm | Distinct options, assumptions, and failure modes | Promising ideas and the objections worth testing | | Design or plan | A proposed approach, tradeoffs, and evidence | A recommendation with unresolved decisions visible | | Validate | Findings against the same subject and acceptance | Advisory findings; acceptance stays with a fresh Validate read | | Duel | Ranked ideas, then scores for every other member's ideas | Ideas ranked by cross-member agreement, score gaps and dissent | | Interview panel | An answer to each Interview question | Agreed and open answers the caller accepts or amends |
1. Freeze the question, constraints or acceptance, authorized evidence, and subject digest. Select participants, model pins, and real dispatch bounds; contexts stay in the author's model family unless the caller pins mixed models through [model-dispatch](../validate/references/model-dispatch.md). The caller may give each participant its own model, effort and perspective (for example architect, reliability, security or simplicity); the same model in separate contexts counts as separate participants on the roster, but their agreement still weighs as one. A requested profile or required leg with no authorized live adapter is listed by name in `diversity_unsatisfied`; available views may still return with that limit, but a missing required leg prevents convergence and no agreement substitutes for it. 2. Give each participant a fresh independent context and the same bounded packet, never the author's preferred conclusion; a perspective steers what a member examines, never what evidence it gets. Collect proposals or judgments before revealing any peer response. Reused or colliding context IDs make a view non-independent: repair the isolation within bounds or disclose it. Admit facts tied to a cited source and the caller's stated need and stakes; keep your own rankings, option-grading labels and summaries of files a participant can open itself out until synthesis. Word options you drafted with equal care, and say a participant may reject all of them or the question as posed. Show peer work in debate or duel scoring under neutral labels (A, B, C), not member or model names; the report keeps the mapping in each judge's `judgment`. 3. Require evidence, reasoning, and omissions. For brainstorming, distinguish new hypotheses from supported claims; novelty is not proof. 4. Synthesize the sealed initial views, or run a caller-selected mode below. Preserve dissent and changes of position. `subject_digest` covers what Validate's [Subject](../validate/SKILL.md#subject) binds: the `canonical_manifest_digest` of `ao provenance manifest`, or else `shasum -a 256 <files> | LC_ALL=C sort | shasum -a 256` over the subject's repo-relative paths, or the sha256
Read more
name: council description: 'Compare independent opinions from models or contexts without inflating agreement. Use when: wanting several opinions or a debate, or summarizing several reviewers'' results.' practices: [llm-eval-harness, design-by-contract] hexagonal_role: domain consumes: [explicit-question, evidence] produces: [council-report.v1] context_rel: [] skill_api_version: 1 user-invocable: true metadata: graph_root: true tier: judgment dependencies: [] capabilities: [collect_independent_judgments, synthesize_disagreement, bounded_deliberation, duel_scored_ideas, answer_interview_panel] effects: [write_advisory_council_report] canonical_status: canonical disposition: keep_strategy output_contract: council-report.v1 JSON (schemas/council-report.v1.schema.json) validated by this skill's scripts/validate-output.sh
Council
Council collects sealed judgments from independent contexts, then synthesizes them so that agreement from one model or one method counts once, dissent and the caller's own decisions survive, and no verdict comes out. Use it when the caller selects several views, or asks you to summarize views already collected, and name the uncertainty that makes the extra contexts worth their cost; routine work needs no council.
| Use instead | When | |---|---| | [Review](../review/SKILL.md) | one opinion or look-over | | [Premortem](../premortem/SKILL.md) | how a plan could fail | | [Idea Genie](../idea-genie/SKILL.md) | options to build, or one consequential choice for Plan | | [Validate](../validate/SKILL.md) | an acceptance verdict |
Rules that decide the synthesis
They hold for a council you run and for judgments the caller already collected elsewhere (several reviews, subagent reads) and asks you to synthesize. Judgments made against different revisions are separate subjects, never agreement on one.
- **No verdict.** Council returns no `PASS`, `FAIL`, `NOT_PROVEN`, readiness
or approval, even when asked to turn agreement into one. Decline, and say that a fresh Validate read owns that judgment. The report goes to the caller as advisory findings, which cannot stand in for it.
- **Echo consensus weighs as one.** Agreement among judges that share one
model or one evidence method counts as one confirmation, however many judges share it: unanimity from identical inputs and one shared method is not independent confirmation. Each consensus point names the `methodologies` (static reading, executing the subject, tracing history) and, where judges record `model_identity`, the `models` of its supporting judges; a point with only one of either sets `weighs_as_one: true`.
- **The caller's direction stays the default.** A judgment that contradicts
what the caller decided becomes a `caller_challenge` entry with all five fields, never a consensus point or a quiet change to the recommendation.
- **Nothing is dropped.** Initial views are sealed before any is shared, every
finding lands in exactly one synthesis bucket, and dissent survives.
Run a council
| Use | Ask each participant for | Return to the caller | |---|---|---| | Brainstorm | Distinct options, assumptions, and failure modes | Promising ideas and the objections worth testing | | Design or plan | A proposed approach, tradeoffs, and evidence | A recommendation with unresolved decisions visible | | Validate | Findings against the same subject and acceptance | Advisory findings; acceptance stays with a fresh Validate read | | Duel | Ranked ideas, then scores for every other member's ideas | Ideas ranked by cross-member agreement, score gaps and dissent | | Interview panel | An answer to each Interview question | Agreed and open answers the caller accepts or amends |
1. Freeze the question, constraints or acceptance, authorized evidence, and subject digest. Select participants, model pins, and real dispatch bounds; contexts stay in the author's model family unless the caller pins mixed models through [model-dispatch](../validate/references/model-dispatch.md). The caller may give each participant its own model, effort and perspective (for example architect, reliability, security or simplicity); the same model in separate contexts counts as separate participants on the roster, but their agreement still weighs as one. A requested profile or required leg with no authorized live adapter is listed by name in `diversity_unsatisfied`; available views may still return with that limit, but a missing required leg prevents convergence and no agreement substitutes for it. 2. Give each participant a fresh independent context and the same bounded packet, never the author's preferred conclusion; a perspective steers what a member examines, never what evidence it gets. Collect proposals or judgments before revealing any peer response. Reused or colliding context IDs make a view non-independent: repair the isolation within bounds or disclose it. Admit facts tied to a cited source and the caller's stated need and stakes; keep your own rankings, option-grading labels and summaries of files a participant can open itself out until synthesis. Word options you drafted with equal care, and say a participant may reject all of them or the question as posed. Show peer work in debate or duel scoring under neutral labels (A, B, C), not member or model names; the report keeps the mapping in each judge's `judgment`. 3. Require evidence, reasoning, and omissions. For brainstorming, distinguish new hypotheses from supported claims; novelty is not proof. 4. Synthesize the sealed initial views, or run a caller-selected mode below. Preserve dissent and changes of position. `subject_digest` covers what Validate's [Subject](../validate/SKILL.md#subject) binds: the `canonical_manifest_digest` of `ao provenance manifest`, or else `shasum -a 256 <files> | LC_ALL=C sort | shasum -a 256` over the subject's repo-relative paths, or the sha256
DevOps discipline for AI coding agents. DevOps makes software delivery repeatable through shared practices, automated checks and feedback.
Other skills on agentops.
More skills from other plugins.
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
ask-matt
Ask which skill or flow fits your situation. A router over the skills in this repo.
Questions about council.
- Which coding agents can use council?
- council installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.

