Home / Cursor rules / Typo3cms Extension
Typo3cms Extension
Cursor rules for TYPO3 CMS development with extension integration.
Cursor rules (.mdc)Public domain (CC0)
–unranked
Install
mkdir -p .cursor/rules && curl -sL https://raw.githubusercontent.com/PatrickJS/awesome-cursorrules/b044f956f021b6e8877f16781bcfc466a6a120e9/rules/typo3cms-extension-cursorrules-prompt-file.mdc -o .cursor/rules/typo3cms-extension.mdcDownloads the file at commit b044f956f021 into .cursor/rules/.
To remove it later:
rm .cursor/rules/typo3cms-extension.mdcContext cost: ≈888 tokens when used.
Rules file
--- description: "Cursor rules for TYPO3 CMS development with extension integration." globs: **/* alwaysApply: false --- 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 ```plaintext 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.yaml` configuration - 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-framework` for 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**
Security
Scanned Nov 4, 2026 at commit b044f956f021, with Cisco's open-source skill-scanner.
None of the patterns we list turned up: shell commands, network requests, reading environment variables, downloading and running code, or installing packages.
A scan lists patterns in the code. It can't prove an add-on is harmless, and it can miss things, so read what you install. How we scan