spec-runner 1.1.7 → 1.1.9
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/README.md +51 -80
- package/bin/spec-runner-installer.js +411 -0
- package/install.sh +1 -1
- package/package.json +7 -6
- package/spec-runner/templates/.claude/agents/code-reviewer.md +69 -0
- package/spec-runner/templates/.claude/agents/design-reviewer.md +65 -0
- package/spec-runner/templates/.claude/agents/test-runner.md +34 -0
- package/spec-runner/templates/.claude/rules/coding.md +106 -0
- package/spec-runner/templates/.claude/rules/design-docs.md +63 -0
- package/spec-runner/templates/.claude/skills/architecture-definition/SKILL.md +60 -0
- package/spec-runner/templates/.claude/skills/architecture-skill-development/SKILL.md +126 -0
- package/spec-runner/templates/.claude/skills/commit/SKILL.md +83 -0
- package/spec-runner/templates/.claude/skills/design-change/SKILL.md +94 -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 +66 -0
- 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 +81 -0
- package/spec-runner/templates/.claude/skills/existing-project-to-docs/SKILL.md +57 -0
- package/spec-runner/templates/.claude/skills/harness-engineering/SKILL.md +100 -0
- package/spec-runner/templates/.claude/skills/plugin-development/SKILL.md +173 -0
- package/spec-runner/templates/.claude/skills/plugin-development/templates/01_/350/246/201/344/273/266/345/256/232/347/276/251//346/246/202/350/246/201/343/203/206/343/203/263/343/203/227/343/203/254/343/203/274/343/203/210.md +88 -0
- package/spec-runner/templates/.claude/skills/plugin-development/templates/02_/346/246/202/350/246/201/350/250/255/350/250/210/90_ADR/ADR/343/203/206/343/203/263/343/203/227/343/203/254/343/203/274/343/203/210.md +81 -0
- package/spec-runner/templates/.claude/skills/plugin-development/templates/02_/346/246/202/350/246/201/350/250/255/350/250/210//343/202/267/343/202/271/343/203/206/343/203/240/345/205/250/344/275/223/344/277/257/347/236/260/343/203/206/343/203/263/343/203/227/343/203/254/343/203/274/343/203/210.md +80 -0
- package/spec-runner/templates/.claude/skills/plugin-development/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/343/203/206/343/203/263/343/203/227/343/203/254/343/203/274/343/203/210.md +57 -0
- package/spec-runner/templates/.claude/skills/plugin-development/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/infrastructure/aws.md +53 -0
- package/spec-runner/templates/.claude/skills/plugin-development/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/infrastructure/database.md +54 -0
- package/spec-runner/templates/.claude/skills/plugin-development/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/infrastructure/schema.dbml +25 -0
- package/spec-runner/templates/.claude/skills/plugin-development/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/infrastructure/sequence//343/202/267/343/203/274/343/202/261/343/203/263/343/202/271/345/233/263/343/203/206/343/203/263/343/203/227/343/203/254/343/203/274/343/203/210.md +28 -0
- package/spec-runner/templates/.claude/skills/plugin-development/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/src/agents/{agent_name}/agent.md +56 -0
- package/spec-runner/templates/.claude/skills/plugin-development/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/src/agents/{agent_name}/config.md +47 -0
- package/spec-runner/templates/.claude/skills/plugin-development/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/src/agents/{agent_name}/domain.md +67 -0
- package/spec-runner/templates/.claude/skills/plugin-development/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/src/agents/{agent_name}/prompts.md +72 -0
- package/spec-runner/templates/.claude/skills/plugin-development/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/src/plugins/skills/{skill_name}/skill.md +53 -0
- package/spec-runner/templates/.claude/skills/plugin-development/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/src/plugins/tools/{tool_name}/tool.md +51 -0
- package/spec-runner/templates/.claude/skills/test-driven-development/SKILL.md +211 -0
- package/spec-runner/templates/.github/agents/code-reviewer.agent.md +69 -0
- package/spec-runner/templates/.github/agents/design-reviewer.agent.md +65 -0
- package/spec-runner/templates/.github/agents/test-runner.agent.md +34 -0
- package/spec-runner/templates/.github/instructions/coding.instructions.md +105 -0
- package/spec-runner/templates/.github/instructions/design-docs.instructions.md +62 -0
- package/spec-runner/templates/.github/skills/architecture-definition/SKILL.md +60 -0
- package/spec-runner/templates/.github/skills/architecture-skill-development/SKILL.md +126 -0
- package/spec-runner/templates/.github/skills/commit/SKILL.md +83 -0
- package/spec-runner/templates/.github/skills/design-change/SKILL.md +94 -0
- 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 +66 -0
- 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 +81 -0
- package/spec-runner/templates/.github/skills/existing-project-to-docs/SKILL.md +57 -0
- package/spec-runner/templates/.github/skills/harness-engineering/SKILL.md +100 -0
- package/spec-runner/templates/.github/skills/plugin-development/SKILL.md +173 -0
- package/spec-runner/templates/.github/skills/plugin-development/templates/01_/350/246/201/344/273/266/345/256/232/347/276/251//346/246/202/350/246/201/343/203/206/343/203/263/343/203/227/343/203/254/343/203/274/343/203/210.md +88 -0
- package/spec-runner/templates/.github/skills/plugin-development/templates/02_/346/246/202/350/246/201/350/250/255/350/250/210/90_ADR/ADR/343/203/206/343/203/263/343/203/227/343/203/254/343/203/274/343/203/210.md +81 -0
- package/spec-runner/templates/.github/skills/plugin-development/templates/02_/346/246/202/350/246/201/350/250/255/350/250/210//343/202/267/343/202/271/343/203/206/343/203/240/345/205/250/344/275/223/344/277/257/347/236/260/343/203/206/343/203/263/343/203/227/343/203/254/343/203/274/343/203/210.md +80 -0
- package/spec-runner/templates/.github/skills/plugin-development/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/343/203/206/343/203/263/343/203/227/343/203/254/343/203/274/343/203/210.md +57 -0
- package/spec-runner/templates/.github/skills/plugin-development/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/infrastructure/aws.md +53 -0
- package/spec-runner/templates/.github/skills/plugin-development/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/infrastructure/database.md +54 -0
- package/spec-runner/templates/.github/skills/plugin-development/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/infrastructure/schema.dbml +25 -0
- package/spec-runner/templates/.github/skills/plugin-development/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/infrastructure/sequence//343/202/267/343/203/274/343/202/261/343/203/263/343/202/271/345/233/263/343/203/206/343/203/263/343/203/227/343/203/254/343/203/274/343/203/210.md +28 -0
- package/spec-runner/templates/.github/skills/plugin-development/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/src/agents/{agent_name}/agent.md +56 -0
- package/spec-runner/templates/.github/skills/plugin-development/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/src/agents/{agent_name}/config.md +47 -0
- package/spec-runner/templates/.github/skills/plugin-development/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/src/agents/{agent_name}/domain.md +67 -0
- package/spec-runner/templates/.github/skills/plugin-development/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/src/agents/{agent_name}/prompts.md +72 -0
- package/spec-runner/templates/.github/skills/plugin-development/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/src/plugins/skills/{skill_name}/skill.md +53 -0
- package/spec-runner/templates/.github/skills/plugin-development/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/src/plugins/tools/{tool_name}/tool.md +51 -0
- package/spec-runner/templates/.github/skills/test-driven-development/SKILL.md +211 -0
- package/bin/spec-runner.js +0 -270
- package/docs/flow.md +0 -72
- package/templates/.spec-runner/project.json.example +0 -27
- package/templates/.spec-runner/scripts/check.sh +0 -390
- package/templates/.spec-runner/scripts/spec-runner-core.sh +0 -289
- package/templates/.spec-runner/scripts/uc-next-start.sh +0 -161
- package/templates/.spec-runner/spec-runner.sh +0 -29
- package/templates/.spec-runner/steps/steps.json +0 -96
- package/templates/.spec-runner/steps//343/203/206/343/202/271/343/203/210/350/250/255/350/250/210.md +0 -58
- package/templates/.spec-runner/steps//343/203/211/343/203/241/343/202/244/343/203/263/350/250/255/350/250/210.md +0 -52
- package/templates/.spec-runner/steps//344/273/225/346/247/230/347/255/226/345/256/232.md +0 -210
- package/templates/.spec-runner/steps//345/210/206/346/236/220.md +0 -106
- package/templates/.spec-runner/steps//345/256/237/350/243/205.md +0 -80
- package/templates/.spec-runner/steps//345/256/237/350/243/205/350/250/210/347/224/273.md +0 -96
- package/templates/.spec-runner/steps//346/206/262/347/253/240.md +0 -95
- package/templates/.spec-runner/steps//346/233/226/346/230/247/343/201/225/350/247/243/346/266/210.md +0 -110
- package/templates/.spec-runner/templates/UC-N-MMDD-/345/210/244/346/226/255/350/250/230/351/214/262/343/203/206/343/203/263/343/203/227/343/203/254.md +0 -33
- package/templates/.spec-runner/templates/UC-N-/343/203/246/343/203/274/343/202/271/343/202/261/343/203/274/343/202/271/345/220/215.md +0 -26
- package/templates/.spec-runner/templates/phase-locks.json +0 -49
- package/templates/.spec-runner/templates//343/203/211/343/203/241/343/202/244/343/203/263/343/203/242/343/203/207/343/203/253.md +0 -21
- package/templates/.spec-runner/templates//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 +0 -16
- package/templates/.spec-runner/templates//346/206/262/347/253/240.md +0 -51
- package/templates/.spec-runner/templates//351/233/206/347/264/204.md +0 -46
- package/templates/mkdocs-scaffold/docs/index.md +0 -32
- package/templates/mkdocs-scaffold/mkdocs.yml +0 -16
- package/templates/mkdocs-scaffold/requirements-docs.txt +0 -2
- package/templates/skills/uc-k1-work-card-init/SKILL.md +0 -76
- package/templates/skills/uc-k2-pre-commit-check/SKILL.md +0 -57
- package/templates/skills/uc-k3-spec-impl-diff-review/SKILL.md +0 -57
- package/templates/spec-runner-command.md +0 -51
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: plugin-development
|
|
3
|
+
description: プラグイン型アーキテクチャ向けの reference workflow。docs を正本にし、概要設計から `src/` ミラーの詳細設計、TDD、実装へ進める。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# plugin-development
|
|
7
|
+
|
|
8
|
+
プラグイン型アーキテクチャ向けの新規開発フロー。
|
|
9
|
+
`architecture-definition` や `architecture-skill-development` が未整備な段階でも使える reference implementation として扱う。
|
|
10
|
+
|
|
11
|
+
## 全体フロー
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
Phase 1: 要件定義
|
|
15
|
+
Phase 2: 概要設計
|
|
16
|
+
Phase 3: ADR(必要時のみ)
|
|
17
|
+
Phase 4: 詳細設計
|
|
18
|
+
Phase 5: TDD → 実装
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## 前提ルール
|
|
22
|
+
|
|
23
|
+
- docs は正本とし、各ドキュメントに `spec_runner` frontmatter を付ける
|
|
24
|
+
- `docs/03_詳細設計/src/**` は原則として `src/` をミラーする
|
|
25
|
+
- `docs/03_詳細設計/infrastructure/**` は例外文書として扱い、必ず `maps_to` で対応先を明示する
|
|
26
|
+
- ユーザー承認なしに次フェーズへ進めない
|
|
27
|
+
|
|
28
|
+
## Phase 1: 要件定義
|
|
29
|
+
|
|
30
|
+
### 手順
|
|
31
|
+
|
|
32
|
+
1. 以下をユーザーにヒアリングする
|
|
33
|
+
- 解決すべき課題
|
|
34
|
+
- 提供価値
|
|
35
|
+
- 対象ユーザー
|
|
36
|
+
- 非機能要件
|
|
37
|
+
- スコープ外
|
|
38
|
+
- 技術・ビジネス制約
|
|
39
|
+
2. テンプレート `templates/01_要件定義/概要テンプレート.md` をコピーして `docs/01_要件定義/要件定義.md` を作る
|
|
40
|
+
3. frontmatter の `node_id` / `kind` / `depends_on` / `maps_to` を埋める
|
|
41
|
+
4. ユーザーに確認・承認を得る
|
|
42
|
+
|
|
43
|
+
### 出力
|
|
44
|
+
|
|
45
|
+
```text
|
|
46
|
+
docs/
|
|
47
|
+
01_要件定義/
|
|
48
|
+
要件定義.md
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Phase 2: 概要設計
|
|
52
|
+
|
|
53
|
+
### 2-1. ユースケース一覧
|
|
54
|
+
|
|
55
|
+
1. Phase 1 の要件定義からユースケースを洗い出す
|
|
56
|
+
2. Query / Command を意識して一覧化する
|
|
57
|
+
3. テンプレート `templates/02_概要設計/ユースケース一覧テンプレート.md` をコピーして作る
|
|
58
|
+
4. 必要なら `docs/02_概要設計/ユースケース/` 配下に個別 UC も作る
|
|
59
|
+
5. ユーザーに確認・承認を得る
|
|
60
|
+
|
|
61
|
+
### 2-2. システム全体俯瞰
|
|
62
|
+
|
|
63
|
+
1. ユースケース一覧から責務境界、主要コンポーネント、外部 IF を整理する
|
|
64
|
+
2. テンプレート `templates/02_概要設計/システム全体俯瞰テンプレート.md` をコピーして作る
|
|
65
|
+
3. 必要なら `ドメイン責務マップ.md` / `外部IF一覧.md` / `非機能・運用方針.md` を追加する
|
|
66
|
+
4. ユーザーに確認・承認を得る
|
|
67
|
+
|
|
68
|
+
### 出力
|
|
69
|
+
|
|
70
|
+
```text
|
|
71
|
+
docs/
|
|
72
|
+
02_概要設計/
|
|
73
|
+
ユースケース一覧.md
|
|
74
|
+
システム全体俯瞰.md
|
|
75
|
+
ユースケース/
|
|
76
|
+
UC-*.md
|
|
77
|
+
90_ADR/
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Phase 3: ADR(必要時のみ)
|
|
81
|
+
|
|
82
|
+
1. 実装方針に意思決定が必要な場合だけ ADR を作る
|
|
83
|
+
2. **必ず 3 案を比較する**
|
|
84
|
+
3. テンプレート `templates/02_概要設計/90_ADR/ADRテンプレート.md` をコピーして生成する
|
|
85
|
+
4. 配置先は `docs/02_概要設計/90_ADR/ADR-0001-{slug}.md` を原則とする
|
|
86
|
+
5. 採用案を概要設計へ反映してから次へ進む
|
|
87
|
+
|
|
88
|
+
## Phase 4: 詳細設計
|
|
89
|
+
|
|
90
|
+
**各ドキュメントは `src/` と決定的に対応づける。**
|
|
91
|
+
|
|
92
|
+
### 4-1. エージェント
|
|
93
|
+
|
|
94
|
+
テンプレート:
|
|
95
|
+
- `templates/03_詳細設計/src/agents/{agent_name}/agent.md`
|
|
96
|
+
- `templates/03_詳細設計/src/agents/{agent_name}/domain.md`
|
|
97
|
+
- `templates/03_詳細設計/src/agents/{agent_name}/prompts.md`
|
|
98
|
+
- `templates/03_詳細設計/src/agents/{agent_name}/config.md`
|
|
99
|
+
|
|
100
|
+
出力:
|
|
101
|
+
|
|
102
|
+
```text
|
|
103
|
+
docs/
|
|
104
|
+
03_詳細設計/
|
|
105
|
+
src/
|
|
106
|
+
agents/
|
|
107
|
+
{agent_name}/
|
|
108
|
+
agent.md
|
|
109
|
+
domain.md
|
|
110
|
+
prompts.md
|
|
111
|
+
config.md
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### 4-2. プラグイン
|
|
115
|
+
|
|
116
|
+
テンプレート:
|
|
117
|
+
- `templates/03_詳細設計/src/plugins/skills/{skill_name}/skill.md`
|
|
118
|
+
- `templates/03_詳細設計/src/plugins/tools/{tool_name}/tool.md`
|
|
119
|
+
|
|
120
|
+
出力:
|
|
121
|
+
|
|
122
|
+
```text
|
|
123
|
+
docs/
|
|
124
|
+
03_詳細設計/
|
|
125
|
+
src/
|
|
126
|
+
plugins/
|
|
127
|
+
skills/
|
|
128
|
+
{skill_name}/
|
|
129
|
+
skill.md
|
|
130
|
+
tools/
|
|
131
|
+
{tool_name}/
|
|
132
|
+
tool.md
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### 4-3. インフラ補助設計
|
|
136
|
+
|
|
137
|
+
`src` ミラーだけでは表現しきれない DB / IaC / 運用構成だけ、例外として補助設計を置く。
|
|
138
|
+
|
|
139
|
+
テンプレート:
|
|
140
|
+
- `templates/03_詳細設計/infrastructure/database.md`
|
|
141
|
+
- `templates/03_詳細設計/infrastructure/schema.dbml`
|
|
142
|
+
- `templates/03_詳細設計/infrastructure/aws.md`
|
|
143
|
+
- `templates/03_詳細設計/infrastructure/sequence/シーケンス図テンプレート.md`
|
|
144
|
+
|
|
145
|
+
出力:
|
|
146
|
+
|
|
147
|
+
```text
|
|
148
|
+
docs/
|
|
149
|
+
03_詳細設計/
|
|
150
|
+
infrastructure/
|
|
151
|
+
database.md
|
|
152
|
+
schema.dbml
|
|
153
|
+
aws.md
|
|
154
|
+
sequence/
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
ユーザーに確認・承認を得る
|
|
158
|
+
|
|
159
|
+
## Phase 5: TDD → 実装
|
|
160
|
+
|
|
161
|
+
詳細設計が承認されたら `test-driven-development` スキルへ移行する。
|
|
162
|
+
|
|
163
|
+
### 実装完了後のレビュー
|
|
164
|
+
|
|
165
|
+
- `@design-reviewer` — frontmatter と `maps_to` を起点に設計書⇔実装の整合性チェック
|
|
166
|
+
- `@code-reviewer` — コーディング規約への適合チェック
|
|
167
|
+
|
|
168
|
+
## 原則
|
|
169
|
+
|
|
170
|
+
- **ユースケースは途中で止めずに洗い出す**
|
|
171
|
+
- **詳細設計は `src/` ミラーを優先する**
|
|
172
|
+
- **補助設計を置く場合も `maps_to` で対応先を残す**
|
|
173
|
+
- **`plugin-development` を最終形とみなさず、project 専用 skill の種として扱う**
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
---
|
|
2
|
+
spec_runner:
|
|
3
|
+
node_id: req.{project_slug}
|
|
4
|
+
kind: requirements
|
|
5
|
+
depends_on: []
|
|
6
|
+
maps_to: []
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# {プロジェクト名} 要件定義
|
|
10
|
+
|
|
11
|
+
## 背景・問題提起
|
|
12
|
+
|
|
13
|
+
### 解決すべき課題
|
|
14
|
+
|
|
15
|
+
**課題1: {課題名}**
|
|
16
|
+
|
|
17
|
+
- {問題の詳細}
|
|
18
|
+
- {現状の問題点}
|
|
19
|
+
- {影響範囲}
|
|
20
|
+
|
|
21
|
+
**課題2: {課題名}**
|
|
22
|
+
|
|
23
|
+
- {問題の詳細}
|
|
24
|
+
- {現状の問題点}
|
|
25
|
+
- {影響範囲}
|
|
26
|
+
|
|
27
|
+
## 提供価値
|
|
28
|
+
|
|
29
|
+
### 主要機能
|
|
30
|
+
|
|
31
|
+
1. **{機能名}**
|
|
32
|
+
- {機能の概要}
|
|
33
|
+
- {提供価値}
|
|
34
|
+
|
|
35
|
+
2. **{機能名}**
|
|
36
|
+
- {機能の概要}
|
|
37
|
+
- {提供価値}
|
|
38
|
+
|
|
39
|
+
### 対象ユーザー
|
|
40
|
+
|
|
41
|
+
- **{ユーザー種別}**: {ニーズ・利用シーン}
|
|
42
|
+
- **{ユーザー種別}**: {ニーズ・利用シーン}
|
|
43
|
+
|
|
44
|
+
## 非機能要件
|
|
45
|
+
|
|
46
|
+
### パフォーマンス
|
|
47
|
+
|
|
48
|
+
- {指標名}: {目標値}
|
|
49
|
+
- {指標名}: {目標値}
|
|
50
|
+
|
|
51
|
+
### スケーラビリティ
|
|
52
|
+
|
|
53
|
+
- {要件}
|
|
54
|
+
- {要件}
|
|
55
|
+
|
|
56
|
+
### セキュリティ
|
|
57
|
+
|
|
58
|
+
- {要件}
|
|
59
|
+
- {要件}
|
|
60
|
+
|
|
61
|
+
### 運用性
|
|
62
|
+
|
|
63
|
+
- {要件}
|
|
64
|
+
- {要件}
|
|
65
|
+
|
|
66
|
+
## スコープ外
|
|
67
|
+
|
|
68
|
+
### {機能カテゴリ}
|
|
69
|
+
|
|
70
|
+
- **理由**: {なぜ作らないか}
|
|
71
|
+
- **将来**: {いつ・どのように実装するか}
|
|
72
|
+
|
|
73
|
+
### {機能カテゴリ}
|
|
74
|
+
|
|
75
|
+
- **理由**: {なぜ作らないか}
|
|
76
|
+
- **将来**: {いつ・どのように実装するか}
|
|
77
|
+
|
|
78
|
+
## 制約・前提条件
|
|
79
|
+
|
|
80
|
+
### 技術制約
|
|
81
|
+
|
|
82
|
+
- {制約内容}
|
|
83
|
+
- {制約内容}
|
|
84
|
+
|
|
85
|
+
### ビジネス制約
|
|
86
|
+
|
|
87
|
+
- {制約内容}
|
|
88
|
+
- {制約内容}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
---
|
|
2
|
+
spec_runner:
|
|
3
|
+
node_id: adr.{decision_slug}
|
|
4
|
+
kind: adr
|
|
5
|
+
depends_on:
|
|
6
|
+
- overview.system_context
|
|
7
|
+
maps_to: []
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# ADR-0001 {決定内容のタイトル}
|
|
11
|
+
|
|
12
|
+
**ステータス**: 提案 / 採用 / 廃止 / 置換
|
|
13
|
+
**日付**: YYYY-MM-DD
|
|
14
|
+
**決定者**: {名前}
|
|
15
|
+
|
|
16
|
+
## コンテキスト
|
|
17
|
+
|
|
18
|
+
| 項目 | 内容 |
|
|
19
|
+
|------|------|
|
|
20
|
+
| 現在の状況 | {問題・課題} |
|
|
21
|
+
| 要件 | {実現する必要があること} |
|
|
22
|
+
| 制約 | {技術的・ビジネス的制約} |
|
|
23
|
+
|
|
24
|
+
## 選択肢
|
|
25
|
+
|
|
26
|
+
### 案1: {案1の名前}
|
|
27
|
+
|
|
28
|
+
- 概要: {何をするか}
|
|
29
|
+
- メリット:
|
|
30
|
+
- {メリット}
|
|
31
|
+
- デメリット:
|
|
32
|
+
- {デメリット}
|
|
33
|
+
- 適合性: {このプロジェクトにどう合うか}
|
|
34
|
+
|
|
35
|
+
### 案2: {案2の名前}
|
|
36
|
+
|
|
37
|
+
- 概要: {何をするか}
|
|
38
|
+
- メリット:
|
|
39
|
+
- {メリット}
|
|
40
|
+
- デメリット:
|
|
41
|
+
- {デメリット}
|
|
42
|
+
- 適合性: {このプロジェクトにどう合うか}
|
|
43
|
+
|
|
44
|
+
### 案3: {案3の名前}
|
|
45
|
+
|
|
46
|
+
- 概要: {何をするか}
|
|
47
|
+
- メリット:
|
|
48
|
+
- {メリット}
|
|
49
|
+
- デメリット:
|
|
50
|
+
- {デメリット}
|
|
51
|
+
- 適合性: {このプロジェクトにどう合うか}
|
|
52
|
+
|
|
53
|
+
## 決定
|
|
54
|
+
|
|
55
|
+
**採用案**: {案名}
|
|
56
|
+
|
|
57
|
+
### 採用理由
|
|
58
|
+
|
|
59
|
+
- {理由1}
|
|
60
|
+
- {理由2}
|
|
61
|
+
|
|
62
|
+
### 実装方針
|
|
63
|
+
|
|
64
|
+
1. {方針1}
|
|
65
|
+
2. {方針2}
|
|
66
|
+
3. {方針3}
|
|
67
|
+
|
|
68
|
+
## 影響
|
|
69
|
+
|
|
70
|
+
| カテゴリ | 項目 | 内容 |
|
|
71
|
+
|----------|------|------|
|
|
72
|
+
| システム | 新規追加 | {コンポーネント} |
|
|
73
|
+
| システム | 変更 | {コンポーネント} |
|
|
74
|
+
| パフォーマンス | 処理速度 | {変化} |
|
|
75
|
+
| コスト | 追加コスト | {影響} |
|
|
76
|
+
| 制約 | 将来課題 | {課題} |
|
|
77
|
+
|
|
78
|
+
### 反映が必要な文書
|
|
79
|
+
|
|
80
|
+
- `docs/02_概要設計/{対象文書}.md`
|
|
81
|
+
- `docs/03_詳細設計/src/{対象パス}.md`
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
---
|
|
2
|
+
spec_runner:
|
|
3
|
+
node_id: overview.system_context
|
|
4
|
+
kind: overview
|
|
5
|
+
depends_on:
|
|
6
|
+
- req.{project_slug}
|
|
7
|
+
- overview.usecases
|
|
8
|
+
maps_to: []
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# システム全体俯瞰
|
|
12
|
+
|
|
13
|
+
## 目的
|
|
14
|
+
|
|
15
|
+
{システムの目的と全体的なアーキテクチャを説明する}
|
|
16
|
+
|
|
17
|
+
## 全体像
|
|
18
|
+
|
|
19
|
+
```mermaid
|
|
20
|
+
graph TB
|
|
21
|
+
subgraph Input["入力"]
|
|
22
|
+
A["{入力1}"]
|
|
23
|
+
B["{入力2}"]
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
subgraph Core["主要コンポーネント"]
|
|
27
|
+
C["{コンポーネント1}"]
|
|
28
|
+
D["{コンポーネント2}"]
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
subgraph External["外部 IF"]
|
|
32
|
+
E["{外部IF1}"]
|
|
33
|
+
F["{外部IF2}"]
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
A --> C
|
|
37
|
+
B --> D
|
|
38
|
+
C --> E
|
|
39
|
+
D --> F
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## 主要コンポーネント
|
|
43
|
+
|
|
44
|
+
| コンポーネント | 責務 | 実現するユースケース | 主な依存 |
|
|
45
|
+
|---------------|------|-------------------|----------|
|
|
46
|
+
| **{コンポーネント名}** | {責務の説明} | {UC一覧} | {依存一覧} |
|
|
47
|
+
|
|
48
|
+
## ドメイン責務
|
|
49
|
+
|
|
50
|
+
| ドメイン | 責務 | 主要な入出力 | 境界の根拠 |
|
|
51
|
+
|---------|------|------------|-----------|
|
|
52
|
+
| **{ドメイン名}** | {責務} | {入出力} | {根拠} |
|
|
53
|
+
|
|
54
|
+
## 外部 IF / 連携先
|
|
55
|
+
|
|
56
|
+
| IF名 | 相手先 | 目的 | 入力 | 出力 |
|
|
57
|
+
|------|--------|------|------|------|
|
|
58
|
+
| **{IF名}** | {相手先} | {目的} | {入力} | {出力} |
|
|
59
|
+
|
|
60
|
+
## データフロー
|
|
61
|
+
|
|
62
|
+
```mermaid
|
|
63
|
+
sequenceDiagram
|
|
64
|
+
participant User as ユーザー
|
|
65
|
+
participant App as {主要コンポーネント}
|
|
66
|
+
participant Tool as {ツールまたは外部IF}
|
|
67
|
+
|
|
68
|
+
User->>App: {操作}
|
|
69
|
+
App->>Tool: {依頼}
|
|
70
|
+
Tool-->>App: {結果}
|
|
71
|
+
App-->>User: {応答}
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## 非機能・運用方針
|
|
75
|
+
|
|
76
|
+
| 項目 | 方針 | 根拠 |
|
|
77
|
+
|------|------|------|
|
|
78
|
+
| パフォーマンス | {方針} | {根拠} |
|
|
79
|
+
| セキュリティ | {方針} | {根拠} |
|
|
80
|
+
| 運用 | {方針} | {根拠} |
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
---
|
|
2
|
+
spec_runner:
|
|
3
|
+
node_id: overview.usecases
|
|
4
|
+
kind: overview
|
|
5
|
+
depends_on:
|
|
6
|
+
- req.{project_slug}
|
|
7
|
+
maps_to: []
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# ユースケース一覧
|
|
11
|
+
|
|
12
|
+
## ユースケースマップ
|
|
13
|
+
|
|
14
|
+
```mermaid
|
|
15
|
+
graph LR
|
|
16
|
+
subgraph Domain1["{Domain1}"]
|
|
17
|
+
D1Q1["UC-{日本語名1}"]
|
|
18
|
+
D1C1["UC-{日本語名2}"]
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
subgraph Domain2["{Domain2}"]
|
|
22
|
+
D2Q1["UC-{日本語名3}"]
|
|
23
|
+
D2C1["UC-{日本語名4}"]
|
|
24
|
+
end
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## {Domain1}
|
|
28
|
+
|
|
29
|
+
| ユースケース | 種別 | 概要 | アクター | 入力 | 出力 |
|
|
30
|
+
|------------|------|------|---------|------|------|
|
|
31
|
+
| **UC-{日本語名1}** | Query | {概要} | {アクター} | {入力} | {出力} |
|
|
32
|
+
| **UC-{日本語名2}** | Command | {概要} | {アクター} | {入力} | {出力} |
|
|
33
|
+
|
|
34
|
+
**特記事項**
|
|
35
|
+
|
|
36
|
+
- {前提条件}
|
|
37
|
+
- {例外条件}
|
|
38
|
+
|
|
39
|
+
## {Domain2}
|
|
40
|
+
|
|
41
|
+
| ユースケース | 種別 | 概要 | アクター | 入力 | 出力 |
|
|
42
|
+
|------------|------|------|---------|------|------|
|
|
43
|
+
| **UC-{日本語名3}** | Query | {概要} | {アクター} | {入力} | {出力} |
|
|
44
|
+
| **UC-{日本語名4}** | Command | {概要} | {アクター} | {入力} | {出力} |
|
|
45
|
+
|
|
46
|
+
**特記事項**
|
|
47
|
+
|
|
48
|
+
- {前提条件}
|
|
49
|
+
- {例外条件}
|
|
50
|
+
|
|
51
|
+
## ユースケース間の依存関係
|
|
52
|
+
|
|
53
|
+
```mermaid
|
|
54
|
+
graph TD
|
|
55
|
+
UC1["UC-{日本語名1}"] -->|"{関係}"| UC2["UC-{日本語名2}"]
|
|
56
|
+
UC2 -->|"{関係}"| UC3["UC-{日本語名3}"]
|
|
57
|
+
```
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
---
|
|
2
|
+
spec_runner:
|
|
3
|
+
node_id: detail.infrastructure.aws.{stack_slug}
|
|
4
|
+
kind: detailed_design
|
|
5
|
+
depends_on:
|
|
6
|
+
- overview.system_context
|
|
7
|
+
maps_to:
|
|
8
|
+
- infra/{iac_path}
|
|
9
|
+
- src/infrastructure/{component_path}.py
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# AWS構成: {サービス名・機能名}
|
|
13
|
+
|
|
14
|
+
## アーキテクチャ図
|
|
15
|
+
|
|
16
|
+
```mermaid
|
|
17
|
+
graph LR
|
|
18
|
+
User[ユーザー] --> API[API Gateway]
|
|
19
|
+
API --> Lambda[Lambda]
|
|
20
|
+
Lambda --> RDS[(RDS)]
|
|
21
|
+
Lambda --> S3[S3]
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## AWSサービス構成
|
|
25
|
+
|
|
26
|
+
| サービス | リソース名 | 用途 | 設定値 |
|
|
27
|
+
|----------|-----------|------|--------|
|
|
28
|
+
| Lambda | `{function-name}` | {用途} | メモリ: {MB}, タイムアウト: {秒} |
|
|
29
|
+
| RDS | `{db-instance}` | {用途} | インスタンス: {type}, ストレージ: {GB} |
|
|
30
|
+
| S3 | `{bucket-name}` | {用途} | バージョニング: {有無} |
|
|
31
|
+
|
|
32
|
+
## IAM / ネットワーク
|
|
33
|
+
|
|
34
|
+
| 項目 | 設定 |
|
|
35
|
+
|------|------|
|
|
36
|
+
| IAMロール | {role-name} |
|
|
37
|
+
| VPC | {vpc-id} |
|
|
38
|
+
| サブネット | {subnet-ids} |
|
|
39
|
+
| セキュリティグループ | {sg-id}: {ルール} |
|
|
40
|
+
|
|
41
|
+
## デプロイ構成
|
|
42
|
+
|
|
43
|
+
| 項目 | 設定 |
|
|
44
|
+
|------|------|
|
|
45
|
+
| デプロイ方法 | {CDK / Terraform / CloudFormation} |
|
|
46
|
+
| デプロイ単位 | {スタック名} |
|
|
47
|
+
| 環境 | {dev / staging / production} |
|
|
48
|
+
|
|
49
|
+
## 監視・アラート
|
|
50
|
+
|
|
51
|
+
| 監視項目 | 閾値 | 通知先 |
|
|
52
|
+
|----------|------|--------|
|
|
53
|
+
| {メトリクス名} | {閾値} | {通知先} |
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
---
|
|
2
|
+
spec_runner:
|
|
3
|
+
node_id: detail.infrastructure.database
|
|
4
|
+
kind: detailed_design
|
|
5
|
+
depends_on:
|
|
6
|
+
- overview.system_context
|
|
7
|
+
maps_to:
|
|
8
|
+
- src/infrastructure/{component_path}.py
|
|
9
|
+
- migrations/{migration_file}.sql
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# データベース設計: {テーブル名・スキーマ名}
|
|
13
|
+
|
|
14
|
+
## スキーマ定義
|
|
15
|
+
|
|
16
|
+
**DBMLファイル**: `schema.dbml`
|
|
17
|
+
|
|
18
|
+
## テーブル設計方針
|
|
19
|
+
|
|
20
|
+
### {table_name}
|
|
21
|
+
|
|
22
|
+
**責務**: {このテーブルが担う役割}
|
|
23
|
+
|
|
24
|
+
**インデックス設計**
|
|
25
|
+
|
|
26
|
+
- `idx_{table}_{column}`: {理由}
|
|
27
|
+
- `idx_{table}_{column}`: {理由}
|
|
28
|
+
|
|
29
|
+
## アクセスパターン
|
|
30
|
+
|
|
31
|
+
| 操作 | クエリ | 頻度 | 使用インデックス |
|
|
32
|
+
|------|--------|------|----------------|
|
|
33
|
+
| {操作名} | `SELECT ...` | {高/中/低} | `idx_{table}_{column}` |
|
|
34
|
+
| {操作名} | `INSERT ...` | {高/中/低} | - |
|
|
35
|
+
|
|
36
|
+
## パフォーマンス考慮事項
|
|
37
|
+
|
|
38
|
+
- 想定データ量: {件数}
|
|
39
|
+
- 増加率: {増加件数}
|
|
40
|
+
- アーカイブ戦略: {方針}
|
|
41
|
+
|
|
42
|
+
## データ整合性
|
|
43
|
+
|
|
44
|
+
| 項目 | 方法 |
|
|
45
|
+
|------|------|
|
|
46
|
+
| トランザクション分離レベル | {READ COMMITTED / REPEATABLE READ} |
|
|
47
|
+
| 楽観的ロック | {使用有無・方法} |
|
|
48
|
+
| 悲観的ロック | {使用有無・方法} |
|
|
49
|
+
|
|
50
|
+
## テスト観点
|
|
51
|
+
|
|
52
|
+
- 主要クエリの成立
|
|
53
|
+
- インデックス前提の検索
|
|
54
|
+
- マイグレーション後方互換
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// maps_to:
|
|
2
|
+
// - migrations/{migration_file}.sql
|
|
3
|
+
// - src/infrastructure/{component_path}.py
|
|
4
|
+
|
|
5
|
+
Table {table_name} {
|
|
6
|
+
id varchar(26) [pk, note: "ULID"]
|
|
7
|
+
{field_name} varchar(255) [not null, note: "{説明}"]
|
|
8
|
+
created_at timestamptz [not null, default: `now()`]
|
|
9
|
+
updated_at timestamptz [not null, default: `now()`]
|
|
10
|
+
|
|
11
|
+
indexes {
|
|
12
|
+
{field_name} [name: "idx_{table_name}_{field_name}"]
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
Note: "{テーブルの説明}"
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
Table {child_table_name} {
|
|
19
|
+
id varchar(26) [pk, note: "ULID"]
|
|
20
|
+
{table_name}_id varchar(26) [not null, note: "FK to {table_name}"]
|
|
21
|
+
{field_name} text [null, note: "{説明}"]
|
|
22
|
+
created_at timestamptz [not null, default: `now()`]
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
Ref: {child_table_name}.{table_name}_id > {table_name}.id [delete: cascade]
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
spec_runner:
|
|
3
|
+
node_id: detail.infrastructure.sequence.{sequence_slug}
|
|
4
|
+
kind: detailed_design
|
|
5
|
+
depends_on:
|
|
6
|
+
- overview.system_context
|
|
7
|
+
maps_to:
|
|
8
|
+
- src/{related_path}
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# {シーケンス名}
|
|
12
|
+
|
|
13
|
+
```mermaid
|
|
14
|
+
sequenceDiagram
|
|
15
|
+
participant U as ユーザー
|
|
16
|
+
participant A as {参加者A}
|
|
17
|
+
participant B as {参加者B}
|
|
18
|
+
|
|
19
|
+
U->>A: {操作}
|
|
20
|
+
A->>B: {依頼}
|
|
21
|
+
B-->>A: {結果}
|
|
22
|
+
A-->>U: {応答}
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## 補足
|
|
26
|
+
|
|
27
|
+
- 対象ユースケース: {UC}
|
|
28
|
+
- 例外分岐: {分岐}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
---
|
|
2
|
+
spec_runner:
|
|
3
|
+
node_id: detail.src.agents.{agent_name}.agent
|
|
4
|
+
kind: detailed_design
|
|
5
|
+
depends_on:
|
|
6
|
+
- overview.system_context
|
|
7
|
+
- use_case.{use_case_slug}
|
|
8
|
+
maps_to:
|
|
9
|
+
- src/agents/{agent_name}/agent.py
|
|
10
|
+
- tests/agents/{agent_name}/test_agent.py
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# `src/agents/{agent_name}/agent.py` 詳細設計
|
|
14
|
+
|
|
15
|
+
## 責務
|
|
16
|
+
|
|
17
|
+
- {このモジュールが果たす役割}
|
|
18
|
+
- 実現するユースケース: {UC一覧}
|
|
19
|
+
- 呼び出す依存: {依存一覧}
|
|
20
|
+
|
|
21
|
+
## 入力と出力
|
|
22
|
+
|
|
23
|
+
| 種別 | 名前 | 型 | 説明 |
|
|
24
|
+
|------|------|----|------|
|
|
25
|
+
| 入力 | {入力名} | {型} | {説明} |
|
|
26
|
+
| 出力 | {出力名} | {型} | {説明} |
|
|
27
|
+
|
|
28
|
+
## 主要フロー
|
|
29
|
+
|
|
30
|
+
1. {ステップ1}
|
|
31
|
+
2. {ステップ2}
|
|
32
|
+
3. {ステップ3}
|
|
33
|
+
|
|
34
|
+
## 判断条件
|
|
35
|
+
|
|
36
|
+
| 判断ポイント | 条件 | アクション |
|
|
37
|
+
|------------|------|----------|
|
|
38
|
+
| **{判断ポイント}** | {条件} | {アクション} |
|
|
39
|
+
|
|
40
|
+
## エラーハンドリング
|
|
41
|
+
|
|
42
|
+
| エラーケース | 検知方法 | 対応方法 |
|
|
43
|
+
|------------|---------|---------|
|
|
44
|
+
| **{エラーケース}** | {検知方法} | {対応方法} |
|
|
45
|
+
|
|
46
|
+
## 依存モジュール
|
|
47
|
+
|
|
48
|
+
| 依存 | 目的 | 呼び出しタイミング |
|
|
49
|
+
|------|------|----------------|
|
|
50
|
+
| **{依存モジュール}** | {目的} | {タイミング} |
|
|
51
|
+
|
|
52
|
+
## テスト観点
|
|
53
|
+
|
|
54
|
+
- {正常系の観点}
|
|
55
|
+
- {異常系の観点}
|
|
56
|
+
- {境界条件の観点}
|