@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.
- package/README.md +89 -1
- package/dist/cli.js +1 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +71 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +187 -13
- 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/dependency-checker.d.ts.map +1 -1
- package/dist/lib/merger.d.ts +12 -0
- package/dist/lib/merger.d.ts.map +1 -1
- package/dist/lib/merger.js +28 -0
- package/dist/lib/merger.js.map +1 -1
- package/dist/lib/preset-update/cli-repo-detector.d.ts.map +1 -1
- package/dist/lib/preset-update/file-copier.d.ts.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/preset-update/preset-finder.d.ts.map +1 -1
- package/dist/lib/preset.d.ts.map +1 -1
- package/dist/lib/sync/category-validator.d.ts +1 -1
- package/dist/lib/sync/category-validator.d.ts.map +1 -1
- package/dist/lib/sync/category-validator.js +2 -1
- package/dist/lib/sync/category-validator.js.map +1 -1
- package/dist/lib/sync/category-validator.test.js +3 -1
- package/dist/lib/sync/category-validator.test.js.map +1 -1
- package/dist/lib/sync/conflict-reporter.d.ts.map +1 -1
- package/dist/lib/sync/diff-engine.d.ts.map +1 -1
- package/dist/lib/sync/file-filter.d.ts.map +1 -1
- package/dist/lib/sync/file-filter.js +1 -0
- package/dist/lib/sync/file-filter.js.map +1 -1
- package/dist/lib/sync/integration.test.js +255 -69
- package/dist/lib/sync/integration.test.js.map +1 -1
- package/dist/lib/sync/json-processor.d.ts +4 -4
- package/dist/lib/sync/json-processor.d.ts.map +1 -1
- package/dist/lib/sync/json-processor.js +11 -11
- package/dist/lib/sync/json-processor.js.map +1 -1
- package/dist/lib/sync/marker-processor.d.ts +60 -8
- package/dist/lib/sync/marker-processor.d.ts.map +1 -1
- package/dist/lib/sync/marker-processor.js +117 -26
- package/dist/lib/sync/marker-processor.js.map +1 -1
- package/dist/lib/sync/marker-processor.test.js +261 -40
- package/dist/lib/sync/marker-processor.test.js.map +1 -1
- package/dist/lib/sync/metadata-manager.d.ts +4 -0
- package/dist/lib/sync/metadata-manager.d.ts.map +1 -1
- package/dist/lib/sync/metadata-manager.js +15 -0
- package/dist/lib/sync/metadata-manager.js.map +1 -1
- package/dist/lib/sync/metadata-manager.test.js +69 -0
- package/dist/lib/sync/metadata-manager.test.js.map +1 -1
- package/dist/lib/sync/orphan-cleaner.d.ts +29 -0
- package/dist/lib/sync/orphan-cleaner.d.ts.map +1 -0
- package/dist/lib/sync/orphan-cleaner.js +80 -0
- package/dist/lib/sync/orphan-cleaner.js.map +1 -0
- package/dist/lib/sync/orphan-cleaner.test.d.ts +2 -0
- package/dist/lib/sync/orphan-cleaner.test.d.ts.map +1 -0
- package/dist/lib/sync/orphan-cleaner.test.js +169 -0
- package/dist/lib/sync/orphan-cleaner.test.js.map +1 -0
- package/dist/lib/sync/project-private-synchronizer.d.ts +52 -0
- package/dist/lib/sync/project-private-synchronizer.d.ts.map +1 -0
- package/dist/lib/sync/project-private-synchronizer.js +110 -0
- package/dist/lib/sync/project-private-synchronizer.js.map +1 -0
- package/dist/lib/sync/project-private-synchronizer.test.d.ts +2 -0
- package/dist/lib/sync/project-private-synchronizer.test.d.ts.map +1 -0
- package/dist/lib/sync/project-private-synchronizer.test.js +348 -0
- package/dist/lib/sync/project-private-synchronizer.test.js.map +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/sync.d.ts +36 -6
- package/dist/types/sync.d.ts.map +1 -1
- package/dist/types/sync.js +2 -2
- package/dist/types/sync.js.map +1 -1
- package/package.json +5 -4
- package/presets/default/.claude/agents/einja/Explore.md +140 -0
- package/presets/default/.claude/agents/einja/backend-architect.md +21 -1
- package/presets/default/.claude/agents/einja/codex-agent.md +5 -1
- package/presets/default/.claude/agents/einja/design-engineer.md +5 -1
- package/presets/default/.claude/agents/einja/docs/docs-updater.md +7 -93
- package/presets/default/.claude/agents/einja/frontend-architect.md +21 -1
- package/presets/default/.claude/agents/einja/frontend-coder.md +5 -1
- package/presets/default/.claude/agents/einja/{specs/spec-design-generator.md → issue-specs/design-generator.md} +16 -8
- package/presets/default/.claude/agents/einja/{specs/spec-qa-generator.md → issue-specs/qa-generator.md} +10 -4
- package/presets/default/.claude/agents/einja/{specs/spec-requirements-generator.md → issue-specs/requirements-generator.md} +9 -6
- package/presets/default/.claude/agents/einja/{specs/spec-tasks-generator.md → issue-specs/tasks-generator.md} +19 -16
- package/presets/default/.claude/agents/einja/{specs/spec-tasks-validator.md → issue-specs/tasks-validator.md} +13 -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 +64 -116
- package/presets/default/.claude/agents/einja/task/task-modification-analyzer.md +6 -2
- package/presets/default/.claude/agents/einja/task/task-qa.md +7 -3
- package/presets/default/.claude/agents/einja/task/task-reviewer.md +17 -1
- package/presets/default/.claude/commands/einja/einja-sync.md +124 -45
- package/presets/default/.claude/commands/einja/frontend-implement.md +3 -1
- package/presets/default/.claude/commands/einja/issue-exec.md +413 -0
- package/presets/default/.claude/commands/einja/start-dev.md +4 -0
- package/presets/default/.claude/commands/einja/sync-cursor-commands.md +10 -6
- package/presets/default/.claude/commands/einja/{update-docs-by-task-specs.md → update-docs-by-issue-specs.md} +61 -57
- package/presets/default/.claude/hooks/einja/plan-mode-skill-loader.sh +27 -0
- package/presets/default/.claude/settings.json +29 -5
- package/presets/default/.claude/skills/{einja-general-context-loader → _einja-general-context-loader}/SKILL.md +6 -2
- package/presets/default/.claude/skills/{einja-output-format → _einja-output-format}/SKILL.md +5 -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 +9 -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 +5 -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} +60 -23
- 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 +311 -263
- package/presets/default/.claude/skills/einja-skill-creator/agents/analyzer.md +274 -0
- package/presets/default/.claude/skills/einja-skill-creator/agents/comparator.md +202 -0
- package/presets/default/.claude/skills/einja-skill-creator/agents/grader.md +195 -0
- package/presets/default/.claude/skills/einja-skill-creator/assets/eval_review.html +146 -0
- package/presets/default/.claude/skills/einja-skill-creator/eval-viewer/generate_review.py +471 -0
- package/presets/default/.claude/skills/einja-skill-creator/eval-viewer/viewer.html +1325 -0
- package/presets/default/.claude/skills/einja-skill-creator/references/schemas.md +430 -0
- package/presets/default/.claude/skills/einja-skill-creator/scripts/aggregate_benchmark.py +401 -0
- 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 +272 -0
- package/presets/default/.claude/skills/einja-skill-creator/scripts/improve_description.py +247 -0
- package/presets/default/.claude/skills/einja-skill-creator/scripts/init_skill.py +13 -19
- package/presets/default/.claude/skills/einja-skill-creator/scripts/package_skill.py +36 -7
- package/presets/default/.claude/skills/einja-skill-creator/scripts/run_eval.py +310 -0
- package/presets/default/.claude/skills/einja-skill-creator/scripts/run_loop.py +375 -0
- package/presets/default/.claude/skills/einja-skill-creator/scripts/utils.py +48 -0
- 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 +11 -7
- package/presets/default/.claude/{commands/einja/task-exec.md → skills/einja-task-exec/SKILL.md} +106 -89
- package/presets/default/.claude/skills/einja-task-qa/SKILL.md +8 -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/.envrc +5 -0
- package/presets/default/.mcp.json +2 -12
- package/presets/default/CLAUDE.md.template +45 -8
- package/presets/default/docs/einja/example/specs/issues/issue999-example-task/tasks.md +1 -1
- package/presets/default/docs/einja/instructions/deployment-setup.md +4 -9
- package/presets/default/docs/einja/instructions/environment-setup.md +3 -8
- package/presets/default/docs/einja/instructions/issue-exec-workflow.md +276 -0
- package/presets/default/docs/einja/instructions/local-server-environment-and-worktree.md +71 -9
- package/presets/default/docs/einja/instructions/neon-cli-reference.md +3 -8
- package/presets/default/docs/einja/instructions/setup-flow.md +279 -0
- package/presets/default/docs/einja/instructions/task-execute.md +63 -68
- package/presets/default/docs/einja/instructions/vercel-cli-reference.md +17 -10
- package/presets/default/docs/einja/steering/README.md +11 -11
- package/presets/default/docs/einja/steering/acceptance-criteria-and-qa-guide.md +4 -9
- package/presets/default/docs/einja/steering/architecture.md +3 -8
- package/presets/default/docs/einja/steering/branch-strategy.md +63 -70
- package/presets/default/docs/einja/steering/commit-rules.md +3 -8
- package/presets/default/docs/einja/steering/db-schema-design.md +3 -8
- package/presets/default/docs/einja/steering/development/api-development.md +3 -8
- package/presets/default/docs/einja/steering/development/backend-architecture.md +3 -8
- package/presets/default/docs/einja/steering/development/coding-standards.md +723 -0
- package/presets/default/docs/einja/steering/development/component-design.md +502 -0
- package/presets/default/docs/einja/steering/development/database-guidelines.md +2 -2
- package/presets/default/docs/einja/steering/development/frontend-development.md +3 -8
- package/presets/default/docs/einja/steering/development/playwright-guidelines.md +59 -0
- package/presets/default/docs/einja/steering/development/review-guidelines.md +3 -8
- package/presets/default/docs/einja/steering/development/testing-strategy.md +3 -8
- package/presets/default/docs/einja/steering/development-workflow.md +155 -140
- package/presets/default/docs/einja/steering/infrastructure/deployment.md +156 -55
- package/presets/default/docs/einja/steering/infrastructure/environment-variables.md +4 -8
- package/presets/default/docs/einja/steering/product.md +3 -8
- package/presets/default/docs/einja/steering/task-management.md +22 -110
- package/presets/default/scripts/ensure-serena.sh +75 -0
- package/presets/default/scripts/env-rotate-secrets.ts +396 -0
- package/presets/default/scripts/env-show.ts +130 -0
- package/presets/default/scripts/env.ts +479 -0
- package/presets/default/scripts/init-github.ts +363 -0
- package/presets/default/scripts/init.sh +98 -0
- package/presets/default/scripts/lib/env-common.ts +108 -0
- package/presets/default/scripts/lib/worktree-config.ts +64 -0
- package/presets/default/scripts/setup-dev.ts +655 -0
- package/presets/default/scripts/stop-serena.sh +25 -0
- package/presets/default/scripts/worktree/dev.ts +872 -0
- package/dist/lib/sync/seed-synchronizer.d.ts +0 -27
- package/dist/lib/sync/seed-synchronizer.d.ts.map +0 -1
- package/dist/lib/sync/seed-synchronizer.js +0 -72
- package/dist/lib/sync/seed-synchronizer.js.map +0 -1
- package/dist/lib/sync/seed-synchronizer.test.d.ts +0 -2
- package/dist/lib/sync/seed-synchronizer.test.d.ts.map +0 -1
- package/dist/lib/sync/seed-synchronizer.test.js +0 -147
- package/dist/lib/sync/seed-synchronizer.test.js.map +0 -1
- package/presets/default/.claude/agents/einja/git/conflict-resolver.md +0 -148
- package/presets/default/.claude/hooks/einja/validate-git-commit.sh +0 -239
- package/presets/default/.claude/skills/einja-api-development/SKILL.md +0 -14
- package/presets/default/.claude/skills/einja-backend-architecture/SKILL.md +0 -18
- package/presets/default/.claude/skills/einja-coding-standards/SKILL.md +0 -132
- package/presets/default/.claude/skills/einja-coding-standards/references/import-conventions.md +0 -69
- package/presets/default/.claude/skills/einja-coding-standards/references/naming-conventions.md +0 -107
- package/presets/default/.claude/skills/einja-coding-standards/references/prohibited-patterns.md +0 -169
- package/presets/default/.claude/skills/einja-coding-standards/references/typescript-rules.md +0 -247
- package/presets/default/.claude/skills/einja-component-design/SKILL.md +0 -109
- package/presets/default/.claude/skills/einja-component-design/references/directory-structure.md +0 -117
- package/presets/default/.claude/skills/einja-component-design/references/props-patterns.md +0 -159
- package/presets/default/.claude/skills/einja-component-design/references/styling-guide.md +0 -122
- package/presets/default/.claude/skills/einja-frontend-development/SKILL.md +0 -14
- package/presets/default/.claude/skills/einja-project-overview/SKILL.md +0 -35
- 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
|
-
**⚠️ 重要**:
|
|
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.
|
|
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.
|
|
156
|
-
|
|
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
|
|
169
|
-
1.
|
|
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
|
|
214
|
+
#### Phase 5: GitHub Issueへのタスク記述
|
|
183
215
|
|
|
184
|
-
#####
|
|
216
|
+
##### 5.1 タスク生成・検証ループ
|
|
185
217
|
|
|
186
218
|
**重要**: タスク生成後は自動的にフォーマット検証を行い、違反があれば差し戻します。
|
|
187
219
|
|
|
188
220
|
```
|
|
189
221
|
【タスク生成・検証ループ】(最大3回)
|
|
190
222
|
│
|
|
191
|
-
├─
|
|
223
|
+
├─ tasks-generator 呼び出し
|
|
192
224
|
│ └─ タスク一覧を生成(またはエラーフィードバックを元に修正版を生成)
|
|
193
225
|
│
|
|
194
|
-
├─
|
|
226
|
+
├─ tasks-validator 呼び出し
|
|
195
227
|
│ └─ フォーマット検証
|
|
196
228
|
│
|
|
197
229
|
└─ 検証結果判定
|
|
198
230
|
├─ SUCCESS → ループ終了、ユーザー確認へ
|
|
199
|
-
└─ FAILURE →
|
|
231
|
+
└─ FAILURE → tasks-generator に差し戻し
|
|
200
232
|
└─ エラーレポート付きで再呼び出し
|
|
201
233
|
└─ ループ再開(最大3回)
|
|
202
234
|
|
|
203
235
|
※ 3回失敗 → ユーザーに手動修正を依頼
|
|
204
236
|
```
|
|
205
237
|
|
|
206
|
-
1. **
|
|
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. **
|
|
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
|
-
- エラーレポートを
|
|
254
|
+
- エラーレポートを tasks-generator に渡して再生成
|
|
223
255
|
- ループ再開(現在の試行回数をインクリメント)
|
|
224
256
|
- **MAX_RETRIES_EXCEEDED(3回失敗)**:
|
|
225
257
|
- ユーザーに手動修正を依頼
|
|
226
258
|
- エラー内容を提示し、修正後に続行できるよう案内
|
|
227
259
|
|
|
228
|
-
#####
|
|
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 -->
|
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」が別タスクグループ
|