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,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
|
+
- {制約}
|
|
@@ -46,21 +46,6 @@ sequenceDiagram
|
|
|
46
46
|
|------------|---------|------|
|
|
47
47
|
| {エラーケース} | {発生条件} | {対応} |
|
|
48
48
|
|
|
49
|
-
## 画面レイアウト
|
|
50
|
-
|
|
51
|
-
> `has_frontend: true` のときのみ記載する。不要なら削除する。
|
|
52
|
-
|
|
53
|
-
- 画面名: {画面名}
|
|
54
|
-
- 遷移元: {前の画面 or -}
|
|
55
|
-
- 遷移先: {次の画面 or -}
|
|
56
|
-
|
|
57
|
-
```
|
|
58
|
-
{画面レイアウト概要 — ASCII art / Markdown テーブルで表現}
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
- 主要 UI 要素:
|
|
62
|
-
- {入力フォーム・ボタン・一覧表示など}
|
|
63
|
-
|
|
64
49
|
## テスト観点
|
|
65
50
|
|
|
66
51
|
- {正常系の観点}
|
|
@@ -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
|
+
## 注意事項
|
|
@@ -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_詳細設計/src/{対象パス}.md`
|
|
@@ -4,16 +4,6 @@ applyTo: "docs/**"
|
|
|
4
4
|
|
|
5
5
|
# 設計書共通ルール
|
|
6
6
|
|
|
7
|
-
## フェーズ管理
|
|
8
|
-
|
|
9
|
-
- ユーザー承認なしにフェーズを進めない
|
|
10
|
-
- フェーズは必ず `要件定義 -> 概要設計 -> 詳細設計 -> TDD -> 実装` の順に進める
|
|
11
|
-
|
|
12
|
-
## テンプレート
|
|
13
|
-
|
|
14
|
-
- 設計書は必ずテンプレートをコピーして生成する。独自にゼロから作成しない
|
|
15
|
-
- 手順: テンプレートを読む → 出力先へコピーする → プレースホルダーを埋める
|
|
16
|
-
|
|
17
7
|
## ヘッダー
|
|
18
8
|
|
|
19
9
|
- `docs/**` の全設計書にヘッダーを付ける
|
|
@@ -40,6 +30,8 @@ spec_runner:
|
|
|
40
30
|
|
|
41
31
|
### node_id 体系
|
|
42
32
|
|
|
33
|
+
#### バックエンド
|
|
34
|
+
|
|
43
35
|
| 対象 | node_id 形式 | 例 |
|
|
44
36
|
|------|-------------|-----|
|
|
45
37
|
| 要件定義 | `requirement.{名前}` | `requirement.要件定義` |
|
|
@@ -51,26 +43,43 @@ spec_runner:
|
|
|
51
43
|
| UC 詳細設計 | `detail.usecase.{UC名}` | `detail.usecase.注文確定` |
|
|
52
44
|
| DB・外部サービス | `detail.db.{名前}` | `detail.db.スキーマ定義` |
|
|
53
45
|
|
|
46
|
+
#### フロントエンド(has_frontend: true のみ)
|
|
47
|
+
|
|
48
|
+
| 対象 | node_id 形式 | 例 |
|
|
49
|
+
|------|-------------|-----|
|
|
50
|
+
| 要件定義 | `frontend.requirement.{名前}` | `frontend.requirement.要件定義` |
|
|
51
|
+
| 画面一覧 | `frontend.overview.画面一覧` | — |
|
|
52
|
+
| 画面遷移図 | `frontend.overview.画面遷移図` | — |
|
|
53
|
+
| コンポーネント一覧 | `frontend.overview.コンポーネント一覧` | — |
|
|
54
|
+
| ADR | `frontend.adr.{slug}` | `frontend.adr.0404-UIフレームワーク選定` |
|
|
55
|
+
| 画面詳細設計 | `frontend.detail.画面.{画面名}` | `frontend.detail.画面.ログイン` |
|
|
56
|
+
| コンポーネント詳細設計 | `frontend.detail.component.{名前}` | `frontend.detail.component.ボタン` |
|
|
57
|
+
|
|
54
58
|
## 命名規則
|
|
55
59
|
|
|
60
|
+
### バックエンド
|
|
61
|
+
|
|
56
62
|
| 対象 | 規則 | 例 |
|
|
57
63
|
|------|------|-----|
|
|
58
|
-
| `docs
|
|
59
|
-
| `docs
|
|
60
|
-
| `docs
|
|
61
|
-
| `docs
|
|
64
|
+
| `docs/バックエンド/01_要件定義` | 日本語 | `要件定義.md`, `ユビキタス言語辞書.md` |
|
|
65
|
+
| `docs/バックエンド/02_概要設計` | 日本語 | `ユースケース一覧.md`, `システム全体俯瞰.md` |
|
|
66
|
+
| `docs/バックエンド/02_概要設計`(style: ddd のみ) | 日本語 | `ドメインモデル.md` |
|
|
67
|
+
| `docs/バックエンド/02_概要設計/90_ADR/{対象}/` | `mmdd-{日本語タイトル}.md` | `0404-注文集約の設計.md` |
|
|
62
68
|
| `{対象}` の選択肢 | `全体` / `ドメイン` / `UC` / `DB` | — |
|
|
63
|
-
| `docs
|
|
64
|
-
| `docs
|
|
65
|
-
| `docs
|
|
69
|
+
| `docs/バックエンド/03_詳細設計/01_ドメイン`(style: ddd のみ) | 日本語 | `注文.md`, `在庫.md` |
|
|
70
|
+
| `docs/バックエンド/03_詳細設計/02_ユースケース`(style: ddd) / `01_ユースケース`(style: layered) | `UC-{日本語名}.md` | `UC-注文確定.md` |
|
|
71
|
+
| `docs/バックエンド/03_詳細設計/03_DB・外部サービス`(style: ddd) / `02_DB・外部サービス`(style: layered) | 日本語 | `スキーマ定義.dbml`, `AWS/S3.md`, `GCP/BigQuery.md` |
|
|
72
|
+
| `docs/バックエンド/04_調査資料/{カテゴリ名}/` | 日本語 | `AWS/DynamoDB-キー設計.md`, `設計パターン/CQRS.md` |
|
|
66
73
|
|
|
67
|
-
|
|
74
|
+
### フロントエンド(has_frontend: true のみ)
|
|
68
75
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
76
|
+
| 対象 | 規則 | 例 |
|
|
77
|
+
|------|------|-----|
|
|
78
|
+
| `docs/フロントエンド/01_要件定義` | 日本語 | `要件定義.md` |
|
|
79
|
+
| `docs/フロントエンド/02_概要設計` | 日本語 | `画面一覧.md`, `画面遷移図.md`, `コンポーネント一覧.md` |
|
|
80
|
+
| `docs/フロントエンド/02_概要設計/90_ADR/` | `mmdd-{日本語タイトル}.md` | `0404-UIフレームワーク選定.md` |
|
|
81
|
+
| `docs/フロントエンド/03_詳細設計/01_画面/{カテゴリ名}/` | 日本語 | `ログイン.md`, `ダッシュボード.md` |
|
|
82
|
+
| `docs/フロントエンド/03_詳細設計/02_コンポーネント/` | 日本語 | `ボタン.md`, `モーダル.md` |
|
|
74
83
|
|
|
75
84
|
## 文書品質
|
|
76
85
|
|
|
@@ -90,8 +99,8 @@ spec_runner:
|
|
|
90
99
|
|
|
91
100
|
| 種別 | 内容 | 置き場所 |
|
|
92
101
|
|------|------|---------|
|
|
93
|
-
| ドメインモデル | ビジネスルール・集約・値オブジェクト・不変条件 | `docs
|
|
94
|
-
| データモデル | DBスキーマ・テーブル定義・カラム定義・インデックス | `docs
|
|
102
|
+
| ドメインモデル | ビジネスルール・集約・値オブジェクト・不変条件 | `docs/バックエンド/03_詳細設計/01_ドメイン/` |
|
|
103
|
+
| データモデル | DBスキーマ・テーブル定義・カラム定義・インデックス | `docs/バックエンド/03_詳細設計/03_DB・外部サービス/` |
|
|
95
104
|
|
|
96
105
|
- `01_ドメイン/` に DB スキーマ・テーブル定義・カラム定義を書かない
|
|
97
106
|
- `03_DB・外部サービス/` にビジネスルール・ドメインロジックを書かない
|
|
@@ -20,10 +20,12 @@ Phase 5: architecture-skill-development へ自動移行
|
|
|
20
20
|
|
|
21
21
|
テンプレート: `.claude/skills/ddd-seed/templates/01_要件定義/`
|
|
22
22
|
|
|
23
|
-
1.
|
|
23
|
+
1. 背景・提供価値・制約・スコープ外について、曖昧な点があれば一問一答で深掘りする(各質問に推奨回答を添える。コードで確認できることは質問しない)
|
|
24
24
|
2. ユーザーから背景、提供価値、制約、スコープ外を確認する
|
|
25
|
-
3.
|
|
26
|
-
|
|
25
|
+
3. テンプレートをコピーして以下を作る
|
|
26
|
+
- `docs/バックエンド/01_要件定義/要件定義.md`
|
|
27
|
+
- `has_frontend: true` の場合は `docs/フロントエンド/01_要件定義/要件定義.md` も作る
|
|
28
|
+
4. ドメイン用語が出てきたら `docs/バックエンド/01_要件定義/ユビキタス言語辞書.md` に随時追記する
|
|
27
29
|
5. アーキテクチャスタイルを選択する
|
|
28
30
|
|
|
29
31
|
| スタイル | 選ぶ基準 |
|
|
@@ -87,4 +89,10 @@ Phase 4 が承認されたら、ユーザーにコマンドを打たせずに `a
|
|
|
87
89
|
1. `architecture-skill-development` に渡す前提(docs・architecture.yaml・確定済みフォルダ構造)を要約する
|
|
88
90
|
2. project 専用 skill に切り出すべき反復フローを列挙する
|
|
89
91
|
3. 確認なしに `architecture-skill-development` Phase 1 へ進む
|
|
90
|
-
4.
|
|
92
|
+
4. スキル整備完了後、以下のスキルで概要設計へ進む
|
|
93
|
+
|
|
94
|
+
| 条件 | 起動するスキル |
|
|
95
|
+
|------|--------------|
|
|
96
|
+
| `style: ddd` | `ddd-seed`(バックエンド) |
|
|
97
|
+
| `style: layered` | `simple-seed`(バックエンド) |
|
|
98
|
+
| `has_frontend: true` | 上記に加えて `frontend-seed` を並走させる |
|
|
@@ -18,7 +18,7 @@ Phase 6: セットアップ専用 skill のアーカイブ提案
|
|
|
18
18
|
|
|
19
19
|
## Phase 1: 入力の確認
|
|
20
20
|
|
|
21
|
-
1. `docs
|
|
21
|
+
1. `docs/バックエンド/01_要件定義/**` を読む。`has_frontend: true` の場合は `docs/フロントエンド/01_要件定義/**` も読む
|
|
22
22
|
2. `.spec-runner/architecture/architecture.yaml` を読む
|
|
23
23
|
3. 固定化すべき判断と project 固有判断を切り分ける
|
|
24
24
|
|
|
@@ -49,7 +49,7 @@ Phase 6: セットアップ専用 skill のアーカイブ提案
|
|
|
49
49
|
|
|
50
50
|
seed が存在しない場合は「新規に作る」で進める。
|
|
51
51
|
|
|
52
|
-
`has_frontend: true`
|
|
52
|
+
`has_frontend: true` の場合は、`frontend-seed` と バックエンド seed の両方を並走させる旨を専用スキルに明記する。
|
|
53
53
|
|
|
54
54
|
4. ユーザーに確認・承認を得る
|
|
55
55
|
|
|
@@ -58,12 +58,25 @@ seed が存在しない場合は「新規に作る」で進める。
|
|
|
58
58
|
インストール時に配布された基盤 skill のプレースホルダーを、このプロジェクトの実態に書き換える。
|
|
59
59
|
以降の書き換えはすべて `architecture.yaml` の `integrations` に従う(`claude` のみなら `.claude/` だけ、`github` のみなら `.github/` だけ、両方なら対で更新する)。
|
|
60
60
|
|
|
61
|
+
### インフラ構成ファイルの整備
|
|
62
|
+
|
|
63
|
+
`architecture.yaml` の `language` / `folder_structure` / `testing_policy` を参照して以下を作成する。
|
|
64
|
+
|
|
65
|
+
1. **`.gitignore`**: 言語・フレームワーク固有のパターン(依存パッケージ・ビルド成果物・キャッシュ)と、プロジェクト固有の除外パス(`.env`、`docs/` 等)をユーザーと確認して作成する
|
|
66
|
+
2. **`.dockerignore`**: `.git`・`docs/`・`tests/`・依存パッケージ・ビルド成果物をビルドコンテキストから除外する。ユーザーに追加除外パスを確認する
|
|
67
|
+
3. **`Dockerfile.test`**: テスト実行専用イメージを作成する
|
|
68
|
+
- ベースイメージをユーザーに確認する(例: `python:3.12-slim`, `node:20-alpine`)
|
|
69
|
+
- テスト依存(テストフレームワーク・カバレッジツール等)をインストールする
|
|
70
|
+
- `has_frontend: true` の場合はフロントエンド用も作成する
|
|
71
|
+
|
|
61
72
|
### test-config.md の書き換え
|
|
62
73
|
|
|
63
74
|
`rules/test-config.md`(GitHub Copilot は `instructions/test-config.instructions.md`)はテスト実行コマンドの単一ソースとして `test-driven-development` スキルと `run-tests` エージェントの両方から参照される。`architecture.yaml` の `testing_policy` を参照して書き換える。
|
|
64
75
|
|
|
65
|
-
1.
|
|
66
|
-
2.
|
|
76
|
+
1. **Docker Compose サービス名の確認**: バックエンド・フロントエンドそれぞれのサービス名をユーザーに確認する(例: `backend`, `frontend`)
|
|
77
|
+
2. **LocalStack の確認**: AWS サービスを使うか確認する。使う場合は対象サービス(S3, SQS, DynamoDB 等)と LocalStack のサービス名をユーザーに確認する
|
|
78
|
+
3. **テスト実行コマンド**: `docker compose run --rm <service> <test-command>` の形式で各コマンドを書き換える
|
|
79
|
+
4. **テスト構成**: `tests/` のディレクトリ構成が実態と異なる場合は書き換える
|
|
67
80
|
|
|
68
81
|
### test-driven-development の書き換え
|
|
69
82
|
|
|
@@ -72,13 +85,6 @@ seed が存在しない場合は「新規に作る」で進める。
|
|
|
72
85
|
1. **fixture / テストデータ**: このプロジェクトの実際のクラス名・DB 接続方法・ヘルパ関数パターンを記述する
|
|
73
86
|
2. **モックのルール**: 使用する外部サービスとモック手段(ライブラリ名など)を具体化する
|
|
74
87
|
|
|
75
|
-
### 影響範囲チェックリストの書き換え
|
|
76
|
-
|
|
77
|
-
`.claude/skills/design-change/references/影響範囲チェックリスト.md` をプロジェクト固有の変更カテゴリとパスに合わせて書き換える。
|
|
78
|
-
|
|
79
|
-
1. 変更カテゴリをプロジェクトの構成要素(モジュール・サービス・ドメインなど)に合わせて追加・削除する
|
|
80
|
-
2. 詳細設計のパスを `architecture.yaml` の `folder_structure` に合わせて書き換える
|
|
81
|
-
|
|
82
88
|
### code-style.md の書き換え
|
|
83
89
|
|
|
84
90
|
`architecture.yaml` の `language` と `folder_structure` を参照して、以下を実際の値に置き換える。
|
|
@@ -124,6 +130,7 @@ seed が存在しない場合は「新規に作る」で進める。
|
|
|
124
130
|
| `architecture-definition` | 新規プロジェクト初期化専用。アーキテクチャ確定後は不要 |
|
|
125
131
|
| `existing-project-to-docs` | 既存プロジェクト取り込み専用。docs 生成後は不要 |
|
|
126
132
|
| `ddd-seed` / `simple-seed` | プロジェクト専用スキル作成後は不要 |
|
|
133
|
+
| `frontend-seed` | `has_frontend: true` かつプロジェクト専用スキル作成後は不要 |
|
|
127
134
|
| `architecture-skill-development`(このファイル自身) | project 専用 skill が安定したら不要。アーキテクチャ大変更時は再利用可 |
|
|
128
135
|
|
|
129
136
|
### 手順
|