P1-10: pm-risk skill — 三维度风险扫描 需求层: 停滞/草稿滞留/开发无提交/测试超期/批准未开发 代码层: 未合并分支/频繁修复文件/提交频率下降 流程层: 跳过评审/PR 无 review/测试门禁跳过/直接推 main 三级风险: 🔴 严重 / 🟡 警告 / 🔵 提示 P1-12: req-prd 需求粒度 AI 判断 创建前启发式检查:标题过宽建议拆分、过窄建议合并或改 task 粒度参考表 + 已有需求扩展决策表 + 前后端拆分规则 P1-13: dev-commit issue 集成规范 分支名 -iN 后缀传递 issue 编号 commit message 自动追加 closes #N P1-14: hooks/validate-prd.sh — PRD 章节校验 PostToolUse hook 自动检查 10 个必需章节 缺失时给出明确提示 marketplace: 48 → 49 plugins (新增 pm-risk-plugin)
4.4 KiB
4.4 KiB
name, description
| name | description |
|---|---|
| pm-risk | 三维度项目风险扫描(需求层/代码层/流程层)。当用户说"/risk"、"风险扫描"、"有什么风险"、"哪些需求停滞了"、"分支健康"时自动激活。 |
pm-risk Skill — 三维度风险扫描
借鉴自 devflow-claude /pm:risk。源自 REQ-20260416-0017 P1-10。
命令
/risk [--save]
- 不加参数:扫描并展示报告
--save:保存到思源笔记
扫描维度
维度 1: 需求层
通过 ai-proj MCP 查询需求状态:
| 检测项 | 数据源 | 严重 | 警告 | 提示 |
|---|---|---|---|---|
| 需求停滞 | list_requirements + updated_at |
>14 天无更新 | >7 天无更新 | >3 天无更新 |
| 草稿滞留 | list_requirements --status=draft |
>30 天 | >14 天 | >7 天 |
| 开发中无提交 | 需求关联分支 + git log |
>7 天无 commit | >3 天 | - |
| 测试中超期 | list_requirements --delivery_stage=testing |
>14 天 | >7 天 | - |
| 已批准未开发 | list_requirements --status=approved |
>30 天 | >14 天 | - |
查询方式:
mcp__ai-proj__list_requirements(status=in_progress)
→ 遍历每个需求的 updated_at,计算距今天数
维度 2: 代码层
通过 git 命令分析:
| 检测项 | 命令 | 严重 | 警告 |
|---|---|---|---|
| 未合并分支过久 | git branch -r --no-merged origin/develop + git log -1 |
>14 天无 commit | >7 天 |
| 频繁修复文件 | git log --diff-filter=M --name-only 近 30 天 |
同文件 >5 次 fix commit | >3 次 |
| 提交频率下降 | 本周 vs 上周 commit 数 | 下降 >70% | 下降 >50% |
| 大文件提交 | git log --diff-filter=A --name-only |
>10MB 文件 | >5MB |
查询方式:
# 未合并分支
git for-each-ref --sort=-committerdate --format='%(refname:short) %(committerdate:short)' refs/remotes/origin/ | grep -v 'main\|develop\|HEAD'
# 频繁修复
git log --since='30 days ago' --grep='fix' --diff-filter=M --name-only --pretty=format:'' | sort | uniq -c | sort -rn | head -10
# 提交频率
THIS_WEEK=$(git log --since='7 days ago' --oneline | wc -l)
LAST_WEEK=$(git log --since='14 days ago' --until='7 days ago' --oneline | wc -l)
维度 3: 流程层
通过 MCP + git 交叉分析:
| 检测项 | 检测方法 | 级别 |
|---|---|---|
| 跳过评审直接开发 | 需求 status 从 draft 直接跳到 in_progress(没有 approved 记录) | 警告 |
| PR 无评审直接合并 | Gitea API 查 PR 无 review approve 就 merge | 警告 |
| 测试门禁跳过 | delivery_stage 从 dev 跳到 released(没有 testing) | 严重 |
| 直接推 main | git log --first-parent origin/main 非 merge commit |
严重 |
风险级别定义
| 级别 | 图标 | 含义 | 响应 |
|---|---|---|---|
| 严重 | 🔴 | 立即关注 | 当天处理 |
| 警告 | 🟡 | 近期需处理 | 3 天内处理 |
| 提示 | 🔵 | 值得留意 | 下次迭代关注 |
输出模板
# 🔍 风险扫描报告
**扫描时间**: YYYY-MM-DD HH:MM CST
**扫描范围**: 项目 ai-proj
## 概览
| 维度 | 🔴 严重 | 🟡 警告 | 🔵 提示 |
|------|---------|---------|---------|
| 需求层 | X | X | X |
| 代码层 | X | X | X |
| 流程层 | X | X | X |
## 🔴 严重风险
### [S1] REQ-20260410-0001 停滞 18 天
- **需求**: REQ-20260410-0001 用户积分管理
- **状态**: in_progress
- **最后更新**: 2026-04-01
- **建议**: 联系负责人确认是否阻塞,必要时降级或暂停
### [S2] ...
## 🟡 警告
### [W1] 分支 feat/xxx 14 天未合并
- **分支**: feat/old-feature
- **最后 commit**: 2026-04-05
- **建议**: 确认是否放弃,清理或合并
## 🔵 提示
...
## ✅ 一切正常的维度
- (无严重/警告时显示此段)
---
**下次扫描建议**: 每周一早会前执行 `/risk`
无风险时的输出
✅ 风险扫描完成 — 一切正常
扫描了 X 个需求、Y 个分支、Z 条提交,未发现风险项。
下次扫描建议:下周一
定期执行建议
- 手动:每周一早会前
/risk - 自动:可配合
/loop 7d /risk --save定期扫描并保存到思源笔记
与其他 skill 的关系
| skill | 协作 |
|---|---|
pm-ask |
risk 发现问题后,用 /ask 深入分析 |
req-workflow |
risk 发现流程违规后,用 /req 修正 |
ai-proj |
底层 MCP 数据查询 |
参考
- devflow-claude:
plugins/pm/commands/risk.md - REQ-20260416-0017 P1-10