mcpField
V
validate-before-merge

validate-before-merge

github.com/cartridge-ggテスト・品質8035 回インストール7 週間前に更新
リポジトリ

validate-before-merge について

コードがマージ可能かを確認するため、CIに沿ってlint、ビルド、ユニットテストを実行し、UI変更時にはビジュアル回帰テストも案内するスキルです。ローカルで変更を検証する開発者向けに、失敗時の対応と結果報告の手順をまとめています。

主な機能

  1. 01lint、ビルド、テストの順次実行
  2. 02UI変更時のビジュアル回帰テスト
  3. 03簡易検証コマンドの提示
  4. 04未コミット変更とデバッグ記述の確認
  5. 05検証結果レポートの整理

活用シーン

  1. 01マージリクエスト前のチェック実行
  2. 02ビルドやユニットテスト失敗の調査
  3. 03UI変更後のスナップショット検証と更新

インストール

コマンドをコピーしてターミナルで実行します。

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

インストール後、Claude Code で/validate-before-mergeを入力して読み込まれたか確認します。

詳細

マージ前の検証

概要

このスキルでは、コードがマージ可能な状態であることを検証するために、CI で実行されるすべてのチェックを実行します。CI の実行前に、ローカルで問題を見つけるために使用してください。

検証の全手順

以下のチェックを順番に実行してください。次の手順に進む前に、各ステップに合格する必要があります。

ステップ 1:Lint とフォーマットのチェック
pnpm lint:check

期待される結果:エラーや警告がないこと 失敗した場合:pnpm format を実行して自動修正します

ステップ 2:すべてのパッケージをビルド
pnpm build

期待される結果:TypeScript エラーのないビルドの成功 失敗した場合:報告されたファイルの型エラーを修正します

ステップ 3:ユニットテスト
pnpm test:ci

期待される結果:すべてのテストに合格すること 失敗した場合:

  • 失敗したテストの出力を確認します
  • 必要に応じてコードを修正するか、テストを更新します
  • 正当な理由なく失敗したテストをスキップしてはいけません
ステップ 4:ビジュアルリグレッションテスト(UI を変更した場合)

以下に該当する変更がある場合のみ必要です:

  • packages/keychain/src/components/
  • packages/keychain/src/hooks/(UI 関連)
  • Storybook の設定
pnpm test:storybook

期待される結果:すべてのビジュアル比較に合格すること 意図的な変更による失敗の場合:

pnpm test:storybook:update
git add packages/*/__image_snapshots__/
git commit -m "chore: update storybook snapshots"
ステップ 5:未コミットの変更がないことを確認
git status

期待される結果:作業ディレクトリがクリーンであること(または、無視する予定の未追跡ファイルのみがあること)

クイック検証スクリプト

検証をすばやく行うには(pre-commit と同様):

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

CI の完全な再現

GitHub Actions で実行される内容を正確に再現するには:

# 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

検証チェックリスト

マージを依頼する前に、以下を確認してください:

  • pnpm lint:check に合格する
  • pnpm build がエラーなく成功する
  • pnpm test:ci のすべてのテストに合格する
  • pnpm test:storybook に合格する(UI を変更した場合)
  • コードに console.log やデバッグ用の記述が残っていない
  • ハードコードされたシークレットや認証情報がない
  • PR の説明が変更内容を正確に示している
  • 関連する issue がリンクされている

マージ前によくある問題

console.log の削除忘れ
grep -r "console.log" packages/*/src --include="*.ts" --include="*.tsx" | grep -v "test"
古くなった依存関係
git fetch origin main
git rebase origin/main
マージコンフリクト
git fetch origin main
git merge origin/main
# Resolve conflicts
pnpm build  # Verify after resolving

結果の報告

検証後、以下を報告してください:

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

問題が見つかった場合:

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

コメント