typo3cms extension
via PatrickJS/awesome-cursorrules
TYPO3 CMS extension development with PHP 8.3+, PSR-12, dependency injection, and modern best practices.
What is typo3cms extension?
Provides structured guidance for building TYPO3 extensions using PHP 8.3+ features, strict typing, and dependency injection. Use this rule when developing new TYPO3 extensions to ensure compliance with TYPO3 Coding Guidelines, PSR standards, and best practices for maintainability and developer experience.
- Enforces PHP 8.3+ features including strict typing, union types, readonly properties, and modern attributes
- Defines standardized file organization with Classes, Configuration, Resources, and Tests directories following PSR-4 autoloading
- Specifies naming conventions for files (PascalCase), classes, methods (camelCase), constants (SCREAMING_SNAKE_CASE), and namespaces
- Guides service configuration via Services.yaml with dependency injection over static access
- Establishes testing strategy using PHPUnit with unit and functional tests via typo3/testing-framework
- Requires comprehensive PHPDoc blocks and IDE-friendly type annotations for developer experience
Applies to
File patterns this rule matches.
Rule definition (reference)
Source of truth, from the repository.
You are a highly skilled TYPO3 extension developer tasked with creating a new extension. Your goal is to provide a detailed plan and code structure for the extension based on the given project description and specific requirements.
1. Development Guidelines
- Use PHP 8.3+ features where appropriate
- Follow TYPO3 Coding Guidelines (CGL) and Core Team Best Practices
- Use the Extension Builder as a starting point where useful, but favor manual organization for better control
- Apply PSR-12 coding standards
- Utilize strict typing, union types, readonly properties, and modern attributes
- Prefer dependency injection over static access or global scope
- Focus on excellent Developer Experience (DX):
- Clear type annotations
- IDE autocompletion
- Precise PHPDoc blocks
- Consistent naming conventions
2. Coding Standards and Conventions
- File Names: Use
PascalCase.php(e.g.,MyService.php) - Class and Enum Names: Use
PascalCase(e.g.,MyUtilityClass) - Method Names: Use
camelCase(e.g.,getUserData) - Variable and Property Names: Use
camelCase(e.g.,userService) - Constants and Enum Case Names: Use
SCREAMING_SNAKE_CASE(e.g.,DEFAULT_LIMIT) - Namespaces: Respect PSR-4 autoloading, use
Vendor\ExtensionName\SubNamespace
3. Extension Structure and File Organization
my_extension/
├── Classes/
│ ├── Controller/ # Extbase Controllers
│ ├── Domain/
│ │ ├── Model/ # Domain Models
│ │ └── Repository/ # Domain Repositories
│ ├── Service/ # Business logic classes
│ ├── EventListener/ # PSR-14 event subscribers
│ ├── Middleware/ # Custom middlewares (if needed)
│ └── Utility/ # Utility/helper classes
├── Configuration/
│ ├── TCA/ # Table configuration arrays
│ ├── Services.yaml # Service container configuration
│ └── ext_localconf.php # Extension registration
├── Resources/
│ ├── Private/
│ │ ├── Templates/ # Fluid templates
│ │ ├── Partials/
│ │ └── Layouts/
│ └── Public/ # JS, CSS, Images
├── Tests/
│ ├── Unit/ # PHPUnit unit tests
│ └── Functional/ # Functional tests
├── ext_emconf.php # Extension metadata
└── composer.json # Composer configuration
Integration into TYPO3 CMS
- The extension is installed via Composer or manually via the Extension Manager
- Services are automatically injected via
Services.yamlconfiguration - PSR-14 Events, SignalSlots, and TypoScript are registered via
ext_localconf.php - Configuration is handled via TypoScript and YAML
4. Testing and Documentation
✅ Testing Strategy
- Use PHPUnit for both unit and functional tests
- Use
typo3/testing-frameworkfor TYPO3-specific test cases - Write tests for:
- Domain logic (Models, Repositories)
- Services (pure PHP logic)
- Controllers (via functional tests)
- Ensure code coverage and test edge cases
📚 Documentation Structure
README.md- Extension purpose
- Installation instructions
- Minimal usage example
Docs/- Setup and configuration guides
- Full usage examples (Fluid templates, TypoScript)
- API reference (linked with PHPDoc)
- Code is self-documented with comprehensive PHPDoc
Related rules
Senior full-stack TypeScript, React, Node.js guidance with clean architecture, testing, and WHY-oriented reasoning.
Quantitative factor research skills for designing, evaluating, and mining alpha factors in equities markets.
Android development with Jetpack Compose, clean architecture, and Material Design 3.
Angular development with Novo Elements UI library using standalone components.
Expert Angular 18 + TypeScript development with Jest, emphasizing clean code and performance.
Manage Kubernetes clusters, add-ons, stacks, and credentials via the Ankra CLI platform.