From typo3-skills
Migrates a TYPO3 site package from legacy CSS to Tailwind CSS v4 in DDEV, with visual regression testing via Playwright. Covers build pipeline, design tokens, Fluid templates, and accessibility.
How this skill is triggered — by the user, by Claude, or both
Slash command
/typo3-skills:typo3-tailwind-migrationThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Migrate an existing TYPO3 site package from legacy/custom CSS to Tailwind CSS v4 within a DDEV development environment. This skill encapsulates battle-tested learnings from a complete migration project.
Migrate an existing TYPO3 site package from legacy/custom CSS to Tailwind CSS v4 within a DDEV development environment. This skill encapsulates battle-tested learnings from a complete migration project.
Most important lesson: Set up VRT baselines and the test environment in the first sprint, not the last. Capture the legacy site's appearance before touching any CSS. Every migration decision is verified against these baselines.
Follow these 6 phases in strict order:
⚠️ MANDATORY FIRST STEP. Do NOT skip or defer this.
typo3-playwright-ddev for detailed DDEV setup)ddev exec "cd packages/[theme-name] && npx playwright test --update-snapshots" to generate baseline screenshotsTest file checklist:
.spec.ts per page layout (e.g., Default, Homepage, Sidebar — whatever your project defines).spec.ts for all content elements on a dedicated test page.spec.ts file is committed (Epic 1 lesson: missing test files = silent coverage gaps)See references/migration-checklist.md for the complete pre-flight checklist.
Install Tailwind CSS v4 dependencies:
ddev npm install --save-dev tailwindcss postcss @tailwindcss/postcss postcss-cli cssnano
Create the build pipeline — see references/build-pipeline.md for:
postcss.config.js setup@import "tailwindcss" (v4 syntax)Map existing design tokens to Tailwind @theme block — see references/design-tokens.md for:
Verify integration in a Fluid template:
bg-primary-100 to any elementddev npm run buildMigrate page layouts and global components in this order:
Page Layouts (migrate each layout defined in your site package, one at a time)
f:asset.css to load the compiled main.cssHeader & Navigation
sticky top-0 z-50md: prefix for desktop<button> with aria-expanded, aria-controls, aria-labelmain.js (avoid dead code in separate files)Footer
lib.dynamicContent or Menu Processor — NOT TypoScript settingsSee references/fluid-integration.md for TYPO3-specific Fluid + Tailwind patterns.
Migrate each content element type:
alt text, loading="eager" for hero/LCP imagesclip-path, CTA button styling, mobile legibilitycolPos from page layout through all partial layers to enable context-aware styling (smaller headings, adjusted image sizes)After each content element:
ddev exec "cd packages/[theme-name] && npx playwright test --grep @stitch-vrt" to compare against Phase 0 baselinesSee references/migration-checklist.md for the element-by-element checklist.
Visual Regression Verification
ddev exec "cd packages/[theme-name] && npx playwright test --grep @stitch-vrt"Accessibility Audit
@axe-core/playwright into the test suitelang attribute on <html>, focus indicatorsCross-Browser Testing
Performance
loading="eager" on LCP imagesddev npm run build — verify final main.css contains only used utilitiesFor the complete list of pitfalls discovered during the original migration, see references/anti-patterns.md. The top 5:
--update-snapshots — every VRT diff must be understood and justifiedddev exec "npx playwright install" (Linux container ≠ macOS)| Gate | When | Rule |
|---|---|---|
| Test file verification | Every code review | Every .spec.ts must be committed; snapshots must have matching spec files |
| VRT comparison | After every component | Compare against Phase 0 baselines, not newly generated snapshots |
| A11y audit | After layout completion | Run axe-core across all viewports and theme variants |
| Cross-browser smoke | After every story | Don't wait until the final epic |
| Spacing verification | Before marking "done" | Compare pixel-level spacing against baseline screenshots |
npx claudepluginhub starraider/typo3-skillsUpdates a TYPO3 v12/v13 site to v14.3 LTS inside DDEV with visual regression testing, accessibility checks, extension migration, and Lighthouse optimization.
Manages Tailwind CSS v4 PostCSS build workflow with @theme tokens, @source directives, and CSS partials for TYPO3/DDEV projects. Activates when modifying CSS files, adding utility classes in Fluid templates, or troubleshooting missing styles.
Migrates a project from Tailwind CSS v3 to v4 safely and completely. Runs the official codemod, then handles config porting, changed defaults, renamed utilities, and visual verification.