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

cover

上周三下午,我在终端里输入了一句话:”帮我写一篇关于 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 篇文章。每次写文章,我都要经历同样的流程:

  1. 确定选题
  2. 搜索相关资料
  3. 阅读 3-5 篇参考文章
  4. 提取关键信息
  5. 想一个吸引人的标题
  6. 组织文章结构
  7. 写正文
  8. 生成符合 Hexo 格式的 Markdown 文件

这个流程每次都一样。变的只是主题。

Reddit 上有个帖子说得好:”如果你发现自己每次都在给 Claude 写同样的 500 字上下文,那就该做一个 Skill 了。”

我之前的做法是,每次开一个新的 Claude Code 会话,然后花 5 分钟解释我要什么格式、什么风格、什么结构。写了十几篇之后,我终于受不了了。

10 分钟创建过程

下面说说我是怎么创建这个 Skill 的。不会分享完整的 Skill 内容——那是我的私人成果,但我会分享创建的思路和方法,帮你理解怎么做一个自己的 Skill。

第一步:创建目录和文件(1 分钟)

Skill 的文件结构非常简单:

1
2
3
.claude/skills/
└── writing-agent/
└── SKILL.md

在项目根目录下创建一个文件夹,里面放一个 SKILL.md 文件。文件名必须是 SKILL.md,这是 Claude Code 的约定。

文件夹的名字就是你的 Skill 名字。我叫它 writing-agent,所以调用时输入 /writing-agent 就行了。

第二步:写 Frontmatter(1 分钟)

SKILL.md 文件的开头需要一段 YAML 格式的元数据:

1
2
3
4
---
name: writing-agent
description: 当用户说"帮我写一篇"时触发此技能。
---

这两个字段非常关键:

  • 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 做过比写文章更复杂的自动化?比如自动生成周报、自动整理会议记录?这类场景我还没试过,但感觉潜力更大。