Skill 寫法圖鑑

brainstorm

Donchitos | 遊戲開發 | 原文 | MIT

引導你找出並選定遊戲概念,寫成一頁式 brief

中文翻譯

---
name: brainstorm
description: "引導使用者找出並選定遊戲概念。使用者想要遊戲點子、新概念、game jam 點子,或想探索其他方向時使用,包括放棄目前的點子重來。"
argument-hint: "[genre or theme hint, or 'open'] [--review full|lean|solo]"
user-invocable: true
allowed-tools: Read, Glob, Grep, Write, WebSearch, Agent, AskUserQuestion, Bash(bash "*/.claude/skills/brainstorm/../../hooks/yaml-helper.sh" resolve_config *)
model: sonnet
---

!`bash "${CLAUDE_SKILL_DIR}/../../hooks/yaml-helper.sh" resolve_config --keys review_mode,automation,docs.density,workflow`

上面已經解析好了,直接用。沒有這個區塊 → 用 `.claude/docs/config-resolution.md` 裡的預設值
(`workflow: minimal`、`review_mode: solo`、`automation: collaborative`、`docs.density: terse`),
並且說明設定沒有讀到。

# Brainstorm

把「沒有點子」或「粗略的點子」變成一份寫下來的設計,讓下一步可以接著蓋。寫多少
取決於 `workflow`:

- **`minimal`:** 走下面的 Lean Brief 流程:一頁式的 `design/game-brief.md`,寫完就停。不問
  探索性問題、不定 pillars、不跑 director gate、不寫 `game-concept.md`,也不要載入
  `references/full-concept.md`。
- **`standard` 或 `full`:** 讀 `references/full-concept.md` 並照著做。它會用
  `.claude/docs/templates/game-concept.md` 寫出
  `design/gdd/game-concept.md`。它的 gate 遵循
  `.claude/docs/director-gates.md`;每個 director agent 都會拿到它自己的 gate 檔,
  `.claude/docs/director-gates/<gate-id in lower case>.md`(`cd-pillars.md`、
  `ad-concept-visual.md`、`td-feasibility.md`、`pr-scope.md`),這些檔案你自己不用讀。

skill 名稱後面輸入的文字裡如果有 `--review`,這次執行就用它覆蓋 `review_mode`。
`docs.density` 決定每個章節的深度:`terse` = 條列;`balanced` = 附簡短理由;
`thorough` = 理由加替代方案。提問遵循 `.claude/docs/automation-modes.md`
(collaborative 會問、guided 只問重大決定、autonomous 記錄後直接往下走;
一律要問的類別還是要問)。

提問要用提問工具。沒有的話,把選項編號列出來,然後結束你這一輪等回覆。
問題要放在回覆的最後:後面不要再接建議或傾向。被跳過或被關掉的
問題不算回答:用純文字再問一次。

## Lean Brief 流程(`workflow: minimal`)

幾輪對話就好,不是十五輪:把撐起這款遊戲的想法濃縮在一頁,然後就去寫
程式。用範本 `.claude/docs/templates/game-brief.md` 來寫(六個必填欄位、三個
一句話欄位)。如果 `design/game-brief.md` 已經存在,就讀它並修改,不要從頭來過。

1. **Concept。** 根據 skill 名稱後面輸入的提示(沒有的話就問一個快速的開放式問題),
   提出 **2 或 3 個一句話概念**(動詞開頭,或是類型和主題的混搭),不是
   完整的概念卡。請使用者挑一個或組合起來。這是每次執行都會問的唯一一個創意問題。
2. **在對話中填寫 brief**,每輪填好幾個欄位:
   - **Working title:** brief 的標題行。從選定的概念提供一個,讓使用者
     自己改;`/create-stories` 會用它來命名 epic 資料夾。
   - **Pitch:** 興奮感十足的一句話。
   - **Core loop:** 玩家重複做的 2 到 4 個步驟。
   - **Player goal & fail state**:玩家想做什麼,以及怎樣算輸。
     `/create-stories` 會把它轉成驗收標準。
   - **MVP:** 讓它成為這款遊戲的那份精簡清單;每一項都會變成一個 story。**超過 7
     項:要反駁。** 說明這對 MVP 來說太長,提出要砍哪些項目(砍掉
     core loop 照樣能運作的那些),並讓 brief 維持在 7 項以內。
   - **Out of scope:** 他們刻意不做的東西(被砍掉的項目放這裡)。
   - **Build order:** 風險最高或最沒被驗證過的部分先做。
   - **Who it's for and what they feel**、**Art & audio direction**、**Reference game**(
     最接近的已發行遊戲,以及 MVP 保留它的哪個部分):各一行;提供選項,不要強迫。
3. **完整顯示填好的 brief。** 然後單獨問一個問題:"Brief is ready. May I write it
   to `design/game-brief.md`?" `Yes — write it` / `Revise a field first`。只有對這個問題明確
   回答 yes 才寫;同意某個刪減或說「繼續」都不算同意寫入。要修改的話,改指定的欄位、
   顯示修改前後,再問一次。然後寫入
   `design/game-brief.md`,需要的話建立資料夾。這個 tier 絕對不准寫 `design/gdd/game-concept.md`。
4. **下一步。** 讀 `project.yaml` 的 `engine.name`:
   1. `/setup-engine`:設定引擎。**只有**在 `engine.name` 不存在或
      是空的時候才列它:在 minimal 路徑上,它通常在這個 skill 之前就跑過了。
   2. `/create-stories`:把 MVP 清單變成 story。在 `minimal` 沒有獨立的
      `/create-epics` 或 `/sprint-plan`;build order 就是計畫。
   3. `/dev-story`:第一行遊戲程式碼。

   然後一行摘要:pitch、MVP 項目數量,還有 `design/game-brief.md`。以這行
   收尾:`Verdict: COMPLETE — game brief written; next stop is code.`

如果使用者在寫入之前就停了,要說明 brief 沒有寫入,所以它只存在於這段
對話裡。

英文原文

---
name: brainstorm
description: "Guides the user through finding and choosing a game concept. Use when the user wants game ideas, a new concept, a game jam idea, or to explore other directions, including dropping the current idea and starting over."
argument-hint: "[genre or theme hint, or 'open'] [--review full|lean|solo]"
user-invocable: true
allowed-tools: Read, Glob, Grep, Write, WebSearch, Agent, AskUserQuestion, Bash(bash "*/.claude/skills/brainstorm/../../hooks/yaml-helper.sh" resolve_config *)
model: sonnet
---

!`bash "${CLAUDE_SKILL_DIR}/../../hooks/yaml-helper.sh" resolve_config --keys review_mode,automation,docs.density,workflow`

Resolved above; use as-is. No block → the defaults in `.claude/docs/config-resolution.md`
(`workflow: minimal`, `review_mode: solo`, `automation: collaborative`, `docs.density: terse`), and
say that the settings were not read.

# Brainstorm

Turns no idea, or a rough one, into a written design the next step builds from. How much it writes
depends on `workflow`:

- **`minimal`:** the Lean Brief flow below: a one-page `design/game-brief.md`, then stop. No
  discovery questions, pillars, director gates or `game-concept.md`, and do not load
  `references/full-concept.md`.
- **`standard` or `full`:** read `references/full-concept.md` and follow it. It writes
  `design/gdd/game-concept.md` from `.claude/docs/templates/game-concept.md`. Its gates follow
  `.claude/docs/director-gates.md`; each director agent is given its own gate file,
  `.claude/docs/director-gates/<gate-id in lower case>.md` (`cd-pillars.md`,
  `ad-concept-visual.md`, `td-feasibility.md`, `pr-scope.md`), and you do not read those files
  yourself.

`--review` in the text typed after the skill name overrides `review_mode` for this run.
`docs.density` sets each section's depth: `terse` = bullets; `balanced` = with brief rationale;
`thorough` = rationale and alternatives. Questions follow `.claude/docs/automation-modes.md`
(collaborative asks, guided asks only for major decisions, autonomous logs and proceeds; the
always-ask categories always ask).

Ask with the question tool. Without one, list the options numbered and end your turn to wait. The
question is the last thing in the reply: no advice or lean after it. A skipped or dismissed
question is not an answer: ask again in plain text.

## Lean Brief flow (`workflow: minimal`)

A few exchanges, not fifteen: capture the thinking that carries the game on one page, then get to
code. Write from the template `.claude/docs/templates/game-brief.md` (six required fields, three
one-liners). If `design/game-brief.md` exists, read it and refine it instead of starting over.

1. **Concept.** From the hint typed after the skill name (or one quick open question if there is
   none), propose **2 or 3 one-line concepts** (verb-first or a mashup of genre and theme), not
   full concept cards. Ask the user to pick or combine them. This is the one creative question
   every run asks.
2. **Fill the brief** in conversation, several fields per exchange:
   - **Working title:** the brief's title line. Offer one from the chosen concept and let the user
     change it; `/create-stories` names the epic folder after it.
   - **Pitch:** the excited one-liner.
   - **Core loop:** the 2 to 4 steps the player repeats.
   - **Player goal & fail state**: what the player tries to do, and how they lose.
     `/create-stories` turns it into acceptance criteria.
   - **MVP:** the short list that makes it the game; each item becomes a story. **More than 7
     items: push back.** Say it is too long for an MVP, propose which items to cut (the ones the
     core loop works without), and keep the brief to 7 or fewer.
   - **Out of scope:** what they are deliberately not building (the cut items go here).
   - **Build order:** the riskiest or least proven part first.
   - **Who it's for and what they feel**, **Art & audio direction**, **Reference game** (the
     closest shipped game, and the part of it the MVP keeps): one line each; offer, don't force.
3. **Show the filled brief in full.** Then ask, as its own question: "Brief is ready. May I write it
   to `design/game-brief.md`?" `Yes — write it` / `Revise a field first`. Write only on an explicit
   yes to this question; agreeing to a cut or saying "go on" is not a yes to the write. On a
   revision, change the named field, show it before and after, and ask again. Then write
   `design/game-brief.md`, creating folders as needed. Never write `design/gdd/game-concept.md`
   at this tier.
4. **Next steps.** Read `engine.name` in `project.yaml`:
   1. `/setup-engine`: configure the engine. List it **only** when `engine.name` is absent or
      empty: on the minimal path it usually ran before this skill.
   2. `/create-stories`: turn the MVP list into stories. At `minimal` there is no separate
      `/create-epics` or `/sprint-plan`; the build order is the plan.
   3. `/dev-story`: the first line of game code.

   Then one summary line: the pitch, the number of MVP items, and `design/game-brief.md`. End with
   the line `Verdict: COMPLETE — game brief written; next stop is code.`

If the user stops before the write, say the brief was not written, so it lives only in this
conversation.