setup-pre-commit

在当前仓库中设置 Husky pre-commit 钩子,配合 lint-staged(Prettier)、类型检查和测试。当用户希望添加 pre-commit 钩子、设置 Husky、配置 lint-staged,或添加提交时的格式化/类

提供方:mattpocock/skills调用次数:3.7k收藏:363更新:2026/08/28

技能说明mattpocock/skills

在当前仓库中设置 Husky pre-commit 钩子,配合 lint-staged(Prettier)、类型检查和测试。当用户希望添加 pre-commit 钩子、设置 Husky、配置 lint-staged,或添加提交时的格式化/类型检查/测试时使用。

技能简介

setup-pre-commit 是一个在现有仓库中快速配置 Git pre-commit 钩子的技能。它通过 Husky 和 lint-staged 在每次提交前自动运行 Prettier 格式化、类型检查和测试,帮助你在代码提交阶段自动拦截格式问题、类型错误和测试失败,提升代码质量。

使用场景

  • 为新项目添加 pre-commit 钩子,统一提交流程
  • 为已有仓库配置 Husky 和 lint-staged,实现提交前自动格式化
  • 需要让提交时自动运行 typecheck 和 test 脚本
  • 希望补充缺失的 Prettier 配置文件
  • 团队协作时统一代码风格和检查规范,减少人工审核负担

使用方法

本技能作为 CLI Agent Skill 使用,需要先安装到你的 Agent 环境中(如 Claude Code 等支持 Skills 的 CLI 工具)。

核心流程概要:

1. 检测包管理器:根据项目中的 package-lock.json(npm)、pnpm-lock.yaml(pnpm)、yarn.lock(yarn)等自动识别,默认使用 npm。

2. 安装依赖(作为 devDependencies):

npm install -D husky lint-staged prettier

3. 初始化 Husky

npx husky init

这会创建 .husky/ 目录并在 package.json 中添加 prepare: "husky" 脚本。

4. 创建 .husky/pre-commit

npx lint-staged
npm run typecheck
npm run test

如果 project 没有 typechecktest 脚本,自动省略对应行并告知用户。

5. 创建 .lintstagedrc

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

6. 创建 .prettierrc(仅当不存在时):使用 2 空格缩进、单引号关闭、es5 尾逗号等默认配置。

7. 验证:确认 .husky/pre-commit 存在且可执行、.lintstagedrc 存在、prepare 脚本正确,运行 npx lint-staged 测试。

8. 提交:将所有变更文件提交,message 建议为 Add pre-commit hooks (husky + lint-staged + prettier),以此作为钩子的烟雾测试。

注意事项

  • Husky v9+ 的钩子文件不需要 shebang 行
  • prettier --ignore-unknown 会跳过 Prettier 无法解析的文件(如图片等)
  • pre-commit 钩子先运行 lint-staged(快、只处理暂存文件),再执行完整的 typecheck 和 test