qaa-agent 1.0.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 (56) hide show
  1. package/.claude/commands/create-test.md +40 -0
  2. package/.claude/commands/qa-analyze.md +60 -0
  3. package/.claude/commands/qa-audit.md +37 -0
  4. package/.claude/commands/qa-blueprint.md +54 -0
  5. package/.claude/commands/qa-fix.md +36 -0
  6. package/.claude/commands/qa-from-ticket.md +88 -0
  7. package/.claude/commands/qa-gap.md +54 -0
  8. package/.claude/commands/qa-pom.md +36 -0
  9. package/.claude/commands/qa-pyramid.md +37 -0
  10. package/.claude/commands/qa-report.md +38 -0
  11. package/.claude/commands/qa-start.md +33 -0
  12. package/.claude/commands/qa-testid.md +54 -0
  13. package/.claude/commands/qa-validate.md +54 -0
  14. package/.claude/commands/update-test.md +58 -0
  15. package/.claude/settings.json +19 -0
  16. package/.claude/skills/qa-bug-detective/SKILL.md +122 -0
  17. package/.claude/skills/qa-repo-analyzer/SKILL.md +88 -0
  18. package/.claude/skills/qa-self-validator/SKILL.md +109 -0
  19. package/.claude/skills/qa-template-engine/SKILL.md +113 -0
  20. package/.claude/skills/qa-testid-injector/SKILL.md +93 -0
  21. package/.claude/skills/qa-workflow-documenter/SKILL.md +87 -0
  22. package/CLAUDE.md +543 -0
  23. package/README.md +418 -0
  24. package/agents/qa-pipeline-orchestrator.md +1217 -0
  25. package/agents/qaa-analyzer.md +508 -0
  26. package/agents/qaa-bug-detective.md +444 -0
  27. package/agents/qaa-executor.md +618 -0
  28. package/agents/qaa-planner.md +374 -0
  29. package/agents/qaa-scanner.md +422 -0
  30. package/agents/qaa-testid-injector.md +583 -0
  31. package/agents/qaa-validator.md +450 -0
  32. package/bin/install.cjs +176 -0
  33. package/bin/lib/commands.cjs +709 -0
  34. package/bin/lib/config.cjs +307 -0
  35. package/bin/lib/core.cjs +497 -0
  36. package/bin/lib/frontmatter.cjs +299 -0
  37. package/bin/lib/init.cjs +989 -0
  38. package/bin/lib/milestone.cjs +241 -0
  39. package/bin/lib/model-profiles.cjs +60 -0
  40. package/bin/lib/phase.cjs +911 -0
  41. package/bin/lib/roadmap.cjs +306 -0
  42. package/bin/lib/state.cjs +748 -0
  43. package/bin/lib/template.cjs +222 -0
  44. package/bin/lib/verify.cjs +842 -0
  45. package/bin/qaa-tools.cjs +607 -0
  46. package/package.json +34 -0
  47. package/templates/failure-classification.md +391 -0
  48. package/templates/gap-analysis.md +409 -0
  49. package/templates/pr-template.md +48 -0
  50. package/templates/qa-analysis.md +381 -0
  51. package/templates/qa-audit-report.md +465 -0
  52. package/templates/qa-repo-blueprint.md +636 -0
  53. package/templates/scan-manifest.md +312 -0
  54. package/templates/test-inventory.md +582 -0
  55. package/templates/testid-audit-report.md +354 -0
  56. package/templates/validation-report.md +243 -0
@@ -0,0 +1,312 @@
1
+ ---
2
+ template_name: scan-manifest
3
+ version: "1.0"
4
+ artifact_type: scan
5
+ produces: SCAN_MANIFEST.md
6
+ producer_agent: qa-scanner
7
+ consumer_agents:
8
+ - qa-analyzer
9
+ - qa-testid-injector
10
+ required_sections:
11
+ - project-detection
12
+ - file-list
13
+ - summary-statistics
14
+ - testable-surfaces
15
+ - decision-gate
16
+ example_domain: shopflow
17
+ ---
18
+
19
+ # SCAN_MANIFEST.md Template
20
+
21
+ **Purpose:** Comprehensive inventory of all source files relevant to testing, with framework detection, interaction density classification, and testable surface categorization. This is the first artifact produced in the QA pipeline and feeds all downstream agents.
22
+
23
+ **Producer:** `qa-scanner` agent
24
+ **Consumers:** `qa-analyzer` (reads file list and surfaces to prioritize analysis), `qa-testid-injector` (reads component files to audit for missing `data-testid` attributes)
25
+
26
+ ---
27
+
28
+ ## Required Sections
29
+
30
+ ### Section 1: Project Detection
31
+
32
+ **Description:** Framework, language, runtime, and tooling detected from package files, config files, and file extension analysis. This section tells downstream agents what technology stack they are dealing with.
33
+
34
+ **Fields:**
35
+
36
+ | Field | Type | Required | Description |
37
+ |-------|------|----------|-------------|
38
+ | framework | string | YES | Primary framework detected (e.g., React, Vue, Angular, Express, NestJS, Django) |
39
+ | language | string | YES | Primary language (e.g., TypeScript, JavaScript, Python, C#) |
40
+ | runtime | string | YES | Runtime environment (e.g., Node.js 20, Python 3.11, .NET 8) |
41
+ | component_pattern | string | YES | File extension pattern for components (e.g., `*.tsx`, `*.vue`, `*.component.ts`) |
42
+ | package_manager | string | YES | Package manager detected (e.g., npm, yarn, pnpm, pip, dotnet) |
43
+ | build_tool | string | NO | Build tool if detected (e.g., Vite, Webpack, esbuild, Turbopack) |
44
+ | test_framework_existing | string | NO | Existing test framework if detected (e.g., Jest, Vitest, Playwright, Cypress) |
45
+ | database | string | NO | Database technology if detected from ORM config or connection strings |
46
+ | css_approach | string | NO | CSS strategy if detected (e.g., Tailwind, CSS Modules, styled-components) |
47
+
48
+ **Detection sources:** `package.json`, `requirements.txt`, `*.csproj`, config files (`tsconfig.json`, `vite.config.ts`, `next.config.js`), file extension frequency analysis.
49
+
50
+ ---
51
+
52
+ ### Section 2: File List
53
+
54
+ **Description:** All source files relevant to testing, ordered by interaction density priority. Each file is classified by type and assigned a priority based on how much user-facing or business-critical behavior it contains.
55
+
56
+ **Fields:**
57
+
58
+ | Field | Type | Required | Description |
59
+ |-------|------|----------|-------------|
60
+ | file_path | string | YES | Relative path from project root (e.g., `src/services/orderService.ts`) |
61
+ | component_name | string | YES | Human-readable name extracted from filename or default export |
62
+ | type | enum | YES | One of: `page`, `component`, `service`, `utility`, `model`, `middleware`, `route`, `controller`, `config` |
63
+ | interaction_density | enum | YES | `HIGH` (forms, checkout, auth), `MEDIUM` (display, navigation), `LOW` (footer, static, utility) |
64
+ | priority_order | number | YES | Integer rank (1 = highest priority). Ordered by: interaction density, then business criticality |
65
+ | line_count | number | NO | Approximate line count for complexity estimation |
66
+ | exports_count | number | NO | Number of exported functions/classes for test target estimation |
67
+
68
+ **Inclusion rules:**
69
+ - Include: All source files that could have tests written against them
70
+ - Exclude: `node_modules/`, `dist/`, `build/`, `.next/`, `coverage/`, test files (`*.test.*`, `*.spec.*`, `*.stories.*`), config-only files, lockfiles, static assets
71
+
72
+ **Priority ordering rules:**
73
+ - Forms and interactive components with user input: HIGH
74
+ - Pages and views with conditional rendering: MEDIUM to HIGH
75
+ - Services with business logic: HIGH
76
+ - API route handlers and controllers: MEDIUM to HIGH
77
+ - Static display components: LOW to MEDIUM
78
+ - Pure utility functions: LOW to MEDIUM
79
+ - Models and type definitions: LOW
80
+
81
+ ---
82
+
83
+ ### Section 3: Summary Statistics
84
+
85
+ **Description:** Aggregate counts providing a quick overview of the scanned codebase. Used by downstream agents to estimate scope and allocate testing effort.
86
+
87
+ **Fields:**
88
+
89
+ | Field | Type | Required | Description |
90
+ |-------|------|----------|-------------|
91
+ | total_files | number | YES | Total files in the file list |
92
+ | files_by_type | object | YES | Count per type (e.g., `{page: 4, component: 8, service: 5, ...}`) |
93
+ | files_by_priority | object | YES | Count per interaction density (e.g., `{HIGH: 7, MEDIUM: 9, LOW: 6}`) |
94
+ | total_line_count | number | NO | Sum of all file line counts |
95
+ | frameworks_detected | list | NO | All frameworks/libraries detected (e.g., `[React, Express, Prisma]`) |
96
+
97
+ ---
98
+
99
+ ### Section 4: Testable Surfaces
100
+
101
+ **Description:** Categorized groupings of testable entry points. Each category helps downstream agents focus on the right testing strategy (unit, integration, API, or E2E).
102
+
103
+ **Categories:**
104
+
105
+ 1. **Pages/Views** -- User-facing routes or screens. Each entry: route path, component file, description.
106
+ 2. **Forms** -- Data input surfaces requiring validation testing. Each entry: form name, component file, fields list, submission endpoint.
107
+ 3. **API Endpoints** -- HTTP routes that accept requests. Each entry: method, path, controller/handler file, auth required (yes/no).
108
+ 4. **Business Logic Modules** -- Pure functions and services containing domain rules. Each entry: module file, key functions, why testable (state transitions, calculations, validations).
109
+ 5. **Middleware** -- Cross-cutting concerns applied to requests. Each entry: middleware file, what it does, routes it applies to.
110
+
111
+ ---
112
+
113
+ ### Section 5: Decision Gate
114
+
115
+ **Description:** Go/no-go decision based on scan results. This gate prevents downstream agents from running on repos that have no testable content.
116
+
117
+ **Rules:**
118
+ - If total files = 0: **STOP** with reason "No source files found"
119
+ - If 0 component files AND project type suggests frontend: **STOP** with reason "Expected frontend components but found none -- verify project structure"
120
+ - If backend-only detected (no component files, only services/routes): **PROCEED** with note "Skip testid-inject, proceed to analyze"
121
+ - If mixed frontend + backend: **PROCEED** with note "Full pipeline -- include testid-inject for frontend components"
122
+ - If only config/utility files found: **STOP** with reason "No testable surfaces detected -- only configuration files present"
123
+
124
+ **Output format:**
125
+
126
+ | Field | Type | Required | Description |
127
+ |-------|------|----------|-------------|
128
+ | decision | enum | YES | `PROCEED` or `STOP` |
129
+ | reason | string | YES | Why this decision was made |
130
+ | pipeline_note | string | NO | Guidance for downstream agents (e.g., "skip testid-inject") |
131
+ | confidence | enum | YES | `HIGH` (clear detection), `MEDIUM` (some ambiguity), `LOW` (uncertain stack) |
132
+
133
+ ---
134
+
135
+ ## Worked Example (ShopFlow E-Commerce API)
136
+
137
+ > The following is a complete, filled SCAN_MANIFEST.md for a hypothetical ShopFlow e-commerce application. This example demonstrates the expected depth, format, and quality level.
138
+
139
+ ### Project Detection
140
+
141
+ | Property | Value |
142
+ |----------|-------|
143
+ | Framework | React 18.2 + Express 4.18 |
144
+ | Language | TypeScript 5.3 |
145
+ | Runtime | Node.js 20 LTS |
146
+ | Component Pattern | `*.tsx` (frontend), `*.ts` (backend) |
147
+ | Package Manager | npm 10.x |
148
+ | Build Tool | Vite 5.0 |
149
+ | Test Framework (existing) | None detected |
150
+ | Database | PostgreSQL 15 via Prisma 5.7 |
151
+ | CSS Approach | Tailwind CSS 3.4 |
152
+
153
+ **Detection sources:** `package.json` (dependencies: react, express, prisma, stripe), `tsconfig.json` (strict mode, paths configured), `vite.config.ts` (React plugin), `prisma/schema.prisma` (PostgreSQL datasource).
154
+
155
+ ---
156
+
157
+ ### File List
158
+
159
+ | # | File Path | Component Name | Type | Interaction Density | Priority |
160
+ |---|-----------|---------------|------|---------------------|----------|
161
+ | 1 | src/components/checkout/CheckoutForm.tsx | CheckoutForm | component | HIGH | 1 |
162
+ | 2 | src/components/auth/LoginForm.tsx | LoginForm | component | HIGH | 2 |
163
+ | 3 | src/components/auth/RegisterForm.tsx | RegisterForm | component | HIGH | 3 |
164
+ | 4 | src/services/orderService.ts | OrderService | service | HIGH | 4 |
165
+ | 5 | src/services/paymentService.ts | PaymentService | service | HIGH | 5 |
166
+ | 6 | src/utils/priceCalculator.ts | PriceCalculator | utility | HIGH | 6 |
167
+ | 7 | src/controllers/orderController.ts | OrderController | controller | HIGH | 7 |
168
+ | 8 | src/controllers/paymentController.ts | PaymentController | controller | HIGH | 8 |
169
+ | 9 | src/services/authService.ts | AuthService | service | HIGH | 9 |
170
+ | 10 | src/controllers/authController.ts | AuthController | controller | MEDIUM | 10 |
171
+ | 11 | src/controllers/productController.ts | ProductController | controller | MEDIUM | 11 |
172
+ | 12 | src/services/inventoryService.ts | InventoryService | service | MEDIUM | 12 |
173
+ | 13 | src/middleware/authMiddleware.ts | AuthMiddleware | middleware | MEDIUM | 13 |
174
+ | 14 | src/components/products/ProductCard.tsx | ProductCard | component | MEDIUM | 14 |
175
+ | 15 | src/components/products/ProductList.tsx | ProductList | component | MEDIUM | 15 |
176
+ | 16 | src/pages/HomePage.tsx | HomePage | page | MEDIUM | 16 |
177
+ | 17 | src/pages/ProductDetailPage.tsx | ProductDetailPage | page | MEDIUM | 17 |
178
+ | 18 | src/pages/CartPage.tsx | CartPage | page | MEDIUM | 18 |
179
+ | 19 | src/pages/OrderHistoryPage.tsx | OrderHistoryPage | page | MEDIUM | 19 |
180
+ | 20 | src/utils/validators.ts | Validators | utility | LOW | 20 |
181
+ | 21 | src/middleware/rateLimiter.ts | RateLimiter | middleware | LOW | 21 |
182
+ | 22 | src/middleware/errorHandler.ts | ErrorHandler | middleware | LOW | 22 |
183
+ | 23 | src/components/layout/Navbar.tsx | Navbar | component | LOW | 23 |
184
+ | 24 | src/components/layout/Footer.tsx | Footer | component | LOW | 24 |
185
+ | 25 | src/models/Product.ts | Product | model | LOW | 25 |
186
+ | 26 | src/models/Order.ts | Order | model | LOW | 26 |
187
+ | 27 | src/models/User.ts | User | model | LOW | 27 |
188
+ | 28 | src/models/Payment.ts | Payment | model | LOW | 28 |
189
+ | 29 | src/routes/api/v1/auth.ts | AuthRoutes | route | LOW | 29 |
190
+ | 30 | src/routes/api/v1/products.ts | ProductRoutes | route | LOW | 30 |
191
+ | 31 | src/routes/api/v1/orders.ts | OrderRoutes | route | LOW | 31 |
192
+ | 32 | src/routes/api/v1/payments.ts | PaymentRoutes | route | LOW | 32 |
193
+
194
+ ---
195
+
196
+ ### Summary Statistics
197
+
198
+ | Metric | Value |
199
+ |--------|-------|
200
+ | **Total Files Scanned** | 32 |
201
+ | **Files by Type** | page: 4, component: 7, service: 4, utility: 2, model: 4, middleware: 3, route: 4, controller: 4 |
202
+ | **Files by Interaction Density** | HIGH: 9, MEDIUM: 10, LOW: 13 |
203
+ | **Total Estimated Lines** | ~4,200 |
204
+ | **Frameworks Detected** | React 18.2, Express 4.18, Prisma 5.7, Stripe SDK 14.x |
205
+
206
+ ---
207
+
208
+ ### Testable Surfaces
209
+
210
+ #### Pages/Views (4)
211
+
212
+ | Route | Component File | Description |
213
+ |-------|---------------|-------------|
214
+ | `/` | src/pages/HomePage.tsx | Landing page with featured products and category navigation |
215
+ | `/products/:id` | src/pages/ProductDetailPage.tsx | Single product view with add-to-cart action |
216
+ | `/cart` | src/pages/CartPage.tsx | Shopping cart with quantity editing and checkout trigger |
217
+ | `/orders` | src/pages/OrderHistoryPage.tsx | User order history with status tracking |
218
+
219
+ #### Forms (3)
220
+
221
+ | Form Name | Component File | Fields | Submission Endpoint |
222
+ |-----------|---------------|--------|---------------------|
223
+ | Login Form | src/components/auth/LoginForm.tsx | email, password | POST /api/v1/auth/login |
224
+ | Registration Form | src/components/auth/RegisterForm.tsx | name, email, password, confirmPassword | POST /api/v1/auth/register |
225
+ | Checkout Form | src/components/checkout/CheckoutForm.tsx | shippingAddress, cardNumber, cardExpiry, cardCvc | POST /api/v1/payments/charge |
226
+
227
+ #### API Endpoints (12)
228
+
229
+ | Method | Path | Handler File | Auth |
230
+ |--------|------|-------------|------|
231
+ | POST | /api/v1/auth/register | src/controllers/authController.ts | No |
232
+ | POST | /api/v1/auth/login | src/controllers/authController.ts | No |
233
+ | POST | /api/v1/auth/refresh | src/controllers/authController.ts | Yes |
234
+ | POST | /api/v1/auth/logout | src/controllers/authController.ts | Yes |
235
+ | GET | /api/v1/products | src/controllers/productController.ts | No |
236
+ | GET | /api/v1/products/:id | src/controllers/productController.ts | No |
237
+ | POST | /api/v1/products | src/controllers/productController.ts | Yes |
238
+ | PUT | /api/v1/products/:id | src/controllers/productController.ts | Yes |
239
+ | DELETE | /api/v1/products/:id | src/controllers/productController.ts | Yes |
240
+ | POST | /api/v1/orders | src/controllers/orderController.ts | Yes |
241
+ | PATCH | /api/v1/orders/:id/status | src/controllers/orderController.ts | Yes |
242
+ | POST | /api/v1/payments/charge | src/controllers/paymentController.ts | Yes |
243
+
244
+ #### Business Logic Modules (6)
245
+
246
+ | Module File | Key Functions | Why Testable |
247
+ |------------|---------------|--------------|
248
+ | src/utils/priceCalculator.ts | calculateOrderTotal, applyDiscount, calculateTax, calculateShipping | Pure functions with arithmetic -- ideal unit test targets |
249
+ | src/services/orderService.ts | createOrder, transitionOrderStatus, cancelOrder, getOrderHistory | State machine transitions with validation rules |
250
+ | src/services/paymentService.ts | chargeCustomer, processRefund, handleWebhook | Stripe integration with error handling and idempotency |
251
+ | src/services/authService.ts | hashPassword, verifyPassword, generateToken, refreshToken | Security-critical functions with cryptographic operations |
252
+ | src/services/inventoryService.ts | reserveStock, releaseStock, checkAvailability | Concurrent access patterns with race condition potential |
253
+ | src/utils/validators.ts | validateEmail, validatePassword, validateAddress, validateCardNumber | Input validation with edge cases |
254
+
255
+ #### Middleware (3)
256
+
257
+ | Middleware File | Purpose | Applied To |
258
+ |----------------|---------|-----------|
259
+ | src/middleware/authMiddleware.ts | JWT token verification and user context injection | All routes except auth/register, auth/login, products (GET), payments/webhook |
260
+ | src/middleware/rateLimiter.ts | Rate limiting by IP and user ID | All routes (100 req/min general, 5 req/min for auth) |
261
+ | src/middleware/errorHandler.ts | Global error handling with structured JSON responses | All routes (catch-all) |
262
+
263
+ ---
264
+
265
+ ### Decision Gate
266
+
267
+ | Field | Value |
268
+ |-------|-------|
269
+ | **Decision** | **PROCEED** |
270
+ | **Reason** | 32 testable files found across frontend components and backend services |
271
+ | **Pipeline Note** | Full pipeline -- include testid-inject for 7 frontend components and 4 pages |
272
+ | **Confidence** | HIGH -- React + Express clearly detected from package.json and file extensions |
273
+
274
+ ---
275
+
276
+ ## Guidelines
277
+
278
+ ### DO
279
+
280
+ - **DO** include every source file that could have tests written against it -- services, controllers, components, utilities, middleware, models
281
+ - **DO** prioritize forms and interactive components as HIGH interaction density -- they have the most user-facing behavior
282
+ - **DO** list all API endpoints discovered from route files, including method, path, and auth requirements
283
+ - **DO** record the actual detection sources (which files told you the framework, runtime, etc.)
284
+ - **DO** order the file list by priority so downstream agents process the most important files first
285
+ - **DO** include line count estimates when available -- they help estimate test generation effort
286
+
287
+ ### DON'T
288
+
289
+ - **DON'T** include `node_modules/`, `dist/`, `build/`, `.next/`, `coverage/`, or other build artifacts
290
+ - **DON'T** include test files (`*.test.*`, `*.spec.*`, `*.stories.*`) -- those are analyzed separately
291
+ - **DON'T** include lockfiles (`package-lock.json`, `yarn.lock`) or config-only files (`eslint.config.js`)
292
+ - **DON'T** mark utility-only files (pure functions, type definitions) as HIGH interaction density
293
+ - **DON'T** mark static display components (Footer, badges, icons) as HIGH interaction density
294
+ - **DON'T** guess the framework -- if detection is ambiguous, mark confidence as LOW and list what was found
295
+ - **DON'T** include files from dependency directories or generated code
296
+
297
+ ---
298
+
299
+ ## Quality Gate
300
+
301
+ Before delivering this artifact, verify all of the following:
302
+
303
+ - [ ] Project Detection section has all 5 required fields populated (framework, language, runtime, component_pattern, package_manager)
304
+ - [ ] File List contains every source file relevant to testing (no business logic files omitted)
305
+ - [ ] File List excludes all test files, build artifacts, node_modules, and config-only files
306
+ - [ ] Every file in the File List has a type, interaction density, and priority order assigned
307
+ - [ ] Priority ordering puts forms and interactive components before static/utility files
308
+ - [ ] Summary Statistics counts match the actual File List entries
309
+ - [ ] Testable Surfaces section covers all 5 categories (pages, forms, API endpoints, business logic, middleware)
310
+ - [ ] API Endpoints list matches the route files found in the File List
311
+ - [ ] Decision Gate has a clear PROCEED or STOP with justification
312
+ - [ ] No duplicate file paths in the File List