skill

Setup Pre Commit

Set up Husky pre-commit hooks with lint-staged (Prettier), type checking, and tests in the current repo. Use when user wants to add pre-commit hooks, set up Husky, configure lint-staged, or add commit-time formatting/typechecking/testing.

mattpocock399,664+ installsVetted

About

# 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

```bash 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`

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

### 6. Create `.prettierrc` (if missing)

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

```json { "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

Install

Run this command

npx skills add mattpocock/skills

Works with

claude appclaude codeclaude apicursorcodexwindsurfclinezed

Manual steps

Install with `npx skills add mattpocock/skills`, or clone the repository and copy the `skills/misc/setup-pre-commit` folder into your Claude skills directory.

View source

Frequently asked questions

What is the Setup Pre Commit skill?

Set up Husky pre-commit hooks with lint-staged (Prettier), type checking, and tests in the current repo. Use when user wants to add pre-commit hooks, set up Husky, configure lint-staged, or add commit-time formatting/typechecking/testing.

How do I install Setup Pre Commit?

Run this in your terminal:

npx skills add mattpocock/skills
Which AI tools does Setup Pre Commit work with?

It works with claude_app, claude_code, claude_api, cursor, codex, windsurf, cline, zed.

Who made Setup Pre Commit?

mattpocock.

Is Setup Pre Commit free?

Yes, it is free to use.

Related assets

More curated picks in Productivity & Office.

All Setup Pre Commit alternatives →

Audit before you install

Run any source through our checks - AI visibility, security, performance, and stack detection.

More in Productivity & Office