@einja/dev-cli 0.1.40 → 0.1.44

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 (207) hide show
  1. package/README.md +89 -1
  2. package/dist/cli.js +1 -0
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/init.d.ts.map +1 -1
  5. package/dist/commands/init.js +71 -1
  6. package/dist/commands/init.js.map +1 -1
  7. package/dist/commands/list.js.map +1 -1
  8. package/dist/commands/sync.d.ts.map +1 -1
  9. package/dist/commands/sync.js +187 -13
  10. package/dist/commands/sync.js.map +1 -1
  11. package/dist/commands/task-loop/lib/github-client.test.js.map +1 -1
  12. package/dist/commands/task-loop/lib/vibe-kanban-rest-client.js +2 -2
  13. package/dist/commands/task-loop/lib/vibe-kanban-rest-client.js.map +1 -1
  14. package/dist/lib/dependency-checker.d.ts.map +1 -1
  15. package/dist/lib/merger.d.ts +12 -0
  16. package/dist/lib/merger.d.ts.map +1 -1
  17. package/dist/lib/merger.js +28 -0
  18. package/dist/lib/merger.js.map +1 -1
  19. package/dist/lib/preset-update/cli-repo-detector.d.ts.map +1 -1
  20. package/dist/lib/preset-update/file-copier.d.ts.map +1 -1
  21. package/dist/lib/preset-update/file-copier.js +3 -3
  22. package/dist/lib/preset-update/file-copier.js.map +1 -1
  23. package/dist/lib/preset-update/preset-finder.d.ts.map +1 -1
  24. package/dist/lib/preset.d.ts.map +1 -1
  25. package/dist/lib/sync/category-validator.d.ts +1 -1
  26. package/dist/lib/sync/category-validator.d.ts.map +1 -1
  27. package/dist/lib/sync/category-validator.js +2 -1
  28. package/dist/lib/sync/category-validator.js.map +1 -1
  29. package/dist/lib/sync/category-validator.test.js +3 -1
  30. package/dist/lib/sync/category-validator.test.js.map +1 -1
  31. package/dist/lib/sync/conflict-reporter.d.ts.map +1 -1
  32. package/dist/lib/sync/diff-engine.d.ts.map +1 -1
  33. package/dist/lib/sync/file-filter.d.ts.map +1 -1
  34. package/dist/lib/sync/file-filter.js +1 -0
  35. package/dist/lib/sync/file-filter.js.map +1 -1
  36. package/dist/lib/sync/integration.test.js +255 -69
  37. package/dist/lib/sync/integration.test.js.map +1 -1
  38. package/dist/lib/sync/json-processor.d.ts +4 -4
  39. package/dist/lib/sync/json-processor.d.ts.map +1 -1
  40. package/dist/lib/sync/json-processor.js +11 -11
  41. package/dist/lib/sync/json-processor.js.map +1 -1
  42. package/dist/lib/sync/marker-processor.d.ts +60 -8
  43. package/dist/lib/sync/marker-processor.d.ts.map +1 -1
  44. package/dist/lib/sync/marker-processor.js +117 -26
  45. package/dist/lib/sync/marker-processor.js.map +1 -1
  46. package/dist/lib/sync/marker-processor.test.js +261 -40
  47. package/dist/lib/sync/marker-processor.test.js.map +1 -1
  48. package/dist/lib/sync/metadata-manager.d.ts +4 -0
  49. package/dist/lib/sync/metadata-manager.d.ts.map +1 -1
  50. package/dist/lib/sync/metadata-manager.js +15 -0
  51. package/dist/lib/sync/metadata-manager.js.map +1 -1
  52. package/dist/lib/sync/metadata-manager.test.js +69 -0
  53. package/dist/lib/sync/metadata-manager.test.js.map +1 -1
  54. package/dist/lib/sync/orphan-cleaner.d.ts +29 -0
  55. package/dist/lib/sync/orphan-cleaner.d.ts.map +1 -0
  56. package/dist/lib/sync/orphan-cleaner.js +80 -0
  57. package/dist/lib/sync/orphan-cleaner.js.map +1 -0
  58. package/dist/lib/sync/orphan-cleaner.test.d.ts +2 -0
  59. package/dist/lib/sync/orphan-cleaner.test.d.ts.map +1 -0
  60. package/dist/lib/sync/orphan-cleaner.test.js +169 -0
  61. package/dist/lib/sync/orphan-cleaner.test.js.map +1 -0
  62. package/dist/lib/sync/project-private-synchronizer.d.ts +52 -0
  63. package/dist/lib/sync/project-private-synchronizer.d.ts.map +1 -0
  64. package/dist/lib/sync/project-private-synchronizer.js +110 -0
  65. package/dist/lib/sync/project-private-synchronizer.js.map +1 -0
  66. package/dist/lib/sync/project-private-synchronizer.test.d.ts +2 -0
  67. package/dist/lib/sync/project-private-synchronizer.test.d.ts.map +1 -0
  68. package/dist/lib/sync/project-private-synchronizer.test.js +348 -0
  69. package/dist/lib/sync/project-private-synchronizer.test.js.map +1 -0
  70. package/dist/types/index.d.ts +1 -0
  71. package/dist/types/index.d.ts.map +1 -1
  72. package/dist/types/sync.d.ts +36 -6
  73. package/dist/types/sync.d.ts.map +1 -1
  74. package/dist/types/sync.js +2 -2
  75. package/dist/types/sync.js.map +1 -1
  76. package/package.json +5 -4
  77. package/presets/default/.claude/agents/einja/Explore.md +140 -0
  78. package/presets/default/.claude/agents/einja/backend-architect.md +21 -1
  79. package/presets/default/.claude/agents/einja/codex-agent.md +5 -1
  80. package/presets/default/.claude/agents/einja/design-engineer.md +5 -1
  81. package/presets/default/.claude/agents/einja/docs/docs-updater.md +7 -93
  82. package/presets/default/.claude/agents/einja/frontend-architect.md +21 -1
  83. package/presets/default/.claude/agents/einja/frontend-coder.md +5 -1
  84. package/presets/default/.claude/agents/einja/{specs/spec-design-generator.md → issue-specs/design-generator.md} +16 -8
  85. package/presets/default/.claude/agents/einja/{specs/spec-qa-generator.md → issue-specs/qa-generator.md} +10 -4
  86. package/presets/default/.claude/agents/einja/{specs/spec-requirements-generator.md → issue-specs/requirements-generator.md} +9 -6
  87. package/presets/default/.claude/agents/einja/{specs/spec-tasks-generator.md → issue-specs/tasks-generator.md} +19 -16
  88. package/presets/default/.claude/agents/einja/{specs/spec-tasks-validator.md → issue-specs/tasks-validator.md} +13 -9
  89. package/presets/default/.claude/agents/einja/issue-specs/ui-design-generator.md +114 -0
  90. package/presets/default/.claude/agents/einja/task/task-executer.md +64 -116
  91. package/presets/default/.claude/agents/einja/task/task-modification-analyzer.md +6 -2
  92. package/presets/default/.claude/agents/einja/task/task-qa.md +7 -3
  93. package/presets/default/.claude/agents/einja/task/task-reviewer.md +17 -1
  94. package/presets/default/.claude/commands/einja/einja-sync.md +124 -45
  95. package/presets/default/.claude/commands/einja/frontend-implement.md +3 -1
  96. package/presets/default/.claude/commands/einja/issue-exec.md +413 -0
  97. package/presets/default/.claude/commands/einja/start-dev.md +4 -0
  98. package/presets/default/.claude/commands/einja/sync-cursor-commands.md +10 -6
  99. package/presets/default/.claude/commands/einja/{update-docs-by-task-specs.md → update-docs-by-issue-specs.md} +61 -57
  100. package/presets/default/.claude/hooks/einja/plan-mode-skill-loader.sh +27 -0
  101. package/presets/default/.claude/settings.json +29 -5
  102. package/presets/default/.claude/skills/{einja-general-context-loader → _einja-general-context-loader}/SKILL.md +6 -2
  103. package/presets/default/.claude/skills/{einja-output-format → _einja-output-format}/SKILL.md +5 -1
  104. package/presets/default/.claude/skills/_einja-project-overview/SKILL.md +29 -0
  105. package/presets/default/.claude/skills/{einja-spec-context-loader → _einja-spec-context-loader}/SKILL.md +9 -5
  106. package/presets/default/.claude/skills/einja-coding-standards/references/testing-strategy.md +899 -0
  107. package/presets/default/.claude/skills/einja-conflict-resolver/SKILL.md +5 -1
  108. package/presets/default/.claude/skills/einja-create-pr/SKILL.md +138 -0
  109. package/presets/default/.claude/skills/einja-infra-maintenance/SKILL.md +779 -0
  110. package/presets/default/.claude/{commands/einja/spec-create.md → skills/einja-issue-spec-create/SKILL.md} +60 -23
  111. package/presets/default/.claude/skills/einja-issue-spec-generator/SKILL.md +105 -0
  112. package/presets/default/.claude/skills/einja-issue-spec-generator/references/format-rules.md +35 -0
  113. package/presets/default/.claude/skills/einja-issue-spec-validator/SKILL.md +130 -0
  114. package/presets/default/.claude/skills/einja-issue-spec-validator/references/validation-rules.md +52 -0
  115. package/presets/default/.claude/skills/einja-npm-release/SKILL.md +242 -0
  116. package/presets/default/.claude/skills/einja-skill-creator/SKILL.md +311 -263
  117. package/presets/default/.claude/skills/einja-skill-creator/agents/analyzer.md +274 -0
  118. package/presets/default/.claude/skills/einja-skill-creator/agents/comparator.md +202 -0
  119. package/presets/default/.claude/skills/einja-skill-creator/agents/grader.md +195 -0
  120. package/presets/default/.claude/skills/einja-skill-creator/assets/eval_review.html +146 -0
  121. package/presets/default/.claude/skills/einja-skill-creator/eval-viewer/generate_review.py +471 -0
  122. package/presets/default/.claude/skills/einja-skill-creator/eval-viewer/viewer.html +1325 -0
  123. package/presets/default/.claude/skills/einja-skill-creator/references/schemas.md +430 -0
  124. package/presets/default/.claude/skills/einja-skill-creator/scripts/aggregate_benchmark.py +401 -0
  125. package/presets/default/.claude/skills/einja-skill-creator/scripts/compare_runs.py +154 -0
  126. package/presets/default/.claude/skills/einja-skill-creator/scripts/generate_report.py +272 -0
  127. package/presets/default/.claude/skills/einja-skill-creator/scripts/improve_description.py +247 -0
  128. package/presets/default/.claude/skills/einja-skill-creator/scripts/init_skill.py +13 -19
  129. package/presets/default/.claude/skills/einja-skill-creator/scripts/package_skill.py +36 -7
  130. package/presets/default/.claude/skills/einja-skill-creator/scripts/run_eval.py +310 -0
  131. package/presets/default/.claude/skills/einja-skill-creator/scripts/run_loop.py +375 -0
  132. package/presets/default/.claude/skills/einja-skill-creator/scripts/utils.py +48 -0
  133. package/presets/default/.claude/skills/einja-skill-first/SKILL.md +265 -0
  134. package/presets/default/.claude/skills/einja-subagent-question-protocol/SKILL.md +98 -0
  135. package/presets/default/.claude/skills/einja-task-commit/SKILL.md +11 -7
  136. package/presets/default/.claude/{commands/einja/task-exec.md → skills/einja-task-exec/SKILL.md} +106 -89
  137. package/presets/default/.claude/skills/einja-task-qa/SKILL.md +8 -4
  138. package/presets/default/.claude/skills/einja-task-qa/references/troubleshooting.md +1 -1
  139. package/presets/default/.claude/skills/einja-task-qa/references/usage-patterns.md +2 -2
  140. package/presets/default/.claude/skills/einja-team-exec/SKILL.md +165 -0
  141. package/presets/default/.envrc +5 -0
  142. package/presets/default/.mcp.json +2 -12
  143. package/presets/default/CLAUDE.md.template +45 -8
  144. package/presets/default/docs/einja/example/specs/issues/issue999-example-task/tasks.md +1 -1
  145. package/presets/default/docs/einja/instructions/deployment-setup.md +4 -9
  146. package/presets/default/docs/einja/instructions/environment-setup.md +3 -8
  147. package/presets/default/docs/einja/instructions/issue-exec-workflow.md +276 -0
  148. package/presets/default/docs/einja/instructions/local-server-environment-and-worktree.md +71 -9
  149. package/presets/default/docs/einja/instructions/neon-cli-reference.md +3 -8
  150. package/presets/default/docs/einja/instructions/setup-flow.md +279 -0
  151. package/presets/default/docs/einja/instructions/task-execute.md +63 -68
  152. package/presets/default/docs/einja/instructions/vercel-cli-reference.md +17 -10
  153. package/presets/default/docs/einja/steering/README.md +11 -11
  154. package/presets/default/docs/einja/steering/acceptance-criteria-and-qa-guide.md +4 -9
  155. package/presets/default/docs/einja/steering/architecture.md +3 -8
  156. package/presets/default/docs/einja/steering/branch-strategy.md +63 -70
  157. package/presets/default/docs/einja/steering/commit-rules.md +3 -8
  158. package/presets/default/docs/einja/steering/db-schema-design.md +3 -8
  159. package/presets/default/docs/einja/steering/development/api-development.md +3 -8
  160. package/presets/default/docs/einja/steering/development/backend-architecture.md +3 -8
  161. package/presets/default/docs/einja/steering/development/coding-standards.md +723 -0
  162. package/presets/default/docs/einja/steering/development/component-design.md +502 -0
  163. package/presets/default/docs/einja/steering/development/database-guidelines.md +2 -2
  164. package/presets/default/docs/einja/steering/development/frontend-development.md +3 -8
  165. package/presets/default/docs/einja/steering/development/playwright-guidelines.md +59 -0
  166. package/presets/default/docs/einja/steering/development/review-guidelines.md +3 -8
  167. package/presets/default/docs/einja/steering/development/testing-strategy.md +3 -8
  168. package/presets/default/docs/einja/steering/development-workflow.md +155 -140
  169. package/presets/default/docs/einja/steering/infrastructure/deployment.md +156 -55
  170. package/presets/default/docs/einja/steering/infrastructure/environment-variables.md +4 -8
  171. package/presets/default/docs/einja/steering/product.md +3 -8
  172. package/presets/default/docs/einja/steering/task-management.md +22 -110
  173. package/presets/default/scripts/ensure-serena.sh +75 -0
  174. package/presets/default/scripts/env-rotate-secrets.ts +396 -0
  175. package/presets/default/scripts/env-show.ts +130 -0
  176. package/presets/default/scripts/env.ts +479 -0
  177. package/presets/default/scripts/init-github.ts +363 -0
  178. package/presets/default/scripts/init.sh +98 -0
  179. package/presets/default/scripts/lib/env-common.ts +108 -0
  180. package/presets/default/scripts/lib/worktree-config.ts +64 -0
  181. package/presets/default/scripts/setup-dev.ts +655 -0
  182. package/presets/default/scripts/stop-serena.sh +25 -0
  183. package/presets/default/scripts/worktree/dev.ts +872 -0
  184. package/dist/lib/sync/seed-synchronizer.d.ts +0 -27
  185. package/dist/lib/sync/seed-synchronizer.d.ts.map +0 -1
  186. package/dist/lib/sync/seed-synchronizer.js +0 -72
  187. package/dist/lib/sync/seed-synchronizer.js.map +0 -1
  188. package/dist/lib/sync/seed-synchronizer.test.d.ts +0 -2
  189. package/dist/lib/sync/seed-synchronizer.test.d.ts.map +0 -1
  190. package/dist/lib/sync/seed-synchronizer.test.js +0 -147
  191. package/dist/lib/sync/seed-synchronizer.test.js.map +0 -1
  192. package/presets/default/.claude/agents/einja/git/conflict-resolver.md +0 -148
  193. package/presets/default/.claude/hooks/einja/validate-git-commit.sh +0 -239
  194. package/presets/default/.claude/skills/einja-api-development/SKILL.md +0 -14
  195. package/presets/default/.claude/skills/einja-backend-architecture/SKILL.md +0 -18
  196. package/presets/default/.claude/skills/einja-coding-standards/SKILL.md +0 -132
  197. package/presets/default/.claude/skills/einja-coding-standards/references/import-conventions.md +0 -69
  198. package/presets/default/.claude/skills/einja-coding-standards/references/naming-conventions.md +0 -107
  199. package/presets/default/.claude/skills/einja-coding-standards/references/prohibited-patterns.md +0 -169
  200. package/presets/default/.claude/skills/einja-coding-standards/references/typescript-rules.md +0 -247
  201. package/presets/default/.claude/skills/einja-component-design/SKILL.md +0 -109
  202. package/presets/default/.claude/skills/einja-component-design/references/directory-structure.md +0 -117
  203. package/presets/default/.claude/skills/einja-component-design/references/props-patterns.md +0 -159
  204. package/presets/default/.claude/skills/einja-component-design/references/styling-guide.md +0 -122
  205. package/presets/default/.claude/skills/einja-frontend-development/SKILL.md +0 -14
  206. package/presets/default/.claude/skills/einja-project-overview/SKILL.md +0 -35
  207. package/presets/default/docs/einja/instructions/task-vibe-kanban-loop.md +0 -565
@@ -1,9 +1,4 @@
1
- ---
2
- description: "GitHub Issueのタスクグループを実行するコマンド。ARGUMENTS: Issue番号(必須、#123形式)とタスクグループ番号(必須、1.1形式)"
3
- allowed-tools: Task, Read, Write, Edit, MultiEdit, Bash, Grep, Glob, WebFetch, mcp__github__*, mcp__serena__*
4
- ---
5
-
6
- # タスク実行コマンド
1
+ # タスク実行 Skill
7
2
 
8
3
  ## 役割
9
4
 
@@ -36,7 +31,7 @@ $ARGUMENTSから以下を解析:
36
31
 
37
32
  | Phase番号 | 判定 | 処理フロー |
38
33
  |-----------|------|-----------|
39
- | 1〜98 | 通常タスク | task-executer → task-reviewer → task-qa → einja-task-commit Skill |
34
+ | 1〜98 | 通常タスク | Issueパースspec読込 → TaskCreate登録 → 並列実行 → task-reviewer → task-qa → einja-task-commit Skill |
40
35
  | 99 | ドキュメント反映タスク | docs-updater → einja-task-commit Skill |
41
36
 
42
37
  ### 通常タスクのフロー(Phase 1〜98)
@@ -45,10 +40,15 @@ $ARGUMENTSから以下を解析:
45
40
  ┌─────────────────────────────────────────────────────────┐
46
41
  │ 品質保証ループ │
47
42
  │ │
48
- task-executertask-reviewertask-qa
49
- │ │
50
- └──────────────┴──────────────┘
51
- (MAJOR/テスト失敗時は自動的に戻る)
43
+ Issueパースspecパス特定TaskCreate登録
44
+
45
+ 依存関係ベース並列実行:
46
+ task-executer × N(独立タスク並列)
47
+ │ ↓ 全タスク完了 │
48
+ │ task-reviewer → task-qa │
49
+ │ ↑ │ │
50
+ │ └──────────────┘ │
51
+ │ (MAJOR/テスト失敗時は該当タスクのみ再実行) │
52
52
  │ │
53
53
  │ QA合格後 ↓ │
54
54
  │ ┌─────────────────────────────────────────────┐ │
@@ -101,21 +101,104 @@ $ARGUMENTSから以下を解析:
101
101
 
102
102
  各フェーズ完了後、サブエージェントの出力を表示したら即座に次のフェーズへ進む。ユーザーの応答は待たない。
103
103
 
104
- ### 1. 実装フェーズ(task-executer)
105
- - 要件定義・設計書に基づいた実装を実行
106
- - 完了後、出力を表示して即座にレビューフェーズへ
104
+ ### Step 0: 入力解析
105
+
106
+ $ARGUMENTSからIssue番号とタスクグループ番号を解析する(現行通り)。
107
+
108
+ ### Step 1: Issueフェッチ + タスク解析
109
+
110
+ 1. `gh issue view {issue番号} --json body,title` でIssue本文を取得
111
+ 2. 指定タスクグループ(X.Y)配下のタスク(X.Y.Z)をパース
112
+ 3. 各タスクのメタデータを抽出:
113
+ - タスク名
114
+ - 要件(Story番号)
115
+ - 依存関係(なし / X.Y.Z形式)
116
+ - 完了条件
117
+ - 対応設計セクション名
118
+ - シナリオテスト
107
119
 
108
- ### 2. レビューフェーズ(task-reviewer)
120
+ ### Step 2: spec読み込み + AC抽出
121
+
122
+ **目的**: task-executerから spec/Issue 読み込み責務を移管し、親が一括で行う。
123
+
124
+ 1. **specディレクトリを探索**: `docs/specs/issues/*/issue{N}-*/` パターンで検索
125
+ 2. **存在チェック**:
126
+ - 完全なspec(requirements.md + design.md + qa-tests/) → 次へ
127
+ - 部分的spec → エラー終了(`einja-issue-spec-create` Skill の実行を案内)
128
+ - specなし → `_einja-general-context-loader` Skill を呼び出してコンテキスト収集
129
+ 3. **requirements.md を読み込み**、各タスクのメタデータ(`**要件**: Story X`)に基づいてACを抽出
130
+ - ACはGiven/When/Then形式で小さい(~50-100トークン/AC)ので直接保持
131
+ 4. **design.md はパスのみ特定**(内容は読み込まない)
132
+ - 各タスクの`**対応設計**: design.md「セクション名」`からセクション名を記録
133
+
134
+ ### Step 3: TaskCreate登録
135
+
136
+ 各タスクを `TaskCreate` で登録し、依存関係を設定する。
137
+
138
+ **TaskCreate の形式**:
139
+ ```
140
+ TaskCreate:
141
+ subject: "X.Y.Z タスク名"
142
+ description: |
143
+ ## 受け入れ基準(抽出済み)
144
+ - AC1.2: Given: ... When: ... Then: ...
145
+ - AC1.3: Given: ... When: ... Then: ...
146
+ ## 設計参照
147
+ {specパス}/design.md → 「セクション名」セクション
148
+ ## 完了条件
149
+ (Issueから抽出した完了条件 + ACを満たす)
150
+ ## 参考(追加情報が必要な場合)
151
+ - requirements.md: {specパス}/requirements.md
152
+ - design.md: {specパス}/design.md
153
+ activeForm: "タスクX.Y.Zを実装中"
154
+ ```
155
+
156
+ **依存関係の設定**:
157
+ - `TaskUpdate` の `addBlockedBy` で依存関係を設定
158
+ - `**依存関係**: X.Y.Z` → 対応するTaskのIDを `addBlockedBy` に設定
159
+ - `**依存関係**: なし` → ブロックなし
160
+ - `**依存関係**: X.Y`(タスクグループ依存) → グループ外依存のため事前に完了済みと想定
161
+
162
+ **タスク番号→TaskID のマッピングテーブル**を保持し、依存関係解決に使用する。
163
+
164
+ ### Step 4: 依存関係ベース並列実行ループ
165
+
166
+ ```
167
+ while (未完了タスクが存在):
168
+ 1. TaskList で未完了タスクを確認
169
+ 2. blockedBy が空かつ pending のタスクを収集
170
+ 3. 収集したタスクを TaskUpdate で in_progress に設定
171
+ 4. Task ツールで複数の task-executer を並列起動:
172
+ - 各 task-executer のpromptに以下を含める(ハイブリッド方式):
173
+ a. タスクID + タスク名 + 実装指示(Issueから抽出したサブタスク内容)
174
+ b. AC(受け入れ基準)→ 直接埋め込み(親が抽出済み)
175
+ c. 設計 → design.mdパス + セクション名(executerが自分でRead)
176
+ d. 完了条件
177
+ e. フォールバック用specファイルパス(追加情報が必要な場合)
178
+ - run_in_background: true で非同期起動(2タスク以上の場合)
179
+ 5. 各エージェントの完了を待機(TaskOutput で結果取得)
180
+ 6. 完了したタスクを TaskUpdate で completed に設定
181
+ 7. ループ先頭に戻る
182
+ ```
183
+
184
+ **注意事項**:
185
+ - 並列起動するタスク間でファイル変更対象が重複しないよう、設計セクションから推定して確認する
186
+ - 重複懸念がある場合は直列化する
187
+ - task-executerにはコミットさせない(Step 7でまとめて実行)
188
+
189
+ ### Step 5: レビューフェーズ(task-reviewer)
190
+ - 全タスク完了後、グループ全体で1回実行
109
191
  - 要件定義・設計との整合性確認
110
- - MAJOR判定 → 実装フェーズに戻る
192
+ - MAJOR判定 → 該当タスクのみ再実行(Step 4に戻る)
111
193
  - PASS/MINOR判定 → 品質保証フェーズへ
112
194
 
113
- ### 3. 品質保証フェーズ(task-qa)
195
+ ### Step 6: 品質保証フェーズ(task-qa)
196
+ - グループ全体で1回実行
114
197
  - 受け入れ条件に基づく動作確認
115
- - テスト失敗 → 実装フェーズに戻る
198
+ - テスト失敗 → 該当タスクのみ再実行(Step 4に戻る)
116
199
  - 全テスト合格 → コミット・プッシュフェーズへ
117
200
 
118
- ### 4. コミット・プッシュフェーズ(einja-task-commit Skill)
201
+ ### Step 7: コミット・プッシュフェーズ(einja-task-commit Skill)
119
202
  - QA合格後、Skill toolで `einja-task-commit` Skillを直接呼び出し
120
203
  - 変更がある場合のみ実行(変更なしの場合はスキップ)
121
204
  - コミット分割案の確認はスキップ(QA合格済みのため自動適用)
@@ -156,76 +239,6 @@ Issue #123 のPhase 99 タスク(タスクグループ 99.1)を実行して
156
239
 
157
240
  ---
158
241
 
159
- ## 受け入れ条件の参照方法
160
-
161
- このセクションは、task-executer、task-reviewer、task-qaサブエージェントが受け入れ条件を参照する際の標準手順を定義します。
162
-
163
- ### requirements.mdの標準構造
164
-
165
- **必須セクション**:
166
- - **受け入れ基準(Acceptance Criteria)**: 各ACが以下の形式で記載
167
-
168
- **AC(Acceptance Criteria)の形式**:
169
- ```markdown
170
- ##### 機能要件
171
- - [ ] Given: 前提条件
172
- When: 実行する操作
173
- Then: 期待される結果
174
- ```
175
-
176
- ### task-executerの受け入れ条件参照方法
177
-
178
- 1. タスクグループの関連ドキュメント(`requirements.md`)を読み込む
179
- 2. 各ユーザーストーリー配下の「受け入れ基準」セクションを特定
180
- 3. **検証レベルが「Unit」の AC のみ**を実装対象とする
181
- 4. 各 AC(Given/When/Then)に対して実装と単体テストを作成
182
- 5. `design.md` の技術仕様に準拠した実装を行う
183
-
184
- **検証責務**:
185
- - **Unit テスト**: 必須実装、実装と同時に作成
186
- - **Integration/Browser テスト**: 実装不要(task-qa が担当)
187
-
188
- **完了条件**:
189
- - 実装したコードの単体テストが全て合格
190
- - 検証レベルが「Unit」の AC を全て満たす
191
- - Integration/Browser レベルの AC は未検証でも実装フェーズ完了とする
192
-
193
- > **Note**: 検証レベルの詳細は `docs/einja/steering/terminology.md` を参照してください。
194
-
195
- ### task-reviewerの受け入れ条件参照方法
196
-
197
- 1. `requirements.md` の各ユーザーストーリー配下の「受け入れ基準」セクションを参照
198
- 2. 実装が各ACを満たしているかを確認
199
- 3. ACとの整合性をレビュー観点の最優先項目とする
200
-
201
- ### task-qaの受け入れ条件参照方法
202
-
203
- **⚠️ 最重要**: QAエージェントは以下の手順で受け入れ条件を参照
204
-
205
- 1. **受け入れ基準の抽出**
206
- - タスクグループの `requirements.md` を読み込む
207
- - 各ユーザーストーリー配下の「受け入れ基準」セクションを特定
208
- - **検証レベルが「Integration」「Browser」の AC のみ**を抽出
209
- - 検証レベルが「Unit」の AC はスキップ(task-executer が既に検証済み)
210
-
211
- 2. **テストシナリオの作成**
212
- - 各 AC に対して、Given/When/Then に基づくテストシナリオを作成
213
- - Integration: API + DB + ミドルウェアの連携テスト
214
- - Browser: Playwright MCP を使用したユーザーシナリオテスト
215
- - QA 仕様書(`qa-tests/story{N}.md`)に記録
216
-
217
- 3. **SUCCESS 判定基準**
218
- - **検証レベルが「Integration」「Browser」の全ての AC が満たされた場合のみ**、SUCCESS 判定
219
- - 1つでも AC を満たさない場合、FAILURE 判定して適切な戻し先を決定
220
-
221
- > **用語の明確化**: 「E2E」はPlaywrightコードによる自動テスト(`pnpm test:e2e`)を指します。task-qaが実行するPlaywright MCPテストは「Browser」検証レベルです。詳細は `docs/einja/steering/terminology.md` を参照してください。
222
-
223
- 4. **参照ドキュメント**
224
- - QA テスト項目作成方針: `docs/einja/steering/acceptance-criteria-and-qa-guide.md`
225
- - テンプレート: `docs/einja/templates/requirements.md.template`
226
-
227
- ---
228
-
229
242
  ## 失敗時のリカバリーフロー
230
243
 
231
244
  ### 失敗原因の分類
@@ -388,3 +401,7 @@ AskUserQuestion:
388
401
  - Issue番号とタスクグループ番号の両方が必須
389
402
  - GitHub Issueのチェックボックス更新は自動では行わない
390
403
  - コミット時は [コミットルール](../../docs/einja/steering/commit-rules.md) を遵守
404
+
405
+ <!-- @einja:project-private:start id="task-exec-project" -->
406
+ <!-- プロジェクト固有の情報を記入 -->
407
+ <!-- @einja:project-private:end -->
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: task-qa
2
+ name: einja-task-qa
3
3
  description: "タスクの品質保証を実行するSkill。必須自動テスト、AC検証、動作確認を実施し、qa-tests/に結果を記録します"
4
4
  allowed-tools:
5
5
  - Task
@@ -92,7 +92,7 @@ AskUserQuestion:
92
92
 
93
93
  ### ステップ3: 既存テスト仕様の読み込み
94
94
 
95
- **前提**: テスト仕様は `spec-qa-generator` が作成済み。task-qaは**実行のみ**を担当。
95
+ **前提**: テスト仕様は `qa-generator` が作成済み。task-qaは**実行のみ**を担当。
96
96
 
97
97
  1. **テスト仕様ファイルの特定**: 自然言語で指定されたAC番号からStoryを判定
98
98
  - 例: 「AC1.1, AC1.2のテストを実行」→ AC番号の先頭数字(1)からStory 1を特定 → `qa-tests/story1.md`
@@ -100,7 +100,7 @@ AskUserQuestion:
100
100
  2. **シナリオテストの確認**: `qa-tests/scenarios.md` で該当ACの実施タイミングを確認
101
101
  3. **テスト仕様の読み込み**: story{N}.md内の該当ACセクションからテストシナリオ、確認項目、期待値を把握
102
102
 
103
- **エラー時**: テスト仕様が存在しない場合は失敗分類B(要件齟齬)→ spec-qa-generatorで作成が必要
103
+ **エラー時**: テスト仕様が存在しない場合は失敗分類B(要件齟齬)→ qa-generatorで作成が必要
104
104
 
105
105
  ---
106
106
 
@@ -281,7 +281,7 @@ AskUserQuestion:
281
281
 
282
282
  ## 実行制約
283
283
 
284
- **task-execからの呼び出し**: task-qa.md(ラッパー)経由、完了報告はtask-qa.mdが生成
284
+ **einja-task-exec Skillからの呼び出し**: task-qa.md(ラッパー)経由、完了報告はtask-qa.mdが生成
285
285
 
286
286
  **独立使用**: トリガーワードで自律起動、完了報告は本Skillが生成
287
287
 
@@ -306,3 +306,7 @@ AskUserQuestion:
306
306
  ---
307
307
 
308
308
  **最終更新**: 2025-12-20
309
+
310
+ <!-- @einja:project-private:start id="einja-task-qa-project" -->
311
+ <!-- プロジェクト固有の情報を記入 -->
312
+ <!-- @einja:project-private:end -->
@@ -21,7 +21,7 @@ QA実行時によくある問題と対処法。
21
21
 
22
22
  **対処法**:
23
23
  1. 仕様書ディレクトリパスを確認
24
- 2. 不在の場合はspec-requirements-generatorで作成
24
+ 2. 不在の場合はrequirements-generatorで作成
25
25
 
26
26
  **失敗分類**: D(環境問題)またはB(要件未定義)
27
27
 
@@ -4,10 +4,10 @@ task-qa Skillの利用方法パターン集。
4
4
 
5
5
  ---
6
6
 
7
- ## パターン1: task-execからの呼び出し(標準ワークフロー)
7
+ ## パターン1: einja-task-exec Skillからの呼び出し(標準ワークフロー)
8
8
 
9
9
  ```
10
- ユーザー: task-exec #123 1.1
10
+ ユーザー: einja-task-exec #123 1.1
11
11
  → starter → executer → reviewer → qa
12
12
 
13
13
  task-qa.md(ラッパー)→ SKILL.md
@@ -0,0 +1,165 @@
1
+ ---
2
+ name: einja-team-exec
3
+ description: "Agent Teamsによるチーム並列実行を行うSkill。ユーザーが「チームで」「Teamで」「Agent Teamsで」「並列チームで」等と明示的にチーム実行を指示した場合に使用。通常のサブエージェント委託とは異なり、独立したClaude Codeインスタンスによるチーム協調を行う"
4
+ ---
5
+ <!-- 参考: https://code.claude.com/docs/en/agent-teams -->
6
+
7
+ # Agent Teams チーム実行
8
+
9
+ ## 概要
10
+
11
+ Agent Teams機能を使い、複数のteammateを編成してタスクを並列実行する。各teammateは独立したClaude Codeインスタンスとして動作し、自身のコンテキストウィンドウを持つ。サブエージェント(`Task`ツール)とは根本的に異なるアーキテクチャ。
12
+
13
+ ### サブエージェントとの違い
14
+
15
+ | 項目 | Agent Teams (Teammates) | サブエージェント (Task) |
16
+ |------|------------------------|----------------------|
17
+ | 実体 | 独立したClaude Codeインスタンス | メインセッション内の子プロセス |
18
+ | コンテキスト | 各自独立(リードの会話履歴は引き継がない) | メインの指示を引き継ぎ |
19
+ | 通信 | メンバー間で直接メッセージ可能 | メインにのみ結果を報告 |
20
+ | 協調 | 共有タスクリストで自己調整 | メインが全作業を管理 |
21
+ | 適用場面 | 議論・協調が必要な複雑な作業 | 結果のみが重要な集中タスク |
22
+ | トークンコスト | 高い(各自が独立コンテキスト) | 低い(結果がメインに要約される) |
23
+
24
+ ### 有効なユースケース
25
+
26
+ - **リサーチ・レビュー**: 複数の観点から同時に調査し、知見を共有・検証
27
+ - **新規モジュール・機能開発**: 各teammateが異なるファイル群を担当
28
+ - **競合仮説のデバッグ**: 異なる理論を並行検証し、議論で収束
29
+ - **クロスレイヤー変更**: フロントエンド・バックエンド・テストを各teammateが担当
30
+
31
+ ## 前提条件
32
+
33
+ `settings.json`に以下が設定されていること:
34
+ ```json
35
+ {
36
+ "env": {
37
+ "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
38
+ }
39
+ }
40
+ ```
41
+
42
+ ## ワークフロー
43
+
44
+ ### 1. チーム構成の設計
45
+
46
+ タスク内容を分析し、以下を決定する:
47
+
48
+ - **teammate数**: 3-5名が推奨(コスト・協調のバランス)
49
+ - **役割分担**: 各teammateの担当範囲と責務を明確化
50
+ - **タスク粒度**: 5-6タスク/teammateが目安
51
+ - **ファイル分割**: 各teammateが異なるファイル群を担当するよう分割
52
+
53
+ ### 2. 自然言語でチーム起動を指示
54
+
55
+ リードに対して、タスク内容とチーム構成を自然言語で指示する。`subagent_type`等のパラメータ指定は不要。
56
+
57
+ **プロンプト例:**
58
+
59
+ ```
60
+ Create an agent team for [タスク名].
61
+ Spawn teammates:
62
+ - [役割1]: [担当範囲と具体的な指示]
63
+ - [役割2]: [担当範囲と具体的な指示]
64
+ - [役割3]: [担当範囲と具体的な指示]
65
+ ```
66
+
67
+ **具体例(フルスタック機能開発):**
68
+
69
+ ```
70
+ 認証機能を実装するチームを作成してください。
71
+ teammateを3名spawn:
72
+ - frontend: src/app/auth/ 配下のログインフォーム・認証画面を実装。NextAuth.jsを使用
73
+ - backend: src/server/auth/ 配下のAPI・ミドルウェアを実装。JWT + httpOnly Cookie方式
74
+ - testing: 認証機能のE2Eテスト・ユニットテストを作成。Playwright + Vitest使用
75
+ 各teammateは担当ファイル以外を編集しないこと。
76
+ ```
77
+
78
+ **具体例(コードレビュー):**
79
+
80
+ ```
81
+ PR #142をレビューするチームを作成してください。
82
+ 3名のレビュアーをspawn:
83
+ - セキュリティ観点でのレビュー
84
+ - パフォーマンス影響のチェック
85
+ - テストカバレッジの検証
86
+ 各自レビュー後に発見事項を報告してください。
87
+ ```
88
+
89
+ ### 3. spawn時のプロンプト設計ガイド
90
+
91
+ teammateはリードの会話履歴を引き継がないため、spawn時のプロンプトに十分なコンテキストを含める。
92
+
93
+ #### 含めるべき情報
94
+ - **担当範囲**: 具体的なファイルパスやディレクトリ
95
+ - **技術的コンテキスト**: 使用するライブラリ・フレームワーク・パターン
96
+ - **制約**: 編集してはいけないファイル、守るべきルール
97
+ - **成果物**: 何を完了とするか
98
+
99
+ #### 含めなくてよい情報
100
+ - プロジェクトの基本構成(CLAUDE.md経由で自動ロードされる)
101
+ - git操作安全ルール(CLAUDE.md経由で自動適用される)
102
+ - MCP設定(自動的に引き継がれる)
103
+
104
+ ### 4. 実行と監視
105
+
106
+ - teammateはタスク完了時に自動的にリードにメッセージを送信する
107
+ - idle通知は自動配信されるため、手動チェック不要
108
+ - 必要に応じてteammateに追加指示を送る:
109
+ - **個別指示**: `SendMessage`(type: `message`)で特定のteammateに
110
+ - **全体通知**: `SendMessage`(type: `broadcast`)で全員に(コスト高、緊急時のみ)
111
+ - `Shift+Down`でteammate間を切り替え(in-processモード)
112
+ - ブロッカー発生時は即座にユーザーに報告する
113
+
114
+ ### 5. 完了とシャットダウン
115
+
116
+ 1. 全タスクの完了を`TaskList`で確認
117
+ 2. 各teammateに`SendMessage`(type: `shutdown_request`)を送信
118
+ 3. 各teammateがシャットダウンを承認するまで待機
119
+ 4. 全teammate停止後、`TeamDelete`でチームリソースをクリーンアップ
120
+ 5. ユーザーに最終結果を報告
121
+
122
+ **重要**: クリーンアップは必ずリードが実行する。teammateからのクリーンアップは不整合を招く。
123
+
124
+ ## ファイル競合の防止
125
+
126
+ Agent Teamsにおける最大のリスクはファイル競合。2つのteammateが同じファイルを編集すると上書きが発生する。
127
+
128
+ ### 防止策
129
+
130
+ - **チーム設計時にファイル担当を明確に分割する**
131
+ - 各teammateのspawnプロンプトに担当ファイル/ディレクトリを明記
132
+ - 共有ファイル(設定ファイル等)の編集は1名のteammateに限定
133
+
134
+ ## コミット管理
135
+
136
+ CLAUDE.mdの「サブエージェントのgit操作安全ルール」がCLAUDE.md経由で全teammateに自動適用される。
137
+
138
+ ### 追加の注意点
139
+
140
+ - `einja-task-commit` Skill経由でコミットを一元管理するのが望ましい
141
+ - teammateに直接コミットさせる場合は、変更対象ファイルをspawnプロンプトで明示的に指定
142
+ - 完了検証: teammateの「完了」報告を鵜呑みにせず、`Read`や`Grep`で変更がディスク上に存在することを確認
143
+
144
+ ## チーム設計のベストプラクティス
145
+
146
+ - **3-5名で開始**: バランスの良い並列度。それ以上はコスト対効果が下がる
147
+ - **1 teammateあたり5-6タスク**: 生産性とコンテキスト切り替えのバランス
148
+ - **リサーチ・レビューから始める**: 実装より低リスクで、並列探索の効果を確認しやすい
149
+ - **タスク粒度を適切に**: 小さすぎ→協調オーバーヘッドが上回る / 大きすぎ→チェックインなく進行し、リスク増大
150
+ - **定期的に進捗を確認**: 放置すると無駄な作業が蓄積する
151
+ - **plan approval活用**: 複雑・リスクの高いタスクではteammateにplan mode必須を設定
152
+
153
+ ## 制限事項(実験機能)
154
+
155
+ - セッション再開(`/resume`)でin-processのteammateは復元されない
156
+ - タスクステータスの更新が遅延することがある
157
+ - シャットダウンに時間がかかる場合がある(現在のリクエスト完了を待つ)
158
+ - 1セッションにつき1チームのみ
159
+ - nested teams(teammateが自身のチームを作る)は不可
160
+ - リードは固定(交代不可)
161
+ - split panesはtmux/iTerm2が必要
162
+
163
+ <!-- @einja:project-private:start id="einja-team-exec-project" -->
164
+ <!-- プロジェクト固有の情報を記入 -->
165
+ <!-- @einja:project-private:end -->
@@ -23,6 +23,11 @@ MAIN_WORKTREE=$(get_main_worktree)
23
23
  if [ -n "$MAIN_WORKTREE" ] && [ -f "$MAIN_WORKTREE/.env.personal" ]; then
24
24
  dotenv_if_exists "$MAIN_WORKTREE/.env.personal"
25
25
  fi
26
+
27
+ # Serena MCP サーバー自動起動
28
+ if [ -n "$MAIN_WORKTREE" ] && [ -f "$MAIN_WORKTREE/scripts/ensure-serena.sh" ]; then
29
+ source "$MAIN_WORKTREE/scripts/ensure-serena.sh" "$MAIN_WORKTREE"
30
+ fi
26
31
  # @einja:managed:end
27
32
 
28
33
  # @einja:seed:start id="project-env"
@@ -32,18 +32,8 @@
32
32
  ]
33
33
  },
34
34
  "serena": {
35
- "type": "stdio",
36
- "command": "uvx",
37
- "args": [
38
- "--from",
39
- "git+https://github.com/oraios/serena",
40
- "serena",
41
- "start-mcp-server",
42
- "--context",
43
- "claude-code",
44
- "--open-web-dashboard",
45
- "false"
46
- ]
35
+ "type": "http",
36
+ "url": "http://127.0.0.1:${SERENA_PORT:-9850}/mcp"
47
37
  },
48
38
  "github": {
49
39
  "type": "http",
@@ -10,6 +10,16 @@
10
10
  3. **影響範囲の最小化**: 変更は必要な箇所のみ。関係ないコードに触れない
11
11
  4. **直接実装の禁止**: あなたは絶対に直接実装を行わない。すべての作業はsubagentに委託し、可能な限り並行で呼び出す。サブエージェントの出力はユーザにも見える場所に出力すること
12
12
  5. **実装品質の自己検証**: 複雑な変更では完了前に「よりエレガントな方法はないか」を自問する。ただし単純な修正には不要
13
+ 6. **Skill-First原則**: 実装着手前に `einja-skill-first` Skillで「Skillを先に作るべきか」を評価する。反復性のある作業はSkill化してから本作業を開始する
14
+
15
+ ## Agent Teams の使用制限
16
+
17
+ **Agent Teams(`CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS`)はユーザーが明示的にチーム編成を指示した場合のみ使用すること。**
18
+
19
+ - 通常のタスクではサブエージェント(`Task`ツール)を使用する
20
+ - 「チームで」「複数agentで並列に」等の明示的な指示があった場合のみAgent Teamsを起動する
21
+ - チーム実行時は `einja-team-exec` Skillの手順に従う
22
+ - 判断に迷う場合はサブエージェントを使用する(デフォルト動作)
13
23
 
14
24
  ## サブエージェント委託ルール
15
25
 
@@ -17,7 +27,6 @@
17
27
 
18
28
  | 作業 | 委託先 |
19
29
  |------|--------|
20
- | コンフリクト解消 | `conflict-resolver` |
21
30
  | Codex作業(レビュー・実装支援等) | `codex-agent` |
22
31
  | フロントエンド アーキテクチャ設計 | `frontend-architect` |
23
32
  | フロントエンド デザイン実装 | `design-engineer` |
@@ -31,9 +40,21 @@
31
40
  | `einja-task-commit` | コミット・プッシュ |
32
41
  | `einja-conflict-resolver` | gitコンフリクト解消 |
33
42
  | `einja-skill-creator` | Skill作成・更新 |
43
+ | `einja-skill-first` | 作業前のSkill作成必要性評価(Plan/einja-issue-spec-create時に自動起動) |
34
44
  | `einja-infra-maintenance` | インフラ環境セットアップ・メンテナンス |
35
- | `einja:task-exec` | タスクグループ実行 |
36
- | `einja:spec-create` | 仕様書作成 |
45
+ | `einja:issue-exec` | Issue全体の階層的並列実行(Command) |
46
+ | `einja-task-exec` | タスクグループ実行(Skill tool) |
47
+ | `einja-issue-spec-create` | Issue仕様書作成(Skill tool) |
48
+
49
+ #### サブエージェント質問プロトコル(PENDING_QUESTIONS)
50
+
51
+ サブエージェントではAskUserQuestionが動作しないため、質問が必要な場合は `## PENDING_QUESTIONS` 形式で返却される。
52
+
53
+ サブエージェント出力に `## PENDING_QUESTIONS` が含まれている場合:
54
+ 1. 質問内容を解析し、AskUserQuestionでユーザーに確認する
55
+ 2. Agent toolの `resume` パラメータで同じサブエージェントを再開(コンテキスト維持)
56
+ 3. プロンプトにユーザーの回答を含めて渡す(例: `ユーザーの回答: Q1→A、Q2→B。これを踏まえて作業を継続してください。`)
57
+ 4. 再度PENDING_QUESTIONSがある場合は同様に処理(最大2回まで)
37
58
 
38
59
  ## コード変更時の動作方針
39
60
 
@@ -41,9 +62,16 @@
41
62
 
42
63
  ### 必須フロー
43
64
  1. 問題・要件を調査・分析する
44
- 2. 修正計画を `docs/plans/` に作成し提示する
45
- 3. **ユーザーの明示的な承認を得る**
46
- 4. 承認後、`docs/plans/todo-{plan名}.md` で進捗管理しながら実装を開始する
65
+ 2. 修正計画を `docs/plans/` に作成する
66
+ 3. `einja-skill-first` で「Skill を先に作るべきか」を評価する
67
+ - Plan mode中は `UserPromptSubmit` hookにより自動でリマインダーが注入される
68
+ - `.claude/skills/einja-skill-first/SKILL.md` を読み込んで評価を実施する
69
+ - 推奨判定 → AskUserQuestion でユーザーに提案
70
+ - 承認 → 計画の TODO-0 に Skill 作成を追加
71
+ - 不要判定 → そのまま次へ進む
72
+ - ※ スキップ基準に該当する場合は評価自体を省略
73
+ 4. 計画をユーザーに提示し、**明示的な承認を得る**
74
+ 5. 承認後、`docs/plans/todo-{plan名}.md` で進捗管理しながら実装を開始する(TODO-0 があれば Skill 作成から)
47
75
 
48
76
  ### 例外(承認不要)
49
77
  - 読み取り専用操作(質問への回答、情報調査、コード調査)
@@ -108,8 +136,8 @@
108
136
  ## プロジェクト概要
109
137
 
110
138
  Turborepoモノレポ構成(pnpm workspaces)。詳細が必要な場合は以下のSkillを参照:
111
- - `einja-project-overview` - 構成、技術スタック、頻出コマンド
112
- - `einja-coding-standards` - コーディング規約、インポートパス規約
139
+ - `_einja-project-overview` - 構成、技術スタック、頻出コマンド
140
+ - `docs/einja/steering/development/coding-standards.md` - コーディング規約、インポートパス規約
113
141
  - `einja-infra-maintenance` - 開発環境セットアップ、サーバー管理
114
142
 
115
143
  ## マネージドディレクトリ(編集禁止)
@@ -147,6 +175,11 @@ Turborepoモノレポ構成(pnpm workspaces)。詳細が必要な場合は
147
175
  - 番号付きリスト: 詳細説明が必要な場合
148
176
  - 推奨オプションには `(推奨)` と理由を付記
149
177
 
178
+ ### 選択肢の記述ルール
179
+ - 各選択肢の `description` に**必ず詳細説明・注意点・補足**を記載する
180
+ - トレードオフ、影響範囲、前提条件など判断に必要な情報を含める
181
+ - ラベルだけで選択させない。ユーザーが十分な情報に基づいて判断できるようにする
182
+
150
183
  ## 報告ルール
151
184
 
152
185
  ### 出力形式
@@ -189,4 +222,8 @@ Turborepoモノレポ構成(pnpm workspaces)。詳細が必要な場合は
189
222
  - サブエージェントの「完了」報告のみで完了判定しない
190
223
  - 検証をスキップして完了宣言しない
191
224
 
225
+ <!-- @einja:project-private:start id="claude-md-project" -->
226
+ <!-- プロジェクト固有の情報を記入 -->
227
+ <!-- @einja:project-private:end -->
228
+
192
229
 
@@ -159,7 +159,7 @@
159
159
 
160
160
  ### タスク階層(4階層)
161
161
  - **Phase(フェーズ)**: 最上位単位(1, 2, 3...)
162
- - **タスクグループ**: Vibe-KanbanタスクとPRの作成単位(1.1, 1.2...)、**チェックボックス付き**(`- [ ]`)、1-4時間
162
+ - **タスクグループ**: PRの作成単位(1.1, 1.2...)、**チェックボックス付き**(`- [ ]`)、1-4時間
163
163
  - **タスク**: 作業単位・コミット単位(1.1.1, 1.1.2...)、**チェックボックスなし**、15-60分
164
164
  - **サブタスク**: タスク内の詳細作業項目、**箇条書き**(`-`)
165
165
 
@@ -35,7 +35,7 @@
35
35
  |--------|----------------|------|
36
36
  | Volta | `curl https://get.volta.sh \| bash` | Node.jsバージョン管理 |
37
37
  | pnpm | `volta install pnpm` | パッケージ管理 |
38
- | Docker | [Docker Desktop](https://www.docker.com/products/docker-desktop/) | PostgreSQL実行 |
38
+ | Docker | macOS: [OrbStack](https://orbstack.dev/)(推奨)/ その他: [Docker Engine](https://docs.docker.com/engine/install/) | PostgreSQL実行 |
39
39
  | GitHub CLI (`gh`) | `brew install gh` | GitHub操作 |
40
40
  | Vercel CLI | `pnpm add -g vercel` | Vercelデプロイ |
41
41
  | Neon CLI (`neonctl`) | `npm install -g neonctl` | Neonデータベース管理 |
@@ -599,11 +599,6 @@ gh secret set TURBO_TOKEN --body "new-token"
599
599
  - [GitHub Actions - Encrypted secrets](https://docs.github.com/en/actions/security-guides/encrypted-secrets)
600
600
  <!-- @einja:managed:end -->
601
601
 
602
- ---
603
-
604
- <!-- @einja:seed:start id="deployment-setup-project" -->
605
- ## プロジェクト固有の設定
606
-
607
- <!-- このセクションはプロジェクト固有の内容を追記する場所です -->
608
- <!-- einja syncで上書きされません -->
609
- <!-- @einja:seed:end -->
602
+ <!-- @einja:project-private:start id="deployment-setup-project" -->
603
+ <!-- プロジェクト固有の情報を記入 -->
604
+ <!-- @einja:project-private:end -->
@@ -639,11 +639,6 @@ dotenvx run -f .env -f .env.local -- <command>
639
639
  - **共有禁止**: 他の開発者とトークンを共有しないこと
640
640
  <!-- @einja:managed:end -->
641
641
 
642
- ---
643
-
644
- <!-- @einja:seed:start id="environment-setup-project" -->
645
- ## プロジェクト固有の設定
646
-
647
- <!-- このセクションはプロジェクト固有の内容を追記する場所です -->
648
- <!-- einja syncで上書きされません -->
649
- <!-- @einja:seed:end -->
642
+ <!-- @einja:project-private:start id="environment-setup-project" -->
643
+ <!-- プロジェクト固有の情報を記入 -->
644
+ <!-- @einja:project-private:end -->