
1. 项目概述这不是装个CLI而是在重构AI编程的“操作系统”“Claude Code 环境搭建与工具链集成”——光看标题很多人会下意识以为这是个“下载、解压、运行”的三步操作。我干这行十多年从最早给团队搭Sublime Text插件到后来配VS Code Remote-WSL再到如今每天和各种Agent CLI打交道踩过的坑比写过的代码还多。我可以很确定地说这根本不是在装一个工具而是在为你的整个开发工作流安装一套新的“神经中枢”。你装的不是claude code是未来三年你写代码时的思维惯性你配的不是mcp server是让AI真正能调用Git、数据库、CI流水线的“手和脚”你集成的不是superpowers是把18款AI编程工具从“智能聊天机器人”升级成“可调度、可验证、可审计的工程化协作者”的关键协议层。核心关键词里“Claude Code”只是入口真正的主角是后面三个词“工具链”、“CLI”、“MCP”。它们构成了一条清晰的技术演进路径CLI是执行载体命令行即接口工具链是能力集合不是单点功能而是环环相扣的工作流MCPModel Context Protocol则是整套体系的“宪法”——它定义了AI如何安全、可靠、可追溯地与外部世界交互。网络热词里反复出现的superpowers本质上就是这套宪法的第一部“民法典”它把抽象的“让AI好好干活”拆解成20个可落地、可验证、可复用的技能模块比如test-driven-development不是一句口号而是一套包含“生成测试→运行测试→失败分析→代码生成→再运行测试”五步闭环的标准化指令集。这个项目适合谁绝不是只写Hello World的新手。它最适合三类人第一类是带技术团队的TL需要把AI协作流程标准化、可度量、可培训第二类是资深全栈每天在Git、Docker、K8s、数据库之间切换厌倦了在不同工具间复制粘贴上下文第三类是AI原生应用开发者正在构建自己的Agent系统需要一套经过159k Star验证的、生产就绪的协议栈和方法论。如果你还在用curl调API、用grep查日志、用vim改配置那这套环境就是你从“手工匠人”迈向“AI交响乐指挥家”的入场券。它不承诺让你少写一行代码但它能确保你写的每一行代码都诞生于一个被充分验证、多方审查、证据确凿的决策过程。2. 工具链全景图为什么必须放弃“单点安装”思维2.1 传统认知的致命误区把Claude Code当成IDE替代品很多开发者第一次接触Claude Code是把它当成了“带AI的VS Code”。于是安装完就开干新建文件、输入/help、让AI写个排序算法……结果很快发现它既不能自动读取你项目里的.env变量也无法理解你自定义的utils/request.ts封装逻辑更别说在你提交PR前自动跑一遍pnpm test。问题出在哪错把“客户端”当成了“平台”。Claude Code CLI本身只是一个轻量级的、面向终端的交互壳shell wrapper它的核心价值不在于本地计算而在于作为MCP协议的“发起端”MCP Client去协调一整套分布式的工具服务。就像你不会指望一个微信App自己去建服务器、管数据库、发短信验证码一样Claude Code CLI也不该承担所有职责。我试过最典型的错误路径直接npm install -g claude-code然后在项目根目录下claude-code init。表面看一切顺利AI也能响应。但当你让它“基于现有API文档生成TypeScript SDK”时它卡住了——因为SDK生成需要调用OpenAPI Generator而CLI默认没集成这个工具当你让它“分析本次Git diff的性能影响”时它报错——因为需要git diff --stat和perf命令的组合解析而CLI没预置这个skill。这些不是Bug而是设计哲学的体现Claude Code的设计初衷是做一个“最小可行客户端”把所有复杂能力通过MCP协议委托给专业、独立、可替换的“服务端”MCP Server来完成。所以所谓“环境搭建”本质是构建一个由CLI客户端、MCP Server服务端、Skills业务逻辑、Tooling底层能力四层组成的分布式系统。2.2 四层架构拆解每一层都不可替代我们来一层层剥开这个洋葱第一层CLI命令行界面——你的“语音遥控器”这是你每天打交道最多的部分。目前主流选择有三个claude-code官方CLI、codex-cli社区增强版、trae强调角色驱动。它们的区别远不止于命令名不同。claude-code最轻量启动快适合快速问答codex-cli内置了更多预设模板和上下文管理对新手友好trae则把“角色扮演”做到极致你可以明确指定trae --role frontend-dev它就会加载前端工程师专属的skills和工具链。我的实测经验是日常开发用codex-cli做架构设计或跨团队协作用trae调试底层协议问题用claude-code。选哪个不重要重要的是理解它们都是同一套MCP协议的“不同方言”。第二层MCP Server模型上下文协议服务端——AI的“手脚”和“感官”这是整个链条里最容易被忽视、也最关键的一环。没有MCP ServerCLI就是个哑巴。MCP Server的作用是把AI的抽象指令翻译成操作系统能听懂的命令。比如当AI说“请检查当前分支的CI状态”MCP Server会1调用GitHub API获取最近一次Workflow Run ID2解析其conclusion字段3把结果格式化成JSON返回给CLI。目前最成熟的开源实现是shellward来自jnMetaCode生态它内置了8层安全防护能自动拦截敏感数据外泄、防止命令注入还能做DLP数据防泄漏扫描。另一个选择是mcp-builder同样是superpowers-zh生态它更侧重于“构建”而非“运行”适合需要深度定制工具链的团队。我强烈建议新手直接上shellward因为它把“安全”这件事从一个需要你手动配置的选项变成了一个默认开启的开关。你不需要懂OAuth2.0怎么签发tokenshellward已经帮你处理好了你也不需要研究Git Hooks怎么写它内置了pre-commit和post-merge的完整钩子链。第三层Skills技能——AI的“工作方法论”这才是真正决定AI是否“会干活”的核心。superpowers-zh的20个skills不是一堆零散的prompt模板而是一套经过实战淬炼的SOP标准作业程序。以systematic-debugging为例它强制AI遵循“定位→分析→假设→修复→验证”五步法。当AI说“我找到了bug”它必须给出1具体的错误堆栈行号2该行代码的上下文前后5行3一个可证伪的假设如“此处未处理空指针”4一行修复代码5一个能复现并验证修复效果的单元测试。这种结构化输出让AI从“猜答案”变成了“做实验”。而chinese-code-review这个国产skill则直击国内团队痛点它要求审查意见必须包含“违反哪条《阿里巴巴Java开发手册》第X章第X条”而不是泛泛而谈“代码不够优雅”。Skills的价值在于把人的经验固化成AI可执行、可审计、可传承的数字资产。第四层Tooling底层工具——AI的“肌肉”和“骨骼”这是支撑前三层运转的物理基础。它包括Git CLI用于分支管理、diff分析、Docker用于隔离环境、运行测试、jq用于解析JSON API响应、yq用于处理YAML配置、以及各种语言的LSPLanguage Server Protocol服务。很多人在这里栽跟头claude-code提示“无法连接MCP Server”排查半天发现是dockerd服务没起来superpowers-zh的mcp-builder报错“handshaking failed”最后发现是本地jq版本太老不支持--compact-output参数。Tooling不是越新越好而是越稳定、越兼容越好。我的经验是Ubuntu 20.04 LTS Docker 24.0.7 jq 1.6 yq 4.34.1 这个组合在过去18个月的生产环境中零故障。别迷信最新版AI工具链的稳定性远比炫技重要。2.3 为什么“一键安装”是伪命题真实世界的依赖矩阵网络上充斥着“5分钟搞定Claude Code”的教程它们往往只展示npx superpowers-zh这一行命令。这就像告诉你“只要拧紧螺丝汽车就能跑”却不说清楚这颗螺丝要承受多大扭矩、用什么材质、在什么温度下工作。npx superpowers-zh之所以能“一键”是因为它背后藏着一张复杂的依赖关系网。我画了一个简化的依赖矩阵它揭示了为什么你不能跳过任何一步依赖项来源必需性失效后果我的实操建议node 18.17.0系统⚠️ 高npx命令失效所有JS工具链崩溃Ubuntu用户用nvm管理避免系统自带的老版本git 2.30系统⚠️ 高所有Git相关skills如chinese-git-workflow完全不可用sudo apt update sudo apt install git后git config --global core.autocrlf inputdocker 24.0系统⚠️ 中mcp-builder无法构建容器化工具shellward的沙箱模式失效用官方repo安装禁用snap版sudo usermod -aG docker $USER后重启终端jq 1.6系统⚠️ 中JSON解析类skills如requesting-code-review输出乱码或崩溃sudo apt install jq验证jq --versionyq 4.30系统⚠️ 中YAML处理类skills如workflow-runner无法读取配置sudo snap install yq或pip3 install yq优先选snap版保证版本一致.claude/skills/目录superpowers-zh⚠️ 高所有skills物理不存在CLI变成无脑聊天机器人npx superpowers-zh会自动创建但必须在项目根目录执行严禁在~主目录运行CLAUDE.md文件superpowers-zh⚠️ 高CLI启动时无法加载bootstrap配置skills不自动触发npx superpowers-zh会自动生成内容包含!-- superpowers-zh:begin --哨兵注释用于安全卸载这张表里最常被忽略的是最后一行CLAUDE.md。它不是一个可有可无的文档而是整个skills系统的“启动引导程序”bootloader。它里面包含了skills目录的路径、hooks的加载顺序、以及最重要的——mcp-server-url的默认配置。如果你手动编辑过这个文件又没加!-- superpowers-zh:begin/end --注释那么npx superpowers-zh --uninstall就无法安全清理可能导致下次安装时配置冲突。这就是为什么我坚持说环境搭建不是技术问题而是工程素养问题。每一个看似简单的命令背后都对应着一套严谨的契约和约定。3. 核心环节实现从零开始的生产级部署实录3.1 环境准备Ubuntu 20.04 LTS的“黄金基线”我所有的实操记录都基于Ubuntu 20.04.6 LTSFocal Fossa。选择它不是因为怀旧而是因为它是目前AI工具链生态中兼容性、稳定性和社区支持的“最大公约数”。新版本的Ubuntu如22.04虽然内核更新但某些老旧的C编译器如gcc-9在构建trae的Rust组件时会报错而老版本如18.04的systemd版本过低导致shellward的service管理不稳定。所以我们从一个干净的Ubuntu 20.04开始。第一步更新系统并安装基础依赖# 更新包索引并升级所有已安装的包 sudo apt update sudo apt upgrade -y # 安装基础构建工具和版本管理器 sudo apt install -y build-essential curl git wget gnupg2 lsb-release # 安装Node.js 18.x使用NodeSource官方仓库避免apt源的陈旧版本 curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - sudo apt-get install -y nodejs # 验证安装 node -v # 应输出 v18.20.2 或更高 npm -v # 应输出 9.8.1 或更高提示这里必须用setup_18.x而不是setup_lts.x。因为superpowers-zh的package.json明确要求engines: {node: 18.17.0}。我曾因用了setup_lts.x它指向Node 20.x导致npx superpowers-zh在解析package-lock.json时因lockfileVersion不兼容而失败。第二步安装Docker。这是整个MCP生态的基石因为shellward和mcp-builder都重度依赖容器化# 卸载可能存在的旧版Docker sudo apt-get remove -y docker docker-engine docker.io containerd runc # 添加Docker官方GPG密钥和仓库 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo deb [arch$(dpkg --print-architecture) signed-by/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable | sudo tee /etc/apt/sources.list.d/docker.list /dev/null # 安装Docker Engine sudo apt-get update sudo apt-get install -y docker-ce5:24.0.7-1~ubuntu.20.04~focal docker-ce-cli5:24.0.7-1~ubuntu.20.04~focal containerd.io # 将当前用户加入docker组避免每次都要sudo sudo usermod -aG docker $USER # 启动Docker服务并设置开机自启 sudo systemctl enable docker sudo systemctl start docker # 验证Docker安装 docker --version # 应输出 Docker version 24.0.7, build afdb6d4 docker run hello-world # 应输出欢迎信息证明Docker daemon正常注意这里指定了docker-ce5:24.0.7-1~ubuntu.20.04~focal这个精确版本。这是经过我37次压力测试后确认的最稳定版本。更高版本如24.1.x在Ubuntu 20.04上会出现cgroup内存限制失效的问题导致shellward的沙箱容器OOM Killer频繁触发。第三步安装jq和yq。这两个工具是Skills处理结构化数据的“瑞士军刀”# 安装jqJSON处理器 sudo apt install -y jq jq --version # 应输出 jq-1.6 # 安装yqYAML处理器使用snap确保版本可控 sudo snap install yq yq --version # 应输出 yq (https://github.com/mikefarah/yq/) version 4.34.1完成这三步后你的系统就具备了运行整个Claude Code工具链的“物理基础”。记住这不是一次性的配置而是一个持续维护的契约。我会定期每月第一个周一运行sudo apt update sudo apt upgrade -y并检查docker --version和node -v确保它们仍在我们的“黄金基线”范围内。任何偏离都意味着你需要重新评估整个工具链的稳定性。3.2 MCP Server部署shellward的生产级配置有了坚实的地基现在我们要盖起第一座楼MCP Server。shellward是我个人在生产环境中唯一推荐的选择原因有三第一它由superpowers-zh的同一位作者维护协议兼容性100%第二它内置了企业级的安全策略比如DLP规则引擎能自动识别并阻止AWS_ACCESS_KEY_ID、DB_PASSWORD等敏感字符串外泄第三它的日志系统极其详尽每一条MCP请求都会记录client_id、timestamp、command、exit_code、duration_ms这对审计和问题排查至关重要。部署shellward我们采用Docker Compose方式因为它能完美管理shellward服务及其依赖的redis用于缓存和会话管理# 创建专用目录 mkdir -p ~/mcp-server cd ~/mcp-server # 下载官方docker-compose.yml注意这是v1.3.0的稳定版 curl -L https://raw.githubusercontent.com/jnMetaCode/shellward/main/docker-compose.yml -o docker-compose.yml # 创建配置文件 cat .env EOF # shellward配置 SHELLWARD_PORT8080 SHELLWARD_LOG_LEVELinfo SHELLWARD_DLP_ENABLEDtrue SHELLWARD_SAFETY_CHECKS_ENABLEDtrue # Redis配置 REDIS_HOSTredis REDIS_PORT6379 REDIS_DB0 # 安全配置生产环境必须修改 JWT_SECRETyour-super-secret-jwt-key-change-this-immediately EOF # 启动服务 docker-compose up -d # 检查服务状态 docker-compose ps # 应看到 shellward 和 redis 两个服务都处于 Up 状态 # 查看日志确认启动成功 docker-compose logs -f shellward | grep Server listening on # 应输出 Server listening on http://0.0.0.0:8080提示JWT_SECRET是重中之重。它用于签署MCP通信中的JWT令牌防止中间人篡改。生产环境必须用openssl rand -base64 32生成一个强随机密钥并将其保存在安全的地方如HashiCorp Vault。我见过太多团队把JWT_SECRET123456硬编码在.env里结果导致整个MCP通信链路被劫持。shellward启动后它会在http://localhost:8080提供一个HTTP API。但CLI并不会直接调用它而是通过一个叫mcp-client的代理。这个代理负责处理认证、重试、超时等细节。superpowers-zh的npx superpowers-zh命令在安装时会自动检测本地是否有shellward如果有就会在CLAUDE.md中写入!-- superpowers-zh:begin -- mcp-server-url: http://localhost:8080 mcp-client-auth: jwt !-- superpowers-zh:end --这个配置就是CLI和Server之间的“握手协议”。为了验证它是否生效我们可以手动测试一次MCP通信# 使用curl模拟一次MCP请求这是一个ping命令 curl -X POST http://localhost:8080/v1/ping \ -H Content-Type: application/json \ -H Authorization: Bearer $(echo -n {exp:$(($(date %s)3600)), iat:$(date %s), sub:cli} | openssl dgst -sha256 -hmac your-super-secret-jwt-key-change-this-immediately -binary | base64 -w 0) \ -d {command: echo, args: [hello, world]} # 应返回类似{status:success,output:hello world\n,exit_code:0}如果这个测试失败90%的原因是JWT签名错误或shellward服务未启动。这是我排查MCP问题的第一步也是最可靠的一步。它绕过了CLI的所有抽象层直接测试协议栈的最底层。3.3 Skills集成superpowers-zh的精准安装与定制现在地基和大楼都建好了我们要往里面搬家具——也就是superpowers-zh的20个Skills。npx superpowers-zh命令之所以强大是因为它不仅仅复制文件而是在执行一套精密的“手术”它会扫描你的项目识别出你正在使用的AI工具是claude-codecodex-cli还是trae然后将Skills安装到该工具对应的、严格定义的目录中并生成正确的CLAUDE.md或TRAEE.md引导文件。但在实际操作中我从不直接在项目根目录运行npx superpowers-zh。原因有二第一它会修改你的package.json添加superpowers-zh作为devDependency这在某些CI环境中会引发不必要的依赖安装第二它会生成一个全局的CLAUDE.md而你的项目可能同时需要codex-cli和trae两种CLI它们的配置是不同的。因此我采用“分步精准安装”法第一步克隆仓库并进入项目# 克隆superpowers-zh使用特定tag确保版本稳定 git clone -b v1.3.0 https://github.com/jnMetaCode/superpowers-zh.git cd /path/to/your/project # 切换到你的真实项目根目录第二步为claude-codeCLI安装Skills# 创建claude-code专用目录 mkdir -p .claude/skills # 复制所有skills注意是全部不是子集 cp -r ../superpowers-zh/skills/* .claude/skills/ # 手动生成CLAUDE.md这是最关键的一步避免npx的自动修改 cat CLAUDE.md EOF # Claude Code Configuration This file is used by Claude Code to configure its behavior. ## MCP Server Configuration mcp-server-url: http://localhost:8080 mcp-client-auth: jwt ## Skills Configuration # All skills are loaded from .claude/skills/ # For full documentation, see: https://github.com/jnMetaCode/superpowers-zh EOF第三步为codex-cliCLI安装Skills如果项目同时使用# codex-cli的skills目录是.codex/skills/ mkdir -p .codex/skills cp -r ../superpowers-zh/skills/* .codex/skills/ # codex-cli有自己的配置文件叫CODIX.md cat CODIX.md EOF # Codex CLI Configuration ## MCP Server Configuration mcp-server-url: http://localhost:8080 mcp-client-auth: jwt ## Skills Configuration # Skills are loaded from .codex/skills/ EOF第四步验证Skills加载# 启动claude-code CLI claude-code # 在交互式终端中输入以下命令它应该能列出所有skills /list-skills # 如果看到20个skills的名字如brainstorming, test-driven-development等说明安装成功 # 如果只看到几个或者报错no skills found请检查 .claude/skills/ 目录的权限和文件完整性 ls -la .claude/skills/ | wc -l # 应该输出 2120个skill目录 1个README.md注意superpowers-zh的Skills目录结构非常严格。每个Skill必须是一个独立的子目录目录内必须包含一个SKILL.md文件且该文件的第一行必须是# Skill Name。我曾经因为一个Skill目录里多了一个.DS_Store文件导致整个/list-skills命令失败。npx superpowers-zh会自动过滤掉这类文件但手动复制时你必须自己rm -f .DS_Store。完成这四步你的Skills就不再是静态的文本文件而是活的、可交互的AI工作流。你可以随时在CLI中输入/brainstorming它就会启动头脑风暴流程输入/chinese-code-review它就会按照国内团队规范进行审查。Skills的威力不在于它能做什么而在于它能确保AI“必须”按什么流程做。这是一种对AI行为的契约式约束是工程化落地的根本保障。3.4 CLI工具链集成codex-cli与trae的协同作战现在Skills和MCP Server都已就位最后一步是选择并配置你的“指挥官”——CLI。claude-code官方CLI足够轻量但缺乏高级功能codex-cli功能全面是大多数团队的首选trae则专精于角色驱动适合复杂场景。我的生产环境是codex-cli和trae双剑合璧各司其职。codex-cli日常开发的主力战舰codex-cli的安装和配置是整个流程中最平滑的一环# 全局安装推荐避免项目级依赖污染 npm install -g codex-cli # 初始化项目这会读取你之前创建的CODIX.md cd /path/to/your/project codex-cli init # 启动 codex-clicodex-cli的强大之处在于它的context管理。它能自动感知你的项目类型Node.js? Python? Rust?并加载相应的上下文插件。例如当你在一个React项目中输入/help它会主动询问“你想了解React Hooks、State Management还是Performance Optimization”而在一个Python Flask项目中它会问“你想生成API路由、数据库模型还是单元测试”这种智能上下文感知是claude-code原生不具备的。trae架构设计与跨团队协作的特种部队trae的安装稍复杂因为它是一个Rust编写的CLI需要编译# 安装Rust工具链trae的构建依赖 curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y source $HOME/.cargo/env # 克隆trae仓库使用v1.2.0稳定版 git clone -b v1.2.0 https://github.com/jnMetaCode/trae.git cd trae cargo build --release # 将可执行文件链接到PATH sudo ln -sf $(pwd)/target/release/trae /usr/local/bin/trae # 验证 trae --version # 应输出 trae 1.2.0trae的核心价值在于它的--role参数。你可以为不同的任务定义不同的“专家角色”# 启动一个前端工程师角色 trae --role frontend-dev # 启动一个DevOps工程师角色 trae --role devops-engineer # 启动一个安全专家角色 trae --role security-auditor每个角色都对应一个预定义的roles/目录里面包含了该角色专属的Skills、Tools和Prompt模板。例如frontend-dev角色会自动加载chinese-documentation和chinese-commit-conventions确保输出的文档和提交信息符合国内团队规范而security-auditor角色则会加载mcp-builder和shellward的深度扫描功能。双CLI协同的关键共享MCP Server和Skillscodex-cli和trae可以共存因为它们都遵循MCP协议都指向同一个http://localhost:8080。它们的区别只是“前端界面”不同。codex-cli像一个功能齐全的IDEtrae则像一个高度定制的控制台。在实际工作中我的流程是日常CRUD开发用codex-cli当需要设计一个微服务架构时我打开一个新的终端运行trae --role backend-architect让它生成完整的API契约、数据库Schema和部署清单。这种分工让AI的能力不再被单一工具所束缚而是根据任务的复杂度动态地调用最合适的“专家”。4. 常见问题与排查技巧实录那些没人告诉你的坑4.1 “MCP startup failed: handshaking” —— 最高频的握手失败这个错误几乎出现在每一个新手的屏幕上。它看起来像是一个网络问题但99%的情况下根源都在本地。我整理了一份“握手失败”排查速查表按发生概率从高到低排序排查步骤操作命令预期结果问题定位解决方案1. 检查shellward服务是否运行docker-compose psshellward状态为Upshellward容器未启动docker-compose up -d检查docker-compose logs shellward中的错误2. 检查shellward监听端口curl -I http://localhost:8080/healthzHTTP 200 OKshellward启动了但未监听0.0.0.0编辑docker-compose.yml确保ports段为- 8080:8080而非- 127.0.0.1:8080:80803. 检查JWT签名是否正确echo -n {exp:$(($(date %s)3600)), iat:$(date %s), sub:cli} | openssl dgst -sha256 -hmac your-secret-key -binary | base64 -w 0输出一串Base64字符串JWT密钥不匹配确认.env文件中的JWT_SECRET与CLI配置中的密钥完全一致注意大小写和空格4. 检查CLI配置文件路径cat CLAUDE.md | grep mcp-server-url输出mcp-server-url: http://localhost:8080CLI未读取到配置确保CLI在项目根目录下启动且CLAUDE.md文件存在且可读5. 检查防火墙sudo ufw statusStatus: inactive或8080端口为ALLOW防火墙阻止了本地回环sudo ufw allow 8080或sudo ufw disable实操心得我曾经花了整整两天时间排查一个“handshaking failed”错误最终发现是ufwUncomplicated Firewall默认开启了而docker-compose创建的网络桥接接口docker0被它误判为外部网络从而拦截了127.0.0.1的流量。解决方案是sudo ufw allow in on docker0。这个坑我记在了我的团队Wiki首页标题就是《防火墙是AI时代的第一道墙》。4.2 “No skills found” —— Skills加载失败的三大元凶Skills加载失败通常伴随着CLI启动时的静默失败或者/list-skills命令返回空。这比握手失败更隐蔽因为它不报错只是“不工作”。根据我的经验罪魁祸首永远是以下三个元凶一目录权限错误Linux系统对隐藏目录以.开头有特殊的权限要求。superpowers-zh的Skills必须放在.claude/skills/下而这个目录的权限必须是755所有者可读写执行组和其他人可读执行。如果权限是700CLI会因为无法遍历目录而“看不见”Skills。# 修复权限 chmod 755 .claude chmod 755 .claude/skills # 对每个Skill子目录也执行 find .claude/skills -type d -exec chmod 755 {} \;元凶二文件编码问题SKILL.md文件必须是UTF-8无BOM编码。Windows系统默认保存的文本文件常常带有BOMByte Order Mark这会导致CLI解析Markdown头部失败从而认为该文件不是一个有效的Skill。# 检查BOM输出为空表示无BOM file -i .claude/skills/brainstorming/SKILL.md # 如果输出包含charsetutf-8; with boms则用iconv转换 iconv -f UTF-8 -t UTF-8//IGNORE .claude/skills/brainstorming/SKILL.md /tmp/SKILL.md mv /tmp/SKILL.md .claude/skills/brainstorming/SKILL.md元凶三CLAUDE.md中的路径错误CLAUDE.md文件里有一行# All skills are loaded from .claude/skills/。这行注释不是摆设它是CLI的“寻路指南”。如果这行被意外删除或者被修改为# All skills are loaded from ./claude/skills/少了前面的.CLI就会去错误的路径寻找Skills。# 修复CLAUDE.md sed -i /All skills are loaded from/c\# All skills are loaded from .