Communitygithub.com

kelegele/oh-my-pm

Oh-My-PM - 通过 Claude Code 技能实现的 AI 产品经理工作流系统

oh-my-pm 是什么?

Oh-My-PM 是一个集成在 Claude Code 中的 AI 技能,可将非正式的功能想法转化为完整、结构化的产品需求文档(PRD)。它支持三种场景:迭代更新、新功能和 0-1 新产品。该技能通过分步流程工作:首先使用互动问题检测场景,然后收集必要的上下文(如 UI 截图、竞品分析)。它能自动识别信息缺口,并通过多选问题引导用户补充,最终生成包含用户故事、验收标准、功能需求、成功指标和合规建议等章节的 PRD。用户可以根据需要选择要生成的章节,技能还包含行业基准研究、证据纪律和交付前自查机制,确保输出高质量的需求文档。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add kelegele/oh-my-pm

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

PRD 生成

根据功能创意生成结构化的产品需求文档。

技能作用

将非正式的功能需求转化为完整的 PRD,包含用户故事、验收标准、功能需求、成功指标和合规建议。输出结果可直接用于工程团队实施和利益相关者评审。

何时使用

在以下情况下激活此技能:

  • 用户想要记录新功能或产品创意
  • 出现类似“写 PRD”、“创建需求”、“记录此功能”的表述
  • 准备产品评审、利益相关者对齐或工程交接
  • 用户提及用户故事、验收标准或成功指标
  • 需要将粗略的想法整理成结构化文档

场景检测(关键 - 第一步)

在生成任何 PRD 内容之前,你必须先确定场景。

使用 AskUserQuestion 确定适用场景:

Q:请选择 PRD 生成场景

选项描述
迭代更新基于现有功能进行迭代优化
新功能在现有产品上添加新模块
0-1 新产品从零开始规划全新产品

按场景收集上下文

一旦确定场景,收集所需上下文:

场景所需信息收集方法
迭代更新1. 当前功能描述2. UI 状态(截图/HTML/链接)3. 迭代目标用户输入 + 使用 AskUserQuestion 询问 UI 状态选项
新功能1. 产品整体架构2. 设计规范(组件库/交互模式)3. 入口位置从 docs/product/ 读取或用户输入
0-1 新产品1. 产品背景与目标用户2. 资源约束3. 参考产品用户输入 + 竞品分析

迭代更新的 UI 状态收集: 当用户选择“迭代更新”时,询问他们如何提供当前 UI 状态:

  • 截图 - 用户提供截图,使用 mcp__zai-mcp-server__ui_to_artifact 或 mcp__4_5v_mcp__analyze_image
  • HTML 文件 - 用户提供本地 HTML 路径,使用 Read 工具解析 DOM 结构
  • 在线链接 - 用户提供 URL,使用 mcp__web_reader__webReader(无需登录)

步骤 0.5:信息缺口分析与 PRD 计划(关键 — 硬门控)

硬门控:在完成此步骤并获得用户批准计划之前,不得进入行业基准检查或 PRD 生成阶段。

显式跳过协议(用户显式拒绝交互时):如果用户明确禁止提问(例如“别问了,直接写”),你可以跳过交互式门控——但随后你必须在输出开头包含一个假设声明块,列出所做的每一项假设(场景、选中/排除的章节、目标产品、关键默认值),以便用户更正。假设声明同时充当证据纪律的完整度清单:未确认信息标【待确认】、无证据断言标【未验证】(见下文证据纪律),不得脑补填默认值。切勿默默跳过。

场景检测和上下文收集之后:

  1. 差距分析:将用户提供的信息与此场景的 context-requirements 进行比较。列出每一项缺失的必填字段。同时检查 docs/product/ 中现有的感知数据(market-analysis.json、competitive-analysis、user-research.json、positioning.md)。

  2. 一次一个问题:对于每个缺失项,使用 AskUserQuestion 并提供多选选项来询问用户。请勿在一条消息中捆绑多个问题。

    缺失项示例问题
    UI 截图“当前功能的界面状态,你如何提供?” → A. 已有截图 B. 有 HTML 文件 C. 有在线链接 D. 暂无,先跳过
    竞品列表“需要分析哪些竞品?” → 多选 + “其他”
    目标用户“目标用户是?” → A. 已定义画像 B. 我口述你来整理 C. 需要先做用户研究
    参考产品“有参考产品吗?” → A. 有,我来说 B. 你帮我搜索行业标杆 C. 不需要参考
  3. 处理缺失资源:如果用户说“我稍后提供截图”或“先跳过”,记录哪些项目待定,并在 PRD 计划中将其标注为 [待补充]。

  4. 生成 PRD 计划:准备(但尚未显示)PRD 计划结构。下表显示了默认选项的模板:

    ### 预计生成的 PRD 章节
    | 章节 | 内容概要 | 选中 | 依赖状态 |
    |:-----|:---------|:-----|:---------|
    | 第0章 行业对标分析 | 将研究 X 个标杆产品 | ✅ | 已完成 / [待补充] |
    | 第1章 项目概述 | 基于用户描述展开 | ✅ | 已完成 |
    | 第2章 业务分析 | 目标用户 X,痛点 Y | ✅ | 已完成 / [待补充] |
    | 第3章 功能需求 | [关键功能列表] | ✅ | 已完成 |
    | 第4章 非功能性需求 | 行业标准要求 | ✅ | 自动生成 |
    | 第5章 用户体验流程 | 基于功能推导 | ✅ | 需 UI 补充 |
    | 第6章 项目风险 | 基于功能复杂度 | ✅ | 自动生成 |
    | 第7章 合规建议 | 基于数据类型 | ❌ | 自动生成 |
    | 第8章 原型设计 | [原型链接] | ❌ | - |
    | 第9章 成功指标 | 基于目标推导 | ❌ | 自动生成 |
    
    ### 排除清单(不生成以下内容)
    - 技术方案 / 架构设计 — PRD 为产品需求文档,不包含技术实现细节
    - API 接口定义 / 端点规格 — 由开发团队在技术方案中另写
    - 数据库表结构设计 — 不在产品需求范围内
    

    注意: 上表使用默认选项。实际的「选中」值将在步骤 4.5 中根据用户对章节选择的回答填写。暂时不要向用户呈现此表。

4.5. 章节选择(硬门控 — 在呈现 PRD 计划之前):

通过 AskUserQuestion 向用户呈现章节选择(多选)。由于 4 个选项的限制,分为 3 个顺序问题。根据回答构建 selected_chapters 和 excluded_chapters 列表,并相应更新 PRD 计划表的「选中」列。

问题 1 — 核心章节(第 0-3 章):

选项默认描述
第0章 行业对标分析✅ 已选研究基准产品和最佳实践
第1章 项目概述✅ 已选项目背景、目标、范围
第2章 业务分析✅ 已选目标用户、痛点、市场分析
第3章 功能需求✅ 已选功能列表、用户故事、详细需求

问题 2 — 扩展章节(第 4-7 章):

选项默认描述
第4章 非功能性需求✅ 已选性能、安全、可用性、兼容性
第5章 用户体验流程✅ 已选用户旅程、页面流程图
第6章 项目风险✅ 已选项目风险和缓解策略
第7章 合规建议⬜ 未选合规指南和风险类别

问题 3 — 可选章节(第 8-9 章):

选项默认描述
第8章 原型设计⬜ 未选原型链接和设计说明
第9章 成功指标⬜ 未选北极星指标、过程指标和结果指标

永久排除项(不在选择列表中,绝不生成):

  • 技术方案 / 架构设计 — PRD 不包含技术实现细节
  • API 接口定义 — 接口文档由开发团队另写
  • 数据库表结构设计 — 不在产品需求范围内

收集选择后: 更新 PRD 计划表的「选中」列以反映用户的选择(✅ 为选中,❌ 为排除)。

  1. 用户批准:使用 AskUserQuestion 呈现 PRD 计划(包含章节选择)并获得明确批准:

    选项描述
    确认,按此章节方案生成 PRD进入步骤 1 行业基准和步骤 2 PRD 生成
    调整章节选择重新勾选要生成的章节
    需要调整方案修改 PRD 计划后重新确认
    我有更多信息要补充回到步骤 0.5 补充信息,重新生成方案
    先补充感知数据调用 market-research / competitive-analysis

反模式:“信息足够了,直接生成吧” — 禁止。即使信息缺口很少,也要呈现计划并获得批准。

TUI 环境下的图片处理指南

在终端 (TUI) 环境下,用户可以通过以下方式提供图片:

方式一:本地文件路径(最简单)

直接提供图片的本地路径,使用 Read 工具读取:

# 用户对话示例
"分析这个 UI 截图: /Users/fh/Desktop/screenshot.png"
"当前界面: ~/Screenshots/ui-2025-03-12.png"
"参考图片: ./docs/product/images/reference.png"

支持的路径格式:

  • 绝对路径: /Users/fh/Desktop/screenshot.png
  • 家目录缩写: ~/Screenshots/ui.png
  • 相对路径: ./images/ui.png

支持的图片格式: PNG, JPG, JPEG, WebP, GIF

方式二:在线图片 URL

用户将图片上传到图床/云存储后提供 URL:

# 用户对话示例
"UI 截图: https://i.imgur.com/xyz.png"
"参考图: https://s3.aws.com/bucket/screenshot.png"

使用 mcp__4_5v_mcp__analyze_image 或 mcp__zai-mcp-server__ui_to_artifact 工具读取远程图片。

推荐图床:

  • imgur.com (免费,无需注册)
  • GitHub (作为 issue 附件)
  • 云存储 (AWS S3, 阿里云 OSS)

方式三:终端截图命令

引导用户使用终端截图工具快速生成截图:

macOS:

# 截取选定区域(交互式)
screencapture -i ~/screenshot.png

# 截取整个窗口
screencapture -w ~/screenshot.png

# 截取整个屏幕
screencapture ~/screenshot.png

Linux:

# ImageMagick (需先安装: sudo apt install imagemagick)
import ~/screenshot.png

# gnome-screenshot (Ubuntu/GNOME)
gnome-screenshot -a -f ~/screenshot.png

#spectacle (KDE)
spectacle -r -o ~/screenshot.png

方式四:粘贴板直接获取(macOS)

# 安装 pngpaste 工具
brew install pngpaste

# 将粘贴板的图片保存为文件
pngpaste ~/screenshot.png

处理流程

当用户提供图片后:

  1. 本地路径 → 使用 Read 工具直接读取
  2. 远程 URL → 使用 mcp__4_5v_mcp__analyze_image 或 mcp__zai-mcp-server__ui_to_artifact
  3. 分析图片内容 → 提取 UI 结构、布局、交互元素
  4. 生成 PRD → 基于图片分析结果生成需求文档

行业基准检查

场景检测、上下文收集和信息澄清之后:

  1. 用户提供的基准(优先):用户指定的参考产品
  2. Agent 补充搜索:根据场景关键词自动搜索行业最佳实践
  3. 提取最佳实践:3-5 个基准交互模式/功能设计
  4. 在 PRD 中引用:引用基准解决方案,并说明采纳/差异化的理由

搜索关键词映射:

场景搜索关键词
迭代更新"{功能名} 最佳实践", "行业 {功能名} 设计"
新功能"{产品类型} {模块名} 方案", "同类产品 {功能}"
0-1 新产品"{行业} 产品框架", "{领域} 产品地图"

工作原理

生成过程确保完整、可操作的 PRD:

  1. 场景检测 - 使用 AskUserQuestion 识别迭代/新功能/新产品
  2. 上下文收集 - 根据场景类型收集所需信息
  3. 信息缺口分析 - 识别缺失信息,一次问一个问题
  4. 章节选择 - 用户选择要生成的 PRD 章节(多选)
  5. PRD 计划呈现 - 呈现包含章节选择的计划供用户批准(硬门控)
  6. 行业基准研究 - 搜索并提取最佳实践(用户指定 + Agent 搜索)
  7. 解析需求 - 将用户的功能请求结构化分解为关键组件
  8. 收集上下文 - 读取市场分析、竞争洞察、用户研究
  9. 组装章节 - 仅构建用户选择的 PRD 章节,并包含适当的细节
  10. 验证完整性 - 对照质量标准检查(仅针对所选章节)
  11. 交付前自查 - 执行 PRD 预审尾门(章节自查 + 利益相关者视角挑战);修复阻塞项或标记为【待确认】
  12. 生成输出 - 写入 docs/product/prd/{feature-name}-{date}-v{version}.md(含尾部「预审记录」一节)

内容约束(硬规则):

在生成 PRD 内容之前,请注意:

  1. 仅生成用户选择的章节。完全跳过未选择的章节。
  2. 无论用户输入如何,绝不生成以下内容类型:
    • 技术架构 / 实现细节
    • API 端点定义或规格
    • 数据库模式或表设计
  3. 如果用户的功能描述提及技术细节,将其总结为功能需求,而不暴露实现细节。

输入参数

参数类型必填描述
requirementsstring是要记录的功能描述或用户故事
target_audiencestring否目标用户细分或角色画像
context_refslist否要引用的相关上下文文件

证据纪律(证据纪律)

  1. 缺失信息标记【待确认】:任何无法从输入或上下文获得的信息,标记为【待确认】,不得脑补填默认值。
  2. 证据追溯【未验证】:用户需求/市场断言必须追问证据来源;无证据的标记为【未验证】并注明所需验证方式。
  3. 完整度检查门:正式输出交付物前,先输出信息完整度清单(已确认 ✅ / 待确认 ⚠️ / 未验证 ❓),经用户确认后才生成正文。

与显式跳过协议(步骤 0.5)的关系:证据纪律是输出纪律(信息标注与交付前自查),显式跳过是交互纪律(用户显式拒绝交互时的降级处理),两者互补不冲突。显式跳过场景下完整度清单不免除 — 与「假设声明」合并输出,但不再等待用户确认;假设声明中的未确认信息同样按本节规则标注【待确认】/【未验证】。

输出结构

PRD 遵循以下结构(与标准 PRD 模板一致)。重要:此模板显示所有可能的章节。仅生成用户选择的章节。完全跳过未选择的章节。在任何情况下都不要生成技术架构、API 规格或数据库设计。

# [功能名称] PRD

## 文档基本信息
- **文档版本**: v1.0
- **创建日期**: YYYY-MM-DD
- **最后更新**: YYYY-MM-DD
- **文档状态**: Draft/Review/Approved
- **创建人**: [用户名]
- **审阅人**: [待定]

## 修订记录
| 版本 | 日期 | 修订内容 | 修订人 |
|:-----|:-----|:---------|:-------|
| v1.0 | YYYY-MM-DD | 初始版本 | [创建人] |

## 0. 行业对标分析
### 0.1 参考产品
| 产品 | 关键功能 | 采纳/差异化 |
|:-----|:---------|:-----------|
| [竞品A] | XXX | 采纳其 XXX 模式,因为... |
| [竞品B] | XXX | 差异化点在于... |

### 0.2 最佳实践总结
- **交互模式**: [采用的行业标准交互模式]
- **核心差异化**: [本方案的独特之处]

## 1. 项目概述
### 1.1 项目背景
[市场背景、竞争背景、用户需求背景]

### 1.2 项目目标
#### 1.2.1 核心目标
- [可量化的核心目标]

#### 1.2.2 次要目标
- [支撑性目标]

### 1.3 项目范围
#### 1.3.1 包含范围
- [本次迭代/功能包含的内容]

#### 1.3.2 不包含范围
- [明确不在本次范围内的事项]

## 2. 业务分析
### 2.1 目标用户
| 用户角色 | 描述 | 核心需求 |
|:---------|:-----|:---------|
| 用户A | [来自用户研究] | XXX |
| 用户B | [来自用户研究] | XXX |

### 2.2 用户痛点
| 痛点ID | 痛点描述 | 影响程度 |
|:-------|:---------|:---------|
| P-001 | XXX | 高/中/低 |
| P-002 | XXX | 高/中/低 |

### 2.3 市场分析
[行业趋势、竞争格局、市场机会点]

## 3. 功能需求
### 3.1 核心功能列表
| 功能ID | 功能名称 | 优先级 | 描述 |
|:-------|:---------|:-------|:-----|
| F-001 | XXX | P0/P1/P2 | XXX |
| F-002 | XXX | P0/P1/P2 | XXX |

### 3.2 用户故事
#### US-1: [功能名称]
**作为** [用户角色]
**我希望** [功能描述]
**以便** [业务价值]

**验收标准**:
- Given [前置条件]
- When [执行操作]
- Then [预期结果]

**优先级**: P0/P1/P2
**估算**: X Story Points

#### US-2: [功能名称]
...

### 3.3 功能详情
#### F-001: [功能名称]
**描述**: [详细功能描述]

**交互流程**:
1. 步骤一
2. 步骤二
3. 步骤三

**边界情况**:
- 正常流程: ...
- 异常情况: ...

## 4. 非功能性需求
### 4.1 性能需求
- 页面响应时间 < XXXms
- 支持 XXX 并发用户
### 4.2 安全需求
- 数据加密存储
- 用户权限控制
### 4.3 可用性需求
- 系统可用性 > 99.9%
### 4.4 兼容性需求
- iOS 14+, Android 10+
- 主流浏览器兼容

## 5. 用户体验流程
### 5.1 用户旅程
[关键用户路径描述]
1. 用户进入 → 2. 执行操作 → 3. 达成目标

### 5.2 页面流程图
[页面跳转关系说明]
- 页面A → 页面B → 页面C

## 6. 项目风险与应对
> 注:本节仅包含产品/业务风险,不包含技术实现风险(技术风险由开发团队在技术方案中评估)
| 风险ID | 风险描述 | 概率 | 影响 | 应对措施 |
|:-------|:---------|:-----|:-----|:---------|
| R-001 | XXX | 高/中/低 | 高/中/低 | XXX |
| R-002 | XXX | 高/中/低 | 高/中/低 | XXX |

## 7. 合规建议

### 7.1 合规要点概述
[合规专家审查的关键要点摘要]

### 7.2 风险提示
| 风险类别 | 说明 | 建议 |
|:---------|:-----|:-----|
| 隐私合规 | [涉及用户数据的处理方式] | [合规建议] |
| 内容合规 | [涉及的内容审核要点] | [合规建议] |
| 数据安全 | [数据存储和传输要求] | [合规建议] |
| 第三方合规 | [依赖的第三方服务合规性] | [合规建议] |

### 7.3 合规报告附件
- [ ] 合规分析报告已附 (如果有,提供路径)
- [ ] 等待合规审查 (如需要,安排合规专家评审)

## 8. 原型设计(可选)
### 8.1 设计预览
| 页面 | 原型链接 | 设计说明 |
|:-----|:---------|:---------|
| 页面A | [Figma/其他工具链接] | XXX |
| 页面B | [Figma/其他工具链接] | XXX |

## 9. 成功指标(可选)
### 9.1 北极星指标
[核心北极星指标描述]

### 9.2 过程指标
| 指标名称 | 描述 | 目标值 |
|:---------|:-----|:-------|
| XXX | XXX | XXX |

### 9.3 结果指标
| 指标名称 | 描述 | 目标值 |
|:---------|:-----|:-------|
| XXX | XXX | XXX |

## 附录
### 附录 A:术语表
| 术语 | 定义 |
|:-----|:-----|
| XXX | XXX |

### 附录 B:引用文档
- [文档路径/标题]
- [文档路径/标题]

---

### 预审记录

**章节自查**

| 检查项 | 状态 | 备注 |
|:-------|:-----|:-----|
| 第0章:行业对标 | ✅ / ❌ | 无基准产品则标记【待补充】 |
| 第1章:目标清晰可衡量 | ✅ / ❌ | 需要量化指标 |
| 第2章:用户痛点可溯源 | ✅ / ❌ | 需标注用户研究来源 |
| 第3章:功能需求完整 | ✅ / ❌ | 验收标准覆盖边界场景 |
| ... | ✅ / ❌ | (根据所选章节列) |

**利益相关者视角挑战**

**Challenge from Developer**: [开发者视角的潜在问题]
**Response**: [回应/修改记录]

**Challenge from QA**: [QA 视角的潜在问题]
**Response**: [回应/修改记录]

**Challenge from Design**: [设计视角的潜在问题]
**Response**: [回应/修改记录]

**Challenge from Ops**: [运维视角的潜在问题]
**Response**: [回应/修改记录]

**Challenge from Legal/Compliance**: [法务/合规视角的潜在问题]
**Response**: [回应/修改记录]

**仍然未解决的问题**:
1. 【待确认】[无法从输入获取的信息]
2. 【未验证】[无证据支持的市场断言]

示例使用场景

输入:

用户:"为我博客网站添加评论功能"

输出:

生成 PRD 将包含:

  • 第0章:分析主流博客(Disqus、WordPress)的评论系统
  • 第1章:项目描述 - 在现有博客中添加评论功能
  • 第2章:目标用户 - 博客作者和读者
  • 第3章:功能需求 - 评论撰写、回复、审核、身份验证

注意:不包括后端架构或数据库规范,这些属于 PRD 范围之外。

相关技能