composer-patternslisted
Install: claude install-skill Mattakushi432/Claude-Code-Skills-Custom-DevTools-Pack
# Composer Patterns
## When to Use
Setting up a PHP project's dependencies, authoring a library's `composer.json`, resolving version conflicts, or auditing dependencies for known vulnerabilities.
## Core Patterns
### composer.json Structure
```json
{
"name": "acme/billing",
"description": "Billing domain package",
"type": "library",
"require": {
"php": "^8.2",
"ramsey/uuid": "^4.7"
},
"require-dev": {
"phpunit/phpunit": "^10.5",
"phpstan/phpstan": "^1.10"
},
"autoload": {
"psr-4": { "Acme\\Billing\\": "src/" }
},
"autoload-dev": {
"psr-4": { "Acme\\Billing\\Tests\\": "tests/" }
},
"minimum-stability": "stable",
"prefer-stable": true
}
```
### Version Constraints
```
"laravel/framework": "^10.0" // allows 10.x, blocks 11.0 — caret = safe minor/patch updates
"symfony/console": "~6.3.0" // allows 6.3.x only — tilde pins the last segment
"vendor/pkg": "10.4.2" // exact pin — only when you must freeze a specific release
```
Prefer `^` for applications; use exact pins only for packages known to break on minor bumps.
### PSR-4 Autoloading
```json
"autoload": {
"psr-4": {
"App\\": "app/",
"Acme\\Shared\\": "packages/shared/src/"
}
}
```
Namespace `App\Services\OrderService` maps to `app/Services/OrderService.php`. Run `composer dump-autoload -o` after adding new namespaces or before a production deploy to generate the classmap (faster tha