大家好,我想起来我从未为我的 skills 仓库制作过正式教程。录制此视频时,该仓库已获得 162,000 个星标,下载量达 750 万次,但我从未为此做过教程。我时常收到诸如“我应该按什么顺序使用这些技能?”、“如何安装它们?”、“如何设置它们?”等问题。因此,本视频将带您逐步了解使用这些技能的主要流程。我们不会深入探讨高级功能或新功能,而是专注于入门所需的核心流程。为了演示这一过程,我将使用我的工作仓库之一:AI Hero CLI。这是驱动我课程中许多练习的命令行界面。我从未在我的 skills 中设置过与此仓库配合工作的配置,现在正是个好机会。
如果您想在一个全新项目中设置我的 skills,只需执行此操作,只不过要在空目录中进行。无论您是使用现有代码库(brownfield)还是新建代码库(greenfield),操作方式都是一样的。我将打开命令行界面,输入 npx skills@latest add mattpocock/skills。这假设您已安装 Node.js,因为 npx 来自 Node.js,它运行来自 Vercel 的 skills.sh 命令行安装程序。这基本上会安装一个名为 mattpocock/skills 的 GitHub 仓库,并引导您完成一些设置问题。它首先表示需要安装以下软件包,我觉得这没问题,随后它执行了一些操作,我们现在看到了一个长长的可安装技能列表。
这里找到了 38 个技能,数量不少。如果您上下滚动,可以看到它们分为两组:mattpocock/skills 和其他技能。mattpocock/skills 是我认可为足够公开的高质量技能。其他技能是我目前正在实验的,未来可能会删除。我建议您在顶部操作,上下滚动。说实话,这部分有点小毛病。如果您按下空格键,您会看到如果向上滚动,它们现在都被选中了。按下空格键,然后按回车键,现在您已选中所有官方技能。
我对 Vercel 的 CLI 不太满意,未来我可能会更改它,甚至可能发布自己的版本。但目前,这已经够好了。有一件好事是,它会将您的 skills 设置为与任何代理配合工作。我使用 Claude Code,但您可以向下滚动并选择您想要的代理。我使用空格键进行选择。我认为默认情况下,如果我稍微缩小视图,它会支持上面列出的所有通用代理,如 Cursor、Codex、Claude 等。但对于使用特定技能(如 Claude Code 使用的 Claude 技能)的代理,您需要自行设置。因此,我将按回车键,现在它应配置为为 Claude Code 设置我的 skills。
安装范围定义您的 skills 安装的位置,是仅安装在当前目录,还是全局安装。这取决于您团队的惯例。如果您在团队中工作,我认为项目级 skills 是更好的选择。这样,每个人在每个项目上都使用相同的技能集,这意味着您可以共同贡献 skills 并共同做出决策。但如果您是独自工作的独立开发者,像我一样,全局安装也没问题。因此,我将按回车键,将其安装在我的主目录中,并选择符号链接(symlink)作为推荐方式。
这里的选项是是否将其复制到代理文件夹以及 .claude 文件夹。这种方式有点不太优雅。符号链接只是简单优雅的方式。因此,我甚至不需要在此做出决定,直接选择符号链接即可。现在,它会给您一个安装摘要。关于 Socket 的 to spec 似乎有一个警报,我稍后会查看。但我们可以继续安装,现在它已安装所有 skills。这意味着我可以在这里运行 Claude,或者您的其他代理,我将创建一个新文件。
我只是说“hello”以退出该代理的视图。现在,根据您使用的框架,这将显示在不同的地方,但在 Claude Code 中,我可以按下斜杠,现在我看到我有几个可用的技能。我有“grill me”、“grilling”、“way finder”、“grill with docs”等。很多东西。现在,我的 skills 与外面许多其他 skills 仓库的区别在于,我的 skills 主要是由用户调用的。这意味着如果我运行上下文,我的许多技能实际上不会渗入描述中。我的描述相当简短且精确。
因此,即使我们下载了所有我的 skills,这些技能在此处仅占用 660 个 token。因此,在上下文负载方面,它非常轻量。好的,我们有了 skills。现在,我们必须运行 setup mattpocock/skills。这将做几件事。我的 skills 依赖于仓库内的一些配置,它为您做几件事。首先,这意味着您需要使用问题跟踪器。我们将保存规范、保存工单,我们需要将它们保存在某处。您有无限的选择。您可以使用 GitHub、本地 Markdown,或者 literally 使用任何东西。
该技能的工作方式是查看您的本地配置。因此,您可以将其设置为 Jira,也可以设置为 Linear。您这样做的方式只是告诉代理您想将其设置为什么,它将去为您设置它。我想强调这一点。人们经常问我:“我如何使我的 skills 与 Jira、Beads、Linear 配合工作?”它已经支持了。您只需运行 setup mattpocock 并说“用 Jira 设置它”。除了,我不想用 Jira 设置它。我只是将其设置为本地 Markdown,请。所以这对我来说没问题。接下来要回答的问题是有关分类标签。
有一组标签,技能依赖这些标签来传达关于它生成的工单的信息。这里并不是那么重要,所以我只是接受默认值。如果您想了解更多,可以查看分类技能的文档。所以,默认值没问题。下一个是关于领域文档的。我的 skills 喜欢拥有一点……
文档、一个上下文 .md 文件以及仓库内的 ADR。它基本上是在询问这将是一个单一上下文还是多上下文。我认为在这里采用单一上下文是最佳选择。多上下文适用于大型单体仓库,且需要在其中划分多个不同边界上下文的情况。但对于 99% 的人来说,单一上下文就足够了。好的,所以它已经在这里写了一些东西。
它写下的第一件事是在 claw.md 中,添加了一些小链接。所以,这是新内容。它只是链接到问题跟踪器文档、链接到分类标签,以及链接到领域文档。这些链接分别位于 docs、agents、domain 和 issue tracker。因此,我们可以看到它会将所有问题和规范保存在一个临时文件中。
有了这些,我们为该仓库的设置就完成了。你可能会想,我该如何开始呢?在开始之前,我要向你展示另一个非常酷的功能。如果你正在跟随视频操作,现在就可以停止视频并使用一个技能。你可以使用“询问 Matt”技能。这个“询问 Matt”技能本质上就是我作为一个技能。它了解技能仓库所需的一切信息,以及你第一步该做什么。
所以,我们可以说:“询问 Matt,我该如何开始?我想在这里做一些代码更改。我应该使用的主要流程是什么?”我现在可以提交这个问题并看看它怎么说。顺便说一下,我使用 Whisper Flow 作为我的转录工具。所以,我们来看。它说主要流程是“从想法到发布”。既然你有一个代码库,就从主流程的顶部开始,在一个不间断的上下文窗口中逐步向下进行。
它非常认真地告诉你如何使用你的会话。我相信,对你所使用的上下文窗口和所使用的令牌保持意识,对于很好地使用 AI 至关重要。它说你应该从“与文档 Grill”开始。它会通过提问来磨练你的想法,而且因为你在一个仓库中,它是状态感的。它会将所学内容记录在 context.md 和 ADRs 中。
这就是你将“我想更改 X”转化为清晰、可辩护的计划的地方。说实话,“可辩护”真是一个典型的 LLM 术语。你能仅仅通过对话来解决所有开放性问题吗?如果一个问题的答案需要可运行的代码,那么你可以使用“原型”技能,我已经为此制作过视频。如果没有,则通过“交接”技能桥接进出,否则跳过这一步。
一旦你完成了采访和“与文档 Grill”,你可以直接进入“实现”技能。如果需要多个会话才能完成,那么你可以进入“规范”和“工单”阶段。让我为你把这个过程说得更清楚一点。默认流程如下:你从“与文档 Grill”开始,这会根据你想要产生的想法对你进行采访。
例如,如果我清除掉“询问 Matt”,当然我可以去问后续问题,把它本身当作教程使用,但让我只是演示一下。我要说“与文档 Grill”,并用一个想法来启动它。我会说:“我想移除这个 CLI 上的大部分内部工具,使其仅面向公众。”这里有很多技巧。我只是想让这个仓库降个级。它可以像这样模糊。你不需要在这里做太多。
“与文档 Grill”将通过问你一堆后续问题来承担繁重的工作。它正在这里探索一堆代码。顺便说一下,我(清嗓子)使用 Claude Code,我在中等强度下使用 Opus 4.8,但你真的不需要使用和我相同的设置。这些技能被许多不同的人使用,使用不同的框架、不同的模型、不同的强度级别。
我们可以看到它已经在这里问了第一个问题。所以,它已经获得了整个仓库的清晰地图。它正在查看包含 11 个子命令的内部命名空间。所以,这就是 Grill 会话的样子。你经历所有问题,直到你感觉或你和代理感觉已经达成了共同理解。我现在就要这样做,然后在我完成后会回来和你确认。
好的,它并没有花太长时间。我们最终得到了多少?六个问题?这对于 Grill 会话来说并不多。通常我的会话会有大约 20 个问题,具体取决于规模大小,但我们最终得到了一个不错的计划。我们将删除 10 个命令文件,删除 3 个测试,重新连接共享模块。我在这里所做的只是回答问题,直到它说:“好的,我们已经遍历了整个树。我们已经达成了共同理解。让我把计划列出来。”
注意,这里我没有使用计划模式。我实际上是在 claw code 的自动模式下,这有点像默认模式。现在你面临着一个分叉路口。如果你认为这项工作足够大,需要多个代理会话,那么你可以跳过这里的第 2 和第 3 步,直接进入实现。你要做的就是说“/实现这个”。在这种情况下,我认为这正是我们应该做的。
我还有大约……我想我的上下文窗口在 14 万标记左右时开始结束或显著变笨。我把这视为 LLM 的“智能区”。如果你超过 14 万,你就会遇到注意力退化。它会变得更笨,产生奇怪的幻觉。所以,我想的是,好的,我们有 10 万的预算来移除 10 个命令。这看起来超级简单。绝对是我们能做到的事情。
所以,这通常是我会做的。我会直接说“实现”,然后让它运行,让它完成工作。然而,为了向你展示所有内容,我要假装这项工作需要超过一个会话,也许我在当前的上下文窗口中耗尽了空间,或者在当前窗口中耗尽了“智能区”,我需要将其分散到多个上下文窗口中。所以,我要在这里调用“规范”。
因此,与其说“实现这个”,我要说“制定规范”。就是这样。这将做的是,它会将我所有的讨论、这 46.1k 个令牌全部压缩成一个我们以后可以使用的文档。这就是我们的问题跟踪器发挥作用的地方。所以,这个 issue tracker 我们只是使用本地 markdown 文件,所以它只是将规范输出到本地目录。
这个规范将是我们在这个多工单冲刺中要到达的目标。换句话说,这就是我们最终会得到的结果。这是关于最终外观的一切描述。而工单则是关于我们如何到达那里的描述。好的,我们可以看到它已经被编写并发布到问题跟踪器中。
打开这个文件,我们可以看到内容非常详尽。它包含了问题陈述、解决方案、一系列用户故事、实施决策、测试决策以及大量其他信息。这非常有用,因为最后我们可以将其与我们的实施结果进行对比,以确保实施符合规范。既然我们已经有了规范,我将回到同一个会话中,不切换会话,然后输入“tickets”命令。这一步旨在将规范转化为实施计划。每个任务单的大小应仅相当于一个上下文窗口或一个智能区域。
查看此处,我们可以看到它生成了三个任务单,即三个切片。我认为这三个切片有点多了,实际上我认为可以在一个切片内完成。因此,我指示它改为在一个切片中完成。现在,它已将此内容放入文件中,即 tickets.md。不过,这是一个不太好的例子,因为它基本上是在复制产品需求文档中的内容。让我展示一个真实的实际案例。
这是几天前我实施的一个规范,目的是从仓库中移除大量内容。最近我一直在进行清理工作。你可以看到这是规范,其下方有 11 个子问题,也就是 11 个任务单。由于这是一个非常详细的规范,每个任务单都对应一个上下文窗口的会话。如果我们点击进去查看,会发现内容相当简短。
大多数验收标准已经包含在主规范中,因此这里只列出了本次会话具体要构建的内容。这就是会话一、会话二、会话三。你可以看到,它是如何将一大块工作分解为智能体可以处理的 manageable 部分的。然而,在这里我们只留下了一个 manageable 的部分。
接下来,我将清除上下文。既然我们已经拥有了所需的一切,就可以运行多个智能体来解决这个问题。我可以清除上下文,然后输入“tickets”,在此之前我会说“implement this”(实施这个)。现在,既然有了决定方向的规范和决定如何到达那里的任务单,智能体就具备了所有需要的信息,我们准备开始实施。
手动操作时,想法是逐个实施每个任务单。你不会说“执行所有任务单”,而是说“好的,我们去实施”,然后检查是否达到了智能区域。如果没有,也许可以再塞入一个任务单,但通常我会在每个任务单之间清除上下文。一旦完成所有实施,整个功能就全部实现了,然后你可以进行代码审查,并根据规范进行最终检查。
我们可以看到,这实际上只是一项很小的工作,只有 42.7k 代码量。现在,作为实施过程的一部分,它即将运行代码审查。在实施脚本中,它会运行类型检查、构建,甚至进行更多验证,检查 AI Hero 内部帮助,仅显示编辑提交,并加载了代码审查技能。
这次审查基于两个维度。首先,它将完成的工作与原始规范进行对比。当你完成大量工作且智能体可能忘记了任务单中的某些内容,或者任务单未明确说明时,这非常有用。进行最终审查可以确保你真正掌握一切。
其次,它还检查你仓库中现有的标准文档。在这个仓库中,我们并没有在任何地方记录编码标准,但如果它检测不到任何标准,就会使用一些来自马丁·福勒的经典标准。它会检查代码异味,试图找出是否有不良代码。
在子智能体中执行这些操作非常重要,因为如果在主智能体中执行,意味着主智能体已经编写了代码,而智能体通常很不擅长编辑或改进它们刚刚编写的代码。因为它们自己写的,所以它们会想:“好的,这很棒,没问题。”
而如果启动一些子智能体,它们将拥有清晰的上下文窗口,并且能够更出色地完成代码审查工作。好的,我们可以看到两者都返回了结果。交叉检查了规范中的每一项验收标准,并将所有内容都与标准进行了核对,很好,我们可以继续了。现在它已提交到当前分支。完美。
这就是我们的完整流程。我们在开始前进行了对齐,创建了一些规范和任务单,以确保在多个会话中正常工作。然后我们实施了它,实施技能本身使用了代码审查。这是我所有工作运行的主要流程。不在主要流程中的内容是我正在实验或改进的东西,我总是试图让这个循环更快、更好、更容易运行。
如果你对此感兴趣,你应该查看我的通讯订阅这些技能。这个 YouTube 频道是订阅了解技能的好场所,但真正的好内容在通讯中。如果你想要在我发布新技能或添加你需要保持更新的更新时的每日更新,那么这里就是最佳去处。
非常感谢观看。希望本教程能让你了解如何设置技能以及主要流程应该是怎样的。感谢观看,享受技能提升的乐趣,我们很快再见。