mcpField
P
pre-merge

pre-merge

github.com/bobmatnycテスト・品質78334 回インストール15 週間前に更新
リポジトリ

pre-merge について

ソフトウェアチーム向けのマージ前検証ワークフローガイドです。コミット、プルリクエスト、マージ前のチェックリストを示し、コード品質、機能、安全性、データベース、UI、ドキュメントを扱います。

主な機能

  1. 01型、Lint、フォーマット、テストの確認
  2. 02PR の説明と変更内容の準備
  3. 03API セキュリティと DB マイグレーションの確認
  4. 04レスポンシブ UI とアクセシビリティの検証
  5. 05CI、レビュー、マージ条件の確認
  6. 06スクリプトと Git フックによるチェックの自動化

活用シーン

  1. 01コミット前に変更を体系的に確認
  2. 02PR の説明と検証資料を準備
  3. 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
![Desktop view](screenshot-url)

### Tablet
![Tablet view](screenshot-url)

### Mobile
![Mobile view](screenshot-url)

## 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 ワークフローのベストプラクティス

コメント