From quorum
Fan out a task to Claude, Codex, Copilot, Cursor, and Gemini in parallel, then reconcile their outputs into a high-confidence recommendation. Use for planning, code review, implementation validation, bug diagnosis, and architecture decisions — not for quick changes.
npx claudepluginhub nexusentis/quorum --plugin quorumThis skill uses the workspace's default tool permissions.
1. Read `quorum.config.json` from the repo root. It has the shape:
Creates isolated Git worktrees for feature branches with prioritized directory selection, gitignore safety checks, auto project setup for Node/Python/Rust/Go, and baseline verification.
Executes implementation plans in current session by dispatching fresh subagents per independent task, with two-stage reviews: spec compliance then code quality.
Dispatches parallel agents to independently tackle 2+ tasks like separate test failures or subsystems without shared state or dependencies.
Read quorum.config.json from the repo root. It has the shape:
{ "agents": { "claude": true, "codex": true, "copilot": true, "cursor": true, "gemini": false } }
Agents set to false are skipped — do not spawn them.
Check ARGUMENTS for inline overrides (parsed before the mode/prompt):
--skip <agent>[,<agent>...] — disable specific agents for this run (e.g., --skip gemini,copilot)--only <agent>[,<agent>...] — run ONLY these agents, ignore config (e.g., --only codex,cursor)Validate each agent name in --skip and --only against the canonical list: [claude, codex, copilot, cursor, gemini]. If any name is not recognized, report an error listing the invalid name(s) and stop. Do not silently ignore typos.
Strip these flags from the arguments before parsing the mode and prompt.
The final enabled set must have at least 2 agents. If not, report an error and stop.
The user can invoke /quorum:run in several ways:
/quorum:run — infer both the mode and context from the conversation so far/quorum:run review — mode is explicit, context is inferred/quorum:run architecture — should we use X or Y? — mode and extra context are explicit/quorum:run after Claude already produced a plan/implementation — the quorum validates what Claude just saidMode detection — infer automatically, never ask the user to clarify:
architecturereviewreview-codebaseimplementdiagnoseaskLoad the appropriate prompt template from skills/run/templates/.
Automatically extract context from the current conversation. Do NOT ask the user to paste or repeat anything that is already in the conversation history. Specifically:
/quorum:run command — merge it inFor review-codebase mode: Do NOT try to inline the entire codebase into the prompt. The external agents run in the project directory and can read files themselves. Instead:
{SCOPE} placeholder with what to focus on (e.g., "the entire repo", "the src/ directory", "the authentication module")For all other modes, assemble the prompt by filling the template placeholders with extracted context. The prompt given to all agents must be IDENTICAL. Do not customize per agent.
Prepend to all prompts:
You are operating in READ-ONLY analysis mode. You may read files and explore the codebase, but do NOT write, modify, or delete any files.
Only produce analysis, review findings, implementation proposals, or recommendations as plain text or code blocks.
Dispatch all enabled agents simultaneously. Determine the absolute path of the current project root first.
External agents (codex, copilot, cursor, gemini): Make a SINGLE call to mcp__quorum__quorum_query with:
prompt — the prepared prompt from Step 2workdir — the absolute project root pathagents — (optional) list of enabled external agents, if not all 4 are enabledThis one call fans out to all external agents in parallel and returns all results. Do NOT call individual agent tools or spawn relay agents — use quorum_query.
Claude agent: Spawn via the Task tool as quorum:claude-agent with the same prompt. This gives Claude a separate participant context so its output can be judged blindly.
Launch both the quorum_query call and the claude-agent Task simultaneously. Wait for all to complete. Proceed if at least 2 agents return successfully.
Parse each agent's JSON response (wrap in try/catch). Classify status:
response field with contentstatus === "error", timed out, or JSON.parse threw a SyntaxError429, rate limit, or too many requests (case-insensitive)If JSON.parse fails on an agent's output, treat that agent as failed (status: "error", error: "malformed JSON response") and continue with the remaining agents.
Rate limit handling: If any agent failed due to rate limiting, after presenting results report: "Out of tokens in {agent}." and ask the user if they want to disable that agent (i.e., set it to false in quorum.config.json). If the user confirms, update the config file.
If fewer than 2 agents succeeded, report failure and stop.
Before calling the judge, do a deterministic pass:
cosmetic — naming, formatting, style (auto-resolve using project conventions, don't flag)stylistic — valid alternatives with similar trade-offs (note but don't flag)structural — meaningfully different approaches (flag for judge)correctness — one or more agents may be wrong (flag for judge, high priority)You act as the judge. Present agent outputs ANONYMOUSLY as Solution A / B / C / D / E (one per responding agent; randomize mapping each time — do not always assign A=Claude, B=Codex, etc.).
For each flagged disagreement, score the competing solutions on:
Total score determines the winner. For implementation mode: if tests exist, run candidate code against them before scoring — test results override subjective scoring.
If solutions are complementary (each catches different things), synthesize the best elements into a single output.
Format output as follows:
Bottom line: [one sentence]
Confidence: [HIGH / MEDIUM / LOW] — [N] agents agree on the core recommendation
Agents: [list enabled agents] | Skipped: [list disabled agents, if any]
[The synthesized best output — code, analysis, or recommendation]
[Only structural/correctness disagreements, with your reasoning for the resolution]
| Agent | Status | Latency | Key Finding |
|---|---|---|---|
| [Only rows for enabled agents] |
[Only sections for enabled agents]
quorum.config.json — never spawn a disabled agent unless overridden with --only