spec-runner 1.7.0 → 1.9.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/package.json +1 -1
- package/spec-runner/templates/.claude/rules/design-docs.md +35 -26
- package/spec-runner/templates/.claude/skills/architecture-definition/SKILL.md +12 -4
- package/spec-runner/templates/.claude/skills/architecture-skill-development/SKILL.md +18 -11
- package/spec-runner/templates/.claude/skills/ddd-seed/SKILL.md +46 -20
- 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/ddd-seed/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/03_DB/343/203/273/345/244/226/351/203/250/343/202/265/343/203/274/343/203/223/343/202/271/{/343/203/227/343/203/255/343/203/220/343/202/244/343/203/200/343/203/274/345/220/215}/{/343/202/265/343/203/274/343/203/223/343/202/271/345/220/215}.md +24 -0
- package/spec-runner/templates/.claude/skills/ddd-seed/templates/04_/350/252/277/346/237/273/350/263/207/346/226/231/{/343/202/253/343/203/206/343/202/264/343/203/252/345/220/215}/{/343/203/210/343/203/224/343/203/203/343/202/257/345/220/215}.md +20 -0
- package/spec-runner/templates/.claude/skills/ddd-seed/templates/90_ADR/ADR/343/203/206/343/203/263/343/203/227/343/203/254/343/203/274/343/203/210.md +48 -0
- package/spec-runner/templates/.claude/skills/design-change/SKILL.md +57 -24
- package/spec-runner/templates/.claude/skills/design-change/templates/90_ADR/ADR/343/203/206/343/203/263/343/203/227/343/203/254/343/203/274/343/203/210.md +0 -1
- package/spec-runner/templates/.claude/skills/existing-project-to-docs/SKILL.md +45 -24
- package/spec-runner/templates/.claude/skills/frontend-seed/SKILL.md +144 -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/frontend-seed/templates/04_/350/252/277/346/237/273/350/263/207/346/226/231/{/343/202/253/343/203/206/343/202/264/343/203/252/345/220/215}/{/343/203/210/343/203/224/343/203/203/343/202/257/345/220/215}.md +20 -0
- package/spec-runner/templates/.claude/skills/frontend-seed/templates/90_ADR/ADR/343/203/206/343/203/263/343/203/227/343/203/254/343/203/274/343/203/210.md +48 -0
- package/spec-runner/templates/.claude/skills/simple-seed/SKILL.md +43 -17
- package/spec-runner/templates/.claude/skills/simple-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 +34 -0
- 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/.claude/skills/simple-seed/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/02_DB/343/203/273/345/244/226/351/203/250/343/202/265/343/203/274/343/203/223/343/202/271/{/343/203/227/343/203/255/343/203/220/343/202/244/343/203/200/343/203/274/345/220/215}/{/343/202/265/343/203/274/343/203/223/343/202/271/345/220/215}.md +24 -0
- package/spec-runner/templates/.claude/skills/simple-seed/templates/04_/350/252/277/346/237/273/350/263/207/346/226/231/{/343/202/253/343/203/206/343/202/264/343/203/252/345/220/215}/{/343/203/210/343/203/224/343/203/203/343/202/257/345/220/215}.md +20 -0
- package/spec-runner/templates/.claude/skills/simple-seed/templates/90_ADR/ADR/343/203/206/343/203/263/343/203/227/343/203/254/343/203/274/343/203/210.md +48 -0
- package/spec-runner/templates/.github/instructions/design-docs.instructions.md +34 -25
- package/spec-runner/templates/.github/skills/architecture-definition/SKILL.md +12 -4
- package/spec-runner/templates/.github/skills/architecture-skill-development/SKILL.md +18 -11
- package/spec-runner/templates/.github/skills/ddd-seed/SKILL.md +46 -20
- package/spec-runner/templates/.github/skills/ddd-seed/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/03_DB/343/203/273/345/244/226/351/203/250/343/202/265/343/203/274/343/203/223/343/202/271/{/343/203/227/343/203/255/343/203/220/343/202/244/343/203/200/343/203/274/345/220/215}/{/343/202/265/343/203/274/343/203/223/343/202/271/345/220/215}.md +24 -0
- package/spec-runner/templates/.github/skills/ddd-seed/templates/04_/350/252/277/346/237/273/350/263/207/346/226/231/{/343/202/253/343/203/206/343/202/264/343/203/252/345/220/215}/{/343/203/210/343/203/224/343/203/203/343/202/257/345/220/215}.md +20 -0
- package/spec-runner/templates/.github/skills/ddd-seed/templates/90_ADR/ADR/343/203/206/343/203/263/343/203/227/343/203/254/343/203/274/343/203/210.md +48 -0
- package/spec-runner/templates/.github/skills/design-change/SKILL.md +57 -24
- package/spec-runner/templates/.github/skills/design-change/templates/90_ADR/ADR/343/203/206/343/203/263/343/203/227/343/203/254/343/203/274/343/203/210.md +0 -1
- package/spec-runner/templates/.github/skills/existing-project-to-docs/SKILL.md +45 -24
- package/spec-runner/templates/.github/skills/frontend-seed/SKILL.md +144 -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/frontend-seed/templates/04_/350/252/277/346/237/273/350/263/207/346/226/231/{/343/202/253/343/203/206/343/202/264/343/203/252/345/220/215}/{/343/203/210/343/203/224/343/203/203/343/202/257/345/220/215}.md +20 -0
- package/spec-runner/templates/.github/skills/frontend-seed/templates/90_ADR/ADR/343/203/206/343/203/263/343/203/227/343/203/254/343/203/274/343/203/210.md +48 -0
- package/spec-runner/templates/.github/skills/simple-seed/SKILL.md +43 -17
- package/spec-runner/templates/.github/skills/simple-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 +34 -0
- package/spec-runner/templates/.github/skills/simple-seed/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/02_DB/343/203/273/345/244/226/351/203/250/343/202/265/343/203/274/343/203/223/343/202/271/{/343/203/227/343/203/255/343/203/220/343/202/244/343/203/200/343/203/274/345/220/215}/{/343/202/265/343/203/274/343/203/223/343/202/271/345/220/215}.md +24 -0
- package/spec-runner/templates/.github/skills/simple-seed/templates/04_/350/252/277/346/237/273/350/263/207/346/226/231/{/343/202/253/343/203/206/343/202/264/343/203/252/345/220/215}/{/343/203/210/343/203/224/343/203/203/343/202/257/345/220/215}.md +20 -0
- package/spec-runner/templates/.github/skills/simple-seed/templates/90_ADR/ADR/343/203/206/343/203/263/343/203/227/343/203/254/343/203/274/343/203/210.md +48 -0
- package/spec-runner/templates/.spec-runner/references/resources.md +1 -1
- 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
|
@@ -0,0 +1,144 @@
|
|
|
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: 詳細設計(画面 → コンポーネント)
|
|
27
|
+
Phase 6: TDD → 実装
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## 前提ルール
|
|
31
|
+
|
|
32
|
+
- docs は正本とし、各ドキュメントに `spec_runner` ヘッダーを付ける
|
|
33
|
+
- 詳細設計は `01_画面/` `02_コンポーネント/` の 2 層で構成する
|
|
34
|
+
- 画面を先に設計し、コンポーネントは画面を参照する形で書く
|
|
35
|
+
- `maps_to` は必ず設定する。パス推定に頼らない
|
|
36
|
+
- ユーザー承認なしに次フェーズへ進めない
|
|
37
|
+
|
|
38
|
+
## Phase 1: 要件定義
|
|
39
|
+
|
|
40
|
+
`architecture-definition` で完了済み。`docs/フロントエンド/01_要件定義/` が存在することを確認して次へ進む。
|
|
41
|
+
|
|
42
|
+
存在しない場合はテンプレートから作成し、ユーザーに確認・承認を得る。
|
|
43
|
+
|
|
44
|
+
テンプレート: `templates/01_要件定義/要件定義.md`
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
docs/フロントエンド/01_要件定義/
|
|
48
|
+
要件定義.md
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Phase 2: 概要設計
|
|
52
|
+
|
|
53
|
+
### 2-1. 画面一覧
|
|
54
|
+
|
|
55
|
+
1. 要件定義から画面を洗い出す
|
|
56
|
+
2. `docs/フロントエンド/02_概要設計/画面一覧.md` を作る
|
|
57
|
+
3. ユーザーに確認・承認を得る
|
|
58
|
+
|
|
59
|
+
### 2-2. 画面遷移図
|
|
60
|
+
|
|
61
|
+
1. 画面一覧をもとに遷移フローを Mermaid で整理する
|
|
62
|
+
2. `docs/フロントエンド/02_概要設計/画面遷移図.md` を作る
|
|
63
|
+
3. ユーザーに確認・承認を得る
|
|
64
|
+
|
|
65
|
+
### 2-3. コンポーネント一覧
|
|
66
|
+
|
|
67
|
+
1. 画面一覧から共通コンポーネントを抽出する
|
|
68
|
+
2. `docs/フロントエンド/02_概要設計/コンポーネント一覧.md` を作る
|
|
69
|
+
3. ユーザーに確認・承認を得る
|
|
70
|
+
|
|
71
|
+
### 出力
|
|
72
|
+
|
|
73
|
+
テンプレート: `templates/02_概要設計/画面一覧.md` / `templates/02_概要設計/画面遷移図.md` / `templates/02_概要設計/コンポーネント一覧.md`
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
docs/フロントエンド/02_概要設計/
|
|
77
|
+
画面一覧.md
|
|
78
|
+
画面遷移図.md
|
|
79
|
+
コンポーネント一覧.md
|
|
80
|
+
90_ADR/
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## Phase 3: ADR(必要時のみ)
|
|
84
|
+
|
|
85
|
+
ADR テンプレート: `templates/90_ADR/ADRテンプレート.md`
|
|
86
|
+
|
|
87
|
+
1. 設計判断が必要な場合だけ ADR を作る
|
|
88
|
+
2. 提案時に必ず 3 案を比較する。ドキュメントには採用案と採用理由のみ記録する
|
|
89
|
+
3. ファイル名は `mmdd-{日本語タイトル}.md`、配置先は `90_ADR/`
|
|
90
|
+
|
|
91
|
+
4. 採用案を概要設計へ反映してから次へ進む
|
|
92
|
+
|
|
93
|
+
## Phase 4: ベストプラクティス調査(必要時のみ)
|
|
94
|
+
|
|
95
|
+
ADR で使用フレームワーク・ライブラリが確定した後、詳細設計に入る前に実施する。
|
|
96
|
+
|
|
97
|
+
1. 「詳細設計に先立ち、ベストプラクティスを調査すべき技術・ライブラリはありますか?」とユーザーに確認する
|
|
98
|
+
2. 調査する技術・ライブラリの公式ドキュメント URL を `.spec-runner/references/resources.md` に追記する(ユーザーが知っている URL + AI が有用と判断した URL も積極的に追加する)
|
|
99
|
+
3. WebSearch(resources.md の URL を起点に)でベストプラクティスを調査し、結果を保存する
|
|
100
|
+
4. 調査不要の場合はスキップして次へ進む
|
|
101
|
+
|
|
102
|
+
テンプレート: `templates/04_調査資料/{カテゴリ名}/{トピック名}.md`
|
|
103
|
+
|
|
104
|
+
```
|
|
105
|
+
docs/フロントエンド/04_調査資料/
|
|
106
|
+
{カテゴリ名}/ # 例: React/, アクセシビリティ/, 設計パターン/
|
|
107
|
+
{トピック名}.md
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
- 1 調査テーマ = 1 ファイル(複数テーマは別ファイルに分ける)
|
|
111
|
+
- ユーザーに確認・承認を得てから次へ進む
|
|
112
|
+
|
|
113
|
+
## Phase 5: 詳細設計
|
|
114
|
+
|
|
115
|
+
画面 → コンポーネント の順に設計する。
|
|
116
|
+
|
|
117
|
+
### 5-1. 画面
|
|
118
|
+
|
|
119
|
+
カテゴリ(機能ドメイン)でディレクトリを切り、画面ごとに 1 ファイル作成する。
|
|
120
|
+
|
|
121
|
+
テンプレート: `templates/03_詳細設計/01_画面/{カテゴリ名}/{画面名}.md`
|
|
122
|
+
|
|
123
|
+
```
|
|
124
|
+
docs/フロントエンド/03_詳細設計/01_画面/
|
|
125
|
+
{カテゴリ名}/
|
|
126
|
+
{画面名}.md
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### 5-2. コンポーネント
|
|
130
|
+
|
|
131
|
+
概要設計のコンポーネント一覧をもとに、共通コンポーネントごとに 1 ファイル作成する。
|
|
132
|
+
|
|
133
|
+
テンプレート: `templates/03_詳細設計/02_コンポーネント/{コンポーネント名}.md`
|
|
134
|
+
|
|
135
|
+
```
|
|
136
|
+
docs/フロントエンド/03_詳細設計/02_コンポーネント/
|
|
137
|
+
{コンポーネント名}.md
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
ユーザーに確認・承認を得る。
|
|
141
|
+
|
|
142
|
+
## Phase 6: TDD → 実装
|
|
143
|
+
|
|
144
|
+
`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`
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
---
|
|
2
|
+
spec_runner:
|
|
3
|
+
node_id: 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
|
+
- {理由1}
|
|
27
|
+
- {理由2}
|
|
28
|
+
|
|
29
|
+
### 実装方針
|
|
30
|
+
|
|
31
|
+
1. {方針1}
|
|
32
|
+
2. {方針2}
|
|
33
|
+
3. {方針3}
|
|
34
|
+
|
|
35
|
+
## 影響
|
|
36
|
+
|
|
37
|
+
| カテゴリ | 項目 | 内容 |
|
|
38
|
+
|----------|------|------|
|
|
39
|
+
| システム | 新規追加 | {コンポーネント} |
|
|
40
|
+
| システム | 変更 | {コンポーネント} |
|
|
41
|
+
| パフォーマンス | 処理速度 | {変化} |
|
|
42
|
+
| コスト | 追加コスト | {影響} |
|
|
43
|
+
| 制約 | 将来課題 | {課題} |
|
|
44
|
+
|
|
45
|
+
### 反映が必要な文書
|
|
46
|
+
|
|
47
|
+
- `docs/フロントエンド/02_概要設計/{対象文書}.md`
|
|
48
|
+
- `docs/フロントエンド/03_詳細設計/{対象パス}.md`
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: simple-seed
|
|
3
|
-
description: レイヤードアーキテクチャ / CRUD 中心のプロジェクト向け docs
|
|
3
|
+
description: レイヤードアーキテクチャ / CRUD 中心のプロジェクト向け docs 正本開発フロー(バックエンド担当)。ドメイン層を持たず UC・サービス層で設計する。architecture.yaml の style: layered のときに使う。
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# simple-seed
|
|
@@ -12,7 +12,7 @@ description: レイヤードアーキテクチャ / CRUD 中心のプロジェ
|
|
|
12
12
|
| キー | 用途 |
|
|
13
13
|
|------|------|
|
|
14
14
|
| `style` | このスキル(`layered`)が適切かを確認 |
|
|
15
|
-
| `has_frontend` | `true` なら
|
|
15
|
+
| `has_frontend` | `true` なら `frontend-seed` が並走していることを確認 |
|
|
16
16
|
| `folder_structure` | `maps_to` パスの基準として参照する |
|
|
17
17
|
|
|
18
18
|
設計フェーズで新たな方針・コンポーネントが確定したら、都度 architecture.yaml を最新状態に保つ。
|
|
@@ -23,13 +23,15 @@ description: レイヤードアーキテクチャ / CRUD 中心のプロジェ
|
|
|
23
23
|
Phase 1: 要件定義
|
|
24
24
|
Phase 2: 概要設計(ユースケース + システム全体俯瞰)
|
|
25
25
|
Phase 3: ADR(必要時のみ)
|
|
26
|
-
Phase 4:
|
|
27
|
-
Phase 5:
|
|
26
|
+
Phase 4: ベストプラクティス調査(必要時のみ)
|
|
27
|
+
Phase 5: 詳細設計(UC → DB・外部サービス)
|
|
28
|
+
Phase 6: TDD → 実装
|
|
28
29
|
```
|
|
29
30
|
|
|
30
31
|
## 前提ルール
|
|
31
32
|
|
|
32
33
|
- docs は正本とし、各ドキュメントに `spec_runner`ヘッダーを付ける
|
|
34
|
+
- バックエンドの設計はすべて `docs/バックエンド/` 配下に置く
|
|
33
35
|
- 詳細設計は `01_ユースケース/` `02_DB・外部サービス/` の 2 層で構成する
|
|
34
36
|
- `maps_to` は必ず設定する。パス推定に頼らない
|
|
35
37
|
- 実装ファイルのパスは UC ドキュメント本文に書かない。`maps_to` ヘッダーで管理する
|
|
@@ -37,21 +39,21 @@ Phase 5: TDD → 実装
|
|
|
37
39
|
|
|
38
40
|
## Phase 1: 要件定義
|
|
39
41
|
|
|
40
|
-
`architecture-definition` で完了済み。`docs
|
|
42
|
+
`architecture-definition` で完了済み。`docs/バックエンド/01_要件定義/` が存在することを確認して次へ進む。
|
|
41
43
|
|
|
42
44
|
## Phase 2: 概要設計
|
|
43
45
|
|
|
44
46
|
テンプレート: `templates/02_概要設計/`
|
|
45
47
|
|
|
46
48
|
1. 要件定義からユースケースを洗い出す(Query / Command を意識)
|
|
47
|
-
2. テンプレートをコピーして `docs
|
|
48
|
-
3. コンポーネント全体図・外部 IF を整理し `docs
|
|
49
|
+
2. テンプレートをコピーして `docs/バックエンド/02_概要設計/ユースケース一覧.md` を作る
|
|
50
|
+
3. コンポーネント全体図・外部 IF を整理し `docs/バックエンド/02_概要設計/システム全体俯瞰.md` を作る
|
|
49
51
|
4. ユーザーに確認・承認を得る
|
|
50
52
|
|
|
51
53
|
### 出力
|
|
52
54
|
|
|
53
55
|
```
|
|
54
|
-
docs
|
|
56
|
+
docs/バックエンド/02_概要設計/
|
|
55
57
|
ユースケース一覧.md
|
|
56
58
|
システム全体俯瞰.md
|
|
57
59
|
90_ADR/
|
|
@@ -62,6 +64,8 @@ docs/02_概要設計/
|
|
|
62
64
|
|
|
63
65
|
## Phase 3: ADR(必要時のみ)
|
|
64
66
|
|
|
67
|
+
ADR テンプレート: `templates/90_ADR/ADRテンプレート.md`
|
|
68
|
+
|
|
65
69
|
1. 設計判断が必要な場合だけ ADR を作る
|
|
66
70
|
2. 提案時に必ず 3 案を比較する。ドキュメントには採用案と採用理由のみ記録する
|
|
67
71
|
3. ファイル名は `mmdd-{日本語タイトル}.md`、配置先は対象フォルダ
|
|
@@ -74,32 +78,54 @@ docs/02_概要設計/
|
|
|
74
78
|
|
|
75
79
|
4. 採用案を概要設計へ反映してから次へ進む
|
|
76
80
|
|
|
77
|
-
## Phase 4:
|
|
81
|
+
## Phase 4: ベストプラクティス調査(必要時のみ)
|
|
82
|
+
|
|
83
|
+
ADR で使用サービス・技術が確定した後、詳細設計に入る前に実施する。
|
|
84
|
+
|
|
85
|
+
1. 「詳細設計に先立ち、ベストプラクティスを調査すべき技術・サービスはありますか?」とユーザーに確認する
|
|
86
|
+
2. 調査する技術・サービスの公式ドキュメント URL を `.spec-runner/references/resources.md` に追記する(ユーザーが知っている URL + AI が有用と判断した URL も積極的に追加する)
|
|
87
|
+
3. WebSearch(resources.md の URL を起点に)でベストプラクティスを調査し、結果を保存する
|
|
88
|
+
4. 調査不要の場合はスキップして次へ進む
|
|
89
|
+
|
|
90
|
+
テンプレート: `templates/04_調査資料/{カテゴリ名}/{トピック名}.md`
|
|
91
|
+
|
|
92
|
+
```
|
|
93
|
+
docs/バックエンド/04_調査資料/
|
|
94
|
+
{カテゴリ名}/ # 例: AWS/, GCP/, 設計パターン/
|
|
95
|
+
{トピック名}.md # 例: DynamoDB-キー設計.md, S3-アクセス制御.md
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
- 1 調査テーマ = 1 ファイル(複数テーマは別ファイルに分ける)
|
|
99
|
+
- ユーザーに確認・承認を得てから次へ進む
|
|
100
|
+
|
|
101
|
+
## Phase 5: 詳細設計
|
|
78
102
|
|
|
79
103
|
UC → DB・外部サービス の順に設計する。
|
|
80
104
|
|
|
81
|
-
###
|
|
105
|
+
### 5-1. ユースケース
|
|
82
106
|
|
|
83
107
|
テンプレート: `templates/03_詳細設計/01_ユースケース/UC-{日本語名}.md`
|
|
84
108
|
|
|
85
|
-
> `has_frontend: true` の場合は各 UC ファイルに「画面レイアウト」セクションを含める。`false` なら削除する。
|
|
86
|
-
|
|
87
109
|
```
|
|
88
|
-
docs
|
|
110
|
+
docs/バックエンド/03_詳細設計/01_ユースケース/
|
|
89
111
|
UC-{日本語名}.md
|
|
90
112
|
```
|
|
91
113
|
|
|
92
|
-
###
|
|
114
|
+
### 5-2. DB・外部サービス(必要時のみ)
|
|
93
115
|
|
|
94
116
|
```
|
|
95
|
-
docs
|
|
117
|
+
docs/バックエンド/03_詳細設計/02_DB・外部サービス/
|
|
96
118
|
スキーマ定義.dbml
|
|
97
|
-
|
|
119
|
+
{プロバイダー名}/ # 例: AWS/, GCP/, Azure/
|
|
120
|
+
{サービス名}.md # 例: S3.md, DynamoDB.md, Athena.md
|
|
98
121
|
```
|
|
99
122
|
|
|
123
|
+
- 外部サービスはクラウドプロバイダー(AWS / GCP / Azure など)をカテゴリフォルダとし、中にサービス名の md を置く
|
|
124
|
+
- `外部サービス.md` のような汎用名は使わない
|
|
125
|
+
|
|
100
126
|
3. ユーザーに確認・承認を得る
|
|
101
127
|
|
|
102
|
-
## Phase
|
|
128
|
+
## Phase 6: TDD → 実装
|
|
103
129
|
|
|
104
130
|
`test-driven-development` スキルへ移行する。
|
|
105
131
|
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
---
|
|
2
|
+
spec_runner:
|
|
3
|
+
node_id: 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
|
+
- {制約}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
spec_runner:
|
|
3
|
+
type: external-service
|
|
4
|
+
provider: {プロバイダー名}
|
|
5
|
+
service: {サービス名}
|
|
6
|
+
maps_to: ""
|
|
7
|
+
depends_on: []
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# {サービス名}
|
|
11
|
+
|
|
12
|
+
## 用途・役割
|
|
13
|
+
|
|
14
|
+
## 設定・接続情報
|
|
15
|
+
|
|
16
|
+
| 項目 | 値 |
|
|
17
|
+
|------|-----|
|
|
18
|
+
| | |
|
|
19
|
+
|
|
20
|
+
## データ構造・スキーマ
|
|
21
|
+
|
|
22
|
+
## アクセス制御・権限
|
|
23
|
+
|
|
24
|
+
## 注意事項
|