首页 / 资讯中心 / 文章详情

如何写 Skill 第11课,实战工坊:痛点验出来,骨架偷出来

如何写 Skill 第11课,实战工坊:痛点验出来,骨架偷出来 ★ FEATURED ARTICLE
摘要做 skill 的第一道坎不是「怎么写」是「写什么」。这一课摊开选题全过程拿 skills.sh 安装量验痛点五判据过堂圈定 using-git-worktrees21.6 万安装拿 GitHub API 对质标本——单文件、167 行、零脚本逐门解剖三段序与四道门偷骨架、找软肋最后立项四项把标本变成自己的。全文一把尺子验过的才算数。共约 6131 字 · 阅读约 15 分钟老规矩先放声明经历全是真的身份一概没有——公司、内部路径与真人代号全部脱敏数字保留 2026-10-23 当日实测原值。1、开场三张罚单十课练完按计划该真做一个自己的 skill 了。我以为第一道坎是「怎么写」坐下来才发现人倒在更前面——「写什么」。我不信选题这事需要方法拍脑袋圈了三个热门候选按安装量从高到低排打算从最大的下手。罚单当天到了三张第一张systematic-debugging,304.3K 安装。名字越看越眼熟点开想了三秒我家技能库里躺着 diagnosing-bugs——撞自家领地一票否决。第二张verification-before-completion,249.7K 安装。通篇判断、零脚本我后面要练的脚本位它一个格子都腾不出来。第三张changelog-generator,7.3K 安装。选题本身不坏坏在需求7.3K 这个数是市场投完票之后的得票。三张罚单罚出同一个道理「写什么」不是口味问题是验证问题。这一课我把全过程摊开——验痛、对质、补课、解剖、偷与留、立项六道工序每道工序我踩过的坑就地埋在那个环节里你走到哪坑就看到哪。2、验痛安装量是需求的证据开头把结论放这痛点不是想出来的是验出来的你脑补的需求和安装量投出来的需求经常不是同一个。工具就两样skills.sh 的排行榜加npx skills find 关键词的定向检索。安装量是市场需求投的票每一票背后是一次真实的安装决策比任何「我觉得大家需要」都硬。我先把生态的家底对了一遍账。我自己装的库里光方法论系前排就一串grilling 1.4M、grill-with-docs 1.2M、tdd 1.1M、handoff 1.0M、code-review 783K截至 2026-10-23 的 skills.sh 快照。头部清一色是「怎么跟 agent 共事」的方法论领域型 skill 靠后。为什么方法论系霸榜我有个没验证的猜测共事方法每个 agent 用户都要领域知识只圈各自领域的人——当猜测听别当结论用。真空白怎么圈我立了五条判据逐条过堂安装量验痛——没有安装量就没有需求证据不撞已装库的领地——再热跟现有 skill 抢同一块地就毙六站练得满——工坊六站需求定性、description、骨架、脚本、调试、评测每站都得有活干没脚本位就练不满作者可信——读得懂他为什么这么设计学得来贴自己的日常——自己用得上才测得动。四个候选过堂生死全在这张表里表上最扎眼的是 systematic-debugging304.3K 安装死在第二条。另两张的死因同样干脆verification-before-completion 死在判据 3没脚本位changelog-generator 死在判据 1没安装量。安装量是必要条件不是充分条件——它只证明「有人要」不证明「该你做」。活口只有一个obra/superpowers 仓库里的 using-git-worktrees,216.4K 安装skills.sh2026-10-23 快照随页面浮动五条全过装前过一道 Socket/Snyk 审计。仓库整体 303,963 starsGitHub API当日——star 数的是仓库人气安装数的是单个 skill口径不同但都指向同一件事不是冷门skills 目录下 15 个技能README 开头一句自己交的底An agentic skills framework software development methodology that works.作者 Jesse Vincent工单系统 Request Tracker 就是他的——判据第四条不用再找佐证。第五条最私人我自己的日常里「同一个仓库并行跑两条线」是隔三差五就要应对的麻烦在途分支改到一半线上急修插进来stash 来 stash 去。有体感的痛点才测得动。这一环我留一句话给全文当筛子验过的才算数。它当场毙掉三个候选后头每一节还要用它筛没抓取过的不引没实测过的不说没验证过的设计不抄。验痛环节的翻车就两种一种不验拍脑袋我开场示范过了一种只看一个数见安装量大就上。排查入口npx skills find敲你自己的关键词数安装量再拿五判据过一遍——第一判据自带减法验不出痛点的方向当场毙掉——这套方法同样用来否决。3、对质页面说的不算仓库说的才算选题过了堂货还没验。skills.sh 的页面告诉我标本是单文件我差点直接信了。这毛病跟看 Swagger 文档猜接口行为一个样文档是观察响应才是契约。今天的检索就先给了我一个现成反例检索摘要言之凿凿说 martinfowler.com 有篇 worktrees 专文我点过去404站内搜个遍也没有。教训一句没二次抓取过的「来源」都不算数。对质两步。第 1 步直查目录清单curl-shttps://api.github.com/repos/obra/superpowers/contents/skills/using-git-worktrees判据返回的 JSON 数组里只有一项name是SKILL.mdsize是 6813——单文件坐实若返回的是API rate limit exceeded的报错对象是未认证限流——每小时 60 次——不是标本变了歇一会或带 token 再来。第 2 步拉本体数行数当天 raw 域名 DNS 抽风请求头带Accept: application/vnd.github.rawjson走 API 兜底curl-s-HAccept: application/vnd.github.rawjson\https://api.github.com/repos/obra/superpowers/contents/skills/using-git-worktrees/SKILL.md\|wc-l判据167。零脚本、零附件一个 SKILL.md 扛下全部行数哪天漂了以第 1 步的单文件判定为准机制结论不靠 167。打开文件frontmatter 薄得出奇只有两个键name:using-git-worktreesdescription:Use when starting feature work that needs isolation from current workspace or before executing implementation plans…课程里说的「标准六」name、description、license、compatibility、metadata、allowed-tools它只打底用了最简两样。description 全文 196 字符不含键名与换行当日实测口径上面截的是前半——两个触发场景feature 开发要隔离、跑实施计划之前后半还补了一句能力能用宿主原生工具就用不行退回 git。拆到这我停了一下正例有两个负例呢单线开发的别建、已在隔离区的别再建、被宿主接管的别插手——一个都没写。description 只画了领地的一半。这个洞先记账上到第六节再点名。对质环节的翻车只有一种拿转述当文物。排查入口也唯一请求打到 artifact 本体——页面、摘要、别人的笔记都只是观察不是契约。4、补课worktree 和 branch 差在哪解剖前先垫一块地基。工坊现场第一个举手的问题是学员原话「worktree 和 branch 差在哪」——不深但它是全员地基地基不齐第五节的四道门就是天书。第二问紧跟着来「prune 会不会误删」。两问我都拿一次性实验仓实测过跑完即删过程照录实测环境git 2.53、Git Bash、Windows。4.1 worktree 是什么一句话branch 是指针worktree 是目录。branch 本质是 40 字节的小文件指着某个 commit但一个工作目录同时只能挂一条 branch想切分支先得安顿手里的半成品。worktree 是给同一个仓库开第二个工作目录各挂各的 branch——它不是 clone:clone 是把整间仓库复印一份搬走worktree 是同一间仓库在隔壁开的第二个门面库房共享货架各管各的。第 1 步起一个干净的实验仓gitinit democddemoechoaa.txtgitadd.gitcommit-minit判据打出一个提交哈希主仓就绪Windows 开着 autocrlf 的会多一行 LF/CRLF warning无害。第 2 步开第二个门面gitworktreeadd-bfeature-x../demo-wt判据输出有Preparing worktree (new branch feature-x)../demo-wt目录真实生成。第 3 步点验登记gitworktree list判据两行登记一行主仓、一行新目录。第 4 步验「共享」两端各跑一次gitrev-parse --git-common-dir判据主仓端打.gitworktree 端打出一个指回主仓的绝对路径——对象库是同一份这不是 clone。顺带看一眼主仓自己也是登记在案的一条 worktree这个细节第五节要用。顺手把账算清多工作树时$GIT_DIR下多数文件各挂各的HEAD、index 归这半边这一项是我按手册总纲推的手册没逐字点名,common 目录下的全仓共享。第 5 步验「互斥」worktree 挂着feature-x的当口回主仓敲gitcheckout feature-x判据git 亲自拦下报错点名该分支已被某路径上的 worktree 占用——原话already used by worktree at …收在节末终端实录里。分支互斥没死一个分支不能同时挂两个目录。共享、互斥各有实验作保并行不用单测——第 2、3 步那两行登记就是它两个目录、两条分支同时在线。三验收工。把 worktree 当 clone 的代价是心理上的以为要多占一份磁盘、要重新 fetch于是明明有正解却不敢用——学员那一问解开的正是这个心结。4.2 删除会误删吗先给结论prune 不删任何东西只收尸。git 手册原文prune — Remove worktree information in $GIT_DIR/worktrees for worktrees whose working trees are missing.它只动$GIT_DIR/worktrees里的登记条目而且只动「working trees are missing」的——活目录、分支、提交职权范围外一个不碰。不放心就带--dry-run它只报告会删什么自己不动手。真正的删除另有其人是 remove默认自带安全门remove refuses to remove an unclean worktree unless --force is used. To remove a locked worktree, specify --force twice.不干净有未提交改动或未跟踪文件带子模块的同理直接拒lock 过的要按两次--force主工作树压根不可移除。remove 拆得掉目录拆不掉分支——分支是 ref留在共享 refs 里。手册读完实验仓里把删除链走一遍光读不算验。第 6 步给 worktree 塞个未提交改动再删echodirty../demo-wt/a.txtgitworktree remove../demo-wt判据当场拒绝——fatal 原话fatal: ../demo-wt contains modified or untracked files, use --force to delete it要求显式--force才放行实录块里也有这句。补半步显式给--forcegitworktree remove--force../demo-wtgitbranch--listfeature-x判据这回删得动feature-x原地还在——branch --list的预期输出是一行行首带两空格的feature-x输出为空就是分支没了回来重查。force 拆得掉目录拆不掉分支提交过的一切躺在共享对象库里force 也够不着。第 7 步另开一个干净 worktreeadd 会照常打一行 Preparing走的 stderr别慌这回不走 remove直接手动删目录gitworktreeadd-bfeature-y../demo-wt2rm-rf../demo-wt2gitworktree list判据demo-wt2那条登记还在多了一枚 prunable 标记——目录没了登记成尸prunable 注记在 git 2.53 实测可见老版没有注记可用git worktree prune --dry-run复核。第 8 步收尸加验尸gitworktree prunegitworktree listgitbranch判据登记摘掉feature-x、feature-y都原地还在——prune 只收尸分支从来不在它职权里。实测钉成一句安全梯度prune 清白只收尸remove 恋家脏了就拒唯一丢数据的组合是--force× 未提交改动——提交过的一切都在共享对象库里force 也拿不走。这三条先记住第六节它们要变成收摊脚本的现成规格。补课环节两种翻车把 worktree 当 clone不敢用把 prune 当删除错位恐惧——真危险的--force捷径反而没设防。排查入口就一条命令git worktree listprunable 标记在是尸不在不给--force谁也删不了你的活目录。5、解剖三段序与四道门地基垫完进正题167 行、零脚本的纯判断正文凭什么 216.4K 安装把标本从头读到尾骨架其实只有一行Core principle: Detect existing isolation first. Then use native tools. Then fall back to git. Never fight the harness.先检测既有隔离再用宿主原生工具最后回退到 git永不跟 harness 对着干。167 行正文全是给这四句打的下手。5.1 三段序顺序本身就是设计检测→原生→回退不可换。分流画出来是这样图上最反直觉的是第一岔口。顺序是安全性不是效率——检测排第一不是查一下便宜是跳过它的代价最贵两类事故同时开门一类「建了又建」在已是 worktree 的地方再叠一层一类在子模块里误判把宿主目录当成隔离区。省下的半秒跟这两类事故比不叫钱。5.2 四道门判断句往下落是四道门一个模板讲完判什么、怎么判、翻车长什么样。第一道检测门。机械判定对比git rev-parse --git-dir和--git-common-dir相等说明你站在主仓不等说明你已经在 worktree 里。主仓自己也是登记在案的一条 worktree补课第 4 步看过所以站在主仓时两个 flag 天然相等你亲手打的那两行路径是这道门的输出形状——worktree 端的--git-dir指向主仓的.git/worktrees/id这条按手册总纲推手册没逐字点名门本身比较的则是同一端的两个 flag。机制课和标本课在这里会师。但机械判定必有反例子模块里这个不等式同样成立会把子模块误判成 worktree——这道门的翻车现场。所以标本补了 guardgitrev-parse --show-superproject-working-tree再查一次自己是不是站在别人的超级项目里。机械判定必有反例检测要带 guard这句抄走就能用。第二道consent 门先问再建。标本给的理由就一句It protects your current branch.建隔离区是动工作区的动作不问自取agent 就在你没点头的地方改了目录结构——这就是这道门的翻车。第三道原生优先门宿主有装置就用装置轮不到手搓 git。绕过宿主手搓造出来的是幻影状态——宿主文件树里没有这个目录、不追踪你的分支出了事两边互相看不见的平行世界——这道门的翻车连报错都不给。各家装置长什么样5.3 摆在一起看。第四道安全门管两件事。头一件目录从哪来优先级四档写死不留现场发挥用户显式指定的最优先项目里已有的.worktrees/退一档的worktrees/都没有才用默认位置。第二件事建前查忽略git check-ignore -q .worktrees没过就把.worktrees补进.gitignore并提交再动手——不查这个新目录会把整棵树带进版本库。门之外还有两处细活顺手记下。标本正文的 Step 2装依赖认包管理器不靠猜看 manifest——package.json认 npmCargo.toml认 cargorequirements.txt认 pipgo.mod认 goStep 3基线建完跑测试报告固定三行路径、测试数、就绪与否。判断型 skill 的产出规格也能抠到这个份上。解剖环节的翻车读到「机械判定」就照抄不带 guard——skill 上线那天子模块用户替你发现反例。排查入口给每条机械判定找一个反例找到了guard 就有着落。5.3 「Never fight the harness」是趋势不是怪癖先把出处钉透这里有个以讹传讹这句话常被说成 superpowers 全体系的设计原则。我核过逐字出处只是 using-git-worktrees/SKILL.md 正文那一行README 的 philosophy 里另列四条TDD、Systematic over ad-hoc 之类两份清单不是一回事。引文引到行这是硬规矩。然后是正题这行字不是 obra 的个人怪癖。我把三家宿主的官方文档翻了一遍他们各自造了原生 worktree 装置Claude Code 一条命令进隔离区「Pass--worktreeor-wwith a name to create an isolated worktree and start Claude in it.」——目录建在.claude/worktrees/name/分支自动命名worktree-name会话整个搬进去v2.1.198 起步官方最佳实践里也写着worktree 就是为了让多个会话 edits don’t collide。Cursor 是一组 slash 命令/worktree开、/apply-worktree收。Windsurf 在 Wave 13 把它列成一级支持原话是「first-class support for parallel, multi-agent sessions」。三家的装置名、具体行为、文档出处都收在上面表里。表后说判断名字不同姿态一致——worktree 已经是宿主的一等公民。这反过来坐实了第三道门装置归装置的层skill 该做的是检测它、调用它手搓不是勤劳是造幻影状态。装置借不来也替不了这层边界跟派工那课「派工授权」是同一个道理授权给谁的活归谁干。6、偷与留软肋就是任务书解剖完先掰正一个最容易读歪的点解剖别人的 skill是抄吗不是。我偷的是设计判断——判断句、流程、表结构文本一行不搬全自己写。标本开源在仓库里谁都能查「偷」的是思路不是字句。具体偷的是四样第五节那行判断句、四道门的流程加两张表。头一张12 行决策表「情况→动作」两列「已在 worktree→跳过创建」「目录未忽略→补 .gitignore 并提交」「权限错→原地跑」。它把正文里带分支的判断压成查表模型执行时不用重推推理链——查一行动一步是前十课磨症状表的同门手艺。第二张表5 行反合理化表「借口→现实」。借口原句全是第一人称内心戏「The worktree directory is surely ignored already」「Any directory name works」「The workspace is fresh — baseline tests can wait」每行都是模型会对自己说的话——它预判了自我说服然后逐条封死。机理到这讲完了把它跟第 3 课磨的常驻措辞配成一对口诀常驻措辞防忘反合理化表防辩。偷完骨架力气往哪使拿六站标准反查标本身上四处软肋条条是差异化空间零脚本——六步带分支的检测每次内联重敲漏一步就错description 零负例——领地只画一半第三节记的账在这兑现只有开张没有收摊——全文只管 add,list、remove、prune 一个字没有第四节实测的安全梯度正好当收摊脚本的规格bash-only——Windows 的 Git Bash 方言一个没兜我工位恰恰是 Windows。表后一句判断收拢先偷骨架再造差异。21 万多次安装验证过的判断直接拿来用不丢人别把创造力花在已经验过的地方——重排三段序等于拿自己的项目重赌别人赌赢过的局。偷与留环节的翻车是双向的往左把解剖做成抄写文本照搬还觉得捡了便宜往右在验证过的地方自由发挥。排查入口每动一处先问一句「标本在这儿验证过没有」。7、立项四项把标本变成你的选题过了立项落纸。立项四项是合议定下来的——需求句、定型与四分、负边界、目录名一项项过每项配一个反面教材。第一项需求句。定稿版「把「每次要在同一仓库并行跑两条线都得手工敲五六步散装命令搭隔离环境」压成「说一句要隔离agent 交出目录就位、依赖装好、基线干净的隔离工作区」」。判据一句话主语是重复劳动不是技术名词。反面教材当场写过一版「worktree 管理」——四个字全是名词看不见谁的哪件事被省了废稿。第二项定型与四分。定型判断型带从属脚本——这个 skill 的核心价值是判断链建不建、建哪、安不安全、挂了怎么办脚本只收敛机械段跟把逻辑留主干、样板抽进工具类是一个分法转换型脚本即本体结构正好相反站 3、站 4 的重心全看这笔。定型完拆四分九项活各归各位其中两项跨类一句话账目查和做进脚本想留正文借只调用。九行里七行单类检测三连、子模块 guard、check-ignore 归查该不该建、目录策略归想worktree add 本体归借收摊三件归做。两行跨类装依赖——探测算查、执行算借基线测试——命令算借、挂了怎么办算想。类计数查 4、想 3、借 3、做 1合计 11正好等于九行加两个跨类账这才对得平。第三项负边界至少三条我们定了四条守触发、执行、授权、环境四个面每条都要答得出「谁会误触、最坏是什么」答不出的负边界是免责声明单线开发不做——触发面已在隔离区不再建——执行面交给 guard未过同意门不建——授权面非普通仓库不接脚本退出码 2——环境面。第四项目录名。硬规则照办kebab-case、1-64 字符、无连续连字符、不以连字符开头或结尾、与目录同名保留名也别碰——synced任意大小写都不行anthropic-skills前缀是雷。真正要紧一条用户嘴里说的词必须在名字里。我查过重名71 个已装 skill 里 grepworktree和wt零占用但wt-kit这种短打型还是毙了——「wt」不是所有人的口头词触发面弱半档。正主的名字也不能碰using-git-worktrees 是 obra 的。最后定名 worktree-flowworktree 是口头词根flow 标领地——全生命周期跟标本「只建不收」划清界线。立项四项都过了还有一道暗闸要交代选题判据和立项四项是两道独立的闸过了后一道不等于过了前一道。我拿 changelog-generator 当过对照样本需求句、四分、负边界、名字全能答得漂亮回头一看安装量7.3K——立项再正规救不回没需求的选题。这一课的实操现在轮到你输入、动作、产出都定好输入你自己想做的那个方向一句话写下来执行五判据过堂过了再填立项四项的空预期输出一张立项单——需求句、定型与四分、负边界至少三条它们以后直接变站 5 盲测的 should-not 靶子、目录名。模板就这四格拿你自己的题目填——哪一格填不出来哪里就还没想清楚。立项环节的翻车清单需求句写成技术名词、负边界凑免责声明、名字里没有口头词三种废稿我各见过一次排查入口立项单每格拿「谁、哪件事、省了几步」过一遍答不出就回炉。8、收口六道工序走完判断句打包一句一个环节验痛痛点不是想出来的是验出来的——验不出来就是没有对质页面说的不算仓库说的才算——没对质过的观察只是巧合的信任补课branch 是指针worktree 是目录——prune 只收尸remove 恋家--force是唯一的丢数据组合解剖先检测既有隔离再原生再回退——机械判定必有反例检测要带 guard偷与留先偷骨架再造差异——力气只花在软肋上立项四项落纸才算立项——需求句、定型与四分、负边界、名字缺一格回炉。六句背后是同一句判据中段筛内容用的是它你现在带走也用它验过的才算数——没验过的选题不做没验过的结论不写没验过的观察不引。带走三样选题五判据安装量、不撞领地、六站练得满、作者可信、贴日常配上npx skills find选题从口味变成验证标本骨架三段序判断句加四道门——检测带 guard、先问再建、原生优先、安全两查21 万次安装验证过直接搬立项四项模板需求句、定型与四分、负边界、目录名拿你自己的题目就能填。临走三问检测三连、子模块 guard、check-ignore 这类机械检查立项四分时该记进「查」还是「想」尺子是哪句话反合理化表那五行借口全是第一人称内心戏——它防的是用户、作者还是模型自己为什么非用它自己的口吻三段序若把「检测」挪到最后、先建再查哪两类事故会同时开门省下的半秒最后付给了谁三道都答对了这一课才算真的带走。第一课到第十课判据都是拿别人嚼过的案例练这一课头一回对活标本动刀工坊六站站 1 走完。下几课进站 2 到站 4description 怎么把领地画全——第三节记的那笔 196 字符的账到时候还骨架怎么从标本改出差异脚本怎么捆进判断型——【下篇钩子占位】。如果这篇文章对你有帮助欢迎转发给需要的同事和朋友。
阅读完成 · 觉得有帮助?
咨询建站