SuperAPI AI 工具集

skill-tester

测试与质量

查看项目

更新于 10-15 12:16

技能介绍

Skill Tester 是 claude-skills 仓库中的一个元技能(meta-skill),定位为工程质量的保障工具,用于验证、测试并给该仓库内的技能打分。其层级标注为 POWERFUL,分类为 Engineering Quality Assurance,依赖项为无(仅使用 Python 标准库)。

用途

Skill Tester 面向 claude-skills 生态中的技能作者与维护者,帮助检查技能的结构、文档、Python 脚本质量与安全态势,并输出可量化的评分,以便在持续集成中作为质量门禁使用。

主要能力

该技能包含四个工具,均需从仓库根目录以完整路径运行:

  1. scripts/skill_validator.py — 结构与文档合规性检查。
  2. scripts/script_tester.py — Python 脚本的语法、导入、运行时与输出测试。
  3. scripts/quality_scorer.py — 多维度评分并给出字母等级。
  4. 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 等级以及层级建议。

使用方式

快速开始(可从仓库根目录直接运行):

  1. 验证结构(失败时退出码非零,可用作门禁): python3 engineering/skills/skill-tester/scripts/skill_validator.py engineering/skills/self-eval --json

  2. 测试技能的 Python 脚本(每个脚本默认 30 秒超时): python3 engineering/skills/skill-tester/scripts/script_tester.py engineering/skills/self-eval --json

  3. 评分质量(通过 --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/ 目录包含工具所实现的结构规范、层级要求矩阵与评分细则。