Files
John Qiu e5805cbb51 feat: P1-10/12/13/14 风险扫描 + 粒度判断 + Issue 集成 + PRD 校验 (REQ-20260416-0017)
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)
2026-04-19 13:33:26 +09:30

187 lines
4.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: dev-commit
description: 智能 git commit — 分支保护 + 自动建功能分支 + Conventional Commits 生成。当用户说"提交代码"、"commit"、"/commit"、"保存修改"时自动激活。
---
# dev-commit Skill — 智能提交
借鉴自 devflow-claude `/req:commit`。源自 REQ-20260416-0017 P0-6。
## 核心功能
**用户说"/commit" 或 "提交代码" 时执行:**
1. **分支合规检查**
2. **自动建功能分支**(若在保护分支)
3. **Conventional Commits 生成**
4. **自动关联 REQ-XXX**
## 流程详解
### 1. 分支合规检查(强制)
```bash
CURRENT_BRANCH=$(git symbolic-ref --short HEAD)
# 保护分支名单
PROTECTED_BRANCHES="main master develop production"
for b in $PROTECTED_BRANCHES; do
if [ "$CURRENT_BRANCH" = "$b" ]; then
IS_PROTECTED=1
break
fi
done
```
**铁律****绝对禁止**在 main / develop / master / production 分支上直接 commit。
### 2. 保护分支上有改动 → 自动建功能分支
```
检测到 main/develop 有未提交改动:
推荐方案:
1. 自动建分支 feat/xxx 并切换过去(推荐)
2. 取消本次 commit手动切分支
3. 临时 stash 后切分支
【默认选 1】
```
**分支命名自动推断:**
- 从对话上下文:如果刚在讨论 "REQ-20260416-0017" → `feat/REQ-20260416-0017-summary`
- 从文件变更:扫描 staged files 的路径 → 推断模块(如 `backend/services/user/``feat/user-xxx`
- 从 commit message 意图:如果意图是 fix → `fix/xxx`
**前缀规则:**
- `feat/` — 新功能
- `fix/` — bug 修复
- `chore/` — 杂项依赖升级、CI 调整等)
- `refactor/` — 重构
- `docs/` — 文档
### 3. Conventional Commits 生成
**格式:**
```
<type>(<scope>): <description> [(REQ-XXX)] [closes #N]
```
**type**
- feat - 新功能
- fix - 修复
- chore - 杂项
- refactor - 重构
- docs - 文档
- test - 测试
- perf - 性能
- style - 格式
**scope**
- 从修改的文件路径推断:`backend/services/user/``user`
- `frontend/src/pages/login/``login`
**示例:**
```
feat(mcp): 新增 set_requirement_reviewers 工具 (REQ-20260415-0023)
fix(frontend): 403 权限重载死循环
chore(cicd): 精简 CI/CD 流程,移除 Staging 环境 (REQ-20260415-0004) closes #242
```
### 4. REQ-XXX 自动关联
**查找顺序:**
1. 当前分支名:`feat/REQ-20260416-0017-xxx` → 提取 `REQ-20260416-0017`
2. 最近对话中提到的 REQ ID
3. MCP 查询当前用户的"进行中"需求(如只有一个,直接用)
**分支名含 `-iN` 时追加 `closes #N`**
```
feat/REQ-xxx-i42 + commit → commit message 自动加 "closes #42"
```
### 5. 提交确认
提交前展示预览:
```
即将执行:
分支: feat/mcp-set-reviewers
Files: backend/mcp/tools/set_reviewers.go, mcp-task-bridge/src/tools/set-reviewers.ts
Message:
feat(mcp): 新增 set_requirement_reviewers 工具 (REQ-20260415-0023)
确认提交?(y/n)
```
## Issue 集成规范REQ-20260416-0017 P1-13
借鉴 devflow-claude 的 issue 关联机制。
### 分支名 `-iN` 后缀
当任务/需求来自 Gitea/GitHub issue 时,分支名末尾追加 `-iN`
```
feat/REQ-20260416-0017-user-points-i12 ← issue #12
fix/login-token-expired-i5 ← issue #5
```
**规则**
- `-iN` 仅当 issue 关联存在时追加
- `N` 为纯数字(不带 `#`
- 位于分支名最末尾
### commit message 自动追加 `closes #N`
当分支名含 `-iN` 后缀时commit message 末尾自动追加 `closes #N`
```
feat(user): 实现积分规则管理 (REQ-20260416-0017) closes #12
fix(auth): 修复 token 过期未刷新 closes #5
```
**效果**PR 合并后 Gitea/GitHub 自动关闭关联 issue。
### Issue 编号读取优先级
| 优先级 | 来源 | 说明 |
|-------|------|------|
| 1 | `--from-issue=#N` 参数 | 用户显式指定 |
| 2 | 分支名 `-iN` 后缀 | 自动解析 `(-i(\d+))$` |
| 3 | MCP 需求文档关联的 issue | (预留) |
### 不触发的情况
- 分支名不含 `-iN` → 不追加 `closes`
- 用户显式说"不关联 issue" → 跳过
## 与 ai-proj 集成
- **查询当前需求**:通过 MCP `mcp__ai-proj__find_requirement``list_requirements` 找 user 进行中的
- **commit 后可选**:调用 `mcp__ai-proj__update_task` 更新关联任务进度
## 排除项
本 skill **不做**
- 推送远程(留给 `/pr``git push`
- 创建 PR留给 pull-request skill
- 代码评审(留给 dev-review skill
职责边界清晰,防止单命令膨胀。
## 风险控制
1. **保护分支改动不得 commit** — 强制拦截
2. **message 必须用 Conventional Commits** — 后续 changelog 依赖
3. **REQ-XXX 关联尽量自动推断** — 但推断不出不阻断
## 安装方式
本 skill 自动随 ai-proj-helper marketplace 加载。用户说"/commit" 即激活。
## 参考
- devflow-claude: `plugins/req/commands/commit.md`
- REQ-20260416-0017 P0-6