@einja/dev-cli 0.1.41 → 0.1.45
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -1
- package/dist/cli.js +0 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +1 -20
- package/dist/commands/sync.js.map +1 -1
- package/dist/commands/task-loop/lib/github-client.test.js.map +1 -1
- package/dist/commands/task-loop/lib/vibe-kanban-rest-client.js +2 -2
- package/dist/commands/task-loop/lib/vibe-kanban-rest-client.js.map +1 -1
- package/dist/lib/preset-update/file-copier.js +3 -3
- package/dist/lib/preset-update/file-copier.js.map +1 -1
- package/dist/lib/sync/file-filter.js +2 -2
- package/dist/lib/sync/file-filter.js.map +1 -1
- package/dist/lib/sync/file-filter.test.js +20 -0
- package/dist/lib/sync/file-filter.test.js.map +1 -1
- package/dist/lib/sync/marker-processor.js.map +1 -1
- package/dist/lib/sync/metadata-manager.js +1 -1
- package/dist/lib/sync/metadata-manager.js.map +1 -1
- package/dist/lib/sync/metadata-manager.test.js +3 -2
- package/dist/lib/sync/metadata-manager.test.js.map +1 -1
- package/dist/lib/sync/project-private-synchronizer.d.ts.map +1 -1
- package/dist/lib/sync/project-private-synchronizer.js +5 -1
- package/dist/lib/sync/project-private-synchronizer.js.map +1 -1
- package/dist/types/index.d.ts +0 -1
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/presets/default/.claude/agents/einja/backend-architect.md +17 -1
- package/presets/default/.claude/agents/einja/codex-agent.md +1 -1
- package/presets/default/.claude/agents/einja/design-engineer.md +1 -1
- package/presets/default/.claude/agents/einja/docs/docs-updater.md +3 -93
- package/presets/default/.claude/agents/einja/frontend-architect.md +17 -1
- package/presets/default/.claude/agents/einja/frontend-coder.md +1 -1
- package/presets/default/.claude/agents/einja/{specs/spec-design-generator.md → issue-specs/design-generator.md} +12 -7
- package/presets/default/.claude/agents/einja/{specs/spec-qa-generator.md → issue-specs/qa-generator.md} +6 -4
- package/presets/default/.claude/agents/einja/{specs/spec-requirements-generator.md → issue-specs/requirements-generator.md} +5 -5
- package/presets/default/.claude/agents/einja/{specs/spec-tasks-generator.md → issue-specs/tasks-generator.md} +13 -14
- package/presets/default/.claude/agents/einja/{specs/spec-tasks-validator.md → issue-specs/tasks-validator.md} +9 -9
- package/presets/default/.claude/agents/einja/issue-specs/ui-design-generator.md +114 -0
- package/presets/default/.claude/agents/einja/task/task-executer.md +9 -3
- package/presets/default/.claude/agents/einja/task/task-modification-analyzer.md +2 -2
- package/presets/default/.claude/agents/einja/task/task-qa.md +3 -3
- package/presets/default/.claude/agents/einja/task/task-reviewer.md +13 -1
- package/presets/default/.claude/commands/einja/einja-sync.md +119 -44
- package/presets/default/.claude/commands/einja/issue-exec.md +29 -19
- package/presets/default/.claude/commands/einja/sync-cursor-commands.md +6 -6
- package/presets/default/.claude/commands/einja/{update-docs-by-task-specs.md → update-docs-by-issue-specs.md} +58 -58
- package/presets/default/.claude/hooks/einja/plan-mode-skill-loader.sh +5 -1
- package/presets/default/.claude/settings.json +14 -4
- package/presets/default/.claude/skills/{einja-general-context-loader → _einja-general-context-loader}/SKILL.md +2 -2
- package/presets/default/.claude/skills/{einja-output-format → _einja-output-format}/SKILL.md +1 -1
- package/presets/default/.claude/skills/_einja-project-overview/SKILL.md +29 -0
- package/presets/default/.claude/skills/{einja-spec-context-loader → _einja-spec-context-loader}/SKILL.md +5 -5
- package/presets/default/.claude/skills/einja-coding-standards/references/testing-strategy.md +899 -0
- package/presets/default/.claude/skills/einja-conflict-resolver/SKILL.md +1 -1
- package/presets/default/.claude/skills/einja-create-pr/SKILL.md +138 -0
- package/presets/default/.claude/skills/einja-infra-maintenance/SKILL.md +779 -0
- package/presets/default/.claude/{commands/einja/spec-create.md → skills/einja-issue-spec-create/SKILL.md} +47 -24
- package/presets/default/.claude/skills/einja-issue-spec-generator/SKILL.md +105 -0
- package/presets/default/.claude/skills/einja-issue-spec-generator/references/format-rules.md +35 -0
- package/presets/default/.claude/skills/einja-issue-spec-validator/SKILL.md +130 -0
- package/presets/default/.claude/skills/einja-issue-spec-validator/references/validation-rules.md +52 -0
- package/presets/default/.claude/skills/einja-npm-release/SKILL.md +242 -0
- package/presets/default/.claude/skills/einja-skill-creator/SKILL.md +68 -12
- package/presets/default/.claude/skills/einja-skill-creator/scripts/aggregate_benchmark.py +368 -121
- package/presets/default/.claude/skills/einja-skill-creator/scripts/compare_runs.py +154 -0
- package/presets/default/.claude/skills/einja-skill-creator/scripts/generate_report.py +14 -7
- package/presets/default/.claude/skills/einja-skill-creator/scripts/improve_description.py +2 -7
- package/presets/default/.claude/skills/einja-skill-creator/scripts/run_loop.py +263 -183
- package/presets/default/.claude/skills/einja-skill-first/SKILL.md +265 -0
- package/presets/default/.claude/skills/einja-subagent-question-protocol/SKILL.md +98 -0
- package/presets/default/.claude/skills/einja-task-commit/SKILL.md +7 -7
- package/presets/default/.claude/{commands/einja/task-exec.md → skills/einja-task-exec/SKILL.md} +3 -78
- package/presets/default/.claude/skills/einja-task-qa/SKILL.md +4 -4
- package/presets/default/.claude/skills/einja-task-qa/references/troubleshooting.md +1 -1
- package/presets/default/.claude/skills/einja-task-qa/references/usage-patterns.md +2 -2
- package/presets/default/.claude/skills/einja-team-exec/SKILL.md +165 -0
- package/presets/default/CLAUDE.md.template +21 -6
- package/presets/default/docs/einja/instructions/deployment-setup.md +1 -1
- package/presets/default/docs/einja/instructions/issue-exec-workflow.md +11 -11
- package/presets/default/docs/einja/instructions/local-server-environment-and-worktree.md +1 -1
- package/presets/default/docs/einja/instructions/setup-flow.md +279 -0
- package/presets/default/docs/einja/instructions/task-execute.md +42 -42
- package/presets/default/docs/einja/steering/acceptance-criteria-and-qa-guide.md +1 -1
- package/presets/default/docs/einja/steering/branch-strategy.md +1 -1
- package/presets/default/docs/einja/steering/development-workflow.md +93 -25
- package/presets/default/docs/einja/steering/infrastructure/deployment.md +107 -0
- package/presets/default/docs/einja/steering/task-management.md +9 -13
- package/presets/default/scripts/ensure-serena.sh +2 -2
- package/presets/default/scripts/env-rotate-secrets.ts +66 -6
- package/presets/default/scripts/init-github.ts +363 -0
- package/presets/default/scripts/init.sh +11 -5
- package/presets/default/scripts/setup-dev.ts +16 -1
- package/dist/lib/sync/backup-manager.d.ts +0 -50
- package/dist/lib/sync/backup-manager.d.ts.map +0 -1
- package/dist/lib/sync/backup-manager.js +0 -117
- package/dist/lib/sync/backup-manager.js.map +0 -1
- package/dist/lib/sync/backup-manager.test.d.ts +0 -2
- package/dist/lib/sync/backup-manager.test.d.ts.map +0 -1
- package/dist/lib/sync/backup-manager.test.js +0 -155
- package/dist/lib/sync/backup-manager.test.js.map +0 -1
- package/presets/default/.claude/agents/einja/git/conflict-resolver.md +0 -152
- package/presets/default/.claude/hooks/einja/validate-git-commit.sh +0 -239
- package/presets/default/.claude/skills/einja-project-overview/SKILL.md +0 -39
|
@@ -1,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
|
- ユーザー承認待ちの状態も明示的に表示
|
|
@@ -150,7 +145,7 @@ AskUserQuestion:
|
|
|
150
145
|
**重要**: 各段階で必ずユーザー承認を得て、コミット&プッシュしてから次へ進行すること。
|
|
151
146
|
|
|
152
147
|
#### Phase 1: requirements.md(要件定義書)
|
|
153
|
-
1.
|
|
148
|
+
1. requirements-generatorエージェントで作成
|
|
154
149
|
- エージェント内で既存コードの分析を実施
|
|
155
150
|
- ATDD形式のユーザーストーリーと受け入れ基準
|
|
156
151
|
2. **ユーザーに内容確認を依頼**
|
|
@@ -162,11 +157,38 @@ AskUserQuestion:
|
|
|
162
157
|
- 他のメンバーがレビューできるようにする
|
|
163
158
|
4. **承認を得てから次のステップ(design.md)に進む**
|
|
164
159
|
|
|
165
|
-
#### Phase 2: design.
|
|
166
|
-
|
|
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エージェントで作成
|
|
167
188
|
- エージェント内で既存アーキテクチャの調査を実施
|
|
168
189
|
- 技術アーキテクチャとデータモデル
|
|
169
190
|
- requirements.mdの内容を参照
|
|
191
|
+
- **ui-design.penが存在する場合、Pencil MCPでビジュアルモックアップを参照してUI関連セクション(9-11)を作成**
|
|
170
192
|
2. **ユーザーに内容確認を依頼**
|
|
171
193
|
- 作成したファイルのパスと概要を提示
|
|
172
194
|
- 確認ポイントを明示(アーキテクチャの妥当性、実装方針など)
|
|
@@ -175,8 +197,8 @@ AskUserQuestion:
|
|
|
175
197
|
- ブランチは `issue/{issue番号}` にプッシュ
|
|
176
198
|
4. **承認を得てから次のステップ(QAテスト仕様生成)に進む**
|
|
177
199
|
|
|
178
|
-
#### Phase
|
|
179
|
-
1.
|
|
200
|
+
#### Phase 4: QAテスト仕様生成(シナリオテスト含む)
|
|
201
|
+
1. qa-generatorエージェントで作成
|
|
180
202
|
- requirements.mdとdesign.mdの内容を参照
|
|
181
203
|
- **シナリオテスト(scenarios.md)**: 複数タスクをまたぐ継続操作フローのテスト仕様
|
|
182
204
|
- **Story別テスト仕様**: 各ユーザーストーリー(AC単位)のテスト仕様
|
|
@@ -189,38 +211,38 @@ AskUserQuestion:
|
|
|
189
211
|
- ブランチは `issue/{issue番号}` にプッシュ
|
|
190
212
|
4. **承認を得てから次のステップ(GitHub Issueへのタスク記述)に進む**
|
|
191
213
|
|
|
192
|
-
#### Phase
|
|
214
|
+
#### Phase 5: GitHub Issueへのタスク記述
|
|
193
215
|
|
|
194
|
-
#####
|
|
216
|
+
##### 5.1 タスク生成・検証ループ
|
|
195
217
|
|
|
196
218
|
**重要**: タスク生成後は自動的にフォーマット検証を行い、違反があれば差し戻します。
|
|
197
219
|
|
|
198
220
|
```
|
|
199
221
|
【タスク生成・検証ループ】(最大3回)
|
|
200
222
|
│
|
|
201
|
-
├─
|
|
223
|
+
├─ tasks-generator 呼び出し
|
|
202
224
|
│ └─ タスク一覧を生成(またはエラーフィードバックを元に修正版を生成)
|
|
203
225
|
│
|
|
204
|
-
├─
|
|
226
|
+
├─ tasks-validator 呼び出し
|
|
205
227
|
│ └─ フォーマット検証
|
|
206
228
|
│
|
|
207
229
|
└─ 検証結果判定
|
|
208
230
|
├─ SUCCESS → ループ終了、ユーザー確認へ
|
|
209
|
-
└─ FAILURE →
|
|
231
|
+
└─ FAILURE → tasks-generator に差し戻し
|
|
210
232
|
└─ エラーレポート付きで再呼び出し
|
|
211
233
|
└─ ループ再開(最大3回)
|
|
212
234
|
|
|
213
235
|
※ 3回失敗 → ユーザーに手動修正を依頼
|
|
214
236
|
```
|
|
215
237
|
|
|
216
|
-
1. **
|
|
238
|
+
1. **tasks-generatorエージェントでタスク生成**
|
|
217
239
|
- エージェント内で実装の影響範囲を分析
|
|
218
240
|
- 実装タスクの分解と依存関係
|
|
219
241
|
- requirements.md、design.md、**qa-tests/scenarios.md**の内容を参照
|
|
220
242
|
- 各タスクに**シナリオテスト実施タイミング**を明記
|
|
221
243
|
- **GitHub Issueの説明文にタスク一覧を記述**
|
|
222
244
|
|
|
223
|
-
2. **
|
|
245
|
+
2. **tasks-validatorエージェントでフォーマット検証**
|
|
224
246
|
- タスク階層(Phase/タスクグループ/タスク/サブタスク)の形式チェック
|
|
225
247
|
- メタデータ(要件・依存関係・完了条件・対応設計・シナリオテスト)の必須チェック
|
|
226
248
|
- 依存関係の書式・参照先の検証
|
|
@@ -229,13 +251,13 @@ AskUserQuestion:
|
|
|
229
251
|
3. **検証結果の処理**
|
|
230
252
|
- **SUCCESS**: ユーザー確認フェーズへ進む
|
|
231
253
|
- **FAILURE(リトライ可能)**:
|
|
232
|
-
- エラーレポートを
|
|
254
|
+
- エラーレポートを tasks-generator に渡して再生成
|
|
233
255
|
- ループ再開(現在の試行回数をインクリメント)
|
|
234
256
|
- **MAX_RETRIES_EXCEEDED(3回失敗)**:
|
|
235
257
|
- ユーザーに手動修正を依頼
|
|
236
258
|
- エラー内容を提示し、修正後に続行できるよう案内
|
|
237
259
|
|
|
238
|
-
#####
|
|
260
|
+
##### 5.2 ユーザー確認
|
|
239
261
|
|
|
240
262
|
4. **ユーザーに内容確認を依頼**
|
|
241
263
|
- 更新したGitHub IssueのURL(#{issue_number})と概要を提示
|
|
@@ -269,6 +291,7 @@ AskUserQuestion:
|
|
|
269
291
|
- 本文に以下を含める:
|
|
270
292
|
- Spec PR へのリンク
|
|
271
293
|
- 要件ドキュメントへのリンク(requirements.mdまたはrequirements/README.md)
|
|
294
|
+
- UIデザインへのリンク(ui-design.pen、存在する場合のみ)
|
|
272
295
|
- 設計ドキュメントへのリンク(design.mdまたはdesign/README.md)
|
|
273
296
|
- QAテスト仕様へのリンク(qa-tests/scenarios.md)
|
|
274
297
|
- タスク一覧(Phase別チェックボックス形式、シナリオテスト実施タイミング明記)
|
|
@@ -290,6 +313,7 @@ AskUserQuestion:
|
|
|
290
313
|
└── {機能カテゴリ名}/
|
|
291
314
|
└── issue{issue番号}-{機能名}/
|
|
292
315
|
├── requirements.md # 要件定義書(ATDD形式)
|
|
316
|
+
├── ui-design.pen # UIデザイン(UI関連のみ)
|
|
293
317
|
├── design.md # 設計書(技術詳細)
|
|
294
318
|
└── qa-tests/ # QAテスト仕様
|
|
295
319
|
├── scenarios.md # シナリオテスト(複数タスクをまたぐフロー)
|
|
@@ -310,6 +334,7 @@ AskUserQuestion:
|
|
|
310
334
|
│ ├── overview.md # 概要とスコープ
|
|
311
335
|
│ ├── stories.md # ユーザーストーリー
|
|
312
336
|
│ └── technical.md # 技術要件
|
|
337
|
+
├── ui-design.pen # UIデザイン(UI関連のみ)
|
|
313
338
|
├── design/ # 設計書ディレクトリ
|
|
314
339
|
│ ├── README.md # 目次
|
|
315
340
|
│ ├── architecture.md # アーキテクチャ
|
|
@@ -336,8 +361,6 @@ AskUserQuestion:
|
|
|
336
361
|
- Next.js + Hono + Prisma技術スタック対応
|
|
337
362
|
- Asana/Figma連携によるトレーサビリティ確保
|
|
338
363
|
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
<!-- @einja:project-private:start id="spec-create-project" -->
|
|
364
|
+
<!-- @einja:project-private:start id="issue-spec-create-project" -->
|
|
342
365
|
<!-- プロジェクト固有の情報を記入 -->
|
|
343
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 -->
|
package/presets/default/.claude/skills/einja-issue-spec-validator/references/validation-rules.md
ADDED
|
@@ -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」が別タスクグループ
|