@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.
Files changed (103) hide show
  1. package/README.md +0 -1
  2. package/dist/cli.js +0 -1
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/sync.d.ts.map +1 -1
  5. package/dist/commands/sync.js +1 -20
  6. package/dist/commands/sync.js.map +1 -1
  7. package/dist/commands/task-loop/lib/github-client.test.js.map +1 -1
  8. package/dist/commands/task-loop/lib/vibe-kanban-rest-client.js +2 -2
  9. package/dist/commands/task-loop/lib/vibe-kanban-rest-client.js.map +1 -1
  10. package/dist/lib/preset-update/file-copier.js +3 -3
  11. package/dist/lib/preset-update/file-copier.js.map +1 -1
  12. package/dist/lib/sync/file-filter.js +2 -2
  13. package/dist/lib/sync/file-filter.js.map +1 -1
  14. package/dist/lib/sync/file-filter.test.js +20 -0
  15. package/dist/lib/sync/file-filter.test.js.map +1 -1
  16. package/dist/lib/sync/marker-processor.js.map +1 -1
  17. package/dist/lib/sync/metadata-manager.js +1 -1
  18. package/dist/lib/sync/metadata-manager.js.map +1 -1
  19. package/dist/lib/sync/metadata-manager.test.js +3 -2
  20. package/dist/lib/sync/metadata-manager.test.js.map +1 -1
  21. package/dist/lib/sync/project-private-synchronizer.d.ts.map +1 -1
  22. package/dist/lib/sync/project-private-synchronizer.js +5 -1
  23. package/dist/lib/sync/project-private-synchronizer.js.map +1 -1
  24. package/dist/types/index.d.ts +0 -1
  25. package/dist/types/index.d.ts.map +1 -1
  26. package/package.json +1 -1
  27. package/presets/default/.claude/agents/einja/backend-architect.md +17 -1
  28. package/presets/default/.claude/agents/einja/codex-agent.md +1 -1
  29. package/presets/default/.claude/agents/einja/design-engineer.md +1 -1
  30. package/presets/default/.claude/agents/einja/docs/docs-updater.md +3 -93
  31. package/presets/default/.claude/agents/einja/frontend-architect.md +17 -1
  32. package/presets/default/.claude/agents/einja/frontend-coder.md +1 -1
  33. package/presets/default/.claude/agents/einja/{specs/spec-design-generator.md → issue-specs/design-generator.md} +12 -7
  34. package/presets/default/.claude/agents/einja/{specs/spec-qa-generator.md → issue-specs/qa-generator.md} +6 -4
  35. package/presets/default/.claude/agents/einja/{specs/spec-requirements-generator.md → issue-specs/requirements-generator.md} +5 -5
  36. package/presets/default/.claude/agents/einja/{specs/spec-tasks-generator.md → issue-specs/tasks-generator.md} +13 -14
  37. package/presets/default/.claude/agents/einja/{specs/spec-tasks-validator.md → issue-specs/tasks-validator.md} +9 -9
  38. package/presets/default/.claude/agents/einja/issue-specs/ui-design-generator.md +114 -0
  39. package/presets/default/.claude/agents/einja/task/task-executer.md +9 -3
  40. package/presets/default/.claude/agents/einja/task/task-modification-analyzer.md +2 -2
  41. package/presets/default/.claude/agents/einja/task/task-qa.md +3 -3
  42. package/presets/default/.claude/agents/einja/task/task-reviewer.md +13 -1
  43. package/presets/default/.claude/commands/einja/einja-sync.md +119 -44
  44. package/presets/default/.claude/commands/einja/issue-exec.md +29 -19
  45. package/presets/default/.claude/commands/einja/sync-cursor-commands.md +6 -6
  46. package/presets/default/.claude/commands/einja/{update-docs-by-task-specs.md → update-docs-by-issue-specs.md} +58 -58
  47. package/presets/default/.claude/hooks/einja/plan-mode-skill-loader.sh +5 -1
  48. package/presets/default/.claude/settings.json +14 -4
  49. package/presets/default/.claude/skills/{einja-general-context-loader → _einja-general-context-loader}/SKILL.md +2 -2
  50. package/presets/default/.claude/skills/{einja-output-format → _einja-output-format}/SKILL.md +1 -1
  51. package/presets/default/.claude/skills/_einja-project-overview/SKILL.md +29 -0
  52. package/presets/default/.claude/skills/{einja-spec-context-loader → _einja-spec-context-loader}/SKILL.md +5 -5
  53. package/presets/default/.claude/skills/einja-coding-standards/references/testing-strategy.md +899 -0
  54. package/presets/default/.claude/skills/einja-conflict-resolver/SKILL.md +1 -1
  55. package/presets/default/.claude/skills/einja-create-pr/SKILL.md +138 -0
  56. package/presets/default/.claude/skills/einja-infra-maintenance/SKILL.md +779 -0
  57. package/presets/default/.claude/{commands/einja/spec-create.md → skills/einja-issue-spec-create/SKILL.md} +47 -24
  58. package/presets/default/.claude/skills/einja-issue-spec-generator/SKILL.md +105 -0
  59. package/presets/default/.claude/skills/einja-issue-spec-generator/references/format-rules.md +35 -0
  60. package/presets/default/.claude/skills/einja-issue-spec-validator/SKILL.md +130 -0
  61. package/presets/default/.claude/skills/einja-issue-spec-validator/references/validation-rules.md +52 -0
  62. package/presets/default/.claude/skills/einja-npm-release/SKILL.md +242 -0
  63. package/presets/default/.claude/skills/einja-skill-creator/SKILL.md +68 -12
  64. package/presets/default/.claude/skills/einja-skill-creator/scripts/aggregate_benchmark.py +368 -121
  65. package/presets/default/.claude/skills/einja-skill-creator/scripts/compare_runs.py +154 -0
  66. package/presets/default/.claude/skills/einja-skill-creator/scripts/generate_report.py +14 -7
  67. package/presets/default/.claude/skills/einja-skill-creator/scripts/improve_description.py +2 -7
  68. package/presets/default/.claude/skills/einja-skill-creator/scripts/run_loop.py +263 -183
  69. package/presets/default/.claude/skills/einja-skill-first/SKILL.md +265 -0
  70. package/presets/default/.claude/skills/einja-subagent-question-protocol/SKILL.md +98 -0
  71. package/presets/default/.claude/skills/einja-task-commit/SKILL.md +7 -7
  72. package/presets/default/.claude/{commands/einja/task-exec.md → skills/einja-task-exec/SKILL.md} +3 -78
  73. package/presets/default/.claude/skills/einja-task-qa/SKILL.md +4 -4
  74. package/presets/default/.claude/skills/einja-task-qa/references/troubleshooting.md +1 -1
  75. package/presets/default/.claude/skills/einja-task-qa/references/usage-patterns.md +2 -2
  76. package/presets/default/.claude/skills/einja-team-exec/SKILL.md +165 -0
  77. package/presets/default/CLAUDE.md.template +21 -6
  78. package/presets/default/docs/einja/instructions/deployment-setup.md +1 -1
  79. package/presets/default/docs/einja/instructions/issue-exec-workflow.md +11 -11
  80. package/presets/default/docs/einja/instructions/local-server-environment-and-worktree.md +1 -1
  81. package/presets/default/docs/einja/instructions/setup-flow.md +279 -0
  82. package/presets/default/docs/einja/instructions/task-execute.md +42 -42
  83. package/presets/default/docs/einja/steering/acceptance-criteria-and-qa-guide.md +1 -1
  84. package/presets/default/docs/einja/steering/branch-strategy.md +1 -1
  85. package/presets/default/docs/einja/steering/development-workflow.md +93 -25
  86. package/presets/default/docs/einja/steering/infrastructure/deployment.md +107 -0
  87. package/presets/default/docs/einja/steering/task-management.md +9 -13
  88. package/presets/default/scripts/ensure-serena.sh +2 -2
  89. package/presets/default/scripts/env-rotate-secrets.ts +66 -6
  90. package/presets/default/scripts/init-github.ts +363 -0
  91. package/presets/default/scripts/init.sh +11 -5
  92. package/presets/default/scripts/setup-dev.ts +16 -1
  93. package/dist/lib/sync/backup-manager.d.ts +0 -50
  94. package/dist/lib/sync/backup-manager.d.ts.map +0 -1
  95. package/dist/lib/sync/backup-manager.js +0 -117
  96. package/dist/lib/sync/backup-manager.js.map +0 -1
  97. package/dist/lib/sync/backup-manager.test.d.ts +0 -2
  98. package/dist/lib/sync/backup-manager.test.d.ts.map +0 -1
  99. package/dist/lib/sync/backup-manager.test.js +0 -155
  100. package/dist/lib/sync/backup-manager.test.js.map +0 -1
  101. package/presets/default/.claude/agents/einja/git/conflict-resolver.md +0 -152
  102. package/presets/default/.claude/hooks/einja/validate-git-commit.sh +0 -239
  103. 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
- このドキュメントでは、`/einja:spec-create`と`/einja:task-exec`コマンドを使用したATDD(受け入れテスト駆動開発)に基づく開発ワークフローについて説明します。
4
+ このドキュメントでは、`einja-issue-spec-create` Skillと`einja-task-exec` Skillを使用したATDD(受け入れテスト駆動開発)に基づく開発ワークフローについて説明します。
5
5
 
6
6
  ## 概要
7
7
 
8
8
  開発プロセスは2つの主要なコマンドで構成されています:
9
9
 
10
- 1. **`/einja:spec-create`**: 仕様書の作成(要件定義 → 設計 → GitHub Issueへのタスク記述)
11
- 2. **`/einja:task-exec`**: タスクの実行(選定 → 実装 → レビュー → QA → 完了)
10
+ 1. **`einja-issue-spec-create` Skill**: 仕様書の作成(要件定義 → 設計 → GitHub Issueへのタスク記述)
11
+ 2. **`einja-task-exec` Skill**: タスクの実行(選定 → 実装 → レビュー → QA → 完了)
12
12
 
13
13
  ## 全体フロー図
14
14
 
15
- ### フェーズ1: 仕様書作成 (`/einja:spec-create`)
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 作成 (spec-requirements-generator)"]
30
+ H --> I["requirements.md 作成 (requirements-generator)"]
31
31
  I --> J["ユーザーストーリー / 受け入れ基準ATDD形式 / 既存コード分析"]
32
32
  J --> K{ユーザー承認}
33
- K -->|承認| L["design.md 作成 (spec-design-generator)"]
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にタスク記述 (spec-tasks-generator)"]
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: タスク実行 (`/einja:task-exec`)
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 design.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[/einja:spec-create] --> B[requirements.md]
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[/einja:task-exec]
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. `/einja:spec-create` コマンド
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
- /einja:spec-create https://app.asana.com/0/project/task-id
126
+ einja-issue-spec-create: https://app.asana.com/0/project/task-id
127
127
 
128
128
  # 機能説明から仕様書作成
129
- /einja:spec-create "ユーザー認証機能の実装:マジックリンク認証とセッション管理"
129
+ einja-issue-spec-create: "ユーザー認証機能の実装:マジックリンク認証とセッション管理"
130
130
 
131
131
  # 既存仕様書を修正
132
- /einja:spec-create "認証機能の改善" /docs/specs/issues/auth/20250111-auth-magic-link/
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
- ├─ spec-requirements-generator エージェント起動
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
- ├─ spec-design-generator エージェント起動
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
- ├─ spec-tasks-generator エージェント起動
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. `/einja:task-exec` コマンド
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
- /einja:task-exec #123
223
+ einja-task-exec: #123
224
224
 
225
225
  # 特定のタスクグループを指定
226
- /einja:task-exec #123 1.1
226
+ einja-task-exec: #123 1.1
227
227
 
228
228
  # Issue番号のみ(#なし)
229
- /einja:task-exec 123
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 design.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
- #### `/einja:task-exec`との使い分け
326
+ #### `einja-task-exec` Skillとの使い分け
327
327
 
328
- | コマンド | 用途 | 対象 | 推奨シーン |
328
+ | 実行方法 | 用途 | 対象 | 推奨シーン |
329
329
  |---------|------|------|----------|
330
330
  | **`/einja:issue-exec`** | Issue全体の並列実行 | 複数Phase・複数タスクグループ | 大規模機能実装 |
331
- | **`/einja:task-exec`** | 単一タスクグループの確実な完了 | 1つのタスクグループ | 複雑な実装、品質重視 |
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
- /einja:spec-create https://app.asana.com/0/project/auth-magic-link
345
+ einja-issue-spec-create: https://app.asana.com/0/project/auth-magic-link
346
346
 
347
347
  # または機能説明から作成
348
- /einja:spec-create "マジックリンク認証機能:
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
- /einja:task-exec #123
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
- /einja:task-exec #123
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
- /einja:task-exec #123
396
- /einja:task-exec #123
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: /einja:task-exec実行
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
- /einja:task-exec #123 1.1 # 先行タスクグループを指定して実行
548
+ einja-task-exec: #123 1.1 # 先行タスクグループを指定して実行
549
549
  ```
550
550
 
551
551
  #### 2. レビューで差し戻される
552
552
 
553
553
  ```bash
554
554
  # 原因: 要件や設計との不整合
555
- # 対処: requirements.md design.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 /einja:spec-create
579
- participant TaskExec as /einja:task-exec
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. **仕様書作成**: `/einja:spec-create`で要件・設計を作成し、GitHub Issueにタスク一覧を記述
632
- 2. **タスク実行**: `/einja:task-exec`でタスクグループを1つずつ実行
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. **繰り返し**: 全タスクグループが完了するまで`/einja:task-exec`を繰り返す
637
+ 3. **繰り返し**: 全タスクグループが完了するまで`einja-task-exec` Skillを繰り返す
638
638
 
639
- 開発を始める際は、まず`/einja:spec-create`で仕様書を作成し、その後`/einja:task-exec`でタスクグループを順次実行していきます。
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" -->
@@ -110,7 +110,7 @@ ACx.y: <振る舞いの1文要約>
110
110
  ```
111
111
 
112
112
  **シナリオテストの設計タイミング**:
113
- - `/einja:spec-create` コマンドの QAテスト仕様生成フェーズで作成
113
+ - `einja-issue-spec-create` Skill QAテスト仕様生成フェーズで作成
114
114
  - requirements.md の受け入れ条件を分析し、複数ACをまたぐフローを特定
115
115
  - タスク分割前に完了させる
116
116
 
@@ -195,7 +195,7 @@ sequenceDiagram
195
195
  **同期の原則**:
196
196
  - 先行タスクの PR マージにより Phase ブランチが更新される
197
197
  - 後続タスクは更新済み Phase ブランチから派生するため変更を引き継ぐ
198
- - コンフリクト発生時は conflict-resolver で解消
198
+ - コンフリクト発生時は einja-conflict-resolver Skill で解消
199
199
 
200
200
  ### 変更の取り込み対象
201
201
 
@@ -8,11 +8,11 @@
8
8
  本プロジェクトでは、Claude Codeを活用した自動化された開発ワークフローを採用しています。
9
9
 
10
10
  ```
11
- 仕様書作成(/einja:spec-create)
11
+ 仕様書作成(einja-issue-spec-create Skill
12
12
 
13
13
  仕様書レビュー(Discord + Spec PR)
14
14
 
15
- タスク実行(/einja:issue-exec or /einja:task-exec)
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
- /einja:spec-create <タスク内容の説明またはAsanaタスクURL>
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 /einja:task-exec) │
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(/einja:task-exec を実行) │ │ │
76
+ │ │ Workereinja-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
- ```bash
114
- /einja:spec-create <タスク内容の説明またはAsanaタスクURL>
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.md作成 → 確認 → コミット |
127
- | 7 | Claude → **人間承認** | GitHub Issueにタスク一覧記述 |
128
- | 8 | Claude | **Spec PR作成** |
129
- | 9 | **人間** | Discordでチームにレビュー依頼 |
130
- | 10 | **人間** | Spec PRレビュー・承認・マージ |
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
- /einja:task-exec #123 1.1 # Issue #123 のタスクグループ 1.1 を実行
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** が `/einja:task-exec` を実行(executer → reviewer → qa → commit)
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` と `/einja:task-exec` の使い分け
199
+ ### `/einja:issue-exec` と `einja-task-exec` Skill の使い分け
180
200
 
181
- | コマンド | 用途 | 対象 | 推奨シーン |
201
+ | 実行方法 | 用途 | 対象 | 推奨シーン |
182
202
  |---------|------|------|----------|
183
203
  | **`/einja:issue-exec`** | Issue全体の並列実行 | 複数Phase・複数タスクグループ | 大規模機能実装 |
184
- | **`/einja:task-exec`** | 単一タスクグループの確実な完了 | 1つのタスクグループ | 複雑な実装、品質重視 |
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** | `/einja:spec-create`完了時 | requirements.md, design.md | 要件の妥当性、設計の適切さ、スコープの確認 |
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
- /einja:spec-create <タスク内容の説明>
297
+ <タスク内容の説明>
276
298
 
277
299
  # AsanaタスクURLから仕様書を作成
278
- /einja:spec-create <AsanaタスクURL>
300
+ <AsanaタスクURL>
279
301
 
280
302
  # 既存仕様書のパスを指定して修正
281
- /einja:spec-create <タスク内容> <既存仕様書パス>
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
- /einja:task-exec #<issue_number> <task_group_number>
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
- /einja:task-exec #123 1.1 # タスクグループ 1.1 を単発実行
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)