create-qa-architect 5.12.1 → 5.13.3
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/dependabot.yml +10 -30
- package/.github/workflows/claude-md-validation.yml +5 -7
- package/.github/workflows/dependabot-auto-merge.yml +1 -0
- package/.github/workflows/quality.yml +26 -12
- package/.github/workflows/release.yml +2 -1
- package/.github/workflows/stale-prs.yml +42 -0
- package/.github/workflows/weekly-gitleaks-verification.yml +6 -4
- package/LICENSE +5 -5
- package/README.md +22 -21
- package/config/defaults.js +2 -3
- package/config/quality-config.schema.json +1 -1
- package/docs/CI-COST-ANALYSIS.md +8 -8
- package/docs/DEPLOYMENT.md +1 -1
- package/docs/DEVELOPMENT-WORKFLOW.md +2 -2
- package/docs/TURBOREPO-SUPPORT.md +3 -3
- package/docs/dev_guide/CONVENTIONS.md +132 -0
- package/eslint.config.cjs +25 -0
- package/lib/blob-storage.js +57 -0
- package/lib/commands/analyze-ci.js +267 -27
- package/lib/commands/deps.js +5 -5
- package/lib/commands/license-commands.js +2 -2
- package/lib/commands/maturity-check.js +20 -2
- package/lib/dependency-monitoring-basic.js +4 -4
- package/lib/dependency-monitoring-premium.js +5 -5
- package/lib/license-validator.js +2 -2
- package/lib/licensing.js +7 -9
- package/lib/smart-strategy-generator.js +1 -1
- package/lib/validation/documentation.js +2 -0
- package/lib/workflow-config.js +176 -73
- package/package.json +53 -23
- package/scripts/deploy-consumers.sh +369 -0
- package/scripts/pattern-check.sh +607 -0
- package/scripts/run-semgrep.sh +244 -0
- package/scripts/smart-test-strategy.sh +1 -1
- package/setup.js +119 -71
- package/templates/CLAUDE_WORKFLOW_POLICY.md +3 -3
- package/templates/scripts/smart-test-strategy.sh +1 -1
- package/.github/workflows/auto-release.yml +0 -39
package/.github/dependabot.yml
CHANGED
|
@@ -1,50 +1,30 @@
|
|
|
1
|
-
# Dependabot configuration
|
|
2
|
-
#
|
|
1
|
+
# Dependabot configuration — optimized to reduce CI minutes
|
|
2
|
+
# Monthly updates, grouped aggressively, limited PRs
|
|
3
3
|
|
|
4
4
|
version: 2
|
|
5
5
|
updates:
|
|
6
|
-
# npm dependencies
|
|
7
6
|
- package-ecosystem: 'npm'
|
|
8
7
|
directory: '/'
|
|
9
8
|
schedule:
|
|
10
|
-
interval: '
|
|
11
|
-
|
|
12
|
-
time: '09:00'
|
|
13
|
-
open-pull-requests-limit: 5
|
|
14
|
-
reviewers:
|
|
15
|
-
- 'brettstark73'
|
|
16
|
-
# Group non-security updates for easier review
|
|
17
|
-
groups:
|
|
18
|
-
development-dependencies:
|
|
19
|
-
dependency-type: 'development'
|
|
20
|
-
update-types: ['patch', 'minor']
|
|
21
|
-
production-dependencies:
|
|
22
|
-
dependency-type: 'production'
|
|
23
|
-
update-types: ['patch', 'minor']
|
|
24
|
-
# Separate security updates (always create individual PRs)
|
|
9
|
+
interval: 'monthly'
|
|
10
|
+
open-pull-requests-limit: 2
|
|
25
11
|
labels:
|
|
26
12
|
- 'dependencies'
|
|
27
|
-
- 'automated'
|
|
28
13
|
commit-message:
|
|
29
14
|
prefix: 'chore(deps)'
|
|
30
15
|
include: 'scope'
|
|
31
|
-
|
|
32
|
-
|
|
16
|
+
groups:
|
|
17
|
+
all-dependencies:
|
|
18
|
+
patterns:
|
|
19
|
+
- '*'
|
|
33
20
|
|
|
34
|
-
# GitHub Actions
|
|
35
21
|
- package-ecosystem: 'github-actions'
|
|
36
22
|
directory: '/'
|
|
37
23
|
schedule:
|
|
38
|
-
interval: '
|
|
39
|
-
|
|
40
|
-
time: '10:00'
|
|
41
|
-
open-pull-requests-limit: 3
|
|
42
|
-
reviewers:
|
|
43
|
-
- 'brettstark73'
|
|
24
|
+
interval: 'monthly'
|
|
25
|
+
open-pull-requests-limit: 1
|
|
44
26
|
labels:
|
|
45
27
|
- 'dependencies'
|
|
46
28
|
- 'github-actions'
|
|
47
|
-
- 'automated'
|
|
48
29
|
commit-message:
|
|
49
30
|
prefix: 'ci'
|
|
50
|
-
include: 'scope'
|
|
@@ -1,13 +1,6 @@
|
|
|
1
1
|
name: CLAUDE.md Validation
|
|
2
2
|
|
|
3
3
|
on:
|
|
4
|
-
push:
|
|
5
|
-
branches: [main, master, develop]
|
|
6
|
-
paths:
|
|
7
|
-
- 'CLAUDE.md'
|
|
8
|
-
- 'package.json'
|
|
9
|
-
- 'scripts/validate-claude-md.js'
|
|
10
|
-
- '.github/workflows/claude-md-validation.yml'
|
|
11
4
|
pull_request:
|
|
12
5
|
branches: [main, master, develop]
|
|
13
6
|
paths:
|
|
@@ -20,6 +13,11 @@ on:
|
|
|
20
13
|
jobs:
|
|
21
14
|
validate-claude-md:
|
|
22
15
|
runs-on: ubuntu-latest
|
|
16
|
+
<<<<<<< HEAD
|
|
17
|
+
if: github.actor != 'dependabot[bot]' || github.event_name != 'pull_request'
|
|
18
|
+
=======
|
|
19
|
+
timeout-minutes: 10
|
|
20
|
+
>>>>>>> 5fbc311 (chore: optimize CI — monthly crons, timeouts, deduplicate)
|
|
23
21
|
name: Validate CLAUDE.md Consistency
|
|
24
22
|
|
|
25
23
|
steps:
|
|
@@ -10,7 +10,7 @@ name: Quality Checks
|
|
|
10
10
|
# This avoids redundant work and reduces CI costs
|
|
11
11
|
|
|
12
12
|
on:
|
|
13
|
-
push:
|
|
13
|
+
push: # Kept: catches direct pushes and scheduled scans
|
|
14
14
|
branches: [main, master, develop]
|
|
15
15
|
paths-ignore:
|
|
16
16
|
- '**.md'
|
|
@@ -20,8 +20,14 @@ on:
|
|
|
20
20
|
- '.editorconfig'
|
|
21
21
|
pull_request:
|
|
22
22
|
branches: [main, master, develop]
|
|
23
|
+
paths-ignore:
|
|
24
|
+
- '**.md'
|
|
25
|
+
- 'docs/**'
|
|
26
|
+
- 'LICENSE'
|
|
27
|
+
- '.gitignore'
|
|
28
|
+
- '.editorconfig'
|
|
23
29
|
schedule:
|
|
24
|
-
- cron: '0 0 * *
|
|
30
|
+
- cron: '0 0 1 * *' # Monthly on 1st (security scans)
|
|
25
31
|
workflow_dispatch: # Manual trigger
|
|
26
32
|
|
|
27
33
|
# Prevent duplicate runs - cancel in-progress when new commit pushed
|
|
@@ -36,6 +42,7 @@ jobs:
|
|
|
36
42
|
# This reduces GitHub Actions minutes by ~50% on active repos
|
|
37
43
|
detect-maturity:
|
|
38
44
|
runs-on: ubuntu-latest
|
|
45
|
+
timeout-minutes: 10
|
|
39
46
|
if: github.actor != 'dependabot[bot]' || github.event_name == 'schedule'
|
|
40
47
|
outputs:
|
|
41
48
|
maturity: ${{ steps.detect.outputs.maturity }}
|
|
@@ -101,19 +108,18 @@ jobs:
|
|
|
101
108
|
with:
|
|
102
109
|
bun-version: '1.0.0'
|
|
103
110
|
|
|
104
|
-
|
|
105
|
-
run: ${{ steps.detect-pm.outputs.install-cmd }}
|
|
106
|
-
|
|
111
|
+
# {{FULL_DETECTION_BEGIN}}
|
|
107
112
|
- name: Detect Project Maturity
|
|
108
113
|
id: detect
|
|
109
114
|
run: |
|
|
110
|
-
# Use the project maturity detector (local for qa-architect itself,
|
|
115
|
+
# Use the project maturity detector (local for qa-architect itself, npx for consumer projects)
|
|
111
116
|
if [ -f lib/project-maturity.js ]; then
|
|
112
117
|
node lib/project-maturity.js --github-actions >> $GITHUB_OUTPUT
|
|
113
118
|
else
|
|
114
|
-
|
|
119
|
+
npx create-qa-architect@latest --check-maturity --github-actions >> $GITHUB_OUTPUT
|
|
115
120
|
fi
|
|
116
|
-
|
|
121
|
+
# {{FULL_DETECTION_END}}
|
|
122
|
+
# {{FULL_REPORT_BEGIN}}
|
|
117
123
|
- name: Display Detection Report
|
|
118
124
|
run: |
|
|
119
125
|
echo "📊 Project Detection Results"
|
|
@@ -126,6 +132,7 @@ jobs:
|
|
|
126
132
|
echo "Has dependencies: ${{ steps.detect.outputs.has-deps }}"
|
|
127
133
|
echo "Has documentation: ${{ steps.detect.outputs.has-docs }}"
|
|
128
134
|
echo "Has CSS files: ${{ steps.detect.outputs.has-css }}"
|
|
135
|
+
# {{FULL_REPORT_END}}
|
|
129
136
|
|
|
130
137
|
# Note: Lint/format jobs REMOVED - pre-commit already does this locally
|
|
131
138
|
# This follows industry best practice: "Each layer does unique work"
|
|
@@ -143,6 +150,7 @@ jobs:
|
|
|
143
150
|
# provide better reliability on GHES/self-hosted and unlock premium features
|
|
144
151
|
security:
|
|
145
152
|
runs-on: ubuntu-latest
|
|
153
|
+
timeout-minutes: 10
|
|
146
154
|
needs: detect-maturity
|
|
147
155
|
if: (github.event_name == 'schedule' || github.event_name == 'workflow_dispatch') && needs.detect-maturity.outputs.has-deps == 'true'
|
|
148
156
|
|
|
@@ -251,7 +259,7 @@ jobs:
|
|
|
251
259
|
if [ -f setup.js ]; then
|
|
252
260
|
node setup.js --security-config
|
|
253
261
|
else
|
|
254
|
-
|
|
262
|
+
npx create-qa-architect@latest --security-config
|
|
255
263
|
fi
|
|
256
264
|
|
|
257
265
|
- name: Security pattern detection
|
|
@@ -274,6 +282,7 @@ jobs:
|
|
|
274
282
|
# Smart skip: Draft PRs skip tests (saves CI costs during WIP)
|
|
275
283
|
tests:
|
|
276
284
|
runs-on: ubuntu-latest
|
|
285
|
+
timeout-minutes: 10
|
|
277
286
|
needs: detect-maturity
|
|
278
287
|
if: |
|
|
279
288
|
fromJSON(needs.detect-maturity.outputs.test-count) > 0 &&
|
|
@@ -330,6 +339,7 @@ jobs:
|
|
|
330
339
|
exit 1
|
|
331
340
|
}
|
|
332
341
|
|
|
342
|
+
# {{QA_ARCHITECT_ONLY_BEGIN}}
|
|
333
343
|
- name: Cache gitleaks binary for real download test
|
|
334
344
|
if: runner.os == 'Linux'
|
|
335
345
|
uses: actions/cache@v5
|
|
@@ -345,10 +355,12 @@ jobs:
|
|
|
345
355
|
run: |
|
|
346
356
|
echo "🔐 Running real gitleaks binary verification test..."
|
|
347
357
|
QAA_DEVELOPER=true RUN_REAL_BINARY_TEST=1 node tests/gitleaks-real-binary-test.js
|
|
358
|
+
# {{QA_ARCHITECT_ONLY_END}}
|
|
348
359
|
|
|
349
360
|
# Step 4: Documentation - run for production-ready projects
|
|
350
361
|
documentation:
|
|
351
362
|
runs-on: ubuntu-latest
|
|
363
|
+
timeout-minutes: 10
|
|
352
364
|
needs: detect-maturity
|
|
353
365
|
if: needs.detect-maturity.outputs.maturity == 'production-ready'
|
|
354
366
|
|
|
@@ -383,7 +395,7 @@ jobs:
|
|
|
383
395
|
if [ -f setup.js ]; then
|
|
384
396
|
node setup.js --security-config
|
|
385
397
|
else
|
|
386
|
-
|
|
398
|
+
npx create-qa-architect@latest --security-config
|
|
387
399
|
fi
|
|
388
400
|
|
|
389
401
|
- name: Documentation validation
|
|
@@ -392,17 +404,18 @@ jobs:
|
|
|
392
404
|
if [ -f setup.js ]; then
|
|
393
405
|
node setup.js --validate-docs
|
|
394
406
|
else
|
|
395
|
-
|
|
407
|
+
npx create-qa-architect@latest --validate-docs
|
|
396
408
|
fi
|
|
397
409
|
|
|
398
410
|
- name: Documentation consistency and security audit freshness
|
|
411
|
+
continue-on-error: true
|
|
399
412
|
run: |
|
|
400
413
|
echo "🔐 Running comprehensive documentation validation..."
|
|
401
414
|
# This includes security audit freshness check with proper git-based validation
|
|
402
415
|
if [ -f scripts/check-docs.sh ]; then
|
|
403
416
|
bash scripts/check-docs.sh
|
|
404
417
|
else
|
|
405
|
-
|
|
418
|
+
echo "No check-docs.sh found - skipping documentation consistency check"
|
|
406
419
|
fi
|
|
407
420
|
|
|
408
421
|
- name: Package size and contents validation
|
|
@@ -489,6 +502,7 @@ jobs:
|
|
|
489
502
|
# Step 5: Summary - report what checks ran
|
|
490
503
|
summary:
|
|
491
504
|
runs-on: ubuntu-latest
|
|
505
|
+
timeout-minutes: 10
|
|
492
506
|
needs:
|
|
493
507
|
- detect-maturity
|
|
494
508
|
- security
|
|
@@ -11,6 +11,7 @@ permissions:
|
|
|
11
11
|
jobs:
|
|
12
12
|
release:
|
|
13
13
|
runs-on: ubuntu-latest
|
|
14
|
+
timeout-minutes: 10
|
|
14
15
|
steps:
|
|
15
16
|
- name: Checkout code
|
|
16
17
|
uses: actions/checkout@v4
|
|
@@ -35,7 +36,7 @@ jobs:
|
|
|
35
36
|
CI: 'true'
|
|
36
37
|
|
|
37
38
|
- name: Publish to npm with provenance
|
|
38
|
-
run: npm publish --provenance
|
|
39
|
+
run: npm publish --provenance --access public
|
|
39
40
|
|
|
40
41
|
- name: Create GitHub Release
|
|
41
42
|
uses: softprops/action-gh-release@v2
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
name: Stale PR Cleanup
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
schedule:
|
|
5
|
+
# Daily at 6am CT (11:00 UTC)
|
|
6
|
+
- cron: '0 11 * * *'
|
|
7
|
+
workflow_dispatch:
|
|
8
|
+
|
|
9
|
+
permissions:
|
|
10
|
+
contents: write
|
|
11
|
+
pull-requests: write
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
stale:
|
|
15
|
+
timeout-minutes: 5
|
|
16
|
+
runs-on: ubuntu-latest
|
|
17
|
+
steps:
|
|
18
|
+
- uses: actions/stale@v9
|
|
19
|
+
with:
|
|
20
|
+
# PRs only — skip issues entirely
|
|
21
|
+
days-before-issue-stale: -1
|
|
22
|
+
days-before-issue-close: -1
|
|
23
|
+
|
|
24
|
+
# Warn at 24h, close at 48h
|
|
25
|
+
days-before-pr-stale: 1
|
|
26
|
+
days-before-pr-close: 1
|
|
27
|
+
|
|
28
|
+
stale-pr-label: stale
|
|
29
|
+
stale-pr-message: >
|
|
30
|
+
This PR is 24h old. Please merge or close to avoid merge conflicts.
|
|
31
|
+
close-pr-message: >
|
|
32
|
+
Auto-closed: PR exceeded 48h without merge. Re-open and rebase if still needed.
|
|
33
|
+
|
|
34
|
+
# Exemptions
|
|
35
|
+
exempt-pr-labels: 'do-not-close,wip'
|
|
36
|
+
exempt-all-pr-assignees: false
|
|
37
|
+
|
|
38
|
+
# Exempt dependabot PRs (author filter)
|
|
39
|
+
exempt-pr-authors: 'dependabot[bot],dependabot'
|
|
40
|
+
|
|
41
|
+
# CI minutes budget: process max 10 PRs per run
|
|
42
|
+
operations-per-run: 10
|
|
@@ -1,17 +1,18 @@
|
|
|
1
|
-
name:
|
|
1
|
+
name: Monthly Gitleaks Real Download Verification
|
|
2
2
|
|
|
3
|
-
# Run
|
|
3
|
+
# Run monthly to verify real gitleaks download and checksum verification
|
|
4
4
|
# This catches upstream asset changes, checksum drift, and download issues
|
|
5
5
|
on:
|
|
6
6
|
schedule:
|
|
7
|
-
# Run at 2 AM UTC
|
|
8
|
-
- cron: '0 2 * *
|
|
7
|
+
# Run at 2 AM UTC on the 1st of each month (monthly)
|
|
8
|
+
- cron: '0 2 1 * *'
|
|
9
9
|
workflow_dispatch: # Allow manual trigger
|
|
10
10
|
|
|
11
11
|
jobs:
|
|
12
12
|
real-download-verification:
|
|
13
13
|
name: Real Gitleaks Download Test (Linux x64)
|
|
14
14
|
runs-on: ubuntu-latest
|
|
15
|
+
timeout-minutes: 10
|
|
15
16
|
|
|
16
17
|
steps:
|
|
17
18
|
- name: Checkout code
|
|
@@ -136,6 +137,7 @@ jobs:
|
|
|
136
137
|
alert-on-failure:
|
|
137
138
|
name: Alert on Verification Failure
|
|
138
139
|
runs-on: ubuntu-latest
|
|
140
|
+
timeout-minutes: 10
|
|
139
141
|
needs: real-download-verification
|
|
140
142
|
if: failure()
|
|
141
143
|
|
package/LICENSE
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
VIBE BUILD LAB COMMERCIAL LICENSE
|
|
2
2
|
|
|
3
|
-
Copyright (c) 2025
|
|
3
|
+
Copyright (c) 2025 BuildProven. All rights reserved.
|
|
4
4
|
|
|
5
5
|
COMMERCIAL SOFTWARE - FREEMIUM MODEL
|
|
6
6
|
|
|
7
7
|
This software and associated documentation files (the "Software") are
|
|
8
|
-
proprietary commercial products of
|
|
8
|
+
proprietary commercial products of BuildProven.
|
|
9
9
|
|
|
10
10
|
TERMS OF USE:
|
|
11
11
|
|
|
@@ -58,9 +58,9 @@ TERMS OF USE:
|
|
|
58
58
|
IN NO EVENT SHALL VIBE BUILD LAB LLC BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
|
59
59
|
OTHER LIABILITY ARISING FROM THE USE OF THE SOFTWARE.
|
|
60
60
|
|
|
61
|
-
For licensing inquiries: support@
|
|
61
|
+
For licensing inquiries: support@buildproven.ai
|
|
62
62
|
|
|
63
63
|
---
|
|
64
64
|
|
|
65
|
-
|
|
66
|
-
https://
|
|
65
|
+
BuildProven
|
|
66
|
+
https://buildproven.ai
|
package/README.md
CHANGED
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
Quality automation CLI for JavaScript/TypeScript, Python, and shell script 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
4
|
|
|
5
|
-
**This repo = the free CLI.** For the Pro dashboard with repo analytics, CI integration, and automation workflows, see [QA Architect Pro](https://
|
|
5
|
+
**This repo = the free CLI.** For the Pro dashboard with repo analytics, CI integration, and automation workflows, see [QA Architect Pro](https://buildproven.ai/qa-architect) (included in BuildProven Starter Kit).
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
> **Maintainer & Ownership**
|
|
10
|
-
> This project is maintained by **
|
|
11
|
-
> Learn more at **https://
|
|
10
|
+
> This project is maintained by **BuildProven**, a studio focused on AI-assisted product development, micro-SaaS, and "vibe coding" workflows for solo founders and small teams.
|
|
11
|
+
> Learn more at **https://buildproven.ai**.
|
|
12
12
|
|
|
13
13
|
---
|
|
14
14
|
|
|
@@ -63,7 +63,7 @@ npx create-qa-architect@latest
|
|
|
63
63
|
| **Free** | $0 | CLI tool, basic linting/formatting, npm audit (capped: 1 private repo, 50 runs/mo) |
|
|
64
64
|
| **Pro** | $49/mo or $490/yr | **Security scanning (Gitleaks + ESLint security)**, Smart Test Strategy, multi-language, unlimited |
|
|
65
65
|
|
|
66
|
-
> **Pro included in [
|
|
66
|
+
> **Pro included in [BuildProven Starter Kit](https://buildproven.ai/starter-kit)**
|
|
67
67
|
|
|
68
68
|
### Security Features by Tier
|
|
69
69
|
|
|
@@ -102,7 +102,7 @@ npx create-qa-architect@latest
|
|
|
102
102
|
|
|
103
103
|
### Get Pro
|
|
104
104
|
|
|
105
|
-
**Purchase:** [
|
|
105
|
+
**Purchase:** [buildproven.ai/qa-architect](https://buildproven.ai/qa-architect)
|
|
106
106
|
|
|
107
107
|
After purchase, you'll receive a license key via email (QAA-XXXX-XXXX-XXXX-XXXX).
|
|
108
108
|
|
|
@@ -137,15 +137,16 @@ Note: CI does NOT re-run lint/format (pre-commit already did it). This avoids re
|
|
|
137
137
|
|
|
138
138
|
qa-architect defaults to **minimal CI** to avoid unexpected GitHub Actions bills. Choose the tier that matches your needs:
|
|
139
139
|
|
|
140
|
-
### Minimal (Default) -
|
|
140
|
+
### Minimal (Default) - Budget-First (<1000 min/month target)
|
|
141
141
|
|
|
142
142
|
**Best for:** Solo developers, side projects, open source
|
|
143
143
|
|
|
144
|
-
- Single Node version (22)
|
|
145
|
-
-
|
|
144
|
+
- Single Node version (22) detection workflow
|
|
145
|
+
- CI defaults to detection-only (tests/security/docs disabled in minimal mode)
|
|
146
|
+
- Security scans run monthly (not on every commit)
|
|
146
147
|
- Path filters skip CI for docs/README changes
|
|
147
|
-
- **Runtime:** ~
|
|
148
|
-
- **Est.
|
|
148
|
+
- **Runtime:** ~1-2 min/run
|
|
149
|
+
- **Est. usage target:** under ~1000 minutes/month by default
|
|
149
150
|
|
|
150
151
|
```bash
|
|
151
152
|
npx create-qa-architect@latest
|
|
@@ -157,8 +158,8 @@ npx create-qa-architect@latest --workflow-minimal
|
|
|
157
158
|
|
|
158
159
|
**Best for:** Small teams, client projects, production apps
|
|
159
160
|
|
|
160
|
-
-
|
|
161
|
-
- Security scans run
|
|
161
|
+
- Single Node 22 testing **only on main branch**
|
|
162
|
+
- Security scans run monthly
|
|
162
163
|
- Path filters enabled
|
|
163
164
|
- **Runtime:** ~15-20 min/commit
|
|
164
165
|
- **Est. cost:** ~$5-20/mo for typical projects
|
|
@@ -207,16 +208,14 @@ npx create-qa-architect@latest --update --workflow-minimal
|
|
|
207
208
|
- **Duplicate checks** (ESLint, tests, security scans run twice)
|
|
208
209
|
- **Unexpected billing** (easily exceeds GitHub's 2,000 min/month free tier)
|
|
209
210
|
|
|
210
|
-
**If you have both `ci.yml` and `quality.yml
|
|
211
|
+
**If you have both `ci.yml` and `quality.yml`, run:**
|
|
211
212
|
|
|
212
213
|
```bash
|
|
213
|
-
# Remove the duplicate ci.yml
|
|
214
|
-
rm .github/workflows/ci.yml
|
|
215
|
-
|
|
216
|
-
# Ensure quality.yml uses minimal mode
|
|
217
214
|
npx create-qa-architect@latest --update --workflow-minimal
|
|
218
215
|
```
|
|
219
216
|
|
|
217
|
+
`--update` now automatically removes known duplicate workflow names (`ci.yml`, `test.yml`, `tests.yml`, `quality-legacy.yml`) while preserving `quality.yml`.
|
|
218
|
+
|
|
220
219
|
The `quality.yml` workflow is adaptive - it runs appropriate checks based on your project's maturity level, so a separate `ci.yml` is unnecessary.
|
|
221
220
|
|
|
222
221
|
### Analyzing Your Costs (Pro Feature)
|
|
@@ -277,6 +276,8 @@ npm install
|
|
|
277
276
|
npm run lint
|
|
278
277
|
```
|
|
279
278
|
|
|
279
|
+
`--update` refreshes the existing `quality.yml` from the latest template while preserving the detected workflow tier and existing matrix setting unless you explicitly override the tier with `--workflow-minimal`, `--workflow-standard`, or `--workflow-comprehensive`.
|
|
280
|
+
|
|
280
281
|
### Dependency Monitoring (Free)
|
|
281
282
|
|
|
282
283
|
```bash
|
|
@@ -426,7 +427,7 @@ Pro tier ($49/mo or $490/yr) includes:
|
|
|
426
427
|
- Multi-language support (Python, Shell scripts)
|
|
427
428
|
- Unlimited private repos and runs
|
|
428
429
|
|
|
429
|
-
Purchase at [
|
|
430
|
+
Purchase at [buildproven.ai/qa-architect](https://buildproven.ai/qa-architect)
|
|
430
431
|
|
|
431
432
|
### Server-Side Setup (Maintainers Only)
|
|
432
433
|
|
|
@@ -449,9 +450,9 @@ Commercial freemium license — the base CLI is free to use; Pro features requir
|
|
|
449
450
|
|
|
450
451
|
## Legal
|
|
451
452
|
|
|
452
|
-
- [Privacy Policy](https://
|
|
453
|
-
- [Terms of Service](https://
|
|
453
|
+
- [Privacy Policy](https://buildproven.ai/privacy-policy)
|
|
454
|
+
- [Terms of Service](https://buildproven.ai/terms)
|
|
454
455
|
|
|
455
456
|
---
|
|
456
457
|
|
|
457
|
-
> **
|
|
458
|
+
> **BuildProven** · [buildproven.ai](https://buildproven.ai)
|
package/config/defaults.js
CHANGED
|
@@ -19,7 +19,7 @@ const baseScripts = {
|
|
|
19
19
|
'test:coverage': 'vitest run --coverage',
|
|
20
20
|
'test:changed': 'vitest run --changed HEAD~1 --passWithNoTests',
|
|
21
21
|
'security:audit':
|
|
22
|
-
'[ -f pnpm-lock.yaml ]
|
|
22
|
+
'if [ -f pnpm-lock.yaml ]; then pnpm audit --audit-level high; elif [ -f yarn.lock ]; then yarn audit; else npm audit --audit-level high; fi',
|
|
23
23
|
'security:secrets':
|
|
24
24
|
"node -e \"const fs=require('fs');const content=fs.readFileSync('package.json','utf8');if(/[\\\"\\'][a-zA-Z0-9+/]{20,}[\\\"\\']/.test(content)){console.error('❌ Potential hardcoded secrets in package.json');process.exit(1)}else{console.log('✅ No secrets detected in package.json')}\"",
|
|
25
25
|
'security:config': 'npx create-qa-architect@latest --security-config',
|
|
@@ -28,8 +28,7 @@ const baseScripts = {
|
|
|
28
28
|
'validate:docs': 'npx create-qa-architect@latest --validate-docs',
|
|
29
29
|
'validate:comprehensive': 'npx create-qa-architect@latest --comprehensive',
|
|
30
30
|
'validate:all': 'npm run validate:comprehensive && npm run security:audit',
|
|
31
|
-
'validate:pre-push':
|
|
32
|
-
'npm run test:patterns --if-present && npm run test:commands --if-present && npm run test:changed --if-present || npm test --if-present',
|
|
31
|
+
'validate:pre-push': `npm run test:patterns --if-present && npm run test:commands --if-present && if node -e "const pkg=require('./package.json');process.exit(pkg.scripts&&pkg.scripts['test:changed']?0:1)" 2>/dev/null; then npm run test:changed; else npm test --if-present; fi`,
|
|
33
32
|
}
|
|
34
33
|
|
|
35
34
|
const normalizeStylelintTargets = stylelintTargets => {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
-
"$id": "https://github.com/
|
|
3
|
+
"$id": "https://github.com/buildproven/qa-architect/blob/main/config/quality-config.schema.json",
|
|
4
4
|
"title": "Quality Automation Configuration",
|
|
5
5
|
"description": "Configuration for create-qa-architect progressive quality checks",
|
|
6
6
|
"type": "object",
|
package/docs/CI-COST-ANALYSIS.md
CHANGED
|
@@ -7,18 +7,18 @@
|
|
|
7
7
|
|
|
8
8
|
## Current Status: Within Budget (with fixes)
|
|
9
9
|
|
|
10
|
-
### Actual January 2026 Usage (
|
|
10
|
+
### Actual January 2026 Usage (buildproven org)
|
|
11
11
|
|
|
12
12
|
| Repo | Minutes | Runs | Avg/Run |
|
|
13
13
|
| ----------------------- | ---------- | ----- | ------- |
|
|
14
14
|
| qa-architect | 340 | 349 | 1.0 min |
|
|
15
15
|
| postrail | 1,769 | 295 | 6.0 min |
|
|
16
|
-
|
|
|
16
|
+
| buildproven | 89 | 282 | 0.3 min |
|
|
17
17
|
| keyflash | 74 | 187 | 0.4 min |
|
|
18
18
|
| wfhroulette | 56 | 138 | 0.4 min |
|
|
19
19
|
| jobrecon | 56 | 44 | 1.3 min |
|
|
20
|
-
|
|
|
21
|
-
|
|
|
20
|
+
| buildproven | 4 | 33 | 0.1 min |
|
|
21
|
+
| buildproven-newsletter | 1 | 22 | 0.0 min |
|
|
22
22
|
| **TOTAL** | **~2,400** | 1,350 | 1.8 min |
|
|
23
23
|
|
|
24
24
|
### February Projection (Pre-Fix)
|
|
@@ -37,7 +37,7 @@ Based on Feb 1-3 data extrapolated:
|
|
|
37
37
|
| postrail | 63% |
|
|
38
38
|
| keyflash | 53% |
|
|
39
39
|
| qa-architect | 8% |
|
|
40
|
-
|
|
|
40
|
+
| buildproven | 0% |
|
|
41
41
|
|
|
42
42
|
---
|
|
43
43
|
|
|
@@ -81,15 +81,15 @@ qa-architect supports three workflow modes:
|
|
|
81
81
|
### Minimal Mode (Default)
|
|
82
82
|
|
|
83
83
|
- Single Node.js version (22)
|
|
84
|
-
- Security scans
|
|
84
|
+
- Security scans monthly only
|
|
85
85
|
- Path filters enabled
|
|
86
86
|
- Skip Dependabot PRs
|
|
87
87
|
- Concurrency limits
|
|
88
88
|
|
|
89
89
|
### Standard Mode (`--workflow-standard`)
|
|
90
90
|
|
|
91
|
-
-
|
|
92
|
-
- Security on
|
|
91
|
+
- Single Node 22 (no matrix), tests restricted to main branch only
|
|
92
|
+
- Security on manual/monthly schedule
|
|
93
93
|
- Full test coverage
|
|
94
94
|
|
|
95
95
|
### Comprehensive Mode (`--workflow-comprehensive`)
|
package/docs/DEPLOYMENT.md
CHANGED
|
@@ -59,4 +59,4 @@ npm deprecate create-qa-architect@VERSION "Critical bug, use VERSION instead"
|
|
|
59
59
|
## npm Registry
|
|
60
60
|
|
|
61
61
|
- Package: https://www.npmjs.com/package/create-qa-architect
|
|
62
|
-
- Documentation: https://github.com/
|
|
62
|
+
- Documentation: https://github.com/buildproven/qa-architect
|
|
@@ -150,8 +150,8 @@ npm run validate:all # Full validation
|
|
|
150
150
|
qa-architect's `quality.yml` is designed to be your **single CI workflow**. Don't use it alongside a separate `ci.yml`:
|
|
151
151
|
|
|
152
152
|
```bash
|
|
153
|
-
#
|
|
154
|
-
|
|
153
|
+
# Update and auto-clean duplicate workflow names
|
|
154
|
+
npx create-qa-architect@latest --update --workflow-minimal
|
|
155
155
|
```
|
|
156
156
|
|
|
157
157
|
### Analyze Your Costs (Pro)
|
|
@@ -75,7 +75,7 @@ See `.github/workflows/pnpm-ci.yml.example` for a complete Turborepo CI workflow
|
|
|
75
75
|
Typical Turborepo monorepo:
|
|
76
76
|
|
|
77
77
|
```
|
|
78
|
-
|
|
78
|
+
buildproven/
|
|
79
79
|
├── turbo.json # Turborepo config (triggers detection)
|
|
80
80
|
├── package.json # Root package with workspaces
|
|
81
81
|
├── pnpm-lock.yaml # pnpm lockfile
|
|
@@ -156,7 +156,7 @@ This is expected in monorepos. qa-architect gracefully handles missing package.j
|
|
|
156
156
|
Test Turborepo detection:
|
|
157
157
|
|
|
158
158
|
```bash
|
|
159
|
-
cd ~/Projects/
|
|
159
|
+
cd ~/Projects/internal/buildproven
|
|
160
160
|
npx create-qa-architect@latest --dry-run
|
|
161
161
|
|
|
162
162
|
# Should show:
|
|
@@ -171,4 +171,4 @@ npx create-qa-architect@latest --dry-run
|
|
|
171
171
|
|
|
172
172
|
---
|
|
173
173
|
|
|
174
|
-
**Status**: Production-ready, tested with
|
|
174
|
+
**Status**: Production-ready, tested with buildproven monorepo
|