hook-commits
Hook Commits
Section titled “Hook Commits”HARD GATE — HARD GATE — Pre-commit and commit-msg hooks must run before any commit lands. Skipping hooks (
--no-verify) is forbidden unless explicitly authorized for a specific commit and documented.
What This Sets Up
Section titled “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
1. Detect package manager
Section titled “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
Section titled “2. Install dependencies”Install as devDependencies:
husky lint-staged prettier3. Initialize Husky
Section titled “3. Initialize Husky”npx husky initThis creates .husky/ dir and adds prepare: "husky" to package.json.
4. Create .husky/pre-commit
Section titled “4. Create .husky/pre-commit”Write this file (no shebang needed for Husky v9+):
npx lint-stagednpm run typechecknpm run testAdapt: 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
Section titled “5. Create .lintstagedrc”{ "*": "prettier --ignore-unknown --write"}6. Create .prettierrc (if missing)
Section titled “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
Section titled “7. Verify”-
.husky/pre-commitexists and is executable -
.lintstagedrcexists -
preparescript in package.json is"husky" -
prettierconfig exists - Run
npx lint-stagedto verify it works
8. Commit
Section titled “8. Commit”Stage all changed/created files and commit with message: chore: add pre-commit hooks (husky + lint-staged + prettier)
This will run through the new pre-commit hooks — a good smoke test that everything works.
- Husky v9+ doesn’t need shebangs in hook files
prettier --ignore-unknownskips files Prettier can’t parse (images, etc.)- The pre-commit runs lint-staged first (fast, staged-only), then full typecheck and tests