1. 135 个 Skill 装进 Claude Code 之后,为什么你只会用到 5 个
ECC(everything-claude-code)这个仓库在 AI 编程圈子里传播得很广,175K+ stars,30 个 Agent、135 个 Skill、60 个 Command,外加安全扫描、记忆持久化、跨平台支持。光看数字确实唬人,但真正把它装进 Claude Code 跑上一段时间之后,多数人的感受是一样的:日常反复调用的 Skill 不超过 5 个,剩下 130 个基本躺在目录里吃灰。
这不是 ECC 做得不好,而是 Skill 这个机制本身有个容易被忽略的成本——每个激活的 Skill 都会占用上下文窗口,都会参与模型的路由判断。当你同时挂着几十个 Skill,模型在决定"该用哪个"的时候反而更容易选错,或者干脆忽略掉你真正想要的那个。这就像给一个厨师同时递上 135 把刀,他切菜的时候反而不知道该拿哪把。
这篇不打算做完整评测,而是聚焦一个具体问题:在 Claude Code 里加载 ECC 全家桶之后,怎么从 Command 与 Agent 协作的角度,把真正高频可用的那几个筛出来,并且给出可复制的启用清单和逐项验证动作。适合已经在用 Claude Code、想引入 ECC 但不想被 Skill 数量淹没的开发者。核心检索词就三个:ECC、Skill 筛选、Claude Code Agent 协作。
先说结论,我实测下来长期保留的是这几个方向的能力:强制先出方案的流程控制类、跨会话上下文续接类、测试前置拦截类、上下文容量预警类、权限模式自动切换类。它们共同的特点是——不依赖具体语言或框架,每次开新会话都能用上,而且解决的是 Claude Code 本身没做好的那部分。
反过来,那些"write-clean-code""follow-best-practices"之类的通用规范类 Skill,对有经验的开发者价值接近于零,因为模型本来就会往干净代码的方向写;那些 tdd-guard、tdd-enforcer、tdd-checker 名字不同但能力高度重合的,装一个就够;还有"convert-csv-to-json""add-pagination-to-spring-boot"这种一次性任务型 Skill,需要的时候直接描述需求就行,没必要常驻。
下面按"先讲清楚问题场景 → 接入前置 → 可复制配置 → 验证请求 → 报错排查 → 后续动作"的顺序展开,每一步都给到能直接跑的命令和配置。
2. 接入前的准备:TaoToken 与 Claude Code 的对接方式
在动 ECC 之前,得先保证 Claude Code 本身能正常跑起来。Claude Code 走的是 Anthropic 的接口协议,国内直连不稳定,所以通常需要一个兼容 Anthropic 协议的接入点。TaoToken 提供的就是这类接入能力,官网在 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 端点是 https://taotoken.net/api 。
这里要强调一点:TaoToken 是合规的 API 接入服务,不是那种灰色中转,配置的时候按官方文档给的 Base URL 和 Key 填就行。Claude Code 的配置入口在~/.claude/settings.json(全局)或项目根目录的.claude/settings.json(项目级)。如果你用的是 Claude Code 的 Anthropic 兼容模式,需要设置环境变量或者写进 settings 文件。
先确认 Claude Code 版本,太老的版本对 Skill 机制支持不完整:
claude --version # 建议 1.x 以上,低于这个版本先升级 npm install -g @anthropic-ai/claude-code然后配置接入信息。推荐用环境变量的方式,避免把 Key 写死在文件里:
export ANTHROPIC_BASE_URL="https://taotoken.net/api" export ANTHROPIC_API_KEY="你的 TaoToken Key"如果你更习惯写进配置文件,~/.claude/settings.json长这样:
{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_API_KEY": "sk-你的key" } }Key 的获取在控制台的 API Keys 页面:https://taotoken.net/console/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api_keys&utm_campaign=rewrite 。拿到之后先别急着装 ECC,用一次最简单的对话验证链路通不通:
claude -p "回复 ok 两个字"能正常返回就说明 Base URL、Key、模型 ID 三件套是对的。这一步没过,后面装再多 Skill 都是白搭。模型 ID 这块,Claude Code 默认会用一个 Claude 系列模型,如果你想指定,可以在 settings 里加"model": "claude-sonnet-4-5"之类的字段,具体可用模型以 TaoToken 文档为准:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite 。
链路通了之后,再装 ECC。ECC 的安装方式官方给的是:
npx skills@latest add affaan-m/everything-claude-code装完之后项目里会多出一整套目录:agents/、skills/、commands/、hooks/、rules/。注意,135 个 Skill 全部可用,但默认不会同时激活——Claude Code 的 Skill 是按需加载的,你得在配置里显式声明哪些要常驻。这就是筛选的入口。
3. 可复制的 Skill 启用清单与配置片段
筛选的逻辑其实不复杂:一个 Skill 值不值得常驻,看它是不是"每次开新会话都可能触发、且解决的是 Claude Code 原生没覆盖的流程问题"。按这个标准,我把 135 个过了一遍,留下 5 个方向。下面给出可直接复制的配置。
Claude Code 的 Skill 启用写在.claude/settings.json里,用enabledSkills字段声明。一个最小可用的配置片段:
{ "enabledSkills": [ "plan-first", "conversation-summarizer", "tdd-guard", "ctx-sizer", "mode-switcher" ], "skillSettings": { "ctx-sizer": { "threshold": 0.75 }, "tdd-guard": { "testPatterns": ["**/*.test.ts", "**/*.test.py", "**/test_*.py"] } } }如果你用的是 TOML 风格的配置(部分 Claude Code 版本支持),等价写法:
[skills] enabled = ["plan-first", "conversation-summarizer", "tdd-guard", "ctx-sizer", "mode-switcher"] [skills.ctx-sizer] threshold = 0.75 [skills.tdd-guard] test_patterns = ["**/*.test.ts", "**/*.test.py", "**/test_*.py"]逐个说清楚这 5 个为什么留:
plan-first解决的是"AI 上来就动手改代码"的问题。它把"先出方案"从对话层面的提醒变成了流程控制层面的强制步骤。接到需求后,它会走"分析 → 方案设计 → 等你确认 → 执行"这条链路,你不确认它不动手。跟 Karpathy 的 Think Before Coding 思路接近,但更结构化。适合涉及 schema 变更、多文件改动、有数据风险的任务。
conversation-summarizer解决跨会话上下文丢失。每次会话结束自动生成一份结构化摘要存到.claude/conversation-summary.md,下次启动自动注入。摘要里会记录已做的决策、进行中的任务、待定事项。这样你关掉重开,AI 不用你重新解释一遍"我们在做什么"。
tdd-guard是拦截型的,不帮你写测试,而是在你要执行代码修改时检查测试文件在不在。不在就阻止修改,逼你先补测试。适合已经有测试基础设施、但经常忘了先写测试的团队。
ctx-sizer在 token 用量接近阈值时主动提醒。上下文过载的典型信号是:AI 开始引用已经被推翻的早期方案、遗忘你十分钟前的指令、反复改同一个文件。它在 75% 左右提醒你收尾,给你机会先跑 summarizer 再开新会话。
mode-switcher处理权限模式切换。日常 acceptEdits 模式够用,但偶尔要跑pip install或npm install这种需要网络的操作,权限不够。它会检测到需要更高权限时主动提出来帮你切,单个操作完成后自动切回,不会一直开着高权限。
这 5 个加起来不到 200 行 YAML/Markdown,对大多数项目够用了。剩下的 130 个,按前面说的三类——过于通用、重复、场景太窄——基本可以不用常驻。
4. 逐项验证:怎么确认这些 Skill 真的生效了
配置写完不代表生效,得逐项验证。下面给每个 Skill 一个可复制的验证动作,跑一遍就知道有没有真正加载。
先确认 Skill 列表被正确读取:
claude -p "/skills list"如果输出里能看到 plan-first、conversation-summarizer 这几个名字,说明配置被读到了。看不到就回去检查.claude/settings.json的路径和字段名。
验证 plan-first:给它一个涉及多文件改动的需求,看它会不会停下来出方案。
claude -p "给这个 FastAPI 项目加一个 audit_log 表的 Alembic 迁移"正常表现是它不直接改文件,而是输出一段 Proposal,包含改动范围、风险、预估时间,最后问 Proceed? [Y/n]。你输入 y 它才动手。如果它直接开始改代码,说明 plan-first 没生效。
验证 conversation-summarizer:跑一次会话,结束后检查摘要文件。
ls -la .claude/conversation-summary.md cat .claude/conversation-summary.md文件里应该有 Session Summary、Decisions Made、In Progress、Decisions Pending 这几段。然后新开一个会话,问它"我们上次在做什么",看它能不能接上。
验证 tdd-guard:故意在一个没有测试文件的模块上让它改代码。
claude -p "修改 src/utils/parser.py 里的 parse_date 函数"如果 tdd-guard 生效,它会提示缺少对应测试文件,阻止修改。你补上test_parser.py之后再试,就能通过。
验证 ctx-sizer:这个不太好主动触发,但可以调低阈值测试。把配置里的 threshold 改成 0.1,然后跑一段长对话,看它会不会在早期就提醒。验证完记得改回 0.75。
验证 mode-switcher:让它执行一个需要网络的操作。
claude -p "帮我安装 alembic 依赖"正常表现是它检测到当前模式阻止网络访问,主动问你要不要临时切到更高权限模式。你确认后它执行,执行完自动切回。
这五项都跑通,说明你的 ECC 筛选配置是有效的。任何一项没反应,先看 §5 的排查。
5. 常见报错与排查:401、local proxy failed、reading choices、OAuth
配置过程中最容易撞上的几类报错,逐个说清楚原因和解法。
401 Unauthorized:最常见,基本是 Key 的问题。先确认环境变量有没有被正确读取:
echo $ANTHROPIC_API_KEY echo $ANTHROPIC_BASE_URL如果输出为空,说明 export 没生效,或者你是在另一个 shell 里跑的。检查~/.claude/settings.json里的 env 字段有没有写对,Key 有没有多余空格。还有一种情况是 Key 本身失效了,去控制台重新生成一个:https://taotoken.net/console/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api_keys&utm_campaign=rewrite 。
local proxy failed / connection refused:这个通常出现在你本地配了代理但代理没起来,或者 Base URL 写错了。先确认 Base URL 是https://taotoken.net/api,注意结尾不要多加斜杠。然后检查本地有没有残留的代理环境变量:
env | grep -i proxy如果有HTTP_PROXY或HTTPS_PROXY指向一个已经关掉的本地端口,清掉它们:
unset HTTP_PROXY HTTPS_PROXY http_proxy https_proxyError reading choices / unexpected response format:这个报错说明请求发出去了,但返回的结构不是 Claude Code 期望的格式。常见原因是模型 ID 写错了,或者 Base URL 指向了一个不兼容 Anthropic 协议的端点。确认你的配置里 Base URL 是 TaoToken 的 API 地址,模型 ID 用文档里列出的可用值。如果用了自定义模型名,先换回默认的试一次。
OAuth 相关报错:Claude Code 某些版本会尝试走 OAuth 流程,如果你用的是 API Key 模式,需要确保没有残留的 OAuth 凭证干扰。检查:
ls -la ~/.claude/如果有credentials.json之类的 OAuth 缓存文件,且你确定走的是 API Key 模式,可以备份后移走,让它重新按 Key 认证。
Skill 加载了但没生效:先跑/skills list确认名字对得上。ECC 里有些 Skill 名字带前缀或命名空间,配置里要写全名。另外确认 Claude Code 版本支持enabledSkills字段,老版本可能用的是别的字段名,以你本地版本的文档为准。
排查的顺序建议是:先验证链路(§2 的claude -p "回复 ok"),再验证 Skill 列表,最后逐项验证单个 Skill。链路不通的时候不要往下查 Skill,会浪费很多时间。
6. 筛选之后:把 ECC 当精选菜单而不是全家桶
ECC 最大的价值其实不是"全",而是它提供了一个已经整理过的精选菜单。你不需要去几千个 Skill 里海选,直接从 135 个里挑 3 到 5 个适合自己的装进项目就行。我自己的日常配置就是 plan-first + conversation-summarizer + ctx-sizer 这三个,加上 tdd-guard 和 mode-switcher 按项目需要开。
还有一个被低估的用法:ECC 的agents/和hooks/目录可以直接当模板参考。即使你不装它的 Skill,翻一翻它怎么定义 Agent 角色、怎么写 Hook 脚本,比看文档快得多。这部分对想自己搭 Agent 协作流程的人特别有用。
如果你打算长期在 Claude Code 里跑编码和 Agent 任务,可以考虑 Coding Plan,比按量调用更划算:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding_plan&utm_campaign=rewrite 。想先验证模型对话效果的话,模型对话入口在 https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_content=chat&utm_campaign=rewrite 。接入过程中遇到配置问题,文档里基本都有对应说明:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite 。
最后给一个实操建议:装完 ECC 之后,先别急着开一堆 Skill。从 plan-first 开始,用一周,感受一下"强制先出方案"对你有多少价值。然后再加 conversation-summarizer,再感受一周。一个一个加,你才能知道每个 Skill 到底有没有在帮你。一次性全开,出了问题你都不知道是哪个 Skill 在捣乱。