news 2026/10/23 0:07:56

GSD spike-wrap-up 实战指南:将一次性研究 spike 沉淀为可自动加载的项目本地 Skill

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
GSD spike-wrap-up 实战指南:将一次性研究 spike 沉淀为可自动加载的项目本地 Skill
  • 人工智能
  • AI Agent
  • 代码智能体
  • Agent 编排
  • CLI
  • AI 应用

【免费下载链接】gsd-2

A powerful meta-prompting, context engineering and spec-driven development system that enables agents to work for long periods of time autonomously without losing track of the big picture

项目地址:https://gitcode.com/gh_mirrors/gs/gsd-2
点击查看免费下载

导读

GSD(GitHub 加速计划 / gsd-2)内置的spike-wrap-up技能解决了一个真实痛点:一次性的技术调研(spike)产出了高质量结论,却往往在完成后被遗忘。本指南完整拆解该技能的工作流——读取.gsd/workflows/spikes/下的研究产物,与用户确认可复用价值,然后写入.claude/skills/<name>/SKILL.md,让下次同类任务触发时 Agent 自动加载。读完本文,你将掌握 GSD 技能发现机制的底层原理、六步打包流程、技能文件的最小规范结构,以及一套可复用的"研究→资本"沉淀方法。


一、背景:spike 产出什么,又为什么需要打包

GSD 的 spike 工作流定义在 src/resources/extensions/gsd/workflow-templates/spike.md,其核心定位是:

Investigate a question, evaluate options, prototype if needed, and produce a clear recommendation. No production code is shipped — the output is knowledge.

它面向技术评估、架构决策、"我们应该用 X 吗?"这类问题,分为三个阶段:

阶段目标产出物
Phase 1: scope明确问题与成功标准在 artifact 目录写入SCOPE.md
Phase 2: research从多个角度深入调研research/ANGLE-1.md、research/ANGLE-2.md等
Phase 3: synthesize汇总证据给出推荐RECOMMENDATION.md(含执行摘要、对比矩阵、推荐理由、后续步骤)

这些文档统一落在.gsd/workflows/spikes/<slug>/目录下。正如spike-wrap-up技能文档所指出的:"Those documents are useful once and then forgotten unless something packages them for reuse."——文档被用一次就遗忘,除非有人把它们打包复用。

在 spike 工作流的 Phase 3 末尾,模板明确给出两条分流路径(workflow-templates/spike.md):

  • 若调研结论对未来工作有可复用指导价值,运行spike-wrap-up技能,打包为.claude/skills/<name>/SKILL.md,后续通过skill-discovery.ts自动加载;
  • 若只是一次性决策(没有可复用指导),则建议在.gsd/DECISIONS.md追加一行记录即可。

这就是spike-wrap-up的使命:它是一座桥,把"spike 已完成"变成"技能已可用",也是 GSD v1 中/gsd-spike-wrap-up命令在该版本中的对应物。


二、核心原则:打包前必须理解的三个约束

spike-wrap-up的<core_principle>定义了三条不可妥协的准则,是整套流程的"宪法":

  1. 不是每个 spike 都值得做成技能(NOT EVERY SPIKE DESERVES A SKILL)如果调研结论是"不要做 X",那可能没有任何可复用的指导价值。必须先问用户,答案是否定就直接退出、不写任何文件。

  2. 项目本地,而非用户全局(PROJECT-LOCAL, NOT USER-GLOBAL)写入仓库内的.claude/skills/,而不是~/.claude/skills/。技能编码的是项目特定的选择,不应泄漏到无关项目中。

  3. description 是可发现性信号(DESCRIPTION IS THE DISCOVERABILITY SIGNAL)frontmatter 中的description字段是 Agent 判断相关性与是否加载技能的首要信号——它是启发式匹配,不是确定性触发。要用未来 Agent 很可能遇到的关键词来写,而不是写一段摘要。

第三条原则直接决定了技能的"曝光率",后文会在源码层面印证它的重要程度。


三、Step 1:找到要打包的 spike

流程的第一步是定位研究产物:

  1. 列出.gsd/workflows/spikes/下的所有目录,按修改时间(mtime)排序,最新在前;
  2. 若存在多个 spike,询问用户要打包哪一个;默认取最近的一个;
  3. 若一个都不存在,告知用户并停止——该技能必须基于一个已完成的 spike。

找到目录后,读取三份核心文件:

  • <spike>/SCOPE.md—— 当初提出的问题
  • <spike>/research/*.md—— 被调查的各角度
  • <spike>/RECOMMENDATION.md—— 最终结论

这三份文件共同构成了技能的内容素材来源。


四、Step 2:判断它是否值得变成技能

技能要求只做一轮用户访谈,问两个问题:

  1. 结论对未来工作可复用,还是只针对某一次决策?若发现包含可复用的指导("如何评估 X"、"一个值得遵循的模式"、"某库的坑"),打包是值得的;若 spike 止步于"我们选了库 Y,没有然后",它更适合放进.gsd/DECISIONS.md而非做成技能。

  2. 触发时机是什么?未来 Agent 应在什么情况下加载这个技能?给出具体关键词,例如"新增一个 webhook handler""写一条 SQL migration"。

如果用户认为不值得打包,则改为建议把摘要追加到.gsd/DECISIONS.md并停止。

.gsd/DECISIONS.md在 GSD 中有明确的格式约束,其模板见 src/resources/extensions/gsd/templates/decisions.md:

Append-only. Never edit or remove existing rows. To reverse a decision, add a new row that supersedes it. Read this file at the start of any planning or research phase.

该文件是一个只追加、不可编辑已有行的决策登记表(含序号、时间、范围、决策、选择、理由、可否修订、决策人各列),因此技能流程中"追加一行"的操作是安全且符合规范的。


五、Step 3:设计技能——先草稿后反馈

在动笔写文件之前,先在对话中完成技能设计草图,包含六个要素:

  • 名称(Name):kebab-case,简短无歧义。必要时以项目领域作前缀,例如auth-webhook-setup优于webhook;
  • description(frontmatter):一句话,120–1024 字符,富含关键词,必须说清"Agent 何时应加载它";定稿前至少重写两遍;
  • Objective:一段话,说明技能做什么、产出什么工件;
  • Process:编号步骤。可以引用 spike 的发现作为来源,但技能本身必须不依赖重读 spike 就能执行;
  • Anti-patterns:spike 暴露出的坑——那些看似正确却行不通的做法;
  • Success criteria:技能使用者可以对照核验的清单。

把草图展示给用户,进行一轮反馈,迭代后再进入写作。这保证了打包的不是 Agent 的自嗨,而是用户真正认可的可复用知识。


六、Step 4:编写技能文件——最小规范结构

将技能写入.claude/skills/<name>/SKILL.md(目录不存在则创建),并匹配 GSD 内建技能采用的frontmatter + XML 标签结构。技能的规范范本(canonical shape)参见 src/resources/skills/review/SKILL.md。

技能文档给出的最小结构如下(可直接复制使用):

--- name: <skill-name> description: <one sentence with trigger keywords> --- <objective> <one paragraph — what this skill does> </objective> <context> <when to invoke, what produced it (cite the spike), assumptions> </context> <process> ## Step 1: <action> <instructions> ## Step 2: <action> <instructions> </process> <anti_patterns> - <gotcha from the spike> - <another gotcha> </anti_patterns> <success_criteria> - [ ] <observable confirmation> - [ ] <observable confirmation> </success_criteria>

若 spike 产出了可复用的模板(如配置文件、启动脚本),将它们复制进.claude/skills/<name>/templates/或.claude/skills/<name>/references/,并在技能正文中引用。

关于结构约定,仓库中另一个技能 src/resources/skills/create-skill/SKILL.md 给出了进一步的印证:frontmatter 必填name(小写连字符,与目录同名)和description("做什么 + 何时用"、第三人称),复杂技能可采用 router 模式(SKILL.md+workflows/+references/+templates/+scripts/五个目录分工),并建议SKILL.md 控制在 500 行以内、正文使用纯 XML 语义标签而不用 markdown 标题。


七、Step 5:归档 spike,并从技能中建立溯源链接

打包完成后需要做三件事:

  1. 在新 SKILL.md 中引用来源 spike:"Derived from.gsd/workflows/spikes/<slug>/RECOMMENDATION.md(dated YYYY-MM-DD).";
  2. 不要删除 spike 目录——spike 是研究工件,对事后取证(forensics)仍有价值;
  3. 在.gsd/DECISIONS.md追加一行:- YYYY-MM-DD [spike]: packaged "<slug>" findings as skill <name>。

这一步骤把"技能、研究产物、决策记录"三者串成一条可追溯的链,既保证技能可独立执行,又保留了完整的研究证据。


八、Step 6:确认技能被拾取——源码层的自动发现机制

打包的最后一步是确认技能会在下次会话被自动发现。这背后是 GSD 的技能发现机制,实现在 src/resources/extensions/gsd/skill-discovery.ts。关键实现事实如下:

1. 技能目录:同时监视两个位置(用户级)——

const SKILLS_DIR = join(homedir(), ".agents", "skills"); const CLAUDE_SKILLS_DIR = join(homedir(), ".claude", "skills");

即~/.agents/skills/(skills.sh 生态目录)与~/.claude/skills/(Claude Code 官方目录),两者都按"目录名 / SKILL.md"的结构解析。

2. 快照对比发现新技能:auto-mode 启动时调用snapshotSkills()记录基线,之后detectNewSkills()对比当前目录与基线,找出新增技能目录,并通过parseSkillFrontmatter()读取 frontmatter 中的name与description。

3. description 是匹配依据:parseSkillFrontmatter用正则提取name:和description:两行,新技能最终以<newly_discovered_skills>XML 块的形式注入系统提示词,并明确指示:当任务匹配其 description 时,用 read 工具加载该技能文件。这正是前面核心原则第三条"description 是可发现性信号"的源码级落地——description 写得越贴合未来任务关键词,被命中的概率越高。

4. 触发注册:spike-wrap-up本身也被注册为系统上下文中的技能触发器,见 src/resources/extensions/gsd/bootstrap/system-context.ts:

{ trigger: "Package spike findings into a reusable project-local skill at .claude/skills/", skill: "spike-wrap-up" }

并且它位列 GSD 捆绑技能清单(src/resources/extensions/gsd/tests/bundled-skill-triggers.test.ts),受到测试守护。

完成打包后,告知用户:技能将在下一次会话通过skill-discovery.ts被自动呈现;如果想立即使用,可以直接Read .claude/skills/<name>/SKILL.md。


九、反模式清单:打包过程中最容易犯的五个错误

<anti_patterns>给出了五个经过实战总结的坑:

  1. 写入~/.claude/skills/—— 那是用户全局目录。项目 spike 产出项目技能,必须保持作用域隔离;
  2. 冗长的 frontmatter description—— description 是索引条目,不是教程。关键词优先于散文;
  3. 每个 spike 都打包—— 若结论只是"一次性定了 X",追加到 DECISIONS.md 就够了;
  4. 把 spike 原样复制进技能—— spike 是研究,技能是可执行指导,必须重新撰写(re-author);
  5. 删除源 spike 目录—— 研究工件应当持久保留。

这五条与核心原则一一呼应,尤其第 4 条提醒了"研究文档"与"可执行技能"在文体上的本质差异。


十、成功标准:如何判断一次打包真正完成

技能定义了一份可核验的检查清单(<success_criteria>):

  • 新.claude/skills/<name>/SKILL.md存在,且 frontmatter 格式良好;
  • description字段使用能匹配未来 Agent 工作的关键词;
  • 技能正文可独立执行,无需重读来源 spike;
  • 技能中引用了来源 spike;
  • .gsd/DECISIONS.md中有一行记录本次打包;
  • spike 目录本身保持原样未动。

这六条同时覆盖了"产物正确性、可发现性、独立性、可追溯性、记录完整性和证据保留"六个维度,可作为任何一次 spike 打包的验收基准。


结语:从"一次性研究"到"持久资本"

spike-wrap-up揭示的是一套完整的知识沉淀方法论:spike 工作流负责产出知识(workflow-templates/spike.md),本技能负责包装知识(六步流程 + 最小结构模板),skill-discovery.ts负责分发知识(快照对比 + frontmatter 解析 + 系统提示注入),而.gsd/DECISIONS.md负责记录知识。四者环环相扣,让一次调研的结论真正变成下次同类任务的自动加载能力——这就是 GSD 中"throwaway spikes become durable capital"(一次性 spike 变成持久资本)的完整落地路径。

  • 人工智能
  • AI Agent
  • 代码智能体
  • Agent 编排
  • CLI
  • AI 应用

【免费下载链接】gsd-2

A powerful meta-prompting, context engineering and spec-driven development system that enables agents to work for long periods of time autonomously without losing track of the big picture

项目地址:https://gitcode.com/gh_mirrors/gs/gsd-2
点击查看免费下载

相关推荐

上一篇:如何快速解决Visual C++运行库缺失问题:终极完整修复指南
下一篇:CAI Agent 流式事件(Streaming Events)完全指南:从 Token 增量到 RunItem 语义事件的实战解析

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/23 0:07:49

开源+Web3.0:从COSCon‘25看去中心化生态创新路径

COSCon‘25 的 Web3.0 开源论坛议程刚放出来&#xff0c;我所在的几个开源社群里就有人转发了。在开源圈子里&#xff0c;COSCon 这几年的议题一直偏工程、偏社区落地&#xff0c;这次专门把 Web3.0 单独拎出来建了一个论坛&#xff0c;并且主题定成“去中心化生态创新路径”&a…

作者头像 李华
网站建设 2026/10/23 0:07:49

排班考勤数智化转型:从需求预测到算法优化的实践指南

1. 用工波动常态化&#xff0c;为什么排班考勤成了第一块硬骨头这几年走访过不少制造工厂、连锁零售企业和物流仓储基地&#xff0c;几乎每家都在抱怨同一个问题&#xff1a;人力需求的波峰波谷越来越陡&#xff0c;淡旺季界限模糊&#xff0c;促销节点、天气变化、平台流量波动…

作者头像 李华
网站建设 2026/10/23 0:07:11

并行归约+区间贪心+树状数组:大规模区间统计的三层优化实践

我最近在处理一个大规模区间统计任务时&#xff0c;把并行归约、区间贪心和树状数组这三种东西放到了一起用&#xff0c;效果出乎意料地好。说实在的&#xff0c;以前我一直觉得这类题目靠单线程加个懒标记线段树就够用了&#xff0c;直到数据量涨到百万级别、查询请求密集成串…

作者头像 李华
网站建设 2026/10/19 12:06:16

Agent-Reach:智能体从能聊到能干的四层链路与工具调用实践

做 AI Agent 项目的人应该都有同感&#xff1a;模型智商早就不是瓶颈了&#xff0c;真正卡住我们的是 Agent-Reach——智能体到底能不能“够得着”真实的业务系统、数据库和外部工具。上个季度我接手了一个内部助手项目&#xff0c;模型选得再强&#xff0c;一到调考勤接口、写…

作者头像 李华
网站建设 2026/10/19 3:10:40

RocketMQ核心原理与生产实践:事务消息、顺序消息与消费堆积避坑

1. 为什么是 RocketMQ&#xff1a;消息中间件选型背后的取舍我第一次认真研究 RocketMQ&#xff0c;是因为一个订单系统的线上事故。那会儿团队用的还是自研的基于 Redis 的队列方案&#xff0c;业务一上来&#xff0c;延迟和丢消息的问题接踵而至。订单创建后要同步通知积分、…

作者头像 李华
网站建设 2026/10/19 6:54:15

自然语言生成CAD图纸:text-to-cad原理、工具与避坑实战

去年有一阵子我集中处理一批法兰图纸&#xff0c;算了下时间账&#xff1a;每张图从读需求到画完标注&#xff0c;平均要花37分钟。当时我就在想&#xff0c;能不能把"要和工程师确认半天"的需求描述&#xff0c;直接丢给某个东西&#xff0c;让它先出个能用的底图&a…

作者头像 李华