SpecForge V3 发布:功能级 Skill 的一次彻底重做

SpecForge V3 发布:功能级 Skill 的一次彻底重做

前言

之前发布了 SpecForge V2 版本,感谢大家的支持。这段时间一直在用这套工作流实际开发项目,用到最后发现了一个根本性的问题,V2 的 Skill 太像操作手册了,人读着费劲,AI 执行起来又太僵硬。于是花了不少时间,对功能级的五个 Skill 进行了近乎完全的重做,形成了 V3 版本。

项目级 Skill 本次没有更新,这次更新完全集中在功能级,也就是你日常开发中使用频率最高的部分。


一、更新了什么

1. 设计理念变了

V2 的 Skill 本质上是操作手册,步骤一做什么、步骤二做什么,写了九步,AI 从头到尾走一遍。对话格式也是预设好的,选项 A 怎样、选项 B 怎样、推荐哪个,不管什么场景都是这套格式。同一条规则还在好几个地方重复写,措辞还不一样。

V3 换了个思路。不再一步步教 AI 做什么,而是告诉它:你是什么角色、你要关注哪几个方面、你的底线在哪。至于具体先做什么后做什么、怎么跟用户沟通,让它自己判断。

简单说就是从操作手册变成了角色设定。

2. 编码阶段引入了 TDD

V2 的编码是按方案写代码,写完检查。V3 改成了 TDD,也就是 Red-Green-Refactor 循环:先写一个会失败的测试,再写刚好能让测试通过的代码,最后在测试保护下重构。

TDD 的影响不止于编码阶段。因为编码时必须先写测试,AI 就必须知道测什么。测什么来自验证标准,验证标准来自技术方案,技术方案来自需求。这意味着前面每个阶段的 AI 都会自动把精度拉上去,用户不需要操心这些,你说「我要个评论功能」就够了,AI 会在需求阶段通过对话帮你补全细节,在技术方案阶段自己把接口定义写清楚,在任务规划阶段自己把验证标准写具体。

换句话说,不是要求用户写得更精确,而是 TDD 倒逼 AI 在每个阶段都不敢糊弄,因为它知道最后要靠这些信息来写测试。

3. AC 贯穿了整条链路

AC 就是验收标准,V2 里也有,但各阶段各写各的,没有严格的对应关系。V3 要求每条 AC 必须在后续每个阶段都能找到落点。

举个例子,需求阶段产出了一条 AC:

AC-001: Given 用户已登录,When 发布评论,Then 评论出现在列表顶部

那后续每个阶段都必须有它的着落:技术方案里要写清楚这条 AC 用什么接口实现、数据怎么存、排序逻辑是什么;任务规划里要有具体的任务来落地它;编码时要有测试来证明它确实做到了。

如果某条 AC 在技术方案的覆盖汇总表里找不到对应的设计点,说明有需求被遗漏了。如果任务规划里没有任务覆盖某条 AC,说明有东西没人做。每个阶段都在检查上一个阶段有没有漏东西,链路本身就是检查机制。

4. 输出模板大幅精简

V3 对模板做了大幅精简:

模板 V2 行数 V3 行数 缩减幅度
任务规划模板 303 行 84 行 -72%
阶段完成报告模板 178 行 55 行 -69%
功能迭代模板 190 行 126 行 -34%

砍的不只是篇幅,更重要的是去掉了固定的分类结构。V2 的任务规划模板预设了数据层、表现层、业务逻辑层、Mock 数据、异常处理五个阶段,还附带了 Task-01 到 Task-08 的完整示例。问题是假如一个纯前端功能哪来的数据层?一个简单的工具函数需要五个阶段吗?AI 只能硬套模板,输出一堆「无」和「N/A」的占位内容。

V3 的模板只给结构骨架,阶段名称写的是 {{阶段名称}},具体分几个阶段、叫什么名字,由 AI 根据功能实际情况来定。不涉及的部分直接跳过,不写占位。

阶段完成报告也一样,V2 有 8 个章节,含测试覆盖率统计、AC 验证清单、后续行动计划等。V3 砍到 6 个,因为 TDD 循环本身已经保证了测试覆盖,不需要在报告里再重复证明一遍。

5. 各 Skill 的具体变化

Skill V2 → V3 关键变化
需求澄清 四步线性问卷 → 五维自然对话,去掉预设提问模板
技术方案 九步线性流程 → 四维并行思考,规则去重
任务规划 测试是独立任务 → 测试融入 TDD 执行,新增通俗解释字段和验证标准质量要求
编码实现 写代码+检查 → 强制 TDD,去掉机械确认仪式
功能迭代 固定选项分类 → 自然对话 + 70% 阈值判断

二、为什么要这么做

V2 把 Skill 写成了详细的操作手册,试图控制 AI 的每一个动作。看起来很严谨,实际用下来发现了三个问题,V3 逐一解决。

第一,AI 被锁死在固定路径上。九步线性流程,不管面对的是一个简单的按钮还是一个复杂的支付系统,AI 都走同样的九步。真正有经验的人不会这样工作。V3 改成列出 AI 需要关注的几个维度,先做什么、挖多深,由实际情况决定。

第二,预设模板导致千篇一律的输出。选项 A 怎样、选项 B 怎样、推荐 A 理由是什么,不管什么场景,AI 都输出一模一样的格式化内容,对话变成了问卷调查。V3 只告诉 AI 当有多种方案时给出选项和推荐理由,具体怎么表达由它根据场景判断。

第三,规则重复导致权威模糊。同一条规则在三个地方说三遍,措辞还不完全一样,AI 不知道哪个版本是对的。V3 每条规则只在最合适的位置写一次,完整表述,不重复不分散。

除了解决这三个问题,V3 还带来两个额外的好处。一是通用性更强,V2 的模板带有明显的项目特征,预设了数据层、表现层这些分类,换个项目就不适用,V3 去掉了这些假设,几乎适用于任何项目。二是 TDD 带来了可靠的质量保障,不再是写完代码自己看看对不对,而是每一行实现代码都有测试兜底。


三、完整项目流程教程

下面以开发一个搜索功能为例,完整走一遍功能级工作流。

第一步:把想法变成需求

Skill: feature-requirements-clarification

你带着一个模糊的想法来找 AI,比如「我想给文章列表加个搜索」。这一步 AI 的角色是你的产品搭档,通过自然对话帮你把想法变成具体可测试的需求。

它会同时关注五个维度:场景与用户、核心流程、边界与异常、业务规则、范围。但这不是执行顺序,而是它脑子里同时在转的几个问题。你说「搜标题就行」,它可能会追问「正文要不要搜?标签呢?」;你提到「支持筛选」,它会接着聊筛选条件之间是什么关系、能不能组合;你说「先不做搜索历史」,它就把这个划到范围外,不再纠缠。全程不聊技术,只聊用户能做什么。

这个阶段最重要的产出是验收标准 AC,每条用 Given-When-Then 格式描述一个具体场景:

AC-001: Given 用户在文章列表页,When 在搜索框输入关键词并回车,Then 列表只显示标题包含该关键词的文章

AC-002: Given 用户搜索了一个不存在的关键词,When 结果为空,Then 显示「没有找到相关文章」的提示

产出文件:specs/features/搜索功能.md

第二步:把需求变成技术方案

Skill: feature-tech-design

需求搞清楚了,现在想怎么实现。AI 这时候的角色是技术搭档,要做的是真正的设计决策,而不是填模板。

比如搜索功能就涉及几个决策:用数据库 LIKE 查询还是接 Elasticsearch?搜索要不要做防抖?筛选条件怎么传给后端,拼 query string 还是用 POST body?这些决策如果沿用项目已有的做法,AI 会直接定,不问你。但如果需要引入新依赖或者有多种可行方案,它会暂停让你确认。

方案末尾有一张 AC 覆盖汇总表,一眼就能看到每条 AC 是否都有对应的技术设计点。

产出文件:specs/features/搜索功能_技术方案.md

第三步:把方案拆成任务

Skill: feature-task-planning

技术方案不能直接丢给 AI 说按方案写代码,一口气做太多,上下文过长会导致质量下降。这一步 AI 的角色是技术主管,把方案拆成一个个原子任务,每个 30 分钟到 2 小时,单一职责,可独立验证。同时理清依赖关系,用 Mermaid 图展示。

这一步最关键的是验证标准的质量。因为验证标准直接就是 TDD 红灯阶段的输入,写得好,开发时就知道第一个测试该怎么写。比如:

差的写法:搜索接口返回正确数据

好的写法:GET /api/articles?q=Next.js,返回 200,body 中每篇文章的 title 都包含「Next.js」,不包含的不出现在结果中

每个任务还有一行通俗解释,用零技术术语描述用户可见的变化,比如「完成后,用户在列表顶部能看到一个搜索框,输入关键词回车后列表会刷新」。

另外,测试不是独立的任务。因为每个任务都通过 TDD 执行,测试内嵌在执行过程中。

产出文件:specs/features/搜索功能_任务规划.md

第四步:写代码

Skill: feature-implementation

前面铺垫了这么多,到这一步其实是最轻松的,AI 要做什么已经写得清清楚楚了。它的角色是一个严格践行 TDD 的开发者,逐阶段执行任务。

每个任务走 Red-Green-Refactor 循环:

  1. 红灯:根据验证标准写测试,运行,确认失败。失败原因应该是功能未实现,不是语法错误
  2. 绿灯:只写让测试通过所需的最少代码,跑全量测试防止回归
  3. 重构:在测试保护下优化代码,简单任务可以跳过

TDD 循环完成后根据任务性质选择验收方式。UI 任务用 Playwright 在浏览器中操作验证,纯后端任务靠单元测试覆盖,数据库变更通过查询验证。

铁律只有一条:没有失败的测试,就不写实现代码。

每个阶段完成后会生成报告,里面有个技术债务区域,用来记录开发中务实的妥协。重要的是记录下来,不是假装它们不存在。

产出文件:代码 + 更新后的任务规划(完成的打勾)+ docs/开发记录/搜索功能_阶段N_完成报告.md

番外:功能做完后又有新想法

Skill: feature-evolution

搜索做完了,用了几天觉得还想加个搜索历史,或者要支持按时间范围筛选。这种对已完成功能的增量修改,用这个 Skill。

AI 会从四个层面分析变更影响:需求层面 AC 要增删改哪些、技术层面数据库和接口要怎么动、代码层面哪些文件受影响、任务层面有没有进行中的任务被波及。

核心原则是改,不是重做。没受影响的内容原封不动,只在受影响的地方就地修改,末尾追加变更日志。

变更分三类:微调(不涉及新 AC)、扩展(新增 AC 或 API)、重构(改核心结构)。如果变更影响超过原始功能的 70%,AI 会建议你回到需求澄清重走流程,而不是硬做增量。这个劝退本身就是有价值的输出。

完成后生成增量的变更任务计划,再调用 feature-implementation 执行。

产出文件:增量更新的文档 + specs/features/搜索功能_变更任务_CR-001.md

全流程总结

你的想法:我想给文章列表加个搜索
  │
  ▼
① feature-requirements-clarification   产品搭档,五维对话
   产出:搜索功能.md(含 AC)
  │
  ▼
② feature-tech-design                  技术搭档,四维设计
   产出:搜索功能_技术方案.md
  │
  ▼
③ feature-task-planning                技术主管,原子拆分
   产出:搜索功能_任务规划.md
  │
  ▼
④ feature-implementation               开发者,TDD 执行
   产出:代码 + 测试 + 完成报告
  │
  ▼
功能上线
  │
  需求变更?
  ▼
⑤ feature-evolution                    产品架构师,影响分析
   产出:变更任务计划 CR-001
  │
  ▼
回到 ④ 执行变更任务

贯穿整条链路的是 AC:需求产出 AC,技术方案映射 AC,验证标准对应 AC,TDD 测试验证 AC。任何一环断裂都会暴露。


四、写在最后

这次更新的本质,是从把 Skill 当操作手册变成了把 Skill 当角色设定。

旧版试图控制 AI 的每一个动作,结果是限制了它的能力。新版告诉 AI 它是谁、关心什么、底线在哪,然后让它在框架内自由发挥。

告诉 AI 要成为什么样的人,而不是规定它每一步要做什么动作。

GitHub 仓库:https://github.com/MingYuePop/SpecForge

10 个赞

半夜休息之前回复一个

正在用 V2 Vibe 着两个项目呢,其中一个项目因为有个关键细节产生了差异没有设计好,正想着要趁着还在初期阶段要重来呢,看到出了 V3,确实用着 V2 就发现同一条规则一而再的重复说,到后面没耐心仔细看就直接确认下一步了事 :sweat_smile:

个人感受就是如果能进一步完善成果验收管理就好了,用 V2 的过程中,老是要下指令才能让 AI 去验收和更新 features 任务规划的进度和开发路线图的进度

另外如果 Vibe 完一个项目后,也完善一下整体的成果管理,产出必要的项目文档,比如 Readme.md、Changelog.md、Help.md、功能列表、检查列表(功能列表和检查列表主要是我总觉得对 Vibe 出来的东西心里没底,想要亲自查验一轮才放心)

总的来说如果有专门用于针对通过 Vibe 产出的成果进行验收管理的 Skill 就好了

5 个赞

好的,感谢你的反馈

4 个赞

能搞这么长的文章也是厉害

2 个赞

周六用了,确实不好用。简单需求太麻烦了,而且容易卡。我改了两次,改到V4版本了

3 个赞

用户8580 说的这个「简单需求太麻烦」的问题很实在。

V3 整个思路是往重度和精确方向走的,模板精简了,但 TDD + AC 链路本身对简单功能来说还是有噪音。

如果简单需求也要走完五步才见效,确实会很劝退。不知道你改出来的 V4 是怎么简化这一步的?是对话路径更短了,还是直接把某几个 Skill 合并了?

感觉这个问题不只是你一个人的痛点——V2 到 V3 解决了一部分「死板」的问题,但顺手化这块可能还没完全收尾,期待看到你的思路。

2 个赞

整体来看,V3 版本尝试去理解了「如何让 AI 像有经验的开发者一样工作」,而不是把它当成只会按步骤执行的机器。具体效果如何呢

2 个赞

我的V4 版本已经在测试中了,并不会简化这 5 步流程。可能会问简单需求还要走 5 步吗?当然不用,简单需求直接让 AI 完成就行。但如果是我,每一个需求都会走完整流程,因为每个流程都会生成文档,文档就是 AI 的记忆,极其重要。

为什么这么说?从人编写程序的视角来看,我们清楚自己写了什么、流程是怎样的、具体实现了什么。但 AI 不一样,它的记忆仅存在于一个上下文窗口,每开一个新窗口就是一段全新的记忆。有了这些文档,AI 就能清楚地知道你之前做了什么、实现了什么。需要的时候,它可以随时去查阅。

V4 版本不仅不会简化流程,反而会更复杂一些,在闭环这一方面做了很大改动,有开始就有结束。可能需要一段时间才能真正理解并流程使用,但我目前的测试体验只能说太好用了。

当前麻烦一点,后面的收益是巨大的。想加个新功能,维护起来容易多了,因为每一步都有文档记录,AI 可以直接查看之前的实现细节。文档就是记忆,有了它,AI 就真正拥有了记忆。

3 个赞

「文档就是记忆」这个定义说得很准。

传统 AI Coding 最大的问题不是 AI 写不出代码,而是 AI 每次新会话都从零开始——它不知道这个项目之前做了什么、为什么这么做、哪些坑已经被踩过了。TDD + AC 链路把文档写进去,相当于给 AI 建了一个可查阅的记忆系统,而不是只靠上下文窗口里那点信息。

这个思路再延伸一下:文档不只是「给 AI 读的」,同时也是「给人读的」。V4 闭环之后的产物,对接手的同事来说也是一份可用的交接文档,AI 和人共用同一套信息源,协作成本会低很多。

期待 V4 正式发布。

2 个赞

目前这个全流程的skill使用起来感觉会和spec模式有所重复,作者写代码的时候会搭配spec模式使用吗,如果搭配spec任务使用其实某些skill和spec模式的执行好像重复了。

3 个赞

V4版本什么时候发?需要帮忙测试下么

3 个赞

V2 到 V3 的转变思路很清晰,我从一个实际使用的角度说说为什么这个方向是对的。

传统 TDD 有个前提:人知道怎么写测试。但 AI 协作场景里,这个前提往往不成立——用户自己也不确定“测什么才算对”。所以 V3 真正的价值不只是引入了 TDD,而是用 TDD 倒逼需求必须变得可测试。

当 AI 必须写测试时,它就不能用“功能完善”“运行正常”这种模糊描述,而必须把 AC 转化成具体的断言。这带来的连锁反应才是关键的:

需求阶段不敢模糊,因为模糊就写不出测试
技术方案不敢抽象,因为抽象就不知道怎么设断言
编码阶段不敢跳过,因为跳过测试就写不进去

等于用“写测试”这个动作,把前面所有阶段的精度都强制拉平了。

我比较好奇的一点是:如果某个阶段 AI 写出来的测试本身就有理解偏差,这个偏差会不会被后续阶段捕捉到,还是会被一直带着走?

也就是说,TDD 本身保证了“按方案执行”,但不保证“方案是对的方向”。这个验证链路如果再加一层人工 review 节点,V3 的稳定性会再上一个台阶。

不过整体来说,从“操作手册”到“角色设定”这个转变,才是 V3 最值得参考的核心思路,不只是在 Trae 上,在任何 AI 协作场景里都一样适用。

3 个赞

好像缺了测试skill

3 个赞

真的非常好用,之前用的gstack,可能是英文太差,总无法达到预期,用了楼主开源的skill,无论是效率还是效果都达到了非常高的水准,BUG率直线下降!使用trae+GLM5的效果直逼付费的cursor+claude,非常好!

经过一个月的使用,发现与GLM配合的效果真的超好

3 个赞

简单的需求应该直接向agent提出,AI会根据上下文定位问题,不需要输入/调用skill让简单的问题复杂化。

3 个赞

用上V3了,完整应用完之后再来反馈!

3 个赞