Skip to content
Agent Orchestration
Skill

/design-council

Use when the user says "convene the council", "design debate", "council review", "get the team together", "run a design review", or "debate this design"; OR describes a cross-domain decision or review with real stakes — architecture pivot, API surface, pre-release hardening,

From plugin
design-council
1751 skill1 command
Install
$ npx -y skills add sjsyrek/design-council --skill design-council --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/design-council

Context preview

The summary Claude sees to decide when to auto-load this skill.

Use when the user says "convene the council", "design debate", "council review", "get the team together", "run a design review", or "debate this design"; OR describes a cross-domain decision or review with real stakes — architecture pivot, API surface, pre-release hardening,

SKILL.md

design-council.SKILL.md
name: design-council
description: Use when the user says "convene the council", "design debate", "council review", "get the team together", "run a design review", or "debate this design"; OR describes a cross-domain decision or review with real stakes — architecture pivot, API surface, pre-release hardening, codebase-wide audit. Convenes parallel role-specialized agents (default Opus) who debate in real time via inter-agent messaging while the invoking Claude serves as CEO. Do NOT invoke for single-specialist questions, bug fixes, or quick library picks.
version: 0.4.1

design-council

Convene a **parallel team of role-specialized agents** to debate a non-trivial technical decision (or audit a codebase in Review mode) in real time. The invoking Claude is **CEO**: convenes, routes peer-DMs, arbitrates deadlocks, writes a one-page decision log. Every teammate has its own context — not a subagent inheriting yours — so disagreement is structural, not simulated.

What the user sees

1. **Plan card.** Before any seat spawns, the CEO shows a one-screen card: mode, roster, per-seat model, rough token/wall-clock budget, drafted opening question. You reply `go`, `swap X for Y`, `drop X`, `add X`, or `abort`. 2. **Handshake status.** After spawn, the CEO emits one line — e.g. `HANDSHAKE: 8/8 ok | verdict=PROCEED` — so you know every seat actually started. 3. **Cross-talk.** Seats post opening verdicts, DM each other to debate, CEO routes deadlocks. Bounded: 3 rounds max. 4. **Log preview.** Before saving, the CEO posts the draft decision log to chat. Reply `save`, `amend <note>`, or `discard`. 5. **Output.** One-page decision log at `~/.claude/councils/<yyyy-mm-dd>-<slug>/log.md` (outside any repo). 6. **Stop early.** Say "stop the council" at any phase — CEO broadcasts shutdown, saves a `status: halted` partial log, cleans up.

Invocation: `/design-council:design-council [decision-or-focus]` or any of the trigger phrases below.

When to invoke

Both conditions must hold: (a) decision or review crosses **≥2 specialist domains**, and (b) output must **survive handoff** — a decision log, tracker items, or an execution plan. Natural triggers: "convene the council", "design debate", "council review", "run a design review", "debate this design", "get the team together".

Do **NOT** invoke for: bug fixes, single-specialist questions, library/tool picks, pure exploration (→ `Explore`), one-turn sanity checks.

Default roster (size matches decision shape)

| # | Slug | Owns | |---|------|------| | 1 | `principal-engineer` | Architecture, module boundaries, simplicity (opens the debate) | | 2 | `platform-engineer` | Systems, infra, data shape, operational cost, observability | | 3 | `integration-engineer` | Downstream consumers, third-party developers, backwards compat | | 4 | `test-engineer` | TDD, mutation ritual, coverage, assertion hygiene | | 5 | `qa-engineer` | User flows ↔ spec alignment, regression surface, manual test plan | | 6 | `security-engineer` | Input validation, secrets, path safety, error sanitization | | 7 | `performance-engineer` | Batching, memory, concurrency, measurement-before-optimization | | 8 | `product-manager` | UX alignment, product coherence, best-practice conformance | | 9 | `ui-ux-designer` | Ergonomics, visual consistency, interaction design | | 10 | `accessibility-specialist` | a11y, keyboard nav, screen reader, contrast | | 11 | `technical-writer` | Docs, in-app help, CHANGELOG, API reference |

**Opt-ins:** `devops-engineer` (deploy risk, CI/CD, rollback), `sre-engineer` (production reliability, SLOs, blast radius, rollback validation; pair with `devops-engineer` when production stakes are high), `finops-engineer` (cloud/API cost, unit economics, resource lifecycle), `legal-compliance` (privacy, licensing), `domain-expert` (subject-matter SME), `historian` (codebase precedent on mature repos).

**Dynamic sizing is the default, not an exception.** No runtime UI → drop ui-ux + a11y. No user input / no infra → drop security + platform. Internal-tooling defaults can be 4–6 seats. Full 11+opt-ins only when every role-lens applies. The CEO decides at Phase 0 and surfaces the roster in the plan card.

Model choice (state it, don't default quietly)

Default: **Opus for synthesis-heavy seats** (principal-engineer, product-manager, technical-writer, historian) and **Sonnet for analytical seats** (test, performance, platform, qa). Override all → Opus on a high-quality-bar framing. The plan card shows which seats got which model; users can adjust before spawn.

Variants

  • **Debate mode** (default) — single decision, verdict tags (APPROVE / CONCERNS / BLOCK), peer DMs resolve disagreements, CEO arbitrates what's left.
  • **Review mode** — codebase audit, P0/P1 findings, cross-talk skipped, CEO dedupes and files tracker items. See `references/review-mode.md`.

Protocol (six phases)

| Phase | Name | CEO does | |-------|------|----------| | 0 | **Plan card** | Draft roster + models + budget + opening question; show to user; wait for `go` | | 1 | **Brief** | Gather binding constraints verbatim (CLAUDE.md, spec, memory, tracker); **self-audit** — grep auto-memory + prior decision logs for entries about the council skill; flag any memory-vs-skill contradiction and follow memory; write everything to `~/.claude/councils/<slug>/brief.md` once; draft opening prompt | | 2 | **Convene** | `TeamCreate` + parallel `Agent` spawns in **one multi-tool-call message**; every spawn prompt points to `brief.md` (prompt-cache hits across seats) | | 2.5 | **Handshake verify** | Count incoming handshake DMs; inspect team config for empty `tmuxPaneId`; remediate or drop silent-spawn failures; emit `HANDSHAKE: N/N ok` line | | 3 | **Cross-talk** | Route peer DMs, ask narrowing questions, bridge converged tracks; **3-round hard cap**. Skipped by default in Review mode. | | 4 | **Arbitrate** | Write decision + rationale for every unresolved disagreement. Escalate strategic/legal/budg

Read more
Ships withdesign-council

Convene a parallel team of specialist Claude agents with independent contexts — they argue your call, partition the work, and ship it.

Get the whole plugin
Stats
177
Stars
21
Forks
Maintained
Maintenance
MIT
License
2mo ago
Last commit
4mo ago
Created

Repo: sjsyrek/design-council