spec-runner 1.6.0 → 1.8.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/bin/spec-runner-installer.js +7 -85
- package/package.json +1 -1
- package/spec-runner/templates/.claude/rules/agent-delegation.md +1 -0
- package/spec-runner/templates/.claude/rules/design-docs.md +34 -26
- package/spec-runner/templates/.claude/skills/architecture-definition/SKILL.md +12 -4
- package/spec-runner/templates/.claude/skills/architecture-skill-development/SKILL.md +40 -20
- package/spec-runner/templates/.claude/skills/ddd-seed/SKILL.md +11 -12
- package/spec-runner/templates/.claude/skills/ddd-seed/templates/01_/350/246/201/344/273/266/345/256/232/347/276/251//343/203/246/343/203/223/343/202/255/343/202/277/343/202/271/350/250/200/350/252/236/350/276/236/346/233/270.md +1 -1
- package/spec-runner/templates/.claude/skills/ddd-seed/templates/01_/350/246/201/344/273/266/345/256/232/347/276/251//350/246/201/344/273/266/345/256/232/347/276/251.md +1 -1
- package/spec-runner/templates/.claude/skills/ddd-seed/templates/02_/346/246/202/350/246/201/350/250/255/350/250/210//343/203/211/343/203/241/343/202/244/343/203/263/343/203/242/343/203/207/343/203/253.md +1 -1
- package/spec-runner/templates/.claude/skills/ddd-seed/templates/02_/346/246/202/350/246/201/350/250/255/350/250/210//343/203/246/343/203/274/343/202/271/343/202/261/343/203/274/343/202/271/344/270/200/350/246/247.md +1 -1
- package/spec-runner/templates/.claude/skills/ddd-seed/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/02_/343/203/246/343/203/274/343/202/271/343/202/261/343/203/274/343/202/271/UC-{/346/227/245/346/234/254/350/252/236/345/220/215}.md +0 -15
- package/spec-runner/templates/.claude/skills/design-change/SKILL.md +35 -20
- package/spec-runner/templates/.claude/skills/existing-project-to-docs/SKILL.md +45 -24
- package/spec-runner/templates/.claude/skills/frontend-seed/SKILL.md +121 -0
- package/spec-runner/templates/.claude/skills/frontend-seed/templates/01_/350/246/201/344/273/266/345/256/232/347/276/251//350/246/201/344/273/266/345/256/232/347/276/251.md +35 -0
- package/spec-runner/templates/.claude/skills/frontend-seed/templates/02_/346/246/202/350/246/201/350/250/255/350/250/210//343/202/263/343/203/263/343/203/235/343/203/274/343/203/215/343/203/263/343/203/210/344/270/200/350/246/247.md +19 -0
- package/spec-runner/templates/.claude/skills/frontend-seed/templates/02_/346/246/202/350/246/201/350/250/255/350/250/210//347/224/273/351/235/242/344/270/200/350/246/247.md +25 -0
- package/spec-runner/templates/.claude/skills/frontend-seed/templates/02_/346/246/202/350/246/201/350/250/255/350/250/210//347/224/273/351/235/242/351/201/267/347/247/273/345/233/263.md +23 -0
- package/spec-runner/templates/.claude/skills/frontend-seed/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/01_/347/224/273/351/235/242/{/343/202/253/343/203/206/343/202/264/343/203/252/345/220/215}/{/347/224/273/351/235/242/345/220/215}.md +65 -0
- package/spec-runner/templates/.claude/skills/frontend-seed/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/02_/343/202/263/343/203/263/343/203/235/343/203/274/343/203/215/343/203/263/343/203/210/{/343/202/263/343/203/263/343/203/235/343/203/274/343/203/215/343/203/263/343/203/210/345/220/215}.md +41 -0
- package/spec-runner/templates/.claude/skills/frontend-seed/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/90_ADR/ADR-{/346/227/245/346/234/254/350/252/236/345/220/215}.md +46 -0
- package/spec-runner/templates/.claude/skills/simple-seed/SKILL.md +9 -10
- package/spec-runner/templates/.claude/skills/simple-seed/templates/02_/346/246/202/350/246/201/350/250/255/350/250/210//343/203/246/343/203/274/343/202/271/343/202/261/343/203/274/343/202/271/344/270/200/350/246/247.md +1 -1
- package/spec-runner/templates/.claude/skills/simple-seed/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/01_/343/203/246/343/203/274/343/202/271/343/202/261/343/203/274/343/202/271/UC-{/346/227/245/346/234/254/350/252/236/345/220/215}.md +0 -15
- package/spec-runner/templates/.github/instructions/design-docs.instructions.md +33 -25
- package/spec-runner/templates/.github/skills/architecture-definition/SKILL.md +12 -4
- package/spec-runner/templates/.github/skills/architecture-skill-development/SKILL.md +40 -20
- package/spec-runner/templates/.github/skills/ddd-seed/SKILL.md +11 -12
- package/spec-runner/templates/.github/skills/design-change/SKILL.md +35 -20
- package/spec-runner/templates/.github/skills/existing-project-to-docs/SKILL.md +45 -24
- package/spec-runner/templates/.github/skills/frontend-seed/SKILL.md +121 -0
- package/spec-runner/templates/.github/skills/frontend-seed/templates/01_/350/246/201/344/273/266/345/256/232/347/276/251//350/246/201/344/273/266/345/256/232/347/276/251.md +35 -0
- package/spec-runner/templates/.github/skills/frontend-seed/templates/02_/346/246/202/350/246/201/350/250/255/350/250/210//343/202/263/343/203/263/343/203/235/343/203/274/343/203/215/343/203/263/343/203/210/344/270/200/350/246/247.md +19 -0
- package/spec-runner/templates/.github/skills/frontend-seed/templates/02_/346/246/202/350/246/201/350/250/255/350/250/210//347/224/273/351/235/242/344/270/200/350/246/247.md +25 -0
- package/spec-runner/templates/.github/skills/frontend-seed/templates/02_/346/246/202/350/246/201/350/250/255/350/250/210//347/224/273/351/235/242/351/201/267/347/247/273/345/233/263.md +23 -0
- package/spec-runner/templates/.github/skills/frontend-seed/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/01_/347/224/273/351/235/242/{/343/202/253/343/203/206/343/202/264/343/203/252/345/220/215}/{/347/224/273/351/235/242/345/220/215}.md +65 -0
- package/spec-runner/templates/.github/skills/frontend-seed/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/02_/343/202/263/343/203/263/343/203/235/343/203/274/343/203/215/343/203/263/343/203/210/{/343/202/263/343/203/263/343/203/235/343/203/274/343/203/215/343/203/263/343/203/210/345/220/215}.md +41 -0
- package/spec-runner/templates/.github/skills/frontend-seed/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/90_ADR/ADR-{/346/227/245/346/234/254/350/252/236/345/220/215}.md +46 -0
- package/spec-runner/templates/.github/skills/simple-seed/SKILL.md +9 -10
- package/spec-runner/templates/.spec-runner/references/resources.md +46 -0
- package/spec-runner/templates/.claude/skills/design-change/references//345/275/261/351/237/277/347/257/204/345/233/262/343/203/201/343/202/247/343/203/203/343/202/257/343/203/252/343/202/271/343/203/210.md +0 -59
- package/spec-runner/templates/.claude/skills/spec-probe/SKILL.md +0 -12
- package/spec-runner/templates/.github/skills/design-change/references//345/275/261/351/237/277/347/257/204/345/233/262/343/203/201/343/202/247/343/203/203/343/202/257/343/203/252/343/202/271/343/203/210.md +0 -59
- package/spec-runner/templates/.github/skills/spec-probe/SKILL.md +0 -12
|
@@ -7,7 +7,6 @@ description: 既存機能の変更を docs 正本で進めるフローガイド
|
|
|
7
7
|
|
|
8
8
|
フェーズは順番通りに進める。ユーザーの承認なしに先へ進めない。
|
|
9
9
|
|
|
10
|
-
影響範囲のチェックリストは `references/影響範囲チェックリスト.md` を参照する。
|
|
11
10
|
ADR テンプレートは `templates/90_ADR/ADRテンプレート.md` を使用する。
|
|
12
11
|
|
|
13
12
|
## 前提: architecture.yaml の読み込み
|
|
@@ -17,7 +16,7 @@ ADR テンプレートは `templates/90_ADR/ADRテンプレート.md` を使用
|
|
|
17
16
|
| キー | 用途 |
|
|
18
17
|
|------|------|
|
|
19
18
|
| `style` | Phase 4/5 のフォルダパス・設計順序を決定 |
|
|
20
|
-
| `has_frontend` |
|
|
19
|
+
| `has_frontend` | `true` なら `docs/フロントエンド/` の設計書も変更対象に含める |
|
|
21
20
|
| `folder_structure` | 影響ドキュメントのパス確認に使用 |
|
|
22
21
|
|
|
23
22
|
設計変更によって方針・構成に変化があった場合は、architecture.yaml も合わせて更新する。
|
|
@@ -35,16 +34,18 @@ Phase 6: TDD → 実装 → 検証
|
|
|
35
34
|
|
|
36
35
|
## Phase 1: 変更要求の整理と軽い影響調査
|
|
37
36
|
|
|
38
|
-
1.
|
|
37
|
+
1. 変更の背景や目的について曖昧な点があれば、一問一答で深掘りする(各質問に推奨回答を添える。コードで確認できることは質問しない)
|
|
39
38
|
2. 以下をユーザーにヒアリングする
|
|
40
39
|
- 変更の背景・課題
|
|
41
40
|
- 変更の目的・期待する結果
|
|
42
41
|
- 影響を受ける機能カテゴリ
|
|
42
|
+
- バックエンド / フロントエンド / 両方のどちらに影響するか
|
|
43
43
|
- 技術的・ビジネス的制約
|
|
44
44
|
3. 変更起点となる docs を特定する
|
|
45
45
|
4. `@analyze-impact` に委任して `depends_on` / `maps_to` を辿る影響ファイルを洗い出す
|
|
46
|
-
5.
|
|
47
|
-
6.
|
|
46
|
+
5. `has_frontend: true` かつバックエンドの **API(UC の入出力・エンドポイント)** が変わる場合、フロントエンドの画面設計も影響対象に追加する(`docs/フロントエンド/03_詳細設計/01_画面/` の「API連携」セクションを確認)
|
|
47
|
+
6. 変更が影響するドメインと成果物を一覧化する
|
|
48
|
+
7. ユーザーに確認・承認を得る
|
|
48
49
|
|
|
49
50
|
## Phase 2: ADR 作成(必要時)
|
|
50
51
|
|
|
@@ -60,15 +61,16 @@ Phase 6: TDD → 実装 → 検証
|
|
|
60
61
|
|
|
61
62
|
| 対象 | 配置先 |
|
|
62
63
|
|------|--------|
|
|
63
|
-
| システム横断の決定 | `docs
|
|
64
|
-
| ドメイン設計の決定 | `docs
|
|
65
|
-
| UC フローの決定 | `docs
|
|
66
|
-
| DB・外部サービスの決定 | `docs
|
|
64
|
+
| システム横断の決定 | `docs/バックエンド/02_概要設計/90_ADR/全体/` |
|
|
65
|
+
| ドメイン設計の決定 | `docs/バックエンド/02_概要設計/90_ADR/ドメイン/` |
|
|
66
|
+
| UC フローの決定 | `docs/バックエンド/02_概要設計/90_ADR/UC/` |
|
|
67
|
+
| DB・外部サービスの決定 | `docs/バックエンド/02_概要設計/90_ADR/DB/` |
|
|
68
|
+
| フロントエンドの決定 | `docs/フロントエンド/02_概要設計/90_ADR/` |
|
|
67
69
|
|
|
68
70
|
## Phase 3: 影響ドキュメントの確定
|
|
69
71
|
|
|
70
|
-
1. `
|
|
71
|
-
2
|
|
72
|
+
1. `@analyze-impact` に委任して `depends_on` / `maps_to` を辿る影響ファイルを網羅的に洗い出す
|
|
73
|
+
2. ヘッダーの `depends_on` / `maps_to` を使って候補を絞る
|
|
72
74
|
3. 修正が必要なファイルをチェックリスト形式で提示する
|
|
73
75
|
4. `@review-design` エージェントに委任して、現時点の設計書⇔実装の乖離も合わせて確認する
|
|
74
76
|
5. ユーザーに確認・承認を得る
|
|
@@ -77,25 +79,38 @@ Phase 6: TDD → 実装 → 検証
|
|
|
77
79
|
|
|
78
80
|
概要設計では「何をするか」に留める。変更理由は ADR または本文で追えるようにする。
|
|
79
81
|
|
|
80
|
-
|
|
82
|
+
### バックエンド
|
|
83
|
+
|
|
84
|
+
1. `docs/バックエンド/02_概要設計/ユースケース一覧.md` / `システム全体俯瞰.md` / ADR を必要順に修正する
|
|
81
85
|
2. `style: ddd` の場合: `ドメインモデル.md` も必要に応じて修正する
|
|
82
|
-
|
|
83
|
-
|
|
86
|
+
|
|
87
|
+
### フロントエンド(has_frontend: true かつ影響がある場合)
|
|
88
|
+
|
|
89
|
+
1. `docs/フロントエンド/02_概要設計/画面一覧.md` / `画面遷移図.md` / `コンポーネント一覧.md` を必要順に修正する
|
|
90
|
+
|
|
91
|
+
修正完了ごとにチェックリストを更新する。全概要設計の修正完了後、ユーザーに確認・承認を得る。
|
|
84
92
|
|
|
85
93
|
## Phase 5: 詳細設計の修正
|
|
86
94
|
|
|
95
|
+
### バックエンド
|
|
96
|
+
|
|
87
97
|
`style: ddd` の場合:
|
|
88
98
|
|
|
89
|
-
1. `docs
|
|
90
|
-
2. `docs
|
|
91
|
-
3. DB・外部サービスの変更がある場合は `docs
|
|
99
|
+
1. `docs/バックエンド/03_詳細設計/01_ドメイン/**` のドメイン設計を修正する
|
|
100
|
+
2. `docs/バックエンド/03_詳細設計/02_ユースケース/**` の UC 設計を修正する
|
|
101
|
+
3. DB・外部サービスの変更がある場合は `docs/バックエンド/03_詳細設計/03_DB・外部サービス/**` を修正する
|
|
92
102
|
|
|
93
103
|
`style: layered` の場合:
|
|
94
104
|
|
|
95
|
-
1. `docs
|
|
96
|
-
2. DB・外部サービスの変更がある場合は `docs
|
|
105
|
+
1. `docs/バックエンド/03_詳細設計/01_ユースケース/**` の UC 設計を修正する
|
|
106
|
+
2. DB・外部サービスの変更がある場合は `docs/バックエンド/03_詳細設計/02_DB・外部サービス/**` を修正する
|
|
107
|
+
|
|
108
|
+
### フロントエンド(has_frontend: true かつ影響がある場合)
|
|
109
|
+
|
|
110
|
+
1. `docs/フロントエンド/03_詳細設計/01_画面/**` の画面設計を修正する
|
|
111
|
+
2. コンポーネントの変更がある場合は `docs/フロントエンド/03_詳細設計/02_コンポーネント/**` を修正する
|
|
97
112
|
|
|
98
|
-
|
|
113
|
+
ヘッダーの `depends_on` / `maps_to` を更新する。ユーザーに最終確認を得る。
|
|
99
114
|
|
|
100
115
|
## Phase 6: TDD → 実装 → 検証
|
|
101
116
|
|
|
@@ -23,6 +23,8 @@ Phase 5: architecture contract 化
|
|
|
23
23
|
- 既存コードを正として観測する。推測する場合は明示する
|
|
24
24
|
- `depends_on` を使って後続変更に耐える形へ整える
|
|
25
25
|
- ユーザー承認なしに次フェーズへ進めない
|
|
26
|
+
- バックエンドの設計はすべて `docs/バックエンド/` 配下に置く
|
|
27
|
+
- `has_frontend: true` の場合、フロントエンドの設計は `docs/フロントエンド/` 配下に置く
|
|
26
28
|
- `style: ddd` の場合: UC がドメインを使う。ドメインの中に UC を入れない
|
|
27
29
|
- `style: ddd` の場合: 詳細設計は `01_ドメイン/` `02_ユースケース/` `03_DB・外部サービス/` の 3 層で構成する
|
|
28
30
|
- `style: layered` の場合: ドメイン層は持たない。ビジネスロジックは UC / サービス層で表現する
|
|
@@ -32,8 +34,9 @@ Phase 5: architecture contract 化
|
|
|
32
34
|
|
|
33
35
|
1. `src/`、`tests/`、設定ファイル、README、IaC を読む
|
|
34
36
|
2. 現状システムの入口、主要フロー、外部依存を一覧化する
|
|
35
|
-
3.
|
|
36
|
-
4.
|
|
37
|
+
3. フロントエンドの有無(Web UI・画面があるか)を判定する
|
|
38
|
+
4. `.spec-runner/intake/current-system-inventory.md` を作る
|
|
39
|
+
5. ユーザーに確認・承認を得る
|
|
37
40
|
|
|
38
41
|
## Phase 1.5: docs 構成の合意
|
|
39
42
|
|
|
@@ -41,34 +44,44 @@ Phase 5: architecture contract 化
|
|
|
41
44
|
|
|
42
45
|
1. `current-system-inventory.md` を元に以下を提案する
|
|
43
46
|
- `style`(`ddd` / `layered`)
|
|
44
|
-
- `
|
|
47
|
+
- `has_frontend`(`true` / `false`)
|
|
48
|
+
- `docs/` のフォルダ構成(`バックエンド/` + 必要なら `フロントエンド/`)
|
|
45
49
|
- 作成予定ファイルの一覧
|
|
46
50
|
2. ユーザーに確認・承認を得る
|
|
47
|
-
3. 承認後、`.spec-runner/architecture/architecture.yaml` を新規作成し `style` だけ先に書き込む(残りは Phase 5 で完成させる)
|
|
51
|
+
3. 承認後、`.spec-runner/architecture/architecture.yaml` を新規作成し `style` と `has_frontend` だけ先に書き込む(残りは Phase 5 で完成させる)
|
|
48
52
|
|
|
49
53
|
## Phase 2: 要件とユースケースの抽出
|
|
50
54
|
|
|
51
55
|
要件定義テンプレートは `simple-seed` に存在しないため、`style` に関わらず `ddd-seed` のテンプレートを使う。
|
|
52
56
|
|
|
53
57
|
1. `current-system-inventory.md` を起点に、既存機能からユースケースを逆算する
|
|
54
|
-
2. `.claude/skills/ddd-seed/templates/01_要件定義/要件定義.md` を使い `docs
|
|
55
|
-
3. `.claude/skills/ddd-seed/templates/02_概要設計/ユースケース一覧.md` を使い `docs
|
|
56
|
-
4. ドメイン用語が識別できたら `.claude/skills/ddd-seed/templates/01_要件定義/ユビキタス言語辞書.md` を使い `docs
|
|
57
|
-
5.
|
|
58
|
+
2. `.claude/skills/ddd-seed/templates/01_要件定義/要件定義.md` を使い `docs/バックエンド/01_要件定義/要件定義.md` を作る
|
|
59
|
+
3. `.claude/skills/ddd-seed/templates/02_概要設計/ユースケース一覧.md` を使い `docs/バックエンド/02_概要設計/ユースケース一覧.md` を作る
|
|
60
|
+
4. ドメイン用語が識別できたら `.claude/skills/ddd-seed/templates/01_要件定義/ユビキタス言語辞書.md` を使い `docs/バックエンド/01_要件定義/ユビキタス言語辞書.md` を作る
|
|
61
|
+
5. `has_frontend: true` の場合: `.claude/skills/frontend-seed/templates/01_要件定義/要件定義.md` を使い `docs/フロントエンド/01_要件定義/要件定義.md` も作る
|
|
62
|
+
6. ユーザーに確認・承認を得る
|
|
58
63
|
|
|
59
64
|
## Phase 3: 概要設計
|
|
60
65
|
|
|
66
|
+
### バックエンド
|
|
67
|
+
|
|
61
68
|
`style: ddd` の場合:
|
|
62
69
|
|
|
63
|
-
1. `.claude/skills/ddd-seed/templates/02_概要設計/システム全体俯瞰.md` を使い `docs
|
|
64
|
-
2. `.claude/skills/ddd-seed/templates/02_概要設計/ドメインモデル.md` を使い `docs
|
|
70
|
+
1. `.claude/skills/ddd-seed/templates/02_概要設計/システム全体俯瞰.md` を使い `docs/バックエンド/02_概要設計/システム全体俯瞰.md` を作る
|
|
71
|
+
2. `.claude/skills/ddd-seed/templates/02_概要設計/ドメインモデル.md` を使い `docs/バックエンド/02_概要設計/ドメインモデル.md` を作る
|
|
65
72
|
3. 必要なら ADR を作る(作成ルールは下記)
|
|
66
73
|
|
|
67
74
|
`style: layered` の場合:
|
|
68
75
|
|
|
69
|
-
1. `.claude/skills/simple-seed/templates/02_概要設計/システム全体俯瞰.md` を使い `docs
|
|
76
|
+
1. `.claude/skills/simple-seed/templates/02_概要設計/システム全体俯瞰.md` を使い `docs/バックエンド/02_概要設計/システム全体俯瞰.md` を作る
|
|
70
77
|
2. 必要なら ADR を作る(作成ルールは下記)
|
|
71
78
|
|
|
79
|
+
### フロントエンド(has_frontend: true のみ)
|
|
80
|
+
|
|
81
|
+
1. `.claude/skills/frontend-seed/templates/02_概要設計/画面一覧.md` を使い `docs/フロントエンド/02_概要設計/画面一覧.md` を作る
|
|
82
|
+
2. `.claude/skills/frontend-seed/templates/02_概要設計/画面遷移図.md` を使い `docs/フロントエンド/02_概要設計/画面遷移図.md` を作る
|
|
83
|
+
3. `.claude/skills/frontend-seed/templates/02_概要設計/コンポーネント一覧.md` を使い `docs/フロントエンド/02_概要設計/コンポーネント一覧.md` を作る
|
|
84
|
+
|
|
72
85
|
### ADR 作成ルール(必要時のみ)
|
|
73
86
|
|
|
74
87
|
1. 提案時に必ず 3 案を比較する。ドキュメントには採用案と採用理由のみ記録する
|
|
@@ -78,18 +91,20 @@ Phase 5: architecture contract 化
|
|
|
78
91
|
|
|
79
92
|
| 対象 | 配置先 |
|
|
80
93
|
|------|--------|
|
|
81
|
-
| システム横断の決定 | `90_ADR/全体/` |
|
|
82
|
-
| ドメイン設計の決定 | `90_ADR/ドメイン/` |
|
|
83
|
-
| UC フローの決定 | `90_ADR/UC/` |
|
|
84
|
-
| DB・外部サービスの決定 | `90_ADR/DB/` |
|
|
94
|
+
| システム横断の決定 | `docs/バックエンド/02_概要設計/90_ADR/全体/` |
|
|
95
|
+
| ドメイン設計の決定 | `docs/バックエンド/02_概要設計/90_ADR/ドメイン/` |
|
|
96
|
+
| UC フローの決定 | `docs/バックエンド/02_概要設計/90_ADR/UC/` |
|
|
97
|
+
| DB・外部サービスの決定 | `docs/バックエンド/02_概要設計/90_ADR/DB/` |
|
|
98
|
+
| フロントエンドの決定 | `docs/フロントエンド/02_概要設計/90_ADR/` |
|
|
85
99
|
|
|
86
100
|
`style: layered` の場合:
|
|
87
101
|
|
|
88
102
|
| 対象 | 配置先 |
|
|
89
103
|
|------|--------|
|
|
90
|
-
| システム横断の決定 | `90_ADR/全体/` |
|
|
91
|
-
| UC フローの決定 | `90_ADR/UC/` |
|
|
92
|
-
| DB・外部サービスの決定 | `90_ADR/DB/` |
|
|
104
|
+
| システム横断の決定 | `docs/バックエンド/02_概要設計/90_ADR/全体/` |
|
|
105
|
+
| UC フローの決定 | `docs/バックエンド/02_概要設計/90_ADR/UC/` |
|
|
106
|
+
| DB・外部サービスの決定 | `docs/バックエンド/02_概要設計/90_ADR/DB/` |
|
|
107
|
+
| フロントエンドの決定 | `docs/フロントエンド/02_概要設計/90_ADR/` |
|
|
93
108
|
|
|
94
109
|
3. 採用案を概要設計へ反映してから次へ進む
|
|
95
110
|
|
|
@@ -97,16 +112,23 @@ Phase 5: architecture contract 化
|
|
|
97
112
|
|
|
98
113
|
## Phase 4: 詳細設計
|
|
99
114
|
|
|
115
|
+
### バックエンド
|
|
116
|
+
|
|
100
117
|
`style: ddd` の場合(ドメイン → UC → DB・外部サービス の順に設計する):
|
|
101
118
|
|
|
102
|
-
1. `.claude/skills/ddd-seed/templates/03_詳細設計/01_ドメイン/{ドメイン名}.md` を使い、ドメインごとにビジネスルール・集約を整理し `docs
|
|
103
|
-
2. `.claude/skills/ddd-seed/templates/03_詳細設計/02_ユースケース/UC-{日本語名}.md` を使い、UC ごとに `docs
|
|
104
|
-
3. DB・外部サービスの仕様が必要なら `docs
|
|
119
|
+
1. `.claude/skills/ddd-seed/templates/03_詳細設計/01_ドメイン/{ドメイン名}.md` を使い、ドメインごとにビジネスルール・集約を整理し `docs/バックエンド/03_詳細設計/01_ドメイン/{ドメイン名}.md` を作る
|
|
120
|
+
2. `.claude/skills/ddd-seed/templates/03_詳細設計/02_ユースケース/UC-{日本語名}.md` を使い、UC ごとに `docs/バックエンド/03_詳細設計/02_ユースケース/UC-{日本語名}.md` を作る(シーケンス図は Mermaid で埋め込む)
|
|
121
|
+
3. DB・外部サービスの仕様が必要なら `docs/バックエンド/03_詳細設計/03_DB・外部サービス/` を作る
|
|
105
122
|
|
|
106
123
|
`style: layered` の場合(UC → DB・外部サービス の順に設計する):
|
|
107
124
|
|
|
108
|
-
1. `.claude/skills/simple-seed/templates/03_詳細設計/01_ユースケース/UC-{日本語名}.md` を使い、UC ごとに `docs
|
|
109
|
-
2. DB・外部サービスの仕様が必要なら `docs
|
|
125
|
+
1. `.claude/skills/simple-seed/templates/03_詳細設計/01_ユースケース/UC-{日本語名}.md` を使い、UC ごとに `docs/バックエンド/03_詳細設計/01_ユースケース/UC-{日本語名}.md` を作る
|
|
126
|
+
2. DB・外部サービスの仕様が必要なら `docs/バックエンド/03_詳細設計/02_DB・外部サービス/` を作る
|
|
127
|
+
|
|
128
|
+
### フロントエンド(has_frontend: true のみ)
|
|
129
|
+
|
|
130
|
+
1. `.claude/skills/frontend-seed/templates/03_詳細設計/01_画面/{カテゴリ名}/{画面名}.md` を使い、カテゴリごとに画面 MD を `docs/フロントエンド/03_詳細設計/01_画面/` に作る
|
|
131
|
+
2. `.claude/skills/frontend-seed/templates/03_詳細設計/02_コンポーネント/{コンポーネント名}.md` を使い、共通コンポーネントを `docs/フロントエンド/03_詳細設計/02_コンポーネント/` に作る
|
|
110
132
|
|
|
111
133
|
各ファイルの `maps_to` に対応コードとテストを必ず入れる。ユーザーに確認・承認を得る。
|
|
112
134
|
|
|
@@ -115,4 +137,3 @@ Phase 5: architecture contract 化
|
|
|
115
137
|
1. `.spec-runner/architecture/architecture.yaml` を完成させる
|
|
116
138
|
2. 現状構造を project 専用 skill へ渡せる粒度に整える
|
|
117
139
|
3. `architecture-skill-development` へ引き渡す
|
|
118
|
-
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: frontend-seed
|
|
3
|
+
description: フロントエンド向け docs 正本開発フローの種。画面・コンポーネント設計を中心に、要件定義から詳細設計まで進める。architecture-skill-development でプロジェクト専用スキルに育てる。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# frontend-seed
|
|
7
|
+
|
|
8
|
+
## 前提: architecture.yaml の読み込み
|
|
9
|
+
|
|
10
|
+
開始前に `.spec-runner/architecture/architecture.yaml` を読み、以下を確認する:
|
|
11
|
+
|
|
12
|
+
| キー | 用途 |
|
|
13
|
+
|------|------|
|
|
14
|
+
| `has_frontend` | `true` であることを確認 |
|
|
15
|
+
| `folder_structure` | `maps_to` パスの基準として参照する |
|
|
16
|
+
|
|
17
|
+
設計フェーズで新たな方針・コンポーネントが確定したら、都度 architecture.yaml を最新状態に保つ。
|
|
18
|
+
|
|
19
|
+
## 全体フロー
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
Phase 1: 要件定義
|
|
23
|
+
Phase 2: 概要設計(画面一覧 + 画面遷移図 + コンポーネント一覧)
|
|
24
|
+
Phase 3: ADR(必要時のみ)
|
|
25
|
+
Phase 4: 詳細設計(画面 → コンポーネント)
|
|
26
|
+
Phase 5: TDD → 実装
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## 前提ルール
|
|
30
|
+
|
|
31
|
+
- docs は正本とし、各ドキュメントに `spec_runner` ヘッダーを付ける
|
|
32
|
+
- 詳細設計は `01_画面/` `02_コンポーネント/` の 2 層で構成する
|
|
33
|
+
- 画面を先に設計し、コンポーネントは画面を参照する形で書く
|
|
34
|
+
- `maps_to` は必ず設定する。パス推定に頼らない
|
|
35
|
+
- ユーザー承認なしに次フェーズへ進めない
|
|
36
|
+
|
|
37
|
+
## Phase 1: 要件定義
|
|
38
|
+
|
|
39
|
+
`architecture-definition` で完了済み。`docs/フロントエンド/01_要件定義/` が存在することを確認して次へ進む。
|
|
40
|
+
|
|
41
|
+
存在しない場合はテンプレートから作成し、ユーザーに確認・承認を得る。
|
|
42
|
+
|
|
43
|
+
テンプレート: `templates/01_要件定義/要件定義.md`
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
docs/フロントエンド/01_要件定義/
|
|
47
|
+
要件定義.md
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Phase 2: 概要設計
|
|
51
|
+
|
|
52
|
+
### 2-1. 画面一覧
|
|
53
|
+
|
|
54
|
+
1. 要件定義から画面を洗い出す
|
|
55
|
+
2. `docs/フロントエンド/02_概要設計/画面一覧.md` を作る
|
|
56
|
+
3. ユーザーに確認・承認を得る
|
|
57
|
+
|
|
58
|
+
### 2-2. 画面遷移図
|
|
59
|
+
|
|
60
|
+
1. 画面一覧をもとに遷移フローを Mermaid で整理する
|
|
61
|
+
2. `docs/フロントエンド/02_概要設計/画面遷移図.md` を作る
|
|
62
|
+
3. ユーザーに確認・承認を得る
|
|
63
|
+
|
|
64
|
+
### 2-3. コンポーネント一覧
|
|
65
|
+
|
|
66
|
+
1. 画面一覧から共通コンポーネントを抽出する
|
|
67
|
+
2. `docs/フロントエンド/02_概要設計/コンポーネント一覧.md` を作る
|
|
68
|
+
3. ユーザーに確認・承認を得る
|
|
69
|
+
|
|
70
|
+
### 出力
|
|
71
|
+
|
|
72
|
+
テンプレート: `templates/02_概要設計/画面一覧.md` / `templates/02_概要設計/画面遷移図.md` / `templates/02_概要設計/コンポーネント一覧.md`
|
|
73
|
+
|
|
74
|
+
```
|
|
75
|
+
docs/フロントエンド/02_概要設計/
|
|
76
|
+
画面一覧.md
|
|
77
|
+
画面遷移図.md
|
|
78
|
+
コンポーネント一覧.md
|
|
79
|
+
90_ADR/
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Phase 3: ADR(必要時のみ)
|
|
83
|
+
|
|
84
|
+
1. 設計判断が必要な場合だけ ADR を作る
|
|
85
|
+
2. 提案時に必ず 3 案を比較する。ドキュメントには採用案と採用理由のみ記録する
|
|
86
|
+
3. ファイル名は `mmdd-{日本語タイトル}.md`、配置先は `90_ADR/`
|
|
87
|
+
|
|
88
|
+
4. 採用案を概要設計へ反映してから次へ進む
|
|
89
|
+
|
|
90
|
+
## Phase 4: 詳細設計
|
|
91
|
+
|
|
92
|
+
画面 → コンポーネント の順に設計する。
|
|
93
|
+
|
|
94
|
+
### 4-1. 画面
|
|
95
|
+
|
|
96
|
+
カテゴリ(機能ドメイン)でディレクトリを切り、画面ごとに 1 ファイル作成する。
|
|
97
|
+
|
|
98
|
+
テンプレート: `templates/03_詳細設計/01_画面/{カテゴリ名}/{画面名}.md`
|
|
99
|
+
|
|
100
|
+
```
|
|
101
|
+
docs/フロントエンド/03_詳細設計/01_画面/
|
|
102
|
+
{カテゴリ名}/
|
|
103
|
+
{画面名}.md
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### 4-2. コンポーネント
|
|
107
|
+
|
|
108
|
+
概要設計のコンポーネント一覧をもとに、共通コンポーネントごとに 1 ファイル作成する。
|
|
109
|
+
|
|
110
|
+
テンプレート: `templates/03_詳細設計/02_コンポーネント/{コンポーネント名}.md`
|
|
111
|
+
|
|
112
|
+
```
|
|
113
|
+
docs/フロントエンド/03_詳細設計/02_コンポーネント/
|
|
114
|
+
{コンポーネント名}.md
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
ユーザーに確認・承認を得る。
|
|
118
|
+
|
|
119
|
+
## Phase 5: TDD → 実装
|
|
120
|
+
|
|
121
|
+
`test-driven-development` スキルへ移行する。
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
spec_runner:
|
|
3
|
+
node_id: frontend.requirement.要件定義
|
|
4
|
+
kind: requirement
|
|
5
|
+
depends_on: []
|
|
6
|
+
maps_to:
|
|
7
|
+
- docs/フロントエンド/02_概要設計/
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# 要件定義
|
|
11
|
+
|
|
12
|
+
## 解決すべき課題・提供価値
|
|
13
|
+
|
|
14
|
+
- {課題}
|
|
15
|
+
- {提供価値}
|
|
16
|
+
|
|
17
|
+
## 対象ユーザー
|
|
18
|
+
|
|
19
|
+
- {ユーザー種別}: {説明}
|
|
20
|
+
|
|
21
|
+
## 非機能要件
|
|
22
|
+
|
|
23
|
+
| 項目 | 内容 |
|
|
24
|
+
|------|------|
|
|
25
|
+
| {パフォーマンス} | {要件} |
|
|
26
|
+
| {アクセシビリティ} | {要件} |
|
|
27
|
+
| {対応デバイス} | {要件} |
|
|
28
|
+
|
|
29
|
+
## スコープ外
|
|
30
|
+
|
|
31
|
+
- {スコープ外の機能・画面}
|
|
32
|
+
|
|
33
|
+
## 技術・ビジネス制約
|
|
34
|
+
|
|
35
|
+
- {制約}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
spec_runner:
|
|
3
|
+
node_id: frontend.overview.コンポーネント一覧
|
|
4
|
+
kind: overview_design
|
|
5
|
+
depends_on:
|
|
6
|
+
- frontend.overview.画面一覧
|
|
7
|
+
maps_to:
|
|
8
|
+
- docs/フロントエンド/03_詳細設計/02_コンポーネント/
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# コンポーネント一覧
|
|
12
|
+
|
|
13
|
+
<!-- 共通コンポーネントのみ記載。画面固有のものは各画面MDで管理する -->
|
|
14
|
+
|
|
15
|
+
## {カテゴリ名}(例: フォーム、ナビゲーション、フィードバック)
|
|
16
|
+
|
|
17
|
+
| コンポーネントID | コンポーネント名 | 概要 | 使用画面 |
|
|
18
|
+
|----------------|----------------|------|---------|
|
|
19
|
+
| CMP-{番号} | {コンポーネント名} | {概要} | {画面名}, {画面名} |
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
spec_runner:
|
|
3
|
+
node_id: frontend.overview.画面一覧
|
|
4
|
+
kind: overview_design
|
|
5
|
+
depends_on:
|
|
6
|
+
- frontend.requirement.要件定義
|
|
7
|
+
maps_to:
|
|
8
|
+
- docs/フロントエンド/03_詳細設計/01_画面/
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# 画面一覧
|
|
12
|
+
|
|
13
|
+
<!-- カテゴリは機能領域で分ける。例: 認証、ダッシュボード、設定 など -->
|
|
14
|
+
|
|
15
|
+
## {カテゴリ名}
|
|
16
|
+
|
|
17
|
+
| 画面ID | 画面名 | URL | 概要 |
|
|
18
|
+
|--------|--------|-----|------|
|
|
19
|
+
| SCR-{番号} | {画面名} | /{path} | {概要} |
|
|
20
|
+
|
|
21
|
+
## {カテゴリ名}
|
|
22
|
+
|
|
23
|
+
| 画面ID | 画面名 | URL | 概要 |
|
|
24
|
+
|--------|--------|-----|------|
|
|
25
|
+
| SCR-{番号} | {画面名} | /{path} | {概要} |
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
---
|
|
2
|
+
spec_runner:
|
|
3
|
+
node_id: frontend.overview.画面遷移図
|
|
4
|
+
kind: overview_design
|
|
5
|
+
depends_on:
|
|
6
|
+
- frontend.overview.画面一覧
|
|
7
|
+
maps_to:
|
|
8
|
+
- docs/フロントエンド/03_詳細設計/01_画面/
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# 画面遷移図
|
|
12
|
+
|
|
13
|
+
```mermaid
|
|
14
|
+
flowchart TD
|
|
15
|
+
{画面A}([{画面名}]) -->|{操作}| {画面B}([{画面名}])
|
|
16
|
+
{画面B} -->|{操作}| {画面C}([{画面名}])
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## 遷移説明
|
|
20
|
+
|
|
21
|
+
| 遷移元 | 操作 | 遷移先 | 条件 |
|
|
22
|
+
|--------|------|--------|------|
|
|
23
|
+
| {画面名} | {操作} | {画面名} | {条件} |
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
---
|
|
2
|
+
spec_runner:
|
|
3
|
+
node_id: frontend.detail.画面.{画面名}
|
|
4
|
+
kind: detailed_design
|
|
5
|
+
depends_on:
|
|
6
|
+
- frontend.overview.画面一覧
|
|
7
|
+
- frontend.overview.画面遷移図
|
|
8
|
+
maps_to:
|
|
9
|
+
- src/app/{path}/page.tsx
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# {画面名}
|
|
13
|
+
|
|
14
|
+
## 概要
|
|
15
|
+
|
|
16
|
+
- **画面ID**: SCR-{番号}
|
|
17
|
+
- **URL**: /{path}
|
|
18
|
+
- **目的**: {この画面が達成すること}
|
|
19
|
+
|
|
20
|
+
## レイアウト
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
+---------------------------+
|
|
24
|
+
| {ヘッダー} |
|
|
25
|
+
+---------------------------+
|
|
26
|
+
| {メインコンテンツ} |
|
|
27
|
+
| |
|
|
28
|
+
+---------------------------+
|
|
29
|
+
| {フッター} |
|
|
30
|
+
+---------------------------+
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## 表示要素
|
|
34
|
+
|
|
35
|
+
| 要素 | 種別 | 概要 |
|
|
36
|
+
|------|------|------|
|
|
37
|
+
| {要素名} | テキスト / ボタン / フォーム / リスト | {概要} |
|
|
38
|
+
|
|
39
|
+
## 使用コンポーネント
|
|
40
|
+
|
|
41
|
+
| コンポーネント | 用途 |
|
|
42
|
+
|--------------|------|
|
|
43
|
+
| CMP-{番号} {コンポーネント名} | {用途} |
|
|
44
|
+
|
|
45
|
+
## インタラクション
|
|
46
|
+
|
|
47
|
+
| 操作 | 処理 | 遷移先 |
|
|
48
|
+
|------|------|--------|
|
|
49
|
+
| {操作} | {処理内容} | {画面名} / なし |
|
|
50
|
+
|
|
51
|
+
## API連携
|
|
52
|
+
|
|
53
|
+
| API | 呼び出しタイミング | 概要 |
|
|
54
|
+
|-----|-----------------|------|
|
|
55
|
+
| {エンドポイント} | {タイミング} | {概要} |
|
|
56
|
+
|
|
57
|
+
## バリデーション
|
|
58
|
+
|
|
59
|
+
- {バリデーションルール}
|
|
60
|
+
|
|
61
|
+
## テスト観点
|
|
62
|
+
|
|
63
|
+
- {正常系の観点}
|
|
64
|
+
- {エラー表示の観点}
|
|
65
|
+
- {権限・認証の観点}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
---
|
|
2
|
+
spec_runner:
|
|
3
|
+
node_id: frontend.detail.component.{コンポーネント名}
|
|
4
|
+
kind: detailed_design
|
|
5
|
+
depends_on:
|
|
6
|
+
- frontend.overview.コンポーネント一覧
|
|
7
|
+
maps_to:
|
|
8
|
+
- src/components/{コンポーネント名}/
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# {コンポーネント名}
|
|
12
|
+
|
|
13
|
+
## 概要
|
|
14
|
+
|
|
15
|
+
- **コンポーネントID**: CMP-{番号}
|
|
16
|
+
- **目的**: {このコンポーネントが提供する UI・機能}
|
|
17
|
+
- **使用画面**: {画面名}, {画面名}
|
|
18
|
+
|
|
19
|
+
## Props
|
|
20
|
+
|
|
21
|
+
| Prop名 | 型 | 必須 | デフォルト | 概要 |
|
|
22
|
+
|--------|-----|------|-----------|------|
|
|
23
|
+
| {prop名} | {型} | ○ / - | {値} | {概要} |
|
|
24
|
+
|
|
25
|
+
## 表示パターン
|
|
26
|
+
|
|
27
|
+
| パターン | 条件 | 表示内容 |
|
|
28
|
+
|---------|------|---------|
|
|
29
|
+
| {パターン名} | {条件} | {表示内容} |
|
|
30
|
+
|
|
31
|
+
## イベント
|
|
32
|
+
|
|
33
|
+
| イベント | 発火条件 | コールバック |
|
|
34
|
+
|---------|---------|------------|
|
|
35
|
+
| {イベント名} | {条件} | {コールバック名} |
|
|
36
|
+
|
|
37
|
+
## テスト観点
|
|
38
|
+
|
|
39
|
+
- {正常表示の観点}
|
|
40
|
+
- {各パターンの観点}
|
|
41
|
+
- {アクセシビリティの観点}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
---
|
|
2
|
+
spec_runner:
|
|
3
|
+
node_id: frontend.adr.{decision_slug}
|
|
4
|
+
kind: adr
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# {決定内容のタイトル}
|
|
8
|
+
|
|
9
|
+
**ステータス**: 提案 / 採用 / 廃止 / 置換
|
|
10
|
+
**日付**: YYYY-MM-DD
|
|
11
|
+
**決定者**: {名前}
|
|
12
|
+
|
|
13
|
+
## コンテキスト
|
|
14
|
+
|
|
15
|
+
| 項目 | 内容 |
|
|
16
|
+
|------|------|
|
|
17
|
+
| 現在の状況 | {問題・課題} |
|
|
18
|
+
| 要件 | {実現する必要があること} |
|
|
19
|
+
| 制約 | {技術的・ビジネス的制約} |
|
|
20
|
+
|
|
21
|
+
## 決定
|
|
22
|
+
|
|
23
|
+
**採用案**: {案名}
|
|
24
|
+
|
|
25
|
+
### 採用理由
|
|
26
|
+
|
|
27
|
+
- {理由1}
|
|
28
|
+
- {理由2}
|
|
29
|
+
|
|
30
|
+
### 実装方針
|
|
31
|
+
|
|
32
|
+
1. {方針1}
|
|
33
|
+
2. {方針2}
|
|
34
|
+
|
|
35
|
+
## 影響
|
|
36
|
+
|
|
37
|
+
| カテゴリ | 項目 | 内容 |
|
|
38
|
+
|----------|------|------|
|
|
39
|
+
| UI | 新規追加 | {コンポーネント / 画面} |
|
|
40
|
+
| UI | 変更 | {コンポーネント / 画面} |
|
|
41
|
+
| 制約 | 将来課題 | {課題} |
|
|
42
|
+
|
|
43
|
+
### 反映が必要な文書
|
|
44
|
+
|
|
45
|
+
- `docs/フロントエンド/02_概要設計/{対象文書}.md`
|
|
46
|
+
- `docs/フロントエンド/03_詳細設計/{対象パス}.md`
|