Council
affaan-m/ECC
Convene a four-voice council for ambiguous decisions, tradeoffs, and go/no-go calls.
Convene a council of AI coding agents before finalizing a plan.
$ npx skills add kitze/council --skill council -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install kitze/council council --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
Claude Code skills documentation · loads skills from .claude/skills/
Install the "council" agent skill from https://github.com/kitze/council/tree/main into .claude/skills/council/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "council", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add kitze/council --skill council -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install kitze/council council --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "council" agent skill from https://github.com/kitze/council/tree/main into .agents/skills/council/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "council", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add kitze/council --skill council -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install kitze/council council --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "council" agent skill from https://github.com/kitze/council/tree/main into .cursor/skills/council/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "council", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add kitze/council --skill council -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install kitze/council council --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "council" agent skill from https://github.com/kitze/council/tree/main into .gemini/skills/council/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "council", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install kitze/council councilInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add kitze/council --skill council -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "council" agent skill from https://github.com/kitze/council/tree/main into .github/skills/council/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "council", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add kitze/council --skill council -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install kitze/council council --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "council" agent skill from https://github.com/kitze/council/tree/main into .opencode/skills/council/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "council", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
councilConvene a council of AI coding agents before finalizing a plan.
Council is an agent skill from kitze/council. Convene a council of AI coding agents before finalizing a plan. The agent you're talking to — whichever CLI is the lead (claude, codex, cursor, gemini, grok, opencode) — drafts a plan, presents it independently to every other agent CLI installed on the machine, each member gives ONE reply per turn, and the lead revises the plan for X turns before answering. Trigger words: council, convene the council, consult the other agents, ask the council, ask codex/cursor/gemini/grok what they think, second opinion from…
Its SKILL.md is about 2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files (for example `README.md`).
The repository describes itself as: 🏛 Agent skill: your coding agent must convene the other agent CLIs on your machine and deliberate for X turns before giving you a plan. The licence is MIT.
Read from SKILL.md and the folder at commit eb7cd10. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
claudecodexgeminiopencodeFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Council loads about 2k tokens when it runs. Until then it costs about 147 tokens; SKILL.md has 703 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from kitze/council at commit eb7cd10, republished under its MIT licence (© kitze). 703 words, ~2,006 tokens.
.claude/skills/council/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.You are the lead. Before giving the user a final plan, deliberate with the other agent CLIs installed on this machine: propose → hear ONE reply from each member → revise, repeated for X turns. Members never see each other's replies — only your plan and, in later rounds, what changed. The deliverable is the final plan plus the deliberation shown as a conversation. Do NOT implement anything unless the user explicitly asked for execution after planning.
0. Parse. TASK = the user's ask, verbatim. X = the number of turns they said ("1 turn", "3 turns"...), default 1. X is exact: run all X rounds even if round 1 is unanimous approval, and never add extra rounds. SELF = the product you run in: Claude Code → claude, Codex → codex, Cursor → cursor, Gemini CLI → gemini, Grok → grok, OpenCode → opencode.
1. Detect members. Every CLI in the table below whose binary exists (command -v) and answers --version within ~15s — minus SELF. If the user names members ("council with just codex and grok"), use only those. If none are available, say so and present your solo plan explicitly marked as un-counciled — never fake a council.
2. Session. SESSION=~/.council/$(date +%Y%m%d-%H%M%S)-<short-slug>, mkdir -p "$SESSION". Write the ask verbatim to task.md. Do your normal thinking/exploration, then write your honest first plan to plan-v1.md — complete enough to critique: approach, steps, files/tools touched, tradeoffs.
3. Deliberate — for each round R in 1..X:
$SESSION/round-R/prompts/<member>.md.wait), from the project directory the task concerns, each capped at ~300s. Reply → $SESSION/round-R/replies/<member>.md, stderr → a log file. macOS has no timeout command; use perl -e 'alarm shift; exec @ARGV' 300 <cmd...>.plan-v(R+1).md (full revised plan) and changes-v(R+1).md (what changed and why, what you rejected and why — describe suggestions by content, never by member name: all members see this file next round).4. Answer with the deliberation formatted as a conversation, then the final plan (template at the bottom).
$PF = that member's prompt file, $RF = its reply file. Run from the project directory.
| member | invocation | why these flags |
|---|---|---|
| claude | claude -p < "$PF" > "$RF" | print mode auto-denies write/exec tools; reads are fine |
| codex | codex exec --skip-git-repo-check -s read-only --color never -o "$RF" - < "$PF" > /dev/null 2>&1 | read-only sandbox; final message lands in $RF via -o |
| cursor | cursor-agent -p --output-format text --mode plan --trust "$(cat "$PF")" > "$RF" | plan mode is read-only; --trust scopes cwd trust to this run (headless refuses untrusted dirs without it) |
| gemini | gemini --skip-trust --approval-mode plan -p "$(cat "$PF")" > "$RF" | plan mode is read-only; --skip-trust for headless in untrusted dirs |
| grok | grok --output-format plain --system-prompt-override "$GROK_SYS" --prompt-file "$PF" > "$RF" | see the grok note; binary is sometimes installed as agent |
| opencode | opencode run "$(cat "$PF")" > "$RF" | advisory-only enforced at prompt level |
The grok note. Headless grok silently cancels the entire run (empty output, exit 0, stream ends stopReason:"Cancelled") the moment the model attempts a tool call — and its stock system prompt makes it attempt one on any work-shaped prompt. Two-part fix, both required: pass --system-prompt-override with
GROK_SYS="You are one member of a council of AI coding agents, asked for a one-shot written assessment of another agent's plan. Reply directly with plain markdown text following the instructions in the user message. Do not use tools, do not ask questions, do not wait for anything."
and give grok the no-tools closing paragraph in its prompt (below). Grok is the one member that advises without reading the repo.
Sections in [...] only when they apply. Everything is plain text you substitute.
You are <member>, one of several AI coding agents serving on a council.
The lead agent, <self>, received a task from its user and must consult this council before presenting the final plan. This is consultation round <R> of <X>.
Council rules: members reply independently. You do not see other members' replies — only the lead's plan and, in later rounds, how it changed.
## The task (verbatim from the user)
<contents of task.md>
## <self>'s current plan (v<R>)
<contents of plan-vR.md>
[## What the lead changed since the previous round, and why
<contents of changes-vR.md>]
[## Your own reply in the previous round
<contents of round-(R-1)/replies/<member>.md>]
## How to reply
Give exactly ONE reply — your honest expert assessment of this plan:
1. First line: verdict — SHIP IT, SHIP WITH CHANGES, or RETHINK.
2. The 2-5 most important problems, risks, or gaps. Concrete and specific, strongest first.
3. Where you would do it differently: the alternative and why it wins.
4. If the plan is fundamentally sound, say so and name its single weakest point. Do not invent objections to sound useful.
You are advising, not implementing. Reading files in the current directory is fine; do NOT edit files, run state-changing commands, or write full implementations. Under ~400 words, plain markdown, no preamble.For grok only, replace the final paragraph with:
You are advising, not implementing. You have NO tool access here — base your reply only on the material above; do not attempt to read files or run commands. Under ~400 words, plain markdown, no preamble.# 🏛 Council on: <task one-liner>
*Lead: claude · Members: codex, cursor, grok · 2 turns · session: ~/.council/...*
## Turn 1
**claude (lead):** Proposed v1 — <2-3 line summary of the plan>
**codex:** SHIP WITH CHANGES — <2-3 line summary of the reply>
**cursor:** RETHINK — <...>
**grok:** <...>
**claude (lead):** Revised → v2: adopted <...>; rejected <...> because <...>
## Turn 2
...
## Final plan (v3)
<the full final plan>
*Changed my mind on: <...> · Held my ground on: <...> · Full replies: $SESSION/round-*/replies/*© kitze, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 2 other files in the repository root of kitze/council.
Open the folder on GitHubat commit eb7cd10
Council next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Council this skillkitze/council | 202 | — | ~2k | Automated safety check: Pass | MIT | |
| Councilaffaan-m/ECC | 277k | 2 repos | ~1.6k | Automated safety check: Pass | MIT | |
| Councilaffaan-m/ECC | 276k | — | ~963 | Automated safety check: Pass | MIT | |
| Councilaffaan-m/ECC | 276k | — | ~653 | Automated safety check: Pass | MIT | |
| Council0xNyk/council-of-high-intelligence | 4.6k | 1 repos | ~14k | Automated safety check: Pass | MIT | |
| LLM Councilsickn33/agentic-awesome-skills | 47k | 1 repos | ~644 | Automated safety check: Notes | MIT |
affaan-m/ECC
Convene a four-voice council for ambiguous decisions, tradeoffs, and go/no-go calls.
affaan-m/ECC
曖昧な決定、トレードオフ、ゴー/ノーゴーの判断のために4つの声のカウンシルを召集します。複数の有効なパスが存在し、選択前に構造化された異議が必要な場合に使用します。
affaan-m/ECC
召集四方会议处理模糊决策、权衡取舍及继续/停止决策。当存在多个有效路径且需要在选择前进行结构化异议时使用. An agent skill from affaan-m/ECC.
0xNyk/council-of-high-intelligence
Convene the Council of High Intelligence — multi-persona deliberation with historical thinkers for deeper analysis of complex problems.
sickn33/agentic-awesome-skills
Run Fireworks-hosted open-weight model councils that compare responses and synthesize a final answer.
affaan-m/ECC
Adds one optional external Codex critique that tries to break a council's decision draft, sent to OpenAI only after you consent.
Convene a council of AI coding agents before finalizing a plan. Council is an agent skill from kitze/council. Convene a council of AI coding agents before finalizing a plan.
Council fits situations like: convene the council; consult the other agents; ask the council; ask codex/cursor/gemini/grok what they think.
Run `npx skills add kitze/council --skill council -a claude-code`. Or copy the skill folder (the kitze/council repository) into .claude/skills/council in your project. Claude Code loads it when a task matches its description.
Run `npx skills add kitze/council --skill council -a codex`. Or copy the skill folder (the kitze/council repository) into .agents/skills/council in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add kitze/council --skill council -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/council, .gemini/skills/council, .github/skills/council and .opencode/skills/council in your project.
Going by SKILL.md and its folder, Council needs the command-line tools its instructions call (claude, codex, gemini and opencode).
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Council is published under the MIT licence (from the LICENSE file in the skill folder). It allows redistribution, so the full SKILL.md is shown on this page.
About 2k tokens (SKILL.md is roughly 8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Council: Council (affaan-m/ECC, 277k stars), Council (affaan-m/ECC, 276k stars), Council (affaan-m/ECC, 276k stars) and Council (0xNyk/council-of-high-intelligence, 4.6k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
kitze (a GitHub user) maintains it in kitze/council, which has 202 GitHub stars. The repository was last updated on October 9, 2026.
Source: kitze/council on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.