yodogawa 2.1.3 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/CHANGELOG.md +140 -94
  2. package/LICENSE +1 -1
  3. package/README.md +362 -263
  4. package/bin/checks/id-trace.js +137 -0
  5. package/bin/checks/links.js +59 -0
  6. package/bin/checks/placeholder.js +132 -0
  7. package/bin/checks/structure.js +127 -0
  8. package/bin/cli.js +51 -67
  9. package/bin/commands/doctor.js +128 -0
  10. package/bin/commands/install.js +58 -0
  11. package/bin/commands/new-task.js +117 -0
  12. package/bin/lib/check-cli.js +19 -0
  13. package/bin/lib/findings.js +31 -0
  14. package/bin/lib/markdown.js +103 -0
  15. package/bin/lib/project-spec.js +138 -0
  16. package/bin/lib/walk-md.js +23 -0
  17. package/package.json +68 -55
  18. package/skills/a-001-setup-doc-structure/SKILL.md +68 -68
  19. package/skills/a-001-setup-doc-structure/reference/directory-structure.md +75 -75
  20. package/skills/a-002-initialize-project/SKILL.md +145 -118
  21. package/skills/a-002-initialize-project/reference/hearing-questions.md +91 -41
  22. package/skills/a-002-initialize-project/reference/structure-check.md +12 -22
  23. package/skills/a-002a-slice-mvp-scope/SKILL.md +105 -0
  24. package/skills/a-002b-define-user-stories/SKILL.md +80 -0
  25. package/skills/a-002b-define-user-stories/reference/user-stories-guide.md +78 -0
  26. package/skills/a-003-create-scenarios/SKILL.md +97 -96
  27. package/{templates/project/02-behavior/01-scenarios.md → skills/a-003-create-scenarios/reference/detailed-gherkin-template.md} +413 -406
  28. package/skills/a-003-create-scenarios/reference/structure-check.md +20 -17
  29. package/skills/a-004-define-domain-model/SKILL.md +107 -98
  30. package/skills/a-004-define-domain-model/reference/event-storming-guide.md +33 -7
  31. package/skills/a-004-define-domain-model/reference/ubiquitous-language-guide.md +49 -0
  32. package/skills/a-005-create-domain-diagram/SKILL.md +18 -17
  33. package/skills/a-006-review-requirements-domain/SKILL.md +79 -29
  34. package/skills/a-006-review-requirements-domain/examples/review-report-template.md +40 -25
  35. package/skills/a-006-review-requirements-domain/reference/consistency-checks.md +67 -24
  36. package/skills/a-007-define-tech-stack/SKILL.md +99 -99
  37. package/skills/a-008-define-repository-structure/SKILL.md +96 -96
  38. package/skills/a-009-define-screen-design/SKILL.md +103 -103
  39. package/skills/a-010-define-design-system/SKILL.md +130 -130
  40. package/skills/a-011-define-data-model/SKILL.md +118 -118
  41. package/skills/a-012-define-api-spec/SKILL.md +105 -105
  42. package/skills/a-013-define-architecture/SKILL.md +98 -98
  43. package/skills/a-014-define-infrastructure/SKILL.md +118 -110
  44. package/skills/{a-002-initialize-project → a-014-define-infrastructure}/examples/nfr-baseline.md +2 -1
  45. package/{templates/project/01-requirements/04-non-functional-requirements.md → skills/a-014-define-infrastructure/examples/non-functional-requirements.md} +120 -115
  46. package/skills/a-015-review-design/SKILL.md +15 -11
  47. package/skills/a-015-review-design/examples/review-report-template.md +17 -29
  48. package/skills/a-015-review-design/reference/consistency-checks.md +5 -3
  49. package/skills/b-001-create-task-directory/SKILL.md +68 -68
  50. package/skills/b-002-create-task-definition/SKILL.md +114 -114
  51. package/skills/b-003-create-task-research/SKILL.md +130 -128
  52. package/skills/b-004-create-task-implementation/SKILL.md +98 -98
  53. package/skills/b-005-review-task/SKILL.md +40 -24
  54. package/skills/b-005-review-task/examples/review-report-template.md +25 -35
  55. package/skills/b-005-review-task/reference/assessment-criteria.md +79 -79
  56. package/skills/b-005-review-task/reference/consistency-checks.md +70 -11
  57. package/skills/c-001-implement-task/SKILL.md +186 -186
  58. package/skills/c-001-implement-task/reference/implementation-loop.md +65 -65
  59. package/skills/c-002-update-documentation/SKILL.md +159 -159
  60. package/skills/c-002-update-documentation/examples/project-doc-updates.md +4 -4
  61. package/skills/c-002-update-documentation/reference/doc-structure-and-checks.md +99 -97
  62. package/skills/d-001-review-retrospective/SKILL.md +93 -0
  63. package/skills/d-001-review-retrospective/examples/retrospective-report-template.md +50 -0
  64. package/skills/d-001-review-retrospective/reference/friction-point-mapping.md +30 -0
  65. package/templates/LESSONS.md +15 -0
  66. package/templates/project/01-requirements/01-product-brief.md +186 -0
  67. package/templates/project/01-requirements/02-mvp-scope.md +64 -0
  68. package/templates/project/01-requirements/03-parking-lot.md +29 -0
  69. package/templates/project/01-requirements/05-user-stories.md +28 -124
  70. package/templates/project/01-requirements/{02-features-implemented.md → 06-features-implemented.md} +77 -73
  71. package/templates/project/02-behavior/01-core-scenarios.md +80 -0
  72. package/templates/project/03-domain/01-domain-model.md +120 -339
  73. package/templates/project/03-domain/01-domain-sketch.md +90 -0
  74. package/templates/project/03-domain/02-ubiquitous-language.md +32 -153
  75. package/templates/project/04-design/01-tech-stack.md +367 -367
  76. package/templates/project/04-design/02-repository-structure.md +391 -391
  77. package/templates/project/04-design/03-screen-design.md +596 -596
  78. package/templates/project/04-design/04-design-system.md +261 -261
  79. package/templates/project/04-design/05-data-model.md +211 -211
  80. package/templates/project/04-design/06-api-spec.md +226 -226
  81. package/templates/project/04-design/07-architecture.md +183 -183
  82. package/templates/project/04-design/08-infrastructure.md +180 -180
  83. package/templates/project/AI_CONTEXT.md +55 -0
  84. package/templates/project/STAKEHOLDER-SUMMARY.md +66 -0
  85. package/templates/tasks/task-template/a-definition.md +143 -143
  86. package/templates/tasks/task-template/b-research.md +185 -185
  87. package/templates/tasks/task-template/c-implementation.md +200 -200
  88. package/templates/project/01-requirements/01-system-overview.md +0 -49
  89. package/templates/project/01-requirements/03-features-planned.md +0 -75
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: a-006-review-requirements-domain
3
- description: 要件定義・シナリオ・ドメインモデル間の一貫性を検証し、不整合や抜け漏れを検出する。ドメイン設計完了後、技術選定フェーズへ移る前の検査として使用。
3
+ description: 要件定義・シナリオ・ドメインモデル間の一貫性を検証し、さらに MVP 正当化(過剰作り込み検査)と Go / Go with caveats / No-Go の PM Gate 判定を行う。ステークホルダー向け要約(STAKEHOLDER-SUMMARY.md)と AI 実装用コンテキスト(AI_CONTEXT.md)を生成する。ドメイン設計完了後、技術選定・実装フェーズへ移る前の関門として使用。
4
4
  disable-model-invocation: true
5
5
  context: fork
6
6
  allowed-tools: Read, Grep, Glob, Write, Bash
@@ -13,64 +13,112 @@ allowed-tools: Read, Grep, Glob, Write, Bash
13
13
  - ここまでに作成されたすべてのドキュメント間の一貫性を体系的にチェックする。
14
14
  - ドキュメント間の不整合、漏れ、矛盾を検出し、修正提案を提供する。
15
15
  - ユビキタス言語の遵守状況を確認し、用語の一貫性を保証する。
16
+ - MVP として過剰でないか(YAGNI / 過剰作り込み)を検査し、各 Must 機能の正当性を確認する。
17
+ - **PM Gate** として実装着手の Go / Go with caveats / No-Go を判定する。
18
+ - ステークホルダー合意用の要約(`STAKEHOLDER-SUMMARY.md`)と AI 実装用の圧縮コンテキスト(`AI_CONTEXT.md`)を生成する。
16
19
  - レビュー結果レポートを作成し、修正すべき項目を優先度付きでリストアップする。
17
20
 
18
21
  ## 前提
19
22
 
20
23
  以下のドキュメントが作成されていること:
21
24
 
22
- - `docs/project/01-requirements/01-system-overview.md` `05-user-stories.md`
23
- - `docs/project/02-behavior/01-scenarios.md`
24
- - `docs/project/03-domain/01-domain-model.md`, `02-ubiquitous-language.md`
25
+ - `docs/project/01-requirements/` の各ドキュメント(`01-product-brief.md`, `02-mvp-scope.md`, `03-parking-lot.md`, `05-user-stories.md`、existing モードは加えて `06-features-implemented.md`)
26
+ - `docs/project/02-behavior/01-core-scenarios.md`
27
+ - `docs/project/03-domain/01-domain-sketch.md`, `02-ubiquitous-language.md`(Full DDD を採用した場合は加えて `01-domain-model.md`)
25
28
 
26
29
  ## 手順
27
30
 
28
- ### 1. ドキュメント存在確認
31
+ ### 1. doctor によるドキュメント健全性検査
29
32
 
30
33
  ```bash
31
- ls -l docs/project/01-requirements/*.md docs/project/02-behavior/*.md docs/project/03-domain/*.md
34
+ npx -y yodogawa doctor --json
32
35
  ```
33
36
 
34
- 不足があれば、対応する `/a-002`, `/a-003`, `/a-004` スキルの実行を促す。
37
+ 出力される JSON(`{version, ok, summary, checks[], findings[]}`)をそのまま読み込む。**この段階で `ls` や `grep` を再実装しない。** exit code 1(Error あり)は正常系であり、JSON は必ず stdout に出力される。
35
38
 
36
- ### 2. 一貫性チェックの実行
39
+ - `findings` のうち `check: "structure"` かつ `file` が `01-requirements/`・`02-behavior/`・`03-domain/` 配下のものを確認する。必須ファイル・見出しの欠落があれば、対応する `/a-002`, `/a-002a`, `/a-002b`, `/a-003`, `/a-004` スキルの実行を促し、手順2には進まない。
40
+ - `04-design/` 配下に関する `structure` の finding(未着手フェーズ)はこのスキルの対象外なので無視する。
41
+ - `id-trace` / `placeholder` の findings は手順2で観点別に振り分ける(対応表は [reference/consistency-checks.md](reference/consistency-checks.md#doctor-findings-の観点マッピング))。
42
+ - doctor が実行できない場合(未導入・実行失敗)のみ、代替として `ls -l docs/project/01-requirements/*.md docs/project/02-behavior/*.md docs/project/03-domain/*.md` を実行する。
37
43
 
38
- 以下の 6 観点を自動検索(grep 等)と手動確認で検証する。詳細な観点・コマンドは [reference/consistency-checks.md](reference/consistency-checks.md) を参照。
44
+ ### 2. 一貫性チェックの実行(観点別 PASS/FAIL + 根拠引用)
39
45
 
40
- - **2.1 ユーザーストーリー シナリオ**: US-XXX に対応する SC-XXX の存在、価値と結果の整合
41
- - **2.2 実装済み/予定機能 ↔ シナリオ**: リグレッション用/優先度 High のカバレッジ
42
- - **2.3 非機能要件 ↔ ドメインモデル**: 性能要件(Read Model)、セキュリティ(Policy/Guard)
43
- - **2.4 シナリオ ↔ ドメインモデル**: Command / Event / Actor の対応
44
- - **2.5 ユビキタス言語**: 主要要素の登録、禁止用語の検出
45
- - **2.6 目的との整合性**: システム目的と Core Domain の一致
46
+ 以下の 7 観点を **PASS / FAIL** で判定する(判定ルール: 観点内に Error 相当の指摘が1件以上あれば FAIL、Warning 相当のみなら PASS+注記)。詳細な観点・doctor対応関係は [reference/consistency-checks.md](reference/consistency-checks.md) を参照。
46
47
 
47
- ### 3. レビュー結果レポートの作成
48
+ > **エージェントの役割範囲**
49
+ >
50
+ > - **doctor 対応観点**: エージェントの役割は doctor の出力(JSON)の解釈と修正提案に限定する。`ls`/`grep`/`jq` 等で同じ検査を再実装しない。
51
+ > - **doctor 非対応観点**: エージェントの役割は「読解判断+証拠引用」である。Read/Grep/Glob を自由に使って該当ドキュメントを確認し、判定には必ず file:line の引用を伴わせる。
48
52
 
49
- 検出された問題(Error / Warning / OK)をまとめ、`docs/project/REVIEW-REPORT-YYYYMMDDHHMMSS.md` を作成する。フォーマットは [examples/review-report-template.md](examples/review-report-template.md#レポートフォーマット) を参照。
53
+ - **2.1 ユーザーストーリー シナリオ**(一部 doctor 対応): US-XXX に対応する SC-XXX の存在、価値と結果の整合
54
+ - **2.2 MVP スコープ/実装済み機能 ↔ シナリオ**(doctor 対応): Must 機能/リグレッション用のカバレッジ
55
+ - **2.3 クリティカル制約 ↔ スコープ/ドメイン**(doctor 非対応): Product Brief のクリティカル制約(法務・セキュリティ・期限・予算等)が MVP スコープ判断・ドメインモデルに反映されているか(初期フェーズでは定量 NFR ではなく制約を確認。詳細 NFR は a-014 の責務)
56
+ - **2.4 Core Scenario ↔ Domain Sketch**(doctor 非対応): アクター・中核エンティティ・重要ビジネスルールの対応(Full DDD 採用時は Command / Event / Actor の対応も)
57
+ - **2.5 ユビキタス言語**(doctor 非対応): 主要要素の登録、禁止用語の検出
58
+ - **2.6 目的との整合性**(doctor 非対応): Product Brief の価値提案と Domain Sketch の中核エンティティ(Full DDD 採用時は Core Domain)の一致、および**目的 ↔ 成功指標**の整合・成功指標の計測可能性
59
+ - **2.7 MVP 正当化 / 過剰作り込み(YAGNI)**(大半が doctor 非対応): 各 Must が課題/ペルソナ/指標/仮説に trace するか、Out of Scope と矛盾しないか、安い代替手段で済むものが Must になっていないか
60
+
61
+ `placeholder` の finding はどの観点にも一対一対応しないため、判断材料としてのみ使う(必要なら該当観点のコメント欄に file:line 付きで補足する)。
62
+
63
+ ### 3. PM Gate 判定(Go / Go with caveats / No-Go)
64
+
65
+ 観点別 PASS/FAIL 表から次の規則で機械的に導出する(恣意的な総合判断をしない):
66
+
67
+ - **クリティカル観点**: 2.3(クリティカル制約)/ 2.4(Core Scenario↔Domain Sketch)/ 2.7(MVP正当化)
68
+ - **No-Go**: クリティカル観点のいずれかが FAIL、または FAIL の観点数が3以上
69
+ - **Go with caveats**: FAIL が1〜2件あるが、すべて非クリティカル観点(2.1/2.2/2.5/2.6)
70
+ - **Go**: 全観点 PASS(コメント欄の Warning 注記は着手を妨げない)
71
+
72
+ 補助チェックリスト(各項目は対応する観点番号の FAIL/PASS を根拠として引用する):
73
+
74
+ - [ ] 検証する仮説が 1〜3 個に絞れている(→ 2.7)
75
+ - [ ] すべての Must 機能が 課題 / ペルソナ / 成功指標 / 検証仮説 のいずれかに紐づいている(→ 2.7)
76
+ - [ ] Not Now / Won't が明示され、理由が書かれている(→ 2.7)
77
+ - [ ] 手作業・既存ツール・外部サービスで代替できるものを Must にしていない(→ 2.7)
78
+ - [ ] ステークホルダー・決裁者・関心事が明確である(→ 2.6)
79
+ - [ ] クリティカル制約が MVP 判断に反映されている(→ 2.3)
80
+ - [ ] 未決事項が実装開始を妨げないレベルまで減っている(→ 全観点)
81
+
82
+ ### 4. レビュー結果レポートの作成
83
+
84
+ 観点別 PASS/FAIL の結果と PM Gate 判定をまとめ、`docs/project/REVIEW-REPORT-YYYYMMDDHHMMSS.md` を作成する。フォーマットは [examples/review-report-template.md](examples/review-report-template.md#レポートフォーマット) を参照。
50
85
 
51
86
  必須セクション:
52
87
 
53
- - サマリー(OK / Warning / Error の件数)
54
- - 詳細(上記 6 観点ごとの結果)
88
+ - サマリー(観点別 PASS/FAIL の件数。doctor summary の errors/warnings を参考値として併記)
89
+ - 詳細(7 観点ごとの PASS/FAIL・根拠(file:line引用)・コメント。2.7 では**過剰作り込み候補**を明示)
90
+ - PM Gate 判定(Go / Go with caveats / No-Go と、観点別表からの導出根拠)
55
91
  - 推奨アクション(修正すべきタスクとスキル参照)
56
92
 
57
- ### 4. 結果の報告と修正提案
93
+ ### 5. ステークホルダー要約 / AI コンテキストの生成
94
+
95
+ このスキルの配置ディレクトリ(`skills/a-006-review-requirements-domain/`)を起点に、次の 2 テンプレートを Read→Write で生成する。出力先が既に存在する場合は確認の上、最新内容で更新する。
96
+
97
+ - `../../templates/project/STAKEHOLDER-SUMMARY.md` → `docs/project/STAKEHOLDER-SUMMARY.md`
98
+ - `../../templates/project/AI_CONTEXT.md` → `docs/project/AI_CONTEXT.md`
99
+
100
+ 上流ドキュメント(`01-product-brief.md` / `02-mvp-scope.md` / `02-behavior/01-core-scenarios.md` / `03-domain/`)を**要約・参照**して各テンプレートを埋める(single source of truth を複製しない)。`AI_CONTEXT.md` には **MVP must NOT build**(Won't / Out of Scope)を必ず明記する。`STAKEHOLDER-SUMMARY.md` には手順3の PM Gate 判定を転記する。
101
+
102
+ ### 6. 結果の報告と修正提案
58
103
 
59
- - レポート内容を要約してユーザーに伝える。
60
- - 重大なエラー(Error)がある場合は優先修正を提案。
104
+ - レポートと PM Gate 判定を要約してユーザーに伝える。
105
+ - 重大なエラー(Error)や No-Go がある場合は優先修正を提案。
106
+ - Go / Go with caveats の場合は「`docs/project/AI_CONTEXT.md` を実装エージェント(Vibe coding / AI 実装)へ渡してください」と案内する。
61
107
  - 「修正作業を開始しますか?それともレポートを Git に保存して終了しますか?」
62
108
 
63
- ### 5. Git への追加(任意)
109
+ ### 7. Git への追加(任意)
64
110
 
65
111
  ```bash
66
- git add docs/project/REVIEW-REPORT-*.md
67
- git commit -m "docs: 要件・ドメイン整合性レビューレポートの作成"
112
+ git add docs/project/REVIEW-REPORT-*.md docs/project/STAKEHOLDER-SUMMARY.md docs/project/AI_CONTEXT.md
113
+ git commit -m "docs: PM Gate レビュー(要約・AI コンテキスト含む)の作成"
68
114
  ```
69
115
 
70
116
  ## 完了条件
71
117
 
72
- - `docs/project/REVIEW-REPORT-YYYYMMDDHHMMSS.md` が作成されている。
73
- - 全ドキュメント間の整合性がチェックされ、結果(OK/Warning/Error)が記録されている。
118
+ - `docs/project/REVIEW-REPORT-YYYYMMDDHHMMSS.md` が作成され、7 観点の結果と PM Gate 判定(Go / Go with caveats / No-Go)が記録されている。
119
+ - 全ドキュメント間の整合性がチェックされ、観点ごとの判定(PASS/FAIL)と根拠(file:line引用)が記録されている。doctor対応観点はfindingsの転記、非対応観点は読解判断+引用になっている。
120
+ - 各 Must 機能の MVP 正当化が検査され、trace しない機能が**過剰作り込み候補**としてフラグされている。
121
+ - `docs/project/STAKEHOLDER-SUMMARY.md` と `docs/project/AI_CONTEXT.md` が生成され、`AI_CONTEXT.md` に「作らないもの(must NOT build)」が明記されている。
74
122
  - 具体的な修正アクションが提案されている。
75
123
 
76
124
  ## エスカレーション
@@ -81,5 +129,7 @@ git commit -m "docs: 要件・ドメイン整合性レビューレポートの
81
129
 
82
130
  ## 参考
83
131
 
84
- - [examples/review-report-template.md](examples/review-report-template.md) — レビュー結果レポートのフォーマット例と重大度記号
85
- - [reference/consistency-checks.md](reference/consistency-checks.md) — 6 観点の詳細なチェック項目、grep コマンド例、エスカレーション基準
132
+ - [examples/review-report-template.md](examples/review-report-template.md) — レビュー結果レポートのフォーマット例、PASS/FAIL判定ルール、PM Gate 判定の使い方
133
+ - [reference/consistency-checks.md](reference/consistency-checks.md) — doctor findingsの観点マッピング、7 観点(MVP 正当化/YAGNI 含む)の詳細なチェック項目、doctor非対応観点のgrep補助例、エスカレーション基準
134
+ - [../../templates/project/STAKEHOLDER-SUMMARY.md](../../templates/project/STAKEHOLDER-SUMMARY.md) — ステークホルダー向け統合1枚もののテンプレート
135
+ - [../../templates/project/AI_CONTEXT.md](../../templates/project/AI_CONTEXT.md) — AI 実装用の圧縮コンテキストのテンプレート
@@ -1,6 +1,6 @@
1
1
  # レビュー結果レポートテンプレート
2
2
 
3
- SKILL.md 手順3 で作成する `docs/project/REVIEW-REPORT-*.md` のフォーマット例。
3
+ SKILL.md 手順4 で作成する `docs/project/REVIEW-REPORT-*.md` のフォーマット例。
4
4
 
5
5
  ## レポートフォーマット
6
6
 
@@ -8,48 +8,63 @@ SKILL.md 手順3 で作成する `docs/project/REVIEW-REPORT-*.md` のフォー
8
8
  # ドキュメント一貫性レビュー結果
9
9
 
10
10
  **実施日**: YYYY-MM-DD
11
+ **doctor**: `yodogawa doctor --json` 実行結果 summary = errors: 2, warnings: 3
11
12
 
12
13
  ## サマリー
13
14
 
14
- - OK: X 項目
15
- - Warning: X 項目
16
- - Error: X 項目
15
+ - 観点別判定: PASS 6 / FAIL 1(全7観点)
16
+ - PM Gate 判定: Go with caveats
17
17
 
18
- ## 詳細
18
+ ## 詳細(観点別 PASS/FAIL)
19
19
 
20
- ### 1. ユーザーストーリー シナリオ
20
+ | 観点 | 判定 | 根拠(file:line) | コメント |
21
+ |:--|:--:|:--|:--|
22
+ | 2.1 ユーザーストーリー ↔ シナリオ | FAIL | `docs/project/01-requirements/05-user-stories.md:18`: 「ペルソナ: P-999」 | US-005 が参照する P-999 が product-brief 未定義(doctor id-trace error)。逆方向coverage・「価値」↔「Then」整合は未確認(doctor非対応部分) |
23
+ | 2.2 MVP スコープ ↔ シナリオ | PASS | `docs/project/02-behavior/01-core-scenarios.md:40`: 「## CS-003 決済」 | 全 Must がシナリオでカバー済み(doctor id-trace: FN未参照Warningなし) |
24
+ | 2.3 クリティカル制約 ↔ スコープ/ドメイン | PASS | `docs/project/01-requirements/01-product-brief.md:23`: 「社内SSO必須」 | MVP Scope・ドメインに反映確認済み(Read手動確認、doctor非対応) |
25
+ | 2.4 Core Scenario ↔ Domain Sketch | PASS | `docs/project/02-behavior/01-core-scenarios.md:52`: 「在庫を引き当てる」 | Domain Sketch の重要ビジネスルールに対応記述あり(Read手動確認、doctor非対応) |
26
+ | 2.5 ユビキタス言語 | PASS | `docs/project/03-domain/02-ubiquitous-language.md:9`: 「ShippingAddress」 | 用語登録済み。禁止用語なし(Read手動確認、doctor非対応) |
27
+ | 2.6 目的との整合性 | PASS | `docs/project/01-requirements/01-product-brief.md:30`: 「North Star: 週次アクティブ率」 | 価値提案と成功指標は整合(Read手動確認、doctor非対応) |
28
+ | 2.7 MVP正当化/過剰作り込み | PASS | `docs/project/01-requirements/02-mvp-scope.md:15`: 「実績バッジ→Not Now」 | 全MustがProduct Briefの課題/指標/仮説にtrace済み(Read手動確認)。注記(Warning): 孤児ペルソナ `01-product-brief.md:8` P-004 が `05-user-stories.md` から未参照(doctor id-trace warning)。過剰ペルソナの可能性、次回改訂で確認 |
21
29
 
22
- - **Error**: US-005 に対応するシナリオが見つかりません。
23
- - OK: 優先度 High のストーリーはすべてカバーされています。
30
+ ## PM Gate 判定
24
31
 
25
- ### 2. 機能要件・非機能要件
32
+ 観点別 PASS/FAIL 表から次の規則で導出する(恣意的な総合判断をしない)。
26
33
 
27
- - **Warning**: 実装済み機能「決済」のシナリオが不足しています。
28
- - OK: パフォーマンス要件に対応する Read Model が定義されています。
34
+ - クリティカル観点(2.3/2.4/2.7)はすべて PASS
35
+ - FAIL 2.1(非クリティカル)の1件のみ 「Go with caveats」の条件(FAIL1〜2件、すべて非クリティカル)に合致
29
36
 
30
- ### 3. シナリオ ↔ ドメインモデル
37
+ **判定**: Go with caveats
31
38
 
32
- - **Warning**: シナリオ SC-003 の Command「在庫を引き当てる」がドメインモデルに未定義です。
39
+ **根拠**: FAIL = 2.1(1件、非クリティカル)。クリティカル観点(2.3/2.4/2.7)はすべて PASS。
33
40
 
34
- ### 4. ユビキタス言語
35
-
36
- - **Error**: 用語「ShippingAddress」がユビキタス言語一覧にありません。
37
- - **Warning**: 禁止用語「User Data」が `01-domain-model.md` で使用されています。
41
+ **caveat**:
42
+ 1. 2.1: US-005 のペルソナ参照修正を条件に着手可
38
43
 
39
44
  ## 推奨アクション
40
45
 
41
- 1. `/a-003-create-scenarios` US-005 のシナリオを追加する。
42
- 2. `/a-004-define-domain-model` で「在庫を引き当てる」コマンドを定義する。
43
- 3. `01-domain-model.md` の「User Data」を「User Profile」に修正する。
46
+ 1. `docs/project/01-requirements/05-user-stories.md` US-005 ペルソナ参照を修正する。
47
+ 2. (Warning注記)孤児ペルソナ P-004 がスコープ漏れか過剰ペルソナか、次回改訂で確認する。
44
48
  ```
45
49
 
46
- ## 重大度記号の使い方
50
+ ## 判定ルールの使い方
51
+
52
+ | 判定 | 意味 | 根拠列の要件 |
53
+ |:--|:--|:--|
54
+ | PASS | 観点内に Error 相当の指摘が無い | Warning相当の注記があれば file:line 付きでコメント欄に残す(消さない) |
55
+ | FAIL | 観点内に Error 相当の指摘が1件以上 | 根拠列に file:line と該当行の引用が1件以上必須 |
56
+
57
+ doctor findingsを転記する場合も、`message`をそのままコピペせず、file:lineをReadで開いて実際の行を引用する(詳細は[reference/consistency-checks.md](../reference/consistency-checks.md#doctor-findings-の観点マッピング))。
58
+
59
+ ## PM Gate 判定の使い方
60
+
61
+ 観点別 PASS/FAIL 表からの機械的導出規則(SKILL.md 手順3参照):
47
62
 
48
- | 記号 | 意味 | 対応 |
63
+ | 判定 | 導出条件 | 次のアクション |
49
64
  |:--|:--|:--|
50
- | OK | 問題なし | 記録のみ |
51
- | Warning | 軽微な不整合 | 計画的に修正 |
52
- | Error | 重大な不整合 | 実装前に必ず修正 |
65
+ | Go | 全観点 PASS | `AI_CONTEXT.md` を実装エージェントへ渡す |
66
+ | Go with caveats | FAILが1〜2件、すべて非クリティカル観点(2.1/2.2/2.5/2.6) | caveat を明記し、合意の上で着手 |
67
+ | No-Go | クリティカル観点(2.3/2.4/2.7)がFAIL、またはFAIL総数3以上 | 実装前に該当ドキュメントを修正し再レビュー |
53
68
 
54
69
  ## コミットメッセージ例
55
70
 
@@ -1,39 +1,61 @@
1
1
  # 一貫性チェック項目詳細
2
2
 
3
- SKILL.md 手順2 で実施する各チェック項目の詳細。自動検索(grep 等)と手動確認を組み合わせる。
3
+ SKILL.md 手順2 で実施する各チェック項目の詳細。doctor が機械的に検出する部分は findings の転記、doctor 非対応の意味内容の判断は Read/Grep による手動確認+file:line 引用の組み合わせで検証する。
4
4
 
5
- ## 2.1 ユーザーストーリー ↔ シナリオ
5
+ ## doctor findings の観点マッピング
6
6
 
7
- - **カバレッジ**: すべての US-XXX に対応する SC-XXX が存在するか。
8
- - **整合性**: ストーリーの「価値」とシナリオの「結果(Then)」が一致しているか。
7
+ `yodogawa doctor --json`(手順1)の `findings[]` `docs/project` 配下のみを検査対象とし、`{check, severity, file, line, message}` を返す。以下の対応表に従い、該当する観点へ**そのまま転記**する(grep での再実装はしない)。file:line は Read で開いて実際の行を引用すること(message は合成文のため、原文の引用を別途添える)。
9
8
 
10
- ```bash
11
- # 全ユーザーストーリーの ID 抽出
12
- grep -oE "US-[0-9]+" docs/project/01-requirements/05-user-stories.md | sort -u
13
- # シナリオ側の参照
14
- grep -oE "US-[0-9]+" docs/project/02-behavior/01-scenarios.md | sort -u
15
- ```
9
+ | doctor check | finding 条件 | severity | 対応観点 | 備考 |
10
+ |---|---|---|---|---|
11
+ | `id-trace` | `id` が `US-` の finding(trace切れ) | error | 2.1 | US 側の片方向 trace 切れのみ検出。逆方向(Core Scenario→US の対応漏れ)とストーリーの「価値」↔シナリオ「Then」の整合は非対応(Read で確認) |
12
+ | `id-trace` | `id` が `P-` の finding(trace切れ) | error | 2.1(役割↔ペルソナ) | `05-user-stories.md` が参照する未定義ペルソナ |
13
+ | `id-trace` | `id` が `P-` の finding(孤児=`05-user-stories.md`から未参照) | warning | 2.7(傍証) | 孤児ペルソナの検出のみ。Must の trace 判断そのものの代替にはならない |
14
+ | `id-trace` | `id` が `FN-` の finding(trace切れ) | error | 2.2 | |
15
+ | `id-trace` | `id` が `FN-` の finding(`02-behavior/01-core-scenarios.md` から未参照) | warning | 2.2 | Must機能のシナリオカバレッジ。doctor が最も強くカバーする部分 |
16
+ | `structure` | `file` が `01-requirements/`〜`03-domain/` 配下 | error/warning | 手順1(前提) | 観点表には含めない。存在確認・必須見出しの欠落シグナル |
17
+ | `placeholder` | 同上 | warning | 参考情報 | どの観点にも一対一対応しない。未記入セクションの兆候として補足に使う程度 |
18
+
19
+ **doctor が対応しない観点(2.3〜2.6、2.7の大半)は、上記マッピングに現れない。エージェントが Read/Grep で内容を確認し、判定には file:line の引用を必須とする。**
20
+
21
+ ## 2.1 ユーザーストーリー ↔ Core Scenario
22
+
23
+ - **カバレッジ**: MVP Scope の Must 機能に対応する Core Scenario(Day 1 Happy Path)が存在するか。User Story は要約 AC、Core Scenario は実行時の主要行動という SSoT の住み分けを保つ(全 US を逐一シナリオ化しない)。doctor 非対応(上記マッピング表参照)。Read で `05-user-stories.md` と `02-behavior/01-core-scenarios.md` を確認する。
24
+ - **整合性**: ストーリーの「価値」と Core Scenario の「結果(Then)」が一致しているか。doctor 非対応。
25
+
26
+ ### ユーザーストーリーの役割 ↔ ペルソナ(trace)
27
+
28
+ - **役割が宙に浮かない**: `05-user-stories.md` の各ストーリーの「ペルソナ」列が、`01-product-brief.md` のペルソナ表で定義済みの ID(P-XXX)を参照しているか。**未定義のペルソナを参照する US はフラグ**する(役割の trace 切れ)。doctor の `id-trace`(P族 trace切れ、上記マッピング表)をそのまま転記する。
29
+ - **逆方向(任意)**: どの US からも参照されない主要ペルソナがあれば、スコープ漏れか過剰ペルソナのどちらかとして確認する。doctor の `id-trace`(P族 孤児、severity=warning)で検出できる。
30
+
31
+ ## 2.2 MVP スコープ・実装済み機能 ↔ シナリオ
32
+
33
+ - **MVP スコープ**: `02-mvp-scope.md` の Must 機能にシナリオが存在するか。doctor の `id-trace`(FN族、上記マッピング表)がそのまま使える。
34
+ - **実装済み機能**: `06-features-implemented.md`(existing モード)の機能にリグレッション用シナリオが存在するか。同じく FN 族で検出される。
35
+ - **Parking Lot**: `03-parking-lot.md` は backlog のためシナリオ必須ではない(MVP 昇格時に MVP スコープ側で扱う)。doctor 非対応(この除外判断自体は Read で確認)。
16
36
 
17
- ## 2.2 実装済み機能・予定機能シナリオ
37
+ ## 2.3 クリティカル制約スコープ/ドメイン
18
38
 
19
- - **実装済み機能**: `02-features-implemented.md` の機能にリグレッション用シナリオが存在するか。
20
- - **予定機能**: `03-features-planned.md` の優先度 High 機能にシナリオが存在するか。
39
+ 初期フェーズでは定量 NFR ではなく、Product Brief の「クリティカル制約」を確認する(詳細な定量 NFR は設計フェーズ `/a-014-define-infrastructure` の責務)。**doctor 非対応。** doctor は制約の「反映」という意味内容を判断できないため、Read で確認し file:line を引用する。
21
40
 
22
- ## 2.3 非機能要件 ドメインモデル
41
+ - **制約の反映**: `01-product-brief.md` のクリティカル制約(法務・セキュリティ・期限・予算・外部 API 等)が `02-mvp-scope.md` の Must 判断やドメインモデルに反映されているか。
42
+ - **セキュリティ・権限**: 制約に挙げた認証・権限要件が Policy や Guard としてドメインモデルに含まれているか。
23
43
 
24
- - **パフォーマンス**: `04-non-functional-requirements.md` の要件(読み込み速度、スループット等)に対し、Read Model CQRS が検討されているか。
25
- - **セキュリティ**: 認証・権限要件が Policy や Guard としてドメインモデルに含まれているか。
44
+ ## 2.4 Core Scenario Domain Sketch
26
45
 
27
- ## 2.4 シナリオドメインモデル
46
+ **doctor 非対応。** Core Scenario Domain Sketch の対応関係を機械検査する ID 族は存在しない。Read で確認し file:line を引用する。
28
47
 
29
- - **Command**: シナリオの When(アクション)がドメインモデルの Command として定義されているか。
30
- - **Event**: シナリオの Then(結果)が Domain Event として定義されているか。
31
- - **Actor**: シナリオの Actor がドメインモデルに存在するか。
48
+ - **アクター**: Core Scenario のアクターが Domain Sketch の「アクター / 外部システム」に存在するか。
49
+ - **中核エンティティ**: Core Scenario が扱う対象が Domain Sketch の「中核エンティティ」に定義されているか。
50
+ - **重要ルール**: Critical Failure を防ぐルールが「重要なビジネスルール」に反映されているか。
51
+ - **Full DDD 採用時**: `01-domain-model.md` がある場合は、When→Command / Then→Event / Actor の対応も確認する。
32
52
 
33
53
  ## 2.5 ユビキタス言語の遵守
34
54
 
35
- - **用語定義**: ドメインモデルの主要要素(Aggregate, Command, Event)がユビキタス言語一覧にあるか。
36
- - **禁止用語**: 各ドキュメントに禁止用語(Data, Process, Manager 等)が使われていないか。
55
+ **doctor 非対応。**
56
+
57
+ - **用語定義**: Domain Sketch の主要用語・中核エンティティ(Full DDD 採用時は Aggregate / Command / Event)がユビキタス言語一覧にあるか。
58
+ - **禁止用語**: 各ドキュメントに禁止用語(Data, Process, Manager 等)が使われていないか。**用語の意味判断は doctor では担保できないため、以下の grep は補助検索として引き続き手動実行する(doctor で代替できない)。**
37
59
 
38
60
  ```bash
39
61
  # 禁止用語の簡易検索
@@ -44,8 +66,29 @@ grep -rn "Manager" docs/project/03-domain/ || echo "No 'Manager' found"
44
66
 
45
67
  ## 2.6 目的との整合性
46
68
 
47
- - システム概要(`01-system-overview.md`)の「目的」とドメインモデルの「Core Domain」が一致しているか。
48
- - ビジネス価値の提供元が Core に寄っているか(Generic に偏っていないか)。
69
+ **doctor 非対応。**
70
+
71
+ - Product Brief(`01-product-brief.md`)の「価値提案 / 差別化」が Domain Sketch の「中核エンティティ」「重要なビジネスルール」に反映されているか。
72
+ - **価値提案の充足**: 「価値提案 / 差別化」のバリュープロポジション(1文)と差別化ポイント(Why us)が埋まり、Why us が「現在の代替手段・競合スキャン」表の各「弱み」と対応づいているか(漠然と「使いやすい」で済ませていないか)。
73
+ - **目的 ↔ 成功指標**: Product Brief の成功指標(North Star / KPI / Guardrail)が「価値提案 / 解く課題」と整合しているか(目的と無関係な指標を測っていないか)。
74
+ - **計測可能性**: 各成功指標に計測方法(どこで・どう取得)が記載され、計測可能か。今すぐ取れない指標が代理指標に置き換えられているか(MVP 段階は仮説値で可)。
75
+ - Full DDD(`01-domain-model.md`)採用時は、ビジネス価値の提供元が Core Domain に寄っているか(Generic に偏っていないか)も確認する。
76
+
77
+ ## 2.7 MVP 正当化 / 過剰作り込み(YAGNI / PM Gate)
78
+
79
+ 「要らないものを作らない」を守るためのスコープ妥当性検査。**大半が doctor 非対応。** 孤児ペルソナ(doctor `id-trace` P族 warning、上記マッピング表)は過剰作り込みの傍証になるが、Must の trace 判断そのものの代替にはならない。以下は Read で確認し file:line を引用する。
80
+
81
+ - **Must の trace**: `02-mvp-scope.md` の各 Must 機能が、Product Brief の 課題 / ターゲット(ペルソナ)/ 成功指標 / 検証仮説 のいずれかに紐づくか。**いずれにも trace しない Must は過剰作り込み候補としてフラグ**する。
82
+ - **Out of Scope の矛盾**: `02-mvp-scope.md` の Won't / Out of Scope に挙げた機能が、他ドキュメント(シナリオ・ドメインモデル・`05-user-stories.md`)で実装対象として記述されていないか。doctor では代替できないため、以下の grep は補助検索として引き続き手動実行する。
83
+ - **安い代替手段**: 手作業・既存ツール・外部サービスで足りるものが Must になっていないか(`02-mvp-scope.md` の「より安い代替手段」列を確認)。
84
+ - **仮説の数**: 検証する仮説が 1〜3 個に絞れているか(多すぎる=MVP が過大)。
85
+
86
+ > 成功指標と目的の整合(目的 ↔ 成功指標)・計測可能性は [2.6 目的との整合性](#26-目的との整合性)で検査する。
87
+
88
+ ```bash
89
+ # Out of Scope(Won't)に挙げた機能名が他 doc に混入していないか(例)
90
+ grep -rn "{Won't機能名}" docs/project/02-behavior/ docs/project/03-domain/
91
+ ```
49
92
 
50
93
  ## エスカレーションの判断材料
51
94
 
@@ -1,99 +1,99 @@
1
- ---
2
- name: a-007-define-tech-stack
3
- description: 要件とドメインモデルを踏まえて推奨技術スタックを提案し、対話で最終確定する。ドメイン設計完了後、実装技術を選定する際に使用。
4
- disable-model-invocation: true
5
- allowed-tools: Read, Write, Edit, Bash, Grep, Glob
6
- ---
7
-
8
- # DefineTechStack (a-007)
9
-
10
- ## 目的
11
-
12
- - 既存の要件ドキュメント(システム概要、非機能要件、ドメインモデル)を分析し、適合する技術スタックを推奨する。
13
- - 推奨案を提示した上で、ユーザーと詳細なインタビューを行い、すべての技術選定を明確化する。
14
- - 技術選定の理由、バージョン、選定タイミング(初期/中期/後期/随時)を明確に記録する。
15
-
16
- ## 前提
17
-
18
- - `docs/project/01-requirements/` 配下のドキュメントが作成されていること。
19
- - `docs/project/03-domain/` 配下のドキュメントが作成されていること。
20
- - `docs/project/04-design/` ディレクトリが存在すること(未作成なら `/a-001-setup-doc-structure`)。
21
-
22
- ## 手順
23
-
24
- ### 1. ドキュメントと前提条件の確認
25
-
26
- ```bash
27
- ls -la docs/project/04-design/ 2>/dev/null || echo "ディレクトリが存在しません"
28
- ```
29
-
30
- 要件ドキュメント(`01-system-overview.md`, `03-features-planned.md`, `04-non-functional-requirements.md`)とドメインモデル(`01-domain-model.md`)を読み込む。
31
-
32
- ### 2. テンプレートの準備
33
-
34
- このスキルの配置ディレクトリ(`skills/a-007-define-tech-stack/`)を起点に、相対パス `../../templates/project/04-design/01-tech-stack.md` を Read で読み込み、その内容を `docs/project/04-design/01-tech-stack.md` へ Write する。出力先が既に存在する場合は上書きせずスキップして報告する(冪等)。出力先ディレクトリ(`docs/project/04-design/`)が無ければ作成する。
35
-
36
- ### 3. 要件分析と推奨技術スタックの生成
37
-
38
- - **システム特性の分析**: アプリケーションタイプ(SPA/SSR 等)、非機能要件、ドメイン複雑度
39
- - **レイヤー別推奨**: フロントエンド / バックエンド / データベース / インフラ・CI/CD / 監視・テスト
40
- - **提示形式**: 各技術に「推奨理由」と「代替案」を付ける
41
-
42
- 提案フォーマットと各層の候補一覧は [examples/stack-interview.md](examples/stack-interview.md#推奨案提示フォーマット) を参照。
43
-
44
- ### 4. 詳細インタビューと選定
45
-
46
- フィードバックを受けてレイヤーごとに詳細確認する。各レイヤーの具体的な質問項目は [examples/stack-interview.md](examples/stack-interview.md#レイヤー別インタビュー項目) を参照。
47
-
48
- - フロントエンド: フレームワーク、TypeScript、状態管理、スタイリング
49
- - バックエンド: 言語、フレームワーク、API スタイル
50
- - データベース: RDBMS/NoSQL、ORM、マイグレーション
51
- - インフラ: クラウド、コンテナ、IaC
52
- - 開発ツール: リンター、テスト、CI/CD
53
-
54
- ### 5. ドキュメント作成
55
-
56
- ヒアリング結果を `docs/project/04-design/01-tech-stack.md` に記入する。必須項目:
57
-
58
- - 技術名、バージョン
59
- - 選定理由(要件とのマッピング)
60
- - 選定タイミング(初期/中期/後期/随時)
61
-
62
- 記入例は [examples/stack-interview.md](examples/stack-interview.md#記入例表形式) を参照。
63
-
64
- ### 6. 構造チェック
65
-
66
- ```bash
67
- grep "### フロントエンド" docs/project/04-design/01-tech-stack.md \
68
- && grep "### バックエンド" docs/project/04-design/01-tech-stack.md \
69
- && echo "OK" || echo "MISSING SECTION"
70
- ```
71
-
72
- 詳細チェックリストは [reference/structure-check.md](reference/structure-check.md#チェックリスト) を参照。
73
-
74
- ### 7. Git への追加(任意)
75
-
76
- ```bash
77
- git add docs/project/04-design/01-tech-stack.md
78
- git commit -m "docs: 技術スタック選定ドキュメントの作成"
79
- ```
80
-
81
- 詳細は [reference/structure-check.md](reference/structure-check.md#git-への追加任意) を参照。
82
-
83
- ## 完了条件
84
-
85
- - `docs/project/04-design/01-tech-stack.md` が作成されている。
86
- - すべてのレイヤーについて技術選定が完了している(または「保留」として記録されている)。
87
- - 選定理由とバージョンが明確になっている。
88
- - ユーザーが内容を承認している。
89
-
90
- ## エスカレーション
91
-
92
- - **ユーザーが決められない**: 「要件に基づき、最も標準的でリスクの少ない [技術名] を仮採用とし、実装フェーズで再評価しませんか?」
93
- - **コスト・学習コストの懸念**: 「初期フェーズは慣れた技術([技術名])を採用し、複雑要件が出てから移行検討しましょう。」
94
- - 詳細応答例は [reference/structure-check.md](reference/structure-check.md#エスカレーション時の推奨応答) を参照。
95
-
96
- ## 参考
97
-
98
- - [examples/stack-interview.md](examples/stack-interview.md) — 推奨案フォーマット、レイヤー別インタビュー項目、選定タイミング区分、記入例
99
- - [reference/structure-check.md](reference/structure-check.md) — 構造確認コマンド、チェックリスト、レビュー質問、Git 追加例
1
+ ---
2
+ name: a-007-define-tech-stack
3
+ description: 要件とドメインモデルを踏まえて推奨技術スタックを提案し、対話で最終確定する。ドメイン設計完了後、実装技術を選定する際に使用。
4
+ disable-model-invocation: true
5
+ allowed-tools: Read, Write, Edit, Bash, Grep, Glob
6
+ ---
7
+
8
+ # DefineTechStack (a-007)
9
+
10
+ ## 目的
11
+
12
+ - 既存の要件ドキュメント(Product Brief(クリティカル制約含む)、ドメインモデル)を分析し、適合する技術スタックを推奨する。
13
+ - 推奨案を提示した上で、ユーザーと詳細なインタビューを行い、すべての技術選定を明確化する。
14
+ - 技術選定の理由、バージョン、選定タイミング(初期/中期/後期/随時)を明確に記録する。
15
+
16
+ ## 前提
17
+
18
+ - `docs/project/01-requirements/` 配下のドキュメントが作成されていること。
19
+ - `docs/project/03-domain/` 配下のドキュメントが作成されていること。
20
+ - `docs/project/04-design/` ディレクトリが存在すること(未作成なら `/a-001-setup-doc-structure`)。
21
+
22
+ ## 手順
23
+
24
+ ### 1. ドキュメントと前提条件の確認
25
+
26
+ ```bash
27
+ ls -la docs/project/04-design/ 2>/dev/null || echo "ディレクトリが存在しません"
28
+ ```
29
+
30
+ 要件ドキュメント(`01-product-brief.md`(クリティカル制約含む), `02-mvp-scope.md`)とドメイン(`01-domain-sketch.md`、Full DDD 採用時は `01-domain-model.md`)を読み込む。
31
+
32
+ ### 2. テンプレートの準備
33
+
34
+ このスキルの配置ディレクトリ(`skills/a-007-define-tech-stack/`)を起点に、相対パス `../../templates/project/04-design/01-tech-stack.md` を Read で読み込み、その内容を `docs/project/04-design/01-tech-stack.md` へ Write する。出力先が既に存在する場合は上書きせずスキップして報告する(冪等)。出力先ディレクトリ(`docs/project/04-design/`)が無ければ作成する。
35
+
36
+ ### 3. 要件分析と推奨技術スタックの生成
37
+
38
+ - **システム特性の分析**: アプリケーションタイプ(SPA/SSR 等)、クリティカル制約(NFR の要点)、ドメイン複雑度
39
+ - **レイヤー別推奨**: フロントエンド / バックエンド / データベース / インフラ・CI/CD / 監視・テスト
40
+ - **提示形式**: 各技術に「推奨理由」と「代替案」を付ける
41
+
42
+ 提案フォーマットと各層の候補一覧は [examples/stack-interview.md](examples/stack-interview.md#推奨案提示フォーマット) を参照。
43
+
44
+ ### 4. 詳細インタビューと選定
45
+
46
+ フィードバックを受けてレイヤーごとに詳細確認する。各レイヤーの具体的な質問項目は [examples/stack-interview.md](examples/stack-interview.md#レイヤー別インタビュー項目) を参照。
47
+
48
+ - フロントエンド: フレームワーク、TypeScript、状態管理、スタイリング
49
+ - バックエンド: 言語、フレームワーク、API スタイル
50
+ - データベース: RDBMS/NoSQL、ORM、マイグレーション
51
+ - インフラ: クラウド、コンテナ、IaC
52
+ - 開発ツール: リンター、テスト、CI/CD
53
+
54
+ ### 5. ドキュメント作成
55
+
56
+ ヒアリング結果を `docs/project/04-design/01-tech-stack.md` に記入する。必須項目:
57
+
58
+ - 技術名、バージョン
59
+ - 選定理由(要件とのマッピング)
60
+ - 選定タイミング(初期/中期/後期/随時)
61
+
62
+ 記入例は [examples/stack-interview.md](examples/stack-interview.md#記入例表形式) を参照。
63
+
64
+ ### 6. 構造チェック
65
+
66
+ ```bash
67
+ grep "### フロントエンド" docs/project/04-design/01-tech-stack.md \
68
+ && grep "### バックエンド" docs/project/04-design/01-tech-stack.md \
69
+ && echo "OK" || echo "MISSING SECTION"
70
+ ```
71
+
72
+ 詳細チェックリストは [reference/structure-check.md](reference/structure-check.md#チェックリスト) を参照。
73
+
74
+ ### 7. Git への追加(任意)
75
+
76
+ ```bash
77
+ git add docs/project/04-design/01-tech-stack.md
78
+ git commit -m "docs: 技術スタック選定ドキュメントの作成"
79
+ ```
80
+
81
+ 詳細は [reference/structure-check.md](reference/structure-check.md#git-への追加任意) を参照。
82
+
83
+ ## 完了条件
84
+
85
+ - `docs/project/04-design/01-tech-stack.md` が作成されている。
86
+ - すべてのレイヤーについて技術選定が完了している(または「保留」として記録されている)。
87
+ - 選定理由とバージョンが明確になっている。
88
+ - ユーザーが内容を承認している。
89
+
90
+ ## エスカレーション
91
+
92
+ - **ユーザーが決められない**: 「要件に基づき、最も標準的でリスクの少ない [技術名] を仮採用とし、実装フェーズで再評価しませんか?」
93
+ - **コスト・学習コストの懸念**: 「初期フェーズは慣れた技術([技術名])を採用し、複雑要件が出てから移行検討しましょう。」
94
+ - 詳細応答例は [reference/structure-check.md](reference/structure-check.md#エスカレーション時の推奨応答) を参照。
95
+
96
+ ## 参考
97
+
98
+ - [examples/stack-interview.md](examples/stack-interview.md) — 推奨案フォーマット、レイヤー別インタビュー項目、選定タイミング区分、記入例
99
+ - [reference/structure-check.md](reference/structure-check.md) — 構造確認コマンド、チェックリスト、レビュー質問、Git 追加例