All skills
mattpocock avatar

/setup-pre-commit

@3216582 official
by Matt Pocockmattpocock/skills277k stars
23,211

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.

Use this Skill: https://skilld.dev/gh/mattpocock/skills/setup-pre-commit

This session only. Nothing lands on disk.

Fork this Skill

A fork creates an editable local Skill with its original author and licence.

SKILL.md

≈64 tokens always: the name and description. ≈494 when used: this file. ≈25 more on demand in 1 file.

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

Source: SKILL.md on GitHub

skilld matched fixed text patterns in SKILL.md and file names. Patterns miss obfuscated code.

skilld run checks every file with the same patterns. It asks for approval before it loads a Skill with a behavior marked Needs approval.

1 warning20d5 checks · Risk SAFE
  • Gen Agent Trust Hub20d

    The skill automates the setup of Husky, lint-staged, and Prettier for git pre-commit hooks. It involves installing standard developer tools and configuring local project files, which is expected and safe behavior for this task.

  • Socket20d

    No alerts

  • Snyk20d

    Risk: LOW · No issues

  • Runlayer7mo

    1/1 file flagged

  • ZeroLeaks5mo

    Score: 93/100 · 2 sections analyzed

Signed by skilld at 3216582. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub 13 hours ago.

Activeupdated 2 months ago

README badge

README badge for mattpocock/skills/setup-pre-commit

Installs and configures Husky pre-commit hooks with lint-staged to run Prettier, TypeScript type checking, and tests on every commit. Targets Node.js projects using npm, pnpm, yarn, or bun and detects the package manager automatically.

Generated from the current SKILL.md.

Does this skill work with all package managers?
Yes. It detects npm, pnpm, yarn, or bun from lockfiles and adapts the install and hook commands accordingly, defaulting to npm if unclear.
What if my repo doesn't have typecheck or test scripts?
The skill omits those lines from the pre-commit hook and notifies you, so Husky only runs lint-staged and Prettier.
Will this overwrite my existing Prettier config?
No. The skill only creates `.prettierrc` if one doesn't already exist.
Does this require Husky v9 or later?
The skill is written for Husky v9+ (no shebangs needed), but will install whatever version the package manager resolves.

Generated from the current SKILL.md. These answers refresh after source changes.