SuperAPI AI 工具集

setup-pre-commit

编程与开发

查看项目

更新于 10-15 15:43

技能介绍

用途

Setup Pre-Commit 是一个用于在提交代码时配置自动化代码质量检查的技能,通过 Husky 和 lint-staged 搭建 pre-commit 钩子。

适用场景:

  • 为新项目搭建提交时的质量门禁
  • 为已有项目添加格式化与类型检查
  • 统一团队的 pre-commit 行为

不适用场景:

  • CI 流水线搭建 → 使用 deployment-automation
  • Git 工作流策略 → 使用 git-workflow
  • 完整测试策略 → 使用 testing-strategies

主要能力

该技能会完成以下配置:

  • 检测项目使用的包管理器
  • 安装 husky、lint-staged、prettier 依赖
  • 初始化 Husky
  • 创建 pre-commit 钩子
  • 配置 lint-staged
  • 配置 Prettier(若不存在)
  • 验证钩子是否生效

使用方式

第 1 步 — 检测包管理器

按优先级检查锁文件:

ls package-lock.json  # npm
ls yarn.lock          # yarn
ls pnpm-lock.yaml     # pnpm
ls bun.lockb          # bun

第 2 步 — 安装依赖

# npm
npm install --save-dev husky lint-staged prettier

# pnpm
pnpm add -D husky lint-staged prettier

# yarn
yarn add -D husky lint-staged prettier

第 3 步 — 初始化 Husky

npx husky init

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

第 4 步 — 创建 pre-commit 钩子

创建 .husky/pre-commit:

npx lint-staged
npm run typecheck  # omit if script doesn't exist
npm test           # omit if script doesn't exist

注意:Husky v9+ 的钩子文件不需要 shebang。

第 5 步 — 配置 lint-staged

创建 .lintstagedrc:

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

第 6 步 — 配置 Prettier(若不存在)

仅在 .prettierrc 不存在时创建:

{
  "tabWidth": 2,
  "printWidth": 80,
  "singleQuote": false,
  "trailingComma": "es5",
  "semi": true,
  "arrowParens": "always"
}

第 7 步 — 验证

git add -A
git commit -m "test: verify pre-commit hooks"

观察:lint-staged 格式化、typecheck 通过、测试通过。

执行顺序

lint-staged 先运行(快速,仅处理暂存文件)→ typecheck(整个项目)→ tests(完整测试套件)。

如果 package.json 中不存在 typecheck 或 test 脚本,则从 pre-commit 钩子中省略对应行。

操作说明

  • 识别任务触发条件与预期输出。
  • 自上而下遵循该技能的工作流步骤。
  • 在进入下一步前验证输出。
  • 记录阻塞点以及任一步骤失败时的回退路径。

示例

示例:先在小范围内应用该技能,验证通过后再扩展到完整范围。

最佳实践

  • 保持输出确定且可审计。
  • 优先选择小而可逆的改动,而非大范围高风险编辑。
  • 明确记录假设。

参考

  • 项目标准:.agent-skills/skill-standardization/SKILL.md
  • 校验脚本:.agent-skills/skill-standardization/scripts/validate_skill.sh