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
@@ -59,7 +59,7 @@ function isUser(value: unknown): value is User {
59
59
  - **Function Components (Mandatory)**: Official React recommendation, optimizable by modern tooling
60
60
  - **Classes Prohibited**: Class components completely deprecated (Exception: Error Boundary)
61
61
  - **Custom Hooks**: Standard pattern for logic reuse and dependency injection
62
- - **Component Hierarchy**: Atoms > Molecules > Organisms > Templates > Pages
62
+ - **Component Hierarchy**: Follow the project's existing component architecture. Use Atoms > Molecules > Organisms > Templates > Pages only when the project adopts Atomic Design.
63
63
  - **Co-location**: Place tests, styles, and related files alongside components
64
64
 
65
65
  **State Management Patterns**
@@ -33,6 +33,14 @@ unknowns:
33
33
  - [ADR File Name]: [Related decision items]
34
34
  - Reference common technical ADRs when applicable
35
35
 
36
+ ### External Resources Used
37
+
38
+ | Project Resource Label | Feature Identifier | Purpose |
39
+ |------------------------|--------------------|---------|
40
+ | frontend-design-origin | [screen / node / frame / route / story id] | [why this feature uses it] |
41
+ | api-schema-source | [endpoint / operation id / schema name] | [why this feature uses it] |
42
+ | infra-iac-source | [service / module / environment] | [why this feature uses it] |
43
+
36
44
  ### Agreement Checklist
37
45
 
38
46
  #### Scope
@@ -5,6 +5,7 @@ Type: feature|fix|refactor
5
5
  Estimated Duration: X days
6
6
  Estimated Impact: X files
7
7
  Related Issue/PR: #XXX (if any)
8
+ Implementation Readiness: pending
8
9
 
9
10
  ## Related Documents
10
11
  - Design Doc(s):
@@ -66,6 +67,24 @@ Map each Design Doc technical requirement to the task or phase that covers it. U
66
67
  - Merge duplicate restatements of the same obligation from multiple DD sections into one row and cite the primary section in `DD Section`
67
68
  - Keep `scope-boundary` rows concrete: name the protected file group, component boundary, contract, or workflow that must remain unchanged
68
69
 
70
+ ## UI Spec Component -> Task Mapping
71
+
72
+ Include this section when a UI Spec is among the inputs. Map each UI component section to the task(s) that implement it so task-decomposer can pass the exact UI Spec context to executor tasks. Omit this section when no UI Spec exists.
73
+
74
+ | UI Spec Component (section heading) | States to Cover | Covered By Task(s) | Gap Status | Notes |
75
+ |-------------------------------------|-----------------|--------------------|------------|-------|
76
+ | [Use the UI Spec heading exactly as written, e.g. "Component: AlertCard"] | [default / loading / empty / error / partial] | [P1-T1, P2-T1] | covered | |
77
+
78
+ **Reference key rule**: The component identifier is the UI Spec section heading verbatim. Component headings must be unique within a UI Spec.
79
+
80
+ ## Connection Map
81
+
82
+ Include this section when implementation crosses runtime, process, deployment, or service boundaries. Omit it when the change stays inside one runtime or only uses in-process package imports.
83
+
84
+ | Boundary | Caller / Producer | Callee / Consumer | Expected Signal | Covered By Task(s) |
85
+ |----------|-------------------|-------------------|-----------------|--------------------|
86
+ | [e.g. "web client -> API"] | [module/package initiating request or message] | [module/package receiving request or message] | [Observable evidence, e.g. HTTP 200 matching schema X] | [P1-T1, P1-T2] |
87
+
69
88
  ## Objective
70
89
  [Why this change is necessary, what problem it solves]
71
90
 
@@ -100,7 +119,7 @@ Use when implementation approach is Vertical Slice. Each phase represents one va
100
119
  #### Tasks
101
120
  - [ ] [P1-T1] Specific work content
102
121
  - [ ] [P1-T2] Verification for this value unit
103
- - [ ] Quality check: Implement staged quality checks (refer to ai-development-guide skill)
122
+ - [ ] Quality check: Run staged static analysis, build verification, tests, and final quality gate
104
123
 
105
124
  #### Phase Completion Criteria
106
125
  - [ ] Early verification point passed
@@ -132,7 +151,7 @@ Use when implementation approach is Horizontal Slice. Phases follow Foundation -
132
151
  #### Tasks
133
152
  - [ ] [P1-T1] Specific work content
134
153
  - [ ] [P1-T2] Specific work content
135
- - [ ] Quality check: Implement staged quality checks (refer to ai-development-guide skill)
154
+ - [ ] Quality check: Run staged static analysis, build verification, tests, and final quality gate
136
155
  - [ ] Unit tests: All related tests pass
137
156
 
138
157
  #### Phase Completion Criteria
@@ -182,7 +201,7 @@ This phase is required for all implementation approaches.
182
201
  - [ ] Document updates
183
202
 
184
203
  ### Quality Assurance
185
- - [ ] Implement staged quality checks (details: refer to ai-development-guide skill)
204
+ - [ ] Run staged static analysis, build verification, tests, and final quality gate
186
205
  - [ ] All tests pass
187
206
  - [ ] Static check pass
188
207
  - [ ] Lint check pass
@@ -46,7 +46,7 @@ Brief observations recorded after reading Investigation Targets:
46
46
  - **Verification method**: [What to verify and how]
47
47
  - **Success criteria**: [Observable outcome that proves correctness]
48
48
  - **Failure response**: [What to do if verification fails]
49
- - **Verification level**: [L1/L2/L3, per implementation-approach skill]
49
+ - **Verification level**: [L1 unit/local verification, L2 integration verification, or L3 end-to-end verification]
50
50
 
51
51
  ## Completion Criteria
52
52
  - [ ] All added tests pass
@@ -13,6 +13,14 @@
13
13
  |--------|------|---------|
14
14
  | Prototype code | [docs/ui-spec/assets/xxx/] | [commit SHA / tag] |
15
15
 
16
+ ## External Resources Used
17
+
18
+ | Project Resource Label | Feature Identifier | Purpose |
19
+ |------------------------|--------------------|---------|
20
+ | [frontend-design-origin] | [screen / node / frame / route / story id] | [why this feature uses it] |
21
+ | [frontend-design-system] | [component / token / variant / story id] | [why this feature uses it] |
22
+ | [frontend-visual-verification] | [route / story / viewport / scenario] | [how this feature is verified] |
23
+
16
24
  ## Prototype Management
17
25
 
18
26
  Prototype code is an **attachment** to this UI Spec. The canonical specification is always this document + the Design Doc.
@@ -59,6 +67,8 @@ Map PRD acceptance criteria to prototype references. Skip this section if no pro
59
67
 
60
68
  ### Component: [ComponentName]
61
69
 
70
+ > Component heading uniqueness: every `Component: [ComponentName]` heading must be unique within this UI Spec. Work plans and task decomposition reference components by exact heading text.
71
+
62
72
  #### State x Display Matrix
63
73
 
64
74
  List only states that actually exist for this component. Remove unused rows. Include fallback or degraded states only when explicitly required by the PRD or existing behavior.
@@ -0,0 +1,99 @@
1
+ ---
2
+ name: external-resource-context
3
+ description: "Discovers, confirms, and records external resource access methods for project design and implementation work, including design sources, design systems, API schemas, database schemas, IaC sources, secret stores, environment config, and verification environments. Use when external resource context needs to be discovered or refreshed, recorded in docs/project-context/external-resources.md, or referenced from a Design Doc/UI Spec."
4
+ ---
5
+
6
+ # External Resource Context
7
+
8
+ ## Purpose
9
+
10
+ This skill helps Codex discover required external resources, record stable access methods, and reuse recorded context during design, planning, implementation, and review work.
11
+
12
+ Covered resources include design origin, design system, guidelines, visual verification environment, database schema source, migration history, secret store location, API schema source, mock environment, IaC source, and environment configuration.
13
+
14
+ ## Scope Boundaries
15
+
16
+ **In scope**: hearing protocol for unclear external resources, storage location, single-source ownership rule, and lookup protocol for known resources.
17
+
18
+ **Freshness handling**: record access methods and feature identifiers here. The consuming workflow checks current resource content at use time.
19
+
20
+ ## Storage Locations
21
+
22
+ | Tier | Location | Holds | Update Frequency |
23
+ |------|----------|-------|------------------|
24
+ | Project | `docs/project-context/external-resources.md` | Environment-stable facts: resource labels, presence, and access methods | When the project environment changes |
25
+ | Feature | `## External Resources Used` section in the relevant UI Spec or Design Doc | Feature-specific identifiers that reference project-tier labels | Per feature |
26
+
27
+ ### Single Source Rule
28
+
29
+ The project tier owns environment facts such as URLs, MCP server names, file paths, commands, and secret-store locations. Feature-tier sections list feature-specific identifiers such as design node ids, API paths, schema names, or IaC module names, then reference the project-tier label.
30
+
31
+ ## Hearing Protocol
32
+
33
+ ### When to Hear
34
+
35
+ | Condition | Action |
36
+ |-----------|--------|
37
+ | `docs/project-context/external-resources.md` is absent | Run full hearing for the relevant domain |
38
+ | File exists | Ask for one choice: keep current axes, refresh all axes, or refresh selected axes |
39
+
40
+ When the user chooses `refresh selected axes`, ask for the exact domain and axis labels before updating. Confirm the selected labels against the loaded domain reference, then hear only those axes.
41
+
42
+ ### Domain Routing
43
+
44
+ Load the domain reference matching the current task:
45
+
46
+ | Task type | References to load |
47
+ |-----------|--------------------|
48
+ | Frontend UI work | [references/frontend.md](references/frontend.md) |
49
+ | Backend or data work | [references/backend.md](references/backend.md) |
50
+ | API contract work | [references/api.md](references/api.md) |
51
+ | Infrastructure or deployment | [references/infra.md](references/infra.md) |
52
+ | Fullstack | Load each relevant domain reference |
53
+
54
+ Each domain reference defines axes and question templates. Use `N/A` for axes outside the current project.
55
+
56
+ ### Two-Phase Hearing
57
+
58
+ 1. **Structured hearing**: ask each axis from the domain reference. For each non-N/A axis, collect the access or reference method: MCP server name, URL, file path, command, repository-owned source, project convention, manual confirmation path, or existing implementation.
59
+ 2. **Self-declaration**: ask for additional external resources outside the structured axes. Append any resources the user provides under `Additional Resources`.
60
+
61
+ ## Storage Protocol
62
+
63
+ After hearing completes:
64
+
65
+ 1. Build project-tier content from the answers using [references/template.md](references/template.md).
66
+ 2. Write `docs/project-context/external-resources.md`, creating `docs/project-context/` as needed.
67
+ 3. When a target UI Spec or Design Doc exists, update its `External Resources Used` section with project-tier labels plus feature-specific identifiers.
68
+ 4. If a write fails, return the error with the intended path and leave completion status unresolved.
69
+ 5. Report touched file paths to the calling workflow.
70
+
71
+ ## Lookup Protocol
72
+
73
+ Consumers resolve external context in this order:
74
+
75
+ 1. Read `docs/project-context/external-resources.md`.
76
+ 2. Read the target UI Spec or Design Doc `External Resources Used` section for feature-specific identifiers.
77
+ 3. Use the project-tier access method to fetch or inspect the resource.
78
+
79
+ Codex custom agents inherit parent `mcp_servers` when the agent file omits `mcp_servers`. Preserve that inheritance for agents that may need project-specific MCP tools. Reserve MCP `enabled_tools` for a deliberately narrow server-level allow list.
80
+
81
+ ## Output Format
82
+
83
+ The project-tier file follows [references/template.md](references/template.md). Feature-tier sections use the fixed heading `External Resources Used`; heading level follows the parent document structure.
84
+
85
+ ## Quality Checklist
86
+
87
+ - [ ] Each relevant axis has a presence indicator and access method, or is marked `N/A`
88
+ - [ ] Self-declaration phase completed
89
+ - [ ] Project-tier file contains environment facts
90
+ - [ ] Feature-tier sections contain feature identifiers and project-tier labels
91
+ - [ ] Existing project-tier updates are confirmed before writes
92
+
93
+ ## References
94
+
95
+ - [references/frontend.md](references/frontend.md)
96
+ - [references/backend.md](references/backend.md)
97
+ - [references/api.md](references/api.md)
98
+ - [references/infra.md](references/infra.md)
99
+ - [references/template.md](references/template.md)
@@ -0,0 +1,7 @@
1
+ interface:
2
+ display_name: "external-resource-context"
3
+ short_description: "Discover and reuse external resource context"
4
+ default_prompt: "Use $external-resource-context to identify or consult external resources for: "
5
+
6
+ policy:
7
+ allow_implicit_invocation: true
@@ -0,0 +1,20 @@
1
+ # API External Resource Axes
2
+
3
+ Use these axes when work depends on API contracts outside the repository.
4
+
5
+ | Axis | Purpose | Presence Choices | Access Method Examples |
6
+ |------|---------|------------------|------------------------|
7
+ | API Schema Source | OpenAPI, GraphQL SDL, proto, or typed contract source | Present / Repository-owned / N/A | schema repo path, docs URL, MCP |
8
+ | API Explorer | Interactive or generated contract inspection | Present / N/A | Swagger UI URL, GraphQL explorer URL |
9
+ | Mock Server | Contract-backed mock or sandbox endpoint | Present / N/A | mock URL, command, docker compose service |
10
+ | Consumer Contract Source | Downstream expectations or contract tests | Present / N/A | contract repo, pact broker URL, file path |
11
+
12
+ ## Question Template
13
+
14
+ Ask each axis in positive form:
15
+
16
+ 1. "Which API contract resources are available for this work?"
17
+ 2. "For each applicable resource, what access method or reference method should Codex use?"
18
+ 3. "Which feature-specific identifier applies, such as endpoint path, operation id, schema name, or event name?"
19
+
20
+ Record `N/A` for axes outside the project.
@@ -0,0 +1,21 @@
1
+ # Backend External Resource Axes
2
+
3
+ Use these axes when backend or data work depends on resources outside the repository.
4
+
5
+ | Axis | Purpose | Presence Choices | Access Method Examples |
6
+ |------|---------|------------------|------------------------|
7
+ | Database Schema Source | Canonical schema, ERD, or generated model source | Present / Repository-owned / N/A | schema repo path, DB docs URL, MCP |
8
+ | Migration History | Deployment-applied migration sequence | Present / Repository-owned / N/A | migration repo, migration table query command |
9
+ | Secret Store | Runtime secret names and lookup location | Present / N/A | cloud secret manager path, vault path |
10
+ | Environment Configuration | Runtime config source and environment matrix | Present / Repository-owned / N/A | config repo, deployment docs, command |
11
+ | Mock or Fixture Environment | Local or shared backend verification setup | Present / N/A | docker compose path, seeded DB command, service URL |
12
+
13
+ ## Question Template
14
+
15
+ Ask each axis in positive form:
16
+
17
+ 1. "Which backend external resources are available for this work?"
18
+ 2. "For each applicable resource, what access method or reference method should Codex use?"
19
+ 3. "Which feature-specific identifier applies, such as table name, service name, secret name, or environment name?"
20
+
21
+ Record `N/A` for axes outside the project.
@@ -0,0 +1,21 @@
1
+ # Frontend External Resource Axes
2
+
3
+ Use these axes when frontend UI work depends on resources outside the repository.
4
+
5
+ | Axis | Purpose | Presence Choices | Access Method Examples |
6
+ |------|---------|------------------|------------------------|
7
+ | Design Origin | Canonical visual or interaction source | Present / Existing implementation / N/A | Figma MCP, public URL, exported file path |
8
+ | Design System | Component catalog, tokens, variants, usage rules | Present / Existing package only / N/A | Storybook URL, package docs, MCP, local docs |
9
+ | Guidelines | Accessibility, responsive, copy, brand, i18n, or platform rules | Present / Project conventions only / N/A | URL, file path, wiki export |
10
+ | Visual Verification Environment | Rendered UI inspection path | Present / Manual confirmation / N/A | browser MCP, Playwright command, Storybook URL, dev server URL |
11
+ | Generated UI Artifacts | Generated CSS typings, route typings, message catalogs, snapshots | Present / N/A | generator command, config path |
12
+
13
+ ## Question Template
14
+
15
+ Ask each axis in positive form:
16
+
17
+ 1. "Which frontend external resources are available for this work?"
18
+ 2. "For each applicable resource, what access method or reference method should Codex use?"
19
+ 3. "Which feature-specific identifier applies, such as screen name, node id, route, story id, or component name?"
20
+
21
+ Record `N/A` for axes outside the project.
@@ -0,0 +1,21 @@
1
+ # Infrastructure External Resource Axes
2
+
3
+ Use these axes when infrastructure, deployment, or runtime environment work depends on resources outside the repository.
4
+
5
+ | Axis | Purpose | Presence Choices | Access Method Examples |
6
+ |------|---------|------------------|------------------------|
7
+ | IaC Source | Terraform, Pulumi, CDK, or deployment source | Present / Repository-owned / N/A | repo path, module registry, docs URL |
8
+ | Environment Inventory | Accounts, regions, clusters, services | Present / N/A | cloud console URL, inventory file, command |
9
+ | Deployment Pipeline | CI/CD workflow and promotion process | Present / Repository-owned / N/A | pipeline URL, workflow file path |
10
+ | Observability Source | Logs, metrics, traces, dashboards | Present / N/A | dashboard URL, MCP, CLI command |
11
+ | Runtime Access Method | How to inspect deployed state | Present / N/A | kubectl context, cloud CLI profile, bastion docs |
12
+
13
+ ## Question Template
14
+
15
+ Ask each axis in positive form:
16
+
17
+ 1. "Which infrastructure external resources are available for this work?"
18
+ 2. "For each applicable resource, what access method or reference method should Codex use?"
19
+ 3. "Which feature-specific identifier applies, such as module name, service name, environment, account, or dashboard?"
20
+
21
+ Record `N/A` for axes outside the project.
@@ -0,0 +1,72 @@
1
+ # Project External Resources Template
2
+
3
+ Use this structure for `docs/project-context/external-resources.md`.
4
+
5
+ ```markdown
6
+ # External Resources
7
+
8
+ ## Overview
9
+
10
+ This file records project-level access methods for resources outside the repository. Feature documents reference these labels and add feature-specific identifiers.
11
+
12
+ ## Frontend
13
+
14
+ | Label | Axis | Status | Access Method | Owner / Notes |
15
+ |-------|------|--------|---------------|---------------|
16
+ | frontend-design-origin | Design Origin | present / existing-implementation / N/A | MCP / URL / file path / command | [owner or notes] |
17
+ | frontend-design-system | Design System | present / existing-package / N/A | MCP / URL / file path / command | [owner or notes] |
18
+ | frontend-guidelines | Guidelines | present / project-conventions / N/A | URL / file path | [owner or notes] |
19
+ | frontend-visual-verification | Visual Verification Environment | present / manual-confirmation / N/A | MCP / URL / command | [owner or notes] |
20
+ | frontend-generated-artifacts | Generated UI Artifacts | present / N/A | command / config path | [owner or notes] |
21
+
22
+ ## Backend
23
+
24
+ | Label | Axis | Status | Access Method | Owner / Notes |
25
+ |-------|------|--------|---------------|---------------|
26
+ | backend-schema-source | Database Schema Source | present / repository-owned / N/A | URL / file path / command | [owner or notes] |
27
+ | backend-migration-history | Migration History | present / repository-owned / N/A | URL / file path / command | [owner or notes] |
28
+ | backend-secret-store | Secret Store | present / N/A | store path / docs path | [owner or notes] |
29
+ | backend-environment-config | Environment Configuration | present / repository-owned / N/A | URL / file path / command | [owner or notes] |
30
+ | backend-mock-environment | Mock or Fixture Environment | present / N/A | URL / command | [owner or notes] |
31
+
32
+ ## API
33
+
34
+ | Label | Axis | Status | Access Method | Owner / Notes |
35
+ |-------|------|--------|---------------|---------------|
36
+ | api-schema-source | API Schema Source | present / repository-owned / N/A | URL / file path / MCP | [owner or notes] |
37
+ | api-explorer | API Explorer | present / N/A | URL / MCP | [owner or notes] |
38
+ | api-mock-server | Mock Server | present / N/A | URL / command | [owner or notes] |
39
+ | api-consumer-contract | Consumer Contract Source | present / N/A | URL / file path | [owner or notes] |
40
+
41
+ ## Infrastructure
42
+
43
+ | Label | Axis | Status | Access Method | Owner / Notes |
44
+ |-------|------|--------|---------------|---------------|
45
+ | infra-iac-source | IaC Source | present / repository-owned / N/A | URL / file path | [owner or notes] |
46
+ | infra-environment-inventory | Environment Inventory | present / N/A | URL / file path / command | [owner or notes] |
47
+ | infra-deployment-pipeline | Deployment Pipeline | present / repository-owned / N/A | URL / file path | [owner or notes] |
48
+ | infra-observability-source | Observability Source | present / N/A | URL / MCP / command | [owner or notes] |
49
+ | infra-runtime-access | Runtime Access Method | present / N/A | command / docs path | [owner or notes] |
50
+
51
+ ## Additional Resources
52
+
53
+ | Label | Description | Access Method | Owner / Notes |
54
+ |-------|-------------|---------------|---------------|
55
+ | [label] | [description] | [URL / MCP / file path / command] | [owner or notes] |
56
+
57
+ ## Update History
58
+
59
+ | Date | Change | Author |
60
+ |------|--------|--------|
61
+ | YYYY-MM-DD | Initial capture | [name] |
62
+ ```
63
+
64
+ Feature-tier sections use this compact table:
65
+
66
+ ```markdown
67
+ ## External Resources Used
68
+
69
+ | Project Resource Label | Feature Identifier | Purpose |
70
+ |------------------------|--------------------|---------|
71
+ | frontend-design-origin | [screen / node / frame id] | [why this feature uses it] |
72
+ ```
@@ -7,14 +7,15 @@ description: "Integration and E2E test design principles, value-based selection,
7
7
 
8
8
  ## References
9
9
 
10
- **E2E test design with Playwright**: See [references/e2e-design.md](references/e2e-design.md) for UI Spec-driven E2E test candidate selection and Playwright test architecture.
10
+ **E2E test design**: See [references/e2e-design.md](references/e2e-design.md) for UI Spec-driven E2E test candidate selection and browser test architecture. Playwright is the default browser harness example; use the project's standard when different.
11
11
 
12
12
  ## Test Type Definition and Limits [MANDATORY]
13
13
 
14
- | Test Type | Purpose | Scope | Limit per Feature | Implementation Timing |
15
- |-----------|---------|-------|-------------------|----------------------|
16
- | Integration | Verify component interactions | Partial system integration | MAX 3 | Created alongside implementation |
17
- | E2E | Verify critical user journeys | Full system | MAX 1-2 | Executed in final phase only |
14
+ | Test Type | Purpose | Scope | External Deps | Limit per Feature | Implementation Timing |
15
+ |-----------|---------|-------|---------------|-------------------|----------------------|
16
+ | Integration | Verify component interactions in-process | Partial system integration | Project-local dependencies | MAX 3 | Created alongside implementation |
17
+ | fixture-e2e | Verify browser/user journey with controlled state | Browser UI + mocked backend or fixtures | No live stack required | MAX 3 | Created alongside UI implementation |
18
+ | service-integration-e2e | Verify live-stack cross-service correctness | Full local stack | Local services, DB, queues, stubs | MAX 1-2 | Executed in final phase only |
18
19
 
19
20
  **ENFORCEMENT**: Exceeding test limits requires explicit justification
20
21
 
@@ -42,44 +43,53 @@ Value Score = (Business Value x User Frequency) + (Legal Requirement x 10) + Def
42
43
 
43
44
  Use `Value Score` for ranking candidates of the same test type. Handle E2E cost through budget limits and reserved-slot rules instead of cost-division scoring.
44
45
 
45
- ### E2E Threshold
46
+ ### E2E Lane Thresholds
46
47
 
47
- - `E2E threshold = Value Score >= 50`
48
- - Use this threshold for non-reserved E2E selection only
48
+ - `fixture-e2e threshold = Value Score >= 20` for non-reserved candidates
49
+ - `service-integration-e2e threshold = Value Score > 50` for non-reserved candidates
49
50
  - Reserved-slot eligibility overrides the threshold when the candidate is the highest-value user-facing multi-step journey
50
51
 
52
+ The fixture-e2e threshold is lower because this lane uses mocked backend or fixture-driven state, avoids live-stack setup, and has a higher per-feature budget. The service-integration-e2e threshold stays higher because live-stack tests are slower, more brittle, and more expensive to maintain.
53
+
51
54
  ### Selection Rules
52
55
 
53
56
  | Test Type | Ranking Basis | Selection Rule |
54
57
  |-----------|---------------|----------------|
55
58
  | Integration | Highest `Value Score` among integration candidates | Select up to budget |
56
- | E2E | Highest `Value Score` among E2E candidates | Select when `reservedSlotEligible = true`, or when `Value Score >= 50` |
59
+ | fixture-e2e | Highest `Value Score` among fixture-e2e candidates | Select reserved user-facing journey or candidates with `Value Score >= 20` |
60
+ | service-integration-e2e | Highest `Value Score` among service-integration-e2e candidates | Select reserved cross-service journey or candidates with `Value Score > 50` |
57
61
 
58
62
  ### E2E Candidate Rules
59
63
 
60
64
  - Treat integration and E2E as complementary coverage layers
65
+ - Default browser-level user journeys to `fixture-e2e` when mocked backend or fixture-driven state can verify the behavior
66
+ - Promote to `service-integration-e2e` only when correctness depends on real cross-service behavior such as DB persistence, queue/event delivery, transactional consistency, or external service contract payloads
61
67
  - Retain an E2E candidate when it validates a user-facing multi-step journey, even if integration tests partially cover the behavior
62
- - Preserve E2E candidates for user-facing multi-step journeys that validate cross-screen or cross-boundary continuity
63
- - Distinguish user-facing journeys from service-internal chains; reserved E2E coverage applies only to user-facing journeys
68
+ - Distinguish user-facing journeys from service-internal chains; reserved fixture-e2e coverage applies only to user-facing journeys
64
69
 
65
70
  ### Reserved E2E Slot
66
71
 
67
- Reserve 1 E2E slot for the highest-value user-facing multi-step journey when such a journey exists, even if it does not satisfy `Value Score >= 50`.
72
+ Reserve 1 fixture-e2e slot for the highest-value user-facing multi-step journey when such a journey exists, even if it does not satisfy `Value Score >= 20`.
73
+
74
+ Reserve 1 service-integration-e2e slot only when that journey requires real cross-service verification that fixture-e2e cannot prove.
68
75
 
69
76
  ### E2E Absence Contract
70
77
 
71
78
  When no E2E test is generated, downstream artifacts must treat that as an explicit decision, not an error. Carry:
72
- - `generatedFiles.e2e: null`
73
- - `e2eAbsenceReason`: one of `no_user_facing_multi_step_journey`, `all_e2e_candidates_below_threshold`, `covered_by_existing_e2e`, `budget_not_justified`
79
+ - `generatedFiles.fixtureE2e: null`
80
+ - `generatedFiles.serviceE2e: null`
81
+ - `e2eAbsenceReason.fixtureE2e`: one of `no_user_facing_multi_step_journey`, `all_e2e_candidates_below_threshold`, `covered_by_existing_e2e`, `budget_not_justified`
82
+ - `e2eAbsenceReason.serviceE2e`: one of the fixture reasons plus `no_real_service_dependency`
74
83
 
75
84
  ### E2E Selection Decision Table
76
85
 
77
86
  | Condition | Result |
78
87
  |-----------|--------|
79
- | At least one user-facing multi-step journey exists | Reserve 1 E2E slot for the highest-value such journey |
80
- | Remaining E2E candidate has `Value Score >= 50` | Eligible for non-reserved E2E selection |
81
- | Remaining E2E candidate has `Value Score < 50` | Exclude and use `all_e2e_candidates_below_threshold` if no E2E remains |
82
- | Existing E2E already covers the same journey | Exclude and use `covered_by_existing_e2e` if no E2E remains |
88
+ | At least one user-facing multi-step journey exists | Reserve 1 fixture-e2e slot for the highest-value such journey |
89
+ | Journey correctness requires live cross-service behavior | Reserve or consider service-integration-e2e |
90
+ | Remaining fixture-e2e candidate has `Value Score >= 20` | Eligible for non-reserved fixture-e2e selection |
91
+ | Remaining service-integration-e2e candidate has `Value Score > 50` | Eligible for non-reserved service-integration-e2e selection |
92
+ | Existing E2E already covers the same journey | Exclude and use `covered_by_existing_e2e` if no lane remains |
83
93
 
84
94
  ## Test Skeleton Specification [MANDATORY]
85
95
 
@@ -90,8 +100,9 @@ Each test MUST include the following annotations:
90
100
  ```
91
101
  // AC: [Original acceptance criteria text]
92
102
  // Behavior: [Trigger] -> [Process] -> [Observable Result]
93
- // @category: core-functionality | integration | edge-case | e2e
94
- // @dependency: none | [component names] | full-system
103
+ // @category: core-functionality | integration | edge-case | fixture-e2e | service-integration-e2e
104
+ // @lane: integration | fixture-e2e | service-integration-e2e
105
+ // @dependency: none | [component names] | full-ui (mocked backend) | full-system
95
106
  // @real-dependency: [component names] (optional)
96
107
  // @complexity: low | medium | high
97
108
  // Value Score: [score]
@@ -133,7 +144,9 @@ These annotations allow work-planner to create prerequisite tasks before E2E exe
133
144
  ## Test File Naming Convention
134
145
 
135
146
  - Integration tests: `*.int.test.*` or `*.integration.test.*`
136
- - E2E tests: `*.e2e.test.*`
147
+ - fixture-e2e tests: `*.fixture.e2e.test.*`
148
+ - service-integration-e2e tests: `*.service.e2e.test.*`
149
+ - legacy E2E tests: `*.e2e.test.*`
137
150
 
138
151
  The test runner or framework in the project determines the appropriate file extension.
139
152
 
@@ -1,10 +1,12 @@
1
- # E2E Test Design with Playwright
1
+ # E2E Test Design
2
2
 
3
3
  ## When to Create E2E Tests
4
4
 
5
- E2E tests target **critical user journeys** that span multiple pages or require real browser interaction. Apply the parent skill rules exactly:
6
- - Reserve 1 E2E slot for the highest-value user-facing multi-step journey
7
- - Use `Value Score >= 50` for any additional non-reserved E2E candidate
5
+ E2E tests target critical user journeys that span multiple interaction boundaries or require browser-level verification. Apply the parent skill rules exactly:
6
+ - Reserve 1 fixture-e2e slot for the highest-value user-facing multi-step journey
7
+ - Use `Value Score >= 20` for additional fixture-e2e candidates
8
+ - Use service-integration-e2e only when correctness depends on real cross-service behavior
9
+ - Use `Value Score > 50` for additional service-integration-e2e candidates
8
10
 
9
11
  ### Candidate Sources
10
12
 
@@ -22,6 +24,7 @@ E2E tests target **critical user journeys** that span multiple pages or require
22
24
  - Flows requiring real browser APIs (navigation, cookies, localStorage)
23
25
  - Accessibility verification requiring actual DOM rendering
24
26
  - Responsive behavior across viewports
27
+ - Live-stack verification where DB persistence, queue/event delivery, transaction consistency, or external service payloads are the behavior under test
25
28
 
26
29
  **Exclude** (use integration tests instead):
27
30
  - Single-component state changes (use RTL)
@@ -47,20 +50,22 @@ Preconditions: [Auth state, data state]
47
50
  Verification Points:
48
51
  - [What to assert at each step]
49
52
  E2E Value Score: [calculated score]
53
+ Lane: fixture-e2e | service-integration-e2e
50
54
  ```
51
55
 
52
- ## Playwright Test Architecture
56
+ ## Browser Test Architecture
53
57
 
54
58
  ### Page Object Pattern
55
59
 
56
- Organize browser interactions through page objects for maintainability:
60
+ Organize browser interactions through page objects or the project's equivalent harness pattern for maintainability:
57
61
 
58
62
  ```
59
63
  tests/
60
64
  ├── e2e/
61
65
  │ ├── pages/ # Page objects
62
66
  │ ├── fixtures/ # Test fixtures and helpers
63
- └── *.e2e.test.ts # Test files
67
+ ├── *.fixture.e2e.test.ts
68
+ │ └── *.service.e2e.test.ts
64
69
  ```
65
70
 
66
71
  ### Test Isolation
@@ -83,7 +88,8 @@ When UI Spec defines responsive behavior, test critical breakpoints:
83
88
  ## Budget Enforcement
84
89
 
85
90
  Hard limits per feature (same as parent skill):
86
- - **E2E Tests**: MAX 1-2 tests
87
- - Generate the reserved user-journey E2E when eligible
88
- - Generate any additional E2E only when `Value Score >= 50`
91
+ - **fixture-e2e**: MAX 3 tests
92
+ - **service-integration-e2e**: MAX 1-2 tests
93
+ - Generate the reserved fixture-e2e user journey when eligible
94
+ - Generate service-integration-e2e only when live cross-service behavior must be verified
89
95
  - Prefer fewer, comprehensive journey tests over many granular tests
@@ -171,3 +171,10 @@ ENFORCEMENT: Commits without quality-fixer approval are invalid.
171
171
  - [ ] Tests reviewed via integration-test-reviewer (approved or fixes applied)
172
172
  - [ ] Quality check passed via quality-fixer
173
173
  - [ ] Test files committed
174
+ - [ ] Task files created by this recipe deleted from `docs/plans/tasks/`
175
+
176
+ ## Final Cleanup
177
+
178
+ Before the completion report, delete only the integration-test task files this recipe created for the current run. Their work is committed; `docs/plans/` is ephemeral working state.
179
+
180
+ If cleanup fails, report the failed path but do not invalidate completed test work.