关于 validate-before-merge
该技能按 CI 验证顺序检查代码是否适合合并,涵盖 lint、构建、单元测试以及涉及 UI 时的视觉回归测试。适用于提交合并请求前进行本地验证的开发者,并提供失败处理和结果汇报清单。
主要功能
- 01按顺序执行 lint、构建和测试
- 02UI 变更时运行视觉回归测试
- 03提供快速验证命令
- 04检查未提交更改与调试语句
- 05整理验证结果报告
适用场景
- 01提交合并请求前运行完整检查
- 02排查构建或单元测试失败
- 03UI 调整后更新并核验快照
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ cartridge-gg/ controller --skill validate-before-merge安装后在 Claude Code 中输入/validate-before-merge确认已加载。
详细介绍
合并前验证
概述
此技能会运行 CI 执行的所有检查,以验证代码是否已准备好合并。在 CI 运行前,使用此技能在本地发现问题。
完整验证流程
按顺序运行这些检查。每一步都必须通过后才能继续。
步骤 1:Lint 和格式检查
pnpm lint:check
预期:没有错误或警告
如果失败:运行 pnpm format 自动修复
步骤 2:构建所有软件包
pnpm build
预期:构建成功,且没有 TypeScript 错误 如果失败:修复报告文件中的类型错误
步骤 3:单元测试
pnpm test:ci
预期:所有测试通过 如果失败:
- 查看失败测试的输出
- 视情况修复代码或更新测试
- 没有正当理由时,绝不要跳过失败的测试
步骤 4:视觉回归测试(如果 UI 有变更)
只有在变更涉及以下内容时才需要:
packages/keychain/src/components/packages/keychain/src/hooks/(与 UI 相关)- Storybook 配置
pnpm test:storybook
预期:所有视觉比较均通过 如果失败但变更是有意的:
pnpm test:storybook:update
git add packages/*/__image_snapshots__/
git commit -m "chore: update storybook snapshots"
步骤 5:确认没有未提交的变更
git status
预期:工作目录干净(或只有你打算忽略的未跟踪文件)
快速验证脚本
快速验证(类似于提交前检查):
pnpm lint:check && pnpm build && pnpm test
完整 CI 镜像
要精确复现 GitHub Actions 执行的检查:
# Clean environment (optional but recommended)
pnpm clean && pnpm i
# Quality job
pnpm lint:check
# Test job
pnpm build
pnpm test:ci --coverage
# Storybook job (if UI changes)
pnpm test:storybook
验证清单
请求合并前,请确认:
-
pnpm lint:check通过 -
pnpm build成功且没有错误 -
pnpm test:ci的所有测试通过 -
pnpm test:storybook通过(如果 UI 有变更) - 代码中没有遗留 console.log 或调试语句
- 没有硬编码的密钥或凭据
- PR 描述准确说明了变更
- 已关联相关问题
常见的合并前问题
遗留的 console.log
grep -r "console.log" packages/*/src --include="*.ts" --include="*.tsx" | grep -v "test"
依赖项过时
git fetch origin main
git rebase origin/main
合并冲突
git fetch origin main
git merge origin/main
# Resolve conflicts
pnpm build # Verify after resolving
报告结果
验证后,请报告:
## Validation Results
- [x] Lint: Passed
- [x] Build: Passed
- [x] Tests: Passed (X tests, X% coverage)
- [x] Storybook: Passed (or N/A if no UI changes)
Ready for merge.
或者,如果发现问题:
## Validation Results
- [x] Lint: Passed
- [ ] Build: Failed - Type error in packages/controller/src/account.ts:42
- [ ] Tests: Not run (blocked by build failure)
### Issues to Fix
1. Type error: Property 'foo' does not exist on type 'Bar'
评论
支持 Markdown