我用 Claude Code 花了 10 分钟,手搓了一个自动写文章的 AI Agent

上周三下午,我在终端里输入了一句话:”帮我写一篇关于 Docker 部署的文章”,然后去倒了杯水。回来的时候,一篇 2000 字的博客文章已经生成好了,格式完全符合我的 Hexo 规范,frontmatter 填好了,文件放到了正确的目录。
整个过程我没有动手。
这不是什么魔法,是我花了 10 分钟写了一个 Claude Code Skill。
先说说 Skill 是什么
如果你用过 Claude Code,你可能知道它有很多内置的斜杠命令,比如 /compact、/review、/simplify。这些是系统自带的功能。
但 Claude Code 还有一个更强大的扩展机制:Skill(技能)。
简单说,Skill 就是一个 Markdown 文件,里面写着你希望 Claude 遵循的工作流程。你把它放到项目的 .claude/skills/ 目录下,Claude Code 就会自动识别它。之后你在终端里输入对应的斜杠命令,Claude 就会按照你定义的流程去执行。
你可以把 Skill 理解为”给 AI 写的 SOP”。
SOP(标准操作流程),在公司里是写给人看的。你现在要做的,是把同样的流程写给 AI 看。区别在于:人可能会偷懒跳步骤,AI 不会。
技术博主 Bozhidar Batsov 在一篇文章里总结得很好:”Skill 是基于提示词的能力。当你调用一个 Skill 时,它会把一组指令加载到 Claude 的上下文中,Claude 按照这些指令执行。Skill 可以启动子智能体、接受参数、使用特定工具、编排复杂的多步骤工作流。”
换句话说,Skill 不是一个简单的提示词模板,它是一个可编程的 AI Agent。
为什么我要做一个 Writing Agent?
原因很简单:重复。
我运营一个技术博客,每周要写 2-3 篇文章。每次写文章,我都要经历同样的流程:
- 确定选题
- 搜索相关资料
- 阅读 3-5 篇参考文章
- 提取关键信息
- 想一个吸引人的标题
- 组织文章结构
- 写正文
- 生成符合 Hexo 格式的 Markdown 文件
这个流程每次都一样。变的只是主题。
Reddit 上有个帖子说得好:”如果你发现自己每次都在给 Claude 写同样的 500 字上下文,那就该做一个 Skill 了。”
我之前的做法是,每次开一个新的 Claude Code 会话,然后花 5 分钟解释我要什么格式、什么风格、什么结构。写了十几篇之后,我终于受不了了。
10 分钟创建过程
下面说说我是怎么创建这个 Skill 的。不会分享完整的 Skill 内容——那是我的私人成果,但我会分享创建的思路和方法,帮你理解怎么做一个自己的 Skill。
第一步:创建目录和文件(1 分钟)
Skill 的文件结构非常简单:
1 | .claude/skills/ |
在项目根目录下创建一个文件夹,里面放一个 SKILL.md 文件。文件名必须是 SKILL.md,这是 Claude Code 的约定。
文件夹的名字就是你的 Skill 名字。我叫它 writing-agent,所以调用时输入 /writing-agent 就行了。
第二步:写 Frontmatter(1 分钟)
SKILL.md 文件的开头需要一段 YAML 格式的元数据:
1 |
|
这两个字段非常关键:
name:Skill 的名字,也是斜杠命令的名字description:告诉 Claude 什么时候应该使用这个 Skill。这个描述不是给人看的,是给 AI 看的。写得好,Claude 甚至能在你没有主动调用时自动识别并加载这个 Skill
PolySkill 的一篇指南里提到:”description 字段告诉 Claude 什么时候自动加载这个 Skill。”这意味着你可以让 Skill 在合适的场景下自动触发,而不是每次都手动输入命令。
第三步:定义工作流程(5 分钟)
这是最核心的部分。我需要把我写文章的整个流程,用 Markdown 写下来。
思路是这样的:把你手动做的每一步,变成 Claude 可以理解和执行的指令。
我的 Writing Agent 大概分了这几个阶段:
阶段一:理解选题。 确认文章主题、目标读者、文章风格。如果选题太简单,自动扩展。
阶段二:搜索资料。 调用搜索工具,找到相关的文章和资料。我在这一步定义了优先抓取哪些网站、避免抓取哪些网站。
阶段三:阅读和提取。 逐个访问搜索结果的网页,提取正文、核心观点、数据和案例。忽略导航、评论、广告。
阶段四:组织和写作。 生成标题候选、确定文章结构、按照我的写作风格要求生成正文。
阶段五:输出文件。 生成符合 Hexo 格式的 Markdown 文件,包括完整的 frontmatter,自动放到 source/_posts/ 目录下。
每个阶段我都写了具体的指令。比如写作风格,我会告诉 Claude:用短句、口语化、有对话感、少用形容词、多用场景和画面感。这些规则不写进 Skill,Claude 每次都会用自己的默认风格,而默认风格往往太”AI味”了。
第四步:处理边界情况(2 分钟)
好的 Skill 要考虑异常情况。比如:
- 网页抓取失败怎么办?我设置了备用抓取方案
- 选题太宽泛怎么办?自动缩小范围
- 有些网站反爬严格怎么办?定义了跳过策略
XDA Developers 的一篇文章说得对:”如果你发现自己反复给 Claude 同样的指令,那就是一个信号——它应该变成一个 Skill。”边界情况也是一样的道理。你踩过一次坑,就把解决方案写进 Skill,下次就不用再踩了。
第五步:测试和迭代(1 分钟)
写完之后,直接在 Claude Code 里测试:
1 | /writing-agent 帮我写一篇关于 Docker 部署的文章 |
第一次跑出来的结果,80% 是满意的。剩下 20% 需要微调——比如标题风格不够吸引人、段落太长、某些环节的指令不够清晰。改几个字,再跑一次,就基本完美了。
几个关键心得
做完这个 Skill 之后,我总结了几个心得,分享给想自己做 Skill 的人。
1. 先手动跑通流程,再写 Skill
不要一上来就写 Skill。先在普通对话里和 Claude 磨合几次,把流程跑通了,确认每一步的指令 Claude 都能理解,再把这些指令整理成 SKILL.md。
Claude Skills Guide 的作者 WenHao Yu 也提到:”你不需要手写 SKILL.md。无论是写代码还是写 Skill,Claude 都能搞定。事实上,我的 Skill 没有一个是手写的。”
2. Description 写得好,Skill 就活了
description 字段不是装饰。它决定了 Claude 什么时候会主动加载你的 Skill。写得越精准,触发越准确。
比如我的 description 里写了”当用户说’帮我写一篇’、’写一篇关于xxx’、’创建新文章’等时触发”。这样即使我不输入 /writing-agent,只是随口说”帮我写一篇关于 AI 的文章”,Claude 也会自动识别并加载这个 Skill。
3. 定义”不做什么”和”做什么”一样重要
告诉 Claude 不要做什么,和告诉它要做什么一样重要。比如我在搜索阶段明确列了”避免抓取”的网站列表。不写这个,Claude 可能会去爬一些质量不高或者反爬严格的网站,浪费时间。
4. Skill 是活的,需要持续迭代
我的 Writing Agent 已经改了好几个版本了。每次用它写完一篇文章,发现哪里不顺,就改一下 SKILL.md。它不是写完就扔的东西,而是一个持续进化的工具。
Skill vs CLAUDE.md:什么时候用哪个?
很多人搞不清 Skill 和 CLAUDE.md 的区别。一个简单的判断标准:
| 维度 | CLAUDE.md | Skill |
|---|---|---|
| 加载方式 | 每次会话自动加载 | 按需加载,匹配时触发 |
| 适合场景 | 项目全局规范、编码风格 | 特定任务的完整工作流 |
| 上下文占用 | 始终占用 | 只在需要时占用 |
| 类比 | 公司的员工手册 | 特定岗位的操作手册 |
CLAUDE.md 适合写”始终需要遵守的规则”,比如”用 TypeScript 严格模式”、”API 响应格式统一”。
Skill 适合写”特定场景下的完整流程”,比如”写一篇博客文章”、”做一次代码审查”、”生成一份日报”。
Snyk 的一篇分析文章说得很清楚:”CLAUDE.md 文件是持久化的项目记忆。Skill 是可复用的工作流指令。”
两者不是互斥的,而是互补的。我的 CLAUDE.md 里写了博客的通用规范(比如标签规则、分类规则),Writing Agent Skill 里写了写文章的具体流程。Claude 会同时读取两者。
这件事让我意识到什么?
说实话,做这个 Skill 之前,我对”AI 自动化”的理解还停留在”帮我补全代码”的层面。
做完之后我意识到:AI 编程的真正威力,不在于让 AI 帮你写一行代码,而在于让 AI 帮你跑一个完整的流程。
一个 Skill 文件,本质上就是一个 AI Agent 的定义。你在用自然语言编程。你不需要学 Python,不需要学 LangChain,不需要搭服务器。一个 Markdown 文件,就能创造一个能自主工作的 AI Agent。
Reddit 上有个用户的评论让我印象深刻:”在一个公司里,一个设计好的 Skill 可以自动化整个业务流程,团队里任何人都能用。你的顶级分析师的研究流程、你的高级工程师的审查清单、你的运维负责人的事故响应工作流——编码一次,全团队都能用。”
这才是 Skill 的真正价值。它不是一个玩具,它是一个效率放大器。
写在最后
10 分钟。一个 Markdown 文件。
这就是我创建一个 Writing Agent 的全部成本。
现在,我每周写文章的时间从 3 小时缩短到了 30 分钟。大部分时间花在审稿和微调上,而不是搜索资料和组织结构。
你现在看到的这篇文章,就是用这个 Skill 的工作流写出来的——我在终端里输入了选题,然后去做了别的事,回来审了一遍,改了几处细节,发布。
如果你也有一些重复性的工作流,值得花 10 分钟试试。我现在更好奇的是:有没有人用 Skill 做过比写文章更复杂的自动化?比如自动生成周报、自动整理会议记录?这类场景我还没试过,但感觉潜力更大。