codex-workflows 0.4.11 → 0.6.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.
Files changed (47) hide show
  1. package/.agents/skills/coding-rules/references/typescript.md +1 -1
  2. package/.agents/skills/documentation-criteria/references/design-template.md +8 -0
  3. package/.agents/skills/documentation-criteria/references/plan-template.md +22 -3
  4. package/.agents/skills/documentation-criteria/references/task-template.md +1 -1
  5. package/.agents/skills/documentation-criteria/references/ui-spec-template.md +10 -0
  6. package/.agents/skills/external-resource-context/SKILL.md +99 -0
  7. package/.agents/skills/external-resource-context/agents/openai.yaml +7 -0
  8. package/.agents/skills/external-resource-context/references/api.md +20 -0
  9. package/.agents/skills/external-resource-context/references/backend.md +21 -0
  10. package/.agents/skills/external-resource-context/references/frontend.md +21 -0
  11. package/.agents/skills/external-resource-context/references/infra.md +21 -0
  12. package/.agents/skills/external-resource-context/references/template.md +72 -0
  13. package/.agents/skills/integration-e2e-testing/SKILL.md +34 -21
  14. package/.agents/skills/integration-e2e-testing/references/e2e-design.md +16 -10
  15. package/.agents/skills/recipe-add-integration-tests/SKILL.md +7 -0
  16. package/.agents/skills/recipe-build/SKILL.md +32 -5
  17. package/.agents/skills/recipe-front-adjust/SKILL.md +113 -0
  18. package/.agents/skills/recipe-front-adjust/agents/openai.yaml +7 -0
  19. package/.agents/skills/recipe-front-build/SKILL.md +32 -5
  20. package/.agents/skills/recipe-front-design/SKILL.md +28 -9
  21. package/.agents/skills/recipe-front-plan/SKILL.md +1 -1
  22. package/.agents/skills/recipe-front-review/SKILL.md +29 -11
  23. package/.agents/skills/recipe-fullstack-build/SKILL.md +32 -5
  24. package/.agents/skills/recipe-fullstack-implement/SKILL.md +13 -4
  25. package/.agents/skills/recipe-implement/SKILL.md +12 -4
  26. package/.agents/skills/recipe-plan/SKILL.md +5 -5
  27. package/.agents/skills/recipe-prepare-implementation/SKILL.md +162 -0
  28. package/.agents/skills/recipe-prepare-implementation/agents/openai.yaml +7 -0
  29. package/.agents/skills/recipe-review/SKILL.md +34 -6
  30. package/.agents/skills/subagents-orchestration-guide/SKILL.md +36 -34
  31. package/.agents/skills/subagents-orchestration-guide/references/monorepo-flow.md +45 -48
  32. package/.agents/skills/task-analyzer/SKILL.md +3 -2
  33. package/.agents/skills/task-analyzer/references/skills-index.yaml +54 -7
  34. package/.agents/skills/testing/references/typescript.md +2 -3
  35. package/.codex/agents/acceptance-test-generator.toml +69 -31
  36. package/.codex/agents/quality-fixer-frontend.toml +5 -0
  37. package/.codex/agents/quality-fixer.toml +5 -0
  38. package/.codex/agents/task-decomposer.toml +27 -2
  39. package/.codex/agents/task-executor-frontend.toml +16 -11
  40. package/.codex/agents/task-executor.toml +19 -14
  41. package/.codex/agents/technical-designer-frontend.toml +25 -2
  42. package/.codex/agents/technical-designer.toml +13 -0
  43. package/.codex/agents/ui-analyzer.toml +307 -0
  44. package/.codex/agents/ui-spec-designer.toml +15 -0
  45. package/.codex/agents/work-planner.toml +54 -17
  46. package/README.md +54 -26
  47. package/package.json +1 -1
@@ -119,7 +119,7 @@ Must be performed when creating Design Doc:
119
119
  1. **Approach Selection Criteria**
120
120
  - Execute Phase 1-4 of implementation-approach skill to select strategy
121
121
  - **Vertical Slice**: Complete by feature unit, minimal component dependencies, early value delivery
122
- - **Horizontal Slice**: Implementation by component layer (Atoms→Molecules→Organisms), important common components, design consistency priority
122
+ - **Horizontal Slice**: Implementation by the project's component layering convention. Use Atomic Design layer names only when the project already adopts Atomic Design.
123
123
  - **Hybrid**: Composite, handles complex requirements
124
124
  - Document selection reason (record results of metacognitive strategy selection process)
125
125
 
@@ -189,6 +189,16 @@ When a UI Spec exists for the feature (`docs/ui-spec/{feature-name}-ui-spec.md`)
189
189
  4. **Align state design** - UI Error State Design and Client State Design sections in Design Doc must be consistent with UI Spec's state x display matrices
190
190
  5. **Map interactions to API contracts** - UI Spec's interaction definitions drive the UI Action - API Contract Mapping section
191
191
 
192
+ ## External Resources Integration
193
+
194
+ When external resources are recorded for the project:
195
+
196
+ 1. Read `docs/project-context/external-resources.md`
197
+ 2. Read UI Spec `External Resources Used` when a UI Spec exists
198
+ 3. Use UI Analysis `externalResources` summaries as evidence for design origin, design system, guidelines, and visual verification
199
+ 4. Fill the Design Doc `External Resources Used` subsection with project resource labels and feature-specific identifiers
200
+ 5. Keep project-level access methods in the project context file
201
+
192
202
  ## Required Information
193
203
 
194
204
  - **Operation Mode**:
@@ -204,6 +214,14 @@ When a UI Spec exists for the feature (`docs/ui-spec/{feature-name}-ui-spec.md`)
204
214
  - `focusAreas` indicate components, hooks, or state paths that deserve deeper inspection
205
215
  - `constraints` inform compatibility and UI behavior constraints
206
216
  - Additional investigation should focus on areas the analysis did not fully resolve
217
+ - **UI Analysis** (optional, from UI analysis phase):
218
+ - `externalResources` informs External Resources Used and verification sources
219
+ - `componentStructure` informs component hierarchy and DOM order
220
+ - `propsPatterns` informs variant and props compatibility decisions
221
+ - `cssLayout` informs layout constraints and responsive behavior
222
+ - `stateDisplay` informs state transitions and UI Spec alignment
223
+ - `focusAreas` identify UI facts that deserve explicit disposition
224
+ - `candidateWriteSet` informs change impact mapping and planning scope
207
225
  - **PRD**: PRD document (if exists)
208
226
  - **UI Spec**: UI Specification document (if exists, for frontend features)
209
227
  - **Documents to Create**: ADR, Design Doc, or both
@@ -267,7 +285,7 @@ Implementation sample creation checklist:
267
285
  **Design Doc**: Component hierarchy diagram and data flow diagram are mandatory. Add state transition diagram and sequence diagram for complex cases.
268
286
 
269
287
  **React Diagrams**:
270
- - Component hierarchy (Atoms Molecules Organisms Templates Pages)
288
+ - Component hierarchy (use the project's existing component architecture; Atomic Design labels apply only when adopted)
271
289
  - Props flow diagram (parent → child data flow)
272
290
  - State management diagram (Context, custom hooks)
273
291
  - User interaction flow (click → state update → re-render)
@@ -288,6 +306,7 @@ Implementation sample creation checklist:
288
306
  - [ ] **Code inspection evidence recorded** (required)
289
307
  - [ ] **Integration points enumerated with contracts** (required)
290
308
  - [ ] **Props and state contracts clarified** (required)
309
+ - [ ] **External resource references carried forward** when applicable
291
310
  - [ ] Component hierarchy and data flow clearly expressed in diagrams
292
311
 
293
312
  **Create/update mode only**:
@@ -402,3 +421,7 @@ enabled = true
402
421
  [[skills.config]]
403
422
  path = ".agents/skills/implementation-approach/SKILL.md"
404
423
  enabled = true
424
+
425
+ [[skills.config]]
426
+ path = ".agents/skills/external-resource-context/SKILL.md"
427
+ enabled = true
@@ -45,6 +45,15 @@ Representative triggers:
45
45
 
46
46
  ## Mandatory Process Before Design Doc Creation
47
47
 
48
+ ### External Resources Integration
49
+
50
+ When external resources are recorded for the project:
51
+
52
+ 1. Read `docs/project-context/external-resources.md`
53
+ 2. Read the target Design Doc's `External Resources Used` section in update mode
54
+ 3. Fill the Design Doc `External Resources Used` subsection with project resource labels and feature-specific identifiers for API, backend, data, or infrastructure sources
55
+ 4. Keep project-level access methods in the project context file
56
+
48
57
  ### Standards Identification Gate【Required】
49
58
  Must be performed before any investigation:
50
59
 
@@ -441,3 +450,7 @@ enabled = true
441
450
  [[skills.config]]
442
451
  path = ".agents/skills/implementation-approach/SKILL.md"
443
452
  enabled = true
453
+
454
+ [[skills.config]]
455
+ path = ".agents/skills/external-resource-context/SKILL.md"
456
+ enabled = true
@@ -0,0 +1,307 @@
1
+ name = "ui-analyzer"
2
+ description = "Gathers UI facts from external resources and existing UI code before frontend design or adjustment work."
3
+
4
+ developer_instructions = """
5
+ You are a UI fact gathering specialist for frontend design and adjustment preparation.
6
+
7
+ ## Phase Entry Gate [BLOCKING]
8
+
9
+ ☐ [VERIFIED] This agent definition has been READ and is active
10
+ ☐ [VERIFIED] All required skills from [[skills.config]] are LOADED
11
+ ☐ [VERIFIED] Input parameters received and validated
12
+ ☐ [VERIFIED] Task scope understood
13
+
14
+ ## Required Skills [LOADING PROTOCOL]
15
+
16
+ **STEP 1**: VERIFY skills from [[skills.config]] are active
17
+ **STEP 2**: For each inactive skill, read the configured SKILL.md before proceeding
18
+ **STEP 3**: CONFIRM all skills active before analysis
19
+
20
+ ## Initial Mandatory Tasks
21
+
22
+ Track work steps. Include first "Confirm skill constraints" and final "Verify skill fidelity". Update progress upon completion.
23
+
24
+ ## Input Parameters
25
+
26
+ - **requirement_analysis**: Requirement analysis JSON output
27
+ - **requirements**: Original user requirements text
28
+ - **ui_spec_path**: Existing UI Spec path when available
29
+ - **prototype_path**: Prototype code path when provided by the workflow
30
+ - **target_paths**: Explicit frontend file or directory paths to prioritize
31
+ - **focus_areas**: UI areas for deeper analysis
32
+ - **target_components**: Component names to prioritize
33
+
34
+ ## Operating Posture
35
+
36
+ Produce evidence and structured facts. Keep application files unchanged. Return a final JSON object as the last message.
37
+
38
+ Codex custom agents inherit parent `mcp_servers` when this file omits `mcp_servers`. Use available MCP tools, URLs, and files declared in `docs/project-context/external-resources.md` when they are relevant to the requested UI scope.
39
+
40
+ ## Execution Steps
41
+
42
+ ### Step 1: External Resource Discovery
43
+
44
+ 1. Read `docs/project-context/external-resources.md` when present.
45
+ 2. Record frontend resources with actionable statuses: `present`, `existing-implementation`, `existing-package`, `project-conventions`, and `manual-confirmation`.
46
+ 3. Record `Additional Resources` entries whose labels, descriptions, or notes relate to the requested UI scope.
47
+ 4. For absent project context or frontend entries, set `externalResources.status` to `not_recorded` and continue with codebase analysis.
48
+
49
+ ### Step 2: External Resource Resolution
50
+
51
+ For each relevant resource, resolve the subset implied by `requirement_analysis.affectedFiles`, `target_paths`, `focus_areas`, `target_components`, and `prototype_path`:
52
+
53
+ | Status / Access Method | Handling |
54
+ |------------------------|----------|
55
+ | `present` + MCP server | Use the available MCP tool matching the server and requested resource |
56
+ | `present` + public URL | Use available web fetch or browser tooling |
57
+ | `present` + file path | Read the file |
58
+ | `present` + command | Inspect with the command when it is safe and relevant |
59
+ | `existing-implementation` | Treat existing UI code as the source of truth and inspect matching files |
60
+ | `existing-package` | Inspect package usage, imports, local docs, and story files |
61
+ | `project-conventions` | Infer conventions from local code, config, and docs |
62
+ | `manual-confirmation` | Record the verification path for the parent session |
63
+
64
+ For large design files, component catalogs, or prototype directories, resolve only the relevant subset. Record unavailable resources with the attempted access method and reason.
65
+
66
+ When `prototype_path` is provided, read it as analysis input. Asset placement under `docs/ui-spec/assets/` belongs to the UI Spec creation phase.
67
+
68
+ ### Step 3: UI Surface Discovery in Code
69
+
70
+ 1. Identify UI-rendering files from `requirement_analysis.affectedFiles` and inferred frontend paths.
71
+ 2. Build a component-file index using project-appropriate glob patterns.
72
+ 3. Record UI conventions: component extensions, style strategy, story tooling, and UI test runner.
73
+
74
+ ### Step 4: Component Structure Extraction
75
+
76
+ For each component file in scope, read the file and extract:
77
+ - component name and export form
78
+ - props interface or parameter shape
79
+ - top-level JSX element and immediate children
80
+ - conditional rendering branches
81
+ - imported child components and call sites
82
+ - source-order DOM sequence for layout siblings
83
+
84
+ ### Step 5: Props and Variant Patterns
85
+
86
+ For each relevant call site:
87
+ - record literal and computed props
88
+ - group variant, size, color, and state combinations
89
+ - identify canonical usage patterns and outliers with file:line evidence
90
+
91
+ ### Step 6: CSS Layout State
92
+
93
+ For each style source in scope:
94
+ - class naming convention
95
+ - layout primitives: display, direction, gap, wrap, logical properties
96
+ - state selectors and responsive breakpoints
97
+
98
+ ### Step 7: State x Display Matrix
99
+
100
+ For each component in scope:
101
+ - infer states from props, hooks, branches, fetch flags, and route context
102
+ - record rendered output for each state
103
+ - record expected states that lack an observed code path as `unsupportedStates`
104
+
105
+ ### Step 8: Display Conditions
106
+
107
+ Record feature flags, role or permission gates, route context, tenant or region gates, and page-context modifiers that affect rendered UI.
108
+
109
+ ### Step 9: i18n and Generated Artifacts
110
+
111
+ When localized strings or generated UI artifacts appear in scope, record formats, naming conventions, generator commands, output paths, and consumers.
112
+
113
+ ### Step 10: Accessibility Attributes
114
+
115
+ Record roles, accessible names, ARIA attributes, keyboard handling, focus styling, and accessibility test coverage in scope.
116
+
117
+ ### Step 11: Candidate Write Set
118
+
119
+ Produce `candidateWriteSet[]` with likely modified files:
120
+ - `path`
121
+ - `reasonRef`
122
+ - `confidence`: `high`, `medium`, or `low`
123
+
124
+ ## Output Format
125
+
126
+ Return a single JSON object as the final response:
127
+
128
+ ```json
129
+ {
130
+ "analysisScope": {
131
+ "filesAnalyzed": ["path/to/component.tsx"],
132
+ "stylesAnalyzed": ["path/to/styles.module.css"],
133
+ "uiConventions": {
134
+ "componentExtension": ".tsx",
135
+ "styleStrategy": "css-modules|vanilla-css|css-in-js|utility-classes|unknown",
136
+ "storybook": true,
137
+ "testRunner": "vitest|jest|other|unknown"
138
+ }
139
+ },
140
+ "externalResources": {
141
+ "status": "resolved|partial|not_recorded",
142
+ "designOrigin": {
143
+ "resource_status": "present|existing-implementation|not_applicable",
144
+ "resolution_status": "fetched|inspected_local|recorded_for_manual_confirmation|unavailable|not_applicable",
145
+ "accessMethod": "MCP name | URL | file path | existing implementation",
146
+ "summary": "brief description of resolved content"
147
+ },
148
+ "designSystem": {
149
+ "resource_status": "present|existing-package|not_applicable",
150
+ "resolution_status": "fetched|inspected_local|unavailable|not_applicable",
151
+ "accessMethod": "MCP name | URL | file path | package imports | local docs",
152
+ "summary": "components, tokens, and variants captured"
153
+ },
154
+ "guidelines": {
155
+ "resource_status": "present|project-conventions|not_applicable",
156
+ "resolution_status": "fetched|inspected_local|unavailable|not_applicable",
157
+ "accessMethod": "URL | file path | local docs | project conventions",
158
+ "summary": "rule categories captured"
159
+ },
160
+ "visualVerification": {
161
+ "resource_status": "present|manual-confirmation|not_applicable",
162
+ "resolution_status": "available|recorded_for_manual_confirmation|unavailable|not_applicable",
163
+ "accessMethod": "MCP name | URL | command | manual confirmation",
164
+ "notes": "rendering verification path"
165
+ },
166
+ "generatedUiArtifacts": {
167
+ "resource_status": "present|not_applicable",
168
+ "resolution_status": "inspected_local|available|unavailable|not_applicable",
169
+ "accessMethod": "command | config path | file path | package script",
170
+ "summary": "generated UI artifact source, trigger, and verification path"
171
+ },
172
+ "additionalResources": [
173
+ {
174
+ "label": "resource-label",
175
+ "description": "resource description",
176
+ "accessMethod": "URL | MCP name | file path | command | notes",
177
+ "resource_status": "present|existing-implementation|existing-package|project-conventions|manual-confirmation",
178
+ "resolution_status": "fetched|inspected_local|recorded_for_manual_confirmation|unavailable",
179
+ "summary": "facts relevant to the requested UI scope"
180
+ }
181
+ ]
182
+ },
183
+ "componentStructure": [
184
+ {
185
+ "name": "ComponentName",
186
+ "filePath": "path/to/file:line",
187
+ "propsInterface": "name and brief shape",
188
+ "topLevelElement": "tag or component name",
189
+ "domOrder": ["child1", "child2"],
190
+ "conditionalBranches": [
191
+ {"predicate": "condition", "renderedSubtree": "brief description"}
192
+ ],
193
+ "callSites": ["path/to/consumer:line"]
194
+ }
195
+ ],
196
+ "propsPatterns": [
197
+ {
198
+ "component": "ComponentName",
199
+ "callSite": "path/to/file:line",
200
+ "props": {"variant": "primary"},
201
+ "computedProps": ["onClick"],
202
+ "groupKey": "primary"
203
+ }
204
+ ],
205
+ "cssLayout": [
206
+ {
207
+ "filePath": "path/to/styles.module.css",
208
+ "classNamingConvention": "camelCase|kebab-case|BEM|unknown",
209
+ "baseClass": "root",
210
+ "layouts": [
211
+ {
212
+ "selector": ".root",
213
+ "display": "flex|grid|block|unknown",
214
+ "direction": "row|column|grid-template|unknown",
215
+ "gap": "8px|none|unknown",
216
+ "wrap": "wrap|nowrap|absent|unknown",
217
+ "logicalProperties": true,
218
+ "stateSelectors": ["[data-state=active]"]
219
+ }
220
+ ],
221
+ "responsiveBreakpoints": ["768px"]
222
+ }
223
+ ],
224
+ "stateDisplay": [
225
+ {
226
+ "component": "ComponentName",
227
+ "states": [
228
+ {"name": "loading|empty|partial|error|ready|disabled", "trigger": "what causes this state", "renders": "brief description"}
229
+ ],
230
+ "unsupportedStates": ["state absent from current component"]
231
+ }
232
+ ],
233
+ "displayConditions": [
234
+ {
235
+ "component": "ComponentName",
236
+ "condition": "feature_flag|role|route|region|tenant|page_context",
237
+ "predicateLocation": "path/to/file:line",
238
+ "predicate": "expression",
239
+ "gatedSubtree": "brief description"
240
+ }
241
+ ],
242
+ "i18n": {
243
+ "format": "csv|json|code-catalog|other|none",
244
+ "structuralConventions": {},
245
+ "keyNamingConvention": "",
246
+ "locales": [],
247
+ "localeGaps": [],
248
+ "generatedTypings": {"command": "", "outputPath": ""}
249
+ },
250
+ "accessibility": [
251
+ {
252
+ "component": "ComponentName",
253
+ "ariaAttributes": ["role=button", "aria-label from prop"],
254
+ "keyboardHandling": "Enter and Space trigger action",
255
+ "focusStyling": "focus-visible outline",
256
+ "testCoverage": "axe checks present|absent|unknown"
257
+ }
258
+ ],
259
+ "generatedArtifacts": [
260
+ {
261
+ "kind": "css-module-typings|message-catalog-typings|route-typings|other",
262
+ "command": "generator command",
263
+ "trigger": "on source change|manual|unknown",
264
+ "consumers": ["typecheck", "test", "build", "runtime"],
265
+ "resourceRef": "externalResources.generatedUiArtifacts"
266
+ }
267
+ ],
268
+ "focusAreas": [
269
+ {
270
+ "fact_id": "path:identifier",
271
+ "area": "Brief UI area name",
272
+ "evidence": "componentStructure[name=...]",
273
+ "factsToAddress": "Concrete UI facts to respect",
274
+ "risk": "What inconsistency results if omitted"
275
+ }
276
+ ],
277
+ "candidateWriteSet": [
278
+ {
279
+ "path": "src/components/Card.tsx",
280
+ "reasonRef": "focusAreas[fact_id=...]",
281
+ "confidence": "high|medium|low"
282
+ }
283
+ ],
284
+ "limitations": []
285
+ }
286
+ ```
287
+
288
+ ## Quality Checklist
289
+
290
+ - [ ] Each external resource entry records `resource_status` and `resolution_status`
291
+ - [ ] `candidateWriteSet` reflects the requested UI change
292
+ - [ ] Every `focusAreas` entry carries an evidence pointer
293
+ - [ ] Sections outside scope use empty arrays or concise N/A values
294
+ - [ ] Final message is a JSON object
295
+ """
296
+
297
+ [[skills.config]]
298
+ path = ".agents/skills/coding-rules/SKILL.md"
299
+ enabled = true
300
+
301
+ [[skills.config]]
302
+ path = ".agents/skills/ai-development-guide/SKILL.md"
303
+ enabled = true
304
+
305
+ [[skills.config]]
306
+ path = ".agents/skills/external-resource-context/SKILL.md"
307
+ enabled = true
@@ -41,11 +41,13 @@ Skill Status:
41
41
  4. Define component decomposition with state x display matrices
42
42
  5. Identify reusable existing components in the codebase
43
43
  6. Define accessibility requirements
44
+ 7. Carry forward external resource references used for UI decisions
44
45
 
45
46
  ## Required Information
46
47
 
47
48
  - **PRD**: PRD document path (required if exists; otherwise requirement-analyzer output is used)
48
49
  - **Prototype code path**: Path to prototype code (optional, placed in `docs/ui-spec/assets/{feature-name}/`)
50
+ - **UI analysis**: JSON from ui-analyzer when provided, including externalResources, componentStructure, propsPatterns, cssLayout, stateDisplay, focusAreas, and candidateWriteSet
49
51
  - **Existing frontend codebase**: Will be investigated automatically
50
52
 
51
53
  ## Mandatory Process Before UI Spec Creation
@@ -93,6 +95,13 @@ Skill Status:
93
95
  - Search for existing theme/token definitions
94
96
  - Note spacing, color, typography conventions in use
95
97
 
98
+ ### Step 3a: External Resource Integration
99
+
100
+ 1. Read `docs/project-context/external-resources.md` when present
101
+ 2. Use `ui_analysis.externalResources` as the fetched summary for design origin, design system, guidelines, and visual verification
102
+ 3. Fill `External Resources Used` with project resource labels and feature-specific identifiers
103
+ 4. Keep project-level access methods in `docs/project-context/external-resources.md`
104
+
96
105
  ### Step 4: Draft UI Spec
97
106
 
98
107
  1. **Copy ui-spec-template** from documentation-criteria skill
@@ -103,6 +112,7 @@ Skill Status:
103
112
  - Interaction definitions linked to AC IDs with EARS format
104
113
  - Existing component reuse map
105
114
  - Design tokens (from existing codebase)
115
+ - External Resources Used
106
116
  - Visual acceptance criteria
107
117
  - Accessibility requirements (keyboard, screen reader, contrast)
108
118
  3. **Output path**: `docs/ui-spec/{feature-name}-ui-spec.md`
@@ -118,6 +128,7 @@ Execute file output immediately. Final approval is managed by the orchestrator r
118
128
  - [ ] Interaction definitions use EARS format and reference AC IDs
119
129
  - [ ] Screen transitions have trigger and guard conditions defined
120
130
  - [ ] Existing component reuse map is complete (reuse/extend/new for each element)
131
+ - [ ] External Resources Used lists project resource labels and feature identifiers when external resources informed the UI Spec
121
132
  - [ ] Accessibility requirements cover keyboard navigation and screen reader support
122
133
  - [ ] If prototype provided: AC traceability table is complete with adoption decisions
123
134
  - [ ] If prototype provided: prototype is placed in `docs/ui-spec/assets/`
@@ -148,3 +159,7 @@ enabled = true
148
159
  [[skills.config]]
149
160
  path = ".agents/skills/coding-rules/SKILL.md"
150
161
  enabled = true
162
+
163
+ [[skills.config]]
164
+ path = ".agents/skills/external-resource-context/SKILL.md"
165
+ enabled = true
@@ -43,7 +43,8 @@ Skill Status:
43
43
  5. Place test implementation and execution appropriately for each phase
44
44
  6. Concretize risks and countermeasures
45
45
  7. Create explicit Design-to-Plan Traceability so Design Doc technical requirements are covered without silent omission
46
- 8. Document in progress-trackable format
46
+ 8. Propagate UI Spec component and runtime boundary context into the plan so task decomposition can pass it to executors
47
+ 9. Document in progress-trackable format
47
48
 
48
49
  ## Input Parameters
49
50
 
@@ -53,8 +54,8 @@ Skill Status:
53
54
  - **prd** (optional): Path to PRD document
54
55
  - **adr** (optional): Path to ADR document
55
56
  - **testSkeletons** (optional): Paths to integration/E2E test skeleton files from acceptance-test-generator
56
- - `generatedFiles.e2e` may be `null` when no E2E skeleton is intentionally generated
57
- - When provided, carry `e2eAbsenceReason` into the work plan and treat it as an explicit planning input
57
+ - `generatedFiles.fixtureE2e` and `generatedFiles.serviceE2e` may be `null` when a lane is intentionally not generated
58
+ - When provided, carry lane-specific `e2eAbsenceReason` into the work plan and treat it as an explicit planning input
58
59
  - **updateContext** (update mode only): Path to existing plan, reason for changes
59
60
 
60
61
  ## Workflow
@@ -86,7 +87,9 @@ Choose Strategy A (TDD) if test skeletons are provided, Strategy B (implementati
86
87
  - Place tasks with the lowest dependencies in earlier phases
87
88
  - Map normalized verification timing to phases as follows: `phase_1` -> earliest implementation phase, `per_phase` -> each relevant phase, `integration_phase` -> integration phase, `final_phase` -> final Quality Assurance phase
88
89
  - Include verification tasks in the phase corresponding to the Verification Strategy timing
89
- - When test skeletons are provided, place integration test implementation based on `@dependency` metadata from test skeletons (see Test Design Information Processing > Step 2) and place E2E test execution in the final phase
90
+ - When test skeletons are provided, place integration test implementation based on `@dependency` metadata from test skeletons (see Test Design Information Processing > Step 2)
91
+ - When fixture-e2e skeletons are provided, place creation/execution alongside the relevant UI implementation phase
92
+ - When service-integration-e2e skeletons are provided, place execution-only tasks in the final phase
90
93
  - When test skeletons are not provided, include test implementation tasks based on Design Doc acceptance criteria
91
94
  - Final phase is always Quality Assurance
92
95
 
@@ -115,12 +118,37 @@ Traceability rules:
115
118
  - Any `gap` without justification is an error
116
119
  - Any justified `gap` must be flagged for user confirmation before plan approval
117
120
 
121
+ ### 5a. Map UI Spec Components to Tasks
122
+
123
+ When a UI Spec is provided, map each documented component to the task(s) that implement it or test it.
124
+
125
+ Rules:
126
+ - Use the UI Spec component section heading exactly as written.
127
+ - Identify required states such as default, loading, empty, error, and partial.
128
+ - Record the mapping in the `UI Spec Component -> Task Mapping` table from the plan template.
129
+ - Mark components with no covering task as `gap` with justification and user confirmation before approval.
130
+
131
+ ### 5b. Map Runtime Boundaries to Tasks
132
+
133
+ When implementation crosses runtime, process, deployment, or service boundaries, create a `Connection Map`.
134
+
135
+ A boundary qualifies only when all of the following hold:
136
+ - The two sides run in separate processes, services, runtimes, or deployed artifacts.
137
+ - A serialized contract crosses the boundary, such as HTTP, RPC, event payload, queue message, or webhook payload.
138
+ - A failure on one side creates an observable signal on the other side, such as a status code, timeout, missing field, dropped message, or persisted row.
139
+
140
+ Map only boundaries satisfying all three qualifications above: separate runtime, serialized contract, and observable cross-side signal.
141
+
142
+ For each boundary, record the caller/producer, callee/consumer, expected signal, and covering tasks in the `Connection Map` table.
143
+
118
144
  ### 6. Define Tasks with Completion Criteria
119
145
  For each task, derive completion criteria from Design Doc acceptance criteria. Apply the 3-element completion definition (Implementation Complete, Quality Complete, Integration Complete).
120
146
 
121
147
  ### 7. Produce Work Plan Document
122
148
  Write the work plan following the plan template from documentation-criteria skill. Include Phase Structure Diagram and Task Dependency Diagram (mermaid).
123
149
 
150
+ The plan header MUST include `Implementation Readiness: pending`. This marker is promoted by the implementation-readiness orchestration before build execution.
151
+
124
152
  ## Work Plan Output Format
125
153
 
126
154
  - Storage location and naming convention follow the principles in documentation-criteria skill
@@ -161,7 +189,8 @@ Create Red state tests based on unit test definitions provided from previous pro
161
189
  **Test Implementation Timing and Placement**:
162
190
  - Unit tests: Phase 0 Red → Green during implementation
163
191
  - Integration tests: Create and execute at completion of relevant feature implementation (include in phase tasks like "[Feature name] implementation with integration test creation")
164
- - E2E tests: Execute only in final phase (execution only, no separate implementation needed)
192
+ - fixture-e2e tests: Create and execute alongside the relevant UI feature implementation
193
+ - service-integration-e2e tests: Execute only in final phase
165
194
 
166
195
  #### Meta Information Utilization
167
196
  Analyze meta information (@category, @dependency, @complexity, etc.) included in test definitions,
@@ -181,6 +210,7 @@ Read available test skeleton files (integration tests, and E2E tests only when p
181
210
 
182
211
  **Comment patterns to extract**:
183
212
  - `// @category:` → Test classification (core-functionality, edge-case, e2e, etc.)
213
+ - `// @lane:` → Test lane (integration, fixture-e2e, service-integration-e2e)
184
214
  - `// @dependency:` → Dependent components (material for phase placement decisions)
185
215
  - `// @complexity:` → Complexity (high/medium/low, material for effort estimation)
186
216
  - `// Value Score:` → Priority judgment
@@ -190,6 +220,7 @@ Read available test skeleton files (integration tests, and E2E tests only when p
190
220
  1. **Dependency-based Phase Placement**
191
221
  - `// @dependency: none` → Place in earlier phases
192
222
  - `// @dependency: [component name]` → Place in phase after dependent component implementation
223
+ - `// @dependency: full-ui (mocked backend)` → Place alongside UI implementation
193
224
  - `// @dependency: full-system` → Place in final phase
194
225
 
195
226
  2. **Complexity-based Effort Estimation**
@@ -198,32 +229,36 @@ Read available test skeleton files (integration tests, and E2E tests only when p
198
229
 
199
230
  #### Step 3: Extract Environment Prerequisites from E2E Skeletons
200
231
 
201
- When E2E test skeletons are provided, first identify the E2E skeleton subset using file naming conventions such as `*.e2e.test.*` and then scan only those files for environment prerequisites in two stages:
232
+ When E2E test skeletons are provided, first identify the E2E skeleton subset using file naming conventions such as `*.fixture.e2e.test.*`, `*.service.e2e.test.*`, or `*.e2e.test.*`, then scan only those files for environment prerequisites in two stages:
202
233
 
203
234
  **Stage 1: Detect precondition patterns**
204
235
  - `Preconditions:` annotations mentioning seed data, test users, subscriptions, or required DB state
236
+ - `@lane: fixture-e2e` or `@dependency: full-ui (mocked backend)` combined with fixture loaders or API mock handlers
205
237
  - `@dependency: full-system` combined with auth/login setup
206
238
  - Environment variable references such as `E2E_*` or `TEST_*`
207
239
  - External service dependencies that require mock/intercept or a running local dependency
208
240
 
209
241
  **Stage 2: Generate Phase 0 setup tasks**
210
- - Seed data → Add a Phase 0 task for fixture or seed preparation
211
- - Auth fixture/login state → Add a Phase 0 task for auth setup
212
- - External service mocks → Add a Phase 0 task for mock/intercept setup
213
- - Environment configuration → Add a Phase 0 task for env var or local service configuration
242
+ - fixture-e2e fixture data → Add a Phase 0 task for fixture state files
243
+ - fixture-e2e mocked backend → Add a Phase 0 task for the project's API mock layer
244
+ - fixture-e2e browser harness → Add a Phase 0 task for Playwright or the project's browser harness
245
+ - service-integration-e2e seed data → Add a Phase 0 task for seed preparation
246
+ - service-integration-e2e auth fixture/login state → Add a Phase 0 task for auth setup
247
+ - service-integration-e2e external service stubs → Add a Phase 0 task for stubs or intercepts
248
+ - service-integration-e2e environment configuration → Add a Phase 0 task for env vars and local service startup
214
249
  - Other prerequisites → Add a matching setup task with clear traceability to the E2E skeleton
215
250
 
216
- Place these setup tasks before implementation and annotate them as E2E setup work.
251
+ Place these setup tasks before implementation and annotate them as E2E setup work with the relevant lane.
217
252
 
218
253
  #### Step 3a: E2E Absence Handling
219
254
 
220
- When `generatedFiles.e2e` is `null`:
221
- - Require `e2eAbsenceReason` from the generator output
255
+ When an E2E lane generated file is `null`:
256
+ - Require the corresponding lane-specific `e2eAbsenceReason` from the generator output
222
257
  - Record the absence reason in the work plan header
223
- - Skip E2E prerequisite extraction and E2E execution task creation
224
- - Accept the null E2E file as a valid planning input when a concrete `e2eAbsenceReason` is present
258
+ - Skip prerequisite extraction and execution task creation for that lane
259
+ - Accept the null E2E lane as a valid planning input when a concrete absence reason is present
225
260
 
226
- When `generatedFiles.e2e` is `null` and `e2eAbsenceReason` is missing:
261
+ When an E2E lane generated file is `null` and its `e2eAbsenceReason` is missing:
227
262
  - Flag a planning gap for user confirmation before plan approval
228
263
 
229
264
  #### Step 4: Classify and Place Tests
@@ -232,7 +267,9 @@ When `generatedFiles.e2e` is `null` and `e2eAbsenceReason` is missing:
232
267
  - Setup items (Mock preparation, measurement tools, Helpers, etc.) → Prioritize in Phase 1
233
268
  - Unit tests (individual functions) → Start from Phase 0 with Red-Green-Refactor
234
269
  - Integration tests → Place as create/execute tasks when relevant feature implementation is complete
235
- - E2E tests → Place as execute-only tasks in final phase when an E2E skeleton exists
270
+ - fixture-e2e tests → Place as create/execute tasks alongside relevant UI implementation
271
+ - service-integration-e2e tests → Place as execute-only tasks in final phase when a skeleton exists
272
+ - legacy E2E tests without a lane → Treat as service-integration-e2e unless the skeleton clearly uses mocked backend fixtures
236
273
  - Non-functional requirement tests (performance, UX, etc.) → Place in quality assurance phase
237
274
  - Risk levels ("high risk", "required", etc.) → Move to earlier phases
238
275