关于 spark
这项头脑风暴技能通过协作提问和审阅,将想法整理为获批的设计规范。它要求先取得设计批准,再撰写规范,并在交付后停止,不进入实现阶段。
主要功能
- 01了解项目现状
- 02逐个提出澄清问题
- 03比较 2–3 种方案及取舍
- 04分段呈现并确认设计
- 05编写并自检设计规范
- 06在实现前停止
适用场景
- 01明确新项目的需求
- 02将大型项目拆分为多个规范
- 03比较架构方案
- 04在实现前审阅设计
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ wishworldbetter/ seedex-skills --skill spark安装后在 Claude Code 中输入/spark确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
README.mdspec-document-reviewer-prompt.mdvisual-companion.mdscripts/frame-template.htmlhelper.jsserver.cjsstart-server.shstop-server.sh详细介绍
将创意构思成设计方案
通过自然的协作式对话,帮助将创意转化为完整的设计方案和规格说明。
先了解当前项目背景,然后每次提出一个问题,逐步完善创意。了解要构建的内容后,展示设计方案并征得用户批准。
在展示设计方案并获得用户批准之前,切勿调用任何实现技能、编写代码、搭建任何项目框架或采取任何实现行动。无论项目看起来多简单,这条规则都适用。反面模式:“这件事太简单,不需要设计”
每个项目都要经历这一流程。待办事项清单、单功能实用工具、配置变更——全都如此。“简单”的项目最容易因未经审视的假设而造成大量无谓工作。设计方案可以很简短(对于真正简单的项目,几句话即可),但必须展示设计方案并获得批准。
检查清单
必须为以下每项创建任务,并按顺序完成:
- 了解项目背景 — 检查文件、文档和近期提交记录
- 提供视觉辅助工具(如果主题涉及视觉问题)— 单独发送此消息,不要与澄清问题合并。请参阅下文的“视觉辅助工具”部分。
- 提出澄清问题 — 每次一个,了解目的、约束条件和成功标准
- 提出 2-3 种方案 — 说明权衡取舍并给出推荐方案
- 展示设计方案 — 根据复杂度分节呈现,并在每节之后征得用户批准
- 编写设计文档 — 保存至
docs/spark/YYYY-MM-DD-<topic>-design.md并提交 - 自我审查规格说明 — 快速检查占位符、矛盾、歧义和范围(见下文)
- 用户审阅书面规格说明 — 继续之前,请用户审阅规格说明文件
- 向用户交付规格说明并停止 — 报告规格说明文件路径;不要调用其他技能,也不要开始实现
流程
digraph brainstorming {
"Explore project context" [shape=box];
"Visual questions ahead?" [shape=diamond];
"Offer Visual Companion\n(own message, no other content)" [shape=box];
"Ask clarifying questions" [shape=box];
"Propose 2-3 approaches" [shape=box];
"Present design sections" [shape=box];
"User approves design?" [shape=diamond];
"Write design doc" [shape=box];
"Spec self-review\n(fix inline)" [shape=box];
"User reviews spec?" [shape=diamond];
"Deliver spec path to user and STOP" [shape=doublecircle];
"Explore project context" -> "Visual questions ahead?";
"Visual questions ahead?" -> "Offer Visual Companion\n(own message, no other content)" [label="yes"];
"Visual questions ahead?" -> "Ask clarifying questions" [label="no"];
"Offer Visual Companion\n(own message, no other content)" -> "Ask clarifying questions";
"Ask clarifying questions" -> "Propose 2-3 approaches";
"Propose 2-3 approaches" -> "Present design sections";
"Present design sections" -> "User approves design?";
"User approves design?" -> "Present design sections" [label="no, revise"];
"User approves design?" -> "Write design doc" [label="yes"];
"Write design doc" -> "Spec self-review\n(fix inline)";
"Spec self-review\n(fix inline)" -> "User reviews spec?";
"User reviews spec?" -> "Write design doc" [label="changes requested"];
"User reviews spec?" -> "Deliver spec path to user and STOP" [label="approved"];
}
**最终状态是向用户交付规格说明。停止。**不要调用其他技能,不要开始制定实现计划,也不要编写代码。报告规格说明文件路径,然后结束本轮对话——用户将决定如何处理规格说明。
流程
理解想法:
- 先查看当前项目状态(文件、文档、近期提交)。
- 在询问详细问题之前,先评估范围:如果请求描述了多个相互独立的子系统(例如“构建一个包含聊天、文件存储、计费和分析功能的平台”),请立即指出。对于需要先拆分的项目,不要花时间通过提问细化其详情。
- 如果项目对于单份规格说明来说过于庞大,请帮助用户将其拆分为多个子项目:哪些部分相互独立,它们之间有什么关系,应该按什么顺序构建?然后通过常规设计流程讨论第一个子项目。每个子项目都有自己的规格说明 → 计划 → 实施周期。
- 对于范围合适的项目,每次只问一个问题来细化想法。
- 尽可能优先使用选择题,但开放式问题也可以。
- 每条消息只问一个问题;如果某个主题需要进一步探讨,就将其拆分成多个问题。
- 专注于理解:目的、约束和成功标准。
探索方案:
- 提出 2-3 种不同的方案,并说明各自的权衡。
- 以对话的方式介绍选项,给出你的建议和理由。
- 先介绍你推荐的选项,并解释原因。
呈现设计:
- 确认自己已经理解要构建的内容后,再呈现设计。
- 根据各部分的复杂程度调整篇幅:简单的部分用几句话说明,复杂的部分最多写 200-300 字。
- 每介绍完一部分,都询问目前看来是否合适。
- 涵盖:架构、组件、数据流、错误处理和测试。
- 如果有内容说不通,要准备好返回并澄清。
为隔离性和清晰性而设计:
- 将系统拆分为更小的单元,每个单元都有明确的用途,通过定义清晰的接口进行通信,并且能够独立理解和测试。
- 对每个单元,你都应该能够回答:它做什么、如何使用,以及依赖什么?
- 不看内部实现,别人能理解一个单元的作用吗?你能在不破坏使用方的情况下更改内部实现吗?如果不能,就需要改进边界。
- 更小且边界清晰的单元也更便于你开展工作——你可以一次在上下文中掌握的代码,更有利于你推理;文件职责明确时,你的修改也更可靠。文件变得庞大时,通常意味着它承担了过多职责。
在现有代码库中工作:
- 提出更改方案前,先了解当前结构。遵循现有模式。
- 如果现有代码中的问题会影响当前工作(例如,文件过于庞大、边界不清晰、职责纠缠),请将有针对性的改进纳入设计,就像优秀的开发者会改进自己正在处理的代码一样。
- 不要提议无关的重构。专注于服务当前目标的内容。
设计之后
文档:
- 将经过验证的设计(规格说明)写入
docs/spark/YYYY-MM-DD-<topic>-design.md- (用户对规格说明存放位置的偏好优先于此默认位置)
- 将设计文档提交到 git
规格说明自我审查: 写完规格说明文档后,以全新的视角审阅:
- 占位符扫描: 是否有任何“TBD”“TODO”、未完成的章节或含糊的要求?修复它们。
- 内部一致性: 是否有章节相互矛盾?架构是否符合功能描述?
- 范围检查: 范围是否足够聚焦,适合制定单个实施计划?还是需要拆分?
- 歧义检查: 是否有任何要求可能被解读为两种不同的意思?如果有,选择一种并明确说明。
直接修复发现的问题。无需重新审查,修复后继续。
用户审查关卡: 规格说明审查循环通过后,请用户在继续之前审阅已编写的规格说明:
“规格说明已编写并提交到
<path>。请审阅,并告诉我在开始编写实施计划之前是否需要修改。”
等待用户回复。如果用户要求修改,就进行修改并重新运行规格说明审查循环。只有在用户批准后才能继续。
完成 — 在此停止:
- 向用户报告规格说明文件路径,然后结束当前轮次。
- 不要调用任何其他技能。
- 不要开始制定实施计划或编写任何代码。
- 由用户自行决定如何处理规格说明。
核心原则
- 一次只问一个问题——不要一次提出多个问题让用户不知所措
- 优先采用多选题——在可行时,这比开放式问题更容易回答
- 严格遵循 YAGNI——从所有设计中移除不必要的功能
- 探索备选方案——确定方案前,始终提出 2–3 种方法
- 逐步验证——展示设计,并在继续前获得批准
- 保持灵活——遇到不合理之处时,返回并澄清
视觉辅助工具
一种基于浏览器的辅助工具,可在头脑风暴期间展示模型图、图表和视觉选项。它是一种可用工具,而非一种模式。接受使用该辅助工具,意味着它可以用于适合视觉呈现的问题;并不意味着每个问题都要通过浏览器处理。
提供视觉辅助工具: 当你预计接下来的问题会涉及视觉内容(模型图、布局、图表)时,请先征求一次同意:
“我们接下来要讨论的某些内容,或许通过网页浏览器展示会更容易理解。我可以逐步制作模型图、图表、对比图和其他可视化内容。这项功能还比较新,可能会消耗较多令牌。想试试吗?(需要打开一个本地 URL)”
此邀请必须单独作为一条消息发送。 不要将其与澄清问题、背景摘要或任何其他内容合并。该消息只能包含上述邀请,不得包含其他内容。等待用户回复后再继续。如果用户拒绝,则继续进行纯文本头脑风暴。
逐个问题决定: 即使用户接受了,也要针对每个问题决定使用浏览器还是终端。判断标准是:让用户看内容是否比读内容更容易理解?
- 使用浏览器处理本身具有视觉属性的内容——模型图、线框图、布局对比、架构图、并排展示的视觉设计
- 使用终端处理文本内容——需求问题、概念选择、权衡列表、A/B/C/D 文本选项、范围决策
问题涉及 UI,并不意味着它自动就是视觉问题。“这里的个性是什么意思?”是概念问题——使用终端。“哪种向导布局更合适?”是视觉问题——使用浏览器。
如果用户同意使用视觉辅助工具,请在继续之前阅读详细指南:
skills/brainstorming/visual-companion.md