mcpField
P
pre-commit

pre-commit

github.com/julianobarbosaテスト・品質1458 回インストール3 日前に更新
リポジトリ

pre-commit について

pre-commitは、コードのコミットフックを管理するスキルです。フォーマット、Lint、セキュリティチェックを自動化し、設定生成や検証、トラブルシューティング、CI連携のワークフローを提供します。

主な機能

  1. 01コミットフックの導入と設定
  2. 02フォーマット、Lint、セキュリティフックの追加
  3. 03設定テンプレートの生成と検証
  4. 04フック失敗のトラブルシューティング
  5. 05CIパイプラインとの連携
  6. 06言語別およびインフラ分野の対応

活用シーン

  1. 01新規プロジェクトへのpre-commit導入
  2. 02Terraform検証フックの追加
  3. 03シークレット検出とセキュリティスキャンの追加
  4. 04失敗したESLintフックの診断

インストール

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

$npx skills add https://github.com/julianobarbosa/claude-code-skills --skill pre-commit

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

ConfigurationGuide.md
HooksReference.md
QuickStartGuide.md
SecurityHooks.md
Tools/
HookGenerator.ts
HookValidator.ts
package.json
PreCommitManager.ts
Workflows/
AddHooks.md
CIIntegration.md
CustomHook.md
Setup.md
Troubleshoot.md

詳細

PreCommit

pre-commit フックを管理するための包括的なスキルです。pre-commit フックの多言語管理フレームワークであり、コード品質のチェック、フォーマット、リンティング、セキュリティスキャンを自動化します。

クイックリファレンス

コマンド説明
pre-commit installGit フックをインストールします
pre-commit run --all-filesすべてのファイルですべてのフックを実行します
pre-commit autoupdateフックを最新バージョンに更新します
pre-commit run <hook-id>指定したフックを実行します

ワークフローの振り分け

ワークフロートリガーファイル
セットアップ「pre-commit をセットアップ」「フックを初期化」「設定を作成」Workflows/Setup.md
フックの追加「フックを追加」「リンティングを追加」「フォーマッターを追加」「セキュリティを追加」Workflows/AddHooks.md
トラブルシューティング「pre-commit を修正」「フックが失敗」「フックをデバッグ」Workflows/Troubleshoot.md
CI 統合「CI パイプライン」「GitHub Actions」「GitLab CI」Workflows/CIIntegration.md
カスタムフック「カスタムフックを作成」「ローカルフック」「フックを書く」Workflows/CustomHook.md

ドキュメント

ドキュメント用途
QuickStartGuide.mdインストールと初回セットアップ
HooksReference.md言語・目的別の包括的なフック一覧
ConfigurationGuide.md高度な設定オプション
SecurityHooks.mdシークレットの検出とセキュリティスキャン

ツール

ツール用途
Tools/PreCommitManager.tspre-commit 設定を管理する CLI
Tools/HookGenerator.ts.pre-commit-config.yaml テンプレートを生成します
Tools/HookValidator.tsフック設定を検証します

例

例 1:新しいプロジェクトで pre-commit をセットアップする

User: "Setup pre-commit for my Python project"
→ Invokes Setup workflow
→ Creates .pre-commit-config.yaml with Python hooks (black, isort, flake8)
→ Runs pre-commit install

例 2:Terraform フックを追加する

User: "Add Terraform validation hooks"
→ Invokes AddHooks workflow
→ Adds terraform_fmt, terraform_validate, terraform_docs hooks
→ Configures tflint and checkov integration

例 3:セキュリティスキャンを追加する

User: "Add secret detection to pre-commit"
→ Invokes AddHooks workflow
→ Adds gitleaks, detect-secrets, trufflehog hooks
→ Configures appropriate exclusion patterns

例 4:失敗するフックをデバッグする

User: "My eslint pre-commit hook is failing"
→ Invokes Troubleshoot workflow
→ Checks hook configuration and dependencies
→ Provides fix recommendations

サポート対象のフックカテゴリ

  • Python:black、isort、flake8、mypy、bandit、pyupgrade
  • JavaScript/TypeScript:prettier、eslint、biome
  • インフラストラクチャ:terraform、terragrunt、helm、kustomize
  • Kubernetes:kubeconform、kubeval、checkov
  • セキュリティ:gitleaks、detect-secrets、trufflehog、trivy
  • 汎用:yamllint、jsonlint、shellcheck、markdownlint

注意点

  • エディターのターミナルで git commit -m を実行すると、フックの出力が表示されません — エディターのラッパーによって stdout/stderr が隠されます。実際の失敗メッセージを確認するには、pre-commit run --all-files を直接実行してください。
  • pre-commit autoupdate は最新のタグに更新しますが、フックリポジトリ内の固定設定は更新しません — 内部で flake8==6.0.0 を固定しているフックは、そのバージョンのままです。autoupdate の後に、各フックの additional_dependencies を確認してください。
  • デフォルトではステージされたファイルでのみフックが実行されます。そのため、git add の後にファイルを編集してコミットすると、フックは変更前の内容に対して実行されます。CI では --all-files を使用してこれを検出してください。
  • exclude: の正規表現は files: とアンカーの扱いが異なります — 一部のフックバージョンでは exclude: tests/ は tests/foo.py を除外しません。確実に除外するには exclude: ^tests/ を使用してください。すべてにアンカーを付けてください。
  • language: system のフックは pre-commit の仮想環境を経由せず、ユーザーの PATH に依存します。自分の環境では動いても、CI では command not found で失敗します。additional_dependencies を指定して language: python を使用することをおすすめします。
  • pre-commit install はデフォルトでは commit-msg や pre-push 用のフックをインストールしません — 別途 --hook-type の呼び出しが必要です。commit-msg フックを追加したのに動作しないと困惑するチームは少なくありません。
  • SKIP=hookid git commit でフックをスキップしても、そのシェル呼び出しの間だけ有効です。CI は SKIP が未設定の新しい環境で実行されるため、フックは通常どおり実行されます。

コメント