← Back to catalog
jeffsenso

Author in the catalog

jeffsenso

39 skills156 stars totalgithub.com/jeffsenso

Published skills

register-cqrs-services

4

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}".

Desenvolvimento#aiby jeffsenso

register-feature-flag

4

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.

Desenvolvimento#aiby jeffsenso

prestashop-module-development

4

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, or modernizing existing PrestaShop mo

Desenvolvimentoby jeffsenso

create-cqrs-bulk-commands

4

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}".

Desenvolvimento#aiby jeffsenso

implement-cqrs-handlers

4

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}".

Dados e Análise#sql#aiby jeffsenso

create-controller-form-actions

4

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}".

Design e Frontend#aiby jeffsenso

create-cqrs-commands

4

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}".

Desenvolvimento#aiby jeffsenso

create-form-type

4

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}".

Design e Frontend#aiby jeffsenso

write-behat-scenarios

4

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}".

Desenvolvimento#ai#testby jeffsenso

create-cqrs-queries

4

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}".

Dados e Análise#aiby jeffsenso

create-controller-listing

4

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}".

Design e Frontend#aiby jeffsenso

create-vue-component

4

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}".

Design e Frontend#aiby jeffsenso

init-js-components

4

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".

Dados e Análise#aiby jeffsenso

create-behat-context

4

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}".

Desenvolvimento#ai#testby jeffsenso

create-doctrine-repository

4

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}".

Dados e Análise#aiby jeffsenso

create-admin-routing

4

Create the Symfony routing YAML file declaring all admin routes for the domain. Trigger: "create routing for {Domain}".

Desenvolvimento#aiby jeffsenso

create-form-data-handling

4

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}".

Marketing#aiby jeffsenso

create-grid-query-builder

4

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}".

Dados e Análise#aiby jeffsenso

create-ts-entry-point

4

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}".

Design e Frontend#typescript#aiby jeffsenso

audit-object-model

4

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.

Dados e Análise#aiby jeffsenso

write-upgrade-sql-script

4

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.

Dados e Análise#sqlby jeffsenso

create-playwright-test-data

4

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}".

Desenvolvimento#ai#testby jeffsenso

create-form-tab-layout

4

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".

Design e Frontend#aiby jeffsenso

create-position-column

4

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.

Documentosby jeffsenso

create-removal-issue

4

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.

Desenvolvimento#github#gitby jeffsenso

create-twig-form-template

4

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}".

Desenvolvimento#aiby jeffsenso

create-pr

4

Creates a PrestaShop pull request with the required metadata table. Triggers when asked to create, open, submit, or push a PR, or when mentioning "pull request" in the context of contributing.

Dados e Análiseby jeffsenso

create-skill

4

Creates a new SKILL.md in the correct location within this project's .ai/ structure. Trigger when the user asks to "create a skill", "add a skill for [task]", "write a skill to [do something]", or "add a new skill".

Produtividade#aiby jeffsenso

create-grid-definition

4

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}".

Design e Frontend#aiby jeffsenso

init-grid-extensions

4

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}".

Desenvolvimento#javascript#aiby jeffsenso

audit-legacy-controller

4

Read the legacy `Admin{Domain}sController.php` without modifying it. Extract every field rendered, every action method, and every `Hook::exec()` call.

Marketing#aiby jeffsenso

create-twig-index-template

4

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}".

Desenvolvimento#aiby jeffsenso

generate-migration-manifest

4

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.

Documentosby jeffsenso

component-context-generator

4

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 infrastruc

Documentos#aiby jeffsenso

legacy-to-symfony-migration

4

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".

Segurançaby jeffsenso

write-playwright-campaigns

4

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}".

Desenvolvimento#ai#testby jeffsenso

promote-feature-flag-to-stable

4

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".

Desenvolvimento#ai#testby jeffsenso

create-playwright-page-objects

4

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}".

Desenvolvimento#ai#testby jeffsenso

domain-context-generator

4

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".

Documentos#aiby jeffsenso

Category alert

Get new Desenvolvimento skills every Monday