Claude Code用户有个公开秘密:同一套提示词,有人拿到的是实习生水平代码,有人拿到的是架构师级别产出。差距不在模型,在一个多数人没碰过的文件夹——~/.claude/skills/

这个目录里每多一个.md文件,Claude的输出就离"能直接进生产环境"近一步。

开发者社区最近把这事捅破了。一位产品经理出身的工程师开源了CLSkills,直接扔了789个现成技能文件进去,覆盖71个技术领域。curl一条命令,Claude瞬间"失忆"——忘掉通用助手的安全回答,切换成"干了八年K8s的SRE"人格。

技能文件到底是什么

技能文件到底是什么

想象你带新入职的资深工程师。第一天不会让他翻文档现学,而是甩过去一份内部Wiki:我们用什么库、踩过什么坑、代码审查的红线在哪。

技能文件就是这份Wiki,只不过读者是Claude。

它是个纯文本Markdown,丢进指定目录后,Claude会在相关任务里自动调用。不需要@提及,不需要手动加载,甚至不需要告诉用户"我正在使用技能文件"——它就像你给同事发了个眼神,对方立刻切换成"我懂"模式。

但写好这份Wiki极耗时间。一个模糊的技能文件会让Claude更自信地犯错:说"处理好错误"它可能就加个try-catch,说"PostgreSQL容器启动需要5-10秒,先用pg_isready做健康检查再启动依赖服务"它才会写出能扛流量的代码。

CLSkills的789个文件,本质是789份" senior工程师的脑内检查清单"。

一个真实技能文件长什么样

一个真实技能文件长什么样

以Two Factor Auth技能为例,文件开头直接定调人格:

「You are a security engineer implementing two-factor authentication. The user wants to add 2FA/MFA to an existing auth flow using TOTP and backup codes.」

不是"有帮助的AI助手",是"正在实施双因素认证的安全工程师"。这个身份切换会影响后续所有决策:密钥怎么存、备份码怎么生成、TOTP时间窗口容忍度设多少。

接下来是"What to check first"——现有auth用的是什么?JWT还是session?用户库有没有email字段?这些前置检查避免Claude在沙地上盖楼。

核心部分是带编号的步骤和可复制命令。不是"设置数据库",是"运行docker compose up -d postgres,然后用docker compose ps验证状态"。每个指令都能直接贴进终端。

25-40行工作代码紧随其后。不是伪代码骨架,是能跑、能测、能进PR的完整实现。最后是Pitfalls:TOTP密钥轮换时的竞态条件、备份码的哈希策略、为什么不能用SMS 2FA——全是血淋淋的真实踩坑记录。

这种结构让Claude的输出从"教程级别"跃迁到"代码审查能通过级别"。

789个技能覆盖了哪些战场

789个技能覆盖了哪些战场

71个分类基本扫平了现代开发的全栈:

前端框架占了一整排:React、Vue、Angular、Svelte、Next.js,连Tailwind的类名组织策略都有专门文件。后端从Node.js到Rust,GraphQL和gRPC各自独立成章——毕竟一个走错是N+1查询,一个走错是协议版本地狱。

DevOps是重头戏。Docker技能不是教你怎么写Dockerfile,是多阶段构建的层缓存策略、非root用户的权限最小化、health check的正确探针配置。Kubernetes文件直接假设你在跑生产集群:HPA的CPU目标值该设多少、pod disruption budget怎么配才不会在滚动更新时炸服。

云厂商三家全覆盖。AWS的技能文件会问你IAM角色是绑EC2还是EKS,GCP的会区分Cloud Run和GKE的部署差异,Azure的……确实也有,而且没假装Azure和AWS一样。

数据库分类细到令人发指。PostgreSQL和MySQL分开、Redis的缓存策略和持久化策略分开、Elasticsearch的mapping设计和集群调优分开。Prisma作为ORM有独立技能,因为它生成的SQL和手写SQL在性能分析时完全是两套思路。

测试、安全、AI/ML、移动端、桌面端、CLI工具、支付集成、搜索引擎、监控告警——连"怎么给Electron应用做自动更新"这种冷门场景都有现成文件。

使用方式极简。mkdir创建目录,curl下载对应技术的.md文件,然后正常和Claude对话。不需要配置文件,不需要插件市场,不需要在提示词里写"请扮演资深工程师"。

有技能和没技能,差距能有多大

有技能和没技能,差距能有多大

CLSkills的作者用Docker场景做了对比演示。

没技能文件时,Claude的回应是:"Here's a basic Docker setup..." 然后给出一个能跑但粗糙的Dockerfile——没有health check,单阶段构建导致镜像体积爆炸,默认root用户,层缓存完全没优化。这种代码进CI/CD会被打回来重写。

加载技能文件后,同一句话的输出变了:多阶段构建把最终镜像压到 Alpine 基础,非root用户运行,health check用正确的探针路径,.dockerignore排除了node_modules和日志文件。层缓存策略让重复构建快了三倍。

作者的原话是:「The difference between Claude with and without skill files is massive.」

这个差距的本质是上下文窗口的利用效率。Claude的上下文有限,通用助手的"常识"占了大量token。技能文件把这部分替换成领域专属的高密度信息——不是"Docker是什么",是"我们这个团队怎么用Docker"。

更隐蔽的好处是一致性。团队里五个人用Claude,没技能文件时拿到五种风格的代码;统一加载技能文件后,输出风格、目录结构、错误处理方式全部对齐。这相当于给AI做了代码规范培训,而且零管理成本。

为什么这事现在才火

为什么这事现在才火

Claude Code的技能文件功能其实存在已久,但官方文档一笔带过。Anthropic的重心放在Agent能力和工具调用上,这个"放几个文本文件就能质变"的机制被藏在CLI的角落。

社区探索过几种用法。有人把公司内部的编码规范转成技能文件,Claude生成的代码直接符合团队风格。有人针对特定项目做技能——"这个微服务用Hexagonal Architecture,领域层不能依赖基础设施"。最极端的案例是一个团队给遗留代码库写了50个技能文件,Claude终于能在这个200万行的Rails项目里安全重构。

但个人开发者很难从零积累。写一个高质量技能文件需要同时懂技术和教学——知道坑在哪,还要知道怎么让AI理解这个坑。CLSkills的789个文件相当于把社区智慧打包,curl下来就能站在巨人肩膀上。

这种"本地知识库+云端模型"的架构也值得玩味。技能文件完全离线存储,公司敏感信息不会泄露;同时又能被Claude Code实时调用,享受云端大模型的推理能力。对于不能上云的代码场景,这是目前最优雅的解法。

789个技能文件,71个技术领域,一条curl命令。当你的同事还在和Claude反复拉扯"这里应该用Promise.all而不是await循环"时,你已经拿到了经手过上千个容器的SRE写的配置——而且他没收费,没请假,24小时在线。

唯一的问题是:你的~/.claude/skills/目录,现在有几个文件?