# 收编 · Skills 与输出风格 · Claude Code · 终端里的编排台

**作者** Aklman · **章节** 04 / 11 · **首发** 2026.07 · **语言** 中文为主, 中英双语
**原文** https://library.aklman.com/books/claude-code/04-codify
**全书 markdown** https://library.aklman.com/books/claude-code/llms.md
**上一章** https://library.aklman.com/books/claude-code/03-memory/llms.md
**下一章** https://library.aklman.com/books/claude-code/05-delegate/llms.md

> 本章来自 Aklman · Library, 完整免费阅读。允许 AI 摘读、引用、问答; 转载请保留作者署名与原文链接 (CC BY-NC-ND 4.0, https://library.aklman.com/license)。

---

> 你有一套反复输入的提示：同样的审查清单、同样的发布步骤、同样的「用这个口吻写」。每次重打一遍，既慢又不稳。Claude Code 给了两个收编的去处：重复的流程连脚本带资源打包成 Skill，一个 /名字 唤起、用到才加载，不挤占上下文 —— 从前的自定义 /命令 也已并入这里；要改的若是它整场对话的角色和口吻，那是输出风格的事，在设置里切换。这一章讲两者怎么分工：哪些活沉成 skill、哪些交给风格、哪些根本不值得固化。

你有几段每周都要重打的提示:发版前那套检查、审 PR 的固定清单、「用我们团队的口吻写 changelog」。每次凭记忆重打,慢,而且每次都略有不同 —— 于是结果也略有不同。这一章讲收编:把你的重复劳动变成两类资产,流程沉成 Skill,说话方式定成输出风格。收编过的东西不再依赖你的记性,也不再吃你的手速。

### I · Skills:把流程存成一个词

一个 skill 就是一个目录加一份 `SKILL.md`:frontmatter 里一句 description 说清「什么时候该用我」,正文写做法,旁边还能放脚本、模板、示例文件。存好之后有两条入口:你打 `/名字` 直接唤起,或者 Claude 自己判断相关就加载。[^1]关键的经济学在加载方式:描述常驻、**正文用到才进上下文** —— 一份几百行的发版手册,平时几乎不占地方。[^1]这也是它和 CLAUDE.md 的分工:每次都要的一句事实住第 3 章,偶尔才用的一套流程住这里。

如果你记得「自定义 slash 命令」:它们已经并入 skills —— `.claude/commands/deploy.md` 和 `.claude/skills/deploy/SKILL.md` 生成同一个 `/deploy`,旧文件继续可用,skills 只是多了支撑文件、调用控制这些新能力。[^1]一份真实形状的 skill 长这样:

_一个发版 skill:动态注入 + 参数 + 只许手动触发_
```text title=".claude/skills/release/SKILL.md"

```markdown
---
description: 发布一个新版本。用户说「发版」「release」时使用。
disable-model-invocation: true
argument-hint: "[patch|minor|major]"
---

## 当前状态

!`git status --short && git log --oneline -5`

## 步骤

发布一个 $ARGUMENTS 版本:
1. 跑 npm test,全绿才继续
2. 按 $ARGUMENTS 升版本号,更新 CHANGELOG
3. 提交、打 tag、推送,贴出每一步的输出
```

```

三个 frontmatter 字段值得先认识。`disable-model-invocation: true`:只许你手动触发 —— 发版、发消息这类有副作用的流程,别让它「觉得代码差不多了」就自己跑。[^1]`allowed-tools`:这一轮预批准的工具,让 `/release` 跑 git 命令不用逐条弹窗。[^1]`context: fork`:整个 skill 丢进 subagent 的独立上下文里执行,重活不弄脏主对话(第 5 章的机制)。[^1]正文里那行 `!`git status`` 是动态注入:调用瞬间先执行命令、把输出内联进内容 —— 你的 skill 拿到的是活数据,不是你写死的假设。[^1]

---

### II · 输出风格:换的不是知识,是口吻

第二根柱子管的是另一类重复:「解释详细点」「别铺垫直接干」「像导师一样带我」—— 这些不是流程,是**整场对话的角色设定**。输出风格直接改 system prompt 里的角色、口吻与输出格式,一次设定,每一轮生效。[^2]文档的界定句很准:改变它怎么回应,不改变它知道什么。[^2]

内置四款够覆盖多数场景:Default 是原生工程师;Proactive 更敢直接动手、少停下来问;Explanatory 边干活边给你讲原理;Learning 最有意思 —— 它会在代码里留 `TODO(human)`,把关键的一小段留给你亲手写,拿它学新代码库比纯看快得多。[^2]切换走 `/config` 里的 Output style 选项,或直接在设置文件里写 `outputStyle`(独立的 /output-style 命令已经移除)。[^2]自定义也简单:markdown 文件放进 `.claude/output-styles/`,用 `keep-coding-instructions` 决定保不保留原生编码指令 —— 保留,它是个换了口吻的工程师;去掉,它可以彻底变成写作助手或数据分析员。[^2]两条边界记住:风格只作用于主对话,派出去的 subagent 不受影响;会话中途换风格不生效,下个会话才加载。[^2]

---

### III · 什么收、收到哪、什么不收

到这里,固化的去处一共四个。判断题每次只有一道:这段重复,是流程、是事实、是口吻,还是铁律?

| 这段重复是 | 收到 | 性质 |
|---|---|---|
| 多步流程、带脚本的做法 | Skill(本章) | 按需加载,模型执行 |
| 每次都要的一句事实 | CLAUDE.md(第 3 章) | 常驻上下文 |
| 整场对话的角色与口吻 | 输出风格(本章) | 改 system prompt |
| 必须每次都发生的动作 | Hook(第 7 章) | harness 执行,不经模型 |

头两行的分界线,官方给的触发律是「第三次」:同一段提示重打到第三次、同一套做法第三次贴进对话,就存成 skill。[^3]末行的分界线更硬:skill 是模型理解后执行的,结果可能有出入;hook 在事件上必然执行 —— 「希望它跑 lint」是 skill 的事,「必须跑过 lint 才许提交」是 hook 的事。[^3]反过来,三类东西不值得收:只做一次的活,写清楚 prompt 就够;还在每周变的流程,固化了就是提前腐烂;以及模型本来就会做对的事 —— 给它立规矩,和给它写说明书一样,都有维护成本。

动手 · 本周就收编三样:

- **把重打过两次的 prompt 存成第一个 skill**:
 找出你本周重打过的那段提示,原样放进 .claude/skills/<名字>/SKILL.md 的正文,description 写清触发时机。下次用 /名字 唤起。

- **给一个有副作用的流程上锁**:
 发版、发通知、清数据 —— 挑一个,加 disable-model-invocation: true,让触发权只在你手里。

- **试一周 Learning 或 Explanatory 风格**:
 在你最近接手的陌生代码库里开一周,再决定回不回 Default —— 风格是可逆的,试错成本几乎为零。

> 重打第三遍的提示,
> 是一个还没存档的 skill

## 引用与参考

01 · Claude Code Docs · Skills —— 一个 skill 是一个目录加一份 SKILL.md:frontmatter 写清何时该用,正文是做法;描述常驻上下文,正文只在被调用或被判定相关时加载;/名字 直接唤起。「自定义命令已并入 skills」—— .claude/commands/deploy.md 与 .claude/skills/deploy/SKILL.md 同样生成 /deploy,旧命令文件继续可用。常用 frontmatter:disable-model-invocation(只许你手动触发)、user-invocable: false(只许它自己用)、allowed-tools(该轮免批工具)、context: fork(丢进 subagent 跑)。正文里还能用 $ARGUMENTS 参数替换、!`命令` 动态注入(执行后把输出内联进内容)。位置:企业 / 个人 ~/.claude/skills/ / 项目 .claude/skills/ / 插件;SKILL.md 建议 500 行内,细料放支撑文件。截至 2026-07-17。  (Claude Code Docs · Skills)
02 · Claude Code Docs · Output styles —— 「输出风格改变 Claude 怎么回应,不改变它知道什么」:修改 system prompt 里的角色、口吻与输出格式,作用于整场对话。内置四款:Default、Proactive(先动手少停顿)、Explanatory(边做边讲解)、Learning(留 TODO(human) 让你亲手写一段);自定义放 .claude/output-styles/,keep-coding-instructions 决定保不保留原生编码指令。经 /config 选择或直接改 outputStyle 设置(独立的 /output-style 命令已移除);只作用于主对话,subagent 不受影响。截至 2026-07-17。  (Claude Code Docs · Output styles)
03 · Claude Code Docs · Extend Claude Code —— 收编的触发时机:同一段提示重打到第三次、或同一套多步流程第三次贴进对话,存成 skill;hook 与 skill 的分界:hook 在事件上必然执行,skill 由模型理解并执行、结果可能有出入。截至 2026-07-17。  (Claude Code Docs · Extend Claude Code)

---

*收编 · Skills 与输出风格 · Claude Code · 终端里的编排台 · Aklman 著 · CC BY-NC-ND 4.0 · https://library.aklman.com/books/claude-code/04-codify*
