
我最初用 Claude Code 的时候感觉就像招了个名校毕业但完全没带行李的实习生——脑子很好使但手边什么工具都没有。你跟它说“写个脚本处理一下这些图片”它能写但它不知道你项目里图片规范、不知道你常用的组件库、更不懂你团队代码风格的约定。每次都要在 Prompt 里反复叮嘱上下文窗口烧得飞快心累。后来我把 Skills 和图片识别这套东西配齐之后体验完全变了。简单说Skills 就是给 Claude Code 预先装满“工作手册”和“工具腰带”图片识别则是给它装上“眼睛”让它真正看得见你丢给它的截图、设计稿和报错画面。这篇文章我就把从零配置到实战的完整过程拆开揉碎讲一遍全程带命令、带踩坑记录。1. 为什么你需要给 Claude Code 装一套“技能库”1.1 默认的 Claude Code 有什么能力边界先说清楚一个容易被忽略的事实Claude Code 本身不是一个“什么都预装好的 IDE 插件”它本质上是一个运行在终端里的 AI 编程代理能调用你的 Shell、读写文件、执行命令但它的“领域知识”并没有针对你的项目做任何定制。举个例子你让它“用公司的前端规范写一个组件的 demo”它虽然能写出 React 代码但它大概率不知道你公司内部封装的 UI 库叫什么名字、样式方案是 Tailwind 还是 Less、提交信息要遵循什么格式。结果就是你得在一次会话里疯狂补充背景或者频繁切换上下文效率掉得很快。这也是 Skills 机制存在的根本原因它不是给模型“加功能”而是给模型“加说明书和工具集”。一个 Skill 本质上是一个带结构的目录里面有SKILL.md作为描述文档还有可执行的脚本、参考模板、代码片段甚至图片资源。Claude Code 在启动时会扫描这些目录根据任务类型自动匹配合适的 Skill然后按里面的步骤执行。1.2 Skills 解决的是“上下文基建”问题很多人喜欢把 Skills 理解为“插件”但我觉得更准确的类比是“入职培训手册”。插件是代码层面的扩展而 Skill 更像是一套“行为准则 速查表”告诉 Claude 在你的项目里应该按什么套路做事。比如一个前端开发 Skill里面的SKILL.md会写明项目的目录结构长什么样组件放在哪、工具函数放在哪样式方案采用什么Tailwind 配置项、设计 token 文件位置新组件必须导出的接口有哪些提交代码前需要跑哪些 lint 和测试命令把这份“手册”装进 Claude Code 之后它每次处理前端任务时就会像老员工一样顺手。这个机制的妙处在于它把上下文从“会话级”提升到了“资产级”一份 Skill 可以跨项目复用也能分发给团队其他成员。1.3 这套配置适合谁参考如果你只是偶尔用 Claude Code 写个一次性脚本那 Skills 对你来说可能略显多余但如果你天天要用它写业务代码、维护项目、处理重复性较高的开发任务又或者你想让团队里不同水平的人都用出接近统一的质量那这套配置就非常值得折腾。图片识别则更适合另一类场景比如拿到 UI 设计稿要还原页面、收到一张报错截图不知道是哪里的问题、文档里粘贴了某个架构图想让 AI 理解并生成代码。搭配 Skills 之后整体工作流会顺滑很多先让 Claude 看图理解目标再调用前端 Skill 按项目规范产出代码一气呵成。2. 动手前需要准备的环境Node.js、Git 和 Claude Code 本体2.1 Node.js 安装时的版本坑Claude Code 是 npm 包所以 Node.js 是必须先装好的。很多人在这里踩的第一个坑是版本问题——Claude Code 对 Node.js 版本有硬性要求太老的版本比如 14.x、16.x装不上或者装上了运行报错。我自己的经验是直接上 LTS 版本用 nvmNode Version Manager管理最省心。以 macOS 或 Linux 为例安装 nvm 并切到 Node 20 LTS 的命令大致是这样# 安装 nvm curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash # 重新加载 shell 配置 source ~/.bashrc # 或者 source ~/.zshrc # 安装 Node 20 LTS 并设为默认 nvm install 20 nvm alias default 20 nvm use 20Windows 用户建议直接去官网下载 .msi 安装包勾选“Add to PATH”然后用node -v验证。注意不要用太旧的 18.x我在 18.17 上碰到过 npm 安装依赖时偶发的证书问题升级到 20 之后就再没遇到过。2.2 Git 安装与基础配置Claude Code 在项目里会和 Git 深度联动比如生成提交信息、查看 diff、回滚变更等所以 Git 也必须就位。各平台安装方式不用多说重点说一下配置git config --global user.name 你的名字 git config --global user.email 你的邮箱这两个配置缺失的话Claude Code 帮你生成提交的时候会直接报错。另外建议顺手配一下默认分支名和拉取策略减少后续交互时的摩擦git config --global init.defaultBranch main git config --global pull.rebase false2.3 安装 Claude Code 本体与登录验证环境就绪后安装 Claude Code 本体其实就一条命令npm install -g anthropic-ai/claude-code安装完成后输入claude进入交互界面按提示完成登录授权。如果你之前没有 Anthropic 账号需要先去官网注册。这里有个比较容易踩的坑如果终端里有代理环境变量登录时偶尔会卡住我遇到过几次当时排查了很久最后把终端代理关掉重试就秒过了。登录成功后在项目目录里跑claude你会看到它扫描当前目录并生成.claude相关的配置文件夹。到这一步Claude Code 的“本体”才算真正就位接下来就可以开始装“技能库”了。3. 给 Claude Code 安装“技能库”从零到实战3.1 Skills 目录结构与 SKILL.md 的编写规则在装社区技能包之前我强烈建议你先花十分钟搞懂 Skills 的目录结构否则后面遇到问题很难排查。一个标准的 Skill 目录大致长这样my-skill/ ├── SKILL.md ├── scripts/ │ └── run.sh ├── templates/ │ └── component.tsx └── assets/ └── example.pngSKILL.md是这个技能的核心通常用 Markdown 写成里面会写清楚“这个技能解决什么问题”“在什么情况下使用”“执行步骤是什么”“有哪些参数可选”。Claude Code 读取它的逻辑和 GPTs 的 Instructions 有点类似但加了更结构化的格式约定。一个比较精简的SKILL.md可以是这样的--- name: frontend-component-builder description: 根据设计稿生成符合项目规范的前端组件 --- # 前端组件生成 当用户需要创建新组件时遵循以下步骤 1. 检查 src/components 下已有组件的命名与导出方式 2. 使用 templates/component.tsx 作为初始模板 3. 样式统一采用 Tailwind 工具类 4. 生成后运行 npm run lint 校验注意开头的 YAML front matter 里需要有name和descriptionClaude 会根据description里的描述判断要不要激活这个技能。3.2 安装社区热门技能包superpower skills社区里目前比较出圈的是 superpower skills 这个仓库它把大量开发场景的 Skill 集中管理起来包括前端开发、后端调优、代码审查、测试生成等基本属于“装一个顶十个”的类型。安装方式很简单把仓库克隆到 Claude Code 的技能目录即可。以 macOS/Linux 为例# 进入 Claude Code 的配置目录 cd ~/.claude # 克隆社区技能包 git clone https://github.com/awesome-superpower/superpower-skills.git skillsWindows 用户注意路径一般位于C:\Users\你的用户名\.claude\skills。克隆完成后重启claude会话让它重新扫描技能目录。装好后怎么验证是否生效有个很朴素的办法在 Claude Code 里直接问它“你现在掌握哪些技能”它会列出扫描到的 Skill 列表和各自的用途。如果它一个都没列出来大概率是SKILL.md的 front matter 格式不对或者目录路径没有识别到。3.3 如何写一个自己的极简“需求解析 Skill”社区技能包虽好但真正好用的是“长在你项目上”的自定义技能。我拿自己写的“需求解析 Skill”举例。这个 Skill 的作用是当用户丢过来一段模糊需求时Claude 先按固定格式问澄清问题再输出结构化的需求拆解文档。它的SKILL.md核心内容其实就几行--- name: clarify-requirements description: 将模糊需求拆解为可执行的任务清单 --- 当用户描述需求但信息不充分时先输出以下澄清问题 - 这个功能的核心用户是谁 - 优先级和时间要求是什么 - 依赖哪些现有模块 - 验收标准是什么 用户回答后按 背景 / 目标 / 任务拆解 / 验收标准 四段输出。写完后放在~/.claude/skills/clarify-requirements/目录下。效果很明显以前让 Claude 写功能它总是迫不及待地咔咔写代码结果方向经常跑偏现在它先像个产品经理一样问清楚需求再动手返工率低了很多。3.4 开发类 Skills 的进阶把脚本打包进技能Skills 不只是“说明书”它还能携带可执行脚本。这个能力非常关键等于你既能告诉 Claude“应该怎么做”还能直接给它“能做到的工具”。举个例子我给一个项目写过“批量压缩图片”的技能目录里放了一个scripts/compress.py脚本SKILL.md里写“当需要压缩图片时运行 scripts/compress.py 并传入目标目录参数”。这样 Claude 遇到相关任务时不用现场写 Python 代码直接调用现成脚本稳定性和速度都好很多。自定义脚本注意一点在SKILL.md里明确写清楚脚本的输入输出格式和依赖环境。否则 Claude 调用时可能不知道需要先装 Pillow或者不知道脚本需要传什么路径。4. 给 Claude Code 装上“眼睛”图片识别的三种可行路线4.1 路线一原生读取图片路径最简单先说一个很多人不知道的隐藏能力Claude Code 本身是支持“看图”的。不是说你贴一张二进制的图片给它而是把图片路径作为上下文传给 Claude模型可以读取本地图片文件并理解里面的内容。我在实际使用中一般是这么操作的先在终端里用/add命令把图片路径加入上下文或者在对话里直接告诉它“看一下screenshots/bug.png这张截图”。它读取之后真的能理解截图里的界面布局、报错信息甚至能描述出 UI 的大致结构。这个能力对于“根据截图写前端”特别有用。有一次 QA 发来一张页面错位的截图我没有远程 VNC 去看直接把截图拖进终端让 Claude 描述差异点然后让它定位到对应组件的样式问题整个过程不到五分钟。4.2 路线二Python OCR 方案适合识别文字密集的截图原生图片理解能力虽然强但如果截图里全是文字比如文档截图、错误日志抓图、验证码之类的用 OCR 会更精准。目前在 Claude Code 里做 OCR 最方便的组合是pytesseractPillow。环境准备命令# macOS brew install tesseract # Ubuntu/Debian sudo apt install tesseract-ocr # Python 库 pip install pytesseract pillow然后写一个极简的 OCR 脚本让 Claude Code 通过 Skill 调用import sys from PIL import Image import pytesseract if len(sys.argv) 2: print(用法: python ocr.py 图片路径) sys.exit(1) image_path sys.argv[1] text pytesseract.image_to_string(Image.open(image_path), langchi_simeng) print(text)把脚本丢进一个叫ocr-image的 Skill 目录SKILL.md里写清楚“当用户需要提取截图中的文字时调用此脚本”。实测下来对于清晰截图里的中文、英文混排文字识别准确率相当可观至少能作为第一道“文字提取器”然后再交给 Claude 做语义分析。4.3 路线三视觉解析服务适合复杂图片和批量处理如果图片不只是一段文字而是包含复杂图表、架构图或者 UI 设计稿简单 OCR 就不够用了。这种情况下更靠谱的做法是把图片交给视觉能力更强的模型来解读或者自己搭一个简单的视觉解析服务。在我自己的项目里我选择的是把图片转成 base64再通过 API 调一个支持视觉输入的模型把返回的文字描述喂给 Claude Code。Python 调用示例大致是import base64 import requests def image_to_base64(image_path): with open(image_path, rb) as f: return base64.b64encode(f.read()).decode(utf-8) # 将 base64 作为请求体的一部分配合提示词让模型返回结构化描述这套方案更适合有较多图片处理需求、或者想把图片理解能力沉淀成服务的场景。好处是稳定、可控、可以批量坏处是需要维护一个 API 服务和对应的 Key对普通个人项目来说稍微重了一点。4.4 我推荐的组合方案我实测下来最顺手的组合是截图/网图用“原型读取图片路径”文字密集的抓图用“Python OCR”架构图/设计稿用“API 视觉解析”。三者并不冲突可以分别做成一到两个 SkillClaude Code 会根据任务类型自动选择。如果你嫌麻烦至少先把“原生路径读取”和“OCR 脚本”配好这两者能覆盖 80% 的日常需求。5. 实战组合拳让 Claude 根据截图和 Skills 完成一个前端页面5.1 需求描述与图片输入光讲配置不讲实战等于白讲。我来复盘一个我实际做过的小任务把一张手画的页面线框图转成一个可运行的 React 页面。我在 Claude Code 里输入的内容是这样的这是一张手画线框图路径是 ~/Desktop/wireframe.jpg 请先理解它的布局然后用项目现有的前端规范实现这个页面。它先读取了图片识别出这是一个带顶部导航、左侧侧边栏、中间内容卡片区的典型后台布局。紧接着它自动扫描项目里已有的组件目录匹配了frontend-component-builder这个 Skill开始按里面的规则生成代码。5.2 Claude 调用 Skill 的完整过程与监控这一步很有意思你可以看到 Claude 的思考链路它先描述了图片里的布局结构然后说“检测到当前项目使用 src/components 组织组件我将遵循 frontend-component-builder 技能中的模板生成代码”接着就真的调用了相关模板和组件命名规范。我在这个过程中盯了两个点第一它有没有真的走 Skill 的步骤还是自己自由发挥。如果它自由发挥我会用/skills 强制加载 frontend-component-builder手动指定第二它生成代码后有没有主动跑 lint。Skill 里写了“生成后运行 npm run lint 校验”但偶尔会有遗漏需要提醒5.3 生成结果验收与迭代页面生成后我直接让它npm run dev起本地服务再截图给 Claude 看渲染结果让它自己对比线框图找差异。这一段“生成→渲染→截图→回传→修改”的闭环是我觉得 Claude Code 配完图片识别后最值钱的地方。以前要自己截图自己看自己改现在成了 AI 的自我迭代循环我只负责做最终验收。当然也不是一次就完美。第一次生成的页面在间距和字体大小上跟线框图有出入我直接把渲染截图喂回去说了一句“左侧边栏宽度偏窄卡片间距可以再大一点”它就自己调整了对应样式。6. 常见问题与排查技巧实录6.1 Skills 扫描不到这是我遇到最多的问题。装好技能包后Claude 半天不识别对话里问它有哪些技能它一直回答“我没有额外技能”。排查步骤按这个顺序来确认目录位置对不对Claude Code 默认扫描~/.claude/skills/下的子目录确认每个 Skill 目录下都有SKILL.md且文件名大小写正确确认SKILL.md开头的 YAML front matter 有name和description格式用---包裹如果改完还不行直接重启 Claude Code 会话有时候是会话缓存导致扫描结果没刷新6.2 图片路径无法读取有时把图片路径丢给 Claude它说“找不到文件”或“无法读取”。常见原因是路径里的特殊字符比如空格或中文。解决方案很简单给路径加上引号或者用相对路径甚至可以把图片复制到项目目录下再操作。还有一种情况是图片格式不兼容。Clipping 的截图、webp 格式、某些高分辨率 PNG在读取时偶尔会出问题。我的处理办法是先用sipsmacOS 自带或 Python 把图片统一转成 JPEG 或标准 PNG 再丢给 Claude。命令行一行就搞定sips -s format jpeg input.png --out output.jpg6.3 OCR 中文识别乱码遇到中文识别乱码九成是语言包没装好。tesseract默认只支持英文要识别简体中文需要额外的chi_sim语言包。macOS 上用 brew 安装后还要确认一下语言包位置有时需要单独软链。更隐蔽的问题是代码截图里混排了中英文和特殊符号OCR 会把|、之类的符号识别成I或1。这种场景下只靠 OCR 是不够的建议先把截图放大再识别或者配合 Claude 的图片理解能力做二次校正别把 OCR 结果当最终答案。6.4 上下文过长被截断装了 Skills 以后Claude Code 的上下文占用会明显上升尤其当你同时装了几十个技能包。遇到“上下文超长”或“回答到一半断掉”的情况我会做三件事用/compact压缩当前对话保留关键信息把已经完成的文件从上下文里移除用/drop命令把用不到的大技能包先移出目录需要时再启用6.5 一个必须补上的教训最后说一个让我记忆深刻的坑有一次花了一个多小时配置各种 Skills结果发现有个技能的脚本路径写的是~/scripts/run.sh而实际目录已经改名了导致 Claude 每次执行都报错“脚本不存在”。后来我养成一个习惯写包含脚本的 Skill 时脚本和 SKILL.md 必须放在同一个技能目录下并且用相对路径引用。这样无论技能包拷贝到哪台机器、哪个目录都不会因为绝对路径失效而挂掉。既方便自己迁移也能直接分享给团队其他人复用。写在最后的个人体会配置 Skills 和图片识别这套东西本质上是在做“提示词资产化”。以前我们写提示词是临场发挥每次都要重新组织语言现在把常用的套路、规范、脚本固化成一个一个 Skill让 AI 每次出手都保持稳定水准这份积累是会随着时间增值的。我现在的习惯是每次遇到重复三次以上的任务就会停下来想想能不能固化成技能。三个月下来攒了一套完全属于自己工作流的 Skills新项目接入 Claude Code 后基本半小时内就能达到“老员工”生产力。这套玩法最迷人的地方在于——它没有上限你的技能库越厚AI 在你手里就越强。