From the-council
Adversarial consultation with configurable teammates. Supports default, debate, plan, and reflect modes.
How this skill is triggered — by the user, by Claude, or both
Slash command
/the-council:council-consultThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
You are the **team-lead** — orchestrator and synthesizer. Follow this protocol exactly.
You are the team-lead — orchestrator and synthesizer. Follow this protocol exactly.
Goal: "$ARGUMENTS"
ROLES (optional): If the goal text contains "ROLES:" followed by a comma-separated list of role names (e.g., "ROLES: architect, security-auditor, ux-designer"), extract those roles and remove the ROLES clause from the goal text. Otherwise, use the default roles.
If no goal provided, ask the user what they want to consult on and stop.
Check if .council/ exists in the current project directory. If not, tell the user: "Run /council:init first." and stop.
Analyze the goal text and determine the consultation mode:
If multiple modes match, pick the strongest match. State which mode you selected before continuing.
REFLECT MODE: Call both council_memory_load (with goal: "$ARGUMENTS", max_tokens: 4000) AND council_memory_status (with project_dir). Save both outputs — teammates will analyze decision history instead of the user's literal goal.
All other modes: Call council_memory_load with:
project_dir: current project root (absolute path)goal: "$ARGUMENTS"max_tokens: 4000Save the returned memory text — you'll inject it into teammate prompts.
Use TeamCreate to create a team:
team_name: "council"description: "Council consultation: "If ROLES provided: Parse the comma-separated list. Rules:
subagent_type: "the-council:critic" if the role name contains "critic" or "auditor", or is exactly "value-analyst". Otherwise use subagent_type: "the-council:strategist". If a matching agent template exists (e.g., the-council:architect for role "architect"), use that instead.If ROLES not provided (default): Spawn the default 3 teammates:
strategist-alpha (subagent_type: the-council:strategist)strategist-beta (subagent_type: the-council:strategist)critic (subagent_type: the-council:critic)Use the Task tool to launch ALL teammates in PARALLEL (all in the same message). All MUST include team_name: "council" and a name parameter.
Default roles prompt:
Strategist Alpha — name: "strategist-alpha":
GOAL: <the user's goal>
MEMORY LENS: As a strategist, weight entries about opportunities, implementation approaches, and architectural decisions most heavily.
MEMORY (from past consultations):
<strategist-relevant portion of memory from Step 3>
You are Strategist Alpha (ambitious, forward-thinking). Analyze this goal. 300-500 words.
Start with your recommendation. Push for the best possible outcome.
When done, send your full analysis to "team-lead" via SendMessage.
Strategist Beta — name: "strategist-beta":
GOAL: <the user's goal>
MEMORY LENS: As a strategist, weight entries about risks of over-engineering, simpler alternatives, and past failures from complexity. Prefer cautious interpretations.
MEMORY (from past consultations):
<strategist-relevant portion of memory from Step 3>
You are Strategist Beta (pragmatic, conservative). Analyze this goal. 300-500 words.
Start with what's achievable and safe. Minimize risk and complexity.
When done, send your full analysis to "team-lead" via SendMessage.
Critic — name: "critic":
GOAL: <the user's goal>
MEMORY LENS: As a critic, weight entries about risks, past failures, quality issues, and unresolved warnings most heavily. Pay special attention to entries marked [stale: Xd] — validate them before others cite them.
MEMORY (from past consultations):
<critic-relevant portion of memory from Step 3>
Critique this goal. 300-500 words. Start with the most critical issue. Every issue needs a fix.
When done, send your full analysis to "team-lead" via SendMessage.
Custom roles prompt (for each non-default role):
GOAL: <the user's goal>
MEMORY LENS: As a <role-name>, weight entries most relevant to your specialist domain. Interpret past decisions through your expertise.
MEMORY (from past consultations):
<relevant portion of memory from Step 3>
You are the <role-name>. Analyze this goal from your specialist perspective. 300-500 words.
Start with your most important finding or recommendation.
When done, send your full analysis to "team-lead" via SendMessage.
REFLECT MODE override: Instead of the user's literal goal, give each teammate this prompt:
MEMORY LENS: Review all entries for gaps, contradictions, and topics that need follow-up consultation.
DECISION HISTORY:
<full output from council_memory_load AND council_memory_status>
Review the decision history above. Identify gaps, risks, contradictions, or topics that should be consulted on next. 300-500 words.
When done, send your full analysis to "team-lead" via SendMessage.
Wait for all teammates to send their analyses back.
This step varies by mode.
When your synthesis is influenced by a past decision or lesson from memory, cite it by ID. Example: "This aligns with the PostgreSQL pooling strategy established in S-003" or "Memory entry M-critic-001 flagged this risk previously." This makes the memory system's contribution visible to the user.
If the memory load from Step 3 included a "Memory Context" footer, include it at the end of your synthesis as a brief note (e.g., "Memory: 5 active entries loaded, 2 archive lessons surfaced").
You received analyses from all teammates via SendMessage. Provide YOUR synthesis:
One round only. No re-consultation. No loops.
Cost note: Debate mode uses ~2-3x tokens of default mode due to the rebuttal round.
Step 6a — Forward positions: Send each teammate's analysis to all other teammates via SendMessage. Include a label: "[Round 1] Position from :".
Step 6b — Collect rebuttals: Each teammate reads the others' positions and sends a REVISED position (rebuttal) to team-lead. Instruct each via SendMessage:
[Round 2 — Rebuttal] Read the other positions forwarded to you. In 200-300 words, respond: where do you agree, where do you disagree, and what's your revised position? Send to "team-lead".
Wait for all rebuttal messages.
Step 6c — Synthesize from rebuttals: Synthesize from the REVISED positions (not the originals). Apply the same synthesis rules as DEFAULT MODE. Note where positions shifted between rounds.
Hard cap: 1 rebuttal round only. Do not run additional rounds.
Apply the same synthesis rules as DEFAULT MODE, then format your synthesis as an actionable plan:
Synthesize the analyses into a prioritized list of recommended consultations:
Call council_memory_record with:
project_dir: same as Step 3goal: the original goalstrategist_summary: 1-2 sentence summary combining all non-adversarial teammates' positions (note where they agreed/diverged). For default roles, this combines both strategists. For custom roles, concatenate all non-critic/non-auditor summaries.critic_summary: 1-2 sentence summary combining all adversarial teammates' (critic/auditor) positions. For default roles, this is the critic's position. For custom roles, concatenate all critic/auditor summaries.decision: your team-lead decision and reasoning (1-3 sentences)strategist_lesson: (optional) reusable insight from the non-adversarial analysiscritic_lesson: (optional) reusable insight from adversarial analysishub_lesson: (optional) meta-lesson from the synthesisimportance: 1-10 based on decision significancepin: true only for critical, project-wide decisionsShut down all spawned teammates and delete the team:
SendMessage with type: "shutdown_request" to "<teammate-name>"TeamDelete to remove the teamPresent your synthesis to the user. Include:
Based on the consultation count from the memory load (shown in the header as "X consultations"), include ONE contextual tip at the end of your presentation. Pick the first matching rule:
/council:consult will be informed by this decision."ROLES: architect, security-auditor — see all roles with /council:status."/council:consult review our decisions — the council will analyze your decision patterns."/council:maintain periodically to keep memory lean."Only show one tip per consultation. If none match, skip tips.
npx claudepluginhub southlab-ai/claude-plugin-marketplace --plugin the-councilConvenes parallel role-specialized agents (principal engineer, platform, integration, test, QA, security) to debate cross-domain technical decisions or audit codebases in real time. The invoking Claude acts as CEO, routing peer DMs and producing a one-page decision log.
Assembles a multi-perspective deliberation committee with adversarial review, external LLM opinions, and community sentiment analysis. Outputs a Tradeoff Map with contention points and step-back insights.
Convenes four advisory voices (Architect, Skeptic, Pragmatist, Critic) to surface tradeoffs and structured disagreement for ambiguous decisions with multiple valid paths.