你有没有这种时刻:每次让 AI 干同一件事,都要从头交代一遍背景、步骤、注意点。今天写完,明天它全忘了。
我有个公众号。每发一篇文章,要走六个环节:找热点、写稿、去 AI 味、配图、检查、排版。每个环节我都得跟 AI 说一遍怎么做。
后来我把这些步骤写进了一个文件——Skill。现在我说一句话,AI 自动跑完六个环节,连封面和推文标题都给我生成好。
这篇文章拆的就是这个过程。你跟着做,20 分钟能出自己的第一个 Skill。
一个文件夹,里面放一个 SKILL.md。就这么简单。
Skill 不产出内容,它只负责告诉 AI:什么场景触发我、我依赖什么、按什么顺序干活、什么不该管。等于给 AI 一份岗位说明书。

templates/ 不是必须的。你完全可以从一个 SKILL.md 起步,跑通后再加脚本和模板。我后面要讲的案例——gzh-factory,就是从一个文件长到四个文件的。
SKILL.md 分两部分:frontmatter(头部元数据) + 指令体。
---
name: my-skill
description: 一句话说明这个 skill 干什么、
什么时候触发。写清楚触发场景,
AI 才知道什么活该派给你。
agent_created: true
---
description 是关键中的关键。AI 靠它判断“用户这句话要不要唤起我”。写模糊了就永远触发不了,写太宽了就会乱抢活。
三要素:干什么(能力)+ 什么时候触发(场景)+ 什么时候别触发(边界)。缺一不可。
gzh-factory 的 description 写了四个触发场景,还专门加了一句“单环节请求不触发本 skill”——后者帮你把活推给子 skill,别什么都自己扛。

# 我的技能名
## 依赖清单
列出每一步要用的工具/脚本/路径。
## 工作流(X 步)
第一步…第二步…第三步…
每步写清楚:输入、动作、产出。
## 模式
交互模式停在哪里问用户;全自动模式什么时候用。
## 边界
什么不该管、依赖缺失怎么降级。
四块缺一不可。依赖清单是安全网,工作流是发动机,模式是方向盘,边界是刹车。少一块,AI 要么卡死要么乱跑。
拿我做的 gzh-factory 走一遍。

Skill 就是文件夹,打包成 zip 就能发。
import zipfile, os
src = '/path/to/my-skill'
out = 'my-skill.zip'
with zipfile.ZipFile(out, 'w', zipfile.ZIP_DEFLATED) as zf:
for root, dirs, files in os.walk(src):
for f in files:
full = os.path.join(root, f)
arc = os.path.relpath(full, os.path.dirname(src))
zf.write(full, arc)

对方收到后解压到 ~/.workbuddy/skills/ 即可。前提是对方也得装好你的依赖——SKILL.md 的依赖清单要写全。
一个坑:模板里的中文文件名在 zip 里容易乱码。打包前把模板文件名改成英文最省事;非要中文,解压时要用 metadata_encoding='gbk'。
Skill 的本质不是代码,是经验沉淀
你干过一遍的活,把步骤和坑写下来,AI 以后每次都按你的方式干,不用你重复交代。我从写公众号这件事里提炼出了 gzh-factory:八步流水线、三个模板脚本、五个坑。这些以后都属于 AI 的肌肉记忆,不再占我的脑子。
你手上有没有反复做的工作流?打开一个文本文件,从 SKILL.md 开始写。20 分钟后,你的第一个 skill 就能跑起来。
所有模板和完整 SKILL.md 我打包好了,文末附下载。改改名字和步骤,就是你的。
我是若愚,你的 AI 搭子。专注 AI 实战、工具箱和开源项目。公众号内容沉淀在个人知识库,欢迎去后台回复 "Skill" 领取本文 gzh-factory 完整打包文件。
如果你觉得今天这篇有收获,欢迎转发给也在折腾 AI 的朋友。点赞·在看·星标三连,我们下篇见。
THANKS FOR READING ✂
/
夜雨聆风