create-qa-architect 5.13.5 → 5.13.6
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.
|
@@ -13,11 +13,8 @@ on:
|
|
|
13
13
|
jobs:
|
|
14
14
|
validate-claude-md:
|
|
15
15
|
runs-on: ubuntu-latest
|
|
16
|
-
<<<<<<< HEAD
|
|
17
16
|
if: github.actor != 'dependabot[bot]' || github.event_name != 'pull_request'
|
|
18
|
-
=======
|
|
19
17
|
timeout-minutes: 10
|
|
20
|
-
>>>>>>> 5fbc311 (chore: optimize CI — monthly crons, timeouts, deduplicate)
|
|
21
18
|
name: Validate CLAUDE.md Consistency
|
|
22
19
|
|
|
23
20
|
steps:
|
package/docs/CI-COST-ANALYSIS.md
CHANGED
|
@@ -9,17 +9,17 @@
|
|
|
9
9
|
|
|
10
10
|
### Actual January 2026 Usage (buildproven org)
|
|
11
11
|
|
|
12
|
-
| Repo
|
|
13
|
-
|
|
|
14
|
-
| qa-architect
|
|
15
|
-
| postrail
|
|
12
|
+
| Repo | Minutes | Runs | Avg/Run |
|
|
13
|
+
| ---------------------- | ---------- | ----- | ------- |
|
|
14
|
+
| qa-architect | 340 | 349 | 1.0 min |
|
|
15
|
+
| postrail | 1,769 | 295 | 6.0 min |
|
|
16
16
|
| buildproven | 89 | 282 | 0.3 min |
|
|
17
|
-
| keyflash
|
|
18
|
-
| wfhroulette
|
|
19
|
-
| jobrecon
|
|
20
|
-
| buildproven
|
|
17
|
+
| keyflash | 74 | 187 | 0.4 min |
|
|
18
|
+
| wfhroulette | 56 | 138 | 0.4 min |
|
|
19
|
+
| jobrecon | 56 | 44 | 1.3 min |
|
|
20
|
+
| buildproven | 4 | 33 | 0.1 min |
|
|
21
21
|
| buildproven-newsletter | 1 | 22 | 0.0 min |
|
|
22
|
-
| **TOTAL**
|
|
22
|
+
| **TOTAL** | **~2,400** | 1,350 | 1.8 min |
|
|
23
23
|
|
|
24
24
|
### February Projection (Pre-Fix)
|
|
25
25
|
|
|
@@ -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
|
-
| buildproven
|
|
40
|
+
| buildproven | 0% |
|
|
41
41
|
|
|
42
42
|
---
|
|
43
43
|
|
|
@@ -5,6 +5,7 @@ Deploy the `webhook-handler.js` server to process real Stripe payments and issue
|
|
|
5
5
|
## Overview
|
|
6
6
|
|
|
7
7
|
The payment flow:
|
|
8
|
+
|
|
8
9
|
1. Customer purchases Pro at `buildproven.ai/qa-architect`
|
|
9
10
|
2. Stripe fires a `checkout.session.completed` webhook to your server
|
|
10
11
|
3. `webhook-handler.js` validates the event, generates a signed license key, and saves it to Vercel Blob
|
|
@@ -25,10 +26,10 @@ The payment flow:
|
|
|
25
26
|
|
|
26
27
|
In the [Stripe Dashboard](https://dashboard.stripe.com/products) → Products → Add product:
|
|
27
28
|
|
|
28
|
-
| Product
|
|
29
|
-
|
|
30
|
-
| QA Architect Pro | $49.00
|
|
31
|
-
| QA Architect Pro | $490.00 | Yearly
|
|
29
|
+
| Product | Price | Billing | Price ID (example) |
|
|
30
|
+
| ---------------- | ------- | ------- | -------------------------------- |
|
|
31
|
+
| QA Architect Pro | $49.00 | Monthly | `price_1St9K2Gv7Su9XNJbdYoH3K32` |
|
|
32
|
+
| QA Architect Pro | $490.00 | Yearly | `price_1St9KGGv7Su9XNJbrwKMsh1R` |
|
|
32
33
|
|
|
33
34
|
The price IDs above are already mapped in `webhook-handler.js:315-318`. If your actual Stripe price IDs differ, update `mapPriceToTier()` in `webhook-handler.js`.
|
|
34
35
|
|
|
@@ -78,15 +79,15 @@ Your webhook URL will be: `https://your-project.vercel.app/webhook`
|
|
|
78
79
|
|
|
79
80
|
In the Vercel dashboard → Project → Settings → Environment Variables, add:
|
|
80
81
|
|
|
81
|
-
| Variable
|
|
82
|
-
|
|
83
|
-
| `STRIPE_SECRET_KEY`
|
|
84
|
-
| `STRIPE_WEBHOOK_SECRET`
|
|
85
|
-
| `LICENSE_REGISTRY_PRIVATE_KEY` | Base64-encoded ED25519 private key | See note below
|
|
86
|
-
| `LICENSE_REGISTRY_KEY_ID`
|
|
87
|
-
| `BLOB_READ_WRITE_TOKEN`
|
|
88
|
-
| `STATUS_API_TOKEN`
|
|
89
|
-
| `NODE_ENV`
|
|
82
|
+
| Variable | Value | Notes |
|
|
83
|
+
| ------------------------------ | ---------------------------------- | --------------------------------------------- |
|
|
84
|
+
| `STRIPE_SECRET_KEY` | `sk_live_...` | From Stripe Dashboard → Developers → API keys |
|
|
85
|
+
| `STRIPE_WEBHOOK_SECRET` | `whsec_...` | Generated in Step 5 below |
|
|
86
|
+
| `LICENSE_REGISTRY_PRIVATE_KEY` | Base64-encoded ED25519 private key | See note below |
|
|
87
|
+
| `LICENSE_REGISTRY_KEY_ID` | `default` | Or a versioned ID like `v1` |
|
|
88
|
+
| `BLOB_READ_WRITE_TOKEN` | `vercel_blob_...` | From Vercel Blob store settings |
|
|
89
|
+
| `STATUS_API_TOKEN` | A strong random string | Protects the `/status` endpoint |
|
|
90
|
+
| `NODE_ENV` | `production` | Enables HSTS and production error handling |
|
|
90
91
|
|
|
91
92
|
**Private key format:** The key must be a PEM-encoded ED25519 private key, base64-encoded as a single line (no newlines):
|
|
92
93
|
|
|
@@ -157,6 +158,7 @@ Switch to live mode keys once the test flow works end-to-end.
|
|
|
157
158
|
## Step 8: Connect Your Checkout Page
|
|
158
159
|
|
|
159
160
|
Your Stripe Checkout session must:
|
|
161
|
+
|
|
160
162
|
- Use one of the two price IDs mapped in `mapPriceToTier()`
|
|
161
163
|
- Be a **subscription** mode checkout (not one-time payment)
|
|
162
164
|
- Collect a customer email
|
|
@@ -168,7 +170,8 @@ const session = await stripe.checkout.sessions.create({
|
|
|
168
170
|
mode: 'subscription',
|
|
169
171
|
payment_method_types: ['card'],
|
|
170
172
|
line_items: [{ price: 'price_1St9K2Gv7Su9XNJbdYoH3K32', quantity: 1 }],
|
|
171
|
-
success_url:
|
|
173
|
+
success_url:
|
|
174
|
+
'https://buildproven.ai/qa-architect/success?session_id={CHECKOUT_SESSION_ID}',
|
|
172
175
|
cancel_url: 'https://buildproven.ai/qa-architect',
|
|
173
176
|
})
|
|
174
177
|
```
|
|
@@ -199,10 +202,10 @@ When a subscription is canceled in Stripe, the `customer.subscription.deleted` e
|
|
|
199
202
|
|
|
200
203
|
## Troubleshooting
|
|
201
204
|
|
|
202
|
-
| Symptom
|
|
203
|
-
|
|
204
|
-
| Webhook returns 400
|
|
205
|
-
| License not created after payment | Unknown price ID
|
|
206
|
-
| CLI can't find license
|
|
207
|
-
| `sk_test_` warning in logs
|
|
208
|
-
| `/status` returns 503
|
|
205
|
+
| Symptom | Likely cause | Fix |
|
|
206
|
+
| --------------------------------- | ----------------------------- | -------------------------------------------------------------------------- |
|
|
207
|
+
| Webhook returns 400 | Wrong `STRIPE_WEBHOOK_SECRET` | Re-copy the signing secret from Stripe Dashboard |
|
|
208
|
+
| License not created after payment | Unknown price ID | Update `mapPriceToTier()` with your actual Stripe price IDs |
|
|
209
|
+
| CLI can't find license | Wrong blob URL | Check `BLOB_PATHS` in `lib/blob-storage.js` matches your Vercel Blob store |
|
|
210
|
+
| `sk_test_` warning in logs | Test key in production | Replace with `sk_live_...` key |
|
|
211
|
+
| `/status` returns 503 | `STATUS_API_TOKEN` not set | Add the env var in Vercel settings |
|
package/eslint.config.cjs
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-qa-architect",
|
|
3
|
-
"version": "5.13.
|
|
3
|
+
"version": "5.13.6",
|
|
4
4
|
"description": "QA Architect - Bootstrap quality automation for JavaScript/TypeScript and Python projects with GitHub Actions, pre-commit hooks, linting, formatting, and smart test strategy",
|
|
5
5
|
"main": "setup.js",
|
|
6
6
|
"bin": {
|
|
@@ -20,8 +20,8 @@
|
|
|
20
20
|
"validate:comprehensive": "node setup.js --comprehensive --no-markdownlint",
|
|
21
21
|
"validate:all": "npm run validate:comprehensive && npm run security:audit",
|
|
22
22
|
"validate:pre-push": "npm run test:patterns --if-present && npm run lint && npm run format:check && npm run test:commands --if-present && npm test --if-present",
|
|
23
|
-
"test": "export QAA_DEVELOPER=true && node tests/result-types.test.js && node tests/setup.test.js && node tests/integration.test.js && node tests/error-paths.test.js && node tests/error-messages.test.js && node tests/cache-manager.test.js && node tests/parallel-validation.test.js && node tests/python-integration.test.js && node tests/interactive.test.js && node tests/monorepo.test.js && node tests/template-loader.test.js && node tests/critical-fixes.test.js && node tests/interactive-routing-fix.test.js && node tests/telemetry.test.js && node tests/error-reporter.test.js && node tests/premium-dependency-monitoring.test.js && node tests/multi-language-dependency-monitoring.test.js && node tests/cli-deps-integration.test.js && node tests/deps-edge-cases.test.js && node tests/real-world-packages.test.js && node tests/validation-factory.test.js && node tests/setup-error-coverage.test.js && node tests/python-detection-sensitivity.test.js && node tests/python-parser-fixes.test.js && node tests/licensing.test.js && node tests/security-licensing.test.js && node tests/real-purchase-flow.test.js && node tests/base-validator.test.js && node tests/dependency-monitoring-basic.test.js && node tests/workflow-validation.test.js && node tests/workflow-tiers.test.js && node tests/analyze-ci.test.js && node tests/analyze-ci-integration.test.js && node tests/setup-critical-paths.test.js && node tests/project-maturity.test.js && node tests/project-maturity-cli.test.js && node tests/package-manager-detection.test.js && node tests/check-docs.test.js && node tests/validate-command-patterns.test.js && node tests/gitleaks-binary-resolution.test.js && node tests/gitleaks-production-checksums.test.js && node tests/gitleaks-checksum-verification.test.js && node tests/gitleaks-real-binary-test.js && node tests/tier-enforcement.test.js && node tests/lazy-loader.test.js && node tests/template-content-validation.test.js && node tests/ci-environment.test.js && node tests/turborepo-detection.test.js && node tests/consumer-workflow-integration.test.js && node tests/esm-project-support.test.js",
|
|
24
|
-
"test:unit": "export QAA_DEVELOPER=true && node tests/result-types.test.js && node tests/setup.test.js && node tests/error-paths.test.js && node tests/error-messages.test.js && node tests/cache-manager.test.js && node tests/template-loader.test.js && node tests/telemetry.test.js && node tests/error-reporter.test.js && node tests/validation-factory.test.js && node tests/setup-error-coverage.test.js && node tests/licensing.test.js && node tests/security-licensing.test.js && node tests/base-validator.test.js && node tests/dependency-monitoring-basic.test.js && node tests/workflow-validation.test.js && node tests/workflow-tiers.test.js && node tests/analyze-ci.test.js && node tests/setup-critical-paths.test.js && node tests/project-maturity.test.js && node tests/package-manager-detection.test.js && node tests/check-docs.test.js && node tests/validate-command-patterns.test.js && node tests/gitleaks-binary-resolution.test.js && node tests/gitleaks-production-checksums.test.js && node tests/gitleaks-checksum-verification.test.js && node tests/lazy-loader.test.js && node tests/template-content-validation.test.js && node tests/ci-environment.test.js && node tests/turborepo-detection.test.js && node tests/esm-project-support.test.js",
|
|
23
|
+
"test": "export QAA_DEVELOPER=true && node tests/result-types.test.js && node tests/setup.test.js && node tests/integration.test.js && node tests/error-paths.test.js && node tests/error-messages.test.js && node tests/cache-manager.test.js && node tests/parallel-validation.test.js && node tests/python-integration.test.js && node tests/interactive.test.js && node tests/monorepo.test.js && node tests/template-loader.test.js && node tests/critical-fixes.test.js && node tests/interactive-routing-fix.test.js && node tests/telemetry.test.js && node tests/error-reporter.test.js && node tests/premium-dependency-monitoring.test.js && node tests/multi-language-dependency-monitoring.test.js && node tests/cli-deps-integration.test.js && node tests/deps-edge-cases.test.js && node tests/real-world-packages.test.js && node tests/validation-factory.test.js && node tests/setup-error-coverage.test.js && node tests/python-detection-sensitivity.test.js && node tests/python-parser-fixes.test.js && node tests/licensing.test.js && node tests/security-licensing.test.js && node tests/real-purchase-flow.test.js && node tests/base-validator.test.js && node tests/dependency-monitoring-basic.test.js && node tests/workflow-validation.test.js && node tests/workflow-tiers.test.js && node tests/analyze-ci.test.js && node tests/analyze-ci-integration.test.js && node tests/setup-critical-paths.test.js && node tests/project-maturity.test.js && node tests/project-maturity-cli.test.js && node tests/package-manager-detection.test.js && node tests/check-docs.test.js && node tests/validate-command-patterns.test.js && node tests/gitleaks-binary-resolution.test.js && node tests/gitleaks-production-checksums.test.js && node tests/gitleaks-checksum-verification.test.js && node tests/gitleaks-real-binary-test.js && node tests/tier-enforcement.test.js && node tests/lazy-loader.test.js && node tests/template-content-validation.test.js && node tests/ci-environment.test.js && node tests/turborepo-detection.test.js && node tests/consumer-workflow-integration.test.js && node tests/esm-project-support.test.js && node tests/blob-storage.test.js",
|
|
24
|
+
"test:unit": "export QAA_DEVELOPER=true && node tests/result-types.test.js && node tests/setup.test.js && node tests/error-paths.test.js && node tests/error-messages.test.js && node tests/cache-manager.test.js && node tests/template-loader.test.js && node tests/telemetry.test.js && node tests/error-reporter.test.js && node tests/validation-factory.test.js && node tests/setup-error-coverage.test.js && node tests/licensing.test.js && node tests/security-licensing.test.js && node tests/base-validator.test.js && node tests/dependency-monitoring-basic.test.js && node tests/workflow-validation.test.js && node tests/workflow-tiers.test.js && node tests/analyze-ci.test.js && node tests/setup-critical-paths.test.js && node tests/project-maturity.test.js && node tests/package-manager-detection.test.js && node tests/check-docs.test.js && node tests/validate-command-patterns.test.js && node tests/gitleaks-binary-resolution.test.js && node tests/gitleaks-production-checksums.test.js && node tests/gitleaks-checksum-verification.test.js && node tests/lazy-loader.test.js && node tests/template-content-validation.test.js && node tests/ci-environment.test.js && node tests/turborepo-detection.test.js && node tests/esm-project-support.test.js && node tests/blob-storage.test.js",
|
|
25
25
|
"test:fast": "npm run test:unit",
|
|
26
26
|
"test:medium": "npm run test:fast && npm run test:patterns && npm run test:commands",
|
|
27
27
|
"test:slow": "export QAA_DEVELOPER=true && node tests/python-integration.test.js && node tests/interactive.test.js && node tests/monorepo.test.js && node tests/critical-fixes.test.js && node tests/interactive-routing-fix.test.js && node tests/premium-dependency-monitoring.test.js && node tests/multi-language-dependency-monitoring.test.js && node tests/cli-deps-integration.test.js && node tests/real-world-packages.test.js && node tests/python-detection-sensitivity.test.js && node tests/python-parser-fixes.test.js && node tests/real-purchase-flow.test.js && node tests/project-maturity-cli.test.js && node tests/gitleaks-real-binary-test.js && npm run test:e2e",
|