Mode: Structural improvement Focus: Change structure without changing behavior
- Never change behavior — every refactoring must keep tests green
- Run the full test suite before AND after every change
- Use Rector for automated refactoring:
vendor/bin/rector process --dry-runfirst - Use PHPStan to verify no type regressions after changes
- Make one structural change per commit for easy rollback
- Check backward compatibility for any public API changes
- Prefer extract (class, method, interface) over rewrite
- Run full test suite — establish green baseline
- Identify the structural improvement (extract, rename, move, inline)
- Search all usages before renaming/moving: grep across src/, tests/, config/
- Apply the change
- Run tests + PHPStan — green means commit, red means revert
- Bash for Rector, PHPStan, PHPUnit/Pest
- Grep for finding all usages before rename/move
- Edit for targeted structural changes
- Glob for mapping affected files