昨天和AI花了五个小时,做了一个叫“yuan”的skill 昨天和AI花了五个小时,做一个叫“yuan”的skill。yuan是一个元技能。教AI 怎么做skills的skill。起因是,前天读了Claude Code内部关于 skills 的分类框架和工程哲学的文章《Lessons from building Claude Code: How we use skills》。让我建立起了对skill的系统性认识。我想,不能把“知识”“束之高阁”。所以就动手实践,按那篇文章的思路去构建skills。我的第一反应是做一张“完美的地图”。先把九类技能分好,再画一条标准流程:确定类型、收集踩坑、规划结构、写文件、迭代。线性,清晰。像一本教科书。然后开始用,用一下就发现不对。第一版没有gotchas。那种“看起来像对的但其实会炸“的踩坑记录。第二版加上了gotchas,又发现内容全塞在一个文件里。第三版拆出了 references。第四版加了自我进化的机制。第五版在工作流里嵌入式断言。第六版发现设计原则和正文多处重复。第七版觉察整个流程模型是错的。技能不是设计出来的,是从gotchas 长出来的。做到第七版,终于把创建流程从“先设计再构建“改成了两条路径。从痛点生长在前,从零设计在后。然后是第八版。发现核心原则太多太臃肿,从484 行砍到 325 行。第九版。加上“写完必检“。spawn 一个独立 reviewer,写的人不审,审的人不写。第十版。把“素材验证“从审全部素材改成只审被引用的部分。十个版本。五个小时。看着这份迭代记录,我在想一件事。yuan的十个版本里,每一个新版本,都是因为上一个版本犯了一个错误。没有gotchas、文件太臃肿、流程模型不对、原则太多重复、缺少验证机制。每一个错误都是一条新的 gotchas。每一条新的 gotchas 都推着技能往前长了一截。不是先设计好了再改。是先从错误里发现什么不对,再从那个不对的地方长出新的一层。我们的每一个skill,都不该是它的最终形态。qingshan-writer初版把所有内容塞在一个 351 行的 SKILL.md 里。被yuan审视之后,拆成了gotchas + 工作流 + 三个独立参考文件,191 行。qingshan-explainer 写完第一次使用就发现三个逻辑问题。素材驱动而非论点驱动。基于二手解读下判断。跳步断言。每发现一个问题,就加一条 gotchas。现在它有 18 条 gotchas 了,每一条背后都是一次实实在在的犯错。网上有很多好的skill,我觉得不是作者厉害,是他们优化掉了足够多的错误。“把错犯完”的前提是,我们能把第一版拿出来用。不等它完美。我们知道它不完美,把它丢进真实场景里,让它撞墙,撞出一条条裂缝,然后回来补。我们很多时候总想着,先画完美的图,再往下走。工作也好,当父母也好。我们经常内心有一个版本:先想清楚一切,做好万全准备,然后笃定地开始。这个版本从来没有成真过。每次都是先开始,发现不行,再改。yuan的第一版就是我脑子里那个完美的父母。我们说,孩子,爸爸妈妈给你画一条路。你好好走,不要跑偏。确定方向、找到方法、按步骤来、坚持、成功。线性的,清晰的。但孩子从来不走我们画的路。我们告诉她晚上八点前写完作业,她不写。我们告诉她数学题要先审题再下笔,她不审。我们画了一条完美的线,她在旁边画自己的曲线。然后我们开始焦虑。觉得问题在于我们画得不够好,焦虑孩子为什么不能好好执行。于是,画得再细一点,管得再严一点。在yuan的第十版面前,我想,也许不对。不是我们的线画得不够好,是这条路本来就不该由我们来画。每一个孩子的成长路径,和每一个skill的进化路径是一样的。不是从设计开始,是从gotchas 开始。不是先知道怎么做才对,是先知道怎么做了会错。摔一跤,知道这里有个坑。爬起来,跨过去。又摔一跤,知道这类的坑都不能踩。再爬起来。这些坑、这些摔、这些从错误里长出来的东西,才是真正的路。我们能做的,不是在她前面画线。是跟在她后面,看她摔在哪里。帮她看清那个坑是什么。让她自己跨过去。下一次遇到同样的坑,她自己会绕。yuan做到第十版的时候,还有一个细节。从484 行砍到 325 行,砍掉的是什么。砍掉的不是错误的信息,砍掉的是多余的信息,砍掉的是我自认为聪明但其实只是自我重复的解释。砍掉的是“背景“段落里那些三行话能压缩成一行话的啰嗦。做减法,总是比做加法更需要判断力。我们做加法的时候,是在回应一个明确的痛点。没有gotchas,加。没有断言,加。没有验证机制,加。每一次加都是对的。但加到一定程度之后,我们面对的不是缺失,是冗余。冗余砍不砍,砍哪里,考验的不是我们有没有发现问题的能力,是我们有没有在繁杂的信息里认出本质的判断力。我觉得这是工作中最难的,也是教育里最难的。我们太想给孩子更多了。更多的知识,更多的技能,更多的经验,更多的保护。我们拼命做加法,但我们很少想,哪些东西是冗余的?哪些是我们自以为给了但实际上她不需要的?哪些保护本身就是她该踩的坑,你不让她踩,她永远不知道坑长什么样。有时候,少画一条线,比多画一条线更难。也更对。yuan的第十版交付的时候,我写了一个第零原则进去。先讨论,再动手。之前AI收到一个需求,直接开始建目录、写文件。改完才发现,方向没问题,但结构可以更好。如果先问清楚“要保留什么、拆什么、gotchas 从哪来”,能少改两版。后来我就把它写成了yuan的第一条原则。但它不只是一个做skill的原则,它是人和人之间最基本的事。我们着急干活的时候,最容易被跳过的事,往往是我们最该做的事。跟孩子也一样。我们急着让她改正一个错误的时候,最容易跳过的事是问她:“你为什么这么做?”我们急着给出答案,跳过了她的回答。我们急着画线,跳过了她画给自己的那条线。五小时,十个版本,一个skill。不画完美的图,从第一个坑开始,让错误推着往前生长,定期做减法,先讨论再动手。一个笔记本应该像一本踩坑日记,不是一张完美的地图。孩子有自己画的曲线。我们唯一能做的,是让她知道,摔了可以哭,哭了还是要爬起来,爬起来了,尽量不要让那个坑绊倒自己第二次。我们脚下的路,不在我们画的那张纸上。在我们摔过的每一个坑里。