Pre-Merge Verification
Comprehensive verification workflow before merging changes to production.
When to Use This Skill
Use this skill when:
-
Creating a pull request for review
-
About to merge code to main/production branch
-
Need systematic verification checklist
-
Want to catch issues before code review
Pre-Commit Verification
Before committing code, verify:
-
Type checking passes (language-appropriate: tsc --noEmit , mypy , etc.)
-
Linting passes with no errors (ESLint, Pylint, etc.)
-
All existing tests pass locally
-
No console.log/debug statements left in code
-
Code follows project style guide
-
No commented-out code blocks
Commands by Language
TypeScript/JavaScript:
Type check
npx tsc --noEmit
Lint
npm run lint
or: pnpm lint
or: npx eslint .
Tests
npm test
or: pnpm test
Python:
Type check
mypy src/
Lint
pylint src/
or: flake8 src/
or: ruff check src/
Tests
pytest
or: python -m pytest
Go:
Format check
gofmt -l .
Lint
golangci-lint run
Tests
go test ./...
Pre-PR Verification
Before creating a pull request, ensure:
Required Information
-
Changeset added for user-facing changes (if using changesets)
-
PR description is complete with:
-
Summary of changes
-
Related ticket references (ENG-XXX, HEL-XXX, JIRA-XXX, etc.)
-
Screenshots for UI changes (desktop, tablet, mobile)
-
Breaking changes documented
-
Migration guide (if breaking changes)
-
New tests added for new functionality
-
Documentation updated if needed (README, API docs, etc.)
Security Checklist (if API changes)
-
Authentication required on protected routes
-
Authorization checks implemented
-
Input validation with schema (Zod, Pydantic, etc.)
-
No sensitive data in logs
-
No SQL injection vulnerabilities
-
No XSS vulnerabilities
-
Rate limiting considered
Database Changes (if schema changes)
-
Migration file created
-
Migration tested on local database
-
Migration tested on staging database
-
Down migration available (rollback plan)
-
No breaking changes without migration guide
-
Schema changes documented
UI Changes (if applicable)
-
Screenshots included:
-
Desktop view (1920x1080)
-
Tablet view (768x1024)
-
Mobile view (375x667)
-
Responsive behavior verified
-
Accessibility checked (keyboard navigation, screen readers)
-
Loading states implemented
-
Error states implemented
Pre-Merge Verification
Before merging to main branch, confirm:
CI/CD Checks
-
All CI checks pass (lint, type-check, tests, build)
-
Code review approved by at least one reviewer
-
No TypeScript errors in changed files
-
No merge conflicts with target branch
-
Build succeeds without warnings
Functional Verification
-
Database migrations run successfully (if applicable)
-
No regression in existing functionality
-
Performance benchmarks within acceptable range
-
Manual testing completed for critical paths
Documentation
-
CHANGELOG.md updated (if using)
-
API documentation updated (if API changes)
-
README updated (if setup/usage changes)
-
Migration guide provided (if breaking changes)
PR Description Template
Use this template for comprehensive PR descriptions:
Summary
[Brief description of what this PR does]
Related Tickets
- Fixes #123
- Closes ENG-456
- Related to HEL-789
Changes
- Feature: [Description]
- Bug Fix: [Description]
- Refactor: [Description]
- Documentation: [Description]
Testing
Unit Tests
- Added tests for [feature/function]
- Coverage: X%
Manual Testing
- Tested on desktop (Chrome, Firefox, Safari)
- Tested on mobile (iOS Safari, Android Chrome)
- Tested edge cases: [list specific cases]
Screenshots
Desktop
Tablet
Mobile
Breaking Changes
[List any breaking changes or write "None"]
Migration Guide
[If breaking changes, provide migration steps]
Performance Impact
[Describe any performance implications or write "No impact"]
Security Considerations
[Describe security implications or write "No security impact"]
Rollback Plan
[Describe how to rollback if issues occur]
Deployment Notes
[Any special deployment considerations or write "Standard deployment"]
Common Pitfalls to Avoid
Pre-Commit
-
❌ Committing code with failing tests
-
❌ Leaving console.log/debug statements
-
❌ Committing without running type checker
-
❌ Committing large blocks of commented code
Pre-PR
-
❌ Creating PR without description
-
❌ Missing screenshots for UI changes
-
❌ Not linking to related tickets
-
❌ Not documenting breaking changes
-
❌ Missing test coverage for new code
Pre-Merge
-
❌ Merging with failing CI checks
-
❌ Merging without code review approval
-
❌ Merging with merge conflicts
-
❌ Merging without testing migrations
-
❌ Merging without considering rollback plan
Quick Verification Script
Create a pre-commit verification script:
JavaScript/TypeScript (pre-commit.sh):
#!/bin/bash set -e
echo "Running type check..." npx tsc --noEmit
echo "Running linter..." npm run lint
echo "Running tests..." npm test -- --run
echo "✅ All checks passed!"
Python (pre-commit.sh):
#!/bin/bash set -e
echo "Running type check..." mypy src/
echo "Running linter..." pylint src/
echo "Running tests..." pytest
echo "✅ All checks passed!"
Make executable:
chmod +x pre-commit.sh
Automation with Git Hooks
Set up automatic pre-commit checks:
Using Husky (JavaScript/TypeScript)
npm install --save-dev husky npx husky install npx husky add .husky/pre-commit "npm run lint && npm test"
Using pre-commit (Python)
Create .pre-commit-config.yaml :
repos:
- repo: local
hooks:
- id: type-check name: Type Check entry: mypy src/ language: system pass_filenames: false
- id: lint name: Lint entry: pylint src/ language: system pass_filenames: false
- id: test name: Test entry: pytest language: system pass_filenames: false
Install hooks:
pre-commit install
Success Criteria
Pre-Commit Success
-
✅ All local checks pass
-
✅ Code is formatted correctly
-
✅ No debug statements remain
-
✅ Tests pass locally
Pre-PR Success
-
✅ PR description is comprehensive
-
✅ All required information included
-
✅ Screenshots attached (if UI changes)
-
✅ Breaking changes documented
Pre-Merge Success
-
✅ CI pipeline is green
-
✅ Code review approved
-
✅ No conflicts with target branch
-
✅ Manual testing completed
Related Skills
-
universal-verification-screenshot
-
Screenshot verification for UI changes
-
universal-verification-bug-fix
-
Bug fix verification workflow
-
toolchains-universal-security-api-review
-
API security testing
-
universal-collaboration-git-workflow
-
Git workflow best practices