yodogawa 2.1.3 → 2.2.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 (80) hide show
  1. package/CHANGELOG.md +134 -94
  2. package/LICENSE +1 -1
  3. package/README.md +351 -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 +59 -22
  34. package/skills/a-006-review-requirements-domain/examples/review-report-template.md +27 -7
  35. package/skills/a-006-review-requirements-domain/reference/consistency-checks.md +53 -18
  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/reference/consistency-checks.md +1 -1
  47. package/skills/b-001-create-task-directory/SKILL.md +68 -68
  48. package/skills/b-002-create-task-definition/SKILL.md +114 -114
  49. package/skills/b-003-create-task-research/SKILL.md +128 -128
  50. package/skills/b-004-create-task-implementation/SKILL.md +98 -98
  51. package/skills/b-005-review-task/reference/assessment-criteria.md +79 -79
  52. package/skills/c-001-implement-task/SKILL.md +186 -186
  53. package/skills/c-001-implement-task/reference/implementation-loop.md +65 -65
  54. package/skills/c-002-update-documentation/SKILL.md +159 -159
  55. package/skills/c-002-update-documentation/examples/project-doc-updates.md +4 -4
  56. package/skills/c-002-update-documentation/reference/doc-structure-and-checks.md +99 -97
  57. package/templates/project/01-requirements/01-product-brief.md +186 -0
  58. package/templates/project/01-requirements/02-mvp-scope.md +64 -0
  59. package/templates/project/01-requirements/03-parking-lot.md +29 -0
  60. package/templates/project/01-requirements/05-user-stories.md +28 -124
  61. package/templates/project/01-requirements/{02-features-implemented.md → 06-features-implemented.md} +77 -73
  62. package/templates/project/02-behavior/01-core-scenarios.md +80 -0
  63. package/templates/project/03-domain/01-domain-model.md +120 -339
  64. package/templates/project/03-domain/01-domain-sketch.md +90 -0
  65. package/templates/project/03-domain/02-ubiquitous-language.md +32 -153
  66. package/templates/project/04-design/01-tech-stack.md +367 -367
  67. package/templates/project/04-design/02-repository-structure.md +391 -391
  68. package/templates/project/04-design/03-screen-design.md +596 -596
  69. package/templates/project/04-design/04-design-system.md +261 -261
  70. package/templates/project/04-design/05-data-model.md +211 -211
  71. package/templates/project/04-design/06-api-spec.md +226 -226
  72. package/templates/project/04-design/07-architecture.md +183 -183
  73. package/templates/project/04-design/08-infrastructure.md +180 -180
  74. package/templates/project/AI_CONTEXT.md +55 -0
  75. package/templates/project/STAKEHOLDER-SUMMARY.md +66 -0
  76. package/templates/tasks/task-template/a-definition.md +143 -143
  77. package/templates/tasks/task-template/b-research.md +185 -185
  78. package/templates/tasks/task-template/c-implementation.md +200 -200
  79. package/templates/project/01-requirements/01-system-overview.md +0 -49
  80. package/templates/project/01-requirements/03-features-planned.md +0 -75
@@ -1,118 +1,145 @@
1
- ---
2
- name: a-002-initialize-project
3
- description: プロジェクトの要件を対話形式で収集し、システム概要・機能要件・非機能要件・ユーザーストーリーのドキュメントを生成する。新規プロジェクト開始時、または要件が未整備の場合に使用。
4
- disable-model-invocation: true
5
- allowed-tools: Read, Write, Edit, Bash, Grep, Glob
6
- ---
7
-
8
- # InitializeProject (a-002)
9
-
10
- ## 目的
11
-
12
- - プロジェクトの目的・背景・機能要件を詳細にヒアリングし、具体的で実装可能なドキュメントを作成する。
13
- - システム概要・実装済み機能・予定機能・非機能要件・ユーザーストーリーを網羅する。
14
- - 抽象的・曖昧な表現を避け、対話を通じて具体的な数値・期限・制約・優先度を明確化する。
15
-
16
- ## 前提
17
-
18
- - `docs/project/01-requirements/` ディレクトリが存在すること(なければ先に `/a-001-setup-doc-structure` を実行)
19
- - `docs/` に書き込み権限があること
20
- - ユーザーがプロジェクト概要と主要機能の基本情報を提供できること
21
-
22
- ## 手順
23
-
24
- ### 1. ドキュメントディレクトリの確認
25
-
26
- ```bash
27
- ls -la docs/project/01-requirements/ 2>/dev/null || echo "ディレクトリが存在しません"
28
- ```
29
-
30
- 存在しない場合: 「`docs/project/01-requirements/` がありません。先に `/a-001-setup-doc-structure` を実行してください。」
31
-
32
- ### 2. テンプレート一括コピー
33
-
34
- このスキルの配置ディレクトリ(`skills/a-002-initialize-project/`)を起点に、`docs/project/01-requirements/` へ次の 5 ファイルを Read→Write する(FOR EACH)。出力先に既に存在するファイルは上書きせずスキップして報告する(冪等)。出力先ディレクトリが無ければ作成する。
35
-
36
- - `../../templates/project/01-requirements/01-system-overview.md` → `docs/project/01-requirements/01-system-overview.md`
37
- - `../../templates/project/01-requirements/02-features-implemented.md` → `docs/project/01-requirements/02-features-implemented.md`
38
- - `../../templates/project/01-requirements/03-features-planned.md` → `docs/project/01-requirements/03-features-planned.md`
39
- - `../../templates/project/01-requirements/04-non-functional-requirements.md` → `docs/project/01-requirements/04-non-functional-requirements.md`
40
- - `../../templates/project/01-requirements/05-user-stories.md` → `docs/project/01-requirements/05-user-stories.md`
41
-
42
- ### 3. コードベースの自動分析と提案
43
-
44
- **規模確認**:
45
-
46
- ```bash
47
- ls -F
48
- ```
49
-
50
- ファイルがほとんど無い/ソースコードが無い場合はスキップし、ユーザーへ通知。
51
-
52
- **詳細調査**(コードがある場合):
53
-
54
- ```bash
55
- cat package.json 2>/dev/null
56
- cat README.md 2>/dev/null
57
- find src app lib -maxdepth 2 2>/dev/null
58
- ```
59
-
60
- 結果から以下を推測・提示: システム概要(目的・技術スタック)、実装済み機能(ファイル構造からの推測)、想定ユーザー像。
61
-
62
- ### 4. システム概要の記入
63
-
64
- `01-system-overview.md` を開き、「背景」「目的」をヒアリングして記入する。質問例は [reference/hearing-questions.md](reference/hearing-questions.md) を参照。
65
-
66
- ### 5. 実装済み機能一覧の記入
67
-
68
- `02-features-implemented.md` に、コードベース調査で検出したディレクトリ/ファイル名から機能を提案し、ヒアリング結果をテーブルに記入する(Category 1/2、機能名、説明、機能 ID)。
69
-
70
- コード調査コマンドとヒアリング項目は [reference/hearing-questions.md](reference/hearing-questions.md#手順4-実装済み機能一覧) を参照。
71
-
72
- ### 6. 予定機能一覧の記入
73
-
74
- `03-features-planned.md` に、システム概要と実装済み機能のギャップを分析して未実装機能を提案し、ヒアリング結果をテーブルに記入する(機能 ID・優先度は未確定のまま)。
75
-
76
- ### 7. 非機能要件の記入
77
-
78
- `04-non-functional-requirements.md` に、詳細定義が必要か確認の上、パフォーマンス/セキュリティ/可用性/スケーラビリティ/ユーザビリティ・保守性の観点で**定量的な目標**をヒアリングして記入する。不要なら標準ベースライン([examples/nfr-baseline.md](examples/nfr-baseline.md))で仮置きする。
79
-
80
- ### 8. ユーザーストーリーの記入
81
-
82
- `05-user-stories.md` に、作成済みドキュメントから主要ユーザージャーニーを抽出してストーリー案を提示し、ヒアリング結果をテーブルに記入する(優先度・受け入れ基準含む)。
83
-
84
- ストーリーテンプレート: 「[役割]として、[〇〇機能]を使いたい、なぜなら[価値]だから」
85
-
86
- ### 9. 全体レビュー
87
-
88
- - 作成した全ドキュメントをユーザーに提示し、以下を確認:
89
- - 「記載内容に誤りや漏れはありませんか?」
90
- - 「抽象的すぎる記述や、解釈が分かれそうな表現はありますか?」
91
- - 「テンプレートのコメントや不要な例示は適切に処理されていますか?」
92
-
93
- ### 10. 完了条件と構造の確認
94
-
95
- - ファイルの存在と主要セクション/テーブル構造を検証。
96
- - 検証コマンド・チェックリスト・Git コミット手順は [reference/structure-check.md](reference/structure-check.md) を参照。
97
-
98
- ### 11. Git への追加(オプション)
99
-
100
- 詳細は [reference/structure-check.md](reference/structure-check.md#git-への追加オプション) を参照。
101
-
102
- ## 完了条件
103
-
104
- - `docs/project/01-requirements/` に 5 つの要件定義ドキュメントが作成されている
105
- - すべてのドキュメントで抽象的表現が最小化され、具体的な数値・期限・制約が記載されている
106
- - ユーザーがドキュメント内容を確認し、承認またはフィードバックを提供している
107
-
108
- ## エスカレーション
109
-
110
- - **ユーザーが重要な情報を提供できない**: 「この情報は後続の設計・実装で必須です。確認できる担当者や資料はありますか?」と確認し、TODO として記録。
111
- - **競合する要件や矛盾**: 「以下の要件が競合しています: [詳細]。優先順位や調整方針を確認させてください。」と報告。
112
- - **想定工数が非現実的に大きい**: 「現在の計画では実現が困難です。スコープ縮小や優先度調整を検討しませんか?」と提案。
113
-
114
- ## 参考
115
-
116
- - [reference/hearing-questions.md](reference/hearing-questions.md) — 手順4〜8のヒアリング質問集
117
- - [reference/structure-check.md](reference/structure-check.md) — 手順10の構造チェックコマンドと Git コミット手順
118
- - [examples/nfr-baseline.md](examples/nfr-baseline.md) — 非機能要件の標準ベースライン提案値
1
+ ---
2
+ name: a-002-initialize-project
3
+ description: プロジェクトの問題定義(Why)を Product Brief(誰のどの課題を・なぜ今・どう解き・どう成功を測るか)として対話形式で作成し、要件定義の起点とする。MVP スコープ・ユーザーストーリーは後続スキルが担う。新規(greenfield)/ 既存(existing)の2モードに対応し、既定は新規。新規プロジェクト開始時、または要件が未整備の場合に使用。
4
+ disable-model-invocation: true
5
+ allowed-tools: Read, Write, Edit, Bash, Grep, Glob
6
+ ---
7
+
8
+ # InitializeProject (a-002)
9
+
10
+ ## 目的
11
+
12
+ - Product Brief を中核に、誰のどの課題を・なぜ今・どう解き・どう成功を測るかをステークホルダーと合意できる形で言語化する。
13
+ - 新規(greenfield)/ 既存(existing)の2モードに分岐し、既定は新規プロダクト。
14
+ - Product Brief を起点に後続スキルへ展開する: Parking Lot(アイデア backlog)と MVP スコープは `/a-002a-slice-mvp-scope`、ユーザーストーリーは `/a-002b-define-user-stories` が担う(実装済み機能の棚卸しは existing モードのみ本スキルが扱う)。
15
+ - 詳細な非機能要件(応答時間・稼働率・スケーラビリティ等の定量値)は初期フェーズでは扱わない。MVP の作り方を変えるほど重要な制約のみを Product Brief の「クリティカル制約」に集約し、定量 NFR は設計フェーズ `/a-014-define-infrastructure` が所有する。
16
+ - 抽象的・曖昧な表現を避け、対話を通じて具体的な数値・期限・制約・優先度を明確化する。
17
+
18
+ ## 前提
19
+
20
+ - `docs/` 配下への書き込み権限があること(必要なディレクトリ構造は本スキルが自動作成するため、`/a-001-setup-doc-structure` の事前実行は不要)
21
+ - ユーザーがプロジェクトの課題・対象ユーザー・期待価値の基本情報を提供できること
22
+
23
+ ## 手順
24
+
25
+ ### 1. ドキュメント基盤の確保
26
+
27
+ 要件定義に必要なディレクトリ構造を確保する。`mkdir -p` なので冪等で、明示的な `/a-001-setup-doc-structure` 実行は不要(必要時に本手順が自動で初期化する)。
28
+
29
+ ```bash
30
+ mkdir -p docs/project/01-requirements docs/project/02-behavior docs/project/03-domain docs/project/04-design docs/tasks
31
+ ```
32
+
33
+ `docs/README.md` が無ければ、[../a-001-setup-doc-structure/reference/directory-structure.md](../a-001-setup-doc-structure/reference/directory-structure.md#docsreadmemd-テンプレート) の「docs/README.md テンプレート」を Write する(既存の場合は上書きしない)。
34
+
35
+ ### 2. モード判定(greenfield / existing)
36
+
37
+ このスキルは新規プロダクト(**greenfield**)と既存プロダクト(**existing / brownfield**)の2モードに対応する。後続手順(テンプレート選定・コード分析・実装済み機能の棚卸し)の分岐に影響するため、最初にモードを確定する。
38
+
39
+ 判定ロジック:
40
+
41
+ - ユーザーがモードを明示した場合はそれを優先する。
42
+ - 明示がない場合は、軽量シグナルから推定する。
43
+
44
+ ```bash
45
+ ls -F
46
+ cat package.json 2>/dev/null
47
+ cat README.md 2>/dev/null
48
+ find src app lib -maxdepth 2 2>/dev/null
49
+ ```
50
+
51
+ - ソースコード・`package.json`・既存ドキュメントが揃い相応の規模があれば **existing** を候補にする。
52
+ - ファイルがほとんど無い/ソースコードが無い場合は **greenfield** を候補にする。
53
+ - 推定が曖昧な場合の**既定は greenfield**(Yodogawa の主目的は新規プロダクトの仕様駆動立ち上げのため)。
54
+ - 「このプロジェクトを greenfield(新規)/ existing(既存)として進めます。よろしいですか?」とユーザーに提示し、確認を取る。
55
+
56
+ 確定したモードを以降の手順で参照する。
57
+
58
+ ### 3. テンプレートのコピー(モード別)
59
+
60
+ このスキルの配置ディレクトリ(`skills/a-002-initialize-project/`)を起点に、`docs/project/01-requirements/` へテンプレートを Read→Write する(FOR EACH)。出力先に既に存在するファイルは上書きせずスキップして報告する(冪等)。出力先ディレクトリが無ければ作成する。
61
+
62
+ **existing モード**(2 ファイル):
63
+
64
+ - `../../templates/project/01-requirements/01-product-brief.md` `docs/project/01-requirements/01-product-brief.md`
65
+ - `../../templates/project/01-requirements/06-features-implemented.md` → `docs/project/01-requirements/06-features-implemented.md`
66
+
67
+ **greenfield モード**(必須 1 ファイル): `01-product-brief.md` のみ。新規プロダクトでは実装済み機能がまだ存在しないため、`06-features-implemented.md` は**任意**扱いとし、ユーザーが棚卸しを希望した場合のみ「空の任意資料」としてコピーする。
68
+
69
+ > `03-parking-lot.md` / `02-mvp-scope.md` は本スキルでは生成しない。次スキル `/a-002a-slice-mvp-scope` が作成する。
70
+ > `05-user-stories.md` は `/a-002b-define-user-stories` が作成する。
71
+ >
72
+ > `04-non-functional-requirements.md`(詳細な定量 NFR)は初期フェーズでは生成しない。クリティカル制約は Product Brief(手順5)に集約し、詳細 NFR は設計フェーズ `/a-014-define-infrastructure` が扱う(採番上 04 は欠番)。
73
+
74
+ ### 4. コードベースの自動分析と提案(existing モードのみ)
75
+
76
+ > greenfield モードではこの手順をスキップする。
77
+
78
+ **詳細調査**:
79
+
80
+ ```bash
81
+ cat package.json 2>/dev/null
82
+ cat README.md 2>/dev/null
83
+ find src app lib -maxdepth 2 2>/dev/null
84
+ ```
85
+
86
+ 結果から以下を推測・提示: Product Brief の下書き(課題・目的・技術スタック)、実装済み機能(ファイル構造からの推測)、想定ユーザー像。
87
+
88
+ ### 5. Product Brief の記入(中核)
89
+
90
+ `01-product-brief.md` を開き、深掘りヒアリングで埋める。**これがこのスキルの中核成果物**で、後続スキル(MVP Scope / Core Scenarios / PM Gate)が参照する。
91
+
92
+ - 記入対象: 背景/解く課題(証拠・規模つき)、ターゲットユーザー / 主要ペルソナ、ステークホルダー、現在の代替手段・競合スキャン、価値提案/差別化、Why now、成功指標(North Star / KPI / Guardrail +計測方法)、クリティカル制約、非ゴール、未確定事項。
93
+ - **ペルソナ表**: 主要 1〜2 ペルソナを ID(P-XXX)付きで記入する(ゴール / 課題・ペイン / 利用文脈、任意でニーズの強さ)。この ID は後続の User Story(`/a-002b`)が「役割」を参照解決する SSoT になるため、過剰にせず・空欄にせず埋める。
94
+ - **代替手段・競合スキャン**: 主要な数件(2〜4 件)を表で軽量にスキャンする(手作業/Workaround・既製ツール・競合プロダクト)。各代替の「弱み・不満」が価値提案の起点になる。網羅・深追いはしない(YAGNI)。
95
+ - **価値提案 / 差別化**: バリュープロポジションを1文(誰の・どの課題を・どう解き・なぜ既存より良いか)に凝縮し、差別化ポイント(Why us、最大3点)をスキャン表の「弱み」と対応づける。
96
+ - 「課題 なぜ → なぜ」と3段以上掘り下げ、表層の要望ではなく本質的な課題に到達する。
97
+ - 「この課題を作らずに放置したら何が起きるか」「既存の代替手段で十分ではないか」を必ず確認する。
98
+
99
+ 質問例は [reference/hearing-questions.md](reference/hearing-questions.md#手順5-product-brief) を参照。
100
+
101
+ ### 6. 実装済み機能一覧の記入(existing モードのみ)
102
+
103
+ > greenfield モードではこの手順をスキップする(`06-features-implemented.md` は任意の空資料)。
104
+
105
+ `06-features-implemented.md` に、コードベース調査で検出したディレクトリ/ファイル名から機能を提案し、ヒアリング結果をテーブルに記入する(Category 1/2、機能名、説明、機能 ID)。
106
+
107
+ コード調査コマンドとヒアリング項目は [reference/hearing-questions.md](reference/hearing-questions.md#手順6-実装済み機能一覧) を参照。
108
+
109
+ ### 7. 全体レビュー
110
+
111
+ - 作成した全ドキュメントをユーザーに提示し、以下を確認:
112
+ - 「記載内容に誤りや漏れはありませんか?」
113
+ - 「抽象的すぎる記述や、解釈が分かれそうな表現はありますか?」
114
+ - 「テンプレートのコメントや不要な例示は適切に処理されていますか?」
115
+
116
+ ### 8. 完了条件と構造の確認
117
+
118
+ - ファイルの存在と主要セクション/テーブル構造を検証。
119
+ - 検証コマンド・チェックリスト・Git コミット手順は [reference/structure-check.md](reference/structure-check.md) を参照。
120
+
121
+ ### 9. Git への追加(オプション)
122
+
123
+ 詳細は [reference/structure-check.md](reference/structure-check.md#git-への追加オプション) を参照。
124
+
125
+ ## 完了条件
126
+
127
+ - `docs/project/01-requirements/01-product-brief.md` が作成され、課題・ターゲット・代替手段・価値提案・Why now・成功指標・クリティカル制約・非ゴールが具体的に埋まっている(**中核成果物**)
128
+ - あわせて要件定義ドキュメントが作成されている
129
+ - existing モード: `01`, `06` の 2 ドキュメント
130
+ - greenfield モード: `01`。`06-features-implemented.md` は任意
131
+ - `04`(詳細 NFR)は初期フェーズでは生成しない(設計フェーズ `/a-014` が所有)
132
+ - Parking Lot(`03-parking-lot.md`)・MVP スコープ(`02-mvp-scope.md`)は次スキル `/a-002a-slice-mvp-scope` で、ユーザーストーリー(`05-user-stories.md`)は `/a-002b-define-user-stories` で作成する
133
+ - すべてのドキュメントで抽象的表現が最小化され、具体的な数値・期限・制約が記載されている
134
+ - ユーザーがドキュメント内容を確認し、承認またはフィードバックを提供している
135
+
136
+ ## エスカレーション
137
+
138
+ - **ユーザーが重要な情報を提供できない**: 「この情報は後続の設計・実装で必須です。確認できる担当者や資料はありますか?」と確認し、TODO として記録。
139
+ - **競合する要件や矛盾**: 「以下の要件が競合しています: [詳細]。優先順位や調整方針を確認させてください。」と報告。
140
+ - **想定工数が非現実的に大きい**: 「現在の計画では実現が困難です。スコープ縮小や優先度調整を検討しませんか?」と提案。
141
+
142
+ ## 参考
143
+
144
+ - [reference/hearing-questions.md](reference/hearing-questions.md) — Product Brief(手順5)・実装済み機能(手順6)のヒアリング質問集。末尾に深掘りフレーム集(5 Whys / Pre-mortem / 代替手段・競合 / Day 1 MVP / 検証仮説 / Inversion)。深掘りフレーム集は `/a-002a-slice-mvp-scope` からも参照される
145
+ - [reference/structure-check.md](reference/structure-check.md) — 手順8の構造チェックコマンドと Git コミット手順(手順9)
@@ -1,23 +1,65 @@
1
1
  # ヒアリング質問集
2
2
 
3
- SKILL.md 手順3〜7で各テンプレートに記入する際のヒアリング質問一覧。
3
+ a-002 の各テンプレートに記入する際のヒアリング質問一覧。Product Brief(問題定義/Why)を中核に、existing モードの実装済み機能をカバーする。Parking Lot / ユーザーストーリーの質問は後続スキル(`/a-002a-slice-mvp-scope` / `/a-002b-define-user-stories`)が扱う。
4
4
 
5
- ## 手順3: システム概要
5
+ 末尾の「[深掘りフレーム集](#深掘りフレーム集product-brief--mvp-scope-共通)」は Product Brief(a-002)と MVP Scope(`/a-002a-slice-mvp-scope`)の両方で使える思考技法。表層の要望で止めず、根本課題・失敗要因・最小スコープまで掘り下げるために併用する。
6
6
 
7
- ### 背景
7
+ ## 手順5: Product Brief
8
8
 
9
- - 「このシステムで解決しようとしている**具体的な問題や課題**は何ですか?」
10
- - 「その問題はなぜ重要ですか?放置した場合のリスクは?」
11
- - 「問題の影響を受けるステークホルダー(ユーザー、組織、チームなど)は誰ですか?」
12
- - 「具体的な数値やデータ(作業時間、コスト、離脱率など)があれば教えてください。」
9
+ `01-product-brief.md` の各節を埋めるための質問。表層の要望ではなく**本質的な課題**に到達することを重視する。
13
10
 
14
- ### 目的
11
+ ### 背景 / 解く課題(Why-chain で深掘り)
15
12
 
16
- - 「このシステムが提供する**具体的な価値や解決策**は何ですか?」
17
- - 「期待される成果や変化を、測定可能な形で表現できますか?(例: 作業時間 50%削減)」
18
- - 「どのように問題を解決するか、具体的なメカニズムや仕組みを教えてください。」
13
+ - 「このプロダクトで解決したい**具体的な課題**は何ですか?(誰が・いつ・どこで困っていますか)」
14
+ - 「それはなぜ問題なのですか?」→ さらに「ではなぜそれが起きるのですか?」と**3段以上 Why を繰り返す**(5 Whys)。表層の要望の裏にある根本課題を特定する。
15
+ - 「その課題の**証拠・規模**はありますか?(発生頻度、所要時間、コスト、影響人数などの具体的な数値)」
16
+ - 「この課題を**解かずに放置したら何が起きますか?**(Cost of Inaction)」
19
17
 
20
- ## 手順4: 実装済み機能一覧
18
+ ### ターゲットユーザー / ペルソナ
19
+
20
+ > 主要 1〜2 ペルソナを ID(P-XXX)付きで `01-product-brief.md` のペルソナ表に記入する。この ID は後続の User Story(/a-002b)が「役割」を参照解決する SSoT になる。MVP では過剰な人物像づくりはしない(YAGNI)。
21
+
22
+ - 「主に**誰のため**のプロダクトですか?1〜2の主要ペルソナに絞るとどうなりますか?」
23
+ - 「そのユーザーが片付けたい**仕事(Job / ゴール)**は何ですか?どんな状況で発生しますか?」
24
+ - 「そのペルソナが今抱えている**主な課題・ペイン**は何ですか?」
25
+ - 「**いつ・どこで・どんな状況**で使いますか?(利用文脈: タイミング・デバイス・頻度)」
26
+ - 「(任意)その課題の**切実さ**はどの程度ですか?(高/中/低。MVP の優先順位判断に使う)」
27
+
28
+ ### ステークホルダー / 決裁者
29
+
30
+ - 「この施策の**意思決定者(決裁者)**は誰ですか?」
31
+ - 「**影響を受ける関係者**は誰で、それぞれ何を気にしますか?(コスト、運用、セキュリティ等)」
32
+
33
+ ### 現在の代替手段・競合スキャン
34
+
35
+ > 主要な数件(2〜4 件)を `01-product-brief.md` の「現在の代替手段・競合スキャン」表に記入する。網羅・深追いはしない(YAGNI)。
36
+
37
+ - 「今この課題を**どうしのいでいますか?**(手作業、既存ツール、外部サービス、我慢)」
38
+ - 「同じ課題を解く**競合・類似プロダクト**はありますか?(数件で可)」
39
+ - 各代替について「それが**今も使われている理由(強み)**は?」「**何が不十分・不満(弱み)**ですか?」を問い、表の各行を埋める。
40
+ - 「代替手段で十分なら、本当に作る必要がありますか?」(→ 不要なら MVP Scope で Must にしない)
41
+
42
+ ### 価値提案 / 差別化 / Why now
43
+
44
+ - 「このプロダクトの価値を**1文**で言うと?」→ 「**[誰]** の **[課題]** を **[解決方法]** で解決する。**[代替手段]** と違い **[なぜ良いか]**」の穴埋めで凝縮する(バリュープロポジション)。
45
+ - 「上のスキャン表の各『弱み』に対し、**我々は何で勝ちますか(Why us)?**」→ 差別化ポイントを最大3点、代替手段の弱みと対応づけて挙げる。
46
+ - 「**なぜ今**作るのですか?(市場・組織・技術・コストの変化)」
47
+
48
+ ### 成功指標(North Star / KPI / Guardrail)
49
+
50
+ - 「成功を**1つの指標(North Star)**で表すと何ですか?目標値は?」
51
+ - 「補助的に追う **KPI** は何ですか?それは**先行指標**(行動の早期シグナル)ですか、**遅行指標**(成果の確定値)ですか?」
52
+ - 「**悪化させてはいけない指標(Guardrail =失敗の許容ライン)**は?(例: 苦情件数、離脱率)」
53
+ - 「各指標は**どこで・どう計測**しますか?(取得元・自動/手動・頻度)。今すぐ取れない場合、**代理指標**で測れますか?」
54
+
55
+ ### クリティカル制約 / 非ゴール
56
+
57
+ - 「守らないと成立しない**制約**は何ですか?(法規制、セキュリティ、予算、期限、既存連携)」
58
+ - 「このプロダクトが**明示的に目指さないこと(非ゴール)**は何ですか?スコープ外はどこですか?」
59
+
60
+ ## 手順6: 実装済み機能一覧
61
+
62
+ > existing モードのみ。greenfield モードでは実装済み機能が存在しないため、この手順全体をスキップする。
21
63
 
22
64
  ### コード調査のヒントと提案
23
65
 
@@ -40,53 +82,61 @@ find . -type f -name "*Controller*" -o -name "*Service*" -o -name "*Component*"
40
82
  - **説明**(何ができるか)
41
83
  - **機能 ID**(FN-XXX 形式、連番)
42
84
 
43
- ## 手順5: 予定機能一覧
85
+ ## 詳細な非機能要件について
44
86
 
45
- ### 差分分析からの提案例
87
+ 初期フェーズでは、定量的な非機能要件(応答時間・稼働率・スケーラビリティ等)の詳細ヒアリングは行わない。MVP の作り方を変えるほど重要な制約のみを Product Brief の「クリティカル制約」に記載する(手順5 の「クリティカル制約 / 非ゴール」を参照)。詳細 NFR は設計フェーズ `/a-014-define-infrastructure` で扱う。
46
88
 
47
- - 「システム概要で『〇〇機能』への言及がありましたが、まだ実装されていないようです。予定機能に追加しますか?」
48
- - 「現在の実装に『××』が含まれていますが、関連する『△△機能』は将来的に必要ですか?」
89
+ ## 深掘りフレーム集(Product Brief / MVP Scope 共通)
49
90
 
50
- ### ヒアリング項目
91
+ 表層の要望をそのまま機能化しないための思考技法。Product Brief(a-002)で課題・価値を掘り下げるとき、
92
+ および MVP Scope(`/a-002a-slice-mvp-scope`)で「本当に作るべきか」を判定するときに併用する。
51
93
 
52
- - **Category 1** / **Category 2**
53
- - **機能名**(アイデア段階でも可)
54
- - **説明**(目的や価値を中心に)
94
+ ### 5 Whys(最低3段)
55
95
 
56
- ※ 機能 ID・優先度はこの段階では確定させず、柔軟性を重視して記載しない。
96
+ 根本課題に到達するため「なぜ?」を最低3段繰り返す。
57
97
 
58
- ## 手順6: 非機能要件
98
+ - 「なぜそれが問題なのですか?」→「ではなぜそれが起きるのですか?」→ さらに「その背景にある原因は?」
99
+ - 表層の要望(解決策)と、その裏の根本課題(問題)を分けて記録する。
100
+ - 止め時: 「それ以上 why を遡っても自社で手を打てない」レベルまで来たら 1 つ上に戻る。
59
101
 
60
- ### パフォーマンス
102
+ ### Pre-mortem(事前検死)
61
103
 
62
- - 「ページ読み込み時間の目標は?」
63
- - 「API レスポンス時間の目標は?」
64
- - 「想定される同時接続ユーザー数、データ量は?」
104
+ リリース前に「すでに失敗した」と仮定し、原因を先回りで洗い出す。
65
105
 
66
- ### セキュリティ
106
+ - 「1年後、このプロダクトが**失敗に終わった**と想像してください。最も可能性の高い失敗原因は何ですか?」
107
+ - 「Day 1 で誰も使わなかったとしたら、理由は?(価値が伝わらない / 既存手段で足りる / 使うのが面倒 等)」
108
+ - 出てきた失敗要因を、Critical 制約・Core Scenarios の Critical Failure・Guardrail 指標に反映する。
67
109
 
68
- - 「認証方式、機密データの扱い、コンプライアンス要件は?」
110
+ ### より安い代替手段 / 競合分析
69
111
 
70
- ### 可用性・信頼性
112
+ 「そもそも作らない」「もっと安く検証する」判断のため、既存手段と競合を必ず問う。
71
113
 
72
- - 「稼働率目標、許容ダウンタイム、バックアップ要件は?」
114
+ - 「今この課題を**どうしのいでいますか?**(手作業 / 既存ツール / 外部 SaaS / 我慢)。その代替手段の何が不十分ですか?」
115
+ - 「**手作業や既製ツールで MVP の仮説を検証できませんか?**(スプレッドシート / Slack / Zapier など)」
116
+ - 「同じ課題を解く**競合・類似プロダクト**はありますか?それらに対して何で勝ちますか(Why us)?」
117
+ - 代替手段で十分なら、その機能は Must にしない(→ Not Now / Won't)。
73
118
 
74
- ### スケーラビリティ
119
+ ### Day 1 MVP の切り出し
75
120
 
76
- - 「ユーザー数の成長予測、ピーク時のトラフィック想定は?」
121
+ 価値提供が成立する最小の行動に絞り込む。
77
122
 
78
- ### ユーザビリティ・保守性
123
+ - 「**価値提供が成立する最小の利用者行動**は何ですか?(1〜3 ステップで言うと?)」
124
+ - 「その体験から**外しても価値が壊れない**要素はどれですか?」
125
+ - 「Day 1 に**必ず通ってほしい成功体験**を1〜3本に絞るとどれですか?」(→ Core Scenarios の Happy Path に対応)
79
126
 
80
- - 「アクセシビリティ、対応言語、デバイス、ブラウザは?」
81
- - 「ログ・監視要件、デプロイ頻度は?」
127
+ ### 1ヶ月後に検証したい仮説
82
128
 
83
- ## 手順7: ユーザーストーリー
129
+ MVP は仮説検証の手段。検証対象を 1〜3 個に絞る。
84
130
 
85
- ### 提案テンプレート
131
+ - 「このMVPで**検証したい仮説**は何ですか?『〜なら、ユーザーは〜する』の形で 1〜3 個に絞ると?」
132
+ - 「リリース1ヶ月後に**どの指標がどう動けば**『仮説は正しかった』と言えますか?」(→ North Star / KPI に対応)
133
+ - 仮説が 4 個以上に増えたら MVP が大きすぎる兆候。最も検証したい 1 つを選び直す。
86
134
 
87
- 「[役割]として、[〇〇機能]を使いたい、なぜなら[価値]だから」
135
+ ### 絶対にやらないこと(Inversion)
88
136
 
89
- ### ヒアリング項目
137
+ 「やること」ではなく「やらないこと」から考え、スコープ境界を明示する。
90
138
 
91
- - 「他に主要なユーザージャーニーがあれば教えてください([役割]として、[目的]がしたい、なぜなら[理由])」
92
- - 各ストーリーの優先度、受け入れ基準
139
+ - 「このプロダクトが**絶対にやらないこと**は何ですか?(理由付きで)」
140
+ - 「**やると失敗する**ことは何ですか?(過剰な多機能化 / 全ユーザー対応 / 完璧な作り込み 等)」
141
+ - 「ここまではやらない、と**ステークホルダーと合意**できる境界はどこですか?」
142
+ - 結果は Product Brief の「非ゴール」、MVP Scope の Won't / Out of Scope に落とす。
@@ -1,28 +1,18 @@
1
1
  # 構造チェックコマンド集
2
2
 
3
- SKILL.md 手順9で使う、生成済みドキュメントの構造確認用コマンド。
3
+ SKILL.md 手順8で使う、生成済みドキュメントの構造確認用コマンド。
4
4
 
5
- ## 5ドキュメントの必須セクション/テーブル検証
5
+ ## a-002 生成ドキュメントの必須セクション/テーブル検証
6
6
 
7
7
  ```bash
8
- # 01-system-overview.md: 主要セクションの確認
9
- grep "## 背景" docs/project/01-requirements/01-system-overview.md && echo "OK" || echo "MISSING: 背景"
10
- grep "## 目的" docs/project/01-requirements/01-system-overview.md && echo "OK" || echo "MISSING: 目的"
11
-
12
- # 02-features-implemented.md: テーブルヘッダー
13
- grep "| 機能ID | Category 1 |" docs/project/01-requirements/02-features-implemented.md \
14
- && echo "OK" || echo "MISSING: Table Header"
15
-
16
- # 03-features-planned.md: テーブルヘッダー
17
- grep "| Category 1 | Category 2 |" docs/project/01-requirements/03-features-planned.md \
18
- && echo "OK" || echo "MISSING: Table Header"
19
-
20
- # 04-non-functional-requirements.md: テーブルヘッダー
21
- grep "| カテゴリ | 要件 |" docs/project/01-requirements/04-non-functional-requirements.md \
22
- && echo "OK" || echo "MISSING: Table Header"
23
-
24
- # 05-user-stories.md: テーブルヘッダー
25
- grep "| ストーリーID | ストーリー |" docs/project/01-requirements/05-user-stories.md \
8
+ # 01-product-brief.md: 主要セクションの確認
9
+ grep "## 背景 / 解く課題" docs/project/01-requirements/01-product-brief.md && echo "OK" || echo "MISSING: 背景 / 解く課題"
10
+ grep "## 成功指標" docs/project/01-requirements/01-product-brief.md && echo "OK" || echo "MISSING: 成功指標"
11
+ grep "計測方法" docs/project/01-requirements/01-product-brief.md && echo "OK" || echo "MISSING: 成功指標の計測方法列"
12
+ grep "## 非ゴール" docs/project/01-requirements/01-product-brief.md && echo "OK" || echo "MISSING: 非ゴール"
13
+
14
+ # 06-features-implemented.md(existing モードのみ): テーブルヘッダー
15
+ grep "| 機能ID | Category 1 |" docs/project/01-requirements/06-features-implemented.md \
26
16
  && echo "OK" || echo "MISSING: Table Header"
27
17
  ```
28
18
 
@@ -42,7 +32,7 @@ git status
42
32
  推奨コミットメッセージ:
43
33
 
44
34
  ```
45
- docs: 要件定義ドキュメントの作成
35
+ docs: Product Brief(問題定義/Why)の作成
46
36
 
47
- - システム概要、機能要件、非機能要件、ユーザーストーリーを追加
37
+ - Product Brief を追加(existing モードは実装済み機能も)
48
38
  ```
@@ -0,0 +1,105 @@
1
+ ---
2
+ name: a-002a-slice-mvp-scope
3
+ description: Product Brief を起点に Parking Lot(アイデア backlog)を生成し、候補機能を Must / Not Now / Won't に切り分けて MVP スコープを確定する。各 Must 機能を課題・仮説・成功指標に紐づけて正当化し、やらないこと(Out of Scope)も明示する。Product Brief 作成後(a-002 の後)に実行。
4
+ disable-model-invocation: true
5
+ allowed-tools: Read, Write, Edit, Bash, Grep, Glob
6
+ ---
7
+
8
+ # SliceMvpScope (a-002a)
9
+
10
+ ## 目的
11
+
12
+ - 「本当に必要なものだけ作る」ため、候補機能を **Must / Not Now / Won't** に切り分けて MVP スコープを確定する。
13
+ - 各 Must 機能を Product Brief の**課題・検証仮説・成功指標**に紐づけて正当化し、過剰作り込みを排除する。
14
+ - **やらないこと(Out of Scope / Won't)**を理由付きで明示し、ステークホルダーと合意できる状態にする。
15
+ - 実行順は a-002(Product Brief)の後、a-003(シナリオ)の前。
16
+
17
+ ## 前提
18
+
19
+ - `docs/project/01-requirements/01-product-brief.md` が作成されていること(なければ先に `/a-002-initialize-project` を実行)。
20
+ - 課題・ターゲット・成功指標・非ゴールが Product Brief に記載されていること。
21
+ - アイデアの backlog(`03-parking-lot.md`)は本スキルが生成・管理する(Product Brief から候補を起こす)。
22
+
23
+ ## 手順
24
+
25
+ ### 1. 前提の確認
26
+
27
+ ```bash
28
+ ls -l docs/project/01-requirements/01-product-brief.md 2>/dev/null || echo "MISSING: 01-product-brief.md"
29
+ ```
30
+
31
+ 存在しない場合: 「`01-product-brief.md` がありません。先に `/a-002-initialize-project` で Product Brief を作成してください。」と促して中断。
32
+
33
+ ### 2. テンプレートの準備
34
+
35
+ このスキルの配置ディレクトリ(`skills/a-002a-slice-mvp-scope/`)を起点に、以下を Read→Write でコピーする(FOR EACH)。出力先に既に存在する場合は上書きせずスキップして報告する(冪等)。
36
+
37
+ - `../../templates/project/01-requirements/02-mvp-scope.md` → `docs/project/01-requirements/02-mvp-scope.md`
38
+ - `../../templates/project/01-requirements/03-parking-lot.md` → `docs/project/01-requirements/03-parking-lot.md`
39
+
40
+ ### 3. 候補機能の洗い出し(Parking Lot への記入)
41
+
42
+ `01-product-brief.md`(課題・価値提案・成功指標)を読み込み、課題・価値提案を満たすのに必要な機能を逆算して候補を列挙する。列挙したアイデアは `03-parking-lot.md` に幅広く記入する(この段階では**優先度・機能 ID を厳密に決めず**拾う)。
43
+
44
+ - 差分提案例: 「Product Brief で『〇〇機能』への言及がありましたが backlog に未記載です。Parking Lot に追加しますか?」
45
+ - 記入項目: Category 1 / Category 2 / 機能名(アイデア段階でも可)/ 説明(目的・価値中心)。
46
+
47
+ > existing モードでは `06-features-implemented.md`(実装済み機能、a-002 が生成)も読み込み、未実装のギャップを Parking Lot 候補に加える。
48
+
49
+ ### 4. MVP 判定(Must / Not Now / Won't)
50
+
51
+ FOR EACH 候補機能: `02-mvp-scope.md` のテーブルに記入する。
52
+
53
+ - **MVP判定**を Must / Not Now / Won't のいずれかに決める。
54
+ - Must: この MVP の仮説検証に不可欠。これが無いと価値が成立しない。
55
+ - Not Now: 価値はあるが今回は不要(→ Parking Lot へ)。
56
+ - Won't: 明示的に作らない(→ Out of Scope へ)。
57
+ - 各 Must は**課題 / 検証仮説 / 成功指標のいずれかに必ず紐づける**(同じ言葉で参照)。紐づかない Must は過剰作り込み候補として Not Now / Won't に倒す。
58
+ - **「より安い代替手段(手作業・既存ツール・外部サービス)で足りるか」を必ず問う**。足りるなら Must にしない。
59
+
60
+ 検証する仮説は 1〜3 個に絞る。多すぎる場合は MVP が大きすぎる兆候として再検討する。
61
+
62
+ ### 5. やらないこと(Out of Scope)の明示
63
+
64
+ `02-mvp-scope.md` の「Out of Scope」セクションに、Won't 機能と**作らない理由**を記入する。Product Brief の「非ゴール」と整合させる。
65
+
66
+ ### 6. Parking Lot の整理
67
+
68
+ Not Now / Won't と判定したアイデアを `03-parking-lot.md` に移動・整理する。Parking Lot は優先度を厳密に決めない backlog として維持し、MVP Scope(優先度必須)と役割を分ける。
69
+
70
+ ### 7. レビュー
71
+
72
+ - ユーザーに MVP Scope を提示し、以下を確認:
73
+ - 「Must が多すぎませんか?削れる Must はありませんか?」
74
+ - 「各 Must は仮説・指標に紐づいていますか?」
75
+ - 「やらないこと(Won't)に合意できますか?」
76
+
77
+ ## 完了条件
78
+
79
+ - `docs/project/01-requirements/03-parking-lot.md` が作成され、候補アイデアが幅広く記入されている(優先度・機能 ID は未確定でよい)。
80
+ - `docs/project/01-requirements/02-mvp-scope.md` が作成され、各候補機能に Must / Not Now / Won't 判定が入っている。
81
+ - すべての Must 機能が課題 / 検証仮説 / 成功指標のいずれかに紐づいている。
82
+ - Out of Scope(Won't)が理由付きで記入されている。
83
+ - 検証する仮説が 1〜3 個に絞られている。
84
+ - ユーザーがスコープに合意またはフィードバックを提供している。
85
+
86
+ 構造チェック:
87
+
88
+ ```bash
89
+ grep "| Category 1 | Category 2 |" docs/project/01-requirements/03-parking-lot.md && echo "OK" || echo "MISSING: parking-lot Table Header"
90
+ grep -E "Must|Not Now|Won't" docs/project/01-requirements/02-mvp-scope.md && echo "OK" || echo "MISSING: MVP 判定"
91
+ ```
92
+
93
+ ## エスカレーション
94
+
95
+ - **Must が多すぎて削れない**: 「すべてを Day 1 に作ると MVP の意味が薄れます。最も検証したい仮説1つに絞ると、どれが Must ですか?」と問い直す。
96
+ - **代替手段で足りる機能が Must になっている**: 「これは手作業/既存ツールで代替できそうです。まず代替手段で検証しませんか?」と提案。
97
+ - **やらないことに合意が得られない**: 決裁者・関心事(Product Brief のステークホルダー)に立ち戻り、合意形成の論点として記録する。
98
+
99
+ ## 参考
100
+
101
+ - [../../templates/project/01-requirements/02-mvp-scope.md](../../templates/project/01-requirements/02-mvp-scope.md) — MVP Scope テンプレート(判定基準・列定義)
102
+ - [../../templates/project/01-requirements/03-parking-lot.md](../../templates/project/01-requirements/03-parking-lot.md) — Parking Lot テンプレート(アイデア backlog)
103
+ - [../a-002-initialize-project/reference/hearing-questions.md](../a-002-initialize-project/reference/hearing-questions.md) — 深掘りフレーム集(より安い代替手段・競合 / Day 1 MVP / 1ヶ月後に検証したい仮説 / Inversion)。手順4・5 のスコープ判定で活用する
104
+ - `01-product-brief.md` — 課題・成功指標・非ゴールの参照元
105
+ - `03-parking-lot.md` — Not Now / Won't アイデアの backlog