为 Claude Code 构建技能:将程序知识自动化 [译]
如果您要求Claude Code帮助您查询公司的数据仓库,它可能会建议标准的 SQL 模式和最佳实践。这些建议是合理的,但它们并不代表您的模式——Claude不了解您的表结构、业务术语或哪些指标需要特定的过滤器才能准确。
Claude Code生成这些样板建议是因为它在每次对话开始时都是全新的,没有访问您团队的机构知识。您的数据文档散落在维基、电子表格和部落知识中,但Claude无法轻易访问。
技能通过提供模块化包改变了这一点,这些包教会Claude您的特定工作流程。将它们安装在Claude Code中或在Claude.ai中启用,Claude会在相关任务出现时自动参考它们。将技能视为专门的入职文件,训练人工智能完全像您的团队一样工作。
在本文中,我们分享如何为Claude Code构建自定义技能,包括有效技能的必要组成部分和一般最佳实践。
当人工智能缺乏您的机构知识
您的团队积累了关于您的数据的艰辛知识——您知道哪些表是事实来源,为什么某些过滤器必须始终应用,以及根据上下文如何计算收入。但Claude并不会记住先前会话的上下文。
没有与您的团队的数据手册共享的方式,您最终会通过提示重新解释相同的细节。技能让您将这种专业知识打包成Claude Code可以自动发现和使用的东西。
技能如何解决知识差距
技能通过渐进式披露让Claude Code能够访问您的程序知识,按需分层披露信息,而不是淹没上下文窗口。
工作原理如下:Claude始终可以看到可用技能的轻量级索引(名称和描述,每个大约100个字)。当您要求Claude分析收入数据时,它识别到您的数据仓库 SQL 技能适用并加载这些说明。有关特定表的详细文档仅在执行期间需要时加载。
这个设计解决了全面知识与有限上下文之间的根本紧张关系。您可以构建一个包含数十个表定义和数页业务逻辑文档的技能,但Claude只会加载当前查询相关的内容。
技能的构成
每个技能遵循一个特定的结构,旨在便于人工维护和人工智能消费。我们来看一下数据仓库技能的结构。
SKILL.md:核心说明
SKILL.md 文件以 YAML 前言开始,包含两个关键字段:
name: sql-analysis
description: 在分析业务数据时使用:收入、年度经常性收入(ARR)、客户细分、产品使用情况或销售管道。提供与ACME数据仓库特定的表模式、度量定义、所需过滤器和查询模式。
该描述决定了Claude何时加载您的技能。当有人询问“我们上季度的收入是多少”或“根据细分显示客户流失率”时,Claude会识别到这个技能适用于此。
Markdown主体包含您的实际说明,按照渐进式披露进行组织:
# SQL 分析技能
## 快速启动工作流程
当用户请求数据分析时:
1. **澄清请求**
- 什么时间段?(如果未指定,默认为当前年份)
- 哪个客户细分?(澄清“客户”是指帐户还是组织?)
- 这将影响什么业务决策?
2. **检查现有仪表板**
- 在 `references/dashboards.md` 中查找预构建的报告
- 如果存在仪表板,首先引导他们到那里
3. **识别数据源**
- 优先选择聚合表而非原始事件数据
- 在查询之前验证表是否具有所需的列
4. **执行分析**
- 应用所需的过滤器(排除测试账户等)
- 根据已知基准验证结果
### 标准查询过滤器
对于所有收入查询:
- 始终排除测试账户:`WHERE account != 'Test'`
- 始终使用完整的时间段:`WHERE month <= DATE_TRUNC(CURRENT_DATE(), MONTH)`
### ARR 计算
- 每月到 ARR:`monthly_revenue * 12`
- 7 天运行率:`rolling_7d * 52`
## 知识库
有关详细的表模式和查询模式,请参见:
- **收入与财务** → `references/finance.md`
- **产品使用** → `references/product.md`
- **销售与管道** → `references/sales.md`
- **客户成功** → `references/customers.md`
注意 SKILL.md 如何提供高层次的工作流程指导和关键业务逻辑,同时指向参考文件中的详细文档。
参考:按需文档
references/ 目录包含详细文档,Claude 仅在需要时加载。以下是ACME的 references/finance.md 可能的样子:
- 表模式:关键表的列名、数据类型和描述,如
monthly_revenue和arr_metrics - 标准过滤器:应始终应用的 WHERE 子句(例如,排除测试账户,仅使用完整的时间段)
- 度量定义:如何按精确公式计算 ARR、运行率和其他业务指标
- 常见查询模式:针对频繁请求(如“按客户细分和地区的收入”或“ARR趋势”)的即用型 SQL 片段
- 边缘案例:已知的怪癖,例如何时使用一个表而不是另一个,或哪些列通常用于 JOIN 尽管命名约定可能不匹配
每个参考文件可能有数千个字,但用户只需为他们实际需要的内容支付上下文成本。
要记住的一个关键原则是:信息应储存在 SKILL.md 或参考文件中,而不是两者都包含,因此请保持 SKILL.md 干净,提供高层次的说明,而将详细规范放在参考文献中。
技能与 CLAUDE.md 的区别
技能和 CLAUDE.md 文件都能为Claude提供上下文,但服务于不同的目的。CLAUDE.md 始终加载到Claude的上下文中。它用于特定于项目的指导(编码惯例、本地工作流程、常用命令),并作为单个 markdown 文件存在于您的代码库中,仅适用于Claude Code。
技能使用渐进式披露,仅在相关时加载,并适用于所有Claude平台(claude.ai、Claude Code和Claude API)。除了上下文管理优势,技能还可以包含可执行代码和参考文件——不仅仅是markdown。这使它们非常适合用于跨项目的大规模、可重复使用的知识,例如数据仓库模式、公司设计标准或领域专业知识。
构建您的第一个技能
首先在终端或 IDE 中安装 Claude Code:
curl -fsSL https://claude.ai/install.sh | bash
接着添加Claude Code 插件,其中包含skill-creator skill。然后确定您的第一个候选者。最佳技能具有以下特征:
- 跨仓库相关性:适用于多个项目的知识
- 多受众价值:技术和非技术用户均受益
- 稳定模式:流程不会随着每次提交而改变
数据仓库查询、内部平台文档和公司范围内的标准都是出色的技能。
Claude还可以作为您的文档合作伙伴。首先以对话形式描述您的工作流程:
请帮我创建一个数据仓库技能。我将带您了解我们的表和业务逻辑,您可以帮我结构化它。
在这个过程中,Claude会在此过程中的澄清问题,以收集有关您工作流程的详细信息:哪些是关键表?哪些业务术语需要定义?哪些过滤器应始终应用?这个提取过程会表明对技能有效性至关重要的知识。
一旦您概述了您的领域,Claude会帮助您结构化 SKILL.md 并组织参考文件。随着您使用该技能,您可以随时在发现缺失内容时添加更多参考文件。
存储和共享技能
技能本地存储在您的计算机上,让您对如何更新它们有完全控制。当您准备与团队共享技能时,您有几种选择,具体取决于您的工作流程:
- 压缩文件:直接与团队成员共享技能,快速非正式协作
- 内部版本控制的存储库:在集中式代码库中托管技能,让您的组织可以访问已批准的维护版本
- Git 存储库:与代码一起对技能进行版本管理,具备完整的提交历史和分支管理
- 插件捆绑:将技能打包成Claude Code插件,便于在您的团队中分发
选择最符合您团队当前工作的方式。有强大 Git 工作流程的团队通常更喜欢基于存储库的共享,而具有正式工具标准的组织可能从插件捆绑或集中式技能存储库中受益。
真实的实现模式
以下是来自社区的示例,展示了技能的实际应用:
Playwright 技能:使 Claude 能够即时编写和运行浏览器自动化代码。向 Claude 询问测试网页、验证表单是否正常工作或捕获屏幕截图——Claude编写代码、执行并返回结果,而无需任何手动设置。
网页资产生成器技能: 从徽标、文本或表情符号创建 favicon、应用程序图标和社交媒体图像。告诉 Claude 您需要为初创企业生成 favicon 或为博客生成 Open Graph 图像,它将生成适合您项目的资产。
这个技能市场还分享了更多示例,以激励您。 探索社区构建的技能,扩展Claude可以做的事情——从自动测试和数据可视化到代码审查和域名头脑风暴。
开始使用 Claude Code 和技能
技能让您编码能够跨团队和平台的机构知识。通过将您的流程、术语和业务逻辑封装为技能,您创造了可扩展的组织记忆。新的分析师在第一天就能正确查询数据,数据科学家停止解释相同的表关系,业务用户可以自助获取准确的度量。今天就在Claude Code中开始构建您的第一个技能吧。
原文链接:https://claude.com/blog/building-skills-for-claude-code
