llm-council

Stage 1: Independent Responses

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "llm-council" with this command: npx skills add oimiragieo/agent-studio/oimiragieo-agent-studio-llm-council

LLM Council Skill

Council Protocol

Stage 1: Independent Responses

Dispatch the user's prompt to all available omega CLIs in parallel:

Check availability

node .claude/skills/omega-gemini-cli/scripts/verify-setup.mjs && HAS_GEMINI=1 node .claude/skills/omega-codex-cli/scripts/verify-setup.mjs && HAS_CODEX=1 node .claude/skills/omega-claude-cli/scripts/verify-setup.mjs && HAS_CLAUDE_CLI=1 node .claude/skills/omega-cursor-cli/scripts/verify-setup.mjs && HAS_CURSOR=1

Parallel dispatch to available CLIs

TMPDIR=$(mktemp -d) [ "$HAS_GEMINI" = "1" ] && node .claude/skills/omega-gemini-cli/scripts/ask-gemini.mjs "$PROMPT" --timeout-ms 120000 > "$TMPDIR/gemini.txt" 2>"$TMPDIR/gemini.err" & [ "$HAS_CODEX" = "1" ] && node .claude/skills/omega-codex-cli/scripts/ask-codex.mjs "$PROMPT" --timeout-ms 120000 > "$TMPDIR/codex.txt" 2>"$TMPDIR/codex.err" & [ "$HAS_CLAUDE_CLI" = "1" ] && node .claude/skills/omega-claude-cli/scripts/ask-claude.mjs "$PROMPT" --timeout-ms 120000 > "$TMPDIR/claude.txt" 2>"$TMPDIR/claude.err" & [ "$HAS_CURSOR" = "1" ] && node .claude/skills/omega-cursor-cli/scripts/ask-cursor.mjs "$PROMPT" --yolo --trust --timeout-ms 120000 > "$TMPDIR/cursor.txt" 2>"$TMPDIR/cursor.err" & wait

Stage 2: Anonymized Peer Review

  • Collect all successful Stage 1 responses

  • Assign anonymous labels: Response A, Response B, Response C, ...

  • Maintain label_to_model mapping (e.g., A=gemini, B=codex, C=claude)

  • Send all anonymized responses back to each available model with:

You are reviewing responses to this question: "$PROMPT"

Response A: [content]

Response B: [content]

Response C: [content]

Evaluate each response for accuracy, completeness, and reasoning quality. Then provide your FINAL RANKING (best to worst):

  1. Response [X]
  2. Response [Y]
  3. Response [Z]
  • Parse FINAL RANKING from each reviewer's output using regex: \d+.\s*Response [A-Z]

  • Compute aggregate ranking (average position across all reviewers)

Stage 3: Chairman Synthesis

Send to chairman model (default: current Claude session or ask-claude.mjs):

You are the Chairman synthesizing a multi-model council discussion.

Original question: "$PROMPT"

Stage 1 Responses (with de-anonymized model names): [Model]: [Response] ...

Stage 2 Peer Review Rankings: Aggregate ranking: [best to worst with scores]

Synthesize the best insights from all responses into a single comprehensive answer. Highlight areas of consensus and dissent. Provide the strongest possible answer.

Usage

Full council (all available models)

Skill({ skill: 'llm-council' })

Then in agent: run full council protocol above

Quick consultation (skip peer review)

Stage 1 only -- parallel dispatch, collect responses, skip ranking

Use when speed matters more than rigorous evaluation

When to Use

  • High-stakes architectural decisions requiring multiple perspectives

  • Code review where diverse model viewpoints reduce blind spots

  • Plan critique and validation

  • Resolving disagreements about implementation approach

  • Cross-validation of security analysis

  • When the user explicitly requests "council", "multiple perspectives", or "cross-validate"

Iron Laws

  • ALWAYS check CLI availability before dispatch -- never assume a model is present

  • ALWAYS anonymize responses before peer review -- model identity bias is real

  • NEVER skip Stage 2 for high-stakes decisions -- the peer review is the core innovation

  • ALWAYS preserve all 3 stages in output for transparency

  • ALWAYS set per-model timeout to prevent one slow model from blocking the council

Anti-Patterns

Anti-Pattern Why Bad Correct Approach

Dispatching to unavailable CLIs Silent failure, missing responses Run verify-setup.mjs first

Showing model names during peer review Introduces identity bias Use anonymous labels (Response A, B, C)

Using only 2 models for council Peer review meaningless with 2 Require minimum 3 for ranking value

Ignoring failed model responses May miss degradation Log failures, include in metadata

Running council for simple questions Massive overhead for trivial queries Reserve for high-stakes decisions

Exit Codes

Code Meaning

0 Council completed successfully (at least 2 models responded)

1 Council failed (fewer than 2 models available or all timed out)

Configuration

Env Var Default Purpose

LLM_COUNCIL_TIMEOUT_MS

120000 Per-model timeout for Stage 1 and Stage 2

LLM_COUNCIL_MIN_MODELS

2 Minimum models required for council to proceed

LLM_COUNCIL_CHAIRMAN

(current session) Chairman model for Stage 3 synthesis

Integration Notes

  • This skill does NOT require the llm-council-master FastAPI server

  • Uses omega wrapper scripts directly via Bash backgrounding for parallelism

  • Anonymized peer review is preserved from llm-council-master's design (its core innovation)

  • Chairman synthesis can use the current Claude session (no additional CLI call needed)

  • Temporary files stored in system temp dir, cleaned up after council completes

  • Minimum 2 available models required for council to proceed

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Automation

filesystem

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

slack-notifications

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

chrome-browser

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

text-to-sql

No summary provided by upstream source.

Repository SourceNeeds Review