---
name: setup-pre-commit
version: 1.0.0
category: 开发编程
trigger_words:
tags:
  - testing
platform: coze
source: DeepseekModel
source_url: https://deepseekmodel.com/skill?id=mattpocock-skills-skills-misc-setup-pre-commit-skill-md
---

name setup-pre-commit description 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. 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