Ship Claude Code PRs
that actually get merged.
A pre-PR quality gate for Claude Code. Catches AI code smells, security issues, and attribution leaks before you push.
Free forever · MIT · No account · 100% local · Zero telemetry
$ /ship 🔍 PRGuard running on diff (main...HEAD) 🧬 AI fingerprints ❌ 3 issues • app/api/users.ts:42 — generic throw new Error("Failed to fetch") • app/lib/format.ts:14 — comment // Initialize the array — remove • tests/users.test.ts — test names use "should X when Y" 🔒 Security ✅ clean ✅ Test coverage ⚠️ 1 function untested 🏷️ Attribution leaks ✅ clean 🎨 Style match ✅ matches recent PRs 📊 Change scope ✅ 127 LOC, focused Fix 3 fingerprint issues and 1 coverage gap → re-run /ship
Your Claude Code PR got rejected.
The code works. Tests pass. But the reviewer says “this looks AI-written”. Here's what they spotted:
- ✕Co-Authored-By: Claude stuck in a commit trailer
- ✕Defensive try/catch around code that can't throw
- ✕Comments like // Initialize the variable
- ✕Generic throw new Error("Failed to fetch data")
- ✕PR body with headers the repo never uses
- ✕Zero tests for the new code path
PRGuard catches all of it. Before you push.
Six checks. Confidence-scored. No noise.
Every finding gets a 0–100 score. Anything below 80 filtered out — so you only see what a real reviewer would block on.
AI fingerprints
10 patterns scanned against your repo's own style — defensive try/catch, generic errors, template PR bodies.
Security
Secrets, SQL injection, XSS, unsafe deserialization, weak crypto. Confidence-scored, no false positives.
Test coverage
Every new function checked for tests. Regression tests flagged missing on bug-fix commits.
Attribution leaks
Claude/Anthropic/AI strings anywhere in diff or commit trailer? Blocked before push.
Style match
Samples your last 5 merged PRs. Warns if commit style or PR body diverges from repo norm.
Change scope
Warns on >400 LOC or unrelated directories touched. No more 'while I'm here' refactors.
Install in 30 seconds.
Clone into your Claude Code plugins folder:
$ git clone https://github.com/Islam0953/prguard ~/.claude/plugins/prguardThen in any Claude Code session:
/ship
Requires Claude Code CLI. No config file needed — /ship works out of the box and self-calibrates on first run via /ship-setup.
FAQ
Does this replace code review?+
No. A human reviewer still catches things PRGuard won't — domain logic, product decisions, architecture. PRGuard catches the mechanical stuff that wastes reviewer time.
What languages does it work with?+
Language-aware checks cover TypeScript, JavaScript, Python, Go, Rust, Swift, Ruby, Java, PHP. Fingerprint, attribution, and scope checks work on any text.
Does it run automatically?+
Only if you want. Run /ship manually before git push, or add a pre-commit hook. Nothing is forced.
Does it send my code anywhere?+
No. 100% local via Claude Code. Zero telemetry. No account. Nothing leaves your machine.
Why 'PRGuard'?+
Because the goal is to guard your PRs against the mechanical smells that get them rejected — before you push, not after a reviewer points them out.