如何用 book-to-skill 的 validate_skill.py 按指定主机规则审计一份 SKILL.md【免费下载链接】book-to-skillTurn any technical book PDF into a Claude Code skill — ready to study, reference, and use while you work.项目地址: https://gitcode.com/GitHub_Trending/bo/book-to-skillbook-to-skill 会把书籍转换成 Agent Skill而同一份SKILL.md可能要在 Claude Code、GitHub Copilot CLI、Amp、Hermes Agent 等不同宿主里运行各宿主对 frontmatter 字段和allowed-tools工具的接受程度并不相同。仓库自带的 tools/validate_skill.py 就是为这件事提供的审计工具你指定一个“主机视角”lens它会按该宿主的规则检查一份SKILL.md输出 ERROR / WARN 两类问题并用退出码告诉你是否有会在该宿主上破坏 skill 的问题。这篇文章说明如何选择 lens、运行审计命令、判读输出。选择 lens四种主机规则脚本通过--lens参数选择规则集取值及默认值来自其入口定义--lens claude|copilot|amp|hermes不传时默认claudeCHANGELOG 1.1.0 说明claude保留为默认是出于 CI 向后兼容。四个 lens 的差异在 tools/validate_skill.py 的LENSES定义中要点如下lens宿主识别的工具名额外识别的 frontmatter 键name 规则未知工具名claude默认Claude CodeBash、Read、Write、Edit、Glob、Grep、WebFetch、WebSearch、NotebookEdit、Task、TodoWritename、description、allowed-tools、license小写字母/数字/连字符且不能含保留词anthropic、claude报 ERROR 路径处理copilotGitHub Copilot CLIshell、bash、write同上默认字符集报 WARN未知 token 可能是 MCP 服务器名Copilot 接受ampAmpClaude 工具集加shell_command多识别compatibility、argument-hint默认字符集报 WARNhermesHermes Agent不强制执行allowed-toolsenforces_allowed_tools: False多识别version、author、platforms、tags、category、prerequisites、compatibility、environments、setup、related_skills、metadata等小写字母/数字/连字符/点/下划线且须以字母或数字开头报 WARN注意两点SKILL.md格式本身遵循开放的 Agent Skills 标准name和description是唯一通用必填字段lens 之间的分歧主要在于哪些allowed-tools名被识别、哪些额外 frontmatter 键会被接受而非静默忽略另外仓库 README.md 的目录结构注释里只列了claude|copilot|amp三个 lens而脚本源码与 docs/architecture.md 的组件表都列出了四个以脚本源码为准。运行审计命令前提是你在 book-to-skill 仓库内或拿到了脚本与待审计文件并有python3。该脚本只导入标准库模块argparse、re、sys、pathlib无需额外安装依赖。基本用法来自脚本 docstring 的 Usage 行python3 tools/validate_skill.py [--lens claude|copilot|amp|hermes] [path/to/SKILL.md]不传路径时默认审计当前目录下的SKILL.md不传--lens时默认按claude规则检查。几个典型调用# 审计仓库自身的 SKILL.md按默认的 Claude Code 规则 python3 tools/validate_skill.py SKILL.md # 审计某个生成产物按 GitHub Copilot CLI 规则 python3 tools/validate_skill.py --lens copilot ~/.copilot/skills/你的skill目录/SKILL.md # 同一份文件按 Hermes Agent 规则再看一遍 python3 tools/validate_skill.py --lens hermes path/to/SKILL.md其中path/to/SKILL.md是你自己待审计文件的路径按实际位置替换。判读输出ERROR、WARN 与退出码脚本的严重级别定义见其 docstringERROR—— 会破坏或降低该宿主上 skill 效果的问题会 fail CIWARN—— 该宿主会忽略它或只是软性指南不会 fail CI。输出由三类行组成以下格式来自源码中的打印语句不是某次运行的实录WARN 警告内容 ERROR 错误内容 ✓ path [宿主label]: no 宿主label-breaking issues (N warning(s))退出码是最终判据有 ERROR打印✗ path [label]: N error(s), M warning(s)并以sys.exit(1)结束退出码 1没有 ERROR可能有 WARN打印✓ ... no ...-breaking issues (...)正常退出退出码 0。因此在脚本化流程中只需检查命令退出码即可判断这份SKILL.md在所选宿主下是否存在破坏性问题。具体检查哪些项以下内容对应 tools/validate_skill.py 中audit()函数的实际逻辑frontmatter 解析文件必须以---开头的 YAML frontmatter 块开始否则只报一条no valid YAML frontmatter (--- block)错误并结束。读取使用utf-8-sig编码带 UTF-8 BOM 保存的SKILL.md也能正确解析这是 tests/test_validate_skill.py 专门覆盖过的行为。name缺失报 ERROR必填超过 64 字符报 ERROR不匹配当前 lens 的字符集报 ERRORClaude lens 下含anthropic或claude保留词报 ERROR。description缺失报 ERROR必填超过 1024 字符报 ERRORHermes lens 下有 60 字符的软上限超过报 WARN文档标注为 Hermes 的 house guideline用于可靠路由。allowed-tools当正文包含bash代码块或出现python3时如果声明了工具限制却没有包含该 lens 认定的 shell 工具名如Bash报 ERROR——提示在该宿主下这些步骤会被拦截。列出的工具名不属于该 lens 已知工具时claude lens 报 ERROR 相关路径copilot/amp 报 WARNhermes lens 不强制allowed-tools仅给出 WARN。未识别的 frontmatter 键顶层键不在该 lens 的recognized_keys内时每个都报一条 WARN提示该键会被此宿主忽略。正文长度全文超过 500 行报 WARN源码注释标明这是软性指南soft guideline for optimal performance。检查在仓库流程中的位置validate_skill.py不只是手动工具也是项目质量门的一部分CONTRIBUTING.md 要求提 PR 前运行与 CI 相同的检查其中包括python3 tools/validate_skill.py SKILL.mdCI 门禁本身也包含 “SKILL.md validation”另有 lint 与 py3.10–3.13 测试矩阵。AGENTS.md 把“如果改了SKILL.md就跑python3 tools/validate_skill.py SKILL.md”列为验证门之一。docs/architecture.md 的组件表将其职责描述为checks a generated SKILL.md against host rules。如果你的工作流是生成或修改 skill 后提交按目标宿主选 lens 跑一遍、退出码为 0 再提交就是文档规定的最短验证路径。边界与注意事项无 frontmatter 时审计提前结束只剩那一条错误其余规则不会继续跑。hermeslens 的工具集为空且不强制allowed-tools它检查的重点是更宽的 frontmatter 键集与 name 字符集这与其它三个 lens 的侧重点不同。同一份SKILL.md在不同 lens 下结论可能不同例如某个工具名在 claude 下是 ERROR 级问题在 copilot 下只是 WARN这正是“按指定主机规则审计”的意义以你实际要交付的那个宿主为准必要时对每个目标宿主各跑一次。【免费下载链接】book-to-skillTurn any technical book PDF into a Claude Code skill — ready to study, reference, and use while you work.项目地址: https://gitcode.com/GitHub_Trending/bo/book-to-skill创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考