Skip to content

Skills 层(skills/)

Skills 是项目里唯一"非代码"的一层——它是写给 AI 看的说明书,告诉 AI 在什么场景该用哪个 MCP 工具、参数怎么填、结果怎么读。

skills/ 7 个 SKILL.md AI 说明书

Skills 不是代码

flowchart LR Q[用户自然语言提问] --> AI[AI Agent] AI --> SK["读 SKILL.md
判断该用哪个工具"] SK --> T["调用 MCP 工具"] T --> SDK["SDK 方法"] SDK --> CRT[crt.sh] CRT --> AI --> A[用自然语言回答用户]

SKILL.md 本身不执行任何逻辑,它只是影响 AI 的决策。这让 Skills 可以独立于代码演进。

7 个 Skill

Skill何时用
crtsh-search搜 CT 日志、域名、子域、SSL 证书、SHA 指纹
crtsh-cert取某张证书/CA 的详情、按 ID 查、查吊销
crtsh-ca调查 CA、issuer_ca_id、CA 披露、根属主、吊销中间证书
crtsh-chain分析证书结构、ASN.1、层级、关系图、CT 条目、路径校验、原始 PEM、add-chain
crtsh-compliance合规检查、lint 结果、OCSP/PKI Meta 证据、吊销信号、OneCRL
crtsh-intel发现 crt.sh 能力、高级搜索/信息页、CT 日志与 OCSP 响应器、人口统计、Censys 联动
crtsh-monitor设置监控、Atom 订阅、原始导出、周期性证书观察、下游 JSON/CSV/Atom 管道

一个 Skill 的结构

skills/crtsh-search/
├── SKILL.md              # 入口:name/description/allowed-tools + 用法说明
├── evals/
│   └── evals.json        # 回归测试用例:prompt + 期望输出
└── references/           # 详细资料,按需加载
    ├── certificate-reference.md
    └── installation.md

SKILL.md 的 frontmatter 声明三件事:

  • name:skill 名(小写连字符)
  • description触发条件——AI 据此判断"现在该不该用这个 skill"
  • allowed-tools:这个 skill 允许调用的 MCP 工具白名单(排序、去重、必须已注册)

references/ 是"长内容"的家:安装细节、选项表、schema、示例、排错。SKILL.md 保持精简(<500 行),重的内容下沉到 references,按需引用。

镜像与一致性

skills/ 是 canonical(权威源),.claude/skills/ 是它的逐字节镜像,供 Claude Code 项目本地使用。改完 skill 跑 ./scripts/check-skills.sh,它会:

  • 重新生成 manifest.json 与 catalog
  • 同步 .claude/skills/ 镜像
  • 校验 frontmatter、eval 文件、行数、本地引用路径、generated 文件新鲜度
  • 校验 allowed-tools 与已注册 MCP 工具的一致性
  • 严格 eval 覆盖审计

Skills 与代码的同步契约

加一个 crt.sh 能力后,Skills 的更新路径:

  1. SDK 加方法 → MCP 加工具(工具名注册到 tools.go
  2. 在相关 skill 的 allowed-tools 加入新工具名
  3. 写或更新 eval 用例覆盖新工具
  4. check-skills.sh,让 manifest/catalog/镜像全部同步

audit-skills-coverage.sh --strict-evals 会确保每个注册的 MCP 工具都被某个 eval 提及——这是"能力是否真的暴露给了 AI"的硬约束。

接下来深入 功能实现原理