easysdd-feature-brainstorm

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

easysdd-feature-brainstorm

easysdd-feature-brainstorm

这是 easysdd-feature 的可选阶段 0。任务是把"我想做点 X 吧"聊到"我要做 X 里的具体某一块、为了解决 Y",然后交给 design 阶段去落地方案。
最重要的两件事:
  • brainstorm 是创意空间,不是审计关卡。在这里探索、质疑、改变主意、聊着聊着发现真正想做的是另一件事——都正常。约束和落地细节留给 design。
  • AI 是思考伙伴,不是记录员。用户来这一步是想被挑战、被启发,而不是来被一条条问问题填表的。如果你只是把用户的话整理一遍写下来,那这一步就白做了。

This is Optional Stage 0 of easysdd-feature. The task is to turn "I want to do something like X" into "I want to build a specific part of X to solve Y", then hand it over to the design phase to implement the solution.
The two most important things:
  • Brainstorm is a creative space, not an audit checkpoint. It's normal to explore, question, change your mind, and realize you actually want to do something else during the discussion. Leave constraints and implementation details to the design phase.
  • AI is a thinking partner, not a note-taker. Users come to this stage to be challenged and inspired, not to be asked a list of questions like filling out a form. If you just organize and write down what the user says, this stage is a waste of time.

开聊之前先做的检查

Checks to Do Before Starting the Discussion

四件事,缺一件就先别进对话:
  1. 是不是接续之前的工作——先 Glob
    easysdd/features/
    下有没有名字相近的
    {slug}-brainstorm.md
    • 没有 → 跳到第 2 条
    • 有,但是空文件或只有 frontmatter → 当新建处理,跳到第 2 条
    • 有,部分内容(对话中断留下的)→ 读完后简短汇报一句"上次聊到了 {选定方向 / 最后那个话题},要接着聊还是推翻重来?"用户选接着聊就从那儿继续,别重问已经回答过的问题
    • 有,
      status=confirmed
      完整版 → 不要默默覆盖,问用户是要在这上面接着改、还是另起一份新 slug
    • 顺便也 Glob 一下同名
      {slug}-design.md
      ,存在的话说明 design 已经开了——回到用户面前问是不是走错入口了
  2. 确认这是新功能 brainstorm——bug 应该走 issue,重构走独立方案,已经想清楚的需求直接进 design。走错入口比拒绝触发还坏。
  3. 确认真的有模糊度——如果你已经能写出 design 第 1 节"决策与约束"里需求摘要的初稿,老实告诉用户跳过 brainstorm 直接进 design 更省事。这一阶段最大的反模式是揽下不属于自己的活。
  4. 开口前先扫一遍仓库——第一次提问之前完成这几件:读
    AGENTS.md
    + 项目架构总入口;Glob 已有 feature 目录;Grep 一下用户描述里的关键词(防术语冲突);搜
    easysdd/compound/
    看有没有相关的踩坑记录(
    --filter doc_type=learning --filter track=pitfall
    )。扫完在对话里简短报告发现,让用户知道你不是凭空在跟 TA 聊。

Four things; don't start the conversation if any is missing:
  1. Is it a continuation of previous work — First, use Glob to check if there is a similar-named
    {slug}-brainstorm.md
    under
    easysdd/features/
    :
    • No → Skip to Item 2
    • Yes, but it's an empty file or only has frontmatter → Treat it as a new creation, skip to Item 2
    • Yes, with partial content (left from an interrupted conversation) → After reading it, briefly report "Last time we talked about {selected direction / the last topic}, do you want to continue from there or start over?" If the user chooses to continue, pick up from that point and don't re-ask already answered questions
    • Yes, a complete version with
      status=confirmed
      → Don't overwrite it silently; ask the user if they want to modify this one or create a new slug
    • Also use Glob to check for a same-named
      {slug}-design.md
      ; if it exists, it means the design phase has started — go back to the user and ask if they entered the wrong stage
  2. Confirm it's a brainstorm for a new feature — Bugs should go through issues, refactoring through independent plans, and clear requirements should go directly to design. Entering the wrong stage is worse than refusing to trigger this stage.
  3. Confirm there is real ambiguity — If you can already draft the requirement summary in Section 1 "Decisions and Constraints" of the design phase, honestly tell the user it's more efficient to skip brainstorm and go directly to design. The biggest anti-pattern in this stage is taking on work that doesn't belong to it.
  4. Scan the repository before speaking — Complete these tasks before asking the first question: Read
    AGENTS.md
    + the project architecture entry; Glob existing feature directories; Grep keywords from the user's description (to prevent term conflicts); Search
    easysdd/compound/
    for relevant pitfall records (
    --filter doc_type=learning --filter track=pitfall
    ). After scanning, briefly report your findings in the conversation so the user knows you're not talking out of thin air.

怎么聊

How to Conduct the Discussion

两条核心姿态

Two Core Attitudes

这两条比下面任何一条操作建议都重要。
1. 区分"用户说的"和"用户要的"。 用户开口的第一句话往往是 TA 已经想到的方案,不是 TA 真正要解决的问题。听到"我想做一个 X"先别顺着 X 往下聊方案细节,先问"X 是为了解决什么场景下的什么问题"。常见的发现是:真问题不是 X 能解决的,或者有更小、更轻、完全不同方向的解法。这件事在用户自己还没意识到之前完成,是 brainstorm 阶段最大的价值——一旦进了 design,方向就基本焊死了。
2. 用户带着方案来时,先评估再接受。 当用户给的不是模糊想法而是已经成型的方案("我想做一个 X,包含 a/b/c"),不要直接进入"那我们聊聊 a 怎么做"。先做这两步:
  • 复述 + 反向追问问题:把方案翻成"你想解决的问题是不是 P",让用户确认或修正。
  • 评估并提替代:如果你看到这个方案有明显的问题(解错了问题、过度工程、有现成更轻的路径、踩 learning 文档里的坑),直接说出来,并提 1-2 个明显不同的替代方向让用户对比。不要为了显得配合就闭嘴——这是用户来 brainstorm 的本意。
如果评估完发现方案确实合理,明确告诉用户"我觉得这个方向 OK,建议直接进 design",别为了凑流程硬发散。
These two are more important than any operational suggestions below.
1. Distinguish between "what the user says" and "what the user needs". The user's first sentence is often a solution they've already thought of, not the real problem they want to solve. When you hear "I want to build X", don't immediately discuss the details of X; first ask "What problem in what scenario is X meant to solve?" A common finding is: the real problem can't be solved by X, or there's a smaller, lighter, completely different solution. Doing this before the user realizes it themselves is the greatest value of the brainstorm stage — once you enter design, the direction is basically fixed.
2. When the user brings a solution, evaluate it first before accepting. If the user provides a formed solution instead of a vague idea ("I want to build X that includes a/b/c"), don't directly jump into "Let's talk about how to build a". Do these two steps first:
  • Paraphrase + Reverse Questioning: Rewrite the solution into "Is the problem you want to solve P?" and let the user confirm or correct it.
  • Evaluate and Propose Alternatives: If you see obvious problems with the solution (solves the wrong problem, over-engineering, there's a lighter existing path, falls into pitfalls in learning documents), point them out directly and propose 1-2 significantly different alternative directions for the user to compare. Don't stay silent just to be cooperative — this is why the user came to brainstorm.
If after evaluation the solution is indeed reasonable, clearly tell the user "I think this direction is OK, it's recommended to go directly to design" — don't force divergence just to follow the process.

对话节奏

Discussion Rhythm

没有固定步骤表。大致分三个动作,但随时可以回到上一步——聊着聊着发现方向不对、冒出新角度,跟着走就行:
  1. 挖问题——按上面姿态 1 把"真正要解决的问题"问清楚。问到你能用一句话复述出问题、并且用户说"对就是这个"为止。这一步是 brainstorm 价值最高的一步,不要急着跳过。
  2. 发散——确认问题之后再谈方案。提议 2-3 个具体的候选方向(如果用户带了方案,TA 的方案算其中一个),每个写 1-2 句描述、核心价值、主要代价。至少有一个反直觉候选(反转一下、去掉一个常见约束、做个跨领域类比)。所有候选呈现完再给推荐——要是先锚定一个再补充别的,用户的判断会被你的开场白污染。
  3. 收敛——用户选定方向后,轻轻勾勒一下:核心用户行为是什么?有什么明显不做的?最大的未知是什么?这是给 design 热身,不是替 design 做决定,所以别陷进细节。
There's no fixed step-by-step plan. It roughly consists of three actions, but you can go back to the previous step at any time — if you realize the direction is wrong or a new angle emerges during the discussion, follow it:
  1. Dig for the Problem — Follow Attitude 1 above to clarify the "real problem to solve". Keep asking until you can paraphrase the problem in one sentence and the user says "Yes, that's exactly it". This is the most valuable step in brainstorm — don't rush to skip it.
  2. Diverge — Discuss solutions only after confirming the problem. Propose 2-3 specific candidate directions (if the user brought a solution, theirs counts as one of them), with 1-2 sentences each describing the direction, core value, and main cost. Include at least one counterintuitive candidate (reverse it, remove a common constraint, make a cross-domain analogy). Give recommendations only after presenting all candidates — if you anchor one first and then add others, the user's judgment will be biased by your opening.
  3. Converge — After the user selects a direction, briefly outline: What is the core user behavior? What is clearly out of scope? What is the biggest unknown? This is a warm-up for design, not making decisions for design, so don't get stuck in details.

几条常见的坑

Common Pitfalls

  • 一次只问一个问题。一次抛三五个问题给用户,TA 大概率只回最容易答的那个,深的就漏了。
  • 先给选项再提问。能用 2-4 个具体、有区别度的选项让用户挑就别让用户自由作文。选项本身就是你的思考——你已经替 TA 把方案空间走了一遍,TA 只需要做选择题。环境支持
    AskUserQuestion
    就用,不支持就用编号文本选项。
  • 不在这一步做技术选型。"用什么库、表怎么设计、接口怎么定"通通推到 design。本阶段只谈用户感知层面——做这件事是为了帮谁解决什么问题。但如果某个问题的答案得看代码仓里实际是怎么写的("现在这块是怎么做的"、"有没有类似的东西已经在了"),就按需去读代码,读完把发现带回对话——别就着这个发现展开技术设计讨论,那是 design 阶段的事。

  • Ask only one question at a time. If you throw 3-5 questions at the user at once, they will most likely only answer the easiest one, and the deeper issues will be missed.
  • Provide options before asking questions. If you can let the user choose from 2-4 specific, distinct options, don't let them write freely. The options themselves are your thinking — you've already explored the solution space for them, and they just need to make a choice. Use
    AskUserQuestion
    if the environment supports it; otherwise, use numbered text options.
  • Don't make technical selections at this stage. Questions like "which library to use, how to design the table, how to define the interface" are all pushed to the design phase. This stage only focuses on user-perceived aspects — who is this for and what problem does it solve. However, if the answer to a question depends on how things are actually implemented in the code repository ("How is this part done now?", "Is there something similar already existing?"), read the code as needed, bring back your findings to the conversation — but don't start a technical design discussion based on these findings; that's for the design phase.

聊完落盘

Document the Results After Discussion

对话收敛后写 brainstorm note 到
easysdd/features/{feature}/{slug}-brainstorm.md
After the discussion converges, write the brainstorm note to
easysdd/features/{feature}/{slug}-brainstorm.md
.

feature 目录怎么建

How to Create the Feature Directory

  • 日期前缀:从环境信息里取今天的日期,不要靠记忆猜。
  • slug:根据选定方向自拟一个英文小写连字符 slug,写进 note 时顺便告诉用户一声。用户有异议再改,不用专门起一轮"slug 你觉得叫什么"的对话——这种小决定 AI 替用户先拟好更顺手。如果 design 阶段改名,只 rename slug 部分,日期前缀别动,整个目录一起 rename。
  • 目录不存在就创建;已存在的话回到上面"开聊之前先做的检查"第 1 条。
  • Date Prefix: Get today's date from the environment information, don't guess from memory.
  • Slug: Create a lowercase English hyphenated slug based on the selected direction, and inform the user when writing it into the note. Only change it if the user has objections; there's no need to start a separate discussion like "What do you think the slug should be?" — it's more convenient for the AI to make this small decision for the user. If renaming during the design phase, only rename the slug part, keep the date prefix unchanged, and rename the entire directory together.
  • Create the directory if it doesn't exist; if it does exist, go back to Item 1 of "Checks to Do Before Starting the Discussion" above.

brainstorm note 模板

Brainstorm Note Template

brainstorm note 只在用户确认进 design 那一刻落盘——对话期间什么都不写到文件里。所以模板里
status
固定为
confirmed
,没有
draft
状态。中途中断重启时如果发现已有部分草稿文件(极少数情况,比如上一次会话异常退出),按"开聊之前先做的检查"第 1 条处理。
markdown
---
doc_type: feature-brainstorm
feature: YYYY-MM-DD-{slug}
status: confirmed
summary: 一句话讲选定方向是什么
tags: [...]
---
The brainstorm note is only documented when the user confirms entering the design phase — nothing is written to the file during the discussion. Therefore, the
status
in the template is fixed as
confirmed
, with no
draft
status. If a partial draft file is found when restarting after an interruption (a rare case, such as an abnormal exit of the previous session), follow Item 1 of "Checks to Do Before Starting the Discussion" above.
markdown
---
doc_type: feature-brainstorm
feature: YYYY-MM-DD-{slug}
status: confirmed
summary: 一句话讲选定方向是什么
tags: [...]
---

{功能名称} Brainstorm

{功能名称} Brainstorm

Stage 0 | {YYYY-MM-DD} | 下一步:design
Stage 0 | {YYYY-MM-DD} | 下一步:design

想做什么、为什么

想做什么、为什么

{出发点 + 探索中的关键发现和转折,合在一起讲。}
{出发点 + 探索中的关键发现和转折,合在一起讲。}

考虑过的方向

考虑过的方向

方向 A:{名}

方向 A:{名}

  • 描述 / 价值 / 代价
  • 结论:选定 / 否决(原因)
  • 描述 / 价值 / 代价
  • 结论:选定 / 否决(原因)

方向 B / C ...

方向 B / C ...

选定方向与遗留问题

选定方向与遗留问题

{选定方向 2-3 句重述 + 粗粒度轮廓(核心行为、明显不做、最大未知)。 遗留给 design 的问题直接列在这里。}

frontmatter 字段口径跟 design / acceptance 共用一组(`doc_type` / `feature` / `status` / `summary` / `tags`),具体看 `easysdd/reference/shared-conventions.md` 第 1 节。

仓库扫描发现、术语冲突提示、learning 文档引用这类备注按需加在末尾,不另开 section。

---
{选定方向 2-3 句重述 + 粗粒度轮廓(核心行为、明显不做、最大未知)。 遗留给 design 的问题直接列在这里。}

The frontmatter fields share the same specifications as design/acceptance (`doc_type` / `feature` / `status` / `summary` / `tags`), see Section 1 of `easysdd/reference/shared-conventions.md` for details.

Notes such as repository scan findings, term conflict prompts, and learning document references can be added at the end as needed, no separate section required.

---

退出

Exit

收敛动作完成后,主动问一句"我觉得这块够清楚了,可以进 design 了吗?"——别等用户主动喊停。用户确认后再写文件落盘,落盘完告诉用户下一步触发
easysdd-feature-design
别自己顺手开始写 design——阶段间的人工 checkpoint 是 easysdd 整套流程的硬约束,原因在根技能里讲过:跨阶段无停顿地往下跑,用户会发现自己来不及在每一步把关,最后实现完才知道走偏了。所以这一步告诉用户下一步触发
easysdd-feature-design
就够了。
After completing the convergence action, proactively ask "I think this is clear enough, can we proceed to design?" — don't wait for the user to stop you. Write the file to document the results only after the user confirms, and inform the user to trigger
easysdd-feature-design
for the next step.
Don't start writing the design on your own — manual checkpoints between stages are a hard constraint of the entire easysdd workflow. As explained in the root skill: running through stages without pauses will leave the user with no time to review each step, and they'll only realize they've gone off track after implementation is complete. So it's enough to tell the user to trigger
easysdd-feature-design
for the next step.