Skill Fitness 是一个用于衡量一组技能(skills)是否真正生效的审计工具。它的核心主张是:不要发布任何未经测量的技能或描述,修复应当从数字出发,而不是凭直觉。
用途 它回答的问题包括:已安装的技能是否真的在工作;某个技能为什么从不触发,或在错误的请求上触发;哪两个技能在争夺同一个请求;技能列表的预算被谁消耗、谁最先被降级;哪些一次性命令本应写成技能脚本;某个技能让智能体手工拼凑了什么;某个技能对读者机器做了哪些假设。
主要能力 工具提供多个子命令,每个子命令都支持 --json:
- report:按阅读顺序运行 inventory、budget、usage 三节,这三节的修复责任属于运行者。
- inventory:报告安装了什么、来自哪里,并检测同名不同内容的冲突。
- budget:按“谁最先失去描述”排序,展示技能列表的字符预算占用情况。
- usage:统计实际被调用的技能,区分 auto(模型通过 Skill 工具选择)与 explicit(用户输入 /name)。
- overlap:对技能描述之间的相似度进行排名,用于挑选值得实测的技能对。
- absorb:从会话记录中聚类临时的 python -c 载荷,找出本应由技能脚本承担的工作。
- derivable:读取 SKILL.md 本身,判断哪些命令行本应委托给脚本。
- portability:检查技能对其读者机器做了哪些假设。
使用方式 基本命令为:python3 <this skill>/scripts/fitness.py report。 默认读取顺序:在技能仓库中运行时先读 ./skills,然后读 ~/.agents/skills 和 ~/.claude/skills;解析采用首次出现优先。可用 --root <dir>(可重复)替换整个集合。 --ref <ref> 用于对某个 git ref 做判断,例如 python3 <this skill>/scripts/fitness.py portability --ref origin/main,它通过 git archive 读取,不会自动 fetch。 budget 支持 --context-window <tokens>,默认 200000。 --save-baseline <path> 可保存可推导的基线。 trigger.py 会在临时目录中运行 claude -p,这是唯一消耗 token 的部分,且对没有相应技能的套件会拒绝运行。
适用场景 适合技能作者、技能仓库维护者,以及需要判断已安装技能是否真正被调用、列表预算是否紧张、技能之间是否互相遮蔽的用户。它也可用于在发布前对技能描述做触发检查。
限制与注意事项 fitness.py 不访问网络;trigger.py 通过 claude CLI 访问模型。工具不会写入任何技能、仓库或安装中心。 预算机制是模型相关的:字符预算为上下文窗口 token 数的 1% 乘以 4,200k 窗口模型为 8000 字符。 harness 自身的多数条目被豁免,先计入预算且不会被降级。 降级是贪心匹配而非截断,优先级基于衰减后的使用量:usageCount × max(0.5^(days/7), 0.1)。 usage 中的零并不代表技能有问题,可能只是需求从未出现。 overlap 只排名、不设门槛,相似度绝对值偏低,应将其作为选择实测对象的依据,而非结论。 absorb 的聚类键是 import 集合,较为粗糙,应优先看形状数量而非调用数量。 工具明确区分作者侧与运行者侧的修复责任:编辑已部署副本属于漂移,不应由运行者执行。 关于收费、价格、平台支持等具体信息,资料中暂未提供。