mcpField
S
skill-tester

skill-tester

github.com/pskoett测试与质量32652 次安装3 天前更新
代码仓库

关于 skill-tester

skill-tester 是用于验证仓库中交互式 Skill 的技能,适合在提交或评审前使用。它结合 Anthropic 的快速验证工具与项目规则检查,并报告问题而不修改 Skill。

主要功能

  1. 01Anthropic 规范验证
  2. 02项目约定检查
  3. 03指令文件验证
  4. 04钩子脚本检查
  5. 05插件 Skill 验证

适用场景

  1. 01添加或修改 Skill 后检查
  2. 02提交前验证 Skill
  3. 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.md
  • AGENTS.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 回归框架——此技能测试的是技能结构,而非已推广的规则

评论

支持 Markdown