1. 从 Superpower 到 Matt Pocock:Claude Code skill 工作流为什么要迁移
如果你最近在 Claude Code 里用 Superpower 那套 skills,大概率会有一种感觉:方法很完整,但日常用起来太重了。它把using-superpowers放在所有对话的第一步,哪怕你只是问一句「这个函数为什么报错」,它也要先把整套流程加载进来。需求、brainstorming、writing-plans、TDD、审查、verification,一条龙确实严谨,适合需求模糊、改动大、要留设计依据的任务,但日常小改动就显得繁琐。
Matt Pocock 的 skills 走了另一条路:不设对话开始时的总入口,把 skill 分成两类。一类是主动调用的 slash command,比如grill-me、to-spec、to-tickets、implement、handoff、writing-great-skills;另一类是diagnosing-bugs、tdd、prototype、research、code-review、resolving-merge-conflicts,只在合适的时候被调用。大部分 skill 带disable-model-invocation标志,你不主动敲 slash command,它就不会加载进上下文。
这个变化带来的直接问题是:原来 Superpower 那套 endpoint 与鉴权配置,需要迁移到新的 skill 调用链上。而迁移过程中,很多人会把 Base URL、Key、Model ID 三件套配错,导致 skill 调用直接 401 或者local proxy failed。这篇就把迁移步骤、可复制的 settings 配置、验证动作和常见报错一次讲清楚,让你把 Claude Code 的 skill 配置改到 TaoToken 统一通道。
先说清楚 TaoToken 在这里的角色。它是一个统一的模型接入通道,Claude Code、Cline、Codex 这类工具都可以通过它拿到兼容的 API endpoint 和 Key。官网是 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 地址是 https://taotoken.net/api 。你不需要在每个 skill 里单独写一套鉴权,只要把 Claude Code 的 settings 指向这个统一通道,skill 调用就会走同一条链路。
迁移的核心逻辑其实就一句话:把原来散落在 Superpower 配置里的 endpoint 和 Key,收敛到 Claude Code 的 settings 文件里,让所有 skill 共用一套鉴权。Matt Pocock 的 skill 是主动调用的,调用时才会发请求,所以配置正确与否,一次 skill 调用就能验证出来。
我试过把 Superpower 和 Matt Pocock 两套 skill 放在同一个项目里对比,Superpower 的问题是每次对话都加载,Matt Pocock 的问题是如果你不主动调用,它就像不存在。迁移到 TaoToken 之后,两者的请求都走同一个 endpoint,日志里能清楚看到 Key 来源和请求路径,排查起来反而更简单。
下面按「前置准备 → 可复制配置 → 验证请求 → 错排查」的顺序走,每一步都给完整命令和参数,你可以直接跟做。
2. TaoToken 前置准备:Base URL、Key 与 Model ID 三件套怎么拿
迁移之前,先把三件套准备好:Base URL、API Key、Model ID。这三样缺一个,skill 调用都会失败。很多人迁移卡住,不是配置写错,而是 Key 没生成或者 Model ID 写了个不存在的名字。
Base URL 用 https://taotoken.net/api ,注意这里不加任何 UTM 参数,保持干净。API Key 需要到控制台生成,地址是 https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite 。生成之后复制出来,注意不要带空格,也不要把它提交到 git 仓库里。Model ID 则取决于你要调用的模型,Claude Code 场景下通常用 Claude 系列,具体名称以控制台或文档为准,文档入口在 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite 。
如果你还没生成 Key,可以先去 API Keys 页面:https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite 。生成时建议按用途命名,比如claude-code-skill,这样后面在日志里核对 Key 来源时,一眼就能认出是哪个 Key 在发请求。
这里有个容易踩的坑:Superpower 时代的配置可能把 endpoint 写死在某个 skill 的配置文件里,或者写在环境变量ANTHROPIC_BASE_URL里。迁移时不要两处都留,否则会出现「一部分 skill 走旧通道、一部分走新通道」的混乱。正确做法是统一收敛到 Claude Code 的 settings 文件,环境变量只作为兜底。
另外,Matt Pocock 的 skill 里有disable-model-invocation标志,意味着它们不会在对话开始时自动加载。这对配置验证其实是好事:你敲一次 slash command,就发一次请求,成功与否立刻可见,不会像 Superpower 那样被一堆自动加载的 skill 干扰判断。
准备阶段还要确认一件事:你的 Claude Code 版本是否支持 settings 文件里的自定义 endpoint。如果版本太旧,可能只认环境变量。建议先升级到较新版本,再按下面的配置写。升级命令取决于你的安装方式,npm 安装的话通常是npm update -g @anthropic-ai/claude-code,具体以官方说明为准。
三件套准备好之后,先别急着改配置,用一条 curl 命令验证 Key 本身是否可用。这一步能帮你把「Key 无效」和「配置写错」两类问题分开:
curl -X POST https://taotoken.net/api/v1/messages \ -H "Content-Type: application/json" \ -H "x-api-key: $TAOTOKEN_API_KEY" \ -H "anthropic-version: 2023-06-01" \ -d '{ "model": "claude-sonnet-4-20250514", "max_tokens": 64, "messages": [{"role": "user", "content": "ping"}] }'如果这条命令返回正常内容,说明 Key 和 endpoint 都没问题,接下来只需要把它写进 Claude Code 的 settings。如果返回 401,那就是 Key 的问题,回控制台重新生成一个。如果返回local proxy failed,那多半是网络层或 endpoint 写错,检查 Base URL 是不是https://taotoken.net/api。
注意:curl 里的
x-api-key是 Anthropic 兼容格式,TaoToken 的 API 地址是 https://taotoken.net/api ,不要写成带/v1之外的奇怪路径。Model ID 以你实际可用的为准,上面只是示例。
3. 可复制配置:Claude Code settings 与 skill 迁移片段
这一节是迁移的核心。Claude Code 的配置通常放在用户目录下的.claude/settings.json,项目级配置放在项目根目录的.claude/settings.json。迁移时建议先改用户级,确认没问题再同步到项目级。
先看用户级 settings 的完整片段,路径是~/.claude/settings.json:
{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_API_KEY": "sk-你的TaoTokenKey", "ANTHROPIC_MODEL": "claude-sonnet-4-20250514" }, "permissions": { "allow": [ "Bash(git status)", "Bash(git diff:*)", "Read", "Edit" ] } }这里三件套齐全:ANTHROPIC_BASE_URL是 Base URL,ANTHROPIC_API_KEY是 Key,ANTHROPIC_MODEL是 Model ID。把sk-你的TaoTokenKey换成你在控制台生成的真实 Key。注意 JSON 里不能有注释,也不能有多余逗号,否则 Claude Code 启动时会解析失败。
如果你用的是项目级配置,路径是<项目根>/.claude/settings.json,内容结构一样,但建议只放项目相关的权限,Key 还是放用户级,避免误提交。项目级可以这样写:
{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_MODEL": "claude-sonnet-4-20250514" } }Key 通过用户级或环境变量注入,项目级不写 Key,这样团队协作时不会把密钥泄露出去。
接下来是 skill 迁移。Matt Pocock 的 skill 通常以插件形式安装,安装后会在.claude/skills或插件目录下生成 skill 定义。迁移时不需要改每个 skill 的内部逻辑,只要确认它们发请求时走的是 Claude Code 的全局 endpoint 即可。也就是说,skill 本身不持有 endpoint 和 Key,它们继承 Claude Code 的配置。
如果你之前用 Superpower,可能在某个 skill 的配置里见过类似endpoint或apiKey字段。迁移时把这些字段删掉,让 skill 走全局配置。删除前先备份,命令如下:
cp -r ~/.claude/skills ~/.claude/skills.bak然后检查 skill 目录里有没有硬编码的 endpoint:
grep -rn "ANTHROPIC_BASE_URL\|api_key\|endpoint" ~/.claude/skills如果输出里有旧地址,把它改成https://taotoken.net/api,或者直接删掉让全局配置生效。Matt Pocock 的 skill 大多带disable-model-invocation,所以它们不会自动加载,你敲 slash command 时才发请求,这也意味着配置错误只会在你主动调用时暴露,不会在启动时炸掉。
对于 Cline 或 Codex 用户,如果同时用 MCP,配置要写全三件套。Cline 的 MCP 配置里 Base URL 填https://taotoken.net/api,Key 填 TaoToken Key,Model ID 填你用的模型。Codex 的auth.json里同样要有这三样,缺一个都会导致reading choices之类的报错。
提示:settings.json 改完后,重启 Claude Code 让配置生效。不要一边改一边测,否则可能读到旧配置。
配置写好后,可以用claude config list或类似命令确认当前生效的 endpoint。不同版本命令略有差异,以你本地claude --help输出为准。
4. 验证请求:发起一次 skill 调用并核对日志 endpoint
配置写完,必须验证。验证的目标有两个:一是 skill 调用能正常返回,二是日志里能看到请求走了 TaoToken 的 endpoint,并且 Key 来源正确。
先发起一次 Matt Pocock 的 skill 调用。在 Claude Code 里敲:
/mattpocock-skills:grill-me 我想给一个 React 组件加缓存这条命令会触发grill-meskill,它不依赖项目目录,会开始追问你的想法。如果配置正确,你会看到 Claude 开始反问目标、约束和方案,而不是直接报错。这一步成功,说明 skill 调用链已经走通。
如果grill-me没反应,先检查 skill 是否安装成功。列出已安装 skill:
ls ~/.claude/skills确认mattpocock-skills目录存在。如果不存在,按插件安装说明重新装一次。
接下来核对日志。Claude Code 的日志通常在~/.claude/logs或项目下的.claude/logs。查看最近的请求记录:
tail -n 50 ~/.claude/logs/*.log在日志里找 endpoint 和 Key 来源。你应该能看到请求发往https://taotoken.net/api,而不是旧的 Superpower endpoint。Key 来源应该显示为你配置的那个 Key 名称或前缀。如果日志里出现local proxy failed,说明请求没发出去,检查 Base URL 和网络;如果出现 401,说明 Key 无效,回控制台重新生成。
再验证一次带项目上下文的 skill,比如to-spec:
/mattpocock-skills:to-spec 把刚才讨论的缓存方案写成规格这个 skill 会读取仓库现状,确认测试边界,然后写规格。如果它能正常读取文件并输出规格,说明 skill 与 TaoToken 通道配合正常。
对于 Codex 用户,验证方式类似,但要看auth.json是否被正确读取。可以跑一条最小请求:
codex exec "print hello"如果返回正常,说明auth.json里的 Base URL、Key、Model ID 三件套都对。如果报reading choices错误,通常是 Model ID 写错或 Key 无效。
验证通过后,建议把这次成功的配置片段记下来,后面换机器或团队协作时直接复用。日志里核对 endpoint 和 Key 来源这个动作,建议每次迁移后都做一遍,比事后猜问题快得多。
5. 本篇常见错排查:401、local proxy failed、reading choices、OAuth
迁移过程中最常见的四类报错,这里逐个对照。
401 Unauthorized。这是 Key 问题。可能原因有三个:Key 复制时带了空格或换行;Key 已过期或被删除;settings 里ANTHROPIC_API_KEY写成了别的变量名。排查方法:回控制台 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite 重新生成一个 Key,替换 settings 里的值,重启 Claude Code。如果还报 401,用第 2 节的 curl 命令单独测 Key,把 Key 问题和配置问题分开。
local proxy failed。这个报错通常出现在请求根本没发出去的时候。可能原因:Base URL 写错,比如写成了https://taotoken.net少了/api;本地网络无法访问该地址;或者环境变量和 settings 里的 endpoint 冲突。排查方法:先确认ANTHROPIC_BASE_URL是https://taotoken.net/api,再检查环境变量里有没有旧的ANTHROPIC_BASE_URL覆盖了 settings。用echo $ANTHROPIC_BASE_URL看一下当前值,如果和 settings 不一致,以 settings 为准,清掉环境变量里的旧值。
reading choices 报错。这个多见于 Codex 或 Cline 的 MCP 配置。原因是请求返回的结构不符合预期,通常是 Model ID 写错,或者 Base URL 指向了一个不兼容的 endpoint。排查方法:确认auth.json或 MCP 配置里 Base URL 是https://taotoken.net/api,Model ID 是控制台里实际可用的名称。三件套缺一个都会导致这个错,所以 Base URL、Key、Model ID 要一起检查。
OAuth 相关报错。如果你之前用 OAuth 方式登录过 Claude Code,迁移到 TaoToken 后可能残留旧的 OAuth 凭据,导致请求走旧通道。排查方法:清理旧的 OAuth 缓存,通常在~/.claude下,找到凭据文件后备份再删除,然后重启 Claude Code,让它重新读取 settings 里的 Key。注意不要删整个.claude目录,只删凭据相关文件。
除了这四类,还有一个隐蔽问题:skill 里硬编码了旧 endpoint。用第 3 节的grep命令扫一遍 skill 目录,把旧地址替换掉。Matt Pocock 的 skill 大多不持有 endpoint,但如果你从 Superpower 迁移过来,旧 skill 可能还留着硬编码。
注意:排查时一次只改一个变量,改完就测。同时改多个地方,出问题后很难定位是哪个改动导致的。
如果以上都排查完还是不通,可以去接入文档 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite 对照最新的 endpoint 和参数说明,或者到模型对话页面 https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite 手动发一条消息,确认通道本身可用。
6. 迁移后的日常使用与 CTA
迁移完成后,日常使用其实更清爽了。Matt Pocock 的 skill 是主动调用的,你不需要它的时候,它不会占用上下文。需要追问想法就敲/mattpocock-skills:grill-me,需要写规格就敲/mattpocock-skills:to-spec,需要拆任务就敲/mattpocock-skills:to-tickets,需要实现就敲/mattpocock-skills:implement。每个动作对应一次明确的请求,走 TaoToken 统一通道,日志里能追溯。
如果你长期在 Claude Code 里做编码和 Agent 任务,可以考虑用 Coding Plan,入口是 https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite 。它适合把 skill 调用、代码生成、审查这些高频动作放在一条稳定通道上。如果只是偶尔验证模型效果,用模型对话页面就够了:https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite 。
迁移这件事,说到底就是把散落的 endpoint 和 Key 收敛到一处。Superpower 的严谨流程适合大改动,Matt Pocock 的主动调用适合日常节奏,两者都可以跑在 TaoToken 这条统一通道上。配置写对、验证一次、核对日志,后面就很少再折腾了。