关于 skill-tester
skill-tester 是用于验证仓库中交互式 Skill 的技能,适合在提交或评审前使用。它结合 Anthropic 的快速验证工具与项目规则检查,并报告问题而不修改 Skill。
主要功能
- 01Anthropic 规范验证
- 02项目约定检查
- 03指令文件验证
- 04钩子脚本检查
- 05插件 Skill 验证
适用场景
- 01添加或修改 Skill 后检查
- 02提交前验证 Skill
- 03为 Anthropic 评审准备插件
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ pskoett/ pskoett-ai-skills --skill skill-tester安装后在 Claude Code 中输入/skill-tester确认已加载。
附带文件scripts/run-tests.sh
详细介绍
Skill Tester
验证此仓库中所有交互式(非 CI)技能。运行 Anthropic skill-creator 的 quick_validate.py,以及项目专属检查。
使用时机
- 添加或修改技能后
- 提交更改前
- 向 Anthropic 提交插件审核前
- 作为外层循环的一部分,在 eval-creator 需要验证技能质量时使用
检查项
1. Anthropic 规范验证
对 skills/ 中的每个技能运行 quick_validate.py(排除 -ci 变体):
for d in skills/*/; do
skill=$(basename "$d")
[[ "$skill" == *-ci ]] && continue
python3 .claude/skills/skill-creator/scripts/quick_validate.py "$d"
done
通过标准: 每个技能的退出代码均为 0。Frontmatter 只能包含允许的键(name、description、license、allowed-tools、metadata、compatibility)。名称采用 kebab-case,最多 64 个字符。描述最多 1024 个字符,且不能包含尖括号。
2. 项目约定检查
对每个技能目录:
| 检查项 | 规则 | 严重级别 |
|---|---|---|
| 名称与文件夹一致 | Frontmatter 中的 name == 目录名称 | 错误 |
| 行数限制 | SKILL.md 不超过 600 行 | 错误 |
| 不含 README.md | 技能文件夹中不得包含 README.md | 错误 |
| 脚本可执行 | scripts/ 中所有 .sh 文件都必须具有执行权限 | 错误 |
| 引用文件存在 | SKILL.md 正文中引用的文件必须实际存在于 references/ 中(由 Agent 执行——run-tests.sh 不会检查) | 警告 |
| 描述非空 | 必须存在且非空的 Description 字段 | 错误 |
3. 指令文件验证
验证以下有限的指令文件集合:
CLAUDE.mdAGENTS.md.github/copilot-instructions.md
AGENTS.md 和 CLAUDE.md 必须逐字节相同。Copilot 文件可以使用针对提供方的措辞,但必须保留相同的持久原则。
不要要求指令文件列出所有技能。此类清单会过时,也与本仓库的指令文件约定相悖。
仅验证工作流正文中明确提及的技能引用:当正文提及某个具名技能时,其规范目录必须存在。README.md 中的公开目录由独立流程维护和验证,不属于 Agent 指令。
4. Hook 脚本测试
对每个包含 scripts/ 目录的技能:
# Syntax check
bash -n scripts/*.sh
# Verify bash shebang (either form used in this repo)
head -1 scripts/*.sh | grep -qE "^#!(/bin/bash|/usr/bin/env bash)"
# Verify executable
test -x scripts/*.sh
5. 插件技能验证(由 Agent 执行——run-tests.sh 不会检查)
对于同时存在于 skills/ 和 plugin/skills/ 中的技能:
| 检查项 | 规则 |
|---|---|
| 插件 frontmatter 键 | 除规范要求外,只能添加 Claude Code 专用键(hooks、user-invocable、argument-hint) |
| 内容一致性 | 正文内容保持一致,或插件中包含提取出来的引用内容 |
| Beta 标记一致 | 如果 skills/ 副本包含 [Beta],插件副本也应包含 |
6. 可移植 Agent 插件验证(由 Agent 执行——run-tests.sh 不会检查)
使用 ./scripts/sync-plugin.sh 重新生成后,运行:
python3 scripts/test-sync-plugin.py
uv run --with jsonschema==4.25.1 --with PyYAML==6.0.3 \
python3 scripts/validate-agent-plugin.py
此操作会依据供应的 Agent Plugins 1.0.0 官方架构验证可移植清单,检查精选技能的成员资格,拒绝不可移植的 frontmatter,验证规范字节内容和可执行模式,并强制执行发布版本一致性。使用 Agent Skills 参考 CLI 独立检查生成的 agent-plugin/skills/* 格式。
输出格式
## Skill Test Results
**Date:** YYYY-MM-DD
**Skills tested:** N
**Passed:** N
**Warnings:** N
**Failed:** N
**Instruction files:** passed|failed
### Failures
- [skill-name]: [check]: [error message]
### Warnings
- [skill-name]: [check]: [warning message]
### Passed
- [list of clean skills]
运行方式
手动调用:
/skill-tester
或直接运行脚本:
bash skills/skill-tester/scripts/run-tests.sh
覆盖范围说明:run-tests.sh 会自动执行检查 1–4(不包括检查 2 中的引用文件存在性检查,也不包括检查 3 中针对提供方的语义比较)。检查 5–6 以及这些语义和引用检查由调用 /skill-tester 时的 Agent 执行——仅脚本运行通过并不意味着这些检查也已通过。
此技能不会做什么
- 不测试 CI 技能(请使用
skill-tester-ci) - 不修改技能——仅报告检查结果
- 不运行行为评估(触发测试)——请使用 skill-creator 的
run_eval.py - 不替代 eval-creator 回归框架——此技能测试的是技能结构,而非已推广的规则