Skip to content
Development
Skill

/php

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

From plugin
vexjoy-agent
421122 skills198 agents11 commands76 hooks
Install
$ npx -y skills add notque/vexjoy-agent --skill php --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/php

Context preview

The summary Claude sees to decide when to auto-load this skill.

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

SKILL.md

php.SKILL.md
name: php
description: "PHP development: code quality, PSR standards, testing with PHPUnit."
user-invocable: false
context: fork
agent: php-general-engineer
routing:
  triggers:
    - "php quality"
    - "php code review"
    - "PSR standards"
    - "phpstan"
    - "php-cs-fixer"
    - "php testing"
    - "phpunit"
    - "pest php"
    - "php mock"
  category: php
  pairs_with:
    - code-linting
    - test-driven-development

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
  • `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 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: 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.

Read more
Ships withvexjoy-agent

Essays and writing behind this toolkit live at vexjoy.com. VexJoy Agent connects plain-English requests to specialist agents, skills, and workflows. /do selects the knowledge and tools needed for your task.

Get the whole plugin

Other skills on vexjoy-agent.