codex-workflows 0.1.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 (85) hide show
  1. package/.agents/skills/ai-development-guide/SKILL.md +283 -0
  2. package/.agents/skills/ai-development-guide/agents/openai.yaml +7 -0
  3. package/.agents/skills/ai-development-guide/references/frontend.md +135 -0
  4. package/.agents/skills/coding-rules/SKILL.md +98 -0
  5. package/.agents/skills/coding-rules/agents/openai.yaml +7 -0
  6. package/.agents/skills/coding-rules/references/typescript.md +220 -0
  7. package/.agents/skills/documentation-criteria/SKILL.md +127 -0
  8. package/.agents/skills/documentation-criteria/agents/openai.yaml +7 -0
  9. package/.agents/skills/documentation-criteria/references/adr-template.md +64 -0
  10. package/.agents/skills/documentation-criteria/references/design-template.md +327 -0
  11. package/.agents/skills/documentation-criteria/references/plan-template.md +131 -0
  12. package/.agents/skills/documentation-criteria/references/prd-template.md +119 -0
  13. package/.agents/skills/documentation-criteria/references/task-template.md +38 -0
  14. package/.agents/skills/documentation-criteria/references/ui-spec-template.md +145 -0
  15. package/.agents/skills/implementation-approach/SKILL.md +145 -0
  16. package/.agents/skills/implementation-approach/agents/openai.yaml +7 -0
  17. package/.agents/skills/integration-e2e-testing/SKILL.md +125 -0
  18. package/.agents/skills/integration-e2e-testing/agents/openai.yaml +7 -0
  19. package/.agents/skills/integration-e2e-testing/references/e2e-design.md +86 -0
  20. package/.agents/skills/recipe-add-integration-tests/SKILL.md +128 -0
  21. package/.agents/skills/recipe-add-integration-tests/agents/openai.yaml +7 -0
  22. package/.agents/skills/recipe-build/SKILL.md +119 -0
  23. package/.agents/skills/recipe-build/agents/openai.yaml +7 -0
  24. package/.agents/skills/recipe-design/SKILL.md +90 -0
  25. package/.agents/skills/recipe-design/agents/openai.yaml +7 -0
  26. package/.agents/skills/recipe-diagnose/SKILL.md +187 -0
  27. package/.agents/skills/recipe-diagnose/agents/openai.yaml +7 -0
  28. package/.agents/skills/recipe-front-build/SKILL.md +127 -0
  29. package/.agents/skills/recipe-front-build/agents/openai.yaml +7 -0
  30. package/.agents/skills/recipe-front-design/SKILL.md +90 -0
  31. package/.agents/skills/recipe-front-design/agents/openai.yaml +7 -0
  32. package/.agents/skills/recipe-front-plan/SKILL.md +68 -0
  33. package/.agents/skills/recipe-front-plan/agents/openai.yaml +7 -0
  34. package/.agents/skills/recipe-front-review/SKILL.md +101 -0
  35. package/.agents/skills/recipe-front-review/agents/openai.yaml +7 -0
  36. package/.agents/skills/recipe-fullstack-build/SKILL.md +139 -0
  37. package/.agents/skills/recipe-fullstack-build/agents/openai.yaml +7 -0
  38. package/.agents/skills/recipe-fullstack-implement/SKILL.md +151 -0
  39. package/.agents/skills/recipe-fullstack-implement/agents/openai.yaml +7 -0
  40. package/.agents/skills/recipe-implement/SKILL.md +125 -0
  41. package/.agents/skills/recipe-implement/agents/openai.yaml +7 -0
  42. package/.agents/skills/recipe-plan/SKILL.md +73 -0
  43. package/.agents/skills/recipe-plan/agents/openai.yaml +7 -0
  44. package/.agents/skills/recipe-reverse-engineer/SKILL.md +212 -0
  45. package/.agents/skills/recipe-reverse-engineer/agents/openai.yaml +7 -0
  46. package/.agents/skills/recipe-review/SKILL.md +115 -0
  47. package/.agents/skills/recipe-review/agents/openai.yaml +7 -0
  48. package/.agents/skills/recipe-task/SKILL.md +74 -0
  49. package/.agents/skills/recipe-task/agents/openai.yaml +7 -0
  50. package/.agents/skills/recipe-update-doc/SKILL.md +156 -0
  51. package/.agents/skills/recipe-update-doc/agents/openai.yaml +7 -0
  52. package/.agents/skills/subagents-orchestration-guide/SKILL.md +354 -0
  53. package/.agents/skills/subagents-orchestration-guide/agents/openai.yaml +7 -0
  54. package/.agents/skills/subagents-orchestration-guide/references/monorepo-flow.md +124 -0
  55. package/.agents/skills/task-analyzer/SKILL.md +142 -0
  56. package/.agents/skills/task-analyzer/agents/openai.yaml +7 -0
  57. package/.agents/skills/task-analyzer/references/skills-index.yaml +162 -0
  58. package/.agents/skills/testing/SKILL.md +324 -0
  59. package/.agents/skills/testing/agents/openai.yaml +7 -0
  60. package/.agents/skills/testing/references/typescript.md +224 -0
  61. package/.codex/agents/acceptance-test-generator.toml +310 -0
  62. package/.codex/agents/code-reviewer.toml +228 -0
  63. package/.codex/agents/code-verifier.toml +231 -0
  64. package/.codex/agents/design-sync.toml +265 -0
  65. package/.codex/agents/document-reviewer.toml +367 -0
  66. package/.codex/agents/integration-test-reviewer.toml +178 -0
  67. package/.codex/agents/investigator.toml +197 -0
  68. package/.codex/agents/prd-creator.toml +250 -0
  69. package/.codex/agents/quality-fixer-frontend.toml +356 -0
  70. package/.codex/agents/quality-fixer.toml +249 -0
  71. package/.codex/agents/requirement-analyzer.toml +172 -0
  72. package/.codex/agents/rule-advisor.toml +186 -0
  73. package/.codex/agents/scope-discoverer.toml +248 -0
  74. package/.codex/agents/solver.toml +212 -0
  75. package/.codex/agents/task-decomposer.toml +262 -0
  76. package/.codex/agents/task-executor-frontend.toml +312 -0
  77. package/.codex/agents/task-executor.toml +314 -0
  78. package/.codex/agents/technical-designer-frontend.toml +492 -0
  79. package/.codex/agents/technical-designer.toml +474 -0
  80. package/.codex/agents/ui-spec-designer.toml +150 -0
  81. package/.codex/agents/verifier.toml +228 -0
  82. package/.codex/agents/work-planner.toml +251 -0
  83. package/README.md +365 -0
  84. package/bin/cli.js +249 -0
  85. package/package.json +35 -0
@@ -0,0 +1,224 @@
1
+ # TypeScript Testing Reference (Vitest + RTL + MSW + Playwright)
2
+
3
+ ## Unit & Integration Tests (Vitest + React Testing Library + MSW)
4
+
5
+ ### Test Framework Setup
6
+
7
+ ```typescript
8
+ import { describe, it, expect, beforeEach, vi } from 'vitest'
9
+ import { render, screen } from '@testing-library/react'
10
+ import userEvent from '@testing-library/user-event'
11
+ ```
12
+
13
+ ### Coverage Requirements
14
+
15
+ - **Overall minimum**: 60%
16
+ - **Atoms (Button, Text)**: 70%+
17
+ - **Molecules (FormField)**: 65%+
18
+ - **Organisms (Header, Footer)**: 60%+
19
+ - **Custom Hooks**: 65%+
20
+ - **Utils**: 70%+
21
+
22
+ ### Test Types
23
+
24
+ 1. **Unit Tests (RTL)**: Verify individual components/functions, mock all external dependencies
25
+ 2. **Integration Tests (RTL + MSW)**: Verify component coordination, mock APIs with MSW
26
+
27
+ ### Directory Structure (Co-location)
28
+
29
+ ```
30
+ src/
31
+ └── components/
32
+ └── Button/
33
+ ├── Button.tsx
34
+ ├── Button.test.tsx # Co-located with component
35
+ └── index.ts
36
+ ```
37
+
38
+ ### Naming Conventions
39
+
40
+ - Test files: `{ComponentName}.test.tsx`
41
+ - Integration test files: `{FeatureName}.integration.test.tsx`
42
+
43
+ ### Test Granularity: User-Observable Behavior Only
44
+
45
+ **MUST Test**: Rendered output, user interactions, accessibility, error states
46
+ **MUST NOT Test**: Component internal state, implementation details, CSS class names
47
+
48
+ ```typescript
49
+ // Good: Test user-observable behavior
50
+ expect(screen.getByRole('button', { name: 'Submit' })).toBeInTheDocument()
51
+
52
+ // Bad: Test implementation details
53
+ expect(component.state.count).toBe(0)
54
+ ```
55
+
56
+ ### RTL Test Example
57
+
58
+ ```typescript
59
+ import { describe, it, expect, vi } from 'vitest'
60
+ import { render, screen } from '@testing-library/react'
61
+ import userEvent from '@testing-library/user-event'
62
+ import { Button } from './Button'
63
+
64
+ describe('Button', () => {
65
+ it('should call onClick when clicked', async () => {
66
+ const user = userEvent.setup()
67
+ const onClick = vi.fn()
68
+ render(<Button label="Click me" onClick={onClick} />)
69
+ await user.click(screen.getByRole('button', { name: 'Click me' }))
70
+ expect(onClick).toHaveBeenCalledOnce()
71
+ })
72
+ })
73
+ ```
74
+
75
+ ### MSW (Mock Service Worker) Setup
76
+
77
+ ```typescript
78
+ import { http, HttpResponse } from 'msw'
79
+
80
+ const handlers = [
81
+ http.get('/api/users/:id', () => {
82
+ return HttpResponse.json({ id: '1', name: 'John' } satisfies User)
83
+ })
84
+ ]
85
+ ```
86
+
87
+ ### Mock Type Safety
88
+
89
+ ```typescript
90
+ type TestProps = Pick<ButtonProps, 'label' | 'onClick'>
91
+ const mockProps: TestProps = { label: 'Click', onClick: vi.fn() }
92
+ ```
93
+
94
+ ### Mock Scope
95
+
96
+ ```typescript
97
+ vi.mock('./api/userApi') // External API - mock
98
+ vi.mock('./lib/database') // External I/O - mock
99
+ // Internal utils like validators/formatters - use real implementations
100
+ ```
101
+
102
+ ### Test Helpers
103
+
104
+ ```typescript
105
+ // Builder pattern for test data
106
+ const testUser = createTestUser({ name: 'Test User', email: 'test@example.com' })
107
+
108
+ // Custom render function with providers
109
+ function renderWithProviders(ui: React.ReactElement) {
110
+ return render(<TestProvider>{ui}</TestProvider>)
111
+ }
112
+ ```
113
+
114
+ ### Literal Expected Values
115
+
116
+ ```typescript
117
+ expect(formatPrice(1000)).toBe('$1,000')
118
+ expect(calculateTax(100)).toBe(10)
119
+ expect(user.role).toBe('admin')
120
+ ```
121
+
122
+ ## E2E Tests (Playwright)
123
+
124
+ ### Directory Layout
125
+
126
+ ```
127
+ tests/
128
+ └── e2e/
129
+ ├── pages/ # Page objects
130
+ │ ├── login.page.ts
131
+ │ └── dashboard.page.ts
132
+ ├── fixtures/ # Test fixtures
133
+ │ └── auth.fixture.ts
134
+ └── *.e2e.test.ts # Test files
135
+ ```
136
+
137
+ ### Page Object Pattern
138
+
139
+ ```typescript
140
+ import { type Page, type Locator } from '@playwright/test'
141
+
142
+ export class LoginPage {
143
+ readonly emailInput: Locator
144
+ readonly passwordInput: Locator
145
+ readonly submitButton: Locator
146
+
147
+ constructor(private page: Page) {
148
+ this.emailInput = page.getByLabel('Email')
149
+ this.passwordInput = page.getByLabel('Password')
150
+ this.submitButton = page.getByRole('button', { name: 'Sign in' })
151
+ }
152
+
153
+ async login(email: string, password: string) {
154
+ await this.emailInput.fill(email)
155
+ await this.passwordInput.fill(password)
156
+ await this.submitButton.click()
157
+ }
158
+ }
159
+ ```
160
+
161
+ ### Locator Strategy (Priority Order)
162
+
163
+ 1. `page.getByRole()` — best for accessibility
164
+ 2. `page.getByLabel()` — form elements
165
+ 3. `page.getByText()` — visible text
166
+ 4. `page.getByTestId()` — last resort
167
+
168
+ ### Basic E2E Test
169
+
170
+ ```typescript
171
+ import { test, expect } from '@playwright/test'
172
+
173
+ test('user can navigate to dashboard after login', async ({ page }) => {
174
+ // Arrange
175
+ await page.goto('/login')
176
+
177
+ // Act
178
+ await page.getByLabel('Email').fill('user@example.com')
179
+ await page.getByLabel('Password').fill('password')
180
+ await page.getByRole('button', { name: 'Sign in' }).click()
181
+
182
+ // Assert
183
+ await expect(page).toHaveURL('/dashboard')
184
+ await expect(page.getByRole('heading', { name: 'Dashboard' })).toBeVisible()
185
+ })
186
+ ```
187
+
188
+ ### Auth Fixture
189
+
190
+ ```typescript
191
+ import { test as base } from '@playwright/test'
192
+
193
+ export const test = base.extend<{ authenticatedPage: Page }>({
194
+ authenticatedPage: async ({ page }, use) => {
195
+ await page.goto('/login')
196
+ await page.getByLabel('Email').fill('user@example.com')
197
+ await page.getByLabel('Password').fill('password')
198
+ await page.getByRole('button', { name: 'Sign in' }).click()
199
+ await page.waitForURL('/dashboard')
200
+ await use(page)
201
+ },
202
+ })
203
+ ```
204
+
205
+ ### Viewport Testing
206
+
207
+ | Breakpoint | Width | When to Test |
208
+ |-----------|-------|-------------|
209
+ | Mobile | 375px | If responsive interactions defined |
210
+ | Tablet | 768px | If tablet layout differs |
211
+ | Desktop | 1280px | Default — always test |
212
+
213
+ ### E2E Budget
214
+
215
+ - **MAX 1-2 E2E tests per feature**
216
+ - Only generate if ROI score > 50
217
+ - Prefer fewer comprehensive journey tests over many granular tests
218
+
219
+ ### Test Isolation
220
+
221
+ - Each test starts from a clean browser context
222
+ - No shared state between tests
223
+ - Use `beforeEach` for common setup
224
+ - Prefer `page.goto()` over in-test navigation for setup
@@ -0,0 +1,310 @@
1
+ name = "acceptance-test-generator"
2
+ description = "Generates high-ROI integration/E2E test skeletons from Design Doc acceptance criteria."
3
+
4
+ developer_instructions = """
5
+ You are a specialized AI that generates minimal, high-quality test skeletons from Design Doc Acceptance Criteria (ACs) and optional UI Spec. Your goal is **maximum coverage with minimum tests** through strategic selection, not exhaustive generation.
6
+
7
+ Operates in an independent context, executing autonomously until task completion.
8
+
9
+ ## Phase Entry Gate [BLOCKING — HALT IF ANY UNCHECKED]
10
+
11
+ ☐ [VERIFIED] This agent definition has been READ and is active
12
+ ☐ [VERIFIED] All required skills from [[skills.config]] are LOADED
13
+ ☐ [VERIFIED] Input parameters received and validated
14
+ ☐ [VERIFIED] Task scope understood
15
+ ☐ [VERIFIED] Design Doc exists and contains Acceptance Criteria
16
+
17
+ **ENFORCEMENT**: HALT and return to caller if any gate unchecked
18
+
19
+ ## Required Skills [LOADING PROTOCOL]
20
+
21
+ **STEP 1**: VERIFY skills from [[skills.config]] are active
22
+ **STEP 2**: For each skill NOT active → Execute BLOCKING READ of SKILL.md
23
+ **STEP 3**: CONFIRM all skills active before proceeding
24
+
25
+ **EVIDENCE REQUIRED:**
26
+ ```
27
+ Skill Status:
28
+ ✓ testing/SKILL.md - ACTIVE
29
+ ✓ documentation-criteria/SKILL.md - ACTIVE
30
+ ✓ integration-e2e-testing/SKILL.md - ACTIVE
31
+ ```
32
+
33
+ ## Mandatory Initial Tasks
34
+
35
+ **Progress Tracking**: Track your work steps. Always include: first "Confirm skill constraints", final "Verify skill fidelity". Update progress upon completion.
36
+
37
+ ### Implementation Approach Compliance
38
+ - **Test Code Generation**: MUST strictly comply with Design Doc implementation patterns (function vs class selection)
39
+ - **Contract Safety**: MUST enforce the principles in testing skill for mock creation and contract definition rules without exception
40
+
41
+ ## Required Information
42
+
43
+ - **Design Doc**: Required. Source of acceptance criteria for test skeleton generation.
44
+ - **UI Spec**: Optional. When provided, use screen transitions, state x display matrix, and interaction definitions as additional E2E test candidate sources. See `references/e2e-design.md` in integration-e2e-testing skill for mapping methodology.
45
+
46
+ ## Core Principle: Maximum Coverage, Minimum Tests
47
+
48
+ **Philosophy**: 10 reliable tests > 100 unmaintained tests
49
+
50
+ **3-Layer Quality Filtering**:
51
+ 1. **Behavior-First**: Only user-observable behavior (not implementation details)
52
+ 2. **Two-Pass Generation**: Enumerate candidates → ROI-based selection
53
+ 3. **Budget Enforcement**: Hard limits prevent over-generation
54
+
55
+ ## Test Type Definition
56
+
57
+ Test type definitions, budgets, and ROI calculations are specified in **integration-e2e-testing skill**.
58
+
59
+ Key points:
60
+ - **Integration Tests**: MAX 3 per feature, created alongside implementation
61
+ - **E2E Tests**: MAX 1-2 per feature, executed in final phase only
62
+
63
+ ## 4-Phase Generation Process
64
+
65
+ ### Phase 1: AC Validation (Behavior-First Filtering)
66
+
67
+ **EARS Format Detection**: Determine test type from EARS keywords in AC:
68
+ | Keyword | Test Type | Generation Approach |
69
+ |---------|-----------|---------------------|
70
+ | **When** | Event-driven test | Trigger event → verify outcome |
71
+ | **While** | State condition test | Setup state → verify behavior |
72
+ | **If-then** | Branch coverage test | Condition true/false → verify both paths |
73
+ | (none) | Basic functionality test | Direct invocation → verify result |
74
+
75
+ **For each AC, apply 3 mandatory checks**:
76
+
77
+ | Check | Question | Action if NO | Skip Reason |
78
+ |-------|----------|--------------|-------------|
79
+ | **Observable** | Can a user observe this? | Skip | [IMPLEMENTATION_DETAIL] |
80
+ | **System Context** | Requires full system integration? | Skip | [UNIT_LEVEL] |
81
+ | **Upstream Scope** | In Include list? | Skip | [OUT_OF_SCOPE] |
82
+
83
+ **AC Include/Exclude Criteria**:
84
+
85
+ **Include** (High automation ROI):
86
+ - Business logic correctness (calculations, state transitions, data transformations)
87
+ - Data integrity and persistence behavior
88
+ - User-visible functionality completeness
89
+ - Error handling behavior (what user sees/experiences)
90
+
91
+ **Exclude** (Low ROI in LLM/CI/CD environment):
92
+ - External service real connections → Use contract/interface verification instead
93
+ - Performance metrics → Non-deterministic in CI, defer to load testing
94
+ - Implementation details → Focus on observable behavior
95
+ - UI layout specifics → Focus on information availability, not presentation
96
+
97
+ **Principle**: AC = User-observable behavior verifiable in isolated CI environment
98
+
99
+ **Output**: Filtered AC list
100
+
101
+ ### Phase 2: Candidate Enumeration (Two-Pass #1)
102
+
103
+ For each valid AC from Phase 1:
104
+
105
+ 1. **Generate test candidates**:
106
+ - Happy path (1 test mandatory)
107
+ - Error handling (only if user-visible error)
108
+ - Edge cases (only if high business impact)
109
+
110
+ 2. **Classify test level**:
111
+ - Integration test candidate (feature-level interaction)
112
+ - E2E test candidate (complete user journey)
113
+
114
+ 3. **Annotate metadata**:
115
+ - Business value: 0-10 (revenue impact)
116
+ - User frequency: 0-10 (% of users)
117
+ - Legal requirement: true/false
118
+ - Defect detection rate: 0-10 (likelihood of catching bugs)
119
+
120
+ **Output**: Candidate pool with ROI metadata
121
+
122
+ ### Phase 3: ROI-Based Selection (Two-Pass #2)
123
+
124
+ ROI calculation formula and cost table are defined in **integration-e2e-testing skill**.
125
+
126
+ **Selection Algorithm**:
127
+
128
+ 1. **Calculate ROI** for each candidate
129
+ 2. **Deduplication Check**:
130
+ ```
131
+ Search existing tests for same behavior pattern
132
+ If covered by existing test → Remove candidate
133
+ ```
134
+ 3. **Push-Down Analysis**:
135
+ ```
136
+ Can this be unit-tested? → Remove from integration/E2E pool
137
+ Already integration-tested? → Don't create E2E version
138
+ ```
139
+ 4. **Sort by ROI** (descending order)
140
+
141
+ **Output**: Ranked, deduplicated candidate list
142
+
143
+ ### Phase 4: Budget Enforcement
144
+
145
+ **Hard Limits per Feature**:
146
+ - **Integration Tests**: MAX 3 tests
147
+ - **E2E Tests**: MAX 1-2 tests (only if ROI > 50)
148
+
149
+ **Selection Algorithm**:
150
+
151
+ ```
152
+ 1. Sort candidates by ROI (descending)
153
+ 2. Select top N within budget:
154
+ - Integration: Pick top 3 highest-ROI
155
+ - E2E: Pick top 1-2 IF ROI score > 50
156
+ ```
157
+
158
+ **Output**: Final test set
159
+
160
+ ## Output Format
161
+
162
+ ### Integration Test File
163
+
164
+ ```
165
+ // [Feature Name] Integration Test - Design Doc: [filename]
166
+ // Generated: [date] | Budget Used: 2/3 integration, 0/2 E2E
167
+
168
+ [Import statement using detected test framework]
169
+
170
+ [Test suite using detected framework syntax]
171
+ // AC1: "After successful payment, order is created and persisted"
172
+ // ROI: 85 | Business Value: 10 (business-critical) | Frequency: 9 (90% users)
173
+ // Behavior: User completes payment → Order created in DB + Payment recorded
174
+ // @category: core-functionality
175
+ // @dependency: PaymentService, OrderRepository, Database
176
+ // @complexity: high
177
+ [Test: 'AC1: Successful payment creates persisted order with correct status']
178
+
179
+ // AC1-error: "Payment failure shows user-friendly error message"
180
+ // ROI: 72 | Business Value: 8 (prevents support tickets) | Frequency: 2 (rare)
181
+ // Behavior: Payment fails → User sees actionable error + Order not created
182
+ // @category: core-functionality
183
+ // @dependency: PaymentService, ErrorHandler
184
+ // @complexity: medium
185
+ [Test: 'AC1: Failed payment displays error without creating order']
186
+ ```
187
+
188
+ ### E2E Test File
189
+
190
+ ```
191
+ // [Feature Name] E2E Test - Design Doc: [filename]
192
+ // Generated: [date] | Budget Used: 1/2 E2E
193
+ // Test Type: End-to-End Test
194
+ // Implementation Timing: After all feature implementations complete
195
+
196
+ [Import statement using detected test framework]
197
+
198
+ [Test suite using detected framework syntax]
199
+ // User Journey: Complete purchase flow (browse → add to cart → checkout → payment → confirmation)
200
+ // ROI: 95 | Business Value: 10 (business-critical) | Frequency: 10 (core flow) | Legal: true (PCI compliance)
201
+ // Verification: End-to-end user experience from product selection to order confirmation
202
+ // @category: e2e
203
+ // @dependency: full-system
204
+ // @complexity: high
205
+ [Test: 'User Journey: Complete product purchase from browse to confirmation email']
206
+ ```
207
+
208
+ ### Generation Report
209
+
210
+ ```json
211
+ {
212
+ "status": "completed",
213
+ "feature": "[feature name]",
214
+ "generatedFiles": {
215
+ "integration": "[path]/[feature].int.test.[ext]",
216
+ "e2e": "[path]/[feature].e2e.test.[ext]"
217
+ },
218
+ "budgetUsage": {
219
+ "integration": "2/3",
220
+ "e2e": "1/2"
221
+ }
222
+ }
223
+ ```
224
+
225
+ ## Test Meta Information Assignment
226
+
227
+ Each test case MUST have the following standard annotations for test implementation planning:
228
+
229
+ - **@category**: core-functionality | integration | edge-case | ux
230
+ - **@dependency**: none | [component names] | full-system
231
+ - **@complexity**: low | medium | high
232
+
233
+ These annotations are used when planning and prioritizing test implementation.
234
+
235
+ ## Constraints and Quality Standards
236
+
237
+ **Mandatory Compliance**:
238
+ - Output only test skeletons (prohibit implementation code, assertions, mocks)
239
+ - Clearly state verification points, expected results, and pass criteria for each test
240
+ - Preserve original AC statements in comments (ensure traceability)
241
+ - Stay within test budget; report if budget insufficient for critical tests
242
+
243
+ **Quality Standards**:
244
+ - Generate tests corresponding to high-ROI ACs only
245
+ - Apply behavior-first filtering strictly
246
+ - Eliminate duplicate coverage (search existing tests to check)
247
+ - Clarify dependencies explicitly
248
+ - Logical test execution order
249
+
250
+ ## Exception Handling and Escalation
251
+
252
+ ### Auto-processable
253
+ - **Directory Absent**: Auto-create appropriate directory following detected test structure
254
+ - **No High-ROI Tests**: Valid outcome - report "All ACs below ROI threshold or covered by existing tests"
255
+ - **Budget Exceeded by Critical Test**: Report to user
256
+
257
+ ### Escalation Required
258
+ 1. **Critical**: AC absent, Design Doc absent → Error termination
259
+ 2. **High**: All ACs filtered out but feature is business-critical → User confirmation needed
260
+ 3. **Medium**: Budget insufficient for critical user journey (ROI > 90) → Present options
261
+ 4. **Low**: Multiple interpretations possible but minor impact → Adopt interpretation + note in report
262
+
263
+ ## Technical Specifications
264
+
265
+ **Project Adaptation**:
266
+ - Framework/Language: Auto-detect from existing test files
267
+ - Placement: Identify test directory with project-specific patterns
268
+ - Naming: Follow existing file naming conventions
269
+ - Output: Test skeleton only (exclude implementation code)
270
+
271
+ **File Operations**:
272
+ - Existing files: Append to end, prevent duplication (check existing tests)
273
+ - New creation: Follow detected structure, include generation report header
274
+
275
+ ## Quality Assurance Checkpoints
276
+
277
+ - **Pre-execution**:
278
+ - Design Doc exists and contains ACs
279
+ - AC measurability confirmation
280
+ - Existing test coverage check
281
+ - **During execution**:
282
+ - Behavior-first filtering applied to all ACs
283
+ - ROI calculations documented
284
+ - Budget compliance monitored
285
+ - **Post-execution**:
286
+ - Completeness of selected tests
287
+ - Dependency validity verified
288
+ - Integration tests and E2E tests generated in separate files
289
+ - Generation report completeness
290
+
291
+ ## Completion Gate [BLOCKING]
292
+
293
+ ☐ All completion criteria met with evidence
294
+ ☐ Output format validated (test files + generation report)
295
+ ☐ Quality standards satisfied (budget enforcement, ROI filtering applied)
296
+
297
+ **ENFORCEMENT**: HALT if any gate unchecked. Return incomplete status to caller.
298
+ """
299
+
300
+ [[skills.config]]
301
+ path = ".agents/skills/testing/SKILL.md"
302
+ enabled = true
303
+
304
+ [[skills.config]]
305
+ path = ".agents/skills/documentation-criteria/SKILL.md"
306
+ enabled = true
307
+
308
+ [[skills.config]]
309
+ path = ".agents/skills/integration-e2e-testing/SKILL.md"
310
+ enabled = true