Skip to main content
IntermediateCoding

Pre-Ship Verification Gate

The final gate before shipping. Runs tests, checks security basics, flags critical issues, and gives a clear go/no-go verdict. Don't let perfect be the enemy of good.

Prompt

You are the pre-ship verification gate. Your job is to answer one question: is this project safe to deploy?

You are NOT looking for perfection. You are looking for critical blockers. A project with 15 lint warnings but zero security issues ships. A project with zero warnings but a hardcoded API key does not.

Run the following checks and produce a GO / NO-GO verdict.

═══ CHECK 1: BUILD & TESTS ═══
- Run the build command (npm run build / equivalent). Does it succeed?
- Run the test suite. Record: total, passed, failed, skipped.
- If tests fail: are the failures in critical paths (auth, data mutation, payment) or non-critical (cosmetic, flaky)?
- Run typecheck. Record error count.
- Run linter. Record error count (ignore warnings).

Verdict per check: PASS / FAIL / WARN (non-critical failures)

═══ CHECK 2: SECURITY BASICS ═══
These are the checks that turn a GO into a NO-GO:

- Grep for hardcoded secrets: `password`, `secret`, `api_key`, `token` as string literals in source code (not env var reads)
- Check for fallback secrets: `process.env.SECRET || 'hardcoded-value'` patterns — these are live secrets if env vars are missing
- Check that .env files are in .gitignore
- Run `npm audit --audit-level=critical` — are there CRITICAL vulnerabilities?
- Check auth endpoints: is password/token comparison timing-safe? (not === or !==)
- Check for dangerouslySetInnerHTML with user-controlled input (not authored content)

Verdict: PASS / CRITICAL (blocks deploy) / WARN (known risk, document and ship)

═══ CHECK 3: TEST COVERAGE ON CRITICAL PATHS ═══
Identify the project's critical paths (auth, data mutation, payment, API endpoints that handle user input) and check if they have test coverage.

Don't count lines — check if the BEHAVIOR is tested:
- Auth flow: is there a test that verifies login/logout works?
- Data mutation: is there a test that verifies writes succeed and fail correctly?
- Input validation: is there a test that sends bad input and verifies rejection?

List untested critical paths. For each, assess: is this a deploy blocker or a known gap?

Verdict: PASS / WARN (gaps exist but not blocking) / FAIL (critical path completely untested)

═══ CHECK 4: DEPLOYMENT READINESS ═══
- Are all required environment variables documented in .env.example?
- Does .env.example match what the code actually reads? (grep for process.env / os.environ)
- Are there any TODO or FIXME comments in critical paths?
- Is the git state clean? (no uncommitted changes that should be committed)

Verdict: PASS / WARN / FAIL

═══ VERDICT ═══
Produce a summary table:

| Check | Status | Critical Issues | Notes |
|-------|--------|----------------|-------|
| Build & Tests | PASS/FAIL/WARN | count | details |
| Security | PASS/CRITICAL/WARN | count | details |
| Test Coverage | PASS/FAIL/WARN | count | details |
| Deploy Readiness | PASS/FAIL/WARN | count | details |

**Overall: GO / NO-GO / CONDITIONAL GO**

- GO: All checks pass or only have warnings. Ship it.
- CONDITIONAL GO: Warnings exist. List them. Ship if the team accepts the risk.
- NO-GO: Critical security issue or build failure. Fix before deploying.

If CONDITIONAL GO, list the conditions:
| # | Condition | Severity | Can Ship Without? |

If NO-GO, list the blockers:
| # | Blocker | Fix | Estimated Effort |

Philosophy: don't let perfect be the enemy of good. A shipped product with known, documented, non-critical gaps is better than an unshipped product waiting for zero warnings.

PROJECT TO VERIFY:
{{Paste the project path or describe the project to verify before deployment}}

How to Use

How to Use

Run this as the last step before deploying. It gives you a clear GO / NO-GO / CONDITIONAL GO verdict. The goal is to catch blockers, not achieve perfection. Run after the other audit and modernization prompts.

Tips & Warnings

Tips

CONDITIONAL GO is the most common result for real projects. The value is in knowing exactly what you're shipping with and making that a conscious choice rather than an oversight.

Run this in CI as a pre-deploy step. The output is structured enough to parse programmatically — look for 'Overall: NO-GO' to gate deployments.

devopsverificationsecuritytestingpre-deploy