用途
PR Validate 是一个 PR 专用验证技能,用于在提交前确认变更是否干净、聚焦且就绪。它通过检查分支隔离性、上游对齐、范围收敛和质量门禁,给出提交就绪度的判定。
主要能力
该技能按以下工作流执行验证:
- 分支发现:识别分支及其上游。
- 上游对齐:首先检查 rebase 状态(阻塞项)。
- CONTRIBUTING.md:验证合规性(阻塞项)。
- 隔离检查:确认单一提交类型与主题一致的文件。
- 范围检查:验证变更是否匹配预期范围。
- 质量门禁:运行测试与 lint(非阻塞)。
- 报告生成:输出通过/失败摘要。
其中上游对齐为阻塞项,需优先检查,通过标准为落后上游少于 20 个提交且无冲突。隔离检查为阻塞项,要求所有提交共享同一前缀、变更文件与 PR 范围相关、范围可用一句话解释。范围检查从提交信息推断范围,并检查所有文件是否在预期范围内。
使用方式
输入为分支名,默认使用当前分支。建议在运行 $pr-prep 之前、$pr-implement 完成后,或怀疑存在范围蔓延时使用。
报告输出示例:
通过输出:
PR Validation: PASS
Branch: feature/suggest-validation (5 commits)
Upstream: main (in sync)
Checks:
[OK] Isolation: Single type (refactor)
[OK] Upstream: 0 commits behind
[OK] Scope: 100% in internal/suggest/
[OK] Quality: Tests pass
Ready for $pr-prep
失败输出:
PR Validation: BLOCKED
Checks:
[FAIL] Isolation: Mixed types (refactor, fix, docs)
[WARN] Upstream: 15 commits behind
Resolutions:
1. ISOLATION: Split branch by commit type
git checkout main && git checkout -b refactor/suggest
git cherry-pick <refactor-commits>
Run $pr-validate again after resolution.
适用场景
- 提交 PR 前验证分支的隔离性与范围蔓延。
- 作为 $pr-prep 之前的门禁检查。
- 当怀疑存在范围蔓延时使用。
限制与注意事项
- 上游对齐和隔离检查为阻塞项,未通过时需先解决再重新运行。
- 质量门禁为非阻塞项。
- 反模式:不要分析过时分支(应先检查上游)、不要跳过验证、不要忽略范围蔓延、不要混合 fix 与 refactor(应按类型拆分 PR)。
- 常见问题:验证报告分支过时(上游已推进,需 rebase/merge 后重跑)、检测到范围蔓延(将无关变更拆分为后续 PR)、对齐检查失败(协调基础分支与验收标准)、输出不清晰(按阻塞与非阻塞严重程度排序发现项)。
参考文档:references/pr-validate.feature — 可执行规范:隔离 + 上游对齐 + 范围收敛 + 质量门禁检查 → 提交就绪度判定(soc-qk4b)。