commitshow 0.3.0 → 0.3.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/README.md CHANGED
@@ -1,39 +1,87 @@
1
- # commit.show CLI
1
+ <h1 align="center">commit.show CLI</h1>
2
2
 
3
- > Audit any vibe-coded project from your terminal — the **walk-on** lane.
3
+ <p align="center">
4
+ <strong>Audit any vibe-coded project from your terminal.</strong><br>
5
+ Score · 3-axis breakdown · 3 strengths + 2 concerns · rank · delta — in one command.
6
+ </p>
4
7
 
5
- The official CLI for **[commit.show](https://commit.show)**. A walk-on
6
- drops in, gets scored, and leaves — no signup, no audition fee, no league
7
- entry. You get the same Claude-grade analysis used in the full season
8
- (Audit / Scout / Community breakdown, 3 strengths + 2 concerns, rank,
9
- delta since the last snapshot). Local runs also save `.commitshow/audit.md`
10
- so your AI coding agent can read the report in the next turn and iterate.
11
-
12
- When a walk-on is ready to enter the season for real — Scout forecasts,
13
- season ranking, Backstage prompt-extraction, Hall of Fame — they audition
14
- at <https://commit.show/submit>.
15
-
16
- The npm package + command is `commitshow` (no dot — npm doesn't allow it in
17
- package names). Everything else uses the brand `commit.show`.
8
+ <p align="center">
9
+ <a href="https://www.npmjs.com/package/commitshow"><img src="https://img.shields.io/npm/v/commitshow?color=F0C040&label=npm&style=flat-square" alt="npm version"></a>
10
+ <a href="https://www.npmjs.com/package/commitshow"><img src="https://img.shields.io/npm/dw/commitshow?color=0F2040&style=flat-square" alt="weekly downloads"></a>
11
+ <img src="https://img.shields.io/node/v/commitshow?color=0F2040&style=flat-square" alt="node">
12
+ <img src="https://img.shields.io/npm/l/commitshow?color=0F2040&style=flat-square" alt="MIT license">
13
+ </p>
18
14
 
19
15
  ```bash
20
- npx commitshow@latest audit
21
- # or audit any public project by URL — no cd required
22
16
  npx commitshow@latest audit github.com/owner/repo
23
17
  ```
24
18
 
19
+ ```
20
+ ┌──────────────────────────────────────────────────────────┐
21
+ │ commit.show · Audit report │
22
+ └──────────────────────────────────────────────────────────┘
23
+
24
+ maa-website austinpw-cloud/maa-website
25
+
26
+ ╔══════════════╗
27
+ ║ 82 / 100 ║
28
+ ╚══════════════╝
29
+
30
+ Audit 42/50 ▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▱▱
31
+ Scout 26/30 ▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▱▱▱▱
32
+ Comm. 14/20 ▰▰▰▰▰▰▰▰▰▰▰▰▰▰▱▱▱▱▱▱
33
+
34
+ ┌───────────────────────────────────────────────────────┐
35
+ │ ↑ 80+ edge functions · LCP 1.4s · 50 RLS policies │
36
+ │ ↑ Brief integrity 9/10 · all 6 sections answered │
37
+ │ ↑ Tech layers 6 · full-stack evidence │
38
+ │ ↓ Accessibility 72 · buttons missing aria-labels │
39
+ │ ↓ No API rate limiting on /auth endpoint │
40
+ └───────────────────────────────────────────────────────┘
41
+
42
+ Ranked #3 of 47 Season Zero
43
+ Tier Honors (top 5%)
44
+ Δ +12 since yesterday's audit
45
+
46
+ → commit.show/projects/bfe11d75-dc67-…
47
+ commit.show
48
+ ```
49
+
50
+ > [⭐ Star us on GitHub](https://github.com/commitshow/cli) if `commitshow audit` saved you a `// TODO`.
51
+
52
+ ---
53
+
54
+ ## Why
55
+
56
+ Vibe-coded projects ship fast and break differently. The CLI gives you a
57
+ **zero-config**, **walk-on** lane to commit.show's audit engine — the same
58
+ Claude-grade analysis used in our 3-week leagues, minus the signup, fee,
59
+ and league commitment. You get a snapshot of where the build sits, what's
60
+ strong, what's wobbling, and how it ranks against everyone else this week.
61
+
62
+ Local runs also drop `.commitshow/audit.md` and `.commitshow/audit.json`
63
+ into your repo, so your AI coding agent can read the report on the next
64
+ turn without a prompt-engineering ritual.
65
+
66
+ When a project is ready for the full season — Scout forecasts, season
67
+ ranking, Backstage prompt extraction, Hall of Fame — it auditions at
68
+ [commit.show/submit](https://commit.show/submit).
69
+
70
+ > The npm package + command is `commitshow` (no dot — npm doesn't allow
71
+ > it in package names). Everywhere else uses the brand **commit.show**.
72
+
25
73
  ## Install
26
74
 
27
75
  ```bash
28
- # one-shot
76
+ # one-shot (recommended for trying it on someone else's repo)
29
77
  npx commitshow@latest audit <target>
30
78
 
31
- # or global
79
+ # or global, if you'll run it daily
32
80
  npm i -g commitshow
33
81
  commitshow audit <target>
34
82
  ```
35
83
 
36
- Node 20+.
84
+ Requires **Node 20+**.
37
85
 
38
86
  ## Usage
39
87
 
@@ -126,12 +174,21 @@ changes do. Known keys: `project`, `score`, `standing`, `strengths`, `concerns`,
126
174
  - `0.1` — ✓ read-only audit · status · `--json` · target auto-detect · sidecar files
127
175
  - `0.2` — device-flow login · `commitshow submit` · `--watch` mode · CI exit-code gate
128
176
  - `0.3` — `commitshow install <pack>` with {{VARIABLE}} substitution
129
- - `0.4` — MCP server variant (Cursor / Claude Desktop can call commit.show tools directly · §15-C.6)
177
+ - `0.4` — MCP server variant (Cursor / Claude Desktop can call commit.show tools directly)
130
178
 
131
179
  ## Links
132
180
 
133
- - Home: <https://commit.show>
134
- - Source: <https://github.com/hans1329/vibe/tree/main/packages/cli>
135
- - Issues: <https://github.com/hans1329/vibe/issues>
181
+ - Home <https://commit.show>
182
+ - Source <https://github.com/commitshow/cli>
183
+ - Issues <https://github.com/commitshow/cli/issues>
184
+ - The platform repo — <https://github.com/commitshow/commitshow>
185
+
186
+ ---
187
+
188
+ <p align="center">
189
+ <strong>Built one repo at a time. <a href="https://commit.show">commit.show</a></strong>
190
+ </p>
136
191
 
137
- MIT © 2026 commit.show
192
+ <p align="center">
193
+ MIT © 2026 commit.show
194
+ </p>
@@ -220,18 +220,18 @@ export function renderAudit(view) {
220
220
  }
221
221
  lines.push('');
222
222
  // (concerns/strengths block moved above the score · errors-first 2026-04-30)
223
- // ─── Vibe Coder Checklist · 7-category framework ───
223
+ // ─── AI Coder 7 Frames · signature framework ───
224
224
  // Render only the categories that produced an actionable status (fail /
225
225
  // warn / pass when meaningful). N/A categories are dropped to keep the
226
- // terminal output compact. Helps beginners see "the 7 things AI-coded
227
- // projects miss" framework directly in the report.
226
+ // terminal output compact. Surfaces the seven AI-specific failure
227
+ // modes generic linters miss.
228
228
  const vc = snapshot?.github_signals?.vibe_concerns;
229
229
  if (vc) {
230
230
  const items = vibeChecklistLines(vc);
231
231
  const actionable = items.filter(i => i.status !== 'na');
232
232
  if (actionable.length > 0) {
233
233
  lines.push(' ' + boxTop());
234
- lines.push(' ' + boxRow('Vibe Coder Checklist · 7 things AI-coded projects miss'.length, c.bold(c.gold('Vibe Coder Checklist')) + c.muted(' · 7 things AI-coded projects miss')));
234
+ lines.push(' ' + boxRow('AI Coder 7 Frames · what AI ships without'.length, c.bold(c.gold('AI Coder 7 Frames')) + c.muted(' · what AI ships without')));
235
235
  lines.push(' ' + boxBlank());
236
236
  for (const it of actionable.slice(0, 7)) {
237
237
  const tone = it.status === 'fail' ? c.scarlet : it.status === 'warn' ? c.gold : c.teal;
@@ -374,6 +374,55 @@ function vibeChecklistLines(vc) {
374
374
  else
375
375
  out.push({ key: 'prompt_injection', status: 'pass', label: 'Prompt injection risk', detail: 'AI SDK in use · no obvious raw-input patterns' });
376
376
  }
377
+ // 8. Hardcoded URLs
378
+ {
379
+ const h = vc?.hardcoded_urls;
380
+ if (h && h.total > 0) {
381
+ const ev = h.samples?.[0] ? `${h.samples[0].file} · ${h.samples[0].pattern}` : undefined;
382
+ out.push({ key: 'hardcoded_urls', status: 'warn', label: 'Hardcoded URLs', detail: `${h.total} file${h.total > 1 ? 's' : ''} · localhost / 127.0.0.1 baked in`, evidence: ev });
383
+ }
384
+ else {
385
+ out.push({ key: 'hardcoded_urls', status: 'pass', label: 'Hardcoded URLs', detail: 'no localhost / dev URLs in scanned files' });
386
+ }
387
+ }
388
+ // 9. Mock data in production
389
+ {
390
+ const m = vc?.mock_data;
391
+ if (m && m.total > 0) {
392
+ const ev = m.samples?.[0] ? `${m.samples[0].file} · const ${m.samples[0].collection} = […]` : undefined;
393
+ out.push({ key: 'mock_data', status: 'warn', label: 'Mock data in prod', detail: `${m.total} file${m.total > 1 ? 's' : ''} with inline seed arrays`, evidence: ev });
394
+ }
395
+ else {
396
+ out.push({ key: 'mock_data', status: 'pass', label: 'Mock data in prod', detail: 'no inline mock arrays in app paths' });
397
+ }
398
+ }
399
+ // 10. Webhook signature
400
+ {
401
+ const w = vc?.webhook_signature;
402
+ if (!w || w.handlers_seen === 0) {
403
+ out.push({ key: 'webhook_signature', status: 'na', label: 'Webhook signature', detail: 'no webhook handler files detected' });
404
+ }
405
+ else if (w.gap) {
406
+ out.push({ key: 'webhook_signature', status: 'fail', label: 'Webhook signature', detail: `${w.handlers_seen} handler${w.handlers_seen > 1 ? 's' : ''} · 0 HMAC verification` });
407
+ }
408
+ else if (w.verified_seen >= w.handlers_seen) {
409
+ out.push({ key: 'webhook_signature', status: 'pass', label: 'Webhook signature', detail: `${w.verified_seen}/${w.handlers_seen} handlers verify signature` });
410
+ }
411
+ else {
412
+ out.push({ key: 'webhook_signature', status: 'warn', label: 'Webhook signature', detail: `${w.verified_seen}/${w.handlers_seen} handlers verify signature · partial` });
413
+ }
414
+ }
415
+ // 11. CORS permissive
416
+ {
417
+ const c = vc?.cors_permissive;
418
+ if (c && c.total > 0) {
419
+ const ev = c.samples?.[0] ? `${c.samples[0].file} · ${c.samples[0].pattern}` : undefined;
420
+ out.push({ key: 'cors_permissive', status: 'warn', label: 'CORS too permissive', detail: `${c.total} file${c.total > 1 ? 's' : ''} · origin: '*' or origin: true`, evidence: ev });
421
+ }
422
+ else {
423
+ out.push({ key: 'cors_permissive', status: 'pass', label: 'CORS too permissive', detail: "no 'origin: *' patterns detected" });
424
+ }
425
+ }
377
426
  // Sort fail → warn → pass → na
378
427
  const order = { fail: 0, warn: 1, pass: 2, na: 3 };
379
428
  return out.sort((a, b) => order[a.status] - order[b.status]);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "commitshow",
3
- "version": "0.3.0",
3
+ "version": "0.3.1",
4
4
  "description": "commit.show CLI — audit any vibe-coded project from your terminal.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -23,15 +23,21 @@
23
23
  "commit.show",
24
24
  "audit",
25
25
  "vibe-coding",
26
- "cli"
26
+ "cli",
27
+ "claude-code",
28
+ "cursor",
29
+ "code-quality",
30
+ "developer-tools"
27
31
  ],
28
32
  "author": "commit.show",
29
33
  "license": "MIT",
30
34
  "homepage": "https://commit.show",
31
35
  "repository": {
32
36
  "type": "git",
33
- "url": "https://github.com/hans1329/vibe",
34
- "directory": "packages/cli"
37
+ "url": "https://github.com/commitshow/cli"
38
+ },
39
+ "bugs": {
40
+ "url": "https://github.com/commitshow/cli/issues"
35
41
  },
36
42
  "dependencies": {
37
43
  "kleur": "^4.1.5"