🎓 Claude Code Skills 入门:让 AI 记住你的习惯
进阶第 1 篇 — 从「用一下」到「越用越顺手」
🎯 这篇讲什么
装好 Claude Code 只是开始。真正好用的境界是:你不用说第二遍,它就知道你想要的。
怎么做?靠 Skill 系统和 CLAUDE.md。
🧠 核心概念:三层记忆
Claude Code 的记忆分三层,优先级从高到低:
┌──────────────────────────────┐
│ CLI 参数 │ ← 临时覆盖,这次会话有效
│ (--model, --effort, ...) │
├──────────────────────────────┤
│ 项目配置 │ ← 跟着 Git 走,团队共享
│ .claude/settings.json │
│ .claude/CLAUDE.md │
├──────────────────────────────┤
│ 全局配置 │ ← 所有项目生效
│ ~/.claude/settings.json │
│ ~/.claude/CLAUDE.md │
└──────────────────────────────┘
原则:通用的放全局,项目特有的放项目。
📝 CLAUDE.md — 最高效的记忆方式
CLAUDE.md 是纯文本文件,里面写什么 Claude 就记住什么。这是最值得花时间写的文件。
示例:一个好用的全局 CLAUDE.md
# 关于我
- 全栈开发者,主力 TypeScript + Python
- 用中文和我交流
- 代码注释也要中文
- 我喜欢简洁直接的代码,别过度设计
# 环境
- macOS + VS Code
- Node 20, pnpm
- Python 3.12, poetry
# 风格偏好
- TypeScript 不用分号
- Python 用 4 空格缩进
- 函数必须加类型标注
- 别用 any,除非真的有必要
示例:一个项目级 CLAUDE.md
# 项目:商城后台
## 技术栈
- React 18 + TypeScript + Tailwind
- FastAPI + SQLAlchemy + PostgreSQL
- pytest + Playwright
## 命令
- `pnpm dev` — 启动前端
- `pnpm test` — 运行测试
- `docker-compose up` — 启动数据库
## 规范
- API 路径统一 /api/v1/ 前缀
- 错误消息用中文
- CSS 用 Tailwind,别写自定义 CSS
💡 CLAUDE.md 写作铁律
| ✅ 这样写 | ❌ 别这样写 |
|---|---|
| "TypeScript 用 2 空格缩进,不用分号" | "写整洁的代码" |
"测试文件命名 *.test.ts,用 vitest" | "记得写测试" |
"API 返回格式 { data, error }" | "API 要规范" |
"别动 .env 和 secrets/ 目录" | "注意安全" |
越具体,AI 越听话。模糊的指令 = 随机的结果。
🏗️ Rules 目录:拆分大型 CLAUDE.md
项目大了,一个 CLAUDE.md 可能上千行。用 Rules 目录 拆分:
项目根目录/
├── CLAUDE.md # 总纲(简短)
└── .claude/
└── rules/
├── tech-stack.md # 技术栈说明
├── coding-style.md # 代码规范
├── testing.md # 测试规范
└── deployment.md # 部署流程
每个 .md 文件都会被自动加载。团队可以各自维护不同文件,减少 Git 冲突。
🎮 交互式快捷记忆
在 Claude Code 对话中,用 # 前缀快速添加记忆:
# 这个项目用 pnpm,别用 npm
# API 返回格式统一 { code, data, message }
# 颜色变量定义在 src/styles/colors.ts
Claude 会自动把 # 开头的内容写入 CLAUDE.md。想到什么随手记,不用切出去编辑文件。
🔧 Settings 文件:配置级记忆
CLAUDE.md 管「知识」,Settings 管「行为」。
~/.claude/settings.json(全局)
{
"model": "deepseek-v4-pro[1m]",
"effort": "max",
"permissions": {
"allow": ["Read", "Bash(npm run lint:*)", "Bash(npm test:*)"],
"deny": ["Read(.env)", "Read(*secret*)", "Bash(rm -rf *)"]
}
}
项目 .claude/settings.json(团队共享)
{
"permissions": {
"allow": ["Bash(pnpm lint:*)", "Bash(pnpm test:*)"]
}
}
设置优先级: 项目 settings > 全局 settings。项目里配了 allow: ["Bash(pnpm ...)"],全局的不生效。
📊 三种 CLAUDE.md 的区别
| 文件 | 位置 | 范围 | Git | 用途 |
|---|---|---|---|---|
CLAUDE.md | 项目根目录 | 团队所有人 | ✅ | 项目说明 |
.claude/CLAUDE.local.md | 项目 .claude/ | 你个人 | ❌ | 个人偏好 |
~/.claude/CLAUDE.md | 用户主目录 | 所有项目 | ❌ | 全局习惯 |
❓ 常见问题 (FAQ)
Q1: CLAUDE.md 写多长合适?
全局的 100-300 行,项目的 50-200 行。太长 Claude 记不住重点,太短没啥用。
Q2: 改了 CLAUDE.md 要重启 Claude Code 吗?
不需要!新会话自动加载。当前会话里改了,下一轮对话就生效。
Q3: # 命令和直接编辑文件哪个好?
随手记用 #,系统整理用编辑器。# 适合「这个项目用 pnpm」这种一句话,复杂规范还是写文件。
Q4: 团队共享 CLAUDE.md 会不会泄露我的 API Key?
CLAUDE.md 里绝对不要写 Key。Key 放在环境变量或 .env 里。
Q5: 多个项目怎么不互相污染?
每个项目根目录放自己的 CLAUDE.md,它只在该项目生效。全局 ~/.claude/CLAUDE.md 所有项目通用。
Q6: Rules 目录和 CLAUDE.md 同时存在会冲突吗?
不会。两者都会被加载,内容合并。Rules 目录适合拆分管理,CLAUDE.md 适合简短总纲。
⚠️ 常见踩坑
| 坑 | 正确做法 |
|---|---|
| CLAUDE.md 写「好好写代码」 | 没用。要写「用 2 空格,不用分号,函数加类型」 |
| 把所有规则挤在一个文件 | 超过 300 行拆到 rules/ 目录 |
| 全局限死了所有项目 | 通用习惯放全局,项目特殊配置放项目里 |
# 快速记忆和 CLAUDE.md 内容冲突 | Claude 会合并,后者覆盖前者 |
| 以为改了 settings.json 就立刻生效 | 需要新开会话,settings 启动时加载 |
标签:#AI #ClaudeCode #进阶 #Skills #CLAUDE.md