@einja/dev-cli 0.1.19 → 0.1.21
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/dist/commands/task-loop/lib/dependency-resolver.d.ts.map +1 -1
- package/dist/commands/task-loop/lib/dependency-resolver.js +16 -0
- package/dist/commands/task-loop/lib/dependency-resolver.js.map +1 -1
- package/dist/commands/task-loop/lib/dependency-resolver.test.js +98 -0
- package/dist/commands/task-loop/lib/dependency-resolver.test.js.map +1 -1
- package/dist/commands/task-loop/lib/issue-validator.d.ts +36 -0
- package/dist/commands/task-loop/lib/issue-validator.d.ts.map +1 -0
- package/dist/commands/task-loop/lib/issue-validator.js +367 -0
- package/dist/commands/task-loop/lib/issue-validator.js.map +1 -0
- package/package.json +1 -1
- package/presets/default/.claude/agents/einja/backend-architect.md +3 -1
- package/presets/default/.claude/agents/einja/design-engineer.md +3 -1
- package/presets/default/.claude/agents/einja/docs/docs-updater.md +1 -1
- package/presets/default/.claude/agents/einja/frontend-architect.md +3 -1
- package/presets/default/.claude/agents/einja/frontend-coder.md +3 -1
- package/presets/default/.claude/agents/einja/specs/spec-tasks-generator.md +133 -176
- package/presets/default/.claude/agents/einja/specs/spec-tasks-validator.md +150 -0
- package/presets/default/.claude/agents/einja/task/task-executer.md +19 -11
- package/presets/default/.claude/commands/einja/spec-create.md +85 -14
- package/presets/default/.claude/skills/einja-general-context-loader/SKILL.md +1 -1
- package/presets/default/.claude/skills/einja-spec-context-loader/SKILL.md +4 -4
- package/scaffolds/instructions/deployment-setup.md +74 -6
- package/scaffolds/instructions/environment-setup.md +10 -18
- package/scaffolds/instructions/task-execute.md +31 -31
- package/scaffolds/instructions/task-vibe-kanban-loop.md +5 -5
- package/scaffolds/steering/acceptance-criteria-and-qa-guide.md +1 -1
- package/scaffolds/steering/development-workflow.md +21 -21
- package/scaffolds/steering/infrastructure/deployment.md +18 -7
- package/scaffolds/steering/infrastructure/environment-variables.md +11 -8
- package/scaffolds/steering/task-management.md +131 -7
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
本プロジェクトでは、Claude Codeを活用した自動化された開発ワークフローを採用しています。
|
|
9
9
|
|
|
10
10
|
```
|
|
11
|
-
仕様書作成(/spec-create)
|
|
11
|
+
仕様書作成(/einja:spec-create)
|
|
12
12
|
↓
|
|
13
13
|
仕様書レビュー(Discord + Spec PR)
|
|
14
14
|
↓
|
|
@@ -30,15 +30,15 @@
|
|
|
30
30
|
│ Phase A: 仕様書作成 │
|
|
31
31
|
├─────────────────────────────────────────────────────────────────────────────┤
|
|
32
32
|
│ │
|
|
33
|
-
│ /spec-create <タスク内容の説明またはAsanaタスクURL> │
|
|
33
|
+
│ /einja:spec-create <タスク内容の説明またはAsanaタスクURL> │
|
|
34
34
|
│ │ │
|
|
35
35
|
│ ├── 1. (AsanaURLの場合)Asanaからタスク情報取得 │
|
|
36
36
|
│ ├── 2. GitHub Issue作成 │
|
|
37
|
-
│ ├── 3.
|
|
38
|
-
│ ├── 4.
|
|
39
|
-
│ ├── 5.
|
|
40
|
-
│ ├── 6.
|
|
41
|
-
│ ├── 7.
|
|
37
|
+
│ ├── 3. IssueBranchBase選択(AskUserQuestion) │
|
|
38
|
+
│ ├── 4. issue/{番号}ブランチ作成(IssueBranchBaseから) │
|
|
39
|
+
│ ├── 5. requirements.md作成 → ユーザー承認 → コミット │
|
|
40
|
+
│ ├── 6. design.md作成 → ユーザー承認 → コミット │
|
|
41
|
+
│ ├── 7. GitHub Issueにタスク一覧記述 → ユーザー承認 │
|
|
42
42
|
│ └── 8. Spec PR作成 │
|
|
43
43
|
│ │
|
|
44
44
|
│ 成果物: │
|
|
@@ -126,7 +126,7 @@
|
|
|
126
126
|
### コマンド
|
|
127
127
|
|
|
128
128
|
```bash
|
|
129
|
-
/spec-create <タスク内容の説明またはAsanaタスクURL>
|
|
129
|
+
/einja:spec-create <タスク内容の説明またはAsanaタスクURL>
|
|
130
130
|
```
|
|
131
131
|
|
|
132
132
|
### ステップ詳細
|
|
@@ -135,11 +135,11 @@
|
|
|
135
135
|
| -------- | --------------------- | ------------------------------------- |
|
|
136
136
|
| 1 | Claude | タスク情報取得(AsanaURLの場合) |
|
|
137
137
|
| 2 | Claude | GitHub Issue作成 |
|
|
138
|
-
| 3 | Claude → **人間承認** |
|
|
139
|
-
| 4 | Claude
|
|
140
|
-
| 5 | Claude → **人間承認** |
|
|
141
|
-
| 6 | Claude
|
|
142
|
-
| 7 | Claude
|
|
138
|
+
| 3 | Claude → **人間承認** | IssueBranchBase選択 |
|
|
139
|
+
| 4 | Claude | `issue/{番号}`ブランチ作成 |
|
|
140
|
+
| 5 | Claude → **人間承認** | requirements.md作成 → 確認 → コミット |
|
|
141
|
+
| 6 | Claude → **人間承認** | design.md作成 → 確認 → コミット |
|
|
142
|
+
| 7 | Claude → **人間承認** | GitHub Issueにタスク一覧記述 |
|
|
143
143
|
| 8 | Claude | **Spec PR作成** |
|
|
144
144
|
| 9 | **人間** | Discordでチームにレビュー依頼 |
|
|
145
145
|
| 10 | **人間** | Spec PRレビュー・承認・マージ |
|
|
@@ -246,7 +246,7 @@ task-executer → task-reviewer → task-qa → In Review
|
|
|
246
246
|
|
|
247
247
|
| PRの種類 | 作成タイミング | 内容 | レビュー観点 |
|
|
248
248
|
| ----------- | -------------------- | -------------------------- | ---------------------------------------------- |
|
|
249
|
-
| **Spec PR** | `/spec-create`完了時 | requirements.md, design.md | 要件の妥当性、設計の適切さ、スコープの確認 |
|
|
249
|
+
| **Spec PR** | `/einja:spec-create`完了時 | requirements.md, design.md | 要件の妥当性、設計の適切さ、スコープの確認 |
|
|
250
250
|
| **実装PR** | タスクグループ完了時(Vibe-KanbanでCreate PR) | ソースコード、テスト | コード品質、設計書との整合性、テストカバレッジ |
|
|
251
251
|
|
|
252
252
|
### なぜ2段階でPRを作成するのか
|
|
@@ -291,13 +291,13 @@ task-executer → task-reviewer → task-qa → In Review
|
|
|
291
291
|
|
|
292
292
|
```bash
|
|
293
293
|
# タスク内容の説明から仕様書を作成
|
|
294
|
-
/spec-create <タスク内容の説明>
|
|
294
|
+
/einja:spec-create <タスク内容の説明>
|
|
295
295
|
|
|
296
296
|
# AsanaタスクURLから仕様書を作成
|
|
297
|
-
/spec-create <AsanaタスクURL>
|
|
297
|
+
/einja:spec-create <AsanaタスクURL>
|
|
298
298
|
|
|
299
299
|
# 既存仕様書のパスを指定して修正
|
|
300
|
-
/spec-create <タスク内容> <既存仕様書パス>
|
|
300
|
+
/einja:spec-create <タスク内容> <既存仕様書パス>
|
|
301
301
|
```
|
|
302
302
|
|
|
303
303
|
### タスク実行
|
|
@@ -315,17 +315,17 @@ pnpm task:loop 123 --max-group 4 # Phase 4 まで実行
|
|
|
315
315
|
pnpm task:loop 123 --max-group 4.2 # タスクグループ 4.2 まで実行
|
|
316
316
|
|
|
317
317
|
# 単一タスクグループ実行(品質重視・複雑な実装向け)
|
|
318
|
-
/task-exec #<issue_number> <task_group_number>
|
|
318
|
+
/einja:task-exec #<issue_number> <task_group_number>
|
|
319
319
|
|
|
320
320
|
# 例
|
|
321
|
-
/task-exec #123 1.1 # Issue #123 のタスクグループ 1.1 を実行
|
|
321
|
+
/einja:task-exec #123 1.1 # Issue #123 のタスクグループ 1.1 を実行
|
|
322
322
|
```
|
|
323
323
|
|
|
324
|
-
### `/task-exec` と `pnpm task:loop` の使い分け
|
|
324
|
+
### `/einja:task-exec` と `pnpm task:loop` の使い分け
|
|
325
325
|
|
|
326
326
|
| コマンド | 用途 | 品質保証 | 推奨シーン |
|
|
327
327
|
|---------|------|---------|----------|
|
|
328
|
-
| **`/task-exec`** | 重要タスクの確実な完了 | ✅ 合格まで自動ループ | 複雑な実装、品質重視 |
|
|
328
|
+
| **`/einja:task-exec`** | 重要タスクの確実な完了 | ✅ 合格まで自動ループ | 複雑な実装、品質重視 |
|
|
329
329
|
| **`pnpm task:loop`** | 大量タスクの自動消化 | 並列実行・監視 | 定型作業、並行開発 |
|
|
330
330
|
|
|
331
331
|
---
|
|
@@ -40,21 +40,22 @@ graph TB
|
|
|
40
40
|
|
|
41
41
|
subgraph "Railway Platform"
|
|
42
42
|
CronProd[cron-worker - Production]
|
|
43
|
-
CronStaging[cron-worker - Staging]
|
|
44
43
|
end
|
|
45
44
|
|
|
46
|
-
subgraph "Database"
|
|
47
|
-
|
|
45
|
+
subgraph "Neon Database"
|
|
46
|
+
DBProd[(Production DB)]
|
|
47
|
+
DBPreview[(Preview DB - 動的生成)]
|
|
48
48
|
end
|
|
49
49
|
|
|
50
50
|
Main -->|Auto Deploy| WebProd
|
|
51
51
|
Main -->|Auto Deploy| CronProd
|
|
52
52
|
|
|
53
53
|
Feature -->|PR Deploy| WebPreview
|
|
54
|
-
Feature -->|
|
|
54
|
+
Feature -->|Create Branch| DBPreview
|
|
55
55
|
|
|
56
|
-
WebProd -->
|
|
57
|
-
|
|
56
|
+
WebProd --> DBProd
|
|
57
|
+
WebPreview --> DBPreview
|
|
58
|
+
CronProd --> DBProd
|
|
58
59
|
```
|
|
59
60
|
|
|
60
61
|
### デプロイメント対象
|
|
@@ -63,6 +64,7 @@ graph TB
|
|
|
63
64
|
|----------------|--------------|--------------|------|
|
|
64
65
|
| web | Vercel | main push, PR作成 | Production, Preview |
|
|
65
66
|
| cron-worker | Railway | main push | Production |
|
|
67
|
+
| Database | Neon | main push, PR作成 | Production, Preview(動的生成) |
|
|
66
68
|
|
|
67
69
|
---
|
|
68
70
|
|
|
@@ -107,6 +109,7 @@ sequenceDiagram
|
|
|
107
109
|
participant CI as GitHub Actions
|
|
108
110
|
participant Turbo as Turborepo
|
|
109
111
|
participant Cache as Vercel Cache
|
|
112
|
+
participant Neon as Neon Database
|
|
110
113
|
participant Vercel as Vercel
|
|
111
114
|
participant Railway as Railway
|
|
112
115
|
|
|
@@ -116,6 +119,12 @@ sequenceDiagram
|
|
|
116
119
|
CI->>Turbo: turbo login
|
|
117
120
|
Turbo->>Cache: キャッシュ認証
|
|
118
121
|
|
|
122
|
+
alt PR作成時
|
|
123
|
+
CI->>Neon: Create branch from main
|
|
124
|
+
Neon-->>CI: Preview DB URL
|
|
125
|
+
CI->>CI: Set DATABASE_URL
|
|
126
|
+
end
|
|
127
|
+
|
|
119
128
|
CI->>Turbo: turbo run lint
|
|
120
129
|
Turbo->>Cache: キャッシュチェック
|
|
121
130
|
Cache-->>Turbo: キャッシュヒット/ミス
|
|
@@ -131,8 +140,10 @@ sequenceDiagram
|
|
|
131
140
|
Turbo-->>CI: テスト完了
|
|
132
141
|
|
|
133
142
|
alt main ブランチ
|
|
134
|
-
CI->>Vercel: web
|
|
143
|
+
CI->>Vercel: web デプロイ(Production DB使用)
|
|
135
144
|
CI->>Railway: cron-worker デプロイ
|
|
145
|
+
else PR作成時
|
|
146
|
+
CI->>Vercel: web preview デプロイ(Preview DB使用)
|
|
136
147
|
end
|
|
137
148
|
|
|
138
149
|
CI-->>Dev: ステータス通知
|
|
@@ -35,8 +35,8 @@
|
|
|
35
35
|
| 環境 | 管理ファイル | 暗号化 | Git追跡 |
|
|
36
36
|
|------|-------------|--------|--------|
|
|
37
37
|
| ローカル開発 | `.env.local` → `.env` + `.env.personal` | ✅ | `.env.local`のみ |
|
|
38
|
-
| dev検証 | `.env.
|
|
39
|
-
|
|
|
38
|
+
| dev検証 | `.env.develop` | ✅ | ✅ |
|
|
39
|
+
| preview | `.env.preview`(Neon環境変数含む) | ✅ | ✅ |
|
|
40
40
|
| 本番 | `.env.production` | ✅ | ✅ |
|
|
41
41
|
| CI/CD | `.env.ci` | ✅ | ✅ |
|
|
42
42
|
|
|
@@ -168,8 +168,8 @@ A: `.env` は毎回再生成されますが、秘密情報は `.env.local`(暗
|
|
|
168
168
|
| `.env.example` | ✅ | ❌ | `.env`の参考テンプレート |
|
|
169
169
|
| `.env.personal.example` | ✅ | ❌ | 個人用トークンのテンプレート |
|
|
170
170
|
| `.env.local` | ✅ | ✅ | ローカル開発用(チーム共有) |
|
|
171
|
-
| `.env.
|
|
172
|
-
| `.env.
|
|
171
|
+
| `.env.develop` | ✅ | ✅ | dev検証サーバー用 |
|
|
172
|
+
| `.env.preview` | ✅ | ✅ | Preview環境用(Neon環境変数含む) |
|
|
173
173
|
| `.env.production` | ✅ | ✅ | 本番環境用 |
|
|
174
174
|
| `.env.ci` | ✅ | ✅ | CI/CD用 |
|
|
175
175
|
| `.env.keys` | ❌ | - | 全環境の秘密鍵(1Password等で共有) |
|
|
@@ -183,8 +183,8 @@ A: `.env` は毎回再生成されますが、秘密情報は `.env.local`(暗
|
|
|
183
183
|
├── .env.example # 参考テンプレート(Git追跡)
|
|
184
184
|
├── .env.personal.example # 個人用トークンテンプレート(Git追跡)
|
|
185
185
|
├── .env.local # ローカル開発用・暗号化済み(Git追跡)★
|
|
186
|
-
├── .env.
|
|
187
|
-
├── .env.
|
|
186
|
+
├── .env.develop # dev検証・暗号化済み(Git追跡)
|
|
187
|
+
├── .env.preview # Preview環境・暗号化済み(Git追跡・Neon環境変数含む)
|
|
188
188
|
├── .env.production # 本番・暗号化済み(Git追跡)
|
|
189
189
|
├── .env.ci # CI/CD・暗号化済み(Git追跡)
|
|
190
190
|
├── .env.keys # 秘密鍵(Git除外・1Password等で共有)
|
|
@@ -253,7 +253,7 @@ sequenceDiagram
|
|
|
253
253
|
| 識別子 | 説明 |
|
|
254
254
|
|--------|------|
|
|
255
255
|
| `_LOCAL` | ローカル開発用 |
|
|
256
|
-
| `
|
|
256
|
+
| `_DEVELOP` | dev検証環境用 |
|
|
257
257
|
| `_STAGING` | ステージング環境用 |
|
|
258
258
|
| `_PRODUCTION` | 本番環境用 |
|
|
259
259
|
| `_CI` | CI/CD環境用 |
|
|
@@ -280,9 +280,12 @@ dotenvx採用により、GitHub Secretsは**環境ごとに1つの秘密鍵の
|
|
|
280
280
|
| Secret名 | 用途 |
|
|
281
281
|
|---------|------|
|
|
282
282
|
| `DOTENV_PRIVATE_KEY_CI` | CI/CD環境の復号 |
|
|
283
|
+
| `DOTENV_PRIVATE_KEY_PREVIEW` | Preview環境の復号(Neon環境変数含む) |
|
|
283
284
|
| `DOTENV_PRIVATE_KEY_PRODUCTION` | 本番デプロイ時の復号 |
|
|
284
285
|
|
|
285
|
-
**注**:
|
|
286
|
+
**注**:
|
|
287
|
+
- `DOTENV_PRIVATE_KEY_LOCAL`はローカル開発用なのでGitHub Secretsには不要。`.env.keys`でチーム内共有。
|
|
288
|
+
- Neon環境変数(`NEON_API_KEY`、`NEON_PROJECT_ID`)は`.env.preview`で管理されるため、GitHub Secretsへの個別登録は不要。
|
|
286
289
|
|
|
287
290
|
### ローテーション方針
|
|
288
291
|
|
|
@@ -87,12 +87,12 @@ GitHub Issueのチェックボックスでタスクグループのステータ
|
|
|
87
87
|
- [x] 1.1 タスクグループ名
|
|
88
88
|
```
|
|
89
89
|
|
|
90
|
-
**注意**: タスクグループの完了時、GitHub Issueのチェックボックス更新はユーザーが明示的に指示した場合のみ行います。`/task-exec`コマンドは自動でIssueを更新しません。
|
|
90
|
+
**注意**: タスクグループの完了時、GitHub Issueのチェックボックス更新はユーザーが明示的に指示した場合のみ行います。`/einja:task-exec`コマンドは自動でIssueを更新しません。
|
|
91
91
|
|
|
92
92
|
### Issueのライフサイクル
|
|
93
93
|
|
|
94
|
-
1. **Issue作成**: `/spec-create`コマンドで仕様書作成時に自動生成
|
|
95
|
-
2. **タスクグループ実行**: `/task-exec #{issue_number} {タスクグループ番号}`でタスクグループを実行
|
|
94
|
+
1. **Issue作成**: `/einja:spec-create`コマンドで仕様書作成時に自動生成
|
|
95
|
+
2. **タスクグループ実行**: `/einja:task-exec #{issue_number} {タスクグループ番号}`でタスクグループを実行
|
|
96
96
|
3. **タスクグループ完了**: 実装・テスト・レビュー完了後、チェックボックスをON(手動更新)
|
|
97
97
|
4. **Issue完了**: すべてのタスクグループが完了したらIssueをClose
|
|
98
98
|
|
|
@@ -160,6 +160,37 @@ ATDDの本質は「受け入れ基準(AC)を中心にタスクを分解す
|
|
|
160
160
|
- Domain層の実装 / Infra層の実装 / UseCase実装 / API実装 / UI実装
|
|
161
161
|
- 各層単体では検証不可能
|
|
162
162
|
|
|
163
|
+
### ✅ 縦切り分割の具体例(価値単位)
|
|
164
|
+
|
|
165
|
+
CRUD機能の場合、以下のように**価値単位(作成 / 閲覧 / 更新・削除)**で3分割する:
|
|
166
|
+
|
|
167
|
+
```markdown
|
|
168
|
+
### Phase 2: ユーザー管理コア(CRUD)
|
|
169
|
+
|
|
170
|
+
- [ ] 2.1 ユーザー作成機能
|
|
171
|
+
- 2.1.1 ユーザー作成機能の実装(TDD)
|
|
172
|
+
- Domain〜UIまでフルスタック実装
|
|
173
|
+
- **要件**: Story 1
|
|
174
|
+
- **完了条件**: ユーザー作成ができること(AC1.1〜AC1.5を満たす)
|
|
175
|
+
|
|
176
|
+
- [ ] 2.2 ユーザー閲覧機能(一覧・詳細)
|
|
177
|
+
- 2.2.1 ユーザー閲覧機能の実装(TDD)
|
|
178
|
+
- Domain〜UIまでフルスタック実装
|
|
179
|
+
- **要件**: Story 2, 3
|
|
180
|
+
- **完了条件**: 一覧・詳細が表示できること(AC2.1〜AC3.3を満たす)
|
|
181
|
+
|
|
182
|
+
- [ ] 2.3 ユーザー更新・削除機能
|
|
183
|
+
- 2.3.1 ユーザー更新・削除機能の実装(TDD)
|
|
184
|
+
- Domain〜UIまでフルスタック実装
|
|
185
|
+
- **要件**: Story 4, 5
|
|
186
|
+
- **完了条件**: 編集・削除ができること(AC4.1〜AC5.3を満たす)
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
**ポイント**:
|
|
190
|
+
- 各タスクグループ完了時にACが検証可能
|
|
191
|
+
- 1機能でDomain→Infra→UseCase→API→UIをフルスタック実装
|
|
192
|
+
- レイヤーごとの分割は禁止
|
|
193
|
+
|
|
163
194
|
### ❌ アンチパターン(絶対にやってはいけない分割)
|
|
164
195
|
|
|
165
196
|
**パターン1: 画面ごとの分割**
|
|
@@ -197,6 +228,97 @@ ATDDの本質は「受け入れ基準(AC)を中心にタスクを分解す
|
|
|
197
228
|
- 2.3 HashedPassword VOの実装
|
|
198
229
|
```
|
|
199
230
|
|
|
231
|
+
### 🔵 TDD(テスト駆動開発)方針
|
|
232
|
+
|
|
233
|
+
**原則**: ロジック・コード実装があるタスクは**TDDをデフォルトで適用**する。
|
|
234
|
+
|
|
235
|
+
| 対象 | TDD適用 |
|
|
236
|
+
|------|---------|
|
|
237
|
+
| Domain層(Entity, Validator, Repository Interface) | **適用** |
|
|
238
|
+
| Infrastructure層(Mapper, Repository実装) | **適用** |
|
|
239
|
+
| Application層(UseCase) | **適用** |
|
|
240
|
+
| Presentation層(API Routes) | **適用** |
|
|
241
|
+
| UI層(Reactコンポーネント) | **適用** |
|
|
242
|
+
| 設定ファイル、マイグレーション、シードデータ | 不適用 |
|
|
243
|
+
|
|
244
|
+
**注意**: requirements.mdへの「TDD採用」明記は不要。デフォルトでTDD順序を適用する。
|
|
245
|
+
|
|
246
|
+
### TDDタスク構造(1タスク内サブタスク)
|
|
247
|
+
|
|
248
|
+
TDDは**3タスク分割(X.Y.1 テスト / X.Y.2 実装 / X.Y.3 リファクタ)ではなく、1タスク内のサブタスクとしてRed→Green→Refactorを記載**する:
|
|
249
|
+
|
|
250
|
+
```markdown
|
|
251
|
+
- [ ] X.Y 機能名
|
|
252
|
+
|
|
253
|
+
- X.Y.Z 機能名の実装(TDD)
|
|
254
|
+
- **テスト作成(Red)**:
|
|
255
|
+
- [テスト内容の詳細]
|
|
256
|
+
- Given-When-Then形式でテストケースを作成
|
|
257
|
+
- テストが失敗することを確認
|
|
258
|
+
- **実装(Green)**:
|
|
259
|
+
- [実装内容の詳細]
|
|
260
|
+
- テストを通すための最小限の実装
|
|
261
|
+
- 全テストがパスすることを確認
|
|
262
|
+
- **リファクタリング**:
|
|
263
|
+
- [改善内容の詳細]
|
|
264
|
+
- コード品質の改善(重複削除、命名改善)
|
|
265
|
+
- テストがパスし続けることを確認
|
|
266
|
+
- **要件**: Story X
|
|
267
|
+
- **依存関係**: ...
|
|
268
|
+
- **完了条件**: [条件](ACX.Xを満たす)
|
|
269
|
+
- **対応設計**: design.md「[セクション名]」
|
|
270
|
+
- **シナリオテスト**: [該当シナリオ]
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
**TDDタスク構造の適用例**:
|
|
274
|
+
|
|
275
|
+
```markdown
|
|
276
|
+
- [ ] 2.1 ユーザー作成機能
|
|
277
|
+
|
|
278
|
+
- 2.1.1 ユーザー作成機能の実装(TDD)
|
|
279
|
+
- **テスト作成(Red)**:
|
|
280
|
+
- 重複メール検証、必須項目検証、権限検証のテスト
|
|
281
|
+
- Domain層(Entity, Validator)のユニットテスト
|
|
282
|
+
- Repository、UseCaseの統合テスト
|
|
283
|
+
- **実装(Green)**:
|
|
284
|
+
- User Entity、IUserRepository Interface
|
|
285
|
+
- UserMapper、UserRepository実装
|
|
286
|
+
- UserUseCases.create
|
|
287
|
+
- POST /api/rpc/users エンドポイント
|
|
288
|
+
- UserCreateForm(React Hook Form + Zod)
|
|
289
|
+
- **リファクタリング**:
|
|
290
|
+
- コード品質改善、重複削除
|
|
291
|
+
- **要件**: Story 1
|
|
292
|
+
- **依存関係**: 1.1
|
|
293
|
+
- **完了条件**: ユーザー作成ができ、全テストがパス(AC1.1〜AC1.5を満たす)
|
|
294
|
+
- **対応設計**: design.md「4〜9」全セクション
|
|
295
|
+
- **シナリオテスト**: シナリオ1 Step 1-3(部分実行:作成まで)
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
### TDD非適用タスクの例
|
|
299
|
+
|
|
300
|
+
設定系タスク(マイグレーション、シードデータ等)はTDD不適用:
|
|
301
|
+
|
|
302
|
+
```markdown
|
|
303
|
+
- [ ] 1.1 サンプルコード削除とDB基盤構築
|
|
304
|
+
|
|
305
|
+
- 1.1.1 既存サンプルコードの削除
|
|
306
|
+
- 既存のUser, Account等のサンプルコード削除
|
|
307
|
+
- **要件**: Story 1前提条件
|
|
308
|
+
- **依存関係**: なし
|
|
309
|
+
- **完了条件**: サンプルコードが削除され、ビルド可能な状態
|
|
310
|
+
- **対応設計**: design.md「2.3 ディレクトリ構造」
|
|
311
|
+
- **シナリオテスト**: なし(基盤構築タスク)
|
|
312
|
+
|
|
313
|
+
- 1.1.2 Prismaスキーマ作成とマイグレーション
|
|
314
|
+
- User, Departmentモデル作成、マイグレーション実行
|
|
315
|
+
- **要件**: Story 1, 2
|
|
316
|
+
- **依存関係**: 1.1.1
|
|
317
|
+
- **完了条件**: マイグレーション成功、テーブル作成
|
|
318
|
+
- **対応設計**: design.md「3. データベース設計」
|
|
319
|
+
- **シナリオテスト**: なし(DB基盤タスク)
|
|
320
|
+
```
|
|
321
|
+
|
|
200
322
|
### メタデータの記述(タスク単位に付与)
|
|
201
323
|
|
|
202
324
|
各タスク(X.Y.Z)には以下のメタデータを**必須**で付与します:
|
|
@@ -253,8 +375,9 @@ ATDDの本質は「受け入れ基準(AC)を中心にタスクを分解す
|
|
|
253
375
|
> **詳細なフロー(仕様書作成からレビュー・マージまで)は[開発ワークフロー](development-workflow.md)を参照してください。**
|
|
254
376
|
|
|
255
377
|
### 1. タスクグループを選定・実行
|
|
256
|
-
- `/task-exec #{issue_number} {タスクグループ番号}`コマンドを実行
|
|
378
|
+
- `/einja:task-exec #{issue_number} {タスクグループ番号}`コマンドを実行
|
|
257
379
|
- タスクグループ番号は必須引数(例: `1.1`, `2.3`)
|
|
380
|
+
- **注意**: `pnpm task:loop <issue番号>`が何らかの理由で使えない場合のオプションの単発実行として`/einja:task-exec`を使用
|
|
258
381
|
- executer → reviewer → qa の3段階で実行
|
|
259
382
|
|
|
260
383
|
### 2. タスクを順次実装し、コミット
|
|
@@ -338,18 +461,19 @@ design.md「Server Core構築」セクション
|
|
|
338
461
|
|
|
339
462
|
**仕様書作成とIssue生成**:
|
|
340
463
|
```bash
|
|
341
|
-
/spec-create [タスク内容の説明]
|
|
464
|
+
/einja:spec-create [タスク内容の説明]
|
|
342
465
|
```
|
|
343
466
|
- requirements.md、design.mdを作成し、GitHub Issueを自動生成
|
|
344
467
|
|
|
345
468
|
**タスクグループ実行**:
|
|
346
469
|
```bash
|
|
347
|
-
/task-exec #{issue_number} {タスクグループ番号}
|
|
470
|
+
/einja:task-exec #{issue_number} {タスクグループ番号}
|
|
348
471
|
```
|
|
349
472
|
- Issue番号とタスクグループ番号は両方必須
|
|
350
473
|
- executer → reviewer → qa の3段階で実行
|
|
351
474
|
- QA合格後は追加指示待ち状態に入る
|
|
352
475
|
- GitHub Issue更新はユーザーの明示的指示時のみ
|
|
476
|
+
- **位置づけ**: `pnpm task:loop <issue番号>`が使えない場合の代替となる単発実行コマンド
|
|
353
477
|
|
|
354
478
|
**自動ループ実行**:
|
|
355
479
|
```bash
|
|
@@ -363,7 +487,7 @@ pnpm task:loop <issue番号> --branch <ブランチ> # ベースブランチ指
|
|
|
363
487
|
|
|
364
488
|
**仕様書からドキュメント更新**:
|
|
365
489
|
```bash
|
|
366
|
-
/update-docs-by-task-specs [タスク仕様書ディレクトリパス]
|
|
490
|
+
/einja:update-docs-by-task-specs [タスク仕様書ディレクトリパス]
|
|
367
491
|
```
|
|
368
492
|
- タスク仕様書の内容をfeature仕様書とsteering仕様書に反映
|
|
369
493
|
<!-- @einja:managed:end -->
|