pre-merge について
ソフトウェアチーム向けのマージ前検証ワークフローガイドです。コミット、プルリクエスト、マージ前のチェックリストを示し、コード品質、機能、安全性、データベース、UI、ドキュメントを扱います。
主な機能
- 01型、Lint、フォーマット、テストの確認
- 02PR の説明と変更内容の準備
- 03API セキュリティと DB マイグレーションの確認
- 04レスポンシブ UI とアクセシビリティの検証
- 05CI、レビュー、マージ条件の確認
- 06スクリプトと Git フックによるチェックの自動化
活用シーン
- 01コミット前に変更を体系的に確認
- 02PR の説明と検証資料を準備
- 03マージ前に CI、マイグレーション、ロールバック計画を確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ bobmatnyc/ claude-mpm-skills --skill pre-mergeインストール後、Claude Code で/pre-mergeを入力して読み込まれたか確認します。
同梱ファイルmetadata.json
詳細
マージ前の検証
変更を本番環境にマージする前に行う、包括的な検証ワークフローです。
このスキルを使用するタイミング
次の場合にこのスキルを使用します:
- レビュー用のプルリクエストを作成するとき
- コードを main/production ブランチにマージする前
- 体系的な検証チェックリストが必要なとき
- コードレビュー前に問題を見つけたいとき
コミット前の検証
コードをコミットする前に、次の項目を確認します:
- 型チェックに合格する(言語に応じて、
tsc --noEmit、mypyなど) - エラーなしでリンティングに合格する(ESLint、Pylint など)
- 既存のテストがすべてローカルで合格する
- コードに console.log/デバッグ用の記述が残っていない
- コードがプロジェクトのスタイルガイドに従っている
- コメントアウトされたコードブロックがない
言語別のコマンド
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 ./...
PR 作成前の検証
プルリクエストを作成する前に、次の項目を確認します:
必須情報
- ユーザー向けの変更に対する変更履歴を追加している(changesets を使用している場合)
- PR の説明に次の情報がすべて記載されている:
- 変更の概要
- 関連チケットの参照(ENG-XXX、HEL-XXX、JIRA-XXX など)
- UI の変更に関するスクリーンショット(デスクトップ、タブレット、モバイル)
- 破壊的変更の説明
- 移行ガイド(破壊的変更がある場合)
- 新機能に対するテストを追加している
- 必要に応じてドキュメントを更新している(README、API ドキュメントなど)
セキュリティチェックリスト(API に変更がある場合)
- 保護されたルートで認証が必須になっている
- 認可チェックを実装している
- スキーマによる入力検証を行っている(Zod、Pydantic など)
- ログに機密データを含めていない
- SQL インジェクションの脆弱性がない
- XSS の脆弱性がない
- レート制限を検討している
データベースの変更(スキーマに変更がある場合)
- マイグレーションファイルを作成している
- ローカルデータベースでマイグレーションをテストしている
- ステージングデータベースでマイグレーションをテストしている
- ダウンマイグレーションを用意している(ロールバック計画)
- マイグレーションガイドなしで破壊的変更を行っていない
- スキーマの変更をドキュメント化している
UI の変更(該当する場合)
- スクリーンショットを含めている:
- デスクトップ表示(1920x1080)
- タブレット表示(768x1024)
- モバイル表示(375x667)
- レスポンシブ動作を検証している
- アクセシビリティを確認している(キーボード操作、スクリーンリーダー)
- 読み込み状態を実装している
- エラー状態を実装している
マージ前の検証
main ブランチにマージする前に、次の項目を確認します:
CI/CD チェック
- CI チェック(lint、型チェック、テスト、ビルド)がすべて合格している
- 少なくとも 1 人のレビュアーがコードレビューを承認している
- 変更したファイルに TypeScript エラーがない
- 対象ブランチとのマージコンフリクトがない
- 警告なしでビルドが成功する
機能の検証
- データベースのマイグレーションが正常に実行される(該当する場合)
- 既存機能にリグレッションがない
- パフォーマンスのベンチマークが許容範囲内である
- 重要なパスの手動テストが完了している
ドキュメント
- CHANGELOG.md を更新している(使用している場合)
- API ドキュメントを更新している(API に変更がある場合)
- README を更新している(セットアップ/使用方法に変更がある場合)
- 移行ガイドを用意している(破壊的変更がある場合)
PR 説明テンプレート
包括的な PR 説明には、このテンプレートを使用します:
## 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"]
よくある落とし穴を避ける
コミット前
- ❌ テストに失敗したコードをコミットする
- ❌ console.log/デバッグ用の記述を残す
- ❌ 型チェッカーを実行せずにコミットする
- ❌ コメントアウトされた大きなコードブロックをコミットする
PR 作成前
- ❌ 説明なしで PR を作成する
- ❌ UI の変更に関するスクリーンショットを含めない
- ❌ 関連チケットにリンクしない
- ❌ 破壊的変更を説明しない
- ❌ 新しいコードのテストカバレッジが不足している
マージ前
- ❌ CI チェックに失敗した状態でマージする
- ❌ コードレビューの承認なしでマージする
- ❌ マージコンフリクトがある状態でマージする
- ❌ マイグレーションをテストせずにマージする
- ❌ ロールバック計画を検討せずにマージする
簡易検証スクリプト
コミット前の検証スクリプトを作成します:
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!"
実行可能にします:
chmod +x pre-commit.sh
Git フックによる自動化
コミット前のチェックを自動で実行するように設定します:
Husky の使用(JavaScript/TypeScript)
npm install --save-dev husky
npx husky install
npx husky add .husky/pre-commit "npm run lint && npm test"
pre-commit の使用(Python)
.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
フックをインストールします:
pre-commit install
成功基準
コミット前の成功基準
- ✅ すべてのローカルチェックに合格している
- ✅ コードが正しくフォーマットされている
- ✅ デバッグ用の文が残っていない
- ✅ ローカルでテストに合格している
PR 前の成功基準
- ✅ PR の説明が包括的である
- ✅ 必要な情報がすべて含まれている
- ✅ スクリーンショットが添付されている(UI の変更がある場合)
- ✅ 破壊的変更が文書化されている
マージ前の成功基準
- ✅ CI パイプラインが成功している
- ✅ コードレビューで承認されている
- ✅ 対象ブランチとの競合がない
- ✅ 手動テストが完了している
関連スキル
universal-verification-screenshot- UI 変更のスクリーンショット検証universal-verification-bug-fix- バグ修正の検証ワークフローtoolchains-universal-security-api-review- API セキュリティテストuniversal-collaboration-git-workflow- Git ワークフローのベストプラクティス
コメント
Markdown 対応