shippingszn 0.10.0 → 0.11.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.
- package/LICENSE +1 -1
- package/README.md +79 -70
- package/dist/index.js +395 -824
- package/package.json +14 -10
package/LICENSE
CHANGED
package/README.md
CHANGED
|
@@ -1,44 +1,33 @@
|
|
|
1
1
|
# shippingszn
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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
|
|
3
|
+
Primary local launch inspector for AI-built apps. Run it inside the app you are
|
|
4
|
+
about to ship to catch the launch debt AI builders commonly miss: leaked API
|
|
5
|
+
keys, missing crawl assets, weak browser defenses, dangerous code patterns, and
|
|
6
|
+
last-mile polish gaps.
|
|
12
7
|
|
|
13
8
|
```bash
|
|
14
|
-
npx shippingszn@latest
|
|
15
|
-
npx shippingszn@latest ./path # scan a specific directory
|
|
16
|
-
npx shippingszn@latest --no-telemetry # run fully offline, zero network calls
|
|
9
|
+
npx shippingszn@latest
|
|
17
10
|
# or
|
|
18
11
|
pnpm dlx shippingszn@latest
|
|
19
12
|
```
|
|
20
13
|
|
|
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
14
|
The CLI **never writes, modifies, or deletes** any files - it only reads. (The
|
|
28
15
|
one exception is a tiny first-run marker under your config dir,
|
|
29
16
|
`~/.config/shippingszn/seen`, used to show the telemetry notice once.) By
|
|
30
17
|
default each run creates a scan handoff for checkout and sends one anonymous
|
|
31
18
|
Wall report-card summary with score, severity counts, files scanned, scanner
|
|
32
|
-
version, and safe stack tags.
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
19
|
+
version, and safe stack tags. The handoff includes a stable opaque project
|
|
20
|
+
fingerprint so shippingszn can recognize matched paid rescans without receiving
|
|
21
|
+
the repo URL, project name, or absolute project path. It never uploads matched
|
|
22
|
+
source lines, source-file contents, unredacted secrets, handles, or emails.
|
|
23
|
+
Pass `--no-telemetry` to run fully offline (zero network calls).
|
|
24
|
+
|
|
25
|
+
**The free scan is the launch scoreboard.** Its result contains only a verdict,
|
|
26
|
+
a higher-is-better Readiness Score, severity counts, and a launch band. It does
|
|
27
|
+
not reveal finding titles, checklist content, file paths, evidence, fix steps,
|
|
28
|
+
or AI-builder prompts. The Fix Kit CTA and locked handoff metadata stay visible
|
|
29
|
+
so the matched project can be purchased. Run with `--json` to get the same
|
|
30
|
+
score-level result in a machine-readable shape:
|
|
42
31
|
|
|
43
32
|
```json
|
|
44
33
|
{
|
|
@@ -46,20 +35,8 @@ and what's wrong — plus completed-checks coverage and the Fix Kit CTA. Run wit
|
|
|
46
35
|
"band": "fix_first",
|
|
47
36
|
"counts": { "critical": 0, "high": 11, "medium": 1, "lower": 1 },
|
|
48
37
|
"filesScanned": 128,
|
|
49
|
-
"
|
|
50
|
-
"
|
|
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
|
-
],
|
|
38
|
+
"scannerVersion": "0.11.0",
|
|
39
|
+
"detailsLocked": true,
|
|
63
40
|
"unlockUrl": "https://shippingszn.com/fix-kit?scanResultId=00000000-0000-4000-8000-000000000123",
|
|
64
41
|
"scanHandoff": {
|
|
65
42
|
"status": "uploaded",
|
|
@@ -69,21 +46,48 @@ and what's wrong — plus completed-checks coverage and the Fix Kit CTA. Run wit
|
|
|
69
46
|
}
|
|
70
47
|
```
|
|
71
48
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
49
|
+
### Upgrading from 0.10.x
|
|
50
|
+
|
|
51
|
+
Version 0.11 intentionally removes the `findings` array from free human and
|
|
52
|
+
JSON output. JSON responses now set `detailsLocked` to `true` and expose only
|
|
53
|
+
the score, severity counts, launch band, and paid handoff metadata. The 0.10
|
|
54
|
+
line is superseded and unsupported; consumers of its old finding-level JSON
|
|
55
|
+
must migrate to the score-level 0.11 contract.
|
|
56
|
+
|
|
57
|
+
One $49 Launch Fix Kit is bound to one matched project. It includes the exact
|
|
58
|
+
findings, file evidence, per-finding fix instructions, AI-builder prompts, the
|
|
59
|
+
full 58-item launch workbook, and unlimited matched re-scans for that project.
|
|
60
|
+
One global Codex OAuth connection works from any local Codex project, but paid
|
|
61
|
+
data for an unrelated project is denied. Checkout purchases the Fix Kit but
|
|
62
|
+
does not sign you in; OTP sign-in is required before paid report or OAuth
|
|
63
|
+
access. Compatible legacy purchases that predate secure project binding can be
|
|
64
|
+
linked once from Account when their original repository scan and paid report
|
|
65
|
+
context are still available: run a fresh score-only scan in the exact project,
|
|
66
|
+
select the exact owned purchase, and permanently confirm that one project. If
|
|
67
|
+
Account says that context is missing or incompatible, use
|
|
68
|
+
https://shippingszn.com/support#codex-mcp for a manual access review. Recurring
|
|
69
|
+
launch monitoring is a separate product and is not included in the Fix Kit.
|
|
76
70
|
|
|
77
71
|
## Telemetry
|
|
78
72
|
|
|
79
|
-
Plain `npx shippingszn@latest`
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
73
|
+
Plain `npx shippingszn@latest` makes **two** telemetry requests per run. The
|
|
74
|
+
locked handoff is pseudonymous; the Wall ping is anonymous:
|
|
75
|
+
|
|
76
|
+
1. **Scan handoff** (`POST /api/scan-results`) — powers the `/fix-kit` link the
|
|
77
|
+
CLI prints. It carries a stable pseudonymous project fingerprint used only
|
|
78
|
+
to match paid rescans and enforce one-project access. It also carries each
|
|
79
|
+
finding's severity, checklist item, `file:line` location, and a short derived
|
|
80
|
+
or redacted evidence category. It never carries matched source lines,
|
|
81
|
+
source-file contents, the repo URL, project name, absolute project path, or
|
|
82
|
+
unredacted secret values.
|
|
83
|
+
2. **Aggregate Wall ping** (`POST /api/wall`) — intentionally small: score,
|
|
84
|
+
launch label, files scanned, finding counts by severity, detected stack
|
|
85
|
+
tags, scanner version, and timestamp. No paths, no filenames, no
|
|
86
|
+
finding-level detail.
|
|
87
|
+
|
|
88
|
+
On the **first run on a machine**, the CLI prints a description of both requests,
|
|
89
|
+
including the stable project fingerprint category, plus the exact aggregate
|
|
90
|
+
payload (to stderr, so it never corrupts `--json` output) and a note that you
|
|
87
91
|
can turn it off. Telemetry is default-on but fully transparent and opt-out-able:
|
|
88
92
|
|
|
89
93
|
```bash
|
|
@@ -95,8 +99,9 @@ npx shippingszn@latest --no-telemetry # zero network calls, fully offline
|
|
|
95
99
|
|
|
96
100
|
The same run also creates a scan-specific paid-report handoff. The terminal
|
|
97
101
|
prints a `/fix-kit?scanResultId=...` URL so checkout can carry that scan into
|
|
98
|
-
the Launch Fix Kit after purchase.
|
|
99
|
-
|
|
102
|
+
the project-bound Launch Fix Kit after purchase. Checkout does not sign you in;
|
|
103
|
+
complete OTP sign-in to open the paid Kit. `--proof` is still accepted for old
|
|
104
|
+
docs, but it is no longer required.
|
|
100
105
|
|
|
101
106
|
## What gets checked
|
|
102
107
|
|
|
@@ -122,10 +127,10 @@ maps back to one of the items on the checklist.
|
|
|
122
127
|
- Placeholder content (`lorem ipsum`, `John Doe`, `test@example.com`) and
|
|
123
128
|
`TODO` / `FIXME` / `XXX` / `HACK` comments.
|
|
124
129
|
|
|
125
|
-
|
|
126
|
-
checklist item.
|
|
127
|
-
|
|
128
|
-
|
|
130
|
+
Internally, each finding is tagged Critical, High, Medium, or Lower and maps to
|
|
131
|
+
the relevant checklist item. The free output rolls those findings into the
|
|
132
|
+
scoreboard. The Fix Kit opens the finding-level diagnosis, human launch
|
|
133
|
+
decision, and AI-builder punch list.
|
|
129
134
|
|
|
130
135
|
## Scoring
|
|
131
136
|
|
|
@@ -203,8 +208,8 @@ rerun loop before you ship.
|
|
|
203
208
|
shippingszn [path] [options]
|
|
204
209
|
|
|
205
210
|
Options:
|
|
206
|
-
--json Output a machine-readable
|
|
207
|
-
|
|
211
|
+
--json Output a machine-readable score, severity counts, and
|
|
212
|
+
launch band summary.
|
|
208
213
|
--no-telemetry Run fully offline: no scan handoff, no Wall ping, zero
|
|
209
214
|
network calls. (--no-wall is an alias.)
|
|
210
215
|
--proof Backward-compatible alias. Normal runs already return
|
|
@@ -230,18 +235,22 @@ This makes the CLI suitable for CI:
|
|
|
230
235
|
```
|
|
231
236
|
|
|
232
237
|
For PR scan signal, have GitHub Actions run the scanner and post the JSON
|
|
233
|
-
summary as a comment: score, severity counts,
|
|
238
|
+
summary as a comment: score, severity counts, launch band, and unlock URL.
|
|
234
239
|
|
|
235
240
|
## Privacy
|
|
236
241
|
|
|
237
242
|
`shippingszn` reads files on your machine. It never uploads source code. By
|
|
238
|
-
default it
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
project
|
|
243
|
-
|
|
244
|
-
|
|
243
|
+
default it makes two requests. The locked checkout handoff contains a stable
|
|
244
|
+
pseudonymous project fingerprint plus each finding's severity, checklist item,
|
|
245
|
+
relative file-and-line location, and short derived or redacted evidence
|
|
246
|
+
category; it never contains matched source lines, source-file contents, an
|
|
247
|
+
absolute project path, or unredacted secrets. The anonymous Wall request
|
|
248
|
+
contains only score, launch label, files-scanned count, severity counts,
|
|
249
|
+
detected stack tags, scanner version, and timestamp. It never contains file
|
|
250
|
+
paths, filenames, project names, repo URLs, emails, handles, finding titles,
|
|
251
|
+
evidence, or report contents. The first run on a machine prints this contract
|
|
252
|
+
and that run's exact aggregate Wall values to stderr. `--no-telemetry` (alias
|
|
253
|
+
`--no-wall`) turns off both requests and every other network call.
|
|
245
254
|
|
|
246
255
|
## License
|
|
247
256
|
|