Skip to content
Skills Library
Programming · Building & coding

php-standards

/php-standards

Use when setting up PHP-package autoloading, coding style, or PSR interfaces — PSR-4, PER Coding Style 3.1, composer.json. Do NOT use for syntax or Laravel.

Repository
agents ↗
Licence
MIT
Last repository change
12.10.2026

Assessment and security

100/ 100Class: good
Format25 / 25
Frontmatter with name and description, valid name, description up to 1,024 characters, name matching the folder.
Discoverability25 / 25
Description explains when to use the skill, has a reasonable length and uses third person.
Content35 / 35
At least 150 words and at most 500 lines, headings, step lists, examples or code.
Hygiene15 / 15
No placeholders such as TODO, no Windows paths, with a licence.
Riskno signals detected in the scan
Files in this package
7
Scripts
0
HTML comments
0
URLs in SKILL.md
0
Deprecation

No signals detected. Repository changed on 12.10.2026, without references to retired models or APIs.

Licence

MIT, open: use and modify while retaining author attribution.

What it does and when to use it

Use when setting up PHP-package autoloading, coding style, or PSR interfaces — PSR-4, PER Coding Style 3.1, composer.json. Do NOT use for syntax or Laravel.

Original author description

Use when setting up PHP-package autoloading, coding style, or PSR interfaces — PSR-4, PER Coding Style 3.1, composer.json. Do NOT use for syntax or Laravel.

How it works

  1. Agent Workflow (MANDATORY)
  2. Overview
  3. Critical Rules
  4. Architecture
  5. Reference Guide
  6. Best Practices
Original SKILL.md headings · 97 lines, 599 words
SKILL.md preview
---
name: php-standards
description: Use when setting up PHP-package autoloading, coding style, or PSR interfaces — PSR-4, PER Coding Style 3.1, composer.json. Do NOT use for syntax or Laravel.
versions:
  per-coding-style: "3.1"
  psr-4: "accepted"
  composer: "2"
user-invocable: false
references: references/per-coding-style.md, references/psr-catalog.md, references/psr4-autoloading.md, references/templates/composer-json.md, references/templates/project-structure.md
related-skills: php-language-modern
---

<objective>
Covers the standards that shape a framework-agnostic PHP package: PSR-4 autoloading (and why PSR-0 is deprecated), PER Coding Style 3.1 versus the still-Accepted PSR-12, and the current PSR catalog to depend on for logging (PSR-3), caching (PSR-6/16), HTTP (PSR-7/15/17/18), DI containers (PSR-11), events (PSR-14), and time (PSR-20).

Includes composer.json and project-structure templates (src/ for library code, tests/ wired via autoload-dev, PSR-4 namespace mapping), and the core PER/PSR-1 file rules (4 spaces, LF endings, no closing ?>).

Do NOT use this skill for language syntax or feature questions — that is php-language-modern. Do NOT use it for Laravel-specific conventions, which live in the Laravel plugin.
</objective>

# PHP Standards (PSR / PER / Composer)

## Agent Workflow (MANDATORY)

Before applying a standard, spawn 3 agents in parallel, one `Agent` call each with a `name`:

1. **fuse-ai-pilot:explore-codebase** - Detect existing style config (`.php-cs-fixer.php`, `phpcs.xml`), `composer.json` autoload
2. **fuse-ai-pilot:research-expert** - Verify a PSR's current status on php-fig.org before recommending it
3. **mcp__context7__query-docs** - Cross-check composer.json schema

After changes, run **fuse-ai-pilot:sniper** for validation.

---

## Overview

| Concern | Standard | Notes |
|---------|----------|-------|
| **Autoloading** | PSR-4 | Recommended; PSR-0 is deprecated |
| **Coding style** | PER Coding Style 3.1 | "Extends, expands and replaces PSR-12"; PSR-12 remains the *Accepted* PSR |
| **Logging** | PSR-3 | `LoggerInterface` |
| **Caching** | PSR-6 / PSR-16 | Pool vs Simple Cache |
| **HTTP** | PSR-7 / 15 / 17 / 18 | Message / Handlers / Factories / Client |
| **DI container** | PSR-11 | `ContainerInterface` |
| **Events** | PSR-14 | Event Dispatcher |
| **Time** | PSR-20 | `ClockInterface` — testable "now" |

---

## Critical Rules

1. **PSR-4 for autoloading, never PSR-0** - PSR-0 and `target-dir` are deprecated. See [psr4-autoloading.md](references/psr4-autoloading.md).
2. **PER Coding Style 3.1 is the current style spec** - It supersedes PSR-12 in practice while requiring PSR-1. PSR-12 is still the officially *Accepted* PSR — document the nuance, don't pretend PSR-12 was withdrawn. See [per-coding-style.md](references/per-coding-style.md).
3. **Depend on PSR interfaces, not implementations** - Type-hint `Psr\Log\LoggerInterface`, not a concrete logger.
4. **4 spaces, no tabs; LF line endings; omit closing `?>`** - Core PER/PSR-1 file rules.
5. **`src/` for library code, `tests/` for tests** - Wire `tests/` via `autoload-dev`, never `autoload`.

---

## Architecture

```
my-package/
├── composer.json           # PSR-4 autoload + autoload-dev + scripts
├── src/                    # Namespace root (Vendor\Package\)
│   └── Service.php
├── tests/                  # PSR-4 dev namespace (Vendor\Package\Tests\)
│   └── ServiceTest.php
└── bin/                    # CLI entry points (composer "bin")
```

→ See [project-structure.md](references/templates/project-structure.md) for the full layout

---

## Reference Guide

### Concepts

| Topic | Reference | When to Consult |
|-------|-----------|-----------------|
| **PER Coding Style** | [per-coding-style.md](references/per-coding-style.md) | Formatting rules, PER vs PSR-12 |
| **PSR catalog** | [psr-catalog.md](references/psr-catalog.md) | Which PSR to depend on / avoid |
| **PSR-4 autoloading** | [psr4-autoloading.md](references/psr4-autoloading.md) | Namespace-to-path mapping |

### Templates

| Template | When to Use |
|----------|-------------|
| [composer-json.md](references/templates/composer-json.md) | Starting or modernizing a package |
| [project-structure.md](references/templates/project-structure.md) | Laying out directories |

---

## Best Practices

### DO
- Use PSR-4 with `src/` mapped to the vendor namespace
- Follow PER Coding Style 3.1 (run php-cs-fixer with the `@PER-CS` ruleset — it currently enforces the 3.0 rules; apply the 3.1 additions by review)
- Depend on PSR interface packages (`psr/log`, `psr/http-message`, …)
- Put test-only classes under `autoload-dev`

### DON'T
- Use PSR-0 autoloading or `target-dir` (deprecated)
- Claim PER "replaced" PSR-12 as the official standard — PSR-12 is still *Accepted*
- Depend on PSR-2/PSR-0 (deprecated) or PSR-8/9/10 (abandoned)
- Hardcode a concrete logger/cache when a PSR interface exists
Files in this package (7)
  • .gitkeep 1 KB
  • SKILL.md 5 KB
  • references/per-coding-style.md 4 KB
  • references/psr-catalog.md 3 KB
  • references/psr4-autoloading.md 3 KB
  • references/templates/composer-json.md 3 KB
  • references/templates/project-structure.md 2 KB

Versions

The database has no other skills named php-standards.

Database snapshot: 13.11.2026 · package version 2bb6a5739276 (SHA-256 digest of the entire package)

Downloads in the last 30 days: 0 · ranking

Report a problem with this skill: harmful content, incorrect descriptions or an author’s removal request.

Similar skills

  • 85PHP Composer and Autoloading
    Use when composer package management and PSR-4 autoloading including dependency management, autoload strategies, package creation, version constraints, and patterns for modern PHP project organization and distribution.
  • 90php-pure
    Use this skill when building PHP applications without a framework — PSR standards, routing, middleware, database access, error handling, and security. This skill enforces: PSR-4 autoloading, PSR-7 request/response, PSR-15 middleware, PSR-11 container, PSR-3 logging. Requires PHP…
  • 100php-guide
    PHP language guardrails, patterns, and best practices for AI-assisted development. Use when working with PHP files (.php), composer.json, or when the user mentions PHP. Provides type declaration patterns, Composer conventions, PSR standards, and testing guidelines specific to…
  • 100composer-tooling
    Composer conventions for any PHP project: dependency management, version constraints, PSR-4 autoloading, scripts, platform requirements, and the composer.json vs composer.lock contract. Stack-agnostic — referenced by every PHP plugin in the marketplace. Use this skill to: - Read…
  • 100php-best-practices
    Write PHP following PSR coding standards, SOLID principles, and code-quality guidelines. Use for PHP style, design, refactoring, naming, and guard clauses—not Composer/PSR-4 project configuration.
  • 100php-http-psr
    Use when building framework-agnostic PHP HTTP code — PSR-7/15/17/18 messages, middleware, factories, clients. Do NOT use for Laravel HTTP or Symfony HttpFoundation (not PSR-7).

Feedback and reports

Your message goes to Bartosz Sokoliński. An email address is needed only for a reply. See the privacy policy.