ddd
DDD 領域驅動設計 — 戰略設計
本 Skill 專注於產出戰略設計文件,幫助使用者將業務需求轉化為清晰的領域模型。
產出目標
產出一份 DOMAIN-MODEL.md 文件,包含:
- 領域與子域 (Domain & Subdomains) — 識別核心子域、支撐子域、通用子域
- 限界上下文 (Bounded Contexts) — 根據子域拆分軟體邊界
- 通用語言 (Ubiquitous Language) — 中英對照的詞彙定義表
- 上下文映射 (Context Map) — 定義上下文間的溝通規則與領域事件
產出流程
由使用者提出需求,或與 Agent 討論後產出。
Step 1: 識別領域與子域
提問方向:
- 這個系統的核心價值是什麼?靠什麼賺錢?
- 哪些業務是必需的?哪些可以外包?
- 團隊擅長什麼?市場上有哪些現成方案?
產出格式:
## 領域與子域
**Domain:** [系統要解決的問題領域]
**Subdomains:**
- **核心子域 (Core Subdomain):** [最有價值的業務,需自行開發的護城河]
- **支撐子域 (Supporting Subdomain):** [支撐核心子域的業務,可自行開發或客製化]
- **通用子域 (Generic Subdomain):** [可直接使用外部方案的業務]
Step 2: 識別限界上下文
提問方向:
- 這個業務中,哪些術語雖然相同但關注點完全不同?
- 哪些功能必須同時成功?哪些可以延遲?
- 哪些功能會獨立變更、互不影響?
判斷標準:
- 語言是否改變? 同一個名詞在不同功能中,關注的屬性完全不同 → 拆分
- 是否需要強一致性? 兩個操作必須在同一個 Transaction 完成 → 不拆分
- 業務變更獨立性? 各自發展、互不影響 → 拆分
產出格式:
## 限界上下文
1. **XXX Context** — 職責說明,對應[子域]
2. **YYY Context** — 職責說明,對應[子域]
Step 3: 定義通用語言
提問方向:
- 這個業務中,最重要的名詞有哪些?
- 每個名詞在不同的上下文中,具體包含哪些屬性?
- 團隊內部怎麼稱呼這些概念?
產出格式:
## 通用語言
| 中文業務名詞 | 英文命名 | 所在上下文 | 嚴格定義 |
| :---------- | :------- | :--------- | :------- |
| 任務 | Task | TaskContext| 具備 id, title, isCompleted, dueDate |
Step 4: 定義上下文映射
提問方向:
- 哪些上下文需要取得其他上下文的資料?
- 哪些操作完成後需要通知其他上下文?
- 上下游關係是什麼?
溝通規則:
- 禁止直接操作:禁止跨 Context 直接 import 類別或查詢資料庫
- ID 參照:跨 Context 關聯使用純 ID(string/uuid),禁止 Foreign Key
- 事件驅動:透過 Domain Event 觸發跨 Context 行為
產出格式:
## 上下文映射
- **XXX Context [上游] → [下游] YYY Context**
- 說明:XXX 發出事件,YYY 監聽處理
## 領域事件
| 事件名稱 | 來源上下文 | 監聽上下文 | 觸發時機 |
| :------- | :--------- | :--------- | :------- |
| TaskCompletedEvent | TaskContext | NotificationContext | 任務完成時 |
參考資源
根據當前任務讀取對應的 reference:
- 需要識別子域 → 讀 references/domain-subdomains.md
- 需要拆分 Bounded Context → 讀 references/bounded-context.md
- 需要定義 Ubiquitous Language → 讀 references/ubiquitous-language.md
- 需要定義 Context Map → 讀 references/context-map.md
實作時的 DDD 檢查
當後續進行功能實作時,Agent 必須持續檢查:
- Context 邊界:這個功能屬於哪個 Context?程式碼是否在正確的資料夾?
- 命名一致性:變數名、類別名、API 路徑是否 100% 符合 Ubiquitous Language?
- 跨 Context 隔離:是否有偷偷 import 其他 Context 的內部類別?
- ID 參照:資料庫 Schema 是否有跨 Context 的 Foreign Key?
若發現問題,應立即修正或回報使用者。
More from cacaorick/skills
ai-dev-workflow
由文件串起完整的 AI 開發流程。涵蓋領域建模與程式碼組織(DDD)以及 AI 開發規範設定(Agent 規範)。Use when (1) the user asks to organize code by business features or define naming conventions, (2) creating or updating AGENTS.md / project rule files, (3) starting a new project from scratch, or (4) the agent needs the full development lifecycle.
12bdd
行為驅動開發流程。幫助撰寫 Gherkin、建立 Step Definitions 骨架、選擇測試工具、執行驗證並回報問題。開發和修正是由其他 skills 處理。Use when (1) the project uses BDD or has .feature files, (2) the user asks to write Gherkin scenarios or Step Definitions, (3) the user asks to run BDD tests.
1agents-md
引導 AI Agent 閱讀並遵守專案的 AGENTS.md 規範。AGENTS.md 是給 AI 看的專案說明文件,定義了技術棧、資料夾架構、專案架構、開發流程等約束。Use when:任何任務開始前、需要了解技術棧、資料夾架構、專案架構、開發流程時。AI Agent 不可做出違抗 AGENTS.md 的行為。
1temp-folder
當 AI Agent 需要建立非專案所需的臨時檔案時(如測試輸出、生成的程式碼草稿、除錯檔案等),自動在專案根目錄建立 `.ai` 資料夾,並確保該資料夾已被加入 `.gitignore`。使用時機:(1) 當 AI 需要產生臨時/測試性質的檔案,(2) 當 AI 產生的檔案不是專案正式所需。
1