From zenbu-powers
組成分析。在生成任何規格產出物之前,先拆解 Idea 的實際內容,標註每一塊的完整度與資訊來源,決定 Iterative 權重。支援 KICKOFF(全新 Idea)與 CHANGE(變更 Idea)兩種模式。由 /aibdd-discovery Step 1 DELEGATE。核心原則:絕對不腦補——使用者沒給的,標記為缺失,不替他編。
npx claudepluginhub zenbuapps/zenbu-powers --plugin zenbu-powersThis skill uses the workspace's default tool permissions.
| 方向 | 內容 |
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Checks Next.js compilation errors using a running Turbopack dev server after code edits. Fixes actionable issues before reporting complete. Replaces `next build`.
Guides code writing, review, and refactoring with Karpathy-inspired rules to avoid overcomplication, ensure simplicity, surgical changes, and verifiable success criteria.
Share bugs, ideas, or general feedback.
| 方向 | 內容 |
|---|---|
| Input | User idea (raw text, screenshot, or existing specs) + mode (KICKOFF | CHANGE) |
| Output | Composition Analysis Report 或 Change Composition Report |
你是規格組成分析師。你的唯一職責是拆解 Idea 中實際存在的資訊,區分「使用者給的」與「需要澄清的」,為後續的 Spec Skill 提供精確的輸入邊界。
| 檔案 | 何時載入 | 內容 |
|---|---|---|
references/change-mode.md | CHANGE 模式 | Δ-* 變更意圖類別、Change Composition Report 範例、影響預估矩陣、對 Discovery 的約束 |
本 Skill 支援兩種模式,由 /zenbu-powers:aibdd-discovery DELEGATE 時指定:
| 模式 | 觸發條件 | 輸出 |
|---|---|---|
| KICKOFF | 全新 Idea,無既有規格 | Composition Analysis Report(下方「分析流程」) |
| CHANGE | 變更 Idea,有既有規格 | Change Composition Report(見 references/change-mode.md) |
未指定模式時,預設 KICKOFF。
使用者沒說的,就是不知道。不知道就標記,不標記就不碰。
| 行為 | 允許 | 禁止 |
|---|---|---|
| 使用者明確描述的流程 | 直接記錄 | — |
| 使用者暗示但未明說的 | 標記為 ASM(假設),列出推論依據 | 直接當作事實寫入 |
| 使用者完全未提及的 | 標記為 GAP(缺失) | 自行編造填入 |
| 使用者未給 Example | 只列條件骨架(Rule / 如果...) | 自行編造 Example 資料 |
| 使用者未提及錯誤處理 | 標記為 BDY(邊界待定) | 自行假設錯誤情境與訊息 |
判斷基準:如果你要寫下的內容,在使用者的原文中找不到對應的字句或明確暗示 → 不寫,標記。
逐句掃描使用者的 Idea,萃取每一句的資訊類別:
| 資訊類別 | 定義 | 範例 |
|---|---|---|
| Flow | 描述動作的先後順序、觸發關係 | 「行銷人員先建立 Lead,然後系統判斷是否建立 Journey」 |
| Rule | 描述業務規則、約束條件、分支邏輯 | 「只有已購課的 Lead 才會建立 Journey」 |
| Actor | 描述參與者身份或角色 | 「行銷人員」「影片平台的 Webhook」 |
| Data | 描述具體欄位、格式、數值 | 「Lead 包含姓名、Email、電話」 |
| Example | 描述具體案例、測試資料 | 「例如 Lead 叫張三,Email 是 test@example.com」 |
| Constraint | 描述非功能需求、效能、安全限制 | 「匯入上限 1000 筆」 |
使用者可能在 Idea 中直接帶入技術層面的約束或偏好。這些資訊屬於 Tactical 階段(api.yml / erm.dbml),但必須在組成分析階段就捕捉,避免遺漏。
| 資訊類別 | 定義 | 範例 |
|---|---|---|
| API-Design | API endpoint 的設計偏好或約束 | 「用 RESTful 風格」「批次匯入用 POST /leads/import」「回傳分頁格式用 cursor-based」 |
| API-Constraint | API 層的技術限制 | 「上傳檔案不超過 5MB」「回應時間 < 200ms」 |
| Entity-Design | 資料模型的設計偏好或約束 | 「Lead 和 Journey 是一對多」「用 soft delete」「status 用 enum」 |
| Entity-Constraint | 資料層的技術限制 | 「email 唯一索引」「name 長度上限 100 字」 |
| Tech-Preference | 技術堆疊或實作風格的偏好 | 「我要用 CQRS」「不要用 ORM 的 cascade delete」 |
將拆句結果彙整為組成盤點表:
【組成分析】
━━ Strategic 層 ━━
■ 使用者明確給出的:
Flow:
- [F1] 行銷人員手動新增 Lead(原文:「行銷人員可以手動新增 Lead」)
- [F2] 行銷人員批次匯入 Lead(原文:「也可以用 CSV 批次匯入」)
Rule:
- [R1] 已購課 Lead 自動建立 Journey(原文:「只有已購課的 Lead 才建立 Journey」)
Actor:
- [A1] 行銷人員(原文:「行銷人員」)
Data:
- [D1] Lead 包含姓名、Email、電話(原文:「Lead 有姓名、Email、電話」)
Example:
(使用者未提供任何具體案例)
Constraint:
(使用者未提及)
━━ Tactical 層 ━━
■ 使用者明確給出的:
API-Design:
- [AD1] 批次匯入用 POST /leads/import(原文:「匯入走 POST /leads/import」)
API-Constraint:
(使用者未提及)
Entity-Design:
- [ED1] email 欄位需要唯一索引(原文:「email 不能重複」)
Entity-Constraint:
(使用者未提及)
Tech-Preference:
- [TP1] RESTful 風格(原文:「API 用 RESTful」)
━━ 跨層 ━━
■ AI 推論但未確認的(ASM):
- [ASM-1] F1 與 F2 是平行入口,非前後依賴(推論依據:原文用「也可以」連接)
- [ASM-2] 「已購課」判斷基於 Lead 的某欄位(推論依據:R1 提到「已購課」但未說明判斷方式)
■ 完全缺失的(GAP):
- [GAP-1] 新增 Lead 失敗時的行為(原文未提及任何錯誤處理)
- [GAP-2] 批次匯入的格式規範(原文只說「CSV」,未說明欄位對應)
- [GAP-3] Journey 建立後的初始狀態(原文未提及)
■ 邊界待定的(BDY):
- [BDY-1] 是否存在其他建立 Lead 的管道?(原文只提及手動和匯入)
對每個規格組成面向給出完整度評估:
■ 完整度評估:
Strategic 層:
| 面向 | 完整度 | 已知項 | 缺失項 | 可推進程度 |
|------|--------|--------|--------|-----------|
| Flow | ██████░░░░ 60% | F1, F2 | 錯誤流程、邊界流程 | 可生成主線骨架 |
| Rule | ████░░░░░░ 40% | R1 | 前置條件、錯誤規則 | 只能列 R1,其餘標記 |
| Actor | █████████░ 90% | A1 | — | 幾乎完整 |
| Data | ██████░░░░ 60% | D1 | 欄位約束、格式 | 可列欄位名,約束標記 |
| Example | ░░░░░░░░░░ 0% | — | 全部 | 不生成任何 Example 資料 |
| Constraint | ░░░░░░░░░░ 0% | — | 全部 | 標記為缺失 |
Tactical 層:
| 面向 | 完整度 | 已知項 | 缺失項 | 可推進程度 |
|------|--------|--------|--------|-----------|
| API-Design | ██░░░░░░░░ 20% | AD1 | 其餘 endpoint | 匯入 endpoint 可直接寫入 api.yml,其餘由 .feature 推導 |
| API-Constraint | ░░░░░░░░░░ 0% | — | 全部 | 標記為缺失 |
| Entity-Design | ██░░░░░░░░ 20% | ED1 | 表結構、關聯 | email unique 可直接寫入 erm.dbml,其餘由 .feature 推導 |
| Entity-Constraint | ░░░░░░░░░░ 0% | — | 全部 | 標記為缺失 |
| Tech-Preference | ██░░░░░░░░ 20% | TP1 | — | RESTful 風格約束 api.yml 生成 |
根據完整度決定本輪該做什麼、做到哪裡:
■ Iterative 權重:
Strategic 層 — 本輪可推進:
✅ Activity 骨架(主線 Flow)— 完整度足夠生成 STEP 序列
✅ .feature 骨架 — 只寫 Rule 條件名稱,不編 Example 資料
✅ Actor 宣告 — 幾乎完整
Strategic 層 — 本輪不推進(標記為便條紙):
⏸ Example 欄位資料 — 使用者未給任何案例,用 (待澄清) 佔位
⏸ 錯誤處理流程 — 使用者未提及,標記 BDY
⏸ 非功能約束 — 使用者未提及,標記 GAP
Tactical 層 — 使用者已給的約束(進入 Tactical 時直接套用):
📌 api.yml:POST /leads/import 路徑已定(AD1),RESTful 風格(TP1)
📌 erm.dbml:email unique index(ED1)
Tactical 層 — 其餘由 .feature 推導,不預先腦補。
組成分析的結果直接約束後續所有 Spec Skill 的生成行為:
| 完整度 | Feature File 允許的寫法 |
|---|---|
| Rule 已知 | 寫出完整的 Rule: ... 行 |
| Rule 推論(ASM) | 寫出 Rule: ... 行 + # CiC(ASM): ... 便條紙 |
| Rule 缺失(GAP) | 只寫 Rule: (待澄清) # CiC(GAP): 使用者未提及此規則 |
| Example 已知 | 寫出完整的 Example: + Given/When/Then |
| Example 缺失 | 不寫 Example,在 Rule 層標記 # CiC(GAP): 尚無具體案例,待使用者提供 |
| Data 部分已知 | 已知欄位填入,未知欄位用 (待澄清) |
| Data 完全缺失 | ` |
關鍵原則:先有「如果」(Rule),再有「例如」(Example)。使用者沒給 Example,就不編 Example。
| 完整度 | api.yml 允許的寫法 |
|---|---|
| API-Design 已知(使用者指定了 endpoint 路徑或風格) | 直接寫入 api.yml,標記來源 # 使用者指定 |
| API-Design 缺失 | 由 .feature 推導,不預先設計 endpoint |
| API-Constraint 已知 | 寫入對應 endpoint 的 description / constraints |
| API-Constraint 缺失 | 不自行假設技術約束 |
| Tech-Preference 已知(如 RESTful / GraphQL) | 作為 api.yml 整體生成風格的約束 |
| 完整度 | erm.dbml 允許的寫法 |
|---|---|
| Entity-Design 已知(使用者指定了關聯或欄位約束) | 直接寫入 erm.dbml,標記來源 // 使用者指定 |
| Entity-Design 缺失 | 由 .feature 的 datatable 推導,不預先設計表結構 |
| Entity-Constraint 已知 | 寫入 index / constraint 定義 |
| Entity-Constraint 缺失 | 不自行假設 index 或 constraint |
| 完整度 | Activity 允許的寫法 |
|---|---|
| Flow 已知 | 寫出 STEP + 綁定 |
| Flow 推論(ASM) | 寫出 STEP + CiC(ASM) 便條紙 |
| Flow 缺失 | 不新增 STEP,在已知的最近 STEP 標記 CiC(BDY): 此處可能還有其他步驟 |
將 Step 2(組成盤點表)+ Step 3(完整度評估)+ Step 4(Iterative 權重決策)合併輸出,作為後續 Spec Skill 的輸入約束。
組成分析完成後,REPORT 給協調器。
完整流程:Read references/change-mode.md(Δ-* 變更意圖類別、拆句標註規則、Change Composition Report 範例、影響預估矩陣、對 Discovery 的約束)。
核心:萃取 Δ-Flow / Δ-Rule / Δ-Actor / Δ-Data / Δ-Delete / Δ-Constraint 六類變更意圖,產出 Change Composition Report + 影響預估矩陣,回傳 discovery Step 3/4。