magnus919/agent-skills/agent-council
Claude Code and agent skill by magnus919/agent-skills
- community
Checking that the SKILL.md file is still in the repository.
Run a structured multi-agent debate by spawning a panel of expert agents on any question, with convergence-aware iteration and typed synthesis output via the `agent-council` CLI. Use when a decision has genuine tradeoffs, high stakes, or hidden assumptions worth adversarial collaboration, or when confidence diagnostics matter more than a single recommendation. Compatible with any AI agent harness that supports agentskills.io skills (Claude Code, Cursor, Hermes Agent, OpenHands, etc.). Do not use for simple factual lookups, tasks with a clear correct answer, routine single-perspective work, or code execution and tool orchestration beyond debate.
Install
npx vskill@latest install magnus919/agent-skills/agent-councilSKILL.md
Agent Council
Spawn a panel of expert agents to debate any question. The council runs a structured protocol — compose, premortem, position, cross-examination (iterative), synthesis — and produces a decision landscape with convergence diagnostics.
When to Use
Invoke the council when any of these apply:
- The question has genuine tradeoffs with no clear correct answer
- You want multi-perspective analysis to surface hidden assumptions
- A decision would benefit from adversarial collaboration
- You want confidence diagnostics (not just a recommendation)
- The question has high stakes or irreversible consequences
Signal phrases: "Let's get multiple perspectives on this" / "Debate this: X" / "What would experts say about X" / "What are we missing?"
Quick Start
1. Install
2. Configure
3. Run
Command Reference
Mode Selection
| Mode | Agents | Rounds | When to use | |
|---|---|---|---|---|
quick | 3 | 1 cross-examine round | Low-stakes check, fast answer needed | |
medium (default) | 5 | Eval-driven, up to 4 rounds | Standard decisions | |
deep | 7 | Eval-driven, up to 4 rounds | High-stakes, hidden assumptions |
Profile Selection
In a recursive source checkout, the council auto-selects relevant real professional profiles from the included hermes-profiles library. Each profile has a SOUL.md — an identity document with real methodology, values, and operating principles — rather than a fabricated persona. Pip and wheel installs do not bundle that library; use generated or user-supplied personas instead.
Auto-selection
When no --profiles flag is given, the council scores each profile's description against your question using keyword overlap. The top N most relevant profiles are selected. This works best for focused, single-domain questions.
Explicit selection
Comma-separated profile names. Available profiles include: ceo, cfo, cmo, coo, cpo, cto, curator, data-architect, data-engineer, data-scientist, debugger, editor, frontend-engineer, ml-engineer, orchestrator, product-manager, researcher, reviewer, security-engineer, site-reliability-engineer, technical-architect, technical-writer, ux-designer, verifier, wonderer, writer, and more.
Choosing a Profile Source
Three ways to populate the council, with different tradeoffs:
| Method | Best for | Diversity | Setup | |
|---|---|---|---|---|
--profiles (auto-select) | Single-domain questions with clear keywords | High — profiles have real SOUL.md methodology | Recursive source checkout required | |
--profiles name1,name2 | Targeted debates where you know the stakeholders | Highest — you pick specific methodological voices | Recursive source checkout and profile names | |
--persona-file file.json | Full control over agent identities, custom domains | Variable — depends on how you design them | Create a JSON file | |
| Auto (no flag) | Default — uses profiles if available, falls back to generated | Good — varies with available profiles | No setup for generated personas; recursive source checkout for real profiles |
For most cases, let it auto-select or use --profiles with 3-5 names. Only use --persona-file when you need specific invented expertise that doesn't map to any existing profile.
Custom personas (fallback)
If the profile library is unavailable or you want full control, use --persona-file to supply your own persona definitions. If neither --profiles nor --persona-file is provided, the council auto-selects profiles from the library; if the library is missing, it falls back to LLM-generated personas.
How It Works
Pipeline
Phases
| Phase | What happens | Method | |
|---|---|---|---|
| Compose | A single LLM call generates N expert personas tuned to the question | 1 call | |
| Premortem | Each agent independently imagines how the decision already failed — bypasses positional commitment bias | N parallel calls | |
| Position | Each agent forms an independent position, referencing their own premortem | N parallel calls | |
| Cross-examine | Each agent reads all other positions and responds — concedes, disagrees, updates confidence | N parallel calls per round | |
| Eval | Convergence detection: measures dispersion, argument novelty, concession rate. Decides whether to loop or stop | Algorithmic | |
| Synthesis | Collates all phases into a structured decision landscape with LLM-generated narrative | 1 call |
Convergence Detection
The council doesn't use a fixed number of rounds. After each cross-examination round, it measures:
- Confidence dispersion — standard deviation of agent confidence scores. Below threshold = converged.
- Argument novelty — new arguments not seen in prior rounds. Near zero = diminishing returns.
- Concession rate — points where agents shifted position. Zero + no new arguments = stalled.
Stopping conditions:
| Condition | Meaning | |
|---|---|---|
converged | Dispersion below threshold, confidence stable. Genuine agreement. | |
diminishing_returns | No new arguments or concessions. Nothing more to surface. | |
genuine_disagreement | Dispersion widened, positions hardened. Summary of irreducible tension. | |
max_rounds | Hard cap reached. Inconclusive — principal must decide. |
Bootstrapping
If agent-council is not available on PATH, the invoking agent should run:
This installs the package from the skill directory using the current Python's pip, falling back to pipx. No PyPI dependency for the bootstrap path — the package ships inside the skill directory.
If bootstrap fails: Run one of these manually:
Available Scripts
This skill bundles one script; there are no others to discover.
| Script | Purpose | Invocation | |
|---|---|---|---|
scripts/bootstrap.py | First-run installer: checks whether agent-council is already on PATH and, if not, installs the package from the skill directory using the current Python's pip, falling back to pipx. Run it whenever agent-council is not found on PATH (an invoking agent should run it automatically in that case); it exits 0 when the CLI is available and 1 with manual-install instructions when it could not install. If bootstrap fails, follow the manual steps above. | python3 scripts/bootstrap.py |
Configuration
| Env var | Required | Default | Description | |
|---|---|---|---|---|
AGENT_COUNCIL_API_KEY | Yes | — | API key for your LLM provider | |
AGENT_COUNCIL_MODEL | No | openai:gpt-5.6-luna | Model string (provider/model) | |
AGENT_COUNCIL_BASE_URL | No | Provider default | Custom API endpoint (OpenRouter, LiteLLM, etc.) |
You can set these as environment variables or create a .env file in the directory you run agent-council from:
Environment variables take precedence over .env file values.
Model strings follow PydanticAI convention: openai:gpt-5.6-luna, anthropic:claude-sonnet-4-20250514, deepseek:deepseek-v4-flash, google:gemini-2.0-flash.
Output
The synthesis report is a structured decision landscape. In markdown mode it includes:
- Confidence dispersion table — per-round confidence metrics with diagnostic
- Shared risks — failure modes from the pre-mortem (pre-positional, uncontaminated)
- Shared concerns — what survived cross-examination as genuine shared risk
- Remaining disagreements — positions that did not resolve
- Assumptions per position — what must hold for each position to be valid
- Principal's path — narrative synthesis of the decision landscape
Use --json for programmatic consumption. The JSON output follows this structure:
Claims Verification
Every synthesis output includes a post-debate verification scan. A separate LLM call reads the narrative synthesis and identifies any claims about verifiable external facts (domain availability, package namespace status, pricing, statistics) that the debate could not have verified from its own reasoning. Flagged claims are appended as a ⚠️ Claims Not Verified section:
This is not a rejection of the synthesis — it is a quality signal. Claims in this section should be treated as hypotheses to verify, not as facts.
Reading the Convergence Diagnostic
The confidence dispersion table tells you whether the debate was productive:
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 95 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingagent-council/SKILL.md
Popularity
- 7-day trend score
- 5
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/magnus919/agent-skills/agent-council)