← ClaudeAtlas

craft-php-guidelineslisted

Craft CMS 5 PHP coding standards and conventions. ALWAYS load this skill when writing, editing, reviewing, or discussing any PHP file in a Craft CMS plugin or module — even for small edits. Also load when running ECS, PHPStan, or scaffolding with ddev craft make. Covers: PHPDoc blocks (@author, @since, @throws chains, documenting exceptions), section headers (=========), class organization, naming conventions (services, queue jobs, records, events, enums), defineRules() and validation, beforePrepare() and addSelect(), MemoizableArray, DateTimeHelper vs Carbon, strict_types and declare(strict_types=1) usage, short nullable notation (?string), typed properties, void return types, control flow patterns (early returns, match over switch), CP Twig template conventions, form macros, translations (Craft::t), ECS/PHPStan configuration, scaffolding commands, and the verification checklist. Triggers on: writing service classes, models, controllers, elements, element queries, records, queue jobs, migrations, or any PHP
sublimate-toe9304/craftcms-claude-skills · ★ 1 · Code & Development · score 74
Install: claude install-skill sublimate-toe9304/craftcms-claude-skills
# Craft CMS 5 PHP Guidelines Complete PHP coding standards and conventions for Craft CMS 5 plugin and module development. These extend Craft's official coding guidelines with project-specific conventions. **Core principles:** PHPDocs on everything — classes, methods, and properties — regardless of type hints. No `declare(strict_types=1)` in plugin source files (matching Craft core convention). ## Companion Skills — Always Load Together - **`craftcms`** — Architecture patterns, element lifecycle, controllers, events, migrations. Required for any Craft plugin or module development. - **`ddev`** — All commands run through DDEV. Required for running ECS, PHPStan, scaffolding, and tests. ## Documentation - Official coding guidelines: https://craftcms.com/docs/5.x/extend/coding-guidelines.html - Class reference: https://docs.craftcms.com/api/v5/ - Generator reference: https://craftcms.com/docs/5.x/extend/generator.html When unsure about a convention, `WebFetch` the coding guidelines page for the authoritative answer. ## Common Pitfalls - `addSelect()` is the convention in `beforePrepare()` — safely additive when multiple extensions contribute columns. - `$_instances` is not a Craft convention — private properties use underscore prefix but meaningful names like `$_items`, `$_sections`. - Records use the **same class name** as models (namespace distinguishes). Alias when importing both: `use ...\records\MyEntity as MyEntityRecord;`. - Queue jobs have **no "Job" suffix** — `R