Setup Pre-Commit Hooks

SkillDev tools

This skill sets up pre-commit hooks in a repository so that code is formatted, type checked, and tested before each commit. It installs Husky, lint-staged, and Prettier, detects the package manager, and creates the hook and config files. The result is that commits run formatting on staged files, then type checking and tests.

Use Setup Pre-Commit Hooks in Claude, ChatGPT or Ahel Desktop

Free. Sign in, add Setup Pre-Commit Hooks and connect your AI. About a minute.

Also: Claude Code · Cursor · Codex

Then ask your AI: use the Setup Pre-Commit Hooks skill

Details

Instructions available. Your AI can read the instructions. Execution depends on the setup they require.

Have a git repository with a package.json file.

Setup Pre-Commit HooksStart free

What your AI can do with it

  • Installs Husky, lint-staged, and Prettier as devDependencies
  • Detects the package manager from lock files
  • Creates .husky/pre-commit to run lint-staged, typecheck, and test
  • Creates .lintstagedrc to run Prettier on staged files
  • Creates a .prettierrc config if none exists
  • Verifies the setup and commits the new files

Getting started

  1. Have a git repository with a package.json file.
  2. Run the skill so it detects the package manager and installs Husky, lint-staged, and Prettier as devDependencies.
  3. Let it initialize Husky and create the .husky/pre-commit, .lintstagedrc, and .prettierrc files.
  4. If the repo has no typecheck or test script, the skill omits those lines and tells you.
  5. After the skill verifies the setup, it stages and commits the new files.

What this skill tells your AI

The instructions your AI receives, as published by mattpocock/skills in skills/misc/setup-pre-commit/SKILL.md and read by ahel’s review.

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

Signals

GitHub stars
273k
Forks
23k
Last commit
Sep 2026
Installs
421k installs

Questions

How do I set up pre-commit?
Run the skill in your repo. It installs Husky, lint-staged, and Prettier, creates the hook and config files, verifies the setup, and commits the new files.
How to run pre-commit before commit?
Once the skill sets up the .husky/pre-commit hook, it runs automatically before each commit. You can also run npx lint-staged to test it.
What files does the skill create?
It creates .husky/pre-commit, .lintstagedrc, and .prettierrc if missing. It also adds a prepare script to package.json.
What if my repo has no typecheck or test script?
The skill omits those lines from the pre-commit hook and tells you. The hook still runs lint-staged.
Advanced
Item type
skill
Key
setup-pre-commit-mattpocock
Source
github.com/mattpocock/skills