附录 B:提示词与模板合集¶
这一章是“复制就能用”的提示词库。所有提示词都遵循同一个结构:角色 + 输入 + 任务 + 约束 + 输出格式 + 停止条件。你可以按项目替换占位符。
0. 提示词写作的六个要素¶
1. 角色:你是谁(资深产品经理/架构师/测试工程师)
2. 输入:读哪些文件、哪些是事实、哪些是假设
3. 任务:具体做什么,不要做什么
4. 约束:边界、规范、禁止事项
5. 输出:文件路径、格式、结构
6. 停止条件:什么时候停下来问人
反例:
正例:
你是资深架构师。请基于 @docs/00-discovery/spec.md 和
@docs/00-discovery/user-story.csv 生成技术设计。
只覆盖 P0/P1 故事,不发明新需求。
输出 docs/01-design/tech-design.md,按 @模板/tech-design.md 的结构。
遇到契约缺失,列入“未决问题”,不要猜。
1. 通用:项目启动¶
1.1 生成 CLAUDE.md¶
你是本项目的主程。请阅读以下文件:
- README.md
- docs/00-discovery/spec.md
- docs/01-design/tech-design.md
- Makefile / package.json / go.mod
请生成/更新 `CLAUDE.md`,要求:
1. 控制在 250 行以内。
2. 包含:项目一句话、技术栈、目录、常用命令、编码约定、禁止事项、完成定义。
3. 命令必须是可以直接复制执行的。
4. 详细内容用链接指向 docs/,不要粘贴全文。
5. 不要写“请努力”“要仔细”这类无法执行的指令。
6. 输出后自查:新成员看完能否独立跑起来?
1.2 项目上下文摘要¶
请阅读 @CLAUDE.md、@docs/00-discovery/spec.md、@docs/01-design/tech-design.md,
输出一份 20 行以内的项目摘要,包含:
- 产品目标
- 核心用户
- 技术栈
- 当前阶段
- 最重要的 3 个约束
- 下一步要做什么
不要输出文件内容,只输出摘要。
2. 需求阶段¶
2.1 需求访谈¶
你是资深产品经理兼需求分析师。请阅读 @docs/00-discovery/raw-notes.md。
现在不要写方案。请一次性提出最多 12 个澄清问题,覆盖:
目标用户、核心场景、非目标、数据实体、权限、集成、合规、
成功指标、上线约束、运维。
要求:
1. 每个问题给 2-3 个可选答案,标出推荐项和理由。
2. 优先问“答案会显著改变技术方案”的问题。
3. 能从原始记录推断的不要重复问。
4. 输出表格:编号、问题、选项、推荐、影响。
2.2 生成规格¶
你是资深产品经理。请基于以下材料生成 `docs/00-discovery/spec.md`:
- 原始记录:@docs/00-discovery/raw-notes.md
- 访谈回答:@docs/00-discovery/interview-answers.md
- 模板:@模板/spec.md
要求:
1. 严格按模板结构。
2. 每个功能需求用 FR-xxx 编号,规则必须可测试。
3. 每个功能需求至少写一个异常分支。
4. 明确“非目标”和“范围之外”。
5. 不发明未提供的信息;不确定的列入“假设与待确认问题”。
6. 输出前自查:有没有矛盾?有没有不可测试的形容词?
2.3 需求批判¶
你是苛刻的需求评审专家。请审查 @docs/00-discovery/spec.md。
找出:
1. 模糊、不可测试的需求(给原文和改写建议)
2. 互相矛盾的需求
3. 缺失的异常流程(失败、超时、权限不足、空数据)
4. 缺失的权限边界
5. 范围蔓延风险
6. 技术上不可行/成本过高的地方
7. 应该拆分的过大需求
输出表格:编号、位置、问题、影响、建议。
不要改文件。
2.4 拆分用户故事¶
你是资深敏捷教练。请基于 @docs/00-discovery/spec.md 拆分用户故事。
要求:
1. 格式:作为…我希望…以便…
2. 每个故事至少 1 个正常路径 + 2 个异常路径的 Given/When/Then。
3. 标注:模块、优先级、依赖、数据实体、故事点。
4. 每个故事必须能独立开发、测试、演示。
5. 不按技术层拆,按用户价值拆。
6. 超过 8 个故事点继续拆。
7. 先输出 Markdown 表格,再输出 CSV 行。
2.5 需求追溯检查¶
请检查 @docs/00-discovery/spec.md、user-story.csv、user-story-details.md 的一致性。
输出:
1. 每个 FR 是否至少有一个用户故事
2. 每个用户故事是否有验收标准
3. 每个验收标准是否可测试
4. 是否有故事没有对应 FR
5. 是否有 FR 没有故事
6. 依赖是否有循环
7. 缺失项矩阵
不要改文件,只输出检查结果。
3. UI 阶段¶
3.1 页面清单¶
你是资深 UI/UX 设计师。请阅读:
- @docs/00-discovery/spec.md
- @docs/00-discovery/user-story.csv
- @docs/02-ui/design-tokens.json
输出页面清单:
| 页面 ID | 名称 | 路由 | 故事 | 主要组件 | 状态 |
状态至少包括:默认、加载、空、错误、无权限、成功反馈。
不要画图,只输出清单和信息架构。
3.2 设计系统¶
你是设计系统专家。请为以下产品生成设计 token:
- 产品:<描述>
- 气质:<专业/清爽/活泼/…>
- 用户:<描述>
- 支持浅色模式;深色模式可选
输出:
1. 颜色(品牌 50-900、中性 0-900、语义色)
2. 字体(family、字号、字重、行高)
3. 间距(4px 基准)
4. 圆角、阴影
5. 使用规则
6. 对比度检查
输出 JSON + CSS 变量两版。
3.3 从 Figma 提取规格¶
请读取我在 Figma 中选中的 frame。
输出严格按以下结构:
1. 页面结构树(最多 4 层,标注角色)
2. 布局参数(flex/grid、宽高、间距、对齐)
3. 使用的 token(颜色/字体/间距/圆角/阴影)
4. 组件实例及变体
5. 状态清单(默认/加载/空/错误/无权限)
6. 响应式规则(1440/1024/390)
7. 交互说明(hover/focus/点击/拖拽)
8. 不确定的地方(列出,不要猜)
不要生成代码。
3.4 设计批判¶
你是苛刻的设计评审专家。请审查 @docs/02-ui/screens/<page>.png 和 @docs/02-ui/ui-spec.md。
找出:
1. 信息层级不清
2. 视觉不一致
3. 缺失状态
4. 可访问性问题(对比度、键盘、触控目标)
5. 响应式问题
6. 文案问题
7. 过度设计
输出表格:问题、位置、严重度、建议。
不要改文件。
4. 前端阶段¶
4.1 静态原型¶
你是资深前端工程师。请生成静态 HTML/CSS 原型:
- 页面:<P-xxx>
- 规格:@docs/02-ui/ui-spec.md#<anchor>
- token:@docs/02-ui/design-tokens.json
- 设计稿:@docs/02-ui/screens/<file>.png
要求:
1. 单文件 HTML,可直接浏览器打开。
2. 引入 tokens.css,不写死颜色/间距。
3. 语义化 HTML5。
4. 通过 ?state=default|loading|empty|error 切换状态。
5. 1440/1024/390 三个断点。
6. 不引入框架。
7. 内联 SVG 图标。
8. hover/focus 样式。
9. 输出后自查:魔法值、div 滥用、缺失状态。
4.2 Vue 页面¶
你是资深 Vue 3 + TypeScript 工程师。请实现 <P-xxx> 页面。
输入:
- UI 规格:@docs/02-ui/ui-spec.md#<anchor>
- OpenAPI:@docs/01-design/api/openapi.yaml
- 生成类型:@frontend/src/api/types.ts
- 现有组件:@frontend/src/components/ui/
- 项目约定:@CLAUDE.md
要求:
1. 只改 <授权文件>。
2. 处理 loading/empty/error/no-permission。
3. 颜色/间距用 CSS 变量。
4. 使用 useAsync 统一请求。
5. 不直接 fetch/axios,用 src/api/<module>.ts。
6. 写 Vitest 测试,覆盖四种状态。
7. 运行 typecheck/test/lint,全绿。
8. 输出改动清单和测试结果。
4.3 接 API¶
请把 <页面/组件> 从 mock 数据切换到真实 API。
输入:
- API:@docs/01-design/api/openapi.yaml#<operationId>
- 类型:@frontend/src/api/types.ts
- 现有 client:@frontend/src/api/client.ts
要求:
1. 使用统一 API client。
2. 类型来自 OpenAPI 生成文件,不手写重复类型。
3. 处理 loading/empty/error/no-permission。
4. 错误显示具体信息,保留用户输入。
5. 提交中禁用按钮。
6. 成功后更新本地状态,不整页刷新。
7. 补测试。
4.4 组件重构¶
请把 <组件> 中重复的 <部分> 抽成 <新组件>。
约束:
- 不改变视觉和交互。
- Props/Emits 用 TypeScript 定义。
- 新组件放在 <路径>。
- 补单元测试。
- 运行 typecheck/lint/test。
- 输出前后对比和测试结果。
4.5 前端审查¶
你是前端代码审查专家。请审查 <文件/分支>。
检查:
1. 魔法颜色/间距
2. 五种状态
3. 未取消的请求
4. 直接使用 axios/fetch
5. 可访问性
6. 重复组件
7. any/@ts-ignore
8. 测试覆盖行为
9. 密钥泄露
输出表格:文件、行号、问题、严重度、建议。
不要改代码。
5. 后端 / 技术设计阶段¶
5.1 技术选型 ADR¶
你是资深架构师。请为 <项目> 选择后端技术栈。
输入:
- 需求:@docs/00-discovery/spec.md
- 团队:<人数/经验>
- 约束:<时间/预算/部署环境>
- 候选:Go / Java / Rust
请输出 ADR:
1. 背景
2. 决策
3. 理由
4. 备选方案及不选原因
5. 后果(优点/缺点/风险)
6. 迁移/退出策略
5.2 技术设计¶
你是资深架构师。请基于以下输入生成技术设计:
- 需求:@docs/00-discovery/spec.md
- 用户故事:@docs/00-discovery/user-story.csv
- 故事细节:@docs/00-discovery/user-story-details.md
- UI:@docs/02-ui/ui-spec.md
- 技术选型:@docs/01-design/adr/<adr>.md
输出:
1. docs/01-design/tech-design.md
2. docs/01-design/api/openapi.yaml
3. docs/01-design/db/schema.sql
4. docs/01-design/feature-implementation.md
5. docs/01-design/file-ownership.md
6. docs/01-design/test-strategy.md
7. docs/01-design/deployment.md
8. 更新 CLAUDE.md
约束:
- 不发明需求;不确定的列入“未决问题”。
- 统一错误格式/分页格式。
- 考虑多租户、审计、软删除。
- 请求隔离规则具体。
- 每个决策说明理由和替代方案。
- 输出前自查:故事是否有 API/表/测试。
5.3 架构批判¶
你是苛刻的架构评审专家。请审查:
- @docs/01-design/tech-design.md
- @docs/01-design/api/openapi.yaml
- @docs/01-design/db/schema.sql
- @docs/01-design/feature-implementation.md
找出:
1. 无法支撑需求的缺口
2. 前后端契约不一致
3. DB 约束/索引/迁移风险
4. 权限漏洞
5. 并发/事务/幂等风险
6. 单点/扩展性问题
7. 测试盲区
8. 过度设计
9. 文件所有权冲突
10. 缺失回滚
输出表格:编号、位置、问题、影响、建议、严重度。
5.4 API 契约生成¶
你是 API 设计专家。请为以下用户故事生成 OpenAPI 3.1 契约:
@docs/00-discovery/user-story-details.md#<story>
要求:
1. 统一错误格式 `{error:{code,message,request_id,details}}`。
2. 统一分页格式。
3. 所有字段有类型/约束/示例。
4. 所有错误响应有 schema。
5. 写操作支持 Idempotency-Key(如适用)。
6. 时间用 ISO 8601 UTC。
7. 输出 operationId、summary、security。
8. 通过 redocly/spectral lint。
5.5 数据库设计¶
你是数据库设计专家。请基于以下故事生成 schema:
@docs/00-discovery/user-story-details.md#<story>
要求:
1. 主键/外键/唯一约束。
2. 高频查询索引。
3. 软删除/审计/多租户字段。
4. 状态字段和检查约束。
5. 迁移文件名和顺序。
6. 大表变更策略。
7. 回滚方案。
输出 PostgreSQL DDL + 设计说明。
6. 编码阶段¶
6.1 Agent 任务书¶
# Agent 任务书:<STORY_ID> <标题>
## 角色
你是 <后端/前端/测试> 工程师,负责 <STORY_ID>。
## 目标
<一句话目标>
## 必读
- CLAUDE.md
- docs/01-design/api/openapi.yaml#<operationId>
- docs/01-design/db/schema.sql#<table>
- docs/01-design/feature-implementation.md#<anchor>
- docs/01-design/file-ownership.md
## 文件所有权
可改:
- <path>
禁止改:
- <path>
## 契约
- API:<operationId>
- 错误码:<list>
- 幂等:<策略>
- 事务:<边界>
## 验收标准
<AC-1 ~ AC-n>
## 测试要求
- <unit>
- <integration>
- 命令:<command>
## 完成定义
- 编译通过
- 测试全绿
- lint/vet 通过
- 生成报告
- 更新 CSV
- 提交 Git
## 停止条件
- 契约冲突 → 输出 CR
- 需要改共享文件 → 输出变更请求
- 测试无法通过 → 附日志
- 需求缺失 → 列出问题
6.2 后端实现¶
请实现 <STORY_ID> 的后端功能。
输入:
- 任务书:<粘贴或引用>
- 契约:@docs/01-design/api/openapi.yaml#<operationId>
- 实现细节:@docs/01-design/feature-implementation.md#<anchor>
流程:
1. 读契约,列出实现计划(≤10 步),等我确认。
2. 先写 failing test。
3. 实现最小代码让测试通过。
4. 补边界/权限/错误码测试。
5. 跑 `go test -race ./...`、`go vet ./...`、lint。
6. 生成功能报告。
7. 更新 CSV(用脚本)。
8. 提交。
禁止:
- 改未授权文件
- 删/跳过测试
- 改契约
- 输出密钥/令牌
6.3 前端实现¶
请实现 <STORY_ID> 的前端功能。
输入:
- UI:@docs/02-ui/ui-spec.md#<anchor>
- API 类型:@frontend/src/api/types.ts
- 组件库:@frontend/src/components/ui/
- 任务书:<粘贴或引用>
流程:
1. 列出组件拆解和状态清单。
2. 实现页面/组件。
3. 处理 loading/empty/error/no-permission。
4. 接 API,使用统一 client。
5. 写 Vitest 测试。
6. 跑 typecheck/lint/test/build。
7. 截图(Chrome MCP)并保存到 docs/04-qa/screens/。
8. 生成报告。
6.4 集成¶
你是集成工程师。请按顺序合并以下分支:
<分支列表>
要求:
1. 每次合并后跑 make test / make lint。
2. 冲突时停止,输出冲突文件和原因,不要盲目 ours/theirs。
3. 合并后跑全量测试 + race。
4. 更新 CSV。
5. 生成集成报告。
6. 测试失败时定位到故事,通知对应 Agent,不要自己改业务逻辑。
6.5 Bug 修复¶
请修复 <BUG_ID>。
输入:
- 缺陷:docs/04-qa/defects.md#<anchor>
- 失败 manifest:docs/04-qa/manifests/<story>.json
- 截图:<path>
- 日志:<关键日志,不要全量>
要求:
1. 先写复现测试。
2. 修根因,不要只改表面。
3. 跑相关测试 + 全量测试。
4. 更新缺陷状态和修复提交。
5. 不改无关文件。
6. 输出根因、修复、测试结果。
6.6 代码审查¶
你是资深代码审查员。请审查 <分支/PR>。
输入:
- diff:<git diff>
- 故事:<details>
- 契约:<openapi>
- 实现细节:<feature-implementation>
按维度审查:
1. 契约一致性
2. 权限与安全
3. 事务/并发/幂等
4. 错误处理
5. 测试质量
6. 可观测性
7. 可维护性
8. 未授权文件改动
9. 敏感信息泄露
输出 P0/P1/P2 问题,附文件/行号/建议。
不要改代码。
7. 测试阶段¶
7.1 E2E¶
你是 E2E 测试工程师。请用 Chrome MCP 验证 <STORY_ID>。
环境:
- 前端:<url>
- API:<url>
- 测试账号:<从环境变量读取>
- 数据前缀:e2e-<run_id>-<story>-
步骤:
1. 登录。
2. 进入 <页面>。
3. <操作>
4. 断言 <预期>。
5. 异常路径:<...>
6. 每一步:关键截图保存,JS 断言,写入 manifest。
7. 结束检查 console/network/5xx。
8. 生成 docs/04-qa/manifests/<story>.json。
9. 输出摘要,不贴大段 HTML。
约束:
- 只操作测试数据。
- 截图只保存,不回读模型。
- 失败保留现场,不继续瞎点。
7.2 测试质量审查¶
你是测试审查专家。请审查 <测试文件/目录>。
检查:
1. 是否真的会失败(是否有有效断言)
2. 是否覆盖正常/异常/权限/边界
3. 是否使用真实依赖(集成测试)
4. 是否有并发测试
5. 是否有跳过/删除测试
6. 是否只调用不断言
7. 是否有硬编码测试数据
输出问题列表 + 建议补充的用例。
7.3 Word 报告生成¶
请基于 @docs/04-qa/manifests/<story>.json 生成 Word 验收报告。
要求:
1. 使用 scripts/build_test_report.py。
2. 包含:封面、概要、环境、验收标准覆盖、步骤+截图、控制台/网络错误、缺陷、结论。
3. 中文字体设置为 Microsoft YaHei。
4. 截图宽度 6.2 英寸。
5. 敏感信息脱敏。
6. 输出 docs/04-qa/e2e-report-<env>-<date>.docx。
7. 生成后检查图片数量和文件大小。
7.4 人工走查辅助¶
请把 <Word 报告> 中的可疑点整理成清单:
- 截图与预期不一致
- 错误提示不清晰
- 缺少状态
- 文案问题
- 性能问题
- 权限异常
每条给:页码/步骤、问题、建议、严重度。
不要改代码。
8. 部署与线上¶
8.1 部署准备(不执行)¶
你是发布工程师。请准备 <env> 发布,但不要执行。
输入:
- 版本:<commit/tag>
- 变更:<release notes>
- 回滚版本:<previous>
- 迁移:<files>
输出:
1. 发布前检查清单逐项结果
2. 将要执行的命令(按顺序)
3. 每步验证方法
4. 回滚命令
5. 风险和注意事项
等我回复“批准发布”后再执行。
8.2 部署执行¶
请把 <tag> 部署到 <env>。
前提:
- CI 全绿
- 人工已批准
- 目标:<cluster/service/bucket>
步骤:
1. 确认 `aws sts get-caller-identity` 是 <env> 账号。
2. 构建/推送镜像。
3. 更新服务并等待稳定。
4. 前端构建/同步/失效。
5. 冒烟:/healthz、/readyz、首页 200。
6. 输出镜像 tag、任务定义版本、时间、冒烟结果。
7. 更新发布记录和 CSV。
约束:
- 不操作其他环境。
- 不改 IaC。
- 凭证/权限错误立即停止。
8.3 线上验证¶
你是生产验证工程师。请用 Chrome MCP 在生产验证 <STORY_ID>。
环境:
- URL:<prod>
- 版本:<version>
- 测试账号/租户:<...>
- 数据前缀:e2e-<run_id>-<story>-
安全约束:
1. 只操作测试租户/带前缀数据。
2. 不删除/修改非本次数据。
3. 不触发支付/群发/真实通知。
4. 不修改权限/配置。
5. 报告脱敏。
6. 遇到真实数据立即停止。
步骤:<...>
输出:manifest、截图、Word 报告、摘要。
失败时:保留证据,停止写操作,报告是否回滚。
8.4 事故复盘¶
你是事故复盘负责人。请基于以下信息生成复盘:
- 时间线
- 影响面
- 根因
- 处置过程
- 证据(日志/指标/request_id)
输出:
1. 事故摘要
2. 时间线
3. 根因分析(5 Whys)
4. 做得好/待改进
5. 行动项(负责人/截止日期)
6. 防止复发的测试/监控/流程变更
不要指责任何人,聚焦系统改进。
9. 上下文与项目管理¶
9.1 会话启动¶
9.2 上下文压缩¶
请把当前会话的进展总结成一份交接文档:
- 已完成
- 未完成
- 关键决策
- 修改的文件
- 测试状态
- 下一步
- 风险
输出到 docs/03-dev/handoff-<story>-<date>.md。
9.3 任务拆分¶
9.4 变更请求¶
请为以下契约变更生成 CR:
- 变更内容
- 原因
- 影响的 API/表/前端/测试
- 兼容性
- 迁移方案
- 回滚方案
输出 docs/01-design/change-requests/CR-<id>.md。
10. 模板索引¶
| 模板 | 路径 | 用途 |
|---|---|---|
| 规格说明书 | 模板/spec.md | 需求阶段 |
| 用户故事 CSV | 模板/user-story.csv | 状态总表 |
| 故事细节 | 模板/user-story-details.md | 实现细节 |
| 技术设计 | 模板/tech-design.md | 架构 |
| 功能实现细节 | 模板/feature-implementation.md | 施工图 |
| 项目宪法 | 模板/CLAUDE.md | AI 约定 |
| 常用命令 | 模板/Makefile | dev/test/lint/e2e/report |
| Agent 任务书 | 模板/agent-brief.md | 并行开发 |
| 功能报告 | 模板/feature-report.md | 每故事一份 |
| E2E manifest | 模板/e2e-manifest.json | 测试证据 |
| 部署检查清单 | 模板/deploy-checklist.md | 发布 |
| QA 检查清单 | 模板/qa-checklist.md | 验收 |
11. 提示词反模式¶
| 反模式 | 问题 | 修正 |
|---|---|---|
| “帮我做个系统” | 没有范围 | 先访谈,再 spec |
| “代码写好点” | 不可执行 | 明确规范/测试/门禁 |
| “你自己看着办” | AI 会发明 | 给契约和边界 |
| “全部做完再告诉我” | 无法纠偏 | 小步、每步验证 |
| “不要问我,直接做” | 错误累积 | 关键决策停下来问 |
| “把整个仓库读一遍” | token 爆炸 | rg 定位 + 精确引用 |
| “截图给我看” | 成本高 | 文本/JS 优先 |
| “测试过了就行” | 可能是假测试 | 审查测试 + E2E |
| “先上线再说” | 事故 | 门禁 + 回滚 |
| “AI 说完成了” | 没有证据 | DoD + 证据链 |