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.
- package/CHANGELOG.md +134 -94
- package/LICENSE +1 -1
- package/README.md +351 -263
- package/bin/checks/id-trace.js +137 -0
- package/bin/checks/links.js +59 -0
- package/bin/checks/placeholder.js +132 -0
- package/bin/checks/structure.js +127 -0
- package/bin/cli.js +51 -67
- package/bin/commands/doctor.js +128 -0
- package/bin/commands/install.js +58 -0
- package/bin/commands/new-task.js +117 -0
- package/bin/lib/check-cli.js +19 -0
- package/bin/lib/findings.js +31 -0
- package/bin/lib/markdown.js +103 -0
- package/bin/lib/project-spec.js +138 -0
- package/bin/lib/walk-md.js +23 -0
- package/package.json +68 -55
- package/skills/a-001-setup-doc-structure/SKILL.md +68 -68
- package/skills/a-001-setup-doc-structure/reference/directory-structure.md +75 -75
- package/skills/a-002-initialize-project/SKILL.md +145 -118
- package/skills/a-002-initialize-project/reference/hearing-questions.md +91 -41
- package/skills/a-002-initialize-project/reference/structure-check.md +12 -22
- package/skills/a-002a-slice-mvp-scope/SKILL.md +105 -0
- package/skills/a-002b-define-user-stories/SKILL.md +80 -0
- package/skills/a-002b-define-user-stories/reference/user-stories-guide.md +78 -0
- package/skills/a-003-create-scenarios/SKILL.md +97 -96
- package/{templates/project/02-behavior/01-scenarios.md → skills/a-003-create-scenarios/reference/detailed-gherkin-template.md} +413 -406
- package/skills/a-003-create-scenarios/reference/structure-check.md +20 -17
- package/skills/a-004-define-domain-model/SKILL.md +107 -98
- package/skills/a-004-define-domain-model/reference/event-storming-guide.md +33 -7
- package/skills/a-004-define-domain-model/reference/ubiquitous-language-guide.md +49 -0
- package/skills/a-005-create-domain-diagram/SKILL.md +18 -17
- package/skills/a-006-review-requirements-domain/SKILL.md +59 -22
- package/skills/a-006-review-requirements-domain/examples/review-report-template.md +27 -7
- package/skills/a-006-review-requirements-domain/reference/consistency-checks.md +53 -18
- package/skills/a-007-define-tech-stack/SKILL.md +99 -99
- package/skills/a-008-define-repository-structure/SKILL.md +96 -96
- package/skills/a-009-define-screen-design/SKILL.md +103 -103
- package/skills/a-010-define-design-system/SKILL.md +130 -130
- package/skills/a-011-define-data-model/SKILL.md +118 -118
- package/skills/a-012-define-api-spec/SKILL.md +105 -105
- package/skills/a-013-define-architecture/SKILL.md +98 -98
- package/skills/a-014-define-infrastructure/SKILL.md +118 -110
- package/skills/{a-002-initialize-project → a-014-define-infrastructure}/examples/nfr-baseline.md +2 -1
- package/{templates/project/01-requirements/04-non-functional-requirements.md → skills/a-014-define-infrastructure/examples/non-functional-requirements.md} +120 -115
- package/skills/a-015-review-design/reference/consistency-checks.md +1 -1
- package/skills/b-001-create-task-directory/SKILL.md +68 -68
- package/skills/b-002-create-task-definition/SKILL.md +114 -114
- package/skills/b-003-create-task-research/SKILL.md +128 -128
- package/skills/b-004-create-task-implementation/SKILL.md +98 -98
- package/skills/b-005-review-task/reference/assessment-criteria.md +79 -79
- package/skills/c-001-implement-task/SKILL.md +186 -186
- package/skills/c-001-implement-task/reference/implementation-loop.md +65 -65
- package/skills/c-002-update-documentation/SKILL.md +159 -159
- package/skills/c-002-update-documentation/examples/project-doc-updates.md +4 -4
- package/skills/c-002-update-documentation/reference/doc-structure-and-checks.md +99 -97
- package/templates/project/01-requirements/01-product-brief.md +186 -0
- package/templates/project/01-requirements/02-mvp-scope.md +64 -0
- package/templates/project/01-requirements/03-parking-lot.md +29 -0
- package/templates/project/01-requirements/05-user-stories.md +28 -124
- package/templates/project/01-requirements/{02-features-implemented.md → 06-features-implemented.md} +77 -73
- package/templates/project/02-behavior/01-core-scenarios.md +80 -0
- package/templates/project/03-domain/01-domain-model.md +120 -339
- package/templates/project/03-domain/01-domain-sketch.md +90 -0
- package/templates/project/03-domain/02-ubiquitous-language.md +32 -153
- package/templates/project/04-design/01-tech-stack.md +367 -367
- package/templates/project/04-design/02-repository-structure.md +391 -391
- package/templates/project/04-design/03-screen-design.md +596 -596
- package/templates/project/04-design/04-design-system.md +261 -261
- package/templates/project/04-design/05-data-model.md +211 -211
- package/templates/project/04-design/06-api-spec.md +226 -226
- package/templates/project/04-design/07-architecture.md +183 -183
- package/templates/project/04-design/08-infrastructure.md +180 -180
- package/templates/project/AI_CONTEXT.md +55 -0
- package/templates/project/STAKEHOLDER-SUMMARY.md +66 -0
- package/templates/tasks/task-template/a-definition.md +143 -143
- package/templates/tasks/task-template/b-research.md +185 -185
- package/templates/tasks/task-template/c-implementation.md +200 -200
- package/templates/project/01-requirements/01-system-overview.md +0 -49
- package/templates/project/01-requirements/03-features-planned.md +0 -75
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# レビュー結果レポートテンプレート
|
|
2
2
|
|
|
3
|
-
SKILL.md 手順
|
|
3
|
+
SKILL.md 手順4 で作成する `docs/project/REVIEW-REPORT-*.md` のフォーマット例。
|
|
4
4
|
|
|
5
5
|
## レポートフォーマット
|
|
6
6
|
|
|
@@ -22,10 +22,10 @@ SKILL.md 手順3 で作成する `docs/project/REVIEW-REPORT-*.md` のフォー
|
|
|
22
22
|
- **Error**: US-005 に対応するシナリオが見つかりません。
|
|
23
23
|
- OK: 優先度 High のストーリーはすべてカバーされています。
|
|
24
24
|
|
|
25
|
-
### 2.
|
|
25
|
+
### 2. MVP スコープ・クリティカル制約
|
|
26
26
|
|
|
27
27
|
- **Warning**: 実装済み機能「決済」のシナリオが不足しています。
|
|
28
|
-
- OK:
|
|
28
|
+
- OK: Product Brief のクリティカル制約「社内 SSO 必須」が MVP スコープ・ドメインに反映されています。
|
|
29
29
|
|
|
30
30
|
### 3. シナリオ ↔ ドメインモデル
|
|
31
31
|
|
|
@@ -34,13 +34,25 @@ SKILL.md 手順3 で作成する `docs/project/REVIEW-REPORT-*.md` のフォー
|
|
|
34
34
|
### 4. ユビキタス言語
|
|
35
35
|
|
|
36
36
|
- **Error**: 用語「ShippingAddress」がユビキタス言語一覧にありません。
|
|
37
|
-
- **Warning**: 禁止用語「User Data」が `01-domain-
|
|
37
|
+
- **Warning**: 禁止用語「User Data」が `01-domain-sketch.md` で使用されています。
|
|
38
|
+
|
|
39
|
+
### 5. MVP 正当化 / 過剰作り込み(YAGNI)
|
|
40
|
+
|
|
41
|
+
- **過剰作り込み候補**: Must 機能「実績バッジ」が課題・ペルソナ・成功指標のいずれにも trace しません。Not Now / Won't への変更を検討してください。
|
|
42
|
+
- OK: その他の Must はすべて検証仮説・成功指標に紐づいています。
|
|
43
|
+
- OK: Out of Scope(Won't)と矛盾する実装記述はありません。
|
|
44
|
+
|
|
45
|
+
## PM Gate 判定
|
|
46
|
+
|
|
47
|
+
**判定**: Go with caveats
|
|
48
|
+
|
|
49
|
+
**根拠**: 整合性は良好。ただし Must「実績バッジ」が正当化されていないため、スコープから外すことを条件に実装着手可。
|
|
38
50
|
|
|
39
51
|
## 推奨アクション
|
|
40
52
|
|
|
41
|
-
1.
|
|
42
|
-
2. `/a-
|
|
43
|
-
3. `01-domain-
|
|
53
|
+
1. `02-mvp-scope.md` の「実績バッジ」を Won't に変更する(過剰作り込み)。
|
|
54
|
+
2. `/a-003-create-scenarios` で US-005 のシナリオを追加する。
|
|
55
|
+
3. `01-domain-sketch.md` の「User Data」を「User Profile」に修正する。
|
|
44
56
|
```
|
|
45
57
|
|
|
46
58
|
## 重大度記号の使い方
|
|
@@ -51,6 +63,14 @@ SKILL.md 手順3 で作成する `docs/project/REVIEW-REPORT-*.md` のフォー
|
|
|
51
63
|
| Warning | 軽微な不整合 | 計画的に修正 |
|
|
52
64
|
| Error | 重大な不整合 | 実装前に必ず修正 |
|
|
53
65
|
|
|
66
|
+
## PM Gate 判定の使い方
|
|
67
|
+
|
|
68
|
+
| 判定 | 意味 | 次のアクション |
|
|
69
|
+
|:--|:--|:--|
|
|
70
|
+
| Go | 実装着手してよい | `AI_CONTEXT.md` を実装エージェントへ渡す |
|
|
71
|
+
| Go with caveats | 条件付きで着手可 | caveat を明記し、合意の上で着手 |
|
|
72
|
+
| No-Go | 重大課題あり | 実装前に該当ドキュメントを修正し再レビュー |
|
|
73
|
+
|
|
54
74
|
## コミットメッセージ例
|
|
55
75
|
|
|
56
76
|
```text
|
|
@@ -2,37 +2,53 @@
|
|
|
2
2
|
|
|
3
3
|
SKILL.md 手順2 で実施する各チェック項目の詳細。自動検索(grep 等)と手動確認を組み合わせる。
|
|
4
4
|
|
|
5
|
-
## 2.1 ユーザーストーリー ↔
|
|
5
|
+
## 2.1 ユーザーストーリー ↔ Core Scenario
|
|
6
6
|
|
|
7
|
-
- **カバレッジ**:
|
|
8
|
-
- **整合性**:
|
|
7
|
+
- **カバレッジ**: MVP Scope の Must 機能に対応する Core Scenario(Day 1 Happy Path)が存在するか。User Story は要約 AC、Core Scenario は実行時の主要行動という SSoT の住み分けを保つ(全 US を逐一シナリオ化しない)。
|
|
8
|
+
- **整合性**: ストーリーの「価値」と Core Scenario の「結果(Then)」が一致しているか。
|
|
9
9
|
|
|
10
10
|
```bash
|
|
11
11
|
# 全ユーザーストーリーの ID 抽出
|
|
12
12
|
grep -oE "US-[0-9]+" docs/project/01-requirements/05-user-stories.md | sort -u
|
|
13
|
-
#
|
|
14
|
-
grep -oE "
|
|
13
|
+
# Core Scenario 側の対応 Must / フロー参照
|
|
14
|
+
grep -oE "FN-[0-9]+|CS-[0-9]+" docs/project/02-behavior/01-core-scenarios.md | sort -u
|
|
15
15
|
```
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
### ユーザーストーリーの役割 ↔ ペルソナ(trace)
|
|
18
18
|
|
|
19
|
-
-
|
|
20
|
-
-
|
|
19
|
+
- **役割が宙に浮かない**: `05-user-stories.md` の各ストーリーの「ペルソナ」列が、`01-product-brief.md` のペルソナ表で定義済みの ID(P-XXX)を参照しているか。**未定義のペルソナを参照する US はフラグ**する(役割の trace 切れ)。
|
|
20
|
+
- **逆方向(任意)**: どの US からも参照されない主要ペルソナがあれば、スコープ漏れか過剰ペルソナのどちらかとして確認する。
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
```bash
|
|
23
|
+
# US が参照するペルソナ ID のうち、Product Brief に未定義のもの(出力があれば trace 切れ)
|
|
24
|
+
comm -23 \
|
|
25
|
+
<(grep -oE "P-[0-9]+" docs/project/01-requirements/05-user-stories.md | sort -u) \
|
|
26
|
+
<(grep -oE "P-[0-9]+" docs/project/01-requirements/01-product-brief.md | sort -u)
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## 2.2 MVP スコープ・実装済み機能 ↔ シナリオ
|
|
30
|
+
|
|
31
|
+
- **MVP スコープ**: `02-mvp-scope.md` の Must 機能にシナリオが存在するか。
|
|
32
|
+
- **実装済み機能**: `06-features-implemented.md`(existing モード)の機能にリグレッション用シナリオが存在するか。
|
|
33
|
+
- **Parking Lot**: `03-parking-lot.md` は backlog のためシナリオ必須ではない(MVP 昇格時に MVP スコープ側で扱う)。
|
|
23
34
|
|
|
24
|
-
|
|
25
|
-
- **セキュリティ**: 認証・権限要件が Policy や Guard としてドメインモデルに含まれているか。
|
|
35
|
+
## 2.3 クリティカル制約 ↔ スコープ/ドメイン
|
|
26
36
|
|
|
27
|
-
|
|
37
|
+
初期フェーズでは定量 NFR ではなく、Product Brief の「クリティカル制約」を確認する(詳細な定量 NFR は設計フェーズ `/a-014-define-infrastructure` の責務)。
|
|
28
38
|
|
|
29
|
-
-
|
|
30
|
-
-
|
|
31
|
-
|
|
39
|
+
- **制約の反映**: `01-product-brief.md` のクリティカル制約(法務・セキュリティ・期限・予算・外部 API 等)が `02-mvp-scope.md` の Must 判断やドメインモデルに反映されているか。
|
|
40
|
+
- **セキュリティ・権限**: 制約に挙げた認証・権限要件が Policy や Guard としてドメインモデルに含まれているか。
|
|
41
|
+
|
|
42
|
+
## 2.4 Core Scenario ↔ Domain Sketch
|
|
43
|
+
|
|
44
|
+
- **アクター**: Core Scenario のアクターが Domain Sketch の「アクター / 外部システム」に存在するか。
|
|
45
|
+
- **中核エンティティ**: Core Scenario が扱う対象が Domain Sketch の「中核エンティティ」に定義されているか。
|
|
46
|
+
- **重要ルール**: Critical Failure を防ぐルールが「重要なビジネスルール」に反映されているか。
|
|
47
|
+
- **Full DDD 採用時**: `01-domain-model.md` がある場合は、When→Command / Then→Event / Actor の対応も確認する。
|
|
32
48
|
|
|
33
49
|
## 2.5 ユビキタス言語の遵守
|
|
34
50
|
|
|
35
|
-
- **用語定義**:
|
|
51
|
+
- **用語定義**: Domain Sketch の主要用語・中核エンティティ(Full DDD 採用時は Aggregate / Command / Event)がユビキタス言語一覧にあるか。
|
|
36
52
|
- **禁止用語**: 各ドキュメントに禁止用語(Data, Process, Manager 等)が使われていないか。
|
|
37
53
|
|
|
38
54
|
```bash
|
|
@@ -44,8 +60,27 @@ grep -rn "Manager" docs/project/03-domain/ || echo "No 'Manager' found"
|
|
|
44
60
|
|
|
45
61
|
## 2.6 目的との整合性
|
|
46
62
|
|
|
47
|
-
-
|
|
48
|
-
-
|
|
63
|
+
- Product Brief(`01-product-brief.md`)の「価値提案 / 差別化」が Domain Sketch の「中核エンティティ」「重要なビジネスルール」に反映されているか。
|
|
64
|
+
- **価値提案の充足**: 「価値提案 / 差別化」のバリュープロポジション(1文)と差別化ポイント(Why us)が埋まり、Why us が「現在の代替手段・競合スキャン」表の各「弱み」と対応づいているか(漠然と「使いやすい」で済ませていないか)。
|
|
65
|
+
- **目的 ↔ 成功指標**: Product Brief の成功指標(North Star / KPI / Guardrail)が「価値提案 / 解く課題」と整合しているか(目的と無関係な指標を測っていないか)。
|
|
66
|
+
- **計測可能性**: 各成功指標に計測方法(どこで・どう取得)が記載され、計測可能か。今すぐ取れない指標が代理指標に置き換えられているか(MVP 段階は仮説値で可)。
|
|
67
|
+
- Full DDD(`01-domain-model.md`)採用時は、ビジネス価値の提供元が Core Domain に寄っているか(Generic に偏っていないか)も確認する。
|
|
68
|
+
|
|
69
|
+
## 2.7 MVP 正当化 / 過剰作り込み(YAGNI / PM Gate)
|
|
70
|
+
|
|
71
|
+
「要らないものを作らない」を守るためのスコープ妥当性検査。
|
|
72
|
+
|
|
73
|
+
- **Must の trace**: `02-mvp-scope.md` の各 Must 機能が、Product Brief の 課題 / ターゲット(ペルソナ)/ 成功指標 / 検証仮説 のいずれかに紐づくか。**いずれにも trace しない Must は過剰作り込み候補としてフラグ**する。
|
|
74
|
+
- **Out of Scope の矛盾**: `02-mvp-scope.md` の Won't / Out of Scope に挙げた機能が、他ドキュメント(シナリオ・ドメインモデル・`05-user-stories.md`)で実装対象として記述されていないか。
|
|
75
|
+
- **安い代替手段**: 手作業・既存ツール・外部サービスで足りるものが Must になっていないか(`02-mvp-scope.md` の「より安い代替手段」列を確認)。
|
|
76
|
+
- **仮説の数**: 検証する仮説が 1〜3 個に絞れているか(多すぎる=MVP が過大)。
|
|
77
|
+
|
|
78
|
+
> 成功指標と目的の整合(目的 ↔ 成功指標)・計測可能性は [2.6 目的との整合性](#26-目的との整合性)で検査する。
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
# Out of Scope(Won't)に挙げた機能名が他 doc に混入していないか(例)
|
|
82
|
+
grep -rn "{Won't機能名}" docs/project/02-behavior/ docs/project/03-domain/
|
|
83
|
+
```
|
|
49
84
|
|
|
50
85
|
## エスカレーションの判断材料
|
|
51
86
|
|
|
@@ -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-
|
|
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 追加例
|
|
@@ -1,96 +1,96 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: a-008-define-repository-structure
|
|
3
|
-
description: 技術スタックに基づきディレクトリ構造・アーキテクチャパターン・命名規則を定義する。技術選定後、コードの配置方針を決める際に使用。
|
|
4
|
-
disable-model-invocation: true
|
|
5
|
-
allowed-tools: Read, Write, Edit, Bash, Grep, Glob
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# DefineRepositoryStructure (a-008)
|
|
9
|
-
|
|
10
|
-
## 目的
|
|
11
|
-
|
|
12
|
-
- 決定された技術スタックに基づいて、最適なリポジトリ構造を定義する。
|
|
13
|
-
- アーキテクチャパターン(レイヤード、機能ベース、クリーンアーキテクチャなど)を選定する。
|
|
14
|
-
- ディレクトリの責務、命名規則、依存関係ルールを明確化する。
|
|
15
|
-
|
|
16
|
-
## 前提
|
|
17
|
-
|
|
18
|
-
- `docs/project/04-design/01-tech-stack.md` が作成されていること(`/a-007-define-tech-stack` 実行済み)。
|
|
19
|
-
- `docs/project/03-domain/01-domain-
|
|
20
|
-
- `docs/project/04-design/` ディレクトリが存在すること。
|
|
21
|
-
|
|
22
|
-
## 手順
|
|
23
|
-
|
|
24
|
-
### 1. ドキュメントと前提条件の確認
|
|
25
|
-
|
|
26
|
-
```bash
|
|
27
|
-
ls -la docs/project/04-design/01-tech-stack.md 2>/dev/null || echo "ファイルが存在しません"
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
`01-tech-stack.md` を読み込み、技術スタックを把握する。
|
|
31
|
-
|
|
32
|
-
### 2. テンプレートの準備
|
|
33
|
-
|
|
34
|
-
このスキルの配置ディレクトリ(`skills/a-008-define-repository-structure/`)を起点に、相対パス `../../templates/project/04-design/02-repository-structure.md` を Read で読み込み、その内容を `docs/project/04-design/02-repository-structure.md` へ Write する。出力先が既に存在する場合は上書きせずスキップして報告する(冪等)。出力先ディレクトリ(`docs/project/04-design/`)が無ければ作成する。
|
|
35
|
-
|
|
36
|
-
### 3. アーキテクチャパターンの提案
|
|
37
|
-
|
|
38
|
-
技術スタックと要件に基づき、最適なパターンを提案する。選定ガイドは [reference/structure-check.md](reference/structure-check.md#アーキテクチャパターン選定ガイド) を参照。
|
|
39
|
-
|
|
40
|
-
- レイヤード / 機能ベース / クリーンアーキテクチャ / Atomic Design / FSD
|
|
41
|
-
- 「推奨: [パターン名]」「理由: [技術スタックとの適合性、保守性]」
|
|
42
|
-
|
|
43
|
-
### 4. ディレクトリ構造の詳細定義
|
|
44
|
-
|
|
45
|
-
フィードバックを受けて以下を確定する。具体的なツリー例は [examples/structure-templates.md](examples/structure-templates.md#アーキテクチャパターン別の構成例) を参照。
|
|
46
|
-
|
|
47
|
-
- **ディレクトリ構成**: ソースルート(`src/` vs `app/`)、テスト配置、機能モジュール構成
|
|
48
|
-
- **命名規則**: ファイル名(PascalCase / camelCase / kebab-case)、識別子規則
|
|
49
|
-
- **依存関係ルール**: 上位層から下位層への依存のみ等
|
|
50
|
-
- **コロケーション戦略**: 関連ファイルをまとめるか分離するか
|
|
51
|
-
|
|
52
|
-
命名規則と依存ルールの具体例は [examples/structure-templates.md](examples/structure-templates.md#命名規則のサンプル) を参照。
|
|
53
|
-
|
|
54
|
-
### 5. ドキュメント作成
|
|
55
|
-
|
|
56
|
-
`docs/project/04-design/02-repository-structure.md` に以下を記入する:
|
|
57
|
-
|
|
58
|
-
- ディレクトリツリー図(`tree` 形式)
|
|
59
|
-
- 各ディレクトリの役割説明
|
|
60
|
-
- 採用したアーキテクチャパターンと理由
|
|
61
|
-
- 命名規則と依存ルール
|
|
62
|
-
|
|
63
|
-
### 6. 構造チェック
|
|
64
|
-
|
|
65
|
-
```bash
|
|
66
|
-
grep "project-root/" docs/project/04-design/02-repository-structure.md \
|
|
67
|
-
&& grep "## アーキテクチャパターン" docs/project/04-design/02-repository-structure.md \
|
|
68
|
-
&& grep "## 命名規則" docs/project/04-design/02-repository-structure.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/02-repository-structure.md
|
|
78
|
-
git commit -m "docs: リポジトリ構造とアーキテクチャ定義の作成"
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
## 完了条件
|
|
82
|
-
|
|
83
|
-
- `docs/project/04-design/02-repository-structure.md` が作成されている。
|
|
84
|
-
- プロジェクトのディレクトリ構造が明確に定義されている。
|
|
85
|
-
- チーム開発に必要なルール(命名、配置、依存)が文書化されている。
|
|
86
|
-
- ユーザーが内容を承認している。
|
|
87
|
-
|
|
88
|
-
## エスカレーション
|
|
89
|
-
|
|
90
|
-
- **技術スタックと構造の不一致**: 「選択されたフレームワーク([名前])の標準構成と異なります。標準に従うか、独自構造を採用するか確認しましょう。」
|
|
91
|
-
- **構造が過度に複雑**: 「初期段階では複雑すぎる可能性があります。まずはフラットな構成から始め、必要に応じて分割することを推奨します。」
|
|
92
|
-
|
|
93
|
-
## 参考
|
|
94
|
-
|
|
95
|
-
- [examples/structure-templates.md](examples/structure-templates.md) — パターン別ディレクトリツリー例、命名規則、依存関係ルール、コロケーション戦略
|
|
96
|
-
- [reference/structure-check.md](reference/structure-check.md) — 構造確認コマンド、チェックリスト、パターン選定ガイド、レビュー質問
|
|
1
|
+
---
|
|
2
|
+
name: a-008-define-repository-structure
|
|
3
|
+
description: 技術スタックに基づきディレクトリ構造・アーキテクチャパターン・命名規則を定義する。技術選定後、コードの配置方針を決める際に使用。
|
|
4
|
+
disable-model-invocation: true
|
|
5
|
+
allowed-tools: Read, Write, Edit, Bash, Grep, Glob
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# DefineRepositoryStructure (a-008)
|
|
9
|
+
|
|
10
|
+
## 目的
|
|
11
|
+
|
|
12
|
+
- 決定された技術スタックに基づいて、最適なリポジトリ構造を定義する。
|
|
13
|
+
- アーキテクチャパターン(レイヤード、機能ベース、クリーンアーキテクチャなど)を選定する。
|
|
14
|
+
- ディレクトリの責務、命名規則、依存関係ルールを明確化する。
|
|
15
|
+
|
|
16
|
+
## 前提
|
|
17
|
+
|
|
18
|
+
- `docs/project/04-design/01-tech-stack.md` が作成されていること(`/a-007-define-tech-stack` 実行済み)。
|
|
19
|
+
- `docs/project/03-domain/01-domain-sketch.md` が作成されていること(推奨。Full DDD 採用時は `01-domain-model.md`)。
|
|
20
|
+
- `docs/project/04-design/` ディレクトリが存在すること。
|
|
21
|
+
|
|
22
|
+
## 手順
|
|
23
|
+
|
|
24
|
+
### 1. ドキュメントと前提条件の確認
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
ls -la docs/project/04-design/01-tech-stack.md 2>/dev/null || echo "ファイルが存在しません"
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
`01-tech-stack.md` を読み込み、技術スタックを把握する。
|
|
31
|
+
|
|
32
|
+
### 2. テンプレートの準備
|
|
33
|
+
|
|
34
|
+
このスキルの配置ディレクトリ(`skills/a-008-define-repository-structure/`)を起点に、相対パス `../../templates/project/04-design/02-repository-structure.md` を Read で読み込み、その内容を `docs/project/04-design/02-repository-structure.md` へ Write する。出力先が既に存在する場合は上書きせずスキップして報告する(冪等)。出力先ディレクトリ(`docs/project/04-design/`)が無ければ作成する。
|
|
35
|
+
|
|
36
|
+
### 3. アーキテクチャパターンの提案
|
|
37
|
+
|
|
38
|
+
技術スタックと要件に基づき、最適なパターンを提案する。選定ガイドは [reference/structure-check.md](reference/structure-check.md#アーキテクチャパターン選定ガイド) を参照。
|
|
39
|
+
|
|
40
|
+
- レイヤード / 機能ベース / クリーンアーキテクチャ / Atomic Design / FSD
|
|
41
|
+
- 「推奨: [パターン名]」「理由: [技術スタックとの適合性、保守性]」
|
|
42
|
+
|
|
43
|
+
### 4. ディレクトリ構造の詳細定義
|
|
44
|
+
|
|
45
|
+
フィードバックを受けて以下を確定する。具体的なツリー例は [examples/structure-templates.md](examples/structure-templates.md#アーキテクチャパターン別の構成例) を参照。
|
|
46
|
+
|
|
47
|
+
- **ディレクトリ構成**: ソースルート(`src/` vs `app/`)、テスト配置、機能モジュール構成
|
|
48
|
+
- **命名規則**: ファイル名(PascalCase / camelCase / kebab-case)、識別子規則
|
|
49
|
+
- **依存関係ルール**: 上位層から下位層への依存のみ等
|
|
50
|
+
- **コロケーション戦略**: 関連ファイルをまとめるか分離するか
|
|
51
|
+
|
|
52
|
+
命名規則と依存ルールの具体例は [examples/structure-templates.md](examples/structure-templates.md#命名規則のサンプル) を参照。
|
|
53
|
+
|
|
54
|
+
### 5. ドキュメント作成
|
|
55
|
+
|
|
56
|
+
`docs/project/04-design/02-repository-structure.md` に以下を記入する:
|
|
57
|
+
|
|
58
|
+
- ディレクトリツリー図(`tree` 形式)
|
|
59
|
+
- 各ディレクトリの役割説明
|
|
60
|
+
- 採用したアーキテクチャパターンと理由
|
|
61
|
+
- 命名規則と依存ルール
|
|
62
|
+
|
|
63
|
+
### 6. 構造チェック
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
grep "project-root/" docs/project/04-design/02-repository-structure.md \
|
|
67
|
+
&& grep "## アーキテクチャパターン" docs/project/04-design/02-repository-structure.md \
|
|
68
|
+
&& grep "## 命名規則" docs/project/04-design/02-repository-structure.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/02-repository-structure.md
|
|
78
|
+
git commit -m "docs: リポジトリ構造とアーキテクチャ定義の作成"
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## 完了条件
|
|
82
|
+
|
|
83
|
+
- `docs/project/04-design/02-repository-structure.md` が作成されている。
|
|
84
|
+
- プロジェクトのディレクトリ構造が明確に定義されている。
|
|
85
|
+
- チーム開発に必要なルール(命名、配置、依存)が文書化されている。
|
|
86
|
+
- ユーザーが内容を承認している。
|
|
87
|
+
|
|
88
|
+
## エスカレーション
|
|
89
|
+
|
|
90
|
+
- **技術スタックと構造の不一致**: 「選択されたフレームワーク([名前])の標準構成と異なります。標準に従うか、独自構造を採用するか確認しましょう。」
|
|
91
|
+
- **構造が過度に複雑**: 「初期段階では複雑すぎる可能性があります。まずはフラットな構成から始め、必要に応じて分割することを推奨します。」
|
|
92
|
+
|
|
93
|
+
## 参考
|
|
94
|
+
|
|
95
|
+
- [examples/structure-templates.md](examples/structure-templates.md) — パターン別ディレクトリツリー例、命名規則、依存関係ルール、コロケーション戦略
|
|
96
|
+
- [reference/structure-check.md](reference/structure-check.md) — 構造確認コマンド、チェックリスト、パターン選定ガイド、レビュー質問
|