mcpField
S
skillcheck

skillcheck

本地服务
github.com/CloudCorpRecords开发工具01 天前更新

关于 skillcheck

skillcheck 面向技能作者,在损坏的引用进入 Agent 工作流前验证 SKILL.md。它检查 frontmatter、目录名称、标题、链接和引用文件,不访问网络,也不执行技能内容。

主要功能

  1. 01检查 frontmatter 名称和描述
  2. 02比对技能名称与目录名
  3. 03查找失效的相对链接和文件
  4. 04报告包含文件和行号证据
  5. 05离线 CLI 与可返回 JSON 的 MCP 报告

适用场景

  1. 01分享技能前进行验证
  2. 02发现缺失的指南或脚本
  3. 03在开发工作流中检查技能文件

MCP 相关

它可作为 MCP 服务运行,并提供 check_skill,接受 SKILL.md 路径或其所在目录并以 JSON 返回报告。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"cloudcorprecords-skillcheck": {
"command": "npx",
"args": [
"-y",
"@reneturcios/skillcheck"
]
}
}
}
启动命令npx -y @reneturcios/skillcheck

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@reneturcios/skillcheck0.1.0
ocighcr.io/cloudcorprecords/skillcheck:0.1.0

工具

1

收录的工具列表 · 更新于 1 天前

参数类型必填说明
pathstring是要检查的目标路径

详细介绍

skillcheck

SKILL.md 可以指向不存在的文件。直到技能运行时,才会有人发现。

技能是带有 YAML frontmatter 的 Markdown 文档:包含名称、描述,以及正文;正文会链接到 Agent 被要求阅读或运行的指南、脚本和参考文件。如果链接或引用的文件缺失,问题就会在任务中途、在别人的工作流里暴露出来。skillcheck 会在此之前验证 SKILL.md:检查 frontmatter 格式、名称是否与目录匹配,以及正文中的每个相对链接和引用文件是否确实存在于磁盘上。

功能

skillcheck 接受 SKILL.md 文件或包含该文件的目录,并返回一份单一判定,其中每项发现都附有证据:规则、严重程度、文件和行号。它的行为是确定性的,可离线运行,只使用 Node 标准库,并且绝不会执行正在检查的技能中的任何内容。

安装

npx @reneturcios/skillcheck check

也可以全局安装:

npm install -g @reneturcios/skillcheck
skillcheck check path/to/skill

CLI

# Check the current directory (expects ./SKILL.md)
skillcheck check

# Check a skill directory
skillcheck check path/to/skill

# Check a SKILL.md file directly
skillcheck check path/to/skill/SKILL.md

# Machine readable output
skillcheck check path/to/skill --json

# Run as an MCP server (stdio)
skillcheck mcp

# Print the version
skillcheck --version

退出码:判定为 VALID 时返回 0,INVALID 时返回 1,用法错误时返回 2。如果读取输出管道的一方提前关闭管道,进程会以 141 退出,绝不会返回 0。

输出示例:

skillcheck check path/to/skill: INVALID
  findings: 2 (high: 0, medium: 2, low: 0, info: 0), links checked: 1, refs checked: 1, external links skipped: 0
  [MEDIUM] SKILL.md:8 LINK-DEAD Markdown link target "missing-guide.md" does not exist relative to the skill directory.
  [MEDIUM] SKILL.md:10 REF-MISSING Referenced file "scripts/missing-helper.py" does not exist relative to the skill directory.
INVALID: 2 finding(s) (0 high, 2 medium, 0 low, 0 info).

MCP 服务

添加到你的 MCP 客户端配置中:

{
  "mcpServers": {
    "skillcheck": {
      "command": "npx",
      "args": ["-y", "@reneturcios/skillcheck", "mcp"]
    }
  }
}

工具:check_skill 接受 path 参数(SKILL.md 文件或包含该文件的目录),并以 JSON 格式返回完整报告,其中判定、计数和发现与 CLI 相同。

检查内容

规则严重程度含义
NO-SKILL-FILE高在目标路径下未找到 SKILL.md。目标不存在时,这是唯一的发现。
FRONTMATTER-MISSING高文件未以一行 --- 开始,并且没有以一行 --- 结束。
NAME-MISSING高frontmatter 中没有 name 键,或 name 值为空。
DESCRIPTION-MISSING高frontmatter 中没有 description 键,或 description 值为空。
DESCRIPTION-SHORT低description 存在,但长度少于 20 个字符。
NAME-DIR-MISMATCH中frontmatter 中的名称与所在目录名称不匹配。
NAME-DIR-SKIPPED信息由于目标目录名称是通用名称、不包含技能名称,因此跳过名称与目录匹配检查;例如,目标是当前目录时。
LINK-DEAD中相对于技能目录解析的 Markdown 相对链接或图片引用不存在。该发现包含行号。
REF-MISSING中反引号括起的相对路径看起来像文件(包含斜杠,或以已知文件扩展名结尾),但相对于技能目录不存在。
NO-HEADINGS低正文中没有 # 或 ## 标题。

链接中的绝对 URL(例如 https:// 链接)会被跳过:它们会计入报告的 externalLinks,且不会产生发现。仅含锚点的链接也会跳过。围栏代码块中的链接和引用不会检查。

报告计数包括 findings、high、medium、low、info、linksChecked、refsChecked 和 externalLinks。

判定规则

  • VALID:没有高或中严重程度的发现。可以存在低严重程度和信息类发现。退出码为 0。
  • INVALID:至少存在一项高或中严重程度的发现。退出码为 1。

明确说明限制

  • 前置元数据解析器有意只支持 YAML 的一个简单子集。它会读取以一行 --- 开头、以一行 --- 结束,且中间由简单的 键: 值 行组成的文件。它不支持多行值、折叠或块标量、嵌套映射、列表、锚点,也不支持值中的注释。需要这些功能的 SKILL.md 可能会被报告为缺少某些键,尽管它实际上可能以更丰富的形式包含这些键。
  • 只支持简单的 键: 值 前置元数据,因此 name 和 description 必须是带引号或不带引号的纯单行值。
  • 链接检查采用字面匹配。相对链接目标去除片段或查询字符串后,必须按原样存在于相对于技能目录的位置。不会预测重定向、生成的文件,以及构建步骤会创建的链接。
  • 反引号括起的引用只是一种启发式判断。只有当令牌不含空格、不是绝对路径或主目录路径,并且包含斜杠或以已知文件扩展名结尾时,才会被视为文件引用。工具名称、命令和带点号的标识符不会被视为文件。
  • 技能文本的语义质量不在检查范围内。skillcheck 不会判断说明是否正确、清晰、安全或有用,不会判断链接内容是否与链接文本所声称的内容相符,也不会判断被引用的脚本是否执行了技能所述的操作。它只检查内容是否存在及其形式。
  • 不会验证 name 和 description 之外的前置元数据值,并会忽略额外的键。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。