php-dayuse
PHP Dayuse
Senior PHP developer specialized in PHP 8.4+, Symfony 7, Doctrine ORM, and DDD architecture with strict typing and PHPStan level 10 compliance.
When to Use This Skill
- Building Symfony applications
- Implementing strict type systems with PHPStan
- DDD (Domain-Driven Design) architecture
- Performance optimization (OpCache, JIT, Doctrine, queries)
- Writing comprehensive PHPUnit tests
- Elasticsearch / Elastically integration
- Async patterns with Fibers
Main Workflow
- Analyze the architecture - Framework, PHP version, dependencies, existing patterns
- Model the domain - Entities, value objects, typed DTOs
- Implement - Strict-typed code, PSR-12, DI, repositories
- Secure - Validation, authentication, XSS/SQL injection protection
- Test & optimize - PHPUnit, PHPStan level 10, performance tuning
Reference Guide
Load detailed guides based on context:
| Topic | Reference | Load when |
|---|---|---|
| Modern PHP | references/modern-php-features.md |
Readonly, enums, attributes, fibers, types |
| Symfony | references/symfony-patterns.md |
DI, events, commands, voters, messenger |
| Doctrine | references/doctrine-patterns.md |
Entities, repositories, DQL, migrations, performance |
| Async PHP | references/async-patterns.md |
Fibers, Amphp, streams, concurrent I/O |
| Testing & Quality | references/testing-quality.md |
PHPUnit, PHPStan, mocking, coverage |
Constraints
REQUIRED
- Declare strict types (
declare(strict_types=1)) - Type all properties, parameters, and return values
- Follow the PSR-12 standard
- Pass PHPStan level 10 before delivery
- Use
readonlyon properties when applicable - Write PHPDoc for complex logic and generics
- Validate all user input with typed DTOs
- Use dependency injection (never use global state)
- Separate business logic from controllers (layered architecture)
FORBIDDEN
- Omitting type declarations (no
mixedunless absolutely necessary) - Using deprecated functions or features
- Storing passwords in plain text (use bcrypt/argon2)
- Writing SQL queries vulnerable to injection
- Mixing business logic with controllers
- Hardcoding configuration (use
.envand Symfony parameters) - Deploying without running tests and static analysis
- Using
var_dumpordd()in production code - Writing secrets or API keys directly in the code
Output Templates
When implementing, provide:
- Domain models - Entities, value objects
- Services / Repositories - Business logic and data access
- Controllers / API Endpoints - HTTP entry points
- PHPUnit tests - Unit and functional
- Explanation - Architecture decisions
Tech Stack
PHP 8.4+, Symfony 7, Doctrine ORM, Composer, PHPStan, PHPUnit, PSR standards, Elasticsearch, Elastically, Redis, MySQL, REST APIs
More from dayuse-labs/skills-portfolio
dayuse-pptx
Creates Dayuse-branded presentations (PPTX) with consistent visual identity and storytelling structure. Use when the user asks to create a presentation, deck, slides, pitch deck, roadmap, reporting, plan d'action, or any PPTX for Dayuse. Also use when user mentions "prez Dayuse", "deck Dayuse", "slides internes", "pitch hotel", or "presentation partenaire". Handles both external pitch decks and internal strategy/reporting presentations. Do NOT use for non-Dayuse presentations.
16dayuse-vibes
Use this skill when generating code, creating features, writing TypeScript, building components, implementing functionality, or helping with any coding task. Enforces professional standards for non-developers doing "vibe coding" - ensures DDD architecture, strict TypeScript (no any), systematic testing, linting, Zod validation, and Result pattern for errors.
12dayuse-commands
Run local development commands on the Dayuse.com project. Use when starting/stopping Docker, running PHP tests (PHPUnit), frontend tests, linting (PHPStan, CS-Fixer, ESLint), database migrations, Elasticsearch indexing, translations, or any inv task. All commands require pipenv and Docker.
10dayuse-mail
Use when a Twig template uses `reservationData` or `array<string, mixed>`, when a Twig template receives variables via `include` parameters, when a Notifier calls `$dto->__toArray()`, or when creating a new transactional email template `.dto.html.twig`.
7frontend-design-dayuse
Create production-grade frontend interfaces following the Dayuse brand identity and design system. This skill should be used when the user asks to "build a page", "create a component", "design a UI", "make a frontend", "build a landing page", "create a dashboard", or any frontend development task for Dayuse. Applies the official Dayuse color palette, typography (Manrope + MaisonNeue), border-radius conventions, shadow system, and animation patterns.
5dayuse app commands
Run local development commands on the Dayuse.com project. Use when starting/stopping Docker, running PHP tests (PHPUnit), frontend tests, linting (PHPStan, CS-Fixer, ESLint), database migrations, Elasticsearch indexing, translations, or any inv task. All commands require pipenv and Docker.
3