Php
PHP development: code quality, PSR standards, testing with PHPUnit.From its SKILL.md
npx -y skills add notque/vexjoy-agent --skill phpAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
SKILL.md
3.8 KB, 808 tokens by cl100k_base, as published. Nobody here has run it
PHP Skill
PHP code quality and testing: strict types, PSR-12 compliance, modern language features, framework idioms, static analysis tooling, and PHPUnit testing patterns.
Reference Loading Table
| Signal | Reference | Size |
|---|---|---|
| union types, intersection types, DNF, enums, readonly, named arguments, match expression, null-safe operator, PHP 8.0, PHP 8.1, PHP 8.2 | references/modern-php-features.md | ~160 lines |
| Laravel, Eloquent, Collections, Service Container, Symfony, DI attributes, Event Dispatcher, framework | references/framework-idioms.md | ~70 lines |
| PHP-CS-Fixer, PHPStan, Psalm, Rector, static analysis, CI, linting, code style, taint analysis | references/quality-tools.md | ~60 lines |
| PHPUnit tests, data providers, mocks, stubs, database testing, HTTP testing, coverage | references/testing-patterns.md | ~120 lines |
| quality review process, phases, PSR-12 enforcement | references/php-quality.md | ~60 lines |
| test writing process, test doubles, Prophecy, database fixtures | references/php-testing.md | ~50 lines |
Loading rule. Read the references whose signals match the task before responding.
Core Rules (Always Apply)
Strict Types Declaration
Every PHP file must begin with declare(strict_types=1). This enforces scalar type coercion rules, catching type errors at call time instead of silently converting values. Omitting it is a code quality defect.
PSR-12 Coding Standard
PSR-12 extends PSR-1 and PSR-2 as the accepted PHP coding style:
- 4-space indentation, no trailing whitespace
- One class per file
usestatements after namespace with a blank line before and after- Visibility required on all properties, methods, and constants
- Opening braces on same line for control structures
- Opening braces on next line for classes and methods
Phase 1: ASSESS
Determine what kind of PHP work is needed:
| Request type | Load references | Action |
|---|---|---|
| Code review | quality refs + quality-tools | Full quality pass |
| Type system question | modern-php-features | Feature-specific guidance |
| Framework patterns | framework-idioms | Idiomatic pattern review |
| Tooling setup | quality-tools | Config and CI guidance |
| Write tests | testing-patterns + php-testing | PHPUnit test authoring |
| Test review | testing-patterns | Test quality review |
Gate: Request classified and relevant references loaded.
Phase 2: EXECUTE
Apply loaded reference knowledge to the user's code or question.
For quality reviews, check:
declare(strict_types=1)present- PSR-12 compliance
- Modern PHP features used where appropriate
- Framework idioms followed (if applicable)
- Quality tooling configured (if applicable)
For testing work:
- Use PHPUnit
TestCasewithtestprefix or@testannotation - Use
@dataProviderfor table-driven cases - Use
createStub()for return values,createMock()for interaction assertions - Use
DatabaseTransactions(Laravel) orKernelTestCase(Symfony) for database tests - Call
parent::setUp()first in everysetUp()method
Gate: Specific, reference-backed feedback or code provided.
Phase 3: VERIFY
Run the test suite and confirm:
./vendor/bin/phpunit
# For coverage enforcement:
XDEBUG_MODE=coverage ./vendor/bin/phpunit --coverage-text --coverage-min=80
Gate: All tests pass. Coverage threshold met if configured.
What ships with it: 6 files
19.1 KB alongside SKILL.md
references/
- framework-idioms.md1.8 KB
- modern-php-features.md4.4 KB
- php-quality.md1.7 KB
- php-testing.md1.7 KB
- quality-tools.md2.0 KB
- testing-patterns.md7.5 KB