拿到Claude Code的第一反应,多数人都是直接上手问几个问题试试水,等真把它当生产力工具用的时候,才意识到问题没那么简单。我在跑了几个项目之后发现,Claude Code的表现好坏,很大程度不取决于模型本身,而取决于你有没有把规则、命令、上下文整理成一整套能复制的东西。这套东西,就是我手里这个项目要聊的——claude-code-templates,一套专门给Claude Code用的模板体系。
这个项目解决的是Claude Code从“能用”到“好用”的最后一公里问题:让每次开新项目时不必重写规则、重配命令、重新调试行为边界。换句话说,它适合正在用或准备用Claude Code做日常开发的工程师,也适合想给团队搭一套统一AI协作规范的技术负责人。我会结合自己实际踩过的坑,把这套模板的设计思路、核心模块、搭建步骤和排查技巧全部摊开讲。
1. 项目由来:为什么Claude Code需要一套模板
先聊一个很现实的问题:写代码写得好好的,为什么非要给AI助手专门配一套模板?这是我一开始的疑问,也是团队里很多人问我的第一句话。
实际用上一段时间就会发现,Claude Code这类终端型AI编程助手的短板不在理解能力,而在“默认上下文”的不可控。你在终端里让它写一个函数,它默认会用训练时学到的“平均经验”来生成,但你的项目大概率有自己的命名规范、目录结构、技术栈约束和架构约定。没有规则约束,AI只会给你一个“看起来不错但根本拿不上代码评审会”的结果。这类问题不是偶然,而是每一次对话都可能出现的常态。
当时我观察到的现象很有意思:同一个任务,在不同时间、不同上下文长度、不同措辞下让Claude Code去执行,输出的代码风格能差出好几个版本。有人把这种不稳定归咎于模型本身,我觉得不完全是。真正的变量是你有没有建立一套“纪律”,把AI的行为锚定在固定的轨道上。Claude Code本质上是一个高度依赖prompt纪律的工具,而模板就是纪律的载体,这句话我在任何场合都愿意重复。
我也见过不少开发者,CLAUDE.md里写了十来条规则,结果每次对话还是会有一样的错误反复出现。原因基本逃不出三类:规则写得太抽象,“保证代码质量”这种话等于没说;规则之间互相矛盾,AI不知道该听哪一条;规则文件太长,上下文里塞满无关信息,把真正重要的约束挤掉了。这些坑我自己全踩过,后来才慢慢总结出模板化管理的思路。
模板的意义,概括起来是三个词:可复用性、可维护性、行为确定性。可复用性让新项目在30秒内获得完整的AI协作规则,不再从零口述;可维护性让规则像代码一样有版本、有结构、有评审,而不是堆在某个角落里落灰;行为确定性让AI在不同任务里保持稳定的输出风格,不会这次一个样、下次另一个样。
其实这个想法并不是什么新鲜事。用过dotfiles统一Shell环境的人都知道,环境配置一旦模板化,换新机器就是几分钟的事;EditorConfig统一编辑器风格、pre-commit统一git钩子,本质上都是同一套思路。Claude Code作为一个终端工具,它的“dotfiles”就是一套模板仓库。这个项目做的就是这件事:把AI协作过程中沉淀下来的规则、命令、钩子和角色配置,全部固化成一个可以版本管理、可以分发、可以复用的仓库。
2. 核心设计:模板的三个层次与方案选型
设计模板体系时,我最先想清楚的是分层问题。Claude Code的配置散落在多个位置——用户全局目录、项目根目录、子目录、命令文件、钩子脚本——如果不先定义清楚层级,后面写起来就是一团乱麻。
我最后采用的方案是三层次模型:全局层、项目层、会话层。这个分层不是拍脑袋定的,而是跟着Claude Code实际加载配置的机制走。全局层对应的是HOME目录下的~/.claude/CLAUDE.md,管的是所有项目通用的行为习惯。比方说我习惯让AI用中文回复、喜欢看到带测试用例的代码、要求先列方案再动手修改,这些跟具体项目无关的东西,全部放在这一层。如果你和团队分工里有一个固定节奏,比如“AI负责第一版草稿、人负责评审修订”,也可以写在这里,让所有项目共享这个约定。
项目层对应的是项目根目录下的CLAUDE.md,管的是当前仓库特有的约束。这一层放的东西要足够具体:技术栈清单、目录结构说明、命名规范、禁止使用的模式、测试要求、构建命令、约定俗成的架构边界。举例来说,如果仓库里规定所有API路由都放在src/routes下,那这条约束写进项目层,AI后续生成的代码就会自动遵循,不需要每次对话都重复提醒。
会话层则是每次对话时在命令行里用/memory或简单指令临时补充的内容,适合放一次性需求或临时变更的约束。比如“这轮重构不要动数据库迁移脚本”“本次修复只改auth.service.ts,其他文件不要碰”,这类约束用完就散,不需要沉淀到任何配置文件里。
三个层次叠加在一起,优先级从高到低是:会话层 > 项目层 > 全局层。这意味着你可以在会话里临时覆盖项目规则,也可以在项目里覆盖全局习惯。这套机制用起来很灵活,但边界一定要清楚。我总结过几条经验:全局层只放“不因项目而改变”的规则,否则换了项目会出现意料之外的冲突;项目层只放“进入这个仓库就必须遵守”的规则,不要把通用方法论写进来;会话层只放一次性约束,用完就散,不要想着沉淀到文件里去。任何跨层的迁移,都应该像代码重构一样先想清楚理由,而不是随手搬。
方案选型上,我还对比过另一种思路:把所有规则都塞进项目根的CLAUDE.md里,不搞全局层,理由是这样更简单、更可预测。实测下来,这个方案在单项目场景下确实简单,但一旦你同时维护三五个仓库,就会发现大量重复的规则散落在各个项目里,改一条通用规则要动五个文件。全局层存在的意义,就是把“所有项目都通用的规则”提升到上一级,避免重复维护。当然,代价是行为路径多了一层,排查问题时需要多看一眼。这个取舍我认为是值得的,尤其是团队协作场景下,全局层就是团队规范的数字载体。
还有一个被很多人忽略的细节:Claude Code在会话开始时,会把CLAUDE.md的内容作为上下文注入。这意味着模板文件本身不是写给人看的文档,而是写给AI看的结构化指令。所以我在设计时,把每个文件都当作“会被解析的配置”来写,而不是“给人阅读的说明”。这两者的区别很大,写给AI看的东西,要尽量具体,要能被执行,要经得起字面解析。
3. 模板核心模块解析与实操要点
分层框架定了以后,接下来要拆解的就是模板里每一个核心模块怎么写。这部分是整篇文章的重头戏,我会把CLAUDE.md、slash command、hooks这三个最核心的模块逐个讲透,最后补上agents和其他配置的说明。
3.1 CLAUDE.md的写作方法:先定结构再填内容
很多人写CLAUDE.md,上来就是一段散文式的诉求:“请写高质量的代码,注意安全性、可维护性、可扩展性”。这种话AI读了等于没读,因为“高质量”这三个字的解释权不在你手里,模型对它的理解跟你的预期大概率是两回事。我现在的CLAUDE.md,本质上是一份可以被直接解析的结构化清单,而不是文章。
我习惯的基础结构分成五个区块,每个区块解决一类问题。第一个是项目概览,用三句话说明这个仓库是做什么的、主要语言是什么、核心依赖有哪些。这个区块是为了让AI在拿到任务前建立最基本的背景认知,避免它把Python项目的代码风格套到TypeScript项目上。第二个是命令速查,把lint、build、test、dev这些高频命令全部列出来,AI需要跑命令时不用瞎猜。这看起来是小事,但实际体验差别很大,比如你的测试命令是pnpm vitest,AI默认可能会猜测成npm test。
第三个是代码规范,包括命名风格、格式化工具、模块边界等硬约束。这一块是CLAUDE.md里价值密度最高的部分,但也是最容易被写废的部分。写规范有一个非常关键的原则:说得越具体,AI越听话。举个例子,与其写“注意代码质量”,不如写“public方法必须有JSDoc注释,圈复杂度超过8的方法需要拆分并说明理由”。AI是真的会按字面意思执行的,含糊的字眼只会得到含糊的执行结果。第四个是禁忌清单,直接说不要做什么,比如不要修改公共接口签名、不要引入新的运行时依赖、不要绕过现有的错误处理中间件。禁忌清单的作用是提前给AI划一条红线,省得它反复试探边界。
第五个是输出偏好,规定AI应该以什么形式给结果:给完整代码、给修改方案还是先列出影响范围。有些任务你希望它直接改文件,有些任务你只希望它给建议,这个偏好写清楚,能省掉大量来回确认的对话轮次。
规则数量一定要克制。我自己踩过的一个坑是,曾经把CLAUDE.md写到了六十多条规则,结果AI反而变得畏手畏脚,改一行代码都要跑来问一句,产出效率直接减半。后来我定的标准是,全局层加项目层加起来不超过三十条,每条规则都要能通过一个测试:“删掉它之后,行为会不会有明显变差”。不符合这个标准的规则,果断删掉。宁可少写,也不要写那种“看起来很有道理但AI根本执行不了”的废话。
3.2 自定义slash command:把常用流程压成一条命令
Claude Code最实用的功能之一就是slash command,它能把一个复杂的多步骤流程压成一条/命令。模板项目的核心资产也在这里。斜杠命令的实现方式不复杂,不需要写代码,只需要在项目目录下建一个commands文件夹,每个命令对应一个Markdown文件,文件名就是命令名。
以我模板里最常用的/review命令为例,这个命令的内容是一个prompt模板,大致结构是:对最近的提交做代码评审,按可读性、正确性、安全性、性能四个维度分别输出问题,每一条问题标注严重程度,最后给出修改建议。就这么一个简单的模板文件,让我每次提交PR前都能快速得到一轮结构化review,再也不用敲一大段指令描述我想要什么。
斜杠命令能不能发挥价值,关键不在命令机制本身,而在prompt模板写得好不好。我的经验是,命令模板里除了任务描述,还要包含输入输出的格式约定。比如/review命令里我会明确要求:结果按表格输出,至少给出三个维度的评分,严重问题用“阻断”标记。给一个输出示例也很重要,AI很擅长照着示例的样式给结果,这样同一个命令换十个任务,输出结构也不会漂移。
命令文件的命名我用的是kebab-case,比如code-review.md对应的就是/code-review。文件开头可以加一小段注释性的描述,说明这个命令的适用场景,方便以后翻阅。目录位置放在项目根的.claude/commands或用户全局的~/.claude/commands都行,区别在于前者跟随项目走,后者全局可用。我通常把通用性强的命令放全局,比如review、plan、refactor这些适用于所有项目的;把跟项目绑定的命令放项目里,比如“给这个服务生成迁移脚本”这种只有当前仓库用得上的。
另外一个很值得做的细节:有些命令需要带参数,Claude Code支持在命令模板里使用$ARGUMENTS变量来接收用户输入。比如我写过一个/analyze <模块名>命令,用来对指定模块做架构分析,我只需要在模板里写请分析$ARGUMENTS的模块边界与依赖关系,调用时敲/analyze auth就可以了。这个能力让命令从“固定流程”升级为“可参数化的工具”,灵活度一下子上来了。
3.3 hooks:在命令前后自动触发的守门员
hooks是Claude Code里容易被低估的一个功能。如果把slash command比作加速器,那hooks就是刹车和护栏。它能在AI执行某类动作的前后自动触发脚本,不用指望AI“记得住”某些规则,而是直接由系统层强制执行。
我在模板里配的hooks主要有三类。第一类是PreToolUse,在AI调用某个工具之前触发,适合做拦截检查。比如我配了一条规则:AI在执行Bash工具时,如果命令里包含rm -rf这样的危险操作,直接拦截并提示确认。这类钩子本质上是给AI的权限套上一层外部约束,比在CLAUDE.md里写一万遍“不要执行危险命令”可靠得多,因为后者靠自觉,前者靠强制。
第二类是PostToolUse,在AI执行完工具操作之后触发,适合做验证。我配的一个常用场景是:AI修改了TypeScript文件后,钩子自动跑一遍tsc --noEmit做类型检查,把报错反馈给AI,让它自行修复。这样AI的代码生成闭环里就多了一个自动质检环节,不需要我每次手动拉起来跑编译。这比在prompt里反复强调“写完代码要自测”有效得多,因为它是确定性的——无论AI有没有这个自觉,钩子都会执行。
第三类是Stop,在对话暂停或结束时触发。我设置的是在对话结束时自动生成一份变更摘要,列出本次会话中修改的文件和关键操作,方便我回顾和写commit message。这个功能用起来非常舒服,尤其是长时间调试会话结束时,它能帮你拼回一条完整的时间线。
不过hooks也有它的脾气,最典型的教训是:脚本写得太严格,动不动返回非零退出码中止AI的操作,反而会打断开发节奏。AI正改到一半,hook跳出来卡住,人就得跑过去看发生了什么。我后来定的策略是:默认只拦截高风险动作,比如危险命令、删除文件这类不可逆操作;其余问题只记录、提示、不阻断。宁可让AI做完之后再提醒,也不要每一步都打断它。拦截要精准,提示要宽松,这个度需要自己根据项目调。
3.4 agents与输出配置:给AI划分角色边界
Claude Code支持定义多个agent,每个agent可以有自己的系统提示词、可用工具和行为偏好。这块在模板里也有对应的配置结构,通常放在.claude/agents目录下,每个agent一个Markdown文件。
我做模板时一般会定义三个基础agent。第一个是“编辑者”,负责执行具体的代码修改任务,提示词强调直接动手、改完自测、输出diff描述;第二个是“评审者”,负责代码评审和方案审查,提示词强调找问题、给理由、不直接改代码;第三个是“架构师”,负责模块设计和技术选型分析,提示词强调整体性思维、关注边界与依赖、输出设计文档。
这样划分的好处很实际:同一个任务丢给不同agent,输出的形态是完全不一样的。让评审者去改代码,它可能会纠结现有代码的毛病而忘了动手;让编辑者去评审,它大概率会为了通过而走过场。分好角色之后,你的对话流程就变成“架构师出方案、编辑者落地、评审者把关”,这套配合打起来非常顺。agents的配置在模板里占的篇幅不大,但建议提前建好骨架,后续按项目需要再补行为细节。
输出风格的配置我放在settings.json里,比如默认的编码风格、是否展示思考过程、输出语言偏好等。这些属于全局约定,适合放模板,新项目拉过去直接生效。模板里给出一份基线的配置,避免每个项目重配一遍,这本身就是模板化的核心价值。
4. 实操过程:从零搭一套可用的基础模板
理论讲完了,接下来是最关键的部分:从零开始,一步步搭出一套可以直接用的模板。我会拿一个常见的Web后端项目作为示例场景,技术栈是Node.js + Express + TypeScript。整个搭建过程分成五步,每一步我都会说明做了什么、为什么这么做。
4.1 撰写项目层的CLAUDE.md
首先在项目根目录创建CLAUDE.md。开头写项目概览,三句话讲清楚:这个仓库是一个基于Express的REST API服务,主要语言是TypeScript,运行时是Node.js 20+,核心依赖包括Prisma做ORM、Zod做参数校验。这段话的作用是让AI在接手任何任务前先建立技术背景,避免它用错误的范式生成代码。比如一个Prisma项目,AI如果不知道有Prisma,就很可能用pg直接写SQL,这种错误在概览里写清楚就能避免。
接着写命令速查。我把几个高频命令硬编码进模板:启动开发服务是pnpm dev,运行测试是pnpm test,构建是pnpm build,lint是pnpm lint。有件事值得单独强调:看清楚你的包管理器。项目里用的是pnpm,我就在模板里写死“一律使用pnpm,不要使用npm或yarn”。这一条如果不写,AI在装依赖时很可能会用npm,然后生出一个lockfile,污染整个仓库。这种低级错误我在没写模板的项目里见过太多次了。
代码规范部分,结合项目现状写了两条硬约束:一是所有API路由必须放在src/routes目录下,按资源名分文件;二是所有请求参数必须在入口处用Zod schema做校验,不允许在业务代码里手动判断类型。这两条就是前面说的“具体规则”,每一条都是能被执行、能被检查的。最后加了一个禁忌清单:不要修改src/db下的Prisma schema文件,除非任务明确要求;不要绕过src/middlewares/auth.ts里的鉴权逻辑;不要抛裸Error,统一走AppError。这几条写上去之后,AI后续生成代码的边界感明显强了很多。
4.2 创建基础slash command
第二步,在项目下建.claude/commands目录,先放三个最基础、适用性最广的命令。第一个是/plan,作用是让AI在动手写代码之前先列方案,内容模板里写明:请先不要修改任何文件,针对当前任务输出一个实施计划,包括影响范围、涉及文件、实施顺序和风险点。这条命令对复杂需求特别好用,可以极大降低“AI一头扎进代码里改错方向”的概率。
第二个是/test,让AI自动为指定模块生成或补全测试。模板里写了输出要求:先分析被测模块的输入输出边界,列出测试用例清单,再生成测试代码,最后运行测试并汇报结果。这条命令配合hooks里的PostToolUse自动跑测试,基本能覆盖常见的“AI写完代码不测”的痛点。第三个是/review,也就是前面提过的代码评审命令,模板里写死评审维度和输出格式。这三个命令覆盖了“动手前、动手后、完成后”三个阶段,已经能支撑日常开发的完整闭环。
4.3 配置基础hooks
第三步,在.claude目录下创建hooks配置,我一般放在settings.json里定义。先加一条PreToolUse:拦截危险shell命令,规则里列出rm -rf、git push --force这类需要人工确认的操作,匹配到就中止AI的操作并提问。再加两条PostToolUse:一条在AI修改TypeScript文件后自动跑tsc --noEmit做类型检查,一条在AI修改.ts文件后自动跑eslint --fix自动修复格式问题。
写hooks脚本时,我强烈建议所有输出都重定向到日志文件。原因很现实:hooks脚本挂掉的时候,Claude Code有时候会静默失败,你根本不知道规则有没有生效。写了日志,排查时直接看stderr和exit code,能省下大把时间。另外,hooks脚本里不要依赖当前环境里可能不存在的命令,比如直接调用某个环境里没装的CLI。要用就写清楚安装要求,或者干脆用Node脚本包一层,保证跨环境行为一致。
4.4 配置agents与settings
第四步,在.claude/agents目录下创建三个基础agent文件,对应前面提到的编辑者、评审者、架构师。每个文件的核心是role description和system prompt。编辑者的描述写“负责执行代码修改任务,直接动手改文件,改完自动跑测试验证”;评审者的描述写“负责代码评审,输出问题清单和修改建议,不直接修改文件”;架构师的描述写“负责方案设计和技术选型,输出设计文档,不写业务代码”。这个角色边界会直接影响AI输出的形态和后续对话的节奏,建议在模板里就固化下来。
settings.json的配置项我会把通用项列进去:默认输出语言设为中文,代码风格的偏好按团队规范统一设置,模型相关的参数不动,留给用户按需调整。settings.json里还有一个比较实用的配置是permissions的默认模式。我在模板里默认关闭高风险工具,让AI所有危险操作都走询问流程,需要时再在当前会话里临时放行。
4.5 提交模板并验证
第五步,把这个模板先提交到git仓库,然后再开始跑Claude Code。这一步的顺序很多人会搞反。你先跑Claude Code再想起配模板,AI在会话里读到的上下文就是没有规则约束的状态,行为自然不可控。而模板作为仓库里的一部分代码提交进去,任何新clone下来的工作区都会有这一套完整的规则配置。
提交完之后做一次冒烟验证:随便开一个会话,让AI“先读取CLAUDE.md,然后用一句话总结这个项目的技术栈和命令”,再让AI执行一下/plan看看响应是否正常。如果CLAUDE.md内容能被正确总结,命令能正常触发,hooks没有报错,这套基础模板就算搭成了。后续就是边用边迭代,把新发现的好规则沉淀回模板文件里。
5. 常见问题排查与避坑实录
模板体系搭建完成只是开始,真正考验人的是日常使用中冒出来的各种问题。这一章节我把实际踩过的坑和排查思路整理成几张速查表,每个问题都是真遇到过的,不是凭空想象的。
5.1 规则太多导致上下文超长
这是用模板之后最常出现的问题。CLAUDE.md内容一旦膨胀,每次会话注入的上下文就会变长,侵占有效对话空间,模型可能把后面真正的任务指令给“挤掉”。我判断的标准是:一轮对话里,如果模型频繁表现出“忘记”了任务要求,先别怀疑模型,去看CLAUDE.md是不是已经塞进了太多无关紧要的内容。
排查思路很简单,打开对话的信息上下文面板看占用比例,如果规则文件占掉大头,那就该瘦身了。应对方法有两个:一是把CLAUDE.md精简到二十条以内,只保留硬约束;二是把长篇幅的说明文档移到单独的参考文件里,使用时通过/memory或具体的slash command按需加载,不让它常驻上下文。这两种方案我都试过,结论是:常驻的规则必须精,按需加载的内容可以多。
5.2 slash command不生效
斜杠命令不生效常见的就两类原因。一类是文件名或目录位置不对:项目级命令应该放在项目根的.claude/commands下,全局命令放在~/.claude/commands下,文件名就是命令名,大小写也要注意。放着的位置错了,Claude Code就找不到。另一类是工作目录不匹配:AI执行命令时的当前工作目录如果是子目录,有时候加载不到项目根的命令。排查时用/help看一眼命令列表,能不能看到你创建的/plan、/review,一目了然。
还有一种比较少见的坑:命令文件名用了中文或带空格。Markdown文件名里有空格,敲命令时就需要转义,体验极差。建议统一用kebab-case英文命名,兼容性和可输入性都最好。
5.3 hooks静默失败
hooks出问题最麻烦的就是“静默失败”——脚本执行出错,但没有报错弹出来,你就以为规则在生效,实际它完全没有跑。我排查过好几个这种问题,最后都是看日志文件才发现脚本早就挂了。
对策有两个。第一,hooks脚本里必须写日志,把执行时间、命令内容、标准输出、exit code全部记录到文件,出问题时有据可查。第二,脚本里不要依赖未安装的命令。我踩过的坑是写了一个依赖jq的脚本,换到一台没装jq的机器上hooks就全挂了。后来我把这类依赖全部换成Node脚本或者用环境自带的工具实现,问题才彻底解决。
5.4 全局层和项目层规则互相打架
模板的分层机制有时候也会给自己添麻烦。比如全局层写了“所有代码需要JSDoc注释”,某个项目内部约定是轻量注释、文档放doc目录,这两个规则就冲突了。AI在生成代码时不知道该听谁的,行为就会飘忽不定。排查这类问题,先确认自己把规则写在了哪一层,再想想有没有跨层写进了语义矛盾的约束。
我的处理习惯是:项目层的硬约束优先于全局层的通用约束,如果全局层某条规则在多个项目里都会被覆盖,那就说明这条规则不该放在全局。层级设计的意义就是让这种冲突有明确的裁决规则,但前提是你自己心里清楚每一层放了什么。建议每隔一段时间做一次全量盘查,把可能冲突的条目及时清理掉。
5.5 模板文件本身变成了噪音
CLAUDE.md会被注入每一次会话的上下文,但这个注入不是全局统一加载的。Claude Code在一些场景下会读取子目录里的CLAUDE.md,此时主目录的规则可能被稀释或者重复。我在一个monorepo项目里就遇到过类似问题:子包目录里放了一个小型CLAUDE.md之后,AI在子包内工作时确实更懂本地的约定,但两个文件叠加起来,规则总量就翻了一倍,上下文明显被浪费。
经验是:子目录的CLAUDE.md只放“跟父目录不同的增量约束”,跟父目录重复的规则一条都不要写。如果一份子规则文件一页都装不下,大概率是父层拆分的粒度不对,需要重新考虑目录结构的设计,而不是靠AI硬扛。
6. 模板维护与进阶思路
模板不是写一次就完事的。我维护这套claude-code-templates的过程里,最大的感触是:模板本身要当成代码来对待,而不是当成文档。它需要版本管理、需要review、需要持续迭代。
规则文件的变更建议走跟代码变更一样的流程:先改,再拉一个临时会话验证行为符合预期,最后提交并用清晰的commit message记录改动原因。这样做的价值在几个月后体现得特别明显——如果AI行为突然变怪,你可以git blame一下模板文件的改动记录,很快就知道是哪条规则导致的,而不用对着终端发呆。
另一个值得投入的方向是给模板做一个skeleton目录,把CLAUDE.md、commands、agents的结构都整理成可复制的骨架,让新项目直接复制过去再按需调整。我现在的做法是保留一份模板仓库作为源,新项目初始化时直接把整个骨架目录拷过去,再改掉项目特有的部分,整个过程不超过五分钟。如果愿意做得更深,还可以写一个简单的初始化脚本,交互式收集项目信息,自动生成定制化模板。
进阶方向上,我个人的实践心得是:与其追求每个项目都有一套完全定制化的规则,不如把八成精力花在打磨通用规则上,剩下两成留给项目特有部分。通用规则迭代得快、复用率高,项目特有规则写得太细反而容易过时。比如“代码结构划分”“命名风格”“提交信息格式”这类通用规则,几乎每个项目都适用,值得反复打磨;而“某个服务模块的专属流程”这种高度绑定的规则,项目一变就废,不值得花太多心思。
最后再说一个很多人没注意到的点:好的模板会让AI的工作方式趋近于你的预期,但更重要的是,它逼着你自己把工作流彻底想清楚了。规则写不清楚的项目,大概率是开发方法本身还没形成稳定的范式。我在搭建这套模块的过程中,对自己日常开发习惯的复盘深度,远超写任何代码。如果你也在用Claude Code,我的建议是别急着追求大而全,先拿一个小项目,把最常用的流程一步步沉淀成模板,用起来觉得哪里不对就改哪里。这套体系不是一次到位的终点,是一个让开发过程越来越可复现的起点。