@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,16 +1,11 @@
1
- ---
2
- description: "タスクの仕様書(requirements.md、design.md、qa-tests/)を段階的に作成・修正するワークフローを実行します。ARGUMENTS: タスク内容の説明またはAsanaタスクURL(必須)、既存仕様書のパス(オプション)"
3
- allowed-tools: Task, Read, Write, Edit, MultiEdit, Bash, Grep, Glob, TodoRead, TodoWrite, mcp__asana__*, mcp__figma_dev_mode__*
4
- ---
5
-
6
- # タスク仕様書作成コマンド
1
+ # Issue仕様書作成Skill
7
2
 
8
3
  ## あなたの役割
9
4
  プロダクト開発のシニアテクニカルアーキテクト兼シニアプロダクトエンジニアとして、ATDD(受け入れテスト駆動開発)に基づく仕様書を段階的に作成します。
10
5
 
11
6
  ## タスク管理
12
7
  TodoWriteツールを使用して全体の進捗を可視化し、ユーザーに現在の状況を明確に伝えます:
13
- - 各仕様書作成フェーズ(requirements.md、design.md、QAテスト仕様、GitHub Issueへのタスク記述)をトップレベルタスクとして管理
8
+ - 各仕様書作成フェーズ(requirements.md、ui-design.pen、design.md、QAテスト仕様、GitHub Issueへのタスク記述)をトップレベルタスクとして管理
14
9
  - エージェント起動前にタスクを「in_progress」に更新
15
10
  - エージェント完了後に「completed」に更新
16
11
  - ユーザー承認待ちの状態も明示的に表示
@@ -32,7 +27,7 @@ TodoWriteツールを使用して全体の進捗を可視化し、ユーザー
32
27
 
33
28
  ### 0. 前提確認フェーズ(ワークフロー開始時)
34
29
 
35
- **⚠️ 重要**: 仕様書作成開始前に、以下の3つの質問で前提を確認すること。
30
+ **⚠️ 重要**: 仕様書作成開始前に、以下の確認を行うこと。
36
31
 
37
32
  #### 0.1 TDD適用判定
38
33
 
@@ -108,6 +103,16 @@ AskUserQuestion:
108
103
  **「その他」選択時の対応**:
109
104
  - ブランチ名をユーザーに確認し、IssueBranchBaseとして記録する
110
105
 
106
+ #### 0.4 Skill作成必要性の評価
107
+
108
+ `einja-skill-first` Skillを使用して、このタスクに対してSkillを先に作るべきかを自動評価する。
109
+
110
+ - **スキップ基準に該当する場合**(単発修正、具体的な小規模指示等): 評価を省略し次へ進む
111
+ - **評価実行時**: Skillが構造化された評価結果(🟢推奨/🟡拡張推奨/⚪不要)を返却
112
+ - 🟢推奨 → AskUserQuestionでユーザーに提案。承認されたら仕様書作成前にSkill作成を実施
113
+ - 🟡拡張推奨 → 既存Skill拡張の提案をユーザーに確認
114
+ - ⚪不要 → そのまま次へ進む
115
+
111
116
  ### 1. 外部リソースの確認
112
117
 
113
118
  **AsanaタスクURL**の場合:
@@ -140,7 +145,7 @@ AskUserQuestion:
140
145
  **重要**: 各段階で必ずユーザー承認を得て、コミット&プッシュしてから次へ進行すること。
141
146
 
142
147
  #### Phase 1: requirements.md(要件定義書)
143
- 1. spec-requirements-generatorエージェントで作成
148
+ 1. requirements-generatorエージェントで作成
144
149
  - エージェント内で既存コードの分析を実施
145
150
  - ATDD形式のユーザーストーリーと受け入れ基準
146
151
  2. **ユーザーに内容確認を依頼**
@@ -152,11 +157,38 @@ AskUserQuestion:
152
157
  - 他のメンバーがレビューできるようにする
153
158
  4. **承認を得てから次のステップ(design.md)に進む**
154
159
 
155
- #### Phase 2: design.md(設計書)
156
- 1. spec-design-generatorエージェントで作成
160
+ #### Phase 2: ui-design.pen(UIデザイン)
161
+
162
+ **スキップ判定**: requirements.mdに画面・UI関連の要件がない場合はスキップ
163
+ - 判定基準: requirements.md内に「画面」「UI」「フォーム」「ダッシュボード」「表示」「ボタン」「入力」等のキーワードが含まれるか確認
164
+ - 判断が曖昧な場合はAskUserQuestionでユーザーに確認
165
+
166
+ **実行手順:**
167
+ 1. **既存画面確認(改修の場合)**
168
+ - Playwright MCPで既存画面のスクリーンショットを取得
169
+ - 改修対象のUIパターンを把握
170
+
171
+ 2. **ui-design-generatorエージェントで.pen生成**
172
+ - requirements.mdの内容を参照
173
+ - Pencil MCPでビジュアルモックアップを作成
174
+ - 出力: `{仕様書ディレクトリ}/ui-design.pen`
175
+
176
+ 3. **ユーザーに内容確認を依頼**
177
+ - Pencil MCPのget_screenshotで各画面プレビューを提示
178
+ - 確認ポイントを明示(UIの方向性、レイアウト、コンポーネント選択など)
179
+
180
+ 4. **ユーザー承認後、コミット&プッシュ**
181
+ - コミットメッセージ: `docs: {機能名}のUIデザインを追加`
182
+ - ブランチは `issue/{issue番号}` にプッシュ
183
+
184
+ 5. **承認を得てから次のステップ(design.md)に進む**
185
+
186
+ #### Phase 3: design.md(設計書)
187
+ 1. design-generatorエージェントで作成
157
188
  - エージェント内で既存アーキテクチャの調査を実施
158
189
  - 技術アーキテクチャとデータモデル
159
190
  - requirements.mdの内容を参照
191
+ - **ui-design.penが存在する場合、Pencil MCPでビジュアルモックアップを参照してUI関連セクション(9-11)を作成**
160
192
  2. **ユーザーに内容確認を依頼**
161
193
  - 作成したファイルのパスと概要を提示
162
194
  - 確認ポイントを明示(アーキテクチャの妥当性、実装方針など)
@@ -165,8 +197,8 @@ AskUserQuestion:
165
197
  - ブランチは `issue/{issue番号}` にプッシュ
166
198
  4. **承認を得てから次のステップ(QAテスト仕様生成)に進む**
167
199
 
168
- #### Phase 3: QAテスト仕様生成(シナリオテスト含む)
169
- 1. spec-qa-generatorエージェントで作成
200
+ #### Phase 4: QAテスト仕様生成(シナリオテスト含む)
201
+ 1. qa-generatorエージェントで作成
170
202
  - requirements.mdとdesign.mdの内容を参照
171
203
  - **シナリオテスト(scenarios.md)**: 複数タスクをまたぐ継続操作フローのテスト仕様
172
204
  - **Story別テスト仕様**: 各ユーザーストーリー(AC単位)のテスト仕様
@@ -179,38 +211,38 @@ AskUserQuestion:
179
211
  - ブランチは `issue/{issue番号}` にプッシュ
180
212
  4. **承認を得てから次のステップ(GitHub Issueへのタスク記述)に進む**
181
213
 
182
- #### Phase 4: GitHub Issueへのタスク記述
214
+ #### Phase 5: GitHub Issueへのタスク記述
183
215
 
184
- ##### 4.1 タスク生成・検証ループ
216
+ ##### 5.1 タスク生成・検証ループ
185
217
 
186
218
  **重要**: タスク生成後は自動的にフォーマット検証を行い、違反があれば差し戻します。
187
219
 
188
220
  ```
189
221
  【タスク生成・検証ループ】(最大3回)
190
222
 
191
- ├─ spec-tasks-generator 呼び出し
223
+ ├─ tasks-generator 呼び出し
192
224
  │ └─ タスク一覧を生成(またはエラーフィードバックを元に修正版を生成)
193
225
 
194
- ├─ spec-tasks-validator 呼び出し
226
+ ├─ tasks-validator 呼び出し
195
227
  │ └─ フォーマット検証
196
228
 
197
229
  └─ 検証結果判定
198
230
  ├─ SUCCESS → ループ終了、ユーザー確認へ
199
- └─ FAILURE → spec-tasks-generator に差し戻し
231
+ └─ FAILURE → tasks-generator に差し戻し
200
232
  └─ エラーレポート付きで再呼び出し
201
233
  └─ ループ再開(最大3回)
202
234
 
203
235
  ※ 3回失敗 → ユーザーに手動修正を依頼
204
236
  ```
205
237
 
206
- 1. **spec-tasks-generatorエージェントでタスク生成**
238
+ 1. **tasks-generatorエージェントでタスク生成**
207
239
  - エージェント内で実装の影響範囲を分析
208
240
  - 実装タスクの分解と依存関係
209
241
  - requirements.md、design.md、**qa-tests/scenarios.md**の内容を参照
210
242
  - 各タスクに**シナリオテスト実施タイミング**を明記
211
243
  - **GitHub Issueの説明文にタスク一覧を記述**
212
244
 
213
- 2. **spec-tasks-validatorエージェントでフォーマット検証**
245
+ 2. **tasks-validatorエージェントでフォーマット検証**
214
246
  - タスク階層(Phase/タスクグループ/タスク/サブタスク)の形式チェック
215
247
  - メタデータ(要件・依存関係・完了条件・対応設計・シナリオテスト)の必須チェック
216
248
  - 依存関係の書式・参照先の検証
@@ -219,13 +251,13 @@ AskUserQuestion:
219
251
  3. **検証結果の処理**
220
252
  - **SUCCESS**: ユーザー確認フェーズへ進む
221
253
  - **FAILURE(リトライ可能)**:
222
- - エラーレポートを spec-tasks-generator に渡して再生成
254
+ - エラーレポートを tasks-generator に渡して再生成
223
255
  - ループ再開(現在の試行回数をインクリメント)
224
256
  - **MAX_RETRIES_EXCEEDED(3回失敗)**:
225
257
  - ユーザーに手動修正を依頼
226
258
  - エラー内容を提示し、修正後に続行できるよう案内
227
259
 
228
- ##### 4.2 ユーザー確認
260
+ ##### 5.2 ユーザー確認
229
261
 
230
262
  4. **ユーザーに内容確認を依頼**
231
263
  - 更新したGitHub IssueのURL(#{issue_number})と概要を提示
@@ -259,6 +291,7 @@ AskUserQuestion:
259
291
  - 本文に以下を含める:
260
292
  - Spec PR へのリンク
261
293
  - 要件ドキュメントへのリンク(requirements.mdまたはrequirements/README.md)
294
+ - UIデザインへのリンク(ui-design.pen、存在する場合のみ)
262
295
  - 設計ドキュメントへのリンク(design.mdまたはdesign/README.md)
263
296
  - QAテスト仕様へのリンク(qa-tests/scenarios.md)
264
297
  - タスク一覧(Phase別チェックボックス形式、シナリオテスト実施タイミング明記)
@@ -280,6 +313,7 @@ AskUserQuestion:
280
313
  └── {機能カテゴリ名}/
281
314
  └── issue{issue番号}-{機能名}/
282
315
  ├── requirements.md # 要件定義書(ATDD形式)
316
+ ├── ui-design.pen # UIデザイン(UI関連のみ)
283
317
  ├── design.md # 設計書(技術詳細)
284
318
  └── qa-tests/ # QAテスト仕様
285
319
  ├── scenarios.md # シナリオテスト(複数タスクをまたぐフロー)
@@ -300,6 +334,7 @@ AskUserQuestion:
300
334
  │ ├── overview.md # 概要とスコープ
301
335
  │ ├── stories.md # ユーザーストーリー
302
336
  │ └── technical.md # 技術要件
337
+ ├── ui-design.pen # UIデザイン(UI関連のみ)
303
338
  ├── design/ # 設計書ディレクトリ
304
339
  │ ├── README.md # 目次
305
340
  │ ├── architecture.md # アーキテクチャ
@@ -326,4 +361,6 @@ AskUserQuestion:
326
361
  - Next.js + Hono + Prisma技術スタック対応
327
362
  - Asana/Figma連携によるトレーサビリティ確保
328
363
 
329
- 実行を開始します...
364
+ <!-- @einja:project-private:start id="issue-spec-create-project" -->
365
+ <!-- プロジェクト固有の情報を記入 -->
366
+ <!-- @einja:project-private:end -->
@@ -0,0 +1,105 @@
1
+ # Issue仕様タスク生成 Skill
2
+
3
+ ## 概要
4
+
5
+ このSkillは、要件定義書(requirements.md)と設計書(design.md)に基づいて、GitHub Issueにタスク一覧を生成します。
6
+
7
+ ## 責務
8
+
9
+ - タスク一覧の生成(検証・修正は行わない)
10
+ - エラーフィードバック付きで呼び出された場合は修正版を生成
11
+
12
+ ## 使用タイミング
13
+
14
+ - tasks-generator サブエージェントから呼び出される
15
+ - einja-issue-spec-create Skillのタスク生成フェーズで使用
16
+
17
+ ## 入力
18
+
19
+ ### 必須入力
20
+ - `spec_directory`: 仕様書ディレクトリパス(requirements.md, design.md, qa-tests/を含む)
21
+ - `issue_number`: GitHub Issue番号(既存Issueを更新する場合)
22
+
23
+ ### オプション入力
24
+ - `error_feedback`: バリデーション失敗時のエラーレポート(Markdown形式)
25
+ - 差し戻し時に渡される
26
+ - このフィードバックを元に修正版を生成
27
+
28
+ ## 出力
29
+
30
+ GitHub Issueの本文(Markdown形式):
31
+ - AS-IS / TO-BE / 対応方針
32
+ - タスク一覧(Phase → タスクグループ → タスク → サブタスク)
33
+
34
+ ## フォーマットルール
35
+
36
+ **[タスク管理ガイドライン](../../../docs/einja/steering/task-management.md)** を必ず参照。
37
+
38
+ ### クイックリファレンス
39
+
40
+ | 階層 | 書式 |
41
+ |------|------|
42
+ | Phase | `### Phase 1: [名前]` |
43
+ | タスクグループ | `- [ ] 1.1 [名前]` |
44
+ | タスク | ` - 1.1.1 [名前]` + メタデータ |
45
+
46
+ ### タスクの必須メタデータ
47
+
48
+ 各タスク(X.Y.Z)に以下を必ず付与:
49
+ - **要件**: Story X
50
+ - **依存関係**: なし / X.Y / Phase X完了
51
+ - **完了条件**: [条件](ACX.Xを満たす)
52
+ - **対応設計**: design.md「[セクション名]」
53
+ - **実装AC**: ACX.X, ACX.Y(このタスクで実装するAC番号)
54
+ - **シナリオテスト**: なし / シナリオX Step Y-Z
55
+
56
+ ## TDDデフォルト適用
57
+
58
+ **原則**: ロジック・コード実装があるタスクは**TDDをデフォルトで適用**する。
59
+
60
+ | 対象 | TDD適用 |
61
+ |------|---------|
62
+ | Domain/UseCase/Validator/Repository | **適用** |
63
+ | API実装、UI実装 | **適用** |
64
+ | 設定ファイル、マイグレーション、シードデータ | 不適用 |
65
+
66
+ **注意**: requirements.mdへの「TDD採用」明記は不要。
67
+
68
+ ### TDDタスク構造テンプレート
69
+
70
+ TDDは**1タスク内のサブタスク**として記載(3タスク分割ではない):
71
+
72
+ ```markdown
73
+ - X.Y.Z 機能名の実装(TDD)
74
+ - **テスト作成(Red)**:
75
+ - [テスト内容]
76
+ - **実装(Green)**:
77
+ - [実装内容]
78
+ - **リファクタリング**:
79
+ - [改善内容]
80
+ - **要件**: Story X
81
+ - **依存関係**: ...
82
+ - **完了条件**: ...
83
+ - **対応設計**: ...
84
+ - **実装AC**: ACX.X, ACX.Y
85
+ - **シナリオテスト**: ...
86
+ ```
87
+
88
+ 詳細は[タスク管理ガイドライン](../../../docs/einja/steering/task-management.md)の「TDDタスク構造」セクションを参照。
89
+
90
+ ## エラーフィードバック対応
91
+
92
+ `error_feedback` が渡された場合:
93
+ 1. エラーレポートを解析
94
+ 2. 指摘された問題を特定
95
+ 3. 修正版のタスク一覧を生成
96
+ 4. 同じエラーを繰り返さないよう注意
97
+
98
+ ## 関連ドキュメント
99
+
100
+ - [タスク管理ガイドライン](../../../docs/einja/steering/task-management.md) - フォーマット定義(Single Source of Truth)
101
+ - [tasks-generator サブエージェント](../../agents/einja/issue-specs/tasks-generator.md) - 呼び出し元
102
+
103
+ <!-- @einja:project-private:start id="einja-issue-spec-generator-project" -->
104
+ <!-- プロジェクト固有の情報を記入 -->
105
+ <!-- @einja:project-private:end -->
@@ -0,0 +1,35 @@
1
+ # タスクフォーマット簡易参照
2
+
3
+ **詳細は [タスク管理ガイドライン](../../../../docs/einja/steering/task-management.md) を参照**
4
+
5
+ ## タスク階層
6
+
7
+ | 階層 | 番号形式 | Markdown形式 |
8
+ |------|---------|-------------|
9
+ | Phase | 1, 2, 3 | `### Phase 1: 名前` |
10
+ | タスクグループ | X.Y | `- [ ] 1.1 名前` |
11
+ | タスク | X.Y.Z | ` - 1.1.1 名前` |
12
+ | サブタスク | なし | ` - 内容` |
13
+
14
+ ## メタデータ(タスク単位で必須)
15
+
16
+ ```markdown
17
+ - 1.1.1 タスク名
18
+ - サブタスク内容
19
+ - **要件**: Story X
20
+ - **依存関係**: なし
21
+ - **完了条件**: [条件](ACX.Xを満たす)
22
+ - **対応設計**: design.md「セクション名」
23
+ - **シナリオテスト**: なし(理由)
24
+ ```
25
+
26
+ ## 依存関係の書式
27
+
28
+ | 形式 | 例 |
29
+ |------|-----|
30
+ | なし | `**依存関係**: なし` |
31
+ | タスクグループ依存 | `**依存関係**: 1.1` |
32
+ | 複数依存 | `**依存関係**: 1.2, 1.3` |
33
+ | Phase依存 | `**依存関係**: Phase 1完了` |
34
+
35
+ **使用禁止形式**: `1.1完了`、`タスク1.1`
@@ -0,0 +1,130 @@
1
+ # Issue仕様タスク検証 Skill
2
+
3
+ ## 概要
4
+
5
+ このSkillは、生成されたタスク一覧のフォーマットを検証し、違反があればエラーレポートを生成します。
6
+
7
+ ## 責務
8
+
9
+ - 生成されたタスクのフォーマット検証
10
+ - 違反検出時にエラーレポート(Markdown形式)を生成
11
+ - 差し戻し判定(SUCCESS / FAILURE + エラー詳細)
12
+
13
+ ## 使用タイミング
14
+
15
+ - tasks-validator サブエージェントから呼び出される
16
+ - einja-issue-spec-create Skillのタスク検証フェーズで使用
17
+ - タスク生成直後に自動実行
18
+
19
+ ## 入力
20
+
21
+ - `tasks_markdown`: 検証対象のタスク一覧(Markdown形式)
22
+ - `retry_count`: 現在のリトライ回数(0から開始)
23
+ - `max_retries`: 最大リトライ回数(デフォルト: 3)
24
+
25
+ ## 出力
26
+
27
+ ### 成功時
28
+ ```markdown
29
+ ## バリデーション結果: SUCCESS
30
+
31
+ タスク一覧のフォーマットは正しいです。
32
+ 次のフェーズに進んでください。
33
+ ```
34
+
35
+ ### 失敗時
36
+ ```markdown
37
+ ## バリデーション結果: FAILURE
38
+
39
+ ### エラー一覧
40
+
41
+ 1. **タスク X.Y.Z** - [エラー種別]
42
+ - 問題: [問題の説明]
43
+ - 修正案: [具体的な修正方法]
44
+
45
+ 2. **行 NN** - [エラー種別]
46
+ - 問題: [問題の説明]
47
+ - 修正案: [具体的な修正方法]
48
+
49
+ ### リトライ情報
50
+ - 現在の試行回数: N
51
+ - 最大試行回数: 3
52
+ - 残り試行回数: M
53
+ ```
54
+
55
+ ## 検証項目
56
+
57
+ ### 1. 構造検証
58
+ - [ ] Phase番号が1から連番になっているか
59
+ - [ ] タスクグループIDが `X.Y` 形式か
60
+ - [ ] タスクIDが `X.Y.Z` 形式か
61
+
62
+ ### 2. インデント検証
63
+ - [ ] タスクが2スペースインデントか
64
+ - [ ] サブタスク/メタデータが4スペースインデントか
65
+
66
+ ### 3. メタデータ検証(タスク単位で必須)
67
+ - [ ] **要件**: Story X
68
+ - [ ] **依存関係**: なし / X.Y / Phase X完了
69
+ - [ ] **完了条件**: [条件](ACX.Xを満たす)
70
+ - [ ] **対応設計**: design.md「セクション名」
71
+ - [ ] **シナリオテスト**: なし(理由) / シナリオX
72
+
73
+ ### 4. 依存関係検証
74
+ - [ ] 参照先のタスクグループが存在するか
75
+ - [ ] 循環依存がないか
76
+ - [ ] 依存関係の書式が正しいか(`X.Y完了` は不可)
77
+
78
+ ### 5. ATDDチェック
79
+ - [ ] Phase数が2-3個以内か
80
+ - [ ] タスクグループが縦切り(フルスタック)になっているか
81
+
82
+ ### 6. 横切り検出(最重要)
83
+
84
+ **タスクグループ名に以下の禁止ワードが含まれていないか確認**:
85
+
86
+ | 禁止ワード | 理由 |
87
+ |-----------|------|
88
+ | `Domain` | レイヤーごとの分割 |
89
+ | `Infra` / `Infrastructure` | レイヤーごとの分割 |
90
+ | `UseCase` / `Application` | レイヤーごとの分割 |
91
+ | `API` / `Presentation` | レイヤーごとの分割 |
92
+ | `UI` / `画面` / `フロントエンド` | レイヤー/画面ごとの分割 |
93
+ | `層` | レイヤーごとの分割 |
94
+ | `Repository` | クラスごとの分割 |
95
+ | `Validator` | クラスごとの分割 |
96
+ | `Entity` | クラスごとの分割 |
97
+ | `Mapper` | クラスごとの分割 |
98
+ | `一覧` / `詳細` / `編集` / `削除` (単体) | 画面ごとの分割 |
99
+
100
+ **例外**:
101
+ - 「ユーザー作成・編集・削除機能」のように複数をまとめた場合はOK
102
+ - 「Domain〜UIまでフルスタック」のようにサブタスク説明に含まれる場合はOK
103
+ - タスク名(X.Y.Z)に含まれる場合はOK(タスクグループ名のみチェック)
104
+
105
+ **検出ロジック**:
106
+ ```
107
+ タスクグループ名(X.Y 名前)の「名前」部分に禁止ワードが含まれていたらエラー
108
+ ```
109
+
110
+ ## エラー種別
111
+
112
+ | 種別 | 説明 |
113
+ |------|------|
114
+ | `missing_metadata` | 必須メタデータが欠落 |
115
+ | `invalid_indent` | インデントが不正 |
116
+ | `invalid_id_format` | ID形式が不正 |
117
+ | `invalid_dependency` | 依存関係の書式が不正 |
118
+ | `missing_dependency_target` | 依存先が存在しない |
119
+ | `too_many_phases` | Phase数が多すぎる |
120
+ | `horizontal_split` | 横切り分割(アンチパターン) |
121
+ | `horizontal_split_keyword` | タスクグループ名に禁止ワードが含まれる |
122
+
123
+ ## 関連ドキュメント
124
+
125
+ - [タスク管理ガイドライン](../../../docs/einja/steering/task-management.md) - フォーマット定義(Single Source of Truth)
126
+ - [tasks-validator サブエージェント](../../agents/einja/issue-specs/tasks-validator.md) - 呼び出し元
127
+
128
+ <!-- @einja:project-private:start id="einja-issue-spec-validator-project" -->
129
+ <!-- プロジェクト固有の情報を記入 -->
130
+ <!-- @einja:project-private:end -->
@@ -0,0 +1,52 @@
1
+ # バリデーションルール詳細
2
+
3
+ **詳細は [タスク管理ガイドライン](../../../../docs/einja/steering/task-management.md) を参照**
4
+
5
+ ## 必須メタデータ一覧
6
+
7
+ 各タスク(X.Y.Z)に以下が必須:
8
+
9
+ | メタデータ | 形式 | 例 |
10
+ |-----------|------|-----|
11
+ | 要件 | `**要件**: Story X` | `**要件**: Story 1` |
12
+ | 依存関係 | `**依存関係**: なし/X.Y/Phase X完了` | `**依存関係**: 1.1` |
13
+ | 完了条件 | `**完了条件**: [条件](ACX.Xを満たす)` | `**完了条件**: テスト通過(AC1.1を満たす)` |
14
+ | 対応設計 | `**対応設計**: design.md「セクション名」` | `**対応設計**: design.md「認証フロー」` |
15
+ | シナリオテスト | `**シナリオテスト**: なし/シナリオX` | `**シナリオテスト**: シナリオ1 Step 1-3` |
16
+
17
+ ## 依存関係の有効形式
18
+
19
+ | 形式 | 有効 | 例 |
20
+ |------|------|-----|
21
+ | `なし` | 有効 | `**依存関係**: なし` |
22
+ | `X.Y` | 有効 | `**依存関係**: 1.1` |
23
+ | `X.Y, X.Y` | 有効 | `**依存関係**: 1.2, 1.3` |
24
+ | `Phase X完了` | 有効 | `**依存関係**: Phase 1完了` |
25
+ | `X.Y完了` | 無効 | スクリプト認識不可 |
26
+ | `タスクX.Y` | 無効 | スクリプト認識不可 |
27
+
28
+ ## インデントルール
29
+
30
+ ```
31
+ ### Phase 1: 名前 <- インデントなし
32
+ - [ ] 1.1 タスクグループ名 <- インデントなし
33
+ - 1.1.1 タスク名 <- 2スペース
34
+ - サブタスク <- 4スペース
35
+ - **要件**: Story 1 <- 4スペース
36
+ ```
37
+
38
+ ## ATDD粒度チェック
39
+
40
+ | 項目 | 基準 |
41
+ |------|------|
42
+ | Phase数 | 2-3個(4個以上は不可) |
43
+ | タスクグループ/Phase | 2-4個(6個以上は不可) |
44
+ | タスクグループ分割 | 縦切り(フルスタック)のみ |
45
+
46
+ ## アンチパターン検出
47
+
48
+ 以下のパターンを検出したらエラー:
49
+
50
+ 1. **画面ごとの分割**: 「一覧画面」「詳細画面」「編集画面」が別タスクグループ
51
+ 2. **レイヤーごとの分割**: 「Domain層」「Infra層」「UseCase」が別タスクグループ
52
+ 3. **クラスごとの分割**: 「Entity」「Repository」「Mapper」が別タスクグループ