1. 为什么你的 Claude Code 每次都要重新教一遍
如果你已经在用 Claude Code 写代码,大概率遇到过这种场景:新开一个会话,它又忘了你们团队的代码规范;让它做代码审查,它给的建议每次风格都不一样;明明上次已经说清楚"先写测试再实现",这次它还是上来就改业务逻辑。问题不在于模型能力,而在于你把所有工程约束都放在了"对话记忆"里,而对话是会丢的。
everything-claude-code 这个仓库解决的正是这件事。它把 Claude Code 的 agents、skills、hooks、rules、commands 拆成一个个可复用的组件单元,让"规划→测试→实现→评审→验证"这套工程节奏变成工具行为,而不是靠你每次手动提醒。简单说,它是一套可安装、可迁移、可组合的 Claude Code 工程化工作流组件库,适合已经在团队里推广 Claude Code、但苦于流程不统一的开发者和技术负责人。
我试过把它的目录结构直接拷进项目,配合 TaoToken 提供的 API 接入,跑通了一条从/plan到/verify的确定性任务链。下面把目录结构、组件清单、可复制的配置示例和验证步骤完整拆给你,你可以照着做一遍。
核心检索词先明确:everything-claude-code 是一套 Claude Code 工作流组件库,通过 agents/skills/hooks 把软件工程流程固化成可复用单元,适合团队统一 AI 编码规范。
2. TaoToken 接入 Claude Code 的前置准备
在拆解组件之前,得先让 Claude Code 能稳定跑起来。Claude Code 官方 CLI 需要配置 API 端点和密钥,这里用 TaoToken 作为接入层,它的 API 地址是https://taotoken.net/api,兼容 Anthropic 的接口格式,配置方式和官方一致。
你需要准备三样东西:Base URL、API Key、Model ID。这三件套在后面的 settings.json、环境变量、以及 hooks 脚本里都会用到,先记牢。
第一步,去 TaoToken 控制台创建一个 API Key。打开https://taotoken.net/api-keys(带 utm 的完整链接是https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite),登录后新建一个 Key,复制保存。这个 Key 只显示一次,丢了就得重建。
第二步,确认你要用的 Model ID。Claude Code 场景下常用的是 Claude 系列模型,具体可用的模型名在模型对话页面能查到:https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_content=model-chat&utm_campaign=rewrite。选一个支持长上下文和工具调用的模型,因为 agents 和 hooks 会频繁触发工具调用。
第三步,理解 Claude Code 的配置加载顺序。它读取配置的优先级是:项目级.claude/settings.json> 用户级~/.claude/settings.json。everything-claude-code 的 hooks 和 rules 既可以装在用户级(全局生效),也可以装在项目级(只对当前项目生效)。团队统一流程建议装项目级,跟着仓库走,新人 clone 下来就有。
这里有个容易踩的坑:很多人把 API Key 直接写进 settings.json 提交到 git,这是安全事故。正确做法是用环境变量。Claude Code 支持从环境变量读取ANTHROPIC_API_KEY和ANTHROPIC_BASE_URL,你在 shell 里 export,或者用.env文件配合 direnv 之类的工具加载。
配置好之后,先跑一个最小验证,确认 Claude Code 能连上:
export ANTHROPIC_BASE_URL="https://taotoken.net/api" export ANTHROPIC_API_KEY="你的Key" claude --version claude -p "回复 ok 两个字母"如果返回ok,说明接入层通了。这一步没过,后面所有组件都跑不起来,所以别跳过。
关于 Coding Plan,如果你打算长期在团队里跑 Agent 工作流,可以了解下https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite,它针对高频编码场景做了额度优化,比按量计费更适合天天跑/plan/tdd的团队。
3. 可复制的目录结构与 hooks/skills 配置
everything-claude-code 的目录设计是它最值得抄的部分。它把不同职责的组件分开放,每个目录对应 Claude Code 的一个机制。下面是精简后的目录结构,你可以直接照着建:
your-project/ ├── .claude/ │ ├── settings.json # hooks + 权限 + 环境配置 │ ├── agents/ # 子代理定义 │ │ ├── planner.md │ │ ├── code-reviewer.md │ │ └── security-reviewer.md │ ├── skills/ # 技能(含斜杠命令) │ │ ├── tdd-workflow/ │ │ │ └── SKILL.md │ │ └── verification-loop/ │ │ └── SKILL.md │ ├── rules/ # 常驻规则约束 │ │ ├── security.md │ │ ├── coding-style.md │ │ └── testing.md │ └── hooks/ # 事件钩子脚本 │ ├── hooks.json │ └── scripts/ │ ├── session-start.js │ └── evaluate-session.js └── CLAUDE.md # 项目级上下文说明关键点:agents/放子代理,skills/放技能,rules/放常驻约束,hooks/放事件自动化。这四类组件的触发机制完全不同,混在一起会乱。
先说 hooks 配置。hooks 是 Claude Code 在生命周期事件点自动执行的脚本,配置写在settings.json里。下面是一份可复制的 hooks 配置,覆盖会话开始、工具调用前、会话结束三个关键点:
{ "hooks": { "SessionStart": [ { "matcher": "*", "hooks": [ { "type": "command", "command": "node .claude/hooks/scripts/session-start.js" } ] } ], "PreToolUse": [ { "matcher": "Write|Edit", "hooks": [ { "type": "command", "command": "node .claude/hooks/scripts/pre-write-guard.js" } ] } ], "Stop": [ { "matcher": "*", "hooks": [ { "type": "command", "command": "node .claude/hooks/scripts/evaluate-session.js" } ] } ] } }SessionStart在会话开始时注入项目上下文,PreToolUse匹配Write|Edit在写文件前做检查,Stop在每轮回复结束时评估会话。matcher 支持正则,比如mcp__memory__.*可以匹配特定 MCP 工具。
再说 skills 配置。一个 skill 就是一个目录,里面必须有SKILL.md,顶部用 YAML frontmatter 定义元信息。下面是一个 TDD 工作流 skill 的完整示例:
--- name: tdd-workflow description: 当用户要求用测试驱动方式开发新功能或修复 bug 时触发,强制先写测试再实现 disable-model-invocation: false allowed-tools: Read, Write, Edit, Bash --- # TDD 工作流 ## 执行步骤 1. 先阅读相关源码,理解现有测试框架和约定 2. 编写失败的测试用例,覆盖正常路径和边界条件 3. 运行测试,确认测试失败(RED) 4. 编写最小实现让测试通过(GREEN) 5. 重构代码,保持测试通过(REFACTOR) 6. 输出测试覆盖率报告 ## 约束 - 禁止在测试通过前修改实现逻辑 - 每个测试用例必须有明确的断言 - 覆盖率目标不低于 80%frontmatter 里的name决定斜杠命令名,输入/tdd-workflow就能触发。description决定模型能否自动加载它。disable-model-invocation: true表示只允许手动触发,适合有副作用的流程比如部署。allowed-tools限制这个 skill 执行期能用哪些工具,只读场景就只给 Read。
agents 的配置类似,放在.claude/agents/下,frontmatter 里可以配tools、permissionMode、skills。比如一个代码审查 agent:
--- name: code-reviewer description: 代码提交前做质量审查,检查可维护性、一致性和潜在 bug tools: Read, Grep, Glob permissionMode: plan --- 你是一个严格的代码审查者。审查时关注: - 命名是否清晰一致 - 是否有重复逻辑可以抽取 - 边界条件是否处理 - 错误处理是否完整 - 是否符合项目 coding-style 规则permissionMode: plan表示这个 agent 只读不写,审查完给建议,不直接改代码。这比让它直接改安全得多。
4. 跑通一次确定性任务链的验证步骤
配置写好了,得验证它真的能跑。下面用"实现一个用户注册接口"这个任务,走一遍从规划到验证的完整链路,每一步都有明确的输入和预期输出。
第一步,触发规划。在 Claude Code 里输入:
/plan 为当前项目实现用户注册接口,技术栈 Node.js + Express + PostgreSQL。 需求:邮箱注册、密码 bcrypt 加密、返回 JWT token。 拆分成 5-8 个任务,识别安全风险。预期:Claude 进入计划模式,输出任务清单(用户模型设计 → 加密工具 → 注册接口 → 测试 → 中间件等)和风险提示(密码复杂度、JWT 密钥管理)。这时候不要让它直接实现,选择"tell ask claude"继续调整,直到计划满意。
第二步,触发 TDD。计划确认后输入:
/tdd-workflow 为注册接口编写测试用例,使用 Jest。 覆盖:邮箱格式校验、密码长度校验、重复邮箱、成功注册。预期:Claude 先写auth.test.js,包含失败和成功用例,然后运行测试确认失败(RED 阶段)。这一步的关键是它必须先跑测试看到红色,再写实现。
第三步,实现。退出计划模式,输入:
按照刚才的测试用例实现注册接口,使用 bcrypt 加密密码。预期:Claude 生成models/User.js、controllers/authController.js、routes/auth.js,然后运行测试直到全绿。
第四步,审查。输入:
/code-review 审查刚才的注册代码,检查 OWASP Top 10 风险。预期:code-reviewer agent 检查是否硬编码密钥、是否有 SQL 注入风险、密码校验是否合理,给出问题清单。
第五步,验证。输入:
/verify 运行所有测试,启动服务,模拟注册流程,报告结果。预期:Claude 跑测试、启动服务、发一个注册请求、检查返回的 token,最后汇总通过率。
整条链路跑下来,你会得到一个有测试、有审查、有验证证据的注册接口,而不是一段"能用但不敢改"的代码。这就是 everything-claude-code 的核心价值:它不自动帮你写代码,它强制你走流程。
验证过程中可以用模型对话页面单独测试某个模型对工具调用的支持情况:https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_content=model-chat&utm_campaign=rewrite,确认模型能正确解析 hooks 输出的 JSON。
5. 常见报错排查:401、local proxy failed、reading choices
配置过程中最容易卡在几个报错上,下面按真实错误信息对照排查。
报错一:401 Unauthorized
API Error: 401 - {"error":{"message":"invalid api key"}}原因通常是 API Key 没配对,或者环境变量没生效。排查顺序:先确认echo $ANTHROPIC_API_KEY有输出;再确认echo $ANTHROPIC_BASE_URL是https://taotoken.net/api(注意结尾不要多加/v1);最后确认 Key 没有多余空格。如果用的是 settings.json 里的env字段,注意 JSON 里不能有注释。
报错二:local proxy failed
Error: local proxy failed to start这个通常出现在你配置了本地代理端口但端口被占用,或者代理配置和 Base URL 冲突。Claude Code 本身不需要额外代理,直接连https://taotoken.net/api即可。检查你的 shell 里有没有残留的HTTP_PROXY/HTTPS_PROXY环境变量,有的话 unset 掉:
unset HTTP_PROXY HTTPS_PROXY http_proxy https_proxy报错三:reading 'choices' of undefined
TypeError: Cannot read properties of undefined (reading 'choices')这是响应格式不匹配导致的。choices是 OpenAI 格式的字段,Anthropic 格式用的是content。出现这个报错说明你的客户端在按 OpenAI 格式解析,但请求打到了 Anthropic 兼容端点。检查你的 Base URL 是否配错,或者某个中间层做了格式转换。Claude Code 应该直接用 Anthropic 格式,Base URL 设为https://taotoken.net/api。
报错四:OAuth token expired
OAuth token has expired, please re-authenticate如果你之前用官方账号登录过 Claude Code,它可能缓存了 OAuth token。切换到 API Key 模式后需要清掉旧凭证。删除~/.claude/下的凭证缓存文件,然后重新用环境变量方式启动。
报错五:hooks 脚本不执行
Hook command failed: node .claude/hooks/scripts/session-start.js先确认脚本路径是相对项目根目录的,Claude Code 执行 hooks 时的工作目录是项目根。再确认脚本有执行权限,Node 脚本本身不需要 chmod,但要确认node在 PATH 里。最后看脚本的 stdout,hooks 的SessionStart会把 stdout 注入对话上下文,如果脚本报错会中断。
排查完这些,建议把配置固化下来。团队协作时,把.claude/目录提交到仓库,API Key 用环境变量注入,新人 clone 下来配好 Key 就能用同一套流程。需要管理多个项目的 Key 时,可以在控制台按项目建不同的 Key:https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite。
6. 把组件库变成团队资产
跑通一次任务链之后,真正有价值的是把这套东西沉淀成团队资产。everything-claude-code 的思路是:agents 定义"谁来干",skills 定义"怎么干",rules 定义"什么不能干",hooks 定义"什么时候自动干"。四者组合起来,Claude Code 才从一个聊天机器人变成一个守纪律的工程助手。
我的建议是从 rules 开始抄。先把团队的编码规范、安全底线、测试纪律写成rules/*.md,这部分改动成本最低,收益最直接。然后加 hooks,把会话开始时的上下文注入和写文件前的检查自动化。最后再补 agents 和 skills,针对你们最常做的任务(比如接口开发、代码审查)定制专用流程。
配置过程中如果遇到接入层的问题,接入文档在https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite,里面有完整的 Base URL、鉴权方式和错误码说明。Claude Code 相关的配置细节,可以参考https://taotoken.net/claude-code?utm_source=taotoken_aicg_blog_end&utm_content=ClaudeCodeAnthropic&utm_campaign=rewrite,那里有针对 CLI 工具的接入示例。
最后提醒一句:hooks 能执行任意 shell 命令,装之前一定要审计脚本内容。团队共享的.claude/目录,任何 hooks 改动都应该走 code review,别让一个恶意脚本在每次会话开始时偷偷跑起来。