Composer + Claude Code · v0.5.4
Larascan
A deterministic, dependency-free scanner packaged as a Claude Code skill. Point Claude at any Laravel 9/10/11/12 repo and get a scored HTML report in seconds.
Buy on Gumroad — $99 USDOne-time purchase · Free updates · Commercial license
- composer require --dev mjgapp/larascan — or install as a Claude Code skill
- 24 rules across 5 categories (security, Blade, performance, AI-slop, deploy)
- 4 rule profiles: pre-launch, rescue, monthly, default
- --fix mode auto-corrects 6 safe issues in one command
- Baseline file — adopt on legacy codebases without CI failing every PR
- .larascan/config.json for team-wide defaults
- SARIF output → GitHub Security tab native integration
- Diff mode + custom rule plugins + Slack/Discord webhooks + interactive walkthrough
What it catches, across five categories
The full rule set (v0.5.4)
Every finding comes with file:line precision and a one-line fix.
| Rule | Title | Severity |
|---|---|---|
| SEC-001 | APP_DEBUG enabled in .env | critical |
| SEC-002 | Unbounded mass assignment ($guarded = []) | high |
| SEC-003 | Raw SQL with variable interpolation | critical |
| SEC-004 | Hardcoded API keys or secrets in source | critical |
| SEC-005 | dd() / dump() / var_dump() left in code | medium |
| SEC-006 | unserialize() call — PHP object injection / RCE | critical |
| SEC-007 | eval() call — arbitrary code execution | critical |
| SEC-008 | APP_KEY empty, placeholder, or too short | critical |
| SEC-009 | APP_ENV set to local | medium |
| SEC-010 | Session cookie http_only or secure disabled | medium |
| SEC-011 | SQL keyword string with variable interpolation | high |
| BLADE-001 | Unescaped Blade output ({!! !!}) — XSS risk | high |
| BLADE-002 | State-changing form missing @csrf | high |
| PERF-001 | Potential N+1 query inside foreach | high |
| PERF-002 | Foreign key column without index | medium |
| PERF-003 | Synchronous Mail::send (not queued) | medium |
| PERF-004 | Model::all() loads every row into memory | low |
| SLOP-001 | High TODO / FIXME density in a file | low |
| SLOP-002 | Multiple stub functions with empty returns | low |
| SLOP-003 | PHP class in app/ has no namespace | low |
| DEPLOY-001 | composer.lock missing | high |
| DEPLOY-002 | composer.lock older than composer.json | medium |
| DEPLOY-003 | PHP version not constrained in composer.json | low |
| DEPLOY-004 | SESSION_DRIVER=file (breaks multi-instance deploys) | low |
Two ways to install
Same scanner. Same reports. Pick the path that fits your workflow.
- 1Composer (for CI and team-wide use)composer require --dev mjgapp/larascan
- 2Claude Code skill (for conversational audits)mv larascan ~/.claude/skills/ & restart Claude
- 3Run itvendor/bin/larascan . --pretty or just ask Claude: audit this app
Requires PHP 8.1+ (any install: Herd, Valet, Homebrew). Zero Composer dependencies.
FAQ
Ready to audit your Laravel app?
One $99 USD purchase. Unlimited projects. Free v0.x updates. Launch price — $149 USD thereafter. CAD shown at checkout.
Buy on GumroadWant a human-reviewed audit with custom fixes? Book a call.