create-qa-architect 5.3.1 → 5.4.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/workflows/quality.yml +11 -11
- package/.github/workflows/shell-ci.yml.example +82 -0
- package/.github/workflows/shell-quality.yml.example +148 -0
- package/README.md +120 -12
- package/config/shell-ci.yml +82 -0
- package/config/shell-quality.yml +148 -0
- package/docs/CI-COST-ANALYSIS.md +323 -0
- package/eslint.config.cjs +2 -0
- package/lib/commands/analyze-ci.js +616 -0
- package/lib/commands/deps.js +70 -22
- package/lib/commands/index.js +4 -0
- package/lib/config-validator.js +28 -45
- package/lib/error-reporter.js +1 -1
- package/lib/github-api.js +34 -4
- package/lib/license-signing.js +15 -0
- package/lib/licensing.js +116 -22
- package/lib/package-utils.js +9 -9
- package/lib/project-maturity.js +58 -6
- package/lib/smart-strategy-generator.js +20 -3
- package/lib/telemetry.js +1 -1
- package/lib/ui-helpers.js +1 -1
- package/lib/validation/config-security.js +22 -18
- package/lib/validation/index.js +68 -97
- package/package.json +3 -3
- package/scripts/validate-claude-md.js +80 -0
- package/setup.js +607 -51
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
# GitHub Actions Cost Analysis: Is qa-architect Over-Engineering CI/CD?
|
|
2
|
+
|
|
3
|
+
**Date**: 2026-01-06
|
|
4
|
+
**Finding**: YES - qa-architect's default setup is 3-5x more expensive than industry standards for solo/small projects.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## The Problem
|
|
9
|
+
|
|
10
|
+
Your projects are costing **$469/month** in GitHub Actions CI when they should cost **$0-50/month**.
|
|
11
|
+
|
|
12
|
+
| Project | Commits/Day | Minutes/Month | Cost/Month | Status |
|
|
13
|
+
| -------------------------- | ----------- | ------------- | ---------- | ----------- |
|
|
14
|
+
| vibebuildlab | 7.4 | 46,852 min | $358 | 🔴 CRITICAL |
|
|
15
|
+
| qa-architect | 1.7 | 15,810 min | $110 | 🔴 HIGH |
|
|
16
|
+
| stark-program-intelligence | 1.6 | 2,160 min | $1.28 | 🟢 OK |
|
|
17
|
+
| vibelab-claude-setup | 2.0 | 531 min | $0 | ✅ OPTIMAL |
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Root Cause Analysis
|
|
22
|
+
|
|
23
|
+
### What qa-architect Is Doing (vibebuildlab example)
|
|
24
|
+
|
|
25
|
+
**Current quality.yml**: 161 minutes per commit, runs 221 times/month
|
|
26
|
+
|
|
27
|
+
```yaml
|
|
28
|
+
Jobs running on EVERY push:
|
|
29
|
+
1. detect-maturity (1 job) ~ 2 min
|
|
30
|
+
2. core-checks (2 jobs) ~ 10 min # Node 20 + 22 matrix
|
|
31
|
+
3. linting (1 job) ~ 8 min
|
|
32
|
+
4. security (1 job) ~ 25 min # Gitleaks + Semgrep + 3× npm audit
|
|
33
|
+
5. tests (2 jobs) ~ 30 min # Node 20 + 22 matrix
|
|
34
|
+
6. documentation (1 job) ~ 15 min # Only if production-ready
|
|
35
|
+
7. summary (1 job) ~ 1 min
|
|
36
|
+
|
|
37
|
+
TOTAL: ~90-100 minutes per push (when all jobs run)
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
**Problems identified**:
|
|
41
|
+
|
|
42
|
+
1. ❌ **No path filters** - Runs full CI on docs/README commits
|
|
43
|
+
2. ❌ **Duplicate matrix testing** - Both core-checks AND tests run Node 20/22
|
|
44
|
+
3. ❌ **Security overkill** - Gitleaks + Semgrep + npm audit (3 variants) on EVERY push
|
|
45
|
+
4. ❌ **No job concurrency limits** - Rapid commits queue up expensive builds
|
|
46
|
+
5. ❌ **Production checks on every commit** - Documentation validation should be release-only
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## Industry Standards (Successful Projects)
|
|
51
|
+
|
|
52
|
+
### Vite (Major Framework, 1000+ contributors)
|
|
53
|
+
|
|
54
|
+
- **Runtime**: 50-60 min/commit
|
|
55
|
+
- **Path filters**: ✅ Skips tests on docs-only changes
|
|
56
|
+
- **Matrix**: Node 20, 22, 24 (3 versions)
|
|
57
|
+
- **Cross-platform**: Only on latest Node, not all versions
|
|
58
|
+
- **Security**: Runs on schedule, not every commit
|
|
59
|
+
|
|
60
|
+
### Ky (Popular Library, Sindre Sorhus)
|
|
61
|
+
|
|
62
|
+
- **Runtime**: 10-15 min/commit
|
|
63
|
+
- **Matrix**: Node 20, 22, 24, latest (4 versions)
|
|
64
|
+
- **Platform**: macOS only (assumes Linux/Windows compatibility)
|
|
65
|
+
- **Security**: Separate workflow
|
|
66
|
+
|
|
67
|
+
### Common Patterns
|
|
68
|
+
|
|
69
|
+
1. **Minimal on push** - Lint + test current Node only
|
|
70
|
+
2. **Matrix testing** - Only on main branch or scheduled
|
|
71
|
+
3. **Security scans** - Weekly/nightly, not per commit
|
|
72
|
+
4. **Documentation** - Only on release branches
|
|
73
|
+
5. **Path filters** - Skip CI for docs/README/LICENSE changes
|
|
74
|
+
|
|
75
|
+
**Sources**:
|
|
76
|
+
|
|
77
|
+
- [GitHub Actions alternatives for modern CI/CD](https://northflank.com/blog/github-actions-alternatives)
|
|
78
|
+
- [Ultimate free CI/CD for open-source projects](https://dev.to/itnext/the-ultimate-free-ci-cd-for-your-open-source-projects-3bkd)
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## Recommended Changes
|
|
83
|
+
|
|
84
|
+
### Phase 1: Quick Wins (Reduce by 60-70%)
|
|
85
|
+
|
|
86
|
+
#### 1. Add Path Filters
|
|
87
|
+
|
|
88
|
+
```yaml
|
|
89
|
+
on:
|
|
90
|
+
push:
|
|
91
|
+
paths-ignore:
|
|
92
|
+
- '**.md'
|
|
93
|
+
- 'docs/**'
|
|
94
|
+
- 'LICENSE'
|
|
95
|
+
- '.gitignore'
|
|
96
|
+
- '.editorconfig'
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
**Savings**: ~20% of commits are docs-only
|
|
100
|
+
**vibebuildlab**: 7,117 min/month saved ($57/mo)
|
|
101
|
+
|
|
102
|
+
#### 2. Reduce Matrix Redundancy
|
|
103
|
+
|
|
104
|
+
```yaml
|
|
105
|
+
# BEFORE: 2 matrix jobs (core-checks + tests)
|
|
106
|
+
core-checks:
|
|
107
|
+
matrix:
|
|
108
|
+
node-version: [20, 22] # Runs twice
|
|
109
|
+
|
|
110
|
+
tests:
|
|
111
|
+
matrix:
|
|
112
|
+
node-version: [20, 22] # Runs twice again!
|
|
113
|
+
|
|
114
|
+
# AFTER: 1 matrix job only
|
|
115
|
+
tests:
|
|
116
|
+
matrix:
|
|
117
|
+
node-version: [20, 22] # Runs once
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
**Savings**: 50% reduction in matrix jobs
|
|
121
|
+
**vibebuildlab**: ~18,000 min/month saved ($144/mo)
|
|
122
|
+
|
|
123
|
+
#### 3. Move Security to Scheduled Workflow
|
|
124
|
+
|
|
125
|
+
```yaml
|
|
126
|
+
# New file: .github/workflows/security-weekly.yml
|
|
127
|
+
on:
|
|
128
|
+
schedule:
|
|
129
|
+
- cron: '0 0 * * 0' # Weekly on Sunday
|
|
130
|
+
workflow_dispatch: # Manual trigger
|
|
131
|
+
|
|
132
|
+
jobs:
|
|
133
|
+
security:
|
|
134
|
+
runs-on: ubuntu-latest
|
|
135
|
+
steps:
|
|
136
|
+
- name: Gitleaks
|
|
137
|
+
- name: Semgrep
|
|
138
|
+
- name: npm audit
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
**Savings**: From 221 runs/month → 4 runs/month
|
|
142
|
+
**vibebuildlab**: ~5,400 min/month saved ($43/mo)
|
|
143
|
+
|
|
144
|
+
### Phase 2: Industry-Standard Setup (Get under $50/mo total)
|
|
145
|
+
|
|
146
|
+
```yaml
|
|
147
|
+
# .github/workflows/ci.yml
|
|
148
|
+
name: CI
|
|
149
|
+
|
|
150
|
+
on:
|
|
151
|
+
push:
|
|
152
|
+
branches: [main, develop]
|
|
153
|
+
paths-ignore:
|
|
154
|
+
- '**.md'
|
|
155
|
+
- 'docs/**'
|
|
156
|
+
- 'LICENSE'
|
|
157
|
+
pull_request:
|
|
158
|
+
|
|
159
|
+
concurrency:
|
|
160
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
161
|
+
cancel-in-progress: true # Cancel old runs
|
|
162
|
+
|
|
163
|
+
jobs:
|
|
164
|
+
# Quick checks on every commit (current Node only)
|
|
165
|
+
quick-check:
|
|
166
|
+
runs-on: ubuntu-latest
|
|
167
|
+
steps:
|
|
168
|
+
- uses: actions/checkout@v5
|
|
169
|
+
- uses: actions/setup-node@v6
|
|
170
|
+
with:
|
|
171
|
+
node-version: 22
|
|
172
|
+
cache: npm
|
|
173
|
+
- run: npm ci
|
|
174
|
+
- run: npm run lint
|
|
175
|
+
- run: npm run format:check
|
|
176
|
+
- run: npm test
|
|
177
|
+
|
|
178
|
+
# Matrix testing only on main branch
|
|
179
|
+
cross-version:
|
|
180
|
+
if: github.ref == 'refs/heads/main'
|
|
181
|
+
runs-on: ubuntu-latest
|
|
182
|
+
strategy:
|
|
183
|
+
matrix:
|
|
184
|
+
node-version: [20, 22]
|
|
185
|
+
steps:
|
|
186
|
+
- uses: actions/checkout@v5
|
|
187
|
+
- uses: actions/setup-node@v6
|
|
188
|
+
with:
|
|
189
|
+
node-version: ${{ matrix.node-version }}
|
|
190
|
+
cache: npm
|
|
191
|
+
- run: npm ci
|
|
192
|
+
- run: npm test
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
**Estimated runtime**:
|
|
196
|
+
|
|
197
|
+
- Pull requests: 5-10 min (quick-check only)
|
|
198
|
+
- Main branch: 15-20 min (quick-check + cross-version)
|
|
199
|
+
|
|
200
|
+
**Estimated cost for vibebuildlab**:
|
|
201
|
+
|
|
202
|
+
- Current: 46,852 min/month ($358/mo)
|
|
203
|
+
- After changes: ~3,500 min/month ($12/mo)
|
|
204
|
+
- **Savings: $346/month (97% reduction)**
|
|
205
|
+
|
|
206
|
+
---
|
|
207
|
+
|
|
208
|
+
## Strategic Recommendations
|
|
209
|
+
|
|
210
|
+
### For Solo Developers / Small Teams
|
|
211
|
+
|
|
212
|
+
**Make all repos public** → GitHub Actions is FREE
|
|
213
|
+
|
|
214
|
+
- If code can be public, this is the best option
|
|
215
|
+
- vibebuildlab, qa-architect could potentially be public
|
|
216
|
+
|
|
217
|
+
### For Private Repos
|
|
218
|
+
|
|
219
|
+
**Option A: Minimal CI** (Recommended)
|
|
220
|
+
|
|
221
|
+
```
|
|
222
|
+
✅ Lint + format on every commit (5 min)
|
|
223
|
+
✅ Test on current Node only (10 min)
|
|
224
|
+
✅ Matrix testing on main branch only
|
|
225
|
+
✅ Security scans weekly, not per commit
|
|
226
|
+
✅ Documentation checks on releases only
|
|
227
|
+
|
|
228
|
+
Total: ~500-1,000 min/month ($0-8/mo)
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
**Option B: Self-Hosted Runner**
|
|
232
|
+
|
|
233
|
+
- Rent $10-20/mo VPS (Hetzner, DigitalOcean)
|
|
234
|
+
- Install GitHub self-hosted runner
|
|
235
|
+
- Total cost: $20/mo for UNLIMITED minutes
|
|
236
|
+
- **Best if you have 5+ active private repos**
|
|
237
|
+
|
|
238
|
+
**Option C: Strategic Testing**
|
|
239
|
+
|
|
240
|
+
```yaml
|
|
241
|
+
# Only test what matters
|
|
242
|
+
on:
|
|
243
|
+
pull_request: # Test on PRs
|
|
244
|
+
push:
|
|
245
|
+
branches: [main] # Test on main
|
|
246
|
+
paths-ignore:
|
|
247
|
+
- '**.md'
|
|
248
|
+
- 'docs/**'
|
|
249
|
+
|
|
250
|
+
# Skip matrix on draft PRs
|
|
251
|
+
if: github.event.pull_request.draft == false
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
### For qa-architect Product
|
|
255
|
+
|
|
256
|
+
**Current Default** (what qa-architect creates):
|
|
257
|
+
|
|
258
|
+
- ❌ Enterprise-grade CI for solo devs
|
|
259
|
+
- ❌ Costs $100-350/mo for typical projects
|
|
260
|
+
- ❌ Over-engineering: Gitleaks + Semgrep on every commit
|
|
261
|
+
|
|
262
|
+
**Recommended Default**:
|
|
263
|
+
|
|
264
|
+
```yaml
|
|
265
|
+
Basic (Free tier friendly):
|
|
266
|
+
✅ Lint + format + test (current Node only)
|
|
267
|
+
✅ Security scans weekly
|
|
268
|
+
✅ Matrix testing opt-in only
|
|
269
|
+
✅ Path filters enabled by default
|
|
270
|
+
|
|
271
|
+
Pro tier enhancements:
|
|
272
|
+
✅ Add matrix testing (if needed)
|
|
273
|
+
✅ Add cross-platform testing (if needed)
|
|
274
|
+
✅ Add comprehensive security (scheduled)
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
---
|
|
278
|
+
|
|
279
|
+
## Action Items
|
|
280
|
+
|
|
281
|
+
### Immediate (This Week)
|
|
282
|
+
|
|
283
|
+
1. Add path filters to all repos → Save 20% instantly
|
|
284
|
+
2. Move security scans to weekly schedule → Save 95% of security costs
|
|
285
|
+
3. Remove duplicate matrix jobs → Save 50% of test costs
|
|
286
|
+
|
|
287
|
+
### Short Term (This Month)
|
|
288
|
+
|
|
289
|
+
1. Redesign qa-architect default template (minimal-first approach)
|
|
290
|
+
2. Create three tiers:
|
|
291
|
+
- `--minimal`: Lint + test (current Node), FREE tier friendly
|
|
292
|
+
- `--standard`: + matrix testing (main branch only)
|
|
293
|
+
- `--comprehensive`: Current setup (for large teams)
|
|
294
|
+
3. Add `--public` flag that optimizes for unlimited minutes
|
|
295
|
+
|
|
296
|
+
### Long Term (Q1 2026)
|
|
297
|
+
|
|
298
|
+
1. Add cost analyzer to `npx create-qa-architect` (show estimated costs)
|
|
299
|
+
2. Default to minimal setup, prompt for upgrades
|
|
300
|
+
3. Document self-hosted runner setup guide
|
|
301
|
+
4. Create cost monitoring dashboard (track actual usage)
|
|
302
|
+
|
|
303
|
+
---
|
|
304
|
+
|
|
305
|
+
## Conclusion
|
|
306
|
+
|
|
307
|
+
**YES, you're right to question this.**
|
|
308
|
+
|
|
309
|
+
qa-architect is creating **enterprise-grade CI for solo developers**, resulting in:
|
|
310
|
+
|
|
311
|
+
- 3-5x longer CI times than industry standards
|
|
312
|
+
- 10-20x higher costs than necessary
|
|
313
|
+
- Excessive testing that doesn't add proportional value
|
|
314
|
+
|
|
315
|
+
**The fix**: Shift to "minimal by default, comprehensive on demand."
|
|
316
|
+
|
|
317
|
+
For your specific projects:
|
|
318
|
+
|
|
319
|
+
- **vibebuildlab**: $358/mo → $12/mo (implement Phase 1 + 2)
|
|
320
|
+
- **qa-architect**: $110/mo → $5/mo (same changes)
|
|
321
|
+
- **Total savings**: $451/month ($5,412/year)
|
|
322
|
+
|
|
323
|
+
Or just make repos public → **$0/month**.
|