shippingszn 0.9.6 → 0.10.0

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.
Files changed (4) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +109 -33
  3. package/dist/index.js +1653 -1763
  4. package/package.json +7 -9
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2026 Vibe Coder Launch Checklist contributors
3
+ Copyright (c) 2026 Ryan Zaucha
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -1,36 +1,65 @@
1
1
  # shippingszn
2
2
 
3
- Primary local scanner for shippingszn launch readiness. Run it inside the app
4
- you are about to ship to catch the launch debt AI builders commonly miss:
5
- leaked API keys, missing crawl assets, weak browser defenses, dangerous code
6
- patterns, and last-mile polish gaps.
3
+ `shippingszn` is a local, read-only launch-readiness scanner for apps built with
4
+ AI. It runs inside the project you are about to ship and reads your files to
5
+ catch the launch debt AI builders commonly miss — leaked API keys, missing crawl
6
+ assets, weak browser defenses, dangerous code patterns, unguarded routes, and
7
+ last-mile polish gaps — then prints a 0-100 readiness score, a launch verdict,
8
+ and every finding with the file and line it came from. It never writes to your
9
+ project and needs no account to run.
10
+
11
+ ## Install / usage
7
12
 
8
13
  ```bash
9
- npx shippingszn@latest
14
+ npx shippingszn@latest # scan the current directory
15
+ npx shippingszn@latest ./path # scan a specific directory
16
+ npx shippingszn@latest --no-telemetry # run fully offline, zero network calls
10
17
  # or
11
18
  pnpm dlx shippingszn@latest
12
19
  ```
13
20
 
14
- The CLI **never writes, modifies, or deletes** any files - it only reads.
15
- Normal runs create a locked scan handoff for checkout and send one anonymous
21
+ This is the open-source scanner. The optional paid **Launch Fix Kit** the
22
+ remediation layer with per-finding fixes, prompts to paste straight into your AI
23
+ builder, the 58-item launch workbook, unlimited re-scans, and launch monitoring
24
+ — lives at <https://shippingszn.com/fix-kit>. The scanner is free and always
25
+ will be; the Fix Kit is how you fix what it finds.
26
+
27
+ The CLI **never writes, modifies, or deletes** any files - it only reads. (The
28
+ one exception is a tiny first-run marker under your config dir,
29
+ `~/.config/shippingszn/seen`, used to show the telemetry notice once.) By
30
+ default each run creates a scan handoff for checkout and sends one anonymous
16
31
  Wall report-card summary with score, severity counts, files scanned, scanner
17
32
  version, and safe stack tags. It never uploads source code, repo URLs, project
18
- names, secrets, handles, or emails. Finding-level detail stays out of public
19
- CLI/Wall output and opens inside the paid Launch Fix Kit.
33
+ names, secrets, handles, or emails. Pass `--no-telemetry` to run fully offline
34
+ (zero network calls).
20
35
 
21
- Human output starts with a Launch Debt Score, severity counts, a short
22
- plain-English launch-risk explanation, completed checks, and the locked Fix Kit
23
- handoff. Run with `--json` to get the same score-and-counts summary in a
24
- machine-readable shape:
36
+ **The free scan is the full diagnosis.** Human output prints a verdict, a
37
+ higher-is-better Readiness Score, severity counts, and **every finding grouped
38
+ by severity** its severity, the checklist item it maps to, the `file:line`,
39
+ and what's wrong — plus completed-checks coverage and the Fix Kit CTA. Run with
40
+ `--json` to get the same in a machine-readable shape, including the full
41
+ `findings` array:
25
42
 
26
43
  ```json
27
44
  {
28
- "score": 43,
29
- "band": "no_go",
30
- "counts": { "critical": 1, "high": 3, "medium": 4, "lower": 2 },
45
+ "score": 60,
46
+ "band": "fix_first",
47
+ "counts": { "critical": 0, "high": 11, "medium": 1, "lower": 1 },
31
48
  "filesScanned": 128,
32
- "coverage": { "checksCompleted": 19, "checklistAreas": 46 },
33
- "detailsLocked": true,
49
+ "coverage": { "checksCompleted": 19, "checklistAreas": 51 },
50
+ "scannerVersion": "0.10.0",
51
+ "findings": [
52
+ {
53
+ "checkId": "hardcoded-secrets",
54
+ "itemId": "secrets",
55
+ "severity": "high",
56
+ "itemTitle": "Lock up your API keys and passwords",
57
+ "file": "src/lib/config.ts",
58
+ "line": 12,
59
+ "message": "Possible hardcoded API key detected.",
60
+ "permalink": "https://shippingszn.com/i/secrets"
61
+ }
62
+ ],
34
63
  "unlockUrl": "https://shippingszn.com/fix-kit?scanResultId=00000000-0000-4000-8000-000000000123",
35
64
  "scanHandoff": {
36
65
  "status": "uploaded",
@@ -40,15 +69,29 @@ machine-readable shape:
40
69
  }
41
70
  ```
42
71
 
43
- Finding titles, files, evidence, fix prompts, and verification steps are paid.
44
- The free CLI explains why the score matters, but the actual fixes unlock inside
45
- the Launch Fix Kit.
72
+ The findings are free. What's **paid** is the remediation layer: per-finding fix
73
+ instructions, prompts to paste straight into your AI builder, the 58-item launch
74
+ workbook, unlimited re-scans, and launch monitoring. The free CLI tells you
75
+ exactly what's wrong; the Launch Fix Kit is how you fix it.
46
76
 
47
- ## Aggregate summary
77
+ ## Telemetry
48
78
 
49
- Plain `npx shippingszn@latest` sends the Wall summary automatically. The stored
50
- row is anonymous and intentionally small: score, launch label, files scanned,
79
+ Plain `npx shippingszn@latest` sends one anonymous Wall summary automatically.
80
+ The stored row is intentionally small: score, launch label, files scanned,
51
81
  finding counts by severity, detected stack tags, scanner version, and timestamp.
82
+ It never includes code, file paths, filenames, project names, repo URLs,
83
+ secrets, emails, or any finding-level detail.
84
+
85
+ On the **first run on a machine**, the CLI prints the exact anonymous payload it
86
+ would send (to stderr, so it never corrupts `--json` output) and a note that you
87
+ can turn it off. Telemetry is default-on but fully transparent and opt-out-able:
88
+
89
+ ```bash
90
+ npx shippingszn@latest --no-telemetry # zero network calls, fully offline
91
+ ```
92
+
93
+ `--no-wall` is an alias for `--no-telemetry`. With telemetry off, the CLI makes
94
+ **no** scan-handoff upload and **no** Wall ping.
52
95
 
53
96
  The same run also creates a scan-specific paid-report handoff. The terminal
54
97
  prints a `/fix-kit?scanResultId=...` URL so checkout can carry that scan into
@@ -79,9 +122,38 @@ maps back to one of the items on the checklist.
79
122
  - Placeholder content (`lorem ipsum`, `John Doe`, `test@example.com`) and
80
123
  `TODO` / `FIXME` / `XXX` / `HACK` comments.
81
124
 
82
- Internally each finding is tagged Critical, High, Medium, or Lower and maps to
83
- the relevant checklist item. The free CLI output keeps that finding-level detail
84
- locked.
125
+ Each finding is tagged Critical, High, Medium, or Lower and maps to the relevant
126
+ checklist item. All of that finding-level detail is free and printed on every
127
+ run; the Fix Kit turns it into the human launch decision and AI-builder punch
128
+ list of fixes.
129
+
130
+ ## Scoring
131
+
132
+ The 0-100 Readiness Score is not a black box. Each finding subtracts a fixed
133
+ number of penalty points from 100 based on its severity:
134
+
135
+ | Severity | Penalty per finding |
136
+ | -------- | ------------------- |
137
+ | Critical | 35 |
138
+ | High | 22 |
139
+ | Medium | 10 |
140
+ | Lower | 5 |
141
+
142
+ The raw score is `100 - (sum of all penalties)`, clamped to the `0-100` range.
143
+ The score is then floored into a severity band so the number can never contradict
144
+ the verdict — the most severe finding present sets the band ceiling:
145
+
146
+ | Band | Score range | Trigger |
147
+ | -------------------- | ----------- | ----------------------------------------- |
148
+ | Fix now (no-go) | 0-59 | any Critical finding caps the score at 59 |
149
+ | Fix-first | 60-79 | any High finding (no Critical) caps at 79 |
150
+ | Verify before launch | 80-89 | any Medium finding (no Critical/High) |
151
+ | Launchable | 90-100 | only Lower findings, or a clean scan |
152
+
153
+ So one Critical finding alone drops you to at most 59 ("Fix now") regardless of
154
+ how few findings there are; a single High caps you at 79 ("Fix-first"). Count
155
+ pressure moves the score inside its band. The CLI runs with no source-side score
156
+ cap — the score you see is the severity-banded score.
85
157
 
86
158
  ## Suppressing false positives
87
159
 
@@ -122,8 +194,8 @@ These are deliberately out of scope for v1:
122
194
  quotas, etc.).
123
195
 
124
196
  A clean report is **not** a launch certificate — it just means none of the
125
- obvious things tripped a tripwire. Walk through the full checklist before you
126
- ship.
197
+ obvious things tripped a tripwire. Use the Fix Kit, owner-verification items, and
198
+ rerun loop before you ship.
127
199
 
128
200
  ## Usage
129
201
 
@@ -131,7 +203,10 @@ ship.
131
203
  shippingszn [path] [options]
132
204
 
133
205
  Options:
134
- --json Output a machine-readable JSON summary.
206
+ --json Output a machine-readable JSON summary (includes the
207
+ full findings array).
208
+ --no-telemetry Run fully offline: no scan handoff, no Wall ping, zero
209
+ network calls. (--no-wall is an alias.)
135
210
  --proof Backward-compatible alias. Normal runs already return
136
211
  a scan-specific Launch Fix Kit URL.
137
212
  --base-url <url> Base URL used to build checkout and Fix Kit links.
@@ -155,17 +230,18 @@ This makes the CLI suitable for CI:
155
230
  ```
156
231
 
157
232
  For PR scan signal, have GitHub Actions run the scanner and post the JSON
158
- summary as a comment: score, severity counts, and unlock URL.
233
+ summary as a comment: score, severity counts, findings, and unlock URL.
159
234
 
160
235
  ## Privacy
161
236
 
162
237
  `shippingszn` reads files on your machine. It never uploads source code. By
163
- default it creates a locked scan handoff for checkout and makes one best-effort
238
+ default it creates a scan handoff for checkout and makes one best-effort
164
239
  outbound request to post anonymous Wall stats: score, launch label, files
165
240
  scanned count, finding counts by severity, detected stack tags, scanner version,
166
241
  and timestamp. Wall stats never include source code, file paths, filenames,
167
242
  project names, repo URLs, secrets, emails, handles, finding titles, evidence, or
168
- report contents. The Wall summary is automatic and not user-configurable.
243
+ report contents. The first run on a machine prints the exact payload to stderr,
244
+ and `--no-telemetry` (alias `--no-wall`) turns off all network calls.
169
245
 
170
246
  ## License
171
247