结论先说:Claude Code 的配置不是「往一个文件里堆提示词」,而是四层分工——CLAUDE.md 放始终需要知道的项目事实,Rules 放硬性约束与路径作用域惯例,Skills 放可复用的多步流程,Workflow 则把 Skills、Hooks、定时任务和 CI 串成团队可复制的自动化。搞混层级是最常见的翻车原因:把 40 行部署清单写进 CLAUDE.md,会话一启动就吃掉几千 token;或者把「禁止 force push」这种红线散在 Skill 里,压缩上下文后 Claude 照样忘。
这篇文章面向正在用或准备上 Claude Code 的 iOS、Flutter 与 AI 应用开发者——尤其那些考虑把主力开发迁到 Cloud Mac、Remote Mac 租赁环境的团队。我们会按 2026 年 8 月官方文档与实测,给出目录结构、YAML frontmatter 示例、组合决策表,以及和 Apple Silicon 云 Mac 长期运行相关的注意点。
数据核对日期:2026 年 8 月 5 日。配置行为以 Claude Code Skills 官方文档 与 Anthropic 博客为准;不同版本 frontmatter 字段可能略有增减。
为什么需要分层,而不是一个大 CLAUDE.md
很多团队的第一反应是:既然 Claude Code 能读项目文件,那就把所有约定写进根目录的 CLAUDE.md,一劳永逸。问题在于 Claude Code 的上下文预算是共享的——始终加载的内容越多,留给代码 diff 和工具输出的空间越少。更糟的是,程序性内容(「先跑测试、再 bump 版本、再 tag、再 push」)和事实性内容(「主 scheme 叫 MyApp-Prod,证书在钥匙串 Profile XYZ」)混在一起,维护时改一处可能牵动全局。
Anthropic 在 Steering Claude Code 官方博客 里把定制手段分成七类:CLAUDE.md、Rules、Skills、Subagents、Hooks、Output Styles、系统提示追加。对多数工程团队,前四类加 Workflow 编排就够覆盖 90% 场景。如果你已经在用 Cursor + Claude Code + OpenRouter 三件套,终端侧的配置分层和 IDE 侧的 .cursor/rules 可以类比,但目录与加载时机并不相同,不要直接复制粘贴。
我们见过一个典型失败案例:五人 Flutter 团队把 Code Review 清单、Archive 步骤、Git 分支策略全部塞进 CLAUDE.md,文件超过 400 行。结果是 Claude 在改一个 widget 时仍背着整本 runbook,响应变慢,且压缩上下文后经常「忘记」后半段的测试要求。拆成 path-scoped Rules 和三个 Skills 后,同样任务平均少消耗约 30% 的输入 token,Review 遗漏率反而下降。
核心概念:四层各自解决什么问题
CLAUDE.md:项目的「常驻记忆」
CLAUDE.md(或 .claude/CLAUDE.md)在每次会话启动时加载,适合放短、稳、全员共识的信息:
- 一键构建与测试命令(如
xcodebuild -scheme MyApp test) - Monorepo 目录地图(
apps/ios、packages/core各负责什么) - 当前活跃的 Skills / Rules 索引(一行描述 + 路径)
- 团队级禁忌的摘要(细节放 Rules)
官方建议控制在可读篇幅内;超过 200 行就该警惕是否把流程错放进来了。CLAUDE.md 不是 wiki,而是 Claude 的「开机自检单」。
Rules:约束与路径作用域惯例
Rules 是 .claude/rules/ 下的 Markdown 文件,给 Claude 特定约束。与 CLAUDE.md 的关键区别:
- 可以path-scoped:只有编辑匹配文件时才加载(例如
paths: ["**/*.swift"]) - 在上下文压缩(compaction)后会重新注入,适合安全红线
- 语气偏「必须 / 禁止」,而非「建议按以下 12 步操作」
适合写进 Rules 的内容:禁止提交密钥、Swift 命名规范摘要、数据库迁移必须可回滚、Agent 不得执行 git push --force。我们在 Black Hat USA 2026 AI Agent 安全验收清单 里强调过:终端 Agent 的权限边界应写成可审计的规则,而不是口头约定。
Skills:可复用的程序性流程
Skills 位于 ~/.claude/skills/(用户级)或 .claude/skills/(项目级),每个 Skill 是一个目录,核心是 SKILL.md。根据 官方 Skills 文档,采用渐进披露:
- 会话启动:只加载各 Skill 的
name与description - 调用时:才读入完整正文与捆绑脚本
- 多个 Skill 共享 token 预算,最早调用的可能被挤出
适合 Skill 化的任务:TestFlight 发布检查清单、PR Review 步骤、Flutter 国际化批量替换、OpenAPI 客户端重新生成。通过 YAML frontmatter 可配置 allowed-tools(预授权工具)、disable-model-invocation: true(仅手动 /skill-name 触发)、context: fork(在子 Agent 中运行)等。
Workflow:把组件串成团队节奏
Workflow 不是第五个文件夹,而是编排方式:Hooks 在 git commit 前跑 formatter;定时任务夜间调用 /refactor-module Skill;CI 里用非交互模式跑 Claude Code 做迁移脚本;云 Mac 上用 launchd 保持会话环境一致。Workflow 回答的是「谁在什么时机触发哪一层配置」。
组合对照:什么放哪一层
| 场景 | 推荐层级 | 理由 |
|---|---|---|
| 主 App 的 scheme 与测试命令 | CLAUDE.md | 几乎每个任务都需要 |
| 编辑 Swift 必须用 SwiftUI 预览规范 | Rules(path: *.swift) | 仅相关文件时加载 |
| Archive + 上传 TestFlight 十二步 | Skill /release-ios |
流程长、触发频率低 |
禁止 Agent 读 .env |
Rules(全局) | 安全红线,压缩后仍注入 |
| 每次 commit 前跑 SwiftLint | Hook + Workflow | 确定性,不依赖模型记忆 |
| 新成员 onboarding 问答 | CLAUDE.md 索引 + Skills | 事实索引常驻,细节 Skill 按需 |
实操:从零搭一套 iOS 团队配置
以下目录结构在 2~6 人 iOS / Flutter 混合仓库实测可用,可按团队裁剪:
your-repo/ ├── CLAUDE.md # 构建命令、scheme 列表、技能索引 ├── .claude/ │ ├── settings.json # 团队共享设置(勿放密钥) │ ├── settings.local.json # 本机覆盖,gitignore │ ├── rules/ │ │ ├── global-security.md # 禁止读 .env、禁止 force push │ │ ├── ios-swift.md # paths: ["**/*.swift"] │ │ └── flutter-dart.md # paths: ["lib/**/*.dart"] │ └── skills/ │ ├── release-testflight/ │ │ └── SKILL.md │ └── pr-review/ │ └── SKILL.md
第一步:写 CLAUDE.md(控制在 80~120 行)。 开头用表格列出 scheme、最低系统版本、测试入口;中间放目录说明;末尾用 bullet 列出可用 Skills(名称 + 一句话)。不要在这里写逐步操作。
第二步:拆 Rules。 全局安全规则单独文件;语言规范按路径拆分。path-scoped 示例 frontmatter:
---
paths:
- "**/*.swift"
- "**/*.xcodeproj/**"
---
# iOS / Swift 约束
- 新增 UI 必须附带 Preview 或说明为何省略
- 不得修改 Signing & Capabilities 中的 Team ID
- 网络层改动必须更新对应单元测试
第三步:建第一个 Skill。 从最高频、最易出错的流程开始——多数 iOS 团队是 TestFlight 发布或 PR Review:
---
name: release-testflight
description: "Archive 主 scheme 并上传 TestFlight;在发版日或用户说「发版」时使用"
disable-model-invocation: true
allowed-tools: Bash(xcodebuild *) Bash(fastlane *)
---
## 发版前检查
1. 确认 `main` 已合并且 CI 绿灯
2. 读取 `CHANGELOG` 最新条目与版本号一致
3. 运行 `xcodebuild -scheme MyApp -destination 'generic/platform=iOS' archive`
4. 调用 fastlane `upload_testflight` lane
5. 在 PR 留言 build 号与处理组
disable-model-invocation: true 表示只有开发者手动输入 /release-testflight 才会加载,避免 Claude 在改 UI 时误触发发版。敏感操作务必加这一行。
第四步:接 Workflow。 在 .claude/settings.json 里配置 Hooks(如 PreToolUse 拦截危险命令),在云 Mac 或本机用同一套 .claude 目录——这样 Remote Mac 上 SSH 进去的行为与本地一致。团队共享配置走 Git;个人 API Key 与 settings.local.json 走 gitignore。
/skills 菜单检查 Skill 是否被 skillOverrides 隐藏。
与 Cloud Mac / Apple Silicon 的关联场景
Claude Code 本质是终端 Agent,运行环境的质量直接决定你敢不敢放手让它跑。在 VPSSpark 这类 Cloud Mac / Remote Mac 租赁场景中,配置分层带来三个实际好处:
- 环境可固化:把
.claude/、Homebrew 依赖、Ruby fastlane 版本打进镜像,换节点不用重配 Skills。 - 长会话更稳:Apple Silicon M4 统一内存适合同时开 Xcode、模拟器与 Claude Code;待机约 4W,适合夜间挂
/refactor类 Skill。 - 权限隔离:云 Mac 上单独系统用户跑 Agent,Rules 里限制读钥匙串路径,比在个人主力机上裸跑更安全。
典型 Workflow:开发者在本地 Cursor 改代码 → push 到 Git → 云 Mac CI 拉取后用非交互 Claude Code 跑迁移 Skill → fastlane 上传。Rules 保证 CI 环境不会执行 force push;Skills 保证步骤与人工发版一致。Flutter 团队可把 flutter build ipa 与 iOS 签名步骤同样 Skill 化,共享同一套安全 Rules。
若你使用 OpenRouter 等路由降低 API 成本,Skills 的 allowed-tools 与模型选择无关,但 Workflow 里应监控:子 Agent(context: fork)并发时的内存峰值——M4 16GB 节点同时跑两个 fork Skill + Xcode Archive 可能触顶,建议在 Rules 或 Skill 里注明「Archive 时禁止并行第二个 fork Skill」。
成本、性能与风险对比
Token 成本: 臃肿 CLAUDE.md 每次会话多付「背景税」;Skills 渐进披露能省,但一次会话连续调用多个 Skill 会争抢共享预算。定期用 /context 或官方 token 统计查看哪层占大头。
维护成本: Rules 与 Skills 可 code review、可版本化,比口头约定便宜;但超过 15 个 Skill 需要专人做索引与退役,否则新人找不到该用哪个。
风险: allowed-tools 预授权会在 Skill 激活的当轮降低确认门槛——只应对可信 Skill 开启。云 Mac 共享节点务必用 settings.local.json 隔离个人密钥。Hooks 误配可能导致无法 commit,先在分支上试跑。
与「什么都不配置、每次口头交代」相比,初期多花 2~4 小时搭分层,通常在第三周就能从减少的重复解释和失败重试上回本。与「全部堆进 CLAUDE.md」相比,分层配置的长期 token 账单和遗漏率都更可控。
FAQ
Claude Code 的 Rules 和 Cursor Rules 能共用吗?
概念类似,但路径与格式不同。Cursor 用 .cursor/rules,Claude Code 用 .claude/rules/。可以维护同一份 Markdown 源文件,用脚本同步到两处,但不要指望自动互通。
Skill 可以调用外部脚本吗?
可以。Skill 目录下可放 scripts/,正文中指示 Claude 执行;配合 allowed-tools: Bash(./scripts/*) 减少反复确认。脚本本身应 code review,避免 Agent 执行未审计的 shell。
团队如何评审新增 Rule 或 Skill?
建议与代码同 PR:新增 .claude/rules/foo.md 或 skills/bar/SKILL.md 须有人类 reviewer 签字,检查是否与安全 Rules 冲突、是否重复 CLAUDE.md 已有内容。可参考 Claude Code Settings 文档 中的 skillOverrides 做临时禁用而不删文件。
压缩上下文后 Claude 忘了 Skill 里的步骤怎么办?
长会话中较早调用的 Skill 可能被挤出共享预算。对策:关键步骤拆成 Hook(确定性);或在 Skill 末尾要求 Claude 输出检查清单到文件;发版类 Skill 保持 disable-model-invocation: true 由人触发,缩短会话长度。
只有我一个人开发,值得搭这套吗?
值得,但极简即可:一份 50 行 CLAUDE.md、两条 Rules(安全 + 语言)、一个你最常做的 Skill(如 /ship)。一人团队的优势是迭代快——每周花 15 分钟整理,比每次重新打字交代 build 命令划算。
总结:先画工作流,再写配置文件
Claude Code 的 Rules、Skills、Workflow 组合,本质是「把人的经验拆成机器可加载的模块」。CLAUDE.md 回答「这是什么项目」,Rules 回答「绝不能做什么」,Skills 回答「复杂事按什么步骤做」,Workflow 回答「什么时候自动做」。搞清四层再动手,比一上来写五百行提示词省心得多。
落地顺序建议:本周写好 CLAUDE.md 骨架 → 下周加两条安全 Rules → 再做一个最高频 Skill → 最后在云 Mac 或 CI 上接 Hook。每加一层都在真实任务里试一轮,看 token 与遗漏率是否改善。
在云端 Mac mini 上,Agent 配置一次、处处可用
Claude Code 的 Rules 与 Skills 写在仓库里,但跑它们的终端环境需要稳定、原生的 macOS。VPSSpark 云端 Mac mini M4 提供 Apple Silicon 统一内存、原生 Xcode 与 Homebrew,.claude/ 目录可随镜像固化——换机器不用重配 Workflow;待机功耗仅约 4W,适合夜间挂定时 Skill 或 CI 非交互任务。macOS Gatekeeper 与 SIP 让长期运行的 Agent 节点比凑合的 Windows 跳板机更安全。
把「配置分层」和「执行环境稳定」一起解决,iOS / Flutter 团队才能把 Claude Code 从个人玩具变成可审计的团队基础设施。云 Mac 上 SSH 进去的行为与本地一致,Secrets 留在 settings.local.json,Rules 管红线,Skills 管发版——这才是可复制的 Workflow。
如果你正在规划把 Claude Code 工作流迁到稳定、高性价比的 Remote Mac 环境,VPSSpark 云端 Mac mini M4 是值得优先试用的执行面——立即了解套餐方案,让 Rules、Skills 与 Workflow 在可靠的 Apple Silicon 上长期运行。