agentsclimarketplace

Council

Skill Synchromy/synchromy-skills/skills/council

Portable multi-model AI council and agent skills for Claude Code, Codex, and other coding agents.

Install
npx -y skills add Synchromy/synchromy-skills --skill council

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Convene a multi-model adversarial council to resolve a contentious decision. Spins up N fresh-context members across model families (Anthropic + OpenAI/Codex + Moonshot by default; Z.ai and xAI in gauntlet tier when provisioned) playing structured roles (Skeptic, Builder, Strategist, Operator), runs them through Position -> Cross-rebuttal -> Chair-synthesis, and emits a markdown decision packet with TL;DR, recommendation, named dissents, open questions, and transcript appendix.

SKILL.md

7.9 KB, as published. Nobody here has run it

council - multi-model adversarial decision skill

council takes a contentious decision and converges on a recommendation through structured debate across multiple model families. The output is a portable markdown decision packet, not a write to any private knowledge base.

Use it when adversarial reasoning beats a single-model answer: architectural calls, vendor or substrate choices, scope reshapes, irreversible-ish migrations, or decisions with hidden cost and goal-fit risk.

Do not use it for routine factual lookups, code edits, quick taste calls, or questions where you already know the answer and want a rubber stamp.

Setup / Preflight

Install the Codex plugin or Codex CLI for the GPT seat. The GPT/OpenAI family routes through codex exec; this skill does not require or read a raw OpenAI API key. The default GPT model is gpt-5.5, which is available when Codex is authenticated via ChatGPT login. If your Codex is authenticated with an API key instead, that path exposes gpt-5.2-codex; set COUNCIL_CODEX_COMMAND or reassign the gpt seat with --assign accordingly.

1Password is the documented default for provider keys, but no vault is baked in. Set COUNCIL_OP_VAULT to the vault holding your key items, and council resolves each family's key at dispatch. Override any single family with a full COUNCIL_<FAMILY>_OP_REF reference if your item names differ. If neither is set, council falls back to the env key in the last column.

FamilyUsed for1Password lookup (item inside COUNCIL_OP_VAULT)Env fallback
AnthropicClaude member and chair seatsAnthropic API Key (or COUNCIL_ANTHROPIC_OP_REF)ANTHROPIC_API_KEY
OpenAI/GPTGPT seat via CodexCodex plugin login, no provider key read by councilnone
Moonshot/KimiKimi member seatMoonshot API Key (or COUNCIL_MOONSHOT_OP_REF)MOONSHOT_API_KEY
Z.ai/GLMGLM gauntlet seat or assignment overrideZ.ai API Key (or COUNCIL_ZAI_OP_REF)ZAI_API_KEY
xAI/GrokGrok gauntlet seat or assignment overridexAI API Key (or COUNCIL_XAI_OP_REF)XAI_API_KEY

So with COUNCIL_OP_VAULT=MyVault, the Anthropic key resolves from op://MyVault/Anthropic API Key/credential. Secrets are resolved at dispatch time with op read; they are never written to disk and never printed. Use --keys env on machines without the 1Password CLI.

The diversity you get is the diversity you provision. If only one family is available, council will warn and run a single-family panel instead of failing because non-selected provider keys are missing.

Invocation

python3 skills/council/council.py \
  --goal "<what we are trying to achieve, single line>" \
  --topic "<the contentious question>" \
  [--backend api|gateway]                       # default: api
  [--keys auto|op|env]                          # default: auto
  [--members skeptic,builder,strategist,operator] \
  [--tier cheap|standard|expensive|gauntlet]    # default: standard
  [--slug <kebab-slug>]                         # default: derived from --topic
  [--context-files path1,path2]                 # paths to include in member prompts
  [--assign role=model,...]                     # override per-role model alias
  [--out ./council-packets/<slug>.md]           # default packet path
  [--stdout]                                    # print packet instead of writing
  [--dry-run]                                   # plan only, no calls
  [--yes]                                      # skip pre-call confirm

--goal is required. The Strategist role needs an explicit goal to test whether the proposal is on-axis or drift.

Backends

--backend api is the default portable path:

  • Anthropic seats call the Anthropic Messages API.
  • The GPT seat calls the Codex plugin / codex exec.
  • Moonshot, Z.ai, and xAI seats use their OpenAI-compatible provider APIs.
  • Missing non-selected provider keys are not fatal. Missing selected families are substituted with provisioned families and called out in the plan.

--backend gateway keeps an explicit OpenAI-compatible gateway path for users who already operate one. Configure it with --gateway-url, --gateway-token, and --gateway-agent, or COUNCIL_GATEWAY_URL, COUNCIL_GATEWAY_TOKEN, and COUNCIL_GATEWAY_AGENT. The gateway path is opt-in and has no import-time dependency on any local gateway config.

Provider status (beta)

This skill is beta. The Anthropic seats and their request shape are verified against current provider documentation, and the GPT-via-Codex seat is verified locally. The Moonshot, Z.ai, and xAI seats are configured per each provider's current documentation but have not yet been live-tested end to end. If one of those seats errors, check its model ID, base URL, and token parameter in council.py against the provider's current docs, and please open an issue. The Anthropic-only path (--tier cheap, or any run where only an Anthropic key is provisioned) is the most proven.

What It Does

  1. Phase 1 - Position papers, parallel: each member gets the goal, topic, optional context files, and its role prompt.
  2. Phase 2 - Cross-rebuttal, parallel: each member sees the other members' position papers and writes one rebuttal.
  3. Phase 3 - Chair synthesis: the chair receives the full debate and writes the decision packet.

Total calls are 2N + 1. For the default four members, that is nine calls.

Default Roles

RoleBiasSurfaces
SkepticDefault-no. Hidden cost. Prove it.Premature commitment, sunk-cost reasoning
BuilderDefault-yes. Smallest concrete next step.Analysis paralysis, over-abstraction
StrategistGoal-fit anchor. Reject drift.Scope creep, locally-optimal-globally-wrong
OperatorDefault-revisit. Three-month pain. Escape hatch.Reversibility myopia, lock-in, soak neglect

Custom roles work via --members skeptic,builder,security. Labels not in prompts/ use a one-shot fallback prompt derived from the role name.

Cost Tiers

Estimates are approximate and use the static model registry in council.py. The dispatcher refuses plans estimated over $5.

TierMembersChairApprox
cheapClaude Sonnet onlyClaude Sonnetabout $0.10
standardClaude Sonnet + GPT/Codex + Kimi + Claude SonnetClaude Opusabout $0.30
expensiveClaude Opus + GPT/Codex + Kimi + Claude OpusClaude Opusabout $1.20
gauntletClaude Opus + GPT/Codex + Kimi + GrokClaude Opusabout $1.80

Run --dry-run --stdout first. It prints the model assignment plan, estimated cost, credential availability by family, prompt previews, and warnings without making model calls.

Output

Default output is a markdown decision packet:

./council-packets/<slug>.md

Use --out <path> to choose a destination or --stdout to print. Packets include frontmatter, the chair decision, and an appendix containing all position papers and rebuttals.

The chair packet shape is:

  • TL;DR
  • Recommendation
  • Dissents (named)
  • Open questions for the decision owner
  • Appendix: full position papers and rebuttals

Files

skills/council/
  SKILL.md
  council.py
  prompts/
    skeptic.md
    builder.md
    strategist.md
    operator.md
    chair.md

Out of Scope

  • Native chat or Discord command routing.
  • Private knowledge-base writes.
  • Provider-specific transcript storage.
  • Multi-round debate beyond the single rebuttal phase.
  • A raw OpenAI API-key path for the GPT seat.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.