Forge prd
Forge — 文档驱动的 AI 辅助开发框架 | Document-driven AI development framework with 14 Skills covering brainstorm → PRD → design → engineering → QA → review → ship → retrospective
npx -y skills add yike-gunshi/forge-skills --skill forge-prdAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 11 stars11 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
产品诊断与 PRD 迭代:诊断根因(设计缺陷/实现偏离/PRD 遗漏),必要时反驳需求,更新 PRD 并生成带异常态门禁的 Feature Spec。 触发方式:用户说"更新PRD"、"调整需求"、"迭代PRD"、"forge-prd"、描述产品问题、需要修改产品需求时。
SKILL.md
16.3 KB, as published. Nobody here has run it
文档落地路径:遵循 forge-doc-policy 规范。完整白名单 + frontmatter schema 见
~/.claude/skills/forge-doc-policy/doc-paths.md。 当前文档加载契约:先读项目CLAUDE.md、docs/README.md、docs/INDEX.md和根级当前真相源;长 changelog 和 raw archive 只在追溯历史原因时加载。详见~/.claude/skills/_shared/current-doc-loading.md。
/forge-prd:产品诊断与 PRD 迭代管理器
流程总览
全程中文。每个步骤结束后暂停等待用户反馈。
用户描述问题/需求
│
▼
┌─ 第0步:定位 ──────────────────────────┐
│ Glob 搜索 PRD / CHANGELOG │
│ ├─ 找到 PRD → 迭代模式 │
│ ├─ 没找到 → [询问用户] 是否创建模式 │
│ └─ 没找到 CHANGELOG → 标记第4步新建 │
└──────────────────────────────────────────┘
│
▼
┌─ 第1步:理解现状 ─────────────────────────┐
│ 读 PRD + CHANGELOG + Agent(Explore)源码 │
│ 热点分析(模块修改频次) │
│ → [询问用户] 总结现状,确认理解是否正确 │
│ → [询问用户] 本次迭代需求是什么? │
└─────────────────────────────────────────────┘
│
▼
┌─ 第2步:诊断与审查 ──────────────────────────┐
│ 自动判定层级:轻量 / 标准 / 深度 │
│ ┌─ 所有层级 ─────────────────────────┐ │
│ │ ① 问题归因(设计缺陷/偏离/遗漏) │ │
│ │ ② 10星挑战(当前几星→10星差距) │ │
│ └─────────────────────────────────────┘ │
│ ┌─ 标准+深度 ─────────────────────────┐ │
│ │ ③ 模块健康度检查 │ │
│ └─────────────────────────────────────┘ │
│ ┌─ 仅深度 ───────────────────────────┐ │
│ │ ④ 假设审查 ⑤ 反驳机制 │ │
│ └─────────────────────────────────────┘ │
│ → [询问用户] 展示诊断结果,确认方向 │
└───────────────────────────────────────────────┘
│
▼
┌─ 第3步:方案确认 ─────────────────────────────┐
│ 逐项讨论变更点(当前→目标→推荐→可选) │
│ → [多轮询问用户] 每个变更点确认 │
│ → [询问用户] 汇总变更清单,最终确认 │
│ ⚠️ 门禁:确认前不写任何文件 │
└────────────────────────────────────────────────┘
│ 用户确认 ✓
▼
┌─ 第4步:写入文档 ─────────────────────────────┐
│ A. 更新/新建 Feature Spec(.features) │
│ B. 将最终有效结论回写 PRD 当前事实 │
│ C. 更新 CHANGELOG 历史账本 │
│ → 输出最终总结 │
└────────────────────────────────────────────────┘
可视化规范
需要图示辅助判断时(架构图/流程对比/状态机),先读 references/prd-details.md 的可视化规范节。
提问格式与批量策略见
~/.claude/skills/_shared/interaction-protocol.md。
第0步:定位项目、PRD 与 CHANGELOG
-
根据用户提供的目录线索,用 Glob 搜索 PRD 文件:
搜索模式(按优先级): - {项目目录}/docs/PRD.md - {项目目录}/docs/prd.md - {项目目录}/docs/*PRD* - {项目目录}/docs/*需求* - {项目目录}/PRD.md - {项目目录}/**/PRD*.md -
搜索 CHANGELOG 文件(不写死文件名,模式匹配):
搜索模式: - {项目目录}/docs/*changelog*(不区分大小写) - {项目目录}/docs/*CHANGELOG* - {项目目录}/docs/*变更* - {项目目录}/**/CHANGELOG* - {项目目录}/**/changelog* -
分支判断:
- 找到 PRD → 进入「迭代模式」(第1步)
- 找不到 PRD,和用户确认是否进入「创建模式」,用户确认后生成PRD(第1步-替代)
- 找不到 CHANGELOG → 标记需要在第4步新建(基于项目文档 + git history 回溯生成)
第1步:理解现状(迭代模式)
- 读取
docs/README.md、docs/INDEX.md和docs/PRD.md当前真相源。 - 按需读取
docs/modules/*、当前代码和相关接口/表。 - 读取
docs/CHANGELOG.md顶部索引;只有本次问题需要历史原因时,才读取PRD-CHANGELOG.md的相关段落,不默认扫全文。 - CHANGELOG 热点分析:
- 统计各模块被修改的频次
- 识别「反复修改但未根治」的模块(同一模块在多个版本中出现)
- 如果发现热点模块与用户本次需求相关,主动提示
- 用 Agent 工具深度分析项目源码:
- 使用 Explore 子代理扫描项目结构、关键文件、技术栈
- 重点关注:当前实现与 PRD 描述的差异、用户描述的问题
- 向用户总结当前产品状态(3-5句),确认理解是否正确
- 如果项目模块较多(≥4个)或存在热点模块数据,考虑用 widget 渲染指标卡片和热点柱状图
- 简单项目直接文字总结即可
- 询问用户本次迭代的需求或问题
第1步(替代):从零创建 PRD
项目没有 PRD 时走此分支:深度读代码 + 多轮交互确认后生成完整 PRD。 细则必读 references/prd-details.md;模板用 references/prd-template.md。
第2步:诊断与审查(自适应深度)
审查深度自动判定
| 层级 | 触发条件 | 做什么 |
|---|---|---|
| 轻量审查 | 单个小改动(改阈值、调文案、修参数) | 归因 → 10星挑战 → 确认方案 |
| 标准审查 | 功能调整、多个小改动集中在同一区域 | 归因 + 模块健康度 + 10星挑战 + 方案对比 |
| 深度审查 | 新模块、架构调整、或 CHANGELOG 显示某模块反复修改 | 假设审查 + 10星挑战 + 反驳机制 |
自动升级规则:
- 多个小需求集中在同一模块 → 从轻量升级到标准
- CHANGELOG 中某模块在 ≥3 个版本中被修改 → 升级到深度,主动告知用户:"这个模块已经在 vX.X、vX.X、vX.X 中反复修改,建议做一次彻底审查"
- 用户主动要求更深度的审查 → 升级
诊断流程(所有层级通用)
-
问题归因:
- 产品设计缺陷:PRD 中对该场景的定义就不完整或不合理
- 实现偏离 PRD:PRD 写得对但代码实现偏离了
- PRD 遗漏场景:PRD 根本没考虑到这个场景
- 明确告知用户属于哪种情况
-
10星挑战(所有层级必做):
- 当前方案几星?
- 10星版本是什么样的?
- 差距是"小"(可以做完)还是"大"(超出当前范围)?
- 轻量审查:简要挑战即可(1-2句)
- 标准/深度审查:展开讨论,用并排对比图展示当前 vs 10星方案
-
模块健康度检查(标准/深度层级):
- 该模块在 CHANGELOG 中的修改历史
- 该模块当前实现与 PRD 的一致性
- 是否存在关联模块需要同步调整
深度审查额外步骤(借鉴 cn-plan-product)
-
假设审查:
- PRD 中对该模块的隐含假设是什么?
- 这些假设是否仍然成立?
- 用户的新需求是否暴露了错误的假设?
-
反驳机制:
- 如果认为用户提的需求放在这里不合适,直接说出来
- 给出替代方案或建议砍掉某些不需要的功能
- 从整体产品视角评估,而非只看单个需求点
诊断输出
向用户展示:
- 问题归因结果
- 模块健康度评估(如适用)
- 建议的方向:新增功能 / 优化现有功能 / 砍掉不需要的功能 / 调整架构
可视化判断:根据诊断复杂度决定是否用 widget:
- 归因路径涉及多个因果环节 → 用 SVG 流程图展示归因链
- 涉及多个模块的健康度评估 → 用 SVG 评分卡矩阵(Emerald=健康,Amber=需关注,Rose=需修复)
- 10 星挑战(标准/深度层级) → 用并排对比图展示当前 vs 10星方案
- 单一明确问题 → 直接文字说明即可
等待用户确认方向后进入第3步。
第3步:方案确认
通过 AskUserQuestion 逐项讨论每个变更点:
- 当前行为:现在是什么样的
- 目标行为:期望变成什么样的
- 推荐方案:给出推荐并说明理由
- 可选方案:列出替代方案(如有),标注完整度
- 做与不做:明确确认什么做、什么不做、什么推迟,以及原因
可视化判断:
- 单个变更点的讨论 → 文字即可
- 多个可选方案需要对比 → 用 SVG 并排对比图展示各方案优劣
- 变更点涉及复杂的行为差异 → 用「当前 vs 目标」对比图
讨论完成后,汇总变更清单:
- 变更项 ≤3 个 → 文字清单
- 变更项 ≥4 个 → 考虑用交互式 widget 汇总(含类型颜色编码和优先级标注)
通过 AskUserQuestion 请用户最终确认。
⚠️ 关键门禁:在用户明确确认变更清单之前,不得写入任何文件(CHANGELOG、PRD)。 第3步的产出仅在对话中展示,不写入磁盘。
第3.5步:生成 Feature Spec(用户确认门禁)
门禁不变:Feature Spec 需用户确认后才可进开发;每个功能点至少 3 种异常态 (空态/错误态/降级态,涉本地存储加陈旧态),异常态的 Then 必须写明确 UI 行为。
交给用户前先跑四点自审(Superpowers v5 Spec Self-Review,约 30 秒抓 4-5 个问题):
- 占位符扫描——还有 TBD/TODO/含糊需求吗?有就先补
- 内部一致性——章节之间打架吗?结构和功能描述对得上吗?
- 范围检查——一个实现计划装得下吗?装不下就拆
- 歧义检查——哪条需求能读出两种意思?选定一种写死 自审改完再给用户确认;用户要求修改后必须重跑自审。 生成细则必读 references/prd-details.md;模板用 references/feature-spec-template.md。
第3.6步:生成/更新项目 CLAUDE.md
首次运行时(项目根目录不存在 CLAUDE.md):
- 读取 references/project-claude-md-template.md
- 填充项目名称、文档路径等变量
- 写入
{项目根目录}/CLAUDE.md
已有 CLAUDE.md 时:
- 读取现有内容
- 检查是否已包含
## Forge 工作流章节 - 如果没有,在文件末尾追加 Forge 章节(不覆盖已有内容)
- 如果已有,跳过(不重复写入)
第4步:写入文档(用户确认后执行)
前提:用户已在第3步确认变更清单,且在第3.5步确认 Feature Spec。 确认后一次性产出并写入以下内容:
A. 更新 CHANGELOG
在 CHANGELOG 文件中追加本次变更记录(如果 CHANGELOG 不存在,新建并基于 git history 回溯生成历史记录)。
参考格式见 references/prd-template.md 的 CHANGELOG 格式部分。
每条变更记录包含:
- 时间戳:精确到日期
- 变更背景:为什么要做这次变更
- 用户原始需求:用户的原话或需求描述
- 设计方案:采用的方案摘要
- 关键决策表:议题 / 决定 / 原因
- 影响范围:新增、修改、删除了什么
B. 写入 Feature Spec
- 将第3.5步用户确认的 Feature Spec 写入
.features/{feature-id}/feature-spec.md。 - 更新
.features/{feature-id}/status.md和.features/_registry.md。 - Feature Spec 必须包含用户流程、页面/系统结构、Given/When/Then、验收清单和非目标。
- 不把完整 Feature Spec 长期塞进
docs/PRD.md。
C. 更新 PRD 当前事实
- 只把本轮确认后仍有效的产品事实回写到
docs/PRD.md。 - 新增功能 → 更新对应页面/模块职责、输入/处理/输出、接口/read model 映射。
- 修改功能 → 原位更新当前规格,不在正文堆版本号和历史过程。
- 砍掉的功能 → 从当前事实移除,必要时在“非目标/产品债”中保留一句当前边界。
- 涉及表/API/read model 的变化 → 同步到对应映射和验收方式。
- 自洽性检查:PRD 当前事实、Feature Spec、CHANGELOG 互不矛盾。
D. 产出迭代交付说明
在 PRD 的「本次迭代摘要」中包含面向下游 Agent 的交付说明:
- 变更摘要(3-5行)
- 关键流程变化(如有流程图则更新)
- 前端变更要点:涉及哪些页面/组件、交互变化、视觉变化
- 后端变更要点:涉及哪些 API/数据模型、逻辑变化
- 设计变更要点:配色/布局/组件样式变化(如适用)
- 测试验收标准:每个变更点对应的验收条件
- Agent 补充信息:
- 受影响的文件路径提示(基于源码分析)
- 数据库迁移注意事项(如涉及 schema 变更)
- 兼容性提醒(如涉及 API 变更对前端的影响)
- 关联变更提示(改 A 可能需要同步改 B)
此部分内容在对话中与用户确认核心方向后,由 skill 补充 Agent 所需的技术细节,一并写入 PRD。
写入完成后,输出最终总结:
- 如果本次迭代变更较多(≥4项)或涉及多个模块 → 用 widget 渲染完成仪表盘(指标卡片 + 变更统计图)
- 简单迭代 → 文字总结即可,包含:项目名、版本变更、诊断层级、变更数、文件状态
Feature 状态管理(.features/ 架构)
核心三条:① 每个 feature 一个 .features/{id}/status.md,prd 行本 skill 负责更新;
② 全局注册表 _registry.md 同步 heartbeat;③ 状态值只用 ⏳/🔄/✅/❌。
字段与操作细则见 references/prd-details.md。
完整性原则
- PRD 是给后续 agent(设计、开发、QA)看的,必须准确、完整、无歧义
- CHANGELOG 是给人和 agent 看的,需要记录决策上下文和"为什么"
- 宁可多问一个问题,不要假设用户意图
- 每个变更点都要有明确的「当前行为」和「目标行为」对比
- 用户描述的是症状,skill 要做的是诊断——找到根因,而非只处理表面
- 对于带前端的项目,PRD 应覆盖设计系统、配色方案、交互细节
- 对于纯后端项目,PRD 应覆盖 API 设计、数据模型、性能要求
- 如果认为需求不合理,直接反驳并给出替代方案
资源
- PRD 模板与 CHANGELOG 格式:references/prd-template.md
- Feature Spec 模板:references/feature-spec-template.md
- 项目 CLAUDE.md 模板:references/project-claude-md-template.md