📦 Pre Commit — 预提交

v1.0.0

Config Validator 校验 .pre-commit-config.yaml 文件的结构、仓库条目、钩子定义、本地钩子及最佳实践,共 5 类 23 条规则。

6· 6·0 当前·0 累计
下载技能包
最后更新
2026/4/21
0
安全扫描
VirusTotal
无害
查看报告
OpenClaw
安全
high confidence
该技能内部一致:一个基于 Python 的本地 .pre-commit-config.yaml 验证器,仅附带一个脚本,无需凭据或安装。
评估建议
该 skill 逻辑清晰,仅运行本地 Python 脚本验证 pre-commit 配置文件;不会索取凭据,也不安装远程包。然而,其源码/主页未知——你正在执行来源未经验证的代码。安装或运行前,请自行审查脚本(scripts/precommit_validator.py),或在沙箱环境中运行,确认无异常行为(网络访问、意外文件 I/O)。若计划让 agent 自动调用,请记住它能对你或 agent 传入的任意路径执行该脚本,因此切勿传入敏感文件,除非你信任该代码。...
详细分析 ▾
用途与能力
名称/描述与所含资源匹配:SKILL.md 文档运行 scripts/precommit_validator.py 来验证 .pre-commit-config.yaml 文件,仓库内包含一个约 25 KB 的 Python 脚本实现这些检查。
指令范围
SKILL.md 仅指示对特定文件(validate、repos、hooks、lint、formats)运行附带的 Python 脚本,并未要求读取无关的系统状态、环境变量,也未要求向外部端点传输数据。
安装机制
未提供安装规范(仅含说明与捆绑脚本)。脚本似乎仅使用 Python 标准库(argparse、json、re、pathlib 等),并附带极简 YAML 解析器作为回退,因此安装过程中不会下载第三方包或解压归档。
凭证需求
该 skill 未声明任何必需的环境变量、凭据或配置路径。所包含的脚本以文件路径作为参数,且在其声明的用途下未请求或看似不需要任何机密信息。
持久化与权限
始终为 false,且该 skill 不会请求任何提升的、持久的权限。根据提供的文件和元数据,它不会修改其他 skill 或系统级 agent 设置。
安全有层次,运行前请审查代码。

运行时依赖

无特殊依赖

版本

latestv1.0.02026/4/21

pre-commit-config-validator 初始版本发布 - 验证 `.pre-commit-config.yaml` 文件的结构、仓库条目、hook 定义、本地 hook 及最佳实践 - 5 个类别共 23 条规则,支持 error、warning、info 三种级别 - 支持多种定向检查命令:full validation、repos、hooks、lint - 提供 text、JSON、summary 多种输出格式 - 内置 strict 模式,将 warning 视为 error,可一次性验证多个文件 - 为 CI 集成提供清晰的 exit code

无害

安装命令

点击复制
官方npx clawhub@latest install pre-commit-config-validator
镜像加速npx clawhub@latest install pre-commit-config-validator --registry https://cn.longxiaskill.com

技能文档

校验 .pre-commit-config.yaml 的正确性、完整性及最佳实践。

命令

``bash # 全量校验(所有规则) python3 scripts/precommit_validator.py validate .pre-commit-config.yaml

# 仅校验仓库/rev python3 scripts/precommit_validator.py repos .pre-commit-config.yaml

# 仅校验 hook 定义 python3 scripts/precommit_validator.py hooks .pre-commit-config.yaml

# 仅校验最佳实践 python3 scripts/precommit_validator.py lint .pre-commit-config.yaml

# JSON 输出 python3 scripts/precommit_validator.py validate .pre-commit-config.yaml --format json

# 仅摘要 python3 scripts/precommit_validator.py validate .pre-commit-config.yaml --format summary

# 警告视为错误 python3 scripts/precommit_validator.py validate .pre-commit-config.yaml --strict

# 多文件 python3 scripts/precommit_validator.py validate file1.yaml file2.yaml `

规则(23)

结构(5)

  • S1 YAML 语法错误
  • S2 缺少顶层必填键 repos
  • S3 repos 不是列表
  • S4 repos 列表为空(警告)
  • S5 未知顶层键(警告;已知:repos, default_language_version, default_stages, ci, minimum_pre_commit_version, exclude, fail_fast, files)

仓库条目(6)

  • R1 条目缺少 repo
  • R2 非 local/meta 仓库缺少 rev
  • R3 hooks 列表缺失或格式错误
  • R4 hooks 列表为空(警告)
  • R5 rev 使用分支名而非 tag/SHA(警告:main, master, develop, dev, trunk, HEAD)
  • R6 rev 未固定(警告:无 semver 或 SHA)

Hook 定义(6)

  • H1 hook 缺少 id
  • H2 同一仓库内 hook ID 重复(警告)
  • H3 未知 hook 键(警告;已知:id, name, entry, language, files, exclude, types, types_or, stages, additional_dependencies, args, always_run, pass_filenames, require_serial, minimum_pre_commit_version, verbose, log_file, description)
  • H4 stages 值无效(已知:commit, merge-commit, push, prepare-commit-msg, commit-msg, post-checkout, post-commit, post-merge, post-rewrite, manual, pre-push, pre-rebase, pre-merge-commit)
  • H5 args 不是列表
  • H6 additional_dependencies 不是列表

本地 Hook(3)

  • L1 本地 hook 缺少 entry(repo: local 必填)
  • L2 本地 hook 缺少 language
  • L3 language 值无效(警告;已知:python, node, ruby, rust, golang, docker, docker_image, dotnet, lua, perl, r, swift, system, pygrep, script, fail)

最佳实践(3)

  • B1 repo: meta 未使用 check-hooks-apply 或 check-useless-excludes(警告)
  • B2 Rev 不符合 semver 或 SHA 格式(警告)
  • B3 仓库 URL 重复(警告)
  • B4 fail_fast: true` 可能掩盖问题(提示)

输出格式

  • text(默认):人类可读,带严重级别图标及规则码
  • json:机器可读,含文件、诊断数组及计数
  • summary:单行按严重级别计数

退出码

  • 0:无问题(或仅警告/提示且未用 --strict)
  • 1:发现错误(或警告且用了 --strict)
  • 2:解析错误或文件未找到
数据来源ClawHub ↗ · 中文优化:龙虾技能库