ctkrug/skillcheck

GitHub: ctkrug/skillcheck

一款用于校验 CLAUDE.md、AGENTS.md 和 SKILL.md 文件的零依赖 linter,旨在捕获 AI 编程 agent 指令文件中的格式错误、字段缺失和名称冲突等静默失败问题。

Stars: 0 | Forks: 0

# Skillcheck **▶ 在线演示:[apps.charliekrug.com/skillcheck](https://apps.charliekrug.com/skillcheck/)** [![CI](https://static.pigsec.cn/wp-content/uploads/repos/cas/ad/ad5834178f7599af9fdda11629d49cae07f2997beec49821b2920eff5bfd50e7.svg)](https://github.com/ctkrug/skillcheck/actions/workflows/ci.yml) [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) [![Node](https://img.shields.io/badge/node-%E2%89%A518-brightgreen.svg)](package.json) **在损坏的 agent 指令静默失败之前将其捕获。** Skillcheck 是一个用于校验引导编程 agent 的文件的 linter:`CLAUDE.md`、 `AGENTS.md` 以及 skill frontmatter (`SKILL.md`)。这些文件没有编译器,也没有 schema,因此拼错的 `name:`、为空的必填字段,或者两个 skill 声明了 相同的 slug,都不会抛出错误。它们只会悄悄地失效,而 agent 会 忽略你写的一半内容。Skillcheck 就是这些格式此前一直缺失的反馈循环。 ``` $ npx skillcheck .claude/skills .claude/skills/deep-research/SKILL.md error 4:1 missing-field skill frontmatter is missing required key `name` warn 6:14 description-too-long description is 1180 chars (limit 1024) .claude/skills/pdf/SKILL.md error 2:9 duplicate-name skill name `research` also declared in deep-research/SKILL.md 2 errors, 1 warning across 2 files ``` ## 适用人群 适用于任何在共享代码库中维护 `.claude/skills` 目录或 `AGENTS.md` 的人, 在这种情况下,一个损坏的 skill 会静默失效,直到任务出了 差错才有人注意到。将 Skillcheck 接入 CI,出错的指令文件会直接导致构建 失败,而不是让你的 agent 去承受错误。 ## 存在意义 `CLAUDE.md` / `AGENTS.md` / skill frontmatter 格式正在发展之中,且规范比较 宽松。目前没有官方的校验器,因此真实的失败模式(那些因为“agent 没有读取到我的 skill”而浪费你一整个调试过程的错误) 会一直隐身,直到真正反噬你。正确地识别出这些失败模式,而不仅仅是检查 “这是否是有效的 YAML”,才是其核心目的所在。 ## 可检测的问题 - **缺失 frontmatter 字段。** 缺少 `name` 或 `description` 的 skill,或者 未闭合的 `---` 块,永远无法加载。Skillcheck 会将其标记为错误。 - **Skill 名称冲突。** 声明了相同 `name` 的两个 skill 会互相 覆盖;只有一个会胜出,而且具体是哪一个是不确定的。 - **重复或拼错的键。** 重复的 `name:`(YAML 会静默保留其中一个),或者 像 `nmae:` 这样的拼写错误,会导致真正需要的字段缺失。 - **为空的必填字段。** `name: ~` 虽然显示为存在,但解析为空, 这正是本工具要捕获的典型静默失败。 - **薄弱的触发器。** 如果 `description` 中没有“use when...”(在……时使用)之类的引导,它就不会被可靠地 触发;Skillcheck 会对此发出警告。 - **命名规则。** `name` 必须是 kebab-case 格式,并且(对于 skill 而言)要与其所在的 目录名相匹配,否则 runtime 无法解析它。 - **长度限制。** 过长的描述会被模型宿主 截断,该检查会针对多行(`|` / `>`)描述进行计算。 - **无效的 skill 引用。** 正文中提到的 `/skill-name` 无法解析到当前 集合中的任何 skill。 每一项检查都可以通过 `skillcheck.json` [进行配置](docs/RULES.md#configuring-rules):你可以禁用某条规则,或更改其严重级别。请查阅完整的 [规则参考](docs/RULES.md)、[`docs/VISION.md`](docs/VISION.md) 了解问题背景,以及 [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md) 查看 代码库结构图。 ## 两套前端,一个引擎 - **CLI。** `npx skillcheck ` 可在 CI 或 pre-commit hook 中对代码库进行 lint。 - **Web 校验器。** 将文件粘贴到 [托管页面](https://apps.charliekrug.com/skillcheck/) 即可立即获得带有逐行注释的报告。规则相同,且无需安装。 这两者调用的都是 [`src/`](src/) 中完全相同的纯 JavaScript 引擎,因此 CLI 和 网站在校验结果上绝不会有分歧。 ## 快速开始 ``` git clone https://github.com/ctkrug/skillcheck cd skillcheck node bin/skillcheck.js examples # lint the bundled examples node bin/skillcheck.js --init my-skill # scaffold a lint-clean starter skill npm test # run the test suite ``` 无需安装任何依赖:该引擎是仅依赖标准库的 Node ESM。 常用 flags:`--json`(机器可读输出)、`--max-warnings `(遇到警告也判定为 CI 失败)、`--config ` / `--no-config`、`--init [name]`。 ## 在 CI 中使用 为每一次合并设置关卡,确保 skill 集合有效。将此步骤添加到 GitHub Actions workflow 中,一旦 skill 损坏,它就会使该作业失败: ``` - name: Lint agent instruction files run: npx skillcheck .claude/skills ``` 遇到警告(例如薄弱的触发器)也判定为失败,而不仅是遇到错误时: ``` - run: npx skillcheck --max-warnings 0 .claude/skills ``` ### Pre-commit hook 在问题提交前将其拦截。将以下内容保存为 `.git/hooks/pre-commit`(并 对其执行 `chmod +x`),或者将该命令接入你选用的 pre-commit 框架: ``` #!/bin/sh # 阻止破坏任何 agent instruction file 的 commit。 npx skillcheck .claude/skills || { echo "skillcheck found problems: fix them or commit with --no-verify" >&2 exit 1 } ``` 将其指向存放你的 `SKILL.md` / `CLAUDE.md` / `AGENTS.md` 文件的任意目录。在旁边放置一个 [`skillcheck.json`](docs/RULES.md#configuring-rules) 即可调整哪些规则作为通过标准。 ## 技术栈 - **引擎:** 纯 ES-module JavaScript,零 runtime 依赖,因此它可以 在 Node 和浏览器中原样运行。 - **CLI:** Node 18+,使用 `node:test` 进行测试。 - **Web 校验器:** 静态、独立的页面,使用相对资源路径,无需 服务器,可部署到任何子路径下。 ## License MIT © Charlie Krug。请参阅 [`LICENSE`](LICENSE)。 Charlie 的更多项目 → [apps.charliekrug.com](https://apps.charliekrug.com)
标签:AI辅助编程, LNA, MITM代理, SOC Prime, 开发工具, 自定义脚本, 验证工具