setup-pre-commit

工程开发 社区
解读按原文结构重写,命令、链接、术语均保留;右侧可核对作者原始 SKILL.md

setup-pre-commit 把仓库的 commit 前质量门一次性装好:Husky 起 pre-commit、lint-staged 跑只 staged 的 Prettier、再串 typechecktest 脚本。落地后每次 git commit 都会先过 staged 文件 lint、再跑全量类型与测试。

设计思路

作者希望「质量门越早越便宜」——staged 文件用 lint-staged 限定 scope,避免每次都全仓 Prettier;类型检查与测试放 commit hook 里,把回归在合并之前抓住。Husky v9 不需要 shebang,hook 文件保持极简。

工作流

检包管理:扫 package-lock.json / pnpm-lock.yaml / yarn.lock / bun.lockb,没匹配默认 npm;② 装依赖husky / lint-staged / prettier 作为 devDeps;③ npx husky init 初始化 .husky/prepare: "husky";④ 写 .husky/pre-commit 三行(npx lint-staged<pm> run typecheck<pm> run test),把 <pm> 替换成检测到的;package.json 没有 typecheck / test 脚本就略掉那两行并明确告诉用户;⑤ 写 .lintstagedrc{"*": "prettier --ignore-unknown --write"};⑥ .prettierrc 缺则建(useTabs:falsetabWidth:2printWidth:80singleQuote:falsetrailingComma:"es5"semi:truearrowParens:"always");⑦ 验:四件套都在、prepare 已配、npx lint-staged 跑得动;⑧ 把变更 commit,借这一次 commit 当 smoke test。

注意

prettier --ignore-unknown 跳过 Prettier 不认的文件(图片等);hook 顺序「lint-staged 先(快、限 staged)→ 全量 typecheck → 全量 test」是为了让最快的反馈先出。

适合的场景

  • 新仓库首次接 commit 时质量门
  • 已有部分 lint 但 commit 时不强制:本技能补齐 hook 部分
  • 希望多人 / 多 agent 在 commit 阶段就看到统一格式

不适合

  • 团队偏 server-side hook(GitHub Actions 阻塞合并):客户端 hook 多此一举
  • monorepo 用 Nx / Turborepo / pnpm 自带 hook 体系:用它们的方案而不是再装 Husky

配套

ship(合并前的最终质检入口)、land-and-deploy(合并后的部署入口)、tdd / test-driven-development(让 <pm> run test 真有东西可跑)、receiving-code-review(hook 抓不到的事让 review 抓)。

流狐档案 作者与许可取自来源;运行、权限和网络为流狐检测或估算
流狐分类
工程开发
作者声明 Agent
未找到明确声明;不据此推断已兼容或已测试
静态检查
88 / 100 · 启发式扫描,不代表运行安全
作者 / 版本 / 许可
@mattpocock · 未声明 license
流狐 Token 估算
低消耗
流狐接入估算
需简单配置
是否需要外部 API Key
未发现要求
检测到的系统要求
macOS · Linux · Windows
底层运行要求
Bun
检测到的文件与系统行为
  • 只读
  • 允许写入 / 修改
  • Shell 执行
检测到的网络行为
仅限本地
安装命令数
无(仅作为资料)

档案由构建时根据 SKILL.md 与安装命令自动衍生,可能与作者实际意图存在差异。

需要注意: 未限定 allowed-tools,默认拥有全部工具权限。

输出预览 setup-pre-commit.preview
作者没有在当前 SKILL.md 中定义固定输出样例。

讨论

基于 GitHub Discussions。登录 GitHub 即可参与讨论、点赞、订阅更新。