audit-object-model
Read the legacy ObjectModel class for the domain and extract its database schema, field definitions, multilingual fields, and validation rules. This is the authoritative source for what columns the Doctrine repository must handle.
Browse reusable Agent Skills, each with a clear purpose and practical guidance.
Read the legacy ObjectModel class for the domain and extract its database schema, field definitions, multilingual fields, and validation rules. This is the authoritative source for what columns the Doctrine repository must handle.
Create form page actions in the admin controller. Covers both patterns: CRUD (create/edit via FormBuilder + FormHandler pair) and settings (index + save via the base FormHandler). Never builds commands directly. Trigger: "create form actions for {Domain}", "create add/edit for {Domain}", "create settings save action for {Page}".
Set up the full domain layer for a CQRS entity: identity value object, additional value objects, exception hierarchy, commands (Add, Edit, Delete, Toggle, sub-resource, or any custom domain action), and handler interfaces. Covers everything in src/Core/Domain/{Domain}/. Trigger: "create CQRS commands for {Domain}", "set up domain layer for {Domain}".
Create the CRUD form data flow layer: DataProvider (loads entity data for edit form), DataHandler (dispatches commands on create/update), error handling, and service registration. This bridges the form layer with the CQRS layer. For settings/configuration forms (a single FormDataProvider over ps_configuration, no DataHandler), use create-settings-form. Trigger: "create CRUD form data handling for {Domain}".
Create the Symfony form type for a CRUD (identifiable) entity's add/edit form. Covers standard field types, translatable fields, money fields, file uploads, and choice providers. For multi-tab layout with NavigationTabType, see create-form-tab-layout. For settings/configuration forms, see create-settings-form. Trigger: "create CRUD form type for {Domain}".
Create the repository in the Adapter layer. This is the ONLY class that touches the database — all handlers delegate to it. Covers multistore patterns with ShopConstraint when the entity requires it. Trigger: "create repository for {Domain}".
Create a multi-tab form layout using PrestaShop's NavigationTabType. This is a specific pattern for complex forms with many fields organized by tabs — NOT the default form layout. Most forms do not need tabs. Trigger: "create tab layout for {Domain} form", "add tabs to {Domain} form".
Documents how to add drag-and-drop row reordering to a PrestaShop grid. Requires a PositionColumn in the definition, a ReorderPositionsButtonType filter, a dedicated update-position route, and position handling in the repository.
Create a PrestaShop settings form (options block writing to ps_configuration): DataConfiguration + FormDataProvider + FormType + 4 YAML service entries (base Handler reused, never subclassed). For CRUD entity forms, use create-crud-form-type instead. Trigger: "create settings form for {Page}", "add options block for {Page}", "migrate fields_options for {Page}".
Create the Twig template for a form page. Covers CRUD add/edit templates (one form per page) and settings-form block templates (multiple forms per page, each with an explicit action URL). Renders the Symfony form, save buttons, and optional form theme overrides for custom field rendering. Trigger: "create form template for {Domain}".