Skillquality 0.46

forge-prd

产品诊断与 PRD 迭代管理器。用户描述遇到的问题或需求,skill 诊断根因(产品设计缺陷/实现偏离/PRD遗漏)、审查模块健康度、设计方案、挑战假设、必要时反驳需求,最终更新 PRD 和 CHANGELOG。支持从零创建 PRD、迭代已有 PRD,并记录前端/全栈需求的视觉决策需求(Image 2/Figma/真实截图)。触发方式:用户说"更新PRD"、"调整需求"、"迭代PRD"、"forge-prd"、描述产品问题、需要修改项目产品需求时使用。

Price
free
Protocol
skill
Verified
no

What it does

/forge-prd:产品诊断与 PRD 迭代管理器

流程总览

用户报告症状/需求
  → 第0步:定位项目、PRD、CHANGELOG
  → 第1步:理解现状(读 PRD + CHANGELOG + 源码)
  → 第2步:诊断与审查(自适应三层深度)
  → 第3步:方案确认(多轮交互 → 用户最终确认变更清单)
  → 第4步:写入文档(确认后才写 CHANGELOG + PRD 更新 + 迭代交付说明)

全程中文。每个步骤结束后暂停等待用户反馈。

交互流程图

用户描述问题/需求
       │
       ▼
┌─ 第0步:定位 ──────────────────────────┐
│  Glob 搜索 PRD / CHANGELOG              │
│  ├─ 找到 PRD → 迭代模式                 │
│  ├─ 没找到 → [询问用户] 是否创建模式     │
│  └─ 没找到 CHANGELOG → 标记第4步新建     │
└──────────────────────────────────────────┘
       │
       ▼
┌─ 第1步:理解现状 ─────────────────────────┐
│  读 PRD + CHANGELOG + Agent(Explore)源码   │
│  热点分析(模块修改频次)                   │
│  → [询问用户] 总结现状,确认理解是否正确    │
│  → [询问用户] 本次迭代需求是什么?          │
└─────────────────────────────────────────────┘
       │
       ▼
┌─ 第2步:诊断与审查 ──────────────────────────┐
│  自动判定层级:轻量 / 标准 / 深度             │
│  ┌─ 所有层级 ─────────────────────────┐      │
│  │  ① 问题归因(设计缺陷/偏离/遗漏)  │      │
│  │  ② 10星挑战(当前几星→10星差距)    │      │
│  └─────────────────────────────────────┘      │
│  ┌─ 标准+深度 ─────────────────────────┐     │
│  │  ③ 模块健康度检查                   │      │
│  └─────────────────────────────────────┘      │
│  ┌─ 仅深度 ───────────────────────────┐      │
│  │  ④ 假设审查  ⑤ 反驳机制            │      │
│  └─────────────────────────────────────┘      │
│  → [询问用户] 展示诊断结果,确认方向         │
└───────────────────────────────────────────────┘
       │
       ▼
┌─ 第3步:方案确认 ─────────────────────────────┐
│  逐项讨论变更点(当前→目标→推荐→可选)        │
│  → [多轮询问用户] 每个变更点确认               │
│  → [询问用户] 汇总变更清单,最终确认           │
│  ⚠️ 门禁:确认前不写任何文件                   │
└────────────────────────────────────────────────┘
       │ 用户确认 ✓
       ▼
┌─ 第4步:写入文档 ─────────────────────────────┐
│  A. 更新/新建 CHANGELOG                       │
│  B. 更新 PRD 正文(版本号+迭代摘要+功能章节)  │
│  C. 产出迭代交付说明(面向下游 Agent)          │
│  → 输出最终总结                                │
└────────────────────────────────────────────────┘

可视化规范

核心原则:在向用户展示信息时,动态判断是否使用 widget 可视化。不是所有内容都需要画图——只在可视化明显优于纯文本时才使用。

如判断需要可视化,先读取 ../_shared/visual-decision-layer.md

  • Mermaid / show-widget 用于流程、因果、矩阵、健康度、10 星挑战等结构化判断。
  • Image 2 用于前端观感、页面气质、复杂状态、用户需要“看见效果”才能确认的决策。
  • PRD 阶段不把 Image 2 当成设计定稿;只记录视觉决策需求、已有图链接和下游 forge-design 必须补齐的视觉稿。

判断标准(满足任一即用 widget):

  • 对比关系:方案 A vs B、当前 vs 目标、版本间差异
  • 多维度数据:≥3 个模块的评分/状态/频次需要并排展示
  • 流程/因果链:多步骤流程、归因路径、决策树
  • 统计分布:频次、占比、趋势等数值型数据
  • 信息量大且结构化程度高:变更清单 ≥5 项、多模块健康度评估

不需要 widget 的场景

  • 简单的 1-2 句确认性问题
  • 单个变更点的讨论(纯文字更直接)
  • 用户只需要 yes/no 的决策
  • 信息本身就是线性叙述,没有对比或结构

使用前:首次生成 widget 前,调用 mcp__codepilot-widget__codepilot_load_widget_guidelines 加载设计规范。

推荐的 widget 类型参考

信息类型推荐 widget典型场景
多指标概览指标卡片仪表盘产品状态总结、迭代完成总结
频次/分布数据Chart.js 柱状图CHANGELOG 热点分析、变更统计
因果/流程SVG 流程图问题归因路径、决策流程
多维评估SVG 矩阵/评分卡模块健康度、方案评分
A vs BSVG 并排对比当前 vs 目标、方案对比、10星挑战
结构化清单交互式 HTML变更清单(≥5项时)

设计要求(当决定使用 widget 时):

  • 遵循 widget guidelines 的配色和布局规范(Indigo 主色,Slate 结构色)
  • 每个 widget ≤ 3000 字符,解释文字放在代码块外
  • SVG 使用 width="100%" viewBox="0 0 680 H"
  • Chart.js 图表必须 responsive,禁用 legend
  • 复杂信息拆成多个 widget,交替文字和可视化

AskUserQuestion 格式规范

每次提问遵循以下结构:

  1. 重新聚焦:说明当前项目名称和正在讨论的变更。(1-2句)
  2. 通俗解释:用简单语言说清楚要做什么、为什么。不用函数名、不用内部术语。
  3. 最佳方案:作为 CEO 和专业 AI 产品经理寻找和思考最佳方案。
  4. 给出推荐推荐:[方案X],因为[一句话原因]。标注完整度 X/10。
  5. 列出选项A) ... B) ... C) ...
  6. 可视化辅助(按需):如果选项涉及 ≥3 个方案对比或复杂的流程差异,用 show-widget 渲染对比图辅助决策。简单的 A/B 选择不需要画图。

假设用户已经20分钟没看窗口。如果你需要读源码才能理解自己的解释,说明解释太复杂了。


第0步:定位项目、PRD 与 CHANGELOG

  1. 根据用户提供的目录线索,用 Glob 搜索 PRD 文件:

    搜索模式(按优先级):
    - {项目目录}/docs/PRD.md
    - {项目目录}/docs/prd.md
    - {项目目录}/docs/*PRD*
    - {项目目录}/docs/*需求*
    - {项目目录}/PRD.md
    - {项目目录}/**/PRD*.md
    
  2. 搜索 CHANGELOG 文件(不写死文件名,模式匹配):

    搜索模式:
    - {项目目录}/docs/*changelog*(不区分大小写)
    - {项目目录}/docs/*CHANGELOG*
    - {项目目录}/docs/*变更*
    - {项目目录}/**/CHANGELOG*
    - {项目目录}/**/changelog*
    
  3. 分支判断:

    • 找到 PRD → 进入「迭代模式」(第1步)
    • 找不到 PRD,和用户确认是否进入「创建模式」,用户确认后生成PRD(第1步-替代)
    • 找不到 CHANGELOG → 标记需要在第4步新建(基于项目文档 + git history 回溯生成)

第1步:理解现状(迭代模式)

  1. 读取完整 PRD 文档
  2. 读取 CHANGELOG(如果存在),了解历史变更
  3. CHANGELOG 热点分析
    • 统计各模块被修改的频次
    • 识别「反复修改但未根治」的模块(同一模块在多个版本中出现)
    • 如果发现热点模块与用户本次需求相关,主动提示
  4. 用 Agent 工具深度分析项目源码:
    • 使用 Explore 子代理扫描项目结构、关键文件、技术栈
    • 重点关注:当前实现与 PRD 描述的差异、用户描述的问题
  5. 向用户总结当前产品状态(3-5句),确认理解是否正确
    • 如果项目模块较多(≥4个)或存在热点模块数据,考虑用 widget 渲染指标卡片和热点柱状图
    • 简单项目直接文字总结即可
  6. 询问用户本次迭代的需求或问题

第1步(替代):从零创建 PRD

当项目没有 PRD 文件时执行此流程。

  1. 全面阅读项目代码

    • 用 Agent(Explore) 系统性扫描项目目录结构
    • 读取 README、package.json/requirements.txt 等配置文件
    • 读取核心源码文件,理解功能模块
    • 读取数据库 schema(如有)
    • 查看 git log 了解项目演进历史
  2. 与用户多轮确认(每轮一个主题,通过 AskUserQuestion):

    • 第1轮:产品定位 — "这个项目解决什么问题?给谁用?核心价值是什么?"
    • 第2轮:功能边界 — 列出从代码中识别到的功能模块,确认是否完整
    • 第3轮:技术约束 — 确认技术限制、第三方依赖、性能要求
    • 第4轮:已知问题 — 确认当前存在的 bug 或体验问题
    • 第5轮:后续规划 — 确认近期计划做的功能
  3. 产出 PRD 初稿

  4. 新建 CHANGELOG

    • 基于项目文档 + git history 回溯生成历史版本记录
    • 记录 v1.0 初始版本
    • 写入 {项目目录}/docs/
  5. 向用户展示 PRD 结构和各章节概要,逐节确认后写入文件


第2步:诊断与审查(自适应深度)

审查深度自动判定

层级触发条件做什么
轻量审查单个小改动(改阈值、调文案、修参数)归因 → 10星挑战 → 确认方案
标准审查功能调整、多个小改动集中在同一区域归因 + 模块健康度 + 10星挑战 + 方案对比
深度审查新模块、架构调整、或 CHANGELOG 显示某模块反复修改假设审查 + 10星挑战 + 反驳机制

自动升级规则

  • 多个小需求集中在同一模块 → 从轻量升级到标准
  • CHANGELOG 中某模块在 ≥3 个版本中被修改 → 升级到深度,主动告知用户:"这个模块已经在 vX.X、vX.X、vX.X 中反复修改,建议做一次彻底审查"
  • 用户主动要求更深度的审查 → 升级

诊断流程(所有层级通用)

  1. 问题归因

    • 产品设计缺陷:PRD 中对该场景的定义就不完整或不合理
    • 实现偏离 PRD:PRD 写得对但代码实现偏离了
    • PRD 遗漏场景:PRD 根本没考虑到这个场景
    • 明确告知用户属于哪种情况
  2. 10星挑战(所有层级必做):

    • 当前方案几星?
    • 10星版本是什么样的?
    • 差距是"小"(可以做完)还是"大"(超出当前范围)?
    • 轻量审查:简要挑战即可(1-2句)
    • 标准/深度审查:展开讨论,用并排对比图展示当前 vs 10星方案
  3. 模块健康度检查(标准/深度层级):

    • 该模块在 CHANGELOG 中的修改历史
    • 该模块当前实现与 PRD 的一致性
    • 是否存在关联模块需要同步调整

深度审查额外步骤(借鉴 cn-plan-product)

  1. 假设审查

    • PRD 中对该模块的隐含假设是什么?
    • 这些假设是否仍然成立?
    • 用户的新需求是否暴露了错误的假设?
  2. 反驳机制

    • 如果认为用户提的需求放在这里不合适,直接说出来
    • 给出替代方案或建议砍掉某些不需要的功能
    • 从整体产品视角评估,而非只看单个需求点

诊断输出

向用户展示:

  • 问题归因结果
  • 模块健康度评估(如适用)
  • 建议的方向:新增功能 / 优化现有功能 / 砍掉不需要的功能 / 调整架构

可视化判断:根据诊断复杂度决定是否用 widget:

  • 归因路径涉及多个因果环节 → 用 SVG 流程图展示归因链
  • 涉及多个模块的健康度评估 → 用 SVG 评分卡矩阵(Emerald=健康,Amber=需关注,Rose=需修复)
  • 10 星挑战(标准/深度层级) → 用并排对比图展示当前 vs 10星方案
  • 单一明确问题 → 直接文字说明即可

等待用户确认方向后进入第3步。


第3步:方案确认

通过 AskUserQuestion 逐项讨论每个变更点:

  1. 当前行为:现在是什么样的
  2. 目标行为:期望变成什么样的
  3. 推荐方案:给出推荐并说明理由
  4. 可选方案:列出替代方案(如有),标注完整度
  5. 做与不做:明确确认什么做、什么不做、什么推迟,以及原因

可视化判断

  • 单个变更点的讨论 → 文字即可
  • 多个可选方案需要对比 → 用 SVG 并排对比图展示各方案优劣
  • 变更点涉及复杂的行为差异 → 用「当前 vs 目标」对比图

讨论完成后,汇总变更清单:

  • 变更项 ≤3 个 → 文字清单
  • 变更项 ≥4 个 → 考虑用交互式 widget 汇总(含类型颜色编码和优先级标注)

通过 AskUserQuestion 请用户最终确认。

⚠️ 关键门禁:在用户明确确认变更清单之前,不得写入任何文件(CHANGELOG、PRD)。 第3步的产出仅在对话中展示,不写入磁盘。


第3.5步:生成 Feature Spec(用户确认门禁)

前提:第3步变更清单已确认。 在写入任何文件之前,先生成 Feature Spec 给用户审阅。

目的

Feature Spec 是整个开发和 QA 的行为契约。它同时服务于:

  1. 向用户说明:整体交互设计和界面结构(全局→细节),让用户判断方向是否正确
  2. 向 QA 提供:可执行的验收检查表(Given/When/Then 场景),让测试有锚点

生成流程

  1. 读取参考模板references/feature-spec-template.md

  2. 结合第3步的变更清单,逐节生成 Feature Spec:

    • 用户流程总览:从全局视角画出用户在该功能中的完整流转路径(入口→步骤→出口),包含异常分支
    • 页面/系统结构
      • 前端项目:整体布局 → 各区块职责 → 具体组件(名称、职责、交互行为、CSS 约束)
      • 后端项目:API 拓扑 → 模块职责 → 数据流
      • 全栈项目:两者都写
    • 视觉决策记录(前端/全栈必填):
      • 已有 brainstorm / Image 2 / Figma / 真实截图链接
      • 仍需 forge-design 生成的视觉稿清单(桌面端、移动端、关键空态/错态)
      • 用户已经确认或明确否定的视觉方向
    • 行为场景:每个功能点 3 个 Given/When/Then 场景(正常 / 异常 / 边界),使用 SHALL/MUST 标记强制要求
    • 验收检查表:从行为场景自动提取,分为功能验证、视觉/设计合规(含具体 CSS 值)、流程完整性三类
  3. 措辞规范(吸收 RFC 2119):

    • SHALL / 必须 = 强制要求,违反即为 bug
    • SHOULD / 应该 = 推荐,有合理理由可偏离
    • MAY / 可以 = 可选
  4. 视觉合规项:如果存在 DESIGN.md,从中提取具体的 CSS 约束(颜色、字号、间距、圆角等)写入验收检查表。不只描述视觉意图,SHALL 包含具体属性值。

用户确认(⚠️ 关键门禁)

Feature Spec 生成后,通过 AskUserQuestion 展示给用户:

Feature Spec 已生成,请审阅:

一、用户流程:{流程概要,2-3 句话}
二、页面结构:{区块数量} 个区块,{组件数量} 个组件
三、行为场景:{功能点数量} 个功能点,共 {场景数量} 个场景
四、验收检查表:{检查项数量} 项(功能 X 项 + 视觉 Y 项 + 流程 Z 项)

A) 确认,进入文档写入和开发
B) 整体方向需要调整(说明哪里不对)
C) 细节需要修改(指出具体项)
D) 需要看完整文档再决定

如果用户选 D,输出完整的 Feature Spec 文本。

⚠️ 铁律:用户未确认 Feature Spec 前,不得进入第4步,不得写入任何文件。


第3.6步:生成/更新项目 CLAUDE.md

首次运行时(项目根目录不存在 CLAUDE.md):

  1. 读取 references/project-claude-md-template.md
  2. 填充项目名称、文档路径等变量
  3. 写入 {项目根目录}/CLAUDE.md

已有 CLAUDE.md 时

  1. 读取现有内容
  2. 检查是否已包含 ## Forge 工作流 章节
  3. 如果没有,在文件末尾追加 Forge 章节(不覆盖已有内容)
  4. 如果已有,跳过(不重复写入)

第4步:写入文档(用户确认后执行)

前提:用户已在第3步确认变更清单,且在第3.5步确认 Feature Spec。 确认后一次性产出并写入以下内容:

A. 更新 CHANGELOG

在 CHANGELOG 文件中追加本次变更记录(如果 CHANGELOG 不存在,新建并基于 git history 回溯生成历史记录)。

参考格式见 references/prd-template.md 的 CHANGELOG 格式部分。

每条变更记录包含:

  • 时间戳:精确到日期
  • 变更背景:为什么要做这次变更
  • 用户原始需求:用户的原话或需求描述
  • 设计方案:采用的方案摘要
  • 关键决策表:议题 / 决定 / 原因
  • 影响范围:新增、修改、删除了什么

B. 更新 PRD 正文

  1. 更新头部元信息:版本号递增、日期、状态
  2. 更新迭代摘要区(PRD 头部,保留所有版本):
    • 新增本次版本的摘要条目
    • 每个版本列:版本号、日期、核心变更点、对应 CHANGELOG 条目定位
  3. 更新功能章节
    • 新增功能 → 加入对应章节,标记 [vX.Y 新增]
    • 修改功能 → 原位更新,标记 [vX.Y 修改]
    • 砍掉的功能 → 移除或标记为已废弃
    • 需修复的问题 → 使用 [需修复][需改进][需修改] 标记
  4. 写入 Feature Spec 章节:将第3.5步用户确认的 Feature Spec 写入对应功能章节之后
  5. 更新数据模型:如涉及表结构或 API 变更
  6. 更新已知问题/改进计划:移除已解决的、新增发现的
  7. 更新技术约束:如有新约束
  8. 更新交互流程图:如交互有变
  9. 更新附录修改清单:按优先级列出所有需执行的修改
  10. 自洽性检查:确保 PRD 内各章节之间不矛盾(包括 Feature Spec 与功能描述的一致性)

C. 产出迭代交付说明

在 PRD 的「本次迭代摘要」中包含面向下游 Agent 的交付说明:

  • 变更摘要(3-5行)
  • 关键流程变化(如有流程图则更新)
  • 前端变更要点:涉及哪些页面/组件、交互变化、视觉变化
  • 后端变更要点:涉及哪些 API/数据模型、逻辑变化
  • 设计变更要点:配色/布局/组件样式变化(如适用)
  • 测试验收标准:每个变更点对应的验收条件
  • Agent 补充信息
    • 受影响的文件路径提示(基于源码分析)
    • 数据库迁移注意事项(如涉及 schema 变更)
    • 兼容性提醒(如涉及 API 变更对前端的影响)
    • 关联变更提示(改 A 可能需要同步改 B)

此部分内容在对话中与用户确认核心方向后,由 skill 补充 Agent 所需的技术细节,一并写入 PRD。


写入完成后,输出最终总结:

  • 如果本次迭代变更较多(≥4项)或涉及多个模块 → 用 widget 渲染完成仪表盘(指标卡片 + 变更统计图)
  • 简单迭代 → 文字总结即可,包含:项目名、版本变更、诊断层级、变更数、文件状态

Feature 状态管理(.features/ 架构)

核心原则

领域文档(PRD.md)只存内容,不存运行状态。 运行状态写入独立的 .features/ 目录,按 feature 隔离,支持多会话并行。

状态标记协议

标记含义
[⏳ 待处理]已规划,未开始
[🔄 进行中]当前正在执行
[✅ 已完成]执行完成
[❌ 失败]执行失败,需干预
[⏸️ 暂停]等待用户确认或外部依赖

forge-prd 是 Feature 的创建者

forge-prd 在第0步中负责创建 .features/{feature-id}/ 目录并注册到全局索引。

第0步额外操作:创建 Feature

  1. 生成 feature-id:基于需求描述生成简短的 kebab-case ID(如 dedup-optimizationchannel-mgmt-v2

  2. 创建目录和文件

    mkdir -p .features/{feature-id}
    
  3. 创建 status.md

    # Feature: {feature-id}
    ## 描述:{一句话需求描述}
    ## PRD 版本:vX.Y
    ## 创建时间:{ISO 8601}
    
    ## Pipeline
    | phase | status | skill | started | completed | note |
    |-------|--------|-------|---------|-----------|------|
    | prd | [🔄 进行中] | forge-prd | {时间} | — | 诊断阶段 |
    | design | [⏳ 待处理] | — | — | — | — |
    | eng | [⏳ 待处理] | — | — | — | — |
    | qa | [⏳ 待处理] | — | — | — | — |
    
  4. 注册到 _registry.md(不存在则新建):

    | feature-id | version | status | skill | heartbeat | branch | 描述 |
    |------------|---------|--------|-------|-----------|--------|------|
    | {id} | vX.Y | active | forge-prd | {时间} | {分支名} | {描述} |
    
  5. 版本号预留:读取 _registry.md 找最高版本号 → 预留下一个 → 写入注册表。版本号不回收。

状态更新时机

  1. 进入第1步时:创建 .features/{id}/ + status.md + 注册到 _registry.md,prd 行标记为 [🔄 进行中]
  2. 等待用户确认时:prd 行状态改为 [⏸️ 暂停],更新 heartbeat
  3. 第4步写入完成后:prd 行状态改为 [✅ 已完成],记录 completed 时间,更新 heartbeat
  4. 失败/中断时:prd 行状态改为 [❌ 失败],note 填失败原因

Heartbeat 规则

每次写入 status.md 时,同步更新 _registry.md 中该 feature 的 heartbeat 字段。

跨 Agent 协作

  • 其他 skill 通过读取 .features/{id}/status.md 的 Pipeline 表来感知 forge-prd 的状态
  • forge-dev 启动时读取 _registry.md,如果某 feature 的 heartbeat 超过 30 分钟且 status 仍为 active,触发孤儿检测警告
  • 领域文档(PRD.md)不含任何运行状态,多个会话可以安全地并行操作不同 feature

完整性原则

  • PRD 是给后续 agent(设计、开发、QA)看的,必须准确、完整、无歧义
  • CHANGELOG 是给人和 agent 看的,需要记录决策上下文和"为什么"
  • 宁可多问一个问题,不要假设用户意图
  • 每个变更点都要有明确的「当前行为」和「目标行为」对比
  • 用户描述的是症状,skill 要做的是诊断——找到根因,而非只处理表面
  • 对于带前端的项目,PRD 应覆盖设计系统、配色方案、交互细节
  • 对于纯后端项目,PRD 应覆盖 API 设计、数据模型、性能要求
  • 如果认为需求不合理,直接反驳并给出替代方案

资源

Capabilities

skillsource-yike-gunshiskill-forge-prdtopic-agent-skillstopic-ai-developmenttopic-claude-codetopic-forgetopic-skill-mdtopic-skillsmp

Install

Installnpx skills add yike-gunshi/forge-skills
Transportskills-sh
Protocolskill

Quality

0.46/ 1.00

deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 11 github stars · SKILL.md body (12,615 chars)

Provenance

Indexed fromgithub
Enriched2026-04-25 19:02:45Z · deterministic:skill-github:v1 · v1
First seen2026-04-24
Last seen2026-04-25

Agent access