yodogawa 2.1.1 → 2.1.3

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 (34) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +21 -4
  3. package/bin/cli.js +0 -1
  4. package/package.json +2 -3
  5. package/skills/a-001-setup-doc-structure/SKILL.md +68 -67
  6. package/skills/a-001-setup-doc-structure/reference/directory-structure.md +75 -48
  7. package/skills/a-002-initialize-project/SKILL.md +118 -125
  8. package/skills/a-003-create-scenarios/SKILL.md +96 -99
  9. package/skills/a-004-define-domain-model/SKILL.md +98 -99
  10. package/skills/a-007-define-tech-stack/SKILL.md +99 -102
  11. package/skills/a-008-define-repository-structure/SKILL.md +96 -99
  12. package/skills/a-009-define-screen-design/SKILL.md +103 -106
  13. package/skills/a-010-define-design-system/SKILL.md +130 -134
  14. package/skills/a-011-define-data-model/SKILL.md +118 -121
  15. package/skills/a-012-define-api-spec/SKILL.md +105 -108
  16. package/skills/a-013-define-architecture/SKILL.md +98 -101
  17. package/skills/a-014-define-infrastructure/SKILL.md +110 -113
  18. package/skills/b-001-create-task-directory/SKILL.md +68 -62
  19. package/skills/b-002-create-task-definition/SKILL.md +114 -115
  20. package/skills/b-003-create-task-research/SKILL.md +128 -129
  21. package/skills/b-004-create-task-implementation/SKILL.md +98 -99
  22. package/skills/b-005-review-task/reference/assessment-criteria.md +79 -79
  23. package/skills/c-001-implement-task/SKILL.md +186 -186
  24. package/skills/c-001-implement-task/reference/implementation-loop.md +65 -65
  25. package/skills/c-002-update-documentation/SKILL.md +159 -159
  26. package/skills/c-002-update-documentation/reference/doc-structure-and-checks.md +97 -100
  27. package/templates/tasks/task-template/a-definition.md +1 -1
  28. package/templates/tasks/task-template/b-research.md +1 -1
  29. package/templates/tasks/task-template/c-implementation.md +3 -3
  30. package/scripts/create-task.sh +0 -77
  31. package/scripts/init-project-docs.sh +0 -90
  32. package/scripts/init-task-doc.sh +0 -77
  33. package/scripts/setup-docs.sh +0 -92
  34. package/templates/documentation-rules.md +0 -143
@@ -1,99 +1,96 @@
1
- ---
2
- name: a-003-create-scenarios
3
- description: ユーザーストーリーから Gherkin 形式のシナリオを生成し、BDD で振る舞いを定義する。要件定義後、ドメインモデル設計前の振る舞い明確化に使用。
4
- disable-model-invocation: true
5
- allowed-tools: Read, Write, Edit, Bash, Grep, Glob
6
- ---
7
-
8
- # CreateScenarios (a-003)
9
-
10
- ## 目的
11
-
12
- - ユーザーストーリーから具体的なシナリオ(振る舞い)を抽出し、Gherkin 形式で記述する。
13
- - Given-When-Then 構造で、開発者・QA・ステークホルダーが共通理解できる実行可能なドキュメントを作成する。
14
- - ハッピーパス(正常系)からエラーケース、境界値テストまでを網羅的に定義する。
15
-
16
- ## 前提
17
-
18
- - `docs/project/01-requirements/05-user-stories.md` が作成されていること(`/a-002-initialize-project` 実行済み)。
19
- - `docs/project/02-behavior/` ディレクトリが存在すること(未作成なら `/a-001-setup-doc-structure`)。
20
- - ユーザーが各機能の具体的な動作例を説明できること。
21
-
22
- ## 手順
23
-
24
- ### 1. ディレクトリと前提条件の確認
25
-
26
- ```bash
27
- ls -la docs/project/02-behavior/ 2>/dev/null || echo "ディレクトリが存在しません"
28
- ```
29
-
30
- `docs/project/01-requirements/05-user-stories.md` を読み込み、シナリオ化対象を把握する。
31
-
32
- ### 2. テンプレートの準備
33
-
34
- ```bash
35
- SCRIPT_DIR=$(for d in .claude .agents; do [ -d "$d" ] && echo "$d" && break; done)
36
- cp "$SCRIPT_DIR/templates/project/02-behavior/01-scenarios.md" "docs/project/02-behavior/01-scenarios.md"
37
- ```
38
-
39
- ### 3. 分析と提案
40
-
41
- ユーザーストーリーを機能(Feature)単位にグルーピングし、ハッピーパスと代表的なエラーケースの案を提示。
42
-
43
- - 「機能: [機能名] (US-XXX)」
44
- - 「シナリオ案1: [ハッピーパス] / シナリオ案2: [エラーケース]」
45
-
46
- ### 4. ヒアリングと記入
47
-
48
- 機能ごとに以下を詰めて `docs/project/02-behavior/01-scenarios.md` を更新する。Gherkin 記述例は [examples/gherkin-templates.md](examples/gherkin-templates.md) を参照。
49
-
50
- - **Feature 情報**: 機能名、As a/I want/So that、Background(共通前提)
51
- - **ハッピーパス**: Given-When-Then で最も基本的な成功シナリオ
52
- - **エラーケース・境界値**: 必要に応じて Scenario Outline(Examples テーブル)を使用
53
- - **タグ付け**: `@SC-XXX` ID 採番、`@smoke` `@happy-path` `@error-handling` 等
54
-
55
- UI 操作の詳細ではなく、ユーザーの意図を記述するよう注意する。
56
-
57
- ### 5. シナリオ一覧テーブルの更新
58
-
59
- ドキュメント冒頭の一覧テーブルに、全シナリオの ID・機能・シナリオ名・優先度を記載する。テーブル例は [examples/gherkin-templates.md](examples/gherkin-templates.md#シナリオ一覧テーブル例) を参照。
60
-
61
- ### 6. レビューと確認
62
-
63
- ユーザーに提示し、実際の動作の正確性、抜け漏れ、非技術者への理解可能性を確認する。質問例は [reference/structure-check.md](reference/structure-check.md#レビュー確認質問) を参照。
64
-
65
- ### 7. 構造チェック
66
-
67
- ```bash
68
- grep "Feature:" docs/project/02-behavior/01-scenarios.md \
69
- && grep "Scenario:" docs/project/02-behavior/01-scenarios.md \
70
- && echo "OK" || echo "MISSING SECTION"
71
- ```
72
-
73
- 詳細なチェックリストは [reference/structure-check.md](reference/structure-check.md#チェックリスト) を参照。
74
-
75
- ### 8. Git への追加(任意)
76
-
77
- ```bash
78
- git add docs/project/02-behavior/
79
- git commit -m "docs: 振る舞い仕様(シナリオ)の作成"
80
- ```
81
-
82
- 詳細は [reference/structure-check.md](reference/structure-check.md#git-への追加任意) を参照。
83
-
84
- ## 完了条件
85
-
86
- - `docs/project/02-behavior/01-scenarios.md` が作成されている。
87
- - ユーザーストーリーに対応する具体的なシナリオ(Given-When-Then)が記述されている。
88
- - シナリオ一覧テーブルがメンテナンスされている。
89
- - ユーザーが内容を承認している。
90
-
91
- ## エスカレーション
92
-
93
- - **ユーザーストーリーが不明確でシナリオ化できない**: 「`/a-002-initialize-project` に戻って要件を明確にしましょう。」
94
- - **実装詳細への依存が強すぎる**: 「UI 操作(ボタンクリック等)ではなく、ユーザーの意図(登録する等)に焦点を当てた記述に変更しましょう。」
95
-
96
- ## 参考
97
-
98
- - [examples/gherkin-templates.md](examples/gherkin-templates.md) — Feature / Scenario / Scenario Outline の記述例、タグ付けガイド、一覧テーブル例
99
- - [reference/structure-check.md](reference/structure-check.md) — 構造確認コマンド、チェックリスト、レビュー観点、Git 追加例
1
+ ---
2
+ name: a-003-create-scenarios
3
+ description: ユーザーストーリーから Gherkin 形式のシナリオを生成し、BDD で振る舞いを定義する。要件定義後、ドメインモデル設計前の振る舞い明確化に使用。
4
+ disable-model-invocation: true
5
+ allowed-tools: Read, Write, Edit, Bash, Grep, Glob
6
+ ---
7
+
8
+ # CreateScenarios (a-003)
9
+
10
+ ## 目的
11
+
12
+ - ユーザーストーリーから具体的なシナリオ(振る舞い)を抽出し、Gherkin 形式で記述する。
13
+ - Given-When-Then 構造で、開発者・QA・ステークホルダーが共通理解できる実行可能なドキュメントを作成する。
14
+ - ハッピーパス(正常系)からエラーケース、境界値テストまでを網羅的に定義する。
15
+
16
+ ## 前提
17
+
18
+ - `docs/project/01-requirements/05-user-stories.md` が作成されていること(`/a-002-initialize-project` 実行済み)。
19
+ - `docs/project/02-behavior/` ディレクトリが存在すること(未作成なら `/a-001-setup-doc-structure`)。
20
+ - ユーザーが各機能の具体的な動作例を説明できること。
21
+
22
+ ## 手順
23
+
24
+ ### 1. ディレクトリと前提条件の確認
25
+
26
+ ```bash
27
+ ls -la docs/project/02-behavior/ 2>/dev/null || echo "ディレクトリが存在しません"
28
+ ```
29
+
30
+ `docs/project/01-requirements/05-user-stories.md` を読み込み、シナリオ化対象を把握する。
31
+
32
+ ### 2. テンプレートの準備
33
+
34
+ このスキルの配置ディレクトリ(`skills/a-003-create-scenarios/`)を起点に、相対パス `../../templates/project/02-behavior/01-scenarios.md` を Read で読み込み、その内容を `docs/project/02-behavior/01-scenarios.md` へ Write する。出力先が既に存在する場合は上書きせずスキップして報告する(冪等)。出力先ディレクトリ(`docs/project/02-behavior/`)が無ければ作成する。
35
+
36
+ ### 3. 分析と提案
37
+
38
+ ユーザーストーリーを機能(Feature)単位にグルーピングし、ハッピーパスと代表的なエラーケースの案を提示。
39
+
40
+ - 「機能: [機能名] (US-XXX)」
41
+ - 「シナリオ案1: [ハッピーパス] / シナリオ案2: [エラーケース]」
42
+
43
+ ### 4. ヒアリングと記入
44
+
45
+ 機能ごとに以下を詰めて `docs/project/02-behavior/01-scenarios.md` を更新する。Gherkin 記述例は [examples/gherkin-templates.md](examples/gherkin-templates.md) を参照。
46
+
47
+ - **Feature 情報**: 機能名、As a/I want/So that、Background(共通前提)
48
+ - **ハッピーパス**: Given-When-Then で最も基本的な成功シナリオ
49
+ - **エラーケース・境界値**: 必要に応じて Scenario Outline(Examples テーブル)を使用
50
+ - **タグ付け**: `@SC-XXX` ID 採番、`@smoke` `@happy-path` `@error-handling` 等
51
+
52
+ UI 操作の詳細ではなく、ユーザーの意図を記述するよう注意する。
53
+
54
+ ### 5. シナリオ一覧テーブルの更新
55
+
56
+ ドキュメント冒頭の一覧テーブルに、全シナリオの ID・機能・シナリオ名・優先度を記載する。テーブル例は [examples/gherkin-templates.md](examples/gherkin-templates.md#シナリオ一覧テーブル例) を参照。
57
+
58
+ ### 6. レビューと確認
59
+
60
+ ユーザーに提示し、実際の動作の正確性、抜け漏れ、非技術者への理解可能性を確認する。質問例は [reference/structure-check.md](reference/structure-check.md#レビュー確認質問) を参照。
61
+
62
+ ### 7. 構造チェック
63
+
64
+ ```bash
65
+ grep "Feature:" docs/project/02-behavior/01-scenarios.md \
66
+ && grep "Scenario:" docs/project/02-behavior/01-scenarios.md \
67
+ && echo "OK" || echo "MISSING SECTION"
68
+ ```
69
+
70
+ 詳細なチェックリストは [reference/structure-check.md](reference/structure-check.md#チェックリスト) を参照。
71
+
72
+ ### 8. Git への追加(任意)
73
+
74
+ ```bash
75
+ git add docs/project/02-behavior/
76
+ git commit -m "docs: 振る舞い仕様(シナリオ)の作成"
77
+ ```
78
+
79
+ 詳細は [reference/structure-check.md](reference/structure-check.md#git-への追加任意) を参照。
80
+
81
+ ## 完了条件
82
+
83
+ - `docs/project/02-behavior/01-scenarios.md` が作成されている。
84
+ - ユーザーストーリーに対応する具体的なシナリオ(Given-When-Then)が記述されている。
85
+ - シナリオ一覧テーブルがメンテナンスされている。
86
+ - ユーザーが内容を承認している。
87
+
88
+ ## エスカレーション
89
+
90
+ - **ユーザーストーリーが不明確でシナリオ化できない**: 「`/a-002-initialize-project` に戻って要件を明確にしましょう。」
91
+ - **実装詳細への依存が強すぎる**: 「UI 操作(ボタンクリック等)ではなく、ユーザーの意図(登録する等)に焦点を当てた記述に変更しましょう。」
92
+
93
+ ## 参考
94
+
95
+ - [examples/gherkin-templates.md](examples/gherkin-templates.md) — Feature / Scenario / Scenario Outline の記述例、タグ付けガイド、一覧テーブル例
96
+ - [reference/structure-check.md](reference/structure-check.md) — 構造確認コマンド、チェックリスト、レビュー観点、Git 追加例
@@ -1,99 +1,98 @@
1
- ---
2
- name: a-004-define-domain-model
3
- description: Event Storming 形式でドメインモデル(イベント・コマンド・集約)を定義し、ユビキタス言語を整備する。シナリオ作成後、ドメイン設計を開始する際に使用。
4
- disable-model-invocation: true
5
- allowed-tools: Read, Write, Edit, Bash, Grep, Glob
6
- ---
7
-
8
- # DefineDomainModel (a-004)
9
-
10
- ## 目的
11
-
12
- - Event Storming 形式でドメインモデルを体系的に定義する。
13
- - ドメインモデルを作成しながら、ユビキタス言語(共通用語)を並行して洗練させる。
14
- - Bounded Context を特定し、Actors / Commands / Events / Policies / Aggregates を明確化する。
15
-
16
- ## 前提
17
-
18
- - `docs/project/02-behavior/01-scenarios.md` が作成されている(`/a-003-create-scenarios` 実行済み)
19
- - `docs/project/03-domain/` ディレクトリが存在(なければ `/a-001-setup-doc-structure`)
20
- - ドメインエキスパートと協力できる
21
-
22
- ## 手順
23
-
24
- ### 1. ディレクトリと前提条件の確認
25
-
26
- ```bash
27
- ls -la docs/project/03-domain/ 2>/dev/null || echo "ディレクトリが存在しません"
28
- ```
29
-
30
- 存在しなければ `/a-001-setup-doc-structure` を促す。`docs/project/02-behavior/01-scenarios.md` を読み込み内容確認。
31
-
32
- ### 2. テンプレートの準備
33
-
34
- ```bash
35
- SCRIPT_DIR=$(for d in .claude .agents; do [ -d "$d" ] && echo "$d" && break; done)
36
- cp "$SCRIPT_DIR/templates/project/03-domain/01-domain-model.md" "docs/project/03-domain/01-domain-model.md"
37
- cp "$SCRIPT_DIR/templates/project/03-domain/02-ubiquitous-language.md" "docs/project/03-domain/02-ubiquitous-language.md"
38
- ```
39
-
40
- ### 3. Bounded Context の特定
41
-
42
- シナリオとユーザーストーリーから Bounded Context を提案し、戦略的分類(Core / Supporting / Generic)を確認。詳細は [reference/event-storming-guide.md](reference/event-storming-guide.md#bounded-context-の特定) を参照。
43
-
44
- ### 4. 各 Bounded Context のドメインモデル定義
45
-
46
- 各 Context について以下を定義し、`01-domain-model.md` を更新。新しい用語が登場するたびに `02-ubiquitous-language.md` にも追記。
47
-
48
- - 概要とアクター
49
- - コマンド / イベント / ポリシー(Event Storming)
50
- - 集約 / Read Models / External Systems
51
-
52
- 各要素の詳細は [reference/event-storming-guide.md](reference/event-storming-guide.md#各-context-の定義項目) を参照。
53
-
54
- ### 5. ユビキタス言語の洗練
55
-
56
- `02-ubiquitous-language.md` を見直し、重複・曖昧さ・禁止用語を排除。観点は [reference/event-storming-guide.md](reference/event-storming-guide.md#ユビキタス言語の洗練観点) を参照。
57
-
58
- ### 6. Context Map の定義
59
-
60
- Context 間の関係性(Customer-Supplier, Shared Kernel 等)を Mermaid 図で定義。関係パターン: [reference/event-storming-guide.md](reference/event-storming-guide.md#context-map-の関係性)
61
-
62
- ### 7. レビューと確認
63
-
64
- 作成したドキュメントを提示し、ビジネス用語の正確性 / Aggregate 境界 / ユビキタス言語定義を確認。
65
-
66
- ### 8. 完了条件と構造の確認
67
-
68
- 構造確認コマンドは [reference/event-storming-guide.md](reference/event-storming-guide.md#構造確認コマンド) を参照。
69
-
70
- チェックリスト:
71
-
72
- - [ ] `01-domain-model.md` に主要な Event Storming 要素が含まれている
73
- - [ ] `02-ubiquitous-language.md` の用語が定義されている
74
- - [ ] ドメインモデルとユビキタス言語の整合性が取れている
75
-
76
- ### 9. Git への追加(オプション)
77
-
78
- ```bash
79
- git add docs/project/03-domain/
80
- git status
81
- ```
82
-
83
- コミットメッセージ: [reference/event-storming-guide.md](reference/event-storming-guide.md#git-コミットメッセージ)
84
-
85
- ## 完了条件
86
-
87
- - `docs/project/03-domain/01-domain-model.md` `02-ubiquitous-language.md` が作成されている
88
- - 各 Bounded Context の主要ドメイン要素(Aggregates, Commands, Events)が定義されている
89
- - ドメインモデルで使用される用語がユビキタス言語として定義されている
90
- - ユーザーが内容を承認している
91
-
92
- ## エスカレーション
93
-
94
- - **シナリオが不足**: 「`/a-003-create-scenarios` に戻ってシナリオを充実させましょう。」
95
- - **Bounded Context の境界が不明確**: 「暫定的な境界を設定し、実装を進めながら見直す方針で進めませんか?」
96
-
97
- ## 参考
98
-
99
- - [reference/event-storming-guide.md](reference/event-storming-guide.md) — Event Storming の観点、Context Map パターン、構造確認コマンド
1
+ ---
2
+ name: a-004-define-domain-model
3
+ description: Event Storming 形式でドメインモデル(イベント・コマンド・集約)を定義し、ユビキタス言語を整備する。シナリオ作成後、ドメイン設計を開始する際に使用。
4
+ disable-model-invocation: true
5
+ allowed-tools: Read, Write, Edit, Bash, Grep, Glob
6
+ ---
7
+
8
+ # DefineDomainModel (a-004)
9
+
10
+ ## 目的
11
+
12
+ - Event Storming 形式でドメインモデルを体系的に定義する。
13
+ - ドメインモデルを作成しながら、ユビキタス言語(共通用語)を並行して洗練させる。
14
+ - Bounded Context を特定し、Actors / Commands / Events / Policies / Aggregates を明確化する。
15
+
16
+ ## 前提
17
+
18
+ - `docs/project/02-behavior/01-scenarios.md` が作成されている(`/a-003-create-scenarios` 実行済み)
19
+ - `docs/project/03-domain/` ディレクトリが存在(なければ `/a-001-setup-doc-structure`)
20
+ - ドメインエキスパートと協力できる
21
+
22
+ ## 手順
23
+
24
+ ### 1. ディレクトリと前提条件の確認
25
+
26
+ ```bash
27
+ ls -la docs/project/03-domain/ 2>/dev/null || echo "ディレクトリが存在しません"
28
+ ```
29
+
30
+ 存在しなければ `/a-001-setup-doc-structure` を促す。`docs/project/02-behavior/01-scenarios.md` を読み込み内容確認。
31
+
32
+ ### 2. テンプレートの準備
33
+
34
+ このスキルの配置ディレクトリ(`skills/a-004-define-domain-model/`)を起点に、`docs/project/03-domain/` へ次の 2 ファイルを Read→Write する(FOR EACH)。出力先が既に存在する場合は上書きせずスキップして報告する(冪等)。出力先ディレクトリ(`docs/project/03-domain/`)が無ければ作成する。
35
+
36
+ - `../../templates/project/03-domain/01-domain-model.md` → `docs/project/03-domain/01-domain-model.md`
37
+ - `../../templates/project/03-domain/02-ubiquitous-language.md` → `docs/project/03-domain/02-ubiquitous-language.md`
38
+
39
+ ### 3. Bounded Context の特定
40
+
41
+ シナリオとユーザーストーリーから Bounded Context を提案し、戦略的分類(Core / Supporting / Generic)を確認。詳細は [reference/event-storming-guide.md](reference/event-storming-guide.md#bounded-context-の特定) を参照。
42
+
43
+ ### 4. 各 Bounded Context のドメインモデル定義
44
+
45
+ 各 Context について以下を定義し、`01-domain-model.md` を更新。新しい用語が登場するたびに `02-ubiquitous-language.md` にも追記。
46
+
47
+ - 概要とアクター
48
+ - コマンド / イベント / ポリシー(Event Storming)
49
+ - 集約 / Read Models / External Systems
50
+
51
+ 各要素の詳細は [reference/event-storming-guide.md](reference/event-storming-guide.md#各-context-の定義項目) を参照。
52
+
53
+ ### 5. ユビキタス言語の洗練
54
+
55
+ `02-ubiquitous-language.md` を見直し、重複・曖昧さ・禁止用語を排除。観点は [reference/event-storming-guide.md](reference/event-storming-guide.md#ユビキタス言語の洗練観点) を参照。
56
+
57
+ ### 6. Context Map の定義
58
+
59
+ Context 間の関係性(Customer-Supplier, Shared Kernel 等)を Mermaid 図で定義。関係パターン: [reference/event-storming-guide.md](reference/event-storming-guide.md#context-map-の関係性)
60
+
61
+ ### 7. レビューと確認
62
+
63
+ 作成したドキュメントを提示し、ビジネス用語の正確性 / Aggregate 境界 / ユビキタス言語定義を確認。
64
+
65
+ ### 8. 完了条件と構造の確認
66
+
67
+ 構造確認コマンドは [reference/event-storming-guide.md](reference/event-storming-guide.md#構造確認コマンド) を参照。
68
+
69
+ チェックリスト:
70
+
71
+ - [ ] `01-domain-model.md` に主要な Event Storming 要素が含まれている
72
+ - [ ] `02-ubiquitous-language.md` の用語が定義されている
73
+ - [ ] ドメインモデルとユビキタス言語の整合性が取れている
74
+
75
+ ### 9. Git への追加(オプション)
76
+
77
+ ```bash
78
+ git add docs/project/03-domain/
79
+ git status
80
+ ```
81
+
82
+ コミットメッセージ: [reference/event-storming-guide.md](reference/event-storming-guide.md#git-コミットメッセージ)
83
+
84
+ ## 完了条件
85
+
86
+ - `docs/project/03-domain/01-domain-model.md` と `02-ubiquitous-language.md` が作成されている
87
+ - Bounded Context の主要ドメイン要素(Aggregates, Commands, Events)が定義されている
88
+ - ドメインモデルで使用される用語がユビキタス言語として定義されている
89
+ - ユーザーが内容を承認している
90
+
91
+ ## エスカレーション
92
+
93
+ - **シナリオが不足**: 「`/a-003-create-scenarios` に戻ってシナリオを充実させましょう。」
94
+ - **Bounded Context の境界が不明確**: 「暫定的な境界を設定し、実装を進めながら見直す方針で進めませんか?」
95
+
96
+ ## 参考
97
+
98
+ - [reference/event-storming-guide.md](reference/event-storming-guide.md) — Event Storming の観点、Context Map パターン、構造確認コマンド
@@ -1,102 +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
- ```bash
35
- SCRIPT_DIR=$(for d in .claude .agents; do [ -d "$d" ] && echo "$d" && break; done)
36
- cp "$SCRIPT_DIR/templates/project/04-design/01-tech-stack.md" "docs/project/04-design/01-tech-stack.md"
37
- ```
38
-
39
- ### 3. 要件分析と推奨技術スタックの生成
40
-
41
- - **システム特性の分析**: アプリケーションタイプ(SPA/SSR 等)、非機能要件、ドメイン複雑度
42
- - **レイヤー別推奨**: フロントエンド / バックエンド / データベース / インフラ・CI/CD / 監視・テスト
43
- - **提示形式**: 各技術に「推奨理由」と「代替案」を付ける
44
-
45
- 提案フォーマットと各層の候補一覧は [examples/stack-interview.md](examples/stack-interview.md#推奨案提示フォーマット) を参照。
46
-
47
- ### 4. 詳細インタビューと選定
48
-
49
- フィードバックを受けてレイヤーごとに詳細確認する。各レイヤーの具体的な質問項目は [examples/stack-interview.md](examples/stack-interview.md#レイヤー別インタビュー項目) を参照。
50
-
51
- - フロントエンド: フレームワーク、TypeScript、状態管理、スタイリング
52
- - バックエンド: 言語、フレームワーク、API スタイル
53
- - データベース: RDBMS/NoSQL、ORM、マイグレーション
54
- - インフラ: クラウド、コンテナ、IaC
55
- - 開発ツール: リンター、テスト、CI/CD
56
-
57
- ### 5. ドキュメント作成
58
-
59
- ヒアリング結果を `docs/project/04-design/01-tech-stack.md` に記入する。必須項目:
60
-
61
- - 技術名、バージョン
62
- - 選定理由(要件とのマッピング)
63
- - 選定タイミング(初期/中期/後期/随時)
64
-
65
- 記入例は [examples/stack-interview.md](examples/stack-interview.md#記入例表形式) を参照。
66
-
67
- ### 6. 構造チェック
68
-
69
- ```bash
70
- grep "### フロントエンド" docs/project/04-design/01-tech-stack.md \
71
- && grep "### バックエンド" docs/project/04-design/01-tech-stack.md \
72
- && echo "OK" || echo "MISSING SECTION"
73
- ```
74
-
75
- 詳細チェックリストは [reference/structure-check.md](reference/structure-check.md#チェックリスト) を参照。
76
-
77
- ### 7. Git への追加(任意)
78
-
79
- ```bash
80
- git add docs/project/04-design/01-tech-stack.md
81
- git commit -m "docs: 技術スタック選定ドキュメントの作成"
82
- ```
83
-
84
- 詳細は [reference/structure-check.md](reference/structure-check.md#git-への追加任意) を参照。
85
-
86
- ## 完了条件
87
-
88
- - `docs/project/04-design/01-tech-stack.md` が作成されている。
89
- - すべてのレイヤーについて技術選定が完了している(または「保留」として記録されている)。
90
- - 選定理由とバージョンが明確になっている。
91
- - ユーザーが内容を承認している。
92
-
93
- ## エスカレーション
94
-
95
- - **ユーザーが決められない**: 「要件に基づき、最も標準的でリスクの少ない [技術名] を仮採用とし、実装フェーズで再評価しませんか?」
96
- - **コスト・学習コストの懸念**: 「初期フェーズは慣れた技術([技術名])を採用し、複雑要件が出てから移行検討しましょう。」
97
- - 詳細応答例は [reference/structure-check.md](reference/structure-check.md#エスカレーション時の推奨応答) を参照。
98
-
99
- ## 参考
100
-
101
- - [examples/stack-interview.md](examples/stack-interview.md) — 推奨案フォーマット、レイヤー別インタビュー項目、選定タイミング区分、記入例
102
- - [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
+ - 既存の要件ドキュメント(システム概要、非機能要件、ドメインモデル)を分析し、適合する技術スタックを推奨する。
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 追加例