diff --git a/skills/council/SKILL.md b/skills/council/SKILL.md index 48edbc0..3034272 100644 --- a/skills/council/SKILL.md +++ b/skills/council/SKILL.md @@ -120,13 +120,37 @@ Always multi-round (minimum rounds=2, default rounds=3 for this flow): ## Model Selection -Pick model tier based on topic complexity: +Pick model tier based on topic complexity and role mission: -- **light** (casual brainstorm, simple pros/cons): default model for advisors and referee. -- **medium** (architecture decisions, strategy): default model for advisors, stronger model for referee. -- **heavy** (critical decisions, deep analysis): stronger model for all agents. +- **light** (casual brainstorm, simple pros/cons) + - advisors / freethinkers / arbiters: use dedicated council role agents on `litellm/gpt-5-mini` + - referee / meta-arbiter: use dedicated synthesis agents on `openai-codex/gpt-5.4` (with configured fallbacks) +- **medium** (architecture decisions, strategy) + - advisors / freethinkers / arbiters: still use dedicated council role agents on `litellm/gpt-5-mini` + - referee / meta-arbiter: use dedicated synthesis agents on `openai-codex/gpt-5.4` +- **heavy** (critical decisions, deep analysis) + - keep dedicated council role agents by profile + - prefer stronger synthesis on `openai-codex/gpt-5.4` + - if a specific council run is unusually high-stakes, the caller may override the spawned session model upward, but should preserve the dedicated council agent identity/role -The caller (main agent) determines tier before spawning. +### Dedicated council agent roster + +Personality mode: +- `council-pragmatist` +- `council-visionary` +- `council-skeptic` +- `council-referee` + +D/P mode: +- `council-d-freethinker` +- `council-d-arbiter` +- `council-p-freethinker` +- `council-p-arbiter` +- `council-meta-arbiter` + +### Spawn rule + +When invoking the council skill, explicitly target these dedicated agent ids via `sessions_spawn` instead of generic/default subagents. The caller (main agent) determines tier before spawning, but should preserve the role-specific council agent identity and use model overrides only when the mission/tier truly justifies it. ## Round-Specific Prompt Guidance diff --git a/skills/council/scripts/council.sh b/skills/council/scripts/council.sh index 8546a6e..609da4d 100644 --- a/skills/council/scripts/council.sh +++ b/skills/council/scripts/council.sh @@ -117,14 +117,48 @@ # ─── SUBAGENT LABELING ──────────────────────────────────────────── # # Personality mode: -# Labels: council-r{round}-{role} -# Examples: council-r1-pragmatist, council-r2-skeptic, council-referee -# Single-round: council-pragmatist, council-referee (no round prefix) +# Agent ids: +# council-pragmatist +# council-visionary +# council-skeptic +# council-referee +# Labels can still be council-r{round}-{role} for bookkeeping, but sessions should target +# the dedicated council agent ids above. # # D/P mode: -# Labels: council-r{round}-{group}-{role} -# Examples: council-r1-d-freethinker, council-r1-p-arbiter, council-meta -# Single-round: council-d-freethinker, council-p-arbiter, council-meta +# Agent ids: +# council-d-freethinker +# council-d-arbiter +# council-p-freethinker +# council-p-arbiter +# council-meta-arbiter +# Labels can still be council-r{round}-{group}-{role} for bookkeeping, but sessions should target +# the dedicated council agent ids above. +# +# ─── ROLE-AWARE MODEL TIERING ───────────────────────────────────── +# +# light: +# advisors/freethinkers/arbiters -> dedicated council role agents on litellm/gpt-5-mini +# referee/meta-arbiter -> dedicated synthesis agents on openai-codex/gpt-5.4 +# +# medium: +# advisors/freethinkers/arbiters -> dedicated council role agents on litellm/gpt-5-mini +# referee/meta-arbiter -> dedicated synthesis agents on openai-codex/gpt-5.4 +# +# heavy: +# preserve dedicated role agent ids; prefer strongest synthesis on referee/meta-arbiter. +# Only override advisor models upward when the task is genuinely high-stakes or unusually complex. +# +# Principle: mission-specific synthesis gets the stronger model first; broad advisor diversity stays cheap +# unless the topic quality/risk clearly justifies escalation. +# +# Example sessions_spawn targeting: +# sessions_spawn(... agentId="council-pragmatist" ...) +# sessions_spawn(... agentId="council-referee" ...) +# sessions_spawn(... agentId="council-meta-arbiter" ...) +# +# Single-round labels may still look like council-pragmatist / council-meta for readability, +# but the runtime target should be the dedicated council agent id. # # ─── WORD COUNT GUIDANCE ────────────────────────────────────────── #