Claude Code + Skill 实战心法,作为本目录 README 的补充——README 讲「skill 仓库怎么用」,这里讲「Claude Code 怎么用得顺手、skill 怎么写得值钱」。
不是金科玉律,是一般情况下有效的起点。用久了你会长出自己的直觉。
围绕一个核心约束展开:Claude 的上下文窗口(约 200K 词元)会快速填满,填满后性能下降。 几乎所有心法都在和这个约束博弈。
这是提升质量很有效的单一策略。没有验证手段时,Claude 会产出看起来对但实际跑不起来的代码,而你成了唯一的反馈回路。
npm test 确认」。一句话:验证 > 信任。
让 Claude 直接跳到编码,可能产出解决错误问题的代码。推荐四阶段:探索 → 计划 → 编码 → 提交。
Ctrl+G 在编辑器里改计划,删掉不想要的步骤。/clear 是你最好的朋友/clear 重开,用融合了前两轮教训的更好提示词——干净会话 + 好提示词,几乎总是优于长会话 + 反复修正。/clear。/context 看消耗分布,/compact 带指令手动压缩(如 /compact 聚焦 API 变更和测试结果)。子代理运行在独立的上下文窗口里,有自己的系统提示和工具权限。它去探索代码库、读文件,只返回摘要到主会话,不污染主上下文。
/btw 是子代理的逆操作:「有上下文但没工具」——问它「刚才那个配置文件叫什么来着」,它能看当前会话但不能读文件。理解这五个扩展机制的区别,是高效配置环境的关键。别一锅炖。
| 机制 | 定位 | 加载方式 | 适合什么 |
|---|---|---|---|
| CLAUDE.md / rules/ | 团队规范 | 每次会话全量加载 / 按路径匹配 | 所有开发者必须遵守的规则 |
| Skills | 领域知识 + 工作流 | description 常驻,正文按需加载 | 每天做超过一次的重复工作流 |
| Sub-agents | 独立上下文里的专家 | 独立上下文窗口 | 隔离探索、并行处理 |
| Hooks | 确定性保证 | 工作流节点自动触发 | 必须自动执行的操作(格式化、保护文件) |
| MCP | 外部数据源连接 | 连接时加载 | 连数据库、Notion、Figma 等 |
三个易混的辨析:
gh、aws、gcloud 完成的,优先用 CLI——CLI 无常驻上下文成本,只在调用时产生输出;MCP 服务器的工具定义默认常驻占上下文。/permissions 把安全的常用命令(lint、test、git)加白名单,而不是用 --dangerously-skip-permissions 关掉所有权限门。前者是有意识的安全决策,后者是拆掉安全门。claude -p 让 Claude 在任何无交互环境里跑——CI 管道、pre-commit hook、自动化脚本、定时任务。本质是 f(输入) → 输出。
# 管道输入
cat error.log | claude -p "简洁地解释这个构建错误的根因"
git diff main | claude -p "审查这些变更中的安全问题"
# JSON 输出 + 权限控制 + 系统提示定制
git diff main...HEAD | claude -p "Review this PR diff" \
--output-format json \
--allowedTools "Edit,Bash(npm run lint)" \
--append-system-prompt "Focus on security vulnerabilities."
Fan-out 批量处理:大规模迁移时,先生成任务列表,再循环并行调用,每个任务一个独立 PR。最佳实践——先在 2-3 个文件上测试、优化提示词,再批量执行。
当你用好了一个 Claude,用并行倍增产出。三种方式:多个终端窗口 / Desktop 多窗口 / Git Worktrees(每个会话一个独立工作目录,互不干扰)。
claude --worktree feature-auth、claude --worktree bugfix-123 各开一个,独立工作目录,互不干扰。/permissions 预批准;隔离环境才用 --dangerously-skip-permissions。一个 skill = SKILL.md(入口)+ reference/scripts(按需加载)+ 可选 rules/<name>.md(覆盖规则)。
---
name: fix-issue
description: 修复 GitHub Issue(写清「何时触发」,因为 frontmatter 常驻上下文)
disable-model-invocation: true # 可选:禁止模型自动调用,只能 /fix-issue 显式触发
---
分析并修复 GitHub Issue: $ARGUMENTS。
1. 使用 gh issue view 获取 Issue 详情
2. 搜索代码库找到相关文件
3. 实现修改
4. 编写并运行测试验证修复 ← 末尾强制一步验证
5. 创建描述性的提交消息并创建 PR
两个要点:
reference.md 或 scripts/,按需读取。skill 采用三层加载,是它比 CLAUDE.md 全量常驻更省的关键:
| 层级 | 内容 | 加载时机 | 词元消耗 |
|---|---|---|---|
| 元数据层 | 所有 skill 的 name + description | 始终加载 | 极低(轻量目录) |
| 指令层 | SKILL.md 正文(触发逻辑、流程) | 选中后才加载 | 中等 |
| 资源层 | Reference 文件(被读取)/ Script 脚本(被执行) | 需要时才触发 | Reference 按文件大小 / Script 几乎为零 |
Reference vs Script 怎么选:
rules/<name>.md 始终生效,用来改写底层 skill 的默认出口 / 边界(比如把 commit 动作统一收口到某个阶段)。sql-query/),目录里放 SKILL.md + reference + scripts。~/.claude/skills/ 用户级(跨项目复用);项目 .claude/skills/ 项目级(团队共享,提交 Git)。.claude/ 布局把一组 skill 组织起来,整个目录可独立打包分发——这是团队沉淀复用的载体。skill 可以包含可执行脚本,下载来源不明的 skill 等于让别人在你机器上跑代码。装之前先审:
把多个 Claude 塞进一个团队并行干活很爽,但坑也不少。以下来自多端并行项目实战。
Resource temporarily unavailable)。UnicodeEncodeError。在脚本里显式设置 UTF-8 输出(如 Python 的 sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8'))。Agent 工具的 model 参数只接受 "haiku"、"sonnet"、"opus" 三个值——这是 Claude Code 的硬限制。
sonnet(平衡能力和成本);轻量查找/格式化用 haiku;架构决策/深度分析用 opus。给 agent 发消息时,如果是字符串消息,必须带 summary 参数,否则报错:
SendMessage(to="agent-name", summary="5-10字摘要", message="消息内容")
summary 是给团队协调用的简短描述,漏了就直接失败——这是多 agent 协作里最常见的低级错误。
不同模型对 agent 形态有偏好(有的倾向可见的进程级 agent,有的倾向不可见的 worktree agent)。如果你的工作流依赖某一种,在项目 CLAUDE.md 里明确写死:
# Agent Configuration
生成子 agent 时,统一用 teammate 系统(team_name + name 参数),
不要用 isolation: "worktree"。这样 agent 可见、可监控。
不写死,模型可能自作主张选了你不想要的那种。
/clear 是好朋友,子代理是上下文防火墙。