🎓 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 要规范"
"别动 .envsecrets/ 目录""注意安全"

越具体,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