create-einja-app 0.3.1 → 0.3.2

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 (80) hide show
  1. package/README.md +1 -1
  2. package/dist/cli.js +32 -16
  3. package/dist/cli.js.map +1 -1
  4. package/package.json +1 -1
  5. package/templates/default/.claude/hooks/einja/plan-mode-skill-loader.sh +23 -0
  6. package/templates/default/.claude/settings.json +15 -1
  7. package/templates/default/.env.personal.example +6 -2
  8. package/templates/default/.envrc +5 -0
  9. package/templates/default/.github/workflows/deploy-pr-preview.yml +23 -24
  10. package/templates/default/.github/workflows/deploy-stable-branches.yml +55 -49
  11. package/templates/default/.mcp.json +2 -12
  12. package/templates/default/.serena/project.yml +7 -0
  13. package/templates/default/CLAUDE.md +28 -4
  14. package/templates/default/README.md +2 -2
  15. package/templates/default/apps/admin/package.json +1 -1
  16. package/templates/default/apps/admin/tsconfig.json +2 -1
  17. package/templates/default/apps/web/package.json +1 -1
  18. package/templates/default/apps/web/tsconfig.json +2 -1
  19. package/templates/default/docs/plans/.gitkeep +0 -0
  20. package/templates/default/docs/plans/ancient-greeting-flamingo-agent-a87e67c.md +221 -0
  21. package/templates/default/docs/plans/ancient-greeting-flamingo-agent-ab73a1c.md +107 -0
  22. package/templates/default/docs/plans/ancient-greeting-flamingo.md +120 -0
  23. package/templates/default/docs/plans/bright-stargazing-dawn.md +87 -0
  24. package/templates/default/docs/plans/calm-stirring-bonbon.md +196 -0
  25. package/templates/default/docs/plans/calm-watching-widget.md +111 -0
  26. package/templates/default/docs/plans/cheerful-wiggling-ullman.md +164 -0
  27. package/templates/default/docs/plans/compiled-humming-cherny.md +94 -0
  28. package/templates/default/docs/plans/dapper-launching-lynx.md +81 -0
  29. package/templates/default/docs/plans/effervescent-munching-kite-agent-ac08baf.md +672 -0
  30. package/templates/default/docs/plans/effervescent-munching-kite-agent-aecc373.md +442 -0
  31. package/templates/default/docs/plans/effervescent-munching-kite.md +263 -0
  32. package/templates/default/docs/plans/fix-orphan-cleaner-review.md +25 -0
  33. package/templates/default/docs/plans/fix-sync-template-variables.md +162 -0
  34. package/templates/default/docs/plans/glimmering-giggling-sedgewick.md +126 -0
  35. package/templates/default/docs/plans/glittery-swimming-bachman.md +78 -0
  36. package/templates/default/docs/plans/happy-watching-toast.md +56 -0
  37. package/templates/default/docs/plans/harmonic-strolling-nebula.md +210 -0
  38. package/templates/default/docs/plans/import-alias-refactor.md +75 -0
  39. package/templates/default/docs/plans/lazy-percolating-sloth-agent-abda679.md +346 -0
  40. package/templates/default/docs/plans/lazy-percolating-sloth.md +151 -0
  41. package/templates/default/docs/plans/linked-greeting-llama-agent-a7a6e5b.md +345 -0
  42. package/templates/default/docs/plans/linked-greeting-llama.md +467 -0
  43. package/templates/default/docs/plans/lovely-bubbling-rose.md +80 -0
  44. package/templates/default/docs/plans/optimized-watching-sprout.md +149 -0
  45. package/templates/default/docs/plans/peaceful-beaming-toast-agent-a292da6.md +288 -0
  46. package/templates/default/docs/plans/peaceful-beaming-toast-agent-a819699.md +366 -0
  47. package/templates/default/docs/plans/peaceful-beaming-toast-agent-ac11de2.md +474 -0
  48. package/templates/default/docs/plans/peaceful-beaming-toast.md +345 -0
  49. package/templates/default/docs/plans/purrfect-spinning-hickey-agent-ae6194c.md +300 -0
  50. package/templates/default/docs/plans/purrfect-spinning-hickey-agent-ae6900e.md +444 -0
  51. package/templates/default/docs/plans/purrfect-spinning-hickey.md +361 -0
  52. package/templates/default/docs/plans/recursive-kindling-lemon-agent-a42199e.md +186 -0
  53. package/templates/default/docs/plans/recursive-kindling-lemon.md +36 -0
  54. package/templates/default/docs/plans/seed-migration-tests.md +47 -0
  55. package/templates/default/docs/plans/sprightly-leaping-manatee.md +224 -0
  56. package/templates/default/docs/plans/stateful-wishing-lerdorf.md +161 -0
  57. package/templates/default/docs/plans/streamed-purring-wreath.md +40 -0
  58. package/templates/default/docs/plans/synthetic-percolating-pearl.md +101 -0
  59. package/templates/default/docs/plans/todo-fix-sync-template-variables.md +21 -0
  60. package/templates/default/docs/plans/todo-phase4-marker-update.md +39 -0
  61. package/templates/default/docs/plans/todo-skill-creator-sync.md +23 -0
  62. package/templates/default/docs/plans/typed-snuggling-parnas-agent-a6f6391.md +476 -0
  63. package/templates/default/docs/plans/typed-snuggling-parnas-agent-adb678b.md +144 -0
  64. package/templates/default/docs/plans/typed-snuggling-parnas.md +84 -0
  65. package/templates/default/docs/plans/warm-hopping-lighthouse-agent-a30aa4f.md +534 -0
  66. package/templates/default/docs/plans/warm-hopping-lighthouse-agent-a57a278.md +508 -0
  67. package/templates/default/docs/plans/warm-hopping-lighthouse-agent-a90b809.md +421 -0
  68. package/templates/default/docs/plans/warm-hopping-lighthouse.md +199 -0
  69. package/templates/default/docs/verification-test.md +2 -0
  70. package/templates/default/gitignore +4 -0
  71. package/templates/default/package.json +2 -2
  72. package/templates/default/packages/admin-ui/package.json +1 -1
  73. package/templates/default/packages/server-core/tsconfig.json +6 -1
  74. package/templates/default/pnpm-lock.yaml +276 -57
  75. package/templates/default/scripts/ensure-serena.sh +75 -0
  76. package/templates/default/scripts/lib/worktree-config.ts +64 -0
  77. package/templates/default/scripts/stop-serena.sh +25 -0
  78. package/templates/default/scripts/worktree/dev.ts +2 -2
  79. /package/templates/default/scripts/{cli-template-update.ts → _cli-template-update.ts} +0 -0
  80. /package/templates/default/scripts/{template-update.ts → _template-update.ts} +0 -0
@@ -0,0 +1,224 @@
1
+ # task-exec: タスク単位並列実行 + TodoWrite進捗管理
2
+
3
+ ## Context
4
+
5
+ 現在の `task-exec` コマンドはタスクグループ(X.Y)全体を1つの `task-executer` に丸投げし、内部で順次実装している。この方式では:
6
+ - 依存関係のない独立タスクも直列実行されるため非効率
7
+ - task-executerが自分でIssue/spec読み込みを行うため、並列時にN回重複読み込みが発生
8
+ - task-executerがIssue構造に依存しており、汎用性が低い
9
+
10
+ **目的**:
11
+ 1. task-exec(親)がIssue解析・AC抽出・specパス特定を一括で行い、ハイブリッド方式でタスクごとに渡す
12
+ 2. TodoWriteで進捗管理しつつ、依存関係に基づいた並列実行を実現
13
+ 3. task-executerをIssue非依存の汎用実装エージェントにする
14
+
15
+ **情報渡し方式: ハイブリッド**
16
+ - AC(受け入れ基準)→ 親が抽出してpromptに直接埋め込む(小さい・重要・~100トークン/AC)
17
+ - 設計(design.md)→ ファイルパス + セクション名のみ渡す(大きい・executerが自分でRead)
18
+ - フォールバック: ファイルパスも併記し、executerが追加情報を自由に読める
19
+
20
+ ## 新フロー
21
+
22
+ ```
23
+ task-exec(親)
24
+ 1. Issueフェッチ → タスクグループ内タスク(X.Y.Z)を解析
25
+ 2. spec存在チェック + requirements.mdからAC抽出 + design.mdパス特定
26
+ 3. TaskCreate で各タスクを登録(依存関係 + AC + 設計参照パス付き)
27
+ 4. 依存関係ベース並列実行ループ:
28
+ - ブロックなしタスク → 並列で task-executer 起動
29
+ (各executerに「AC直接埋込 + 設計パス参照 + タスク指示」を渡す)
30
+ - 完了後、新たにブロック解除されたタスク → 次バッチで並列起動
31
+ - 全タスク完了まで繰り返し
32
+ 5. task-reviewer(グループ全体で1回)
33
+ 6. task-qa(グループ全体で1回)
34
+ 7. einja-task-commit
35
+ ```
36
+
37
+ ## 変更ファイル
38
+
39
+ ### 1. `.claude/commands/einja/task-exec.md`(主要変更)
40
+
41
+ #### allowed-tools に追加
42
+ - `Skill` ツールを追加(必要時のspec-context-loader呼び出し用)
43
+
44
+ #### 処理フローの書き換え
45
+
46
+ ##### Step 0: 入力解析(現行通り)
47
+ - Issue番号とタスクグループ番号を$ARGUMENTSから解析
48
+
49
+ ##### Step 1: Issueフェッチ + タスク解析(新規)
50
+
51
+ 1. `gh issue view` でIssue本文を取得
52
+ 2. 指定タスクグループ(X.Y)配下のタスク(X.Y.Z)をパース
53
+ 3. 各タスクのメタデータを抽出:
54
+ - タスク名
55
+ - 要件(Story番号)
56
+ - 依存関係(なし / X.Y.Z形式)
57
+ - 完了条件
58
+ - 対応設計セクション名
59
+ - シナリオテスト
60
+
61
+ ##### Step 2: spec読み込み + AC抽出(新規 - task-executerから移管)
62
+
63
+ 1. specディレクトリを探索: `docs/specs/issues/*/issue{N}-*/`
64
+ 2. 存在チェック:
65
+ - 完全なspec → 次へ
66
+ - 部分的spec → エラー終了
67
+ - specなし → general-context-loader Skill呼び出し
68
+ 3. requirements.mdを読み込み、各タスクのメタデータ(`**要件**: Story X`)に基づいてACを抽出
69
+ - ACはGiven/When/Then形式で小さい(~50-100トークン/AC)ので直接保持
70
+ 4. design.mdは**パスのみ特定**(内容は読み込まない)
71
+ - 各タスクの`**対応設計**: design.md「セクション名」`からセクション名を記録
72
+
73
+ ##### Step 3: TodoWrite登録(新規)
74
+
75
+ 各タスクを `TaskCreate` で登録:
76
+ ```
77
+ TaskCreate:
78
+ subject: "X.Y.Z タスク名"
79
+ description: |
80
+ ## 受け入れ基準(抽出済み)
81
+ - AC1.2: Given: DBスキーマ定義済 When: マイグレーション実行 Then: テーブル作成
82
+ - AC1.3: Given: アプリ起動 When: DB接続 Then: 正常接続
83
+ ## 設計参照
84
+ {specパス}/design.md → 「3. DB設計」セクション
85
+ ## 完了条件
86
+ DBに接続できること(AC1.2〜AC1.3を満たす)
87
+ ## 参考(追加情報が必要な場合)
88
+ - requirements.md: {specパス}/requirements.md
89
+ - design.md: {specパス}/design.md
90
+ activeForm: "タスクX.Y.Zを実装中"
91
+ ```
92
+
93
+ 依存関係を `TaskUpdate` の `addBlockedBy` で設定:
94
+ - `**依存関係**: 1.1.1` → 対応するTodoタスクIDを `addBlockedBy` に設定
95
+ - `**依存関係**: なし` → ブロックなし
96
+ - `**依存関係**: 1.1` (タスクグループ依存) → グループ外依存のため事前に完了済みと想定
97
+
98
+ ##### Step 4: 依存関係ベース並列実行ループ(新規)
99
+
100
+ ```
101
+ while (未完了タスクが存在):
102
+ 1. TaskList で未完了タスクを確認
103
+ 2. blockedBy が空かつ pending のタスクを収集
104
+ 3. 収集したタスクを TaskUpdate で in_progress に設定
105
+ 4. Task ツールで複数の task-executer を並列起動:
106
+ - 各 task-executer のpromptに以下を含める(ハイブリッド方式):
107
+ a. タスクID + タスク名 + 実装指示(Issueから抽出したサブタスク内容)
108
+ b. AC(受け入れ基準)→ 直接埋め込み(親が抽出済み)
109
+ c. 設計 → design.mdパス + セクション名(executerが自分でRead)
110
+ d. 完了条件
111
+ e. フォールバック用specファイルパス(追加情報が必要な場合)
112
+ - run_in_background: true で非同期起動(2タスク以上の場合)
113
+ 5. 各エージェントの完了を待機
114
+ 6. 完了したタスクを TaskUpdate で completed に設定
115
+ 7. ループ先頭に戻る
116
+ ```
117
+
118
+ ##### Step 5-7: レビュー・QA・コミット(現行と同様)
119
+ - task-reviewer: グループ全体で1回
120
+ - task-qa: グループ全体で1回
121
+ - einja-task-commit: QA合格後に実行
122
+
123
+ ##### フロー図
124
+
125
+ ```
126
+ ┌─────────────────────────────────────────────────────────┐
127
+ │ 品質保証ループ │
128
+ │ │
129
+ │ Issueパース → specパス特定 → TodoWrite登録 │
130
+ │ ↓ │
131
+ │ 依存関係ベース並列実行: │
132
+ │ task-executer × N(独立タスク並列) │
133
+ │ ↓ 全タスク完了 │
134
+ │ task-reviewer → task-qa │
135
+ │ ↑ │ │
136
+ │ └──────────────┘ │
137
+ │ (MAJOR/テスト失敗時は該当タスクのみ再実行) │
138
+ │ │
139
+ │ QA合格後 ↓ │
140
+ │ einja-task-commit Skill │
141
+ └─────────────────────────────────────────────────────────┘
142
+ ```
143
+
144
+ ### 2. `.claude/agents/einja/task/task-executer.md`(中規模変更)
145
+
146
+ #### A. Issue/spec自動読み込み機能の削除
147
+
148
+ 以下を削除:
149
+ - `skills:` セクションから `spec-context-loader`, `general-context-loader` を削除
150
+ - セクション「1.0 spec 存在チェック」を削除
151
+ - セクション「1.2 コンテキスト収集モードの決定」(1.2A, 1.2B, 1.2C)を削除
152
+ - spec関連エラー処理を削除
153
+
154
+ #### B. 入力形式の変更
155
+
156
+ 新しい入力形式をセクション冒頭に追記:
157
+
158
+ ```markdown
159
+ ## 入力(ハイブリッド方式)
160
+
161
+ task-exec(親)からpromptで以下の情報を受け取ります:
162
+ - **タスクID**: X.Y.Z形式
163
+ - **タスク名・実装指示**: Issueから抽出した具体的な作業内容
164
+ - **AC(直接埋込)**: Given/When/Then形式の受け入れ基準テキスト(親が抽出済み)
165
+ - **設計参照**: design.mdのファイルパス + セクション名(自分でReadする)
166
+ - **完了条件**: ACを含む具体的な完了条件
167
+ - **フォールバックパス**: requirements.md / design.md のフルパス(追加情報が必要な場合)
168
+
169
+ ACはpromptに直接含まれるので即座に参照可能。
170
+ 設計情報は指定されたパス+セクションをRead toolで読み込む。
171
+ ```
172
+
173
+ #### C. 実行フローの簡素化
174
+
175
+ 現行のセクション1(コンテキスト収集)を以下に置換:
176
+ ```markdown
177
+ ### 1. コンテキスト確認
178
+ 1.1 promptに埋め込まれたAC(受け入れ基準)を確認
179
+ 1.2 設計参照パス + セクション名に基づき、design.mdの該当セクションをReadで読み込む
180
+ 1.3 実装種別に応じたドキュメント参照(現行の1.3と同等)
181
+ 1.4 既存実装の分析(Serena MCPで関連コード調査 - 現行の1.1と同等)
182
+ ```
183
+
184
+ #### D. 並列実行時の注意事項(新規追加)
185
+
186
+ ```markdown
187
+ #### 4.0 並列実行モードの注意事項
188
+
189
+ task-execから個別タスク(X.Y.Z)として呼び出された場合:
190
+ - 指定されたタスクのみを実装する(他のタスクには触れない)
191
+ - git操作はCLAUDE.mdのサブエージェント安全ルールに従う
192
+ - コミットは行わない(task-exec完了後にまとめて実行)
193
+ ```
194
+
195
+ #### E. 修正記録パスの調整
196
+
197
+ ```
198
+ - **タスクグループ単位実行**: `modifications/task-{X}-{Y}.md`(従来互換)
199
+ - **個別タスク実行**: `modifications/task-{X}-{Y}-{Z}.md`
200
+ ```
201
+
202
+ ## 変更しないファイル
203
+
204
+ - `task-reviewer.md` - グループ全体レビューは現行通り
205
+ - `task-qa.md` - グループ全体QAは現行通り
206
+ - `task-management.md` - read-only(マネージドディレクトリ)
207
+ - `CLAUDE.md` - git安全ルールは既に十分
208
+
209
+ ## リスクと対策
210
+
211
+ | リスク | 対策 |
212
+ |--------|------|
213
+ | 並列task-executerのファイル衝突 | 設計書のセクション分割から変更対象を推定。重複懸念時は直列化 |
214
+ | TodoWrite IDと依存関係のマッピング | タスク番号→TodoID のマッピングテーブルを保持 |
215
+ | 失敗タスクのリカバリー | 失敗タスクとそれにブロックされるタスクを特定し再実行 |
216
+ | AC抽出精度 | ACはGiven/When/Then定型なので抽出は機械的。フォールバックパスも併記 |
217
+
218
+ ## 検証方法
219
+
220
+ 1. **構文確認**: 変更後のtask-exec.md、task-executer.mdをReadで確認
221
+ 2. **実際のIssueでテスト**: 既存のGitHub Issue(タスクグループ付き)に対して `/einja:task-exec` を実行
222
+ 3. **TodoWrite動作確認**: TaskList でタスクが正しく登録・依存関係設定されていることを確認
223
+ 4. **並列実行確認**: 独立タスクが実際に並列dispatchされることを確認
224
+ 5. **QAループ確認**: 全タスク完了後にreviewer→qaが正常に動作することを確認
@@ -0,0 +1,161 @@
1
+ # Plan: einja-skill-advisor Skill 作成
2
+
3
+ ## Context
4
+
5
+ タスク着手前に「Skillを先に作るべきか」を評価し、必要なら Skill 作成を TODO の先頭に積むメタ Skill を作成する。Plan mode 中でも評価・提案フェーズが動作し、Skill 作成自体は Plan 承認後に `einja-skill-creator` へ委譲する設計。
6
+
7
+ ## 作成するファイル
8
+
9
+ | ファイル | 内容 |
10
+ |---------|------|
11
+ | `.claude/skills/einja-skill-advisor/SKILL.md` | Skill 本体(新規作成) |
12
+
13
+ ## 修正するファイル
14
+
15
+ | ファイル | 変更内容 |
16
+ |---------|---------|
17
+ | `CLAUDE.md` | 必須フローに自動起動ステップ追加 + Skillテーブル追記 + キーワードトリガー追記 |
18
+ | `.claude/commands/einja/spec-create.md` | Phase 0 に skill-advisor 自動評価ステップ追加 |
19
+
20
+ ## Skill 設計概要
21
+
22
+ ### 名前・トリガー
23
+
24
+ - **Skill名**: `einja-skill-advisor`
25
+ - **allowed-tools**: `Read`, `Grep`, `Glob`(Plan mode 制約に完全適合)
26
+ - **起動方式**: 以下の3系統(いずれもユーザーが意識せず Claude が自動判断)
27
+ 1. **Plan mode 進入時**: CLAUDE.md の必須フロー Step 1 で自動実行。ユーザーが自由形式でタスクを依頼→Plan mode に入った時点で評価
28
+ 2. **spec-create 実行時**: `/einja:spec-create` の Phase 0(前提確認)で自動実行。新機能の仕様策定前に Skill の必要性を評価
29
+ 3. **明示起動(補助)**: キーワード「Skill作るべき?」「Skill-first」等でも直接呼び出し可能
30
+ - **設計意図**: 既存のドキュメント・Skill・サブエージェントがない領域のタスクで特に効果を発揮。「未整備の領域で場当たり的に作業する前に、まず Skill を作って品質を安定させる」判断を Claude が自動で行う
31
+
32
+ ### フロー(4ステップ)
33
+
34
+ ```
35
+ ステップ1: 作業パターン分析
36
+ - 作業カテゴリ特定(FE/BE/インフラ/ドキュメント/リファクタ等)
37
+ - 反復性評価(今後も繰り返すか、memory/patterns.md を参照)
38
+ - 複雑度評価(手順数・判断分岐数・参照ドキュメント数)
39
+
40
+ ステップ2: 既存Skillギャップ分析
41
+ - .claude/skills/einja-*/SKILL.md を Glob で動的取得
42
+ - 各Skillの name/description を読み取り、カバレッジを3段階判定
43
+ - 完全カバー → Skill作成不要
44
+ - 部分カバー → 既存Skill拡張を検討
45
+ - カバー外 → 新規Skill作成を検討
46
+
47
+ ステップ3: ROI評価(スコアリング)
48
+ コスト側: 作成時間 + 複雑度 + テスト必要度(各1-3点)
49
+ 価値側: 再利用頻度 + 品質安定化 + 時間節約 + チーム共有(各1-3点)
50
+ 判定: 価値合計 - コスト合計 >= 2 → 推奨
51
+
52
+ ステップ4: 構造化出力
53
+ - 判定結果(🟢推奨 / 🟡拡張推奨 / ⚪不要)
54
+ - Skill概要仕様(推奨時: 名前・目的・主要フロー・推定時間)
55
+ - 推奨ワークフロー
56
+ ```
57
+
58
+ ### スキップ基準(即座に「不要」判定)
59
+
60
+ - 単発の小規模修正(バグ修正、typo、設定値変更)
61
+ - CLAUDE.md のキーワードトリガーに既に一致するタスク
62
+ - 作業指示が具体的かつ限定的(「ファイルXのY行をZ変更」等)
63
+
64
+ ### Plan mode 対応
65
+
66
+ ```
67
+ Plan mode 内で skill-advisor が行うこと:
68
+ ✅ 既存Skill一覧を Glob + Read で取得
69
+ ✅ memory/patterns.md を参照
70
+ ✅ ROI評価ロジック実行(計算のみ)
71
+ ✅ 構造化された評価結果を返却
72
+
73
+ Plan mode 内で行わないこと:
74
+ ❌ ファイル作成・編集
75
+ ❌ einja-skill-creator の呼び出し
76
+ ❌ Bash コマンド実行
77
+
78
+ 親エージェントの責務(Plan mode 内):
79
+ - skill-advisor の結果を受け取り AskUserQuestion で提案
80
+ - 承認されたら計画ファイルの TODO-0 に Skill 作成を記載
81
+
82
+ Plan mode 解除後:
83
+ - TODO-0: einja-skill-creator で Skill 作成
84
+ - TODO-1〜: 作成した Skill で本作業実行
85
+ ```
86
+
87
+ ### einja-skill-creator との責務分離
88
+
89
+ | 責務 | skill-advisor | skill-creator |
90
+ |------|:---:|:---:|
91
+ | ギャップ分析・ROI評価 | ○ | - |
92
+ | Skill仕様ドラフト(概要) | ○ | - |
93
+ | SKILL.md 作成 | - | ○ |
94
+ | テスト・eval | - | ○ |
95
+
96
+ skill-advisor の出力(Skill概要仕様)が skill-creator の入力として機能する設計。
97
+
98
+ ## CLAUDE.md 変更内容
99
+
100
+ ### 1. 必須フローへの自動起動の組み込み(最重要)
101
+
102
+ 現行の必須フロー:
103
+ ```
104
+ 1. 問題・要件を調査・分析する
105
+ 2. 修正計画を docs/plans/ に作成し提示する
106
+ 3. ユーザーの明示的な承認を得る
107
+ 4. 承認後、実装を開始する
108
+ ```
109
+
110
+ 変更後:
111
+ ```
112
+ 1. 問題・要件を調査・分析する
113
+ 2. 修正計画を docs/plans/ に作成する
114
+ 3. einja-skill-advisor で「Skill を先に作るべきか」を自動評価する
115
+ - 計画の内容・スコープを見て判断(全体像が見えた状態で評価)
116
+ - 推奨判定 → AskUserQuestion でユーザーに提案
117
+ - 承認 → 計画の TODO-0 に Skill 作成を追加
118
+ - 不要判定 → そのまま次へ進む
119
+ ※ スキップ基準に該当する場合は評価自体を省略
120
+ 4. 計画をユーザーに提示し、明示的な承認を得る
121
+ 5. 承認後、実装を開始する(TODO-0 があれば Skill 作成から)
122
+ ```
123
+
124
+ **ポイント**: 計画を作って全体像が見えてから Skill の必要性を判断する。ユーザーが Skill の存在を知らなくても、Claude Code 側から自動的に「先に Skill を作ったほうが効率的です」と提案する。
125
+
126
+ ### 2. spec-create.md への組み込み
127
+
128
+ spec-create の Phase 0(前提確認)に追加:
129
+ ```
130
+ Phase 0: 前提確認
131
+ ├─ TDD適用判定
132
+ ├─ 要件明確さ確認
133
+ ├─ ブランチ選択
134
+ └─ 【追加】einja-skill-advisor で Skill 作成必要性を評価
135
+ → 推奨時はユーザーに提案、承認なら先に Skill 作成
136
+ ```
137
+
138
+ ### 3. Skill・コマンドテーブルに追記
139
+
140
+ ```markdown
141
+ | `einja-skill-advisor` | 作業前のSkill作成必要性評価(Plan/spec-create時に自動起動) |
142
+ ```
143
+
144
+ ### 4. キーワードトリガーテーブルに追記(excluded セクション)
145
+
146
+ ```markdown
147
+ | `Skill作るべき?` `Skill化` `skill-advisor` `Skill-first` | `.claude/skills/einja-skill-advisor/SKILL.md` |
148
+ ```
149
+
150
+ ## 実装手順
151
+
152
+ 1. **SKILL.md 作成**: `einja-skill-creator` Skill を使用して `.claude/skills/einja-skill-advisor/SKILL.md` を作成
153
+ 2. **CLAUDE.md 更新**: テーブル2箇所に追記
154
+ 3. **動作確認**: 適当なタスク説明を与えて Skill を呼び出し、評価結果の出力を確認
155
+
156
+ ## 検証方法
157
+
158
+ - skill-advisor を Task ツールで呼び出し、テストケースで動作確認:
159
+ - ケース1: 「ログイン画面を作って」→ 既存 Skill(frontend-implement系)でカバー → 不要判定
160
+ - ケース2: 「Prismaスキーマ変更の自動マイグレーション運用を整備して」→ 既存 Skill にない → 推奨判定
161
+ - ケース3: 「READMEのtypo修正」→ スキップ基準に該当 → 即座に不要判定
@@ -0,0 +1,40 @@
1
+ # Plan: docs/einja/ への手動ファイル作成禁止ルールをCLAUDE.mdに追記
2
+
3
+ ## Context
4
+
5
+ 別リポジトリでこのリポジトリのNPMパッケージ(`@einja/dev-cli`)を利用している際、Agentが `docs/einja/` 配下にドキュメントを手動作成してしまうケースがある。`docs/einja/` はCLIパッケージで管理されるファイル群(`einja sync` で同期)のため、手動作成すると次回sync時に上書き・競合が発生する。
6
+
7
+ ## 変更内容
8
+
9
+ ### CLAUDE.md に「マネージドディレクトリ」セクションを追加
10
+
11
+ **配置場所**: L108「プロジェクト概要」セクションの直後(L113の後)
12
+ - `@einja:excluded` の外なので、配布先テンプレートにも反映される
13
+
14
+ **追記内容**:
15
+
16
+ ```markdown
17
+ ## マネージドディレクトリ(編集禁止)
18
+
19
+ `docs/einja/` は `@einja/dev-cli` パッケージで管理されている。`einja sync` で同期されるため、以下のルールを厳守すること。
20
+
21
+ | ディレクトリ | 操作 | 理由 |
22
+ |------------|------|------|
23
+ | `docs/einja/steering/` | **読み取り専用** | CLI同期で上書きされる |
24
+ | `docs/einja/templates/` | **読み取り専用** | CLI同期で上書きされる |
25
+ | `docs/einja/instructions/` | **読み取り専用** | CLI同期で上書きされる |
26
+ | `docs/einja/example/` | **読み取り専用** | CLI同期で上書きされる |
27
+ | `docs/einja/memory/` | **読み書き可** | プロジェクト固有の学習記録(同期対象外) |
28
+
29
+ **禁止事項**: `docs/einja/` 配下に新規ファイル・ディレクトリを作成しないこと(`memory/` 内を除く)
30
+ ```
31
+
32
+ ### 対象ファイル
33
+
34
+ - `/Users/kzp/code/GitHub/einja-inc/einja-management-template/CLAUDE.md` (L113の後に追記)
35
+
36
+ ## 検証
37
+
38
+ 1. `@einja:excluded` の外に配置されていることを確認
39
+ 2. `node scripts/generate-template.mjs` を実行し、`presets/default/CLAUDE.md.template` に新セクションが含まれることを確認
40
+ 3. テンプレート内のプレースホルダー変換に影響がないことを確認
@@ -0,0 +1,101 @@
1
+ # Plan: Serena MCP活用カスタムExploreエージェント作成
2
+
3
+ ## Context
4
+
5
+ 現在、`Task(subagent_type='Explore')` で呼び出されるExploreサブエージェントはClaudeCode標準のもので、`Read`, `Grep`, `Glob`, `Bash` 等の標準ツールで探索を行う。Serena MCPはLSPベースのシンボルナビゲーション・参照検索等の高度なコード解析機能を持っており、これをExplore時のメインツールとして活用したい。
6
+
7
+ **目的**: カスタムエージェント定義で標準Exploreを上書きし、すべての具体的探索をSerena MCPで行うエージェントを作成する。
8
+
9
+ ## 方針
10
+
11
+ - `.claude/agents/einja/` に `Explore` と同名のカスタムエージェントを配置し、ビルトインExploreを上書き
12
+ - **Serena MCP最優先**: 利用不可の場合は警告を出した上でRead/Grep/Globにフォールバック
13
+ - 標準Exploreの基本的な役割(高速な読み取り専用コードベース探索)は踏襲
14
+ - 上書きが機能しない場合のフォールバック: 別名 + CLAUDE.md指示
15
+
16
+ ## 変更対象ファイル
17
+
18
+ | ファイル | 操作 |
19
+ |---------|------|
20
+ | `.claude/agents/einja/Explore.md` | **新規作成** |
21
+
22
+ ※ 実装時は `einja-skill-creator` Skill を参照してeinja規約に準拠すること
23
+
24
+ ## エージェント定義の設計
25
+
26
+ ### YAMLフロントマッター
27
+
28
+ ```yaml
29
+ ---
30
+ name: Explore
31
+ description: Serena MCPを活用した高速コードベース探索エージェント。...(<example>タグ含む)
32
+ tools: Read, Bash, Glob, Grep, ToolSearch, WebFetch, WebSearch, mcp__serena__find_symbol, mcp__serena__get_symbols_overview, mcp__serena__search_for_pattern, mcp__serena__find_file, mcp__serena__list_dir, mcp__serena__find_referencing_symbols, mcp__serena__activate_project, mcp__serena__check_onboarding_performed
33
+ model: sonnet
34
+ color: green
35
+ ---
36
+ ```
37
+
38
+ ### ツール選定(Codexレビュー反映済み)
39
+
40
+ | カテゴリ | ツール | 用途 |
41
+ |---------|--------|------|
42
+ | **Serena MCP(最優先)** | find_symbol, get_symbols_overview, search_for_pattern, find_file, list_dir, find_referencing_symbols | シンボル検索、参照検索、パターン検索、ファイル/ディレクトリ探索 |
43
+ | **Serena初期化** | activate_project, check_onboarding_performed | プロジェクト有効化・初期化確認 |
44
+ | **補助(フォールバック含む)** | Read, Glob, Grep | 非コードファイル読み取り、広範なファイルパターン検索 |
45
+ | **読み取り専用Bash** | Bash | `git log`, `git blame`, `git show`, `ls`, `tree` 等 |
46
+ | **ツール管理** | ToolSearch | deferredツール(Serena MCP)の事前ロード |
47
+ | **Web検索** | WebFetch, WebSearch | 外部ドキュメント参照(標準Exploreと同等) |
48
+ | **除外** | Edit, Write, NotebookEdit, Task, ExitPlanMode | 読み取り専用保証 |
49
+ | **除外(Serena編集系)** | replace_symbol_body, insert_before_symbol, insert_after_symbol, rename_symbol | 編集系ツールは一切含めない |
50
+
51
+ ### 本文の構成
52
+
53
+ #### 1. Serena MCPツール事前ロード手順(必須)
54
+
55
+ ```
56
+ 1. ToolSearch(query: "+serena", max_results: 10) で一括ロード
57
+ 2. mcp__serena__check_onboarding_performed でSerena初期化確認
58
+ 3. 必要に応じて mcp__serena__activate_project でプロジェクト有効化
59
+ ```
60
+
61
+ - ToolSearch結果が空 or エラー → 警告メッセージ出力 → フォールバックモードへ
62
+
63
+ #### 2. 探索ツール優先順位
64
+
65
+ | 優先度 | ツール | 使用場面 |
66
+ |--------|--------|---------|
67
+ | 1(最優先) | Serena MCP | シンボル定義検索、参照追跡、パターン検索、ファイル検索 |
68
+ | 2(補助) | Read | 非コードファイル(md, json, yml)、画像、PDF読み取り |
69
+ | 3(補助) | Glob/Grep | Serenaで対応しにくい広範パターン検索、テキスト全文検索 |
70
+ | 4(補助) | Bash(読み取り専用) | git履歴、ファイルメタ情報 |
71
+
72
+ #### 3. 効率的な探索パターン集
73
+
74
+ - **シンボル定義 → 参照追跡**: find_symbol → find_referencing_symbols → Read
75
+ - **ディレクトリ構造 → シンボル概要**: list_dir → get_symbols_overview
76
+ - **パターン検索 → 詳細確認**: search_for_pattern → Read
77
+
78
+ #### 4. 読み取り専用の厳守
79
+
80
+ **禁止事項(明示的に記載)**:
81
+ - Edit, Write, NotebookEdit の使用
82
+ - Serena編集系ツール(replace_symbol_body等)の使用・ロード
83
+ - Bashでの破壊的操作(rm, mv, git reset, git checkout, リダイレクト等)
84
+
85
+ **Bash許可コマンド(ホワイトリスト)**:
86
+ - `git log`, `git blame`, `git show`, `git diff`
87
+ - `ls`, `tree`, `wc`, `file`, `stat`
88
+ - `env`, `node -v` 等の環境確認
89
+
90
+ #### 5. Serena利用不可時のフォールバック
91
+
92
+ 1. 「⚠️ Serena MCP未接続のため、標準ツールで探索を継続します」と通知
93
+ 2. Read/Grep/Glob/Bashで作業継続
94
+ 3. 完了時に「Serena MCPの設定確認を推奨」とアドバイス
95
+
96
+ ## 検証方法
97
+
98
+ 1. ファイル作成後、新しいセッションで `Task(subagent_type='Explore')` を呼び出し
99
+ 2. **上書き成功判定**: エージェントがSerenaツールを使用しているか確認
100
+ 3. **上書き失敗時**: `name`を別名(例: `serena-explorer`)に変更し、CLAUDE.mdに「探索は`serena-explorer`を使え」と追記
101
+ 4. Serena MCPが未接続の状態でフォールバック動作を確認
@@ -0,0 +1,21 @@
1
+ # TODO: fix-sync-template-variables
2
+
3
+ ## Phase 1: 致命的問題の修正
4
+
5
+ - [x] 1-A: project-detector作成 + replacePlaceholders共用化 + sync/merger統合
6
+ - [x] 1-B: placeholder-validator作成
7
+ - [x] 1-C: env保護強化 + Prisma/lockfile除外パターン追加
8
+ - [x] 1-D: sync.tsにplaceholder-validator統合(1-A, 1-B完了後)
9
+
10
+ ## Phase 2: 重大問題の修正
11
+
12
+ - [ ] 2-1: package.json scripts の安全なマージ
13
+ - [ ] 2-2: dry-run の改善
14
+ - [ ] 2-3: バックアップの完全性
15
+
16
+ ## Phase 3: テスト
17
+
18
+ - [ ] 3-1: project-detector テスト
19
+ - [ ] 3-2: placeholder-validator テスト
20
+ - [ ] 3-3: merger templateVariables テスト
21
+ - [ ] 3-4: sync E2E テスト
@@ -0,0 +1,39 @@
1
+ # Phase 4 - マーカー更新 TODO
2
+
3
+ ## 進捗管理
4
+
5
+ ### 4-a: 既存ファイルの `@einja:seed` → `@einja:project-private` 一括置換
6
+ - [ ] 対象ファイルの特定(grep)
7
+ - [ ] docs/einja/steering/ 配下のファイル置換
8
+ - [ ] docs/einja/instructions/ 配下のファイル置換
9
+ - [ ] docs/einja/memory/ 配下のファイル置換
10
+ - [ ] packages/cli/README.md 置換
11
+ - [ ] packages/create-einja-app/README.md 置換
12
+
13
+ ### 4-b: 新規3ファイルにproject-privateセクション追加
14
+ - [ ] coding-standards.md
15
+ - [ ] component-design.md
16
+ - [ ] playwright-guidelines.md
17
+
18
+ ### 4-c: .claude/skills/einja-*/SKILL.md
19
+ - [ ] skill一覧の確認
20
+ - [ ] 各SKILL.mdにセクション追加
21
+
22
+ ### 4-d: .claude/agents/einja/ 配下
23
+ - [ ] ファイル一覧の確認
24
+ - [ ] 各.mdファイルにセクション追加
25
+
26
+ ### 4-e: .claude/commands/einja/ 配下
27
+ - [ ] ファイル一覧の確認
28
+ - [ ] 各.mdファイルにセクション追加
29
+
30
+ ### 4-f: CLAUDE.md
31
+ - [ ] project-privateセクション追加
32
+
33
+ ### 4-g: skill-creatorのドキュメント例示更新
34
+ - [ ] SKILL.md内の例示更新
35
+ - [ ] init_skill.py内の例示更新
36
+
37
+ ### 4-h: ドキュメント内のseed参照更新
38
+ - [ ] MARKER_SPECIFICATION.md確認・更新
39
+ - [ ] 4-aで対応済みか確認
@@ -0,0 +1,23 @@
1
+ # TODO: einja-skill-creator 公式skill-creator最新版との完全同期
2
+
3
+ ## タスク一覧
4
+
5
+ - [x] 1. SKILL.md の全面更新(7ステップワークフロー、eval/ベンチマーク対応)
6
+ - [x] 2. scripts/package_skill.py の改善(除外パターン追加、import修正)
7
+ - [x] 3. scripts/quick_validate.py の更新(変更不要と判断、einja固有チェック維持)
8
+ - [x] 4. scripts/__init__.py 新規作成
9
+ - [x] 5. scripts/utils.py 新規作成(日本語化)
10
+ - [x] 6. scripts/run_eval.py 新規作成(日本語化)
11
+ - [x] 7. scripts/run_loop.py 新規作成(日本語化)
12
+ - [x] 8. scripts/improve_description.py 新規作成(日本語化)
13
+ - [x] 9. scripts/generate_report.py 新規作成(日本語化)
14
+ - [x] 10. scripts/aggregate_benchmark.py 新規作成(日本語化)
15
+ - [x] 11. references/schemas.md 新規作成(日本語化)
16
+ - [x] 12. agents/grader.md 新規作成(日本語化)
17
+ - [x] 13. agents/comparator.md 新規作成(日本語化)
18
+ - [x] 14. agents/analyzer.md 新規作成(日本語化)
19
+ - [x] 15. assets/eval_review.html 新規作成(英語のまま)
20
+ - [x] 16. eval-viewer/generate_review.py 新規作成(英語のまま、公式そのまま)
21
+ - [x] 17. eval-viewer/viewer.html 新規作成(公式そのまま)
22
+ - [x] 18. init_skill.py テンプレート更新(einja固有セクション簡素化)
23
+ - [x] 19. 検証(validate, package, syntax check)— 全パス