--- name: pm-risk description: 三维度项目风险扫描(需求层/代码层/流程层)。当用户说"/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 | **查询方式**: ```bash # 未合并分支 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 天内处理 | | 提示 | 🔵 | 值得留意 | 下次迭代关注 | ## 输出模板 ```markdown # 🔍 风险扫描报告 **扫描时间**: 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