$ recombobulate _
home / tips / ask-claude-to-write-custom-phpstan-rules-for-your-codebase
0

Ask Claude to Write Custom PHPStan Rules for Your Codebase

bagwaa @bagwaa · Mar 26, 2026 · Workflows
ask-claude-to-write-custom-phpstan-rules-for-your-codebase

PHPStan catches bugs at analysis time, but the real power comes from custom rules that enforce your team's conventions. Writing them by hand means wrestling with the AST — or you can just ask Claude.

Write a custom PHPStan rule that forbids calling $model->save()
directly inside a controller. All persistence should go through
a repository or service class. Include the PHPStan extension
config to register it.

Claude generates a complete rule class extending PHPStan\Rules\Rule, with proper node visitor logic, error messages, and the phpstan.neon config to wire it up:

// src/PHPStan/NoDirectSaveInControllerRule.php
class NoDirectSaveInControllerRule implements Rule
{
    public function getNodeType(): string
    {
        return MethodCall::class;
    }

    public function processNode(Node $node, Scope $scope): array
    {
        // Claude handles the AST inspection logic
    }
}

You can ask for Larastan-specific rules too:

Write a Larastan rule that flags any Eloquent query inside a
Blade view file. Queries should only run in controllers or
dedicated query classes.

Need to enforce naming conventions, ban specific function calls, or require certain return types? Just describe the rule in plain English and Claude writes the visitor, the tests, and the config.

Codify your team's standards into static analysis rules — Claude handles the AST complexity.

~/recombobulate $ tip --comments --count=0

Log in to leave a comment.

~/recombobulate $ tip --related --limit=3
0
Scan Pending Changes for Security Issues with /security-review

The /security-review command scans your uncommitted changes for injection vectors, auth gaps, hardcoded secrets, and other common vulnerabilities.

bagwaa @bagwaa · 1 hour ago
0
Run Setup Scripts on Every Session with the SessionStart Hook

The SessionStart hook fires when any session begins or resumes, making it ideal for loading environment variables and running one-time setup scripts.

bagwaa @bagwaa · 1 hour ago
0
Write Property-Based Tests with fast-check and Claude

Ask Claude to write property-based tests for your functions using fast-check — it identifies the mathematical invariants in your code and generates tests that cover inputs you'd never enumerate by hand.

bagwaa @bagwaa · 2 hours ago