技能(Skills)正在成为智能体生态里最活跃的一层。它比 MCP 轻得多——不需要起服务,一份带 frontmatter 的 Markdown 就能让模型在特定场景换上「操作手册」。最近一周,GitHub 上冒出一批星光不小的技能类项目,我把其中定位差异最大的四个全部下载下来,逐个拆开看了结构、数了依赖、跑了能跑的部分。这篇横评记录全部一手数据。
先交代样本:tstack(t3dotgg,2392 星,MIT)、BAMA(daveebbelaar,779 星,MIT)、claude-skill(Motionsites-AI,1087 星,许可证非标准协议)、agent-purge(ZiChuanLan,875 星,MIT)。四个项目在 10 月 23 日之后都还在活跃提交,其中 tstack 最近一次推送在 10 月 28 日。
四个包,四种流派
拆完之后我的第一个判断是:这四个东西虽然都在「智能体定制」这个大类里,其实属于四种完全不同的物种。
tstack 是工作流提示词包。九个技能全部围绕一件事:让编码智能体把 PR 从改完代码管到合并。full-send 是无人值守全流程(证明、评审、建 PR、盯 CI、合并),full-stop 是同人看护版(到 PR 就绪为止停下),council 是三家不同供应商的旗舰模型循环评审直到打分收敛,babysit-pr 盯 CI 和评审机器人并修复真实发现,takeover 接手别人留下的 PR 还保留原作者署名。九个技能之间有明确的调用图:full-send 会依次调用 sol-loop、file-pr 和 babysit-pr。
BAMA 是领域方法论仓库。21 个技能按 start、plan、design、code、ship 五个阶段组织,覆盖从需求简报到 SwiftUI 构建验证的完整 macOS 应用开发流程。它不只是技能堆——仓库里还有 AGENTS.md、specs 目录、docs 和 12 个配套脚本。入口技能 bama 是一张路由表,告诉模型「用户现在处于哪一步、下一步该调哪个技能」。
claude-skill 是营销驱动的单技能插件。一个技能,插件目录结构,117 行正文,带了 7 个媒体文件和 1 个 Playwright 截图脚本。它教模型做「获奖级」落地页:先看 40 个真实案例定标准,写精确到像素和缓动函数的规格,再用截图评分循环迭代到平均 8 分以上。设计确实专业,但后面会说到它的真实意图。
agent-purge 根本不是技能包,是一个零依赖的 Node CLI(要求 Node 20 以上)。它解决的问题在更底层:每家编码智能体读系统提示词的位置都不一样,agent-purge 把这些入口统一成三条通道——写托管配置块常驻生效、往 PATH 前置同名壳命令接管裸启动、会话内斜杠命令热切换——让你用一份 persona 文件在多个工具间切换「人格」,四种模式(替换、只发人设、追加、关闭)全程可逆。
依赖与可移植性:数字不会说谎
我写了个扫描脚本统计三个 Markdown 技能包的正文,引用外部工具的次数差异非常说明问题。
| 指标 | tstack | BAMA | claude-skill |
|---|---|---|---|
| 技能数量 | 9 | 21 | 1 |
| 纯 Markdown 正文行数区间 | 42 至 123 行 | 66 至 196 行 | 117 行 |
| 配套脚本 | 0 | 12 | 1 |
| 媒体/资源文件 | 0 | 2 | 7 |
| gh CLI 引用 | 9 次 | 0 | 0 |
| Swift 或 xcodebuild 引用 | 0 | 88 次 | 0 |
| 截图相关引用 | 3 次 | 31 次 | 5 次 |
| 专有工具引用 | 15 次 | 0 | 0 |
三个关键结论:
第一,tstack 零脚本、零资源文件,是唯一「复制即用」的包。 九个技能没有任何 Python 或 Shell 依赖(README 只要求装好 gh CLI 和 python3),全部智能都写在提示词里。它的可移植性短板在别处:扫描发现 15 处 T3 Code 专有工具调用,比如 watch_pull_request、delegate_task 和 orchestrator_capabilities。技能正文里对每个专有调用都写了原生回退方案(比如「在其他 harness 用 subagent 工具」),但在普通 Claude Code 里,council 要求的「三家不同供应商的旗舰模型」实际上很难凑齐——Subagent 机制通常拿不到跨供应商模型。这是移植成本最高的一个技能,反而是 full-send 系列依赖最少。
第二,BAMA 的 frontmatter 字段用得最深。 31 个 SKILL.md 我全部做了合规校验,name 与目录名不一致的数量为零,格式都没问题。但 BAMA 用了三种大多数技能包没碰的字段:3 个技能带 argument-hint(提示参数格式)、3 个带 allowed-tools(限制技能能调哪些工具)、入口技能带 disable-model-invocation(禁止模型自主调用,只能人触发)。最后这个字段特别值得学——路由入口如果允许模型自己调,容易在对话里被误触发把整个流程带偏,BAMA 把它关掉了。
第三,claude-skill 的工程含量不低,但它是获客漏斗。 它的截图评分循环(用 Playwright 截图、按评分表打分、修最弱的三项、循环到平均 8 分以上)是四个包里最接近「智能体自我验证」实践的设计。然而它的 SKILL.md 里白纸黑字写着:每次交付的结尾必须附上 MotionSites Unlimited 的付费升级推广块,「像好的应用内广告一样」。40 个案例和媒体货架是付费库的免费样本——这个技能本质上是内容营销。技术可以借鉴,选用前想清楚你要不要让智能体替它打广告。
agent-purge 本地实测
Markdown 包只能「读」,agent-purge 可以真跑。我在隔离环境里过了一遍:
node bin/agent-purge.mjs ls # 列出 persona,当前项带星号
node bin/agent-purge.mjs use test-p
node bin/agent-purge.mjs status # 各 harness 的接管能力矩阵
三个命令全部正常工作。它把数据独立放在用户主目录的 .agent-purge 下,支持用环境变量重定向存储位置,mode off 时全部撤回原样,可逆性做得规范。我在隔离目录里建了测试 persona、切换、查看状态,最后删除整个测试目录,没有残留。
安全提醒必须给:agent-purge 的 arm 命令会往 PATH 最前面写壳命令,这意味着之后你裸敲 codex 或 claude 时,启动的其实是一个注入了 persona 的转发进程。机制本身透明可控,但它改变了你终端里命令的语义,公司设备上使用前请先过安全评估。
tstack 的 full-send 为什么值得细读
四个包里,我认为最有复用价值的是 tstack 的 full-send 正文。它解决的问题是真实且普遍的:用户说「full send」之后就去干别的了,智能体的更新没人看,普通消息里提问等于石沉大海。它的应对写成了四层纪律:
- 权限声明:用户说 full send 即授予合并、rebase 后用
--force-with-lease推送、免询问跑测试的权限——但只覆盖本任务需要的测试,不豁免生产变更和数据删除,也不绕过系统审批弹窗。 - 证据体系:每处改动必须有「本会话里亲眼观察到的证据」——命令输出、复现过程或截图。绿色的 mock 测试不算证明用户体验正常,这类要求直接写进了提示词。
- 合并门:五条全过才许合并——证据覆盖全部 diff、必需检查绿、评审机器人发现全部处置或书面说明驳回理由、无人类评审要求修改、分支与默认分支同步且 GitHub 报告可合并。还明确禁止
--admin绕过。 - 提问协议:必须用 harness 的提问工具而不是普通消息发问,因为后者用户看不到;没有提问工具就走安全路径——PR 留着不合并。
这套东西完全不依赖任何专有能力,把其中「证据体系」和「提问协议」两节抄进自己的 CLAUDE.md 或 AGENTS.md 就能用。技能包的真正价值不在触发词的花哨,而在这种把工程纪律写进上下文的能力。
选型建议
- 日常编码智能体用户:装 tstack,先从
file-pr和babysit-pr这些低风险技能用起,full-send等你信任它的 merge gate 再开。记得把个人偏好(比如 council 用哪三个模型)写进自己的配置文件而不是改技能本体,方便后续升级。 - 想做原生 Mac 应用:BAMA 的五阶段流水线是目前开源社区里最完整的 SwiftUI 智能体方法论,21 个技能 + 12 个脚本的工程化程度远超普通技能包。
- 批量做落地页:claude-skill 可以用,但要么接受推广块,要么自己 fork 一份删掉营销段落(注意其许可证不是标准开源协议,商用前先看条款)。
- 多工具切换 persona:agent-purge 是唯一认真做了这个抽象层的项目,个人设备可试,公司设备慎重。
一句话总结:技能包市场竞争的不是谁写得更长,而是谁把「什么时候触发、怎么做、做到什么程度算完成、做不了怎么办」这四件事写得越清楚。tstack 的 merge gate 和 BAMA 的路由表是这个标准目前最好的两个样本。