yodogawa 2.0.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +39 -0
- package/README.md +60 -22
- package/bin/cli.js +3 -7
- package/package.json +1 -1
- package/skills/a-001-setup-doc-structure/SKILL.md +67 -100
- package/skills/a-001-setup-doc-structure/reference/directory-structure.md +52 -0
- package/skills/a-002-initialize-project/SKILL.md +124 -289
- package/skills/a-002-initialize-project/examples/nfr-baseline.md +38 -0
- package/skills/a-002-initialize-project/reference/hearing-questions.md +92 -0
- package/skills/a-002-initialize-project/reference/structure-check.md +48 -0
- package/skills/a-003-create-scenarios/SKILL.md +99 -142
- package/skills/a-003-create-scenarios/examples/gherkin-templates.md +71 -0
- package/skills/a-003-create-scenarios/reference/structure-check.md +46 -0
- package/skills/a-004-define-domain-model/SKILL.md +99 -144
- package/skills/a-004-define-domain-model/reference/event-storming-guide.md +71 -0
- package/skills/a-005-create-domain-diagram/SKILL.md +94 -120
- package/skills/a-005-create-domain-diagram/examples/mermaid-templates.md +73 -0
- package/skills/a-005-create-domain-diagram/reference/structure-check.md +43 -0
- package/skills/a-006-review-requirements-domain/SKILL.md +85 -144
- package/skills/a-006-review-requirements-domain/examples/review-report-template.md +58 -0
- package/skills/a-006-review-requirements-domain/reference/consistency-checks.md +60 -0
- package/skills/a-007-define-tech-stack/SKILL.md +102 -130
- package/skills/a-007-define-tech-stack/examples/stack-interview.md +83 -0
- package/skills/a-007-define-tech-stack/reference/structure-check.md +51 -0
- package/skills/a-008-define-repository-structure/SKILL.md +99 -129
- package/skills/a-008-define-repository-structure/examples/structure-templates.md +108 -0
- package/skills/a-008-define-repository-structure/reference/structure-check.md +55 -0
- package/skills/a-009-define-screen-design/SKILL.md +106 -130
- package/skills/a-009-define-screen-design/examples/screen-templates.md +66 -0
- package/skills/a-009-define-screen-design/reference/structure-check.md +47 -0
- package/skills/a-010-define-design-system/SKILL.md +134 -212
- package/skills/a-010-define-design-system/examples/css-tokens.md +71 -0
- package/skills/a-010-define-design-system/reference/component-catalog.md +44 -0
- package/skills/a-011-define-data-model/SKILL.md +121 -134
- package/skills/a-011-define-data-model/examples/erd-templates.md +108 -0
- package/skills/a-011-define-data-model/reference/structure-check.md +56 -0
- package/skills/a-012-define-api-spec/SKILL.md +108 -132
- package/skills/a-012-define-api-spec/examples/api-templates.md +117 -0
- package/skills/a-012-define-api-spec/reference/structure-check.md +49 -0
- package/skills/a-013-define-architecture/SKILL.md +101 -128
- package/skills/a-013-define-architecture/examples/architecture-templates.md +98 -0
- package/skills/a-013-define-architecture/reference/structure-check.md +53 -0
- package/skills/a-014-define-infrastructure/SKILL.md +113 -130
- package/skills/a-014-define-infrastructure/examples/infrastructure-templates.md +97 -0
- package/skills/a-014-define-infrastructure/reference/structure-check.md +63 -0
- package/skills/a-015-review-design/SKILL.md +88 -140
- package/skills/a-015-review-design/examples/review-report-template.md +59 -0
- package/skills/a-015-review-design/reference/consistency-checks.md +47 -0
- package/skills/b-001-create-task-directory/SKILL.md +68 -78
- package/skills/b-001-create-task-directory/examples/naming-convention.md +39 -0
- package/skills/b-002-create-task-definition/SKILL.md +115 -172
- package/skills/b-002-create-task-definition/examples/hearing-and-criteria.md +49 -0
- package/skills/b-002-create-task-definition/reference/structure-check.md +42 -0
- package/skills/b-003-create-task-research/SKILL.md +130 -454
- package/skills/b-003-create-task-research/examples/research-tables.md +63 -0
- package/skills/b-003-create-task-research/reference/investigation-guide.md +106 -0
- package/skills/b-004-create-task-implementation/SKILL.md +97 -100
- package/skills/b-004-create-task-implementation/examples/phase-step-template.md +57 -0
- package/skills/b-004-create-task-implementation/reference/structure-check.md +34 -0
- package/skills/b-005-review-task/SKILL.md +117 -324
- package/skills/b-005-review-task/examples/review-report-template.md +62 -0
- package/skills/b-005-review-task/reference/assessment-criteria.md +79 -0
- package/skills/b-005-review-task/reference/consistency-checks.md +69 -0
- package/skills/c-001-implement-task/SKILL.md +186 -521
- package/skills/c-001-implement-task/examples/commit-and-pr.md +92 -0
- package/skills/c-001-implement-task/examples/task-list-format.md +50 -0
- package/skills/c-001-implement-task/reference/implementation-loop.md +65 -0
- package/skills/c-001-implement-task/reference/validation-loop.md +66 -0
- package/skills/c-002-update-documentation/SKILL.md +159 -853
- package/skills/c-002-update-documentation/examples/project-doc-updates.md +190 -0
- package/skills/c-002-update-documentation/examples/task-doc-updates.md +102 -0
- package/skills/c-002-update-documentation/reference/doc-structure-and-checks.md +100 -0
- package/templates/tasks/task-template/a-definition.md +1 -1
- package/templates/tasks/task-template/b-research.md +1 -1
- package/templates/tasks/task-template/c-implementation.md +2 -2
|
@@ -1,132 +1,108 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: a-012-define-api-spec
|
|
3
|
-
description: データモデルと画面設計からAPI
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
- `docs/project/design/
|
|
21
|
-
- `docs/project/design
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
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
|
-
#### 4.
|
|
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
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
-
|
|
103
|
-
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
- 推奨コミットメッセージ:
|
|
111
|
-
|
|
112
|
-
```
|
|
113
|
-
docs: API仕様(基本設計)の作成
|
|
114
|
-
|
|
115
|
-
- 認証・認可方式の定義
|
|
116
|
-
- エンドポイント一覧と共通レスポンス形式を定義
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
## 完了条件
|
|
120
|
-
|
|
121
|
-
- `docs/project/design/06-api-spec.md` が作成されている。
|
|
122
|
-
- 認証・認可の仕組みが定義されている。
|
|
123
|
-
- エンドポイント一覧(メソッド、パス、認証要否)が定義されている。
|
|
124
|
-
- 共通レスポンス形式(成功/エラー)が定義されている。
|
|
125
|
-
- ユーザーが内容を承認している。
|
|
126
|
-
|
|
127
|
-
## エスカレーション
|
|
128
|
-
|
|
129
|
-
- APIスタイル(REST/GraphQL)が未定の場合:
|
|
130
|
-
- 「APIスタイルが未定です。`DefineTechStack` (a-007) に戻って選定してください。」
|
|
131
|
-
- データモデルとの不整合がある場合:
|
|
132
|
-
- 「データモデルに存在しないリソースのエンドポイントが要求されています。データモデルを見直すか、APIだけの概念として定義するか確認してください。」
|
|
1
|
+
---
|
|
2
|
+
name: a-012-define-api-spec
|
|
3
|
+
description: データモデルと画面設計から API 仕様(認証方式・エンドポイント一覧・共通レスポンス形式)を定義する。データモデル確定後、フロント/バック間のインターフェースを固める際に使用。
|
|
4
|
+
disable-model-invocation: true
|
|
5
|
+
allowed-tools: Read, Write, Edit, Bash, Grep, Glob
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# DefineAPISpec (a-012)
|
|
9
|
+
|
|
10
|
+
## 目的
|
|
11
|
+
|
|
12
|
+
- データモデルと画面設計を基に、API 仕様の基本設計を定義する。
|
|
13
|
+
- API 設計スタイル(REST、GraphQL、gRPC、tRPC)を決定する。
|
|
14
|
+
- 認証・認可方式を明確化する。
|
|
15
|
+
- エンドポイント一覧(メソッド、パス、説明、認証要否)を定義する。
|
|
16
|
+
- 共通レスポンス形式(成功/エラー)を定義する。
|
|
17
|
+
|
|
18
|
+
## 前提
|
|
19
|
+
|
|
20
|
+
- `docs/project/design/01-tech-stack.md` が作成されていること(API スタイル選定済み)。
|
|
21
|
+
- `docs/project/design/05-data-model.md` が作成されていること。
|
|
22
|
+
- `docs/project/design/03-screen-design.md` が作成されていること。
|
|
23
|
+
- `docs/project/design/` ディレクトリが存在すること。
|
|
24
|
+
|
|
25
|
+
## 手順
|
|
26
|
+
|
|
27
|
+
### 1. ドキュメントと前提条件の確認
|
|
28
|
+
|
|
29
|
+
以下を読み込む:
|
|
30
|
+
|
|
31
|
+
- `docs/project/design/01-tech-stack.md`
|
|
32
|
+
- `docs/project/design/05-data-model.md`
|
|
33
|
+
- `docs/project/design/03-screen-design.md`
|
|
34
|
+
|
|
35
|
+
不足があれば対応スキルの実行を促す。
|
|
36
|
+
|
|
37
|
+
### 2. テンプレートの準備
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
SCRIPT_DIR=$(for d in .agent .cursor .claude .codex; do [ -d "$d" ] && echo "$d" && break; done)
|
|
41
|
+
cp "$SCRIPT_DIR/templates/project/04-design/06-api-spec.md" "docs/project/design/06-api-spec.md"
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### 3. API スタイルの確認と提案
|
|
45
|
+
|
|
46
|
+
技術スタックで選定された API スタイル(REST, GraphQL 等)を確認し、データモデルと画面設計から必要なリソースと操作を抽出する。スタイル別の特徴は [examples/api-templates.md](examples/api-templates.md#api-スタイル別の特徴) を参照。
|
|
47
|
+
|
|
48
|
+
- 「Users: 一覧, 詳細, 作成, 更新, 削除」
|
|
49
|
+
- 「Auth: ログイン, 登録, リフレッシュ」
|
|
50
|
+
|
|
51
|
+
### 4. 詳細定義(インタビュー)
|
|
52
|
+
|
|
53
|
+
#### 4.1 認証・認可
|
|
54
|
+
|
|
55
|
+
認証方式(JWT / OAuth 等)、トークンの保存先(Cookie vs Header)、ロール・スコープ定義。テンプレートは [examples/api-templates.md](examples/api-templates.md#認証認可仕様のテンプレート) を参照。
|
|
56
|
+
|
|
57
|
+
#### 4.2 エンドポイント詳細
|
|
58
|
+
|
|
59
|
+
各リソースのパス設計(RESTful 原則)、認証の要否、特殊アクション(`/cancel`, `/publish` 等)。一覧テーブルとパス設計原則は [examples/api-templates.md](examples/api-templates.md#エンドポイント一覧テーブル) を参照。
|
|
60
|
+
|
|
61
|
+
#### 4.3 共通レスポンス形式
|
|
62
|
+
|
|
63
|
+
成功・エラー構造、ページネーション、エラーコード体系。JSON サンプルは [examples/api-templates.md](examples/api-templates.md#共通レスポンス形式) を参照。
|
|
64
|
+
|
|
65
|
+
### 5. ドキュメント作成
|
|
66
|
+
|
|
67
|
+
`docs/project/design/06-api-spec.md` に以下を記入する:
|
|
68
|
+
|
|
69
|
+
- 認証・認可仕様
|
|
70
|
+
- エンドポイント一覧(リソース別)
|
|
71
|
+
- 共通レスポンス形式
|
|
72
|
+
- エラーコード体系
|
|
73
|
+
|
|
74
|
+
### 6. 構造チェック
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
grep "## 認証・認可" docs/project/design/06-api-spec.md \
|
|
78
|
+
&& grep "## エンドポイント一覧" docs/project/design/06-api-spec.md \
|
|
79
|
+
&& grep "## 共通レスポンス形式" docs/project/design/06-api-spec.md \
|
|
80
|
+
&& echo "OK" || echo "MISSING SECTION"
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
詳細チェックリストは [reference/structure-check.md](reference/structure-check.md#チェックリスト) を参照。
|
|
84
|
+
|
|
85
|
+
### 7. Git への追加(任意)
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
git add docs/project/design/06-api-spec.md
|
|
89
|
+
git commit -m "docs: API 仕様(基本設計)の作成"
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## 完了条件
|
|
93
|
+
|
|
94
|
+
- `docs/project/design/06-api-spec.md` が作成されている。
|
|
95
|
+
- 認証・認可の仕組みが定義されている。
|
|
96
|
+
- エンドポイント一覧(メソッド、パス、認証要否)が定義されている。
|
|
97
|
+
- 共通レスポンス形式(成功/エラー)が定義されている。
|
|
98
|
+
- ユーザーが内容を承認している。
|
|
99
|
+
|
|
100
|
+
## エスカレーション
|
|
101
|
+
|
|
102
|
+
- **API スタイルが未定**: 「`/a-007-define-tech-stack` に戻って選定してください。」
|
|
103
|
+
- **データモデルとの不整合**: 「データモデルに存在しないリソースのエンドポイントが要求されています。データモデルを見直すか、API だけの概念として定義するか確認してください。」
|
|
104
|
+
|
|
105
|
+
## 参考
|
|
106
|
+
|
|
107
|
+
- [examples/api-templates.md](examples/api-templates.md) — API スタイル比較、認証・認可テンプレート、エンドポイント一覧、共通レスポンス、エラーコード体系
|
|
108
|
+
- [reference/structure-check.md](reference/structure-check.md) — 構造確認コマンド、チェックリスト、レビュー質問、Git 追加例
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
# API 仕様のテンプレート
|
|
2
|
+
|
|
3
|
+
SKILL.md 手順3〜5 で使用するエンドポイント・認証・共通レスポンスのサンプル。
|
|
4
|
+
|
|
5
|
+
## API スタイル別の特徴
|
|
6
|
+
|
|
7
|
+
| スタイル | 特徴 | 適合シーン |
|
|
8
|
+
|:--|:--|:--|
|
|
9
|
+
| REST | シンプル、キャッシュ活用、HTTP 標準 | CRUD 中心の Web/モバイル API |
|
|
10
|
+
| GraphQL | クライアント駆動、過剰取得回避 | 複雑な集約、多様なクライアント |
|
|
11
|
+
| gRPC | 高速、強い型、ストリーム | 内部 Microservice 通信 |
|
|
12
|
+
| tRPC | TS で型共有、開発高速 | TypeScript フルスタック |
|
|
13
|
+
|
|
14
|
+
## 認証・認可仕様のテンプレート
|
|
15
|
+
|
|
16
|
+
```markdown
|
|
17
|
+
### 認証方式
|
|
18
|
+
|
|
19
|
+
- プロトコル: JWT(HS256)
|
|
20
|
+
- トークン種別: Access Token(15 分)+ Refresh Token(14 日)
|
|
21
|
+
- 保存先: Access = Memory, Refresh = HttpOnly Secure Cookie
|
|
22
|
+
- ログインエンドポイント: `POST /api/auth/login`
|
|
23
|
+
- リフレッシュ: `POST /api/auth/refresh`
|
|
24
|
+
|
|
25
|
+
### 認可
|
|
26
|
+
|
|
27
|
+
- ロール: `admin`, `staff`, `user`
|
|
28
|
+
- スコープ: `orders:read`, `orders:write`, `users:admin`
|
|
29
|
+
- Guard 方針: ロール + 所有者確認(例: `/orders/:id` は本人 or admin のみ)
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## エンドポイント一覧テーブル
|
|
33
|
+
|
|
34
|
+
| メソッド | パス | 説明 | 認証 | 認可 |
|
|
35
|
+
|:--|:--|:--|:--|:--|
|
|
36
|
+
| POST | `/api/auth/login` | ログイン | 不要 | - |
|
|
37
|
+
| POST | `/api/auth/refresh` | トークン更新 | Refresh | - |
|
|
38
|
+
| POST | `/api/auth/logout` | ログアウト | Access | - |
|
|
39
|
+
| GET | `/api/users/me` | 自身のプロフィール取得 | Access | user |
|
|
40
|
+
| GET | `/api/users` | ユーザー一覧 | Access | admin |
|
|
41
|
+
| GET | `/api/orders` | 注文一覧 | Access | user(自分の注文) |
|
|
42
|
+
| POST | `/api/orders` | 注文作成 | Access | user |
|
|
43
|
+
| GET | `/api/orders/:id` | 注文詳細 | Access | 本人 or admin |
|
|
44
|
+
| POST | `/api/orders/:id/cancel` | 注文取消 | Access | 本人 or admin |
|
|
45
|
+
|
|
46
|
+
### RESTful パス設計の原則
|
|
47
|
+
|
|
48
|
+
- リソースは複数形の名詞(`/users`, `/orders`)
|
|
49
|
+
- 動作は HTTP メソッドで表現(GET / POST / PATCH / DELETE)
|
|
50
|
+
- 動詞が必要な特殊アクションは `/resource/:id/action` 形式(`/orders/:id/cancel`)
|
|
51
|
+
|
|
52
|
+
## 共通レスポンス形式
|
|
53
|
+
|
|
54
|
+
### 成功レスポンス
|
|
55
|
+
|
|
56
|
+
```json
|
|
57
|
+
{
|
|
58
|
+
"data": {
|
|
59
|
+
"id": "ord_01HXXXXX",
|
|
60
|
+
"status": "confirmed",
|
|
61
|
+
"total": 12800
|
|
62
|
+
},
|
|
63
|
+
"meta": {
|
|
64
|
+
"requestId": "req_01HXXXXX"
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### エラーレスポンス
|
|
70
|
+
|
|
71
|
+
```json
|
|
72
|
+
{
|
|
73
|
+
"error": {
|
|
74
|
+
"code": "VALIDATION_ERROR",
|
|
75
|
+
"message": "入力値に誤りがあります",
|
|
76
|
+
"details": [
|
|
77
|
+
{ "field": "email", "message": "メール形式が不正です" }
|
|
78
|
+
]
|
|
79
|
+
},
|
|
80
|
+
"meta": {
|
|
81
|
+
"requestId": "req_01HXXXXX"
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### ページネーション(Cursor 方式)
|
|
87
|
+
|
|
88
|
+
```json
|
|
89
|
+
{
|
|
90
|
+
"data": [ { "id": "ord_01" }, { "id": "ord_02" } ],
|
|
91
|
+
"pageInfo": {
|
|
92
|
+
"hasNextPage": true,
|
|
93
|
+
"endCursor": "eyJpZCI6Im9yZF8wMiJ9"
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## エラーコード体系の例
|
|
99
|
+
|
|
100
|
+
| HTTP | code | 用途 |
|
|
101
|
+
|:--|:--|:--|
|
|
102
|
+
| 400 | VALIDATION_ERROR | 入力値不正 |
|
|
103
|
+
| 401 | UNAUTHENTICATED | 未認証 |
|
|
104
|
+
| 403 | FORBIDDEN | 権限不足 |
|
|
105
|
+
| 404 | NOT_FOUND | リソース未存在 |
|
|
106
|
+
| 409 | CONFLICT | 競合(重複登録等) |
|
|
107
|
+
| 429 | RATE_LIMITED | レート制限 |
|
|
108
|
+
| 500 | INTERNAL_ERROR | サーバー内部エラー |
|
|
109
|
+
|
|
110
|
+
## コミットメッセージ例
|
|
111
|
+
|
|
112
|
+
```text
|
|
113
|
+
docs: API 仕様(基本設計)の作成
|
|
114
|
+
|
|
115
|
+
- 認証・認可方式の定義
|
|
116
|
+
- エンドポイント一覧と共通レスポンス形式を定義
|
|
117
|
+
```
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# 構造チェックとレビュー観点
|
|
2
|
+
|
|
3
|
+
SKILL.md 手順6〜7 で使う確認コマンドとレビュー観点。
|
|
4
|
+
|
|
5
|
+
## セクション存在確認
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
# 認証セクションの確認
|
|
9
|
+
grep "## 認証・認可" docs/project/design/06-api-spec.md && echo "OK" || echo "MISSING: Auth section"
|
|
10
|
+
# エンドポイント一覧の確認
|
|
11
|
+
grep "## エンドポイント一覧" docs/project/design/06-api-spec.md && echo "OK" || echo "MISSING: Endpoints"
|
|
12
|
+
# レスポンス形式の確認
|
|
13
|
+
grep "## 共通レスポンス形式" docs/project/design/06-api-spec.md && echo "OK" || echo "MISSING: Response format"
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## チェックリスト
|
|
17
|
+
|
|
18
|
+
- [ ] `docs/project/design/06-api-spec.md` が作成されている
|
|
19
|
+
- [ ] 認証方式(JWT / OAuth 等)が明確に定義されている
|
|
20
|
+
- [ ] トークンの保存先(Cookie / Header)が決まっている
|
|
21
|
+
- [ ] ロール・スコープが定義されている
|
|
22
|
+
- [ ] 主要リソースの CRUD エンドポイントが網羅されている
|
|
23
|
+
- [ ] 特殊アクション(cancel, publish 等)が適切な命名で定義されている
|
|
24
|
+
- [ ] 成功時・エラー時の共通レスポンス形式が定義されている
|
|
25
|
+
- [ ] ページネーション方式(Offset / Cursor)が決まっている
|
|
26
|
+
- [ ] エラーコード体系が定義されている
|
|
27
|
+
|
|
28
|
+
## レビュー確認質問
|
|
29
|
+
|
|
30
|
+
- 「データモデルのエンティティすべてに必要な API が揃っていますか?」
|
|
31
|
+
- 「画面設計で必要なデータ取得に対応するエンドポイントはありますか?」
|
|
32
|
+
- 「認証・認可のフローにセキュリティリスクはありませんか?」
|
|
33
|
+
- 「エラー応答のフォーマットはクライアントで扱いやすいですか?」
|
|
34
|
+
|
|
35
|
+
## Git への追加(任意)
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
git add docs/project/design/06-api-spec.md
|
|
39
|
+
git status
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
推奨コミットメッセージ:
|
|
43
|
+
|
|
44
|
+
```text
|
|
45
|
+
docs: API 仕様(基本設計)の作成
|
|
46
|
+
|
|
47
|
+
- 認証・認可方式の定義
|
|
48
|
+
- エンドポイント一覧と共通レスポンス形式を定義
|
|
49
|
+
```
|
|
@@ -1,128 +1,101 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: a-013-define-architecture
|
|
3
|
-
description:
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
-
|
|
20
|
-
- `docs/project/design/
|
|
21
|
-
- `docs/project/design
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
#### 4.
|
|
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
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
-
|
|
101
|
-
|
|
102
|
-
```bash
|
|
103
|
-
git add docs/project/design/07-architecture.md
|
|
104
|
-
git status
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
- 推奨コミットメッセージ:
|
|
108
|
-
|
|
109
|
-
```
|
|
110
|
-
docs: アーキテクチャ設計の定義
|
|
111
|
-
|
|
112
|
-
- システム全体図(Mermaid)の作成
|
|
113
|
-
- アーキテクチャパターンとADRの記録
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
## 完了条件
|
|
117
|
-
|
|
118
|
-
- `docs/project/design/07-architecture.md` が作成されている。
|
|
119
|
-
- システム全体の構成要素と関係性が可視化されている。
|
|
120
|
-
- 技術選定の背景(ADR)が文書化され、将来の参照用に残されている。
|
|
121
|
-
- ユーザーが内容を承認している。
|
|
122
|
-
|
|
123
|
-
## エスカレーション
|
|
124
|
-
|
|
125
|
-
- アーキテクチャが複雑すぎる場合:
|
|
126
|
-
- 「コンポーネント数が多すぎます。概要図と詳細図に分割するか、主要なフローに絞って図示することを検討しましょう。」と提案する。
|
|
127
|
-
- 決定理由が不明確な場合:
|
|
128
|
-
- 「[技術名]の選定理由が曖昧です。後で振り返れるよう、比較検討した代替案も含めてADRに記録しましょう。」と促す。
|
|
1
|
+
---
|
|
2
|
+
name: a-013-define-architecture
|
|
3
|
+
description: 技術スタック・リポジトリ構造・データモデル・API 仕様を統合し、システムアーキテクチャと ADR を定義する。各設計ドキュメント確定後、全体像と意思決定を文書化する際に使用。
|
|
4
|
+
disable-model-invocation: true
|
|
5
|
+
allowed-tools: Read, Write, Edit, Bash, Grep, Glob
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# DefineArchitecture (a-013)
|
|
9
|
+
|
|
10
|
+
## 目的
|
|
11
|
+
|
|
12
|
+
- これまでに定義された設計(技術スタック、リポジトリ構造、データモデル、API 仕様)を統合する。
|
|
13
|
+
- システム全体の構造を Mermaid 図で視覚化する。
|
|
14
|
+
- 採用したアーキテクチャパターン(レイヤード、クリーンアーキテクチャなど)を明確化する。
|
|
15
|
+
- 重要なアーキテクチャ決定(ADR: Architecture Decision Record)を記録する。
|
|
16
|
+
|
|
17
|
+
## 前提
|
|
18
|
+
|
|
19
|
+
- 以下が作成されていること:
|
|
20
|
+
- `docs/project/design/01-tech-stack.md`
|
|
21
|
+
- `docs/project/design/02-repository-structure.md`
|
|
22
|
+
- `docs/project/design/05-data-model.md`
|
|
23
|
+
- `docs/project/design/06-api-spec.md`
|
|
24
|
+
- `docs/project/design/` ディレクトリが存在すること。
|
|
25
|
+
|
|
26
|
+
## 手順
|
|
27
|
+
|
|
28
|
+
### 1. ドキュメントと前提条件の確認
|
|
29
|
+
|
|
30
|
+
上記 4 ドキュメントを読み込む。不足があれば対応スキル(`/a-007`, `/a-008`, `/a-011`, `/a-012`)の実行を促す。
|
|
31
|
+
|
|
32
|
+
### 2. テンプレートの準備
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
SCRIPT_DIR=$(for d in .agent .cursor .claude .codex; do [ -d "$d" ] && echo "$d" && break; done)
|
|
36
|
+
cp "$SCRIPT_DIR/templates/project/04-design/07-architecture.md" "docs/project/design/07-architecture.md"
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### 3. アーキテクチャの提案
|
|
40
|
+
|
|
41
|
+
技術スタックとリポジトリ構造からシステムの主要コンポーネント(クライアント、API、DB、外部サービス)を抽出し、全体図の構成案を提示する。
|
|
42
|
+
|
|
43
|
+
- 「[Web] -> [API Server] -> [DB]」
|
|
44
|
+
- 「[API Server] -> [External Service]」
|
|
45
|
+
|
|
46
|
+
### 4. 詳細定義(インタビュー)
|
|
47
|
+
|
|
48
|
+
#### 4.1 システムアーキテクチャ図
|
|
49
|
+
|
|
50
|
+
コンポーネント間の接続、プロトコル(HTTP/gRPC)、データフロー、スケーラビリティ構成(LB、Replica)を Mermaid 図で表現する。記述例は [examples/architecture-templates.md](examples/architecture-templates.md#システムアーキテクチャ図mermaid) を参照。
|
|
51
|
+
|
|
52
|
+
#### 4.2 アーキテクチャパターン
|
|
53
|
+
|
|
54
|
+
採用パターン(レイヤード、クリーン、マイクロサービス等)と選定理由を明確にする。選定ガイドは [examples/architecture-templates.md](examples/architecture-templates.md#アーキテクチャパターン選定ガイド) を参照。
|
|
55
|
+
|
|
56
|
+
#### 4.3 ADR (Architecture Decision Records)
|
|
57
|
+
|
|
58
|
+
重要な技術的決定(DB 選定、認証方式、フレームワーク選定など)を背景・代替案・決定理由・影響の形で記録する。テンプレートは [examples/architecture-templates.md](examples/architecture-templates.md#adrarchitecture-decision-recordテンプレート) を参照。ADR 記録の基準は [reference/structure-check.md](reference/structure-check.md#adr-記録の基準) を参照。
|
|
59
|
+
|
|
60
|
+
### 5. ドキュメント作成
|
|
61
|
+
|
|
62
|
+
`docs/project/design/07-architecture.md` に以下を記入する:
|
|
63
|
+
|
|
64
|
+
- システムアーキテクチャ図(Mermaid)
|
|
65
|
+
- 採用アーキテクチャパターンの説明
|
|
66
|
+
- ADR 一覧
|
|
67
|
+
|
|
68
|
+
### 6. 構造チェック
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
grep "\`\`\`mermaid" docs/project/design/07-architecture.md \
|
|
72
|
+
&& grep "## 採用アーキテクチャパターン" docs/project/design/07-architecture.md \
|
|
73
|
+
&& grep "## ADR" docs/project/design/07-architecture.md \
|
|
74
|
+
&& echo "OK" || echo "MISSING SECTION"
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
詳細チェックリストは [reference/structure-check.md](reference/structure-check.md#チェックリスト) を参照。
|
|
78
|
+
|
|
79
|
+
### 7. Git への追加(任意)
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
git add docs/project/design/07-architecture.md
|
|
83
|
+
git commit -m "docs: アーキテクチャ設計の定義"
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## 完了条件
|
|
87
|
+
|
|
88
|
+
- `docs/project/design/07-architecture.md` が作成されている。
|
|
89
|
+
- システム全体の構成要素と関係性が可視化されている。
|
|
90
|
+
- 技術選定の背景(ADR)が文書化され、将来の参照用に残されている。
|
|
91
|
+
- ユーザーが内容を承認している。
|
|
92
|
+
|
|
93
|
+
## エスカレーション
|
|
94
|
+
|
|
95
|
+
- **アーキテクチャが複雑すぎる**: 「コンポーネント数が多すぎます。概要図と詳細図に分割するか、主要フローに絞って図示することを検討しましょう。」
|
|
96
|
+
- **決定理由が不明確**: 「[技術名] の選定理由が曖昧です。後で振り返れるよう、比較検討した代替案も含めて ADR に記録しましょう。」
|
|
97
|
+
|
|
98
|
+
## 参考
|
|
99
|
+
|
|
100
|
+
- [examples/architecture-templates.md](examples/architecture-templates.md) — システム全体図、冗長化構成、パターン選定ガイド、ADR テンプレート、ADR の典型例
|
|
101
|
+
- [reference/structure-check.md](reference/structure-check.md) — 構造確認コマンド、チェックリスト、レビュー質問、ADR 記録基準
|