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:
@@ -9,17 +9,17 @@
9
9
 
10
10
  ### Actual January 2026 Usage (buildproven org)
11
11
 
12
- | Repo | Minutes | Runs | Avg/Run |
13
- | ----------------------- | ---------- | ----- | ------- |
14
- | qa-architect | 340 | 349 | 1.0 min |
15
- | postrail | 1,769 | 295 | 6.0 min |
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 | 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 |
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** | **~2,400** | 1,350 | 1.8 min |
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 | 0% |
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 | Price | Billing | Price ID (example) |
29
- |---|---|---|---|
30
- | QA Architect Pro | $49.00 | Monthly | `price_1St9K2Gv7Su9XNJbdYoH3K32` |
31
- | QA Architect Pro | $490.00 | Yearly | `price_1St9KGGv7Su9XNJbrwKMsh1R` |
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 | Value | Notes |
82
- |---|---|---|
83
- | `STRIPE_SECRET_KEY` | `sk_live_...` | From Stripe Dashboard → Developers → API keys |
84
- | `STRIPE_WEBHOOK_SECRET` | `whsec_...` | Generated in Step 5 below |
85
- | `LICENSE_REGISTRY_PRIVATE_KEY` | Base64-encoded ED25519 private key | See note below |
86
- | `LICENSE_REGISTRY_KEY_ID` | `default` | Or a versioned ID like `v1` |
87
- | `BLOB_READ_WRITE_TOKEN` | `vercel_blob_...` | From Vercel Blob store settings |
88
- | `STATUS_API_TOKEN` | A strong random string | Protects the `/status` endpoint |
89
- | `NODE_ENV` | `production` | Enables HSTS and production error handling |
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: 'https://buildproven.ai/qa-architect/success?session_id={CHECKOUT_SESSION_ID}',
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 | Likely cause | Fix |
203
- |---|---|---|
204
- | Webhook returns 400 | Wrong `STRIPE_WEBHOOK_SECRET` | Re-copy the signing secret from Stripe Dashboard |
205
- | License not created after payment | Unknown price ID | Update `mapPriceToTier()` with your actual Stripe price IDs |
206
- | CLI can't find license | Wrong blob URL | Check `BLOB_PATHS` in `lib/blob-storage.js` matches your Vercel Blob store |
207
- | `sk_test_` warning in logs | Test key in production | Replace with `sk_live_...` key |
208
- | `/status` returns 503 | `STATUS_API_TOKEN` not set | Add the env var in Vercel settings |
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
@@ -25,6 +25,7 @@ const configs = [
25
25
  '**/build/**',
26
26
  '**/coverage/**',
27
27
  '**/*.html',
28
+ 'webhook-handler.js', // server-side deployment script, deps installed separately
28
29
  ],
29
30
  },
30
31
  js.configs.recommended,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-qa-architect",
3
- "version": "5.13.5",
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",