create-stories について
create-stories は、Epic やブリーフを要件に紐づく実装ストーリーへ分解する Claude スキルです。草案作成、レビュー、ステータス設定を進め、ストーリーファイルと Epic の索引を更新します。
主な機能
- 01ワークフローと粒度設定の解決
- 02Epic またはブリーフからのストーリー作成
- 03要件および ADR との紐づけ
- 04準備状況と見積もりの設定
- 05ストーリーファイルと Epic 索引の更新
活用シーン
- 01Epic を実装可能な単位に分解
- 02minimal モードでゲームブリーフから作成
- 03未解決の ADR によるブロックの表示
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ donchitos/ claude-code-game-studios --skill create-storiesインストール後、Claude Code で/create-storiesを入力して読み込まれたか確認します。
同梱ファイルCONTRACT.mdreferences/qa-lead-gate.md
詳細
!bash "${CLAUDE_SKILL_DIR}/../../hooks/yaml-helper.sh" resolve_config --keys review_mode,review_gate,automation,workflow,docs.density,story_granularity,qa.level,system_overrides
上記で解決済みの値をそのまま使用します。--review は review_mode を上書きします。ブロックはありません →
デフォルト値は .claude/docs/config-resolution.md にあります。
質問ツールで尋ねてください。質問ツールがない場合は、選択肢に番号を付けて列挙し、回答を待つためにそこでターンを終了してください。質問をスキップまたは却下したことは回答ではありません。通常のテキストで再度尋ねてください。
ストーリーを作成する
ストーリーとは、1つの実装可能な動作です。story_granularity が定めるサイズに収まり、単独で完結し、要件と、その動作を規定する決定にたどれる必要があります。依存関係の順に、エピックごとにこのスキルを1回実行します。まず Foundation エピック、次に Core、Feature、Presentation の順です。
書き込み先: production/epics/[epic-slug]/story-NNN-[slug].md、エピックの EPIC.md の Stories テーブル、および production/epics/index.md の該当行。
次の手順: workflow: minimal の場合は /dev-story [story-path]、それ以外の場合は /story-readiness [story-path] を実行してから /dev-story を実行します。
質問は .claude/docs/automation-modes.md に従います(collaborative では必ず質問し、guided では主要な選択について質問し、autonomous では記録して続行します。automation_always_ask のカテゴリでは必ず質問します)。
チェックリスト(コピーして、進行に合わせてチェックしてください):
- [ ] Phase 1: epic found, tier resolved
- [ ] Phase 2: inputs loaded, each ADR's status reported
- [ ] Phase 3-4: stories drafted, typed, Ready or Blocked
- [ ] Phase 5: QA lead review run, or its skip noted
- [ ] Phase 6: story list shown, one ask to write
- [ ] Phase 7: stories, EPIC.md and index.md written (or index absence said)
- [ ] Phase 8: next step asked, closing block printed
フェーズ 1:エピックと設定
ティア。 エピックのシステムに対する workflow を使います。該当する行があればエピックのスラッグ(その GDD システム)に対応する system_overrides の行を、なければプロジェクトの値を使います。
story_granularity は各ストーリーの受け入れ条件の量を設定します。目標に合わせて条件をまとめたり分割したりしてください。
story_granularity | ストーリーごとの AC 数 | サイズ |
|---|---|---|
coarse(デフォルト、rigor: minimal) | 5-10 | 機能全体、複数日 |
balanced(rigor: standard) | 2-4 | 1つのタスク、約1セッション |
fine | 1 | 1つの基準。ストーリー名でその基準を言い換えます |
docs.density は各ストーリーの文章(コンテキスト、実装メモ、ADR の要約)の詳しさを設定します。AC の数や AC の文面は変更しません。terse(デフォルト)=箇条書きのメモのみで、前置きなし。balanced=短いコンテキスト段落とメモ。thorough=コンテキスト、ガイダンス、ADR の根拠を詳しく記述します。TR-ID、ADR Version、受け入れ条件は決して省略しません。
対象のエピック。 スキル名の後に入力されたテキストから、--review <mode> の組を除いたものです。エピックのスラッグ(combat)またはパス(production/epics/combat/EPIC.md)を指定します。何も入力されていない場合でも、ユーザーのリクエストで名前が挙がったエピック(「loot エピック」など)は指定済みとして扱います。
- 名前は指定されているが、そこに
EPIC.mdがない場合:standardおよびfullでは、「production/epics/[slug]/EPIC.mdにエピックがありません。/create-epicsを実行して作成するか、ls production/epics/でスラッグを確認してください。」と伝えて停止します。推測で分解してはいけません。minimalでは、このティアでは/create-epicsのエピックは不要だと伝え、フェーズ 2 のminimal分岐に進み、使用するスラッグを明記します。 minimalで未指定の場合: フェーズ 2 のminimal分岐に進みます。standardまたはfullで未指定の場合:production/epics/*/EPIC.mdを各ステータスとともに一覧表示し、「どのエピックをストーリーに分解しますか?」と尋ねます。各エピックを1つずつ選択肢として提示します。エピックが見つからない場合: 停止して、「production/epics/にエピックが見つかりません。まず/create-epics layer: foundationを実行してください。」と伝えます。選択肢がない状態で質問してはいけません。
フェーズ 2:入力を読み込む
minimal:ブリーフからエピックを作成する
- **
design/game-brief.mdがない場合:**停止します。「ストーリーを作成するためのブリーフがまだありません。まず/brainstormを実行してください。1ページのブリーフが作成されます。」コードルートにすでにゲームがある場合(ソースファイルが10個以上)、代わりに/reverse-document design [code root]を案内します。 design/game-brief.mdをすべて読みます(1ページ)。- エピック。
<slug>はブリーフの仮タイトルをスラッグ化したもの(タイトルがない場合はmvp)、またはユーザーが指定したエピックです。production/epics/<slug>/EPIC.mdが存在する場合、それがエピックです。ブリーフに対応づけられたスコープを使用し、書き換えてはいけません。- 存在しない場合:Phase 6 で名前が指定されるのを待ち、Phase 7 で初めてエピックを作成します。Goal = ブリーフの1文のピッチ、scope = MVP機能一覧、order = Build order です。簡潔にまとめます。
- フォルダーにすでにストーリーがある場合(再訪時):既存の
story-*.mdは書き換えてはいけません。ブリーフの項目のうち既存ストーリーで扱われていないもの、またはユーザーが指定した新しい項目に限って追加し、番号は既存の最大のstory-NNNの次から付けます。
- **MVP機能ごとに1つのストーリーを、Build order に沿って作成し、**各ストーリーをブリーフに対応づけます。ADRを理由にブロックされるストーリーはありません。このティアにはADRがありません。
minimal ではGDD、control manifest、TR registry、ADRを読みません。Phase 3 に進みます。
standard と full:エピックと、その適用ルール
- エピック:
production/epics/[epic-slug]/EPIC.mdをすべて読みます(そのレイヤー、GDD、適用されるADR、TR-IDを含むGDD Requirements表)。 - **GDD:**ファイル全体ではなく、見出しごとにセクションを読みます。
bash .claude/scripts/md-section.sh extract design/gdd/[file].md "Acceptance Criteria"を実行し、同様にFormulas、Edge Cases、Detailed Designも読みます(終了コード3の場合は、デザイン標準で同じセクションを指す名称であるDetailed Rulesを試します)。fullでは、その他の必須セクションも読みます(見出しはlistで確認できます)。 - **control manifest:**エピックのレイヤーのみとバージョンを確認します。
bash .claude/scripts/md-section.sh extract docs/architecture/control-manifest.md "[Layer] Layer Rules"に加え、Manifest Versionの行も読みます。 - **TR registry:**このシステムのエントリーのみを確認します。
docs/architecture/tr-registry.yamlでsystem: <slug>\s*$に一致する行と、各エントリーの上にあるidおよび下にあるテキストを読みます。アンカーによりcombatがcombat-aiに一致するのを防ぎ、\s*はWindowsの行末にも対応します。 - **ADR:**エピックに記載されているADR(適用されるもの、Requirements表に記載されているもの、Proposedのものを含む)をすべて、1回の呼び出しで確認します。
各行には、ステータス、レイヤー、bash .claude/scripts/adr-status.sh ADR-0001 ADR-0003 ...version(ストーリーのADR Versionスタンプ)、depends_on、不足しているセクションが示されます。その後、各ADRのSummary、Decision(その中のImplementation Guidelinesを含む)、Engine Compatibilityのみをmd-section.sh extractで読みます。Engine Notesはストーリーのフィールドであり、ADRのセクションではありません。これらのセクションが1つもないADRはテンプレート導入前のものです。一度すべて読み、/architecture-decision retrofit [file]を実行する必要があることを明記します。
名前が挙がっているADRのファイルがない場合(NOT_FOUND):
full:ストーリーを分解する前に停止します。standard:そのADRがクリティカル(Foundationレイヤー)の場合のみ停止します。それ以外の場合は警告して続行し、対象となるストーリーがADRの作成までBlockedになるよう記載します。- 停止時:「エピックには [ADR-NNNN: title] が記載されていますが、
docs/architecture/にそのファイルが見つかりません。エピックのGoverning ADRs一覧を確認するか、/architecture-decisionを実行して作成してください。参照先のADRファイルが揃うまで、ストーリーは作成できません。」
**下書きの前に、**実際の状態を報告し、各ADRのステータスを個別に示します。
Loaded: epic [name] · GDD [file] · manifest v[date], [layer] rules
ADRs: ADR-0001 Accepted · ADR-0002 Accepted · ADR-0003 Accepted · ADR-0004 Proposed · [ADR-NNNN missing]
1つでも欠けている場合は「すべて揃っています」と決して言わず、存在しない場合はmanifestのバージョンを記載してはいけません。
フェーズ 3:各ストーリーを分類する
| 種類 | 受け入れ条件が参照する内容 |
|---|---|
| ロジック | 数式、しきい値、状態遷移、AI の判断、計算 |
| インテグレーション | 2 つ以上のシステム、境界をまたぐ信号、保存/読み込みの往復処理 |
| ビジュアル/操作感 | アニメーション、VFX、「反応がよい操作感」、タイミング、画面の揺れ、音声同期 |
| UI | メニュー、HUD、ボタン、画面、ダイアログボックス、ツールチップ |
| 設定/データ | バランス値とデータファイルのみ。新しいロジックは含めない |
複数の種類にまたがるストーリーには、実装リスクが最も高い種類を割り当てます。種類によって、/story-done に必要な証拠が決まります。
フェーズ 4:ストーリーを作成する
同じ中核的な実装を必要とする要件をまとめ、story_granularity に合わせてストーリーを作成します。順序は、基盤となる動作、エッジケース、UI の順にします。各ストーリーには、次の項目を記載します。
- Requirement: レジストリの TR-ID。エピックの GDD Requirements テーブルを通じて対応付けます。一致する項目がない場合に限り、
TR-[system]-???と記載し、その旨を明記します。 - ADR: 実装方法を規定する ADR(Requirements テーブルに記載されています)。
Accepted:内容を組み込みます。Proposed:Status: Blockedとし、「BLOCKED: ADR-NNNN is Proposed — accept it with/architecture-decision accept ADR-NNNNonce decided」と記載します。DeprecatedまたはSuperseded:Status: Blockedとし、「BLOCKED: ADR-NNNN is [status] — point the story at [successor] (edit its ADR field;/create-storiesnever rewrites an existing story) before implementing」と記載します。depends_onにAcceptedではない ADR が指定されたAcceptedADR:その ADR を明記して、同様に Blocked とします。- 該当する ADR が複数ある場合:すべて列挙し、最も直接関係するものを先に記載します。
- 該当する ADR がない場合:
ADR: N/A — [reason]と記載します。例:「純粋なデータ設定」。空欄にしないでください。空欄は未確認を意味します。
- ADR Version: ストーリーの ADR Version は、ADR の
## Last Verifiedの日付、なければ## Dateの日付、それもなければunversioned(version列)です。ADR の概要が引き続きこのバージョンと一致している間、/dev-storyはその概要を信頼します。 - エンジンリスク: ADR の Engine Compatibility(その知識リスク)から設定します。
- 見積もり: 受け入れ条件とストーリーが扱うファイルに基づいて、T シャツサイズを提案します。
S(数時間)、M(約 1 日)、L(数日)から選びます。これは提案です。フェーズ 6 で提示し、ユーザーが変更できます。Estimate がテンプレートの角括弧のままのストーリーは/story-readinessで失敗するため、未記入のままにしないでください。
フェーズ 5:QA リードによるレビュー
上記の review_gate 行を確認します。skill-gates=skip(ソロまたはリーン)の場合はレビューを行いません。フェーズ 6 のリストと締めくくりのブロックに「QL-STORY-READY skipped — [Solo | Lean] mode」と記載します。skill-gates=run の場合は、references/qa-lead-gate.md と .claude/docs/director-gates.md を読み、フェーズ 6 の確認を求める前に実行します。スキップする場合は、読み込まないでください。
フェーズ 6:ストーリーを提示し、一度だけ確認を求める
## Stories for Epic: [name]
ADRs: ADR-0001 Accepted · ADR-0002 Accepted · ADR-0004 Proposed (every ADR, from Phase 2)
Story 001: [title] — Logic — ADR-0001 — Ready — Estimate M
Covers: TR-[system]-001 ([one-line requirement])
Test required: tests/unit/[system]/[slug]_test.[ext]
Story 002: [title] — Integration — ADR-0004 — BLOCKED (ADR-0004 is Proposed) — Estimate L
Covers: TR-[system]-002, TR-[system]-003
Test required: tests/integration/[system]/[slug]_test.[ext]
Story 003: [title] — Visual/Feel — ADR-0001 — Ready — Estimate S
Covers: TR-[system]-004
Evidence required: retained screenshot + sign-off in production/qa/evidence/[slug]-evidence.md
[N stories: N Logic, N Integration, N Visual/Feel, N UI, N Config/Data; N Blocked]
QL-STORY-READY: [skipped — Solo mode | its verdicts]
minimal の場合、各行を Brief MVP feature N に対応付け、ADR 行は設けず、MVP の機能ごとに 1 つのストーリーを作成します。MVP リストに含まれないブリーフ項目について、追加のストーリーを作成してはいけません。その後、次のように確認を求めます。「これら [N] 件のストーリーを production/epics/[epic-slug]/ に書き込み、production/epics/[epic-slug]/EPIC.md を[作成 | 更新]し、production/epics/index.md を更新してもよろしいですか?」選択肢:はい、[N] 件すべてを書き込む/まだです。先に調整したいです。調整では、どの見積もりも変更できます。フェーズ 7 で変更するすべてのファイル名を提示します。EPIC.md は存在しない場合にのみ作成し、index.md が存在しない場合は対象に含めません。はいという確認を得る前に何も書き込まないでください。
フェーズ 7:書き込む
ストーリーファイル
各ストーリーは production/epics/[epic-slug]/story-[NNN]-[slug].md に作成し、
.claude/docs/templates/story.md の形式にします。ストーリー番号は再利用しないでください。各ファイルはファイルとして作成し、シェルコマンド経由では作成しないでください。シェルで書き込むと、プロジェクトの書き込みチェックがスキップされます。
minimal では、GDD、ADR、TR レジストリ、マニフェストはありません。以下のフィールドに正確に記入してください。
| フィールド | minimal での値 |
|---|---|
| GDD | design/game-brief.md |
| Requirement | Brief MVP feature N。TR-ID は使用しません |
| ADR Governing Implementation、ADR Decision Summary、ADR Version | N/A (minimal — no ADRs) |
| Manifest Version、Control Manifest Rules | N/A (minimal — no control manifest) |
| Engine | engine.name + engine.version |
| Risk | 固定バージョンが docs/engine-reference/<engine>/VERSION.md に記載されているレベル(タイムラインの行、または全体評価)。ファイルまたはレベルがない場合は、推測せず NOT ASSESSED (no VERSION.md risk rating) とします。/dev-story は NOT ASSESSED を HIGH として扱います |
| Engine Notes | none (no ADR engine-compatibility analysis at minimal) |
| Acceptance Criteria | ブリーフの Player goal & fail state と MVP 機能に基づき、具体的かつテスト可能にします。箇条書きだけを根拠に作り出してはいけません |
すべてのティアで:
- **QA Test Cases:**レビューがスキップされた場合は、
*N/A — no qa-lead specs at this tier; implement against the Acceptance Criteria above*と記入します。テストケースを独自に考案してはいけません。 - Test Evidence:
qa.levelに従います。qa.level: minimalではテストは免除されます(参考扱い)が、Visual/Feel または UI ストーリーで保持するスクリーンショットは免除されません。 - Estimate: Phase 6 のサイズを記入し、ユーザーによる変更があれば反映します。
- **Dependencies:**このストーリーが必要とする各ストーリーを、そのパスで指定します。
- **Files:**コードルートとテストルートの配下に、作成または変更する予定のコードファイルとテストファイルを記載します。
/dev-storyが実際の一覧に置き換えます。
EPIC.md
minimal でまだファイルがない場合は、以下の表を使って Phase 2 のドラフトを作成します。それ以外の場合は、「Stories: Not yet created」の行を表に置き換えます。再訪時には、新しいストーリーごとに1行追加し、ファイルの残りの部分はそのままにします。
## Stories
| # | Story | Type | Status | ADR |
|---|-------|------|--------|-----|
| 001 | [title] | Logic | Ready | ADR-0001 |
| 002 | [title] | Integration | Blocked | ADR-0004 |
production/epics/index.md
そのエピックの Stories セルを [N] stories に設定します。ここでのエピックの合計数は今回の実行後の数です。ファイルが存在しない場合は、次のように伝えます。
Epics index not updated: production/epics/index.md absent
Phase 8: 完了
production/epics/ 内にストーリーがない他のエピックがあれば、列挙します。その後、次のように質問します。
「production/epics/[epic-slug]/ に [N] 件のストーリーを作成しました。次は何をしますか?」該当する選択肢を提示します。
- 実装を開始する:
minimalでは/dev-story [first-story-path]、それ以外では/story-readiness [first-story-path](推奨) - [next epic] のストーリーを作成する:
/create-stories [slug](ストーリーがないエピックがある場合のみ) - スプリントを計画する:
/sprint-plan new(すべてのエピックにストーリーがある場合のみ。ブリーフのビルド順が計画となるminimalでは実行しません) - 今回のセッションはここで終了する
実装を開始したり、コードを書いたりしてはいけません。このスキルはストーリーファイルの作成で終了します。受け入れ基準は GDD(minimal ではブリーフ)、実装メモは ADR、ルールはマニフェストに基づきます。いずれも独自に作り出してはいけません。
実行の最後の返信は、上記の質問への回答の後に、次のブロックで終わらせます(先に提示していた場合も、もう一度繰り返します)。
Verdict: COMPLETE — [N] stories written to production/epics/[epic-slug]/ ([N] Ready, [N] Blocked)
Review: [QL-STORY-READY skipped — Solo mode | skipped — Lean mode | its verdicts]
Index: [production/epics/index.md updated | Epics index not updated: production/epics/index.md absent]
Next step: [/dev-story [first-story-path] | /story-readiness [first-story-path]]
ユーザーが書き込みを拒否した場合:
Verdict: BLOCKED — user declined. No story files written.