ddd-workflow
Document Driven Development — a structured workflow for AI-assisted software development with TDD, specs, and cross-review
Open source Open in the app JSON README (API)
About
Document Driven Development — a structured workflow for AI-assisted software development with TDD, specs, and cross-review
Details
- Kind
- Plugins
- Topic
- No topic detected
- Publisher
- applepig
- Origin
- gemini
- Category
- ferramentas
- Version
- 0.1.0
- Stars
- 13
- Forks
- 2
- Open pull requests
- 1
- Last push
- 2026-08-19T07:21:27Z
- Repository state
- ativo
- Language
- JavaScript
- License
- MIT
- Added
- 2026-08-30 14:13:39
- Updated
- 2026-08-30 14:13:39
- Origin id
applepig/ddd-workflow
README
# DDD Workflow
Document Driven Development 工作流——讓 AI agent 用結構化的文件驅動開發,而非直接跳進程式碼。
## 核心理念
**No Code Without Docs, No Code Without Tests.**
每個功能都從文件開始:先釐清需求、寫 spec,確認後才動手寫程式碼。Main agent 擔任 Coordinator(規劃、派工、驗收),實作和 review 交給專屬 subagent,保護 main agent 的 context window 不被消耗。
## 安裝 Skills
使用 Agent Skills CLI 安裝全部 DDD skills:
```bash
npx skills add applepig/ddd-workflow --skill "*" -g -a claude-code -a opencode -a codex -a gemini-cli
```
先檢查可用 skills:
```bash
npx skills add applepig/ddd-workflow --list
```
如果你已 clone 本 repo,也可以從本機目錄安裝:
```bash
npx skills add . --skill "*" -g -a claude-code -a opencode -a codex -a gemini-cli
```
## Agents 與 Runtime Scripts
`npx skills` 只安裝 `skills/`。本 package 另外提供 `bin/` entrypoints,處理 agents、instruction files、config 與 runtime scripts。
建立平台 agents 產物:
```bash
npm run agents:build
```
此命令只重建各平台 agent 檔案;package 內隨版發布的 custom statusline 與 OpenCode plugin runtime bundles 會保留,可接著直接部署。
部署 non-skill 項目到本機 agent 設定目錄:
```bash
npm run agents:deploy -- --dry-run
npm run agents:deploy
```
可指定單一平台:
```bash
npm run agents:deploy -- claude --dry-run
npm run agents:deploy -- opencode
```
部署會為 session-trigger 建立隔離 HOME,並將一般 OpenCode data home 中可讀的一般 `auth.json`/`account.json` 檔案複製進隔離 data home。第一次 OpenCode 登入仍須由使用者自行完成;若 credential 缺少、不可讀或不是一般檔案,deploy 會清除對應的舊隔離副本、提示來源路徑並繼續,不會代為登入或建立 credential。
## 工作流總覽
```mermaid
flowchart TD
Start([新專案]) --> Init["建立 docs/<br/>PRD.md + TECHSTACK.md"]
Init --> Feature([提出功能需求])
Feature --> Clarity{需求明確?}
Clarity -- 模糊 --> Plan["/ddd.plan<br/>釐清方向"]
Plan --> Spec
Clarity -- 明確 --> Spec["/ddd.spec<br/>撰寫 spec.md"]
Spec --> UserSpec{使用者確認 spec?}
UserSpec -- 修改 --> Spec
UserSpec -- 確認 --> NeedTasks{需要細化 Milestones?}
NeedTasks -- 否 --> Work
NeedTasks -- 是 --> Tasks
Tasks["/ddd.tasks<br/>細化 Milestones / 拆分 Sprint"] --> UserTasks{使用者確認 Milestones?}
UserTasks -- 修改 --> Tasks
UserTasks -- 確認 --> Work
Work["/ddd.work<br/>TDD 循環實作"] --> Review
Review["/ddd.xreview<br/>Cross review(多模型獨立審查)"] --> Fix{需要修正?}
Fix -- 是 --> Work
Fix -- 否 --> Next{還有下一個功能?}
Next -- 是 --> Feature
Next -- 否 --> Done([完成])
```
## 角色分工
```mermaid
flowchart LR
User([使用者]) <--> Coord
subgraph Main["Main Agent(Coordinator)"]
Coord[規劃 / 派工 / 驗收]
end
Coord --> Dev["ddd-developer<br/>TDD 實作"]
Coord --> Rev["ddd-reviewer<br/>程式碼審查"]
Dev --> Coord
Rev --> Coord
```
| 角色 | 職責 | 不做什麼 |
|------|------|----------|
| **Coordinator**(main agent) | 需求分析、撰寫 spec、必要時細化 Milestones、派工、驗收 | 不寫 production code、不 debug、不做 review;`/ddd.fixbug` 的例外條件見該 skill |
| **ddd-developer** | 以 TDD 循環實作功能程式碼與測試 | 不做架構決策、不跳過測試 |
| **ddd-reviewer** | 獨立審查程式碼變更,產出 review 報告 | 不修改程式碼 |
## 文件結構
每個需求對應一個文件包,作為 SSOT(Single Source of Truth):
```
docs/
├── PRD.md # 產品需求文件(專案層級,只建一次)
├── TECHSTACK.md # 技術棧 + 參考文件連結(專案層級,只建一次)
└── <編號>-<名稱>/ # Sprint 文件包(每個功能一個)
├── plan.md # (optional) 初步筆記
├── research.md # (optional) 技術調研
├── spec.md # 規格書:User Story、驗收條件、ADR、輕量 Milestones
└── works.md # 成果與決策紀錄
```
專案初始化時先建立 `PRD.md`(產品目標、使用者、範圍)和 `TECHSTACK.md`(語言、框架、部署環境),後續每個功能的 spec 都以此為基礎。
## Skills
主流程 skills(按順序使用,指令名稱與文件名皆為 alphabetical order — by design):
| Slash Command | 用途 | 何時觸發 |
|---------------|------|----------|
| `/ddd.plan` | 需求模糊時釐清方向 | 「我有個想法…」 |
| `/ddd.spec` | 撰寫正式規格書 spec.md,含輕量 Milestones | 需求明確,準備定義規格 |
| `/ddd.tasks` | 細化 Milestones 或拆分 Sprint | spec 確認後,且需要細化或拆分 Sprint |
| `/ddd.work` | 以 TDD 循環實作(支援平行派工) | spec 確認後 |
| `/ddd.xreview` | 多模型 cross review | 實作完成,準備提交前 |
輔助 skills:
| Slash Command | 用途 |
|---------------|------|
| `/ddd.fixbug` | Bug 快速修復;適用條件與例外限制見該 skill |
| `/ddd.agent-browser` | E2E 除錯——用瀏覽器自動化系統性地除錯前端問題 |
## 核心原則
- **SSOT**:每個需求一個文件包,文件就是唯一真相來源
- **No Code Without Docs**:spec 獲得確認前,嚴禁寫程式碼
- **No Code Without Tests**:修改 production code 前,必須先有測試
- **Sync on Finish**:完成任務前,先更新任務來源和 works.md
- **明確的決策點**:需要使用者決策時,必須暫停等待確認
## 專案結構
```
ddd-workflow/
├── skills/ # Agent Skills 定義(slash commands)
│ └── ddd.<name>/
│ ├── SKILL.md # YAML frontmatter + 指令內容
│ └── references/ # (optional) 參考資料
├── agents/ # Claude-compatible canonical agents
├── bin/ # public CLI entrypoints
├── chunks/ # bin runtime chunks
├── deploy/ # bin deploy runtime
├── scripts/ # package-level runtime scripts
├── config/ # user-editable config templates
├── policies/ # CLI policy files
├── references/
│ └── AGENTS.md # 共用指令檔(coding style、工具偏好等)
└── package.json
```
## License
MIT