prd-workflow-cli 1.3.0 → 1.4.0

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.
@@ -179,54 +179,51 @@ description: A2UI 可视化指南 - 架构图与界面原型
179
179
  📁 位置:02_迭代记录/第01轮迭代/C1_UI原型/"
180
180
  ```
181
181
 
182
- ### HTML 预览文件要求
182
+ ### 🚀 生成独立预览文件 (HTML)
183
183
 
184
- 1. 包含完整的 CSS 样式
185
- 2. 包含完整的渲染引擎 JS 代码
186
- 3. 内嵌 JSON 数据(不依赖外部文件)
187
- 4. 顶部显示需求编号、界面名称、确认时间
188
- 5. 可以脱离服务器,双击直接打开
184
+ PM 确认原型后,AI 必须生成一个**独立 HTML 文件**,该文件可脱离环境直接打开,方便分享给相关方。
189
185
 
190
- ---
186
+ **生成步骤**:
187
+ 1. 读取下方的 **[HTML 独立文件模板]** 代码
188
+ 2. 替换以下占位符:
189
+ - `{{TITLE}}` -> 需求编号+名称(如 "#REQ-001 用户登录")
190
+ - `{{REQ_ID}}` -> 需求编号
191
+ - `{{NAME}}` -> 界面名称
192
+ - `{{DATE}}` -> 当前日期 (YYYY-MM-DD)
193
+ - `{{JSON_DATA}}` -> 完整的 A2UI JSON 数据(注意:不要加引号,直接作为 JS 对象插入)
194
+ 3. **关键:必须保存两份文件**:
195
+ - 📄 **原始数据**:保存为 `.json` (如 `REQ-001-登录页.json`) -> **用于后续溯源和修改**
196
+ - 👁️ **预览页面**:保存为 `.html` (如 `REQ-001-登录页.html`) -> **用于交付和查看**
197
+ - 路径统一为:`02_迭代记录/第XX轮迭代/C1_UI原型/`
191
198
 
192
- ## 📝 第三部分:通用规范
199
+ **[HTML 独立文件模板]**:
193
200
 
194
- ### AI 触发流程
201
+ 请读取文件:`prd-cli/templates/a2ui-standalone.html` 获取完整模板代码(包含 HTML/CSS/React/AntD 逻辑)。
195
202
 
196
- ```
197
- 1. PM 描述结构/界面
198
-
199
- 2. AI 识别关键词("系统模块"、"页面"、"表单"等)
200
-
201
- 3. AI 主动提议:"让我生成一个可视化的图..."
202
-
203
- 4. AI 生成 JSON 并写入 `.a2ui/current.json`
204
-
205
- 5. AI 提示:👉 请刷新浏览器 (http://localhost:3333) 查看
206
-
207
- 6. PM 反馈 → AI 迭代修改 → PM 确认 → AI 正式保存
208
- ```
209
-
210
- ### 在 Markdown 中嵌入预览
203
+ ⚠️ **注意**:AI 在生成文件时,必须先读取上述模板文件的内容,然后执行替换操作。不要自己编造 HTML 结构。
211
204
 
212
- ```markdown
213
- ## 系统架构图
205
+ ### 👀 历史溯源与多文件预览
214
206
 
215
- > 查看 [系统架构图](./B1_架构图/架构图-系统架构.html)
207
+ **方法 A:命令行指定文件**
208
+ ```bash
209
+ prd ui ./path/to/specific.json
210
+ ```
216
211
 
217
- <!-- 或使用 iframe(部分编辑器支持)-->
218
- <iframe src="./B1_架构图/架构图-系统架构.html" width="100%" height="400"></iframe>
212
+ **方法 B:浏览器 URL 参数(推荐)**
213
+ 启动服务后,直接在浏览器地址栏添加 `?file=` 参数:
214
+ ```
215
+ http://localhost:3333/?file=02_迭代记录/第01轮迭代/C1_UI原型/REQ-001.json
219
216
  ```
220
217
 
221
- ### index.md 索引文件格式
218
+ > 💡 **提示**:你可以在 Markdown 文档中直接复制文件的相对路径,粘贴到 `file=` 后面。
222
219
 
223
- ```markdown
224
- # UI 原型索引
220
+ ### 📂 多原型文件管理指南
225
221
 
226
- | 编号 | 名称 | 👁️ 预览 | 📄 数据 | 确认时间 |
227
- |------|------|--------|--------|---------|
228
- | REQ-001 | 登录页 | [.html](./REQ-001-登录页.html) | [.json](./REQ-001-登录页.json) | 2025-12-28 |
229
- ```
222
+ 一个项目中通常会有多个需求点,建议按以下方式管理:
223
+
224
+ 1. **命名规范**:`REQ-{编号}-{名称}.html` (如 `REQ-003-用户反馈.html`)
225
+ 2. **索引文件**:务必更新 `index.md`,提供所有原型的入口列表
226
+ 3. **版本控制**:如果需求变更,直接覆盖旧文件,或另存为 `_v2.html`
230
227
 
231
228
  ---
232
229
 
@@ -4,6 +4,51 @@ description: B1 需求规划草案填写工作流
4
4
 
5
5
  # B1 需求规划草案填写工作流
6
6
 
7
+ ---
8
+
9
+ ## 🚨 本阶段必须遵守的规则
10
+
11
+ > ⚠️ AI 在执行任务前必须逐条确认以下规则。输出时需包含自检清单。
12
+
13
+ | ID | 规则 | 严重程度 | 自检 |
14
+ |----|------|----------|------|
15
+ | G001 | 所有回复必须使用简体中文 | 🔴 严重 | ☐ |
16
+ | G002 | 禁止未经对话就填充文档,必须通过提问引导 PM 填写 | 🔴 严重 | ☐ |
17
+ | G003 | 禁止替 PM 做决策(优先级/范围/目标由 PM 决定) | 🔴 严重 | ☐ |
18
+ | G004 | 禁止'快速完成'跳过流程,每个阶段都要充分对话和审视 | 🔴 严重 | ☐ |
19
+ | D005 | 文档状态变更后必须同步更新 .prd-config.json | 🟠 高 | ☐ |
20
+ | S004 | 新需求正确流程:暂存 A2 → 新迭代 → B1 处理 | 🟠 高 | ☐ |
21
+ | V001 | PM 描述系统结构时,必须生成 A2UI 架构图 | 🟠 高 | ☐ |
22
+ | I001 | 确认一个需求,立即写入文件(铁律) | 🔴 严重 | ☐ |
23
+ | I002 | 禁止聊完全部需求后一次性写入 | 🔴 严重 | ☐ |
24
+ | I003 | 完成章节/确认 3 个需求项/10 轮对话后必须保存 | 🟠 高 | ☐ |
25
+ | I004 | 切换讨论主题前必须保存当前内容 | 🟠 高 | ☐ |
26
+ | C003 | 禁止'只记录 PM 说的,不追问遗漏的' | 🟠 高 | ☐ |
27
+ | W001 | 开始工作前,必须查看 .prd-config.json 了解项目状态 | 🟠 高 | ☐ |
28
+ | W002 | 开始工作前,必须确认哪些文档已冻结 | 🟠 高 | ☐ |
29
+
30
+ **自检清单模板**(AI 输出时必须包含):
31
+ ```
32
+ ## ✅ 规则自检 (B1)
33
+ - [ ] G001: 所有回复必须使用简体中文...
34
+ - [ ] G002: 禁止未经对话就填充文档,必须通过提问引导 PM 填写...
35
+ - [ ] G003: 禁止替 PM 做决策(优先级/范围/目标由 PM 决定)...
36
+ - [ ] G004: 禁止'快速完成'跳过流程,每个阶段都要充分对话和审视...
37
+ - [ ] D005: 文档状态变更后必须同步更新 .prd-config.json...
38
+ - [ ] S004: 新需求正确流程:暂存 A2 → 新迭代 → B1 处理...
39
+ - [ ] V001: PM 描述系统结构时,必须生成 A2UI 架构图...
40
+ - [ ] I001: 确认一个需求,立即写入文件(铁律)...
41
+ - [ ] I002: 禁止聊完全部需求后一次性写入...
42
+ - [ ] I003: 完成章节/确认 3 个需求项/10 轮对话后必须保存...
43
+ - [ ] I004: 切换讨论主题前必须保存当前内容...
44
+ - [ ] C003: 禁止'只记录 PM 说的,不追问遗漏的'...
45
+ - [ ] W001: 开始工作前,必须查看 .prd-config.json 了解...
46
+ - [ ] W002: 开始工作前,必须确认哪些文档已冻结...
47
+ ```
48
+
49
+ ---
50
+
51
+
7
52
  **核心原则**:AI 是战略思维导师,PM 是决策者。AI 通过结构化提问引导 PM 思考,而不是被动记录。
8
53
 
9
54
  ---
@@ -4,6 +4,59 @@ description: B2 规划拆解与范围界定填写工作流
4
4
 
5
5
  # B2 规划拆解与范围界定填写工作流
6
6
 
7
+ ---
8
+
9
+ ## 🚨 本阶段必须遵守的规则
10
+
11
+ > ⚠️ AI 在执行任务前必须逐条确认以下规则。输出时需包含自检清单。
12
+
13
+ | ID | 规则 | 严重程度 | 自检 |
14
+ |----|------|----------|------|
15
+ | G001 | 所有回复必须使用简体中文 | 🔴 严重 | ☐ |
16
+ | G002 | 禁止未经对话就填充文档,必须通过提问引导 PM 填写 | 🔴 严重 | ☐ |
17
+ | G003 | 禁止替 PM 做决策(优先级/范围/目标由 PM 决定) | 🔴 严重 | ☐ |
18
+ | G004 | 禁止'快速完成'跳过流程,每个阶段都要充分对话和审视 | 🔴 严重 | ☐ |
19
+ | D005 | 文档状态变更后必须同步更新 .prd-config.json | 🟠 高 | ☐ |
20
+ | S004 | 新需求正确流程:暂存 A2 → 新迭代 → B1 处理 | 🟠 高 | ☐ |
21
+ | V001 | PM 描述系统结构时,必须生成 A2UI 架构图 | 🟠 高 | ☐ |
22
+ | I001 | 确认一个需求,立即写入文件(铁律) | 🔴 严重 | ☐ |
23
+ | I002 | 禁止聊完全部需求后一次性写入 | 🔴 严重 | ☐ |
24
+ | I003 | 完成章节/确认 3 个需求项/10 轮对话后必须保存 | 🟠 高 | ☐ |
25
+ | I004 | 切换讨论主题前必须保存当前内容 | 🟠 高 | ☐ |
26
+ | U001 | B2 讨论需求时,必须从用户角度提出至少 3 个质疑 | 🟠 高 | ☐ |
27
+ | U003 | 禁止直接记录 PM 说的内容而不质疑 | 🟠 高 | ☐ |
28
+ | C001 | PM 说'需求完成'时,必须从 5 维度检查功能闭环 | 🔴 严重 | ☐ |
29
+ | C002 | 5 维度具体内容:用户/技术/管理/产品逻辑/体验 | 🟠 高 | ☐ |
30
+ | C003 | 禁止'只记录 PM 说的,不追问遗漏的' | 🟠 高 | ☐ |
31
+ | W001 | 开始工作前,必须查看 .prd-config.json 了解项目状态 | 🟠 高 | ☐ |
32
+ | W002 | 开始工作前,必须确认哪些文档已冻结 | 🟠 高 | ☐ |
33
+
34
+ **自检清单模板**(AI 输出时必须包含):
35
+ ```
36
+ ## ✅ 规则自检 (B2)
37
+ - [ ] G001: 所有回复必须使用简体中文...
38
+ - [ ] G002: 禁止未经对话就填充文档,必须通过提问引导 PM 填写...
39
+ - [ ] G003: 禁止替 PM 做决策(优先级/范围/目标由 PM 决定)...
40
+ - [ ] G004: 禁止'快速完成'跳过流程,每个阶段都要充分对话和审视...
41
+ - [ ] D005: 文档状态变更后必须同步更新 .prd-config.json...
42
+ - [ ] S004: 新需求正确流程:暂存 A2 → 新迭代 → B1 处理...
43
+ - [ ] V001: PM 描述系统结构时,必须生成 A2UI 架构图...
44
+ - [ ] I001: 确认一个需求,立即写入文件(铁律)...
45
+ - [ ] I002: 禁止聊完全部需求后一次性写入...
46
+ - [ ] I003: 完成章节/确认 3 个需求项/10 轮对话后必须保存...
47
+ - [ ] I004: 切换讨论主题前必须保存当前内容...
48
+ - [ ] U001: B2 讨论需求时,必须从用户角度提出至少 3 个质疑...
49
+ - [ ] U003: 禁止直接记录 PM 说的内容而不质疑...
50
+ - [ ] C001: PM 说'需求完成'时,必须从 5 维度检查功能闭环...
51
+ - [ ] C002: 5 维度具体内容:用户/技术/管理/产品逻辑/体验...
52
+ - [ ] C003: 禁止'只记录 PM 说的,不追问遗漏的'...
53
+ - [ ] W001: 开始工作前,必须查看 .prd-config.json 了解...
54
+ - [ ] W002: 开始工作前,必须确认哪些文档已冻结...
55
+ ```
56
+
57
+ ---
58
+
59
+
7
60
  **核心原则**:用 MECE 原则完整拆解需求,PM 决定优先级和范围。
8
61
 
9
62
  ---
@@ -4,6 +4,69 @@ description: C1 版本需求清单填写工作流
4
4
 
5
5
  # C1 版本需求清单填写工作流
6
6
 
7
+ ---
8
+
9
+ ## 🚨 本阶段必须遵守的规则
10
+
11
+ > ⚠️ AI 在执行任务前必须逐条确认以下规则。输出时需包含自检清单。
12
+
13
+ | ID | 规则 | 严重程度 | 自检 |
14
+ |----|------|----------|------|
15
+ | G001 | 所有回复必须使用简体中文 | 🔴 严重 | ☐ |
16
+ | G002 | 禁止未经对话就填充文档,必须通过提问引导 PM 填写 | 🔴 严重 | ☐ |
17
+ | G003 | 禁止替 PM 做决策(优先级/范围/目标由 PM 决定) | 🔴 严重 | ☐ |
18
+ | G004 | 禁止'快速完成'跳过流程,每个阶段都要充分对话和审视 | 🔴 严重 | ☐ |
19
+ | D005 | 文档状态变更后必须同步更新 .prd-config.json | 🟠 高 | ☐ |
20
+ | S001 | 禁止在 C1 阶段加入新需求,新需求只能暂存到 A2 | 🔴 严重 | ☐ |
21
+ | S003 | C1 需求必须在 B3 范围内,禁止超出 | 🟠 高 | ☐ |
22
+ | S004 | 新需求正确流程:暂存 A2 → 新迭代 → B1 处理 | 🟠 高 | ☐ |
23
+ | V002 | PM 描述界面/表单时,必须生成 A2UI 界面原型 | 🟠 高 | ☐ |
24
+ | V004 | PM 确认原型后,必须保存 .json + .html 两个文件 | 🔴 严重 | ☐ |
25
+ | V005 | 原型命名规范:REQ-XXX-名称.json/html | 🟠 高 | ☐ |
26
+ | V006 | 保存原型后必须更新 index.md 索引 | 🟠 高 | ☐ |
27
+ | I001 | 确认一个需求,立即写入文件(铁律) | 🔴 严重 | ☐ |
28
+ | I002 | 禁止聊完全部需求后一次性写入 | 🔴 严重 | ☐ |
29
+ | I003 | 完成章节/确认 3 个需求项/10 轮对话后必须保存 | 🟠 高 | ☐ |
30
+ | I004 | 切换讨论主题前必须保存当前内容 | 🟠 高 | ☐ |
31
+ | U002 | C1 记录需求前,必须审计是否站在用户角度 | 🟠 高 | ☐ |
32
+ | U003 | 禁止直接记录 PM 说的内容而不质疑 | 🟠 高 | ☐ |
33
+ | C001 | PM 说'需求完成'时,必须从 5 维度检查功能闭环 | 🔴 严重 | ☐ |
34
+ | C002 | 5 维度具体内容:用户/技术/管理/产品逻辑/体验 | 🟠 高 | ☐ |
35
+ | C003 | 禁止'只记录 PM 说的,不追问遗漏的' | 🟠 高 | ☐ |
36
+ | W001 | 开始工作前,必须查看 .prd-config.json 了解项目状态 | 🟠 高 | ☐ |
37
+ | W002 | 开始工作前,必须确认哪些文档已冻结 | 🟠 高 | ☐ |
38
+
39
+ **自检清单模板**(AI 输出时必须包含):
40
+ ```
41
+ ## ✅ 规则自检 (C1)
42
+ - [ ] G001: 所有回复必须使用简体中文...
43
+ - [ ] G002: 禁止未经对话就填充文档,必须通过提问引导 PM 填写...
44
+ - [ ] G003: 禁止替 PM 做决策(优先级/范围/目标由 PM 决定)...
45
+ - [ ] G004: 禁止'快速完成'跳过流程,每个阶段都要充分对话和审视...
46
+ - [ ] D005: 文档状态变更后必须同步更新 .prd-config.json...
47
+ - [ ] S001: 禁止在 C1 阶段加入新需求,新需求只能暂存到 A2...
48
+ - [ ] S003: C1 需求必须在 B3 范围内,禁止超出...
49
+ - [ ] S004: 新需求正确流程:暂存 A2 → 新迭代 → B1 处理...
50
+ - [ ] V002: PM 描述界面/表单时,必须生成 A2UI 界面原型...
51
+ - [ ] V004: PM 确认原型后,必须保存 .json + .html 两个...
52
+ - [ ] V005: 原型命名规范:REQ-XXX-名称.json/html...
53
+ - [ ] V006: 保存原型后必须更新 index.md 索引...
54
+ - [ ] I001: 确认一个需求,立即写入文件(铁律)...
55
+ - [ ] I002: 禁止聊完全部需求后一次性写入...
56
+ - [ ] I003: 完成章节/确认 3 个需求项/10 轮对话后必须保存...
57
+ - [ ] I004: 切换讨论主题前必须保存当前内容...
58
+ - [ ] U002: C1 记录需求前,必须审计是否站在用户角度...
59
+ - [ ] U003: 禁止直接记录 PM 说的内容而不质疑...
60
+ - [ ] C001: PM 说'需求完成'时,必须从 5 维度检查功能闭环...
61
+ - [ ] C002: 5 维度具体内容:用户/技术/管理/产品逻辑/体验...
62
+ - [ ] C003: 禁止'只记录 PM 说的,不追问遗漏的'...
63
+ - [ ] W001: 开始工作前,必须查看 .prd-config.json 了解...
64
+ - [ ] W002: 开始工作前,必须确认哪些文档已冻结...
65
+ ```
66
+
67
+ ---
68
+
69
+
7
70
  **核心原则**:忠实于 B3,不新增范围 + 完整记录所有细节。C1 是 AODW 的输入源!
8
71
 
9
72
  ---
@@ -4,6 +4,51 @@ description: P0 项目基本信息填写指引
4
4
 
5
5
  # P0_项目基本信息填写工作流
6
6
 
7
+ ---
8
+
9
+ ## 🚨 本阶段必须遵守的规则
10
+
11
+ > ⚠️ AI 在执行任务前必须逐条确认以下规则。输出时需包含自检清单。
12
+
13
+ | ID | 规则 | 严重程度 | 自检 |
14
+ |----|------|----------|------|
15
+ | G001 | 所有回复必须使用简体中文 | 🔴 严重 | ☐ |
16
+ | G002 | 禁止未经对话就填充文档,必须通过提问引导 PM 填写 | 🔴 严重 | ☐ |
17
+ | G003 | 禁止替 PM 做决策(优先级/范围/目标由 PM 决定) | 🔴 严重 | ☐ |
18
+ | G004 | 禁止'快速完成'跳过流程,每个阶段都要充分对话和审视 | 🔴 严重 | ☐ |
19
+ | D005 | 文档状态变更后必须同步更新 .prd-config.json | 🟠 高 | ☐ |
20
+ | S004 | 新需求正确流程:暂存 A2 → 新迭代 → B1 处理 | 🟠 高 | ☐ |
21
+ | V001 | PM 描述系统结构时,必须生成 A2UI 架构图 | 🟠 高 | ☐ |
22
+ | I001 | 确认一个需求,立即写入文件(铁律) | 🔴 严重 | ☐ |
23
+ | I002 | 禁止聊完全部需求后一次性写入 | 🔴 严重 | ☐ |
24
+ | I003 | 完成章节/确认 3 个需求项/10 轮对话后必须保存 | 🟠 高 | ☐ |
25
+ | I004 | 切换讨论主题前必须保存当前内容 | 🟠 高 | ☐ |
26
+ | C003 | 禁止'只记录 PM 说的,不追问遗漏的' | 🟠 高 | ☐ |
27
+ | W001 | 开始工作前,必须查看 .prd-config.json 了解项目状态 | 🟠 高 | ☐ |
28
+ | W002 | 开始工作前,必须确认哪些文档已冻结 | 🟠 高 | ☐ |
29
+
30
+ **自检清单模板**(AI 输出时必须包含):
31
+ ```
32
+ ## ✅ 规则自检 (P0)
33
+ - [ ] G001: 所有回复必须使用简体中文...
34
+ - [ ] G002: 禁止未经对话就填充文档,必须通过提问引导 PM 填写...
35
+ - [ ] G003: 禁止替 PM 做决策(优先级/范围/目标由 PM 决定)...
36
+ - [ ] G004: 禁止'快速完成'跳过流程,每个阶段都要充分对话和审视...
37
+ - [ ] D005: 文档状态变更后必须同步更新 .prd-config.json...
38
+ - [ ] S004: 新需求正确流程:暂存 A2 → 新迭代 → B1 处理...
39
+ - [ ] V001: PM 描述系统结构时,必须生成 A2UI 架构图...
40
+ - [ ] I001: 确认一个需求,立即写入文件(铁律)...
41
+ - [ ] I002: 禁止聊完全部需求后一次性写入...
42
+ - [ ] I003: 完成章节/确认 3 个需求项/10 轮对话后必须保存...
43
+ - [ ] I004: 切换讨论主题前必须保存当前内容...
44
+ - [ ] C003: 禁止'只记录 PM 说的,不追问遗漏的'...
45
+ - [ ] W001: 开始工作前,必须查看 .prd-config.json 了解...
46
+ - [ ] W002: 开始工作前,必须确认哪些文档已冻结...
47
+ ```
48
+
49
+ ---
50
+
51
+
7
52
  ## 📌 P0 文档的定位
8
53
 
9
54
  P0_项目基本信息.md 是整个 PRD 体系的**起点文档**,在创建其他任何文档之前必须先完善。
@@ -1,5 +1,50 @@
1
1
  # R1 规划审视工作流
2
2
 
3
+ ---
4
+
5
+ ## 🚨 本阶段必须遵守的规则
6
+
7
+ > ⚠️ AI 在执行任务前必须逐条确认以下规则。输出时需包含自检清单。
8
+
9
+ | ID | 规则 | 严重程度 | 自检 |
10
+ |----|------|----------|------|
11
+ | G001 | 所有回复必须使用简体中文 | 🔴 严重 | ☐ |
12
+ | G002 | 禁止未经对话就填充文档,必须通过提问引导 PM 填写 | 🔴 严重 | ☐ |
13
+ | G003 | 禁止替 PM 做决策(优先级/范围/目标由 PM 决定) | 🔴 严重 | ☐ |
14
+ | G004 | 禁止'快速完成'跳过流程,每个阶段都要充分对话和审视 | 🔴 严重 | ☐ |
15
+ | D005 | 文档状态变更后必须同步更新 .prd-config.json | 🟠 高 | ☐ |
16
+ | F004 | R1 禁止直接输出'通过',必须有 5 维度分析 + 评估矩阵 | 🔴 严重 | ☐ |
17
+ | S004 | 新需求正确流程:暂存 A2 → 新迭代 → B1 处理 | 🟠 高 | ☐ |
18
+ | I001 | 确认一个需求,立即写入文件(铁律) | 🔴 严重 | ☐ |
19
+ | I002 | 禁止聊完全部需求后一次性写入 | 🔴 严重 | ☐ |
20
+ | I003 | 完成章节/确认 3 个需求项/10 轮对话后必须保存 | 🟠 高 | ☐ |
21
+ | I004 | 切换讨论主题前必须保存当前内容 | 🟠 高 | ☐ |
22
+ | C003 | 禁止'只记录 PM 说的,不追问遗漏的' | 🟠 高 | ☐ |
23
+ | W001 | 开始工作前,必须查看 .prd-config.json 了解项目状态 | 🟠 高 | ☐ |
24
+ | W002 | 开始工作前,必须确认哪些文档已冻结 | 🟠 高 | ☐ |
25
+
26
+ **自检清单模板**(AI 输出时必须包含):
27
+ ```
28
+ ## ✅ 规则自检 (R1)
29
+ - [ ] G001: 所有回复必须使用简体中文...
30
+ - [ ] G002: 禁止未经对话就填充文档,必须通过提问引导 PM 填写...
31
+ - [ ] G003: 禁止替 PM 做决策(优先级/范围/目标由 PM 决定)...
32
+ - [ ] G004: 禁止'快速完成'跳过流程,每个阶段都要充分对话和审视...
33
+ - [ ] D005: 文档状态变更后必须同步更新 .prd-config.json...
34
+ - [ ] F004: R1 禁止直接输出'通过',必须有 5 维度分析 + 评估矩...
35
+ - [ ] S004: 新需求正确流程:暂存 A2 → 新迭代 → B1 处理...
36
+ - [ ] I001: 确认一个需求,立即写入文件(铁律)...
37
+ - [ ] I002: 禁止聊完全部需求后一次性写入...
38
+ - [ ] I003: 完成章节/确认 3 个需求项/10 轮对话后必须保存...
39
+ - [ ] I004: 切换讨论主题前必须保存当前内容...
40
+ - [ ] C003: 禁止'只记录 PM 说的,不追问遗漏的'...
41
+ - [ ] W001: 开始工作前,必须查看 .prd-config.json 了解...
42
+ - [ ] W002: 开始工作前,必须确认哪些文档已冻结...
43
+ ```
44
+
45
+ ---
46
+
47
+
3
48
  **重要说明**:本工作流是关于 **R1 规划审视**(在 B1/B2 之后),不是 **R1 启动条件检查**(在 B1/B2 之前)。
4
49
 
5
50
  - **R1 启动条件检查**:在 `prd iteration new` 时自动创建,用于确认是否允许进入规划阶段(B1/B2 之前)
@@ -1,5 +1,48 @@
1
1
  # R2 版本审视工作流
2
2
 
3
+ ---
4
+
5
+ ## 🚨 本阶段必须遵守的规则
6
+
7
+ > ⚠️ AI 在执行任务前必须逐条确认以下规则。输出时需包含自检清单。
8
+
9
+ | ID | 规则 | 严重程度 | 自检 |
10
+ |----|------|----------|------|
11
+ | G001 | 所有回复必须使用简体中文 | 🔴 严重 | ☐ |
12
+ | G002 | 禁止未经对话就填充文档,必须通过提问引导 PM 填写 | 🔴 严重 | ☐ |
13
+ | G003 | 禁止替 PM 做决策(优先级/范围/目标由 PM 决定) | 🔴 严重 | ☐ |
14
+ | G004 | 禁止'快速完成'跳过流程,每个阶段都要充分对话和审视 | 🔴 严重 | ☐ |
15
+ | D005 | 文档状态变更后必须同步更新 .prd-config.json | 🟠 高 | ☐ |
16
+ | S004 | 新需求正确流程:暂存 A2 → 新迭代 → B1 处理 | 🟠 高 | ☐ |
17
+ | I001 | 确认一个需求,立即写入文件(铁律) | 🔴 严重 | ☐ |
18
+ | I002 | 禁止聊完全部需求后一次性写入 | 🔴 严重 | ☐ |
19
+ | I003 | 完成章节/确认 3 个需求项/10 轮对话后必须保存 | 🟠 高 | ☐ |
20
+ | I004 | 切换讨论主题前必须保存当前内容 | 🟠 高 | ☐ |
21
+ | C003 | 禁止'只记录 PM 说的,不追问遗漏的' | 🟠 高 | ☐ |
22
+ | W001 | 开始工作前,必须查看 .prd-config.json 了解项目状态 | 🟠 高 | ☐ |
23
+ | W002 | 开始工作前,必须确认哪些文档已冻结 | 🟠 高 | ☐ |
24
+
25
+ **自检清单模板**(AI 输出时必须包含):
26
+ ```
27
+ ## ✅ 规则自检 (R2)
28
+ - [ ] G001: 所有回复必须使用简体中文...
29
+ - [ ] G002: 禁止未经对话就填充文档,必须通过提问引导 PM 填写...
30
+ - [ ] G003: 禁止替 PM 做决策(优先级/范围/目标由 PM 决定)...
31
+ - [ ] G004: 禁止'快速完成'跳过流程,每个阶段都要充分对话和审视...
32
+ - [ ] D005: 文档状态变更后必须同步更新 .prd-config.json...
33
+ - [ ] S004: 新需求正确流程:暂存 A2 → 新迭代 → B1 处理...
34
+ - [ ] I001: 确认一个需求,立即写入文件(铁律)...
35
+ - [ ] I002: 禁止聊完全部需求后一次性写入...
36
+ - [ ] I003: 完成章节/确认 3 个需求项/10 轮对话后必须保存...
37
+ - [ ] I004: 切换讨论主题前必须保存当前内容...
38
+ - [ ] C003: 禁止'只记录 PM 说的,不追问遗漏的'...
39
+ - [ ] W001: 开始工作前,必须查看 .prd-config.json 了解...
40
+ - [ ] W002: 开始工作前,必须确认哪些文档已冻结...
41
+ ```
42
+
43
+ ---
44
+
45
+
3
46
  本工作流用于执行 R2 版本审视,判断版本需求是否忠实于规划。
4
47
 
5
48
  ---
@@ -2,6 +2,20 @@
2
2
 
3
3
  你是 Google Deepmind 的 Antigravity AI,正在协助 PM 进行产品需求管理。
4
4
 
5
+ > 📖 **规则索引**:完整规则定义见 `rules/index.json`(37 条规则,按 rule_id 标识)
6
+ >
7
+ > 🔍 **规则校验**:运行 `prd check` 验证项目是否符合规则
8
+ >
9
+ > ✅ **自检要求**:AI 在关键操作后必须输出规则自检清单
10
+
11
+ ---
12
+
13
+ ## 📋 规则系统概述
14
+
15
+ 本项目使用结构化规则系统。规则分为 9 类:G(全局)、D(文档)、F(流程)、S(范围)、V(可视化)、I(保存)、U(用户)、C(完整性)、W(启动)。
16
+
17
+ **每个 workflow 文件开头都有该阶段的规则子集表,AI 必须阅读并遵守。**
18
+
5
19
  ---
6
20
 
7
21
  ## 🚨 绝对红线
package/.cursorrules CHANGED
@@ -1,5 +1,31 @@
1
1
  # PRD 工作流 - AI 行为规则
2
2
 
3
+ > 📖 **规则索引**:完整规则定义见 `rules/index.json`(37 条规则,按 rule_id 标识)
4
+ >
5
+ > 🔍 **规则校验**:运行 `prd check` 验证项目是否符合规则
6
+ >
7
+ > ✅ **自检要求**:AI 在关键操作后必须输出规则自检清单
8
+
9
+ ---
10
+
11
+ ## 📋 规则系统概述
12
+
13
+ 本项目使用结构化规则系统管理 AI 行为。规则分为 9 类:
14
+
15
+ | 分类 | 说明 | 校验方式 |
16
+ |------|------|----------|
17
+ | **G - 全局红线** | 基本行为准则 | AI 自检 |
18
+ | **D - 文档状态** | 冻结保护 | `prd check` 程序校验 |
19
+ | **F - 流程顺序** | 阶段前置检查 | `prd check` 程序校验 |
20
+ | **S - 需求范围** | 范围控制 | `prd check` 程序校验 |
21
+ | **V - A2UI可视化** | 文件/命名/Schema | `prd check` 程序校验 |
22
+ | **I - 分段保存** | 即时写入 | AI 自检 |
23
+ | **U - 用户角度** | 用户视角审计 | AI 自检 |
24
+ | **C - 完整性检查** | 5 维度闭环 | AI 自检 |
25
+ | **W - 工作启动** | 开始前检查 | 混合 |
26
+
27
+ **每个 workflow 文件开头都有该阶段的规则子集表,AI 必须阅读并遵守。**
28
+
3
29
  ---
4
30
 
5
31
  ## 🚨 绝对红线(违反任何一条都是严重错误)
@@ -399,7 +399,8 @@
399
399
 
400
400
  async function checkUpdate() {
401
401
  try {
402
- const res = await fetch('/ui.json');
402
+ // 获取数据
403
+ const res = await fetch('/ui.json' + window.location.search);
403
404
  if (res.ok) {
404
405
  const data = await res.json();
405
406
  const dataStr = JSON.stringify(data);
@@ -412,6 +413,21 @@
412
413
 
413
414
  document.getElementById('status-text').textContent = '已连接';
414
415
  document.querySelector('.status-dot').style.background = '#52c41a';
416
+
417
+ // 如果有 file 参数,显示当前文件
418
+ const params = new URLSearchParams(window.location.search);
419
+ if (params.get('file')) {
420
+ document.title = `预览: ${params.get('file')} - PRD A2UI`;
421
+ // 可以在页面上也显示一下
422
+ const statusBar = document.querySelector('.status-bar');
423
+ if (!document.getElementById('status-file-info')) {
424
+ const fileInfo = document.createElement('span');
425
+ fileInfo.id = 'status-file-info';
426
+ fileInfo.style.marginLeft = '10px';
427
+ fileInfo.textContent = `| 文件: ${params.get('file')}`;
428
+ statusBar.appendChild(fileInfo);
429
+ }
430
+ }
415
431
  }
416
432
  } catch (e) {
417
433
  document.getElementById('status-text').textContent = '连接失败';
package/bin/prd-cli.js CHANGED
@@ -102,15 +102,36 @@ program
102
102
 
103
103
  // A2UI 预览服务
104
104
  program
105
- .command('ui')
106
- .description('启动 A2UI 界面预览服务')
105
+ .command('ui [file]')
106
+ .description('启动 A2UI 界面预览服务 [可指定 .json 文件]')
107
107
  .option('-p, --port <number>', '指定端口号', '3333')
108
- .action((options) => {
108
+ .action((file, options) => {
109
109
  const A2UIServer = require('../commands/a2ui-server');
110
- const server = new A2UIServer(options.port);
110
+ const server = new A2UIServer(options.port, file);
111
111
  server.start();
112
112
  });
113
113
 
114
+ // 规则校验命令
115
+ program
116
+ .command('check')
117
+ .description('检查当前项目是否符合 PRD 规则')
118
+ .option('--json', '输出 JSON 格式(供 AI 读取)')
119
+ .option('--category <cat>', '只运行指定分类的规则 (G/D/F/S/V/I/U/C/W)')
120
+ .option('--rule <id>', '只运行指定规则 (如 D001)')
121
+ .option('--no-log', '不保存日志到 .prd-logs/')
122
+ .action((options) => {
123
+ require('../commands/check')(options);
124
+ });
125
+
126
+ // 规则统计命令
127
+ program
128
+ .command('stats')
129
+ .description('显示规则校验统计报告(基于历史日志)')
130
+ .option('--json', '输出 JSON 格式')
131
+ .action((options) => {
132
+ require('../commands/stats')(options);
133
+ });
134
+
114
135
  // 帮助信息增强
115
136
  program.on('--help', () => {
116
137
  console.log('');
@@ -5,8 +5,9 @@ const chalk = require('chalk');
5
5
  const { exec } = require('child_process');
6
6
 
7
7
  class A2UIServer {
8
- constructor(port = 3333) {
8
+ constructor(port = 3333, targetFile = null) {
9
9
  this.port = port;
10
+ this.targetFile = targetFile;
10
11
  this.viewerPath = path.join(__dirname, '../a2ui-viewer');
11
12
  this.projectPath = process.cwd();
12
13
  }
@@ -18,11 +19,32 @@ class A2UIServer {
18
19
  res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');
19
20
 
20
21
  // 路由处理
21
- if (req.url === '/') {
22
+ const parsedUrl = new URL(req.url, `http://localhost:${this.port}`);
23
+ const pathname = parsedUrl.pathname;
24
+
25
+ if (pathname === '/') {
22
26
  this.serveFile(res, path.join(this.viewerPath, 'index.html'), 'text/html');
23
- } else if (req.url === '/ui.json') {
24
- // 读取项目根目录下的 a2ui-data.json
25
- this.serveFile(res, path.join(this.projectPath, '.a2ui/current.json'), 'application/json');
27
+ } else if (pathname === '/ui.json') {
28
+ // Priority: 1. URL Query Param (?file=...) 2. CLI Argument 3. Default
29
+ const queryFile = parsedUrl.searchParams.get('file');
30
+ let jsonPath = path.join(this.projectPath, '.a2ui/current.json');
31
+
32
+ if (queryFile) {
33
+ // Prevent directory traversal attacks (basic check)
34
+ // Allow relative paths from project root
35
+ jsonPath = path.resolve(this.projectPath, queryFile);
36
+ if (!jsonPath.startsWith(this.projectPath)) {
37
+ res.writeHead(403);
38
+ res.end('Access denied: File outside project directory');
39
+ return;
40
+ }
41
+ } else if (this.targetFile) {
42
+ jsonPath = path.isAbsolute(this.targetFile)
43
+ ? this.targetFile
44
+ : path.join(this.projectPath, this.targetFile);
45
+ }
46
+
47
+ this.serveFile(res, jsonPath, 'application/json');
26
48
  } else {
27
49
  res.writeHead(404);
28
50
  res.end('Not found');