Skip to content

Map your Next.js app.
See where confidence is strong or uncertain.
Merge-time SHIP — no spec wall on day one.

Optional ISL and full verify for teams that want deeper assurance — same product, stronger band when you need it.

Install in seconds

Terminal window
npm install -g @shipgate.dev/cli@3.0.0

Full copy-paste path (local + GitHub Actions): docs/quickstart.md on GitHub.

Write specs that catch fake features

domain PaymentService {
entity Payment {
id: UUID [immutable, unique]
amount: Money [positive]
status: PaymentStatus
}
behavior ProcessPayment {
input {
amount: Money
card: Card
}
preconditions {
amount > 0
card.is_valid
not order.already_paid
}
postconditions {
success implies {
payment.charged == amount
order.status == "paid"
receipt.sent(customer.email)
}
failure implies {
order.status == old(order.status)
error.logged
}
}
}
}

Why ShipGate?

Catch fake features

AI can generate code that looks right but doesn’t work. ISL catches functions that return hardcoded values, skip validation, or silently ignore errors.

Verify AI-generated code

Write specs before asking AI to generate code. Then verify the implementation matches your intent — not just your tests.

Generate type-safe code

From one ISL spec, generate TypeScript types, Rust structs, Go interfaces, and OpenAPI schemas. One source of truth.

Ship with evidence

Every verification produces an evidence bundle with a trust score. Gate your CI pipeline so only verified code ships.

How it works

  1. Write an ISL spec describing what your code should do
  2. Generate code — TypeScript types, validators, and test stubs
  3. Implement — or let AI generate the implementation
  4. Verify — run shipgate verify to check the implementation against the spec
  5. Ship — if it passes, you get a SHIP verdict with a trust score
Terminal window
$ shipgate verify payment.isl --impl ./src/payment.ts
ProcessPayment:
Precondition: amount > 0 (passed)
Precondition: card.is_valid (passed)
Postcondition: payment.charged == amount (passed)
Postcondition: order.status == "paid" (passed)
Invariant: amount > 0 (holds)
Verdict: SHIP Trust Score: 97/100

Explore the docs

Next.js confidence ladder

Map your App Router app, see Baseline ready / Review needed / Enterprise blockers, and reach Tier‑1 SHIP without hand-writing ISL first. Read the ladder →

CLI Reference

All commands, flags, and options. Use shipgate check to type-check specs and shipgate gate for the SHIP/NO_SHIP verdict. Explore commands →

CI/CD Integration

Add ShipGate to your GitHub Actions pipeline. Set up CI →