adspecs 0.1.19 → 0.1.21
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/.adspecs/feature.json +16 -16
- package/.adspecs/feature.yml +28 -28
- package/.adspecs/paths.json +17 -17
- package/.adspecs/templates/04-/345/211/215/347/253/257/345/212/237/350/203/275/350/256/276/350/256/241/346/250/241/346/235/277.md +1 -1
- package/.adspecs/templates/05-/345/220/216/347/253/257/344/273/273/345/212/241/346/270/205/345/215/225/346/250/241/346/235/277.md +613 -724
- package/.adspecs/templates/05b-/345/211/215/347/253/257/344/273/273/345/212/241/346/270/205/345/215/225/346/250/241/346/235/277.md +51 -51
- package/.claude-plugin/marketplace.json +23 -23
- package/.claude-plugin/plugin.json +18 -18
- package/.qoder-plugin/plugin.json +31 -31
- package/CLAUDE.md +1 -5
- package/INSTALL.md +3 -3
- package/README.md +395 -395
- package/bin/adspecs.js +129 -129
- package/hooks/commit-queue.js +245 -245
- package/hooks/hooks.json +63 -63
- package/hooks/session-start.js +44 -44
- package/hooks/wiki-queue.js +127 -127
- package/package.json +61 -61
- package/references/ant6-front-standard/index.md +99 -99
- package/references/antd-front-demo/public/mockServiceWorker.js +361 -361
- package/references/ecp-end-standard/index.md +63 -63
- package/references/python-end-standard/01-Python/345/220/216/347/253/257/347/274/226/347/240/201/350/247/204/350/214/203.md +372 -372
- package/references/python-end-standard/02-/346/225/260/346/215/256/345/272/223/350/256/276/350/256/241/344/270/216/344/275/277/347/224/250/350/247/204/350/214/203.md +226 -226
- package/references/python-end-standard/03-Celery/345/274/202/346/255/245/344/273/273/345/212/241/350/247/204/350/214/203.md +237 -237
- package/references/python-end-standard/04-Redis/344/275/277/347/224/250/350/247/204/350/214/203.md +231 -231
- package/scripts/postinstall.js +107 -107
- package/scripts/sync-version.js +105 -105
- package/skills/.claude/.wiki-update-queue +26 -26
- package/skills/adspecs-constitution/SKILL.md +157 -0
- package/skills/adspecs-export-word/SKILL.md +498 -498
- package/skills/adspecs-export-word/references/md-to-docx.js +862 -862
- package/skills/adspecs-export-word/references/package-lock.json +220 -220
- package/skills/adspecs-export-word/references/package.json +10 -10
- package/skills/adspecs-front-prototype/SKILL.md +405 -405
- package/skills/adspecs-front-spec/SKILL.md +4 -4
- package/skills/adspecs-front-tasks/SKILL.md +213 -173
- package/skills/adspecs-plan/SKILL.md +59 -69
- package/skills/adspecs-prd/SKILL.md +13 -5
- package/skills/adspecs-prd-to-demo/SKILL.md +532 -0
- package/skills/adspecs-tasks/SKILL.md +175 -204
- package/skills/adspecs-update-status/SKILL.md +382 -382
- package/skills/adspecs-utest/SKILL.md +107 -116
- package/skills/grill-me/SKILL.md +7 -0
- package/skills/grill-me/agents/openai.yaml +5 -0
- package/skills/playwright-cli/SKILL.md +420 -0
- package/skills/playwright-cli/references/element-attributes.md +23 -0
- package/skills/playwright-cli/references/playwright-tests.md +39 -0
- package/skills/playwright-cli/references/request-mocking.md +87 -0
- package/skills/playwright-cli/references/running-code.md +241 -0
- package/skills/playwright-cli/references/session-management.md +225 -0
- package/skills/playwright-cli/references/storage-state.md +275 -0
- package/skills/playwright-cli/references/test-generation.md +433 -0
- package/skills/playwright-cli/references/tracing.md +139 -0
- package/skills/playwright-cli/references/video-recording.md +143 -0
- package/skills/playwright-trace/SKILL.md +171 -0
- package/skills/project-init/SKILL.md +93 -22
- package/skills/project-init/references/front-demo/.claude/settings.local.json +9 -0
- package/skills/wiki-update/SKILL.md +232 -232
- package/src/commands/doctor.js +197 -197
- package/src/commands/init.js +83 -83
- package/src/commands/plugin.js +165 -165
- package/src/commands/update.js +87 -87
- package/src/lib/area-scanner.js +129 -129
- package/src/lib/copier.js +104 -104
- package/src/lib/dir-utils.js +161 -133
- package/src/lib/json-merge.js +114 -114
- package/src/lib/paths-defaults.js +37 -37
- package/src/lib/prompts.js +428 -347
- package/src/lib/readme-gen.js +143 -143
- package/src/lib/report.js +338 -327
- package/src/lib/scaffolder.js +551 -518
- package/src/lib/short-name.js +36 -36
- package/src/utils.js +80 -80
- package/references/antd-front-demo/.env +0 -15
|
@@ -0,0 +1,532 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "adspecs-prd-to-demo"
|
|
3
|
+
description: "基于 PRD(或业务需求分析、前端功能设计文档)输出『可点击 Demo 设计方案』——7 段式规划文档(目标 / 页面清单 / 核心流程 / 页面内容 / 假数据 / 视觉风格 / AI Studio Prompt),用于直接喂给 AI Studio / Lovable / v0 / front-demo 原型工程生成可交互 Demo。不写代码,只做设计规划。Use when the user wants to plan a clickable product demo, design a prototype from a PRD, or prepare a prompt for AI Studio / Lovable."
|
|
4
|
+
argument-hint: "<PRD 文件路径> [功能短名]"
|
|
5
|
+
compatibility: "需要 adspecs 项目结构及 docs/ 目录;可选 references/front-demo/ 参考工程以增强视觉风格建议"
|
|
6
|
+
metadata:
|
|
7
|
+
author: "Qingwen Chen"
|
|
8
|
+
input: "docs/20-prd/{module}/{spec}.md 或 docs/30-system-design/{module}/{spec}_前端功能设计.md"
|
|
9
|
+
output: "docs/20-prd/{module}/{short-name}_Demo设计方案.md"
|
|
10
|
+
pipeline-position: "上游:adspecs-prd / adspecs-front-spec;下游:adspecs-front-prototype(生成可运行原型)"
|
|
11
|
+
user-invocable: true
|
|
12
|
+
disable-model-invocation: false
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# PRD → Demo 设计方案生成器
|
|
16
|
+
|
|
17
|
+
## 用户输入
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
$ARGUMENTS
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
**必须** 在继续之前考虑用户输入(如果非空)。
|
|
24
|
+
|
|
25
|
+
输入格式支持:
|
|
26
|
+
|
|
27
|
+
- `<PRD 文件路径>` — 仅指定 PRD 或前端功能设计文档
|
|
28
|
+
- `<PRD 文件路径> <功能短名>` — 同时指定源文件与输出命名
|
|
29
|
+
- 空 → 提示用户输入
|
|
30
|
+
|
|
31
|
+
## 定位
|
|
32
|
+
|
|
33
|
+
本 skill 是 **Demo 设计规划** 环节,专注于把 PRD 翻译为『可点击 Demo 的完整设计方案』,**不写任何代码**。与上下游 skill 的分工:
|
|
34
|
+
|
|
35
|
+
| 对比项 | adspecs-front-spec(上游可选) | **adspecs-prd-to-demo(本 skill)** | adspecs-front-prototype(下游) |
|
|
36
|
+
| ------ | ------------------------------ | ----------------------------------- | ------------------------------- |
|
|
37
|
+
| 输出 | UI/交互功能规格说明书(Markdown) | **Demo 设计方案**(7 段式 Markdown + 喂给 AI 工具的 Prompt) | 可运行的 Vue 3 / React 原型代码 |
|
|
38
|
+
| 目标读者 | 产品经理、前端开发 | **产品经理(向业务方/客户演示)** | 前端工程师(接手跑通原型工程) |
|
|
39
|
+
| 关注点 | 怎么用——路由/布局/交互语义 | **验证什么 / 演示什么 / 怎么讲这个故事** | 真正能点、能看、能跑 |
|
|
40
|
+
| 产出物 | 1 个 .md 文件 | 1 个 .md 规划文件(含可直接复制的 AI Prompt) | .vue / .tsx + .ts + i18n 多文件 |
|
|
41
|
+
| 是否写代码 | 否 | **否** | 是 |
|
|
42
|
+
|
|
43
|
+
**典型工作流**:
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
/adspecs-prd → 做什么(PRD)
|
|
47
|
+
↓
|
|
48
|
+
/adspecs-front-spec → 怎么用(UI 功能规格)[可选]
|
|
49
|
+
↓
|
|
50
|
+
/adspecs-prd-to-demo → 怎么演示(Demo 设计方案)← 本 skill
|
|
51
|
+
↓
|
|
52
|
+
┌─────────────────────────────────────────────────┐
|
|
53
|
+
│ 路径 A(推荐,AI 工具直出): │
|
|
54
|
+
│ 复制 §七 的 Prompt 到 AI Studio / Lovable / v0 │
|
|
55
|
+
│ → 业务方立即可点 │
|
|
56
|
+
│ 路径 B(工程化): │
|
|
57
|
+
│ /adspecs-front-prototype → 生成可运行原型 │
|
|
58
|
+
└─────────────────────────────────────────────────┘
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## 角色
|
|
62
|
+
|
|
63
|
+
你是一位 **资深 AI 产品经理 + 前端原型设计师**,拥有 10 年以上 B 端产品设计经验,精通:
|
|
64
|
+
|
|
65
|
+
- 从 PRD / 用户故事中提炼可演示的产品故事线(Demo Narrative)
|
|
66
|
+
- 快速识别利益相关方最关心的 3~5 个核心验证点
|
|
67
|
+
- 假数据设计(贴近真实业务场景,避免"张三 / 李四 / test01"等无意义数据)
|
|
68
|
+
- 企业级中后台产品的视觉风格与组件风格(Element Plus / Ant Design / shadcn)
|
|
69
|
+
- 为 AI 原型工具(AI Studio / Lovable / v0 / Cursor)编写高信息密度的生成 Prompt
|
|
70
|
+
|
|
71
|
+
## 输入
|
|
72
|
+
|
|
73
|
+
1. **PRD 文件**(必需):用户指定的 PRD 或前端功能设计文档
|
|
74
|
+
- 路径位于 `{PRD_DIR}/`(默认 `docs/20-prd/`)
|
|
75
|
+
- 或位于 `{DESIGN_DIR}/`(默认 `docs/30-system-design/`)的前端功能设计文档
|
|
76
|
+
2. **业务架构文档**(可选,推荐):`docs/10-architecture/01-*_business_scenarios.md` 或 `01-*_business_architecture.md`
|
|
77
|
+
- 用于识别二级模块归属(MODULE_ID)
|
|
78
|
+
3. **front-demo 参考工程**(可选):`references/front-demo/` 或 `references/web-ui/`
|
|
79
|
+
- 如存在,可读取其主题色、组件库、布局范式作为 §六 视觉风格建议的依据
|
|
80
|
+
|
|
81
|
+
## 执行前检查
|
|
82
|
+
|
|
83
|
+
### 1. 检查扩展钩子(`before_prd_to_demo`)
|
|
84
|
+
|
|
85
|
+
按通用钩子处理规则检查 `.adspecs/extensions.yml`,处理 `hooks.before_prd_to_demo` 下的条目。无可执行钩子则静默跳过。
|
|
86
|
+
|
|
87
|
+
### 2. 加载路径配置
|
|
88
|
+
|
|
89
|
+
读取 `.adspecs/paths.json` 中的 `paths` 对象,提取本技能需要的配置键:
|
|
90
|
+
|
|
91
|
+
| 配置键 | 默认值 | 用途 |
|
|
92
|
+
| ------------ | ----------------------- | ------------------------ |
|
|
93
|
+
| `prd_dir` | `docs/20-prd` | PRD 输入 / Demo 设计方案输出 |
|
|
94
|
+
| `design_dir` | `docs/30-system-design` | 前端功能设计文档备选输入 |
|
|
95
|
+
| `architecture_dir` | `docs/10-architecture` | 业务架构文档(识别 MODULE_ID) |
|
|
96
|
+
|
|
97
|
+
若键缺失或文件不存在,使用上表默认值。
|
|
98
|
+
|
|
99
|
+
### 3. 校验输入
|
|
100
|
+
|
|
101
|
+
- 若 `$ARGUMENTS` 非文件路径(无 `.md` 后缀、非 `docs/` 开头),视为自然语言描述,直接使用
|
|
102
|
+
- 若 `$ARGUMENTS` 是文件路径,**必须** 存在;否则报错退出并建议正确路径
|
|
103
|
+
- 若 `$ARGUMENTS` 为空,使用 **AskUserQuestion** 提示用户输入 PRD 路径或功能描述
|
|
104
|
+
|
|
105
|
+
## 工作流程
|
|
106
|
+
|
|
107
|
+
### 步骤 1:读取并解析 PRD
|
|
108
|
+
|
|
109
|
+
读取 PRD 文件,重点提取:
|
|
110
|
+
|
|
111
|
+
- **功能模块清单**(一级/二级/三级功能编号)
|
|
112
|
+
- **用户故事(US)**:每条 US 的角色、目标、验收场景(Given-When-Then)
|
|
113
|
+
- **业务规则(BR)**:约束条件、联动逻辑
|
|
114
|
+
- **状态机**:业务状态枚举及流转规则
|
|
115
|
+
- **字段清单**:列表字段、表单字段、查询字段
|
|
116
|
+
- **权限矩阵**:角色 × 功能操作
|
|
117
|
+
- **通知机制**:成功/失败/预警类提示
|
|
118
|
+
|
|
119
|
+
### 步骤 2:识别二级模块(MODULE_ID)
|
|
120
|
+
|
|
121
|
+
按 adspecs-prd 的二级模块识别规则,从业务架构文档中匹配当前 PRD 所属的 `MODULE_ID`(如 `M03-02`、`P05-01`)。匹配失败则留空,输出目录不含模块子目录。
|
|
122
|
+
|
|
123
|
+
### 步骤 3:确定输出路径
|
|
124
|
+
|
|
125
|
+
- **输出根目录**:`{PRD_DIR}/`
|
|
126
|
+
- **输出子目录**(如 MODULE_ID 非空):`{PRD_DIR}/{MODULE_ID}/`
|
|
127
|
+
- **输出文件名**:`{short-name}_Demo设计方案.md`
|
|
128
|
+
- `short-name` 优先使用用户提供的第二参数
|
|
129
|
+
- 否则从 PRD 文件名推导(如 `M06-01_销售预测需求规格说明书.md` → `sales-forecast`)
|
|
130
|
+
- **完整路径示例**:
|
|
131
|
+
- 有模块:`docs/20-prd/M06-01/sales-forecast_Demo设计方案.md`
|
|
132
|
+
- 无模块:`docs/20-prd/sales-forecast_Demo设计方案.md`
|
|
133
|
+
- 同名文件已存在时询问用户:覆盖 / 重命名 / 新增版本号(`_v{N}` 后缀)
|
|
134
|
+
|
|
135
|
+
### 步骤 4:按七段式结构生成 Demo 设计方案
|
|
136
|
+
|
|
137
|
+
**严格按以下顺序与格式输出,不得合并、省略或重排章节。**
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
#### 一、Demo 目标
|
|
142
|
+
|
|
143
|
+
用 4 个必答问题框定 Demo 的边界:
|
|
144
|
+
|
|
145
|
+
| 问题 | 必答内容 |
|
|
146
|
+
| ---------------- | ------------------------------------------------------------------------ |
|
|
147
|
+
| **1. 验证什么** | Demo 主要验证的产品假设或业务流程(1~3 条,每条一句话) |
|
|
148
|
+
| **2. 给谁看** | 主要受众角色(如"华东区销售总监"、"客户方 CIO"、"一线仓库操作员") |
|
|
149
|
+
| **3. 关心什么** | 受众最在意的 3~5 个关注点(从受众视角出发,而非功能视角) |
|
|
150
|
+
| **4. 做与不做** | 必须实现的页面/功能(P0);可以简化的页面/功能(P1);明确不做的(Out) |
|
|
151
|
+
|
|
152
|
+
**示例格式**:
|
|
153
|
+
|
|
154
|
+
```markdown
|
|
155
|
+
## 一、Demo 目标
|
|
156
|
+
|
|
157
|
+
### 1. 验证什么
|
|
158
|
+
- 销售预测单的完整提报→审核→汇总流程是否顺畅
|
|
159
|
+
- 多层级审批对销售预测管控的价值
|
|
160
|
+
|
|
161
|
+
### 2. 给谁看
|
|
162
|
+
- 华东区销售总监(决策者)
|
|
163
|
+
- 销售运营专员(高频使用者)
|
|
164
|
+
|
|
165
|
+
### 3. 关心什么
|
|
166
|
+
- 销售预测提交后多久能进入审核
|
|
167
|
+
- 历史预测 vs 实际订单的差异是否可视化
|
|
168
|
+
- 异常预测是否会被系统主动预警
|
|
169
|
+
|
|
170
|
+
### 4. 做与不做
|
|
171
|
+
| 等级 | 内容 |
|
|
172
|
+
| ---- | -------------------------------------- |
|
|
173
|
+
| P0 | 预测单列表、新建、审核、汇总看板 |
|
|
174
|
+
| P1 | 导入历史数据、导出 PDF |
|
|
175
|
+
| Out | 多语言、权限矩阵精细化、API 对接 |
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
#### 二、页面清单
|
|
181
|
+
|
|
182
|
+
为 Demo 涉及的所有页面建立清单。**每条页面必须包含 6 项信息**:
|
|
183
|
+
|
|
184
|
+
| 字段 | 说明 |
|
|
185
|
+
| -------------- | ------------------------------------------------------------------ |
|
|
186
|
+
| **页面名称** | 简洁的业务名称(如"预测单列表",非 URL 路径) |
|
|
187
|
+
| **页面目标** | 一句话说明该页面解决什么问题 |
|
|
188
|
+
| **使用角色** | 哪个角色会使用该页面 |
|
|
189
|
+
| **核心信息** | 该页面呈现给用户的关键数据/状态(3~6 项) |
|
|
190
|
+
| **核心操作** | 用户在该页面可执行的关键动作(2~5 项) |
|
|
191
|
+
| **是否必须实现** | P0 / P1 / Out(与 §一 对齐) |
|
|
192
|
+
|
|
193
|
+
**输出格式**:表格形式,按用户主流程顺序排列。
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
#### 三、核心流程
|
|
198
|
+
|
|
199
|
+
用 **步骤编号 + 角色 + 动作 + 系统反馈** 的方式,描述用户从进入 Demo 到完成关键任务的完整路径。要求:
|
|
200
|
+
|
|
201
|
+
- **起点**:用户从哪个页面开始(对应 §二 中的某页面)
|
|
202
|
+
- **终点**:用户完成核心业务目标(至少一条完整流程)
|
|
203
|
+
- **分支**:关键判断节点要明确标注(如"审批通过 → 跳到汇总页;驳回 → 返回编辑页")
|
|
204
|
+
- **异常**:至少标注 1 条异常分支(如"库存不足"、"审批超时")
|
|
205
|
+
|
|
206
|
+
**输出格式**:
|
|
207
|
+
|
|
208
|
+
```markdown
|
|
209
|
+
## 三、核心流程
|
|
210
|
+
|
|
211
|
+
### 主流程:销售预测提报
|
|
212
|
+
|
|
213
|
+
1. 【销售运营】打开"预测单列表"页 → 系统展示近 30 天预测单
|
|
214
|
+
2. 【销售运营】点击"新建预测"按钮 → 弹出抽屉表单
|
|
215
|
+
3. 【销售运营】填写客户、成品、预计数量、期望交期 → 系统自动校验数量上下限
|
|
216
|
+
4. 【销售运营】点击"提交" → 系统保存预测单,状态变为"待审核",发送通知给审核人
|
|
217
|
+
5. 【销售总监】在"待我审核"列表中看到该单 → 点击"审核"
|
|
218
|
+
6. 【销售总监】选择"通过"并填写意见 → 系统状态变为"已审核",汇总看板数字 +1
|
|
219
|
+
|
|
220
|
+
### 异常分支:库存不足
|
|
221
|
+
|
|
222
|
+
- 在步骤 3,若预计数量 > 可用库存的 120% → 系统弹出警告"预计数量超过可用库存,是否继续?"
|
|
223
|
+
- 用户选择"取消" → 返回表单;选择"继续" → 提交并在详情页标记"超库存预警"
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
#### 四、页面内容设计
|
|
229
|
+
|
|
230
|
+
**为 §二 中每个 P0 页面**(P1 页面可简化,但必须有)输出以下内容:
|
|
231
|
+
|
|
232
|
+
| 字段 | 说明 |
|
|
233
|
+
| ------------ | ---------------------------------------------------------------- |
|
|
234
|
+
| **页面模块** | 页面内部分区(如"顶部筛选区"、"列表区"、"操作按钮区") |
|
|
235
|
+
| **字段内容** | 每个模块的字段清单(字段名 / 类型 / 必填 / 示例值 / 说明) |
|
|
236
|
+
| **按钮操作** | 主按钮 / 次按钮 / 危险按钮,触发什么动作、什么条件下禁用 |
|
|
237
|
+
| **状态变化** | 用户操作后页面状态如何变化(如"提交后按钮 loading → 列表刷新") |
|
|
238
|
+
| **异常提示** | 校验失败、业务异常、网络异常的提示文案与展示位置(Message / Dialog / 字段级) |
|
|
239
|
+
|
|
240
|
+
**输出格式建议**:按页面分节,每节使用小表格。
|
|
241
|
+
|
|
242
|
+
**示例片段**:
|
|
243
|
+
|
|
244
|
+
```markdown
|
|
245
|
+
#### 4.1 预测单列表页
|
|
246
|
+
|
|
247
|
+
**顶部筛选区**:
|
|
248
|
+
| 字段 | 类型 | 必填 | 示例值 | 说明 |
|
|
249
|
+
| -------- | -------- | ---- | ------------ | ------------------------ |
|
|
250
|
+
| 单号 | 文本框 | 否 | FC2026070001 | 支持模糊查询 |
|
|
251
|
+
| 客户名称 | 下拉选择 | 否 | 华峰新能源 | 来自客户主数据 |
|
|
252
|
+
| 状态 | 多选标签 | 否 | 待审核 | 枚举:草稿/待审核/已审核 |
|
|
253
|
+
|
|
254
|
+
**操作按钮区**:
|
|
255
|
+
| 按钮 | 类型 | 触发行为 | 禁用条件 |
|
|
256
|
+
| -------- | ------ | -------------------- | ------------------ |
|
|
257
|
+
| 新建预测 | 主按钮 | 打开新建抽屉表单 | 无 |
|
|
258
|
+
| 批量导出 | 次按钮 | 导出选中行为 Excel | 未选中任何行 |
|
|
259
|
+
| 批量删除 | 危险按钮 | 二次确认后删除选中 | 状态含"已审核"行 |
|
|
260
|
+
|
|
261
|
+
**状态变化**:
|
|
262
|
+
- 点击"提交" → 按钮进入 loading → 成功后列表自动刷新 → Toast 提示"提交成功"
|
|
263
|
+
|
|
264
|
+
**异常提示**:
|
|
265
|
+
| 场景 | 提示文案 | 展示方式 |
|
|
266
|
+
| ---------------- | ------------------------------ | -------- |
|
|
267
|
+
| 必填字段未填写 | 请填写客户名称和预计数量 | 字段级红字 |
|
|
268
|
+
| 数量超出上限 | 预计数量不可超过可用库存 150% | Message |
|
|
269
|
+
| 网络异常 | 网络异常,请检查连接后重试 | Dialog |
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
---
|
|
273
|
+
|
|
274
|
+
#### 五、假数据设计
|
|
275
|
+
|
|
276
|
+
生成 **贴近真实业务场景** 的模拟数据,**禁止使用**:"张三"、"李四"、"test01"、"aaa"、"示例数据" 等无意义数据。
|
|
277
|
+
|
|
278
|
+
**要求**:
|
|
279
|
+
|
|
280
|
+
1. **客户/供应商名**:使用真实感的企业名称(如"华峰新能源科技"、"宁波金田铜业"、"宁德时代")
|
|
281
|
+
2. **产品/物料名**:使用真实的产品规格命名(如"3003 铝板 1.2mm×1220mm"、"SB3104 电池壳料")
|
|
282
|
+
3. **单据编号**:使用业务编号规则(如"FC2026070001"、"SO-SH-2026-07-0042")
|
|
283
|
+
4. **人员姓名**:使用真实感的中文姓名(如"陈文伟"、"林晓婷"、"王建国"),**至少 5 个不同姓名**
|
|
284
|
+
5. **时间/数量**:使用合理的时间跨度与业务数量级(如"2026-07-15"、"5000 kg")
|
|
285
|
+
6. **状态分布**:每个状态枚举至少 1 条样本数据,且包含正常态与异常态
|
|
286
|
+
7. **数据量**:列表类页面至少 10~15 条样本,覆盖不同状态、不同客户、不同时间
|
|
287
|
+
|
|
288
|
+
**输出格式**:按页面组织,每个 P0 页面给出 JSON 或 Markdown 表格形式的假数据。
|
|
289
|
+
|
|
290
|
+
**示例**:
|
|
291
|
+
|
|
292
|
+
```markdown
|
|
293
|
+
## 五、假数据设计
|
|
294
|
+
|
|
295
|
+
### 5.1 预测单列表样本数据(10 条)
|
|
296
|
+
|
|
297
|
+
| 单号 | 客户名称 | 成品规格 | 预计数量 | 期望交期 | 状态 | 提交人 | 提交时间 |
|
|
298
|
+
| -------------- | ---------------- | ------------------------- | -------- | ---------- | ------ | ------ | ---------- |
|
|
299
|
+
| FC2026070001 | 华峰新能源科技 | 3003 铝板 1.2mm×1220mm | 5000 kg | 2026-08-15 | 待审核 | 陈文伟 | 2026-07-15 09:30 |
|
|
300
|
+
| FC2026070002 | 宁波金田铜业 | SB3104 电池壳料 0.5mm | 12000 kg | 2026-08-20 | 已审核 | 林晓婷 | 2026-07-14 14:15 |
|
|
301
|
+
| FC2026070003 | 宁德时代新能源 | 8011 铝箔 0.02mm | 3000 kg | 2026-09-01 | 草稿 | 王建国 | 2026-07-16 10:00 |
|
|
302
|
+
| ... (共 10 条) | ... | ... | ... | ... | ... | ... | ... |
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
---
|
|
306
|
+
|
|
307
|
+
#### 六、视觉风格
|
|
308
|
+
|
|
309
|
+
给出适合该产品的视觉风格建议,包含以下 4 个维度:
|
|
310
|
+
|
|
311
|
+
| 维度 | 必答内容 |
|
|
312
|
+
| ------------ | ------------------------------------------------------------------------------ |
|
|
313
|
+
| **布局** | 整体布局范式(如"左侧导航 + 顶部面包屑 + 主内容区"),主内容区信息密度倾向 |
|
|
314
|
+
| **信息层级** | 标题 / 次级标题 / 正文 / 辅助信息的字号、字重、颜色差异 |
|
|
315
|
+
| **配色方向** | 主色(品牌色)、辅助色、状态色(成功/警告/危险/信息)、中性色(背景/边框/文字) |
|
|
316
|
+
| **组件风格** | 推荐组件库(Element Plus / Ant Design / shadcn-ui)、圆角大小、阴影强度、交互反馈风格 |
|
|
317
|
+
|
|
318
|
+
**如存在** `references/front-demo/` 或 `references/web-ui/`,优先参考其主题变量(通过读取 `src/styles/variables` 或等价位置),输出与该工程一致的视觉风格。
|
|
319
|
+
|
|
320
|
+
**输出格式**:简洁描述 + 配色值(HEX 码),方便下游 AI 工具直接引用。
|
|
321
|
+
|
|
322
|
+
---
|
|
323
|
+
|
|
324
|
+
#### 七、生成 Demo Prompt
|
|
325
|
+
|
|
326
|
+
最后,把前 6 段的所有信息整合为 **一段可直接复制到 AI Studio / Lovable / v0 中生成可点击 Demo 的 Prompt**。
|
|
327
|
+
|
|
328
|
+
**Prompt 编写原则**:
|
|
329
|
+
|
|
330
|
+
1. **角色前置**:开头明确角色("你是一位前端原型工程师")
|
|
331
|
+
2. **任务明确**:一句话说明目标("请为 X 产品生成一个可点击的 Demo")
|
|
332
|
+
3. **页面清单**:列出所有页面及路由
|
|
333
|
+
4. **每个页面的结构**:标题、模块、字段、按钮、状态
|
|
334
|
+
5. **假数据要求**:直接嵌入 §五 中的假数据(JSON 或表格形式)
|
|
335
|
+
6. **视觉风格**:直接引用 §六 的配色与组件建议
|
|
336
|
+
7. **交互流程**:直接引用 §三 的主流程作为交互说明
|
|
337
|
+
8. **约束**:明确技术栈(如 React + shadcn-ui + Tailwind)、禁止事项(不实现真实 API、用 mock 数据)
|
|
338
|
+
|
|
339
|
+
**输出格式**:
|
|
340
|
+
|
|
341
|
+
```markdown
|
|
342
|
+
## 七、生成 Demo Prompt
|
|
343
|
+
|
|
344
|
+
将以下内容完整复制到 AI Studio / Lovable / v0:
|
|
345
|
+
|
|
346
|
+
---
|
|
347
|
+
|
|
348
|
+
你是一位资深前端原型工程师。请为【{产品名}】生成一个可点击的 Demo。
|
|
349
|
+
|
|
350
|
+
### 任务目标
|
|
351
|
+
{从 §一 提炼的 1~3 句核心验证目标}
|
|
352
|
+
|
|
353
|
+
### 受众与关注点
|
|
354
|
+
- 主要受众:{§一.2}
|
|
355
|
+
- 关注点:{§一.3}
|
|
356
|
+
|
|
357
|
+
### 技术栈与视觉风格
|
|
358
|
+
- 框架:{§六 推荐的组件库,如 React 19 + shadcn-ui + Tailwind}
|
|
359
|
+
- 主色:{§六 HEX};辅助色:{§六 HEX}
|
|
360
|
+
- 布局:{§六 布局描述}
|
|
361
|
+
- 圆角:{§六 建议};阴影:{§六 建议}
|
|
362
|
+
|
|
363
|
+
### 页面清单与路由
|
|
364
|
+
| 页面 | 路由 | 说明 |
|
|
365
|
+
| ---- | ---- | ---- |
|
|
366
|
+
{直接复制 §二 表格}
|
|
367
|
+
|
|
368
|
+
### 页面 1:{页面名}
|
|
369
|
+
- 模块:{§四.1 的页面模块列表}
|
|
370
|
+
- 字段:{§四.1 的字段清单表}
|
|
371
|
+
- 按钮:{§四.1 的按钮操作表}
|
|
372
|
+
- 状态变化:{§四.1 的状态变化描述}
|
|
373
|
+
- 异常提示:{§四.1 的异常提示表}
|
|
374
|
+
- 假数据:
|
|
375
|
+
{§五 该页面的假数据表,JSON 或 Markdown 表格}
|
|
376
|
+
|
|
377
|
+
### 页面 2:{页面名}
|
|
378
|
+
{同上结构}
|
|
379
|
+
|
|
380
|
+
### 核心交互流程
|
|
381
|
+
{直接复制 §三 的主流程步骤}
|
|
382
|
+
|
|
383
|
+
### 异常流程
|
|
384
|
+
{直接复制 §三 的异常分支}
|
|
385
|
+
|
|
386
|
+
### 约束
|
|
387
|
+
- 不要实现真实后端 API,所有数据使用上面提供的假数据
|
|
388
|
+
- 使用 mock 数据保持会话内一致(同一页面刷新数据不变)
|
|
389
|
+
- 所有按钮都要有可点击反馈(loading、成功提示)
|
|
390
|
+
- 不要遗漏空状态、加载中状态、错误状态
|
|
391
|
+
|
|
392
|
+
---
|
|
393
|
+
|
|
394
|
+
**Prompt 长度目标**:1500~3000 字,信息密度高但不过度冗长。
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
### 步骤 5:质量验证
|
|
398
|
+
|
|
399
|
+
生成完成后,按以下清单逐项检查:
|
|
400
|
+
|
|
401
|
+
#### Demo 设计方案质量检查清单
|
|
402
|
+
|
|
403
|
+
**§一 目标清晰度**
|
|
404
|
+
- [ ] 验证什么:1~3 条,每条可一句话复述
|
|
405
|
+
- [ ] 给谁看:角色具体(非"用户"这种泛称)
|
|
406
|
+
- [ ] 关心什么:至少 3 个,且从受众视角而非功能视角
|
|
407
|
+
- [ ] 做与不做:P0/P1/Out 三项齐全
|
|
408
|
+
|
|
409
|
+
**§二 页面完整性**
|
|
410
|
+
- [ ] 页面清单覆盖 PRD 中所有涉及 UI 交互的用户故事
|
|
411
|
+
- [ ] 每个页面包含 6 项信息(名称/目标/角色/核心信息/核心操作/P0 等级)
|
|
412
|
+
- [ ] 页面顺序反映主流程
|
|
413
|
+
|
|
414
|
+
**§三 流程可行性**
|
|
415
|
+
- [ ] 主流程有明确起点与终点
|
|
416
|
+
- [ ] 每个步骤标注角色
|
|
417
|
+
- [ ] 至少 1 条异常分支
|
|
418
|
+
- [ ] 关键判断节点有分支说明
|
|
419
|
+
|
|
420
|
+
**§四 内容可实现性**
|
|
421
|
+
- [ ] 每个 P0 页面有字段清单、按钮操作、状态变化、异常提示
|
|
422
|
+
- [ ] 字段类型使用前端组件语言(文本框/下拉/日期选择器),非 Java 类型
|
|
423
|
+
- [ ] 按钮禁用条件具体可判断
|
|
424
|
+
|
|
425
|
+
**§五 假数据真实性**
|
|
426
|
+
- [ ] 无"张三/李四/test01/示例数据"等占位符
|
|
427
|
+
- [ ] 客户/产品/人员姓名使用真实感命名
|
|
428
|
+
- [ ] 单据编号符合业务规则
|
|
429
|
+
- [ ] 每个状态枚举至少 1 条样本
|
|
430
|
+
- [ ] 列表数据 ≥ 10 条
|
|
431
|
+
|
|
432
|
+
**§六 视觉风格一致性**
|
|
433
|
+
- [ ] 布局、配色、组件风格与项目已有原型风格一致(如有参考)
|
|
434
|
+
- [ ] 配色值使用 HEX 码
|
|
435
|
+
- [ ] 状态色遵循色彩语义(绿=成功/红=危险/橙=警告/蓝=信息/灰=禁用)
|
|
436
|
+
|
|
437
|
+
**§七 Prompt 可用性**
|
|
438
|
+
- [ ] Prompt 长度 1500~3000 字
|
|
439
|
+
- [ ] 包含角色、任务、页面、字段、假数据、视觉风格、流程、约束 8 要素
|
|
440
|
+
- [ ] 可直接复制粘贴,无需要二次编辑的占位符
|
|
441
|
+
- [ ] 技术栈明确,与 §六 视觉风格一致
|
|
442
|
+
|
|
443
|
+
### 步骤 6:持久化到 feature.json
|
|
444
|
+
|
|
445
|
+
将本次 Demo 设计规划注册到 `.adspecs/feature.json`:
|
|
446
|
+
|
|
447
|
+
```json
|
|
448
|
+
{
|
|
449
|
+
"active": "<resolved feature dir>",
|
|
450
|
+
"demos": [
|
|
451
|
+
{
|
|
452
|
+
"id": "<功能ID>",
|
|
453
|
+
"directory": "<resolved feature dir>",
|
|
454
|
+
"filename": "<resolved filename>",
|
|
455
|
+
"name": "<功能名称>",
|
|
456
|
+
"status": "drafted",
|
|
457
|
+
"created": "<DATE>"
|
|
458
|
+
}
|
|
459
|
+
]
|
|
460
|
+
}
|
|
461
|
+
```
|
|
462
|
+
|
|
463
|
+
操作方式:
|
|
464
|
+
1. 读取现有 `.adspecs/feature.json`
|
|
465
|
+
2. 将新功能追加到 `demos` 数组(若 directory 已存在则跳过)
|
|
466
|
+
3. 更新 `active` 字段
|
|
467
|
+
4. 写入文件(2-space 缩进)
|
|
468
|
+
|
|
469
|
+
## 必选执行后钩子
|
|
470
|
+
|
|
471
|
+
检查项目根目录是否存在 `.adspecs/extensions.yml`。
|
|
472
|
+
|
|
473
|
+
- 如果不存在或 `hooks.after_prd_to_demo` 下无钩子,跳到完成报告。
|
|
474
|
+
- 按通用钩子规则处理(过滤 `enabled: false`、跳过有 `condition` 的钩子、构造斜杠命令时 `.` → `-`)。
|
|
475
|
+
- 对 `optional: false` 的必选钩子,必须发出 `EXECUTE_COMMAND: {command}`。
|
|
476
|
+
|
|
477
|
+
## 完成报告
|
|
478
|
+
|
|
479
|
+
向用户输出:
|
|
480
|
+
|
|
481
|
+
1. **Demo 设计方案文件路径**
|
|
482
|
+
2. **七段式结构完整性摘要**:
|
|
483
|
+
- §一 Demo 目标:X 条验证假设
|
|
484
|
+
- §二 页面清单:X 个 P0 页面 / Y 个 P1 页面
|
|
485
|
+
- §三 核心流程:X 条主流程 / Y 条异常分支
|
|
486
|
+
- §四 页面内容:X 个 P0 页面已详述
|
|
487
|
+
- §五 假数据:X 条样本数据
|
|
488
|
+
- §六 视觉风格:HEX 主色 + 组件库
|
|
489
|
+
- §七 Prompt:已生成,长度 N 字
|
|
490
|
+
3. **质量检查通过项数 / 总项数**
|
|
491
|
+
4. **下一步建议**:
|
|
492
|
+
- **路径 A(推荐)**:复制 §七 Prompt 到 AI Studio / Lovable / v0,立即可点
|
|
493
|
+
- **路径 B**:运行 `/adspecs-front-prototype <PRD文件路径>` 生成可运行前端原型
|
|
494
|
+
- 如需调整后继方案,修改本文件后重新生成 §七 Prompt
|
|
495
|
+
|
|
496
|
+
## 完成标志
|
|
497
|
+
|
|
498
|
+
- [ ] PRD 已解析,用户故事、状态机、字段清单已提取
|
|
499
|
+
- [ ] 二级模块(MODULE_ID)已识别或标记为空
|
|
500
|
+
- [ ] Demo 设计方案 7 段式全部完成
|
|
501
|
+
- [ ] 假数据通过真实性检查(无占位符命名)
|
|
502
|
+
- [ ] §七 Prompt 长度 1500~3000 字,8 要素齐全
|
|
503
|
+
- [ ] 质量检查清单通过 ≥ 80%
|
|
504
|
+
- [ ] 文件已保存到 `{PRD_DIR}/{MODULE_ID}/`
|
|
505
|
+
- [ ] `.adspecs/feature.json` 已更新 `demos` 数组
|
|
506
|
+
- [ ] 扩展钩子已按规则分发或跳过
|
|
507
|
+
- [ ] 完成报告已呈现
|
|
508
|
+
|
|
509
|
+
## 触发关键词
|
|
510
|
+
|
|
511
|
+
`adspecs-prd-to-demo`
|
|
512
|
+
|
|
513
|
+
### 使用示例
|
|
514
|
+
|
|
515
|
+
```
|
|
516
|
+
/adspecs-prd-to-demo docs/20-prd/M06-01/M06-01_销售预测需求规格说明书.md
|
|
517
|
+
/adspecs-prd-to-demo docs/20-prd/M06-01/M06-01_销售预测需求规格说明书.md sales-forecast
|
|
518
|
+
/adspecs-prd-to-demo docs/30-system-design/M06-01/sales-forecast_前端功能设计.md
|
|
519
|
+
```
|
|
520
|
+
|
|
521
|
+
## 与 adspecs-front-prototype 的差异(FAQ)
|
|
522
|
+
|
|
523
|
+
**Q:为什么不直接调用 `/adspecs-front-prototype` 生成可运行代码?**
|
|
524
|
+
|
|
525
|
+
A:两者目标不同:
|
|
526
|
+
- **`/adspecs-prd-to-demo`**:业务演示优先。面向产品经理向客户/业务方讲故事。输出是一份设计方案 + 一段喂给 AI 工具的 Prompt,5 分钟内能拿到可点击 Demo。
|
|
527
|
+
- **`/adspecs-front-prototype`**:工程落地优先。面向前端工程师接手跑通原型工程。输出是 Vue 3 / React 完整代码(含 i18n、API 封装、mock 菜单),需要 30+ 分钟生成并调试。
|
|
528
|
+
|
|
529
|
+
**推荐用法**:
|
|
530
|
+
- 向客户/业务方演示方案 → 先用本 skill
|
|
531
|
+
- 交给前端工程师落地实现 → 用 `/adspecs-front-prototype`
|
|
532
|
+
- 两者可串联使用:先本 skill 规划,再 `/adspecs-front-prototype` 工程化
|