PHP Skill

SkillAI & models

PHP development: code quality, PSR standards, testing with PHPUnit.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the PHP Skill skill

What this skill tells your AI

The instructions your AI receives, as published by notque/vexjoy-agent in skills/engineering/php/SKILL.md and read by ahel’s review.

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

SignalReferenceSize
union types, intersection types, DNF, enums, readonly, named arguments, match expression, null-safe operator, PHP 8.0, PHP 8.1, PHP 8.2references/modern-php-features.md~160 lines
Laravel, Eloquent, Collections, Service Container, Symfony, DI attributes, Event Dispatcher, frameworkreferences/framework-idioms.md~70 lines
PHP-CS-Fixer, PHPStan, Psalm, Rector, static analysis, CI, linting, code style, taint analysisreferences/quality-tools.md~60 lines
PHPUnit tests, data providers, mocks, stubs, database testing, HTTP testing, coveragereferences/testing-patterns.md~120 lines
quality review process, phases, PSR-12 enforcementreferences/php-quality.md~60 lines
test writing process, test doubles, Prophecy, database fixturesreferences/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
  • use statements 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 typeLoad referencesAction
Code reviewquality refs + quality-toolsFull quality pass
Type system questionmodern-php-featuresFeature-specific guidance
Framework patternsframework-idiomsIdiomatic pattern review
Tooling setupquality-toolsConfig and CI guidance
Write teststesting-patterns + php-testingPHPUnit test authoring
Test reviewtesting-patternsTest 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:

  1. declare(strict_types=1) present
  2. PSR-12 compliance
  3. Modern PHP features used where appropriate
  4. Framework idioms followed (if applicable)
  5. Quality tooling configured (if applicable)

For testing work:

  1. Use PHPUnit TestCase with test prefix or @test annotation
  2. Use @dataProvider for table-driven cases
  3. Use createStub() for return values, createMock() for interaction assertions
  4. Use DatabaseTransactions (Laravel) or KernelTestCase (Symfony) for database tests
  5. Call parent::setUp() first in every setUp() 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.

Signals

GitHub stars
419
Forks
44
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
php-notque
Source
github.com/notque/vexjoy-agent