mcpField
P
pre-push

pre-push

github.com/morphet81测试与质量083 次安装24 周前更新
代码仓库

关于 pre-push

pre-push 是一项在代码推送到远程仓库前运行项目检查的技能。有 npm pre-push 脚本时会优先运行;否则检测语言对应的 lint、测试和构建检查,并汇报结果。

主要功能

  1. 01运行已有的 npm pre-push 脚本
  2. 02检测项目语言和可用检查
  3. 03并行运行互不依赖的检查
  4. 04汇报命令及通过或失败结果
  5. 05识别缺失工具或依赖

适用场景

  1. 01推送代码前检查项目
  2. 02运行可用的 lint 和测试命令
  3. 03推送前查看构建状态
  4. 04查找缺失的检查工具或依赖

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/morphet81/cheat-sheets --skill pre-push

安装后在 Claude Code 中输入/pre-push确认已加载。

详细介绍

运行推送前检查,确保代码质量后再推送到远程。

用法:

  • /pre-push - 为当前项目运行所有推送前检查

说明:

  1. 检查是否有 npm 推送前脚本:

    • 在当前目录中查找 package.json
    • 如果找到,检查 scripts 部分中是否有 pre-push 脚本
    • 如果脚本存在,运行 npm run pre-push 并报告结果
    • 如果成功,告知用户并在此处停止
  2. 如果不存在推送前脚本,则自动检测并并行运行检查:

    a. 识别项目类型:

    • 检查是否有 package.json(Node.js/JavaScript/TypeScript 项目)
    • 检查是否有 pyproject.toml、setup.py、requirements.txt(Python 项目)
    • 检查是否有 Cargo.toml(Rust 项目)
    • 检查是否有 go.mod(Go 项目)
    • 检查是否有其他特定语言的文件

    b. 检测可用的检查项(针对项目类型的 lint、测试、构建),然后使用 Task 工具(subagent_type: general-purpose)并设置 run_in_background: true,并行运行相互独立的检查:

    • 为每个独立的检查类别启动一个 Agent(例如,lint Agent、测试 Agent、构建 Agent)
    • 不相互依赖的检查应并发运行——通常 lint 和测试相互独立,而构建可能依赖类型检查

    c. Lint 检查:

    • Node.js/JavaScript/TypeScript:

      • 检查 package.json 脚本或 .eslintrc* 文件中是否有 ESLint
      • 检查 package.json 脚本或 .prettierrc* 文件中是否有 Prettier
      • 检查 package.json 脚本或 tsconfig.json 文件中是否有 TypeScript
      • 运行:npm run lint 或 npx eslint . 或 npm run type-check 或 npx tsc --noEmit
    • Python:

      • 检查是否有:pylint、flake8、black、mypy、ruff
      • 运行可用的 lint 工具(例如,pylint src/、flake8 .、black --check .、mypy .)
    • Rust:

      • 运行:cargo fmt --check 和 cargo clippy
    • Go:

      • 运行:go fmt ./... 和 golint ./... 或 go vet ./...

    d. 测试检查:

    • **Node.js:**检查 package.json 中的测试脚本

      • 运行:npm test 或 npm run test:ci(如果可用)
    • Python:

      • 检查是否有:pytest、unittest、nose2
      • 运行:pytest 或 python -m pytest 或 python -m unittest discover
    • Rust:

      • 运行:cargo test
    • Go:

      • 运行:go test ./...

    e. 构建检查:

    • 如适用,尝试构建项目以确保没有编译错误
    • Node.js:npm run build(如果有该脚本)
    • Rust:cargo build
    • Go:go build ./...
  3. 报告结果:

    • 等待所有并行 Agent 完成并汇总结果
    • 清晰总结执行的所有检查
    • 报告每项检查的通过/失败状态
    • 如果有任何检查失败,显示错误并提供修复建议
    • 列出运行过的命令,以便用户了解详情
    • 如果所有检查均通过,确认代码已准备好推送
  4. 处理边缘情况:

    • 如果未检测到测试或 lint 工具,提醒用户并询问是否要在不进行检查的情况下继续
    • 如果命令因缺少依赖项而失败,提供安装命令
    • 如果项目是 monorepo 或工作区,进行相应检测和处理

输出示例:

## Pre-Push Checks

### Linting
ESLint passed
Prettier check passed
TypeScript compilation passed

### Testing
All tests passed (24 tests, 0 failures)

### Build
Build successful

---

All pre-push checks passed! Code is ready to push.

Commands run:
- npm run lint
- npm test
- npm run build

失败时:

## Pre-Push Checks

### Linting
ESLint failed

Error in src/components/Button.tsx:
  15:7  error  'onClick' is missing in props validation  react/prop-types

### Testing
All tests passed

---

Pre-push checks failed. Please fix the issues above before pushing.

评论

支持 Markdown