Agent Council
You are the host participant and moderator. Ask Grok and Claude to discuss an authorized topic with you, contribute your own reasoning each round, then present a verified synthesis. Use the bundled scripts; do not improvise another session manager, parse terminal UI text, or launch a second copy of yourself.
Discussion contract
Default: four rounds, each containing one host, one Grok, and one Claude
contribution in that order. Three to five rounds is the normal range. A round
is not a provider's --max-turns, which bounds its internal agent loop.
Every peer call receives the topic, supplied context, approved updates, and every previous discussion contribution verbatim in one canonical snapshot. The default also resumes that peer's exact native session. Both peers receive a final assessment call against the same completed discussion snapshot. You read the full discussion plus both assessments before writing the result.
Four rounds therefore use 10 peer CLI calls: eight discussion calls and two final assessments. The current host's contributions and synthesis do not start extra CLIs. Final assessments are separate from discussion turns; they are not recursively broadcast to each other. This avoids an endless final-sync loop. Never claim a peer read a contribution written after its input snapshot.
Scope and prerequisites
Sending material to both providers must be authorized. Include selected source excerpts, constraints, and verified facts; never forward your whole host chat, private hidden reasoning, credentials, or unrelated files. Discussion is tool-free: no implementation, shell, web, MCP, or nested agents. Gather any needed evidence yourself within your existing authority and supply it as context.
Resolve this skill's actual installed directory and set COUNCIL to its
scripts/council.py path. Run doctor in the intended project:
python3 "$COUNCIL" doctor --cwd /absolute/project
Review its CLI version/help and Grok inspect output locally. Review applicable
Claude managed policy as well. Neither empty built-in tools nor a permission
mode disables all possible startup hooks/plugins/MCP processes. Do not proceed
unless remaining executable behavior is disabled or reviewed as compatible
with this consultation. --config-reviewed below attests to that review; it is
not proof generated by the script. Do not send private preflight output to peers.
The narrow adapters follow the adjacent grok-cli and claude-cli skills' authority boundaries. Read those skills for broader CLI diagnostics if installed; the council's scripts are nevertheless self-contained and do not import sibling skills. No CLI installation, update, login, config mutation, or credential proxy is performed. See provider contracts.
Run the council
Prepare a UTF-8 topic packet and optional evidence files. Initialize a new run directory in an approved location, preferably outside the repository:
python3 "$COUNCIL" init \
--run-dir /approved/work/council-01 \
--cwd /absolute/project \
--topic-file /approved/work/topic.md \
--context-file /approved/work/evidence.md \
--rounds 4 --config-reviewed
Omit --context-file if unnecessary; repeat it for multiple selected files.
No model is called by doctor or init.
Repeat this host-driven loop until awaiting-synthesis:
- Run
brief --run-dir .... Read the complete returned snapshot, not just status or the last response. It includes arevisionand the next speaker. - At
awaiting-host, write your own substantive contribution to a UTF-8 file. Usehost --run-dir ... --message-file ... --expect-revision N, replacingNwith the exact revision just read. Never manufacture a host contribution with another CLI or append a placeholder just to let automation continue. - Run
advance --run-dir .... It calls only the due peers, persists each accepted contribution, and stops at the next host turn or synthesis boundary. On the last round it also performs the two final assessments. - Read
briefagain. Answer concrete objections and cite message IDs. Do not merely summarize peer answers: the host is the third participant.
At awaiting-synthesis, read the complete brief, independently check material
claims as needed, and write the final synthesis to a file. Call:
python3 "$COUNCIL" finalize \
--run-dir /approved/work/council-01 \
--message-file /approved/work/synthesis.md \
--expect-revision N
The script writes report.md; transcript.md, transcript.jsonl, native
session IDs, requests, outputs, and recovery state remain available. Present
the actual result to the user, not just an artifact path. Do not present a
complete council unless the run actually reached the synthesis boundary.
Quality and stop rules
Early turns establish alternatives and assumptions. Middle turns challenge specific claims and update positions. The final discussion round resolves the strongest objections and records remaining blockers. Final synthesis separates recommendation, evidence-backed agreement, unresolved dissent, and next checks. A majority opinion is not evidence. No manufactured consensus or model-brand stereotypes. Preserve meaningful disagreement even when all other agents agree.
Use note with a fresh revision for an approved correction or additional
evidence during discussion; never edit old contributions. Stop on provider
failure, denied permissions, unknown result shape, missing/mismatched session
ID, timeout, or context-budget overflow. Do not silently truncate, summarize
away history, skip a peer, change model, broaden tools, or drop a sandbox.
pending-recovery requires inspection, then either accepting an already valid
captured result or explicitly discarding the attempt. Discarding abandons that
peer's possibly contaminated native session; the next call reconstructs context
from the full canonical transcript. Follow
recovery and privacy, not ad-hoc retries.
For early user cancellation or unavailable peers, finalize --partial --reason
is available after resolving any pending attempt. Label the report partial
and identify missing input. Never present it as the completed requested debate.
See workflow for commands and rationale, provider contracts for boundaries, and validation for tests and evaluation scenarios.