字
字节笔记本
2026年3月13日
Claude Agent SDK Skills:Claude 技能开发完整指南
本文介绍 Claude Agent SDK Skills 官方文档,这是 Anthropic 提供的 Claude Agent 技能开发完整指南。文档详细讲解了如何为 Claude Agent 开发自定义技能,包括技能架构设计、开发流程、API 使用、测试部署等各个方面,是 Claude Agent 开发者的必备参考资料。
概述
Claude Agent SDK Skills 是 Claude Agent 的扩展机制,允许开发者创建自定义技能来增强 Claude 的能力。技能可以访问外部工具、API、数据库等,让 Claude 能够完成更复杂的任务。
技能基础
什么是技能?
技能(Skill)是 Claude Agent 的可扩展单元,类似于插件或扩展。每个技能:
- 封装特定能力:如调用特定 API、执行特定操作
- 独立开发:由第三方开发者创建和维护
- 即插即用:安装后立即可用
- 可组合:多个技能可以协同工作
技能类型
- 工具技能:调用外部工具或服务
- 知识技能:提供特定领域知识
- 工作流技能:自动化复杂流程
- 集成技能:集成第三方平台
技能架构
技能结构
typescript
// 技能定义
interface Skill {
name: string;
description: string;
version: string;
author: string;
// 核心方法
execute(input: SkillInput): Promise<SkillOutput>;
// 元数据
metadata: SkillMetadata;
}技能生命周期
初始化 → 加载配置 → 验证 → 执行 → 清理 → 卸载
开发指南
环境准备
bash
# 安装 Claude Agent SDK
npm install @anthropic-ai/agent-sdk
# 创建技能项目
npx @anthropic-ai/agent-sdk init my-skill基础技能
typescript
import { Skill, SkillContext } from '@anthropic-ai/agent-sdk';
export class MySkill extends Skill {
name = 'my-skill';
description = 'My custom skill';
version = '1.0.0';
async execute(context: SkillContext, input: any) {
// 技能逻辑
return {
success: true,
data: result
};
}
}技能配置
typescript
// skill.config.ts
export const config = {
name: 'my-skill',
version: '1.0.0',
// 权限配置
permissions: [
'network:read',
'file:read'
],
// 依赖配置
dependencies: {
'axios': '^1.6.0'
},
// 环境变量
env: {
'API_KEY': 'your-api-key'
}
};API 参考
核心 API
SkillContext
typescript
class SkillContext {
// 获取用户输入
getUserInput(): string;
// 发送消息
sendMessage(message: string): void;
// 调用其他技能
useSkill(skillName: string, input: any): Promise<any>;
// 访问工具
getTool(toolName: string): Tool;
}SkillInput/SkillOutput
typescript
interface SkillInput {
data: any;
metadata?: Record<string, any>;
}
interface SkillOutput {
success: boolean;
data?: any;
error?: string;
}高级功能
1. 技能链
typescript
// 顺序执行
const result = await context
.useSkill('skill1', input1)
.useSkill('skill2', input2);2. 并行执行
typescript
// 并行执行
const [result1, result2] = await Promise.all([
context.useSkill('skill1', input1),
context.useSkill('skill2', input2)
]);3. 条件执行
typescript
// 条件判断
if (condition) {
return await context.useSkill('skill-a', input);
} else {
return await context.useSkill('skill-b', input);
}4. 错误处理
typescript
try {
const result = await context.useSkill('skill', input);
return result;
} catch (error) {
// 错误处理
return {
success: false,
error: error.message
};
}测试
单元测试
typescript
import { test } from '@anthropic-ai/agent-sdk/test';
test('MySkill executes successfully', async () => {
const skill = new MySkill();
const context = createMockContext();
const input = { data: 'test' };
const result = await skill.execute(context, input);
expect(result.success).toBe(true);
});集成测试
typescript
test('Skill integrates with Claude', async () => {
const agent = createAgent();
agent.addSkill(MySkill);
const response = await agent.chat('使用我的技能');
expect(response).toContain('成功');
});部署
打包技能
bash
# 构建技能
npm run build
# 打包
npm run package发布技能
bash
# 发布到技能市场
npx @anthropic-ai/agent-sdk publish
# 或发布到 GitHub
git push origin main安装技能
bash
# 从技能市场安装
claude skills install my-skill
# 从 GitHub 安装
claude skills install github:username/my-skill最佳实践
1. 技能设计原则
- 单一职责:每个技能专注一个功能
- 清晰接口:定义明确的输入输出
- 错误处理:完善的异常处理
- 文档完整:提供详细文档
2. 性能优化
- 缓存策略:缓存重复请求
- 异步处理:使用 async/await
- 资源管理:及时释放资源
- 超时控制:防止长时间阻塞
3. 安全考虑
- 输入验证:验证用户输入
- 权限控制:限制技能权限
- 敏感数据:保护敏感信息
- 审计日志:记录操作日志
4. 用户体验
- 清晰反馈:提供执行状态反馈
- 错误信息:友好的错误提示
- 使用文档:详细的使用说明
- 示例代码:提供使用示例
常见问题
Q: 技能无法加载?
检查:
- 技能配置是否正确
- 依赖是否安装
- 权限是否足够
- 日志中的错误信息
Q: 技能执行超时?
解决方法:
- 增加超时时间
- 优化执行逻辑
- 使用异步处理
- 分批处理大数据
Q: 技能间通信?
解决方案:
- 使用共享状态
- 通过输入输出传递
- 使用事件总线
- 集成消息队列
示例技能
1. API 调用技能
typescript
class ApiCallSkill extends Skill {
name = 'api-call';
description = 'Call external API';
version = '1.0.0';
async execute(context: SkillContext, input: ApiCallInput) {
const response = await axios.get(input.url);
return {
success: true,
data: response.data
};
}
}2. 文件处理技能
typescript
class FileProcessorSkill extends Skill {
name = 'file-processor';
description = 'Process files';
version = '1.0.0';
async execute(context: SkillContext, input: FileInput) {
const content = await fs.readFile(input.path, 'utf-8');
const processed = processContent(content);
return {
success: true,
data: processed
};
}
}3. 数据库技能
typescript
class DatabaseSkill extends Skill {
name = 'database';
description = 'Database operations';
version = '1.0.0';
async execute(context: SkillContext, input: DbInput) {
const client = await createClient(input.connectionString);
const result = await client.query(input.sql);
return {
success: true,
data: result.rows
};
}
}相关资源
- Claude Agent SDK:https://github.com/anthropics/agent-sdk
- Claude API 文档:https://docs.anthropic.com
- 技能市场:https://skills.anthropic.com
- 开发者社区:https://community.anthropic.com
原文链接
分享: