mcpField
A
authoring-verifiable-skills

authoring-verifiable-skills

github.com/gabrielmoreiraAgent 工作流036 次安装6 周前更新
代码仓库

关于 authoring-verifiable-skills

这是一套编写技能的指南与规则,强调明确路由、易读结构和可验证的检查,面向技能作者。它要求通过能以正确原因暴露问题的测试来验证技能。

主要功能

  1. 01基于规则的技能任务路由
  2. 02激活条件与门控指导
  3. 03技能文件结构要求
  4. 04字数与行数限制
  5. 05验证和变异检查

适用场景

  1. 01设计新技能的路由
  2. 02修复技能结构
  3. 03检查测试能否捕获预期故障

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/gabrielmoreira/skills --skill authoring-verifiable-skills

安装后在 Claude Code 中输入/authoring-verifiable-skills确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

evals/
activation.scenarios.mjs
rules/
activation-surface.md
gate-not-checklist.md
name-and-scope.md
one-rule-one-decision.md
order-and-strength.md
portable-by-default.md
prove-a-measure.md
prove-it-with-checks.md
readable-in-one-pass.md
states-carry-licenses.md

详细介绍

编写可验证的技能

核心原则。 无法激活的技能毫无作用,而从未亲眼见过其失败的技能,也无法证明任何事。根据证据改进现有技能,属于 optimising-skills。

  • 这两种失败都悄无声息。 它们看起来与正常工作的技能毫无区别。
  • 关键在于激活面和门槛。 此后的所有工作,都是在改进已经触达的技能。
  • 你是在一件事进行到一半时打开本文的。 本文介绍如何开展这项工作,而不是要取代它。开始前,先明确你原本在做什么;完成后,再回去继续。

阅读与你眼前信号对应的规则

这张表是门槛,不是检查清单。 根据你即将编写或修复的内容,匹配左栏。

  • 每行一条规则。 从匹配的行开始。
  • 如果某个维度没有相应信号,就标记为不适用,并说明什么信号会触发它。
  • 如果工作匹配两行,就读两行。 阅读是成本较低的那一半。
  • 默认要求“全部阅读”的索引,只不过是多绕几步的目录。
  • 读完每一行后,再按匹配结果采取行动,并优先处理最难撤销的事项。 阅读一行毫无成本;被跳过的那一行,恰恰是覆盖不到的地方。
如果你看到……阅读
新技能,或从未触发、对所有内容都触发,或总被相邻技能抢先触发的技能rules/activation-surface.md
按概念而非 Agent 可见内容进行路由的索引,或完全没有门槛的技能rules/gate-not-checklist.md
一条规则包含两个决策、缺少规定的区块,或重复陈述了另一条规则rules/one-rule-one-decision.md
大段文字、实为列表的段落,或无法快速浏览的文件rules/readable-in-one-pass.md
从未亲眼见过失败的检查套件,或没有场景的技能rules/prove-it-with-checks.md
工具返回数字而非判定结果,或即将将数字写入报告或用于决策rules/prove-a-measure.md
文件按作者思考内容的顺序排列,或每行都标为 MUSTrules/order-and-strength.md
让人想不起来的名称,或与已安装技能重名的名称rules/name-and-scope.md
工作分为多个阶段却没有标明当前阶段的方式;或规则告诉读者对原本会立即采取的行动说 not yetrules/states-carry-licenses.md
指令文字中写入了路径、URL、供应商或包管理器rules/portable-by-default.md

区分要点。

  • 激活与名称。 激活决定技能能否被触达;名称决定技能被触达后是否容易区分。
  • 门槛与单规则。 门槛决定打开哪个文件;单规则决定文件中包含什么。
  • 可读性与顺序。 可读性决定一行的表达形式;顺序决定哪一行排在前面。

默认立场。

  • 先修复激活面。 从未触发的技能毫无作用,而且这种失败悄无声息。
  • 根据 Agent 在工作中能看到的内容进行路由,绝不要依据它必须预先了解的概念进行路由。
  • 在亲眼看到检查因其自身原因失败之前,绝不要称它为好检查。

每个技能由什么构成

  • SKILL.md 包含 frontmatter、核心原则和门槛。
  • rules/<name>.md 各自包含一项决策,分为五个部分。
    • Decision: 要选择什么,用一句话说明。
    • Use when: 使用条件,以可观察到的情况表述。
    • Do: 要做出的选择。
    • Avoid: 要防止的失败。
    • Verify: 可能得出否定结果的检查。
  • evals/*.scenarios.mjs 包含激活场景,涵盖正向和负向情况。

三种结构都合规,检查器也都能识别。

  • 路由式。 一个入口文件加上 rules/,每条门槛对应一条规则。这是默认结构。
  • 扁平式。 只有一个入口文件,适用于只有一个主题、无需路由的技能。
  • 多主题式。 一个入口文件路由到多个主题目录,每个目录再进行路由。只有在这种情况下,单独的 INDEX.md 才值得增加这次跳转。

所有预算均强制执行。

  • 规则。 正文少于 450 个单词,全文少于 600 个单词,正文为 24 至 70 行。
  • 入口文件。 正文少于 160 行,且门槛行数至少与规则数量相同。
  • 描述。 接近 500 个字符,最多不超过 700 个字符。

先验证,再相信

node tools/verify-skill.mjs skills/<name>      # structural invariants
node tools/mutate-skill.mjs skills/<name>      # each check fires for its own reason
node tools/readability.mjs --skill skills/<name>
node tools/check-yaml-parity.mjs               # frontmatter against a real YAML parser
  • 在一个有缺陷的技能未因正确原因而导致测试失败之前,测试套件全绿毫无证明力。
  • 缺少场景测试套件时,应报告为 UNPROVEN,绝不能算作通过。
  • 先读输出,再相信数字。 为评估重写而编写的指标,会被这次重写钻空子。

以下情况也不要跳过

  • 技能很小。 描述有缺陷的小技能同样会被忽视,与大型技能无异。
  • 你只是在重命名它。 名称是激活范围的一半。
  • 措辞已经没问题。 出问题的从来不是措辞,而是结构和路由。
  • 你正在复制现有技能。 缺陷就是这样再次出现的。

路由

  • 上表用于选择规则。 完整阅读,并用一行说明你打开了哪条规则。
  • 用户的直接指示优先于此处的任何内容。
  • 任务是否需要技能并不在此处决定。 一旦确定需要编写技能,此技能就负责撰写。
  • 已存在但表现不佳的技能应交由 optimising-skills 处理。 此处负责在阅读时修复结构;在那里则要先写下预测,再通过实验改变行为。

评论

支持 Markdown