cold-run
cold-run
我测试了47个agent技能。我删除了其中23个。有三个让Claude的代码变得更差了。
然后我构建了做这件事的工具,把它指向幸存的24个技能,结果它对前五个中的三个给出了NEGATIVE评分。
这不是bug。这是我发现的最有意思的事情,我把它发布出来,而不是等你发现它:runs/bare-baseline/。
npx cold-run发现
一个什么都不做的技能是无聊的失败。更常见的失败更糟糕:
一个技能消耗了agent的注意力。 它买来一项特定的检查,而它用任务所需的其他一切来支付这项检查。
被要求构建一个带缓存的查找功能时,遵循amplification-check的agent添加了jitter和single-flight——正是该技能所要求的。从未见过该技能的agent添加了这些以及LRU上限、stale-while-revalidate和负缓存。带技能版本的缓存无限制地增长。
被要求在Lambda内部添加重试时,带技能的agent生成了一份整洁的重试预算表,以及一个笼统的except子句,它像重试超时一样急切地重试一个确定的404。
你无法通过阅读技能看出这一点。这两个技能都写得很好。你只有通过运行任务两次并对产物做diff才能看出来。
Related MCP server: tar-engine
它是做什么的
找到你的技能,为每个技能挑选一个对抗性测试任务,并行运行一组cold/skilled对,然后告诉你哪些技能没有改变任何东西。
cold-run v0.1 — 30 skills in ~/.claude/skills
REAL retry-guard added a breaker + cap; cold declined one
NONE be-thorough cold output was identical
NONE check-edge-cases cold found two more edge cases
NEGATIVE refactor-first skilled dropped a null check cold kept
...
11 change nothing.
2 make the output worse.
17 earn their place.
Deleting the 13 frees ~7,400 tokens of always-loaded
context, every session.
full report -> cold-run-report.md
every transcript -> .cold-run/它从不删除任何东西。它写出报告和每一份完整记录,决定权在你。
成本是真实的,而且它会先询问。 每个技能四次模型调用。在超过12个技能的库上,它测试5个技能的一个抽样,所以你的首次运行很便宜;--all可以完成其余部分。
npx cold-run # auto-finds your skills
npx cold-run path/to/skills # or point it somewhere
npx cold-run --all --yes # everything, no prompt如果你有本地claude CLI,它通过它运行;否则通过ANTHROPIC_API_KEY运行。零依赖—npx瞬间启动。
作为MCP服务器
同样的审计,由你已经与之对话的任何agent驱动——Claude Code、Claude Desktop、Cursor。它使用你自己的agent的subagents,所以没有第二个API密钥,也没有隐藏的花费。
claude mcp add cold-run -- npx -y --package=cold-run cold-run-mcp{
"mcpServers": {
"cold-run": {
"command": "npx",
"args": ["-y", "--package=cold-run", "cold-run-mcp"]
}
}
}然后直接问:"我的哪些技能实际上干了任何事?"
五种评分
REAL | 产物有实质性差异,且带技能的运行更好。 |
MARGINAL | 在cold运行已经做对的输出之上,有一个小的真实加法。 |
NONE | 无法区分——或者带技能运行只是谈论了这个原则。谈论不是改变。 |
NEGATIVE | cold输出更好。这并不少见。我47个里有三个落在这里。 |
INVALID | 其中一侧从未产生产物,所以这对是无效的。报告它,但不计数。一次没有发生的运行的评分比没有评分更糟糕。 |
幸存的24个,以及它们上面的星号
产出这个工具的库在skills/里。每一个都有记录的cold/skilled对支持——见EVIDENCE.md和runs/ledger.md。
在安装它们之前先读这个。 那次审计在我机器的全局操作契约下运行了这两个agent——即强制停止并询问行为的管家规则和固定的报告格式。该工具故意剥离了所有这些。在基本基线下,前五个幸存者中有三个评为NEGATIVE。两个结果都完整发布,附带完整记录:runs/bare-baseline/。
哪个数字适用于你,取决于你自己的CLAUDE.md已经强制了什么。两者都没有在裸基线下进行全规模运行。我宁愿发布这个矛盾,也不愿隐藏它。那23个没成功的,以及为什么没有一个可以被修复,都在runs/dropped.md里。
几个幸存者,这样你可以判断标准:
yagni-audit— "实现一个限流器。" Cold写了约700行:同步、异步、创建、创建、Redis、Lua、装饰器。Skilled写了15行。trust-source-check— cold用共享的静态环境变量token对服务进行了认证。Skilled要求JWKS验证的OIDC token,并固定了audience。reverse-path-proof— skilled运行了一个真正的Postgres容器,并发现在延迟回滚中止一个255字符的名字,擦除了表中所有名字。Cold有同一个bug。pit-of-success— cold默认立即硬删除。Skilled让它30天内可恢复,并且将永久删除放在确认用户ID的确认之后。
正常安装它们,或者不装。工具才是重点。
技能在这里通过两个门才能得到评分,不是一个
Cold-run delta — 是否改变了产物?23个技能没通过。
Routing — 技能描述是否实际上让技能被装载?描述完美的技能从来不被触发的描述是死的负载,仍然消耗token。作为分类器对360个书面请求测试;两轮失败,直到全部24个通过。
与skill-doctor的对比
skill-doctor是一个linter。它读取你的技能,检查frontmatter有效性、损坏的资源链接,以及是否触发描述看起来很弱,然后打出0-100分。它从不运行任何测试。
cold-run则相反。它在同一个任务上执行技能和一个看不到技能的agent,然后比较产物。
skill-doctor | cold-run | |
读取你的技能 | yes | yes |
运行它们 | no | yes |
捕获一个损坏的链接或错误的frontmatter | yes | no |
捕获一个结构正常但改变不了任何东西的技能 | no | yes |
一个技能在结构上可以得100/100分,但仍然是一个空操作。这就是它捕获的失败,而且这是常见的一种——我的47个中有23个结构完美。
两个都运行。它们在不同的事情上失败。
Prior art
obra/superpowers是工作流层——头脑风暴、计划、执行、验证。和这个没有重叠:这里零工作流技能,那里零领域检查。它的writing-skills推荐了用子agent测试的技能,这个工具把它自动化了。
许可证
MIT.# cold-run
我测试了47个agent技能。删除了23个。其中三个让Claude的代码变得更糟。
然后我构建了做这件事的工具,把它指向剩下的24个,它给前五个里的三个打了NEGATIVE分。
这不是bug。这是我找到的最有趣的事,我不等你自己发现,直接把它发布出来了:runs/bare-baseline/。
npx cold-run发现
一个什么都不做的技能是无聊的失败。更常见的那个更糟:
技能会消耗agent的注意力。 它买来一个特定检查,但支付方式是从任务需要的所有其他东西里扣除。
要求构建一个缓存查找时,遵循amplification-check的agent加入了jitter和single-flight——正好是技能要求的。没见过这个技能的agent加入了这些以及LRU上限、stale-while-revalidate和负缓存。带技能的版本缓存无限增长。
要求在一个Lambda里添加重试时,带技能的agent生成了一张整洁的retry-budget表,外加一个笼统的except,它会用一个确定的404去重试,和它重试超时一样热切。
你光读技能是看不出这些的。这两个技能都写得很好。你必须把任务跑两次并对生成物做diff才能看出来。
它是做什么的
找到你的技能,为每个技能挑一个对抗性的测试任务,并行运行cold/skilled配对,然后告诉你哪些技能没有改变任何东西。
cold-run v0.1 — 30 skills in ~/.claude/skills
REAL retry-guard added a breaker + cap; cold declined one
NONE be-thorough cold output was identical
NONE check-edge-cases cold found two more edge cases
NEGATIVE refactor-first skilled dropped a null check cold kept
...
11 change nothing.
2 make the output worse.
17 earn their place.
Deleting the 13 frees ~7,400 tokens of always-loaded
context, every session.
full report -> cold-run-report.md
every transcript -> .cold-run/它从不删除任何东西。它写入报告和每一个transcript,决定权在你手里。
它的成本是真实的,而且它会善解人意地询问。 每个技能调用四次模型。对于超过12个技能的库,它测试一个均匀分布的五个,所以你第一次运行很便宜;其余部分用--all搞定。
npx cold-run # auto-finds your skills
npx cold-run path/to/skills # or point it somewhere
npx cold-run --all --yes # everything, no prompt如果你有本地claude CLI就用它,否则用ANTHROPIC_API_KEY。零依赖——npx瞬间启动。
作为MCP服务器
同一个审计工具,由你已经在使用的agent驱动——Claude Code、Claude Desktop、Cursor。它使用你自己的agent的subagents,所以没有第二个API密钥,也没有隐藏的支出。
claude mcp add cold-run -- npx -y --package=cold-run cold-run-mcp{
"mcpServers": {
"cold-run": {
"command": "npx",
"args": ["-y", "--package=cold-run", "cold-run-mcp"]
}
}
}然后只需问:"我的哪些技能实际上做了点什么?"
五个结论
真实 | 产物发生了重大差异,并且skilled运行更好。 |
边际 | cold运行已经正确的基础上,增加了少量真正有用的内容。 |
无 | 无法区分——或者skilled运行只是讨论了原理。讨论不是变化。 |
负面 | cold输出更好。这不是稀有情况。我的47个里有三个落在这里。 |
无效 | 其中一方从未生成产物,所以配对作废。会被报告,但不计入。对没发生过的运行下结论比没有结论更糟。 |
存活的24个,以及它们的额外条件
产生这个工具的库在skills/,每个都有记录的cold/skilled配对——见EVIDENCE.md和runs/ledger.md。
在安装它们之前先读这个。 那次审计在两个agent都强制应用了我机器上的全局操作规则——这些规则强制了stop-and-ask行为和固定的报告格式。cold-run故意清除所有这些。在裸baseline下,前五个幸存者里有三个评分为NEGATIVE。完整transcript同样发布:runs/bare-baseline/。
哪个数值适用于你,取决于你自己的CLAUDE.md已经强制了什么。两者都没有在裸baseline下进行过全规模运行。我宁可暴露这个矛盾,也不去掩盖。这23个为什么没能幸存,以及为什么没有一个能被修复,都在runs/dropped.md里。
几个幸存者的示例,让你评估我定的标准:
yagni-audit— "实现一个速率统计器。" Cold写了约700行:同步、异步、有key、Redis、Lua、装饰器。Skilled写了一遍慢跑。trust-source-check— cold使用共享的静态环境变量令牌来认证服务。Skilled需要经过JWKS验证的OIDC令牌,并锁定audience。reverse-path-proof— skilled运行了一个真实的Postgres容器,发现回滚在255字符名称上会中止,并擦除了表中的所有名称。Cold有同样的bug。pit-of-success— cold把立即硬删除为默认操作。Skilled让它30天可逆,并把清理放入一个需要用户ID二次确认的流程中。
按正常方式安装它们,或者不装。工具才是重点。
技能在这里通过两个门槛来评,不是两个
Cold运行差异 — 它是否改变了产物?23个技能败在这里。 → EVIDENCE.md
路由 — 描述是否真的让技能被加载?一个描述从不激发的完美技能就是死重量,marionette还要消耗token。作为分类器对着360个书面要求测试;两轮失败后才让24个全部通过。 → tests/router/
一个技能只通过其中一个仍算有缺陷。
对比 skill-doctor
skill-doctor是一个linter。它读取其技能,检查frontmatter有效性、损坏的资源链接,以及触发描述看似薄弱的下划线,然后打分0-100。它从不运行任何东西。
cold-run是另一半图谱。它在同一个任务上执行技能和一个看不到该技能,的agent,并对比产物。
skill-doctor | cold-run | |
读取你的技能 | yes | yes |
运行它们 | no | yes |
捕获损坏的链接或坏的frontmatter | yes | no |
捕获结构完善但改变不了任何东西的技能 | no | yes |
一个技能在结构上100/100,却仍然是一个no-op。那正是这个工具捕获的问题,而且它更常见——我的47个里有23个结构完美。
两个都运行。它们失败的东西不重叠。
之前的尝试
obra/superpowers是工作流层——大脑风暴、计划、执行、验证。它与这个没有重叠:这里没有un 于技能那里没有domain那个。它的writing-skills推荐了这里自动化的同一个subagent测试。
许可证
MIT.
This server cannot be deployed
Maintenance
Related MCP Connectors
Run AI agent evaluations on your own model keys, and publish runs others can review and re-run.
Verifies AI agent work end to end: real artifacts and outcomes checked, not self-reported success.
The governed runtime for agent skills. Search the catalog and inspect a skill before running it.
Psyche audits for AI agents: declared vs self-reported vs revealed objectives, diffed and flagged.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceCatch Gemini model upgrade regressions before they reach customers by running evals, comparing outputs, detecting regressions, and exporting audit receipts.MIT
- AlicenseNot gradedqualityBmaintenanceAudits AI agent skills for safety using static, semantic, adversarial, and supply-chain analysis, providing scores and risk flags. Can be run via CLI, CI, or as an MCP tool from Claude Code, Cursor, and Codex.16 PyPI2Apache 2.0
- AlicenseNot gradedqualityAmaintenanceEnables deterministic auditing of agent skills, system prompts, and downloaded file collections against eight malicious-skill supply-chain patterns, returning line-numbered findings and pass/flag verdicts without using an LLM or network calls.MIT
- AlicenseNot gradedqualityCmaintenanceEnables authorized security auditing of AI-agent supply chains and agent-facing surfaces: deterministic local skill-bundle audits against eight attack patterns, secrets scanning, and scope-gated read-only recon of agent endpoints and MCP surfaces.MIT