claude skills使用

一、什么是Claude Skills?

Claude Skills是Anthropic为Claude大语言模型推出的一种模块化能力扩展系统(技能包),旨在教Claude如何执行特定、重复性的工作流程。它将特定的指令、脚本和资源封装在独立文件夹中,让 Claude 能够在需要时按需调用,从而实现自动化、标准化处理任务,节省大量上下文 Token。是基于文件系统的可重用资源,为 Claude 提供特定领域的专业知识:工作流程、上下文和最佳实践,可将通用代理转变为专家。与提示词(针对一次性任务的对话级指令)不同,技能按需加载,无需在多个对话中重复提供相同的指导。它将特定任务相关的指令、脚本、模板和资源等内容,封装成一个文件夹,称为一个Skill。

二、Claude Skills工作原理

工作原理(三层加载机制)

层级 内容 何时加载
元数据 name+description(约100词) 始终在上下文中
SKILL.md正文 详细指令(建议500行内) SKILL触发时
附属资源 scripts、references、assets 按需读取

触发逻辑:Claude 扫描 available_skills 列表,比对用户请求与每个 Skill 的 description,匹配则自动加载对应 SKILL.md

目前内置的公开Skills

Skill 核心能力
docx 生成专业 Word 文档(目录、页眉、表格、样式)
pptx 创建 PPT 演示文稿,支持动画和模板
xlsx 读写 Excel 电子表格,支持公式和数据清洗
pdf 读取、合并、填写、加密 PDF 文件
frontend-design 生成高质量 UI 组件和网页,风格专业不俗气
skill-creator 创建新 Skill、迭代优化、运行评测

三、为什么要用Skills

3.1 解决 Claude 的"通才局限"

Claude 默认是通才,对很多专业任务(如生成 .docx、创建 .pptx、操作 Excel)只有模糊知识。Skill 把经过反复打磨的最佳实践固化成文字,让 Claude 每次都能按专家级流程操作。

3.2 避免重复"发明轮子"

没有 Skill 时,Claude 每次都可能选择不同的库、不同的方法,导致结果不稳定。Skill 规定了"应该用哪个库、怎么做、踩过哪些坑",输出质量大幅提升且一致。

3.3 封装复杂流程

复杂任务往往需要多个步骤(解压 → 编辑 XML → 重新打包)。Skill 把这些步骤全部写清楚,Claude 不需要"自己摸索",直接按图索骥。

3.4 渐进式加载,不浪费上下文

Skill 采用三层加载机制:

•第一层:元数据(name + description),始终在上下文中,约100字

•第二层:SKILL.md 正文,触发时加载,建议500行以内

•第三层:附属资源文件,按需加载,没有上限

这意味着:Skills 只在需要时消耗上下文,平时几乎"零开销"。

3.5 可分享、可迭代

Skill打包成.skill文件后可以安装到Claude,团队成员之间可以共享,也可以持续改进。

四、目录结构与SKILL.md格式

标准目录结构

arduino 复制代码
my-skill/                   ← Skill 根目录(文件夹名即 Skill 名)
├── SKILL.md                ← 必须,核心指令文件
├── LICENSE.txt             ← 可选,许可证
├── scripts/                ← 可选,可执行的脚本(Python/Bash等)
│   └── process.py
├── references/             ← 可选,参考文档(大型文档放这里按需加载)
│   ├── guide-a.md
│   └── guide-b.md
└── assets/                 ← 可选,模板、字体、图片等静态资源
    └── template.xlsx

目录组织原则:

scripts/:放可执行代码,用于确定性、重复性任务

references/:放按需加载的参考文档(超过 300 行建议加目录)

assets/:放输出时会用到的静态文件(模板、图标、字体等)

SKILL.md格式

SKILL.md 由两部分组成:YAML 前置元数据 + Markdown 正文指令。

yaml 复制代码
---
name: skill-name                    ← Skill 唯一标识符
description: 触发条件和功能描述。    ← 触发机制的核心!要写得"积极"
  当用户提到...时使用本 Skill。      ← 越具体越好
license: LICENSE.txt                ← 可选
---

# Skill 标题

## 简介
说明这个 Skill 是干什么的。

## 工作流程
步骤 1:...
步骤 2:...

## 参考资料
- 详细指南请查看 [references/guide.md](references/guide.md)

五、如何创建一个Skill

Step 1:确定 Skill 的目标

回答这三个问题:

•这个Skill要让Claude做什么?

•什么情况下应该触发(用户会说什么词/短语)?

•期望输出是什么格式?

Step 2:创建目录和 SKILL.md

perl 复制代码
mkdir my-skill
touch my-skill/SKILL.md

Step 3:编写 SKILL.md

按以下模板填写:

yaml 复制代码
name: my-skill
description: 描述本技能的功能和触发条件。当用户想要...时使用本 Skill,
  包括...、...等场景。即使用户没有明确说出技能名,只要涉及...也应触发。
---

# My Skill 标题

## 概述
简短描述。

## 前置要求
- 需要的库:xxx
- 需要的工具:xxx

## 工作流程

### 第一步:分析输入
...

### 第二步:执行处理
...

### 第三步:输出结果
...

## 常见问题和注意事项
- 注意点 1
- 注意点 2

## 参考资料
详细文档见 [references/detail.md](references/detail.md)

Step 4:添加脚本和资源(可选)

如果任务需要运行代码:

bash 复制代码
mkdir my-skill/scripts
# 在 scripts/ 下添加 Python/Shell 脚本

Step 5:测试与迭代

手动测试:用几个典型的用户请求,验证 Claude 是否:

✅ 正确触发(看到 Skill 并读取)

✅ 按 Skill 指引执行

✅ 输出符合预期

Step 6:打包发布

perl 复制代码
# 使用 skill-creator 技能中的打包脚本
python -m scripts.package_skill my-skill/
# 生成 my-skill.skill 文件,可以安装和分享

六、实战示例

前置准备

基于closeAi中转站,搭建skills,platform.closeai-asia.com/dashboard

开始之前,确保已经拥有:

1.一个CloseAI 账户

2.一个 CloseAI API Key。您可以在您的账户仪表板中找到它。

3.已安装Node.js 和 npm

macOS/Linux 用户配置指南

第一步:安装 Claude Code

运行claude官方安装命令,需要开启梯子

arduino 复制代码
curl -fsSL https://claude.ai/install.sh | bash

备选方案,如果因为网络不通等问题,也可以使用 npm (Node Package Manager) 在您的系统上全局安装 Claude Code。打开您的终端并运行以下命令:

bash 复制代码
npm install -g @anthropic-ai/claude-code

安装完成后,您就可以在终端的任何位置使用claude命令了。

第二步:配置 CloseAI 接入

通过~/.claude/settings.json配置环境变量,这种方式最稳定可靠,无需配置系统环境变量,避免各种环境变量冲突问题。

  1. 创建配置目录
bash 复制代码
mkdir -p ~/.claude

2. 编辑 settings.json

在您喜欢的文本编辑器中打开~/.claude/settings.json文件,添加以下内容:

json 复制代码
{  
	"env": {    
		"ANTHROPIC_API_KEY": "sk-xxxxxxxxxxxxxxxx",
		"ANTHROPIC_BASE_URL": "https://api.openai-proxy.org/anthropic",    
		"CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS": "1"  
		}
}

配置说明

ANTHROPIC_API_KEY设为您的 CloseAI API Key(请务必替换 sk-xxxxxxxxxxxxxxxx

ANTHROPIC_BASE_URL设为 CloseAI 的 API 地址

CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS设为1可禁用过新的实验性 Beta 功能,避免因使用尚不稳定的测试特性而导致的意外报错

重要 :配置文件中,不要添加 apiKeyHelper字段,否则会导致配置冲突

这种配置方式会覆盖系统环境变量,确保 100% 正常工作,无需额外配置系统环境变量

第三步:免登录配置

Claude Code 首次启动时会需要你登录Claude官方账号,你如果挂了VPN,会弹出登录,如果没挂VPN会直接报错:Failed to connect to api.anthropic.com

为了跳过登录,我们需要在 ~/.claude.json 中,加入设置"hasCompletedOnboarding": true。如果不跳过登录,则会在第一次使用 claude 时,触发登录。

第四步:开始使用

现在,您可以在终端中启动 Claude Code 了:

复制代码
claude

启动后Claude会问你是否使用自定key,选择yes。

实现code review的skills

创建code review的skill目录

bash 复制代码
mkdir -p ~/.claude/skills/code-review

创建SKILL.md文件

bash 复制代码
touch ~/.claude/skills/code-review/SKILL.md

编辑SKILL.md文件

yaml 复制代码
---
name: code-review
description: 当用户要求代码审查、code review、看代码问题时使用;对指定文件或目录做风格、潜在 bug 与可读性检查
---

# 代码审查助手

## 何时使用
- 用户说「帮我 review 这段代码」「代码审查」「看看有没有问题」时

## 执行步骤
1. 确认要审查的文件或代码范围。
2. 依次检查:命名规范、潜在 bug、边界情况、可读性、简单性能问题。
3. 用列表给出问题与修改建议,并标注严重程度(高/中/低)。

## 输出格式
- 先简要总结,再按文件/位置列出具体问题和建议。

效果

实现sql优化器的skills

创建sql优化器的skill目录

bash 复制代码
mkdir -p ~/.claude/skills/sql-optimizer

创建sql优化器skll目录里的脚本目录

bash 复制代码
mkdir -p ~/.claude/skills/sql-optimizer/scripts

创建SKILL.md文件

bash 复制代码
touch ~/.claude/skills/sql-optimizer/SKILL.md

编辑SKILL.md文件

markdown 复制代码
---
name: sql-optimizer
description: 当用户提供 SQL 或询问 SQL 优化、慢查询、索引、explain 时使用;给出优化建议与索引建议,并用 Python 脚本对回复做结构化与代码块优化
dependencies: python>=3.8
---

# SQL 优化助手

## 何时使用

- 用户粘贴 SQL 或提到「优化」「慢」「explain」「索引」「查询性能」时
- 用户询问如何改写 SQL、加索引、分析执行计划时

## 执行步骤

1.  **理解上下文** :确认 SQL 的用途、涉及表与业务场景;必要时询问表结构或数据量。
2.  **分析** :从索引、WHERE 条件、JOIN、子查询、函数/类型转换、分页方式等方面分析。
3.  **产出草稿** :先一句话总结问题,再分条写出「问题 → 建议 → 示例(若适用)」。
4.  **用 Python 脚本优化回复** (必须执行):
   - 将上一步的完整回复文本保存为临时文件,或通过管道传入脚本。
   - 在技能目录下执行(技能目录为 `~/.claude/skills/sql-optimizer` 或当前项目 `.claude/skills/sql-optimizer`):
     ```bash
     python3 scripts/optimize_response.py
     ```
     将草稿内容通过  **stdin**  传入,例如:
     ```bash
     echo "此处为草稿全文" | python3 scripts/optimize_response.py
     ```
     或先写入文件再传路径:
     ```bash
     python3 scripts/optimize_response.py /path/to/draft.txt
     ```
   - 脚本会:把未包裹的 SQL 统一成 ```sql ... ``` 代码块,并补全「## 优化建议」等章节。
5.  **输出** :将脚本的  **stdout**  作为最终回复呈现给用户,不要再手动改脚本输出内容。

## 输出格式(脚本会在此基础上做后处理)

- 开头:一句话总结主要问题。
- 中间:分条列出「问题 → 建议 → 示例(若适用)」;所有 SQL 示例保持为 ```sql ... ``` 形式。
- 结尾:可补充索引建议、EXPLAIN 使用建议或后续可做的验证。

## 使用 Python 脚本的注意点

- 脚本路径:相对于本技能根目录的 `scripts/optimize_response.py`;若从项目根执行,则使用 `.claude/skills/sql-optimizer/scripts/optimize_response.py`。
- 必须把 **完整草稿** (整段优化分析)传给脚本,不要只传其中一句。
- 最终给用户看的,以脚本 stdout 为准;若脚本报错,可退回为未优化版草稿并说明「本次未做响应后处理」。

## 示例流程

1. 用户:`/sql-optimizer` 并粘贴一条 SELECT。
2. 你分析后写出草稿(总结 + 若干条建议 + SQL 示例)。
3. 执行:`echo "<草稿全文>" | python3 .claude/skills/sql-optimizer/scripts/optimize_response.py`(或从技能目录执行 `python3 scripts/optimize_response.py` 并 stdin 传入草稿)。
4. 把脚本输出作为最终回复发给用户。

创建optimize_response.py脚本文件

bash 复制代码
touch ~/.claude/skills/sql-optimizer/scripts/optimize_response.py

编辑optimize_response.py脚本文件

python 复制代码
#!/usr/bin/env python3
"""
SQL 优化建议响应后处理:读取 Claude 的优化分析草稿,输出结构化 Markdown。
- 将未包裹的 SQL 统一为 ```sql ... ``` 代码块
- 确保有「总结」「优化建议」等章节结构
- 斜体:将 [i]...[/i] 转为 *...*;对「注意:」「例如:」等后的短句自动加斜体
- 红高亮:将 [r]...[/r] 转为红色 HTML;对「建议:」后的短句及「## 优化建议」标题加红
"""
import re
import sys
from pathlib import Path


def read_input() -> str:
    if len(sys.argv) > 1:
        p = Path(sys.argv[1])
        if p.exists():
            return p.read_text(encoding="utf-8")
    return sys.stdin.read()


def wrap_bare_sql(text: str) -> str:
    """把单独成段的 SQL(SELECT/INSERT/UPDATE 等开头)包成 ```sql ... ```"""
    lines = text.split("\n")
    out = []
    i = 0
    while i < len(lines):
        line = lines[i]
        stripped = line.strip()
        if stripped.startswith("```"):
            out.append(line)
            i += 1
            continue
        if re.match(r"^(SELECT|INSERT|UPDATE|DELETE|CREATE|ALTER|EXPLAIN|WITH)\s", stripped, re.I):
            out.append("```sql")
            out.append(line)
            i += 1
            while i < len(lines) and not lines[i].strip().startswith("```"):
                out.append(lines[i])
                i += 1
            out.append("```")
            if i < len(lines):
                out.append(lines[i])
                i += 1
            continue
        out.append(line)
        i += 1
    return "\n".join(out)


def ensure_sections(text: str) -> str:
    """若没有「## 优化建议」,在第一个列表前插入"""
    if "## 优化建议" in text or "## 建议" in text:
        return text
    lines = text.split("\n")
    for i, line in enumerate(lines):
        if re.match(r"^(\d+.|[•-*])\s", line.strip()):
            lines.insert(i, "")
            lines.insert(i + 1, "## 优化建议")
            lines.insert(i + 2, "")
            return "\n".join(lines)
    return text


def apply_italic(text: str) -> str:
    """
    增加斜体能力(Markdown 使用 *...*):
    1. 将显式标记 [i]...[/i] 转为 *...*
    2. 对「注意:」「例如:」等后的第一个短句加斜体(「建议:」留给红高亮)
    """
    text = re.sub(r"[i](.*?)[/i]", r"*\1*", text, flags=re.DOTALL)
    for prefix in ("注意", "例如", "说明", "提示"):
        pattern = rf"({prefix}[::])([^\n*`]+?)([。;\n]|$)"
        def _repl(m):
            content = m.group(2).strip()
            if not content or len(content) > 80:
                return m.group(0)
            end = m.group(3)
            return f"{m.group(1)}*{content}*{end}"
        text = re.sub(pattern, _repl, text)
    return text


RED_SPAN = '<span style="color:#e74c3c">'


def apply_red_highlight(text: str) -> str:
    """
    对优化建议加红高亮:
    1. [r]...[/r] -> 红色 span
    2. 「建议:」后的短句 -> 红色
    3. 「## 优化建议」标题 -> 红色
    """
    text = re.sub(r"[r](.*?)[/r]", RED_SPAN + r"\1</span>", text, flags=re.DOTALL)
    pattern = r"(建议[::])([^\n*`<]+?)([。;\n]|$)"
    def _repl(m):
        content = m.group(2).strip()
        if not content or len(content) > 100:
            return m.group(0)
        end = m.group(3)
        return f"{m.group(1)}{RED_SPAN}{content}</span>{end}"
    text = re.sub(pattern, _repl, text)
    text = re.sub(r"(##\s*)(优化建议|建议)(\s*)$", r"\1" + RED_SPAN + r"\2</span>\3", text, flags=re.MULTILINE)
    return text


def main() -> None:
    raw = read_input()
    if not raw.strip():
        print("(未收到输入)", file=sys.stderr)
        sys.exit(1)
    out = wrap_bare_sql(raw)
    out = ensure_sections(out)
    out = apply_italic(out)
    out = apply_red_highlight(out)
    print(out.strip())


if __name__ == "__main__":
    main()

效果

七、官方市场

除了自己编写,还可以利用2025年末发布的Agent Skills开放标准:

•官方市场:访问github.com/anthropics/...仓库下载预设的技能(如:pdf生成器、SQL 调优工具)。

•Skill Creator:你可以对 Claude 说:"帮我把我刚才教你的关于 Docker 的配置逻辑总结成一个 Skill",它会自动在相应目录为你生成文件。

我们可以将本仓库注册为 Claude Code 的插件市场,只需在 Claude Code 中执行以下命令:

bash 复制代码
/plugin marketplace add anthropics/skills

然后就可以使用/plugin查看:

装指定技能集的步骤:

•浏览并安装插件(Browse and install plugins)

•选择 anthropic-agent-skills 插件源

•选择 document-skills(文档技能) 或 example-skills(示例技能)

八、Agent Skills 相关资源整理

资源说明 链接
Skill 聚合入口 skills.sh/
Skills 市场(中文界面) skillsmp.com/zh
Agent Skills 官方标准站点 agentskills.io
Anthropic 官方工程文章(Agent Skills 实战理念) www.anthropic.com/engineering...
VS Code Copilot Agent Skills 文档 code.visualstudio.com/docs/copilo...
Anthropic 官方 Skills GitHub 仓库 github.com/anthropics/...
Claude 技能精选列表(Awesome 系列) github.com/ComposioHQ/...
软件开发自动化工作流 Skills 集合 github.com/obra/superp...
自动生成 Skill 的 Skill(官方示例) github.com/anthropics/...
相关推荐
小小小小小鹿4 小时前
Claude Code Agent Skills 入门指南(下):理解Skill的工作机制
llm·ai编程·claude
小小小小小鹿11 小时前
Claude Code Agent Skills 入门指南(上):原理与规范 —— 让 AI Agent 拥有"肌肉记忆"的可扩展能力
llm·ai编程·claude
码路飞1 天前
OpenClaw 模型配置终极指南:5 种方案实测,帮你选出最适合的那个
claude·deepseek
得物技术1 天前
从IDE到Terminal:适合后端宝宝体质的Claude Code工作流|得物技术
agent·ai编程·claude
码路飞1 天前
SWE-bench 都 80% 了,AI 真能修 Bug?我拿 3 个真实场景测了 5 个
llm·claude
烛阴2 天前
Claude Code Skill 从入门到自定义完整教程(Windows 版)
前端·ai编程·claude
aicodego2 天前
Python 调用 Claude API 全流程:基础调用、流式输出、多轮对话,踩坑记录一次讲完
claude
codingWhat2 天前
Claude Code 使用技巧:把“聪明实习生”变成你的王牌搭档
claude
itpretty2 天前
手搓一只迷你小龙虾(Claude Code CLI + Telegram)
人工智能·ai编程·claude