@einja/dev-cli 0.1.41 → 0.1.45
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 +0 -1
- package/dist/cli.js +0 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +1 -20
- package/dist/commands/sync.js.map +1 -1
- package/dist/commands/task-loop/lib/github-client.test.js.map +1 -1
- package/dist/commands/task-loop/lib/vibe-kanban-rest-client.js +2 -2
- package/dist/commands/task-loop/lib/vibe-kanban-rest-client.js.map +1 -1
- package/dist/lib/preset-update/file-copier.js +3 -3
- package/dist/lib/preset-update/file-copier.js.map +1 -1
- package/dist/lib/sync/file-filter.js +2 -2
- package/dist/lib/sync/file-filter.js.map +1 -1
- package/dist/lib/sync/file-filter.test.js +20 -0
- package/dist/lib/sync/file-filter.test.js.map +1 -1
- package/dist/lib/sync/marker-processor.js.map +1 -1
- package/dist/lib/sync/metadata-manager.js +1 -1
- package/dist/lib/sync/metadata-manager.js.map +1 -1
- package/dist/lib/sync/metadata-manager.test.js +3 -2
- package/dist/lib/sync/metadata-manager.test.js.map +1 -1
- package/dist/lib/sync/project-private-synchronizer.d.ts.map +1 -1
- package/dist/lib/sync/project-private-synchronizer.js +5 -1
- package/dist/lib/sync/project-private-synchronizer.js.map +1 -1
- package/dist/types/index.d.ts +0 -1
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/presets/default/.claude/agents/einja/backend-architect.md +17 -1
- package/presets/default/.claude/agents/einja/codex-agent.md +1 -1
- package/presets/default/.claude/agents/einja/design-engineer.md +1 -1
- package/presets/default/.claude/agents/einja/docs/docs-updater.md +3 -93
- package/presets/default/.claude/agents/einja/frontend-architect.md +17 -1
- package/presets/default/.claude/agents/einja/frontend-coder.md +1 -1
- package/presets/default/.claude/agents/einja/{specs/spec-design-generator.md → issue-specs/design-generator.md} +12 -7
- package/presets/default/.claude/agents/einja/{specs/spec-qa-generator.md → issue-specs/qa-generator.md} +6 -4
- package/presets/default/.claude/agents/einja/{specs/spec-requirements-generator.md → issue-specs/requirements-generator.md} +5 -5
- package/presets/default/.claude/agents/einja/{specs/spec-tasks-generator.md → issue-specs/tasks-generator.md} +13 -14
- package/presets/default/.claude/agents/einja/{specs/spec-tasks-validator.md → issue-specs/tasks-validator.md} +9 -9
- package/presets/default/.claude/agents/einja/issue-specs/ui-design-generator.md +114 -0
- package/presets/default/.claude/agents/einja/task/task-executer.md +9 -3
- package/presets/default/.claude/agents/einja/task/task-modification-analyzer.md +2 -2
- package/presets/default/.claude/agents/einja/task/task-qa.md +3 -3
- package/presets/default/.claude/agents/einja/task/task-reviewer.md +13 -1
- package/presets/default/.claude/commands/einja/einja-sync.md +119 -44
- package/presets/default/.claude/commands/einja/issue-exec.md +29 -19
- package/presets/default/.claude/commands/einja/sync-cursor-commands.md +6 -6
- package/presets/default/.claude/commands/einja/{update-docs-by-task-specs.md → update-docs-by-issue-specs.md} +58 -58
- package/presets/default/.claude/hooks/einja/plan-mode-skill-loader.sh +5 -1
- package/presets/default/.claude/settings.json +14 -4
- package/presets/default/.claude/skills/{einja-general-context-loader → _einja-general-context-loader}/SKILL.md +2 -2
- package/presets/default/.claude/skills/{einja-output-format → _einja-output-format}/SKILL.md +1 -1
- package/presets/default/.claude/skills/_einja-project-overview/SKILL.md +29 -0
- package/presets/default/.claude/skills/{einja-spec-context-loader → _einja-spec-context-loader}/SKILL.md +5 -5
- package/presets/default/.claude/skills/einja-coding-standards/references/testing-strategy.md +899 -0
- package/presets/default/.claude/skills/einja-conflict-resolver/SKILL.md +1 -1
- package/presets/default/.claude/skills/einja-create-pr/SKILL.md +138 -0
- package/presets/default/.claude/skills/einja-infra-maintenance/SKILL.md +779 -0
- package/presets/default/.claude/{commands/einja/spec-create.md → skills/einja-issue-spec-create/SKILL.md} +47 -24
- package/presets/default/.claude/skills/einja-issue-spec-generator/SKILL.md +105 -0
- package/presets/default/.claude/skills/einja-issue-spec-generator/references/format-rules.md +35 -0
- package/presets/default/.claude/skills/einja-issue-spec-validator/SKILL.md +130 -0
- package/presets/default/.claude/skills/einja-issue-spec-validator/references/validation-rules.md +52 -0
- package/presets/default/.claude/skills/einja-npm-release/SKILL.md +242 -0
- package/presets/default/.claude/skills/einja-skill-creator/SKILL.md +68 -12
- package/presets/default/.claude/skills/einja-skill-creator/scripts/aggregate_benchmark.py +368 -121
- package/presets/default/.claude/skills/einja-skill-creator/scripts/compare_runs.py +154 -0
- package/presets/default/.claude/skills/einja-skill-creator/scripts/generate_report.py +14 -7
- package/presets/default/.claude/skills/einja-skill-creator/scripts/improve_description.py +2 -7
- package/presets/default/.claude/skills/einja-skill-creator/scripts/run_loop.py +263 -183
- package/presets/default/.claude/skills/einja-skill-first/SKILL.md +265 -0
- package/presets/default/.claude/skills/einja-subagent-question-protocol/SKILL.md +98 -0
- package/presets/default/.claude/skills/einja-task-commit/SKILL.md +7 -7
- package/presets/default/.claude/{commands/einja/task-exec.md → skills/einja-task-exec/SKILL.md} +3 -78
- package/presets/default/.claude/skills/einja-task-qa/SKILL.md +4 -4
- package/presets/default/.claude/skills/einja-task-qa/references/troubleshooting.md +1 -1
- package/presets/default/.claude/skills/einja-task-qa/references/usage-patterns.md +2 -2
- package/presets/default/.claude/skills/einja-team-exec/SKILL.md +165 -0
- package/presets/default/CLAUDE.md.template +21 -6
- package/presets/default/docs/einja/instructions/deployment-setup.md +1 -1
- package/presets/default/docs/einja/instructions/issue-exec-workflow.md +11 -11
- package/presets/default/docs/einja/instructions/local-server-environment-and-worktree.md +1 -1
- package/presets/default/docs/einja/instructions/setup-flow.md +279 -0
- package/presets/default/docs/einja/instructions/task-execute.md +42 -42
- package/presets/default/docs/einja/steering/acceptance-criteria-and-qa-guide.md +1 -1
- package/presets/default/docs/einja/steering/branch-strategy.md +1 -1
- package/presets/default/docs/einja/steering/development-workflow.md +93 -25
- package/presets/default/docs/einja/steering/infrastructure/deployment.md +107 -0
- package/presets/default/docs/einja/steering/task-management.md +9 -13
- package/presets/default/scripts/ensure-serena.sh +2 -2
- package/presets/default/scripts/env-rotate-secrets.ts +66 -6
- package/presets/default/scripts/init-github.ts +363 -0
- package/presets/default/scripts/init.sh +11 -5
- package/presets/default/scripts/setup-dev.ts +16 -1
- package/dist/lib/sync/backup-manager.d.ts +0 -50
- package/dist/lib/sync/backup-manager.d.ts.map +0 -1
- package/dist/lib/sync/backup-manager.js +0 -117
- package/dist/lib/sync/backup-manager.js.map +0 -1
- package/dist/lib/sync/backup-manager.test.d.ts +0 -2
- package/dist/lib/sync/backup-manager.test.d.ts.map +0 -1
- package/dist/lib/sync/backup-manager.test.js +0 -155
- package/dist/lib/sync/backup-manager.test.js.map +0 -1
- package/presets/default/.claude/agents/einja/git/conflict-resolver.md +0 -152
- package/presets/default/.claude/hooks/einja/validate-git-commit.sh +0 -239
- package/presets/default/.claude/skills/einja-project-overview/SKILL.md +0 -39
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
<!-- @einja:managed:start -->
|
|
2
2
|
# 開発ワークフロー
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
このドキュメントでは、`einja-issue-spec-create` Skillと`einja-task-exec` Skillを使用したATDD(受け入れテスト駆動開発)に基づく開発ワークフローについて説明します。
|
|
5
5
|
|
|
6
6
|
## 概要
|
|
7
7
|
|
|
8
8
|
開発プロセスは2つの主要なコマンドで構成されています:
|
|
9
9
|
|
|
10
|
-
1.
|
|
11
|
-
2.
|
|
10
|
+
1. **`einja-issue-spec-create` Skill**: 仕様書の作成(要件定義 → 設計 → GitHub Issueへのタスク記述)
|
|
11
|
+
2. **`einja-task-exec` Skill**: タスクの実行(選定 → 実装 → レビュー → QA → 完了)
|
|
12
12
|
|
|
13
13
|
## 全体フロー図
|
|
14
14
|
|
|
15
|
-
### フェーズ1: 仕様書作成 (
|
|
15
|
+
### フェーズ1: 仕様書作成 (`einja-issue-spec-create` Skill)
|
|
16
16
|
|
|
17
17
|
```mermaid
|
|
18
18
|
graph TD
|
|
@@ -27,15 +27,15 @@ graph TD
|
|
|
27
27
|
E --> H
|
|
28
28
|
G --> H
|
|
29
29
|
|
|
30
|
-
H --> I["requirements.md 作成 (
|
|
30
|
+
H --> I["requirements.md 作成 (requirements-generator)"]
|
|
31
31
|
I --> J["ユーザーストーリー / 受け入れ基準ATDD形式 / 既存コード分析"]
|
|
32
32
|
J --> K{ユーザー承認}
|
|
33
|
-
K -->|承認| L["design.md 作成 (
|
|
33
|
+
K -->|承認| L["design.md 作成 (design-generator)"]
|
|
34
34
|
K -->|修正依頼| I
|
|
35
35
|
|
|
36
36
|
L --> M["技術アーキテクチャ / データモデル設計 / API仕様"]
|
|
37
37
|
M --> N{ユーザー承認}
|
|
38
|
-
N -->|承認| O["GitHub Issueにタスク記述 (
|
|
38
|
+
N -->|承認| O["GitHub Issueにタスク記述 (tasks-generator)"]
|
|
39
39
|
N -->|修正依頼| L
|
|
40
40
|
|
|
41
41
|
O --> P["実装タスク分解 / 依存関係管理 / 優先順位設定"]
|
|
@@ -47,7 +47,7 @@ graph TD
|
|
|
47
47
|
style Q fill:#c8e6c9
|
|
48
48
|
```
|
|
49
49
|
|
|
50
|
-
### フェーズ2: タスク実行 (
|
|
50
|
+
### フェーズ2: タスク実行 (`einja-task-exec` Skill)
|
|
51
51
|
|
|
52
52
|
**注記**: 品質保証ループにより、レビュー/QA失敗時は自動的に実装フェーズに戻ります。複数タスク一括実行も可能です。
|
|
53
53
|
|
|
@@ -59,7 +59,7 @@ graph TD
|
|
|
59
59
|
C --> LoopStart["⟲ 品質保証ループ開始"]
|
|
60
60
|
|
|
61
61
|
LoopStart --> D["ステップ1: 実装フェーズ<br/>(task-executer)"]
|
|
62
|
-
D --> E["requirements.md
|
|
62
|
+
D --> E["requirements.md, ui-design.pen, design.md を参照"]
|
|
63
63
|
E --> F["SerenaMAP で既存コード分析"]
|
|
64
64
|
F --> G["コード実装・修正<br/>ファイル作成/編集<br/>テストコード追加"]
|
|
65
65
|
|
|
@@ -91,11 +91,11 @@ graph TD
|
|
|
91
91
|
|
|
92
92
|
```mermaid
|
|
93
93
|
graph LR
|
|
94
|
-
A[
|
|
94
|
+
A[einja-issue-spec-create Skill] --> B[requirements.md]
|
|
95
95
|
A --> C[design.md]
|
|
96
96
|
A --> D[GitHub Issue]
|
|
97
97
|
|
|
98
|
-
D --> E[
|
|
98
|
+
D --> E[einja-task-exec Skill]
|
|
99
99
|
B --> E
|
|
100
100
|
C --> E
|
|
101
101
|
|
|
@@ -115,7 +115,7 @@ graph LR
|
|
|
115
115
|
|
|
116
116
|
## コマンド詳細
|
|
117
117
|
|
|
118
|
-
### 1.
|
|
118
|
+
### 1. `einja-issue-spec-create` Skill
|
|
119
119
|
|
|
120
120
|
**役割**: プロダクト開発のシニアテクニカルアーキテクト兼シニアプロダクトエンジニアとして、ATDD形式の仕様書を段階的に作成します。
|
|
121
121
|
|
|
@@ -123,13 +123,13 @@ graph LR
|
|
|
123
123
|
|
|
124
124
|
```bash
|
|
125
125
|
# Asanaタスクから仕様書作成
|
|
126
|
-
|
|
126
|
+
einja-issue-spec-create: https://app.asana.com/0/project/task-id
|
|
127
127
|
|
|
128
128
|
# 機能説明から仕様書作成
|
|
129
|
-
|
|
129
|
+
einja-issue-spec-create: "ユーザー認証機能の実装:マジックリンク認証とセッション管理"
|
|
130
130
|
|
|
131
131
|
# 既存仕様書を修正
|
|
132
|
-
|
|
132
|
+
einja-issue-spec-create: "認証機能の改善" /docs/specs/issues/auth/20250111-auth-magic-link/
|
|
133
133
|
```
|
|
134
134
|
|
|
135
135
|
#### 処理フロー詳細
|
|
@@ -150,7 +150,7 @@ Step 1: 外部リソース確認
|
|
|
150
150
|
└─ /docs/specs/issues/{domain}/{YYYYMMDD}-{domain}-{feature}/
|
|
151
151
|
|
|
152
152
|
Step 2: requirements.md 作成(要件定義書)
|
|
153
|
-
├─
|
|
153
|
+
├─ requirements-generator エージェント起動
|
|
154
154
|
├─ 既存コードベース分析
|
|
155
155
|
├─ ATDD形式のユーザーストーリー作成
|
|
156
156
|
├─ 受け入れ基準(Acceptance Criteria)定義
|
|
@@ -166,7 +166,7 @@ Step 2: requirements.md 作成(要件定義書)
|
|
|
166
166
|
- 非機能要件
|
|
167
167
|
|
|
168
168
|
Step 3: design.md 作成(設計書)
|
|
169
|
-
├─
|
|
169
|
+
├─ design-generator エージェント起動
|
|
170
170
|
├─ 既存アーキテクチャ調査
|
|
171
171
|
├─ 技術スタック選定(Next.js + Hono + Prisma)
|
|
172
172
|
├─ データモデル設計
|
|
@@ -184,7 +184,7 @@ Step 3: design.md 作成(設計書)
|
|
|
184
184
|
- エラーハンドリング
|
|
185
185
|
|
|
186
186
|
Step 4: GitHub Issueにタスク一覧を記述
|
|
187
|
-
├─
|
|
187
|
+
├─ tasks-generator エージェント起動
|
|
188
188
|
├─ 実装タスクの洗い出し
|
|
189
189
|
├─ タスクの分解(Phase別)
|
|
190
190
|
├─ 依存関係の定義
|
|
@@ -195,7 +195,7 @@ Step 4: GitHub Issueにタスク一覧を記述
|
|
|
195
195
|
│ └─ 修正依頼 → 再作成
|
|
196
196
|
└─ 📄 成果物構成:
|
|
197
197
|
**基本構成**(各ファイル1000行以下):
|
|
198
|
-
- requirements.md, design.md
|
|
198
|
+
- requirements.md, ui-design.pen, design.md
|
|
199
199
|
- GitHub Issueにタスク一覧
|
|
200
200
|
|
|
201
201
|
**分割構成**(1000行超過時):
|
|
@@ -207,7 +207,7 @@ Step 4: GitHub Issueにタスク一覧を記述
|
|
|
207
207
|
|
|
208
208
|
---
|
|
209
209
|
|
|
210
|
-
### 2.
|
|
210
|
+
### 2. `einja-task-exec` Skill
|
|
211
211
|
|
|
212
212
|
**役割**: タスク実行マネージャーとして、タスクの選定から実装、レビュー、QA、完了までの一連のプロセスを管理します。
|
|
213
213
|
|
|
@@ -220,13 +220,13 @@ Step 4: GitHub Issueにタスク一覧を記述
|
|
|
220
220
|
|
|
221
221
|
```bash
|
|
222
222
|
# Issue番号を指定(自動選定)
|
|
223
|
-
|
|
223
|
+
einja-task-exec: #123
|
|
224
224
|
|
|
225
225
|
# 特定のタスクグループを指定
|
|
226
|
-
|
|
226
|
+
einja-task-exec: #123 1.1
|
|
227
227
|
|
|
228
228
|
# Issue番号のみ(#なし)
|
|
229
|
-
|
|
229
|
+
einja-task-exec: 123
|
|
230
230
|
```
|
|
231
231
|
|
|
232
232
|
#### 処理フロー詳細
|
|
@@ -239,7 +239,7 @@ Step 4: GitHub Issueにタスク一覧を記述
|
|
|
239
239
|
└─────────────────────────────────────────────────────┘
|
|
240
240
|
↓
|
|
241
241
|
├─ task-executerサブエージェント起動
|
|
242
|
-
├─ requirements.md
|
|
242
|
+
├─ requirements.md, ui-design.pen, design.md を参照
|
|
243
243
|
├─ SerenaMAP で既存コード分析
|
|
244
244
|
│ ├─ 関連ファイルの検索
|
|
245
245
|
│ ├─ シンボル定義の確認
|
|
@@ -323,12 +323,12 @@ Step 4: GitHub Issueにタスク一覧を記述
|
|
|
323
323
|
詳細については、専用ドキュメントを参照してください:
|
|
324
324
|
**📖 [Issue実行ワークフローガイド](./issue-exec-workflow.md)**
|
|
325
325
|
|
|
326
|
-
####
|
|
326
|
+
#### `einja-task-exec` Skillとの使い分け
|
|
327
327
|
|
|
328
|
-
|
|
|
328
|
+
| 実行方法 | 用途 | 対象 | 推奨シーン |
|
|
329
329
|
|---------|------|------|----------|
|
|
330
330
|
| **`/einja:issue-exec`** | Issue全体の並列実行 | 複数Phase・複数タスクグループ | 大規模機能実装 |
|
|
331
|
-
|
|
|
331
|
+
| **`einja-task-exec` Skill** | 単一タスクグループの確実な完了 | 1つのタスクグループ | 複雑な実装、品質重視 |
|
|
332
332
|
|
|
333
333
|
**詳細な使い分け基準**: [issue-exec-workflow.md](./issue-exec-workflow.md#task-execとの使い分け)
|
|
334
334
|
|
|
@@ -342,10 +342,10 @@ Step 4: GitHub Issueにタスク一覧を記述
|
|
|
342
342
|
|
|
343
343
|
```bash
|
|
344
344
|
# Asanaタスクから仕様書を作成
|
|
345
|
-
|
|
345
|
+
einja-issue-spec-create: https://app.asana.com/0/project/auth-magic-link
|
|
346
346
|
|
|
347
347
|
# または機能説明から作成
|
|
348
|
-
|
|
348
|
+
einja-issue-spec-create: "マジックリンク認証機能:
|
|
349
349
|
- メールアドレスでログイン
|
|
350
350
|
- ワンタイムトークン生成
|
|
351
351
|
- メール送信
|
|
@@ -366,7 +366,7 @@ GitHub Issue #123 ← 実装タスク一覧(Phase 1〜3)
|
|
|
366
366
|
|
|
367
367
|
```bash
|
|
368
368
|
# Phase 1-1: トークン生成APIの実装
|
|
369
|
-
|
|
369
|
+
einja-task-exec: #123
|
|
370
370
|
|
|
371
371
|
# 実行内容:
|
|
372
372
|
# 1. task-executer: API実装、バリデーション追加
|
|
@@ -379,7 +379,7 @@ GitHub Issue #123 ← 実装タスク一覧(Phase 1〜3)
|
|
|
379
379
|
|
|
380
380
|
```bash
|
|
381
381
|
# Phase 1-2: メール送信機能の実装
|
|
382
|
-
|
|
382
|
+
einja-task-exec: #123
|
|
383
383
|
|
|
384
384
|
# 実行内容:
|
|
385
385
|
# 1. task-executer: メールサービス実装
|
|
@@ -392,8 +392,8 @@ GitHub Issue #123 ← 実装タスク一覧(Phase 1〜3)
|
|
|
392
392
|
|
|
393
393
|
```bash
|
|
394
394
|
# Phase 2, Phase 3 のタスクグループを順次実行
|
|
395
|
-
|
|
396
|
-
|
|
395
|
+
einja-task-exec: #123
|
|
396
|
+
einja-task-exec: #123
|
|
397
397
|
...
|
|
398
398
|
|
|
399
399
|
# 最終的にすべてのタスクグループが [x] 完了状態になる
|
|
@@ -451,7 +451,7 @@ GitHub Issue #123 ← 実装タスク一覧(Phase 1〜3)
|
|
|
451
451
|
stateDiagram-v2
|
|
452
452
|
[*] --> 未着手: タスク作成
|
|
453
453
|
|
|
454
|
-
未着手 --> 着手中_TaskExec:
|
|
454
|
+
未着手 --> 着手中_TaskExec: einja-task-exec Skill実行
|
|
455
455
|
未着手 --> IssueExec開始: /einja:issue-exec実行
|
|
456
456
|
|
|
457
457
|
着手中_TaskExec --> 実装中: 実装フェーズ
|
|
@@ -545,14 +545,14 @@ graph TD
|
|
|
545
545
|
# 原因: 依存関係が満たされていない
|
|
546
546
|
# 対処: 先行タスクグループを先に完了させる
|
|
547
547
|
|
|
548
|
-
|
|
548
|
+
einja-task-exec: #123 1.1 # 先行タスクグループを指定して実行
|
|
549
549
|
```
|
|
550
550
|
|
|
551
551
|
#### 2. レビューで差し戻される
|
|
552
552
|
|
|
553
553
|
```bash
|
|
554
554
|
# 原因: 要件や設計との不整合
|
|
555
|
-
# 対処: requirements.md
|
|
555
|
+
# 対処: requirements.md, ui-design.pen, design.md を再確認
|
|
556
556
|
|
|
557
557
|
# レビュー結果を確認後、再度実装フェーズから実行される
|
|
558
558
|
# (task-exec内で自動的に実装をやり直します)
|
|
@@ -575,8 +575,8 @@ graph TD
|
|
|
575
575
|
```mermaid
|
|
576
576
|
sequenceDiagram
|
|
577
577
|
participant User as ユーザー
|
|
578
|
-
participant SpecCreate as
|
|
579
|
-
participant TaskExec as
|
|
578
|
+
participant SpecCreate as einja-issue-spec-create
|
|
579
|
+
participant TaskExec as einja-task-exec
|
|
580
580
|
participant Executer as task-executer
|
|
581
581
|
participant Reviewer as task-reviewer
|
|
582
582
|
participant QA as task-qa
|
|
@@ -628,15 +628,15 @@ sequenceDiagram
|
|
|
628
628
|
|
|
629
629
|
### 実行の流れ
|
|
630
630
|
|
|
631
|
-
1. **仕様書作成**:
|
|
632
|
-
2. **タスク実行**:
|
|
631
|
+
1. **仕様書作成**: `einja-issue-spec-create` Skillで要件・設計を作成し、GitHub Issueにタスク一覧を記述
|
|
632
|
+
2. **タスク実行**: `einja-task-exec` Skillでタスクグループを1つずつ実行
|
|
633
633
|
- task-executerで実装
|
|
634
634
|
- task-reviewerでレビュー
|
|
635
635
|
- task-qaでQA
|
|
636
636
|
- 完了時にタスクグループを完了状態に更新
|
|
637
|
-
3. **繰り返し**:
|
|
637
|
+
3. **繰り返し**: 全タスクグループが完了するまで`einja-task-exec` Skillを繰り返す
|
|
638
638
|
|
|
639
|
-
|
|
639
|
+
開発を始める際は、まず`einja-issue-spec-create` Skillで仕様書を作成し、その後`einja-task-exec` Skillでタスクグループを順次実行していきます。
|
|
640
640
|
<!-- @einja:managed:end -->
|
|
641
641
|
|
|
642
642
|
<!-- @einja:project-private:start id="task-execute-project" -->
|
|
@@ -8,11 +8,11 @@
|
|
|
8
8
|
本プロジェクトでは、Claude Codeを活用した自動化された開発ワークフローを採用しています。
|
|
9
9
|
|
|
10
10
|
```
|
|
11
|
-
|
|
11
|
+
仕様書作成(einja-issue-spec-create Skill)
|
|
12
12
|
↓
|
|
13
13
|
仕様書レビュー(Discord + Spec PR)
|
|
14
14
|
↓
|
|
15
|
-
タスク実行(/einja:issue-exec or
|
|
15
|
+
タスク実行(/einja:issue-exec or einja-task-exec Skill)
|
|
16
16
|
↓
|
|
17
17
|
自己レビュー → PR作成(自動)
|
|
18
18
|
↓
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
│ Phase A: 仕様書作成 │
|
|
31
31
|
├─────────────────────────────────────────────────────────────────────────────┤
|
|
32
32
|
│ │
|
|
33
|
-
│
|
|
33
|
+
│ einja-issue-spec-create Skill <タスク内容の説明またはAsanaタスクURL> │
|
|
34
34
|
│ │ │
|
|
35
35
|
│ ├── 1. (AsanaURLの場合)Asanaからタスク情報取得 │
|
|
36
36
|
│ ├── 2. GitHub Issue作成 │
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
Spec PRをマージ
|
|
58
58
|
↓
|
|
59
59
|
┌─────────────────────────────────────────────────────────────────────────────┐
|
|
60
|
-
│ Phase B: タスク実行(/einja:issue-exec or
|
|
60
|
+
│ Phase B: タスク実行(/einja:issue-exec or einja-task-exec Skill) │
|
|
61
61
|
├─────────────────────────────────────────────────────────────────────────────┤
|
|
62
62
|
│ │
|
|
63
63
|
│ /einja:issue-exec #<issue-number> │
|
|
@@ -73,7 +73,7 @@
|
|
|
73
73
|
│ │ │ │
|
|
74
74
|
│ ▼ │ │
|
|
75
75
|
│ ┌─────────────────────────────────────────────────────┐ │ │
|
|
76
|
-
│ │ Worker
|
|
76
|
+
│ │ Worker(einja-task-exec Skill を実行) │ │ │
|
|
77
77
|
│ │ │ │ │
|
|
78
78
|
│ │ task-executer: 実装 │ │ │
|
|
79
79
|
│ │ ↓ │ │ │
|
|
@@ -101,6 +101,22 @@
|
|
|
101
101
|
│ │
|
|
102
102
|
│ 全 Phase 完了 → 最終 PR 作成(Issue → base ブランチ) │
|
|
103
103
|
│ │
|
|
104
|
+
└─────────────────────────────────────────────────────────────────────────────┘
|
|
105
|
+
↓
|
|
106
|
+
【PRレビュー・マージ → staging / main】
|
|
107
|
+
↓
|
|
108
|
+
┌─────────────────────────────────────────────────────────────────────────────┐
|
|
109
|
+
│ Phase C: リリース(自動) │
|
|
110
|
+
├─────────────────────────────────────────────────────────────────────────────┤
|
|
111
|
+
│ │
|
|
112
|
+
│ staging マージ時: │
|
|
113
|
+
│ → CI + Deploy(承認不要) │
|
|
114
|
+
│ → PreRelease 自動作成(v0.2.0-rc.42) │
|
|
115
|
+
│ │
|
|
116
|
+
│ main マージ時(staging → main 昇格PR): │
|
|
117
|
+
│ → CI + ⚠️承認待ち → Migrate + Deploy │
|
|
118
|
+
│ → changeset version → Release 自動作成(v0.2.0) │
|
|
119
|
+
│ │
|
|
104
120
|
└─────────────────────────────────────────────────────────────────────────────┘
|
|
105
121
|
```
|
|
106
122
|
|
|
@@ -108,10 +124,12 @@
|
|
|
108
124
|
|
|
109
125
|
## Phase A: 仕様書作成
|
|
110
126
|
|
|
111
|
-
###
|
|
127
|
+
### 実行方法
|
|
128
|
+
|
|
129
|
+
`einja-issue-spec-create` Skillを使用して仕様書を作成します。
|
|
112
130
|
|
|
113
|
-
```
|
|
114
|
-
|
|
131
|
+
```
|
|
132
|
+
タスク内容の説明またはAsanaタスクURL を引数に指定
|
|
115
133
|
```
|
|
116
134
|
|
|
117
135
|
### ステップ詳細
|
|
@@ -123,17 +141,19 @@
|
|
|
123
141
|
| 3 | Claude → **人間承認** | IssueBranchBase選択 |
|
|
124
142
|
| 4 | Claude | `issue/{番号}`ブランチ作成 |
|
|
125
143
|
| 5 | Claude → **人間承認** | requirements.md作成 → 確認 → コミット |
|
|
126
|
-
| 6 | Claude → **人間承認** | design.
|
|
127
|
-
| 7 | Claude → **人間承認** |
|
|
128
|
-
| 8 | Claude
|
|
129
|
-
| 9 |
|
|
130
|
-
| 10 | **人間** |
|
|
144
|
+
| 6 | Claude → **人間承認** | ui-design.pen作成 → 確認 → コミット |
|
|
145
|
+
| 7 | Claude → **人間承認** | design.md作成 → 確認 → コミット |
|
|
146
|
+
| 8 | Claude → **人間承認** | GitHub Issueにタスク一覧記述 |
|
|
147
|
+
| 9 | Claude | **Spec PR作成** |
|
|
148
|
+
| 10 | **人間** | Discordでチームにレビュー依頼 |
|
|
149
|
+
| 11 | **人間** | Spec PRレビュー・承認・マージ |
|
|
131
150
|
|
|
132
151
|
### 成果物
|
|
133
152
|
|
|
134
153
|
```
|
|
135
154
|
docs/specs/issues/{カテゴリ}/issue{番号}-{機能名}/
|
|
136
155
|
├── requirements.md # 要件定義書(ATDD形式)
|
|
156
|
+
├── ui-design.pen # UIモックアップ(Pencil MCP形式)
|
|
137
157
|
└── design.md # 設計書(技術詳細)
|
|
138
158
|
|
|
139
159
|
GitHub Issue #{番号} # タスク一覧(Phase別チェックボックス形式)
|
|
@@ -150,7 +170,7 @@ Spec PR # 仕様書レビュー用
|
|
|
150
170
|
|
|
151
171
|
## Phase B: タスク実行
|
|
152
172
|
|
|
153
|
-
###
|
|
173
|
+
### 実行方法
|
|
154
174
|
|
|
155
175
|
```bash
|
|
156
176
|
# Issue全体の並列実行(推奨:複数Phase・複数タスクグループの場合)
|
|
@@ -161,7 +181,7 @@ Spec PR # 仕様書レビュー用
|
|
|
161
181
|
/einja:issue-exec #123 --base develop # ベースブランチ指定
|
|
162
182
|
|
|
163
183
|
# 単一タスクグループ実行(品質重視・複雑な実装向け)
|
|
164
|
-
|
|
184
|
+
# einja-task-exec Skill を使用: Issue #123 のタスクグループ 1.1 を実行
|
|
165
185
|
```
|
|
166
186
|
|
|
167
187
|
### 実行後の流れ(/einja:issue-exec)
|
|
@@ -170,18 +190,18 @@ Spec PR # 仕様書レビュー用
|
|
|
170
190
|
|
|
171
191
|
1. **Manager** が Issue をパースし、Phase 毎に Director を tmux で起動
|
|
172
192
|
2. **Director** が Phase 内のタスクグループを依存順に Worker を起動
|
|
173
|
-
3. **Worker** が
|
|
193
|
+
3. **Worker** が `einja-task-exec` Skill を実行(executer → reviewer → qa → commit)
|
|
174
194
|
4. Worker 完了後、PR が自動作成される
|
|
175
195
|
5. マージモードに応じて PR がマージされ、次のタスクが自動開始
|
|
176
196
|
|
|
177
197
|
ユーザーは `tmux attach -t einja-{issue番号}` で全プロセスを監視できます。
|
|
178
198
|
|
|
179
|
-
### `/einja:issue-exec` と
|
|
199
|
+
### `/einja:issue-exec` と `einja-task-exec` Skill の使い分け
|
|
180
200
|
|
|
181
|
-
|
|
|
201
|
+
| 実行方法 | 用途 | 対象 | 推奨シーン |
|
|
182
202
|
|---------|------|------|----------|
|
|
183
203
|
| **`/einja:issue-exec`** | Issue全体の並列実行 | 複数Phase・複数タスクグループ | 大規模機能実装 |
|
|
184
|
-
|
|
|
204
|
+
| **`einja-task-exec` Skill** | 単一タスクグループの確実な完了 | 1つのタスクグループ | 複雑な実装、品質重視 |
|
|
185
205
|
|
|
186
206
|
### サブエージェントの役割
|
|
187
207
|
|
|
@@ -227,7 +247,7 @@ Phase 全タスク完了?
|
|
|
227
247
|
|
|
228
248
|
| PRの種類 | 作成タイミング | 内容 | レビュー観点 |
|
|
229
249
|
| ----------- | -------------------- | -------------------------- | ---------------------------------------------- |
|
|
230
|
-
| **Spec PR** |
|
|
250
|
+
| **Spec PR** | `einja-issue-spec-create` Skill完了時 | requirements.md, ui-design.pen, design.md | 要件の妥当性、UIデザインの適切さ、設計の適切さ、スコープの確認 |
|
|
231
251
|
| **実装PR** | タスクグループ完了時(Worker が自動作成) | ソースコード、テスト | コード品質、設計書との整合性、テストカバレッジ |
|
|
232
252
|
|
|
233
253
|
### なぜ2段階でPRを作成するのか
|
|
@@ -270,15 +290,17 @@ Phase 全タスク完了?
|
|
|
270
290
|
|
|
271
291
|
### 仕様書作成
|
|
272
292
|
|
|
293
|
+
`einja-issue-spec-create` Skill を使用します。
|
|
294
|
+
|
|
273
295
|
```bash
|
|
274
296
|
# タスク内容の説明から仕様書を作成
|
|
275
|
-
|
|
297
|
+
<タスク内容の説明>
|
|
276
298
|
|
|
277
299
|
# AsanaタスクURLから仕様書を作成
|
|
278
|
-
|
|
300
|
+
<AsanaタスクURL>
|
|
279
301
|
|
|
280
302
|
# 既存仕様書のパスを指定して修正
|
|
281
|
-
|
|
303
|
+
<タスク内容> <既存仕様書パス>
|
|
282
304
|
```
|
|
283
305
|
|
|
284
306
|
### タスク実行
|
|
@@ -291,12 +313,12 @@ Phase 全タスク完了?
|
|
|
291
313
|
/einja:issue-exec #<issue_number> --merge-mode auto --max-phase 2
|
|
292
314
|
|
|
293
315
|
# 単一タスクグループ実行(品質重視・複雑な実装向け)
|
|
294
|
-
|
|
316
|
+
# einja-task-exec Skill を使用: #<issue_number> <task_group_number>
|
|
295
317
|
|
|
296
318
|
# 例
|
|
297
319
|
/einja:issue-exec #123 # Issue #123 の全タスクを並列実行
|
|
298
320
|
/einja:issue-exec #123 --merge-mode task-group-auto # タスクPR自動マージ
|
|
299
|
-
|
|
321
|
+
# einja-task-exec Skill: #123 1.1 # タスクグループ 1.1 を単発実行
|
|
300
322
|
```
|
|
301
323
|
|
|
302
324
|
---
|
|
@@ -310,6 +332,52 @@ Phase 全タスク完了?
|
|
|
310
332
|
|
|
311
333
|
---
|
|
312
334
|
|
|
335
|
+
## Phase C: リリース
|
|
336
|
+
|
|
337
|
+
### changeset運用フロー
|
|
338
|
+
|
|
339
|
+
PRにchangesetを含めることで、バージョン管理とリリースノートが自動化されます。
|
|
340
|
+
|
|
341
|
+
#### changeset追加手順
|
|
342
|
+
|
|
343
|
+
```bash
|
|
344
|
+
# 1. changeset対話UIを起動
|
|
345
|
+
pnpm changeset
|
|
346
|
+
|
|
347
|
+
# 2. 変更対象パッケージを選択(apps/web, apps/admin等)
|
|
348
|
+
# 3. 変更種別を選択(major / minor / patch)
|
|
349
|
+
# 4. 変更サマリーを入力
|
|
350
|
+
# 5. .changeset/ にmdファイルが生成される
|
|
351
|
+
# 6. コミットに含める
|
|
352
|
+
```
|
|
353
|
+
|
|
354
|
+
#### 自動生成(einja-create-pr Skill)
|
|
355
|
+
|
|
356
|
+
`/einja-create-pr` またはtask-exec/issue-exec経由でPR作成する場合、changesetは自動生成されます。
|
|
357
|
+
|
|
358
|
+
#### changesetの要否
|
|
359
|
+
|
|
360
|
+
| 変更内容 | changeset必要 |
|
|
361
|
+
|---------|:------------:|
|
|
362
|
+
| 新機能追加(apps/配下) | ✅ |
|
|
363
|
+
| バグ修正(apps/配下) | ✅ |
|
|
364
|
+
| ドキュメントのみ | ❌ |
|
|
365
|
+
| CI/CD設定のみ | ❌ |
|
|
366
|
+
| .claude/ 設定のみ | ❌ |
|
|
367
|
+
| packages/(内部パッケージ) | ❌ |
|
|
368
|
+
|
|
369
|
+
#### changeset消費フロー
|
|
370
|
+
|
|
371
|
+
```
|
|
372
|
+
feature → staging PR(changeset含む)
|
|
373
|
+
↓ マージ
|
|
374
|
+
staging: changeset未消費 → PreRelease(v0.2.0-rc.42)
|
|
375
|
+
↓ 昇格PR
|
|
376
|
+
main: changeset version → バージョンバンプ → Release(v0.2.0)
|
|
377
|
+
```
|
|
378
|
+
|
|
379
|
+
---
|
|
380
|
+
|
|
313
381
|
## FAQ
|
|
314
382
|
|
|
315
383
|
### Q: Spec PRをマージする前にタスク実行を開始できますか?
|
|
@@ -134,6 +134,7 @@ graph LR
|
|
|
134
134
|
ReleaseCLI[release-cli.yml]
|
|
135
135
|
ReleaseApp[release-create-einja-app.yml]
|
|
136
136
|
Claude[claude.yml]
|
|
137
|
+
ChangesetStatus[changeset-status.yml]
|
|
137
138
|
end
|
|
138
139
|
|
|
139
140
|
subgraph "Composite Actions"
|
|
@@ -162,6 +163,7 @@ graph LR
|
|
|
162
163
|
| **Release CLI** | `release-cli.yml` | tag `cli-v*` / 手動 | @einja/dev-cli をNPM公開 |
|
|
163
164
|
| **Release App** | `release-create-einja-app.yml` | tag `create-einja-app-v*` / 手動 | create-einja-app をNPM公開 |
|
|
164
165
|
| **Claude** | `claude.yml` | @claude メンション | Claude Code実行 |
|
|
166
|
+
| **Changeset Status** | `changeset-status.yml` | PR to main/staging | PR上にchangesetの有無を表示 |
|
|
165
167
|
|
|
166
168
|
### Composite Actions(2層構造)
|
|
167
169
|
|
|
@@ -679,6 +681,111 @@ sequenceDiagram
|
|
|
679
681
|
|
|
680
682
|
---
|
|
681
683
|
|
|
684
|
+
## 8. リリース管理
|
|
685
|
+
|
|
686
|
+
### GitHub Release / PreRelease 自動作成フロー
|
|
687
|
+
|
|
688
|
+
```mermaid
|
|
689
|
+
flowchart LR
|
|
690
|
+
subgraph staging
|
|
691
|
+
S1[staging push] --> S2[CI + Deploy]
|
|
692
|
+
S2 --> S3[PreRelease作成<br/>v0.2.0-rc.42]
|
|
693
|
+
end
|
|
694
|
+
|
|
695
|
+
subgraph main
|
|
696
|
+
M1[main push] --> M2[CI]
|
|
697
|
+
M2 --> M3[⚠️承認待ち]
|
|
698
|
+
M3 --> M4[Migrate + Deploy]
|
|
699
|
+
M4 --> M5[changeset version]
|
|
700
|
+
M5 --> M6[Release作成<br/>v0.2.0]
|
|
701
|
+
end
|
|
702
|
+
|
|
703
|
+
staging -->|昇格PR| main
|
|
704
|
+
```
|
|
705
|
+
|
|
706
|
+
| 環境 | リリース種別 | タグ形式 | changeset消費 | 承認 |
|
|
707
|
+
|------|------------|---------|:------------:|:----:|
|
|
708
|
+
| staging | PreRelease | `v{version}-rc.{run_number}` | ❌ | 不要 |
|
|
709
|
+
| production | Release | `v{version}` | ✅ | 1名必要 |
|
|
710
|
+
|
|
711
|
+
### ワークフロー内リリースジョブ
|
|
712
|
+
|
|
713
|
+
`deploy-stable-branches.yml` 内に統合:
|
|
714
|
+
|
|
715
|
+
| ジョブ | トリガー | 処理内容 |
|
|
716
|
+
|--------|---------|---------|
|
|
717
|
+
| `release-staging` | staging デプロイ成功後 | RCタグ作成 → GitHub PreRelease作成 |
|
|
718
|
+
| `release-production` | production デプロイ成功後 | changeset version → バージョンバンプ → タグ作成 → GitHub Release作成 |
|
|
719
|
+
|
|
720
|
+
### NPMリリースとの棲み分け
|
|
721
|
+
|
|
722
|
+
| タグパターン | 用途 | 生成元 |
|
|
723
|
+
|-------------|------|--------|
|
|
724
|
+
| `v1.2.0` | アプリ Stable Release | deploy-stable-branches.yml |
|
|
725
|
+
| `v1.2.0-rc.42` | アプリ PreRelease | deploy-stable-branches.yml |
|
|
726
|
+
| `cli-v0.1.41` | @einja/dev-cli | 手動タグ(既存運用) |
|
|
727
|
+
| `create-einja-app-v0.3.2` | create-einja-app | 手動タグ(既存運用) |
|
|
728
|
+
|
|
729
|
+
---
|
|
730
|
+
|
|
731
|
+
## 9. バージョニング戦略
|
|
732
|
+
|
|
733
|
+
### changesets
|
|
734
|
+
|
|
735
|
+
[changesets](https://github.com/changesets/changesets) を使用してセマンティックバージョニングを管理。
|
|
736
|
+
|
|
737
|
+
| 変更種別 | changeset指定 | バージョン変更例 | 使用シーン |
|
|
738
|
+
|---------|--------------|----------------|----------|
|
|
739
|
+
| 破壊的変更 | `major` | `0.1.0` → `1.0.0` | API仕様変更、DB破壊的マイグレーション |
|
|
740
|
+
| 新機能追加 | `minor` | `0.1.0` → `0.2.0` | 新画面、新API追加 |
|
|
741
|
+
| バグ修正 | `patch` | `0.1.0` → `0.1.1` | 不具合修正、パフォーマンス改善 |
|
|
742
|
+
|
|
743
|
+
### changeset消費タイミング
|
|
744
|
+
|
|
745
|
+
| ブランチ | changeset消費 | バージョンバンプ | タグ形式 |
|
|
746
|
+
|---------|-------------|----------------|---------|
|
|
747
|
+
| staging | **消費しない** | なし(package.json据え置き) | `v{current}-rc.{run_number}` |
|
|
748
|
+
| main | `changeset version` で消費 | package.json更新 | `v{new_version}` |
|
|
749
|
+
|
|
750
|
+
### 無限ループ防止(多重防御)
|
|
751
|
+
|
|
752
|
+
1. `GITHUB_TOKEN` で作成されたpushイベントはデフォルトでワークフローを再トリガーしない
|
|
753
|
+
2. コミットメッセージ `chore: release v` でのフィルタリング
|
|
754
|
+
3. バージョンバンプコミットは `github-actions[bot]` 名義
|
|
755
|
+
|
|
756
|
+
---
|
|
757
|
+
|
|
758
|
+
## 10. 承認フロー
|
|
759
|
+
|
|
760
|
+
### GitHub Environments
|
|
761
|
+
|
|
762
|
+
| Environment | Required Reviewers | Wait Timer | Deployment Branches |
|
|
763
|
+
|------------|-------------------|------------|-------------------|
|
|
764
|
+
| `staging` | なし | なし | `staging`のみ |
|
|
765
|
+
| `production` | 1名 | なし | `main`のみ |
|
|
766
|
+
|
|
767
|
+
### 承認フロー詳細
|
|
768
|
+
|
|
769
|
+
```mermaid
|
|
770
|
+
sequenceDiagram
|
|
771
|
+
participant Dev as 開発者
|
|
772
|
+
participant GH as GitHub Actions
|
|
773
|
+
participant Rev as Reviewer
|
|
774
|
+
participant Prod as Production
|
|
775
|
+
|
|
776
|
+
Dev->>GH: main push
|
|
777
|
+
GH->>GH: CI checks
|
|
778
|
+
GH->>Rev: ⚠️ 承認リクエスト
|
|
779
|
+
Note over Rev: GitHub UIで承認
|
|
780
|
+
Rev->>GH: ✅ 承認
|
|
781
|
+
GH->>Prod: Migrate + Deploy
|
|
782
|
+
GH->>GH: Release作成
|
|
783
|
+
```
|
|
784
|
+
|
|
785
|
+
production環境へのデプロイは `migrate-production` ジョブで承認ゲートを設定。承認後にマイグレーションとデプロイが実行される。
|
|
786
|
+
|
|
787
|
+
---
|
|
788
|
+
|
|
682
789
|
## 関連ドキュメント
|
|
683
790
|
|
|
684
791
|
- [環境変数設計方針](./environment-variables.md)
|