Jeffsenso@Prestashop Skills

Jeffsenso@Prestashop Skills from gabrielmoreira/agent-skills-mirror.

by @gabrielmoreira 37 skills

Skills in this plugin

37
  1. Prestashop Module Development · gabrielmoreira bundle
    Complete PrestaShop module development workflow using modern architecture and best practices. Use when: creating new PrestaShop modules, updating legacy modules to modern code, implementing hooks and actions, setting up module configuration pages, adding front office features, handling database operations, implementing security measures, managing translations, creating cart rules and vouchers, building Symfony console commands, or modernizing existing PrestaShop modules from legacy patterns to current standards.
    17 repo stars
  2. Domain Context Generator · gabrielmoreira
    Generates a CONTEXT.md file for a PrestaShop domain inside the `.ai/Domain/` folder. Trigger when the user asks to "generate a context", "fill in a CONTEXT.md", "write the context for [Domain]", "document the [X] domain", or when working inside `.ai/Domain/` directories. Also triggers on "create context for", "add AI context", "populate CONTEXT.md".
    17 repo stars
  3. Component Context Generator · gabrielmoreira
    Generates a CONTEXT.md file for a PrestaShop shared component inside the `.ai/Component/` folder. Trigger this skill when the user asks to "generate a context for [Component]", "document the [X] component", "fill in the CONTEXT.md for [Component]", or when working inside `.ai/Component/` directories. Components live under `src/Core/{Name}/` and/or `src/Adapter/{Name}/` — they are shared infrastructure, not business domains. Examples: Grid, Form, Hook, CQRS, Translation, Router.
    17 repo stars
  4. Create Form Type · gabrielmoreira
    Create the Symfony form type for an 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. Trigger: "create form type for {Domain}".
    17 repo stars
  5. Create Cqrs Queries · gabrielmoreira
    Create the read-side CQRS layer: queries, result DTOs, and query handler interfaces. Covers Get{Domain}ForEditing (single entity for edit form) and optionally Get{Domain}sForListing (grid data source). Trigger: "create queries for {Domain}", "set up read side for {Domain}".
    17 repo stars
  6. Create Cqrs Commands · gabrielmoreira
    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}".
    17 repo stars
  7. Create Behat Context · gabrielmoreira
    Create the PHP feature context class that implements step definitions for a domain, and register it in behat.yml. Covers the PHP implementation side of Behat tests. Trigger: "create behat context for {Domain}".
    17 repo stars
  8. Write Behat Scenarios · gabrielmoreira
    Write the Gherkin feature file and all scenarios for a domain: CRUD, bulk actions, filters, and error cases. Covers the .feature file side of Behat tests. Read Component/Behat/CONTEXT.md for conventions. Trigger: "write behat scenarios for {Domain}".
    17 repo stars
  9. Register Cqrs Services · gabrielmoreira
    Register all domain handlers and the repository in the Symfony DI container. Handlers are auto-discovered via #[AsCommandHandler] / #[AsQueryHandler] attributes. Trigger: "register CQRS services for {Domain}".
    17 repo stars
  10. Create Grid Definition · gabrielmoreira
    Create the grid definition for an entity listing: columns, row actions, bulk actions, filters class, and service registration. Covers everything needed to define the grid structure. The query builder is a separate skill (create-grid-query-builder). Trigger: "create grid definition for {Domain}".
    17 repo stars
  11. Create Position Column · gabrielmoreira
    Documents how to add drag-and-drop row reordering to a PrestaShop grid. Requires a PositionColumn in the definition, a dedicated update-position route, and position handling in the repository.
    17 repo stars
  12. Implement Cqrs Handlers · gabrielmoreira
    Implement all command and query handlers in the Adapter layer. Each handler delegates to the repository for persistence — no direct SQL or ObjectModel access. Handlers use #[AsCommandHandler] / #[AsQueryHandler] attributes for auto-registration. Trigger: "implement handlers for {Domain}".
    17 repo stars
  13. Create Form Tab Layout · gabrielmoreira
    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".
    17 repo stars
  14. Audit Object Model · gabrielmoreira
    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.
    17 repo stars
  15. Init JS Components · gabrielmoreira
    Initialize and use PrestaShop's global JS components via initComponents(). Covers TranslatableInput, ChoiceTree, TinyMCEEditor, TaggableField, and all other available components. Components activate based on data-* attributes in the DOM. Trigger: "initialize components for {Domain}", "enable components for {Domain}", "add components to {Domain} form".
    17 repo stars
  16. Create Cqrs Bulk Commands · gabrielmoreira
    Create bulk action commands and their handlers. All bulk handlers extend AbstractBulkCommandHandler, catch errors per item, and report failures via BulkCommandExceptionInterface. Trigger: "create bulk commands for {Domain}".
    17 repo stars
  17. Create Grid Query Builder · gabrielmoreira
    Create the Doctrine DBAL QueryBuilder that fetches grid rows, and optionally a GridDataFactory decorator for post-processing. The column aliases must exactly match the column IDs in the Grid Definition. Trigger: "create grid query builder for {Domain}".
    17 repo stars
  18. Create Removal Issue · gabrielmoreira
    Create a GitHub issue that targets the actual removal of the legacy controller in the next major version. The issue tracks readiness prerequisites and assigns a major release milestone.
    17 repo stars
  19. Create Twig Form Template · gabrielmoreira
    Create the Twig template for the add/edit form page. Renders the Symfony form, save buttons, and optional form theme overrides for custom field rendering. Trigger: "create form template for {Domain}".
    17 repo stars
  20. Create Admin Routing · gabrielmoreira
    Create the Symfony routing YAML file declaring all admin routes for the domain. Trigger: "create routing for {Domain}".
    17 repo stars
  21. Create Doctrine Repository · gabrielmoreira
    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}".
    17 repo stars
  22. Create Form Data Handling · gabrielmoreira
    Create the 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. Read Component/Forms/CONTEXT.md for conventions. Trigger: "create form data handling for {Domain}".
    17 repo stars
  23. Create Vue Component · gabrielmoreira
    Integrate a Vue 3 component into a Symfony admin page for complex UX sections. This is an exception pattern — most pages use initComponents with standard components. Vue is only needed when a section requires rich interactivity that standard form types cannot provide (e.g. combination listing, dynamic range tables). Trigger: "add Vue component for {Domain}".
    17 repo stars
  24. Init Grid Extensions · gabrielmoreira
    Enable JavaScript grid extensions for a listing page. Extensions add sorting, filtering, bulk actions, column toggling, position reordering, and other interactive behaviors to the grid. Trigger: "add grid extensions for {Domain}", "enable grid extensions for {Domain}", "initialize grid JS for {Domain}".
    17 repo stars
  25. Create Twig Index Template · gabrielmoreira
    Create the Twig template for the entity listing (grid) page. Includes grid panel, toolbar buttons, flash messages, and optional custom column rendering. Trigger: "create index template for {Domain}".
    17 repo stars
  26. Register Feature Flag · gabrielmoreira
    Register the domain's feature flag in `feature_flag.xml`. This entry populates the `ps_feature_flag` table at install/upgrade and enables the flag-based routing between legacy and Symfony controllers.
    17 repo stars
  27. Create TS Entry Point · gabrielmoreira
    Create the TypeScript entry point files for a new admin page. Covers the directory structure, listing and form entry points, and webpack registration. References init-js-components and init-grid-extensions for component/extension details. Trigger: "create JS entry point for {Domain}".
    17 repo stars
  28. Audit Legacy Controller · gabrielmoreira
    Read the legacy `Admin{Domain}sController.php` without modifying it. Extract every field rendered, every action method, and every `Hook::exec()` call.
    17 repo stars
  29. Write Upgrade SQL Script · gabrielmoreira
    Author a SQL upgrade script for shops upgrading to a target PrestaShop version. Covers schema changes, default fixtures / configuration row updates, and feature-flag state transitions.
    17 repo stars
  30. Create Controller Listing · gabrielmoreira
    Create the listing page actions in the admin controller: index (grid with filters), delete, toggle status, and any bulk actions the entity requires. Trigger: "create listing for {Domain}", "create index action for {Domain}".
    17 repo stars
  31. Generate Migration Manifest · gabrielmoreira
    Synthesize the outputs of `audit-legacy-controller` and `audit-object-model` into a single `migration-manifest.md` that serves as the migration specification. Every subsequent migration step reads from this document to know what to create.
    17 repo stars
  32. Legacy To Symfony Migration · gabrielmoreira bundle
    Step-by-step orchestrator for migrating a PrestaShop Legacy admin page to Symfony/CQRS. Covers the full lifecycle from audit to GA. Trigger: "migrate the Xxx admin page", "create CQRS for Xxx", "add a Symfony form for Xxx", "migrate AdminXxxController".
    17 repo stars
  33. Write Playwright Campaigns · gabrielmoreira
    Write Playwright test campaigns for a migrated entity: CRUD lifecycle, bulk actions, filter/sort, position reorder, and per-tab field verification. Campaigns live in the core repo and import page objects from ui-testing-library. Trigger: "write Playwright tests for {Domain}".
    17 repo stars
  34. Create Playwright Test Data · gabrielmoreira
    Create Faker data classes and predefined data objects for a new entity in the ui-testing-library. These are imported by campaigns for consistent test data generation. Trigger: "create test data for {Domain}".
    17 repo stars
  35. Promote Feature Flag To Stable · gabrielmoreira
    Promote the domain's feature flag from beta to stable (GA) and update Playwright tests to no longer require the flag. This is done in a dedicated GA PR with minimal changes. Trigger: "promote {Domain} to GA", "make {Domain} stable".
    17 repo stars
  36. Create Controller Form Actions · gabrielmoreira
    Create the form page actions in the admin controller: create (add) and edit, plus any entity-specific actions. Uses FormBuilder/FormHandler pattern — never builds commands directly. Trigger: "create form actions for {Domain}", "create add/edit for {Domain}".
    17 repo stars
  37. Create Playwright Page Objects · gabrielmoreira
    Create BO page object classes in the ui-testing-library for a new migrated page. Follows the Page Object Model pattern: encapsulate selectors and interactions, never assert. Trigger: "create page objects for {Domain}".
    17 repo stars