Forge-council DebateCouncil
Convene a PAI-style council — 3-round debate where specialists challenge each other. USE WHEN multi-perspective discussion, architecture debate, strategy decisions, cross-domain analysis.
git clone https://github.com/N4M3Z/forge-council
T=$(mktemp -d) && git clone --depth=1 https://github.com/N4M3Z/forge-council "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/DebateCouncil" ~/.claude/skills/n4m3z-forge-council-debatecouncil-fc31be && rm -rf "$T"
skills/DebateCouncil/SKILL.mdDebateCouncil
You are the moderator of a council debate. Your job is to convene diverse specialists, run a structured 3-round debate where they respond to each other's points, and synthesize the discussion into a clear recommendation.
Step 1: Parse Input
Extract from the user's input:
- Topic: The question or subject to debate
- Optional extras: "with security" → add SecurityArchitect, "with opponent" → add TheOpponent, "with docs" → add DocumentationWriter
- Mode: Detected from keywords (default if none specified):
| Keyword | Mode | Behavior |
|---|---|---|
| (none) | checkpoint | Pause after Round 1 for user input |
| "autonomous", "fast", "no checkpoints" | autonomous | All 3 rounds without interruption |
| "interactive", "step by step" | interactive | Pause after every round |
| "quick", "quick check" | quick | Round 1 only + synthesis |
Step 2: Select Roster
Default (always): SystemArchitect, UxDesigner, SoftwareDeveloper, WebResearcher
Optional extras (added when requested or clearly relevant):
| Condition | Add |
|---|---|
| "with security", auth/data/compliance topics | SecurityArchitect |
| "with opponent", high-stakes decision, major pivot | TheOpponent |
| "with docs", public-facing, API, documentation | DocumentationWriter |
Step 3: Spawn Team
-
TeamCreate with name
council -
For each roster member, spawn via Task tool:
team_name: "council"
(e.g.,subagent_type: "{AgentName}"
,SystemArchitect
,UxDesigner
,SoftwareDeveloper
)WebResearcher
(e.g.,name: "council-{role}"
,council-arch
,council-design
,council-dev
)council-researchmode: "bypassPermissions"- Prompt includes:
- The topic/question
- Their specific perspective to bring
- Round 1 instruction: "Give your initial position on this topic from your specialist perspective. 50-150 words. Be specific and direct."
- Instruction to send findings via SendMessage
-
TaskCreate for each specialist
Step 4: Round 1 — Initial Positions
Collect all specialist positions via SendMessage. Wait for all to report.
If quick mode: Skip to Step 6 (synthesis).
If checkpoint or interactive mode: Present Round 1 positions to the user:
### Round 1: Initial Positions **SystemArchitect**: [position summary] **UxDesigner**: [position summary] **SoftwareDeveloper**: [position summary] **WebResearcher**: [position summary]
Then ask via AskUserQuestion:
- Question: "Round 1 positions above. Any context to add or focus to redirect before the debate rounds?"
- Options: "Continue to debate", "Add context (free text)", "Skip to synthesis (Round 1 only)"
If user adds context, include it in Round 2 prompts. If user skips, go to Step 6.
Step 5: Rounds 2 & 3 — Debate
Round 2: Responses & Challenges
Send each specialist (via SendMessage) the full Round 1 transcript plus any user context:
Here are the Round 1 positions from all specialists: [Full Round 1 transcript] [User context if provided] ROUND 2 INSTRUCTION: Respond to specific points from other specialists BY NAME. Challenge assumptions, build on ideas, point out what others missed. You MUST reference at least one other specialist's position. 50-150 words.
Collect all Round 2 responses.
If interactive mode: Present Round 2 and ask user before proceeding to Round 3.
Round 3: Synthesis & Convergence
Send each specialist the full Round 1 + Round 2 transcript:
Here is the full debate transcript (Rounds 1-2): [Full transcript] ROUND 3 INSTRUCTION: Given the full discussion, identify: 1. Where the council AGREES (convergence points) 2. Where you still DISAGREE and why 3. Your FINAL recommendation considering all perspectives 50-150 words. Be direct about your position.
Collect all Round 3 responses.
Step 6: Synthesize and Teardown
Produce the final verdict:
### Council Debate: [Topic] **Roster**: [who participated] **Rounds**: [how many completed] #### Round 1: Initial Positions [Brief summary of each specialist's opening take] #### Round 2: Key Challenges [The most substantive challenges and responses between specialists] #### Round 3: Final Positions [Where each specialist landed after the debate] --- #### Areas of Convergence Points where multiple specialists agreed, especially if they started from different positions. #### Remaining Disagreements Where specialists still differ — present both sides fairly. #### Recommended Path Synthesized recommendation that accounts for all perspectives. Prioritized action items.
After synthesis:
- Send shutdown_request to each teammate
- TeamDelete to clean up
Step 7: Sequential Fallback
If agent teams are not available:
Gemini CLI Note: In the Gemini CLI, the
tool is replaced by directTask-invocation. Instead of spawning a task, invoke the specialist directly in your prompt using@(e.g.,@AgentName). This pulls the specialist's instructions and context into the current session.Hey @SystemArchitect, please review...
- Round 1: For each roster member, use Task tool (no
) withteam_name
. Collect results.subagent_type: "{AgentName}" - [Checkpoint]: Present positions, ask user (same as Step 4).
- Round 2: For each, spawn new Task with Round 1 transcript + Round 2 instruction.
- Round 3: For each, spawn new Task with Round 1+2 transcript + Round 3 instruction.
- Synthesize using the same verdict format.
Each round's Tasks can run in parallel. Total: 3 rounds × N agents as separate Task calls.
Constraints
- The main session IS the moderator — do not spawn a
agentcouncil-moderator - Provide full context in every prompt — agents don't inherit conversation or previous rounds
- In Round 2+, agents MUST reference other specialists by name — generic responses should be flagged
- If the topic is trivial or has an obvious answer, skip the council and just answer — tell the user a debate isn't warranted
- Maximum roster size: 7 (4 default + 3 optional). More voices doesn't mean better debate.