create-qa-architect 5.0.0 → 5.0.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 +3 -0
- package/LICENSE +66 -0
- package/README.md +44 -30
- package/create-saas-monetization.js +10 -0
- package/docs/ARCHITECTURE.md +54 -0
- package/docs/DEPLOYMENT.md +63 -0
- package/docs/SLA_GATES.md +28 -0
- package/docs/TESTING.md +62 -0
- package/docs/security/SOC2_STARTER.md +29 -0
- package/lib/dependency-monitoring-basic.js +73 -26
- package/lib/licensing.js +5 -4
- package/lib/package-utils.js +215 -0
- package/lib/setup-enhancements.js +33 -0
- package/package.json +9 -7
- package/setup.js +131 -38
- package/templates/QUALITY_TROUBLESHOOTING.md +403 -0
- package/templates/ci/circleci-config.yml +35 -0
- package/templates/ci/gitlab-ci.yml +47 -0
- package/templates/integration-tests/api-service.test.js +244 -0
- package/templates/integration-tests/frontend-app.test.js +267 -0
- package/templates/scripts/smart-test-strategy.sh +109 -0
- package/templates/test-stubs/e2e.smoke.test.js +12 -0
- package/templates/test-stubs/unit.test.js +7 -0
- package/legal/README.md +0 -106
- package/legal/copyright.md +0 -76
- package/legal/disclaimer.md +0 -146
- package/legal/privacy-policy.html +0 -324
- package/legal/privacy-policy.md +0 -196
- package/legal/terms-of-service.md +0 -224
- package/marketing/beta-user-email-campaign.md +0 -372
- package/marketing/landing-page.html +0 -721
|
@@ -434,3 +434,6 @@ jobs:
|
|
|
434
434
|
echo "- ${{ needs.detect-maturity.outputs.has-deps == 'true' && '✅' || '⏭️' }} Security: ${{ needs.detect-maturity.outputs.has-deps == 'true' && 'Enabled' || 'Skipped (no dependencies)' }}" >> $GITHUB_STEP_SUMMARY
|
|
435
435
|
echo "- ${{ needs.detect-maturity.outputs.test-count > 0 && '✅' || '⏭️' }} Tests: ${{ needs.detect-maturity.outputs.test-count > 0 && 'Enabled' || 'Skipped (no test files)' }}" >> $GITHUB_STEP_SUMMARY
|
|
436
436
|
echo "- ${{ needs.detect-maturity.outputs.maturity == 'production-ready' && '✅' || '⏭️' }} Documentation: ${{ needs.detect-maturity.outputs.maturity == 'production-ready' && 'Enabled' || 'Skipped (not production-ready)' }}" >> $GITHUB_STEP_SUMMARY
|
|
437
|
+
# PR_COMMENTS_PLACEHOLDER
|
|
438
|
+
|
|
439
|
+
# ALERTS_PLACEHOLDER
|
package/LICENSE
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
VIBE BUILD LAB COMMERCIAL LICENSE
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Vibe Build Lab LLC. All rights reserved.
|
|
4
|
+
|
|
5
|
+
COMMERCIAL SOFTWARE - FREEMIUM MODEL
|
|
6
|
+
|
|
7
|
+
This software and associated documentation files (the "Software") are
|
|
8
|
+
proprietary commercial products of Vibe Build Lab LLC.
|
|
9
|
+
|
|
10
|
+
TERMS OF USE:
|
|
11
|
+
|
|
12
|
+
1. FREE TIER
|
|
13
|
+
The basic CLI tool is available free of charge for personal and commercial use.
|
|
14
|
+
Free tier includes:
|
|
15
|
+
- Basic quality automation setup
|
|
16
|
+
- ESLint, Prettier, Husky configuration
|
|
17
|
+
- Standard pre-commit hooks
|
|
18
|
+
|
|
19
|
+
2. PAID TIERS
|
|
20
|
+
- Pro: $59/month or $590/year
|
|
21
|
+
- Security scanning (Gitleaks + ESLint security)
|
|
22
|
+
- Smart Test Strategy
|
|
23
|
+
- Multi-language support
|
|
24
|
+
- Unlimited repos
|
|
25
|
+
- Team: $15/user/month (5-seat minimum)
|
|
26
|
+
- All Pro features
|
|
27
|
+
- RBAC and team policies
|
|
28
|
+
- Slack alerts
|
|
29
|
+
- Multi-repo dashboard
|
|
30
|
+
- Enterprise: $249/month + $499 onboarding
|
|
31
|
+
- All Team features
|
|
32
|
+
- SSO/SAML integration
|
|
33
|
+
- Custom policies
|
|
34
|
+
- Compliance pack
|
|
35
|
+
- Dedicated TAM
|
|
36
|
+
|
|
37
|
+
3. VIBE LAB PRO BUNDLE
|
|
38
|
+
Pro tier is included in the Vibe Lab Pro subscription.
|
|
39
|
+
Team and Enterprise tiers are standalone purchases.
|
|
40
|
+
|
|
41
|
+
4. PERMITTED USES
|
|
42
|
+
- Use the free tier without restriction
|
|
43
|
+
- Use paid features with active subscription
|
|
44
|
+
- Use for personal and commercial projects
|
|
45
|
+
|
|
46
|
+
5. RESTRICTIONS
|
|
47
|
+
- NO redistribution of paid features
|
|
48
|
+
- NO resale or sublicensing
|
|
49
|
+
- NO circumventing license validation
|
|
50
|
+
- NO removal of copyright notices
|
|
51
|
+
|
|
52
|
+
6. NO WARRANTY
|
|
53
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
54
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
55
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
56
|
+
|
|
57
|
+
7. LIMITATION OF LIABILITY
|
|
58
|
+
IN NO EVENT SHALL VIBE BUILD LAB LLC BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
|
59
|
+
OTHER LIABILITY ARISING FROM THE USE OF THE SOFTWARE.
|
|
60
|
+
|
|
61
|
+
For licensing inquiries: support@vibebuildlab.com
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
Vibe Build Lab LLC
|
|
66
|
+
https://vibebuildlab.com
|
package/README.md
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
#
|
|
1
|
+
# QA Architect
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Quality automation CLI for JavaScript/TypeScript and Python projects. One command adds ESLint, Prettier, Husky, lint-staged, and GitHub Actions. Pro tiers add security scanning (Gitleaks), Smart Test Strategy, and multi-language support.
|
|
4
|
+
|
|
5
|
+
**This repo = the free CLI.** For the Pro dashboard with repo analytics, CI integration, and automation workflows, see [QA Architect Pro](https://vibebuildlab.com/qa-architect-pro) (included in Vibe Lab Pro).
|
|
4
6
|
|
|
5
7
|
---
|
|
6
8
|
|
|
@@ -19,7 +21,7 @@ Bootstrap quality automation in JavaScript/TypeScript and Python projects with c
|
|
|
19
21
|
- **GitHub Actions** - Automated quality checks in CI/CD
|
|
20
22
|
- **TypeScript Smart** - Auto-detects and configures TypeScript projects
|
|
21
23
|
- **Python Support** - Complete Python toolchain with Black, Ruff, isort, mypy, pytest
|
|
22
|
-
- **Security Automation** - npm audit
|
|
24
|
+
- **Security Automation** - npm audit (Free), Gitleaks + ESLint security (Pro)
|
|
23
25
|
- **Progressive Quality** - Adaptive checks based on project maturity
|
|
24
26
|
- **Smart Test Strategy** - Risk-based pre-push validation (Pro feature)
|
|
25
27
|
|
|
@@ -37,35 +39,41 @@ Bootstrap quality automation in JavaScript/TypeScript and Python projects with c
|
|
|
37
39
|
npx create-qa-architect@latest
|
|
38
40
|
```
|
|
39
41
|
|
|
40
|
-
## Pricing
|
|
42
|
+
## Pricing
|
|
41
43
|
|
|
42
|
-
|
|
44
|
+
| Tier | Price | What You Get |
|
|
45
|
+
| -------------- | ------------------------- | -------------------------------------------------------------------------------------------------- |
|
|
46
|
+
| **Free** | $0 | CLI tool, basic linting/formatting, npm audit (capped: 1 private repo, 50 runs/mo) |
|
|
47
|
+
| **Pro** | $59/mo or $590/yr | **Security scanning (Gitleaks + ESLint security)**, Smart Test Strategy, multi-language, unlimited |
|
|
48
|
+
| **Team** | $15/user/mo (5-seat min) | + RBAC, Slack alerts, multi-repo dashboard, team audit log |
|
|
49
|
+
| **Enterprise** | $249/mo + $499 onboarding | + SSO/SAML, custom policies, compliance pack, dedicated TAM |
|
|
43
50
|
|
|
44
|
-
|
|
45
|
-
| -------------- | ----------- | ------------------------------------------------------- |
|
|
46
|
-
| **Free** | $0 | Basic quality automation, 1 private repo, 2k LOC |
|
|
47
|
-
| **Pro** | $59/mo | Unlimited repos, Smart Test Strategy, security scanning |
|
|
48
|
-
| **Team** | $15/user/mo | All Pro features + shared quota, team policies |
|
|
49
|
-
| **Enterprise** | $249/mo | SSO/SAML, custom patterns, compliance pack |
|
|
51
|
+
> **Pro included in [Vibe Lab Pro](https://vibebuildlab.com/pro)** — Team/Enterprise are standalone purchases.
|
|
50
52
|
|
|
51
|
-
###
|
|
53
|
+
### Security Features by Tier
|
|
54
|
+
|
|
55
|
+
| Feature | Free | Pro+ |
|
|
56
|
+
| --------------------------- | ---- | ---- |
|
|
57
|
+
| npm audit (basic) | ✅ | ✅ |
|
|
58
|
+
| Gitleaks (secrets scanning) | ❌ | ✅ |
|
|
59
|
+
| ESLint security rules | ❌ | ✅ |
|
|
52
60
|
|
|
53
|
-
|
|
61
|
+
### License
|
|
54
62
|
|
|
55
|
-
|
|
63
|
+
**MIT License** for the CLI (this repository). Pro features require a paid subscription or Vibe Lab Pro membership. See [LICENSE](LICENSE).
|
|
56
64
|
|
|
57
65
|
## Tech Stack
|
|
58
66
|
|
|
59
|
-
| Component | Technology
|
|
60
|
-
| --------------- |
|
|
61
|
-
| **Runtime** | Node.js 20+
|
|
62
|
-
| **Linting** | ESLint 9 (flat config)
|
|
63
|
-
| **Formatting** | Prettier 3
|
|
64
|
-
| **CSS Linting** | Stylelint 16
|
|
65
|
-
| **Git Hooks** | Husky 9 + lint-staged 15
|
|
66
|
-
| **Python** | Black, Ruff, mypy, pytest
|
|
67
|
-
| **Performance** | Lighthouse CI
|
|
68
|
-
| **Security** |
|
|
67
|
+
| Component | Technology |
|
|
68
|
+
| --------------- | -------------------------------------------------- |
|
|
69
|
+
| **Runtime** | Node.js 20+ |
|
|
70
|
+
| **Linting** | ESLint 9 (flat config) |
|
|
71
|
+
| **Formatting** | Prettier 3 |
|
|
72
|
+
| **CSS Linting** | Stylelint 16 |
|
|
73
|
+
| **Git Hooks** | Husky 9 + lint-staged 15 |
|
|
74
|
+
| **Python** | Black, Ruff, mypy, pytest |
|
|
75
|
+
| **Performance** | Lighthouse CI |
|
|
76
|
+
| **Security** | npm audit (Free), Gitleaks + ESLint security (Pro) |
|
|
69
77
|
|
|
70
78
|
## Getting Started
|
|
71
79
|
|
|
@@ -157,6 +165,8 @@ your-project/
|
|
|
157
165
|
├── .husky/ # Pre-commit hooks
|
|
158
166
|
├── .editorconfig # Editor defaults
|
|
159
167
|
├── .eslintignore # ESLint ignore patterns
|
|
168
|
+
├── .lighthouserc.js # Lighthouse CI config
|
|
169
|
+
├── .npmrc # npm configuration
|
|
160
170
|
├── .nvmrc # Node version pinning
|
|
161
171
|
├── .prettierrc # Prettier configuration
|
|
162
172
|
├── .stylelintrc.json # Stylelint rules
|
|
@@ -182,9 +192,9 @@ npm run validate:pre-push # Pre-push validation
|
|
|
182
192
|
- [x] Progressive quality (maturity detection)
|
|
183
193
|
- [x] Python toolchain support
|
|
184
194
|
- [x] Smart test strategy (Pro)
|
|
195
|
+
- [x] Monorepo support (Nx, Turborepo, Lerna, Rush, npm/pnpm/yarn workspaces)
|
|
185
196
|
- [ ] Rust and Go support
|
|
186
197
|
- [ ] VS Code extension
|
|
187
|
-
- [ ] Monorepo support
|
|
188
198
|
|
|
189
199
|
## Contributing
|
|
190
200
|
|
|
@@ -199,14 +209,18 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
|
|
|
199
209
|
|
|
200
210
|
## Support
|
|
201
211
|
|
|
202
|
-
1.
|
|
203
|
-
2.
|
|
204
|
-
3. Open an issue in this repository
|
|
212
|
+
1. Review GitHub Actions logs
|
|
213
|
+
2. Open an issue in this repository
|
|
205
214
|
|
|
206
215
|
## License
|
|
207
216
|
|
|
208
|
-
MIT License - free to use in any project. See [LICENSE](LICENSE) for details.
|
|
217
|
+
MIT License - the CLI is free to use in any project. Pro/Team/Enterprise features require a paid subscription. See [LICENSE](LICENSE) for details.
|
|
218
|
+
|
|
219
|
+
## Legal
|
|
220
|
+
|
|
221
|
+
- [Privacy Policy](https://vibebuildlab.com/privacy-policy)
|
|
222
|
+
- [Terms of Service](https://vibebuildlab.com/terms)
|
|
209
223
|
|
|
210
224
|
---
|
|
211
225
|
|
|
212
|
-
>
|
|
226
|
+
> **Vibe Build Lab LLC** · [vibebuildlab.com](https://vibebuildlab.com)
|
|
@@ -13,6 +13,16 @@
|
|
|
13
13
|
* - Conversion landing page
|
|
14
14
|
* - Beta user email campaigns
|
|
15
15
|
* - Upgrade prompts and messaging
|
|
16
|
+
*
|
|
17
|
+
* Roadmap / Future Ideas:
|
|
18
|
+
* - Extract licensing to shared npm package (@vibebuildlab/licensing)
|
|
19
|
+
* - Single source of truth across all Vibe Lab products
|
|
20
|
+
* - Central license server with one API for all products
|
|
21
|
+
* - Device/activation limits (optional enforcement)
|
|
22
|
+
* - License revocation for chargebacks
|
|
23
|
+
* - Team/seat-based licensing with org management
|
|
24
|
+
* - SSO/SAML integration for Enterprise tier
|
|
25
|
+
* - Usage-based billing option (metered pricing)
|
|
16
26
|
*/
|
|
17
27
|
|
|
18
28
|
'use strict'
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# Architecture
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
QA Architect is a CLI tool that bootstraps quality automation in JavaScript/TypeScript and Python projects.
|
|
6
|
+
|
|
7
|
+
## Core Components
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
create-qa-architect/
|
|
11
|
+
├── setup.js # Main CLI entry point
|
|
12
|
+
├── lib/
|
|
13
|
+
│ ├── smart-strategy-generator.js # Smart test strategy (Pro)
|
|
14
|
+
│ ├── dependency-monitoring-*.js # Dependency monitoring
|
|
15
|
+
│ └── validation/ # Validation utilities
|
|
16
|
+
├── templates/ # Project templates
|
|
17
|
+
│ ├── eslint.config.cjs
|
|
18
|
+
│ ├── .prettierrc
|
|
19
|
+
│ ├── .husky/
|
|
20
|
+
│ └── scripts/
|
|
21
|
+
└── config/ # Language-specific configs
|
|
22
|
+
├── pyproject.toml
|
|
23
|
+
└── quality-python.yml
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Data Flow
|
|
27
|
+
|
|
28
|
+
1. **Detection Phase**: Detect project type (JS/TS/Python/mixed)
|
|
29
|
+
2. **Configuration Phase**: Generate appropriate configs
|
|
30
|
+
3. **Installation Phase**: Copy templates, update package.json
|
|
31
|
+
4. **Validation Phase**: Verify setup is complete
|
|
32
|
+
|
|
33
|
+
## Extension Points
|
|
34
|
+
|
|
35
|
+
- Custom templates via `--template` flag
|
|
36
|
+
- Language detection can be extended in `setup.js`
|
|
37
|
+
- New quality checks via template files
|
|
38
|
+
|
|
39
|
+
## Smart Test Strategy (Pro)
|
|
40
|
+
|
|
41
|
+
Risk-based pre-push validation that adapts to change context:
|
|
42
|
+
|
|
43
|
+
1. Calculate risk score (0-10) based on files changed
|
|
44
|
+
2. Select appropriate test tier (minimal → comprehensive)
|
|
45
|
+
3. Run tests with appropriate depth
|
|
46
|
+
|
|
47
|
+
## CLI Flags
|
|
48
|
+
|
|
49
|
+
- `--update` - Update existing setup
|
|
50
|
+
- `--deps` - Dependency monitoring only
|
|
51
|
+
- `--security-config` - Security validation
|
|
52
|
+
- `--check-maturity` - Project maturity report
|
|
53
|
+
- `--comprehensive` - Full validation suite
|
|
54
|
+
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Deployment Guide
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
QA Architect is published to npm as `create-qa-architect`.
|
|
6
|
+
|
|
7
|
+
## Prerequisites
|
|
8
|
+
|
|
9
|
+
- Node.js 20+
|
|
10
|
+
- npm account with publish access
|
|
11
|
+
- Git repository access
|
|
12
|
+
|
|
13
|
+
## Release Process
|
|
14
|
+
|
|
15
|
+
### 1. Pre-Release Validation
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
npm run prerelease # Run all tests and validations
|
|
19
|
+
npm run test:coverage # Verify coverage thresholds
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### 2. Version Bump
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
npm run release:patch # Bug fixes (1.0.x)
|
|
26
|
+
npm run release:minor # New features (1.x.0)
|
|
27
|
+
npm run release:major # Breaking changes (x.0.0)
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### 3. Publish
|
|
31
|
+
|
|
32
|
+
GitHub Actions automatically publishes on tagged releases.
|
|
33
|
+
|
|
34
|
+
For manual publish:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
npm publish
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Verification
|
|
41
|
+
|
|
42
|
+
After release, verify:
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
npx create-qa-architect@latest --version
|
|
46
|
+
npx create-qa-architect@latest --help
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Rollback
|
|
50
|
+
|
|
51
|
+
If issues are discovered:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
npm unpublish create-qa-architect@VERSION
|
|
55
|
+
# or
|
|
56
|
+
npm deprecate create-qa-architect@VERSION "Critical bug, use VERSION instead"
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## npm Registry
|
|
60
|
+
|
|
61
|
+
- Package: https://www.npmjs.com/package/create-qa-architect
|
|
62
|
+
- Documentation: https://github.com/vibebuildlab/create-qa-architect
|
|
63
|
+
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Quality Gates & Merge Readiness (Default Recommendations)
|
|
2
|
+
|
|
3
|
+
These defaults are meant to give teams a simple, enforceable bar. They are intentionally conservative so most repos can adopt them on day one without re-architecting.
|
|
4
|
+
|
|
5
|
+
## Targets
|
|
6
|
+
|
|
7
|
+
- Coverage: **80%** (line) for critical paths; **70%** repo-wide minimum.
|
|
8
|
+
- Lint: **0** blocking ESLint/Stylelint errors; warnings allowed but surface in PR comment/summary.
|
|
9
|
+
- Secrets: **0** leaked secrets (gitleaks hard fail).
|
|
10
|
+
- Dependency vulns: No **high/critical** advisories (npm/yarn/pnpm audit). Medium allowed with justification.
|
|
11
|
+
- Performance budgets (CI): installs < 2m; test suite < 5m (already enforced in workflow).
|
|
12
|
+
|
|
13
|
+
## How to enforce
|
|
14
|
+
|
|
15
|
+
- GitHub Actions: quality.yml is wired to fail on lint/scan/test failures. Set env `MIN_COVERAGE=80` to gate on coverage (add a coverage reporter such as `c8` or `vitest --coverage`).
|
|
16
|
+
- Branch protection: require the “Quality Checks” workflow to pass; enable dismiss stale approvals on push.
|
|
17
|
+
- PR comments: run setup with `--pr-comments` to surface gate status in the PR thread.
|
|
18
|
+
- Alerts: run setup with `--alerts-slack` to post failures to Slack.
|
|
19
|
+
|
|
20
|
+
## Exceptions
|
|
21
|
+
|
|
22
|
+
- Allow temporary waivers via labels (e.g., `risk-accepted`) and document in the PR body.
|
|
23
|
+
- Lower coverage floors for greenfield proofs-of-concept (set `MIN_COVERAGE=60`) but time-box the exemption.
|
|
24
|
+
|
|
25
|
+
## Next steps
|
|
26
|
+
|
|
27
|
+
- Add repo-specific risk areas to `.qualityrc.json` under `riskAreas`.
|
|
28
|
+
- Track SLA drift in reports (future: audit log + team dashboard hooks).
|
package/docs/TESTING.md
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# Testing Strategy
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
QA Architect uses Jest for testing with a focus on integration tests that validate real CLI workflows.
|
|
6
|
+
|
|
7
|
+
## Running Tests
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm test # Run all tests
|
|
11
|
+
npm run test:coverage # Run with coverage report
|
|
12
|
+
npm run test:watch # Watch mode for development
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Test Structure
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
tests/
|
|
19
|
+
├── setup.test.js # Main CLI integration tests
|
|
20
|
+
├── cli-deps-integration.test.js # Dependency CLI tests
|
|
21
|
+
├── real-world-packages.test.js # Real package validation
|
|
22
|
+
└── premium-dependency-monitoring.test.js # Pro feature tests
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Coverage Requirements
|
|
26
|
+
|
|
27
|
+
- **Overall**: 75%+ lines, statements, functions, branches
|
|
28
|
+
- **New files**: 75%+ coverage before merging
|
|
29
|
+
- **Critical files**: `setup.js` requires 80%+
|
|
30
|
+
|
|
31
|
+
## Testing Patterns
|
|
32
|
+
|
|
33
|
+
### Integration Tests
|
|
34
|
+
|
|
35
|
+
Test real CLI workflows with temp directories:
|
|
36
|
+
|
|
37
|
+
```javascript
|
|
38
|
+
const testDir = createTempGitRepo()
|
|
39
|
+
const result = execSync('node setup.js --deps', { cwd: testDir })
|
|
40
|
+
assert(fs.existsSync(path.join(testDir, '.github/dependabot.yml')))
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### Real-World Data
|
|
44
|
+
|
|
45
|
+
Use real packages from the ecosystem, not toy examples:
|
|
46
|
+
|
|
47
|
+
```javascript
|
|
48
|
+
const TOP_PYTHON_PACKAGES = [
|
|
49
|
+
'django-cors-headers',
|
|
50
|
+
'scikit-learn',
|
|
51
|
+
'pytest-cov'
|
|
52
|
+
]
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Pre-Release Validation
|
|
56
|
+
|
|
57
|
+
Always run before release:
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
npm run prerelease # Runs docs:check + all tests
|
|
61
|
+
```
|
|
62
|
+
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# SOC 2 Starter (Preflight Checklist)
|
|
2
|
+
|
|
3
|
+
This starter doc is a lightweight preflight for teams using QA Architect. It is not a substitute for a real SOC 2 program, but it maps common CI/quality controls to SOC 2 CC/PII areas.
|
|
4
|
+
|
|
5
|
+
## Controls to Wire First
|
|
6
|
+
|
|
7
|
+
- **Change Management (CC8.1):** Require PR review + Quality Checks workflow pass; enable branch protection on main.
|
|
8
|
+
- **Secure SDLC (CC6.1):** Keep ESLint security, gitleaks, dependency audit steps enabled; document exceptions in PRs.
|
|
9
|
+
- **Logging & Alerts (CC7.2):** Turn on Slack alerts via `--alerts-slack` and keep CI logs for 90 days.
|
|
10
|
+
- **Backup of Config (CC9.2):** Check in `.qualityrc.json`, `quality.yml`, and Dependabot configs; avoid secrets in repo.
|
|
11
|
+
- **Access (CC6.2):** Use least-privilege GitHub tokens; rotate `GITLEAKS_TOKEN`/`SEMGREP_APP_TOKEN` every 90 days.
|
|
12
|
+
|
|
13
|
+
## Evidence You Can Collect Today
|
|
14
|
+
|
|
15
|
+
- CI run artifacts showing lint/test/security passes.
|
|
16
|
+
- Dependency audit reports (npm audit logs) and gitleaks scan results.
|
|
17
|
+
- Coverage reports (c8/Vitest/Jest) stored in artifacts.
|
|
18
|
+
- PR comments from quality workflow (when `--pr-comments` is enabled).
|
|
19
|
+
|
|
20
|
+
## Gaps to plan for
|
|
21
|
+
|
|
22
|
+
- **SSO/SAML & RBAC:** Roadmap item (Enterprise); track in issue tracker.
|
|
23
|
+
- **Audit logging:** Add a central log sink (e.g., S3/CloudWatch) for CI events.
|
|
24
|
+
- **Vendor risk:** Document third-party actions; pin SHAs (already pinned in quality.yml) and review quarterly.
|
|
25
|
+
|
|
26
|
+
## How to use this file
|
|
27
|
+
|
|
28
|
+
- Keep it checked in; edit per repo to note exceptions and waivers.
|
|
29
|
+
- Link it in onboarding docs so new contributors know the expected bar.
|
|
@@ -17,6 +17,7 @@ function hasNpmProject(projectPath) {
|
|
|
17
17
|
/**
|
|
18
18
|
* Generate basic Dependabot configuration (Free Tier)
|
|
19
19
|
* Limited to npm only, no framework detection, basic settings
|
|
20
|
+
* Supports monorepo per-package directories
|
|
20
21
|
*/
|
|
21
22
|
function generateBasicDependabotConfig(options = {}) {
|
|
22
23
|
const {
|
|
@@ -24,49 +25,95 @@ function generateBasicDependabotConfig(options = {}) {
|
|
|
24
25
|
schedule = 'weekly',
|
|
25
26
|
day = 'monday',
|
|
26
27
|
time = '09:00',
|
|
28
|
+
monorepoInfo = null, // Optional monorepo detection result
|
|
27
29
|
} = options
|
|
28
30
|
|
|
29
31
|
if (!hasNpmProject(projectPath)) {
|
|
30
32
|
return null // Only npm projects supported in free tier
|
|
31
33
|
}
|
|
32
34
|
|
|
33
|
-
const
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
35
|
+
const updates = []
|
|
36
|
+
|
|
37
|
+
// If monorepo with resolved packages, create per-package entries
|
|
38
|
+
if (
|
|
39
|
+
monorepoInfo &&
|
|
40
|
+
monorepoInfo.isMonorepo &&
|
|
41
|
+
monorepoInfo.resolvedPackages &&
|
|
42
|
+
monorepoInfo.resolvedPackages.length > 0
|
|
43
|
+
) {
|
|
44
|
+
// Root package
|
|
45
|
+
updates.push({
|
|
46
|
+
'package-ecosystem': 'npm',
|
|
47
|
+
directory: '/',
|
|
48
|
+
schedule: {
|
|
49
|
+
interval: schedule,
|
|
50
|
+
day: day,
|
|
51
|
+
time: time,
|
|
52
|
+
},
|
|
53
|
+
'open-pull-requests-limit': 5,
|
|
54
|
+
labels: ['dependencies', 'root'],
|
|
55
|
+
'commit-message': {
|
|
56
|
+
prefix: 'deps(root)',
|
|
57
|
+
include: 'scope',
|
|
58
|
+
},
|
|
59
|
+
})
|
|
60
|
+
|
|
61
|
+
// Per-package entries
|
|
62
|
+
for (const pkg of monorepoInfo.resolvedPackages) {
|
|
63
|
+
const dir = '/' + pkg.relativePath.replace(/\\/g, '/')
|
|
64
|
+
updates.push({
|
|
37
65
|
'package-ecosystem': 'npm',
|
|
38
|
-
directory:
|
|
66
|
+
directory: dir,
|
|
39
67
|
schedule: {
|
|
40
68
|
interval: schedule,
|
|
41
69
|
day: day,
|
|
42
70
|
time: time,
|
|
43
71
|
},
|
|
44
|
-
'open-pull-requests-limit':
|
|
45
|
-
labels: ['dependencies'],
|
|
72
|
+
'open-pull-requests-limit': 3,
|
|
73
|
+
labels: ['dependencies', pkg.name],
|
|
46
74
|
'commit-message': {
|
|
47
|
-
prefix:
|
|
75
|
+
prefix: `deps(${pkg.name})`,
|
|
48
76
|
include: 'scope',
|
|
49
77
|
},
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
78
|
+
})
|
|
79
|
+
}
|
|
80
|
+
} else {
|
|
81
|
+
// Single package (non-monorepo)
|
|
82
|
+
updates.push({
|
|
83
|
+
'package-ecosystem': 'npm',
|
|
84
|
+
directory: '/',
|
|
85
|
+
schedule: {
|
|
86
|
+
interval: schedule,
|
|
87
|
+
day: day,
|
|
88
|
+
time: time,
|
|
54
89
|
},
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
interval: schedule,
|
|
61
|
-
day: day,
|
|
62
|
-
time: time,
|
|
63
|
-
},
|
|
64
|
-
labels: ['dependencies', 'github-actions'],
|
|
65
|
-
'commit-message': {
|
|
66
|
-
prefix: 'deps(actions)',
|
|
67
|
-
},
|
|
90
|
+
'open-pull-requests-limit': 5,
|
|
91
|
+
labels: ['dependencies'],
|
|
92
|
+
'commit-message': {
|
|
93
|
+
prefix: 'deps',
|
|
94
|
+
include: 'scope',
|
|
68
95
|
},
|
|
69
|
-
|
|
96
|
+
})
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
// GitHub Actions monitoring (free tier includes this)
|
|
100
|
+
updates.push({
|
|
101
|
+
'package-ecosystem': 'github-actions',
|
|
102
|
+
directory: '/',
|
|
103
|
+
schedule: {
|
|
104
|
+
interval: schedule,
|
|
105
|
+
day: day,
|
|
106
|
+
time: time,
|
|
107
|
+
},
|
|
108
|
+
labels: ['dependencies', 'github-actions'],
|
|
109
|
+
'commit-message': {
|
|
110
|
+
prefix: 'deps(actions)',
|
|
111
|
+
},
|
|
112
|
+
})
|
|
113
|
+
|
|
114
|
+
const config = {
|
|
115
|
+
version: 2,
|
|
116
|
+
updates: updates,
|
|
70
117
|
}
|
|
71
118
|
|
|
72
119
|
return config
|
package/lib/licensing.js
CHANGED
|
@@ -396,7 +396,7 @@ function showUpgradeMessage(feature) {
|
|
|
396
396
|
console.log('')
|
|
397
397
|
console.log(' 🎁 Start 14-day free trial - no credit card required')
|
|
398
398
|
console.log('')
|
|
399
|
-
console.log('🚀 Upgrade: https://vibebuildlab.com/
|
|
399
|
+
console.log('🚀 Upgrade: https://vibebuildlab.com/qaa')
|
|
400
400
|
console.log(
|
|
401
401
|
'🔑 Activate: npx create-qa-architect@latest --activate-license'
|
|
402
402
|
)
|
|
@@ -414,7 +414,7 @@ function showUpgradeMessage(feature) {
|
|
|
414
414
|
console.log(' ✅ Slack/email alerts for failures')
|
|
415
415
|
console.log(' ✅ Priority support (business hours)')
|
|
416
416
|
console.log('')
|
|
417
|
-
console.log('👥 Upgrade: https://vibebuildlab.com/
|
|
417
|
+
console.log('👥 Upgrade: https://vibebuildlab.com/qaa/team')
|
|
418
418
|
} else if (license.tier === LICENSE_TIERS.TEAM) {
|
|
419
419
|
console.log('\n🏢 Upgrade to ENTERPRISE - $249/month (annual) + onboarding')
|
|
420
420
|
console.log('')
|
|
@@ -795,7 +795,8 @@ function checkUsageCaps(operation = 'general') {
|
|
|
795
795
|
usage: {
|
|
796
796
|
prePushRuns: usage.prePushRuns,
|
|
797
797
|
dependencyPRs: usage.dependencyPRs,
|
|
798
|
-
repos: usage.repos
|
|
798
|
+
repos: usage.repos || [],
|
|
799
|
+
repoCount: (usage.repos || []).length,
|
|
799
800
|
},
|
|
800
801
|
caps: {
|
|
801
802
|
maxPrePushRunsPerMonth: caps.maxPrePushRunsPerMonth,
|
|
@@ -957,7 +958,7 @@ function showLicenseStatus() {
|
|
|
957
958
|
// Show upgrade path
|
|
958
959
|
if (license.tier === LICENSE_TIERS.FREE) {
|
|
959
960
|
console.log('\n💡 Upgrade to PRO for unlimited access + security scanning')
|
|
960
|
-
console.log(' → https://vibebuildlab.com/
|
|
961
|
+
console.log(' → https://vibebuildlab.com/qaa')
|
|
961
962
|
}
|
|
962
963
|
}
|
|
963
964
|
|