Evidence-driven acceptance gate for AI-generated software changes.
Read this in other languages: 한국어
AI coding agents write code fast. Deciding whether that code is safe to merge, deploy, and maintain is a different problem. ShipProof is an Agent Skill that turns your coding agent (Claude Code, OpenAI Codex, and other Agent Skills–compatible tools) into a disciplined acceptance reviewer:
You: Review this change for production adoption.
ShipProof:
1. Maps the repo and the diff
2. Classifies risk signals (money, auth, schema-change, ...)
3. Activates ONLY the relevant review modules
4. Runs safe checks — and never claims it ran something it didn't
5. Registers issues with evidence, severity, trigger, and a fix-verification step
6. Issues a verdict: PASS · CONDITIONAL_PASS · FAIL · INCONCLUSIVE
7. Self-validates the report against its own contradiction rules
Generic review prompts have predictable failure modes — and ShipProof has a concrete mechanism against each:
| Failure mode of generic review | ShipProof mechanism |
|---|---|
| Claims it ran tests it never ran | Every command is EXECUTED (with captured output) or PROPOSED — enforced by a report validator script, not by good intentions |
| Confuses inference with fact | Four evidence states: VERIFIED / INSPECTED / INFERRED / UNKNOWN, required on every issue |
| Reviews everything shallowly | Adaptive scope: risk signals activate only the relevant modules; excluded modules are listed with reasons |
| Style nitpicks buried with real risks | Severity measures consequence; STYLE can never be a BLOCKER (validator-enforced) |
| Verdict contradicts findings | PASS with a BLOCKER/HIGH issue is rejected by validate_report.py (exit 1) |
| Pretends full coverage | Reports must list uninspected areas and unknowns; confidence is capped accordingly |
- Acceptance verdict, not opinions. Every review ends with
PASS / CONDITIONAL_PASS / FAIL / INCONCLUSIVE+ confidence, under explicit decision rules (verdict-policy). - Machine-checkable honesty. Reports emit JSON
(schema) and
validate_report.py(stdlib-only, 25 unit tests) rejects self-contradictory reports. Usable as a CI gate. - Desktop & kiosk module. Most review tools assume web services. ShipProof ships a flagship module for WPF/desktop/kiosk software: UI-thread discipline, power-loss recovery, local file atomicity, device disconnect/reconnect, unattended-update safety — written from real kiosk operations experience.
- Safe by default. Read-only review, a 4-tier command safety policy, and repository content treated as untrusted input (prompt-injection aware).
- Re-verification loop. "Did the fixes land?" re-checks the same issue IDs
with the same criteria:
RESOLVED / UNRESOLVED / REGRESSED, evidence required.
One-liner (via the skills CLI) — installs globally for Claude Code, so it works in every project, no prompts:
npx -y skills add WhorideChicken/shipproof -a claude-code -gUsing multiple agents (Codex, Cursor, ...)? Run the interactive form instead
and pick them from the list — just make sure Claude Code is checked, and
choose the Global scope:
npx skills add WhorideChicken/shipproofNo Node.js / not showing up in Claude? See docs/INSTALL.md.
Or as a Claude Code plugin:
/plugin marketplace add WhorideChicken/shipproof
/plugin install shipproof@shipproof
Or manual copy — it's just a folder (all methods: docs/INSTALL.md):
git clone https://github.com/WhorideChicken/shipproof.git
mkdir -p ~/.claude/skills && cp -r shipproof/skills/shipproof ~/.claude/skills/shipproofThen, in your project, invoke it directly as a slash command:
/shipproof review this branch against main
/shipproof is this PR safe to merge?
/shipproof review the migration for zero-downtime deploy and rollback safety
/shipproof re-verify the blockers from the previous report
Installed as a plugin (Method 2)? The command is namespaced:
/shipproof:shipproof <request>.
Or just ask in natural language — the skill triggers on review requests:
Review this change for software acceptance and production adoption.
This is an internal tool for ~5 users — review only what matters.
## 1. Verdict
- Verdict: CONDITIONAL_PASS
- Confidence: MEDIUM
- Rationale: duplicate-payment path is real (SP-001, HIGH); fix + test required before production.
## 4. Critical Findings
| ID | Severity | Evidence | Finding | Trigger | Required action |
| SP-001 | HIGH | INSPECTED | No idempotency check in ProcessAsync (src/Payments/PaymentService.cs) | client retry / network resend | unique key + in-transaction check |…followed by executed vs proposed checks, uninspected areas, unknowns, and a machine-readable JSON block. Full structure: report-format.
python skills/shipproof/scripts/validate_report.py report.jsonExit 0 = consistent; 1 = contradictions (listed as JSON); 2 = unparsable.
No dependencies beyond Python 3.10+.
| Module | Covers |
|---|---|
| code | failure paths, concurrency, resource lifecycle, AI-hallucination patterns |
| api | contracts, validation, IDOR, idempotency, timeout/retry |
| database | integrity, transactions, migration lock/compat/rollback |
| security | threat-model-first authN/authZ, injection, secrets |
| testing | risk-based test mapping, AI-generated test smells |
| deployment | mixed-version windows, flags, rollback, observability |
| frontend | four states, double-submit, stale state, client secrets |
| desktop-kiosk | UI thread, power-loss recovery, devices, unattended operation |
| supply-chain | slopsquatting, install scripts, Docker/CI pinning |
- Not a safety guarantee — it reduces adoption risk within the evidence it could gather, and says exactly what it could not verify.
- Not a replacement for security audits, pen tests, or legal review.
- Not a linter or a style scorer.
- It never deploys, touches production databases, or modifies your code without an explicit request.
skills/shipproof/ the installable Agent Skill
SKILL.md control plane (what the agent follows)
references/ 15 policy + review modules (loaded on demand)
scripts/validate_report.py
assets/ report template + JSON schema
docs/ install guides (EN/KR)
tests/ unit tests for the validator
Issues and PRs welcome — especially real-world false positives/negatives, new review modules, and non-web domain checklists. See CONTRIBUTING.md.
MIT © 2026 WooWon Jin