From 79c4e55719b94abc61a108fd0afa97fd6886f5ea Mon Sep 17 00:00:00 2001 From: John Qiu Date: Thu, 16 Apr 2026 23:04:54 +0930 Subject: [PATCH] =?UTF-8?q?feat:=20P1-8=20=E5=AE=A2=E6=88=B7=E5=9C=BA?= =?UTF-8?q?=E6=99=AF=E7=AB=A0=E8=8A=82=20+=20P1-9=20pm-ask=20skill=20(REQ-?= =?UTF-8?q?20260416-0017)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit P1-8: req-prd 模板增加 "1.4 客户原始诉求" 章节 - 强制保留客户原话,不做 AI 加工转述 - 标注提出人/时间/出处 - 补充"客户原话原则"说明 借鉴 devflow-claude requirement-template.md 的"1.3 客户场景" P1-9: 新 skill pm-ask-plugin - 基于 ai-proj MCP + git log 真实数据的项目问答 - 铁律:禁止编造,必须引用 REQ-XXX/commit-sha/文件路径 - 数据不足时明确说明缺失 - 区分事实和推测(⚠️ 推测:前缀) - 受众适配(高层/客户/内部/新人) 借鉴 devflow-claude /pm:ask 命令 marketplace: 47 → 48 plugins --- .claude-plugin/marketplace.json | 12 ++ .../pm-ask-plugin/.claude-plugin/plugin.json | 8 ++ skills-core/pm-ask-plugin/skills/SKILL.md | 126 ++++++++++++++++++ skills-req/req-prd-plugin/skills/SKILL.md | 28 ++++ 4 files changed, 174 insertions(+) create mode 100644 skills-core/pm-ask-plugin/.claude-plugin/plugin.json create mode 100644 skills-core/pm-ask-plugin/skills/SKILL.md diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index 9a5017e..c8b26ac 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -23,6 +23,18 @@ ], "strict": false }, + { + "name": "pm-ask-plugin", + "source": "./skills-core/pm-ask-plugin", + "description": "基于真实数据的项目问答 /ask。必须引用 MCP/git 真实数据,禁止编造", + "version": "1.0.0", + "category": "utility", + "keywords": [ + "utility", + "tools" + ], + "strict": false + }, { "name": "publish-plugin", "source": "./skills-core/publish-plugin", diff --git a/skills-core/pm-ask-plugin/.claude-plugin/plugin.json b/skills-core/pm-ask-plugin/.claude-plugin/plugin.json new file mode 100644 index 0000000..7f91851 --- /dev/null +++ b/skills-core/pm-ask-plugin/.claude-plugin/plugin.json @@ -0,0 +1,8 @@ +{ + "name": "pm-ask-plugin", + "description": "基于真实数据的项目问答 /ask。必须引用 MCP/git 真实数据,禁止编造", + "version": "1.0.0", + "author": { + "name": "qiudl" + } +} diff --git a/skills-core/pm-ask-plugin/skills/SKILL.md b/skills-core/pm-ask-plugin/skills/SKILL.md new file mode 100644 index 0000000..5ca9f6c --- /dev/null +++ b/skills-core/pm-ask-plugin/skills/SKILL.md @@ -0,0 +1,126 @@ +--- +name: pm-ask +description: 基于 ai-proj MCP + git log 真实数据的项目问答。禁止编造。当用户说"/ask"、"问一下"、"统计一下"、"最近多少"、"谁做了多少"、"本月进度"等项目相关问题时自动激活。 +--- + +# pm-ask Skill — 基于真实数据的项目问答 + +借鉴自 devflow-claude `/pm:ask`。源自 REQ-20260416-0017 P1-9。 + +## 核心原则(铁律) + +> **必须基于真实数据,禁止编造。** + +- 所有数字必须来自 MCP API / git log / 文件系统的**真实查询** +- 必须引用具体 **REQ-XXX / commit-sha / 文件路径** +- 数据不足时**明确说明缺失**,不得"大概"、"估计" +- **区分事实和推测**:推测必须用 `⚠️ 推测:` 前缀 + +## 适用场景 + +| 用户问题示例 | 数据源 | 工具 | +|-------------|--------|------| +| "qiudl 最近一个月提交了多少代码?" | git log | `git log --author=qiudl --since='30 days ago'` | +| "本月完成了哪些需求?" | ai-proj MCP | `list_requirements --status=completed` | +| "当前进行中的需求有多少?分别是?" | MCP | `list_requirements --status=in_progress` | +| "REQ-xxx 拆了哪些任务?完成多少?" | MCP | `get_requirement_tasks` | +| "backend/services/user.go 最近谁在改?" | git log | `git log --follow -- file` | +| "和上月对比,产出是多了还是少了?" | git log + MCP | 组合查询 | +| "生成一封客户更新邮件" | MCP + git | 聚合后结构化输出 | + +## 工作流 + +### 1. 意图分析(确定数据源) + +关键词 → 数据源映射: + +| 关键词 | 数据源 | +|--------|--------| +| 需求 / REQ / 需求状态 | ai-proj MCP `list_requirements` / `find_requirement` | +| 任务 / todo / 待办 | MCP `list_tasks` / `find_task` | +| 提交 / commit / 代码量 / 贡献 | `git log` | +| 文件修改 / 变更 | `git log --follow` / `git blame` | +| 进度 / 完成率 | MCP `get_project_stats` / `get_requirement_statistics` | +| 周报 / 月报 | 组合:MCP + git log + 时间范围过滤 | +| 风险 / 停滞 / 延期 | MCP + 时间戳分析 | + +### 2. 执行查询 + +**查询前必须声明**: +``` +📊 正在查询数据源: +- ai-proj MCP: list_requirements (status=in_progress) +- git log: --author=qiudl --since='2026-04-01' +``` + +### 3. 生成答案(强约束) + +**结构**: +``` +## 直接答案 +<一句话结论,附数字> + +## 数据来源 +- <查询语句 1> → <结果摘要> +- <查询语句 2> → <结果摘要> + +## 细节 +<表格 / 列表,每条必有 REQ-XXX 或 commit-sha> + +## ⚠️ 数据缺失(如有) +<说明哪些数据无法获取> +``` + +### 4. 禁止事项 + +**不允许的答案:** +- "大概 XX 个左右"(必须精确数字或说明"无法精确统计") +- "主要在做 XX"(必须列具体 REQ) +- "应该是 XX"(推测必须 `⚠️ 推测:` 标记) +- "最近进度不错"(必须数据支持) + +**违反时自我纠正**:如果生成答案时发现缺少真实数据引用,重新查询,不要猜测。 + +## 输出适配 + +根据问题类型自动切换输出格式: + +| 问题类型 | 输出格式 | +|---------|---------| +| 数量统计 | 数字 + 列表 | +| 对比分析 | 表格 | +| 进度追踪 | 进度条 / 完成率 | +| 历史回顾 | 时间线 | +| 生成文档(邮件/报告) | 完整结构化文本 | + +## 与其他 skill 的关系 + +| 相关 skill | 分工 | +|-----------|------| +| `ai-proj` | 执行 MCP 调用(本 skill 的底层) | +| `req-workflow` | 需求生命周期管理(本 skill 只读查询) | +| `dev-review` | 代码评审(本 skill 提供评审背景数据) | + +## 受众适配(借鉴自 devflow report-generator) + +生成报告时按受众调整: + +| 受众 | 侧重 | 禁用 | +|------|------|------| +| 高层 | 交付物、里程碑、风险 | 技术细节 | +| 客户 | 功能价值、上线时间 | 内部术语 | +| 内部团队 | 技术细节、Blocker | - | +| 新人 | 背景上下文、术语表 | 假设已知 | + +## Memory 使用规则 + +本 skill **仅基于当前数据查询**生成答案。memory 可用于: +- 记住用户偏好的输出格式(如"喜欢表格不喜欢列表") +- 记住常用的过滤条件(如"默认看 qiudl 的提交") + +**禁止**:用 memory 里的历史数据"缓存"事实类答案(这会导致过时数据)。每次问都要重新查。 + +## 参考 + +- devflow-claude: `plugins/pm/commands/ask.md` +- REQ-20260416-0017 P1-9 diff --git a/skills-req/req-prd-plugin/skills/SKILL.md b/skills-req/req-prd-plugin/skills/SKILL.md index 1598540..07f49e6 100644 --- a/skills-req/req-prd-plugin/skills/SKILL.md +++ b/skills-req/req-prd-plugin/skills/SKILL.md @@ -18,6 +18,20 @@ description: 产品设计与需求管理。用于 PRD 文档编写、需求分 - `req-compare` — 对比式 PRD 编写(系统平移/竞品借鉴时激活) - `req-prototype` — UI 原型生成 +## 客户原话原则(REQ-20260416-0017 P1-8) + +**编写 PRD 时必须包含「客户原始诉求」章节(模板 1.4),保留客户/业务方原话,不做 AI 加工。** + +**为什么**: +- 产品经理转述会失真(借鉴自 devflow-claude 的"客户场景"设计) +- 后续争议追溯时有据可查 +- 团队成员看到原话能建立同理心 + +**填写规范**: +- 原话用 Markdown `> 引用块` 包裹,区分于 AI 加工内容 +- 标注提出人、时间、出处(会议/邮件/聊天) +- 特殊约束(时间/合规/预算)必须保留 + --- ## 对比式 PRD 编写 @@ -50,6 +64,20 @@ description: 产品设计与需求管理。用于 PRD 文档编写、需求分 |------|--------|--------|----------| | ... | ... | ... | ... | +### 1.4 客户原始诉求 ⭐ 强制保留 + +> **重要**:记录客户/业务方提出需求时的**原始描述**,**不做 AI 加工、不总结、不转述**。 +> 保留原话是为了后续溯源"我们当初为什么做这个"有据可查,避免产品经理转述失真。 + +- **场景1**(提出人:xxx / 时间:yyyy-mm-dd): + > "原始描述引用..." +- **场景2**: + > "原始描述引用..." + +**补充信息**(可选): +- 会议/邮件/聊天记录链接 +- 客户特殊约束(如"必须在 Q2 前上线") + ## 2. 用户分析 ### 2.1 目标用户 [用户画像描述]