Internal preview

WeHub Research Blog

这是一篇暂时内部分享的技术博客预览。请输入团队预览口令。

Runtime deep dive

Claude Code:为什么 skill 同时是命令、上下文和 plugin 单元

Claude Code:为什么 skill 同时是命令、上下文和 plugin 单元。Agent Skills portable core / runtime adapter deep dive.

2026-06-06Internal previewAgent Skills · Runtime Adapter

Claude Code:为什么 skill 同时是命令、上下文和 plugin 单元

Claude Code 的 skill 不是单纯的“说明书”。它同时承担三层语义:让模型按 description 自动发现某类工作流,让用户用 /skill-name 显式调用,让团队通过 plugin 分发一组可复用能力。

这解释了 Claude Code 的设计为什么比通用 Agent Skills 标准更“命令化”。标准只要求 namedescription;Claude Code 则会关心 user-invocableargument-hintallowed-toolsdisallowed-tools、是否动态读取命令输出、是否与 custom commands 合流。它运行在开发者终端里,很多 skill 的目标不是“给模型一点背景”,而是“稳定执行一个工程动作”:发版、review diff、生成迁移脚本、跑测试、提交 PR。

它解决的 runtime 问题

Claude Code 要回答的是:一个可复用 workflow 怎样变成终端里的可调用命令,同时仍能在模型判断合适时自动出现。

这带来三个后果。

第一,description 是路由器。Claude Code 需要在不加载完整正文的情况下判断某个 skill 是否相关,所以描述必须写清楚“做什么”和“什么时候用”。

第二,权限不是 portable core。allowed-tools 可以表达这个 skill 预计会用哪些工具,但真实执行权仍由 Claude Code 的权限模式、项目 trust、settings、hooks 和 MCP 配置决定。

第三,命令入口不是任务知识本身。/deploy/review-diff 这类 invocation 语义属于 Claude adapter;portable core 只该描述 deploy/review 这类任务怎样判断、怎样验证、怎样失败回退。

为什么这样设计合理

Claude Code 的用户大多处在一个可执行开发环境里。用户期望 agent 不只是“解释”,还要能读仓库、跑命令、修改文件、总结 diff。把 skill 和 slash command 合流,可以让同一份工作流既被模型自动触发,也能被用户显式点名。

这是一种 terminal-native 取舍:命令可见性、参数提示、工具权限和动态上下文,比纯文件格式更重要。

迁移时要剥离什么

  • .claude/skills.claude/commands、plugin manifest。
  • allowed-tools / disallowed-tools 的 Claude 工具名。
  • slash command 参数提示。
  • hooks、MCP、permission mode、project trust。
  • 假设 Claude Code 有 ReadEditWriteBash 这些工具名。

Adapter 应该写什么

Claude Code adapter 应该只写放置路径、是否允许自动触发、是否暴露 slash command、需要哪些 Claude 工具、哪些步骤必须由用户确认、怎样从终端命令取得动态上下文。portable SKILL.md 保持任务判断和验收逻辑。

Sources

继续阅读