Generated banner for Setup Pre Commit
Generated logo for Setup Pre Commit

Setup Pre Commit

Matt PocockCommunityCreated by Matt Pocock

  • Skill
  • Workflow
  • Software development
  • MIT
  • No issues found

From the author

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.
— the description by Matt Pocock

AutoGineer summary

Written by AutoGineer from the skill’s own files, not by the author

This skill streamlines the setup of automated quality checks in your repository by configuring Husky, lint-staged, and Prettier. It detects your package manager, installs necessary dependencies, and creates the required configuration files to ensure code formatting, type checking, and testing occur automatically before every commit.

What it does

  • Detects the project's package manager automatically.
  • Installs Husky, lint-staged, and Prettier as development dependencies.
  • Initializes Husky and configures the pre-commit hook file.
  • Sets up lint-staged to run Prettier on staged files.
  • Creates a default Prettier configuration if one is missing.
  • Verifies the setup and provides a final commit command.

When to use it

  • When you want to enforce code formatting before commits.
  • When you need to ensure tests and type checks pass before code is committed.
  • When setting up a new project and wanting to establish quality standards early.
  • When you want to standardize pre-commit workflows across a team.

Advantages

  • Reduces manual effort in setting up complex hook configurations.
  • Ensures consistent code style across the entire repository.
  • Prevents broken builds by running tests and type checks locally before committing.
  • Supports multiple package managers including npm, pnpm, yarn, and bun.

Usage examples

“Set up pre-commit hooks for my project.”
The agent will detect your package manager, install Husky and lint-staged, configure the pre-commit hook to run formatting and tests, and finalize the setup.

Install

  1. Download the skill as a ZIP:

    https://autogineer.com/agent-skills/mattpocock/setup-pre-commit/download
  2. Unzip it into the cross-client skills folder of your project:

    mkdir -p .agents/skills && unzip setup-pre-commit.zip -d .agents/skills

Documentation by Matt Pocock

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

Files

SKILL.md

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

Requirements and compatibility

Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta

“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.

Needs: Needs Node.js

Security

No issues found by our static scan· No issues found

A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.

Attribution and licence

Created by
Matt Pocock
Publisher
Matt Pocock (Community)
Source
mattpocock/skills · skills/misc/setup-pre-commit · commit 4ae2317
Licence
MIT License (redistribution allowed)
  • LICENSE (added by AutoGineer from LICENSE)
  • ATTRIBUTION.md (written by AutoGineer)
Synced

AutoGineer is not affiliated with or endorsed by Matt Pocock or Matt Pocock.

Download ZIP

The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download setup-pre-commit.zip