Skill Tester 是 claude-skills 仓库中的一个元技能(meta-skill),定位为工程质量的保障工具,用于验证、测试并给该仓库内的技能打分。其层级标注为 POWERFUL,分类为 Engineering Quality Assurance,依赖项为无(仅使用 Python 标准库)。
用途
Skill Tester 面向 claude-skills 生态中的技能作者与维护者,帮助检查技能的结构、文档、Python 脚本质量与安全态势,并输出可量化的评分,以便在持续集成中作为质量门禁使用。
主要能力
该技能包含四个工具,均需从仓库根目录以完整路径运行:
- scripts/skill_validator.py — 结构与文档合规性检查。
- scripts/script_tester.py — Python 脚本的语法、导入、运行时与输出测试。
- scripts/quality_scorer.py — 多维度评分并给出字母等级。
- scripts/security_scorer.py — 安全态势评分(也可通过 quality_scorer.py --include-security 使用)。
skill_validator.py 检查内容
- SKILL.md frontmatter 解析、必需章节、按层级的最低行数(--tier BASIC|STANDARD|POWERFUL)。
- 必需结构:SKILL.md、README.md、scripts/、references/、assets/、expected_outputs/。
- Python 脚本:是否包含 argparse、是否仅使用标准库导入。
script_tester.py 检查内容
- 基于 AST 的语法验证;导入分析(标记外部依赖)。
- 带超时保护的受控执行(--timeout,默认 30 秒)。
- --help 功能验证;使用样本数据运行并与 expected_outputs/ 对比。
quality_scorer.py 检查内容
四个维度,各占 25%:文档(深度、示例、引用)、代码质量(复杂度、错误处理、输出一致性)、完整性(必需目录、样本数据、预期输出)、可用性(帮助文本、示例清晰度)。输出 0-100 分、A-F 等级以及层级建议。
使用方式
快速开始(可从仓库根目录直接运行):
-
验证结构(失败时退出码非零,可用作门禁): python3 engineering/skills/skill-tester/scripts/skill_validator.py engineering/skills/self-eval --json
-
测试技能的 Python 脚本(每个脚本默认 30 秒超时): python3 engineering/skills/skill-tester/scripts/script_tester.py engineering/skills/self-eval --json
-
评分质量(通过 --minimum-score 在低于阈值时使 CI 失败): python3 engineering/skills/skill-tester/scripts/quality_scorer.py engineering/skills/self-eval --json --detailed --minimum-score 75
消费 JSON 输出:validator 会输出 overall_score、compliance_level、逐项检查的 checks{};scorer 会输出 overall_score、letter_grade、tier_recommendation、dimensions 以及 improvement_roadmap。建议自上而下按 roadmap 改进,然后重新运行直到达到目标分数。
若要进行仓库范围的审计,建议使用仓库根目录的 scripts/audit_skills.py(它封装了 write-a-skill 检查清单运行器,可覆盖所有技能)。
层级分类
| 层级 | SKILL.md | 脚本 | CLI 界面 |
|---|---|---|---|
| BASIC | ≥ 100 行 | 1 个(100-300 LOC) | 基础 argparse |
| STANDARD | ≥ 200 行 | 1-2 个(300-500 LOC) | 子命令,JSON + 文本输出 |
| POWERFUL | ≥ 300 行 | 2-3 个(500-800 LOC) | 多种模式,CI 集成 |
(此表对旧技能为建议性;新技能遵循 write-a-skill,见下方范围说明。)
范围说明
该技能中的层级最低行数用于衡量旧技能。对于编写新技能,engineering/write-a-skill(SKILL.md 约 100 行以内,Matt Pocock 原则)是约束性标准——不要为了满足此处的层级最低要求而给新技能填充内容。
CI 集成
GitHub Actions 示例(门禁变更的技能):
- name: "validate-changed-skills"
run: |
for skill in $changed_skills; do
python3 engineering/skills/skill-tester/scripts/skill_validator.py "$skill" --json
python3 engineering/skills/skill-tester/scripts/script_tester.py "$skill"
python3 engineering/skills/skill-tester/scripts/quality_scorer.py "$skill" --minimum-score 75
done
Pre-commit 钩子:对暂存的技能目录运行 validator,并在退出码非零时阻止提交。
验证循环
当从仓库根目录一次运行中满足以下条件时,技能视为“通过”:
- skill_validator.py <skill> --json 退出码为 0;
- script_tester.py <skill> 报告所有脚本通过;
- quality_scorer.py <skill> --minimum-score <target> 退出码为 0。
如果任一步骤失败,应用 improvement_roadmap 中最靠前的一项,然后重新运行全部三个步骤——不要报告部分通过。
故障排除
- 超时错误 → 提高 --timeout 或优化被测脚本。
- 导入失败 → 检测到外部依赖;仓库政策是仅使用标准库。
- 层级误分类 → 对照层级表检查行数/LOC;记住新技能的 write-a-skill 例外。
适用场景
适用于 claude-skills 仓库内技能的开发、审查与 CI 质量门禁,尤其适合需要结构化验证、脚本测试、量化评分与安全评估的场景。
限制
- 仅面向 claude-skills 生态,工具路径与仓库结构绑定。
- 依赖 Python 标准库,不处理外部依赖。
- 层级最低行数仅对旧技能有参考意义,新技能应遵循 write-a-skill 标准。
- 关于收费、价格、平台支持范围等事实,资料中暂未提供。
参考资料:references/ 目录包含工具所实现的结构规范、层级要求矩阵与评分细则。