Skip to main content
Glama

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的确认之后。

正常安装它们,或者不装。工具才是重点。

技能在这里通过两个门才能得到评分,不是一个

  1. Cold-run delta — 是否改变了产物?23个技能没通过。

  2. 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二次确认的流程中。

按正常方式安装它们,或者不装。工具才是重点。

技能在这里通过两个门槛来评,不是两个

  1. Cold运行差异 — 它是否改变了产物?23个技能败在这里。 → EVIDENCE.md

  2. 路由 — 描述是否真的让技能被加载?一个描述从不激发的完美技能就是死重量,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.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Audits 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 PyPI
    2
    Apache 2.0
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables 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
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables 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