# 每天一个开源项目#76 Skills:23万星的 Agent 工程技能库

每天一个开源项目#76 Skills:23万星的 Agent 工程技能库

Trending 排名:#1 | 快照日期:2026-08-22 | Stars:230,235 | Forks:19,673 | 主要语言:Shell | License:MIT

项目地址:github.com/mattpocock/...

写代码 Agent 最容易翻车的地方,往往不是模型不会写某个函数,而是它太早开始写了。需求还没问清楚,测试边界没定,项目里的词也没对齐,Agent 就已经开始改文件。最后代码看起来很勤奋,真正要用时却到处漏水。

Skills 把这个问题拆成一组很小的工作流文件。它不是一个新的 Agent 运行时,也没有声称靠沙箱或调度器接管开发流程。它更像一套给 Claude Code、Codex 这类工具使用的工程规程:什么时候先拷问需求,什么时候写规格,什么时候拆 Issue,什么时候用 TDD,什么时候请另一个 Agent 做代码审查。看完源码后,我觉得它有意思的地方不在"提示词集合"这四个字,而在它把软件工程里的反馈循环压进了可安装、可组合、可版本化的技能目录。

📋 项目概览

项目 内容
项目名 mattpocock/skills
一句话 面向真实工程项目的 Agent Skills 工作流库,把澄清、规格、TDD、代码审查和交接拆成可安装的技能。
Stars 230,235(Trending 快照);API 同日补充核验为 230,237
Forks 19,673
语言 GitHub 显示 Shell;仓库语言占比为 Shell 70.6%、JavaScript 29.4%
License MIT
版本 package.json 与 Claude 插件清单均为 v1.2.3;最新 GitHub Release 为 v1.2.3
默认分支 main
最近核验提交 5b15a47,2026-08-21,clarify wording in code review process

🔥 为什么值得关注

很多 Agent 工作流喜欢做"大一统":一个 CLI 接管需求、计划、实现、测试、提交。听起来省心,但坏处也明显。流程越厚,调错越难;一旦 Agent 在某个早期判断上跑偏,后面所有步骤都会把这个偏差放大。Skills 走的是相反方向,它把流程切成 25 个被插件正式发布的技能,其中 14 个只能由人显式调用,11 个允许模型在匹配场景时自动触发。

这个边界很实用。比如 /grill-me/to-spec 属于人触发的入口,避免模型自己假装已经问清楚需求;tdddiagnosing-bugscode-review 则可以作为模型可见的纪律约束,在实现或排错时把 Agent 拉回可验证路径。源码里的 disable-model-invocation: true 和 Codex 侧 policy.allow_implicit_invocation: false 不是摆设,它们把"谁能启动这段流程"写进了文件。

另一个细节是分发方式。Claude Code 用户可以直接安装只读插件;Codex 和其他工具则通过 skills.sh 把文件复制到项目里编辑。两种入口分别对应"订阅维护者的流程"和"把流程改成自己的"。这比只给一个 README 更稳,因为技能目录、插件清单、版本同步脚本和发布工作流都在仓库里。

🏗️ 核心特性

  1. 可安装的工程技能集,不是单次提示词

仓库的产品主体是 SKILL.md 和配套文档。浅克隆核验显示,仓库共有 162 个 Git 跟踪文件,其中 111 个 Markdown 文件、36 个 SKILL.md、9,229 行文本与脚本。Claude 插件只发布 engineering/productivity/ 下的 25 个 promoted skills,misc/in-progress/deprecated/ 不进入正式插件。

yaml 复制代码
---
name: tdd
description: Test-driven development. Use when the user wants to build features or fix bugs test-first, mentions "red-green-refactor", or wants integration tests.
---

这段 frontmatter 说明了一个关键取舍:技能的"入口"很短,真正的约束在正文里。tdd 不是让 Agent 机械生成一堆测试,而是规定只在确认过的 seam 上写测试,先红后绿,避免测试内部实现和"用被测代码重新算期望值"的假测试。

  1. 用户触发和模型触发分开
类别 数量 例子 作用
用户显式触发 14 ask-mattgrill-meto-specwayfinder 需要人参与、做决策、确认范围的流程
模型可自动触发 11 tdddiagnosing-bugscode-reviewwizard Agent 工作中应主动采用的工程纪律
全部 SKILL.md 36 含 in-progress 与 misc 仓库总知识库,不等于正式插件暴露面
正式插件技能 25 .claude-plugin/plugin.json 明确列出 Claude Code 安装后的实际产品面

这个设计解决了一个常见问题:不是所有技能都应该被模型自己拿来用。需求访谈、Issue 路由和长任务分解需要人参与;测试原则、bug 诊断和代码审查更适合在模型执行中持续约束它。

  1. 工程流程从"聊天"变成状态机

triagewayfinderto-tickets 这类技能把开发活动拆成状态变化。wayfinder 使用 decision ticket 表示"还没做之前必须先决定的问题",并通过 issue tracker 记录依赖关系;triage 把 Issue 和外部 PR 都当成同一种请求面处理;to-spec 生成规格后直接发布到项目的 issue tracker,而不是把长文本丢在聊天记录里。

text 复制代码
想法或需求
  -> grill / grill-with-docs 澄清边界
  -> to-spec 固化用户故事、实现决策、测试决策
  -> to-tickets 拆成带阻塞关系的 Issue
  -> implement 执行
  -> code-review 从标准和规格两条线复核
  1. 插件发布有确定性校验

仓库不是只维护一堆 Markdown。package.json.claude-plugin/plugin.json、Changesets 和 GitHub Actions 组成了版本面。scripts/sync-plugin-version.mjs --check 会检查 package 版本和插件版本是否一致;本次核验执行 npm run check-plugin-version 返回:plugin.json version is 1.2.3 (already in sync)claude plugin validate . --strict 也通过了本地校验。

  1. 性能表要按"控制成本"看

技能库没有运行时 benchmark,因为它并不在热路径里跑推理或编译。这里的性能主要是上下文成本、触发成本和纠错成本。

机制 成本表现 源码证据 边界
短 frontmatter 入口 模型先看到触发描述,不必一次吞完整知识库 每个技能的 description 很短,正式插件显式列目录 触发质量仍取决于宿主 Agent 的技能检索
用户触发隔离 人参与流程不会被模型误自动调用 disable-model-invocation: truepolicy.allow_implicit_invocation: false 不是权限沙箱,只是技能调用边界
规格与 Issue 写入 决策离开聊天上下文,进入项目记录 to-specto-ticketswayfinder 工作流 需要项目配置 issue tracker
版本同步脚本 插件版本漂移可被脚本发现 sync-plugin-version.mjs --check 只检查版本字段,不证明技能质量

🔬 技术架构深度解析

Skills 的架构不在某个核心类里,而在"指令如何流动"里。按源码看,可以拆成五层。

text 复制代码
+---------------------------------------------------------+
| 分发层                                                   |
| Claude Code plugin: .claude-plugin/plugin.json           |
| skills.sh: npx skills@latest add mattpocock/skills       |
+----------------------------+----------------------------+
                             |
                             v
+---------------------------------------------------------+
| 技能索引层                                               |
| engineering/ + productivity/ promoted skills             |
| misc/ + in-progress/ + deprecated/ 留在仓库但不进插件      |
+----------------------------+----------------------------+
                             |
                             v
+---------------------------------------------------------+
| 触发控制层                                               |
| user-invoked: 人显式输入 slash command                   |
| model-invoked: 模型按 description 自动采用                |
+----------------------------+----------------------------+
                             |
                             v
+---------------------------------------------------------+
| 工程动作层                                               |
| grill -> spec -> tickets -> implement -> review          |
| bug diagnosis / TDD / architecture scan / wizard         |
+----------------------------+----------------------------+
                             |
                             v
+---------------------------------------------------------+
| 持久记录层                                               |
| CONTEXT.md、ADR、Issue tracker、handoff、throwaway branch |
+---------------------------------------------------------+

1. 真实产品层:Markdown 决策协议

GitHub 语言显示 Shell,是因为语言统计只计算代码文件。仓库本身的工程密度主要在 Markdown。浅克隆核验结果如下:

指标 数值
Git 跟踪文件 162
Markdown 文件 111
JSON 文件 5
Shell 脚本 5
YAML 文件 36
SKILL.md 数量 36
总行数 9,229
Markdown 行数 7,004
正式插件技能 25

这说明它不是传统意义的 SDK。它的"代码"是让 Agent 遵守的流程文本,外加少量发布和链接脚本。分析这类项目时,不能把 Markdown 当成说明书附属品;Markdown 就是产品。

2. Router 不是关键词表,而是相位边界

ask-matt 的角色很像路由器,但它处理的不是简单关键词匹配,而是"工作处在哪个阶段"。例如:

阶段 对应技能 目的
还没想清楚 grill-megrill-with-docs 先问问题,避免 Agent 自己补需求
已有上下文 to-spec 把讨论转成规格,不再继续访谈
任务太大 wayfinder 用 decision ticket 找出还没决定的部分
要实现 implementtdd 按规格执行,测试只落在确认过的 seam 上
要复核 code-review 分别检查标准符合度和规格符合度

这比"把所有最佳实践塞进一个长 prompt"更容易维护。一个技能只关心自己的相位,其他相位通过 router 和文档指针接上。

3. 文档不是缓存,除非它记录了代码看不出的事

仓库的 CLAUDE.md 写得很直接:安装命令从 .agents/install-block.md 复制,不允许各处各写一份;技能目录必须和插件清单同步;添加或改动正式技能时,README、docs 页面和 ask-matt 都要跟着更新。这是一种很务实的文档治理:能从配置文件查到的东西,不要在十个地方复述;必须给 Agent 看的约定,才写进文档。

4. 可执行校验和模型约束分清楚

Skills 里有些规则能被程序检查,有些只能靠 Agent 遵守。这个边界必须说清楚。

控制项 类型 说明
插件 manifest 校验 可执行 claude plugin validate . --strict 已通过
插件版本同步 可执行 npm run check-plugin-version 已通过
promoted skills 是否进入插件清单 可执行加人工维护 .claude-plugin/plugin.json 明确列出 25 个路径
TDD 只测 seam Agent 介导 技能会要求确认 seam,但不会强制拦截测试文件
code-review 双线复核 Agent 介导 依赖 Agent 按标准和规格两条线审查
/grill-me 真正问到位 人加 Agent 协作 质量取决于交互,不是单次命令能证明

这是我最喜欢的一点:仓库没有把 Markdown 规则包装成"自动保证"。它更诚实地把可执行校验放在发布和版本层,把工程判断留给 Agent 与人。

5. 版本面:源码、插件、Release 一致

package.json.claude-plugin/plugin.json 都是 1.2.3;GitHub Releases 最新 tag 也是 v1.2.3,发布时间为 2026-08-06。最近几次 release 主要围绕安全输出、跨 harness 文案、wizard、prototype、wayfinder 等技能修订。最新提交是 2026-08-21 的 code review wording 修正,说明 main 分支在 release 后仍有文档和技能细节更新。

📖 README 核心内容摘要

README 的主张很清楚:真实应用开发难,GSD、BMAD、Spec-Kit 这类流程会试图接管整个过程,但接管越多,开发者越难在流程出错时介入。Skills 把流程做小,允许你改、组合、替换。

安装有两条路,二选一。

Claude Code 走官方插件市场。这个命令已通过 claude plugins --help 核验,install 是插件命令的正式子命令。

bash 复制代码
claude plugins install mattpocock-skills

Codex 和其他 Agent 走 skills.sh。这个命令已通过 npx skills@latest --help 核验,add <package> 是正式命令,--skill--agent 等选项也在帮助输出里。

bash 复制代码
npx skills@latest add mattpocock/skills

README 里反复出现的工程观念有四个:

问题 README 给出的处理方式 对应技能
Agent 没理解需求 先做 grilling session,逼近真实需求 grill-megrill-with-docs
Agent 说得太散 建立项目里的共同语言 domain-modelingCONTEXT.md
代码不能跑 使用类型、浏览器、自动化测试等反馈回路 tdddiagnosing-bugs
代码变成泥球 持续寻找 deep module 和更好的 seam improve-codebase-architecturecodebase-design

它也支持多 harness。v1.2.0 加入了 Codex metadata,每个技能旁边有 agents/openai.yaml,用于描述 Codex UI 和隐式调用策略。Claude 插件清单则通过显式路径列出 promoted skills,避免把 in-progress/misc/ 下的实验内容一起发布出去。

🚀 快速上手

如果你用 Claude Code,直接安装插件:

bash 复制代码
claude plugins install mattpocock-skills

安装后,在项目里先运行 /setup-matt-pocock-skills。它会问三类问题:Issue tracker 用 GitHub、Linear 还是本地文件;triage 标签怎么映射;Agent 生成的文档应该放在哪里。

如果你用 Codex 或其他支持 skills.sh 的 Agent:

bash 复制代码
npx skills@latest add mattpocock/skills

安装器会让你选择要安装哪些技能和目标 Agent。README 特别提醒要选 setup-matt-pocock-skills,否则后续工程技能拿不到 issue tracker、标签和文档目录这些基础配置。

一个比较顺手的最小工作流如下:

text 复制代码
1. /setup-matt-pocock-skills
2. /grill-with-docs 先问清需求,同时补 CONTEXT.md 与 ADR
3. /to-spec 把当前讨论固化成规格
4. /to-tickets 把规格拆成带阻塞关系的 Issue
5. 让 Agent 按 Issue 实现,期间模型可自动参考 tdd、diagnosing-bugs
6. /code-review 按项目标准和原规格做复核

维护者开发插件时还有一个本地检查命令,本次核验已执行通过:

bash 复制代码
npm run check-plugin-version

如果你只是想试一两个技能,skills.sh 也支持指定技能安装,帮助输出里的选项名是 --skill

bash 复制代码
npx skills@latest add mattpocock/skills --skill=tdd

📊 增长速度与社区热度

Skills 创建于 2026-02-03,Trending 快照日为 2026-08-22。按快照 Stars 计算,约 200 天积累 230,235 Stars,生命周期粗略基线约为 1,151 Stars/天。这个数只能说明从创建到快照的平均速度,不能当作当天新增 Stars;预跑数据没有保留每个仓库的 daily stars。

指标 数值 说明
Trending 排名 #1 2026-08-22 快照
Stars 230,235 快照值;同日 API 补充核验为 230,237
Forks 19,673 快照值
Open Issues 377 API 补充核验
Contributors 4 API contributors 前 10 中返回 4 个账号
最大贡献者 mattpocock,418 commits API contributors 返回值
最新 Release v1.2.3 2026-08-06 发布
最近提交 2026-08-21 main 分支提交 5b15a47

社区热度不只来自 Star。它还有 19,673 forks,这对一个以文本规程为主体的仓库来说很关键,因为 fork 意味着大量团队可能会改写这些技能,而不是只收藏。Open Issues 有 377 个,PR 和 release 记录显示维护者在持续修订细节,比如诊断时的密钥脱敏、跨 Claude/Codex 的术语、wizard 的人工步骤脚本模板等。

Rank Repository Language Stars Daily Stars
1 mattpocock/skills Shell 230,235 未保留
2 harry0703/MoneyPrinterTurbo Python 114,191 未保留
3 AprilNEA/OpenLogi Rust 13,211 未保留
4 PostHog/posthog Python 38,375 未保留
5 microsoft/TypeScript Go 110,426 未保留
6 obra/superpowers Shell 275,791 未保留
7 santifer/career-ops JavaScript 67,610 未保留
8 cursor/plugins TypeScript 4,488 未保留
9 modular/modular Mojo 28,750 未保留
10 affaan-m/ECC JavaScript 241,900 未保留
11 TryGhost/Ghost JavaScript 54,981 未保留
12 ruvnet/ruflo TypeScript 68,740 未保留
13 apache/maka TypeScript 2,098 未保留
14 protocolbuffers/protobuf C++ 71,794 未保留
15 elder-plinius/OBLITERATUS Python 7,875 未保留
16 microsoft/onnxruntime C++ 21,532 未保留

🎯 适用场景

场景 为什么适合 使用方式
个人项目中频繁用 Claude Code 写功能 容易跳过需求澄清和测试边界 /grill-with-docs/to-spectdd 建立固定节奏
团队想把 Agent 产出接到 Issue 流程 聊天记录无法承担项目管理 setup-matt-pocock-skills 配置 issue tracker,再用 to-ticketstriage
旧代码库需要架构改良 Agent 容易只做局部重构 improve-codebase-architecture 找 deepening opportunities
需要跨会话交接 长对话上下文会膨胀,也容易丢判断 handoff 把当前状态写成可接手文档
新人或非核心开发者参与需求澄清 领域词不统一,描述会变长 domain-modelingCONTEXT.md 固化共同语言
要在 Codex、Claude Code 等不同工具间复用流程 单平台插件会锁住流程 Claude 用插件,其他 Agent 用 skills.sh 拷贝技能文件

💡 总结

Skills 的价值不在"收集了很多提示词"。如果只是提示词合集,它不会有 25 个正式插件技能、用户触发和模型触发的双入口、版本同步脚本、Claude 插件清单、Codex metadata 和发行记录。

我更愿意把它看成一个轻量的 Agent 工程操作手册。它没有替你实现隔离沙箱,也不会保证 Agent 每次都按规范执行;它做的是把容易被忽略的工程动作变成可安装的工作流。先问清楚,再写规格;先定 seam,再写测试;先把决策放进 Issue,再让 Agent 执行。对真正把 Agent 放进日常开发的人来说,这种"少接管,多约束"的路线比全自动口号更可靠。

相关推荐
李燚1 小时前
MultiAgent Host 源码 + ADK prebuilt 三种预制模式(第92篇-E78)
agent·multiagent·tool·eino·subagent·deepflux·loopagent
Databuff2 小时前
两款开源APM工具【skywalking+databuff】组合落地实战
开源·skywalking
程序员差不多先生2 小时前
OpenAI 把 Codex Harness 开源:AI Agent 的“操作系统“之争正式开打
人工智能·开源
梦想很大很大2 小时前
Workrun 进度更新:从理念到解决具体问题
agent·workflow·工作流引擎
番茄不是西红柿kk2 小时前
deepseek-harness跨平台桌面端二开项目(四)安装完点“启动应用“却没反应?背后是 sidecar 的冷启动预算与杀软博弈
人工智能·agent·deepseek
u1301302 小时前
GitHub 热榜项目:日榜(2026-08-23)
驱动开发·github
u1301302 小时前
GitHub 热榜项目:周榜(2026-08-23)
github
武子康2 小时前
DeepSeek Harness 为什么不用 messages 数组保存一切
人工智能·llm·agent
被萝卜吃的兔子2 小时前
开源引流,授权收费,TuyaOpen模式拆解
github