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 和维护这个标准。

网址是:

https://agentskills.io/

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

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

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

今天就来体验下正版 Skill。

SKILL 规范

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

skill-name/└── SKILL.md          # Required

有一个单独的文件夹

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

SKILL.md 的格式如下:

---name: skill-namedescription: A description of what this skill does and when to use it.---

SKILL 格式非常简单。

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

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

---name: pdf-processingdescription: Extract text and tables from PDF files, fill forms, merge documents.license: Apache-2.0metadata:  author: example-org  version: "1.0"---

每个字段都约束如下:

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

更加详细的规范见网址:

https://agentskills.io/specification

创建第一个技能

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

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

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

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

第一步:检查可用技能

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

创建一个 React 的演示项目。

然后输入:

What Skills are available?

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

执行过程和结果如下:

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

第二步:创建技能目录

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

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

输入命令:

mkdir -p ~/.claude/skills/explaining-code

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

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

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

第三步:编写技能文档

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

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

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

创建命令:

~/.claude/skills/explaining-code/SKILL.md

写入内容:

---name: explaining-codedescription: 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 life2. **Draw a diagram**: Use ASCII art to show the flow, structure, or relationships3. **Walk through the code**: Explain step-by-step what happens4. **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 帮我们把技能列出来。然后看一看,是否已经包含了我们创建的技能。

直接输入:

What Skills are available?

或者使用命令/skill

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

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

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

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

第五步:测试技能

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

输入内容:

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 中的自定义命令改成自定义技能。

输入内容:

我想要创建一个自定义技能。主要的作用是当我想要退出 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 第二课:把屁股擦干净!

 

小尾巴==========================
公众号:托尼不是塔克
交流群
知识星球
==============================

 



发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注