Claude Code 渐进式披露(Progressive Disclosure)


0. 定位声明

适用版本:Claude Code(Agent Skills 功能,2025 年 10 月 16 日正式发布)
前置知识:
  - 理解 LLM 上下文窗口(Context Window)的基本概念
  - 了解 Claude Code 的基本使用方式(会写 CLAUDE.md 或使用 /plugin 命令)
  - 对 YAML 语法有基础认知

不适用范围:
  - 不覆盖 Claude API 的 Prompt Caching 机制(两者均属于上下文优化,但实现层不同)
  - 不适用于 MCP(Model Context Protocol)服务端的工具注册机制(虽理念相通,但实现独立)
  - 不覆盖 Claude.ai 网页端的对话管理

1. 一句话本质

给完全不懂 AI 的人的解释:

想象你雇了 100 位顾问,每人都带着一箱资料进会议室。传统做法是让所有人把资料全倒在桌上——桌子会被压垮。渐进式披露是:先让每人只亮出一张名片,你需要哪位顾问的详细资料,再让他打开箱子。

技术本质(三句话):

  1. 是什么:渐进式披露是 Claude Code Agent Skills 系统中的一种上下文加载策略,将技能(Skill)的可发现性元数据与完整执行指令分层存储,按需加载。
  2. 解决什么问题:解决"技能数量 × 完整指令体积"所造成的上下文窗口溢出问题——100 个技能若全量加载需约 500,000 tokens,超出 Claude 的上下文限制。
  3. 怎么用:通过在 SKILL.md 文件中分离 YAML Frontmatter(元数据层)和 Markdown 正文(指令层),加上外部资源文件(资源层),构成三层按需加载架构。

2. 背景与根本矛盾

历史背景

2025 年 10 月 16 日,Anthropic 正式发布 Agent Skills 系统,使 Claude Code 具备了可组合、可扩展的专项能力模块。然而这一功能的核心工程挑战早于发布日期就已被社区开发者预见:技能越多,AI 越笨——这是所有"工具丰富型 Agent"都会遭遇的上下文污染问题。

在 Agent Skills 发布前,社区开发者(如 Daniel Miessler 的 Kai 项目)已在用 Hooks 机制手工实现"按需注入上下文"的模式,与 Anthropic 内部的设计方向不谋而合。

根本矛盾(Trade-off)

可发现性(Discoverability)        vs.    上下文效率(Context Efficiency)
越多的技能描述 → Claude 越聪明           越多 tokens 加载 → 响应越慢/溢出
极端选项 A 极端选项 B
全量加载所有技能指令 不加载任何技能描述
Claude 知道所有工具,选择最优 Claude 无从得知技能存在
100 技能 × 5000 tokens = 500K tokens(上下文溢出) 0 tokens(能力为零)

渐进式披露是这两个极端之间的帕累托最优解:以 ~100 tokens 的元数据成本换取对 1000+ 技能的可发现性,仅在决策发生后才加载完整指令。


3. 核心概念与领域模型

关键术语表

术语 费曼式定义 正式定义
Skill(技能) 一个装着说明书和工具的文件夹,告诉 Claude 如何完成某类特定任务 包含 SKILL.md 及可选脚本/资源的目录单元,通过 Prompt Expansion 方式扩展 Claude 能力
Skill Tool(技能工具) Claude 工具箱里的"导航仪",告诉 Claude 现在有哪些技能可用 一个特殊的元工具(Meta-tool),其 description 字段在运行时动态聚合所有可用技能的名称与描述
Frontmatter(前置元数据) 技能名片:名字 + 一句话介绍 + 权限声明 SKILL.md 头部的 YAML 块,包含 namedescriptionallowed-toolsversion 等字段
SKILL.md 正文 技能的完整说明书,详细告知 Claude 该如何行动 技能被激活后注入对话上下文的 Markdown 指令文本(通常 3,000–5,000 字)
资源文件(Resources) 技能需要时才取出来的工具箱(脚本、模板、参考文档) 存放于 /scripts/references/assets 目录下,按需加载的辅助文件
CLAUDE.md 整个项目的"地图入口",告诉 Claude 该项目有什么值得关注的 项目级别的渐进式披露入口文件,提供代码库高层摘要并指向相关技能或文档目录
上下文窗口(Context Window) Claude 的"工作记忆",同一时刻能看到的信息总量 LLM 单次推理可处理的最大 token 数,Claude 3.5/3.7 系列约为 200K tokens

领域模型

┌────────────────────────────────────────────────────────────────┐
│                    Claude 的上下文窗口                           │
│                                                                  │
│  ┌─────────────────────────────┐  ┌────────────────────────┐   │
│  │      Skill Tool(元工具)    │  │    对话历史 + 用户请求  │   │
│  │                             │  └────────────────────────┘   │
│  │  "pdf": 创建和处理 PDF...   │                                │
│  │  "docx": 创建 Word 文档...  │  ← Phase 1:仅元数据           │
│  │  "pptx": 制作演示文稿...    │    (~100 tokens 扫描所有技能) │
│  │  ... (N 个技能的名片)       │                                │
│  └──────────────┬──────────────┘                                │
│                 │ Claude 决策:任务需要 "pptx" 技能              │
│                 ▼                                                │
│  ┌─────────────────────────────┐                                │
│  │    SKILL.md 完整指令注入    │  ← Phase 2:完整指令            │
│  │    (约 3,000–5,000 tokens) │    (仅加载被激活的技能)       │
│  └──────────────┬──────────────┘                                │
│                 │ 执行中需要外部脚本                             │
│                 ▼                                                │
│  ┌─────────────────────────────┐                                │
│  │    /scripts/render.py 等    │  ← Phase 3:按需加载资源        │
│  │    /references/spec.md 等   │    (仅在执行中实际需要时)     │
│  └─────────────────────────────┘                                │
└────────────────────────────────────────────────────────────────┘

核心实体关系:

Project(项目)
  └── CLAUDE.md  ←──── 渐进式披露的项目入口(Layer 0)
  └── .claude/
        └── skills/
              └── my-skill/
                    ├── SKILL.md        ←── Layer 1(Frontmatter)+ Layer 2(正文)
                    ├── scripts/
                    │     └── *.py      ←── Layer 3(可执行资源)
                    ├── references/
                    │     └── *.md      ←── Layer 3(参考文档)
                    └── assets/
                          └── *         ←── Layer 3(静态资源)

技能发现路径(扫描优先级):

  1. ~/.config/claude/skills/(用户全局技能)
  2. .claude/skills/(项目级技能)
  3. Plugin 提供的技能
  4. Claude Code 内置技能

4. 对比与选型决策

上下文管理策略横向对比

策略 扫描开销 激活精确度 扩展上限 适用场景
渐进式披露(Skills) ~100 tokens/全量扫描 LLM 语义推理(无确定性保证) 理论 1000+ 技能 通用型多技能场景
全量预加载 N × 5000 tokens 100%(全部可用) ~10–20 技能(受上下文限制) 技能数量少且高频使用
CLAUDE.md 手动索引 按文件大小(可控) 依赖 Claude 阅读遵循率 无理论上限 项目特定知识,需精确控制
MCP 工具注册 固定的工具描述 tokens 算法路由(确定性) 受工具描述总长限制 需要结构化 API 调用的能力

选型决策树

你的能力扩展需求是什么?
│
├─ 需要 Claude 执行确定性操作(调用 API、写文件)
│   └── → 使用 MCP 工具注册
│
├─ 需要跨项目可复用的专项知识/工作流
│   ├─ 技能数量 < 5 且每次几乎都用
│   │   └── → 直接写入 CLAUDE.md(无需 Skills 开销)
│   └─ 技能数量 > 5 或使用频率不确定
│       └── → 使用 Agent Skills + 渐进式披露
│
└─ 需要项目特定的上下文(框架版本、团队规范、已知坑)
    └── → CLAUDE.md + 指向具体文档的 IMPORTANT 指令

⚠️ 关键选型警告

Vercel 的 Agent Evals 测试发现:在 56% 的测试用例中,技能从未被激活,在无显式指令的情况下,技能效果与基准线无差异。这意味着渐进式披露依赖 LLM 的语义匹配,不能提供确定性保证。对于业务关键路径,应优先考虑 CLAUDE.md 显式指令或 MCP 工具。


5. 工作原理与实现机制

静态结构

SKILL.md 文件结构(二段式)
---
# ── Frontmatter(配置层,控制 HOW)──────────────────────────
name: my-skill                    # 必填:技能唯一标识符
description: >                    # 必填:Claude 决策依据,越清晰越好
  当用户需要做 X 时使用此技能。
  适用场景:A、B、C。
version: 1.0.0                    # 可选
license: MIT                      # 可选
allowed-tools: "Bash, Read, Write" # 可选:沙箱内允许的工具
model: claude-opus-4              # 可选:覆盖默认模型
---

# ── Markdown 正文(指令层,控制 WHAT)───────────────────────

## 目的
[说明技能解决什么问题]

## 执行步骤
[详细的、按顺序的操作指南]

## 质量标准
[输出应满足的条件]

## 参考资源
[如需深度上下文,引用 ./references/ 下的文件]

为什么选择这种数据结构?

  • YAML Frontmatter:机器可解析,支持结构化提取,仅需加载头部即可获取元数据,无需解析全文
  • Markdown 正文:Claude 在预训练数据中大量接触 Markdown,对其有最佳的语义理解,格式化开销最低
  • 文件系统目录:利用操作系统原生的文件索引能力,无需额外数据库或注册表
Skill Tool 的动态描述生成(关键设计)
// 伪代码:Skill Tool 的 description 字段在运行时动态构建
function buildSkillToolDescription(availableSkills) {
  const skillList = availableSkills.map(skill =>
    `"${skill.name}": ${skill.description}`
  ).join('\n');

  return `Use a skill to complete specialized tasks.\nAvailable skills:\n${skillList}`;
}

// Skill Tool 在 Claude 的工具列表中的呈现
{
  type: "prompt",
  name: "Skill",
  description: buildSkillToolDescription(loadedSkills)  // 动态生成!
}

这与 ReadBash 等静态工具的本质区别在于:Skill Tool 的 description 字段是运行时动态聚合的,而非固定字符串。这是渐进式披露的入口机制。

动态行为:三阶段加载时序

用户请求                    Claude Code 运行时               Claude LLM
    │                              │                              │
    │  发送请求                    │                              │
    ├─────────────────────────────►│                              │
    │                              │                              │
    │              Phase 1: 元数据扫描(~100 tokens)             │
    │                              │  扫描所有 SKILL.md Frontmatter│
    │                              ├──────────────────────────────►│
    │                              │  注入:Skill Tool(含所有技能名片)
    │                              │◄──────────────────────────────┤
    │                              │                              │
    │                              │  Claude 决策:需要哪个技能?  │
    │                              │◄─────────────────────────────►│
    │                              │  tool_use: Skill("my-skill") │
    │                              │◄──────────────────────────────┤
    │                              │                              │
    │              Phase 2: 完整指令加载(<5k tokens)            │
    │                              │  读取 SKILL.md 完整正文       │
    │                              ├──────────────────────────────►│
    │                              │  注入:技能指令作为 user 消息  │
    │                              │◄──────────────────────────────┤
    │                              │                              │
    │              Phase 3: 按需加载资源(可选)                   │
    │                              │  执行中需要 scripts/render.py │
    │                              ├──────────────────────────────►│
    │                              │  文件内容注入上下文           │
    │                              │◄──────────────────────────────┤
    │                              │                              │
    │                              │  Claude 执行任务并返回结果    │
    │◄─────────────────────────────┤◄──────────────────────────────┤

关键实现细节:技能被激活后,其 SKILL.md 正文以 user 消息的形式注入对话上下文(而非 system prompt),这使得技能指令能在对话中按需追加,而无需修改系统级配置。这是"Prompt Expansion"而非"Function Calling"——技能准备 Claude,而非直接执行动作。

关键设计决策分析

决策 1:用 LLM 语义匹配替代算法路由

  • 实际选择:技能选择完全依赖 Claude 的 LLM 推理,没有嵌入向量、分类器或正则匹配
  • 为什么这样设计:算法路由需要预定义意图分类,扩展成本高;LLM 能理解自然语言描述中的语义,支持模糊匹配和上下文感知
  • Trade-off:获得了灵活性和零维护的意图识别,付出了确定性保证(56% 的测试中技能未被激活)

决策 2:技能描述写入 Skill Tool 的 description 而非 system prompt

  • 实际选择:所有技能元数据聚合到 Skill Tool 的 description 字段,而非散布在 system prompt 中
  • 为什么这样设计:这样 Skill Tool 成为单一的发现入口,运行时可动态修改,与其他工具(Read/Bash)在结构上保持一致
  • Trade-off:统一了工具访问模式,但使 Skill Tool 的 description 长度与技能数量线性相关

决策 3:文件系统作为技能注册表

  • 实际选择:技能通过文件系统目录被发现,而非中央注册服务
  • 为什么这样设计:无服务端依赖,离线可用,git 版本控制天然适配,符合"配置即代码"的工程文化
  • Trade-off:获得了简洁性和可移植性,付出了全局搜索和去重的能力(不同路径下同名技能需人工管理)

6. 高可靠性保障

技能激活可靠性问题

渐进式披露的可靠性瓶颈集中在 Phase 1 → Phase 2 的转换率(即技能是否被正确激活)。

影响激活率的因素:

  • description 字段的清晰度和触发关键词覆盖
  • 用户请求的措辞方式(与 description 语义距离)
  • 当前上下文中的干扰信号
  • Claude 版本差异(不同版本的意图识别精度不同)

可观测性指标:

指标 含义 正常范围 告警阈值
技能激活率 相关任务中技能被调用的比例 44%–80%(依赖 description 质量) < 30% 需优化 description
Phase 2 加载延迟 从技能被选中到指令注入完成的耗时 0.5–2 秒 > 5 秒需检查文件大小
上下文窗口使用率 技能加载后的 token 消耗比例 < 30%(3–5 个活跃技能时) > 70% 需拆分技能
SKILL.md 文件大小 单个技能指令文本体积 2,000–5,000 tokens > 8,000 tokens 需重构

容灾策略

技能未激活的降级方案:

# CLAUDE.md 中的显式备用指令
IMPORTANT: 处理 PDF 相关任务时,首先读取 .claude/skills/pdf/SKILL.md

通过 CLAUDE.md 的 IMPORTANT 指令,可为关键技能提供显式触发备用路径,弥补语义匹配的不确定性。


7. 使用实践与故障手册

7.1 生产级 SKILL.md 配置示例

版本环境:Claude Code(2025 年 10 月发布,agent skills 功能)

---
name: api-doc-generator
description: >
  当用户需要为 REST API 接口生成 OpenAPI 规范文档、Markdown 接口文档
  或 API 测试用例时,使用此技能。适用场景:新增接口文档、存量接口补全、
  接口变更同步文档。
version: 1.2.0
license: MIT
allowed-tools: "Read, Write, Bash"
# 不指定 model 字段,继承全局配置(推荐做法,避免版本硬编码)
---

## 目的

为代码库中的 REST API 接口自动生成标准化文档。

## 执行步骤

### 第一步:理解接口
1. 读取用户指定的控制器/路由文件
2. 识别 HTTP 方法、路径参数、请求体、响应结构

### 第二步:生成文档(选择格式)
- OpenAPI 3.0:使用 `./references/openapi-template.yaml` 作为模板
- Markdown:按照 `./references/api-doc-standard.md` 中的规范

### 第三步:验证
- 检查所有必填字段是否覆盖
- 确认示例请求/响应的数据类型正确

## 输出规范
- 文件命名:`{模块名}-api.{格式后缀}`
- 存放路径:`docs/api/`
- 版本注释:在文件头部注明生成时间和对应代码提交哈希

关键配置项说明:

字段 作用 默认值风险
description Claude 激活决策的唯一依据 模糊描述导致激活率 < 30%
allowed-tools 限制技能沙箱内可用工具 不设置则继承全局工具权限(安全风险)
model 覆盖任务使用的模型 不设置则用全局默认(推荐不设置)
version 技能版本追踪 无默认值,不设置则无法溯源变更

7.2 故障模式手册


【故障 1:技能从不激活】

  • 现象:明显应该触发技能的任务,Claude 直接回答而不调用 Skill Tool
  • 根本原因:description 字段与用户自然语言表达的语义距离过远,或 description 过于简短、缺乏触发关键词
  • 预防措施:在 description 中列举 3–5 个典型触发场景,使用"当用户需要…"的句式,覆盖不同措辞变体
  • 应急处理:在 CLAUDE.md 中添加 IMPORTANT: 处理 [场景] 时,请先读取 .claude/skills/[技能名]/SKILL.md

【故障 2:Phase 3 资源加载失败】

  • 现象:技能被激活,但执行到需要脚本时报错"文件不存在"
  • 根本原因:SKILL.md 正文中引用了相对路径,但 Claude 的工作目录与预期不符;或资源文件未随技能一起提交到版本库
  • 预防措施:资源引用统一使用技能根目录的相对路径(如 ./scripts/render.py),并在 CI 中验证文件完整性
  • 应急处理:在技能指令中提供内联的简化版备用逻辑,避免硬依赖外部文件

【故障 3:上下文窗口因多技能激活而溢出】

  • 现象:多个相关技能同时被激活,导致可用于任务执行的 tokens 严重不足,输出被截断
  • 根本原因:技能设计粒度过粗,单个技能 SKILL.md > 8,000 tokens,且多个技能的触发条件存在重叠
  • 预防措施:单个 SKILL.md 控制在 5,000 tokens 以内;通过 description 明确区分各技能的触发边界;将通用指令抽取到 CLAUDE.md
  • 应急处理:临时将 CLAUDE.md 中的全局指令精简,为活跃技能释放上下文空间

【故障 4:when_to_use 字段行为异常】

  • 现象:设置了 when_to_use 字段,但行为与预期不一致
  • 根本原因when_to_use 字段在官方文档中未正式记录,属于未稳定 API(⚠️ 存疑),可能随版本变更
  • 预防措施:将触发条件统一写在 description 字段中,不使用 when_to_use
  • 应急处理:将 when_to_use 内容迁移合并入 description

【故障 5:技能在 CI/CD 环境中不可用】

  • 现象:本地开发时技能正常激活,但在 CI 环境的 Claude Code 实例中技能不存在
  • 根本原因:技能存放在 ~/.config/claude/skills/(用户全局路径)而非项目目录 .claude/skills/
  • 预防措施:生产和协作场景的技能统一使用项目级路径 .claude/skills/,并提交到代码仓库
  • 应急处理:将技能目录从全局路径软链或复制到项目路径

7.3 边界条件与局限性

  1. 语义激活无确定性保证:在 Vercel 的评测中,56% 的测试用例中技能从未被激活;对于业务关键路径,不应依赖自动激活
  2. 技能数量与扫描质量的权衡:超过 ~50 个技能时,Skill Tool 的 description 字段可能超过 5,000 tokens,开始影响 Claude 的意图识别精度(⚠️ 存疑,缺乏公开测试数据)
  3. 并发不安全:Skills 系统当前不支持并发调用,多个技能的 context 注入存在竞态风险
  4. context:fork 隔离开销:使用 context:fork 在独立上下文中运行技能可避免污染主对话,但引入额外的 token 开销
  5. 技能更新对运行中会话无效:修改 SKILL.md 后,需要开启新会话才能生效;长会话中的技能版本存在漂移风险

8. 性能调优指南

性能瓶颈识别

渐进式披露的性能瓶颈通常在以下层次之一:

Layer 0(CLAUDE.md): 文件过大 → 每次会话启动消耗过多 tokens
Layer 1(Frontmatter 扫描): 技能数量过多 → Skill Tool description 膨胀
Layer 2(SKILL.md 加载): 单文件过大 → 激活单技能消耗过多 tokens
Layer 3(资源加载): 资源文件过大/过多 → 执行阶段 context 溢出

调优步骤(按优先级)

Step 1:控制 CLAUDE.md 体积(优先级最高,每次会话必须加载)

  • 目标:≤ 60 行 / ≤ 2,000 tokens
  • 验证方法:wc -l CLAUDE.md;使用 token 计数工具估算
  • 方法:将详细规范移入 SKILL.md 或 ./docs/,CLAUDE.md 只保留索引和 IMPORTANT 指令

Step 2:优化 description 字段(影响激活率和扫描效率)

  • 目标:description 在 50–200 字内精确覆盖触发场景
  • 验证方法:用 5–10 个代表性请求测试激活率,应 ≥ 70%
  • 方法:使用"当用户需要…时,使用此技能"句式;列举 3 个不同措辞的触发场景

Step 3:拆分大型技能(>5,000 tokens 的 SKILL.md)

  • 目标:单个 SKILL.md 正文 ≤ 5,000 tokens,通用内容迁移至资源文件(Phase 3 按需加载)
  • 验证方法:激活技能后,检查剩余可用 context 是否 ≥ 50%
  • 方法:将大型参考文档移入 ./references/,在 SKILL.md 中用"如需详情请读取 ./references/xxx.md"引用

调优参数速查表

优化项 推荐值 警戒值 调整风险
CLAUDE.md 行数 ≤ 60 行 > 100 行 减少内容需确保关键指令不丢失
单个 SKILL.md 大小 2,000–5,000 tokens > 8,000 tokens 拆分需重新测试激活覆盖率
项目级技能数量 ≤ 20 个 > 50 个(⚠️ 存疑) 增加技能数需监控激活精度
用户全局技能数量 ≤ 30 个 > 100 个 过多可能导致 Skill Tool description 溢出
单次资源文件大小 ≤ 10,000 tokens > 30,000 tokens 超大文件考虑分段加载或外部检索

9. 演进方向与未来趋势

方向 1:结构化技能路由(确定性激活)

当前基于 LLM 语义推理的激活机制存在不确定性,社区和 Anthropic 均在探索更精确的路由方案。潜在方向包括:引入 when_to_use 字段的正式标准化(目前属于未文档化特性),以及基于嵌入向量的语义相似度预过滤(Phase 0.5)——在 LLM 决策前先用轻量模型缩小候选集。

对使用者的影响:若确定性路由成熟,技能激活率将从 44%–80% 提升至 90%+,可将渐进式披露应用于更多业务关键场景。

方向 2:技能组合与依赖图(Skills Composition)

目前技能之间相互独立,但社区已出现技能组合模式(主技能声明依赖子技能)。Anthropic 的 skill-creator 技能中已包含对技能间关系的指导,预示官方可能引入正式的依赖声明语法。

对使用者的影响:复杂工作流(如"生成文档 → 翻译 → 发布")将可封装为有依赖关系的技能链,进一步减少手工协调成本。


10. 面试高频题

【基础理解层】(考察概念掌握)

Q:什么是 Claude Code 的渐进式披露?为什么需要它?

A:渐进式披露是 Agent Skills 系统中的上下文分层加载策略。技能信息被分为三层:Frontmatter 元数据(约 100 tokens 扫描所有技能)、SKILL.md 完整指令(约 3,000–5,000 tokens,仅在技能被激活时加载)、外部资源文件(按需加载)。需要它是因为:若 100 个技能的完整指令全量加载,需 500,000 tokens,超出上下文窗口容量,系统无法运行。渐进式披露将固定扫描开销降至约 100 tokens,实现 96.3% 的 token 节省。

考察意图:验证候选人对 LLM 上下文窗口约束的理解,以及对"按需加载"设计模式的认知。


【原理深挖层】(考察内部机制理解)

Q:Skill Tool 的 description 字段为什么是动态生成的,而不是静态字符串?这背后的设计意图是什么?

A:Skill Tool 的 description 在运行时通过遍历所有已加载技能的 Frontmatter 动态拼接生成。这样做有两个关键意图:第一,实现"元数据-指令"解耦——Claude 在工具列表中只看到技能名片(元数据),指令内容不进入初始上下文,直到技能被显式激活;第二,支持运行时技能注册——新增技能无需修改任何硬编码配置,文件系统扫描后自动进入可发现集合。本质上,这是一个把"工具列表"变成"技能市场"的设计——Skill Tool 不是一个工具,而是所有技能的统一入口。

考察意图:考察候选人对"元工具"(Meta-tool)设计模式的理解,以及对运行时动态配置的工程直觉。


【生产实战层】(考察工程经验)

Q:你在生产项目中使用 Claude Code Skills 时发现技能激活率很低(约 30%),如何系统地诊断和优化?

A:分三步走:

  1. 诊断:收集 10–20 个"理应触发"该技能的真实请求,统计实际激活次数,确认问题规模。用不同措辞重述相同请求,观察哪些表达能触发激活,找出语义距离。
  2. 优化 description:将测试中成功触发的表达归纳成关键词,重写 description,明确列举触发场景(“当用户需要A/B/C时”),覆盖多种自然语言变体;将触发条件也作为 description 的一部分,而非使用未文档化的 when_to_use 字段。
  3. 兜底策略:对业务关键路径,在 CLAUDE.md 中添加 IMPORTANT 指令显式指向技能文件,绕过 LLM 语义匹配,提供确定性触发路径。同时接受语义激活的概率性本质,对激活率要求 > 90% 的场景改用 MCP 工具而非 Skills。

考察意图:考察候选人在真实工程约束下(LLM 不确定性)的问题诊断能力,以及在"理想方案"失效时的降级思维。


11. 文档元信息

验证声明

本文档内容经过以下验证:
✅ 三阶段加载机制、Skill Tool 动态描述:
   参考 leehanchung.github.io 对 Claude Code 源码的逆向分析(2025-10-26)
✅ 性能数据(96.3% token 节省、93% 延迟改善):
   来源 skills.deeptoai.com 的架构分析文章(数据来源于 Superpowers 案例研究)
✅ 56% 技能未激活数据:
   Vercel Agent Evals 测试,由 alexop.dev 引用(2026-01-18 文章)
✅ Agent Skills 发布日期(2025-10-16):
   travisvn/awesome-claude-skills 社区记录

⚠️ 以下内容未经本地环境验证,仅基于文档推断:
  - 第 8 节"项目级技能数量 > 50 个时激活精度下降":缺乏量化测试数据,标注 ⚠️ 存疑
  - `when_to_use` 字段的完整行为:官方未文档化,本文描述基于社区逆向分析
  - 第 3 节中"技能发现路径扫描优先级":基于社区文档,未经官方确认

知识边界声明

本文档适用范围:
  - Claude Code(Agent Skills 功能,2025-10-16 正式发布后)
  - 本地开发环境及 CI/CD 集成场景
  - Claude Sonnet / Opus / Haiku 系列模型

不适用场景:
  - Claude API 直接调用(无 Skills 系统)
  - Claude.ai 网页端(Skills 功能可用,但操作界面不同)
  - Claude Desktop(支持 Skills 但安装方式不同,见官方文档)

参考资料

官方文档:
  - Claude Code 概述:https://docs.claude.com/en/docs/claude-code/overview
  - Agent Skills 官方文档:(需通过 docs.claude.com 搜索 "Agent Skills")

核心分析文章:
  - 第一性原理深度解析(含源码分析):
    https://leehanchung.github.io/blogs/2025/10/26/claude-skills-deep-dive/
  - 渐进式披露架构性能分析:
    https://skills.deeptoai.com/en/docs/development/progressive-disclosure-architecture
  - CLAUDE.md 精简实践:
    https://alexop.dev/posts/stop-bloating-your-claude-md-progressive-disclosure-ai-coding-tools/

社区资源:
  - 技能市场(awesome-claude-skills):
    https://github.com/travisvn/awesome-claude-skills
  - Medium 学习笔记(含目录结构图):
    https://medium.com/@quanap5/claude-code-progressive-disclosure-insights-from-my-learning-5244bc9864aa
  - 社区案例(Daniel Miessler,预测性构建):
    https://danielmiessler.com/blog/i-built-two-claude-code-features-before-anthropic-released-them

如有纰漏或者错误,欢迎指正。

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐