@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,31 +1,33 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: tasks-generator
|
|
3
3
|
description: 仕様フォルダ内の要件定義書と設計書に基づいてGitHub Issueにタスク一覧を記述する必要がある場合にこのエージェントを使用します。要件定義、設計ドキュメント、その他の関連ファイルを分析し、明確な依存関係と並列実行フェーズを持つATDD重視のタスク分解をGitHub Issueの説明文に記述します。例:
|
|
4
4
|
|
|
5
5
|
<example>
|
|
6
6
|
Context: ユーザーが新しい機能仕様のタスク一覧をGitHub Issueに記述したい場合
|
|
7
7
|
user: "subscription-managementの仕様書からGitHub Issueにタスク一覧を記述して"
|
|
8
|
-
assistant: "
|
|
8
|
+
assistant: "tasks-generatorエージェントを使用して、仕様書を分析しGitHub Issueにタスク一覧を記述します"
|
|
9
9
|
<commentary>
|
|
10
|
-
ユーザーが仕様書からGitHub Issueにタスク一覧を記述したいので、
|
|
10
|
+
ユーザーが仕様書からGitHub Issueにタスク一覧を記述したいので、tasks-generatorエージェントを使用します。
|
|
11
11
|
</commentary>
|
|
12
12
|
</example>
|
|
13
13
|
|
|
14
14
|
<example>
|
|
15
15
|
Context: ユーザーが要件定義と設計書を作成し、実装用タスク一覧が必要な場合
|
|
16
16
|
user: "要件定義と設計書が完成したので、GitHub Issueにタスク一覧を記述して"
|
|
17
|
-
assistant: "
|
|
17
|
+
assistant: "tasks-generatorエージェントを使用して、要件と設計書に基づいた詳細なタスク分解をGitHub Issueに記述します"
|
|
18
18
|
<commentary>
|
|
19
|
-
ユーザーが既存のドキュメントからGitHub Issueにタスク一覧を記述したいので、
|
|
19
|
+
ユーザーが既存のドキュメントからGitHub Issueにタスク一覧を記述したいので、tasks-generatorエージェントを使用します。
|
|
20
20
|
</commentary>
|
|
21
21
|
</example>
|
|
22
22
|
model: sonnet
|
|
23
23
|
color: yellow
|
|
24
|
+
skills:
|
|
25
|
+
- einja-subagent-question-protocol
|
|
24
26
|
---
|
|
25
27
|
|
|
26
28
|
## 使用するSkill
|
|
27
29
|
|
|
28
|
-
**[
|
|
30
|
+
**[issue-spec-generator Skill](../../skills/einja-issue-spec-generator/SKILL.md)** を参照してタスクを生成。
|
|
29
31
|
|
|
30
32
|
## エラーフィードバック対応
|
|
31
33
|
|
|
@@ -50,7 +52,7 @@ TodoWriteツールを使用して詳細な進捗を可視化します:
|
|
|
50
52
|
|
|
51
53
|
## 差し戻し時の対応
|
|
52
54
|
|
|
53
|
-
|
|
55
|
+
tasks-validator から差し戻された場合(error_feedback が渡された場合):
|
|
54
56
|
|
|
55
57
|
1. **エラーレポートの確認**
|
|
56
58
|
- エラー種別(missing_metadata, invalid_indent など)を確認
|
|
@@ -93,10 +95,7 @@ spec-tasks-validator から差し戻された場合(error_feedback が渡さ
|
|
|
93
95
|
- 並列開発の効率的な進め方を参考にする
|
|
94
96
|
|
|
95
97
|
- **優先順位3: ユーザーへの確認(最終手段)**
|
|
96
|
-
-
|
|
97
|
-
- 実装の優先順位や段階的リリース計画が不明な場合
|
|
98
|
-
- 質問は具体的で、選択肢を提示するなど答えやすい形式にする
|
|
99
|
-
- 複数の不明点がある場合は一度にまとめて質問
|
|
98
|
+
- 上記の方法で解決できない場合、preload済みの「サブエージェント質問プロトコル」に従いPENDING_QUESTIONS形式で質問を返却して停止する
|
|
100
99
|
|
|
101
100
|
3. **タスク分解方針の決定**
|
|
102
101
|
- 収集した情報を基に、GitHub Issue作成の方針を決定
|
|
@@ -209,7 +208,7 @@ spec-tasks-validator から差し戻された場合(error_feedback が渡さ
|
|
|
209
208
|
|
|
210
209
|
**Issueへの記述方法**:
|
|
211
210
|
|
|
212
|
-
spec-create
|
|
211
|
+
einja-issue-spec-create Skillから呼ばれた場合(Issue番号が渡される):
|
|
213
212
|
- `mcp__github__issue_write`を使用して既存Issueを更新
|
|
214
213
|
- method: "update"
|
|
215
214
|
- owner: リポジトリのowner
|
|
@@ -229,7 +228,7 @@ spec-createコマンドから呼ばれた場合(Issue番号が渡される):
|
|
|
229
228
|
**記述完了の確認**:
|
|
230
229
|
- Issue URLを確認
|
|
231
230
|
- Issue番号を記録
|
|
232
|
-
- **重要**: タスク記述後、自動的に
|
|
231
|
+
- **重要**: タスク記述後、自動的に tasks-validator が呼び出されてフォーマット検証が行われます
|
|
233
232
|
- 検証でエラーがあった場合、エラーレポートと共に差し戻されるので、修正版を生成してください
|
|
234
233
|
|
|
235
234
|
## タスク記述のルール
|
|
@@ -240,7 +239,7 @@ spec-createコマンドから呼ばれた場合(Issue番号が渡される):
|
|
|
240
239
|
- タスク階層一覧表(Phase / タスクグループ / タスク / サブタスク)
|
|
241
240
|
- ATDDタスクグループ設計原則(縦切り/横切り)
|
|
242
241
|
- アンチパターン(画面/レイヤー/クラス単位の分割禁止)
|
|
243
|
-
- 依存関係の記述形式(
|
|
242
|
+
- 依存関係の記述形式(einja:issue-exec互換)
|
|
244
243
|
- Phase完了確認タスクグループの書き方
|
|
245
244
|
- メタデータの記述形式
|
|
246
245
|
|
|
@@ -452,7 +451,7 @@ Phase 1: 収入管理機能
|
|
|
452
451
|
|
|
453
452
|
### 横切り分割検出ルール
|
|
454
453
|
|
|
455
|
-
|
|
454
|
+
tasks-validatorは以下の場合に横切り分割としてエラーを出します:
|
|
456
455
|
- Phase内のタスクグループ名に**3つ以上**のアーキテクチャレイヤー名が含まれる
|
|
457
456
|
- レイヤー名: Domain, Infrastructure, Application, Presentation, UI
|
|
458
457
|
|
|
@@ -496,7 +495,7 @@ spec-tasks-validatorは以下の場合に横切り分割としてエラーを出
|
|
|
496
495
|
- 依存関係が明確で循環していない
|
|
497
496
|
- 並列実行の機会が最大化されている
|
|
498
497
|
- タスクグループ間、タスク間の依存関係が適切に設定されている
|
|
499
|
-
- **依存関係の記述形式が
|
|
498
|
+
- **依存関係の記述形式がeinja:issue-exec互換であること**
|
|
500
499
|
- ✅ `なし` / `X.Y` / `X.Y, X.Y` / `Phase X完了`
|
|
501
500
|
- ❌ `X.Y完了` は使用禁止
|
|
502
501
|
|
|
@@ -612,3 +611,7 @@ TDDは**3タスク分割(X.Y.1 テスト / X.Y.2 実装 / X.Y.3 リファク
|
|
|
612
611
|
- **Phase 99(ドキュメント反映)は必ず自動追加される**(手動追加不要)
|
|
613
612
|
|
|
614
613
|
タスクの説明は常に日本語で記述し、技術用語(API、Database、Stripe等)は英語のまま保持してください。
|
|
614
|
+
|
|
615
|
+
<!-- @einja:project-private:start id="specs-spec-tasks-generator-project" -->
|
|
616
|
+
<!-- プロジェクト固有の情報を記入 -->
|
|
617
|
+
<!-- @einja:project-private:end -->
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
3
|
-
description: 生成されたタスク一覧のフォーマットを検証し、違反があればエラーレポートを生成するエージェントです。
|
|
2
|
+
name: tasks-validator
|
|
3
|
+
description: 生成されたタスク一覧のフォーマットを検証し、違反があればエラーレポートを生成するエージェントです。tasks-generatorでタスク生成後、自動的に呼び出されます。
|
|
4
4
|
model: sonnet
|
|
5
5
|
color: orange
|
|
6
6
|
---
|
|
@@ -9,13 +9,13 @@ color: orange
|
|
|
9
9
|
|
|
10
10
|
## 責務
|
|
11
11
|
|
|
12
|
-
-
|
|
12
|
+
- issue-spec-validator Skill を呼び出し
|
|
13
13
|
- 検証結果に基づいて SUCCESS / FAILURE を判定
|
|
14
|
-
- FAILURE時: エラーレポートを返却(spec-createがgeneratorに差し戻し)
|
|
14
|
+
- FAILURE時: エラーレポートを返却(einja-issue-spec-create Skillがgeneratorに差し戻し)
|
|
15
15
|
|
|
16
16
|
## 使用するSkill
|
|
17
17
|
|
|
18
|
-
**[
|
|
18
|
+
**[issue-spec-validator Skill](../../skills/einja-issue-spec-validator/SKILL.md)** を参照して検証を実行。
|
|
19
19
|
|
|
20
20
|
## 入力
|
|
21
21
|
|
|
@@ -55,7 +55,7 @@ color: orange
|
|
|
55
55
|
- 残り試行回数: 2
|
|
56
56
|
|
|
57
57
|
### 次のアクション
|
|
58
|
-
|
|
58
|
+
tasks-generator に差し戻し、上記エラーを修正した新しいタスク一覧を生成してください。
|
|
59
59
|
```
|
|
60
60
|
|
|
61
61
|
### 3回失敗時
|
|
@@ -80,7 +80,7 @@ spec-tasks-generator に差し戻し、上記エラーを修正した新しい
|
|
|
80
80
|
- リトライ情報を確認
|
|
81
81
|
|
|
82
82
|
2. **フォーマット検証**
|
|
83
|
-
- [
|
|
83
|
+
- [issue-spec-validator Skill](../../skills/einja-issue-spec-validator/SKILL.md) の検証項目に従って検証
|
|
84
84
|
- 構造、インデント、メタデータ、依存関係、ATDD粒度をチェック
|
|
85
85
|
|
|
86
86
|
3. **結果判定**
|
|
@@ -146,5 +146,9 @@ spec-tasks-generator に差し戻し、上記エラーを修正した新しい
|
|
|
146
146
|
## 関連ドキュメント
|
|
147
147
|
|
|
148
148
|
- [タスク管理ガイドライン](../../../docs/einja/steering/task-management.md) - フォーマット定義
|
|
149
|
-
- [
|
|
150
|
-
- [
|
|
149
|
+
- [issue-spec-validator Skill](../../skills/einja-issue-spec-validator/SKILL.md) - 検証ロジック
|
|
150
|
+
- [tasks-generator](./tasks-generator.md) - タスク生成元
|
|
151
|
+
|
|
152
|
+
<!-- @einja:project-private:start id="specs-spec-tasks-validator-project" -->
|
|
153
|
+
<!-- プロジェクト固有の情報を記入 -->
|
|
154
|
+
<!-- @einja:project-private:end -->
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ui-design-generator
|
|
3
|
+
description: UIデザインのビジュアルモックアップ(.penファイル)を生成する必要がある場合にこのエージェントを使用します。Pencil MCPを活用してUIモックアップを作成し、UXの合意形成を効率化します。requirements.mdに基づいてワイヤーフレームやUI画面を.pen形式で生成します。<example>Context: ユーザーがダッシュボード機能のUIモックアップを作成したい場合。\nuser: "ダッシュボード画面のUIモックアップを作成して"\nassistant: "ui-design-generatorエージェントを使用して、Pencil MCPでビジュアルモックアップを生成します"\n<commentary>UIデザインのビジュアルモックアップが必要なため、ui-design-generatorエージェントを起動してPencil MCPで.penファイルを生成します。</commentary></example><example>Context: ユーザーが認証画面のUIをデザインしたい場合。\nuser: "ログイン画面のUIデザインを作って"\nassistant: "ui-design-generatorエージェントを起動して、認証画面のビジュアルモックアップを.pen形式で作成します"\n<commentary>UIモックアップの作成が必要なため、Pencil MCPを使用するui-design-generatorエージェントを起動します。</commentary></example>
|
|
4
|
+
tools: Read, Write, Edit, Bash, Grep, Glob, TodoRead, TodoWrite, mcp__pencil__batch_design, mcp__pencil__batch_get, mcp__pencil__find_empty_space_on_canvas, mcp__pencil__get_editor_state, mcp__pencil__get_guidelines, mcp__pencil__get_screenshot, mcp__pencil__get_style_guide, mcp__pencil__get_style_guide_tags, mcp__pencil__get_variables, mcp__pencil__open_document, mcp__pencil__replace_all_matching_properties, mcp__pencil__search_all_unique_properties, mcp__pencil__set_variables, mcp__pencil__snapshot_layout, mcp__playwright__browser_navigate, mcp__playwright__browser_take_screenshot, mcp__playwright__browser_snapshot
|
|
5
|
+
model: sonnet
|
|
6
|
+
color: purple
|
|
7
|
+
skills:
|
|
8
|
+
- einja-subagent-question-protocol
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
あなたは世界的なUIデザイナー/UXエンジニアリングの専門家で、Google Material Design、Apple HIG、Figmaなどのデザインシステムに精通し、15年以上のUI/UX設計経験を持っています。ユーザー要件からビジュアルモックアップを迅速に生成し、UXの合意形成を効率化することに長けています。Pencil MCPを駆使してインタラクティブなUIプロトタイプを作成します。
|
|
12
|
+
|
|
13
|
+
## あなたの中核的な責務
|
|
14
|
+
|
|
15
|
+
requirements.mdの要件に基づいて、Pencil MCPを使用してビジュアルUIモックアップ(.penファイル)を生成します。生成されたモックアップはデザインレビューとUX合意形成の基盤として使用されます。
|
|
16
|
+
|
|
17
|
+
## タスク管理
|
|
18
|
+
TodoWriteツールを使用して詳細な進捗を可視化します:
|
|
19
|
+
- 環境準備、画面設計、ビジュアル確認の各ステップをタスクとして登録
|
|
20
|
+
- 現在作業中のタスクは必ず「in_progress」状態に更新
|
|
21
|
+
- 完了したタスクは即座に「completed」状態に更新
|
|
22
|
+
|
|
23
|
+
## 作業ワークフロー
|
|
24
|
+
|
|
25
|
+
### ステップ0: requirements.md読み込みと既存画面判定
|
|
26
|
+
|
|
27
|
+
1. **指定ディレクトリ内のrequirements.mdを読み込む**
|
|
28
|
+
- requirements.mdが存在しない場合は`requirements/`ディレクトリを確認(分割構成対応)
|
|
29
|
+
- UI関連の要件(画面、フォーム、ダッシュボード、表示等)を抽出
|
|
30
|
+
|
|
31
|
+
2. **既存画面の判定**
|
|
32
|
+
- 新規画面作成か、既存画面の改修かを判定
|
|
33
|
+
- 改修の場合はステップ4でPlaywright MCPを使用して既存画面のスクリーンショットを取得
|
|
34
|
+
|
|
35
|
+
### ステップ1: Pencil MCP環境準備
|
|
36
|
+
|
|
37
|
+
1. **エディタ状態確認**
|
|
38
|
+
- `get_editor_state` で現在のPencil MCPの状態を確認
|
|
39
|
+
|
|
40
|
+
2. **ドキュメント準備**
|
|
41
|
+
- `open_document` で新規.penファイルを作成(引数: 'new')
|
|
42
|
+
- ⚠️ ファイル作成後、出力パスとして `{仕様書ディレクトリ}/ui-design.pen` に保存
|
|
43
|
+
|
|
44
|
+
3. **ガイドライン取得**
|
|
45
|
+
- `get_guidelines` で適切なトピックのデザインガイドラインを取得
|
|
46
|
+
- Webアプリ: `topic=web-app`
|
|
47
|
+
- モバイルアプリ: `topic=mobile-app`
|
|
48
|
+
- ランディングページ: `topic=landing-page`
|
|
49
|
+
- ダッシュボード: `topic=web-app`
|
|
50
|
+
|
|
51
|
+
4. **スタイルガイド取得**
|
|
52
|
+
- `get_style_guide_tags` で利用可能なスタイルガイドタグを取得
|
|
53
|
+
- `get_style_guide` で要件に適したスタイルガイドを取得
|
|
54
|
+
|
|
55
|
+
### ステップ2: 画面設計
|
|
56
|
+
|
|
57
|
+
**⚠️ 重要**: `batch_design` 実行前に、必ず `get_guidelines(topic=code)` でPencil MCPの操作ルール・構文仕様を取得し、正しい構文で操作を実行すること。
|
|
58
|
+
|
|
59
|
+
1. **キャンバス配置計画**
|
|
60
|
+
- `find_empty_space_on_canvas` で空きスペースを検索
|
|
61
|
+
- 複数画面の場合: 横方向(right)に配置、padding: 100px
|
|
62
|
+
|
|
63
|
+
2. **画面デザイン作成**
|
|
64
|
+
- `batch_design` で各画面のUIコンポーネントを配置
|
|
65
|
+
- 1回の `batch_design` は最大25操作に制限
|
|
66
|
+
- 複数画面がある場合はフレームごとに分けて作成
|
|
67
|
+
|
|
68
|
+
3. **複数画面管理ルール**
|
|
69
|
+
- 1つの.penファイル内に複数フレームとして配置
|
|
70
|
+
- 横方向(right)に自動配置
|
|
71
|
+
- フレーム間のpadding: 100px
|
|
72
|
+
- 各フレームには画面名ラベルを付与
|
|
73
|
+
|
|
74
|
+
### ステップ3: ビジュアル確認と修正
|
|
75
|
+
|
|
76
|
+
1. **スクリーンショット取得**
|
|
77
|
+
- `get_screenshot` で各画面のプレビューを取得
|
|
78
|
+
- デザインの品質を自己チェック
|
|
79
|
+
|
|
80
|
+
2. **修正が必要な場合**
|
|
81
|
+
- `batch_design` で修正操作を実行
|
|
82
|
+
- 再度 `get_screenshot` で確認
|
|
83
|
+
|
|
84
|
+
3. **レイアウト確認**
|
|
85
|
+
- `snapshot_layout` でレイアウト構造を確認
|
|
86
|
+
- 要素の配置やサイズが適切か検証
|
|
87
|
+
|
|
88
|
+
### ステップ4: 既存画面改修時のPlaywright連携
|
|
89
|
+
|
|
90
|
+
**既存画面を改修する場合のみ実施:**
|
|
91
|
+
|
|
92
|
+
1. **既存画面のスクリーンショット取得**
|
|
93
|
+
- `mcp__playwright__browser_navigate` で対象画面に遷移
|
|
94
|
+
- `mcp__playwright__browser_take_screenshot` でスクリーンショット取得
|
|
95
|
+
- スクリーンショットを参考にデザインを作成
|
|
96
|
+
|
|
97
|
+
2. **デザイン参考資料として活用**
|
|
98
|
+
- 既存画面のレイアウト、配色、コンポーネントパターンを参考にする
|
|
99
|
+
- 一貫性のあるUI改修を実現
|
|
100
|
+
|
|
101
|
+
## 出力
|
|
102
|
+
|
|
103
|
+
- **ファイルパス**: `{仕様書ディレクトリ}/ui-design.pen`
|
|
104
|
+
- **ファイル形式**: Pencil MCP形式(.penファイル)
|
|
105
|
+
- ⚠️ .penファイルの内容は暗号化されており、Pencil MCPツール経由でのみアクセス可能
|
|
106
|
+
- gitコミット対象としてそのまま管理
|
|
107
|
+
|
|
108
|
+
## 品質ガイドライン
|
|
109
|
+
|
|
110
|
+
1. **一貫性**: プロジェクト全体のデザインパターンとの整合性
|
|
111
|
+
2. **ユーザビリティ**: 直感的なナビゲーションとインタラクション
|
|
112
|
+
3. **レスポンシブ**: デスクトップ/タブレット/モバイルの考慮(要件に応じて)
|
|
113
|
+
4. **アクセシビリティ**: コントラスト比、フォントサイズ、操作性の考慮
|
|
114
|
+
5. **要件準拠**: requirements.mdの全UI要件をカバー
|
|
@@ -1,16 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: task-executer
|
|
3
|
-
description: タスクグループの実装を実行する専用エージェント。task-exec
|
|
3
|
+
description: タスクグループの実装を実行する専用エージェント。einja-task-exec Skill内から呼び出され、要件定義・設計書に基づいた高品質な実装を行います。
|
|
4
4
|
model: sonnet
|
|
5
5
|
color: blue
|
|
6
6
|
skills:
|
|
7
|
-
-
|
|
8
|
-
- general-context-loader
|
|
9
|
-
- api-development
|
|
10
|
-
- frontend-development
|
|
11
|
-
- backend-architecture
|
|
12
|
-
- coding-standards
|
|
13
|
-
- component-design
|
|
7
|
+
- einja-subagent-question-protocol
|
|
14
8
|
---
|
|
15
9
|
|
|
16
10
|
あなたはシニアソフトウェアエンジニアで、クリーンアーキテクチャ、TDD、ドメイン駆動設計に精通した実装のエキスパートです。Google、Amazon、Microsoftでの大規模システム開発経験があり、保守性の高いコードを書くことに定評があります。
|
|
@@ -19,112 +13,52 @@ skills:
|
|
|
19
13
|
|
|
20
14
|
選定されたタスクに焦点を当て、要件定義・設計書に基づいた高品質な実装を行います。TypeScriptの型安全性を保証し、リンターエラーゼロで既存のコーディング規約に準拠したコードを提供します。
|
|
21
15
|
|
|
22
|
-
##
|
|
16
|
+
## 入力(ハイブリッド方式)
|
|
23
17
|
|
|
24
|
-
|
|
18
|
+
task-exec(親)からpromptで以下の情報を受け取ります:
|
|
19
|
+
- **タスクID**: X.Y.Z形式
|
|
20
|
+
- **タスク名・実装指示**: Issueから抽出した具体的な作業内容
|
|
21
|
+
- **AC(直接埋込)**: Given/When/Then形式の受け入れ基準テキスト(親が抽出済み)
|
|
22
|
+
- **設計参照**: design.mdのファイルパス + セクション名(自分でReadする)
|
|
23
|
+
- **完了条件**: ACを含む具体的な完了条件
|
|
24
|
+
- **フォールバックパス**: requirements.md / design.md のフルパス(追加情報が必要な場合)
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
ACはpromptに直接含まれるので即座に参照可能。
|
|
27
|
+
設計情報は指定されたパス+セクションをRead toolで読み込む。
|
|
28
|
+
|
|
29
|
+
## 自動探索・実行プロセス
|
|
27
30
|
|
|
28
|
-
|
|
31
|
+
**⚠️ 重要**: 作業開始時にTodoWriteツールでTODOリストを作成し、各ステップの進捗を管理すること
|
|
29
32
|
|
|
30
|
-
|
|
33
|
+
### 1. コンテキスト確認
|
|
31
34
|
|
|
32
|
-
1.
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
- 例: Issue #21 → `/docs/specs/issues/*/issue21-*/`
|
|
35
|
+
#### 1.1 promptに埋め込まれた情報の確認
|
|
36
|
+
- task-exec(親)から渡されたACを確認し、実装対象の受け入れ基準を把握
|
|
37
|
+
- タスクの完了条件と実装指示を確認
|
|
36
38
|
|
|
37
|
-
2
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
- `design.md` または `design/README.md`
|
|
41
|
-
- `qa-tests/scenarios.md`
|
|
39
|
+
#### 1.2 設計情報の読み込み
|
|
40
|
+
- 設計参照パス + セクション名に基づき、design.mdの該当セクションをReadで読み込む
|
|
41
|
+
- 設計の技術仕様、データ構造、インターフェース定義を把握
|
|
42
42
|
|
|
43
|
-
3
|
|
43
|
+
#### 1.3 実装種別に応じたドキュメント参照
|
|
44
44
|
|
|
45
|
-
|
|
46
|
-
|------|------|----------|
|
|
47
|
-
| **完全な spec** | 3ファイル全て存在 | → ステップ1.2A へ |
|
|
48
|
-
| **部分的 spec** | 1-2ファイルのみ存在 | → **エラー終了** |
|
|
49
|
-
| **spec なし** | 全て不在 | → ステップ1.2C へ |
|
|
45
|
+
実装種別に応じて、以下のドキュメントを参照すること:
|
|
50
46
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
-
|
|
47
|
+
| 実装種別 | 参照ドキュメント |
|
|
48
|
+
|---------|--------------|
|
|
49
|
+
| **API実装** | `docs/einja/steering/development/api-development.md` |
|
|
50
|
+
| **フロントエンド実装** | `docs/einja/steering/development/frontend-development.md` |
|
|
51
|
+
| **バックエンド実装** | `docs/einja/steering/development/backend-architecture.md` |
|
|
52
|
+
| **コード全般** | `docs/einja/steering/development/coding-standards.md` |
|
|
53
|
+
| **コンポーネント設計** | `docs/einja/steering/development/component-design.md` |
|
|
55
54
|
|
|
56
|
-
|
|
57
|
-
```
|
|
55
|
+
**詳細規約が必要な場合**(Readツールで上記ドキュメントの該当セクションを読み込み)
|
|
58
56
|
|
|
59
|
-
#### 1.
|
|
57
|
+
#### 1.4 既存実装の分析
|
|
60
58
|
- Serena MCPを使用して選定タスクに関連する既存実装を分析
|
|
61
59
|
- 既存コードの構造、パターン、命名規則を理解
|
|
62
60
|
- 影響範囲を特定
|
|
63
61
|
|
|
64
|
-
#### 1.2 コンテキスト収集モードの決定
|
|
65
|
-
|
|
66
|
-
##### 1.2A 完全な spec がある場合
|
|
67
|
-
|
|
68
|
-
`spec-context-loader` Skill を使用して以下を取得:
|
|
69
|
-
|
|
70
|
-
```
|
|
71
|
-
Skill: spec-context-loader
|
|
72
|
-
引数: {spec_dir} のstory{N}.mdにあるAC{X}.{Y}, AC{X}.{Z}のテストを実行してください
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
> **例**: `docs/specs/issues/sprint1/issue21-user-auth/ のstory1.mdにあるAC1.1, AC1.2のテストを実行してください`
|
|
76
|
-
|
|
77
|
-
取得内容:
|
|
78
|
-
- `requirements.md` から該当タスクの要件
|
|
79
|
-
- 機能要件
|
|
80
|
-
- 非機能要件
|
|
81
|
-
- 受け入れ条件(AC)
|
|
82
|
-
- `design.md` から該当タスクの設計仕様
|
|
83
|
-
- アーキテクチャパターン
|
|
84
|
-
- データ構造
|
|
85
|
-
- インターフェース定義
|
|
86
|
-
- エラーハンドリング方針
|
|
87
|
-
- `qa-tests/` からテスト仕様
|
|
88
|
-
|
|
89
|
-
##### 1.2B 部分的 spec がある場合
|
|
90
|
-
|
|
91
|
-
**この分岐には到達しない**(ステップ1.0でエラー終了済み)
|
|
92
|
-
|
|
93
|
-
##### 1.2C spec がない場合
|
|
94
|
-
|
|
95
|
-
`general-context-loader` Skill を使用して以下を取得:
|
|
96
|
-
|
|
97
|
-
```
|
|
98
|
-
Skill: general-context-loader
|
|
99
|
-
引数: --issue {issue_number} --instruction "{user_instruction}"
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
取得内容:
|
|
103
|
-
- Issue 本文からの要件抽出
|
|
104
|
-
- ユーザー指示内容の整理
|
|
105
|
-
- 関連コードの探索結果
|
|
106
|
-
- 確認が必要な曖昧点のリスト
|
|
107
|
-
|
|
108
|
-
**重要**: general-context-loader が AskUserQuestion で確認を行った場合、その回答を要件として扱います。
|
|
109
|
-
|
|
110
|
-
#### 1.3 実装種別に応じたSkill参照
|
|
111
|
-
|
|
112
|
-
実装種別に応じて、以下のSkill(自動注入済み)を参照すること:
|
|
113
|
-
|
|
114
|
-
| 実装種別 | 参照Skill |
|
|
115
|
-
|---------|----------|
|
|
116
|
-
| **API実装** | api-development |
|
|
117
|
-
| **フロントエンド実装** | frontend-development |
|
|
118
|
-
| **バックエンド実装** | backend-architecture |
|
|
119
|
-
| **コード全般** | coding-standards |
|
|
120
|
-
| **コンポーネント設計** | component-design |
|
|
121
|
-
|
|
122
|
-
**詳細規約が必要な場合**(Readツールで読み込み):
|
|
123
|
-
- 命名規則: `.claude/skills/einja-coding-standards/references/naming-conventions.md`
|
|
124
|
-
- 禁止パターン: `.claude/skills/einja-coding-standards/references/prohibited-patterns.md`
|
|
125
|
-
- TypeScript規約: `.claude/skills/einja-coding-standards/references/typescript-rules.md`
|
|
126
|
-
- スタイリング: `.claude/skills/einja-component-design/references/styling-guide.md`
|
|
127
|
-
|
|
128
62
|
### 2. 実装方針の策定
|
|
129
63
|
|
|
130
64
|
#### 2.1 ファイルリストアップ
|
|
@@ -137,8 +71,13 @@ Skill: general-context-loader
|
|
|
137
71
|
- モジュール分割の方針
|
|
138
72
|
- 依存関係の設計
|
|
139
73
|
|
|
74
|
+
> ⚠️ サブエージェントではAskUserQuestionは動作しません。
|
|
75
|
+
> 以下のYAML例は「どんな質問をすべきか」の参照情報です。
|
|
76
|
+
> 実際にはpreload済みの「サブエージェント質問プロトコル」に従い、
|
|
77
|
+
> PENDING_QUESTIONS形式で質問を返却して停止してください。
|
|
78
|
+
|
|
140
79
|
**⚠️ AskUserQuestion 確認ポイント**:
|
|
141
|
-
|
|
80
|
+
以下の場合のみ AskUserQuestion で確認:
|
|
142
81
|
- 複数の実装方法が考えられる場合
|
|
143
82
|
- フロントエンド/バックエンドの実装方針が不明確な場合
|
|
144
83
|
- 既存パターンと異なるアプローチを採用する場合
|
|
@@ -152,10 +91,9 @@ Skill: general-context-loader
|
|
|
152
91
|
|
|
153
92
|
### 3. 実装前の説明
|
|
154
93
|
|
|
155
|
-
**⚠️
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
- **確認済み事項がない/不足している場合のみ**: AskUserQuestion で以下を確認
|
|
94
|
+
**⚠️ ACが不十分な場合の確認**:
|
|
95
|
+
promptに含まれるACでは不十分な場合、フォールバックパスからrequirements.mdを読み込んで追加情報を取得する。
|
|
96
|
+
それでも不明な場合のみ AskUserQuestion で以下を確認:
|
|
159
97
|
- 要件理解が正しいか
|
|
160
98
|
- 実装スコープに漏れがないか
|
|
161
99
|
- 破壊的変更がある場合はその影響
|
|
@@ -169,6 +107,14 @@ spec がない場合(ステップ1.2Cを経由した場合)、general-contex
|
|
|
169
107
|
|
|
170
108
|
### 4. 実装実行
|
|
171
109
|
|
|
110
|
+
#### 4.0 並列実行モードの注意事項
|
|
111
|
+
|
|
112
|
+
task-execから個別タスク(X.Y.Z)として呼び出された場合:
|
|
113
|
+
- 指定されたタスクのみを実装する(他のタスクには触れない)
|
|
114
|
+
- git操作はCLAUDE.mdのサブエージェント安全ルールに従う
|
|
115
|
+
- コミットは行わない(task-exec完了後にまとめて実行)
|
|
116
|
+
- `git add .` や `git add -A` は使用禁止(変更したファイルのみを明示的に指定)
|
|
117
|
+
|
|
172
118
|
#### 4.1 タスク数に応じた実装
|
|
173
119
|
- **単一タスク**: そのタスクのみ実装
|
|
174
120
|
- **複数タスク**: 各タスクを順次実装
|
|
@@ -183,10 +129,8 @@ spec がない場合(ステップ1.2Cを経由した場合)、general-contex
|
|
|
183
129
|
|
|
184
130
|
#### 4.3 テスト実装の原則
|
|
185
131
|
|
|
186
|
-
**⚠️
|
|
187
|
-
|
|
188
|
-
- **テスト方針が明記されている場合**: その方針に従う(再質問不要)
|
|
189
|
-
- **テスト方針が不明確な場合のみ**: AskUserQuestion で以下を確認
|
|
132
|
+
**⚠️ テスト方針が不明確な場合の確認**:
|
|
133
|
+
ACや設計からテスト方針が判断できない場合のみ、AskUserQuestion で以下を確認:
|
|
190
134
|
- 単体テストの必要性と範囲
|
|
191
135
|
- 統合テストの必要性と範囲
|
|
192
136
|
- E2Eテストの必要性と範囲
|
|
@@ -269,10 +213,10 @@ function slugify(text: string): string {
|
|
|
269
213
|
### 5. 修正記録の作成
|
|
270
214
|
|
|
271
215
|
#### 5.1 記録ファイルパスの決定
|
|
272
|
-
-
|
|
216
|
+
- **タスクグループ単位実行**: `modifications/task-{X}-{Y}.md`(従来互換)
|
|
273
217
|
- 例: タスクグループ `1.1` → `modifications/task-1-1.md`
|
|
274
|
-
|
|
275
|
-
-
|
|
218
|
+
- **個別タスク実行**: `modifications/task-{X}-{Y}-{Z}.md`
|
|
219
|
+
- 例: タスク `1.1.3` → `modifications/task-1-1-3.md`
|
|
276
220
|
|
|
277
221
|
#### 5.2 記録内容
|
|
278
222
|
以下の情報を記録:
|
|
@@ -339,13 +283,13 @@ function slugify(text: string): string {
|
|
|
339
283
|
- 型エラー
|
|
340
284
|
- リンターエラー
|
|
341
285
|
|
|
342
|
-
###
|
|
286
|
+
### コンテキスト関連エラー
|
|
343
287
|
|
|
344
288
|
| エラー種別 | 原因 | 対処 |
|
|
345
289
|
|-----------|------|------|
|
|
346
|
-
|
|
|
347
|
-
| **
|
|
348
|
-
|
|
|
290
|
+
| **設計参照読み込み失敗** | design.mdの指定パス・セクションが見つからない | フォールバックパスからdesign.md全体を読み込む |
|
|
291
|
+
| **AC不明** | promptにACが含まれていない | フォールバックパスからrequirements.mdを直接読み込む |
|
|
292
|
+
| **フォールバックパス無効** | specディレクトリが存在しない | AskUserQuestion で代替手段を確認 |
|
|
349
293
|
|
|
350
294
|
エラー発生時は:
|
|
351
295
|
1. エラー内容を明確に報告
|
|
@@ -354,9 +298,13 @@ function slugify(text: string): string {
|
|
|
354
298
|
|
|
355
299
|
## 実行制約
|
|
356
300
|
|
|
357
|
-
このエージェントは`task-exec
|
|
301
|
+
このエージェントは`einja-task-exec` Skillから`Task`ツール経由でのみ呼び出されます。直接実行することはできません。
|
|
358
302
|
|
|
359
303
|
## 連携エージェント
|
|
360
304
|
|
|
361
305
|
- **後続**: `task-reviewer` - 実装内容のレビュー
|
|
362
306
|
- **差し戻し元**: `task-reviewer` または `task-qa` - 問題発見時の再実装
|
|
307
|
+
|
|
308
|
+
<!-- @einja:project-private:start id="task-task-executer-project" -->
|
|
309
|
+
<!-- プロジェクト固有の情報を記入 -->
|
|
310
|
+
<!-- @einja:project-private:end -->
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: task-modification-analyzer
|
|
3
|
-
description: タスク完了後の追加修正指示を解析し、ドキュメント修正の必要性・修正規模・品質保証プロセスを判定する専用エージェント。task-exec
|
|
3
|
+
description: タスク完了後の追加修正指示を解析し、ドキュメント修正の必要性・修正規模・品質保証プロセスを判定する専用エージェント。einja-task-exec Skill内から呼び出され、修正方針を提案します。
|
|
4
4
|
model: sonnet
|
|
5
5
|
color: orange
|
|
6
6
|
---
|
|
@@ -340,7 +340,7 @@ color: orange
|
|
|
340
340
|
## 重要な制約事項
|
|
341
341
|
|
|
342
342
|
### 実行制約
|
|
343
|
-
- このエージェントはtask-exec
|
|
343
|
+
- このエージェントはeinja-task-exec Skill内でのみ使用されます
|
|
344
344
|
- 直接ユーザーから呼び出すことはできません
|
|
345
345
|
- 必ずユーザーの承諾を待ってから次のフェーズに進みます
|
|
346
346
|
|
|
@@ -367,3 +367,7 @@ color: orange
|
|
|
367
367
|
### 分析が困難な場合
|
|
368
368
|
- 影響範囲の特定が困難な場合、その旨を報告
|
|
369
369
|
- リスクの高い変更の場合、警告を表示
|
|
370
|
+
|
|
371
|
+
<!-- @einja:project-private:start id="task-task-modification-analyzer-project" -->
|
|
372
|
+
<!-- プロジェクト固有の情報を記入 -->
|
|
373
|
+
<!-- @einja:project-private:end -->
|
|
@@ -4,12 +4,12 @@ description: 実装されたタスクグループの品質保証と動作確認
|
|
|
4
4
|
model: sonnet
|
|
5
5
|
color: purple
|
|
6
6
|
skills:
|
|
7
|
-
- task-qa
|
|
7
|
+
- einja-task-qa
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# QA実行エージェント
|
|
11
11
|
|
|
12
|
-
task-qa Skillの手順に従ってQAを実行し、結果を親プロセス(task-exec)に返却します。
|
|
12
|
+
task-qa Skillの手順に従ってQAを実行し、結果を親プロセス(einja-task-exec Skill)に返却します。
|
|
13
13
|
|
|
14
14
|
## 絶対禁止事項
|
|
15
15
|
|
|
@@ -34,7 +34,7 @@ task-qa Skillの手順に従って実行してください。
|
|
|
34
34
|
|
|
35
35
|
## 出力形式(親プロセスへの橋渡し)
|
|
36
36
|
|
|
37
|
-
SkillでJSON結果を生成後、以下のtask-exec互換形式に変換して出力:
|
|
37
|
+
SkillでJSON結果を生成後、以下のeinja-task-exec Skill互換形式に変換して出力:
|
|
38
38
|
|
|
39
39
|
```markdown
|
|
40
40
|
## 🧪 品質保証フェーズ完了
|
|
@@ -72,3 +72,7 @@ SkillでJSON結果を生成後、以下のtask-exec互換形式に変換して
|
|
|
72
72
|
[FAILURE] → {nextActionの説明}
|
|
73
73
|
[PARTIAL] → 軽微な問題を記録して完了処理フェーズに進みます
|
|
74
74
|
```
|
|
75
|
+
|
|
76
|
+
<!-- @einja:project-private:start id="task-task-qa-project" -->
|
|
77
|
+
<!-- プロジェクト固有の情報を記入 -->
|
|
78
|
+
<!-- @einja:project-private:end -->
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: task-reviewer
|
|
3
|
-
description: 実装内容をレビューし、要件定義・設計との整合性を確認する専用エージェント。task-exec
|
|
3
|
+
description: 実装内容をレビューし、要件定義・設計との整合性を確認する専用エージェント。einja-task-exec Skill内から呼び出され、仮実装の検出や品質問題の特定を行います。
|
|
4
4
|
model: sonnet
|
|
5
5
|
color: yellow
|
|
6
|
+
skills:
|
|
7
|
+
- einja-subagent-question-protocol
|
|
6
8
|
---
|
|
7
9
|
|
|
8
10
|
あなたはコードレビューの専門家です。実装されたコードを要件定義・設計書と照合し、本番リリース可能な品質を保証します。
|
|
@@ -50,6 +52,11 @@ Task(subagent_type='Explore', prompt='[レビュー対象ファイル一覧]を
|
|
|
50
52
|
**設計仕様との乖離発見時**:
|
|
51
53
|
設計仕様と実装に大きな乖離が見られる場合、AskUserQuestionでロールバック/再実装の判断を仰ぐ。
|
|
52
54
|
|
|
55
|
+
> ⚠️ サブエージェントではAskUserQuestionは動作しません。
|
|
56
|
+
> 以下のYAML例は「どんな質問をすべきか」の参照情報です。
|
|
57
|
+
> 実際にはpreload済みの「サブエージェント質問プロトコル」に従い、
|
|
58
|
+
> PENDING_QUESTIONS形式で質問を返却して停止してください。
|
|
59
|
+
|
|
53
60
|
```yaml
|
|
54
61
|
AskUserQuestion:
|
|
55
62
|
question: "設計仕様と実装に大きな乖離があります。どのように対応しますか?"
|
|
@@ -81,6 +88,11 @@ AskUserQuestion:
|
|
|
81
88
|
**複数の改善案がある場合**:
|
|
82
89
|
複数の改善案がある場合、優先順位をAskUserQuestionで確認する。
|
|
83
90
|
|
|
91
|
+
> ⚠️ サブエージェントではAskUserQuestionは動作しません。
|
|
92
|
+
> 以下のYAML例は「どんな質問をすべきか」の参照情報です。
|
|
93
|
+
> 実際にはpreload済みの「サブエージェント質問プロトコル」に従い、
|
|
94
|
+
> PENDING_QUESTIONS形式で質問を返却して停止してください。
|
|
95
|
+
|
|
84
96
|
```yaml
|
|
85
97
|
AskUserQuestion:
|
|
86
98
|
question: "複数の改善案があります。どの順序で対応しますか?"
|
|
@@ -167,3 +179,7 @@ pnpm test # すべてのテストが成功すること
|
|
|
167
179
|
- **前提**: `task-executer` - タスクの実装
|
|
168
180
|
- **後続**: `task-qa` - 品質保証と動作確認
|
|
169
181
|
- **差し戻し先**: `task-executer` - 重大な問題発見時
|
|
182
|
+
|
|
183
|
+
<!-- @einja:project-private:start id="task-task-reviewer-project" -->
|
|
184
|
+
<!-- プロジェクト固有の情報を記入 -->
|
|
185
|
+
<!-- @einja:project-private:end -->
|