pre-merge
Comprehensive verification workflow before merging changes to production.
Works with
---
name: pre-merge
description: Comprehensive verification workflow before merging changes to production.
license: MIT
---
# 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**:
```bash
# Type check
npx tsc --noEmit
# Lint
npm run lint
# or: pnpm lint
# or: npx eslint .
# Tests
npm test
# or: pnpm test
```
**Python**:
```bash
# Type check
mypy src/
# Lint
pylint src/
# or: flake8 src/
# or: ruff check src/
# Tests
pytest
# or: python -m pytest
```
**Go**:
```bash
# 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:
```markdown
## 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)**:
```bash
#!/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)**:
```bash
#!/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:
```bash
chmod +x pre-commit.sh
```
## Automation with Git Hooks
Set up automatic pre-commit checks:
### Using Husky (JavaScript/TypeScript)
```bash
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`:
```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:
```bash
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 practicesMore General & Other skills
find-skills
vercel-labs/skills
Helps users discover and install agent skills when they ask questions like "how do I do X", "find a skill for X", "is there a skill that can...", or express interest in extending capabilities. This skill should be used when the user is looking for functionality that might exist as an installable skill.
grill-me
mattpocock/skills
A relentless interview to sharpen a plan or design.
grill-with-docs
mattpocock/skills
A relentless interview to sharpen a plan or design, which also creates docs (ADR's and glossary) as we go.

