setup-pre-commit

作成者: mattpocock

現在のリポジトリに、Huskyのpre-commitフックをlint-staged(Prettier)、型チェック、テストとともに設定します。ユーザーがpre-commitフックを追加したい、Huskyをセットアップしたい、lint-stagedを設定したい、またはコミット時のフォーマット/型チェック/テストを追加したい場合に使用します。

npx skills add https://github.com/mattpocock/skills --skill setup-pre-commit

Setup Pre-Commit Hooks

What This Sets Up

  • Husky pre-commit hook
  • lint-staged running Prettier on all staged files
  • Prettier config (if missing)
  • typecheck and test scripts in the pre-commit hook

Steps

1. Detect package manager

Check for package-lock.json (npm), pnpm-lock.yaml (pnpm), yarn.lock (yarn), bun.lockb (bun). Use whichever is present. Default to npm if unclear.

2. Install dependencies

Install as devDependencies:

husky lint-staged prettier

3. Initialize Husky

npx husky init

This creates .husky/ dir and adds prepare: "husky" to package.json.

4. Create .husky/pre-commit

Write this file (no shebang needed for Husky v9+):

npx lint-staged
npm run typecheck
npm run test

Adapt: Replace npm with detected package manager. If repo has no typecheck or test script in package.json, omit those lines and tell the user.

5. Create .lintstagedrc

{
  "*": "prettier --ignore-unknown --write"
}

6. Create .prettierrc (if missing)

Only create if no Prettier config exists. Use these defaults:

{
  "useTabs": false,
  "tabWidth": 2,
  "printWidth": 80,
  "singleQuote": false,
  "trailingComma": "es5",
  "semi": true,
  "arrowParens": "always"
}

7. Verify

  • .husky/pre-commit exists and is executable
  • .lintstagedrc exists
  • prepare script in package.json is "husky"
  • prettier config exists
  • Run npx lint-staged to verify it works

8. Commit

Stage all changed/created files and commit with message: Add pre-commit hooks (husky + lint-staged + prettier)

This will run through the new pre-commit hooks — a good smoke test that everything works.

Notes

  • Husky v9+ doesn't need shebangs in hook files
  • prettier --ignore-unknown skips files Prettier can't parse (images, etc.)
  • The pre-commit runs lint-staged first (fast, staged-only), then full typecheck and tests

mattpocockのその他のスキル

improve-codebase-architecture
mattpocock
コードベース内の深化の機会を見つけます。CONTEXT.mdのドメイン言語とdocs/adr/の決定事項に基づきます。ユーザーがアーキテクチャを改善したい、リファクタリングの機会を見つけたい、密結合モジュールを統合したい、またはコードベースをよりテスト可能でAIがナビゲートしやすくしたい場合に使用します。
developmentcode-reviewapi
tdd
mattpocock
テスト駆動開発のレッド・グリーン・リファクタリングループ。ユーザーがTDDを使って機能を構築したりバグを修正したい場合、「レッド・グリーン・リファクタリング」に言及した場合、統合テストを希望する場合、またはテストファースト開発を依頼した場合に使用します。
developmenttesting
handoff
mattpocock
現在の会話を、別のエージェントが引き継ぐためのハンドオフ文書に圧縮します。
communicationproject-managementdocument
prototype
mattpocock
本番実装に入る前に、設計を具体化するための使い捨てプロトタイプを構築します。2つのブランチに分岐します。状態やビジネスロジックの検証用の実行可能なターミナルアプリ、または1つのルートから切り替え可能な複数の根本的に異なるUIバリエーションです。ユーザーがプロトタイプ作成、データモデルやステートマシンの健全性チェック、UIのモックアップ、デザインオプションの探索を希望する場合、または「これをプロトタイプ化して」「試しに触らせて」「いくつかのデザインを試して」と指示した場合に使用します。
developmentdesigncreative
triage
mattpocock
トリアージロールによって駆動されるステートマシンを通じて課題をトリアージします。ユーザーが課題を作成したい、課題をトリアージしたい、新着のバグや機能リクエストをレビューしたい、AFKエージェント向けに課題を準備したい、または課題ワークフローを管理したい場合に使用します。
developmentproject-managementcommunication
obsidian-vault
mattpocock
Obsidianボルト内のノートを検索、作成、管理し、ウィキリンクやインデックスノートを扱います。ユーザーがObsidianでノートを検索、作成、整理したい場合に使用します。
productivitydocument
edit-article
mattpocock
記事のセクションを再構成し、明確さを向上させ、文章を引き締めることで編集・改善します。ユーザーが記事の草稿を編集、修正、または改善したい場合に使用します。
documentcreative
writing-great-skills
mattpocock
スキルを適切に記述・編集するためのリファレンス — スキルを予測可能にする語彙と原則。
documentdevelopment