Council skill

Multi-agent collaborative debate producing visible round-by-round transcripts with real intellectual friction — members are topic-briefed custom agents, run as a 3-round DEBATE or a 1-round QUICK check, to find the best path.

by danielmiessler·MIT license·★ 19,269 Stars on the repo·GitHub ↗

Use now

Files of Council

danielmiessler/main1 file shown
SKILL.md
Show the full text140 lines

Customization

Before executing, check for user customizations at: ~/.claude/LIFEOS/USER/CUSTOMIZATIONS/SKILLS/Council/

If this directory exists, load and apply any PREFERENCES.md, configurations, or resources found there. These override default behavior. If the directory does not exist, proceed with skill defaults.

MANDATORY: Voice Notification (REQUIRED BEFORE ANY ACTION)

You MUST send this notification BEFORE doing anything else when this skill is invoked.

  1. Send voice notification:

    curl -s -X POST http://localhost:31337/notify \
      -H "Content-Type: application/json" \
      -d '{"message": "Running the WORKFLOWNAME workflow in the Council skill to ACTION"}' \
      > /dev/null 2>&1 &
    
  2. Output text notification:

    Running the **WorkflowName** workflow in the **Council** skill to ACTION...
    

This is not optional. Execute this curl command immediately upon skill invocation.

Council Skill

What It Does

Runs a multi-agent debate. Custom-composed agents discuss a topic over rounds, respond to each other's actual points, and surface insights through real intellectual friction. You get a visible round-by-round transcript plus a synthesis. DEBATE runs three rounds; QUICK runs one for a fast perspective check.

The Problem

When you ask one model for an opinion, you get one frame and one set of blind spots. Asking for "pros and cons" gives you a flat list with no one actually pushing back. Real deliberation needs distinct experts who disagree on the merits and argue it out, so the weak parts of an idea get exposed before you commit. Generic built-in agents all sound the same and produce bland agreement; this skill composes topic-specific agents that create genuine friction.

How It Works

Custom-composed agents discuss topics in rounds, respond to each other's points, and surface insights through intellectual friction.

Members Are Custom Briefs

Write each council member inline as a short brief — a name, a role, a stance, and what they'll push on — then launch it with subagent_type: "general-purpose". A bare built-in type with no persona is topic-ignorant and produces bland agreement. The friction comes from four different briefs, each with real domain expertise and a distinct analytical angle.

See CouncilMembers.md for the slot guidance and an example brief.

Key Differentiator from RedTeam: Council is collaborative-adversarial (debate to find best path), while RedTeam is purely adversarial (attack the idea). Council produces visible conversation transcripts; RedTeam produces steelman + counter-argument.

Workflow Routing

Route to the appropriate workflow based on the request.

Trigger Workflow
Full structured debate (3 rounds, visible transcript) Workflows/Debate.md
Quick consensus check (1 round, fast) Workflows/Quick.md

Pure adversarial analysis is not a Council workflow — redirect to the RedTeam skill.

Quick Reference

Workflow Purpose Rounds Output
DEBATE Full structured discussion 3 Complete transcript + synthesis
QUICK Fast perspective check 1 Initial positions only

Context Files

File Content
CouncilMembers.md How to write council member briefs inline
RoundStructure.md Three-round debate structure and timing
OutputFormat.md Transcript format templates

Core Philosophy

Origin: Best decisions emerge from diverse perspectives challenging each other. Not just collecting opinions - genuine intellectual friction where domain-specific experts respond to each other's actual points.

Agents: Every council member is a custom brief you write for the topic, launched with general-purpose. This gives each member a distinct role, stance, and domain expertise. Generic agents produce generic debate; topic-specific briefs produce sharp, informed debate.

Speed: Parallel execution within rounds, sequential between rounds. A 3-round debate of 4 agents = 12 agent calls but only 3 sequential waits. Complete in 40-90 seconds.

Examples

"Council: Should we use WebSockets or SSE?"
-> Write 4 member briefs (real-time architect, frontend-DX, ops skeptic, researcher)
-> DEBATE workflow -> 3-round transcript

"Quick council check: Is this API design reasonable?"
-> Write 4 member briefs with API-relevant roles
-> QUICK workflow -> Fast perspectives

"Council: Is AI overhyped?"
-> Write briefs: AI builder, security skeptic, pragmatic engineer, evidence analyst
-> DEBATE workflow -> 3-round transcript

Integration

Works well with:

  • RedTeam - Pure adversarial attack after collaborative discussion
  • Research - Gather context before convening the council

Best Practices

  1. Use QUICK for sanity checks, DEBATE for important decisions
  2. Write each member's brief around the specific topic, not a generic role
  3. Give each member a distinct stance — four identical agents produce no friction

Last Updated: 2026-03-18

Gotchas

  • Council members are inline briefs launched with general-purpose — there is no composition tool. Write four different topic-specific briefs; don't launch bare built-in types with no persona.
  • Debates need genuine disagreement to be valuable. If all agents agree, the topic may not warrant Council.
  • More agents ≠ better debate. 4-6 well-briefed agents outperform 12 generic ones.

Execution Log

After completing any workflow, append a single JSONL entry:

echo '{"ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","skill":"Council","workflow":"WORKFLOW_USED","input":"8_WORD_SUMMARY","status":"ok|error","duration_s":SECONDS}' >> ~/.claude/LIFEOS/MEMORY/SKILLS/execution.jsonl

Replace WORKFLOW_USED with the workflow executed, 8_WORD_SUMMARY with a brief input description, and SECONDS with approximate wall-clock time. Log status: "error" if the workflow failed.

1---
2name: Council
3version: 1.1.20
4description: "Multi-agent collaborative debate producing visible round-by-round transcripts with real intellectual friction — members are topic-briefed custom agents, run as a 3-round DEBATE or a 1-round QUICK check, to find the best path. USE WHEN council, debate, multiple perspectives, weigh options, deliberate, get different views, what would experts say, pros and cons. NOT FOR pure adversarial attack (use RedTeam)."
5context: fork
6background: false
7---
8 
9## Customization
10 
11**Before executing, check for user customizations at:**
12`~/.claude/LIFEOS/USER/CUSTOMIZATIONS/SKILLS/Council/`
13 
14If this directory exists, load and apply any PREFERENCES.md, configurations, or resources found there. These override default behavior. If the directory does not exist, proceed with skill defaults.
15 
16 
17## MANDATORY: Voice Notification (REQUIRED BEFORE ANY ACTION)
18 
19**You MUST send this notification BEFORE doing anything else when this skill is invoked.**
20 
211. **Send voice notification**:
22 ```bash
23 curl -s -X POST http://localhost:31337/notify \
24 -H "Content-Type: application/json" \
25 -d '{"message": "Running the WORKFLOWNAME workflow in the Council skill to ACTION"}' \
26 > /dev/null 2>&1 &
27 ```
28 
292. **Output text notification**:
30 ```
31 Running the **WorkflowName** workflow in the **Council** skill to ACTION...
32 ```
33 
34**This is not optional. Execute this curl command immediately upon skill invocation.**
35 
36# Council Skill
37 
38## What It Does
39 
40Runs a multi-agent debate. Custom-composed agents discuss a topic over rounds, respond to each other's actual points, and surface insights through real intellectual friction. You get a visible round-by-round transcript plus a synthesis. DEBATE runs three rounds; QUICK runs one for a fast perspective check.
41 
42## The Problem
43 
44When you ask one model for an opinion, you get one frame and one set of blind spots. Asking for "pros and cons" gives you a flat list with no one actually pushing back. Real deliberation needs distinct experts who disagree on the merits and argue it out, so the weak parts of an idea get exposed before you commit. Generic built-in agents all sound the same and produce bland agreement; this skill composes topic-specific agents that create genuine friction.
45 
46## How It Works
47 
48Custom-composed agents discuss topics in rounds, respond to each other's points, and surface insights through intellectual friction.
49 
50## Members Are Custom Briefs
51 
52Write each council member inline as a short brief — a name, a role, a stance, and what they'll push on — then launch it with `subagent_type: "general-purpose"`. A bare built-in type with no persona is topic-ignorant and produces bland agreement. The friction comes from four *different* briefs, each with real domain expertise and a distinct analytical angle.
53 
54See `CouncilMembers.md` for the slot guidance and an example brief.
55 
56**Key Differentiator from RedTeam:** Council is collaborative-adversarial (debate to find best path), while RedTeam is purely adversarial (attack the idea). Council produces visible conversation transcripts; RedTeam produces steelman + counter-argument.
57 
58 
59## Workflow Routing
60 
61Route to the appropriate workflow based on the request.
62 
63| Trigger | Workflow |
64|---------|----------|
65| Full structured debate (3 rounds, visible transcript) | `Workflows/Debate.md` |
66| Quick consensus check (1 round, fast) | `Workflows/Quick.md` |
67 
68Pure adversarial analysis is not a Council workflow — redirect to the RedTeam skill.
69 
70## Quick Reference
71 
72| Workflow | Purpose | Rounds | Output |
73|----------|---------|--------|--------|
74| **DEBATE** | Full structured discussion | 3 | Complete transcript + synthesis |
75| **QUICK** | Fast perspective check | 1 | Initial positions only |
76 
77## Context Files
78 
79| File | Content |
80|------|---------|
81| `CouncilMembers.md` | How to write council member briefs inline |
82| `RoundStructure.md` | Three-round debate structure and timing |
83| `OutputFormat.md` | Transcript format templates |
84 
85## Core Philosophy
86 
87**Origin:** Best decisions emerge from diverse perspectives challenging each other. Not just collecting opinions - genuine intellectual friction where domain-specific experts respond to each other's actual points.
88 
89**Agents:** Every council member is a custom brief you write for the topic, launched with `general-purpose`. This gives each member a distinct role, stance, and domain expertise. Generic agents produce generic debate; topic-specific briefs produce sharp, informed debate.
90 
91**Speed:** Parallel execution within rounds, sequential between rounds. A 3-round debate of 4 agents = 12 agent calls but only 3 sequential waits. Complete in 40-90 seconds.
92 
93## Examples
94 
95```
96"Council: Should we use WebSockets or SSE?"
97-> Write 4 member briefs (real-time architect, frontend-DX, ops skeptic, researcher)
98-> DEBATE workflow -> 3-round transcript
99 
100"Quick council check: Is this API design reasonable?"
101-> Write 4 member briefs with API-relevant roles
102-> QUICK workflow -> Fast perspectives
103 
104"Council: Is AI overhyped?"
105-> Write briefs: AI builder, security skeptic, pragmatic engineer, evidence analyst
106-> DEBATE workflow -> 3-round transcript
107```
108 
109## Integration
110 
111**Works well with:**
112- **RedTeam** - Pure adversarial attack after collaborative discussion
113- **Research** - Gather context before convening the council
114 
115## Best Practices
116 
1171. Use QUICK for sanity checks, DEBATE for important decisions
1182. Write each member's brief around the specific topic, not a generic role
1193. Give each member a distinct stance — four identical agents produce no friction
120 
121---
122 
123**Last Updated:** 2026-03-18
124 
125## Gotchas
126 
127- **Council members are inline briefs launched with `general-purpose` — there is no composition tool.** Write four different topic-specific briefs; don't launch bare built-in types with no persona.
128- **Debates need genuine disagreement to be valuable.** If all agents agree, the topic may not warrant Council.
129- **More agents ≠ better debate.** 4-6 well-briefed agents outperform 12 generic ones.
130 
131## Execution Log
132 
133After completing any workflow, append a single JSONL entry:
134 
135```bash
136echo '{"ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","skill":"Council","workflow":"WORKFLOW_USED","input":"8_WORD_SUMMARY","status":"ok|error","duration_s":SECONDS}' >> ~/.claude/LIFEOS/MEMORY/SKILLS/execution.jsonl
137```
138 
139Replace `WORKFLOW_USED` with the workflow executed, `8_WORD_SUMMARY` with a brief input description, and `SECONDS` with approximate wall-clock time. Log `status: "error"` if the workflow failed.
140 

Discussion