id3-cli 0.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.ja-JP.md +769 -0
- package/README.ko-KR.md +769 -0
- package/README.md +769 -0
- package/README.tr-TR.md +769 -0
- package/README.zh-CN.md +769 -0
- package/dist/bin/cli.d.ts +2 -0
- package/dist/bin/cli.js +40 -0
- package/dist/bin/cli.js.map +1 -0
- package/dist/scripts/build-hooks.d.ts +1 -0
- package/dist/scripts/build-hooks.js +58 -0
- package/dist/scripts/build-hooks.js.map +1 -0
- package/dist/src/hooks/auto-audit.d.ts +4 -0
- package/dist/src/hooks/auto-audit.js +47 -0
- package/dist/src/hooks/auto-audit.js.map +1 -0
- package/dist/src/hooks/claude-pretool-entry.d.ts +1 -0
- package/dist/src/hooks/claude-pretool-entry.js +36 -0
- package/dist/src/hooks/claude-pretool-entry.js.map +1 -0
- package/dist/src/hooks/claude-stop-entry.d.ts +1 -0
- package/dist/src/hooks/claude-stop-entry.js +7 -0
- package/dist/src/hooks/claude-stop-entry.js.map +1 -0
- package/dist/src/hooks/post-commit-entry.d.ts +1 -0
- package/dist/src/hooks/post-commit-entry.js +7 -0
- package/dist/src/hooks/post-commit-entry.js.map +1 -0
- package/dist/src/hooks/pre-commit-entry.d.ts +1 -0
- package/dist/src/hooks/pre-commit-entry.js +16 -0
- package/dist/src/hooks/pre-commit-entry.js.map +1 -0
- package/dist/src/hooks/rule-check.d.ts +8 -0
- package/dist/src/hooks/rule-check.js +101 -0
- package/dist/src/hooks/rule-check.js.map +1 -0
- package/dist/src/hooks/schema-drift.d.ts +17 -0
- package/dist/src/hooks/schema-drift.js +151 -0
- package/dist/src/hooks/schema-drift.js.map +1 -0
- package/dist/src/hooks/shared.d.ts +43 -0
- package/dist/src/hooks/shared.js +98 -0
- package/dist/src/hooks/shared.js.map +1 -0
- package/dist/src/init.d.ts +20 -0
- package/dist/src/init.js +193 -0
- package/dist/src/init.js.map +1 -0
- package/dist/src/preview/mockup-generator.d.ts +56 -0
- package/dist/src/preview/mockup-generator.js +402 -0
- package/dist/src/preview/mockup-generator.js.map +1 -0
- package/dist/src/preview/renderer.d.ts +30 -0
- package/dist/src/preview/renderer.js +145 -0
- package/dist/src/preview/renderer.js.map +1 -0
- package/dist/src/preview/server.d.ts +9 -0
- package/dist/src/preview/server.js +55 -0
- package/dist/src/preview/server.js.map +1 -0
- package/dist/src/preview/ui-auditor.d.ts +27 -0
- package/dist/src/preview/ui-auditor.js +141 -0
- package/dist/src/preview/ui-auditor.js.map +1 -0
- package/dist/src/preview/ui-gate.d.ts +66 -0
- package/dist/src/preview/ui-gate.js +210 -0
- package/dist/src/preview/ui-gate.js.map +1 -0
- package/dist/src/utils/ascii.d.ts +7 -0
- package/dist/src/utils/ascii.js +41 -0
- package/dist/src/utils/ascii.js.map +1 -0
- package/dist/src/utils/fs.d.ts +6 -0
- package/dist/src/utils/fs.js +39 -0
- package/dist/src/utils/fs.js.map +1 -0
- package/dist/templates/hooks/iddd-auto-audit.js +121 -0
- package/dist/templates/hooks/iddd-schema-drift.js +279 -0
- package/dist/templates/hooks/post-commit +121 -0
- package/dist/templates/hooks/pre-commit +348 -0
- package/package.json +37 -0
- package/templates/.agents/skills/.gitkeep +0 -0
- package/templates/.claude/hooks/.gitkeep +0 -0
- package/templates/.claude/hooks/hook-config.json +34 -0
- package/templates/.claude/skills/.gitkeep +0 -0
- package/templates/.codex/.gitkeep +0 -0
- package/templates/.codex/hooks.json +40 -0
- package/templates/.iddd/commit-count +1 -0
- package/templates/.iddd/preview/.gitkeep +0 -0
- package/templates/AGENTS.md +204 -0
- package/templates/CLAUDE.md +215 -0
- package/templates/README.md +476 -0
- package/templates/docs/.gitkeep +0 -0
- package/templates/docs/business-rules.md +14 -0
- package/templates/docs/domain-glossary.md +8 -0
- package/templates/docs/info-debt.md +17 -0
- package/templates/docs/model-changelog.md +12 -0
- package/templates/hooks/.gitkeep +0 -0
- package/templates/hooks/iddd-auto-audit.js +121 -0
- package/templates/hooks/iddd-schema-drift.js +279 -0
- package/templates/hooks/post-commit +121 -0
- package/templates/hooks/pre-commit +348 -0
- package/templates/skills/id3-design-information/SKILL.md +170 -0
- package/templates/skills/id3-design-information/references/phase2-procedure.md +241 -0
- package/templates/skills/id3-design-ui/.gitkeep +0 -0
- package/templates/skills/id3-design-ui/SKILL.md +200 -0
- package/templates/skills/id3-design-ui/references/.gitkeep +0 -0
- package/templates/skills/id3-design-ui/references/step1-structure-derivation.md +177 -0
- package/templates/skills/id3-design-ui/references/step2-visual-contract.md +257 -0
- package/templates/skills/id3-design-ui/references/step3-gate-and-mockup.md +177 -0
- package/templates/skills/id3-design-ui/references/step4-implementation.md +244 -0
- package/templates/skills/id3-identify-entities/SKILL.md +239 -0
- package/templates/skills/id3-identify-entities/references/.gitkeep +0 -0
- package/templates/skills/id3-identify-entities/references/phase0-brownfield.md +377 -0
- package/templates/skills/id3-identify-entities/references/phase1-greenfield.md +319 -0
- package/templates/skills/id3-info-audit/.gitkeep +0 -0
- package/templates/skills/id3-info-audit/SKILL.md +191 -0
- package/templates/skills/id3-preview/.gitkeep +0 -0
- package/templates/skills/id3-preview/SKILL.md +168 -0
- package/templates/skills/id3-spawn-team/.gitkeep +0 -0
- package/templates/skills/id3-spawn-team/SKILL.md +213 -0
- package/templates/specs/.gitkeep +0 -0
- package/templates/specs/data-model.md +26 -0
- package/templates/specs/entity-catalog.md +22 -0
- package/templates/specs/ui-design-contract.md +54 -0
- package/templates/specs/ui-inventory.md +24 -0
- package/templates/specs/ui-structure.md +32 -0
- package/templates/src/.gitkeep +0 -0
- package/templates/steering/.gitkeep +0 -0
- package/templates/steering/data-conventions.md +42 -0
- package/templates/steering/product.md +38 -0
package/README.zh-CN.md
ADDED
|
@@ -0,0 +1,769 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
|
|
3
|
+
[English](README.md) · [한국어](README.ko-KR.md) · **简体中文** · [日本語](README.ja-JP.md) · [Türkçe](README.tr-TR.md)
|
|
4
|
+
|
|
5
|
+
</div>
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
╔════════════════════════════════════════════════════════════════════════════════════════╗
|
|
9
|
+
║ ║
|
|
10
|
+
║ ██╗██████╗ ██████╗ ██████╗ ║
|
|
11
|
+
║ ██║██╔══██╗██╔══██╗██╔══██╗ Information Design-Driven Development ║
|
|
12
|
+
║ ██║██║ ██║██║ ██║██║ ██║ ║
|
|
13
|
+
║ ██║██║ ██║██║ ██║██║ ██║ "What information exists?" ║
|
|
14
|
+
║ ██║██████╔╝██████╔╝██████╔╝ -- always the first question. ║
|
|
15
|
+
║ ╚═╝╚═════╝ ╚═════╝ ╚═════╝ v0.9.1 ║
|
|
16
|
+
║ ║
|
|
17
|
+
║ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ║
|
|
18
|
+
║ ║
|
|
19
|
+
║ ┌─────────────────────────┐ ┌─────────────────────────┐ ║
|
|
20
|
+
║ │ │ │ │ ║
|
|
21
|
+
║ │ INFORMATION │ │ AGENT │ ║
|
|
22
|
+
║ │ MODEL │──────────>│ HARNESS │ ║
|
|
23
|
+
║ │ │ │ │ ║
|
|
24
|
+
║ │ - Entity Catalog │ │ - Hook Enforcement │ ║
|
|
25
|
+
║ │ - Data Model │ │ - Drift Detection │ ║
|
|
26
|
+
║ │ - Business Rules │ │ - Auto Audit │ ║
|
|
27
|
+
║ │ - Domain Glossary │ │ - Version Tracking │ ║
|
|
28
|
+
║ │ │ │ │ ║
|
|
29
|
+
║ └─────────────────────────┘ └────────────┬────────────┘ ║
|
|
30
|
+
║ │ ║
|
|
31
|
+
║ v ║
|
|
32
|
+
║ ┌─────────────────────────┐ ║
|
|
33
|
+
║ │ │ ║
|
|
34
|
+
║ │ AI AGENT │ ║
|
|
35
|
+
║ │ (Constrained) │ ║
|
|
36
|
+
║ │ │ ║
|
|
37
|
+
║ │ Agent = Model │ ║
|
|
38
|
+
║ │ + Harness │ ║
|
|
39
|
+
║ │ │ ║
|
|
40
|
+
║ └─────────────────────────┘ ║
|
|
41
|
+
║ ║
|
|
42
|
+
╚════════════════════════════════════════════════════════════════════════════════════════╝
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
**从"存在哪些信息?"开始——而不是"我们应该构建哪些功能?"**
|
|
46
|
+
|
|
47
|
+
IDDD 是一种开发方法论和 AI 代理技能包,将**信息模型**置于所有软件开发的核心。通过在做出任何技术选择*之前*构建严谨的 Entity 目录、数据模型、业务规则和领域术语表,IDDD 确保在逻辑模型阶段就已经定义了 80% 的应用行为。信息模型随后成为生成中心,需求、API 契约、界面设计和验证规则都从中系统性地派生出来。
|
|
48
|
+
|
|
49
|
+
本包将 IDDD 安装为一组 AI 代理技能、Harness Hook 和文档模板,使你的编码代理在整个开发生命周期中贯彻信息优先的原则。
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## 什么是 IDDD?
|
|
54
|
+
|
|
55
|
+
大多数软件项目从*"我们应该构建哪些功能?"*开始,直接跳入实现阶段。IDDD 反转了这一过程。它从**"这个领域中存在哪些信息?"**出发,将信息模型不是当作规格说明的一个章节,而是当作**唯一事实来源**,所有其他开发产物都从中派生。
|
|
56
|
+
|
|
57
|
+
### 核心原则
|
|
58
|
+
|
|
59
|
+
1. **信息模型是生成中心。** 所有代码、API、UI 和测试都派生自 Entity 目录和数据模型。如果代码与规格说明不一致,以规格说明为准。
|
|
60
|
+
2. **Entity 优先识别。** 在编写任何代码之前,必须识别并记录 Entity。新功能的起点是"涉及哪些 Entity?"而不是"我们需要哪些端点?"
|
|
61
|
+
3. **数据模型可追溯性。** 代码库中的每一列、约束和 Relationship 都必须追溯到 Entity 目录中的条目。未跟踪的 schema 元素被视为漂移。
|
|
62
|
+
4. **输出优先设计。** 在设计输入(表单、API)之前,先设计用户*看到*的内容(仪表板、报表、列表)。输出界面驱动信息模型。
|
|
63
|
+
5. **业务规则是显式的。** 每一条验证、约束和派生规则都以 BR-xxx 标识符注册。仅存在于代码中的规则被视为技术债务。
|
|
64
|
+
|
|
65
|
+
### 三阶段数据建模映射到软件开发
|
|
66
|
+
|
|
67
|
+
IDDD 将经典的三阶段数据建模过程直接映射到软件开发阶段:
|
|
68
|
+
|
|
69
|
+
```
|
|
70
|
+
┌───────────────────────────────────────────┐ ┌───────────────────────────────────────────┐
|
|
71
|
+
│ Conceptual Model │ │ Requirements / Scope Definition │
|
|
72
|
+
│ "What information exists?" │────────>│ Entity identification, user stories │
|
|
73
|
+
└───────────────────────────────────────────┘ └───────────────────────────────────────────┘
|
|
74
|
+
│
|
|
75
|
+
v
|
|
76
|
+
┌───────────────────────────────────────────┐ ┌───────────────────────────────────────────┐
|
|
77
|
+
│ Logical Model │ │ API Contracts / Validation / Biz Logic │
|
|
78
|
+
│ "How is it structured?" │────────>│ 80% of behavior defined here │
|
|
79
|
+
└───────────────────────────────────────────┘ └───────────────────────────────────────────┘
|
|
80
|
+
│
|
|
81
|
+
v
|
|
82
|
+
┌───────────────────────────────────────────┐ ┌───────────────────────────────────────────┐
|
|
83
|
+
│ Physical Model │ │ Implementation Decisions │
|
|
84
|
+
│ "How is it stored/executed?" │────────>│ Technology choices, storage, deployment │
|
|
85
|
+
└───────────────────────────────────────────┘ └───────────────────────────────────────────┘
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
信息模型中的每个元素都自动意味着对应的开发产物:
|
|
89
|
+
|
|
90
|
+
| 信息模型元素 | 派生产物 |
|
|
91
|
+
|----------------------------|-----------------------------------------------------|
|
|
92
|
+
| Entity 识别 | 需求范围、用户故事 |
|
|
93
|
+
| Relationship 与 Cardinality | API 端点结构、导航 |
|
|
94
|
+
| Attribute 与数据类型 | 表单字段、验证规则、DTO |
|
|
95
|
+
| 约束 | 输入验证、类型定义 |
|
|
96
|
+
| 派生 Attribute | 业务逻辑、计算规则 |
|
|
97
|
+
| 状态转换 | 工作流、状态管理 |
|
|
98
|
+
| 聚合/关联规则 | 事务边界、一致性规则 |
|
|
99
|
+
|
|
100
|
+
**当逻辑模型完成时,80% 的应用行为就已经定义——在做出任何技术选择之前。**
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## 支持的平台
|
|
105
|
+
|
|
106
|
+
| 平台 | 代理系统 | 多代理策略 |
|
|
107
|
+
|--------------|-----------------------|----------------------------------------------|
|
|
108
|
+
| Claude Code | Claude Agent Teams | 对等消息传递、独立工作树 |
|
|
109
|
+
| OpenAI Codex | Codex Agents SDK | 通过 MCP Server 实现的 Handoff 模式 |
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## 前提条件
|
|
114
|
+
|
|
115
|
+
| 要求 | 详情 |
|
|
116
|
+
|----------------|------------------------------------------------------|
|
|
117
|
+
| Node.js | **18+**(包含 npm 或兼容的包管理器) |
|
|
118
|
+
| Claude Code | **Claude Max** 会员 + 启用 Agent Teams |
|
|
119
|
+
| OpenAI Codex | **ChatGPT Plus** 或更高(Pro/Business/Enterprise) |
|
|
120
|
+
|
|
121
|
+
你需要 Node.js 来运行 `npx` 安装程序。你使用哪个平台就需要订阅对应的 AI 平台。
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## 安装
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
npx id3@latest
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
无需子命令——`id3` 直接运行初始化流程。它将:
|
|
132
|
+
|
|
133
|
+
1. 将所有 IDDD 模板(规格、文档、引导、技能、Hook)复制到你的项目中。
|
|
134
|
+
2. 创建平台特定的符号链接(`.claude/skills/` 或 `.agents/skills/`)指向规范的 `skills/` 原始文件。
|
|
135
|
+
3. 在你的平台配置文件中注册 Harness Hook。
|
|
136
|
+
4. 初始化 `.iddd/` 状态目录(提交计数器、预览输出)。
|
|
137
|
+
|
|
138
|
+
### 选项
|
|
139
|
+
|
|
140
|
+
| 选项 | 描述 |
|
|
141
|
+
|-----------------|----------------------------------------------------------|
|
|
142
|
+
| `[target-dir]` | 目标目录(默认为当前目录 `.`) |
|
|
143
|
+
| `--no-symlink` | 复制技能文件而非创建符号链接(适用于 Windows) |
|
|
144
|
+
| `--platform` | 强制指定平台:`claude`、`codex` 或 `all` |
|
|
145
|
+
|
|
146
|
+
### 覆盖检测
|
|
147
|
+
|
|
148
|
+
如果目标目录中已存在 `CLAUDE.md`,`id3` 将提示:
|
|
149
|
+
|
|
150
|
+
```
|
|
151
|
+
"IDDD appears to be already installed. Overwrite? (y/N)"
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
### 安装后输出
|
|
155
|
+
|
|
156
|
+
```
|
|
157
|
+
┌── IDDD installed ─────────────────────────────────────────┐
|
|
158
|
+
│ │
|
|
159
|
+
│ Next steps: │
|
|
160
|
+
│ │
|
|
161
|
+
│ 1. Fill in steering/product.md │
|
|
162
|
+
│ 2. Run /id3-identify-entities to start │
|
|
163
|
+
│ 3. Customize steering/data-conventions.md │
|
|
164
|
+
│ │
|
|
165
|
+
│ Skills: │
|
|
166
|
+
│ ├── id3-identify-entities (Phase 0/1) │
|
|
167
|
+
│ ├── id3-design-information (Phase 2) │
|
|
168
|
+
│ ├── id3-design-ui (Phase 2.5) │
|
|
169
|
+
│ ├── id3-spawn-team (Phase 3-5) │
|
|
170
|
+
│ ├── id3-info-audit (Audit) │
|
|
171
|
+
│ └── id3-preview (Visual Preview) │
|
|
172
|
+
│ │
|
|
173
|
+
└───────────────────────────────────────────────────────────┘
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
## 安装后的目录结构
|
|
179
|
+
|
|
180
|
+
运行 `npx id3@latest` 后,你的项目将获得以下结构:
|
|
181
|
+
|
|
182
|
+
```
|
|
183
|
+
your-project/
|
|
184
|
+
│
|
|
185
|
+
│ ===== Shared (all platforms) =====
|
|
186
|
+
│
|
|
187
|
+
├── skills/ Skill 原始文件(唯一事实来源)
|
|
188
|
+
│ ├── id3-identify-entities/ Phase 0/1: Entity 识别
|
|
189
|
+
│ │ ├── SKILL.md
|
|
190
|
+
│ │ └── references/
|
|
191
|
+
│ │ ├── phase0-brownfield.md 从现有代码逆向提取
|
|
192
|
+
│ │ └── phase1-greenfield.md 新项目的结构化访谈
|
|
193
|
+
│ ├── id3-design-information/ Phase 2: 信息结构化
|
|
194
|
+
│ │ ├── SKILL.md
|
|
195
|
+
│ │ └── references/
|
|
196
|
+
│ │ └── phase2-procedure.md 精化流程
|
|
197
|
+
│ ├── id3-design-ui/ Phase 2.5: UI 设计与实现
|
|
198
|
+
│ │ ├── SKILL.md
|
|
199
|
+
│ │ └── references/
|
|
200
|
+
│ │ ├── step1-structure-derivation.md
|
|
201
|
+
│ │ ├── step2-visual-contract.md
|
|
202
|
+
│ │ ├── step3-gate-and-mockup.md
|
|
203
|
+
│ │ └── step4-implementation.md
|
|
204
|
+
│ ├── id3-spawn-team/ 分派多代理实现
|
|
205
|
+
│ ├── id3-info-audit/ 熵审计(漂移检测)
|
|
206
|
+
│ └── id3-preview/ 信息模型可视化预览
|
|
207
|
+
│
|
|
208
|
+
├── specs/ 信息模型产物
|
|
209
|
+
│ ├── entity-catalog.md Entity 清单 + 汇总表
|
|
210
|
+
│ ├── data-model.md Mermaid ERD + 设计决策
|
|
211
|
+
│ ├── ui-inventory.md 界面清单 + 映射矩阵
|
|
212
|
+
│ ├── ui-structure.md 界面清单 + 导航结构 (Phase 2.5)
|
|
213
|
+
│ └── ui-design-contract.md 设计令牌 + 组件映射 (Phase 2.5)
|
|
214
|
+
│
|
|
215
|
+
├── docs/ 辅助文档
|
|
216
|
+
│ ├── business-rules.md BR-xxx 索引的业务规则
|
|
217
|
+
│ ├── domain-glossary.md 术语 / 英文 / 定义 / 备注
|
|
218
|
+
│ ├── info-debt.md 不一致追踪器
|
|
219
|
+
│ └── model-changelog.md Keep a Changelog 格式
|
|
220
|
+
│
|
|
221
|
+
├── steering/ 项目级约定
|
|
222
|
+
│ ├── product.md 产品愿景与范围(用户编写)
|
|
223
|
+
│ └── data-conventions.md PK 策略、命名、时间戳等
|
|
224
|
+
│
|
|
225
|
+
├── hooks/ Harness Hook 脚本(构建后的 JS 包)
|
|
226
|
+
│ ├── iddd-schema-drift.js schema-drift 检测
|
|
227
|
+
│ ├── iddd-rule-check.js 业务规则追踪
|
|
228
|
+
│ ├── iddd-auto-audit.js 自动熵审计
|
|
229
|
+
│ ├── pre-commit Git Hook(schema-drift + rule-check)
|
|
230
|
+
│ └── post-commit Git Hook(auto-audit)
|
|
231
|
+
│
|
|
232
|
+
├── .iddd/ IDDD 内部状态
|
|
233
|
+
│ ├── commit-count auto-audit 间隔计数器
|
|
234
|
+
│ └── preview/ 生成的预览 HTML
|
|
235
|
+
│
|
|
236
|
+
│ ===== Platform: Claude Code =====
|
|
237
|
+
│
|
|
238
|
+
├── CLAUDE.md Lead Agent 上下文文档
|
|
239
|
+
├── .claude/
|
|
240
|
+
│ ├── settings.local.json Hook 注册(由 init 注入)
|
|
241
|
+
│ ├── skills/ -> skills/ 指向 skills/ 原始文件的符号链接
|
|
242
|
+
│ └── hooks/
|
|
243
|
+
│ └── hook-config.json IDDD Hook 设置
|
|
244
|
+
│
|
|
245
|
+
│ ===== Platform: OpenAI Codex =====
|
|
246
|
+
│
|
|
247
|
+
├── AGENTS.md 跨平台代理指令
|
|
248
|
+
├── .agents/
|
|
249
|
+
│ └── skills/ -> skills/ 指向 skills/ 原始文件的符号链接
|
|
250
|
+
└── .codex/
|
|
251
|
+
└── hooks.json Codex Hook 配置
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
### Skill 文件共享策略
|
|
255
|
+
|
|
256
|
+
Skill 内容维护在单一规范位置(`skills/`)。平台特定路径(`.claude/skills/`、`.agents/skills/`)是由 `init` CLI 动态创建的符号链接。这确保了跨所有平台的单一维护点。在 Windows 上,使用 `--no-symlink` 创建副本替代。
|
|
257
|
+
|
|
258
|
+
---
|
|
259
|
+
|
|
260
|
+
## 工作流
|
|
261
|
+
|
|
262
|
+
```
|
|
263
|
+
╔══════════════════════════════════════════════════════════════════════════╗
|
|
264
|
+
║ IDDD WORKFLOW OVERVIEW ║
|
|
265
|
+
╚══════════════════════════════════════════════════════════════════════════╝
|
|
266
|
+
|
|
267
|
+
┌──────────────┐ ┌──────────────┐
|
|
268
|
+
│ │<--- dialog ----->│ │
|
|
269
|
+
│ User │ │ Lead Agent │
|
|
270
|
+
│ │ │ │
|
|
271
|
+
└──────────────┘ └──────┬───────┘
|
|
272
|
+
│
|
|
273
|
+
┌──────────────────┴──────────────────┐
|
|
274
|
+
│ │
|
|
275
|
+
v v
|
|
276
|
+
┌────────────────────┐ ┌────────────────────┐
|
|
277
|
+
│ Existing code? │ │ No existing code? │
|
|
278
|
+
└─────────┬──────────┘ └─────────┬──────────┘
|
|
279
|
+
│ │
|
|
280
|
+
v v
|
|
281
|
+
┌──────────────────────────────────┐ ┌──────────────────────────────────┐
|
|
282
|
+
│ Phase 0: Reverse-Extract │ │ Phase 1: Structured Interview │
|
|
283
|
+
│ │ │ │
|
|
284
|
+
│ - Scan ORM / schema files │ │ "What information does │
|
|
285
|
+
│ - Extract entities │ │ your domain manage?" │
|
|
286
|
+
│ - Extract relationships │ │ - Identify core entities │
|
|
287
|
+
│ - Verification Interview │ │ - Discover relationships │
|
|
288
|
+
└────────────────┬─────────────────┘ └────────────────┬─────────────────┘
|
|
289
|
+
│ │
|
|
290
|
+
v v
|
|
291
|
+
┌─────────────────────────────────────────────────────┐
|
|
292
|
+
│ Entity Catalog Produced │
|
|
293
|
+
└─────────────────────────┬───────────────────────────┘
|
|
294
|
+
│
|
|
295
|
+
v
|
|
296
|
+
┌────────────────────────────────────────────────────────────────────┐
|
|
297
|
+
│ Phase 2: Information Design │
|
|
298
|
+
│ │
|
|
299
|
+
│ - Conceptual --> Logical model │
|
|
300
|
+
│ - Derive business rules (BR-xxx) │
|
|
301
|
+
│ - Register hooks + version headers │
|
|
302
|
+
└─────────────────────────────────┬──────────────────────────────────┘
|
|
303
|
+
│
|
|
304
|
+
v
|
|
305
|
+
┌────────────────────────────────────────────────────────────────────┐
|
|
306
|
+
│ Phase 2.5: UI Design (id3-design-ui) │
|
|
307
|
+
│ │
|
|
308
|
+
│ - Entity --> Screen auto-derivation │
|
|
309
|
+
│ - Visual design contract (tokens, components) │
|
|
310
|
+
│ - 7-Pillar gate + 3-level mockup preview │
|
|
311
|
+
│ - Agent Teams implementation + post-audit │
|
|
312
|
+
└─────────────────────────────────┬──────────────────────────────────┘
|
|
313
|
+
│
|
|
314
|
+
v
|
|
315
|
+
┌─────────────────────────────────────────────────────┐
|
|
316
|
+
│ /id3-spawn-team │
|
|
317
|
+
└─────────────────────────┬───────────────────────────┘
|
|
318
|
+
│
|
|
319
|
+
┌──────────────┴──────────────┐
|
|
320
|
+
│ │
|
|
321
|
+
v v
|
|
322
|
+
┌────────────────────────────────┐ ┌────────────────────────────────┐
|
|
323
|
+
│ Claude Code: Agent Teams │ │ Codex: Agents SDK │
|
|
324
|
+
│ │ │ │
|
|
325
|
+
│ ┌────────┐ ┌──────┐ ┌────┐ │ │ ┌──────────────────────────┐ │
|
|
326
|
+
│ │ spec │ │ impl │ │ qa │ │ │ │ Handoff Pattern │ │
|
|
327
|
+
│ └───┬────┘ └──┬───┘ └─┬──┘ │ │ │ via MCP Server │ │
|
|
328
|
+
│ │ │ │ │ │ └──────────────────────────┘ │
|
|
329
|
+
│ └── messaging ────┘ │ │ │
|
|
330
|
+
│ (peer-to-peer) │ │ spec -> impl -> qa │
|
|
331
|
+
│ │ │ (sequential handoff) │
|
|
332
|
+
└────────────────────────────────┘ └────────────────────────────────┘
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
### Phase 逐步说明
|
|
336
|
+
|
|
337
|
+
**Phase 0/1 -- Entity 识别:**
|
|
338
|
+
打开你的 AI 编码代理,运行 `/id3-identify-entities`。代理会自动检测你是否有现有代码库(brownfield)或从零开始(greenfield),然后运行相应的识别流程。
|
|
339
|
+
|
|
340
|
+
**Phase 2 -- 信息设计:**
|
|
341
|
+
运行 `/id3-design-information`。代理将概念模型精化为逻辑模型,派生业务规则,并设置版本头和 Hook 配置。
|
|
342
|
+
|
|
343
|
+
**Phase 2.5 -- UI 设计:**
|
|
344
|
+
运行 `/id3-design-ui`。代理从 Entity 目录中派生界面结构,使用设计令牌建立视觉设计契约,运行包含交互式 mockup 预览的 7-Pillar 质量门禁,然后生成 Agent Teams 进行并行界面实现并执行事后审计。
|
|
345
|
+
|
|
346
|
+
**Phase 3-5 -- 通过 Agent Teams 实现:**
|
|
347
|
+
运行 `/id3-spawn-team`。代理读取最终确定的信息模型,生成一个由专业代理组成的团队(spec-generator、implementer、qa-reviewer),以并行方式实现系统。
|
|
348
|
+
|
|
349
|
+
---
|
|
350
|
+
|
|
351
|
+
## 技能
|
|
352
|
+
|
|
353
|
+
### id3-identify-entities (Phase 0/1)
|
|
354
|
+
|
|
355
|
+
IDDD 工作流的入口点。此技能**自动分支**到 brownfield 和 greenfield 路径。
|
|
356
|
+
|
|
357
|
+
**触发关键词:** `identify entities`、`information analysis`、`domain analysis`、`new project`、`entity identification`
|
|
358
|
+
|
|
359
|
+
**自动检测逻辑:** 该技能扫描项目根目录中的 ORM/schema 文件(Prisma、Drizzle、Django models、TypeORM entities、SQL migrations、Sequelize configs)。如果找到,进入 Phase 0;否则进入 Phase 1。
|
|
360
|
+
|
|
361
|
+
#### Phase 0: Brownfield -- 逆向提取信息模型
|
|
362
|
+
|
|
363
|
+
对于现有代码库,代理从四个层级系统性地提取隐含的信息模型:
|
|
364
|
+
|
|
365
|
+
| 层级 | 来源 | 检查内容 | 可靠性 |
|
|
366
|
+
|-------|------------------|--------------------------------------------------------|-------------|
|
|
367
|
+
| L1 | DB Schema | 表、列、FK、索引、约束 | 最高 |
|
|
368
|
+
| L2 | ORM / Models | 虚拟字段、派生 Attribute、软删除、状态 | 高 |
|
|
369
|
+
| L3 | API Contracts | 端点、DTO、验证逻辑 | 中等 |
|
|
370
|
+
| L4 | Frontend | 路由、组件、表单字段 | 参考 |
|
|
371
|
+
|
|
372
|
+
L4 调查非常深入:它扫描基于文件的路由(Next.js `app/`、`pages/`)、React Router、Vue Router 等,以构建完整的 UI 清单(`specs/ui-inventory.md`),包含界面-Entity 映射矩阵。
|
|
373
|
+
|
|
374
|
+
发现结果被分类为 **match**(跨层级一致)、**mismatch**(记录在 `docs/info-debt.md` 中)或 **implicit**(隐藏在代码逻辑中,作为显式业务规则呈现)。
|
|
375
|
+
|
|
376
|
+
提取后,通过**验证访谈**与用户确认准确性。
|
|
377
|
+
|
|
378
|
+
**生成的产物:** `specs/entity-catalog.md`、`specs/data-model.md`、`specs/ui-inventory.md`、`docs/business-rules.md`、`docs/info-debt.md`
|
|
379
|
+
|
|
380
|
+
#### Phase 1: Greenfield -- 结构化访谈
|
|
381
|
+
|
|
382
|
+
对于新项目,代理进行结构化访谈以发现领域信息:
|
|
383
|
+
|
|
384
|
+
1. **信息识别** -- "该系统管理哪些核心'事物'(名词)?"
|
|
385
|
+
2. **Relationship 发现** -- "这些事物之间有什么关系?一对多还是多对多?"
|
|
386
|
+
3. **规则发现** -- "需要执行哪些规则?是否存在状态转换?"
|
|
387
|
+
4. **Silverston 通用模式清单** -- 代理将发现的 Entity 与已验证的模式进行交叉比对:Party、Product/Service、Order/Transaction、Classification、Status/Lifecycle、Hierarchy、Contact Mechanism、Document/Content。
|
|
388
|
+
|
|
389
|
+
**生成的产物:** `specs/entity-catalog.md`、`specs/data-model.md`、`docs/business-rules.md`
|
|
390
|
+
|
|
391
|
+
---
|
|
392
|
+
|
|
393
|
+
### id3-design-information (Phase 2)
|
|
394
|
+
|
|
395
|
+
将概念模型精化为**逻辑模型**。业务规则、有效性约束和派生规则从信息模型中自动派生。
|
|
396
|
+
|
|
397
|
+
**触发关键词:** `design information`、`refine model`、`logical model`、`schema design`、`information structuring`
|
|
398
|
+
|
|
399
|
+
**前提条件:** `specs/entity-catalog.md` 必须存在且至少包含 2 个已识别的 Entity。
|
|
400
|
+
|
|
401
|
+
**流程:**
|
|
402
|
+
|
|
403
|
+
1. **Attribute 精化** -- 分配具体数据类型(UUID、TEXT、INTEGER、TIMESTAMP、JSONB 等)、NOT NULL / DEFAULT / UNIQUE 约束和索引需求。
|
|
404
|
+
2. **Relationship 具体化** -- 确定 FK 放置位置、删除/更新规则(CASCADE、SET NULL、RESTRICT),并识别多对多 Relationship 的连接表。
|
|
405
|
+
3. **自动业务规则派生:**
|
|
406
|
+
- NOT NULL 约束 --> "此字段为必填"(BR-xxx)
|
|
407
|
+
- UNIQUE 约束 --> "不允许重复"(BR-xxx)
|
|
408
|
+
- FK + CASCADE --> "删除父项同时删除子项"(BR-xxx)
|
|
409
|
+
- 状态转换 --> "允许的转换路径"(BR-xxx)
|
|
410
|
+
- 派生 Attribute --> "计算规则"(BR-xxx)
|
|
411
|
+
4. **设计决策问题** -- 代理询问用户关于大数据存储策略、软删除范围、多租户、审计追踪需求等。
|
|
412
|
+
5. **产物定稿** -- 更新所有规格文件的版本头和 Hook 配置。
|
|
413
|
+
|
|
414
|
+
**更新的产物:** `specs/entity-catalog.md`、`specs/data-model.md`、`docs/business-rules.md`
|
|
415
|
+
|
|
416
|
+
---
|
|
417
|
+
|
|
418
|
+
### id3-design-ui (Phase 2.5)
|
|
419
|
+
|
|
420
|
+
从信息模型派生 UI 结构和视觉设计,然后使用 Agent Teams 实现界面。
|
|
421
|
+
|
|
422
|
+
**触发关键词:** `design ui`、`ui design`、`screen design`、`phase 2.5`、`ui structure`
|
|
423
|
+
|
|
424
|
+
**前提条件:** Phase 2 完成(`entity-catalog.md` version >= `"1.0"`)。
|
|
425
|
+
|
|
426
|
+
**4 步流水线:**
|
|
427
|
+
|
|
428
|
+
1. **UI 结构派生** -- 使用 9 条派生规则(entity -> list/detail/form/dashboard)自动将 Entity 映射到界面。使用 12 条基于类型的规则将 Attribute 映射到 Widget。应用"输出优先、输入其次"原则。
|
|
429
|
+
2. **视觉设计契约** -- 检测现有前端框架(React、Vue、Svelte 等)和 UI 库。建立 5 个设计令牌领域:spacing、typography、color、copywriting、component registry。
|
|
430
|
+
3. **实现前门禁** -- 运行 7-Pillar 验证(结构完整性、spacing、typography、color、copywriting、component registry、traceability)。使用示例数据生成 3 级 HTML mockup(wireframe、styled、interactive)。
|
|
431
|
+
4. **实现 + 事后审计** -- 生成 Agent Teams 并行实现界面。实现后视觉审计对每个 Pillar 评分 1-4 并得出前 3 项修复建议。
|
|
432
|
+
|
|
433
|
+
**产物:** `specs/ui-structure.md`、`specs/ui-design-contract.md`、`.iddd/preview/mockup-*.html`、`.iddd/preview/ui-audit.html`
|
|
434
|
+
|
|
435
|
+
---
|
|
436
|
+
|
|
437
|
+
### id3-spawn-team (Phase 3-5)
|
|
438
|
+
|
|
439
|
+
生成一个由专业代理组成的团队,基于最终确定的信息模型实现系统。
|
|
440
|
+
|
|
441
|
+
**前提条件:** `specs/entity-catalog.md` 和 `specs/data-model.md` 必须存在且 Phase 2 已完成。
|
|
442
|
+
|
|
443
|
+
#### Claude Code: Agent Teams
|
|
444
|
+
|
|
445
|
+
生成三个团队成员,每个成员拥有独立的上下文窗口和独立的 Git 工作树:
|
|
446
|
+
|
|
447
|
+
| 团队成员 | 角色 |
|
|
448
|
+
|------------------|---------------------------------------------------------------|
|
|
449
|
+
| spec-generator | 将信息模型转换为 requirements.md 和 api-contracts.md |
|
|
450
|
+
| implementer | 根据规格构建代码,每个 Entity 一次原子提交 |
|
|
451
|
+
| qa-reviewer | 根据信息模型验证实现;失败时向 implementer 发送直接消息 |
|
|
452
|
+
|
|
453
|
+
**任务生成规则:**
|
|
454
|
+
- 读取 Entity 目录,为每个 Entity 创建一个任务(模型 + 迁移 + API + 验证 + 测试)。
|
|
455
|
+
- 数据模型中的 FK 依赖关系决定依赖图。
|
|
456
|
+
- 独立的 Entity 并行运行;有依赖的 Entity 等待其父项完成。
|
|
457
|
+
|
|
458
|
+
#### OpenAI Codex: Agents SDK + Handoff 模式
|
|
459
|
+
|
|
460
|
+
在 Codex 上,多代理工作使用 Agents SDK Handoff 模式。Codex 作为 MCP Server 启动(`codex --mcp-server`),项目管理代理读取 Entity 目录,通过 Handoff 将任务分配给相同的三个角色(spec-generator、implementer、qa-reviewer)。
|
|
461
|
+
|
|
462
|
+
---
|
|
463
|
+
|
|
464
|
+
### id3-info-audit
|
|
465
|
+
|
|
466
|
+
根据信息模型审计代码库,以检测漂移和熵增。
|
|
467
|
+
|
|
468
|
+
**触发关键词:** `info audit`、`information audit`、`model audit`、`drift check`
|
|
469
|
+
|
|
470
|
+
**流程:**
|
|
471
|
+
|
|
472
|
+
1. 从 `specs/entity-catalog.md` 读取 Entity 列表。
|
|
473
|
+
2. 扫描代码库以发现:
|
|
474
|
+
- 未实现的 Entity / 未定义的模型
|
|
475
|
+
- `docs/business-rules.md` 中未在代码中反映的业务规则
|
|
476
|
+
- 数据类型/约束不匹配
|
|
477
|
+
3. 根据 `specs/ui-structure.md` 和 `specs/ui-design-contract.md` 检查 UI 一致性:
|
|
478
|
+
- 未实现的界面 / 未定义的界面
|
|
479
|
+
- 表单字段与 Attribute 映射不匹配
|
|
480
|
+
- 缺失的导航路径
|
|
481
|
+
4. 更新版本头(`last_verified`、`audit_status`)。
|
|
482
|
+
5. 检查 Hook 绕过历史(`.iddd/skip-history.log`)。
|
|
483
|
+
6. 输出带有可视化指标的按 Entity 状态报告。
|
|
484
|
+
|
|
485
|
+
**可视化输出:** 审计结果渲染为 `.iddd/preview/audit-{date}.html` 中的交互式 HTML 仪表板。
|
|
486
|
+
|
|
487
|
+
---
|
|
488
|
+
|
|
489
|
+
### id3-preview
|
|
490
|
+
|
|
491
|
+
启动轻量级本地 HTTP 服务器,在浏览器中查看信息模型和审计结果。
|
|
492
|
+
|
|
493
|
+
**触发关键词:** `preview`、`show erd`、`show model`、`visual preview`
|
|
494
|
+
|
|
495
|
+
服务器使用 `listen(0)`(操作系统分配端口)并提供:
|
|
496
|
+
- **ERD 预览** -- 交互式 Mermaid ERD,点击 Entity 可跳转到目录详情
|
|
497
|
+
- **UI 原型** -- 从 `specs/ui-structure.md` 和 `specs/ui-design-contract.md` 派生的线框布局
|
|
498
|
+
- **审计仪表板** -- 按 Entity 的状态卡片,含业务规则覆盖率
|
|
499
|
+
|
|
500
|
+
所有 HTML 文件持久化存储在 `.iddd/preview/` 中,即使没有服务器也可以直接在浏览器中打开。
|
|
501
|
+
|
|
502
|
+
---
|
|
503
|
+
|
|
504
|
+
## Harness Hook 系统
|
|
505
|
+
|
|
506
|
+
IDDD 通过自动化 Hook 来贯彻信息优先的原则。其理念不是"请遵循流程",而是**"如果你不遵循,提交就会被阻止。"**
|
|
507
|
+
|
|
508
|
+
### Hook 概览
|
|
509
|
+
|
|
510
|
+
| Hook | 触发时机 | 动作 | 严重程度 |
|
|
511
|
+
|----------------|------------------|-----------------------------------------------------|------------|
|
|
512
|
+
| schema-drift | pre-commit | 验证 schema 变更是否与 entity-catalog.md 匹配 | **BLOCK**(拒绝提交) |
|
|
513
|
+
| rule-check | pre-commit | 检查新的验证逻辑是否与 business-rules.md 对应 | **WARN**(允许提交,显示消息) |
|
|
514
|
+
| auto-audit | post-commit | 每 N 次提交运行 info-audit | **INFO**(生成报告) |
|
|
515
|
+
|
|
516
|
+
### schema-drift (BLOCK)
|
|
517
|
+
|
|
518
|
+
当你修改与 schema 相关的文件(Prisma、Drizzle、Django models、TypeORM entities、SQL migrations 等)时,Hook 会检查 `specs/entity-catalog.md` 是否已相应更新。如果没有,提交将被**拒绝**。信息模型必须始终在代码*之前*更新。
|
|
519
|
+
|
|
520
|
+
**监控的文件模式**(可配置):
|
|
521
|
+
```
|
|
522
|
+
prisma/schema.prisma, drizzle/**/*.ts, **/migrations/*.sql,
|
|
523
|
+
**/models.py, **/entities/*.ts, **/entities/*.java, schema.sql
|
|
524
|
+
```
|
|
525
|
+
|
|
526
|
+
### rule-check (WARN)
|
|
527
|
+
|
|
528
|
+
当你添加或修改验证逻辑(Zod、Yup、Joi、Pydantic 等)时,Hook 会检查 `docs/business-rules.md` 中是否有对应的 `BR-xxx` 条目。如果缺失,将发出警告。提交会继续,但缺失的规则会被标记。
|
|
529
|
+
|
|
530
|
+
**监控的文件模式**(可配置):
|
|
531
|
+
```
|
|
532
|
+
*.schema.ts, *.validator.*, **/validators/**
|
|
533
|
+
```
|
|
534
|
+
|
|
535
|
+
### auto-audit (INFO)
|
|
536
|
+
|
|
537
|
+
每 N 次提交(默认:10,可配置)后,Harness 自动运行 info-audit,将代码库与信息模型进行比较。提交计数器存储在 `.iddd/commit-count` 中。结果写入 `.iddd/preview/audit-{date}.html`。
|
|
538
|
+
|
|
539
|
+
### Hook 配置
|
|
540
|
+
|
|
541
|
+
所有 Hook 设置位于 `.claude/hooks/hook-config.json`(Claude Code)或 `.codex/hooks.json`(Codex)。
|
|
542
|
+
|
|
543
|
+
```json
|
|
544
|
+
{
|
|
545
|
+
"enabled": true,
|
|
546
|
+
"hooks": {
|
|
547
|
+
"pre-commit": {
|
|
548
|
+
"schema-drift": {
|
|
549
|
+
"enabled": true,
|
|
550
|
+
"severity": "block",
|
|
551
|
+
"monitored_patterns": [
|
|
552
|
+
"prisma/schema.prisma",
|
|
553
|
+
"drizzle/**/*.ts",
|
|
554
|
+
"**/migrations/*.sql",
|
|
555
|
+
"**/models.py",
|
|
556
|
+
"**/entities/*.ts",
|
|
557
|
+
"**/entities/*.java"
|
|
558
|
+
]
|
|
559
|
+
},
|
|
560
|
+
"rule-check": {
|
|
561
|
+
"enabled": true,
|
|
562
|
+
"severity": "warn",
|
|
563
|
+
"validation_patterns": [
|
|
564
|
+
"*.schema.ts",
|
|
565
|
+
"*.validator.*",
|
|
566
|
+
"**/validators/**"
|
|
567
|
+
]
|
|
568
|
+
}
|
|
569
|
+
},
|
|
570
|
+
"post-commit": {
|
|
571
|
+
"auto-audit": {
|
|
572
|
+
"enabled": true,
|
|
573
|
+
"interval_commits": 10
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
}
|
|
577
|
+
}
|
|
578
|
+
```
|
|
579
|
+
|
|
580
|
+
要禁用所有 IDDD Hook,将顶层的 `"enabled"` 设为 `false`。要禁用单个 Hook,将其 `"enabled"` 设为 `false`。要更改 auto-audit 频率,调整 `"interval_commits"`。
|
|
581
|
+
|
|
582
|
+
### Hook 绕过
|
|
583
|
+
|
|
584
|
+
设置 `IDDD_SKIP_HOOKS=1` 可临时跳过所有 Hook。绕过记录会被写入 `.iddd/skip-history.log`,并在审计时进行审查。
|
|
585
|
+
|
|
586
|
+
---
|
|
587
|
+
|
|
588
|
+
## 熵管理
|
|
589
|
+
|
|
590
|
+
随着时间推移,信息模型会与代码产生偏离。IDDD 通过三种机制对抗熵增:
|
|
591
|
+
|
|
592
|
+
### 版本头
|
|
593
|
+
|
|
594
|
+
`specs/entity-catalog.md` 和 `specs/data-model.md` 包含 YAML frontmatter,用于追踪模型状态:
|
|
595
|
+
|
|
596
|
+
```yaml
|
|
597
|
+
---
|
|
598
|
+
version: "1.0"
|
|
599
|
+
last_verified: "2026-04-05"
|
|
600
|
+
phase: "Phase 2 Complete"
|
|
601
|
+
entity_count: 12
|
|
602
|
+
rule_count: 19
|
|
603
|
+
audit_status: "clean"
|
|
604
|
+
---
|
|
605
|
+
```
|
|
606
|
+
|
|
607
|
+
**规则:**
|
|
608
|
+
- `version` 在每个 Phase 完成时递增(Phase 1:`"0.1"`,Phase 2:`"1.0"`,后续:`"1.1"`、`"1.2"`、...)。
|
|
609
|
+
- `last_verified` 在每次审计或验证模型时更新。
|
|
610
|
+
- 如果 `last_verified` **超过 7 天**,代理将提示你在开始新工作之前运行 `/id3-info-audit`。陈旧的模型会导致漂移。
|
|
611
|
+
|
|
612
|
+
### 变更日志
|
|
613
|
+
|
|
614
|
+
所有模型变更都记录在 `docs/model-changelog.md` 中,使用 [Keep a Changelog](https://keepachangelog.com/) 格式:
|
|
615
|
+
|
|
616
|
+
```markdown
|
|
617
|
+
## [1.0] -- 2026-04-05
|
|
618
|
+
### Phase 2 Complete
|
|
619
|
+
- 12 entities finalized in logical model
|
|
620
|
+
- 19 business rules derived
|
|
621
|
+
- Design decisions: D-01 (S3 separation), D-02 (multi-tenant reservation), D-03 (soft delete scope)
|
|
622
|
+
- UI proposals: 6 screens generated
|
|
623
|
+
```
|
|
624
|
+
|
|
625
|
+
### 自动审计
|
|
626
|
+
|
|
627
|
+
`auto-audit` Hook(post-commit)每 N 次提交运行一次完整的信息审计,在漂移积累之前捕获偏差。
|
|
628
|
+
|
|
629
|
+
---
|
|
630
|
+
|
|
631
|
+
## 自定义指南
|
|
632
|
+
|
|
633
|
+
IDDD 设计为可适配你的项目约定。以下是自定义内容及对应文件:
|
|
634
|
+
|
|
635
|
+
| 自定义内容 | 要编辑的文件 |
|
|
636
|
+
|------------------------------------------------|------------------------------------|
|
|
637
|
+
| 产品愿景与范围 | `steering/product.md` |
|
|
638
|
+
| 命名约定、PK 策略、时间戳、软删除策略、ENUM vs 引用表 | `steering/data-conventions.md` |
|
|
639
|
+
| Entity 定义 | `specs/entity-catalog.md` |
|
|
640
|
+
| 数据模型(ERD) | `specs/data-model.md` |
|
|
641
|
+
| 业务规则 | `docs/business-rules.md` |
|
|
642
|
+
| 领域术语表 | `docs/domain-glossary.md` |
|
|
643
|
+
| UI 界面清单 | `specs/ui-inventory.md` |
|
|
644
|
+
| UI 结构(界面派生) | `specs/ui-structure.md` |
|
|
645
|
+
| UI 设计契约(令牌、组件) | `specs/ui-design-contract.md` |
|
|
646
|
+
| Hook 行为(启用/禁用、严重程度) | `.claude/hooks/hook-config.json` |
|
|
647
|
+
| Hook 的监控文件模式 | `.claude/hooks/hook-config.json` |
|
|
648
|
+
| auto-audit 提交间隔 | `.claude/hooks/hook-config.json` |
|
|
649
|
+
| Codex Hook 配置 | `.codex/hooks.json` |
|
|
650
|
+
|
|
651
|
+
**提示:** 所有 `specs/` 和 `docs/` 文件使用 YAML frontmatter 和版本头。IDDD Harness 追踪这些版本以检测熵漂移。修改规格文件时,请务必更新版本头。
|
|
652
|
+
|
|
653
|
+
---
|
|
654
|
+
|
|
655
|
+
## 使用示例
|
|
656
|
+
|
|
657
|
+
### 示例 1:启动新项目(Greenfield)
|
|
658
|
+
|
|
659
|
+
```
|
|
660
|
+
$ mkdir my-saas && cd my-saas && git init
|
|
661
|
+
$ npx id3@latest
|
|
662
|
+
|
|
663
|
+
IDDD installed. Next: fill in steering/product.md
|
|
664
|
+
|
|
665
|
+
$ claude
|
|
666
|
+
> /id3-identify-entities
|
|
667
|
+
|
|
668
|
+
Agent: "What core 'things' does your system manage?"
|
|
669
|
+
You: "Users, Organizations, Subscriptions, Invoices, and Features."
|
|
670
|
+
Agent: "How are Users related to Organizations?"
|
|
671
|
+
You: "Many-to-many through a Membership entity with a role attribute."
|
|
672
|
+
...
|
|
673
|
+
|
|
674
|
+
Entity catalog produced: specs/entity-catalog.md (5 entities, 7 relationships)
|
|
675
|
+
|
|
676
|
+
> /id3-design-information
|
|
677
|
+
|
|
678
|
+
Agent refines attributes, derives 14 business rules.
|
|
679
|
+
specs/entity-catalog.md updated (version: 1.0)
|
|
680
|
+
docs/business-rules.md updated (BR-001 through BR-014)
|
|
681
|
+
|
|
682
|
+
> /id3-design-ui
|
|
683
|
+
|
|
684
|
+
Step 1: Deriving UI structure from 5 entities... 8 screens mapped
|
|
685
|
+
Step 2: Design contract established (React + Tailwind detected)
|
|
686
|
+
Step 3: 7-Pillar gate passed. Mockup preview: http://localhost:52341
|
|
687
|
+
Step 4: Spawning Agent Teams for screen implementation...
|
|
688
|
+
Post-audit: all 7 pillars scored 3+/4
|
|
689
|
+
|
|
690
|
+
specs/ui-structure.md generated
|
|
691
|
+
specs/ui-design-contract.md generated
|
|
692
|
+
|
|
693
|
+
> /id3-spawn-team
|
|
694
|
+
|
|
695
|
+
Spawning Agent Teams:
|
|
696
|
+
- spec-generator: generating requirements.md, api-contracts.md
|
|
697
|
+
- implementer: building User -> Organization -> Membership -> ...
|
|
698
|
+
- qa-reviewer: verifying against information model
|
|
699
|
+
```
|
|
700
|
+
|
|
701
|
+
### 示例 2:应用到��有项目(Brownfield)
|
|
702
|
+
|
|
703
|
+
```
|
|
704
|
+
$ cd existing-django-project
|
|
705
|
+
$ npx id3@latest
|
|
706
|
+
|
|
707
|
+
Detected: Django models (models.py), PostgreSQL migrations
|
|
708
|
+
IDDD installed.
|
|
709
|
+
|
|
710
|
+
$ claude
|
|
711
|
+
> /id3-identify-entities
|
|
712
|
+
|
|
713
|
+
Phase 0 (Brownfield) activated.
|
|
714
|
+
Scanning L1 (DB schema)... 23 tables found
|
|
715
|
+
Scanning L2 (Django models)... 19 models found
|
|
716
|
+
Scanning L3 (API contracts)... DRF serializers analyzed
|
|
717
|
+
Scanning L4 (Frontend)... React routes mapped
|
|
718
|
+
|
|
719
|
+
Discrepancies found:
|
|
720
|
+
- 4 tables have no corresponding Django model (logged in info-debt.md)
|
|
721
|
+
- 3 implicit business rules surfaced from view logic
|
|
722
|
+
|
|
723
|
+
Agent: "Does this information model accurately reflect your codebase?"
|
|
724
|
+
You: "Yes, but the legacy_audit table is deprecated -- remove it."
|
|
725
|
+
|
|
726
|
+
Entity catalog produced: 19 entities, 11 info-debt items
|
|
727
|
+
|
|
728
|
+
> /id3-design-information
|
|
729
|
+
|
|
730
|
+
Refining existing model...
|
|
731
|
+
New business rules derived from Django validators: BR-015 through BR-023
|
|
732
|
+
|
|
733
|
+
> /id3-design-ui
|
|
734
|
+
|
|
735
|
+
Step 1: Deriving UI structure... comparing with existing ui-inventory.md
|
|
736
|
+
Change summary: 2 new screens proposed, 3 existing screens updated
|
|
737
|
+
Step 2-4: Design contract, gate, and implementation...
|
|
738
|
+
```
|
|
739
|
+
|
|
740
|
+
---
|
|
741
|
+
|
|
742
|
+
## 学术渊源
|
|
743
|
+
|
|
744
|
+
IDDD 综合了多个学术传统的思想:
|
|
745
|
+
|
|
746
|
+
- **Peter Chen 的 ER 模型(1976)** -- "现实世界由实体和关系组成。"信息结构先于应用逻辑这一基础性洞见。
|
|
747
|
+
- **Len Silverston 的通用数据模型** -- 可复用的信息模式(Party、Product、Order、Hierarchy),作为验证已发现 Entity 的清单。
|
|
748
|
+
- **Eric Evans 的 DDD(2003)** -- Bounded Context、Ubiquitous Language 和 Aggregate 模式。IDDD 继承了对领域语言和显式边界的强调。
|
|
749
|
+
- **Sophia Prater 的 OOUX(面向对象的用户体验)** -- "先设计对象,再设计交互。"ORCA 框架(Objects、Relationships、CTAs、Attributes)直接启发了 IDDD 的输出优先 UI 派生方法。
|
|
750
|
+
- **Jamie Lord 的"数据优先,代码其次"(2024)** -- "将知识折叠进数据。"将 Unix 表示法则应用于现代软件开发。
|
|
751
|
+
- **Mitchell Hashimoto 的 Harness 工程(2026)** -- `Agent = Model + Harness`。AI 代理需要架构约束、上下文工程和熵管理才能长期保持有效性的洞见。IDDD 的 Hook 系统、版本头和 auto-audit 是 Harness 工程原则的直接应用。
|
|
752
|
+
|
|
753
|
+
**核心洞见:** *当逻辑模型完成时,80% 的应用行为就已经定义——在做出任何技术选择之前。而信息模型本身就是 AI 代理最好的 Harness。*
|
|
754
|
+
|
|
755
|
+
---
|
|
756
|
+
|
|
757
|
+
## 许可证
|
|
758
|
+
|
|
759
|
+
MIT
|
|
760
|
+
|
|
761
|
+
---
|
|
762
|
+
|
|
763
|
+
```
|
|
764
|
+
┌──────────────────────────────────────────────────────────────────┐
|
|
765
|
+
│ │
|
|
766
|
+
│ "What information exists?" -- always the first question. │
|
|
767
|
+
│ │
|
|
768
|
+
└──────────────────────────────────────────────────────────────────┘
|
|
769
|
+
```
|