Pre ship security
This skill should be used right before deploying or shipping to production — a fast security review of the finished code, not a deep audit. Trigger phrases include "ready to ship", "before I deploy", "security check before launch", "is this safe to ship", "pre-launch checklist", "review security", "did I miss anything", "production-ready", "harden before launch", "antes de subir a producción". It runs npm audit + a secret scan, re-checks the code against the OWASP prevention checklist, and escalates to specialized audit tools only when the app is high-risk.From its SKILL.md
npx -y skills add MartinOlivero/saas-builder --skill pre-ship-securityAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
3 things to look at
- reads credentialsReads from 1 credential source: `.env`.
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
- runs commandsInstructs the agent to run 3 commands, including `npm audit --omit=dev` and 2 more.
SKILL.md
4.5 KB, ~1.0k tokens by cl100k_base, as published. Nobody here has run it
Pre-Ship Security
This is the last security gate before production: a quick, repeatable review of the finished code. It verifies that nothing slipped through what secure-coding prevented during the build.
Analogy: secure-coding is the seatbelt you wear while driving. A deep audit (Trail of Bits, fuzzing) is the garage that x-rays every part. This skill is the walk-around inspection before a road trip — lights, tire pressure, fuel. Quick, done every time, catches the obvious before you pull out of the driveway.
It does not replace a professional audit for high-risk apps — its job is to tell you when you need one. Security is never 100%; this skill is honest about that.
Trigger
Run when the user is about to deploy, merge to main, launch, or asks "is this safe to ship?". It pairs with secure-coding (which ran during the build) and deployment (which ships it).
Discovery (max 3 questions, only if unknown)
- What does the app handle — payments, personal data (PII), health, or crypto/keys?
- Is this the first production launch, or an incremental deploy?
- Public-facing or internal-only?
Step 1 — Automated quick scans
npm audit --omit=dev(orpnpm audit) → fix high/critical advisories; don't ship known-vulnerable dependencies.- Secret scan:
npx gitleaks detect(and check git history) → no API keys, tokens, or.envcommitted. If something is found, rotate the secret — deleting the commit is not enough, it's in the history. - Confirm
.env,.env*.local,*.pem,*.keyare git-ignored. - Client-bundle leak check: grep the built JS for known key prefixes; on Vite, anything that isn't
VITE_-prefixed must be absent from the bundle.
Step 2 — Review the diff against the prevention checklist
Re-check the finished code — the secure-coding rules, now verified instead of assumed:
- Authz on every endpoint? Each route checks the user and resource ownership (no IDOR). A route with no explicit check is the bug.
- Input validated? Every handler parses input with a
zod.strict()schema; noreq.bodyspread into a DB write (mass assignment). - No raw SQL concatenation — parameterized queries / ORM only.
- CORS is an explicit allowlist, not
*with credentials. - Security headers present (Helmet or platform headers): CSP, HSTS, X-Content-Type-Options.
- Webhooks verify signatures (Stripe, etc.) and read the raw body correctly.
- Errors don't leak stack traces in prod; logs contain no PII, tokens, or passwords.
- Auth routes rate-limited; passwords hashed with bcrypt/argon2.
Step 3 — Risk gate (escalate when needed)
Based on Discovery answer 1, decide whether a deeper review is required — and be explicit that deep auditing is out of this plugin's scope on purpose:
- Handles money, PII at scale, health data, or crypto/keys → recommend a deep audit before or shortly after launch, and point to specialized tooling:
- Static analysis: Semgrep / CodeQL (e.g. the
static-analysisor Trail of Bits skills). - Dependency / supply-chain: Dependabot, Snyk, supply-chain auditors.
- Fuzzing: only if there's parsing, crypto, or native code — AFL++, libFuzzer (the testing-handbook skills). Not relevant to a typical CRUD SaaS.
- Static analysis: Semgrep / CodeQL (e.g. the
- Standard low-risk CRUD SaaS → the checks above are a reasonable bar for launch. Say so honestly: this is a review, not a guarantee.
Output
Deliver: the scan results (audit + secrets), a pass/fail list against the checklist with the exact file:line of anything to fix, and a clear verdict — "safe to ship at this risk level", "fix these N items first", or "high-risk: get a deep audit". Never claim the app is fully secure.
Reference
OWASP Cheat Sheet Series (~29k⭐), npm audit, gitleaks (~18k⭐), Helmet. Escalation targets: Semgrep/CodeQL, Trail of Bits skills, testing-handbook (fuzzing), Snyk/Dependabot.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.
Gives 0 of the 12 instructions most ship operate skills give in ~1.0k tokens
Counted across 1,077 of the 1,713 authors here whose files we hold, read 2026-09-06
- Create GitHub releasein 44 of 1077, across 43 files
- Run the test suitein 30 of 1077, across 25 files
- Create and push git tagin 27 of 1077, across 26 files
- Push commits and tagsin 27 of 1077
- Create annotated tagin 25 of 1077, across 22 files
- Ensure working tree is cleanin 24 of 1077
- Check for product marketing context firstin 23 of 1077, across 6 files
- Commit version bump changesin 22 of 1077, across 21 files
- Update CHANGELOG.mdin 21 of 1077, across 20 files
- Structure launch marketing across three channel typesin 20 of 1077, across 5 files
- Commit and tag the releasein 20 of 1077, across 18 files
- Update the CHANGELOG for new releasesin 19 of 1077
Said here and by no other author read
- Verify gitignore rules for sensitive files
- Check client bundles for secret leaks
- Verify authorization on every endpoint
- Validate input with strict schemas
- Use parameterized queries for SQL
- Configure explicit CORS allowlists
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.