Skip to content

claude-code-skills

想象一下,你聘请了一位才华横溢的资深工程师。他们精通算法、架构和设计模式。但在入职第一天,他们却无法重启生产服务器或查询内部数据库。为什么?因为他们没有访问你特定仪表盘或命令行工具的权限。Claude Code 就是这样一位工程师。

默认情况下,Claude 依赖于其庞大的训练数据。为了让它在你独特的环境中真正发挥作用,你需要授予它访问你“工具箱”的权限。在 Claude Code 中,我们称这些为技能(Skills)。技能是连接 Claude 推理能力与本地执行环境的桥梁,它将 Claude 从一个被动的聊天机器人转变为一个能够处理实际任务的主动操作者。

技能本质上是一个你提供给 Claude 的函数定义。它告诉 Claude:“这是我能做的事情,这是你请求我执行的方式,这是为了完成任务我从你这里获取的必要信息。”每个技能都包含三个关键要素:

  • 名称 (Name):唯一标识符(例如 query_database,restart_service)。
  • 描述 (Description):对工具功能的自然语言解释。这可以说是最重要的部分,因为 Claude 会读取此内容来决定何时使用该工具。
  • 输入模式 (Input Schema):对工具所接受参数的严格定义,通常以 JSON Schema 格式定义。

定义自定义工具:从 Shell 到技能

Section titled “定义自定义工具:从 Shell 到技能”

创建技能最常用的方法是封装你已经使用的脚本或命令。假设你有一个本地 shell 脚本 check_server.sh,用于检查服务器环境的健康状况。

要将其转换为技能,你需要将脚本的执行映射到 Claude 能理解的定义中。以下是一个概念性示例,展示了如何定义一个技能来封装此脚本:

`javascript
// 概念性技能定义
{
name: "check_server_health",
description: "检查特定服务器环境(prod、staging 或 dev)的 CPU 和内存状态。",
input_schema: {
type: "object",
properties: {
environment: {
type: "string",
enum: ["prod", "staging", "dev"],
description: "要检查的目标环境。"
}
},
required: ["environment"]
},
// 当 Claude 调用此技能时实际执行的命令
execution: {
command: "./scripts/check_server.sh",
args: ["{{environment}}"]
}
}
`

在这种设置下,如果你问 Claude:“Staging 服务器现在状况如何?”,它会分析请求,找到 check_server_health 工具,提取 staging 作为 environment 参数,并自动触发该脚本。

通过输入模式(Input Schemas)确保可靠性

Section titled “通过输入模式(Input Schemas)确保可靠性”

让 AI 访问你的终端需要安全防护栏。这就是**输入模式(Input Schemas)**发挥作用的地方。你不应该仅仅让 Claude 猜测参数;你必须强制执行它们。

使用 JSON Schema,你可以定义严格的类型和约束。例如,如果一个工具需要用户 ID,你可以指定它必须是一个整数。如果它需要服务器区域,你可以将选项限制为有效的区域列表。

考虑一个用于查询日志的技能。你肯定不希望 Claude 请求十亿行日志,那会搞垮你的终端。

`json
{
"name": "fetch_logs",
"description": "获取应用程序日志。",
"input_schema": {
"type": "object",
"properties": {
"line_count": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"description": "要获取的日志行数(最多 100 行)。"
}
},
"required": ["line_count"]
}
}
`

通过 maximum: 100 的约束,即使你要求 Claude “获取从有史以来所有的日志”,Claude 的内部逻辑(受 schema 指导)也会识别出限制,或者工具在执行前会经过验证并被拒绝,从而保证你的系统安全。

“工具使用(Tool Use)”提示工程的最佳实践

Section titled ““工具使用(Tool Use)”提示工程的最佳实践”

定义工具只是成功了一半,描述才是另一半。Claude 决定是否使用某个工具,完全基于用户请求与工具描述之间的语义相似度。以下是编写有效技能描述的三条黄金法则:

  • 以动作为导向:以动词开头。不要写成“日志工具”,要写成“从应用程序后端获取日志”。
  • 明确格式:如果工具返回特定的数据格式(如 JSON 或 CSV),请明确指出。示例:“返回包含当前股票价格的 JSON 对象。”
  • 描述边界情况:告诉 Claude 该工具不能做什么。示例:“只能搜索最近 30 天内创建的用户。”

通过掌握技能,你不再仅仅把 Claude 当作搜索引擎,而是开始将其视为力量倍增器——一个能够与你并肩测试、调试和部署的智能体。