validate-before-merge について
コードがマージ可能かを確認するため、CIに沿ってlint、ビルド、ユニットテストを実行し、UI変更時にはビジュアル回帰テストも案内するスキルです。ローカルで変更を検証する開発者向けに、失敗時の対応と結果報告の手順をまとめています。
主な機能
- 01lint、ビルド、テストの順次実行
- 02UI変更時のビジュアル回帰テスト
- 03簡易検証コマンドの提示
- 04未コミット変更とデバッグ記述の確認
- 05検証結果レポートの整理
活用シーン
- 01マージリクエスト前のチェック実行
- 02ビルドやユニットテスト失敗の調査
- 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'
コメント
Markdown 対応