prd-workflow-cli 1.1.31 → 1.2.6
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/.agent/workflows/prd-b1-planning-draft.md +68 -0
- package/.agent/workflows/prd-b2-planning-breakdown.md +44 -0
- package/.agent/workflows/prd-c1-a2ui-guide.md +245 -0
- package/.agent/workflows/prd-c1-requirement-list.md +131 -815
- package/.agent/workflows/prd-p0-project-info.md +44 -0
- package/.antigravity/rules.md +112 -7
- package/.cursorrules +189 -8
- package/a2ui-viewer/index.html +460 -0
- package/bin/prd-cli.js +11 -0
- package/commands/a2ui-server.js +69 -0
- package/commands/init.js +35 -0
- package/commands/upgrade.js +6 -0
- package/package.json +3 -2
|
@@ -78,6 +78,74 @@ AI: "⚠️ 我注意到 B1 文档中已经有内容了。
|
|
|
78
78
|
|
|
79
79
|
---
|
|
80
80
|
|
|
81
|
+
## 🎨 A2UI 架构图触发规则(B1 阶段)
|
|
82
|
+
|
|
83
|
+
**当 PM 在 B1 讨论中描述系统/模块/功能结构时,AI 必须主动生成架构图。**
|
|
84
|
+
|
|
85
|
+
### 触发信号词
|
|
86
|
+
|
|
87
|
+
| PM 提到的内容 | AI 触发行为 |
|
|
88
|
+
|-------------|-----------|
|
|
89
|
+
| "系统包含几个模块..." | ✅ 主动生成架构图 |
|
|
90
|
+
| "用户流程是这样的..." | ✅ 主动生成流程图 |
|
|
91
|
+
| "主要功能有三块..." | ✅ 主动生成功能结构图 |
|
|
92
|
+
| "分为前端和后端..." | ✅ 主动生成架构图 |
|
|
93
|
+
|
|
94
|
+
### AI 执行流程
|
|
95
|
+
|
|
96
|
+
```
|
|
97
|
+
1. PM 描述系统/模块结构
|
|
98
|
+
↓
|
|
99
|
+
2. AI 识别到架构描述
|
|
100
|
+
↓
|
|
101
|
+
3. AI 主动提议:
|
|
102
|
+
"我注意到您在描述系统结构。
|
|
103
|
+
让我生成一个可视化的架构图帮助理解。
|
|
104
|
+
|
|
105
|
+
稍等,正在生成..."
|
|
106
|
+
↓
|
|
107
|
+
4. AI 生成 Diagram JSON 并写入 `.a2ui/current.json`
|
|
108
|
+
↓
|
|
109
|
+
5. AI 提示:
|
|
110
|
+
"✅ 已生成架构图!
|
|
111
|
+
|
|
112
|
+
👉 请刷新浏览器 (http://localhost:3333) 查看。
|
|
113
|
+
|
|
114
|
+
这个结构是否准确?需要调整吗?"
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### 架构图组件
|
|
118
|
+
|
|
119
|
+
使用 `Diagram`, `Layer`, `DiagramGroup`, `Box`, `Arrow` 组件。
|
|
120
|
+
详见:`prd-c1-a2ui-guide.md`
|
|
121
|
+
|
|
122
|
+
### 架构图保存规则
|
|
123
|
+
|
|
124
|
+
**当 PM 确认架构图后,AI 必须正式保存:**
|
|
125
|
+
|
|
126
|
+
```
|
|
127
|
+
1. PM 确认:"这个架构图可以了"
|
|
128
|
+
↓
|
|
129
|
+
2. AI 正式保存(生成 2 个文件):
|
|
130
|
+
a) 架构图-系统架构.json - JSON 数据
|
|
131
|
+
b) 架构图-系统架构.html - 独立 HTML 预览
|
|
132
|
+
保存位置:02_迭代记录/第XX轮迭代/B1_架构图/
|
|
133
|
+
↓
|
|
134
|
+
3. AI 在 B1 文档中嵌入链接或 iframe:
|
|
135
|
+
```markdown
|
|
136
|
+
## 系统架构图
|
|
137
|
+
|
|
138
|
+
> 查看 [系统架构图](./B1_架构图/架构图-系统架构.html)
|
|
139
|
+
```
|
|
140
|
+
↓
|
|
141
|
+
4. AI 确认:
|
|
142
|
+
"✅ 架构图已正式保存!
|
|
143
|
+
📁 位置:02_迭代记录/第XX轮迭代/B1_架构图/架构图-系统架构.html
|
|
144
|
+
已在 B1 文档中嵌入链接。"
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
81
149
|
## 正确的 B1 填写启动方式
|
|
82
150
|
|
|
83
151
|
### ❌ 错误示例(直接填充)
|
|
@@ -63,6 +63,50 @@ AI: "✅ B2_规划拆解与范围界定.md 已创建。
|
|
|
63
63
|
|
|
64
64
|
---
|
|
65
65
|
|
|
66
|
+
## 🎨 A2UI 架构图触发规则(B2 阶段)
|
|
67
|
+
|
|
68
|
+
**当 PM 在 B2 拆解过程中描述需求结构、模块依赖时,AI 必须主动生成可视化图。**
|
|
69
|
+
|
|
70
|
+
### 触发信号词
|
|
71
|
+
|
|
72
|
+
| PM 提到的内容 | AI 触发行为 |
|
|
73
|
+
|-------------|-----------|
|
|
74
|
+
| "这个需求分为三部分..." | ✅ 主动生成需求结构图 |
|
|
75
|
+
| "A 依赖 B,B 依赖 C..." | ✅ 主动生成依赖关系图 |
|
|
76
|
+
| "首版做这几个,二版做那几个..." | ✅ 主动生成版本范围图 |
|
|
77
|
+
| "P0 有这些,P1 有那些..." | ✅ 主动生成优先级矩阵图 |
|
|
78
|
+
|
|
79
|
+
### AI 执行流程
|
|
80
|
+
|
|
81
|
+
```
|
|
82
|
+
1. PM 描述需求结构/依赖关系
|
|
83
|
+
↓
|
|
84
|
+
2. AI 识别到结构描述
|
|
85
|
+
↓
|
|
86
|
+
3. AI 主动提议:
|
|
87
|
+
"我注意到您在描述需求结构/依赖关系。
|
|
88
|
+
让我生成一个可视化的图帮助理解。"
|
|
89
|
+
↓
|
|
90
|
+
4. AI 生成 Diagram JSON 并写入 `.a2ui/current.json`
|
|
91
|
+
↓
|
|
92
|
+
5. AI 提示刷新浏览器查看
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### 架构图组件
|
|
96
|
+
|
|
97
|
+
使用 `Diagram`, `Layer`, `DiagramGroup`, `Box`, `Arrow` 组件。
|
|
98
|
+
详见:`prd-c1-a2ui-guide.md`
|
|
99
|
+
|
|
100
|
+
### 架构图保存规则
|
|
101
|
+
|
|
102
|
+
**当 PM 确认架构图后,AI 必须正式保存:**
|
|
103
|
+
|
|
104
|
+
- **保存位置**:`02_迭代记录/第XX轮迭代/B2_架构图/`
|
|
105
|
+
- **生成文件**:`.json` + `.html`
|
|
106
|
+
- **嵌入文档**:在 B2 文档中添加链接
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
66
110
|
## B2 的本质:用 MECE 原则完整拆解需求
|
|
67
111
|
|
|
68
112
|
B2 不是"想做什么就写什么",而是**基于 B1 目标,用结构化方法完整拆解需求**。
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: C1 A2UI 界面示意专项指南 (Web Preview 版)
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# C1 A2UI 界面示意专项指南
|
|
6
|
+
|
|
7
|
+
**本文档是 prd-c1-requirement-list.md 的补充,专注于界面示意环节的详细指导。**
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 🚀 新一代 A2UI 工作流 (Web Preview)
|
|
12
|
+
|
|
13
|
+
我们已经升级了 A2UI 能力!现在支持通过 `prd ui` 命令在浏览器中实时预览可交互的界面原型。
|
|
14
|
+
|
|
15
|
+
### 核心机制
|
|
16
|
+
|
|
17
|
+
1. **AI 生成数据**:AI 根据需求生成标准 JSON 数据。
|
|
18
|
+
2. **自动写入**:AI 将数据写入 `.a2ui/current.json` 文件。
|
|
19
|
+
3. **实时预览**:预览服务 (`prd ui`) 应在 C1 开始前启动,之后 PM 只需刷新浏览器即可看到更新。
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## 🛠️ A2UI 标准组件库 (Schema)
|
|
24
|
+
|
|
25
|
+
为了确保 Web 预览器能正确渲染,AI **必须** 严格遵守以下 Schema。
|
|
26
|
+
|
|
27
|
+
### 1. 基础结构
|
|
28
|
+
```json
|
|
29
|
+
{
|
|
30
|
+
"type": "Page",
|
|
31
|
+
"title": "页面标题",
|
|
32
|
+
"children": [ ... ]
|
|
33
|
+
}
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### 2. 布局组件
|
|
37
|
+
- **Page**: 根节点
|
|
38
|
+
- `title`: 页面标题 (string)
|
|
39
|
+
- `children`: 子组件数组
|
|
40
|
+
- **Row**: 水平布局
|
|
41
|
+
- `children`: 子组件数组
|
|
42
|
+
- **Col**: 垂直/列布局
|
|
43
|
+
- `children`: 子组件数组
|
|
44
|
+
- **Panel**: 带边框的面板
|
|
45
|
+
- `title`: 面板标题 (可选)
|
|
46
|
+
- `children`: 子组件数组
|
|
47
|
+
|
|
48
|
+
### 3. 表单与交互组件
|
|
49
|
+
- **Input**: 输入框
|
|
50
|
+
- `label`: 标签 (string)
|
|
51
|
+
- `placeholder`: 占位符 (string)
|
|
52
|
+
- **Button**: 按钮
|
|
53
|
+
- `text`: 按钮文字 (string)
|
|
54
|
+
- **Text**: 纯文本
|
|
55
|
+
- `content`: 文本内容 (string)
|
|
56
|
+
|
|
57
|
+
### 4. 架构图组件 (用于 B1/P0 阶段)
|
|
58
|
+
|
|
59
|
+
**适用于规划阶段生成系统框架图、模块关系图等**
|
|
60
|
+
|
|
61
|
+
- **Diagram**: 架构图容器(紫色渐变背景)
|
|
62
|
+
- `title`: 图表标题 (string)
|
|
63
|
+
- `children`: 子组件数组
|
|
64
|
+
- **Layer**: 层级分区(水平排列子元素)
|
|
65
|
+
- `title`: 层级标题 (string, 可选)
|
|
66
|
+
- `children`: 子组件数组
|
|
67
|
+
- **DiagramGroup**: 虚线分组框
|
|
68
|
+
- `title`: 分组标题 (string)
|
|
69
|
+
- `children`: 子组件数组
|
|
70
|
+
- **Box**: 模块方框
|
|
71
|
+
- `title`: 模块名称 (string)
|
|
72
|
+
- `desc`: 模块描述 (string, 可选)
|
|
73
|
+
- `color`: 左边框颜色 (string, 可选, 如 "#3b82f6")
|
|
74
|
+
- **Arrow**: 连接箭头
|
|
75
|
+
- `direction`: 方向 ("up" | "down" | "left" | "right")
|
|
76
|
+
- `label`: 箭头说明 (string, 可选)
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## 📝 交互流程规范
|
|
81
|
+
|
|
82
|
+
### 第一步:生成并写入预览数据
|
|
83
|
+
|
|
84
|
+
**当 PM 描述完界面需求后,AI 必须执行:**
|
|
85
|
+
|
|
86
|
+
1. **构思 JSON 结构**:在思维链中构建符合 Schema 的 JSON。
|
|
87
|
+
2. **写入文件**:使用 `write_to_file` 工具将 JSON 写入 `.a2ui/current.json`。
|
|
88
|
+
3. **提示预览**:告知 PM 刷新浏览器查看(假设预览服务已启动)。
|
|
89
|
+
|
|
90
|
+
**AI 对话示例:**
|
|
91
|
+
|
|
92
|
+
```
|
|
93
|
+
AI: "明白了,这个用户详情页需要包含基本信息表单和操作按钮。
|
|
94
|
+
|
|
95
|
+
我已生成 A2UI 预览数据。
|
|
96
|
+
|
|
97
|
+
👉 请刷新浏览器 (http://localhost:3333) 查看实时预览。
|
|
98
|
+
|
|
99
|
+
(如果预览服务未启动,请先运行 prd ui)"
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### 第二步:根据反馈迭代
|
|
103
|
+
|
|
104
|
+
**当 PM 提出修改意见(如"把按钮移到左边")时:**
|
|
105
|
+
|
|
106
|
+
1. **修改 JSON**:调整 `.a2ui/current.json` 中的数据结构。
|
|
107
|
+
2. **覆盖写入**:再次使用 `write_to_file` 覆盖原文件。
|
|
108
|
+
3. **提示刷新**:告知 PM 刷新浏览器即可看到变化。
|
|
109
|
+
|
|
110
|
+
### 第三步:正式保存(PM 确认后必须执行!)
|
|
111
|
+
|
|
112
|
+
**当 PM 确认界面原型后,AI 必须将其保存到正式目录,作为交付物给开发参考。**
|
|
113
|
+
|
|
114
|
+
#### 保存位置
|
|
115
|
+
|
|
116
|
+
```
|
|
117
|
+
02_迭代记录/第XX轮迭代/C1_UI原型/
|
|
118
|
+
├── REQ-001-登录页.html ← 👁️ 开发双击直接看界面
|
|
119
|
+
├── REQ-001-登录页.json ← 📄 数据结构
|
|
120
|
+
├── REQ-002-首页看板.html
|
|
121
|
+
├── REQ-002-首页看板.json
|
|
122
|
+
└── index.md ← 📋 索引目录
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
#### AI 保存流程
|
|
126
|
+
|
|
127
|
+
```
|
|
128
|
+
1. PM 确认:"这个界面可以了"
|
|
129
|
+
↓
|
|
130
|
+
2. AI 询问需求编号:
|
|
131
|
+
"好的,界面已确认。请告诉我这个界面对应的需求编号,如 REQ-001。"
|
|
132
|
+
↓
|
|
133
|
+
3. PM 回答:"REQ-001"
|
|
134
|
+
↓
|
|
135
|
+
4. AI 正式保存(必须生成 3 个文件):
|
|
136
|
+
a) REQ-001-界面名称.json - JSON 数据文件
|
|
137
|
+
b) REQ-001-界面名称.html - 独立 HTML 预览文件(内嵌渲染器和数据)
|
|
138
|
+
c) 更新 index.md 索引文件
|
|
139
|
+
↓
|
|
140
|
+
5. AI 确认:
|
|
141
|
+
"✅ 界面原型已正式保存!
|
|
142
|
+
|
|
143
|
+
📁 文件位置:
|
|
144
|
+
- 👁️ 预览: 02_迭代记录/第01轮迭代/C1_UI原型/REQ-001-登录页.html
|
|
145
|
+
- 📄 数据: 02_迭代记录/第01轮迭代/C1_UI原型/REQ-001-登录页.json
|
|
146
|
+
|
|
147
|
+
开发可以双击 .html 文件直接在浏览器查看界面效果。"
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
#### HTML 预览文件要求
|
|
151
|
+
|
|
152
|
+
**AI 生成的 HTML 文件必须:**
|
|
153
|
+
1. 包含完整的 CSS 样式(复制 a2ui-viewer 的样式)
|
|
154
|
+
2. 包含完整的渲染引擎 JS 代码
|
|
155
|
+
3. 内嵌 JSON 数据(不依赖外部文件)
|
|
156
|
+
4. 顶部显示需求编号、界面名称、确认时间
|
|
157
|
+
5. 可以脱离服务器,双击直接在浏览器打开
|
|
158
|
+
|
|
159
|
+
#### index.md 索引文件格式
|
|
160
|
+
|
|
161
|
+
```markdown
|
|
162
|
+
# C1 UI 原型索引
|
|
163
|
+
|
|
164
|
+
| 需求编号 | 界面名称 | 👁️ 预览 | 📄 数据 | 确认时间 |
|
|
165
|
+
|---------|---------|--------|--------|---------|
|
|
166
|
+
| REQ-001 | 登录页 | [.html](./REQ-001-登录页.html) | [.json](./REQ-001-登录页.json) | 2025-12-27 |
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
#### 在 Markdown 文档中嵌入预览
|
|
170
|
+
|
|
171
|
+
**AI 可以在 B1/B2/C1 文档中直接嵌入 HTML 预览,让用户无需切换文件夹:**
|
|
172
|
+
|
|
173
|
+
```markdown
|
|
174
|
+
## 系统架构图
|
|
175
|
+
|
|
176
|
+
<iframe src="./架构图/系统架构.html" width="100%" height="400" frameborder="0"></iframe>
|
|
177
|
+
|
|
178
|
+
> 💡 如果 iframe 无法显示,请直接打开 [系统架构.html](./架构图/系统架构.html)
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
**注意**:不是所有 Markdown 编辑器都支持 iframe。如果不支持,AI 应该:
|
|
182
|
+
1. 提供 HTML 文件的链接
|
|
183
|
+
2. 或者将关键内容以 ASCII 图的形式展示在 Markdown 中
|
|
184
|
+
|
|
185
|
+
---
|
|
186
|
+
|
|
187
|
+
## 💻 完整示例:用户注册页
|
|
188
|
+
|
|
189
|
+
### 场景描述
|
|
190
|
+
PM: "做一个简单的注册页,要有用户名、密码,下面是注册按钮,右边放个帮助说明。"
|
|
191
|
+
|
|
192
|
+
### AI 生成的 JSON (写入 .a2ui/current.json)
|
|
193
|
+
|
|
194
|
+
```json
|
|
195
|
+
{
|
|
196
|
+
"type": "Page",
|
|
197
|
+
"title": "用户注册",
|
|
198
|
+
"children": [
|
|
199
|
+
{
|
|
200
|
+
"type": "Row",
|
|
201
|
+
"children": [
|
|
202
|
+
{
|
|
203
|
+
"type": "Col",
|
|
204
|
+
"children": [
|
|
205
|
+
{
|
|
206
|
+
"type": "Panel",
|
|
207
|
+
"title": "填写账户信息",
|
|
208
|
+
"children": [
|
|
209
|
+
{ "type": "Input", "label": "用户名", "placeholder": "请输入用户名" },
|
|
210
|
+
{ "type": "Input", "label": "密码", "placeholder": "请输入密码" },
|
|
211
|
+
{ "type": "Button", "text": "立即注册" }
|
|
212
|
+
]
|
|
213
|
+
}
|
|
214
|
+
]
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
"type": "Col",
|
|
218
|
+
"children": [
|
|
219
|
+
{
|
|
220
|
+
"type": "Panel",
|
|
221
|
+
"title": "帮助中心",
|
|
222
|
+
"children": [
|
|
223
|
+
{ "type": "Text", "content": "密码必须包含字母和数字。" },
|
|
224
|
+
{ "type": "Text", "content": "遇到问题请联系客服。" }
|
|
225
|
+
]
|
|
226
|
+
}
|
|
227
|
+
]
|
|
228
|
+
}
|
|
229
|
+
]
|
|
230
|
+
}
|
|
231
|
+
]
|
|
232
|
+
}
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
---
|
|
236
|
+
|
|
237
|
+
## 🚫 AI 避坑指南
|
|
238
|
+
|
|
239
|
+
1. **不要编造组件**:只能使用 `Page`, `Panel`, `Row`, `Col`, `Input`, `Button`, `Text`。不要用 `Table` (暂不支持), `Chart` 等。
|
|
240
|
+
2. **不要忘记写入**:必须调用 `write_to_file`,否则 `prd ui` 读不到数据。
|
|
241
|
+
3. **不要只给 JSON**:生成 JSON 的同时,最好也简单描述一下布局,照顾无法运行命令的场景。
|
|
242
|
+
|
|
243
|
+
---
|
|
244
|
+
|
|
245
|
+
**参考**:C1 主流程请查看 `prd-c1-requirement-list.md`
|