← スキル一覧に戻る
pre-push-quality-checks
ludiscan / ludiscan-webapp
⭐ 1🍴 0📅 2026年1月15日
PR作成・git push前に必ず使用。bun install → fix → format → type → lint を順番に実行。
SKILL.md
--- name: pre-push-quality-checks description: PR作成・git push前に必ず使用。bun install → fix → format → type → lint を順番に実行。 --- ## When to Use This Skill このスキルは以下の場合に**必ず**実行してください: 1. **PR作成前** - `gh pr create` を実行する前 2. **Git push前** - `git push` を実行する前 3. **コード変更後** - src/ 配下のファイルを変更した後 4. **ユーザーが明示的に品質チェックを要求した場合** ## When NOT to Use This Skill 以下の場合はこのスキルをスキップできます: 1. ドキュメントのみの変更 (README.md, CLAUDE.md等) 2. 設定ファイルのみの変更 (.gitignore, .envファイル等) 3. src/ 配下のコードが変更されていない場合 ## Quality Check Process ### Step 0: Install Dependencies (MANDATORY) **まず最初に、必ず依存関係をインストールしてください:** ```bash bun install ``` **重要**: このステップをスキップすると、lintやtype checkが失敗する可能性があります。**必ず実行してください。** ### Step 1: Run Auto-Fix Commands まず、自動修正可能な問題を修正します: ```bash # 1. ESLintとStylelintの自動修正 bun run fix # 2. Prettierでコード整形 bun run format ``` **重要**: これらのコマンドでファイルが変更された場合、変更をgit addする必要があります。 ### Step 2: Run Type Check TypeScript型チェックを実行します: ```bash bun run type ``` **型エラーが1つでもある場合、PRやpushは禁止です。** ### Step 3: Final Lint Check 最終的なlintチェックを実行します: ```bash bun run lint ``` **lintエラーが1つでもある場合、PRやpushは禁止です。** ## Complete Workflow ### For PR Creation PR作成時は以下の順序で実行してください: ```markdown 0. `bun install` を実行 (MANDATORY - 最初に必ず実行) 1. コード変更を完了 2. `bun run fix` を実行 → ファイルが変更された場合は git add 3. `bun run format` を実行 → ファイルが変更された場合は git add 4. `bun run type` を実行 → エラーがある場合は修正して再度実行 5. `bun run lint` を実行 → エラーがある場合は修正して再度実行 6. すべてのチェックが通ったら git commit 7. git push 8. gh pr create ``` **エラーが発生した場合**: - 型エラーの場合: エラーメッセージを読み、該当ファイルを修正 - lintエラーの場合: エラーメッセージを読み、該当ファイルを修正 - 自動修正で解決しない場合: 手動で修正 ### For Git Push git push前は以下の順序で実行してください: ```markdown 0. `bun install` を実行 (MANDATORY - 最初に必ず実行) 1. コード変更を完了 2. `bun run fix` を実行 → ファイルが変更された場合は git add 3. `bun run format` を実行 → ファイルが変更された場合は git add 4. `bun run type` を実行 → エラーがある場合は修正して再度実行 5. `bun run lint` を実行 → エラーがある場合は修正して再度実行 6. すべてのチェックが通ったら git commit 7. git push ``` ## CRITICAL: All Errors Must Be Fixed **🚨 絶対に守るべきルール 🚨** 検出された**すべてのエラー**を修正する必要があります。以下の言い訳は**一切認められません**: ❌ **禁止される言い訳**: - ❌ 「このエラーは既存のもので、私の変更によるものではありません」 - ❌ 「このエラーは以前から存在していました」 - ❌ 「この型エラーは自分のコードとは関係ありません」 - ❌ 「このlintエラーは別の人が作ったコードです」 ✅ **正しい対応**: - ✅ 検出されたエラーが既存のものであっても、**全て修正する** - ✅ エラーの原因が自分の変更かどうかに関わらず、**全て修正する** - ✅ エラーが見つかった時点で、**その場で全て修正する** **理由**: - コード品質を維持するためには、既存のエラーも含めて全て修正する必要があります - 「既存のエラー」という概念は品質チェックにおいては存在しません - エラーが検出された時点で、それは修正すべき問題です **重要**: このルールに違反した場合、PRやpushは**絶対に許可されません**。 ## Error Handling ### Type Errors 型エラーが発生した場合: ```bash # エラーメッセージ例: src/component/atoms/Button.tsx(15,7): error TS2322: Type 'string' is not assignable to type 'number'. ``` **対処法**: 1. エラーメッセージから該当ファイルと行番号を特定 2. ファイルを開いて問題を確認 3. 型を修正 4. 再度 `bun run type` を実行して確認 **絶対にやってはいけないこと**: - ❌ `any` 型を使用してエラーを隠す - ❌ `@ts-ignore` コメントでエラーを無視する - ❌ 型チェックをスキップする ### Lint Errors lintエラーが発生した場合: ```bash # エラーメッセージ例: src/component/atoms/Button.tsx 15:7 error 'handleClick' is assigned a value but never used @typescript-eslint/no-unused-vars ``` **対処法**: 1. `bun run fix` で自動修正を試みる 2. 自動修正できない場合、エラーメッセージを読んで手動で修正 3. 再度 `bun run lint` を実行して確認 **よくあるlintエラーと対処法**: - `no-unused-vars`: 未使用の変数を削除するか、使用する - `@typescript-eslint/no-explicit-any`: `any` 型を適切な型に置き換える - `react-hooks/exhaustive-deps`: useEffectの依存配列を修正 ## Integration with Other Skills このスキルは他のスキルと組み合わせて使用してください: ### With Implementation Planning Skill 実装計画の最終ステップとしてこのスキルを実行: ```markdown ## Implementation Steps ### 5. Final Quality Checks (最終ステップ) **Status**: PENDING **What to do**: - Run `bun install` to ensure dependencies are installed (MANDATORY) - Run `bun run fix` to auto-fix linting issues - Run `bun run format` to format code - Run `bun run type` to check TypeScript errors - Run `bun run lint` to verify no linting errors - Fix ALL errors found (既存のエラーも含めて全て修正) - Commit any changes from auto-fix - Ready for PR creation **Completion criteria**: - Dependencies installed successfully - Type check passes (no errors - including existing errors) - Lint check passes (no errors - including existing errors) - All code properly formatted - No excuses about "existing errors" - all errors must be fixed ``` ## Example Execution ### Successful Case ```bash # Step 0: Install dependencies (MANDATORY) $ bun install ✓ Dependencies installed successfully # Step 1: Auto-fix $ bun run fix ✓ ESLint: Fixed 5 issues automatically ✓ Stylelint: Fixed 2 issues automatically # ファイルが変更された場合 $ git add . # Step 2: Format $ bun run format ✓ Prettier: Formatted 10 files # ファイルが変更された場合 $ git add . # Step 3: Type check $ bun run type ✓ No type errors found # Step 4: Lint check $ bun run lint ✓ ESLint: No errors found ✓ Stylelint: No errors found # すべて成功 - PRやpush可能 ✅ All quality checks passed! Ready to push/create PR. ``` ### Error Case ```bash # Step 0: Install dependencies (MANDATORY) $ bun install ✓ Dependencies installed successfully # Step 1: Auto-fix $ bun run fix ✓ ESLint: Fixed 5 issues automatically # Step 2: Format $ bun run format ✓ Prettier: Formatted 10 files # Step 3: Type check $ bun run type ❌ Error: Type errors found src/component/atoms/Button.tsx(15,7): error TS2322: Type 'string' is not assignable to type 'number'. # ⚠️ 重要: このエラーが既存のものでも、必ず修正してください # 「既存のエラー」という言い訳は認められません # エラーを修正する # ... ファイルを修正 ... # 再度type checkを実行 $ bun run type ✓ No type errors found # Step 4: Lint check $ bun run lint ✓ ESLint: No errors found ✓ Stylelint: No errors found # すべて成功 ✅ All quality checks passed! Ready to push/create PR. ``` ## Reporting to User 品質チェック完了後、ユーザーに結果を報告してください: ### Success Report ```markdown ✅ コード品質チェックが完了しました **実行したチェック:** - [x] bun install (dependencies) - [x] ESLint & Stylelint auto-fix - [x] Prettier format - [x] TypeScript type check - [x] Final lint check **結果:** - 型エラー: 0件 - Lintエラー: 0件 - フォーマット: 完了 PRの作成またはpushを実行できます。 ``` ### Error Report ```markdown ⚠️ コード品質チェックでエラーが見つかりました **実行したチェック:** - [x] bun install (dependencies) - [x] ESLint & Stylelint auto-fix - [x] Prettier format - [ ] TypeScript type check (エラーあり) **エラー詳細:** ``` src/component/atoms/Button.tsx(15,7): error TS2322: Type 'string' is not assignable to type 'number'. ``` ⚠️ **重要**: このエラーが既存のものでも、必ず修正してください。 「既存のエラー」や「私の変更によるものではない」という言い訳は認められません。 エラーを修正してから、再度チェックを実行してください。 ``` ## Important Notes 1. **必ず`bun install`から開始** - 最初に依存関係をインストールしてください 2. **品質チェックは必須です** - スキップしないでください 3. **すべてのエラーを修正** - 既存のエラーも含めて、検出された全てのエラーを修正してください 4. **エラーがある場合、PRやpushは禁止** - すべてのエラーを修正してください 5. **自動修正を優先** - `bun run fix` と `bun run format` を先に実行 6. **型安全性を維持** - `any` 型や `@ts-ignore` でエラーを隠さない 7. **言い訳は禁止** - 「既存のエラー」や「私の変更ではない」という言い訳は認められません 8. **ユーザーに報告** - チェック結果を明確に伝える ## Automation Reminder このスキルは以下のタイミングで**自動的に**実行されるべきです: - ✅ ユーザーがPR作成を依頼したとき - ✅ ユーザーがgit pushを依頼したとき - ✅ 実装計画の最終ステップとして - ✅ コード変更が完了したとき **ユーザーが明示的に依頼しなくても、Claude Codeは自動的にこのスキルを実行してください。** ## Summary このスキルにより以下が保証されます: 1. **依存関係の整合性** - `bun install`により常に最新の依存関係が利用可能 2. **コード品質の一貫性** - すべてのコードがlintとformatルールに従う 3. **型安全性** - TypeScriptエラーがない状態を維持 4. **スムーズなCI/CD** - ローカルでチェックするため、CIでのエラーを防ぐ 5. **効率的な開発** - 自動修正により手動修正の手間を削減 6. **完全なエラー修正** - 既存のエラーも含めて全て修正され、コードベース全体の品質が向上 **Remember**: - **必ず`bun install`から開始してください** - 品質チェックは面倒に見えますが、長期的にはバグを減らし、コードの保守性を高めます - **「既存のエラー」という言い訳は絶対に認められません** - 検出されたエラーは全て修正してください - 絶対にスキップしないでください