mcpField
V
validate-before-merge

validate-before-merge

github.com/cartridge-ggTesting & quality8035 installsUpdated 7w ago
Repository

About validate-before-merge

This skill runs a CI-style sequence of checks to assess whether code is ready to merge, including linting, builds, unit tests, and visual regression tests when UI changes. It is for developers validating changes locally and includes failure-handling and reporting guidance.

Key features

  1. 01Run lint, build, and tests in sequence
  2. 02Run visual regression tests for UI changes
  3. 03Provide a quick validation command
  4. 04Check for uncommitted changes and debug statements
  5. 05Structure a validation report

Use cases

  1. 01Run checks before opening a merge request
  2. 02Investigate build or unit test failures
  3. 03Verify and update snapshots after UI changes

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/cartridge-gg/controller --skill validate-before-merge

After installing, type/validate-before-mergein Claude Code to confirm it loaded.

Details

From the project README

Validate Before Merge

Overview

This skill runs all checks that CI performs to validate code is ready for merge. Use this to catch issues locally before CI runs.

Full Validation Sequence

Run these checks in order. Each step must pass before proceeding.

Step 1: Lint and Format Check
pnpm lint:check

Expected: No errors or warnings If fails: Run pnpm format to auto-fix

Step 2: Build All Packages
pnpm build

Expected: Successful build with no TypeScript errors If fails: Fix type errors in the reported files

Step 3: Unit Tests
pnpm test:ci

Expected: All tests pass If fails:

  • Review failing test output
  • Fix code or update tests as appropriate
  • Never skip failing tests without justification
Step 4: Visual Regression Tests (if UI changed)

Only required if changes touch:

  • packages/keychain/src/components/
  • packages/keychain/src/hooks/ (UI-related)
  • Storybook configuration
pnpm test:storybook

Expected: All visual comparisons pass If fails with intentional changes:

pnpm test:storybook:update
git add packages/*/__image_snapshots__/
git commit -m "chore: update storybook snapshots"
Step 5: Verify No Uncommitted Changes
git status

Expected: Clean working directory (or only untracked files you intend to ignore)

Quick Validation Script

For a fast validation (similar to pre-commit):

pnpm lint:check && pnpm build && pnpm test

Full CI Mirror

To exactly mirror what GitHub Actions runs:

# 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

Validation Checklist

Before requesting merge, verify:

  • pnpm lint:check passes
  • pnpm build succeeds with no errors
  • pnpm test:ci all tests pass
  • pnpm test:storybook passes (if UI changed)
  • No console.log or debug statements left in code
  • No hardcoded secrets or credentials
  • PR description accurately describes changes
  • Related issues are linked

Common Pre-Merge Issues

Forgotten console.log
grep -r "console.log" packages/*/src --include="*.ts" --include="*.tsx" | grep -v "test"
Outdated dependencies
git fetch origin main
git rebase origin/main
Merge conflicts
git fetch origin main
git merge origin/main
# Resolve conflicts
pnpm build  # Verify after resolving

Reporting Results

After validation, report:

## 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.

Or if issues found:

## 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'

Comments

Markdown supported