# Agent Council

> Run a bounded discussion between the current host agent, Grok Build CLI, and Claude Code CLI. Use when the user requests a council, multi-agent debate, or 3–5 rounds of discussion before a recommendation. Bundled Python scripts coordinate full shared history, exact native sessions, host contributions, final assessments, and crash recovery. The current agent participates; never spawn another host or invent its turns.

- Skill: `gordon1210/agent-council` (Agent Skill, multi-file: 13 files)
- Install (CLI): `npx skillmds@latest add gordon1210/agent-council`
- Raw SKILL.md: https://api.skillmd.com/api/skills/gordon1210/agent-council/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- License: MIT
- Author: gordon1210 (https://skillmd.com/u/gordon1210)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/gordon1210/agent-council

---


# 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:

```bash
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](references/provider-contracts.md).

## 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:

```bash
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`:

1. Run `brief --run-dir ...`. **Read the complete returned snapshot**, not just
   status or the last response. It includes a `revision` and the next speaker.
2. At `awaiting-host`, write your own substantive contribution to a UTF-8 file.
   Use `host --run-dir ... --message-file ... --expect-revision N`, replacing
   `N` with the exact revision just read. Never manufacture a host contribution
   with another CLI or append a placeholder just to let automation continue.
3. 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.
4. Read `brief` again. 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:

```bash
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](references/recovery-and-privacy.md), 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](references/workflow.md) for commands and rationale,
[provider contracts](references/provider-contracts.md) for boundaries,
and [validation](references/validation.md) for tests and evaluation scenarios.

