Claude Code 第三篇:SKILL技能入门和实战!

上一篇,讲了如何正确的给 Claude Code 擦屁股(正确退出)!

当时使用的方案是 Claude Code 的 CLAUDE.md 机制。

CLAUDE.md 相当于 CC 的记忆体,可以在里面指定各种规则和规范。

使用这种方式实现自定义命令,没有任何问题。

但是 CLAUDE.md 会在每轮对话中都带上,感觉有点浪费上下文。

这个上下文应该留给其他更需要的"朋友"!

以我的观察来说,可能使用 Skill 会更好。

CC 这两天一直在更新这个功能,可见重视程度。

现在SKILL也是火出天际了!刚好拿来学习一下,练练手!

技能是什么?

让 GPT 总结了一下,它是这样概括介绍技能的。

Skill 就是一组模块化、可重用的能力包,包含:

  • 说明(指令)
  • 脚本 / 自动化逻辑
  • 资源(模板、示例等)

Claude 会 动态发现并按需加载这些 Skill,使用它们解决特定类型的任务,而不是每次都依赖 prompt 即兴生成解决方案。

Claude 的官方文档中是这么说的:

Skill 是一个 Markdown 文件,用来教会 Claude 如何完成某一类特定任务,例如:按照你们团队的规范进行 PR 评审、以你偏好的格式生成提交信息,或查询你公司内部的数据库结构。

当你向 Claude 提出的问题与某个 Skill 的用途相匹配时,Claude 会自动应用该 Skill。

现在有一个专门的第三方网站,来介绍 Skill 和维护这个标准。

网址是:

arduino 复制代码
https://agentskills.io/

关于 Skills 我其实在 CodeX 支持这个功能的时候,用过一次了。

当时写过一篇文章叫《Codex Skills 初体验,第一个技能创建和使用!》,我也算是有一点经验了。

但是 Skills 的真正的 引领者应该是 Claude Code。

今天就来体验下正版 Skill。

SKILL 规范

根据 agentskills.io 上的介绍可知,skill的最小结构如下:

bash 复制代码
skill-name/
└── SKILL.md          # Required

有一个单独的文件夹

文件夹里面有一个 SKILL.md 文件。

SKILL.md 的格式如下:

yaml 复制代码
---
name: skill-name
description: A description of what this skill does and when to use it.
---

SKILL 格式非常简单。

一个技能的核心内容就两部分,一个是名字,一个是描述

加上一些可选参数之后格式如下:

yaml 复制代码
---
name: pdf-processing
description: Extract text and tables from PDF files, fill forms, merge documents.
license: Apache-2.0
metadata:
  author: example-org
  version: "1.0"
---

每个字段都约束如下:

Field Required Constraints
name Yes 最多64个字符,只能使用小写字母、数字和连字符,不能以连字符开头或结尾
description Yes 最多1024个字符 不能为空 描述技能的功能和使用时机
license No 许可证名称或对捆绑许可证文件的引用
compatibility No 最多500个字符,表示环境要求(目标产品、系统包、网络访问等)
metadata No 用于附加元数据的任意键值映射
allowed-tools No 技能可使用的预批准工具的空格分隔列表(实验性)

更加详细的规范见网址:

arduino 复制代码
https://agentskills.io/specification

创建第一个技能

知道了大致的规范,我们就可以跟着 Claude Code Docs 中的官方教程来创建第一个技能了。

先跟官方的教程走一遍。然后我会创建一个自己的技能,就是开头部分说的"擦屁股技能"。

官方的演示技能描述如下:

这个示例创建了一个个人技能,教 Claude 使用视觉图表和类比来解释代码 ,与 Claude 默认的解释不同,这个技能确保每个解释都包含一个 ASCII 图表和一个现实世界的类比。

第一步:检查可用技能

打开终端,比如 CMD。然后输入 claude 启动 Claude Code。

创建一个 React 的演示项目。

然后输入:

What Skills are available?

这句话的作用是,在创建技能之前,先看一下我们本地有哪些技能。

执行过程和结果如下:

从上面可以看到 ,我的环境中还没有任何技能 。

第二步:创建技能目录

接下来准备在你的个人技能文件夹中为技能创建一个目录。

个人技能适用于所有项目。(您也可以创建项目技能 .claude/skills/ 与你的团队分享。)

输入命令:

bash 复制代码
mkdir -p ~/.claude/skills/explaining-code

输入命令之后输出和变化如下:

从路径可以知道,这次创建的是一个用户级的技能。

所以技能文件保存在用户目录下,技能名称为 explaining-code。

第三步:编写技能文档

根据上面的 Skill 规范可以知道,每个技能都需要一个 SKILL.md 文件。而这个文件必须包含 namedescription 两个内容。

其中的 description 非常重要,因为 Claude 会根据这个描述判断什么时候执行这个技能。

下面就是创建这个 SKILL.md 文件,然后把特定的内容写到里面。

创建命令:

javascript 复制代码
~/.claude/skills/explaining-code/SKILL.md

写入内容:

yaml 复制代码
---
name: explaining-code
description: Explains code with visual diagrams and analogies. Use when explaining how code works, teaching about a codebase, or when the user asks "how does this work?"
---

When explaining code, always include:

1. **Start with an analogy**: Compare the code to something from everyday life
2. **Draw a diagram**: Use ASCII art to show the flow, structure, or relationships
3. **Walk through the code**: Explain step-by-step what happens
4. **Highlight a gotcha**: What's a common mistake or misconception?

Keep explanations conversational. For complex concepts, use multiple analogies.

这两步都可以直接让 CC 帮你完成,当然也可以手动创建文件和写入。

前者一站式完成更简单。后者可以帮我们熟悉这个操作,同事节省 tokens(勤俭持家)。

为了展现 CC 的代理能力,我就奢侈一把。直接通过对话来搞定。

输入内容如下:

命令执行完成之后,SKILL 文件就创建好了,并且已经 有具体的内容了 。

这样我们就成功的创建了第一个技能。

第四步:加载和验证技能

技能创建或者修改之后,CC 会自动加载技能。

为了更加稳妥一下,我们可以让 CC 帮我们把技能列出来。然后看一看,是否已经包含了我们创建的技能。

直接输入:

arduino 复制代码
What Skills are available?

或者使用命令/skill

没有意外的话,显示大致如下:

CC 会告诉你,当前可以用的技能是 explaining-code。

当用户询问"这是怎么工作的?"的时候就会自动调用。

也可以通过 /explaining-code 的方式来显示调用。

第五步:测试技能

技能已经成功创建了,接下来就可以使用一下技能了。

输入内容:

kotlin 复制代码
How does this code work?

输出如下:

成功触发了技能。

然后它会根据当前的路径来分析代码了。

输出了下面的内容:


这是一个 React 项目,包含以下源文件:

文件 用途
src/App.js 主应用组件
src/index.js 应用入口点
src/App.test.js 测试文件
src/reportWebVitals.js 性能监控
src/setupTests.js 测试配置

你想让我解释哪个文件?或者我可以先为你解释 App.js(主组件)的工作原理?


接下来我输入了 src/App.js,然后它输出了:

从这个结果来看,很明显,我们的技能已经发挥作用了。

创建自己的技能

创建和使用技能的教程已经学完了,下面就来创建一个自己的技能吧。

我的技能需求是:

复制代码
当我想要退出 CC 的时候,能够帮我退出所有的后台 node 进程,释放当前的项目文件夹。

核心的命令其实我已经研究出来了,并且保存在 CLAUDE.md 中了。

接下来,我是希望我能把 CLAUDE.md 中的自定义命令改成自定义技能。

输入内容:

objectivec 复制代码
我想要创建一个自定义技能。

主要的作用是当我想要退出 Claude Code 之前,能帮我清理 node 进程,释放当前项目的文件夹和文件。

目前我已经通过 CLAUDE.md 的自定义命令实现了这个功能。

现在我希望你能帮我改成自定义技能,然后从 CLAUDE.md 中删除这部分。

请帮我创建这个技能,我希望这是一个项目级的技能。

技能名称叫:stopnode

直接把上面内容发给 Claude Code。

然后静待花开:

Claude Code 分析我的指令,然后按步骤处理。

先是读取 CLAUDE.md 里面的自定义命令。

然后创建技能文件夹和技能文件。

最后删除原文件中的自定义命令部分。

最后的最后,就会显示上面截图中的内容。

此时,已经可以在项目文件下的 .claude 下面的子文件中找到 SKILL.md 文件了。

打开这个文件之后。

可以看到里面的内容如下:

这个技能的名称,描述,具体操作,全部自动生成了。

然后问一下:"我现在有哪些技能?"

它就会告诉你有两个技能,一个是用户级别的代码解释技能,一个是项目级别的停止服务技能。

然后让 CC 测试"启动服务"和"关闭服务",观察是否能正常调用我们的自定义技能!

经过测试调用技能非常顺利,没有任何问题。

但是执行具体命令的时候还是爆红了,当然,它最后也自己搞定了。

最终的方式是,它在技能里面创建了一个 stop-node.ps1 脚本。

调用这个单独的脚本处理会更加稳定和优雅。

最终运行效果如下:

这个日志就非常优雅了。不会输出一大堆命令,只会显示非常少,且清晰的提示信息。

其中红色的"Background command ..." 是正常提示。因为后台进程被杀了,所以提示进程退出了。

至此,官方例子和自己的技能全部搞定了 。

可以看到全程通过对话完成,不手动修改任何东西。

这种简单的问题处理起来是非常丝滑的 。

相关文章

Claude Code 新手入门,官方指引!

Claude Code 换上国产引擎GLM4.7

Claude Code 第二课:把屁股擦干净!

相关推荐
IT 行者20 小时前
Claude之父AI编程技巧一:并行终端 + 系统通知——将Claude Code变成你的超级开发团队
ai编程·claude
yaocheng的ai分身1 天前
【anthropic官方文章】揭秘 AI Agents 的评估方法
claude
draking3 天前
Claude Code 2.1.2 升级报错?别折腾了,一行命令搞定
claude
小白点point4 天前
决战紫禁之巅:Opencode vs Claude Code,谁才是你的真·赛博义父?
ai编程·claude
草帽lufei4 天前
Claude Code最强开源对手OpenCode实测:免费使用GLM-4.7/MiniMax等高级模型
ai编程·claude·trae
chao_6666664 天前
【MCP】Claude Code for VS Code 配置阿里云 MCP 工具教程
阿里云·云计算·claude·mcp
飞哥数智坊4 天前
谈谈我对 Claude Code 之父13条技巧的理解
人工智能·ai编程·claude
dragonZhang4 天前
基于 Agent Skills 的 UI 重构实践:从 Demo 到主题化界面的升级之路
前端·ai编程·claude