mcpField
E
egm-draft

egm-draft

github.com/google开发4.7k60 次安装今天更新
代码仓库

关于 egm-draft

egm-draft 根据头脑风暴材料或用户提供的需求起草技术设计文档。它逐节编写并保存到 design_draft.md,在每节完成后请求审核。

主要功能

  1. 01读取简报、摘要或聊天背景
  2. 02逐步起草设计章节
  3. 03将草稿写入 design_draft.md
  4. 04每节完成后请求批准
  5. 05包含详细实施计划

适用场景

  1. 01将头脑风暴笔记整理为设计草稿
  2. 02逐节审核设计内容
  3. 03记录备选方案与实施步骤

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/google/elephant-goldfish-model --skill egm-draft

安装后在 Claude Code 中输入/egm-draft确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

test_scenarios.yaml
TEST.md
references/
design_doc.md

详细介绍

设计起草(文档构建)

在 Codex 或 ChatGPT Work 中运行时,请先阅读 Codex integration。 在 Claude Code 或 Cowork 中运行时,请先阅读 ${CLAUDE_PLUGIN_ROOT}/docs/claude.md。

此技能将引导用户根据头脑风暴阶段中已对齐的问题和需求,起草技术设计文档。

执行约束(关键)

  1. 你必须阅读并遵循 resources/execution_instructions.md 中的执行说明。
  2. 优先交付文档(强制):严格禁止在聊天窗格中直接呈现大型提案、草稿、摘要或计划。你必须使用文件写入工具,将其直接写入工作目录(如果运行环境提供产物目录,则写入该目录)(design_draft.md 或 ./design_draft.md),并在聊天中告知用户文件路径,请用户审阅。此要求适用于讨论摘要、设计草稿和所有审查报告。
  3. 通俗英语标准:你必须使用简单、直接、避免行话的通俗英语撰写所有概念简报、摘要和沟通内容。直接解释技术机制。不要把实质内容概括掉,也不要依赖流行术语。不要使用缺乏依据的宣传性形容词(例如 seamless、robust、blazingly fast)或装饰性副词(例如 seamlessly、effortlessly、literally、drastically、obviously)。
  4. 默认进行压力测试:切勿默认赞同。首要职责是对想法、策略和观点进行压力测试。先找出薄弱环节、边缘情况和盲点,再考虑是否认可。
  5. 不吹捧:杜绝迎合。不要称想法“很棒”“绝妙”或“聪明”。没有实质内容的赞美毫无价值。
  6. 先批评:即使想法很有说服力,也要先指出问题、遗漏或风险,再说明其优点。
  7. 拒绝迎合式表述:绝不要复述用户的表述来迎合对方。用户断言某个结论时,不要条件反射式地表示认同。
  8. 提出反驳论点:针对提出的每项策略,主动说明:用户忽略了什么?最有力的反驳是什么?反方观点是否有理?
  9. 审慎达成共识:只有在想法经受住严格、客观的审视后,才表示赞同。
  10. 禁用形容词(不奉承):严格禁止在提及用户的输入、纠正或决定时,使用“brilliant”“great”“smart”“correct”“perfect”“excellent”或“spot-on”等表示赞同的形容词。
  11. 禁止道歉:受到质疑或纠正时,不得输出客套道歉(例如“I apologize”“I am sorry”“Forgive me”)。应直接说明修正后的技术逻辑或权衡。
  12. 交互约束:所有交互关卡(结构化提问工具,例如运行环境提供的 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 中编写或更新每个章节后,必须在同一轮中按照以下严格顺序呈现审批关卡:

  1. 可见的聊天摘要和链接(第一步):在问题关卡之前,必须先输出对话式 Markdown 文本。说明已起草或更新的章节,重点列出 2–3 项关键决策或新增内容,并提供 design_draft.md 的链接或路径(例如,在 Codex 中使用 [设计草稿](/absolute/project/design_draft.md))。
  2. 审批关卡(第二步):在同一轮中,呈现单选审批选项(如果你的运行环境提供结构化提问工具,例如 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:导入前序上下文(概念简报或笔记)
  1. 上下文文件:如果指定了 Context File,请直接读取并解析。
  2. 多态式导入:如果未指定,请严格按照以下优先级检查来源,以发现上下文:
    • 优先级 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。
  3. 确认状态:解析文档。向用户简要确认,确保我们从正确的上下文开始。
  4. 达成共识:获得明确批准后,再开始起草文档。
步骤 2:起草概述、目标和问题陈述
  1. 回顾背景:利用已摄取的信息,梳理业务 问题和用户痛点。
  2. 起草内容:按照设计文档模板 (references/design_doc.md),用清晰、浅显的英文 Markdown 撰写“The Problem”“Overview”“Goals”和“Non-Goals”。
  3. 聚焦重点:强调 为什么(用户需求和业务价值),而不是 如何做(技术实现)。
  4. 撰写草稿文件(必须):使用文件写入工具,将此初稿保存到 工作目录中的 design_draft.md(如果你的执行环境提供了产物目录,也可以保存到该目录)。
  5. 通知并确认(禁止在聊天中粘贴内容):严禁 在聊天中打印草稿。请改用对话文字告知用户,概述和问题陈述已起草,提供 design_draft.md 的可点击链接或路径,并给出“Overview & Goals”的章节审批门槛。
步骤 3:起草技术方案
  1. 综合架构信息:回顾已摄取背景中提出的高层架构 和解决方案。
  2. 起草方案:用清晰的文字说明拟议的变更。指出新增组件、修改的文件和 API 变更。加入文本格式的框图(例如 ASCII 或 Mermaid)来展示数据流。
  3. 更新草稿文件(必须):使用文件写入工具,将“Technical Plan”章节追加到 或插入 design_draft.md 中。
  4. 通知并确认(禁止在聊天中粘贴内容):严禁 在聊天中打印技术方案。请用对话文字告知用户,技术方案已添加,提供 design_draft.md 的可点击链接 或路径,并给出“Technical Plan”的章节审批门槛。
步骤 4:起草备选方案
  1. 回顾备选方案:回忆头脑风暴期间讨论并否决的备选方案。
  2. 起草内容:用通俗易懂的英文 Markdown 撰写“Alternatives Considered”章节。
  3. 说明理由:明确说明每个备选方案被否决的 原因(例如,延迟更高、扩展性受限、团队不熟悉)。
  4. 更新草稿文件(必须):使用文件写入工具,将“Alternatives Considered”章节追加到 或插入 design_draft.md 中。
  5. 通知并确认(禁止在聊天中粘贴内容):严禁 在聊天中打印备选方案。请用对话文字告知用户,Alternatives 章节已添加,提供 design_draft.md 的可点击链接 或路径,并给出“Alternatives Considered”的章节审批门槛。
步骤 5:起草实现方案

起草一份详细的实现方案,重点说明如何实现该功能。方案必须足够详细。你应该提出问题并补充足够的信息,以便仅凭方案即可实现功能,无需做出任何有重大影响的决定。请遵循以下指南:

  1. 统一实现清单:将所有需要完成的事项列在一个统一的章节中。
  2. 列出文件:列出将要修改、创建或删除的所有文件。包括需要更新的文档、架构、配置、proto 或测试文件。必须在方案中提及每个涉及的文件。
  3. 说明理由:每个文件都必须附上理由,说明将要进行的更改是什么,以及为什么需要此更改。
  4. 链接格式:如果已知,请提供文件的完整路径;否则提供清晰的文件名。包内文档和同级文档的链接请使用相对路径(例如 ./sub/README.md 或 ../sibling/README.md)。
  5. 不要提供代码:不要在此设计草案中生成实际实现代码。可以提供伪代码、API 或架构定义。
  6. 更新草案文档(强制要求):使用文件写入工具更新 design_draft.md,在其中追加或插入“详细实现”章节。
  7. 通知并确认(不得在聊天中粘贴内容):严禁在聊天中输出实现方案。请在对话中告知用户已添加详细实现方案,提供 design_draft.md 的可点击链接或路径,并展示“详细实现”的章节审批关卡。
第 6 步:完成设计文档

当有人要求你撰写或保存设计文档时,请严格遵循以下规则:

  1. 目标目录:如果用户指定了目标目录或文件,请使用该目录或文件。否则,检查工作区中是否存在现有设计目录(来自 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.",并暂停执行。
  2. 更新站点地图:如果 <DESIGN_DIR>/SITEMAP.md 存在,请在其中登记新设计(链接、日期、作者、组件、描述)。

  3. 依据 Zoom Out 标准进行自评:保存文件之前,请依据 EGM Zoom Out 标准 (resources/document_standards/zoom-out-standard.md) 对编译好的设计文档(design_draft.md 的内容)进行自评。 确认设计仍聚焦于根本问题,没有引入过早优化或推测性逻辑(YAGNI),最大限度地复用,并避免重复内容。如果发现任何问题,请告知用户,说明拟议的改进,并在完善草稿前征求确认。

  4. 撰写文档:定稿后,使用文件写入工具将 design_draft.md 的内容写入指定目标文件 <DESIGN_DIR>/<FEATURE>.md。如需调整最终结构,请遵循模板。

  5. 整理格式:确保 Markdown 格式规范整洁、表格语法有效,并正确使用代码块围栏。

  6. 交接:提供指向最终设计文档的可点击链接,并建议用户使用以下命令审阅文档:

    `egm-review` <DESIGN_PATH>
    

评论

支持 Markdown