如何写一个自己的skill

1. 前言

为什么同样用 Claude,你的效率差这么多,本文将会带大家了解 Skill,不管你是什么语言,没写过的情况下,你都可以学会他

2. 背景

如果你用过 Claude Code ,大概率遇到过这样的场景: 每次让 Claude Code 写代码,让部分代码风格保持一致, 你会告诉他项目的编码风格,或者是一段样本代码,或者是指定某个文件;

也就是,重复描述具体的某一流程,为了解决这个问题,那么就要引出今天我们要说的 Skill

核心速览: Skill 的本质就是一个文件夹里面放了一个 SKILL.md 文件,通过编写重复的指令,Claude 就会识别这个文件,执行特定的功能

3. 初始 Skill

在开始讨论 Skill 之前,我们要区分一个事情,它和CLAUDE.md 的区别是什么,CLAUDE.md 里的内容每次对话都会加载,而 Skill 只在需要时才加载,不用的时候几乎不占上下文。

Skill 遵循的规范 (Specification - Agent Skills)。

3.1 Skill 的位置存放

位置 路径 适用范围
个人 ~/.claude/skills/<name>/SKILL.md 你所有的项目
项目 .claude/skills/<name>/SKILL.md 仅当前项目
插件 <plugin>/skills/<name>/SKILL.md 启用了该插件的地方

3.2 一个最小的 Skill

接下来我们就按项目级别的 Skill 来给大家说一下,如何实现,这也是你能看完本文快速能落地的方案,聪明的你,就知道如何去提取 Skill 然后省下自己的token,并且在简历猛吹,自研xxxSkill 这是我的路径: .claude\skills\my-skill\SKILL.md

yaml 复制代码
my-skill/
└── SKILL.md

SKILL.md 由两部分组成------YAML 头部(frontmatter)和 Markdown 正文:

yaml 复制代码
---
name: hello-world
description: 一个示例 skill,用于演示基本结构
---

当用户打招呼时,用中文回复,并附上一个冷笑话。

创建之后,你可以通过 /hello-world 手动调用,也可以让 Claude 在匹配到 description 时自动调用。

你执行的时候 在对话框输入 / ,就可以得到下图:

注意: 如果没有,记得创建好上面的步骤,重启你的 Claude

最终执行,我们将得到:

常用 frontmatter 字段速查:

字段 作用
name 名称,也是 /hello-world 的名字
description 最重要的字段,Claude 根据它决定是否加载
disable-model-invocation 设为 true 则只能手动调用,Claude 不会自动触发
allowed-tools 该 skill 激活时允许 Claude 免确认使用的工具
context 设为 fork 可在子代理中隔离运行

具体的东西,可以在上面的规范中去查询,值得注意是 description 你尽量要写的通俗易懂,上图的内容,你可以再去看看,就知道指的是哪里

4. 如何高效写出一个 Skill

掌握基本结构之后,关键在于写得 "好用"。以下是从官方文档和实践中总结的核心要点:

第一,description 是触发器,不是摘要。

Claude 决定是否加载一个 Skill,完全依赖 name + description。不要写 "这是一个帮助生成代码的工具",而要写 "生成 Vue 3 组件。当用户要求创建组件、页面或 Vue 文件时使用"。把触发词和使用场景写进去,Claude 才能准确匹配。说白了,把 Claude 当成你的合伙人,他要阅读这个说明书,才能懂你意思。

第二,指令用命令语气,按步骤编号。

写 "提取颜色主题",不要写 "你应该提取颜色主题"。

第三,SKILL.md 控制在 500 行以内。

当你的项目特别庞大的时候,此时你的内容也会越来越多,我们可以把详细的参考资料、模板、示例拆到同目录下的独立文件里,在 SKILL.md 中引用它们:

yaml 复制代码
my-skill/
├── SKILL.md           # 主指令(必须)
├── template.vue       # 组件模板
├── examples/
│   └── sample.vue     # 示例输出
└── scripts/
    └── validate.sh    # 辅助脚本

SKILL.md 中这样引用:

markdown 复制代码
## 参考资料
- 组件模板见 [template.vue](template.vue)
- 输出示例见 [examples/sample.vue](examples/sample.vue)

第四,善用动态注入。

``!`command``` 语法可以在 skill 加载前执行 shell 命令,把输出注入到提示词中:

yaml 复制代码
---
name: pr-review
description: 审查当前 PR 的代码变更
---

## 当前变更
!`git diff --stat`

## 变更详情
!`git diff`

请审查以上代码变更,关注潜在的 bug 和规范问题。

Claude 看到的不是命令本身,而是命令的输出结果。

第五,用 $ARGUMENTS 接收参数。

yaml 复制代码
---
name: fix-issue
description: 修复 GitHub issue
disable-model-invocation: true
---

修复 GitHub issue #$ARGUMENTS:
1. 阅读 issue 描述
2. 实现修复
3. 编写测试
4. 创建 commit

调用 /fix-issue 42 时,$ARGUMENTS 会被替换为 42。也支持 $0$1 按位置取参数。

编号可以让 Claude 按顺序执行,减少遗漏。

第六,区分"谁来调用"。

有副作用的操作(部署、发消息)加 disable-model-invocation: true,防止 Claude 自作主张。

5. 总结

建议从你日常最重复的流程开始操作,把它封装成第一个 Skill。写好之后提交到项目的 .claude/skills/ 里,这样团队成员都能受益。(前提不是古法编程)

注意: description 写成触发条件而非摘要;指令用命令语气并编号;大文件拆分引用;善用动态注入和参数传递。

相关推荐
盛世宏博北京2 小时前
多协议温湿度传感器技术解析及系统集成方案设计
大数据·人工智能·温湿度传感器
FONE_Platform2 小时前
FONE亮相第十二届CDIE数字化创新博览会
人工智能·ai·cdie
编程百晓生2 小时前
《SAP FICO系统配置从入门到精通共40篇》021、CO-PC实战笔记:在制品与差异计算,那些年车间里的“账实不符”
服务器·人工智能·笔记·ar·从入门到精通·sap fico·sap fico系统
wsdswzj2 小时前
web前端基础知识
前端
weixin_463449782 小时前
智媒时代,如何借力权威发声?——探秘官媒发布系统的变革力量
人工智能·自动化
慕涯AI2 小时前
Agent 30 课程开发指南 - 第19课
人工智能·python
极光代码工作室2 小时前
基于AI的新闻推荐系统设计
人工智能·机器学习·ai·系统设计
谁似人间西林客2 小时前
工厂大脑:深度融合AI能力的智能化制造运营管理平台
大数据·人工智能·制造
霸道流氓气质2 小时前
SpringBoot中集成LangChain4j+阿里百炼平台实现AI对话记忆功能、对话隔离、对话持久化到Redis功能
人工智能·spring boot·redis