[经验分享] 我的第一个 Skill

Skill 到底是什么?

Skill 的核心原理:把复杂的任务,拆解成一个个简单可执行的小步骤,每个步骤都明确"需要准备什么(输入)"和"能得到什么(输出)",再用标准化的逻辑,让这些步骤无缝衔接、可重复使用。

就像我们做一道番茄炒蛋:

步骤输入输出
备料2 个鸡蛋、1 个番茄番茄切块、蛋液打好
炒蛋蛋液 + 热油炒蛋成型
炒番茄番茄块 + 热锅番茄出汁
混合调味炒蛋 + 番茄汁 + 盐成品出锅

"番茄炒蛋 Skill"的原理就是:拆解步骤 → 明确每步的输入输出 → 用固定逻辑串联,确保每次做出来的味道都一致。

对应到 Claude Code 里,Skill 本质上就是一段结构化的提示词(Prompt)。你把它写好,Claude 在触发这个 Skill 时,就会严格按照你定义的步骤来执行任务——不再每次都要你重复描述需求,也不会遗漏关键步骤。

一句话总结:Skill = 你把"做事流程"写成文件,让 AI 照着做。

光说原理有点抽象。接下来通过我的第一个 Skill 示例“月报生成 Skill”——带你完整走一遍完成一个skill创造全流程。


二、第一个 Skill 做什么?

Skill 不需要太复杂。我的建议是:从你日常最烦的重复劳动开始。

问自己三个问题:

  1. 哪些事情我每个月/每周都在重复做?
  2. 这些事情的操作步骤是不是一样的?
  3. 我能不能把模板/格式固定下来?

举几个真实的例子:

场景重复点Skill 能做什么
报账材料汇总每次都要整理发票、填表、核对金额给定输入(发票照片/列表),自动按固定格式生成汇总表
月报生成每月从各渠道收集数据、写总结、调格式给定数据源,按固定模板输出月报文档
踩坑指南文章每次都是"问题→根因→方案→注意事项"的结构给定问题描述,按标准模板生成文章骨架
代码审查清单每次 CR 都要检查相同的项按固定清单逐项审查,输出结构化报告

我选了什么:月报

我每个月都要做月报,流程雷打不动:

下载最新日报到本地
→ 跑 Python 脚本,从日报里提取本月按项目汇总的工作内容
→ 把"提示词 txt + 月报模板 + 近三个月月报 + 本月工作内容"打包发给网页端大模型
→ 把生成的内容复制到 Word,手动调格式(第二耗时)
→ 逐章调整内容措辞(第一耗时)
→ 通读检查

每次花费我至少半小时时间(而且已经是精简过的流程),最耗时的不是"写内容"本身,而是调word格式和逐章打磨措辞——重复、机械、让人不想动手。

除了"下载日报"和"最终通读"这两步,中间的部分我全想让 Skill 帮我做。


三、怎么写?

3.1 Skill 需要哪些文件?

一个 Skill 的文件结构非常简单:

my-skill/ # Skill 文件夹(文件夹名 = Skill 名)
└── skill.md # 核心文件:Skill 的定义(必须有)

没错,最少只需要一个skill.md文件。如果你的 Skill 需要额外的模板文件、示例数据,也可以放在同一个文件夹下:

my-skill/
├── skill.md # Skill 定义
├── template.md # 输出模板(可选)
└── examples.md # 示例数据(可选)

我的月报 Skill 最终结构

.claude/skills/monthly-report/
├── SKILL.md # Skill 主文件(触发规则 + 8 章生成逻辑 + 格式规范)
└── project_roles.yaml # 项目角色映射(我来维护)

除了核心文件,还多了一个 YAML 配置文件——用来记录"每个项目我负责什么角色",解决月报里按项目维度组织内容的细节问题。后面会讲到它是怎么来的。

3.2 Skill 文件放在哪?

Claude Code 会在两个位置查找 Skill:

级别路径适用场景
用户级~/.claude/skills/<skill-name>/skill.md你在所有项目中都想用的 Skill
项目级<项目根目录>/.claude/skills/<skill-name>/skill.md只在特定项目中使用的 Skill

新手建议:先放在用户级目录下,这样在任何项目里都能调用。比如你的 Skill 叫pitfall-writer,就创建文件:

  • Windows:C:\Users\你的用户名\.claude\skills\pitfall-writer\skill.md
  • macOS/Linux:~/.claude/skills/pitfall-writer/skill.md

3.3 skill.md 长什么样?

skill.md由两部分组成:头部元数据(YAML frontmatter)+正文指令(Markdown body)

以我的月报 Skill 为例,结构大致如下(已脱敏):

---
name: monthly-report
description: 根据日报数据和工作记录,按固定模板生成月度工作报告 .docx 文件
---
# 月报生成 Skill
当用户提供月份信息时,自动采集数据并按模板生成月报。
## 工作空间
- 根目录:xxx
## 数据提取
1. **采集数据**:运行 `data_extract.py` 从日报 Excel 提取本月工作内容
2. **读取 Git log**:从各项目目录抓取本月提交记录,补充项目外工作
3. **交互确认**:询问用户加班时长、问题建议、项目角色是否有变化
## 生成规则
按以下 8 个章节依次生成内容:
- 工作小结:多段结构,按项目维度组织
- 工作强度:6 个标准分类,结合加班时长
- 阶段重点工作:按角色区分写法
- ...(其余章节略)
## 输出格式
直接输出 .docx 文件,格式要求:
- 标题居中 14pt,章节标题 11pt 加粗
- 正文 11pt,内容缩进 2 字符
- 特定段落标签加粗,正文不加粗
## 注意事项
- 不确定的信息主动询问用户,不要自行编造
- 第六章(具体工作完成情况)不得与第三章(阶段重点工作)重复
- 下月计划只写进行中的项目,已结项的不写
## 输出示例
xxx

拆解一下关键要素

要素位置作用
name头部 YAMLSkill 的唯一标识,用小写 + 短横线(kebab-case)
description头部 YAML一句话描述 Skill 做什么,Claude 根据它判断何时触发
执行步骤正文告诉 Claude 分几步走、每步做什么
输出格式正文约束输出的格式和质量标准
注意事项正文兜底规则,防止 Claude "自由发挥"跑偏

关键心得description写得越准确,Claude 自动触发 Skill 的命中率就越高。写得太模糊(比如"处理文档"),Claude 可能在你需要的时候不触发,不需要的时候乱触发。

3.4 借助 AI 快速创建(实战过程)