skillify

其他 已审计 @garrytan v1.0.0
信任分
92/100
兼容 Agent
1
速查档案 只列事实:领域、Agent、信任分、作者、原文章节。装与不装请看下方作者解读。
领域
通用
兼容 Agent
Claude Code
信任分
92 / 100 · 已通过审计
作者 / 版本 / 许可
@garrytan · v1.0.0 · 未声明 license
安装命令数
1 条

需要注意: 未限定 allowed-tools,默认拥有全部工具权限。

想读作者英文原文? ↓ 滚到正文区切换 · 在 GitHub 查看 ↗

解读由编辑根据原文凝练而成,命令、链接、术语均与作者原文一致;想看完整论述请切到右侧

skillify 把 /scrape 跑出来的临时抓取沉淀为可复用 browser-skill——它有一份铁律合同:绝不把半成品 skill 写到磁盘。要么测试通过完整落地,要么 staged dir 直接丢弃。

设计思路

作者把 skill 化拆成 9 步,每一步都有 D 编号(决策点)。staged write 是核心机制——所有产物先写到一个 staged 目录,跑测试通过、用户审批通过,才用原子 rename 移到 ~/.gstack/browser-skills/,半路任意失败都靠 discardStaged 回滚。这样保证「我不会因为 skill 写到一半就让磁盘变脏」。

工作流

Iron contract — 永不把半成品 skill 写到磁盘;② Step 1 Provenance guard — 来源是不是合法的 /scrape 原型?;③ Step 2 提议 name + triggers——给 triggers: / description: / host: 起字段;④ Step 3 合成 script.ts(D2);⑤ Step 4 抓 fixture——把页面快照存下来当离线测试源;⑥ Step 5 写 script.test.ts——bun test 直接跑;⑦ Step 6 解析 canonical SDK path 并 read;⑧ Step 7 stageSkill 原子写入 staged dir,回 stagedDir 给后续;⑨ Step 8 $B skill test "<name>" --dir "<stagedDir>"(不支持 --dir 就 fallback cd "<stagedDir>" && bun test script.test.ts),失败可读输出修最多 2 次,再失败或环境问题就 discardStaged 并停下;⑩ Step 9 Approval gate D 询问用户是否真要 commit 到 <resolved-tier-path>

Approval gate 的用语

作者把这一步的 AskUserQuestion 写得非常细:明确告诉用户 yes 会做什么、no 会做什么、若选错的代价是多少(yes 会留个手动 $B skill rm <name> --global 才能删的 artifact;no 丢掉 ~30s 合成)、并给出 recommendation。

适合的场景

  • 同一类抓取要重复做:先用 /scrape 试通,再用 /skillify 沉淀
  • 团队希望把抓取脚本变成「可被 /scrape 自动命中」的资产
  • 有相对稳定的 fixture 网页(结构变化少)

何时不要用

  • 一次性、低频抓取:直接保留 /scrape 原型即可
  • 抓取结果对参数依赖很强且参数难定义为 args::先继续用 scrape 原型

配套

scrape(原型来源)、webapp-testing(同样基于 $B 但偏 QA)、setup-browser-cookies(要登录态时先跑)、write-a-skill / writing-skills(写 SKILL.md 的语调)。