公司动态

万字干货 | 一篇讲透Skill:规范、跨平台、触发、调用、组合与串联

📅 2026/8/22 9:46:26
万字干货 | 一篇讲透Skill:规范、跨平台、触发、调用、组合与串联
最近读《敏捷史话》时书里提到了 Robert C. Martin。他是《敏捷软件开发宣言》的 17 位签署者之一也是《代码整洁之道》的作者。看到这里我想到自己用 AI Coding 时反复遇到的一类问题生成结果能够运行却容易留下重复逻辑、多余封装和含混命名该解释的地方没有注释有些注释又只是在复述代码。局部看似完成代码的可读性、修改成本和错误边界却没有得到稳定控制。我最初只想借用《代码整洁之道》中的思想做一个约束代码生成与审查的 Skill。真正动手后问题很快超出了“把规则写进一个 Markdown 文件”Skill 应该采用什么结构哪些字段属于开放规范同一个包怎样被不同平台发现和加载description怎样参与触发工具权限由谁控制这些都需要先弄清楚。调研各个平台的 Skill 实现后我又受到 Superpowers 的启发继续研究多个 Skill 怎样组合、交接和串联。原本针对代码整洁的一项实践逐渐展开成了一条完整链路。于是有了这篇文章从一个SKILL.md目录开始依次拆开规范、跨平台实现、触发、调用和自动串联背后的机制。一、Skill 从一个目录开始一个 Skill 包至少由一个目录和其中的SKILL.md组成example-skill/ └── SKILL.mdSKILL.md的开头必须是 YAML frontmatter正文随后写给 Agent 的工作说明。开放标准要求name与description其余标准字段是可选项。资源目录不是最低要求但规范建议用相对路径组织scripts/、references/和assets/。[1]一个可使用的 Skill 至少应声明适用范围与非目标、输入范围与禁止访问对象、判断和行动顺序、输出契约、授权点、停止条件以及命令或测试验证方法。这些声明属于正文契约不会自动转化为宿主权限或确定性调度规则。Skill 不等于以下对象对象主要职责与 Skill 的关系Skill按任务加载的方法、约束和资源这里讨论的包格式插件分发多个能力、配置或工具可以携带 Skill但范围更大MCP连接实时数据、外部工具和受控动作可被 Skill 调用不是 Skill 本体AGENTS.md项目或目录范围的持久规则约束宿主工作环境不是按任务加载的能力包GEMINI.mdGemini 系列宿主的项目指令宿主指令文件不是开放 Skill 格式把这些对象统称为“技能”会掩盖权限、发现和生命周期差异。目录结构最小布局适合一次性方法、没有脚本和外部参考资料的 Skillexample-skill/ └── SKILL.md只要SKILL.md能独立说明触发条件、步骤、输出和停止条件就不必为了形式增加空目录。扩展布局适合需要确定性检查、长篇参考资料或模板资产的 Skillexample-skill/ ├── SKILL.md ├── LICENSE.txt ├── scripts/ │ ├── prepare-input.py │ └── validate-output.py ├── references/ │ ├── output-schema.md │ └── domain-guidance.md └── assets/ └── output-template.md扩展布局的原则是按需加载。SKILL.md先告诉 Agent 何时读取哪个资源不要把所有参考资料复制进主体。目录名采用小写 ASCII kebab-case例如example-skill这是跨文件系统、搜索工具和宿主解析器的稳妥建议不是说标准必然拒绝 Unicode 名称。参考实现实际上接受 Unicode 字母数字名称也接受小写skill.md但这些属于实现宽松行为不应作为可移植包的依赖。[2]文件职责路径必需性职责不应承担的职责SKILL.md必需名称、描述、工作流程、输入输出、边界承诺宿主一定会授予权限scripts/可选可重复的机械检查或数据转换绕过用户授权执行高风险动作references/可选长篇规范、术语、示例和背景材料作为自动发现入口assets/可选模板、样例、静态资源存放凭据或隐含的运行时配置LICENSE.txt工程建议说明包的许可条件代替 frontmatter 的license字段agents/openai.yamlCodex 扩展Codex 的界面、默认提示或调用配置伪装成开放标准字段脚本应使用相对路径访问包内资源避免假定当前工作目录。脚本需要的依赖、输入、输出和失败码应写在SKILL.md中。是否允许执行脚本仍由宿主的工具、沙箱和授权策略决定。Frontmatter 与元数据字段标准字段推荐的跨平台核心写法如下---name:example-skilldescription:Process a bounded task with the documented workflow and return a validated structured result.license:MITcompatibility:Requires a host that can read package resources and run the declared validation command.metadata:version:0.1.0author:example---字段标准地位约束或用途name必需Skill 名称。建议小写 ASCII kebab-case并与目录名一致。description必需说明做什么和何时使用。应足够帮助宿主发现和路由。license可选包的许可说明可以是标识符或文件名。compatibility可选环境要求例如工具、网络或运行时约束。metadata可选宿主或发布方的额外键值。具体键不由开放标准统一解释。allowed-tools实验性某些实现尝试声明允许工具不应作为跨平台安全边界。标准没有规定version、依赖、签名、注册表、锁文件或更新协议。若把版本放在metadata.version它只是包作者的可读信息不能假设宿主会比较或阻止旧版本。宿主扩展宿主可观察扩展处理方式Claude产品级调用控制、工具和模型控制以及不同产品表面的加载与共享能力放在适配文档不写入便携核心。Claude 的安全建议也要求审计整个目录。[3]Codexagents/openai.yaml等 Codex 专属配置项目或用户目录的发现与显式调用作为可选适配层。固定提交中的官方 Skill Creator 文件和协议文档支持这些形状不推出当前产品的额外承诺。[4]Gemini CLIactivate_skill、激活前同意、允许路径、启用和禁用命令这些是 Gemini CLI 行为不是SKILL.md的标准字段。 [5]AntigravityGoogle 公告确认保留 Skill 开放规范方向但不承诺立即与 Gemini CLI 一对一平等目前不写解析器规则等待独立文档或实测证据。 [6]OpenCode支持核心字段忽略未知顶层字段并由原生skill工具按需加载不能据此推断其他宿主也会忽略未知字段。 [7]Hermes Agent兼容核心包结构并增加version、platforms、prerequisites、required_environment_variables和metadata.hermes这些字段属于 Hermes 扩展。便携核心仍只使用标准字段平台、工具、环境变量和 Blueprint 配置进入 Hermes 适配层。[9]skills-ref是 Agent Skills 仓库提供的参考解析器和校验器用于检查 Skill 包的基本结构是否符合规范。它会读取 SKILL.md解析 YAML frontmatter并检查必需字段、字段类型、名称规则和允许出现的顶层字段。如果出现未知顶层字段它会直接报错。需要注意的是它只能检查 Skill 的“文件外形”不能判断正文是否有用也不会验证引用资源是否存在、脚本是否能够执行或模型是否会遵守其中的指令。在字段处理上skills-ref使用固定允许列表而OpenCode会忽略未知顶层字段。这是两种实现之间的直接差异。为了提高可移植性Skill 顶层应只使用标准字段额外信息放入metadata宿主专属配置则放入对应的适配文件。。二、从安装到生命周期的一条运行链Skill 从安装或注册到生命周期记录经过十个连续阶段。下面用example-skill表示其中的具体包表格中的“保证”只描述执行主体自身能够观察和控制的范围。阶段执行主体Skill 输入或对象动作可观察输出能保证什么不能保证什么安装/注册发布系统、插件或宿主配置example-skill/注册路径及提交将包放入项目、用户或外部 Skill 路径磁盘目录和注册配置文件和路径可被读取宿主一定扫描该路径发现宿主扫描器注册路径、example-skill/SKILL.md查找包并解析文件入口候选包扫描范围内发现符合外形的包同名优先级和模型采用结果索引宿主索引器frontmatter 中的name: example-skill和description建立低成本候选清单example-skill名称、描述索引元数据可被列出description 变成确定性语义规则环境过滤宿主索引器compatibility、工具集、命令和环境变量检查当前环境并显示或隐藏包过滤后的可见性宿主声明的过滤规则生效过滤器理解用户任务或授予权限激活用户、宿主或模型example-skill索引、用户任务、名称或显式参数选择、请求同意或发起加载激活请求、同意提示或工具调用显式入口可被解析模型每次都正确选择主体加载宿主 Skill 工具example-skill/SKILL.md读取 frontmatter 后的正文方法说明进入上下文指定主体被读取正文被完整遵循或不会被压缩资源加载模型和宿主读取器example-skill/references/output-schema.md按正文要求用包内相对路径读取 schema输出字段和资源内容指定资源可被加载资源内容可信、存在或可执行工具与授权执行宿主权限层、工具注册器、操作系统report-only 意图、目标 diff、只读命令拒绝写入或允许已授权的读取和检查工具结果、拒绝结果或授权记录宿主权限门禁能够限制动作Markdown 自行成为权限边界输出与评估模型、测试夹具、人工审查结构化结果、命令输出、transcript、fixture生成结果并区分发现、选择、合规、权限和验证状态结果、状态、未知项和评估记录已覆盖夹具的行为可复现一次通过证明所有会话都正确版本与生命周期仓库、发布系统、宿主tag、提交、.usage.json或生命周期记录固定版本、升级、归档或回滚可追踪版本状态仓库和宿主能记录其管理范围开放规范自动锁定、更新或回滚Hermes 的项目发现顺序是project-root/.hermes/skills/、project-root/.agents/skills/、~/.hermes/skills/和配置外部目录按 first-wins 处理同名包项目包还需通过hermes skills trust建立信任。该发现、覆盖和信任行为属于 Hermes 固定提交27562ad5f80e90f7d552f92dbd4af7f1f511c3c8的宿主证据。[9] 同一提交记录了本地 Skill 的active → stale → archived生命周期和.usage.json活动记录这不能扩展为开放规范的统一生命周期。[9]三、触发与调用Skill 的触发与调用按因果顺序分为四种机制自动发现产生候选环境过滤改变可见性模型依据元数据作语义选择用户或模型再通过显式入口加载主体和资源。下面继续使用example-skill表示被处理的具体包。机制执行主体具体输入宿主动作输出确定性失败边界自动发现宿主扫描器注册路径、example-skill/SKILL.md扫描目录并解析入口文件候选 Skill扫描范围内较确定路径未扫描、同名覆盖、信任未建立环境过滤宿主索引器metadata.hermes.requires_toolsets、requires_tools、fallback_for_toolsets、fallback_for_tools检查工具集和环境显示或隐藏候选过滤后的example-skill可见性规则执行可确定字段不识别、显式路径绕过过滤不等于授权模型介导选择模型与宿主工具name: example-skill、description、用户任务和上下文模型判断是否适用并决定是否加载Skill 调用决定概率性漏选、误选、重复description 不是确定性语义触发器显式调用/渐进加载用户、模型和宿主接口Geminiactivate_skill、OpenCodeskill、Hermes/skill-name或skill_view(name)Codex 固定协议中的名称和路径证据解析入口读取主体再按需读取资源SKILL.md和需要时的references/output-schema.md指定解析和读取通常确定名称错误、宿主不支持、权限拒绝、压缩或资源缺失以example-skill为例它的name和description先进入索引过滤字段决定它是否可见用户或模型选择后宿主读取主体只有生成结构化结果时才读取references/output-schema.md。Hermes 的渐进接口是skills_list()、skill_view(name)、skill_view(name, file_path)分别对应低成本索引、完整主体和包内资源。[9]Gemini CLI 的activate_skill和激活前同意、OpenCode 的原生skill工具属于宿主行为。[5][7] Hermes 支持/skill-name和skill_view(name)固定提交还记录最多五个连续 Slash Skill。Codex 固定协议和 Skill Creator 样本支持名称及SKILL.md路径形状但不足以断言所有当前产品行为。[4][9]四、跨平台实现检查维度ClaudeCodexGemini CLIOpenCodeHermesAntigravity核心包与证据状态官方文档支持 Skill具体调用和工具/模型控制随产品表面变化。[3]固定提交186b449bc218ced20399bc950e23ca16cc3f9be3的固定文件支持核心包和agents/openai.yaml仅由固定文件支持不作当前产品保证。[4]官方文档支持 Skill以下行为限于 Gemini CLI 文档。[5]官方文档支持核心字段和原生 Skill 工具。[7]固定提交27562ad5f80e90f7d552f92dbd4af7f1f511c3c8的文档和源码证据。[9]Google 公告只确认方向独立解析器行为未确认。[6]发现/入口产品表面决定未据此指定通用路径需以具体 Claude 表面验证入口。[3]项目/用户发现及显式协议形状有固定文件支持当前产品行为未被这些文件确认。[4]分层发现入口和允许路径由官方 CLI 文档定义。[5]文档列出多个发现位置原生skill工具是入口。[7]project-root/.hermes/skills/、.agents/skills/、~/.hermes/skills/、外部目录first-wins项目入口需hermes skills trust。[9]解析路径未确认。[6]显式调用调用、工具和模型控制按产品表面变化未外推统一命令。[3]固定协议包含 Skill 名称和SKILL.md路径形状这是协议文件事实不等于当前产品承诺。[4]activate_skill激活前可请求同意。[5]原生skill工具。[7]/skill-name、skill_view(name)固定提交记录最多五个连续 Slash Skill。[9]未确认。[6]主体与资源加载产品表面决定需实测example-skill/SKILL.md和资源读取。[3]固定文件支持 Skill 文件路径资源加载没有统一协议。[4]宿主行为由 CLI 文档定义资源加载需实测。[5]原生 Skill 工具按需加载主体资源读取需逐包验证。[7]skills_list()→skill_view(name)→skill_view(name, file_path)可验证主体和references/output-schema.md按需读取。[9]未确认。[6]权限/同意边界工具和模型控制随产品表面变化不能从 Skill 文本推导权限。[3]由运行时决定固定协议文件不提供跨产品权限保证。[4]激活前同意、启用/禁用和允许路径由 CLI 配置控制。[5]权限系统可询问未知字段处理不等于权限授予。[7]项目 trust、profile、toolset、工具注册和运行时共同决定allowed-tools不能据此写成强制沙箱。[9]未确认。[6]可执行验证具体产品表面和版本必须单独记录矩阵不把格式支持当作行为证明。[3]标记为 repository-evidence-only需实测当前版本。[4]可按官方入口、同意和允许路径做 CLI 夹具。[5]可按发现位置、skill工具和权限规则做宿主夹具。[7]可按 trust、first-wins、三段加载、Slash 和生命周期记录做固定提交夹具。[9]只能记录未确认不从 Gemini CLI 外推。[6]同一个example-skill包应在每个宿主分别记录最终解析路径和版本提交执行该宿主支持的显式入口确认SKILL.md与references/output-schema.md的读取结果尝试未授权写入并记录拒绝或放行再检查结果是否符合预定输出 schema。这样能把格式发现、入口调用、资源访问、权限边界和输出行为分开归因未确认单元不能用其他宿主的通过结果填补。五、Skill 怎样组合与串联一项复杂任务通常无法由一份 Skill 完成。范围确认、实现约束、代码审查、有限修改和结果验证承担的是不同职责。把这些职责全部写进一份巨大的SKILL.md会让触发条件变得模糊也会让每次调用都加载与当前阶段无关的规则。拆成多份 Skill 后系统还需要解决两个问题哪些 Skill 应同时生效以及前一阶段结束后怎样进入下一阶段。组合解决共同约束组合是让多份 Skill 在同一阶段共同进入上下文。它们没有天然的先后顺序也不自动传递阶段状态。例如代码审查时可以同时加载reviewing-code-quality和对应的语言配置前者规定审查范围、finding 结构和只读边界后者补充 Python、TypeScript、Go 或 Rust 的具体检查方式。两份材料共同约束一次审查但不会因为同时加载就产生“先审查、再修改、后验证”的流程。同时加载还需要处理职责重叠。若一份 Skill 要求只读另一份 Skill 允许修改一份要求先报告另一份要求立即修复模型只能在自然语言中解释冲突。可组合的 Skill 因此需要明确自己的责任、默认副作用和优先级避免两份 Skill 同时控制同一个动作。组合方式进入上下文的内容适合解决的问题不会自动获得的能力同时加载多份SKILL.md共同约束同一阶段阶段顺序和状态转移Skill 加语言配置通用方法与语言细节保留跨语言核心同时应用项目惯例自动选择正确工具和命令名称清单或 Bundle一组 Skill 名称及可选补充说明预先声明需要共同使用的能力结构化交接、失败恢复和授权继承宿主预加载入口 Skill 或固定 Skill 集合降低模型发现入口的成本模型必然遵守每条规则部分宿主允许在一条消息中列出多份 Skill或通过 Bundle 加载一组 Skill。这证明宿主可以确定地完成“把哪些文件放进上下文”不能证明模型会按预期协调这些文件。[9]串联解决阶段交接串联要求前一份 Skill 的结果影响下一份 Skill 的选择。以代码整洁流程为例可以拆成下面几段code-craft-foundations 确认范围、基线、风险和授权 输出scope、risk、authorization、next_stage ↓ writing-maintainable-code 在实现前固定接口、错误、日志、性能和测试约束 输出实现契约 ↓ reviewing-code-quality 读取实现或 diff只报告有证据的 findings 输出findings、unknowns、verification ↓ 人工选择 findings 并授权 simplifying-code-safely 只修改获批文件和 finding 输出最小 diff、保留的语义假设 ↓ verifying-code-changes 分别运行格式化、静态检查、类型或编译、测试和场景验证 输出结果、未覆盖风险、最终状态这条链不是因为文件名排成一列就成立。每次交接至少需要前一阶段的状态、输出、下一跳、授权和停止条件。缺少其中任何一项后一份 Skill 都可能不知道该读取什么也可能把“报告问题”误解成“已经允许修改”。一个可检查的交接对象可以写成task_id:code-review-001stage:reviewstatus:completescope_checked:-src/cache.tsfindings:-CQ-2026-0001authorization:mode:report_onlynext_stage:needs_humanunknowns:-真实依赖服务尚未验证next_stage只表达建议去向。authorization.mode: report_only明确说明当前结果不能直接进入写入阶段。只有用户或宿主更新授权状态后续修改 Skill 才具备合法输入。这样串联传递的不是一句含糊的“继续”而是一组能够被下一阶段检查的条件。文本路由把下一跳写进 Skill没有工作流引擎时Skill 可以直接在正文中声明交接规则。完整的文本路由通常包含以下内容路由内容作用代码整洁流程中的例子触发条件确定当前 Skill 何时适用收到限定范围的代码审查任务入口动作指定要加载的 Skill 或工具加载reviewing-code-quality输入契约规定开始前必须具备的材料base revision、目标 diff、项目规则输出契约规定交接给下一阶段的内容findings、evidence、unknowns下一跳指出可能进入的阶段授权后进入simplifying-code-safely停止条件阻止流程在证据不足时继续范围不清或工具失败时停止否定路由明确不能自动进入的路径未授权时不得修改代码用户优先级处理默认流程与用户选择的冲突用户拒绝修改时停在报告阶段模型读取这些文字后可以调用宿主的 Skill 工具加载下一份SKILL.md。这一过程表现得像自动串联实际包含了不同性质的动作宿主注册目录和读取文件通常由程序执行模型根据任务选择 Skill、理解下一跳并发起调用仍然是概率性的语言行为。Superpowers 展示了这种文本串联如何落地。宿主先注册 Skill 目录并注入一个短入口模型再根据任务选择具体 Skillbrainstorming的正文把writing-plans写成设计确认后的下一步模型读到规则后再次调用 Skill 工具。这里可复用的是“入口、选择、加载、交接”的结构而不是这些具体 Skill 名称。[10]宿主注册 Skill 目录 ↓ 入口规则进入上下文 ↓ 模型依据任务选择当前 Skill ↓ 宿主工具加载 SKILL.md ↓ 当前 Skill 输出结果、停止条件和下一跳 ↓ 模型或用户决定是否加载下一份 Skill这条链中目录注册、入口注入和指定文件读取可以由宿主代码确认任务匹配、文字规则遵循和下一跳选择不能获得同样的确定性。行为评测需要检查 transcript 中是否真的发生了 Skill 调用不能仅凭正文出现“必须进入下一阶段”就判定串联成功。[10]宿主编排提供更强的确定性宿主还可以在会话开始时预加载入口 Skill、按名称清单同时加载多份 Skill或在用户接受后建立定时任务。这些机制负责确定“何时把哪份 Skill 放入上下文”。例如Bundle 表达一组待加载的 SkillBlueprint 可以形成SKILL.md → suggestion → user acceptance → cron job → Skill preload的调度链。[9]宿主调度仍不等于阶段工作流。真正的工作流引擎需要保存权威状态、校验当前阶段输出、判断转移条件并把结构化结果作为下一节点输入。它可以强制“没有授权就不能进入修改阶段”也可以在验证失败后返回指定节点。普通 Skill 的文字下一跳没有这种执行权。串联方式谁决定下一步是否保存权威状态是否能强制转移条件文字 handoff模型根据 Skill 正文判断通常依赖当前上下文不能保证用户确认后调用用户决定可由宿主记录能形成明确授权点但不等于完整状态机宿主预加载或定时调度宿主配置和调度器保存配置与调度状态能保证加载时机不能保证模型遵循正文工作流引擎程序状态机保存结构化状态可以校验并强制节点转移因此Skill 的组合与串联处在三个层次组合负责把相关方法同时放进上下文文本交接负责表达下一阶段及其条件宿主或工作流引擎负责把其中一部分关系变成可执行约束。所谓“自动串联”必须说明自动发生在哪一层不能把文件加载、模型选择和状态调度合并成一个动作。六、权限、失败与验证边界权限与信任边界example-skill正文声明只读模式只输出结构化结果不修改目标文件。这个声明不是权限实现。宿主必须在工具注册、授权提示、沙箱和操作系统层实际拒绝未授权写入allowed-tools即使能被解析或扫描也没有足够证据构成跨平台强制沙箱。[1][9]项目 Skill 的 trust、外部目录优先级、脚本解释器和环境变量都由宿主和运行环境决定。prerequisites或required_environment_variables可以描述依赖不能自行授予读取凭据、联网或运行进程的权限。目录中的 Markdown、脚本、README、issue、注释和外部仓库内容都按不可信数据处理提示注入和供应链内容不能改变example-skill的授权范围。[8]运行时失败类别发现失败注册路径没有扫描到example-skill或同名包解析到意外路径。过滤或选择失败包进入索引却被环境字段隐藏或模型看到name、description后没有选择它。重复 bootstrap宿主在多个 agent step 注入同一入口缺少 marker 导致上下文重复。Superpowers v6.3.0 的 OpenCode message transform 需要这类去重边界。[10]压缩丢失上下文压缩后丢失 report-only、已完成阶段或下一跳Superpowers 本地 6.1.1 的压缩后补注入记录不能外推为开放规范保证。[10]控制者/worker 泄漏worker 重复执行入口流程造成重复规划或错误角色边界。资源或 shell 漂移references/output-schema.md不存在、相对路径错误、解释器或 shell 不同导致正文声明的资源或脚本不可用。权限拒绝宿主正确拒绝未授权写入不能被误报为 Skill 执行失败若实际放行则是权限边界失败。虚假完成报告声称已运行命令、读取资源或通过测试但 transcript 和工具结果没有对应证据。验证层次结构层用skills-ref检查SKILL.md、frontmatter 和允许字段它不能证明references/output-schema.md存在也不能证明模型遵守正文。[2] 宿主基础设施测试记录最终解析路径、版本、索引、显式调用、主体和资源读取、权限拒绝以及 Hermes 固定提交27562ad5f80e90f7d552f92dbd4af7f1f511c3c8的 trust/生命周期行为。[9]行为夹具必须分别标记发现失败、选择失败、body-compliance 失败、权限失败和验证失败。example-skill夹具应检查只读模式是否生效、references/output-schema.md是否解析、结果是否满足 schema以及输出是否只建议下一阶段而不伪造后续结果。模型行为评估保存任务、Skill 调用、工具调用、结构化结果和失败原因不能只保存最终文本。baseline 与 with-Skill 使用同一模型、宿主、输入、权限和工具前者不加载example-skill后者加载它。两组都保存 transcript、资源访问、写入尝试、命令结果、报告、diff 和耗时。对照结果只能说明固定夹具和版本中的观察不构成所有会话的调度或语义等价证明。七、规范、宿主和模型各自决定什么开放格式保证的是一个可被识别的公共核心目录中有SKILL.md文件有合法 frontmattername和description表达包的名称与用途资源可以用相对路径组织。它不保证发现目录、激活时机、工具权限、模型选择、版本锁定、更新回滚或定时调度。[1]宿主可以保证自己实现的发现、索引、加载、同意、信任、工具和调度行为。Hermes 的三级读取、项目 trust、first-wins、Bundle、Blueprint 和生命周期存在于固定提交OpenCode 的原生skill工具和未知顶层字段处理是另一种宿主行为。Claude、Codex、Gemini CLI 的公开文档支持各自产品能力不能自动变成跨平台保证。Antigravity 的独立解析规则仍未确认。[4][5][6][7][9]模型只是在上下文中根据自然语言、任务和工具结果进行概率性选择。它可能正确理解 description也可能漏掉 Skill、重复调用、跳过授权说明或误读下一跳。Superpowers 的 bootstrap 和文字 handoff 能降低发现成本却没有把 Markdown 变成程序化状态机。[10]必须实测的内容包括同名冲突、信任门槛、资源读取、脚本失败、权限拒绝、提示注入、压缩后规则是否仍在、显式调用是否绕过过滤、Bundle 是否按预期加载、Blueprint 是否等待用户接受、模型是否在正确阶段调用 Skill以及输出是否通过项目已有验证。能证明的结论应写成“在固定宿主、版本、输入和测试范围内观察到”不能证明的内容保留为未知不用“通常”“应该”或产品名称填补空白。参考文献Agent Skills Specification.Agent Skills, pinnedskills-refvalidator and parser.Anthropic, Agent Skills and Claude Code Skills.OpenAI Codex, pinned Skill Creator sample and protocol v1.Gemini CLI, Skills.Google Developers Blog, transitioning Gemini CLI to Antigravity CLI.OpenCode, Skills.OWASP GenAI, Prompt Injection.Nous Research, Hermes Agent固定提交27562ad5f80e90f7d552f92dbd4af7f1f511c3c8Superpowers v6.3.0。