council
召集四個聲音處理模稜兩可的決策和 go/no-go 判斷
中文翻譯
--- name: council description: 為模稜兩可的決策、取捨和 go/no-go 判斷召集四個聲音的委員會。當有多條合理路徑、需要先有結構化的不同意見再做選擇時使用。 metadata: origin: ECC --- # Council 為模稜兩可的決策召集四位顧問: - 目前 context 裡的 Claude 本人 - 一個 Skeptic(懷疑者)subagent - 一個 Pragmatist(務實者)subagent - 一個 Critic(批評者)subagent 這是用在**模糊情境下的決策**,不是 code review、實作規劃或架構設計。 ## 何時使用 在這些情況使用 council: - 一個決策有多條可信的路徑,沒有明顯的贏家 - 需要把取捨明確攤開 - 使用者要第二意見、反對意見或多個觀點 - 對話的錨定效應(anchoring)確實是風險 - go / no-go 的判斷需要對抗式的挑戰 例子: - monorepo 還是 polyrepo - 現在就上線,還是等打磨完再上 - feature flag 還是全面 rollout - 縮小範圍,還是保留策略上的廣度 ## 何時不要用 | 不要用 council,改用 | 用這個 | | --- | --- | | 驗證輸出對不對 | `santa-method` | | 把功能拆成實作步驟 | `planner` | | 設計系統架構 | `architect` | | 檢查程式碼有沒有 bug 或安全問題 | `code-reviewer` 或 `santa-method` | | 單純的事實問題 | 直接回答 | | 很明確的執行任務 | 直接做 | ## 角色 | 聲音 | 視角 | | --- | --- | | Architect | 正確性、可維護性、長期影響 | | Skeptic | 質疑前提、簡化、打破假設 | | Pragmatist | 出貨速度、對使用者的影響、營運現實 | | Critic | 邊界情況、下行風險、失敗模式 | 三個外部聲音要用全新的 subagent 啟動,**只給它們問題和相關 context**,不要給完整的對話紀錄。這就是防止錨定的機制。 ## 工作流程 ### 1. 抽出真正的問題 把決策縮成一個明確的提問: - 我們要決定什麼? - 哪些限制條件重要? - 什麼算成功? 如果問題太模糊,召集 council 之前先問一個釐清問題。 ### 2. 只收集必要的 context 如果決策跟 codebase 有關: - 收集相關的檔案、程式碼片段、issue 內容或指標 - 保持精簡 - 只放做決策需要的 context 如果決策是策略性或通用的: - 除非 repo 的片段會實質影響答案,否則不要放 ### 3. 先形成 Architect 的立場 在看其他聲音之前,先寫下: - 你一開始的立場 - 支持它的三個最強理由 - 你偏好的路徑裡最主要的風險 要先做這步,這樣最後的綜合才不會只是照抄外部聲音。 ### 4. 平行啟動三個獨立的聲音 每個 subagent 會拿到: - 決策的問題 - 需要的話,附上精簡的 context - 嚴格的角色設定 - 不要有不必要的對話歷史 prompt 的形狀: ```text You are the [ROLE] on a four-voice decision council. Question: [decision question] Context: [only the relevant snippets or constraints] Respond with: 1. Position — 1-2 sentences 2. Reasoning — 3 concise bullets 3. Risk — biggest risk in your recommendation 4. Surprise — one thing the other voices may miss Be direct. No hedging. Keep it under 300 words. ``` 各角色的側重: - Skeptic:挑戰問題的框架、質疑假設、提出最簡單但可信的替代方案 - Pragmatist:以速度、簡單和實際執行為優先 - Critic:點出下行風險、邊界情況,以及計畫可能失敗的原因 ### 5. 帶著偏見護欄做綜合 你既是參與者又是綜合者,所以要遵守這些規則: - 沒說明理由就不要駁回外部的觀點 - 如果外部聲音改變了你的建議,要明說 - 一定要放進最強的反對意見,就算你不採納 - 如果有兩個聲音站在一起反對你一開始的立場,要把它當成真正的訊號 - 在下結論之前,先把各方的原始立場攤出來 ### 6. 呈現精簡的結論 用這個輸出格式: ```markdown ## Council: [short decision title] **Architect:** [1-2 sentence position] [1 line on why] **Skeptic:** [1-2 sentence position] [1 line on why] **Pragmatist:** [1-2 sentence position] [1 line on why] **Critic:** [1-2 sentence position] [1 line on why] ### Verdict - **Consensus:** [where they align] - **Strongest dissent:** [most important disagreement] - **Premise check:** [did the Skeptic challenge the question itself?] - **Recommendation:** [the synthesized path] ``` 要讓人在手機螢幕上也能快速掃過。 ## 持久化規則 **不要**從這個 skill 把臨時筆記寫到 `~/.claude/notes` 或其他影子路徑。 如果 council 實質改變了建議: - 用 `knowledge-ops` 把這個教訓存到對的長期位置 - 或者,如果結果屬於 session 記憶,就用 `/save-session` - 或者,如果決策改變了正在進行的執行事實,就直接更新相關的 GitHub / Linear issue 只有決策真的改變了什麼,才把它持久化。 ## 多輪追問 預設只跑一輪。 如果使用者想再跑一輪: - 新的問題要聚焦 - 只有必要時才附上上一輪的結論 - 盡量讓 Skeptic 保持乾淨,才能保住防錨定的價值 ## 反模式 - 把 council 拿來做 code review - 任務只是實作工作卻用 council - 把整份對話紀錄餵給 subagent - 在最後的結論裡把不同意見藏起來 - 不管重要性,每個決策都存成筆記 ## 相關 Skills - `santa-method` - 對抗式驗證 - `knowledge-ops` - 正確地持久化重要的決策變化 - `search-first` - 需要的話,在 council 之前先收集外部參考資料 - `architecture-decision-records` - 當決策變成長期的系統政策時,把結果正式化 ## 範例 問題: ```text Should we ship ECC 2.0 as alpha now, or hold until the control-plane UI is more complete? ``` 可能的 council 樣貌: - Architect 主張結構完整,避免讓使用者面對混亂的介面 - Skeptic 質疑 UI 是不是真的卡關的因素 - Pragmatist 問現在能出什麼,又不會傷害信任 - Critic 關注支援負擔、期待債務和 rollout 的混亂 價值不在於一致同意。價值在於先把分歧攤開看清楚,再做選擇。
英文原文
--- name: council description: Convene a four-voice council for ambiguous decisions, tradeoffs, and go/no-go calls. Use when multiple valid paths exist and you need structured disagreement before choosing. metadata: origin: ECC --- # Council Convene four advisors for ambiguous decisions: - the in-context Claude voice - a Skeptic subagent - a Pragmatist subagent - a Critic subagent This is for **decision-making under ambiguity**, not code review, implementation planning, or architecture design. ## When to Use Use council when: - a decision has multiple credible paths and no obvious winner - you need explicit tradeoff surfacing - the user asks for second opinions, dissent, or multiple perspectives - conversational anchoring is a real risk - a go / no-go call would benefit from adversarial challenge Examples: - monorepo vs polyrepo - ship now vs hold for polish - feature flag vs full rollout - simplify scope vs keep strategic breadth ## When NOT to Use | Instead of council | Use | | --- | --- | | Verifying whether output is correct | `santa-method` | | Breaking a feature into implementation steps | `planner` | | Designing system architecture | `architect` | | Reviewing code for bugs or security | `code-reviewer` or `santa-method` | | Straight factual questions | just answer directly | | Obvious execution tasks | just do the task | ## Roles | Voice | Lens | | --- | --- | | Architect | correctness, maintainability, long-term implications | | Skeptic | premise challenge, simplification, assumption breaking | | Pragmatist | shipping speed, user impact, operational reality | | Critic | edge cases, downside risk, failure modes | The three external voices should be launched as fresh subagents with **only the question and relevant context**, not the full ongoing conversation. That is the anti-anchoring mechanism. ## Workflow ### 1. Extract the real question Reduce the decision to one explicit prompt: - what are we deciding? - what constraints matter? - what counts as success? If the question is vague, ask one clarifying question before convening the council. ### 2. Gather only the necessary context If the decision is codebase-specific: - collect the relevant files, snippets, issue text, or metrics - keep it compact - include only the context needed to make the decision If the decision is strategic/general: - skip repo snippets unless they materially change the answer ### 3. Form the Architect position first Before reading other voices, write down: - your initial position - the three strongest reasons for it - the main risk in your preferred path Do this first so the synthesis does not simply mirror the external voices. ### 4. Launch three independent voices in parallel Each subagent gets: - the decision question - compact context if needed - a strict role - no unnecessary conversation history Prompt shape: ```text You are the [ROLE] on a four-voice decision council. Question: [decision question] Context: [only the relevant snippets or constraints] Respond with: 1. Position — 1-2 sentences 2. Reasoning — 3 concise bullets 3. Risk — biggest risk in your recommendation 4. Surprise — one thing the other voices may miss Be direct. No hedging. Keep it under 300 words. ``` Role emphasis: - Skeptic: challenge framing, question assumptions, propose the simplest credible alternative - Pragmatist: optimize for speed, simplicity, and real-world execution - Critic: surface downside risk, edge cases, and reasons the plan could fail ### 5. Synthesize with bias guardrails You are both a participant and the synthesizer, so use these rules: - do not dismiss an external view without explaining why - if an external voice changed your recommendation, say so explicitly - always include the strongest dissent, even if you reject it - if two voices align against your initial position, treat that as a real signal - keep the raw positions visible before the verdict ### 6. Present a compact verdict Use this output shape: ```markdown ## Council: [short decision title] **Architect:** [1-2 sentence position] [1 line on why] **Skeptic:** [1-2 sentence position] [1 line on why] **Pragmatist:** [1-2 sentence position] [1 line on why] **Critic:** [1-2 sentence position] [1 line on why] ### Verdict - **Consensus:** [where they align] - **Strongest dissent:** [most important disagreement] - **Premise check:** [did the Skeptic challenge the question itself?] - **Recommendation:** [the synthesized path] ``` Keep it scannable on a phone screen. ## Persistence Rule Do **not** write ad-hoc notes to `~/.claude/notes` or other shadow paths from this skill. If the council materially changes the recommendation: - use `knowledge-ops` to store the lesson in the right durable location - or use `/save-session` if the outcome belongs in session memory - or update the relevant GitHub / Linear issue directly if the decision changes active execution truth Only persist a decision when it changes something real. ## Multi-Round Follow-up Default is one round. If the user wants another round: - keep the new question focused - include the previous verdict only if it is necessary - keep the Skeptic as clean as possible to preserve anti-anchoring value ## Anti-Patterns - using council for code review - using council when the task is just implementation work - feeding the subagents the entire conversation transcript - hiding disagreement in the final verdict - persisting every decision as a note regardless of importance ## Related Skills - `santa-method` — adversarial verification - `knowledge-ops` — persist durable decision deltas correctly - `search-first` — gather external reference material before the council if needed - `architecture-decision-records` — formalize the outcome when the decision becomes long-lived system policy ## Example Question: ```text Should we ship ECC 2.0 as alpha now, or hold until the control-plane UI is more complete? ``` Likely council shape: - Architect pushes for structural integrity and avoiding a confused surface - Skeptic questions whether the UI is actually the gating factor - Pragmatist asks what can be shipped now without harming trust - Critic focuses on support burden, expectation debt, and rollout confusion The value is not unanimity. The value is making the disagreement legible before choosing.