当 Skill 越来越多,我们需要的不只是技能市场

我最早开始想这件事时,想法也很常见:几个月前,我写过一篇 skill-scoutskill-squadron 的文章。当时我更关注两个工具本身——一个帮我发现、改造和生成 Skill,另一个帮我把多个 Skill 编成组,做关系分析和持续优化。

但真正进到 Skill 生态现场后,我先撞上的并不是"怎么写一个好 Skill",而是更基础的几个问题:当 Skill 从几个变成几十个、上百个时,它还能只是一个列表吗?大家不再只问"怎么写一段好 Prompt",而是开始问"有没有现成能力可以装"。

所以我后来更认可的一种做法是:Skill Marketplace(技能市场)会先出现,但下一步真正会遇到的问题,可能是 Capability Architecture(能力架构)。

也就是:我们到底是在管理一堆 Prompt,还是在构建一个能力系统?


先看结论

如果一个项目里只有 5 个 Skill,它们像工具箱;如果有 50 个、100 个,它们就开始像一个系统。

几个月前,我写过一篇《用 skill-scout 和 skill-squadron 打造趁手的技能矩阵》。那篇文章里,我把 skill-scout 比作"技能猎头",把 skill-squadron 比作"技能经纪人"。

当时我想解决的问题比较直接:

  • 想要一个 Skill,但不知道去哪里找;
  • 找到一个 Skill,但不知道是不是还有更好的;
  • 想改造成适合自己项目的 Skill,但不知道怎么落地;
  • Skill 越写越多以后,不知道它们之间怎么关联、怎么维护。

所以那篇文章更偏"工具介绍"。它告诉大家:可以用 skill-scout 找能力、改能力、生成能力;可以用 skill-squadron 分析能力之间的关系,做编队巡逻和影响分析。

但这几个月过去以后,我对这件事的理解有点变化。

我越来越觉得,skill-scoutskill-squadron 的价值,不只是"帮我多生成几个 Skill"。它们真正有意思的地方,是开始触碰一个更长期的问题:

当 Skill 从几个变成几十个、上百个时,它还能只是一个列表吗?

如果只有 5 个 Skill,它们很像工具箱:写 SQL 用 SQL Skill,做 Code Review 用 Review Skill,写测试用 Testing Skill。每个 Skill 解决一个问题,用户自己选择就可以了。

但如果你有 50 个、100 个 Skill,事情就开始变了。

你会开始遇到新的问题:

  • 哪个 Skill 是入口?
  • 哪些 Skill 只是内部节点,不应该直接暴露给用户?
  • 两个 Skill 的职责重叠了,谁说了算?
  • 一个 Skill 改了以后,会不会影响另一个 Skill?
  • 一组 Skill 应该一起升级,还是单独升级?
  • 哪些能力已经过期,哪些能力只是暂时不用?

这时候,你管理的就不再是一个"技能列表",而更像一个"能力系统"。


当前主流仍然更像 Skill Collection(技能集合)

我不是说当前主流做法不对。

相反,我觉得从 Prompt(提示词)到 Skill(技能),再到 Skill Collection(技能集合),是非常自然的演进路径。

最早大家关注的是 Prompt:怎么写出一段更有效的指令,怎么让 AI 按某个风格输出,怎么让它遵守约束。

后来这些 Prompt 被沉淀成文件,变成规则、说明、指令集、工作流。再往后,平台开始给这些可复用内容一个更正式的名字:Skill、Rule、Instruction、Prompt file。

这一步很重要。它把原本散落在对话里的经验,变成了可以复用、可以分享、可以安装的能力包。

现在我们已经能看到几个明显信号。

截至 2026-06-16,不同平台已经在用各自的方式把"可复用 AI 能力"产品化:OpenAI Codex 有 Skills,Claude 有 Agent Skills,Cursor 有 Rules,GitHub Copilot 和 VS Code 有 custom instructions / prompt files。社区侧也开始出现 awesome list、skills marketplace、best skills 这类目录化内容。

这些资料可以作为延伸阅读:

官方 / 一手资料

社区 / 生态观察样本

我列这些资料,不是为了证明某个平台已经给出了最终答案,而是想说明一个阶段已经到来:Skill 正在从个人经验,变成可包装、可分享、可安装的能力资产。

但如果从组织方式看,当前大多数形态仍然更像:

skill A
skill B
skill C
skill D
...

也就是 Skill Collection(技能集合)。

比如一个目录里可能有:

  • code-review
  • unit-test-writer
  • api-doc-generator
  • frontend-fixer
  • browser-debugger
  • pr-summary

这当然有用。它解决了"有没有可复用能力"的问题。

但它还没有真正解决"这些能力之间如何协作"的问题。

用户面对的仍然是多个独立能力。你要自己知道什么时候用哪个,哪个先用,哪个后用,哪个是入口,哪个是辅助,哪个已经被另一个能力覆盖了。

所以我现在会把这两个阶段区分开:

Skill Collection(技能集合)解决的是:有没有可复用能力。
Capability System(能力系统)解决的是:这些能力如何协作。

前者更像工具箱,后者更像系统架构。


Skill 多起来之后,问题会从"缺能力"变成"缺架构"

一个生态刚开始的时候,最明显的问题通常是"缺能力"。

没有 Review Skill,就写一个 Review Skill。

没有测试生成 Skill,就写一个测试生成 Skill。

没有文档归档 Skill,就写一个文档归档 Skill。

但当能力越来越多以后,真正的问题会慢慢变化。

你会发现,真正缺的开始变成一种组织能力的方式。

举个例子,如果我要做一个 feature-dev 能力,它可能不只是一个 Skill。它内部可能涉及:

  • 需求澄清;
  • 方案设计;
  • API 设计;
  • 数据模型设计;
  • 测试设计;
  • 代码实现;
  • Review 和验证。

如果把它们全部摊开给用户,用户看到的可能是:

requirement-convergence
spec-designer
api-design
db-design
test-design
code-implementer
review-validation

这当然也能用,但使用者需要理解每个 Skill 的边界,并且要知道它们的顺序。

更理想的方式可能是:

用户只看到一个入口:

feature-dev

内部再由系统协调:

requirement-convergence

spec-designer

api-design / db-design / test-design

review-validation

这时候,用户消费的是能力系统,而不是一堆能力零件。

这也是我为什么觉得 Skill 多起来以后,真正稀缺的不是 Prompt,而是边界、关系、入口、分层、版本、影响分析和演化秩序。

如果没有这些东西,Skill 越多,系统反而越乱。

它可能会变成另一种形式的上下文垃圾场:每个 Skill 都写得很认真,但谁也不知道谁该在什么时候负责什么。


我现在更愿意把 Skill 看成 Capability Module(能力模块)

所以我现在不太愿意只把 Skill 理解成 Prompt。

更准确地说,我会把它看成 Capability Module(能力模块)。再进一步,它应该是:

Governed Capability Object(可治理的能力对象)。

因为一个真正能进入复杂系统的 Skill,不应该只有一段提示词。它至少应该有几个东西:

  • 它解决什么问题;
  • 它不解决什么问题;
  • 它什么时候被触发;
  • 它输入什么;
  • 它输出什么;
  • 它依赖谁;
  • 它会影响谁;
  • 它应该暴露给用户,还是只作为内部节点;
  • 它如何升级和废弃。

这时候,思维模型就变了。

市场早期更常见的是:

Prompt

Skill

Collection

而我现在更关心的是:

Skill

Capability Module(能力模块)

Capability Graph(能力图谱)

Capability System(能力系统)

这个差异看起来有点抽象,但落到使用体验上其实很直观。

在 Skill Collection(技能集合)里,用户要自己面对很多能力:

api-design
db-design
testing
event-design
security-review

在 Capability System(能力系统)里,用户可能只需要面对一个顶层能力:

backend-engineering-system

内部的 api-design、db-design、testing、event-design 仍然存在,但它们不一定都要暴露给用户。它们可以作为内部能力,被入口能力或协调能力调用。

可以画成这样:

这也是我觉得 Skill 编组最有意思的地方:

它不是让 Prompt 更复杂,而是让能力开始有架构。


Entry Skill(入口技能)、Internal Skill(内部技能)、Coordinator Skill(协调技能)

如果把 Skill 看成能力系统的一部分,它就不应该全部平级。

我现在会粗略分成三类。

1. Entry Skill(入口技能):入口能力

Entry Skill(入口技能)是用户真正应该接触的能力。

它的职责不是解决所有细节,而是把用户的自然语言需求转成系统内部可执行的动作链。

比如:

  • feature-dev:我想开发一个功能;
  • backend-engineering:我想完成一类后端工程任务;
  • internal-article-workflow:我想写一篇内部分享文章。

用户不需要知道内部到底有多少个节点。入口能力应该把复杂性藏起来。

2. Internal Skill(内部技能):内部能力

Internal Skill(内部技能)负责一个更窄、更清晰的子问题。

它可以很专业,但不一定适合直接暴露给用户。

比如:

  • API 设计;
  • 数据建模;
  • 元数据校验;
  • catalog 一致性检查;
  • 某个特定文档格式转换。

这类能力很重要,但如果全部直接暴露出来,用户会被迫理解系统内部结构。

3. Coordinator Skill(协调技能):协调能力

Coordinator Skill(协调技能)更特殊。

它不一定直接完成业务任务,而是负责:

  • 分发;
  • 调度;
  • 聚合;
  • 关系分析;
  • 影响分析;
  • 生成组级报告。

skill-squadron 就是这种能力。

它不负责写一个具体 Skill,也不负责完成某个业务需求。它负责看一组 Skill 之间的关系,判断它们应该如何巡逻、如何优化、改一个会影响谁。

一旦出现 Coordinator Skill(协调技能),Skill 就不再天然平级。

它开始有了系统结构。

这也是我觉得当前很多 Skill 讨论还没完全展开的地方:大家会讨论"怎么写一个好 Skill",但较少讨论"Skill 在系统里扮演什么角色"。


Semantic Invocation(语义调用)还不够,必须有 Explicit Governance Graph(显式治理图谱)

这里还有一个关键问题:Skill 之间的关系应该怎么表达?

最自然的方式当然是自然语言。

比如在一个 Skill 里写:

当需要 API 设计时,调用 api-design skill。

对 AI 来说,这很容易理解。

我把这种方式称为 Semantic Invocation(语义调用)。它不像传统编程语言里的 import,也没有编译器检查,但对大模型来说非常自然。

问题是,只靠自然语言很难支撑大规模系统。

当 Skill 数量变多以后,纯语义引用会带来几个问题:

  • 依赖关系藏在正文里,不好找;
  • 谁调用谁不清楚;
  • 两个 Skill 互相引用,可能形成循环;
  • 某个 Skill 被改名了,引用可能悄悄失效;
  • 一个 Skill 的职责变化了,其他 Skill 不一定知道。

所以我现在越来越觉得,AI 原生的模块系统不会完全复制传统代码里的 import,但也不能停留在"名字提到了就算依赖"。

它需要语义,也需要治理。

在我自己的实践里,除了在自然语言里写触发和协作方式,还会在治理清单里显式登记关系。比如一个很简化的例子:

relations:
  - target: skill-scout
    type: complements
  - target: verification-curator
    type: shares_data

这类关系不是给用户看的,而是给系统治理看的。它可以帮助回答:这个 Skill 和谁互补、它调用谁、谁调用它、它和谁共享数据、哪些节点是孤立的、哪些关系已经悬空。

所以我更愿意把这个模式描述成:

Semantic Invocation(语义调用) + Explicit Governance Graph(显式治理图谱)

自然语言负责触发和理解。

显式关系负责治理和检查。

步骤链负责执行。

巡逻和验证负责演化。

这比单纯的"Semantic Import"更稳一点。


skill-scout 和 skill-squadron 是我的一个早期答案

回到 skill-scoutskill-squadron

如果只看表面,它们像两个工具:

  • skill-scout:帮我找 Skill、评估 Skill、改造成自己的 Skill;
  • skill-squadron:帮我分析一组 Skill 的关系,做编队巡逻。

但现在我更愿意把它们看成一个早期的能力治理闭环。

skill-scout 解决的是:

能力从哪里来,怎么进入本地体系?

它的流程大概是:

parse → search → evaluate → adapt → register

也就是先理解需求,再搜索外部能力,再评估是否适合,再做私域化改造,最后登记到本地能力体系里。

skill-squadron 解决的是:

能力进入体系以后,如何一起维护?

它的流程大概是:

graph → group → patrol → impact → report

也就是先构建关系图,再按关联关系分组,再逐组巡逻,再做跨 Skill 影响分析,最后输出编队报告。

如果把两者连起来,大概是这样:

这套东西当然还很早期。

但它的方向不是"生成更多 Skill",而是"让 Skill 可以被治理"。

这里的治理不是大词,具体就是:

  • 它有没有登记?
  • 它和谁有关?
  • 它是不是用户入口?
  • 它是不是内部节点?
  • 它有没有和说明文档漂移?
  • 它的修改会不会影响其他 Skill?
  • 它过期以后应该单独废弃,还是影响一整组?

这就是我觉得 skill-scoutskill-squadron 比较有意思的地方。

它们看起来是两个 Skill,但实际上是在回答 Skill 规模化以后的治理问题。


为什么这个方向现在还没有成为主流

如果这个方向有价值,为什么现在还没有明显成为主流?

我觉得有几个原因。

首先,大多数人还没真的被这个问题打疼。

如果你只有 5 个 Skill,根本不需要什么 Capability Architecture(能力架构)。一个 README、一个目录、几个触发词,就够用了。

只有当 Skill 数量上来以后,你才会开始关心:

  • 谁和谁重复;
  • 谁依赖谁;
  • 谁该先运行;
  • 谁不该暴露;
  • 谁已经过期;
  • 谁的改动会影响一组能力。

其次,市场天然更容易传播单个 Skill,而不是一套架构。

"SQL Review Skill"很好理解。

"Backend Engineering Capability System(后端工程能力系统)"就没那么好理解。

前者像一个工具,下载就能试。

后者像一套方法,需要解释入口、内部节点、关系、版本、巡逻、影响分析。教育成本明显更高。

第三,平台通常会先解决分发,再解决治理。

很多技术生态都是这样。

早期大家先分享脚本、插件、模板、扩展。等数量多了以后,才会慢慢出现包管理、依赖约束、版本协议、兼容性规则、可视化管理。

Skill 生态现在可能也处在这个阶段。

大家正在解决:

哪里找 Skill?
怎么装 Skill?
哪些 Skill 好用?

但还没大规模进入:

一组 Skill 怎么组成系统?
系统怎么升级?
改动怎么评估影响?
能力之间怎么声明关系?

第四,复杂编组会放大模型不稳定性。

单个 Skill 出错,定位还比较容易。

一组 Skill 协同出错,就会复杂很多:

  • 是入口没判断对?
  • 是内部 Skill 没触发?
  • 是协调 Skill 分发错了?
  • 是某个关系声明过期了?
  • 是上下文加载太多互相干扰?

所以在模型能力和平台运行时还不够稳定的时候,大家自然更倾向于保持 Skill 独立、简单、无状态。

这不是保守,而是可靠性选择。

所以我不认为"还没成为主流"说明这个方向没价值。

更可能是:

大多数人还在 Collection 阶段,没有被 System 阶段的问题真正打疼。


我自己的方案也远没成熟

当然,我也不想把自己的实践说得太满。

我现在做的这套东西,更像早期原型,而不是成熟产品。

它已经考虑到一些问题:用显式关系图管理关系,用分组巡逻观察组级状态,用影响分析判断改动影响面,用分发范围区分用户入口和内部节点,用 metadata(元数据)校验减少说明文档和治理清单漂移。

但它还缺很多东西。

比如,还没有标准化的 capability-bundle.yaml(能力包清单)。

如果我要把一组 Skill 作为一个能力包发布,现在还没有一个稳定格式能声明:

  • 入口是谁;
  • 内部节点有哪些;
  • 协调节点有哪些;
  • 依赖版本是什么;
  • 哪些能力对用户可见;
  • 哪些能力只是内部实现;
  • 升级时如何判断兼容性。

也没有真正的 semver(语义化版本)、兼容矩阵和回滚协议。

传统软件包可以说 1.2.0 兼容 1.x,但 Skill 的兼容性更复杂。因为它不只是函数签名,还包括行为、语气、步骤、输出结构、触发条件。

也没有完整的 Skill Trace(技能调用轨迹)。

也就是说,当一次任务执行完以后,我还不能稳定地回答:

  • 这次为什么命中了这个 Skill?
  • 为什么没有命中另一个 Skill?
  • 哪个 Skill 委托了哪个 Skill?
  • 哪一步失败了?
  • 哪一步被跳过了?

这类 trace(调用轨迹)对调试能力系统非常重要。

另外,也还没有图形化关系视图。

现在关系图可以被构建、被报告,但还没有一个足够直观的 Graph View(图谱视图) / Tree View(树视图)。规模到几十个以后,仅靠 Markdown 和 YAML 还是会吃力。

还有一个更底层的问题:很多接口仍然是 AI 审查协议,不是机器强 schema。

也就是说,系统会要求 AI 判断"接口是否兼容""数据流是否变化""行为是否 breaking"。这比完全没有检查好很多,但还不是编译器级别的强约束。

所以我现在更愿意把它称为:

一个关于 Skill 系统化组织的早期实验。

而不是一个已经成熟的产品答案。


我期待的下一步:Capability Architecture(能力架构)

如果继续往前想,我觉得 Skill 生态迟早会需要一种类似 Capability Architecture(能力架构)的东西。

名字不一定叫这个。

它可能出现在 IDE 里,可能出现在 Agent 平台里,可能出现在 Skill Marketplace(技能市场)里,也可能先以某种开源约定出现。

但它大概率需要回答几个问题。

1. Capability Bundle(能力包)

一组 Skill 应该可以作为一个能力包发布,而不是永远以单个 Skill 分发。

比如:

backend-engineering-system
frontend-delivery-system
product-research-system
internal-writing-system

这些能力包内部可以有多个 Skill,但用户主要看到入口能力。

2. Entry / Internal / Coordinator

能力系统内部应该有角色分层。

不是所有 Skill 都应该平级,也不是所有 Skill 都应该直接给用户调用。

至少应该能区分:

  • Entry:用户入口;
  • Internal:内部能力;
  • Coordinator:协调能力。

3. Relation Graph(关系图谱)

能力之间的关系应该可以显式声明。

比如:

  • calls;
  • called_by;
  • complements;
  • shares_data;
  • precedes;
  • conflicts_with。

这些关系不一定完全像代码依赖,但应该能被检查、可视化和巡逻。

4. Impact Analysis(影响分析)

改一个 Skill 前,应该能看到影响面。

它会影响哪些入口能力?

会影响哪些内部节点?

会不会破坏已有输出结构?

会不会改变触发条件?

会不会让另一个 Skill 的说明失效?

5. Skill Trace(技能调用轨迹)

一次任务中,系统应该能记录:

  • 命中了哪个 Skill;
  • 为什么命中;
  • 跳过了哪个 Skill;
  • 为什么跳过;
  • 谁委托了谁;
  • 哪一步失败;
  • 最后输出来自哪些能力。

没有 trace,复杂能力系统很难调试。

6. Graph View(图谱视图)

最后,人也需要看得懂。

如果能力系统越来越复杂,光靠目录和 Markdown 不够。需要图谱视图、树视图、关系过滤、影响面查看。

一个非常粗糙的能力包 manifest(清单)可能长这样:

capability_bundle:
  name: backend-engineering-system
  entry: feature-dev
  internal:
    - api-design
    - db-design
    - testing
  coordinators:
    - delivery-orchestrator
  relations:
    - source: feature-dev
      target: api-design
      type: calls
    - source: feature-dev
      target: testing
      type: calls

这不是标准,只是一个想象。

但我相信,随着 Skill 数量增长,类似这样的组织语言迟早会变得重要。因为到那时,大家需要的不只是"能装什么 Skill",还会是"这些 Skill 如何形成一个可靠的能力系统"。


我想把问题抛给社区

所以这篇文章并不是要给一个确定答案。

我更想提出一个问题:

Skill 的下一步,是不是会从"更多可安装能力",走向"更可治理的能力系统"?

我不确定 Skill 编组最后会不会叫 Capability Architecture(能力架构)。

也不确定它会出现在 IDE、Agent 平台、Skill Marketplace(技能市场),还是某种新的包管理器里。

但我越来越确定:当 Skill 足够多以后,只讨论单个 Skill 写得好不好是不够的。

真正的问题会变成:

  • 这些能力之间是什么关系?
  • 谁是入口?
  • 谁是内部节点?
  • 谁负责协调?
  • 改一个会影响谁?
  • 一组能力如何一起升级?
  • 用户到底应该看到多少复杂性?

这也是我几个月后又想聊 skill-scoutskill-squadron 的原因。

我最初以为它们只是两个工具:一个负责找 Skill,一个负责管 Skill。

现在再看,它们更像是在试探一个方向:

Skill 能不能从 Prompt 集合,演化成 AI Native(AI 原生)的能力架构?

如果你也在用 Skills、Rules、Instructions 或者类似机制,我也很想知道:

  • 你现在的 Skill 是一个列表,还是已经有分层?
  • 你遇到过 Skill 之间互相覆盖、重复、冲突的问题吗?
  • 如果有一个 Capability Bundle(能力包),你希望它至少声明哪些信息?
  • 你更希望平台提供这套能力,还是项目自己治理?

也许现在讨论这个问题还有点早。

但很多架构问题,都是在规模真正压上来之前,先从少数人的"不舒服"里长出来的。

Skill 的下一步,也许不是写出更多 Prompt,而是学会像软件一样组织能力。


相关资源

Comments