Skip to content
Back to skills

Legacy To Symfony Migration

ASecurity

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

  • 6 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added May 29, 2026
ai-agentssql

Works with

  • claude code

Security analysis

A100/100

Pro scans all 11 files and shows the line behind each finding

Scanned May 29, 2026

npx -y skills add jeffsenso/prestashop-skills --skill legacy-to-symfony-migration --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Legacy To Symfony Migration?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Legacy To Symfony Migration
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/jeffsenso-legacy-to-symfony-migration/badge)](https://www.skillsdirectory.com/skills/jeffsenso-legacy-to-symfony-migration)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: legacy-to-symfony-migration
description: >
  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".
---

# Legacy to Symfony/CQRS Migration Skill

Read `@.ai/Component/Migration/CONTEXT.md` for conventions, reference pages, dependency graph, and conditional activation matrix.

This skill is an **orchestrator**: each step file explains *why* the step exists, *when* to enter it, *what gates it*, and *which standalone skills to invoke*. The procedural detail lives in the standalone skills themselves and in the relevant Component CONTEXT.md.

## When to use this skill

Trigger when asked to:
- "Migrate the Xxx admin page to Symfony"
- "Create CQRS for the Xxx domain"
- "Add a Symfony form for Xxx"
- "Migrate AdminXxxController"

## Sub-agent delegation (Claude Code)

When the parent agent supports sub-agents (Claude Code does; other tools currently do not), step-00 audits are particularly suited to delegation: each audit reads a large legacy file and emits a structured artifact, so the parent can offload the read cost without losing context. The migration manifest synthesises both audits and acts as the shared context surface for every later step. Skills tagged `subagent: recommended` or `subagent: optional` in their frontmatter are candidates; tools without a sub-agent primitive simply run them in-line — behaviour is identical from the user's standpoint.

## Phase index

| # | File | Title | Deliverable |
|---|------|-------|-------------|
| 0 | [step-00-audit.md](step-00-audit.md) | Audit | Field map, action list, milestone decision |
| 1 | [step-01-feature-flag.md](step-01-feature-flag.md) | Feature Flag | `feature_flag.xml` entry (beta/state=0) — set up early so handlers can carry conditional code |
| 2 | [step-02-domain-layer.md](step-02-domain-layer.md) | Domain Layer | Commands, Queries, ValueObjects, Exceptions, Handler interfaces |
| 3 | [step-03-adapter-layer.md](step-03-adapter-layer.md) | Adapter Layer | Repository, Handlers, DI registration |
| 4 | [step-04-behat-tests.md](step-04-behat-tests.md) | Behat Tests | Integration test coverage for CQRS — gate before UI work |
| 5 | [step-05-listing-page.md](step-05-listing-page.md) | Listing page (vertical slice) | Working listing page: grid + controller actions + listing routes + index template + listing JS |
| 6 | [step-06-form-page.md](step-06-form-page.md) | Form page (vertical slice) | Working add/edit page: form type + data handling + controller actions + form routes + form template + form JS |
| 7 | [step-07-playwright-tests.md](step-07-playwright-tests.md) | Playwright Tests | UI test campaigns per feature area |
| 8 | [step-08-general-availability.md](step-08-general-availability.md) | General Availability | Promote flag to stable; optional upgrade SQL handoff |
| 9 | [step-09-removal.md](step-09-removal.md) | Removal | Track legacy controller removal in next major |

## Slice ordering (steps 5 and 6)

Listing-first is the conventional default — it unblocks bulk operations earlier and is usually simpler than the form. Form-first is valid when listing is already migrated or out of scope. Whichever runs first creates the controller class and routing file; the other extends them.

Files in this skill

  • SKILL.md3.3 KB
  • step-00-audit.md2.5 KB
  • step-01-feature-flag.md2.1 KB
  • step-02-domain-layer.md2.3 KB
  • step-03-adapter-layer.md2.3 KB
  • step-04-behat-tests.md2.3 KB
  • step-05-listing-page.md3.7 KB
  • step-06-form-page.md4 KB
  • step-07-playwright-tests.md2.3 KB
  • step-08-general-availability.md2.1 KB
  • step-09-removal.md2 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.