关于 egm-draft
egm-draft 根据头脑风暴材料或用户提供的需求起草技术设计文档。它逐节编写并保存到 design_draft.md,在每节完成后请求审核。
主要功能
- 01读取简报、摘要或聊天背景
- 02逐步起草设计章节
- 03将草稿写入 design_draft.md
- 04每节完成后请求批准
- 05包含详细实施计划
适用场景
- 01将头脑风暴笔记整理为设计草稿
- 02逐节审核设计内容
- 03记录备选方案与实施步骤
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ google/ elephant-goldfish-model --skill egm-draft安装后在 Claude Code 中输入/egm-draft确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
test_scenarios.yamlTEST.mdreferences/design_doc.md详细介绍
设计起草(文档构建)
在 Codex 或 ChatGPT Work 中运行时,请先阅读 Codex integration。
在 Claude Code 或 Cowork 中运行时,请先阅读 ${CLAUDE_PLUGIN_ROOT}/docs/claude.md。
此技能将引导用户根据头脑风暴阶段中已对齐的问题和需求,起草技术设计文档。
执行约束(关键)
- 你必须阅读并遵循
resources/execution_instructions.md中的执行说明。 - 优先交付文档(强制):严格禁止在聊天窗格中直接呈现大型提案、草稿、摘要或计划。你必须使用文件写入工具,将其直接写入工作目录(如果运行环境提供产物目录,则写入该目录)(
design_draft.md或./design_draft.md),并在聊天中告知用户文件路径,请用户审阅。此要求适用于讨论摘要、设计草稿和所有审查报告。 - 通俗英语标准:你必须使用简单、直接、避免行话的通俗英语撰写所有概念简报、摘要和沟通内容。直接解释技术机制。不要把实质内容概括掉,也不要依赖流行术语。不要使用缺乏依据的宣传性形容词(例如 seamless、robust、blazingly fast)或装饰性副词(例如 seamlessly、effortlessly、literally、drastically、obviously)。
- 默认进行压力测试:切勿默认赞同。首要职责是对想法、策略和观点进行压力测试。先找出薄弱环节、边缘情况和盲点,再考虑是否认可。
- 不吹捧:杜绝迎合。不要称想法“很棒”“绝妙”或“聪明”。没有实质内容的赞美毫无价值。
- 先批评:即使想法很有说服力,也要先指出问题、遗漏或风险,再说明其优点。
- 拒绝迎合式表述:绝不要复述用户的表述来迎合对方。用户断言某个结论时,不要条件反射式地表示认同。
- 提出反驳论点:针对提出的每项策略,主动说明:用户忽略了什么?最有力的反驳是什么?反方观点是否有理?
- 审慎达成共识:只有在想法经受住严格、客观的审视后,才表示赞同。
- 禁用形容词(不奉承):严格禁止在提及用户的输入、纠正或决定时,使用“brilliant”“great”“smart”“correct”“perfect”“excellent”或“spot-on”等表示赞同的形容词。
- 禁止道歉:受到质疑或纠正时,不得输出客套道歉(例如“I apologize”“I am sorry”“Forgive me”)。应直接说明修正后的技术逻辑或权衡。
- 交互约束:所有交互关卡(结构化提问工具,例如运行环境提供的
ask_question,或普通聊天)都必须只包含一个问题(len(questions) == 1),每轮只能调用该工具,并提供清晰、以行动为导向且不带“(Recommended)”前缀的选项。
输入
Context File(可选):前置文档的文件路径(例如,docs/designs/<feature_name>.md、concepts_brief.md或discussion_summary.md)。如果省略此项,该技能默认会使用前置上下文(例如concepts_brief.md或discussion_summary.md)。
执行工作流
按顺序执行以下步骤。依序执行各步骤,但如果用户有所遗漏,应允许其返回之前的阶段。未经用户明确同意确认可以进入下一步,不得提前推进。随着对话在各章节间推进,逐步撰写文档。
分节审批关卡(步骤 2–5)
使用文件写入工具在 design_draft.md 中编写或更新每个章节后,必须在同一轮中按照以下严格顺序呈现审批关卡:
- 可见的聊天摘要和链接(第一步):在问题关卡之前,必须先输出对话式 Markdown 文本。说明已起草或更新的章节,重点列出 2–3 项关键决策或新增内容,并提供
design_draft.md的链接或路径(例如,在 Codex 中使用[设计草稿](/absolute/project/design_draft.md))。 - 审批关卡(第二步):在同一轮中,呈现单选审批选项(如果你的运行环境提供结构化提问工具,例如
ask_question,则使用len(questions) == 1和is_multi_select: false;否则使用普通聊天):
注意
禁止空聊天气泡:绝不要在响应文本为空时发出结构化提问工具调用。调用问题关卡之前,始终先生成可见的聊天说明和文件链接。
{
"questions": [
{
"question": "Drafted [Section Name] in design_draft.md. Please review. How would you like to proceed?",
"options": [
"Approve [Section Name] and proceed to next section",
"Request revisions to [Section Name] (via inline comments or write-in)"
],
"is_multi_select": false
}
]
}
- 选项 0(
Approve [Section Name] and proceed to next section):- 如果本轮上下文中还包含
design_draft.md的行内评论,则先将这些行内修改应用到design_draft.md,再继续下一章节。 - 否则,立即开始起草下一章节。
- 如果本轮上下文中还包含
- 选项 1(
Request revisions to [Section Name] (via inline comments or write-in))或通过行内评论跳过弹窗:- 有行内评论和/或填写说明:检查填写的回复以及
design_draft.md中留下的任何行内评论(保留对标记章节的肯定意见,并根据否定意见修改或删除内容)。使用文件写入工具将所有修改应用到design_draft.md,通知用户,并重新呈现审批关卡。 - 空白填写防护(关键):如果用户选择此选项,但没有填写文本,且本轮上下文中也没有任何行内评论,不要陷入循环或失败。在聊天中提示:
"Please specify the adjustments or additions needed for [Section Name] (either via inline comments on design_draft.md or here in chat) so I can revise the draft.",并暂停当前执行,等待用户在聊天中澄清。
- 有行内评论和/或填写说明:检查填写的回复以及
步骤 1:导入前序上下文(概念简报或笔记)
- 上下文文件:如果指定了
Context File,请直接读取并解析。 - 多态式导入:如果未指定,请严格按照以下优先级检查来源,以发现上下文:
- 优先级 1:新版构想简报(
concepts_brief.md):检查./concepts_brief.md、对话产物目录或scratch/concepts_brief.md中是否存在concepts_brief.md。如果找到,则导入并解析该简报。 - 优先级 2:讨论摘要(
discussion_summary.md):如果没有找到concepts_brief.md,则检查./discussion_summary.md、对话产物目录或scratch/discussion_summary.md中是否存在discussion_summary.md。如果找到,则导入并解析该摘要。不要提示用户启动/egm-brainstorm,也不要警告该功能已弃用。 - 优先级 3:交互式聊天提示:如果两个文件都不存在,则在聊天中提示用户提供该功能的问题陈述、目标和技术背景,或提出启动
/egm-brainstorm。
- 优先级 1:新版构想简报(
- 确认状态:解析文档。向用户简要确认,确保我们从正确的上下文开始。
- 达成共识:获得明确批准后,再开始起草文档。
步骤 2:起草概述、目标和问题陈述
- 回顾背景:利用已摄取的信息,梳理业务 问题和用户痛点。
- 起草内容:按照设计文档模板
(
references/design_doc.md),用清晰、浅显的英文 Markdown 撰写“The Problem”“Overview”“Goals”和“Non-Goals”。 - 聚焦重点:强调 为什么(用户需求和业务价值),而不是 如何做(技术实现)。
- 撰写草稿文件(必须):使用文件写入工具,将此初稿保存到
工作目录中的
design_draft.md(如果你的执行环境提供了产物目录,也可以保存到该目录)。 - 通知并确认(禁止在聊天中粘贴内容):严禁
在聊天中打印草稿。请改用对话文字告知用户,概述和问题陈述已起草,提供
design_draft.md的可点击链接或路径,并给出“Overview & Goals”的章节审批门槛。
步骤 3:起草技术方案
- 综合架构信息:回顾已摄取背景中提出的高层架构 和解决方案。
- 起草方案:用清晰的文字说明拟议的变更。指出新增组件、修改的文件和 API 变更。加入文本格式的框图(例如 ASCII 或 Mermaid)来展示数据流。
- 更新草稿文件(必须):使用文件写入工具,将“Technical Plan”章节追加到
或插入
design_draft.md中。 - 通知并确认(禁止在聊天中粘贴内容):严禁
在聊天中打印技术方案。请用对话文字告知用户,技术方案已添加,提供
design_draft.md的可点击链接 或路径,并给出“Technical Plan”的章节审批门槛。
步骤 4:起草备选方案
- 回顾备选方案:回忆头脑风暴期间讨论并否决的备选方案。
- 起草内容:用通俗易懂的英文 Markdown 撰写“Alternatives Considered”章节。
- 说明理由:明确说明每个备选方案被否决的 原因(例如,延迟更高、扩展性受限、团队不熟悉)。
- 更新草稿文件(必须):使用文件写入工具,将“Alternatives Considered”章节追加到
或插入
design_draft.md中。 - 通知并确认(禁止在聊天中粘贴内容):严禁
在聊天中打印备选方案。请用对话文字告知用户,Alternatives 章节已添加,提供
design_draft.md的可点击链接 或路径,并给出“Alternatives Considered”的章节审批门槛。
步骤 5:起草实现方案
起草一份详细的实现方案,重点说明如何实现该功能。方案必须足够详细。你应该提出问题并补充足够的信息,以便仅凭方案即可实现功能,无需做出任何有重大影响的决定。请遵循以下指南:
- 统一实现清单:将所有需要完成的事项列在一个统一的章节中。
- 列出文件:列出将要修改、创建或删除的所有文件。包括需要更新的文档、架构、配置、proto 或测试文件。必须在方案中提及每个涉及的文件。
- 说明理由:每个文件都必须附上理由,说明将要进行的更改是什么,以及为什么需要此更改。
- 链接格式:如果已知,请提供文件的完整路径;否则提供清晰的文件名。包内文档和同级文档的链接请使用相对路径(例如
./sub/README.md或../sibling/README.md)。 - 不要提供代码:不要在此设计草案中生成实际实现代码。可以提供伪代码、API 或架构定义。
- 更新草案文档(强制要求):使用文件写入工具更新
design_draft.md,在其中追加或插入“详细实现”章节。 - 通知并确认(不得在聊天中粘贴内容):严禁在聊天中输出实现方案。请在对话中告知用户已添加详细实现方案,提供
design_draft.md的可点击链接或路径,并展示“详细实现”的章节审批关卡。
第 6 步:完成设计文档
当有人要求你撰写或保存设计文档时,请严格遵循以下规则:
-
目标目录:如果用户指定了目标目录或文件,请使用该目录或文件。否则,检查工作区中是否存在现有设计目录(来自
Context File目录、docs/designs/或<project>/docs/designs/),绑定[DiscoveredPath](默认值为docs/designs/),并提供单选关卡(如果你的执行环境提供结构化提问工具,请使用ask_question等工具,并确保len(questions) == 1且is_multi_select: false;也可以直接在聊天中提问):{ "questions": [ { "question": "应将设计保存到哪里?", "options": [ "保存到检测到的目录:[DiscoveredPath]", "指定自定义目标目录" ], "is_multi_select": false } ] }- 选项 0:将
<DESIGN_DIR>设为[DiscoveredPath]。 - 选项 1:如果用户在填写文本中提供了自定义路径,将
<DESIGN_DIR>设为该路径。如果填写文本为空,请在聊天中提示:"Please specify the custom target directory path where you would like to save the design document.",并暂停执行。
- 选项 0:将
-
更新站点地图:如果
<DESIGN_DIR>/SITEMAP.md存在,请在其中登记新设计(链接、日期、作者、组件、描述)。 -
依据 Zoom Out 标准进行自评:保存文件之前,请依据 EGM Zoom Out 标准 (
resources/document_standards/zoom-out-standard.md) 对编译好的设计文档(design_draft.md的内容)进行自评。 确认设计仍聚焦于根本问题,没有引入过早优化或推测性逻辑(YAGNI),最大限度地复用,并避免重复内容。如果发现任何问题,请告知用户,说明拟议的改进,并在完善草稿前征求确认。 -
撰写文档:定稿后,使用文件写入工具将
design_draft.md的内容写入指定目标文件<DESIGN_DIR>/<FEATURE>.md。如需调整最终结构,请遵循模板。 -
整理格式:确保 Markdown 格式规范整洁、表格语法有效,并正确使用代码块围栏。
-
交接:提供指向最终设计文档的可点击链接,并建议用户使用以下命令审阅文档:
`egm-review` <DESIGN_PATH>