@einja/dev-cli 0.1.20 → 0.1.23

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.
Files changed (49) hide show
  1. package/dist/commands/task-loop/lib/branch-manager.d.ts +2 -2
  2. package/dist/commands/task-loop/lib/branch-manager.d.ts.map +1 -1
  3. package/dist/commands/task-loop/lib/branch-manager.js +133 -28
  4. package/dist/commands/task-loop/lib/branch-manager.js.map +1 -1
  5. package/dist/commands/task-loop/lib/branch-manager.test.js +186 -161
  6. package/dist/commands/task-loop/lib/branch-manager.test.js.map +1 -1
  7. package/dist/commands/task-loop/lib/branch-selector.d.ts.map +1 -1
  8. package/dist/commands/task-loop/lib/branch-selector.js +28 -69
  9. package/dist/commands/task-loop/lib/branch-selector.js.map +1 -1
  10. package/dist/commands/task-loop/lib/horizontal-split-detector.d.ts +25 -0
  11. package/dist/commands/task-loop/lib/horizontal-split-detector.d.ts.map +1 -0
  12. package/dist/commands/task-loop/lib/horizontal-split-detector.js +72 -0
  13. package/dist/commands/task-loop/lib/horizontal-split-detector.js.map +1 -0
  14. package/dist/commands/task-loop/lib/horizontal-split-detector.test.d.ts +2 -0
  15. package/dist/commands/task-loop/lib/horizontal-split-detector.test.d.ts.map +1 -0
  16. package/dist/commands/task-loop/lib/horizontal-split-detector.test.js +177 -0
  17. package/dist/commands/task-loop/lib/horizontal-split-detector.test.js.map +1 -0
  18. package/dist/commands/task-loop/lib/issue-validator.d.ts +36 -0
  19. package/dist/commands/task-loop/lib/issue-validator.d.ts.map +1 -0
  20. package/dist/commands/task-loop/lib/issue-validator.js +400 -0
  21. package/dist/commands/task-loop/lib/issue-validator.js.map +1 -0
  22. package/dist/commands/task-loop/lib/pull-request-manager.d.ts +26 -0
  23. package/dist/commands/task-loop/lib/pull-request-manager.d.ts.map +1 -1
  24. package/dist/commands/task-loop/lib/pull-request-manager.js +121 -1
  25. package/dist/commands/task-loop/lib/pull-request-manager.js.map +1 -1
  26. package/package.json +1 -1
  27. package/presets/default/.claude/agents/einja/backend-architect.md +3 -1
  28. package/presets/default/.claude/agents/einja/design-engineer.md +3 -1
  29. package/presets/default/.claude/agents/einja/docs/docs-updater.md +1 -1
  30. package/presets/default/.claude/agents/einja/frontend-architect.md +3 -1
  31. package/presets/default/.claude/agents/einja/frontend-coder.md +3 -1
  32. package/presets/default/.claude/agents/einja/specs/spec-tasks-generator.md +172 -176
  33. package/presets/default/.claude/agents/einja/specs/spec-tasks-validator.md +150 -0
  34. package/presets/default/.claude/agents/einja/task/task-executer.md +19 -11
  35. package/presets/default/.claude/commands/einja/spec-create.md +85 -14
  36. package/presets/default/.claude/commands/einja/task-exec.md +7 -7
  37. package/presets/default/.claude/hooks/einja/biome-format.sh +2 -2
  38. package/presets/default/.claude/skills/einja-general-context-loader/SKILL.md +1 -1
  39. package/presets/default/.claude/skills/einja-spec-context-loader/SKILL.md +4 -4
  40. package/scaffolds/instructions/deployment-setup.md +43 -2
  41. package/scaffolds/instructions/environment-setup.md +6 -18
  42. package/scaffolds/instructions/task-execute.md +31 -31
  43. package/scaffolds/instructions/task-vibe-kanban-loop.md +5 -5
  44. package/scaffolds/steering/acceptance-criteria-and-qa-guide.md +1 -1
  45. package/scaffolds/steering/development-workflow.md +21 -21
  46. package/scaffolds/steering/infrastructure/deployment.md +18 -7
  47. package/scaffolds/steering/infrastructure/environment-variables.md +11 -8
  48. package/scaffolds/steering/task-management.md +131 -7
  49. package/presets/default/.claude/agents/einja/task/task-committer.md +0 -88
@@ -15,7 +15,7 @@ GitHub Issue からタスクを自動選定し、Vibe-Kanban に登録して連
15
15
 
16
16
  ```bash
17
17
  # 1. 仕様書を作成(requirements.md, design.md, GitHub Issue へのタスク記述)
18
- /spec-create <タスク内容の説明>
18
+ /einja:spec-create <タスク内容の説明>
19
19
 
20
20
  # 一旦ここまで終わったらDiscordでスレッドを作りチームにレビュー依頼
21
21
 
@@ -444,11 +444,11 @@ sequenceDiagram
444
444
 
445
445
  ---
446
446
 
447
- ## `/task-exec` との使い分け
447
+ ## `/einja:task-exec` との使い分け
448
448
 
449
449
  | コマンド | 用途 | 品質保証 | 推奨シーン |
450
450
  |---------|------|---------|----------|
451
- | **`/task-exec`** | 重要タスクの確実な完了 | ✅ 合格まで自動ループ | 複雑な実装、品質重視 |
451
+ | **`/einja:task-exec`** | 重要タスクの確実な完了 | ✅ 合格まで自動ループ | 複雑な実装、品質重視 |
452
452
  | **`pnpm task:loop`** | 大量タスクの自動消化 | 並列実行・監視 | 定型作業、並行開発 |
453
453
 
454
454
  ---
@@ -479,9 +479,9 @@ packages/cli/src/commands/task-loop/
479
479
 
480
480
  ## 関連ドキュメント
481
481
 
482
- - [タスク実行ワークフロー](./task-execute.md)
482
+ - [タスク実行ワークフロー](./einja:task-execute.md)
483
483
  - [タスク管理ガイドライン](../steering/task-management.md)
484
- - [仕様書作成ワークフロー](./spec-create.md)
484
+ - [仕様書作成ワークフロー](./einja:spec-create.md)
485
485
  - [ブランチ運用戦略](../steering/branch-strategy.md) - ブランチ命名規則、同期フロー、ワークフロー図
486
486
  <!-- @einja:managed:end -->
487
487
 
@@ -99,7 +99,7 @@ ACx.y: <振る舞いの名前>
99
99
  ```
100
100
 
101
101
  **シナリオテストの設計タイミング**:
102
- - `/spec-create` コマンドの QAテスト仕様生成フェーズで作成
102
+ - `/einja:spec-create` コマンドの QAテスト仕様生成フェーズで作成
103
103
  - requirements.md の受け入れ条件を分析し、複数ACをまたぐフローを特定
104
104
  - タスク分割前に完了させる
105
105
 
@@ -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. requirements.md作成 → ユーザー承認 → コミット
38
- │ ├── 4. design.md作成 → ユーザー承認 → コミット
39
- │ ├── 5. GitHub Issueにタスク一覧記述ユーザー承認
40
- │ ├── 6. issue/{番号}ブランチ作成
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 → **人間承認** | requirements.md作成 → 確認 → コミット |
139
- | 4 | Claude → **人間承認** | design.md作成 → 確認 → コミット |
140
- | 5 | Claude → **人間承認** | GitHub Issueにタスク一覧記述 |
141
- | 6 | Claude | `issue/{番号}`ブランチ作成 |
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
- DB[(PostgreSQL)]
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 -->|Manual Deploy| CronStaging
54
+ Feature -->|Create Branch| DBPreview
55
55
 
56
- WebProd --> DB
57
- CronProd --> DB
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.development` | ✅ | ✅ |
39
- | ステージング | `.env.staging` | ✅ | ✅ |
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.development` | ✅ | ✅ | dev検証サーバー用 |
172
- | `.env.staging` | ✅ | ✅ | ステージング用 |
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.development # dev検証・暗号化済み(Git追跡)
187
- ├── .env.staging # ステージング・暗号化済み(Git追跡)
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
- | `_DEVELOPMENT` | dev検証環境用 |
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
- **注**: `DOTENV_PRIVATE_KEY_LOCAL`はローカル開発用なのでGitHub Secretsには不要。`.env.keys`でチーム内共有。
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 -->
@@ -1,88 +0,0 @@
1
- ---
2
- name: task-committer
3
- description: QA合格後の変更をコミット・プッシュする専用エージェント
4
- model: sonnet
5
- color: green
6
- skills:
7
- - task-commit
8
- ---
9
-
10
- # task-committer エージェント
11
-
12
- QA合格後の変更をコミット・プッシュします。
13
-
14
- ## 役割
15
-
16
- - 変更内容を確認し、適切な粒度でコミットを分割
17
- - `docs/einja/steering/commit-rules.md` のコミットルールに厳格に従う
18
- - コミット・プッシュを実行し、結果を報告
19
-
20
- ## 処理
21
-
22
- task-commit Skillを実行し、結果を返却します。
23
-
24
- ### コミット分割案の確認
25
-
26
- 呼び出し時の指示に**明示的なコミット分割の指定がない場合**は、**AskUserQuestionツールを使用**してコミット分割案の承認を得ます。
27
-
28
- - ✅ 「この分割でお願い」「1コミットで」等の指定がある → 指定に従って実行
29
- - ✅ 分割指定がない → AskUserQuestionで確認を取る
30
-
31
- ### task-exec経由での呼び出し
32
-
33
- task-exec経由で呼び出される場合、以下のみスキップします:
34
-
35
- - **品質チェック(prepush)**: QAフェーズで既に lint/typecheck/test が実行済みのため、重複実行は不要
36
-
37
- **注意**: コミット分割案の確認はスキップしません。
38
-
39
- ## 出力形式
40
-
41
- task-commit Skillの出力形式に従い、以下の形式で結果を報告します:
42
-
43
- ```markdown
44
- ## 🚀 コミット・プッシュ完了
45
-
46
- ### コミットサマリー
47
- - **コミット数**: {count}個
48
- - **変更ファイル数**: {files}個
49
-
50
- ### コミット一覧
51
- | # | メッセージ | ファイル数 |
52
- |---|----------|----------|
53
- | 1 | feat: ... | 3 |
54
- | 2 | test: ... | 2 |
55
-
56
- ### ステータス: ✅ SUCCESS / ❌ FAILURE
57
- ```
58
-
59
- ## 実行制約
60
-
61
- このエージェントは `task-exec` コマンドから `Task` ツール経由でのみ呼び出されます。
62
-
63
- ## コンフリクト発生時
64
-
65
- **⚠️ 重要**: コンフリクト解消は「自動モード」の対象外です。必ずユーザー確認が必要です。
66
-
67
- `git pull --rebase` でコンフリクトが発生した場合:
68
-
69
- 1. **自分でコンフリクトを解消してはいけない**
70
- 2. **必ず `conflict-resolver` エージェントを Task ツールで呼び出す**
71
- 3. conflict-resolverが各ファイルについてユーザーに確認を取り、解消を行う
72
-
73
- ```
74
- Task ツール呼び出し:
75
- - subagent_type: conflict-resolver
76
- - prompt: "rebase中のコンフリクトを解消してください。各ファイルについてユーザーに確認を取りながら進めてください。"
77
- ```
78
-
79
- **禁止事項**:
80
- - ❌ コンフリクトを自動解消すること
81
- - ❌ `--ours`や`--theirs`を無断で使用すること
82
- - ❌ ユーザー確認なしでマージ案を適用すること
83
-
84
- ## 連携エージェント
85
-
86
- - **前提**: `task-qa` - 品質保証フェーズ完了後に呼び出される
87
- - **コンフリクト時**: `conflict-resolver` - rebase/merge時のコンフリクト解消
88
- - **後続**: なし(追加指示待ち状態へ移行)