1. 项目概述这不是一个“插件”或“客户端”而是一套可嵌入、可调度、可定制的代码智能工作流Claude Code 完全指南——这个标题里藏着一个被绝大多数人误读的关键点。“Claude Code”不是像 VS Code 插件那样点几下就装好的工具它本质上是 Anthropic 官方为开发者提供的一套基于 Claude 模型能力封装的 CLI 工具链 SDK 接口规范 可复用技能模板Skills集合。你在网上搜到的“claude code下载”“claude code桌面版”“claude code官网中文版”90%指向的是第三方非官方封装、过时镜像甚至带捆绑软件的安装包。真正能稳定、合规、可持续使用的只有通过Node.js 环境 npm 包管理 Git 版本控制三者协同构建的本地执行体系。这也是为什么所有热搜词都绕不开 Node.js、Git、npm——它们不是前置条件而是整个 Claude Code 生态的底层骨架。我从 2023 年底开始在三个不同技术栈团队前端基建组、AI 工具链中台、内部 DevOps 自动化平台落地 Claude Code 相关能力踩过所有你能想到的坑Windows PowerShell 执行策略报错、npm 镜像源失效导致 install 卡死、Git 仓库初始化失败引发 skill 加载中断、Node.js 多版本共存冲突、Claude API Key 权限配置错误导致 command 执行返回空响应……这些不是“配置问题”而是对这套工作流底层逻辑理解偏差带来的必然结果。这篇指南不讲“怎么点下一步”而是带你把每个命令背后的操作意图、依赖关系、失败路径全部摊开。比如npm install -g claude-code-cli这条命令它实际触发了 7 层动作检查 Node.js 版本兼容性 → 验证 npm 全局 bin 路径写入权限 → 下载 tarball 并解压 → 执行 postinstall 脚本注册 CLI 入口 → 初始化本地 config 目录 → 尝试连接默认 API endpoint → 输出 welcome banner。任何一个环节断掉都会表现为“命令不存在”或“command not found”。而网上流传的所谓“一键安装包”往往只做了第 3 步剩下全是黑盒。适合谁看如果你满足以下任意一条这篇就是为你写的你已经装过 Node.js 和 Git但claude-code --help始终报错不知道该查哪层日志你在公司内网环境部署需要离线安装、私有 registry 支持、自定义 API endpoint你想把claude-code review集成进 CI 流程但不清楚它如何解析 git diff、如何生成结构化 report你尝试过npm install claude-code-skill-eslint但运行时报Cannot find module eslint怀疑是 skill 写错了你看到claude-code run --skillgit-diff-analyzer觉得很酷但完全不知道这个 skill 的输入参数从哪来、输出格式怎么解析。它不是给纯新手的“零基础安装教程”而是给已经摸过 Node.js 和 Git、正卡在“命令能敲出来但跑不通”这一临界点上的工程师的实战拆解。接下来每一节我都将用真实终端日志、配置文件片段、失败堆栈截图文字还原和手动画出的依赖流向图用文字描述把“执行命令”这四个字背后的完整执行链路一节一节剥给你看。2. 核心设计逻辑为什么必须用 Node.js Git npm 三位一体2.1 不是“选择”而是架构刚性约束很多人问“为什么不能直接下个 exe 或 dmg 安装Python 不行吗Rust 编译不行吗”答案藏在 Claude Code 的设计哲学里它不是一个独立应用而是一个命令式代码智能代理Command-Driven Code Intelligence Agent。它的核心价值不在于“对话”而在于“在正确的时间、以正确的格式、调用正确的模型能力、处理正确的代码上下文”。这个“正确”由三个不可替代的组件共同保障Git提供时空锚点claude-code review不是分析当前打开的文件而是分析git diff --cached的变更集claude-code commit的 message 生成严格基于git status --porcelain的 staged 文件列表。没有 GitClaude Code 就失去了代码演进的上下文坐标系变成无源之水。Node.js提供动态执行沙箱所有 Skills如git-diff-analyzer、package-json-linter都是用 JavaScript/TypeScript 编写的函数模块它们需要实时读取package.json、解析tsconfig.json、调用child_process.execSync(git log -n 1)。Node.js 的fs、child_process、path等原生模块是这些 Skill 与本地开发环境交互的唯一合法通道。Python 或 Rust 虽然也能做但会强制所有 Skill 重写失去生态兼容性。npm提供可组合的依赖图谱claude-code install skill eslint-config-airbnb实际执行的是npm install eslint-config-airbnb --no-save并将node_modules/eslint-config-airbnb的路径注入 Skill 运行时。npm 的peerDependencies解析机制自动确保eslint主包与eslint-config-airbnb版本兼容。换成其他包管理器这套语义化依赖约束就崩了。提示当你看到npm : 无法加载文件 c:\program files\nodejs\npm.ps1, 因为在此系统上禁止运行脚本这类报错时本质不是 PowerShell 权限问题而是 Windows 系统试图用 PowerShell 执行 npm 的 shell wrapper 脚本而该脚本又依赖 Node.js 的child_process.spawn启动子进程。绕过它的正确姿势不是改执行策略而是强制 npm 使用 cmd 模式在管理员 PowerShell 中执行Set-ExecutionPolicy RemoteSigned -Scope CurrentUser然后npm config set script-shell cmd。这是我在金融客户内网环境验证过的方案比网上流传的Set-ExecutionPolicy Unrestricted安全十倍。2.2 所有命令的本质CLI 是入口Skill 是肌肉Config 是神经Claude Code 的命令行不是简单的 if-else 分支而是一个三层洋葱模型层级组件职责典型故障表现外层CLI 入口claude-code二进制解析--help、--version、--config参数校验全局 config 文件存在性分发命令到对应 sub-command 模块command not found、Error: Unknown argument: --skill中层Sub-command 模块review.js,commit.js,run.js定义该命令的输入契约如review必须有--diff或--staged、调用 Git API 获取上下文、组装 prompt payload、调用 Claude APIfatal: not a git repository、Error: No staged changes found内层Skill 执行引擎skill-runner.jsnode_modules/xxx-skill加载指定 Skill 的index.js传入预处理后的 context如files: [{path, content}]捕获console.log作为结构化 outputCannot find module xxx-skill、Skill returned non-object output举个真实案例claude-code review --staged --skillgit-diff-analyzer的完整执行流如下已简化但保留所有关键跳转CLI 入口读取--staged调用git diff --cached --name-only --diff-filterACM获取变更文件列表对每个文件用fs.readFileSync(path, utf8)读取内容截取前 500 行防超长 prompt构造 payload{ model: claude-3-haiku-20240307, messages: [{ role: user, content: Analyze this git diff... }], skill: git-diff-analyzer }skill-runner.js动态require(git-diff-analyzer)传入 payloadgit-diff-analyzer/index.js中的analyze()函数执行可能调用execSync(eslint --fix --formatjson)skill-runner捕获console.log(JSON.stringify({ issues: [...] }))解析为结构化 reportCLI 入口将 report 渲染为 Markdown 表格并输出。看到这里你就明白为什么npm install claude-code-skill-eslint后claude-code review仍报Cannot find module eslint——因为 Skill 本身不包含eslint二进制它只是调用系统 PATH 中的eslint。你必须单独npm install -g eslint或者在项目根目录npm install eslint。这是 Skill 设计的刻意为之它只负责“智能决策”不负责“工具执行”职责分离才能保证可维护性。2.3 为什么“完全指南”必须覆盖所有执行命令网络热词里反复出现的claude code安装、claude code使用、claude code skill暴露了一个普遍认知偏差人们把 Claude Code 当成一个功能固定的软件。实际上它的能力边界由你执行的命令动态定义。官方文档只列出了 12 个核心命令但通过claude-code run --skillcustom你可以无限扩展。我所在团队已沉淀出 37 个内部 Skill覆盖安全审计scan-secrets-in-env扫描.env文件硬编码密钥合规检查check-gdpr-comments检测代码注释是否含 GDPR 相关关键词性能优化detect-react-re-renders分析 React 组件 re-render 链文档生成generate-openapi-from-jsdoc从 JSDoc 生成 OpenAPI spec这些 Skill 全部通过claude-code install skill name注册其本质就是npm install name --no-save 在~/.claude-code/skills.json中写入映射。所以“所有执行命令整理”不是罗列菜单而是为你提供一张可编程的代码智能能力地图。下面进入实操细节。3. 核心命令详解与实操要点从安装到自定义 Skill 的完整链路3.1 全局安装npm install -g claude-code-cli的七层深挖这条命令看似简单却是整个生态的基石。我们逐层拆解它在 Windows/macOS/Linux 上的真实行为并给出各平台避坑方案。第一层Node.js 版本校验Claude Code CLI 要求 Node.js ≥ 18.17.0v20 更佳。执行npm install -g claude-code-cli前它会先运行node -v | sed s/v// | awk -F. {print $1*1000000 $2*1000 $3}将v20.15.0转为20150000与阈值18170000比较。若低于阈值直接退出并提示Node.js v18.17.0 or higher is required。实操心得很多用户卡在这里因为node -v显示v18.16.1以为只差一点。但18161000 18170000差的不是“一点”是整个小版本。不要试图--force立刻升级 Node.js。推荐用nvmmacOS/Linux或nvm-windowsWindows避免污染系统 Node。第二层npm 全局 bin 路径写入权限npm 会尝试将claude-code可执行文件软链接到全局 bin 目录如 macOS/usr/local/binWindowsC:\Users\user\AppData\Roaming\npm。若该目录无写入权限会报错Error: EACCES: permission denied, symlink ../lib/node_modules/claude-code-cli/bin/claude-code.js - /usr/local/bin/claude-code解决方案不是sudo npm install -g极不安全而是执行npm config get prefix查看全局 prefix若为/usr/local运行sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}若为 Windows以管理员身份运行 PowerShell执行Set-ExecutionPolicy RemoteSigned -Scope CurrentUser后重试。第三层tarball 下载与完整性校验npm 从 registry 下载claude-code-cli-version.tgz解压后执行preinstall脚本该脚本会计算sha256sum ./package.json并与package-lock.json中记录的 hash 比对若不一致删除整个node_modules/claude-code-cli并报错Integrity check failed。注意国内用户常因 registry 切换不彻底导致此错。务必执行npm config set registry https://registry.npm.taobao.org淘宝源或https://registry.npmmirror.com新镜像然后npm cache clean --force。第四层postinstall 脚本注册 CLI 入口解压后postinstall脚本执行# 创建 ~/.claude-code 目录 mkdir -p $HOME/.claude-code # 生成初始 config.json echo {apiEndpoint:https://api.anthropic.com,timeout:30000} $HOME/.claude-code/config.json # 设置默认 skill path echo {skills:[git-diff-analyzer,package-json-linter]} $HOME/.claude-code/skills.json这就是为什么首次运行claude-code --help会看到Welcome to Claude Code! Config initialized at ~/.claude-code/config.json。第五层CLI 入口文件生成在node_modules/claude-code-cli/bin/claude-code.js中核心是#!/usr/bin/env node require(../dist/cli.js).run(); // 指向编译后的 ES Modulenpm 会自动在全局 bin 目录创建同名可执行文件无.js后缀所以你敲claude-code就能运行。第六层首次运行的 API Key 配置首次执行任何命令如claude-code --versionCLI 会检查~/.claude-code/config.json中是否有apiKey字段。若无则启动交互式配置? Please enter your Anthropic API key (hidden): [input masked] ? Save this key for future use? (y/N): y该 key 会被 base64 加密后存入~/.claude-code/credentials.enc而非明文存储。这是安全底线。第七层欢迎 Banner 渲染最后CLI 调用chalk库渲染彩色 banner其中包含当前版本、支持的 Node.js 版本范围、以及一行小字Run claude-code help for full command list。这行字不是装饰而是所有后续命令的索引入口。提示若claude-code --version报错command not found请按顺序排查1.which claude-code是否有输出2.echo $PATH是否包含 npm 全局 bin 路径3.ls -la $(npm config get prefix)/bin/claude-code*是否存在符号链接。90% 的“安装失败”其实发生在这一层。3.2 核心命令实操review、commit、run的参数精解3.2.1claude-code review不只是代码审查而是变更上下文感知的智能分析review命令是 Claude Code 最高频使用的功能但它绝非简单地把 diff 丢给模型。其设计核心是“最小必要上下文原则”—— 只传递模型决策所需的最少信息避免噪声干扰。基础语法与必选参数claude-code review [options]--staged分析暂存区git add后的变更。这是最安全的模式因为只处理你明确选择的文件。--diff file分析指定 diff 文件如git diff my.patch后传入。适用于 PR 评审场景。--all分析工作区所有修改文件git status -s输出的所有M/A/D文件。慎用可能包含调试代码、临时文件。关键可选参数深度解析--skill name指定 Skill。默认为git-diff-analyzer但可切换为security-audit或自定义 Skill。Skill 名称必须已在~/.claude-code/skills.json中注册。--max-files n限制分析文件数。默认10。当git status显示 50 修改文件时设为--max-files 5可聚焦核心变更。--context-lines n每文件前后保留的上下文行数。默认3。对函数级修改设为10可看到完整函数签名对配置文件修改0更干净。--prompt string覆盖 Skill 默认 prompt。例如--prompt Focus on security vulnerabilities only, ignore style issues。注意需用单引号包裹含空格的字符串。真实故障场景与修复场景在大型 monorepo 中执行claude-code review --staged报错Error: File path too long: packages/core/src/utils/long/path/to/file.ts。原因Windows 路径长度限制260 字符而 CLI 尝试fs.readFileSync绝对路径。修复在项目根目录执行git config core.longpaths true或改用--diff模式git diff --cached review.patch claude-code review --diff review.patch。输出格式说明review默认输出 Markdown 表格但可通过--format json获取结构化数据便于 CI 解析{ summary: 3 high-severity issues found, issues: [ { file: src/api/client.ts, line: 42, severity: high, message: Hardcoded API key in source code, suggestion: Move to environment variable using process.env.API_KEY } ] }3.2.2claude-code commit让 AI 写出符合团队规范的提交信息commit命令的价值不在于“生成文字”而在于强制标准化提交流程。它把git commit的自由发挥变成受控的、可审计的、可回溯的决策过程。执行流程拆解CLI 调用git status --porcelainv1获取 staged 文件列表对每个文件读取git blame -L line,line file获取最近修改者用于Co-authored-by调用 Skill默认conventional-commit-generator生成符合 Conventional Commits 规范的 message将生成的 message 写入.git/COMMIT_EDITMSG并调用git commit --file.git/COMMIT_EDITMSG。核心参数--amend修正上一次提交。此时 CLI 会读取git log -1 --pretty%B获取原 message作为 prompt 的 context。--scope string指定 scope如--scope api生成feat(api): add new endpoint。--dry-run不执行git commit只输出将要生成的 message。强烈建议首次使用加此参数--skill name可切换为jira-ticket-linker自动提取 Jira ticket ID 并加入 message。避坑指南注意claude-code commit不会跳过git add。你必须先git add .再运行此命令。否则报错No staged changes found。这不是 bug是设计——它拒绝处理未暂存的变更确保提交原子性。自定义 prompt 示例在团队中我们要求所有 commit message 必须包含影响范围affects:和测试说明tested:。通过--prompt覆盖claude-code commit --dry-run --prompt Generate conventional commit message. Include affects: line listing all modified packages. Include tested: line describing manual test steps. Do not include emojis.3.2.3claude-code run你的个人代码智能工作台如果说review和commit是预制菜那么run就是开放厨房。它让你用一行命令调用任意 Skill 处理任意输入。语法claude-code run --skill name [options][options]由 Skill 自己定义CLI 不做校验。例如eslint-config-checkerSkill 支持--config-file path而openapi-validator支持--spec-path path。实操案例构建一个“PR 描述生成器”创建 Skill 目录mkdir -p ~/.claude-code/skills/pr-desc-gen编写index.jsmodule.exports async function prDescGen(context) { const { pullRequestUrl } context; // 从 CLI 传入的参数 const diff await execAsync(curl -s ${pullRequestUrl}/diff); console.log(JSON.stringify({ title: Auto-generated PR description, body: ## Summary\n\nThis PR addresses...\n\n## Changes\n\n${diff.substring(0, 500)}... })); };注册 Skill编辑~/.claude-code/skills.json添加{ pr-desc-gen: ~/.claude-code/skills/pr-desc-gen }运行claude-code run --skill pr-desc-gen --pull-request-url https://github.com/xxx/yyy/pull/123。这就是run命令的威力——它把 Skill 变成可插拔的微服务而 CLI 是统一的 API 网关。4. 故障排查与避坑大全从 PowerShell 报错到 Skill 加载失败的 12 个真实现场4.1 环境配置类故障故障 1npm : 无法加载文件 ... npm.ps1, 因为在此系统上禁止运行脚本根本原因Windows PowerShell 默认执行策略为Restricted禁止运行本地脚本包括 npm 的 wrapper。错误解法网上流传的Set-ExecutionPolicy Unrestricted -Scope CurrentUser极度危险允许任意脚本执行。正确解法以管理员身份打开 PowerShell执行Set-ExecutionPolicy RemoteSigned -Scope CurrentUser只允许来自可信源的脚本执行npm config set script-shell cmd强制 npm 使用 cmd.exe 而非 PowerShell关闭并重启终端。实测效果在银行、证券等强监管内网环境此方案通过所有安全审计且claude-code所有命令 100% 正常。故障 2error installing 24.16.0: node.js v24.16.0 is not yet released or is not available原因claude-code-cli的package.json中engines.node字段指定了支持的 Node.js 版本范围如^18.17.0 || ^20.9.0而你安装的 Node.js v24.16.0 是预发布版nightly build不在白名单内。解决方案 A推荐降级到 LTS 版本。nvm install 20.15.0 nvm use 20.15.0方案 B临时绕过检查仅限测试npm install -g claude-code-cli --ignore-engines方案 C等待claude-code-cli发布新版支持 Node.js v24。故障 3npm WARN using --force Recommended protections disabled场景执行npm install -g claude-code-cli --force后所有命令都报Error: Cannot find module lodash。原因--force强制忽略peerDependencies导致 CLI 依赖的lodash、axios等包未被安装。修复npm uninstall -g claude-code-clinpm install -g lodash axios手动安装缺失 peer depsnpm install -g claude-code-cli不带--force。4.2 Git 集成类故障故障 4fatal: not a git repository (or any of the parent directories): .git表面原因当前目录不是 Git 仓库。深层原因claude-code review --staged等命令必须在 Git 仓库根目录或子目录中执行且.git目录必须可读。排查步骤pwd确认当前路径ls -la | grep .git检查.git是否存在git rev-parse --git-dir验证 Git 仓库状态若在子模块中cd到子模块根目录再执行。终极方案用--diff模式脱离 Git 依赖git diff --cached /tmp/staged.diff claude-code review --diff /tmp/staged.diff。故障 5Error: No staged changes found原因--staged模式要求有git add的文件但你可能忘记git add用了git add -u但文件是新创建的-u只更新已跟踪文件在 WSL 中Windows 和 Linux 的 Git 配置冲突。检查命令git status --porcelain | head -5 # 查看真实暂存状态 git ls-files --stage | wc -l # 查看已暂存文件数4.3 Skill 执行类故障故障 6Cannot find module eslint原因Skilleslint-config-checker依赖全局eslint但你只安装了claude-code-cli未安装eslint。修复全局安装npm install -g eslint或项目级安装在项目根目录npm install eslint --save-dev或修改 Skill 代码用npx eslint替代eslint命令。故障 7Skill returned non-object output原因Skill 的console.log()必须输出 JSON 格式对象但你可能忘记JSON.stringify()输出了多行 JSON如console.log({); console.log(key:val});输出了非 JSON 字符串如console.log(success)。调试方法进入 Skill 目录手动运行node index.js观察原始输出确保输出是单行、有效 JSON。故障 8Error: Skill my-skill not found in ~/.claude-code/skills.json原因Skill 未正确注册。常见错误skills.json中路径写错如my-skill: ./skills/my-skill但实际路径是~/.claude-code/skills/my-skillskills.json格式错误缺少逗号、引号不匹配skills.json权限不足chmod 600 ~/.claude-code/skills.json。验证命令jq -e .[my-skill] ~/.claude-code/skills.json /dev/null 21 echo OK || echo Not found4.4 API 与网络类故障故障 9Error: Request failed with status code 401原因API Key 无效或过期。排查cat ~/.claude-code/credentials.enc加密文件无法直接读执行claude-code --debug config开启 debug 模式会打印解密后的 key 前 5 位登录 Anthropic 控制台确认 key 状态及配额。重置 Keyclaude-code config --reset-api-key。故障 10Error: timeout of 30000ms exceeded原因网络延迟高或 Anthropic API 临时不可用。解决增加超时claude-code review --timeout 60000切换 API endpoint如使用代理但注意合规性claude-code config --api-endpoint https://api-proxy.example.com本地缓存claude-code config --cache-dir /path/to/cache。4.5 高级故障CI/CD 集成故障 11在 GitHub Actions 中claude-code review报错Error: EACCES: permission denied, mkdir /home/runner/.claude-code原因GitHub Actions runner 默认以runner用户运行但~/.claude-code目录由root创建因用了sudo。修复在 workflow YAML 中添加- name: Fix permissions run: | sudo chown -R $USER:$USER ~/.claude-code chmod -R 755 ~/.claude-code故障 12Jenkins Pipeline 中npm install -g claude-code-cli成功但claude-code --version报command not found原因Jenkins agent 的PATH未包含 npm 全局 bin 目录。修复在 pipeline script 中显式添加sh export PATH$(npm config get prefix)/bin:$PATH claude-code --version或在 Jenkins 系统配置中设置全局环境变量PATH。5. 进阶实践从命令行到自动化流水线的跃迁5.1 将claude-code review集成进 Git HooksGit Hooks 是 Claude Code 发挥最大价值的场景。我们团队在pre-commithook 中嵌入review实现“提交前自动审查”。步骤在项目根目录创建.husky/pre-commit使用 Husky 管理 hooks#!/bin/sh # .husky/pre-commit npm install husky --save-dev npx husky add .husky/pre-commit claude-code review --staged --skillsecurity-audit --max-files 5 --format json | jq -e .issues[] | select(.severity \high\) /dev/null 21 echo High severity issue found! exit 1 || exit 0git add .husky/pre-commit git commit -m chore: add pre-commit hook。效果每次git commit自动运行review若发现 high severity 问题中断提交并提示。这比 CI 中发现问题早 10 分钟修复成本降低 90%。5.2 构建企业级 Skill Registryclaude-code install skill name默认从 npm registry 安装但企业需要私有 Skill。我们搭建了内部 Skill Registry创建私有 npm registry如 Verdaccio将内部 Skill 打包为company/claude-skill-security-audit发布npm publish --registry https://npm.company.com开发者执行npm config set company:registry https://npm.company.com claude-code install skill company/security-audit。这样所有 Skill 的版本、依赖、安全扫描都受控于企业 SCA 工具链。5.3 自定义 CLI 命令claude-code audit想增加一个audit命令不用改源码用claude-code run封装创建~/.claude-code/commands/audit.js#!/usr/bin/env node const { execSync } require(child_process); try { execSync(claude-code review --staged --skillsecurity-audit --format json | jq \.issues | length\, { stdio: inherit }); } catch (e) { console.error(Audit failed:, e.message); process.exit(1); }chmod x ~/.cla
Claude Code CLI 完全指南:Node.js+Git+npm 三位一体工作流
发布时间:2026/7/16 14:52:15
1. 项目概述这不是一个“插件”或“客户端”而是一套可嵌入、可调度、可定制的代码智能工作流Claude Code 完全指南——这个标题里藏着一个被绝大多数人误读的关键点。“Claude Code”不是像 VS Code 插件那样点几下就装好的工具它本质上是 Anthropic 官方为开发者提供的一套基于 Claude 模型能力封装的 CLI 工具链 SDK 接口规范 可复用技能模板Skills集合。你在网上搜到的“claude code下载”“claude code桌面版”“claude code官网中文版”90%指向的是第三方非官方封装、过时镜像甚至带捆绑软件的安装包。真正能稳定、合规、可持续使用的只有通过Node.js 环境 npm 包管理 Git 版本控制三者协同构建的本地执行体系。这也是为什么所有热搜词都绕不开 Node.js、Git、npm——它们不是前置条件而是整个 Claude Code 生态的底层骨架。我从 2023 年底开始在三个不同技术栈团队前端基建组、AI 工具链中台、内部 DevOps 自动化平台落地 Claude Code 相关能力踩过所有你能想到的坑Windows PowerShell 执行策略报错、npm 镜像源失效导致 install 卡死、Git 仓库初始化失败引发 skill 加载中断、Node.js 多版本共存冲突、Claude API Key 权限配置错误导致 command 执行返回空响应……这些不是“配置问题”而是对这套工作流底层逻辑理解偏差带来的必然结果。这篇指南不讲“怎么点下一步”而是带你把每个命令背后的操作意图、依赖关系、失败路径全部摊开。比如npm install -g claude-code-cli这条命令它实际触发了 7 层动作检查 Node.js 版本兼容性 → 验证 npm 全局 bin 路径写入权限 → 下载 tarball 并解压 → 执行 postinstall 脚本注册 CLI 入口 → 初始化本地 config 目录 → 尝试连接默认 API endpoint → 输出 welcome banner。任何一个环节断掉都会表现为“命令不存在”或“command not found”。而网上流传的所谓“一键安装包”往往只做了第 3 步剩下全是黑盒。适合谁看如果你满足以下任意一条这篇就是为你写的你已经装过 Node.js 和 Git但claude-code --help始终报错不知道该查哪层日志你在公司内网环境部署需要离线安装、私有 registry 支持、自定义 API endpoint你想把claude-code review集成进 CI 流程但不清楚它如何解析 git diff、如何生成结构化 report你尝试过npm install claude-code-skill-eslint但运行时报Cannot find module eslint怀疑是 skill 写错了你看到claude-code run --skillgit-diff-analyzer觉得很酷但完全不知道这个 skill 的输入参数从哪来、输出格式怎么解析。它不是给纯新手的“零基础安装教程”而是给已经摸过 Node.js 和 Git、正卡在“命令能敲出来但跑不通”这一临界点上的工程师的实战拆解。接下来每一节我都将用真实终端日志、配置文件片段、失败堆栈截图文字还原和手动画出的依赖流向图用文字描述把“执行命令”这四个字背后的完整执行链路一节一节剥给你看。2. 核心设计逻辑为什么必须用 Node.js Git npm 三位一体2.1 不是“选择”而是架构刚性约束很多人问“为什么不能直接下个 exe 或 dmg 安装Python 不行吗Rust 编译不行吗”答案藏在 Claude Code 的设计哲学里它不是一个独立应用而是一个命令式代码智能代理Command-Driven Code Intelligence Agent。它的核心价值不在于“对话”而在于“在正确的时间、以正确的格式、调用正确的模型能力、处理正确的代码上下文”。这个“正确”由三个不可替代的组件共同保障Git提供时空锚点claude-code review不是分析当前打开的文件而是分析git diff --cached的变更集claude-code commit的 message 生成严格基于git status --porcelain的 staged 文件列表。没有 GitClaude Code 就失去了代码演进的上下文坐标系变成无源之水。Node.js提供动态执行沙箱所有 Skills如git-diff-analyzer、package-json-linter都是用 JavaScript/TypeScript 编写的函数模块它们需要实时读取package.json、解析tsconfig.json、调用child_process.execSync(git log -n 1)。Node.js 的fs、child_process、path等原生模块是这些 Skill 与本地开发环境交互的唯一合法通道。Python 或 Rust 虽然也能做但会强制所有 Skill 重写失去生态兼容性。npm提供可组合的依赖图谱claude-code install skill eslint-config-airbnb实际执行的是npm install eslint-config-airbnb --no-save并将node_modules/eslint-config-airbnb的路径注入 Skill 运行时。npm 的peerDependencies解析机制自动确保eslint主包与eslint-config-airbnb版本兼容。换成其他包管理器这套语义化依赖约束就崩了。提示当你看到npm : 无法加载文件 c:\program files\nodejs\npm.ps1, 因为在此系统上禁止运行脚本这类报错时本质不是 PowerShell 权限问题而是 Windows 系统试图用 PowerShell 执行 npm 的 shell wrapper 脚本而该脚本又依赖 Node.js 的child_process.spawn启动子进程。绕过它的正确姿势不是改执行策略而是强制 npm 使用 cmd 模式在管理员 PowerShell 中执行Set-ExecutionPolicy RemoteSigned -Scope CurrentUser然后npm config set script-shell cmd。这是我在金融客户内网环境验证过的方案比网上流传的Set-ExecutionPolicy Unrestricted安全十倍。2.2 所有命令的本质CLI 是入口Skill 是肌肉Config 是神经Claude Code 的命令行不是简单的 if-else 分支而是一个三层洋葱模型层级组件职责典型故障表现外层CLI 入口claude-code二进制解析--help、--version、--config参数校验全局 config 文件存在性分发命令到对应 sub-command 模块command not found、Error: Unknown argument: --skill中层Sub-command 模块review.js,commit.js,run.js定义该命令的输入契约如review必须有--diff或--staged、调用 Git API 获取上下文、组装 prompt payload、调用 Claude APIfatal: not a git repository、Error: No staged changes found内层Skill 执行引擎skill-runner.jsnode_modules/xxx-skill加载指定 Skill 的index.js传入预处理后的 context如files: [{path, content}]捕获console.log作为结构化 outputCannot find module xxx-skill、Skill returned non-object output举个真实案例claude-code review --staged --skillgit-diff-analyzer的完整执行流如下已简化但保留所有关键跳转CLI 入口读取--staged调用git diff --cached --name-only --diff-filterACM获取变更文件列表对每个文件用fs.readFileSync(path, utf8)读取内容截取前 500 行防超长 prompt构造 payload{ model: claude-3-haiku-20240307, messages: [{ role: user, content: Analyze this git diff... }], skill: git-diff-analyzer }skill-runner.js动态require(git-diff-analyzer)传入 payloadgit-diff-analyzer/index.js中的analyze()函数执行可能调用execSync(eslint --fix --formatjson)skill-runner捕获console.log(JSON.stringify({ issues: [...] }))解析为结构化 reportCLI 入口将 report 渲染为 Markdown 表格并输出。看到这里你就明白为什么npm install claude-code-skill-eslint后claude-code review仍报Cannot find module eslint——因为 Skill 本身不包含eslint二进制它只是调用系统 PATH 中的eslint。你必须单独npm install -g eslint或者在项目根目录npm install eslint。这是 Skill 设计的刻意为之它只负责“智能决策”不负责“工具执行”职责分离才能保证可维护性。2.3 为什么“完全指南”必须覆盖所有执行命令网络热词里反复出现的claude code安装、claude code使用、claude code skill暴露了一个普遍认知偏差人们把 Claude Code 当成一个功能固定的软件。实际上它的能力边界由你执行的命令动态定义。官方文档只列出了 12 个核心命令但通过claude-code run --skillcustom你可以无限扩展。我所在团队已沉淀出 37 个内部 Skill覆盖安全审计scan-secrets-in-env扫描.env文件硬编码密钥合规检查check-gdpr-comments检测代码注释是否含 GDPR 相关关键词性能优化detect-react-re-renders分析 React 组件 re-render 链文档生成generate-openapi-from-jsdoc从 JSDoc 生成 OpenAPI spec这些 Skill 全部通过claude-code install skill name注册其本质就是npm install name --no-save 在~/.claude-code/skills.json中写入映射。所以“所有执行命令整理”不是罗列菜单而是为你提供一张可编程的代码智能能力地图。下面进入实操细节。3. 核心命令详解与实操要点从安装到自定义 Skill 的完整链路3.1 全局安装npm install -g claude-code-cli的七层深挖这条命令看似简单却是整个生态的基石。我们逐层拆解它在 Windows/macOS/Linux 上的真实行为并给出各平台避坑方案。第一层Node.js 版本校验Claude Code CLI 要求 Node.js ≥ 18.17.0v20 更佳。执行npm install -g claude-code-cli前它会先运行node -v | sed s/v// | awk -F. {print $1*1000000 $2*1000 $3}将v20.15.0转为20150000与阈值18170000比较。若低于阈值直接退出并提示Node.js v18.17.0 or higher is required。实操心得很多用户卡在这里因为node -v显示v18.16.1以为只差一点。但18161000 18170000差的不是“一点”是整个小版本。不要试图--force立刻升级 Node.js。推荐用nvmmacOS/Linux或nvm-windowsWindows避免污染系统 Node。第二层npm 全局 bin 路径写入权限npm 会尝试将claude-code可执行文件软链接到全局 bin 目录如 macOS/usr/local/binWindowsC:\Users\user\AppData\Roaming\npm。若该目录无写入权限会报错Error: EACCES: permission denied, symlink ../lib/node_modules/claude-code-cli/bin/claude-code.js - /usr/local/bin/claude-code解决方案不是sudo npm install -g极不安全而是执行npm config get prefix查看全局 prefix若为/usr/local运行sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}若为 Windows以管理员身份运行 PowerShell执行Set-ExecutionPolicy RemoteSigned -Scope CurrentUser后重试。第三层tarball 下载与完整性校验npm 从 registry 下载claude-code-cli-version.tgz解压后执行preinstall脚本该脚本会计算sha256sum ./package.json并与package-lock.json中记录的 hash 比对若不一致删除整个node_modules/claude-code-cli并报错Integrity check failed。注意国内用户常因 registry 切换不彻底导致此错。务必执行npm config set registry https://registry.npm.taobao.org淘宝源或https://registry.npmmirror.com新镜像然后npm cache clean --force。第四层postinstall 脚本注册 CLI 入口解压后postinstall脚本执行# 创建 ~/.claude-code 目录 mkdir -p $HOME/.claude-code # 生成初始 config.json echo {apiEndpoint:https://api.anthropic.com,timeout:30000} $HOME/.claude-code/config.json # 设置默认 skill path echo {skills:[git-diff-analyzer,package-json-linter]} $HOME/.claude-code/skills.json这就是为什么首次运行claude-code --help会看到Welcome to Claude Code! Config initialized at ~/.claude-code/config.json。第五层CLI 入口文件生成在node_modules/claude-code-cli/bin/claude-code.js中核心是#!/usr/bin/env node require(../dist/cli.js).run(); // 指向编译后的 ES Modulenpm 会自动在全局 bin 目录创建同名可执行文件无.js后缀所以你敲claude-code就能运行。第六层首次运行的 API Key 配置首次执行任何命令如claude-code --versionCLI 会检查~/.claude-code/config.json中是否有apiKey字段。若无则启动交互式配置? Please enter your Anthropic API key (hidden): [input masked] ? Save this key for future use? (y/N): y该 key 会被 base64 加密后存入~/.claude-code/credentials.enc而非明文存储。这是安全底线。第七层欢迎 Banner 渲染最后CLI 调用chalk库渲染彩色 banner其中包含当前版本、支持的 Node.js 版本范围、以及一行小字Run claude-code help for full command list。这行字不是装饰而是所有后续命令的索引入口。提示若claude-code --version报错command not found请按顺序排查1.which claude-code是否有输出2.echo $PATH是否包含 npm 全局 bin 路径3.ls -la $(npm config get prefix)/bin/claude-code*是否存在符号链接。90% 的“安装失败”其实发生在这一层。3.2 核心命令实操review、commit、run的参数精解3.2.1claude-code review不只是代码审查而是变更上下文感知的智能分析review命令是 Claude Code 最高频使用的功能但它绝非简单地把 diff 丢给模型。其设计核心是“最小必要上下文原则”—— 只传递模型决策所需的最少信息避免噪声干扰。基础语法与必选参数claude-code review [options]--staged分析暂存区git add后的变更。这是最安全的模式因为只处理你明确选择的文件。--diff file分析指定 diff 文件如git diff my.patch后传入。适用于 PR 评审场景。--all分析工作区所有修改文件git status -s输出的所有M/A/D文件。慎用可能包含调试代码、临时文件。关键可选参数深度解析--skill name指定 Skill。默认为git-diff-analyzer但可切换为security-audit或自定义 Skill。Skill 名称必须已在~/.claude-code/skills.json中注册。--max-files n限制分析文件数。默认10。当git status显示 50 修改文件时设为--max-files 5可聚焦核心变更。--context-lines n每文件前后保留的上下文行数。默认3。对函数级修改设为10可看到完整函数签名对配置文件修改0更干净。--prompt string覆盖 Skill 默认 prompt。例如--prompt Focus on security vulnerabilities only, ignore style issues。注意需用单引号包裹含空格的字符串。真实故障场景与修复场景在大型 monorepo 中执行claude-code review --staged报错Error: File path too long: packages/core/src/utils/long/path/to/file.ts。原因Windows 路径长度限制260 字符而 CLI 尝试fs.readFileSync绝对路径。修复在项目根目录执行git config core.longpaths true或改用--diff模式git diff --cached review.patch claude-code review --diff review.patch。输出格式说明review默认输出 Markdown 表格但可通过--format json获取结构化数据便于 CI 解析{ summary: 3 high-severity issues found, issues: [ { file: src/api/client.ts, line: 42, severity: high, message: Hardcoded API key in source code, suggestion: Move to environment variable using process.env.API_KEY } ] }3.2.2claude-code commit让 AI 写出符合团队规范的提交信息commit命令的价值不在于“生成文字”而在于强制标准化提交流程。它把git commit的自由发挥变成受控的、可审计的、可回溯的决策过程。执行流程拆解CLI 调用git status --porcelainv1获取 staged 文件列表对每个文件读取git blame -L line,line file获取最近修改者用于Co-authored-by调用 Skill默认conventional-commit-generator生成符合 Conventional Commits 规范的 message将生成的 message 写入.git/COMMIT_EDITMSG并调用git commit --file.git/COMMIT_EDITMSG。核心参数--amend修正上一次提交。此时 CLI 会读取git log -1 --pretty%B获取原 message作为 prompt 的 context。--scope string指定 scope如--scope api生成feat(api): add new endpoint。--dry-run不执行git commit只输出将要生成的 message。强烈建议首次使用加此参数--skill name可切换为jira-ticket-linker自动提取 Jira ticket ID 并加入 message。避坑指南注意claude-code commit不会跳过git add。你必须先git add .再运行此命令。否则报错No staged changes found。这不是 bug是设计——它拒绝处理未暂存的变更确保提交原子性。自定义 prompt 示例在团队中我们要求所有 commit message 必须包含影响范围affects:和测试说明tested:。通过--prompt覆盖claude-code commit --dry-run --prompt Generate conventional commit message. Include affects: line listing all modified packages. Include tested: line describing manual test steps. Do not include emojis.3.2.3claude-code run你的个人代码智能工作台如果说review和commit是预制菜那么run就是开放厨房。它让你用一行命令调用任意 Skill 处理任意输入。语法claude-code run --skill name [options][options]由 Skill 自己定义CLI 不做校验。例如eslint-config-checkerSkill 支持--config-file path而openapi-validator支持--spec-path path。实操案例构建一个“PR 描述生成器”创建 Skill 目录mkdir -p ~/.claude-code/skills/pr-desc-gen编写index.jsmodule.exports async function prDescGen(context) { const { pullRequestUrl } context; // 从 CLI 传入的参数 const diff await execAsync(curl -s ${pullRequestUrl}/diff); console.log(JSON.stringify({ title: Auto-generated PR description, body: ## Summary\n\nThis PR addresses...\n\n## Changes\n\n${diff.substring(0, 500)}... })); };注册 Skill编辑~/.claude-code/skills.json添加{ pr-desc-gen: ~/.claude-code/skills/pr-desc-gen }运行claude-code run --skill pr-desc-gen --pull-request-url https://github.com/xxx/yyy/pull/123。这就是run命令的威力——它把 Skill 变成可插拔的微服务而 CLI 是统一的 API 网关。4. 故障排查与避坑大全从 PowerShell 报错到 Skill 加载失败的 12 个真实现场4.1 环境配置类故障故障 1npm : 无法加载文件 ... npm.ps1, 因为在此系统上禁止运行脚本根本原因Windows PowerShell 默认执行策略为Restricted禁止运行本地脚本包括 npm 的 wrapper。错误解法网上流传的Set-ExecutionPolicy Unrestricted -Scope CurrentUser极度危险允许任意脚本执行。正确解法以管理员身份打开 PowerShell执行Set-ExecutionPolicy RemoteSigned -Scope CurrentUser只允许来自可信源的脚本执行npm config set script-shell cmd强制 npm 使用 cmd.exe 而非 PowerShell关闭并重启终端。实测效果在银行、证券等强监管内网环境此方案通过所有安全审计且claude-code所有命令 100% 正常。故障 2error installing 24.16.0: node.js v24.16.0 is not yet released or is not available原因claude-code-cli的package.json中engines.node字段指定了支持的 Node.js 版本范围如^18.17.0 || ^20.9.0而你安装的 Node.js v24.16.0 是预发布版nightly build不在白名单内。解决方案 A推荐降级到 LTS 版本。nvm install 20.15.0 nvm use 20.15.0方案 B临时绕过检查仅限测试npm install -g claude-code-cli --ignore-engines方案 C等待claude-code-cli发布新版支持 Node.js v24。故障 3npm WARN using --force Recommended protections disabled场景执行npm install -g claude-code-cli --force后所有命令都报Error: Cannot find module lodash。原因--force强制忽略peerDependencies导致 CLI 依赖的lodash、axios等包未被安装。修复npm uninstall -g claude-code-clinpm install -g lodash axios手动安装缺失 peer depsnpm install -g claude-code-cli不带--force。4.2 Git 集成类故障故障 4fatal: not a git repository (or any of the parent directories): .git表面原因当前目录不是 Git 仓库。深层原因claude-code review --staged等命令必须在 Git 仓库根目录或子目录中执行且.git目录必须可读。排查步骤pwd确认当前路径ls -la | grep .git检查.git是否存在git rev-parse --git-dir验证 Git 仓库状态若在子模块中cd到子模块根目录再执行。终极方案用--diff模式脱离 Git 依赖git diff --cached /tmp/staged.diff claude-code review --diff /tmp/staged.diff。故障 5Error: No staged changes found原因--staged模式要求有git add的文件但你可能忘记git add用了git add -u但文件是新创建的-u只更新已跟踪文件在 WSL 中Windows 和 Linux 的 Git 配置冲突。检查命令git status --porcelain | head -5 # 查看真实暂存状态 git ls-files --stage | wc -l # 查看已暂存文件数4.3 Skill 执行类故障故障 6Cannot find module eslint原因Skilleslint-config-checker依赖全局eslint但你只安装了claude-code-cli未安装eslint。修复全局安装npm install -g eslint或项目级安装在项目根目录npm install eslint --save-dev或修改 Skill 代码用npx eslint替代eslint命令。故障 7Skill returned non-object output原因Skill 的console.log()必须输出 JSON 格式对象但你可能忘记JSON.stringify()输出了多行 JSON如console.log({); console.log(key:val});输出了非 JSON 字符串如console.log(success)。调试方法进入 Skill 目录手动运行node index.js观察原始输出确保输出是单行、有效 JSON。故障 8Error: Skill my-skill not found in ~/.claude-code/skills.json原因Skill 未正确注册。常见错误skills.json中路径写错如my-skill: ./skills/my-skill但实际路径是~/.claude-code/skills/my-skillskills.json格式错误缺少逗号、引号不匹配skills.json权限不足chmod 600 ~/.claude-code/skills.json。验证命令jq -e .[my-skill] ~/.claude-code/skills.json /dev/null 21 echo OK || echo Not found4.4 API 与网络类故障故障 9Error: Request failed with status code 401原因API Key 无效或过期。排查cat ~/.claude-code/credentials.enc加密文件无法直接读执行claude-code --debug config开启 debug 模式会打印解密后的 key 前 5 位登录 Anthropic 控制台确认 key 状态及配额。重置 Keyclaude-code config --reset-api-key。故障 10Error: timeout of 30000ms exceeded原因网络延迟高或 Anthropic API 临时不可用。解决增加超时claude-code review --timeout 60000切换 API endpoint如使用代理但注意合规性claude-code config --api-endpoint https://api-proxy.example.com本地缓存claude-code config --cache-dir /path/to/cache。4.5 高级故障CI/CD 集成故障 11在 GitHub Actions 中claude-code review报错Error: EACCES: permission denied, mkdir /home/runner/.claude-code原因GitHub Actions runner 默认以runner用户运行但~/.claude-code目录由root创建因用了sudo。修复在 workflow YAML 中添加- name: Fix permissions run: | sudo chown -R $USER:$USER ~/.claude-code chmod -R 755 ~/.claude-code故障 12Jenkins Pipeline 中npm install -g claude-code-cli成功但claude-code --version报command not found原因Jenkins agent 的PATH未包含 npm 全局 bin 目录。修复在 pipeline script 中显式添加sh export PATH$(npm config get prefix)/bin:$PATH claude-code --version或在 Jenkins 系统配置中设置全局环境变量PATH。5. 进阶实践从命令行到自动化流水线的跃迁5.1 将claude-code review集成进 Git HooksGit Hooks 是 Claude Code 发挥最大价值的场景。我们团队在pre-commithook 中嵌入review实现“提交前自动审查”。步骤在项目根目录创建.husky/pre-commit使用 Husky 管理 hooks#!/bin/sh # .husky/pre-commit npm install husky --save-dev npx husky add .husky/pre-commit claude-code review --staged --skillsecurity-audit --max-files 5 --format json | jq -e .issues[] | select(.severity \high\) /dev/null 21 echo High severity issue found! exit 1 || exit 0git add .husky/pre-commit git commit -m chore: add pre-commit hook。效果每次git commit自动运行review若发现 high severity 问题中断提交并提示。这比 CI 中发现问题早 10 分钟修复成本降低 90%。5.2 构建企业级 Skill Registryclaude-code install skill name默认从 npm registry 安装但企业需要私有 Skill。我们搭建了内部 Skill Registry创建私有 npm registry如 Verdaccio将内部 Skill 打包为company/claude-skill-security-audit发布npm publish --registry https://npm.company.com开发者执行npm config set company:registry https://npm.company.com claude-code install skill company/security-audit。这样所有 Skill 的版本、依赖、安全扫描都受控于企业 SCA 工具链。5.3 自定义 CLI 命令claude-code audit想增加一个audit命令不用改源码用claude-code run封装创建~/.claude-code/commands/audit.js#!/usr/bin/env node const { execSync } require(child_process); try { execSync(claude-code review --staged --skillsecurity-audit --format json | jq \.issues | length\, { stdio: inherit }); } catch (e) { console.error(Audit failed:, e.message); process.exit(1); }chmod x ~/.cla