Skip to main content
Generalhashgraph-online

council

Trigger: architecture, tech selection, or design decisions with significant trade-offs and no clear answer.

Stars
336
Source
hashgraph-online/awesome-codex-plugins
Updated
2026-05-27
Slug
hashgraph-online--awesome-codex-plugins--council
View on GitHubRaw SKILL.md

// install — copy + paste into any project

mkdir -p .claude/skills && curl -fsSL https://raw.githubusercontent.com/hashgraph-online/awesome-codex-plugins/HEAD/plugins/epicsagas/epic-harness/registry/skills/council/SKILL.md -o .claude/skills/council.md

Drops the SKILL.md into .claude/skills/council.md. Works with Claude Code, Cursor, and any agent that loads SKILL.md files from .claude/skills/.

Council — Structured Multi-Voice Decision Making

Iron Law

NO MAJOR DECISION WITHOUT AT LEAST TWO OPPOSING VIEWPOINTS.

When to Trigger

  • Architecture choices (monolith vs microservice, SQL vs NoSQL)
  • Technology selection (framework, library, language)
  • Design decisions with no clear right answer
  • Trade-offs between competing requirements (speed vs quality, security vs usability)
  • User explicitly requests deliberation

Process

1. Identify the Decision

State the decision in one clear question. Example: "Should we use WebSockets or SSE for real-time updates?"

2. Summon 4 Voices (Parallel)

Launch 4 independent subagents using the Agent tool, each with ONLY the question and relevant context (NOT the full conversation history — this prevents anchoring bias):

Voice Role Focus
Architect Long-term correctness Maintainability, extensibility, architectural alignment
Skeptic Challenge assumptions Simpler alternatives, hidden costs, "what if we don't?"
Pragmatist Ship it now Timeline, user impact, operational complexity, team skills
Critic Find the cracks Edge cases, failure modes, migration risks, rollback difficulty

Anti-Anchoring Rule: Each voice receives only:

  • The decision question
  • Relevant codebase context (file paths, current architecture)
  • Their role and focus area They do NOT receive: the full conversation, other voices' opinions, or the user's leaning.

3. Synthesize

After all 4 voices report back:

  1. List areas of agreement (strong signal)
  2. List areas of disagreement (where trade-offs live)
  3. Present the user with:
    • Recommended option (based on agreement weight)
    • Key trade-off (the real decision to make)
    • Reversibility (how hard to undo each option)

4. Record Decision

Save the decision to harness-mem:

mem_add(
  title: "Decision: {question}",
  type: "decision",
  importance: 0.9,
  body: "Context: ...\nOptions: ...\nChosen: ...\nRationale: ...\nTrade-off accepted: ..."
)

Anti-Rationalization

Excuse Rebuttal What to do instead
"I already know the answer" Your gut feeling is not analysis. Council surfaces blind spots. Run Council anyway — you'll learn something.
"This is too slow for a simple decision" 5 minutes of council prevents weeks of regret. Set a 5-minute timer and run the full process.
"The team already agreed" Groupthink is not consensus. Diverse perspectives prevent disasters. Summon all 4 voices — especially the Skeptic and Critic.
"I don't need 4 voices for this" Even simple decisions benefit from the Skeptic and Critic. Run all 4 voices. Skipping voices skips insight.

Evidence Required

  • All 4 voices were summoned and reported back
  • Areas of agreement and disagreement are listed
  • A recommended option with key trade-off is presented
  • Decision recorded in harness-mem with rationale
  • No voice received the full conversation history

Red Flags

  • Skipping the Council for "obvious" decisions
  • Only summoning voices that agree with you
  • Reading the full conversation to all voices (anchoring)
  • Not recording the decision and rationale