php artisan boost:add-skill nowo-tech/task-board-bundle
Save this content to: .cursor/rules/10-php-symfony-bundle.mdc
Target this bundle compatibility by default: PHP >=8.2 and Symfony 7/8.
Prefer:
- modern PHP with strict typing and explicit return types
- PSR-12 coding style
- final classes by default
- readonly where appropriate
- constructor injection
- small focused services
- framework conventions over custom abstractions
- preserving public extension points
- keeping DI extension, compiler pass wiring, and form type options backward compatible
- PHPDoc in English for non-trivial classes, methods, and complex behavior
Do not introduce BC breaks unless explicitly requested.
Do not add PHPDoc in Spanish.
Do not rename public services, configuration keys, or Twig integrations without warning.
Do not touch unrelated namespaces or files.
Task import (since 1.22, FR-IMPORT-008..013): every import is an idempotent upsert keyed on
`TaskLink::importSource` + `externalId` (rows without an id: fingerprint). An importer must be deterministic — the same
file gives the same `ImportedTaskDto`s (dates through `ImportFieldMapper::parseDate()`, never "now"), leave a field
null / empty when the source has no value (that keeps the task's value on re-import) and set `hasPriority`. Re-import
precedence lives in `ImportedTaskUpdater`; document any change in UPGRADING.
Target this bundle compatibility by default: PHP >=8.2 and Symfony 7/8.
Prefer:
Do not introduce BC breaks unless explicitly requested.
Do not add PHPDoc in Spanish.
Do not rename public services, configuration keys, or Twig integrations without warning.
Do not touch unrelated namespaces or files.
Task import (since 1.22, FR-IMPORT-008..013): every import is an idempotent upsert keyed on
TaskLink::importSource + externalId (rows without an id: fingerprint). An importer must be deterministic — the same
file gives the same ImportedTaskDtos (dates through ImportFieldMapper::parseDate(), never "now"), leave a field
null / empty when the source has no value (that keeps the task's value on re-import) and set hasPriority. Re-import
precedence lives in ImportedTaskUpdater; document any change in UPGRADING.
How can I help you explore Laravel packages today?