1. 为什么要在本地跑 Claude Skills 官方库案例
Claude Skills 是 Anthropic 官方开源的一套能力封装方案,简单说就是把「怎么做事」写成 Markdown 加脚本,让模型按固定流程干活。官方库 anthropics/skills 里既有 document-skills 这种生产级文档处理能力,也有 algorithmic-art、artifacts-builder 这类偏创作的示例。它适合谁?适合已经在用 Claude Code 或 Claude API、想把重复工作流固化下来的开发者,也适合想先跑通一个最小案例再决定要不要深入的人。
但很多人卡在第一步:官方示例拉下来了,settings.json 不知道怎么写,环境变量放哪、Key 怎么统一、跑起来报 401 或找不到 skill。这篇就挑官方库里一个可复现的案例,围绕 settings.json 给出可复制的配置骨架,并用 TaoToken 统一 Key 和 API 通道完成一次真实调用验证。你跟着做完,能确认三件事:配置生效、案例跑通、后续换模型只改一个地方。
我试过把 Key 散落在多个 shell 配置里,换环境时特别容易漏,所以下面统一走 TaoToken 的 API 通道,settings.json 里只留一处引用。
2. TaoToken 前置准备:统一 Key 与 API 通道
TaoToken 在这里的角色是统一入口:你只需要一个 Key,就能通过兼容接口调用 Claude 系列模型,不用在多个平台之间来回切换配置。官网地址是 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 基址是 https://taotoken.net/api 。
第一步,去控制台创建 API Key。打开 https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=console&utm_campaign=rewrite ,登录后在 API Keys 页面新建一个 Key,复制出来先存到安全的地方。这个 Key 后面会写进环境变量,不要直接硬编码进 settings.json 提交到仓库。
第二步,确认你要用的模型名。在模型对话页面可以先试一下通道是否正常: https://taotoken.net/model-chat?utm_source=taotoken_aicg_blog_end&utm_content=model-chat&utm_campaign=rewrite 。选一个 Claude 模型发一句话,能正常返回就说明 Key 和通道没问题。
第三步,如果你打算长期用 Claude Code 跑 Skills,建议了解一下 Coding Plan: https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite 。它更适合高频编码和 Agent 场景,额度模型和按次调用不一样,先看清楚再决定。
环境变量建议这样写,放在 ~/.zshrc 或 ~/.bashrc 里:
export TAOTOKEN_API_KEY="sk-你的Key" export ANTHROPIC_BASE_URL="https://taotoken.net/api" export ANTHROPIC_API_KEY="$TAOTOKEN_API_KEY"这里把 ANTHROPIC_API_KEY 指向同一个值,是为了让依赖 Anthropic SDK 的脚本不用改代码就能走 TaoToken 通道。改完执行 source ~/.zshrc 让它生效,然后 echo $ANTHROPIC_BASE_URL 确认输出正确。
3. settings.json 配置骨架:可复制的最小结构
Claude Code 的 settings.json 一般放在项目根目录的 .claude/settings.json,或者用户级的 ~/.claude/settings.json。项目级优先,适合团队共享;用户级适合个人全局默认。下面这份骨架以项目级为例,核心是把环境变量和权限声明清楚。
{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_API_KEY": "${TAOTOKEN_API_KEY}", "ANTHROPIC_MODEL": "claude-sonnet-4-20250514" }, "permissions": { "allow": [ "Read", "Write", "Bash(python:*)", "Bash(node:*)" ], "deny": [] }, "skills": { "directory": ".claude/skills", "autoLoad": true } }几个关键点解释一下。env 里的 ANTHROPIC_API_KEY 用 ${TAOTOKEN_API_KEY} 引用系统环境变量,这样 Key 不落盘到配置文件,换机器只改 shell 配置。ANTHROPIC_MODEL 先写一个默认模型,后面验证时如果要用别的模型,改这一行就行。permissions.allow 里放开 Read、Write 和 python、node 执行权限,是因为官方 Skills 里的脚本大多靠 Python 或 Node 跑,比如 document-skills 的 PDF 处理依赖 PyPDF。skills.directory 指向项目内的 .claude/skills,autoLoad 打开后启动时自动扫描。
如果你用的是用户级配置,把 skills.directory 换成绝对路径 ~/.claude/skills 即可。注意 settings.json 里不要出现明文 Key,也不要写任何本地代理地址,通道统一走上面的 API 基址。
4. 拉取官方案例并放入 skills 目录
挑一个可复现的案例:官方库里的 template-skill 或 skill-creator 都偏元能力,真正能立刻看到输出的是 document-skills 里的 docx 处理。但为了最小验证,我们用官方示例中的 example-skills 结构来演示,重点是确认 skill 能被加载。
先把官方库克隆到本地临时目录:
git clone https://github.com/anthropics/skills.git /tmp/anthropics-skills ls /tmp/anthropics-skills你会看到 document-skills、example-skills 等目录。我们取其中一个示例 skill 复制到项目的 .claude/skills 下:
mkdir -p .claude/skills cp -r /tmp/anthropics-skills/example-skills/* .claude/skills/ ls .claude/skills每个 skill 目录里应该有一个 SKILL.md,这是入口描述文件。确认一下:
find .claude/skills -name "SKILL.md" | head如果能看到路径输出,说明目录结构对了。SKILL.md 里的 frontmatter 通常包含 name 和 description,Claude Code 靠这个识别 skill 的用途。如果 description 缺失或太短,skill 可能不会被正确匹配,这是后面排障要检查的点。
5. 验证请求:一条命令确认配置生效
配置写好了,skill 也放好了,现在做真实调用验证。最直接的方式是用 Claude Code 的非交互模式跑一条指令,让它读取 skill 并执行。
先确认 Claude Code 已安装:
claude --version然后进入项目目录,执行一条最小验证命令:
claude -p "列出当前可用的 skills,并说明每个 skill 的用途" --output-format text如果配置正确,你会看到它列出 .claude/skills 下的 skill 名称和描述。这一步验证的是 settings.json 的 skills 配置和 API 通道同时生效。
再进一步,让它实际调用一个 skill 做点事:
claude -p "使用 docx skill 生成一个包含标题和一段正文的 Word 文档,保存为 demo.docx" --output-format text跑完后检查文件:
ls -lh demo.docx如果 demo.docx 存在且大小合理,说明从 Key 到通道到 skill 执行整条链路通了。你也可以用 Python 直接验证 API 通道,绕过 Claude Code:
import os from anthropic import Anthropic client = Anthropic( api_key=os.environ["TAOTOKEN_API_KEY"], base_url=os.environ["ANTHROPIC_BASE_URL"], ) resp = client.messages.create( model="claude-sonnet-4-20250514", max_tokens=256, messages=[{"role": "user", "content": "回复一句:通道正常"}], ) print(resp.content[0].text)运行 python verify.py,输出「通道正常」就说明 Key 和基址都对。这一步和 Claude Code 的验证是互补的:前者验证 SDK 层,后者验证 skill 加载层。
6. 本篇常见错排查
报 401 或 authentication_error,九成是 Key 没生效。先 echo $TAOTOKEN_API_KEY 看有没有值,再确认 settings.json 里引用的是 ${TAOTOKEN_API_KEY} 而不是写死的旧 Key。如果 shell 配置改了但没 source,新开的终端才有值。
报 model not found,检查 ANTHROPIC_MODEL 写的模型名是否在 TaoToken 支持的列表里。不确定就先去模型对话页面确认可用模型名,再回填到 settings.json。
skill 不加载,先看 .claude/skills 下每个目录是否有 SKILL.md,再看 SKILL.md 的 frontmatter 里 name 和 description 是否完整。description 太短会导致匹配失败,建议写清楚用途和触发场景。另外确认 settings.json 里 skills.autoLoad 是 true,directory 路径没有拼错。
脚本执行被拒,多半是 permissions.allow 没放开对应命令。看报错里提示的是哪个命令被拦,把它加进 allow 列表。不要图省事直接放开全部权限,按需加更安全。
改了 settings.json 不生效,Claude Code 需要重启会话才会重新读取配置。退出当前会话再进,或者用 /config 相关命令确认当前加载的配置来源。
7. 后续怎么用:从验证到长期编码
跑通这个最小案例后,你可以把 settings.json 作为模板复制到其他项目,只改 skills.directory 和模型名。Key 始终走环境变量,团队协作时每个人用自己的 Key,配置文件可以安全提交。
如果你要长期用 Claude Code 跑 Skills 做编码或 Agent 任务,建议把 Key 管理和额度规划分开处理。API Keys 页面用来创建和轮换 Key: https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite 。接入细节和参数说明看文档: https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite 。高频编码场景再考虑 Coding Plan,普通验证和轻量调用用按次通道就够了。
最后提醒一句:settings.json 里永远不要写明文 Key,也不要提交任何本地通道配置。把 Key 留在环境变量里,把配置骨架留在仓库里,这样换机器、换模型、换项目都只需要改一处。