agentsclimarketplace

Pre ship security

Skill MartinOlivero/saas-builder/skills/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

Install
npx -y skills add MartinOlivero/saas-builder --skill pre-ship-security

Assembled 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)

  1. What does the app handle — payments, personal data (PII), health, or crypto/keys?
  2. Is this the first production launch, or an incremental deploy?
  3. Public-facing or internal-only?

Step 1 — Automated quick scans

  • npm audit --omit=dev (or pnpm 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 .env committed. If something is found, rotate the secret — deleting the commit is not enough, it's in the history.
  • Confirm .env, .env*.local, *.pem, *.key are 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; no req.body spread 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-analysis or 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.
  • 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.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.