create-qa-architect 5.6.1 → 5.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/quality.yml +107 -11
- package/README.md +8 -10
- package/docs/ARCHITECTURE-REVIEW-2026-01-08.md +2 -2
- package/docs/CI-COST-ANALYSIS.md +1 -1
- package/docs/MIGRATION-5.8.0.md +157 -0
- package/docs/OPTIMAL_QUALITY_STRATEGY.md +421 -0
- package/docs/QUALITY_AUTOMATION_ANALYSIS.md +339 -0
- package/docs/SIMPLE_STRATEGY.md +48 -0
- package/docs/TESTING_AND_REVIEW_FLOW.md +364 -0
- package/docs/security/SOC2_STARTER.md +1 -1
- package/lib/commands/deps.js +1 -4
- package/lib/commands/prelaunch-setup.js +1 -4
- package/lib/dependency-monitoring-premium.js +1 -4
- package/lib/licensing.js +0 -144
- package/lib/smart-strategy-generator.js +37 -0
- package/lib/workflow-config.js +4 -2
- package/package.json +2 -2
- package/templates/CLAUDE_WORKFLOW_POLICY.md +47 -0
|
@@ -69,8 +69,12 @@ jobs:
|
|
|
69
69
|
- name: Detect Project Maturity
|
|
70
70
|
id: detect
|
|
71
71
|
run: |
|
|
72
|
-
# Use the project maturity detector
|
|
73
|
-
|
|
72
|
+
# Use the project maturity detector (local for qa-architect itself, node_modules for other projects)
|
|
73
|
+
if [ -f lib/project-maturity.js ]; then
|
|
74
|
+
node lib/project-maturity.js --github-actions >> $GITHUB_OUTPUT
|
|
75
|
+
else
|
|
76
|
+
node node_modules/create-qa-architect/lib/project-maturity.js --github-actions >> $GITHUB_OUTPUT
|
|
77
|
+
fi
|
|
74
78
|
|
|
75
79
|
- name: Display Detection Report
|
|
76
80
|
run: |
|
|
@@ -245,7 +249,11 @@ jobs:
|
|
|
245
249
|
echo "🔍 Running gitleaks secret scanning..."
|
|
246
250
|
# Use setup.js security scan which manages gitleaks binary internally
|
|
247
251
|
# This avoids the commercial license requirement of the gitleaks-action
|
|
248
|
-
|
|
252
|
+
if [ -f setup.js ]; then
|
|
253
|
+
node setup.js --security-config
|
|
254
|
+
else
|
|
255
|
+
node node_modules/create-qa-architect/setup.js --security-config
|
|
256
|
+
fi
|
|
249
257
|
|
|
250
258
|
- name: Security pattern detection
|
|
251
259
|
uses: semgrep/semgrep-action@713efdd345f3035192eaa63f56867b88e63e4e5d # v1
|
|
@@ -348,18 +356,30 @@ jobs:
|
|
|
348
356
|
- name: Configuration security check
|
|
349
357
|
run: |
|
|
350
358
|
echo "🔍 Running configuration security validation..."
|
|
351
|
-
|
|
359
|
+
if [ -f setup.js ]; then
|
|
360
|
+
node setup.js --security-config
|
|
361
|
+
else
|
|
362
|
+
node node_modules/create-qa-architect/setup.js --security-config
|
|
363
|
+
fi
|
|
352
364
|
|
|
353
365
|
- name: Documentation validation
|
|
354
366
|
run: |
|
|
355
367
|
echo "📖 Running documentation validation..."
|
|
356
|
-
|
|
368
|
+
if [ -f setup.js ]; then
|
|
369
|
+
node setup.js --validate-docs
|
|
370
|
+
else
|
|
371
|
+
node node_modules/create-qa-architect/setup.js --validate-docs
|
|
372
|
+
fi
|
|
357
373
|
|
|
358
374
|
- name: Documentation consistency and security audit freshness
|
|
359
375
|
run: |
|
|
360
376
|
echo "🔐 Running comprehensive documentation validation..."
|
|
361
377
|
# This includes security audit freshness check with proper git-based validation
|
|
362
|
-
|
|
378
|
+
if [ -f scripts/check-docs.sh ]; then
|
|
379
|
+
bash scripts/check-docs.sh
|
|
380
|
+
else
|
|
381
|
+
bash node_modules/create-qa-architect/scripts/check-docs.sh
|
|
382
|
+
fi
|
|
363
383
|
|
|
364
384
|
- name: Package size and contents validation
|
|
365
385
|
if: hashFiles('package.json') != ''
|
|
@@ -402,11 +422,33 @@ jobs:
|
|
|
402
422
|
|
|
403
423
|
- name: Lighthouse CI
|
|
404
424
|
if: hashFiles('.lighthouserc.js', '.lighthouserc.json', 'lighthouserc.js') != ''
|
|
425
|
+
id: lighthouse
|
|
405
426
|
run: |
|
|
406
427
|
echo "🚢 Running Lighthouse CI..."
|
|
407
428
|
npx lhci autorun
|
|
408
429
|
continue-on-error: true
|
|
409
430
|
|
|
431
|
+
- name: Report Lighthouse Failures
|
|
432
|
+
if: steps.lighthouse.outcome == 'failure'
|
|
433
|
+
env:
|
|
434
|
+
MATURITY: ${{ needs.detect-maturity.outputs.maturity }}
|
|
435
|
+
run: |
|
|
436
|
+
echo "::error::Lighthouse CI failed - performance budgets or quality thresholds violated"
|
|
437
|
+
echo "Review the Lighthouse report to see which metrics failed."
|
|
438
|
+
echo "Common failures: performance score, accessibility issues, SEO problems"
|
|
439
|
+
|
|
440
|
+
# Add to job summary for visibility
|
|
441
|
+
echo "## ⚠️ Lighthouse CI Failed" >> $GITHUB_STEP_SUMMARY
|
|
442
|
+
echo "Performance budgets or quality thresholds were violated." >> $GITHUB_STEP_SUMMARY
|
|
443
|
+
echo "This is currently a soft failure (continue-on-error: true)." >> $GITHUB_STEP_SUMMARY
|
|
444
|
+
echo "Review the Lighthouse report in the Actions logs above." >> $GITHUB_STEP_SUMMARY
|
|
445
|
+
|
|
446
|
+
# Fail build for production-ready projects
|
|
447
|
+
if [ "$MATURITY" == "production-ready" ]; then
|
|
448
|
+
echo "::error::Production-ready projects must pass Lighthouse CI checks"
|
|
449
|
+
exit 1
|
|
450
|
+
fi
|
|
451
|
+
|
|
410
452
|
# Step 7: Summary - report what checks ran
|
|
411
453
|
summary:
|
|
412
454
|
runs-on: ubuntu-latest
|
|
@@ -421,6 +463,12 @@ jobs:
|
|
|
421
463
|
|
|
422
464
|
steps:
|
|
423
465
|
- name: Generate Check Summary
|
|
466
|
+
env:
|
|
467
|
+
CORE_RESULT: ${{ needs.core-checks.result }}
|
|
468
|
+
LINTING_RESULT: ${{ needs.linting.result }}
|
|
469
|
+
SECURITY_RESULT: ${{ needs.security.result }}
|
|
470
|
+
TESTS_RESULT: ${{ needs.tests.result }}
|
|
471
|
+
DOCS_RESULT: ${{ needs.documentation.result }}
|
|
424
472
|
run: |
|
|
425
473
|
echo "## Quality Checks Summary 📊" >> $GITHUB_STEP_SUMMARY
|
|
426
474
|
echo "" >> $GITHUB_STEP_SUMMARY
|
|
@@ -433,11 +481,59 @@ jobs:
|
|
|
433
481
|
echo "- Has documentation: ${{ needs.detect-maturity.outputs.has-docs }}" >> $GITHUB_STEP_SUMMARY
|
|
434
482
|
echo "" >> $GITHUB_STEP_SUMMARY
|
|
435
483
|
echo "### Checks Executed" >> $GITHUB_STEP_SUMMARY
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
484
|
+
|
|
485
|
+
# Core checks
|
|
486
|
+
if [ "$CORE_RESULT" == "success" ]; then
|
|
487
|
+
echo "- ✅ Core checks: Passed" >> $GITHUB_STEP_SUMMARY
|
|
488
|
+
elif [ "$CORE_RESULT" == "failure" ]; then
|
|
489
|
+
echo "- ❌ Core checks: Failed" >> $GITHUB_STEP_SUMMARY
|
|
490
|
+
else
|
|
491
|
+
echo "- ⚠️ Core checks: $CORE_RESULT" >> $GITHUB_STEP_SUMMARY
|
|
492
|
+
fi
|
|
493
|
+
|
|
494
|
+
# Linting
|
|
495
|
+
if [ "$LINTING_RESULT" == "success" ]; then
|
|
496
|
+
echo "- ✅ Linting: Passed" >> $GITHUB_STEP_SUMMARY
|
|
497
|
+
elif [ "$LINTING_RESULT" == "failure" ]; then
|
|
498
|
+
echo "- ❌ Linting: Failed" >> $GITHUB_STEP_SUMMARY
|
|
499
|
+
elif [ "$LINTING_RESULT" == "skipped" ]; then
|
|
500
|
+
echo "- ⏭️ Linting: Skipped (no source files)" >> $GITHUB_STEP_SUMMARY
|
|
501
|
+
else
|
|
502
|
+
echo "- ⚠️ Linting: $LINTING_RESULT" >> $GITHUB_STEP_SUMMARY
|
|
503
|
+
fi
|
|
504
|
+
|
|
505
|
+
# Security
|
|
506
|
+
if [ "$SECURITY_RESULT" == "success" ]; then
|
|
507
|
+
echo "- ✅ Security: Passed" >> $GITHUB_STEP_SUMMARY
|
|
508
|
+
elif [ "$SECURITY_RESULT" == "failure" ]; then
|
|
509
|
+
echo "- ❌ Security: Failed" >> $GITHUB_STEP_SUMMARY
|
|
510
|
+
elif [ "$SECURITY_RESULT" == "skipped" ]; then
|
|
511
|
+
echo "- ⏭️ Security: Skipped (no dependencies)" >> $GITHUB_STEP_SUMMARY
|
|
512
|
+
else
|
|
513
|
+
echo "- ⚠️ Security: $SECURITY_RESULT" >> $GITHUB_STEP_SUMMARY
|
|
514
|
+
fi
|
|
515
|
+
|
|
516
|
+
# Tests
|
|
517
|
+
if [ "$TESTS_RESULT" == "success" ]; then
|
|
518
|
+
echo "- ✅ Tests: Passed" >> $GITHUB_STEP_SUMMARY
|
|
519
|
+
elif [ "$TESTS_RESULT" == "failure" ]; then
|
|
520
|
+
echo "- ❌ Tests: Failed" >> $GITHUB_STEP_SUMMARY
|
|
521
|
+
elif [ "$TESTS_RESULT" == "skipped" ]; then
|
|
522
|
+
echo "- ⏭️ Tests: Skipped (no test files)" >> $GITHUB_STEP_SUMMARY
|
|
523
|
+
else
|
|
524
|
+
echo "- ⚠️ Tests: $TESTS_RESULT" >> $GITHUB_STEP_SUMMARY
|
|
525
|
+
fi
|
|
526
|
+
|
|
527
|
+
# Documentation
|
|
528
|
+
if [ "$DOCS_RESULT" == "success" ]; then
|
|
529
|
+
echo "- ✅ Documentation: Passed" >> $GITHUB_STEP_SUMMARY
|
|
530
|
+
elif [ "$DOCS_RESULT" == "failure" ]; then
|
|
531
|
+
echo "- ❌ Documentation: Failed" >> $GITHUB_STEP_SUMMARY
|
|
532
|
+
elif [ "$DOCS_RESULT" == "skipped" ]; then
|
|
533
|
+
echo "- ⏭️ Documentation: Skipped (not production-ready)" >> $GITHUB_STEP_SUMMARY
|
|
534
|
+
else
|
|
535
|
+
echo "- ⚠️ Documentation: $DOCS_RESULT" >> $GITHUB_STEP_SUMMARY
|
|
536
|
+
fi
|
|
441
537
|
# PR_COMMENTS_PLACEHOLDER
|
|
442
538
|
|
|
443
539
|
# ALERTS_PLACEHOLDER
|
package/README.md
CHANGED
|
@@ -58,14 +58,12 @@ npx create-qa-architect@latest
|
|
|
58
58
|
|
|
59
59
|
## Pricing
|
|
60
60
|
|
|
61
|
-
| Tier
|
|
62
|
-
|
|
|
63
|
-
| **Free**
|
|
64
|
-
| **Pro**
|
|
65
|
-
| **Team** | Contact us | + RBAC, Slack alerts, multi-repo dashboard, team audit log _(coming soon)_ |
|
|
66
|
-
| **Enterprise** | Contact us | + SSO/SAML, custom policies, compliance pack, dedicated TAM _(coming soon)_ |
|
|
61
|
+
| Tier | Price | What You Get |
|
|
62
|
+
| -------- | ----------------- | -------------------------------------------------------------------------------------------------- |
|
|
63
|
+
| **Free** | $0 | CLI tool, basic linting/formatting, npm audit (capped: 1 private repo, 50 runs/mo) |
|
|
64
|
+
| **Pro** | $19/mo or $190/yr | **Security scanning (Gitleaks + ESLint security)**, Smart Test Strategy, multi-language, unlimited |
|
|
67
65
|
|
|
68
|
-
> **Pro included in [VBL Starter Kit](https://vibebuildlab.com/starter-kit)**
|
|
66
|
+
> **Pro included in [VBL Starter Kit](https://vibebuildlab.com/starter-kit)**
|
|
69
67
|
|
|
70
68
|
### Security Features by Tier
|
|
71
69
|
|
|
@@ -138,7 +136,7 @@ npx create-qa-architect@latest --workflow-standard
|
|
|
138
136
|
|
|
139
137
|
### Comprehensive - $100-350/month
|
|
140
138
|
|
|
141
|
-
**Best for:**
|
|
139
|
+
**Best for:** High-compliance projects, large teams
|
|
142
140
|
|
|
143
141
|
- Matrix testing (Node 20 + 22) on **every commit**
|
|
144
142
|
- Security scans inline (every commit)
|
|
@@ -188,7 +186,7 @@ Shows estimated GitHub Actions usage and provides optimization recommendations.
|
|
|
188
186
|
|
|
189
187
|
### License
|
|
190
188
|
|
|
191
|
-
**Commercial License (freemium)** — free tier covers the basic CLI; Pro
|
|
189
|
+
**Commercial License (freemium)** — free tier covers the basic CLI; Pro features require a paid subscription. See [LICENSE](LICENSE).
|
|
192
190
|
|
|
193
191
|
## Tech Stack
|
|
194
192
|
|
|
@@ -381,7 +379,7 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
|
|
|
381
379
|
|
|
382
380
|
## License
|
|
383
381
|
|
|
384
|
-
Commercial freemium license — the base CLI is free to use; Pro
|
|
382
|
+
Commercial freemium license — the base CLI is free to use; Pro features require a paid subscription. See [LICENSE](LICENSE) for details.
|
|
385
383
|
|
|
386
384
|
## Legal
|
|
387
385
|
|
|
@@ -113,7 +113,7 @@ CLI (setup.js) → Commands → Business Logic → Utilities
|
|
|
113
113
|
- ✅ config/constants.js for all magic numbers
|
|
114
114
|
- ✅ config/defaults.js for default scripts/dependencies
|
|
115
115
|
- ✅ Environment variables: QAA_LICENSE_DIR, QAA_ERROR_DIR, QAA_TELEMETRY_DIR
|
|
116
|
-
- ✅ Feature flags via tier system (FREE/PRO
|
|
116
|
+
- ✅ Feature flags via tier system (FREE/PRO)
|
|
117
117
|
|
|
118
118
|
#### Upgrade/Migration Path
|
|
119
119
|
|
|
@@ -402,7 +402,7 @@ Remaining low-priority items in BACKLOG.md:
|
|
|
402
402
|
- Extensible linter/formatter support
|
|
403
403
|
- Community plugins for new languages
|
|
404
404
|
|
|
405
|
-
2. **Cloud Sync (
|
|
405
|
+
2. **Cloud Sync (Future)**
|
|
406
406
|
- Shared policies across teams
|
|
407
407
|
- Centralized dashboard
|
|
408
408
|
|
package/docs/CI-COST-ANALYSIS.md
CHANGED
|
@@ -255,7 +255,7 @@ if: github.event.pull_request.draft == false
|
|
|
255
255
|
|
|
256
256
|
**Current Default** (what qa-architect creates):
|
|
257
257
|
|
|
258
|
-
- ❌
|
|
258
|
+
- ❌ Comprehensive CI for solo devs
|
|
259
259
|
- ❌ Costs $100-350/mo for typical projects
|
|
260
260
|
- ❌ Over-engineering: Gitleaks + Semgrep on every commit
|
|
261
261
|
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
# Migration Guide: v5.8.0
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
Version 5.8.0 fixes critical silent failure bugs in the GitHub Actions workflow template that could allow broken code to merge:
|
|
6
|
+
|
|
7
|
+
1. **Lighthouse CI failures** were silently ignored (now fails production builds)
|
|
8
|
+
2. **Job summaries** always showed ✅ even when checks failed (now shows actual results)
|
|
9
|
+
|
|
10
|
+
## Who Should Upgrade?
|
|
11
|
+
|
|
12
|
+
**All projects using qa-architect** - especially production-ready projects that rely on Lighthouse CI for performance gates.
|
|
13
|
+
|
|
14
|
+
## Quick Migration (Recommended)
|
|
15
|
+
|
|
16
|
+
Update your workflow in one command:
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
npx create-qa-architect@latest
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
This will:
|
|
23
|
+
|
|
24
|
+
- Detect your existing workflow mode (minimal/standard/comprehensive)
|
|
25
|
+
- Preserve your current configuration
|
|
26
|
+
- Apply the bug fixes to `.github/workflows/quality.yml`
|
|
27
|
+
|
|
28
|
+
## What Changes?
|
|
29
|
+
|
|
30
|
+
### 1. Lighthouse CI - Now Fails Production Builds
|
|
31
|
+
|
|
32
|
+
**Before (v5.7.0):**
|
|
33
|
+
|
|
34
|
+
```yaml
|
|
35
|
+
- name: Lighthouse CI
|
|
36
|
+
run: npx lhci autorun
|
|
37
|
+
continue-on-error: true # ⚠️ Failures silently ignored
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
**After (v5.8.0):**
|
|
41
|
+
|
|
42
|
+
```yaml
|
|
43
|
+
- name: Lighthouse CI
|
|
44
|
+
id: lighthouse
|
|
45
|
+
run: npx lhci autorun
|
|
46
|
+
continue-on-error: true
|
|
47
|
+
|
|
48
|
+
- name: Report Lighthouse Failures
|
|
49
|
+
if: steps.lighthouse.outcome == 'failure'
|
|
50
|
+
env:
|
|
51
|
+
MATURITY: ${{ needs.detect-maturity.outputs.maturity }}
|
|
52
|
+
run: |
|
|
53
|
+
echo "::error::Lighthouse CI failed"
|
|
54
|
+
# Fail build for production-ready projects
|
|
55
|
+
if [ "$MATURITY" == "production-ready" ]; then
|
|
56
|
+
exit 1
|
|
57
|
+
fi
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
**Impact:**
|
|
61
|
+
|
|
62
|
+
- **Production-ready projects**: Lighthouse failures now block merges (hard gate)
|
|
63
|
+
- **Other projects**: Lighthouse failures show warnings but don't block (soft gate)
|
|
64
|
+
|
|
65
|
+
### 2. Job Summary - Shows Actual Results
|
|
66
|
+
|
|
67
|
+
**Before (v5.7.0):**
|
|
68
|
+
|
|
69
|
+
```yaml
|
|
70
|
+
# Always showed ✅ if enabled, regardless of pass/fail
|
|
71
|
+
echo "- ✅ Tests: Enabled" >> $GITHUB_STEP_SUMMARY
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
**After (v5.8.0):**
|
|
75
|
+
|
|
76
|
+
```yaml
|
|
77
|
+
# Shows actual result: ✅ success, ❌ failure, ⏭️ skipped
|
|
78
|
+
if [ "$TESTS_RESULT" == "success" ]; then
|
|
79
|
+
echo "- ✅ Tests: Passed" >> $GITHUB_STEP_SUMMARY
|
|
80
|
+
elif [ "$TESTS_RESULT" == "failure" ]; then
|
|
81
|
+
echo "- ❌ Tests: Failed" >> $GITHUB_STEP_SUMMARY
|
|
82
|
+
fi
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
**Impact:**
|
|
86
|
+
|
|
87
|
+
- Summaries now accurately reflect job outcomes
|
|
88
|
+
- Failures are immediately visible in PR checks
|
|
89
|
+
|
|
90
|
+
## Verification
|
|
91
|
+
|
|
92
|
+
After upgrading, verify the changes:
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
# Check workflow mode marker
|
|
96
|
+
grep "WORKFLOW_MODE:" .github/workflows/quality.yml
|
|
97
|
+
|
|
98
|
+
# Verify Lighthouse failure handler exists
|
|
99
|
+
grep -A 10 "Report Lighthouse Failures" .github/workflows/quality.yml
|
|
100
|
+
|
|
101
|
+
# Verify summary uses actual results
|
|
102
|
+
grep "CORE_RESULT" .github/workflows/quality.yml
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
## Rollback (If Needed)
|
|
106
|
+
|
|
107
|
+
If you need to rollback to v5.7.0:
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
npx create-qa-architect@5.7.0
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
## Breaking Changes
|
|
114
|
+
|
|
115
|
+
None - these are backwards-compatible bug fixes.
|
|
116
|
+
|
|
117
|
+
**Exception:** If you have production-ready maturity and currently have Lighthouse failures that are being ignored, they will now block your builds. This is the intended behavior to prevent quality regressions.
|
|
118
|
+
|
|
119
|
+
## FAQ
|
|
120
|
+
|
|
121
|
+
### Q: Will this affect my CI minutes?
|
|
122
|
+
|
|
123
|
+
No - the changes only add a conditional failure reporting step. No new jobs or scans.
|
|
124
|
+
|
|
125
|
+
### Q: What if I want to keep Lighthouse as a soft failure?
|
|
126
|
+
|
|
127
|
+
Remove the production-ready check from the "Report Lighthouse Failures" step:
|
|
128
|
+
|
|
129
|
+
```yaml
|
|
130
|
+
# Remove this block:
|
|
131
|
+
if [ "$MATURITY" == "production-ready" ]; then
|
|
132
|
+
exit 1
|
|
133
|
+
fi
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### Q: How do I know my maturity level?
|
|
137
|
+
|
|
138
|
+
Check your workflow or run:
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
npx create-qa-architect --check-maturity
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
Maturity levels: minimal → bootstrap → development → production-ready
|
|
145
|
+
|
|
146
|
+
### Q: Can I update manually instead of re-running the tool?
|
|
147
|
+
|
|
148
|
+
Yes, but not recommended. The template changes are extensive. If you must:
|
|
149
|
+
|
|
150
|
+
1. Copy the new steps from `.github/workflows/quality.yml` in this repo
|
|
151
|
+
2. Add Lighthouse failure handler (lines 411-430)
|
|
152
|
+
3. Update summary step to use `needs.<job>.result` (lines 445-516)
|
|
153
|
+
|
|
154
|
+
## Support
|
|
155
|
+
|
|
156
|
+
- Issues: https://github.com/anthropics/qa-architect/issues
|
|
157
|
+
- Docs: https://github.com/anthropics/qa-architect/blob/main/README.md
|