mcpField
V
validate-before-merge

validate-before-merge

github.com/cartridge-gg测试与质量8035 次安装7 周前更新
代码仓库

关于 validate-before-merge

该技能按 CI 验证顺序检查代码是否适合合并,涵盖 lint、构建、单元测试以及涉及 UI 时的视觉回归测试。适用于提交合并请求前进行本地验证的开发者,并提供失败处理和结果汇报清单。

主要功能

  1. 01按顺序执行 lint、构建和测试
  2. 02UI 变更时运行视觉回归测试
  3. 03提供快速验证命令
  4. 04检查未提交更改与调试语句
  5. 05整理验证结果报告

适用场景

  1. 01提交合并请求前运行完整检查
  2. 02排查构建或单元测试失败
  3. 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