All databases

Cursor rule

Typo3cms Extension Cursorrules Prompt File

Cursor rules for TYPO3 CMS development with extension integration.

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

More General rules

Frequently asked questions

What is the Typo3cms Extension Cursorrules Prompt File Cursor rule?

Cursor rules for TYPO3 CMS development with extension integration. It is a General rule, stored as typo3cms-extension-cursorrules-prompt-file.mdc.

How do I use the Typo3cms Extension Cursorrules Prompt File rule in Cursor?

Copy the rule from this page and save it as typo3cms-extension-cursorrules-prompt-file.mdc in your project's .cursor/rules folder, or paste it into Cursor's project rules settings.