create-ai-project 1.20.9 → 1.22.0
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/.claude/agents-en/acceptance-test-generator.md +112 -50
- package/.claude/agents-en/task-decomposer.md +40 -4
- package/.claude/agents-en/ui-spec-designer.md +2 -0
- package/.claude/agents-en/work-planner.md +98 -29
- package/.claude/agents-ja/acceptance-test-generator.md +113 -49
- package/.claude/agents-ja/task-decomposer.md +44 -8
- package/.claude/agents-ja/ui-spec-designer.md +2 -0
- package/.claude/agents-ja/work-planner.md +96 -29
- package/.claude/commands-en/add-integration-tests.md +8 -0
- package/.claude/commands-en/build.md +75 -23
- package/.claude/commands-en/front-build.md +56 -25
- package/.claude/commands-en/front-plan.md +7 -6
- package/.claude/commands-en/front-review.md +81 -19
- package/.claude/commands-en/implement.md +36 -5
- package/.claude/commands-en/plan.md +9 -8
- package/.claude/commands-en/prepare-implementation.md +191 -0
- package/.claude/commands-en/project-inject.md +84 -56
- package/.claude/commands-en/review.md +79 -20
- package/.claude/commands-ja/add-integration-tests.md +8 -0
- package/.claude/commands-ja/build.md +77 -25
- package/.claude/commands-ja/front-build.md +59 -28
- package/.claude/commands-ja/front-plan.md +8 -7
- package/.claude/commands-ja/front-review.md +81 -19
- package/.claude/commands-ja/implement.md +36 -5
- package/.claude/commands-ja/plan.md +10 -9
- package/.claude/commands-ja/prepare-implementation.md +191 -0
- package/.claude/commands-ja/project-inject.md +84 -56
- package/.claude/commands-ja/review.md +79 -20
- package/.claude/skills-en/documentation-criteria/references/plan-template.md +22 -0
- package/.claude/skills-en/documentation-criteria/references/ui-spec-template.md +2 -0
- package/.claude/skills-en/frontend-typescript-testing/references/e2e.md +81 -7
- package/.claude/skills-en/integration-e2e-testing/SKILL.md +48 -23
- package/.claude/skills-en/integration-e2e-testing/references/e2e-design.md +31 -13
- package/.claude/skills-en/project-context/SKILL.md +2 -15
- package/.claude/skills-en/project-context/references/external-resources-api.md +76 -0
- package/.claude/skills-en/project-context/references/external-resources-backend.md +76 -0
- package/.claude/skills-en/project-context/references/external-resources-frontend.md +74 -0
- package/.claude/skills-en/project-context/references/external-resources-infra.md +76 -0
- package/.claude/skills-en/project-context/references/template.md +154 -0
- package/.claude/skills-en/subagents-orchestration-guide/SKILL.md +36 -14
- package/.claude/skills-en/task-analyzer/references/skills-index.yaml +0 -5
- package/.claude/skills-ja/documentation-criteria/references/plan-template.md +22 -0
- package/.claude/skills-ja/documentation-criteria/references/ui-spec-template.md +2 -0
- package/.claude/skills-ja/frontend-typescript-testing/references/e2e.md +81 -7
- package/.claude/skills-ja/integration-e2e-testing/SKILL.md +48 -23
- package/.claude/skills-ja/integration-e2e-testing/references/e2e-design.md +31 -13
- package/.claude/skills-ja/project-context/SKILL.md +2 -15
- package/.claude/skills-ja/project-context/references/external-resources-api.md +76 -0
- package/.claude/skills-ja/project-context/references/external-resources-backend.md +76 -0
- package/.claude/skills-ja/project-context/references/external-resources-frontend.md +74 -0
- package/.claude/skills-ja/project-context/references/external-resources-infra.md +76 -0
- package/.claude/skills-ja/project-context/references/template.md +154 -0
- package/.claude/skills-ja/subagents-orchestration-guide/SKILL.md +36 -14
- package/.claude/skills-ja/task-analyzer/references/skills-index.yaml +0 -5
- package/.husky/pre-commit +1 -0
- package/CHANGELOG.md +55 -6
- package/README.ja.md +3 -2
- package/README.md +3 -2
- package/docs/guides/en/use-cases.md +18 -3
- package/docs/guides/ja/use-cases.md +18 -3
- package/package.json +2 -1
- package/scripts/check-skills-index.mjs +173 -0
|
@@ -18,33 +18,76 @@ Work plan: $ARGUMENTS
|
|
|
18
18
|
|
|
19
19
|
## Pre-execution Prerequisites
|
|
20
20
|
|
|
21
|
-
###
|
|
22
|
-
```bash
|
|
23
|
-
# Check work plans
|
|
24
|
-
! ls -la docs/plans/*.md | grep -v template | tail -5
|
|
21
|
+
### Implementation Readiness Check
|
|
25
22
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
23
|
+
Before any task processing, locate the work plan to gate against.
|
|
24
|
+
|
|
25
|
+
**When `$ARGUMENTS` is provided**, it is the work plan path supplied by the user. Use it directly without auto-resolution. Extract `{plan-name}` from the filename by stripping the `.md` extension (and any trailing `-plan` suffix when present).
|
|
26
|
+
|
|
27
|
+
**When `$ARGUMENTS` is empty**, auto-resolve from task files:
|
|
28
|
+
1. List task files in `docs/plans/tasks/` matching this recipe's consumable patterns (these correspond to the routes in subagents-orchestration-guide "Layer-Aware Agent Routing" that go through `task-executor`):
|
|
29
|
+
- `{plan-name}-task-*.md` (single-layer; reserved for backend by the routing table)
|
|
30
|
+
- `{plan-name}-backend-task-*.md` (backend portion of a multi-layer plan)
|
|
31
|
+
- `{plan-name}-frontend-task-*.md` is **not** consumable by this recipe — it routes to `task-executor-frontend` and is owned by the frontend build recipe
|
|
32
|
+
2. From the matched files, also exclude every file matching any of these patterns — they originate from other workflow phases and are not implementation tasks for this run's plan: `*-task-prep-*.md` (readiness preflight tasks), `_overview-*.md` (decomposition overview file), `*-phase*-completion.md` (per-phase completion files), `review-fixes-*.md` (post-implementation review fixes), `integration-tests-*-task-*.md` (integration-test add-on scaffolding)
|
|
33
|
+
3. For each remaining file, extract `{plan-name}` by stripping the trailing `-task-{NN}.md` or `-backend-task-{NN}.md` suffix
|
|
34
|
+
4. When at least one task file matches, the work plan is `docs/plans/{plan-name}.md` for the prefix that has the most recent task-file mtime; ties broken by the lexicographically last `{plan-name}`
|
|
35
|
+
5. **When the consumable patterns find no matches but `*-frontend-task-*.md` files exist in `docs/plans/tasks/`**: stop and report: "Only frontend-named task files were found. If you intended to run the frontend build recipe, switch to it. If the plan is backend, re-run task-decomposer so it emits backend-named task files, or pass the work plan path as `$ARGUMENTS`."
|
|
36
|
+
6. When neither consumable patterns nor `*-frontend-task-*.md` match, fall back to the most-recent-mtime non-template `.md` in `docs/plans/` ONLY after **positively verifying the plan is a backend plan**. Absence of frontend markers is not enough — many plan templates include layer-neutral paths (e.g., `src/presentation`, `src/app`) that match neither marker set, so a confirmed backend signal is required. Read the plan and check:
|
|
37
|
+
|
|
38
|
+
**Backend signals (need at least one)**:
|
|
39
|
+
- Target Files in `## Impact Scope > ### Target Files` (or equivalent) exclusively match backend markers: `**/api/**`, `**/server/**`, `**/services/**`, `**/backend/**`, `**/handlers/**`, `**/repositories/**`, or the project's backend-equivalent paths declared in `technical-spec` skill
|
|
40
|
+
- The plan's `## Related Documents` references a Design Doc whose filename explicitly identifies it as backend (e.g., `*-backend-design.md`, `backend-*-design.md`)
|
|
41
|
+
- The plan title, `## Objective`, or `## Background` section explicitly identifies the work as backend (e.g., "backend implementation", "API endpoint", "database migration", "server-side")
|
|
42
|
+
|
|
43
|
+
**Frontend signals (any disqualifies, even if a backend signal is also present)**:
|
|
44
|
+
- `## Related Documents` entry pointing to `docs/ui-spec/*`
|
|
45
|
+
- An `## UI Spec Component → Task Mapping` section
|
|
46
|
+
- Target Files exclusively under frontend paths (`**/components/**`, `**/pages/**`, `**/web/**`, `**/*.tsx`, `**/*.jsx`)
|
|
47
|
+
- Plan title or objective explicitly mentions React, UI components, screens, or frontend
|
|
48
|
+
|
|
49
|
+
**Decision**:
|
|
50
|
+
- At least one backend signal AND zero frontend signals → plan is acceptable; proceed
|
|
51
|
+
- Otherwise (no backend signal found, OR any frontend signal present, OR layer-neutral paths only) → stop and report: "Cannot positively verify the most-recent work plan at `[path]` is a backend plan (signals examined: [list of signals checked and their results]). Pass the intended backend plan path as `$ARGUMENTS`, or run task-decomposer first to populate `docs/plans/tasks/` with backend-named task files."
|
|
52
|
+
7. When no plan exists at all in `docs/plans/`, stop and report: "No work plan found. Pass a work plan path as `$ARGUMENTS`, or complete the planning phase first."
|
|
53
|
+
|
|
54
|
+
Read the work plan header and find the line `Implementation Readiness: <status>`. Apply this rule:
|
|
55
|
+
|
|
56
|
+
| Status | Action |
|
|
57
|
+
|--------|--------|
|
|
58
|
+
| `ready` | Proceed to Consumed Task Set computation |
|
|
59
|
+
| `escalated` | Read the work plan's Readiness Report section, surface remaining gaps to the user via AskUserQuestion: "Implementation Readiness is `escalated` with the following remaining gaps: [list]. Continue execution? (y/n)". On `y` proceed; on `n` stop |
|
|
60
|
+
| `pending` | Present via AskUserQuestion: "Implementation Readiness is `pending`. Run the readiness preflight first to verify the work plan is implementable, then resume. Continue without preflight? (y/n)". On `y` proceed; on `n` stop |
|
|
61
|
+
| absent (line missing) | Treat as `pending` — older work plans created before the readiness marker existed should be preflighted explicitly |
|
|
62
|
+
|
|
63
|
+
### Consumed Task Set
|
|
64
|
+
|
|
65
|
+
Compute the **Consumed Task Set** for this run — the exact files this recipe owns, executes, and later deletes. Use the same consumable patterns as the Implementation Readiness Check:
|
|
66
|
+
|
|
67
|
+
1. List task files in `docs/plans/tasks/` matching `{plan-name}-task-*.md` OR `{plan-name}-backend-task-*.md` for the `{plan-name}` resolved by the readiness check. `{plan-name}-frontend-task-*.md` is excluded — it is owned by the frontend build recipe
|
|
68
|
+
2. Exclude every file matching: `*-task-prep-*.md`, `_overview-*.md`, `*-phase*-completion.md`, `review-fixes-*.md`, `integration-tests-*-task-*.md` (these originate from other workflow phases)
|
|
69
|
+
|
|
70
|
+
Every subsequent reference to "task files" in this recipe — Task Generation Decision Flow, Task Execution Cycle iteration, and Final Cleanup — uses this set, not the unrestricted `docs/plans/tasks/*.md` glob.
|
|
29
71
|
|
|
30
72
|
### Task Generation Decision Flow
|
|
31
73
|
|
|
32
|
-
Analyze
|
|
74
|
+
Analyze the Consumed Task Set and determine the action required. Reaching this section implies the readiness check above resolved a work plan (Steps 1-6 succeeded); the "no plan" state is already terminated by readiness-check Step 7 and never reaches this table.
|
|
33
75
|
|
|
34
76
|
| State | Criteria | Next Action |
|
|
35
77
|
|-------|----------|-------------|
|
|
36
|
-
| Tasks exist |
|
|
37
|
-
| No tasks + plan
|
|
38
|
-
|
|
|
39
|
-
|
|
78
|
+
| Tasks exist | Consumed Task Set is non-empty | User's execution instruction serves as batch approval → Enter autonomous execution immediately |
|
|
79
|
+
| No tasks + plan supplied via `$ARGUMENTS` | `$ARGUMENTS` provided AND Consumed Task Set empty | Confirm with user → run task-decomposer |
|
|
80
|
+
| No tasks + plan auto-resolved | Consumed Task Set empty AND plan came from auto-resolution AND Step 6 confirmed at least one backend signal with zero frontend signals | Confirm with user → run task-decomposer (the layer verification in Step 6 already excluded frontend and ambiguous plans, so this is safe) |
|
|
81
|
+
|
|
82
|
+
To bootstrap from a Design Doc when no plan exists yet, run the planning recipe first to produce a work plan, then re-invoke this recipe — the readiness check above intentionally requires a resolved work plan rather than auto-creating one, to keep the layer decision explicit.
|
|
40
83
|
|
|
41
84
|
## Task Decomposition Phase (Conditional)
|
|
42
85
|
|
|
43
|
-
When
|
|
86
|
+
When the Consumed Task Set is empty:
|
|
44
87
|
|
|
45
88
|
### 1. User Confirmation
|
|
46
89
|
```
|
|
47
|
-
No task files
|
|
90
|
+
No task files in the Consumed Task Set.
|
|
48
91
|
Work plan: docs/plans/[plan-name].md
|
|
49
92
|
|
|
50
93
|
Generate tasks from the work plan? (y/n):
|
|
@@ -57,17 +100,14 @@ Invoke task-decomposer using Agent tool:
|
|
|
57
100
|
- `prompt`: "Read work plan at docs/plans/[plan-name].md and decompose into atomic tasks. Output: Individual task files in docs/plans/tasks/. Granularity: 1 task = 1 commit = independently executable"
|
|
58
101
|
|
|
59
102
|
### 3. Verify Generation
|
|
60
|
-
|
|
61
|
-
# Verify generated task files
|
|
62
|
-
! ls -la docs/plans/tasks/*.md | head -10
|
|
63
|
-
```
|
|
103
|
+
Recompute the Consumed Task Set using the same restricted pattern from the Consumed Task Set section above. Confirm it is now non-empty. If it is still empty, escalate to the user — task-decomposer either failed silently or produced files that don't match the expected pattern.
|
|
64
104
|
|
|
65
|
-
**Flow**: Task generation → Autonomous execution (in this order)
|
|
105
|
+
**Flow**: Task generation → Consumed Task Set recompute → Autonomous execution (in this order)
|
|
66
106
|
|
|
67
107
|
## Pre-execution Checklist
|
|
68
108
|
|
|
69
|
-
- [ ] Confirmed
|
|
70
|
-
- [ ] Identified task execution order (dependencies)
|
|
109
|
+
- [ ] Confirmed Consumed Task Set is non-empty (computed in the Consumed Task Set section above)
|
|
110
|
+
- [ ] Identified task execution order within the Consumed Task Set (dependencies)
|
|
71
111
|
- [ ] **Environment check**: Can I execute per-task commit cycle?
|
|
72
112
|
- If commit capability unavailable → Escalate before autonomous mode
|
|
73
113
|
- Other environments (tests, quality tools) → Subagents will escalate
|
|
@@ -75,7 +115,7 @@ Invoke task-decomposer using Agent tool:
|
|
|
75
115
|
## Task Execution Cycle (4-Step Cycle)
|
|
76
116
|
**MANDATORY EXECUTION CYCLE**: `task-executor → escalation check → quality-fixer → commit`
|
|
77
117
|
|
|
78
|
-
For EACH task, YOU MUST:
|
|
118
|
+
For EACH task in the Consumed Task Set, YOU MUST:
|
|
79
119
|
1. **Register tasks using TaskCreate**: Register work steps. Always include first task "Map preloaded skills to applicable concrete rules" and final task "Verify the mapped rules before final JSON"
|
|
80
120
|
2. **INVOKE task-executor**: Execute the task implementation (cross-layer: see Layer-Aware Agent Routing in subagents-orchestration-guide)
|
|
81
121
|
3. **CHECK task-executor response**:
|
|
@@ -126,7 +166,18 @@ After all task cycles finish, run verification agents **in parallel** before the
|
|
|
126
166
|
- Then quality-fixer, then re-run only the failed verifiers.
|
|
127
167
|
- If still failing after 2 cycles → Escalate to user with remaining findings
|
|
128
168
|
|
|
129
|
-
4. **All passed** → Proceed to
|
|
169
|
+
4. **All passed** → Proceed to Final Cleanup
|
|
170
|
+
|
|
171
|
+
## Final Cleanup
|
|
172
|
+
|
|
173
|
+
Before the completion report, delete the implementation task files this recipe consumed. Their work is committed; `docs/plans/` is ephemeral working state and is not retained between recipe runs:
|
|
174
|
+
|
|
175
|
+
- Delete every file in the Consumed Task Set
|
|
176
|
+
- Delete every file matching `docs/plans/tasks/{plan-name}-phase*-completion.md` (the per-phase completion files generated by task-decomposer for this `{plan-name}`)
|
|
177
|
+
- Delete the corresponding `docs/plans/tasks/_overview-{plan-name}.md` if present
|
|
178
|
+
- Preserve the work plan itself (`docs/plans/{plan-name}.md`) — the user decides whether to delete it after final review
|
|
179
|
+
|
|
180
|
+
If task files cannot be deleted (filesystem error), report the failure but do not block the completion report.
|
|
130
181
|
|
|
131
182
|
## Output Example
|
|
132
183
|
Implementation phase completed.
|
|
@@ -134,6 +185,7 @@ Implementation phase completed.
|
|
|
134
185
|
- Implemented tasks: [number] tasks
|
|
135
186
|
- Quality checks: All passed
|
|
136
187
|
- Commits: [number] commits created
|
|
188
|
+
- Cleanup: Task files removed from docs/plans/tasks/
|
|
137
189
|
|
|
138
190
|
**Responsibility Boundary**:
|
|
139
191
|
- IN SCOPE: Task decomposition to implementation completion
|
|
@@ -18,33 +18,57 @@ Work plan: $ARGUMENTS
|
|
|
18
18
|
|
|
19
19
|
## Pre-execution Prerequisites
|
|
20
20
|
|
|
21
|
-
###
|
|
22
|
-
```bash
|
|
23
|
-
# Check work plans
|
|
24
|
-
! ls -la docs/plans/*.md | grep -v template | tail -5
|
|
21
|
+
### Implementation Readiness Check
|
|
25
22
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
23
|
+
Before any task processing, locate the work plan to gate against.
|
|
24
|
+
|
|
25
|
+
**When `$ARGUMENTS` is provided**, it is the work plan path supplied by the user. Use it directly without auto-resolution. Extract `{plan-name}` from the filename by stripping the `.md` extension (and any trailing `-plan` suffix when present).
|
|
26
|
+
|
|
27
|
+
**When `$ARGUMENTS` is empty**, auto-resolve from task files:
|
|
28
|
+
1. List task files in `docs/plans/tasks/` matching this recipe's only consumable pattern (per subagents-orchestration-guide "Layer-Aware Agent Routing", `task-executor-frontend` owns this filename suffix and no other):
|
|
29
|
+
- `{plan-name}-frontend-task-*.md`
|
|
30
|
+
- The bare `{plan-name}-task-*.md` is **not** consumable — that filename is reserved for backend by the routing table and is owned by the backend build recipe. `{plan-name}-backend-task-*.md` is also not consumable for the same reason.
|
|
31
|
+
2. From the matched files, also exclude every file matching any of these patterns — they originate from other workflow phases and are not implementation tasks for this run's plan: `*-task-prep-*.md` (readiness preflight tasks), `_overview-*.md` (decomposition overview file), `*-phase*-completion.md` (per-phase completion files), `review-fixes-*.md` (post-implementation review fixes), `integration-tests-*-task-*.md` (integration-test add-on scaffolding)
|
|
32
|
+
3. For each remaining file, extract `{plan-name}` by stripping the trailing `-frontend-task-{NN}.md` suffix
|
|
33
|
+
4. When at least one task file matches, the work plan is `docs/plans/{plan-name}.md` for the prefix that has the most recent task-file mtime; ties broken by the lexicographically last `{plan-name}`
|
|
34
|
+
5. When no `*-frontend-task-*.md` is found AND a non-template work plan exists in `docs/plans/`, do not assume the most-recent plan applies — frontend tasks must be explicitly named. Stop and report: "No `*-frontend-task-*.md` found in `docs/plans/tasks/`. If you intended to run this recipe on a frontend plan, either re-run task-decomposer so it emits frontend-named task files, or pass the work plan path as `$ARGUMENTS`. If the plan is backend, use the backend build recipe instead."
|
|
35
|
+
|
|
36
|
+
Read the work plan header and find the line `Implementation Readiness: <status>`. Apply this rule:
|
|
37
|
+
|
|
38
|
+
| Status | Action |
|
|
39
|
+
|--------|--------|
|
|
40
|
+
| `ready` | Proceed to Consumed Task Set computation |
|
|
41
|
+
| `escalated` | Read the work plan's Readiness Report section, surface remaining gaps to the user via AskUserQuestion: "Implementation Readiness is `escalated` with the following remaining gaps: [list]. Continue execution? (y/n)". On `y` proceed; on `n` stop |
|
|
42
|
+
| `pending` | Present via AskUserQuestion: "Implementation Readiness is `pending`. Run the readiness preflight first to verify the work plan is implementable, then resume. Continue without preflight? (y/n)". On `y` proceed; on `n` stop |
|
|
43
|
+
| absent (line missing) | Treat as `pending` — older work plans created before the readiness marker existed should be preflighted explicitly |
|
|
44
|
+
|
|
45
|
+
### Consumed Task Set
|
|
46
|
+
|
|
47
|
+
Compute the **Consumed Task Set** for this run — the exact files this recipe owns, executes, and later deletes. Per the routing table, the only consumable pattern is:
|
|
48
|
+
|
|
49
|
+
1. List task files in `docs/plans/tasks/` matching `{plan-name}-frontend-task-*.md` for the `{plan-name}` resolved by the readiness check. `{plan-name}-task-*.md` and `{plan-name}-backend-task-*.md` are excluded — they route to `task-executor` and are owned by the backend build recipe
|
|
50
|
+
2. Exclude every file matching: `*-task-prep-*.md`, `_overview-*.md`, `*-phase*-completion.md`, `review-fixes-*.md`, `integration-tests-*-task-*.md` (these originate from other workflow phases)
|
|
51
|
+
|
|
52
|
+
Every subsequent reference to "task files" in this recipe — Task Generation Decision Flow, Task Execution Cycle iteration, and Final Cleanup — uses this set, not the unrestricted `docs/plans/tasks/*.md` glob.
|
|
29
53
|
|
|
30
54
|
### Task Generation Decision Flow
|
|
31
55
|
|
|
32
|
-
Analyze
|
|
56
|
+
Analyze the Consumed Task Set and determine the action required. Note: when `$ARGUMENTS` is empty AND no `*-frontend-task-*.md` exist, the readiness check above already stops execution — so the rows below that involve "no tasks" only fire when the user explicitly supplied `$ARGUMENTS`.
|
|
33
57
|
|
|
34
58
|
| State | Criteria | Next Action |
|
|
35
59
|
|-------|----------|-------------|
|
|
36
|
-
| Tasks exist |
|
|
37
|
-
| No tasks + plan
|
|
38
|
-
| Neither exists + Design Doc exists |
|
|
39
|
-
| Neither exists | No plan, no
|
|
60
|
+
| Tasks exist | Consumed Task Set is non-empty | User's execution instruction serves as batch approval → Enter autonomous execution immediately |
|
|
61
|
+
| No tasks + plan supplied via `$ARGUMENTS` | `$ARGUMENTS` provided AND Consumed Task Set empty | Confirm with user → run task-decomposer (which will emit `*-frontend-task-*.md` per the frontend naming rule) |
|
|
62
|
+
| Neither exists + Design Doc exists + `$ARGUMENTS` provided | `$ARGUMENTS` provided, no plan, no Consumed Task Set, but docs/design/*.md exists | Invoke work-planner to create work plan from Design Doc, then proceed to task decomposition |
|
|
63
|
+
| Neither exists | No `$ARGUMENTS`, no plan, no Consumed Task Set, no Design Doc | Report missing prerequisites to user and stop |
|
|
40
64
|
|
|
41
65
|
## Task Decomposition Phase (Conditional)
|
|
42
66
|
|
|
43
|
-
When
|
|
67
|
+
When the Consumed Task Set is empty:
|
|
44
68
|
|
|
45
69
|
### 1. User Confirmation
|
|
46
70
|
```
|
|
47
|
-
No task files
|
|
71
|
+
No task files in the Consumed Task Set.
|
|
48
72
|
Work plan: docs/plans/[plan-name].md
|
|
49
73
|
|
|
50
74
|
Generate tasks from the work plan? (y/n):
|
|
@@ -57,17 +81,14 @@ Invoke task-decomposer using Agent tool:
|
|
|
57
81
|
- `prompt`: "Read work plan at docs/plans/[plan-name].md and decompose into atomic tasks. Output: Individual task files in docs/plans/tasks/. Granularity: 1 task = 1 commit = independently executable"
|
|
58
82
|
|
|
59
83
|
### 3. Verify Generation
|
|
60
|
-
|
|
61
|
-
# Verify generated task files
|
|
62
|
-
! ls -la docs/plans/tasks/*.md | head -10
|
|
63
|
-
```
|
|
84
|
+
Recompute the Consumed Task Set using the same restricted pattern from the Consumed Task Set section above. Confirm it is now non-empty. If it is still empty, escalate to the user — task-decomposer either failed silently or produced files that don't match the expected pattern.
|
|
64
85
|
|
|
65
|
-
**Flow**: Task generation → Autonomous execution (in this order)
|
|
86
|
+
**Flow**: Task generation → Consumed Task Set recompute → Autonomous execution (in this order)
|
|
66
87
|
|
|
67
88
|
## Pre-execution Checklist
|
|
68
89
|
|
|
69
|
-
- [ ] Confirmed
|
|
70
|
-
- [ ] Identified task execution order (dependencies)
|
|
90
|
+
- [ ] Confirmed Consumed Task Set is non-empty (computed in the Consumed Task Set section above)
|
|
91
|
+
- [ ] Identified task execution order within the Consumed Task Set (dependencies)
|
|
71
92
|
- [ ] **Environment check**: Can I execute per-task commit cycle?
|
|
72
93
|
- If commit capability unavailable → Escalate before autonomous mode
|
|
73
94
|
- Other environments (tests, quality tools) → Subagents will escalate
|
|
@@ -75,7 +96,7 @@ Invoke task-decomposer using Agent tool:
|
|
|
75
96
|
## Task Execution Cycle (4-Step Cycle)
|
|
76
97
|
**MANDATORY EXECUTION CYCLE**: `task-executor-frontend → escalation check → quality-fixer-frontend → commit`
|
|
77
98
|
|
|
78
|
-
For EACH task, YOU MUST:
|
|
99
|
+
For EACH task in the Consumed Task Set, YOU MUST:
|
|
79
100
|
1. **Register tasks using TaskCreate**: Register work steps. Always include first task "Map preloaded skills to applicable concrete rules" and final task "Verify the mapped rules before final JSON"
|
|
80
101
|
2. **Agent tool** (subagent_type: "task-executor-frontend") → Pass task file path in prompt, receive structured response
|
|
81
102
|
3. **CHECK task-executor-frontend response**:
|
|
@@ -104,8 +125,6 @@ Use loaded skills to execute that scope.
|
|
|
104
125
|
Escalate when the required fix or investigation falls outside that scope.
|
|
105
126
|
```
|
|
106
127
|
|
|
107
|
-
! ls -la docs/plans/*.md | head -10
|
|
108
|
-
|
|
109
128
|
VERIFY approval status before proceeding. Once confirmed, INITIATE autonomous execution mode. STOP IMMEDIATELY upon detecting ANY requirement changes.
|
|
110
129
|
|
|
111
130
|
## Post-Implementation Verification (After All Tasks Complete)
|
|
@@ -128,7 +147,18 @@ After all task cycles finish, run verification agents **in parallel** before the
|
|
|
128
147
|
- Then quality-fixer-frontend, then re-run only the failed verifiers.
|
|
129
148
|
- If still failing after 2 cycles → Escalate to user with remaining findings
|
|
130
149
|
|
|
131
|
-
4. **All passed** → Proceed to
|
|
150
|
+
4. **All passed** → Proceed to Final Cleanup
|
|
151
|
+
|
|
152
|
+
## Final Cleanup
|
|
153
|
+
|
|
154
|
+
Before the completion report, delete the implementation task files this recipe consumed. Their work is committed; `docs/plans/` is ephemeral working state and is not retained between recipe runs:
|
|
155
|
+
|
|
156
|
+
- Delete every file in the Consumed Task Set
|
|
157
|
+
- Delete every file matching `docs/plans/tasks/{plan-name}-phase*-completion.md` (the per-phase completion files generated by task-decomposer for this `{plan-name}`)
|
|
158
|
+
- Delete the corresponding `docs/plans/tasks/_overview-{plan-name}.md` if present
|
|
159
|
+
- Preserve the work plan itself (`docs/plans/{plan-name}.md`) — the user decides whether to delete it after final review
|
|
160
|
+
|
|
161
|
+
If task files cannot be deleted (filesystem error), report the failure but do not block the completion report.
|
|
132
162
|
|
|
133
163
|
## Output Example
|
|
134
164
|
Frontend implementation phase completed.
|
|
@@ -136,3 +166,4 @@ Frontend implementation phase completed.
|
|
|
136
166
|
- Implemented tasks: [number] tasks
|
|
137
167
|
- Quality checks: All passed
|
|
138
168
|
- Commits: [number] commits created
|
|
169
|
+
- Cleanup: Task files removed from docs/plans/tasks/
|
|
@@ -43,17 +43,18 @@ Invoke acceptance-test-generator using Agent tool:
|
|
|
43
43
|
- If UI Spec exists: `prompt: "Generate test skeletons from Design Doc at [path]. UI Spec at [ui-spec path]."`
|
|
44
44
|
- If no UI Spec: `prompt: "Generate test skeletons from Design Doc at [path]."`
|
|
45
45
|
|
|
46
|
-
Pass
|
|
46
|
+
Pass per-lane test file paths and absence reasons to work-planner according to subagents-orchestration-guide "acceptance-test-generator → work-planner" section.
|
|
47
47
|
|
|
48
48
|
### Step 3: Work Plan Creation
|
|
49
49
|
Invoke work-planner using Agent tool:
|
|
50
50
|
- `subagent_type`: "work-planner"
|
|
51
51
|
- `description`: "Work plan creation"
|
|
52
|
-
- If test skeletons were generated in Step 2:
|
|
53
|
-
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
52
|
+
- If test skeletons were generated in Step 2, build the prompt by listing every lane's status:
|
|
53
|
+
- Always include: "Integration test file: [path or 'not generated']"
|
|
54
|
+
- For each E2E lane (`fixtureE2e`, `serviceE2e`):
|
|
55
|
+
- When `generatedFiles.<lane>` is not null: "[lane] test file: [path]"
|
|
56
|
+
- When `generatedFiles.<lane>` is null: "No [lane] skeleton generated (reason: [e2eAbsenceReason.<lane>])"
|
|
57
|
+
- Append placement guidance: "Integration tests are created simultaneously with each phase implementation. fixture-e2e tests are created alongside the UI feature phase. service-integration-e2e tests are executed only in the final phase."
|
|
57
58
|
- If test skeletons were not generated:
|
|
58
59
|
`prompt`: "Create work plan from Design Doc at [path]."
|
|
59
60
|
|
|
@@ -14,9 +14,10 @@ description: Design Doc compliance and security validation with optional auto-fi
|
|
|
14
14
|
|
|
15
15
|
- Compliance validation → performed by code-reviewer
|
|
16
16
|
- Security validation → performed by security-reviewer
|
|
17
|
-
- Fix implementation →
|
|
18
|
-
-
|
|
19
|
-
|
|
17
|
+
- **Code-side fix path**: Fix implementation → task-executor-frontend; Quality checks → quality-fixer-frontend; Re-validation → code-reviewer / security-reviewer
|
|
18
|
+
- **Design-side update path**: DD revision → technical-designer-frontend (update mode); DD review → document-reviewer; cross-DD consistency → design-sync (when multiple DDs exist); Re-validation → code-reviewer
|
|
19
|
+
|
|
20
|
+
Orchestrator invokes sub-agents and passes structured JSON between them. The design-side path applies when the discrepancy reflects code that was correct but the Design Doc became stale, rather than code that violated the Design Doc.
|
|
20
21
|
|
|
21
22
|
Design Doc (uses most recent if omitted): $ARGUMENTS
|
|
22
23
|
|
|
@@ -59,7 +60,24 @@ Invoke security-reviewer using Agent tool:
|
|
|
59
60
|
- `approved` or `approved_with_notes` → Pass
|
|
60
61
|
- `needs_revision` → Fail
|
|
61
62
|
|
|
62
|
-
**Report both results independently using subagent output fields only** (do not add fields that are not in the subagent response)
|
|
63
|
+
**Report both results independently using subagent output fields only** (do not add fields that are not in the subagent response).
|
|
64
|
+
|
|
65
|
+
**Early exit (no findings to route)**: When code-reviewer's `verdict` is `pass` AND every entry in `acceptanceCriteria[]` has `status: "fulfilled"` AND `identifierMismatches[]` is empty AND `qualityFindings[]` is empty AND security-reviewer's `findings[]` is empty, skip Steps 5-10 and proceed directly to Step 11 — there is nothing to route. Present the clean result to the user.
|
|
66
|
+
|
|
67
|
+
Otherwise, before presenting to the user, the orchestrator computes a recommended route per finding using the rule below (this rule is internal — do not include it in the user-facing prompt). The rule keys off code-reviewer's existing structured fields only — interpretation of "DD intent" is intentionally avoided to prevent unstable inference:
|
|
68
|
+
|
|
69
|
+
| Finding source | Pattern detectable from existing fields | Recommended route |
|
|
70
|
+
|---------------|-----------------------------------------|-------------------|
|
|
71
|
+
| `acceptanceCriteria[]` with `status: "partially_fulfilled"` or `"unfulfilled"` | The cited `gap` indicates the code does not satisfy the AC — needs additional implementation | `c` (Code-side fix) |
|
|
72
|
+
| `acceptanceCriteria[]` with `status: "partially_fulfilled"` or `"unfulfilled"` | The cited `gap` indicates the AC text itself diverged from the implemented (and team-accepted) behavior — i.e., the DD's AC wording captured the wrong intent rather than the code missing requirements (verify by reading the AC and comparing against the cited `location`) | `d` (Design-side update — AC text outdated) |
|
|
73
|
+
| `identifierMismatches[]` | `codeValue` is a plausible rename of `designDocValue` (camelCase ↔ kebab-case ↔ snake_case, abbreviation expansion/contraction, semantic renaming where both names refer to the same concept) — verify by inspecting the cited `location` to confirm the code uses the new name consistently | `d` (Design-side update — DD likely outdated) |
|
|
74
|
+
| `identifierMismatches[]` | All other identifier mismatches (e.g., wrong type, wrong cardinality, missing entirely) | `c` (Code-side fix) |
|
|
75
|
+
| `qualityFindings[]` | All categories (`dd_violation`, `maintainability`, `reliability`, `coverage_gap`) | `c` (Code-side fix) |
|
|
76
|
+
| security-reviewer `findings[]` | All categories (`confirmed_risk`, `defense_gap`, `hardening`, `policy`) | `c` (Code-side fix) |
|
|
77
|
+
|
|
78
|
+
The user can override any recommendation per finding. AC items with `status: "fulfilled"` are not routed (no action needed).
|
|
79
|
+
|
|
80
|
+
Then present to the user (label each finding with its recommended route, grouped by route):
|
|
63
81
|
|
|
64
82
|
```
|
|
65
83
|
Code Compliance: [complianceRate from code-reviewer]
|
|
@@ -67,30 +85,57 @@ Code Compliance: [complianceRate from code-reviewer]
|
|
|
67
85
|
Identifier Match Rate: [identifierMatchRate from code-reviewer]
|
|
68
86
|
Acceptance Criteria:
|
|
69
87
|
- [fulfilled] [item] (confidence: [high/medium/low])
|
|
70
|
-
- [partially_fulfilled] [item]: [gap] — [suggestion]
|
|
71
|
-
- [unfulfilled] [item]: [gap] — [suggestion]
|
|
88
|
+
- [partially_fulfilled] [item]: [gap] — [suggestion] [recommended: c | d]
|
|
89
|
+
- [unfulfilled] [item]: [gap] — [suggestion] [recommended: c | d]
|
|
72
90
|
Identifier Mismatches:
|
|
73
|
-
- [identifier]: DD=[designDocValue] Code=[codeValue] at [location]
|
|
91
|
+
- [identifier]: DD=[designDocValue] Code=[codeValue] at [location] [recommended: c | d]
|
|
74
92
|
Quality Findings:
|
|
75
|
-
- [category] [location]: [description] — [rationale]
|
|
93
|
+
- [category] [location]: [description] — [rationale] [recommended: c]
|
|
76
94
|
|
|
77
95
|
Security Review: [status from security-reviewer]
|
|
78
96
|
Findings by category:
|
|
79
|
-
- [confirmed_risk] [location]: [description] — [rationale]
|
|
80
|
-
- [defense_gap] [location]: [description] — [rationale]
|
|
81
|
-
- [hardening] [location]: [description] — [rationale]
|
|
82
|
-
- [policy] [location]: [description] — [rationale]
|
|
97
|
+
- [confirmed_risk] [location]: [description] — [rationale] [recommended: c]
|
|
98
|
+
- [defense_gap] [location]: [description] — [rationale] [recommended: c]
|
|
99
|
+
- [hardening] [location]: [description] — [rationale] [recommended: c]
|
|
100
|
+
- [policy] [location]: [description] — [rationale] [recommended: c]
|
|
83
101
|
Notes: [notes from security-reviewer, if present]
|
|
84
102
|
|
|
85
|
-
|
|
103
|
+
Resolve discrepancies — confirm or override the recommended route per finding:
|
|
104
|
+
c) Code-side fix — code violates Design Doc; modify code to match
|
|
105
|
+
d) Design-side update — code is correct; Design Doc is stale, revise it
|
|
106
|
+
s) Skip — accept current state without changes
|
|
86
107
|
```
|
|
87
108
|
|
|
88
|
-
|
|
109
|
+
Use AskUserQuestion. The default offer is **"accept all recommended routes"** — a single confirmation for the typical case where the orchestrator's recommendations are correct. When the user wants to override, collect per-finding c/d/s decisions instead. If the user selects `s` for everything: skip Steps 5-10, proceed to Step 11.
|
|
89
110
|
|
|
90
111
|
### Step 5: Load Task Template
|
|
91
112
|
|
|
92
113
|
Read documentation-criteria skill to obtain the task file template (references/task-template.md) for Step 6.
|
|
93
114
|
|
|
115
|
+
### Step 5d: Design-Side Update
|
|
116
|
+
|
|
117
|
+
Run this step only when the user routed at least one finding to `d`. When all routes are `c` or `s`, skip directly to Step 6.
|
|
118
|
+
|
|
119
|
+
1. Invoke technical-designer-frontend in update mode using Agent tool:
|
|
120
|
+
- `subagent_type`: "technical-designer-frontend"
|
|
121
|
+
- `description`: "Design Doc update from review findings"
|
|
122
|
+
- `prompt`: "Update Design Doc at [path] in update mode. The implementation has diverged in the following ways that the team has decided to ratify in the design rather than in the code: [list of `d`-routed findings with codeLocation and designDocValue from $STEP_2_OUTPUT]. Reflect the current code behavior in the relevant sections and add a history entry."
|
|
123
|
+
|
|
124
|
+
2. Invoke document-reviewer to verify the updated Design Doc:
|
|
125
|
+
- `subagent_type`: "document-reviewer"
|
|
126
|
+
- `description`: "Document review of updated Design Doc"
|
|
127
|
+
- `prompt`: "Review updated Design Doc at [path] for consistency and completeness."
|
|
128
|
+
|
|
129
|
+
3. When multiple Design Docs exist (`ls docs/design/*.md | grep -v template | wc -l > 1`), invoke design-sync:
|
|
130
|
+
- `subagent_type`: "design-sync"
|
|
131
|
+
- `description`: "Cross-DD consistency check"
|
|
132
|
+
- `prompt`: "source_design: [updated DD path]. Detect conflicts across all Design Docs after the update."
|
|
133
|
+
- When `sync_status: conflicts_found`: present conflicts to the user; resolution requires re-invoking technical-designer-frontend for affected DDs.
|
|
134
|
+
|
|
135
|
+
4. After Step 5d completes:
|
|
136
|
+
- If the user selected zero `c` routes (whether all `d`, all `s`, or a `d` + `s` mix with no `c`) → skip Steps 6-8, proceed to Step 9 for re-validation
|
|
137
|
+
- If the user selected both `d` and `c` → re-evaluate the `c`-routed findings against the updated DD and drop any that are now satisfied by the DD revision; then proceed to Step 6 with the remaining `c` findings
|
|
138
|
+
|
|
94
139
|
### Step 6: Create Task File
|
|
95
140
|
|
|
96
141
|
Create task file at `docs/plans/tasks/review-fixes-YYYYMMDD.md`
|
|
@@ -113,7 +158,7 @@ Invoke quality-fixer-frontend using Agent tool:
|
|
|
113
158
|
Invoke code-reviewer using Agent tool:
|
|
114
159
|
- `subagent_type`: "code-reviewer"
|
|
115
160
|
- `description`: "Re-validate compliance"
|
|
116
|
-
- `prompt`: "Re-validate Design Doc compliance after fixes. Design Doc: [path]. Implementation files: [file list]. Prior compliance issues: $STEP_2_OUTPUT. Verify each prior issue is resolved."
|
|
161
|
+
- `prompt`: "Re-validate Design Doc compliance after fixes. Design Doc: [path]. Implementation files: [file list]. Prior compliance issues: $STEP_2_OUTPUT. Verify each prior issue is resolved (whether resolved code-side or design-side)."
|
|
117
162
|
|
|
118
163
|
### Step 10: Re-validate security-reviewer
|
|
119
164
|
|
|
@@ -122,7 +167,16 @@ Invoke security-reviewer using Agent tool (only if security fixes were applied):
|
|
|
122
167
|
- `description`: "Re-validate security"
|
|
123
168
|
- `prompt`: "Re-validate security after fixes. Prior findings: $STEP_3_OUTPUT. Design Doc: [path]. Implementation files: [file list]."
|
|
124
169
|
|
|
125
|
-
### Step 11: Final Report
|
|
170
|
+
### Step 11: Final Cleanup and Report
|
|
171
|
+
|
|
172
|
+
Delete the review-fix task file this recipe created (if any). Its work is committed; `docs/plans/` is ephemeral working state and is not retained between recipe runs:
|
|
173
|
+
|
|
174
|
+
- Delete `docs/plans/tasks/review-fixes-YYYYMMDD.md` if it exists
|
|
175
|
+
|
|
176
|
+
If the file cannot be deleted (filesystem error), report the failure but do not block the final report.
|
|
177
|
+
|
|
178
|
+
Then present the final report:
|
|
179
|
+
|
|
126
180
|
```
|
|
127
181
|
Code Compliance:
|
|
128
182
|
Initial: [X]%
|
|
@@ -135,9 +189,11 @@ Security Review:
|
|
|
135
189
|
|
|
136
190
|
Remaining issues:
|
|
137
191
|
- [items requiring manual intervention]
|
|
192
|
+
|
|
193
|
+
Cleanup: review-fixes task file removed
|
|
138
194
|
```
|
|
139
195
|
|
|
140
|
-
## Auto-fixable Items
|
|
196
|
+
## Auto-fixable Items (code-side path)
|
|
141
197
|
- Simple unimplemented acceptance criteria
|
|
142
198
|
- Error handling additions
|
|
143
199
|
- Contract definition fixes
|
|
@@ -147,10 +203,16 @@ Remaining issues:
|
|
|
147
203
|
## Non-fixable Items
|
|
148
204
|
- Fundamental business logic changes
|
|
149
205
|
- Architecture-level modifications
|
|
150
|
-
- Design Doc deficiencies
|
|
151
206
|
- Committed secrets (blocked → human intervention)
|
|
152
207
|
|
|
153
|
-
|
|
208
|
+
## Design-Side Update Triggers
|
|
209
|
+
Discrepancies suitable for the design-side path (code is correct, DD became stale):
|
|
210
|
+
- Identifier renames where the new identifier reflects the team's current naming
|
|
211
|
+
- Behavioral changes that match the original requirement intent better than what the DD captured
|
|
212
|
+
- Component splits or merges where the new structure is sound and the DD documented the prior structure
|
|
213
|
+
- New ACs that the implementation already satisfies but the DD never enumerated
|
|
214
|
+
|
|
215
|
+
**Scope**: Design Doc compliance validation, security review, code-side auto-fixes, and design-side update routing.
|
|
154
216
|
|
|
155
217
|
## Scope Boundary for Subagents
|
|
156
218
|
|
|
@@ -58,6 +58,19 @@ After scale determination, **register all steps of the applicable subagents-orch
|
|
|
58
58
|
|
|
59
59
|
**Flow Adherence**: Follow "Autonomous Execution Task Management" in subagents-orchestration-guide skill, managing 4 steps with TaskCreate/TaskUpdate
|
|
60
60
|
|
|
61
|
+
## Implementation Readiness Check (between work-planner approval and task-decomposer)
|
|
62
|
+
|
|
63
|
+
After work-planner completes and the user grants batch approval, before invoking task-decomposer, read the work plan header and find the line `Implementation Readiness: <status>`. Apply this rule:
|
|
64
|
+
|
|
65
|
+
| Status | Action |
|
|
66
|
+
|--------|--------|
|
|
67
|
+
| `ready` | Proceed to task-decomposer |
|
|
68
|
+
| `escalated` | Read the work plan's Readiness Report section, surface remaining gaps to the user via AskUserQuestion: "Implementation Readiness is `escalated` with the following remaining gaps: [list]. Continue execution? (y/n)". On `y` proceed; on `n` stop |
|
|
69
|
+
| `pending` | Present via AskUserQuestion: "Implementation Readiness is `pending`. Run the readiness preflight first to verify the work plan is implementable, then resume. Continue without preflight? (y/n)". On `y` proceed; on `n` stop |
|
|
70
|
+
| absent (line missing) | Treat as `pending` — older work plans created before the readiness marker existed should be preflighted explicitly |
|
|
71
|
+
|
|
72
|
+
This check applies to all scales (Small / Medium / Large) because this recipe is the scale-agnostic orchestrator.
|
|
73
|
+
|
|
61
74
|
## Scope Boundary for Subagents
|
|
62
75
|
|
|
63
76
|
Append the following block to every subagent prompt invoked from this recipe:
|
|
@@ -101,11 +114,29 @@ After all task cycles finish, invoke security-reviewer before the completion rep
|
|
|
101
114
|
- `blocked` → Escalate to user
|
|
102
115
|
|
|
103
116
|
### Test Information Communication
|
|
104
|
-
After acceptance-test-generator execution, when invoking work-planner (subagent_type: "work-planner"), communicate:
|
|
105
|
-
-
|
|
106
|
-
-
|
|
107
|
-
-
|
|
108
|
-
-
|
|
117
|
+
After acceptance-test-generator execution, when invoking work-planner (subagent_type: "work-planner"), communicate per-lane:
|
|
118
|
+
- Integration test file path (from `generatedFiles.integration`) or null
|
|
119
|
+
- fixture-e2e test file path (from `generatedFiles.fixtureE2e`) or null
|
|
120
|
+
- service-integration-e2e test file path (from `generatedFiles.serviceE2e`) or null
|
|
121
|
+
- Per-lane absence reason (from `e2eAbsenceReason.fixtureE2e` / `e2eAbsenceReason.serviceE2e`) when that lane is null
|
|
122
|
+
- Explicit timing notes: integration tests are created alongside each phase implementation; fixture-e2e tests are created alongside the UI feature phase; service-integration-e2e tests are executed only in the final phase
|
|
123
|
+
|
|
124
|
+
### Final Cleanup
|
|
125
|
+
|
|
126
|
+
Before the completion report, delete the implementation task files this recipe consumed. Their work is committed; `docs/plans/` is ephemeral working state and is not retained between recipe runs.
|
|
127
|
+
|
|
128
|
+
This recipe is scale-agnostic and may execute single-layer or multi-layer plans, so cleanup must cover all task naming patterns produced by task-decomposer's "Layer-aware naming" output:
|
|
129
|
+
|
|
130
|
+
- Delete every file matching ANY of these patterns for the `{plan-name}` derived from the work plan path used in this run:
|
|
131
|
+
- `docs/plans/tasks/{plan-name}-task-*.md` (single-layer tasks)
|
|
132
|
+
- `docs/plans/tasks/{plan-name}-backend-task-*.md` (backend portion of multi-layer plan)
|
|
133
|
+
- `docs/plans/tasks/{plan-name}-frontend-task-*.md` (frontend portion of multi-layer plan)
|
|
134
|
+
- From those matches, exclude `*-task-prep-*.md`, `_overview-*.md`, `*-phase*-completion.md`, `review-fixes-*.md`, `integration-tests-*-task-*.md` (these originate from other workflow phases)
|
|
135
|
+
- Delete every file matching `docs/plans/tasks/{plan-name}-phase*-completion.md` (the per-phase completion files generated by task-decomposer)
|
|
136
|
+
- Delete the corresponding `docs/plans/tasks/_overview-{plan-name}.md` if present
|
|
137
|
+
- Preserve the work plan itself (`docs/plans/{plan-name}.md`) — the user decides whether to delete it after final review
|
|
138
|
+
|
|
139
|
+
If task files cannot be deleted (filesystem error), report the failure but do not block the completion report.
|
|
109
140
|
|
|
110
141
|
## Execution Method
|
|
111
142
|
|
|
@@ -36,20 +36,21 @@ Follow subagents-orchestration-guide skill strictly and create work plan with th
|
|
|
36
36
|
- Check for existence of design documents, notify user if none exist
|
|
37
37
|
- Present options if multiple exist (can be specified with $ARGUMENTS)
|
|
38
38
|
|
|
39
|
-
2. **
|
|
40
|
-
- Confirm with user whether to generate E2E
|
|
41
|
-
- If user wants generation:
|
|
39
|
+
2. **Test Skeleton Generation Confirmation**
|
|
40
|
+
- Confirm with user whether to generate test skeletons (integration + E2E lanes) first
|
|
41
|
+
- If user wants generation: invoke acceptance-test-generator
|
|
42
42
|
- Pass generation results to next process according to subagents-orchestration-guide skill coordination specification
|
|
43
43
|
|
|
44
44
|
3. **Work Plan Creation**
|
|
45
45
|
Invoke work-planner using Agent tool:
|
|
46
46
|
- `subagent_type`: "work-planner"
|
|
47
47
|
- `description`: "Work plan creation"
|
|
48
|
-
- If test skeletons were generated in Step 2:
|
|
49
|
-
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
48
|
+
- If test skeletons were generated in Step 2, build the prompt by listing every lane's status:
|
|
49
|
+
- Always include: "Integration test file: [path or 'not generated']"
|
|
50
|
+
- For each E2E lane (`fixtureE2e`, `serviceE2e`):
|
|
51
|
+
- When `generatedFiles.<lane>` is not null: "[lane] test file: [path]"
|
|
52
|
+
- When `generatedFiles.<lane>` is null: "No [lane] skeleton generated (reason: [e2eAbsenceReason.<lane>])"
|
|
53
|
+
- Append placement guidance: "Integration tests are created simultaneously with each phase implementation. fixture-e2e tests are created alongside the UI feature phase. service-integration-e2e tests are executed only in the final phase."
|
|
53
54
|
- If test skeletons were not generated:
|
|
54
55
|
`prompt`: "Create work plan from Design Doc at [path]."
|
|
55
56
|
|