dirnbauer/webconsulting-skills · Archived

typo3-fractor

Automates non-PHP TYPO3 upgrade migrations with Fractor for FlexForms, TypoScript, Fluid, YAML, XLIFF translation files, Htaccess, and composer.json changes.

First seen Mar 4, 2026

Installation

$ npx skills add dirnbauer/webconsulting-skills --skill typo3-fractor

Summary

  • Automates non-PHP TYPO3 upgrade migrations with Fractor for FlexForms, TypoScript, Fluid, YAML, XLIFF translation files, Htaccess, and composer.json changes.
  • Use when running or configuring Fractor, upgrading non-PHP TYPO3 files, migrating FlexForms or TypoScript, modernizing Fluid templates, or combining Rector and Fractor for v14 work.

Stronger alternatives

This repository is archived — consider an actively maintained alternative.

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from dirnbauer/webconsulting-skills · top by installs.

npx skills add dirnbauer/webconsulting-skills

Browse all from dirnbauer/webconsulting-skills

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 33
License LICENSE
Default branch main
Open issues 0
Status Archived

Skill metadata

Parsed from SKILL.md frontmatter.

Version1.2.0
LicenseMIT / CC-BY-SA-4.0
CompatibilityTYPO3 14.x
More metadata
version
1.2.0
origin
webconsulting

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 11,430 B
  • docs SUMMARY.md 360 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 35 installs

SKILL.md

TYPO3 Fractor Skill

Source: https://github.com/dirnbauer/webconsulting-skills

Fractor is a generic file refactoring tool that automates non-PHP migrations for TYPO3 upgrades. It complements Rector (which handles PHP) by migrating FlexForms, TypoScript, Fluid templates, YAML, XLIFF translation files, Htaccess files, and composer.json. Fractor is stable since v1.0 (July 2026); it is maintained by Simon Schaufelberger and Andreas Wolf and partly funded through TYPO3 community budgets.

Target: TYPO3 v14.x for this skill collection. Upstream Fractor sets may still be named TYPO312, TYPO313, etc. — those are historical bundle identifiers for rules you apply while moving code toward a v14 codebase.

TYPO3 API First: Always use TYPO3's built-in APIs, core features, and established conventions before creating custom implementations. Always verify that the APIs and methods you use exist and are not deprecated in TYPO3 v14 by checking the official TYPO3 documentation.

Safety: Never run Fractor on production. Always run on a development environment with version control. Review and test changes before releasing.

Fractor vs Rector

Tool Handles Package
Rector PHP code (classes, TCA PHP, ext_localconf, etc.) ssch/typo3-rector
Fractor Non-PHP files (FlexForms, TypoScript, Fluid, YAML, Htaccess, composer.json) a9f/typo3-fractor

Use both together for complete TYPO3 upgrades. See the typo3-extension-upgrade skill for the full workflow.

1. Installation

composer require --dev a9f/typo3-fractor
# or with DDEV:
ddev composer require --dev a9f/typo3-fractor

Important: Like Rector, Fractor loads the project autoloader and requires a PHP version
that can parse the installed TYPO3 packages. For TYPO3 v14 targets, run Fractor with
PHP 8.2+. Use DDEV or a container if your local PHP is older.

Always run Fractor, never skip it. Non-PHP files (FlexForms, TypoScript, Fluid) contain
version-specific patterns that are easy to miss in manual review. Fractor rules are
maintained by the TYPO3 community and cover edge cases.

This meta-package installs all TYPO3-specific file processors (set as of Fractor v1.0):

  • a9f/fractor (core engine)
  • a9f/fractor-extension-installer (automatic processor registration)
  • a9f/fractor-xml (FlexForm/XML processing)
  • a9f/fractor-fluid (Fluid template processing)
  • a9f/fractor-typoscript (TypoScript/TSconfig processing)
  • a9f/fractor-yaml (YAML processing)
  • a9f/fractor-htaccess (Htaccess processing)
  • a9f/fractor-xliff (XLIFF translation file processing — new in v1.0; pairs with the typo3-translations skill)
  • a9f/fractor-composer-json (composer.json processing — still not part of the meta-package; add composer require --dev a9f/fractor-composer-json when you need it)

2. Configuration

Quick Start

Generate a default config:

vendor/bin/typo3-fractor-init

Manual Configuration

Create fractor.php in your project root:

<?php
declare(strict_types=1);

use a9f\Fractor\Configuration\FractorConfiguration;
use a9f\Typo3Fractor\Set\Typo3LevelSetList;

return FractorConfiguration::configure()
    ->withPaths([
        __DIR__ . '/packages/',
    ])
    ->withSets([
        Typo3LevelSetList::UP_TO_TYPO3_14,
    ]);

Configuration for v14

<?php
declare(strict_types=1);

use a9f\Fractor\Configuration\FractorConfiguration;
use a9f\Typo3Fractor\Set\Typo3LevelSetList;

return FractorConfiguration::configure()
    ->withPaths([
        __DIR__ . '/Configuration/',
        __DIR__ . '/Resources/',
    ])
    ->withSets([
        Typo3LevelSetList::UP_TO_TYPO3_14,
    ]);

Skip Rules or Files

<?php
declare(strict_types=1);

use a9f\Fractor\Configuration\FractorConfiguration;
use a9f\Typo3Fractor\Set\Typo3LevelSetList;
use a9f\Typo3Fractor\TYPO3v12\FlexForm\MigrateRequiredFlagFlexFormFractor;

return FractorConfiguration::configure()
    ->withPaths([__DIR__ . '/packages/'])
    ->withSkip([
        MigrateRequiredFlagFlexFormFractor::class,
        __DIR__ . '/packages/legacy_ext/',
        __DIR__ . '/packages/my_ext/Resources/Private/Templates/Old.html' => [
            \a9f\Typo3Fractor\TYPO3v14\Fluid\ChangeLogoutHandlingInFeLoginFractor::class,
        ],
    ])
    ->withSets([
        Typo3LevelSetList::UP_TO_TYPO3_14,
    ]);

Apply Single Rules

<?php
declare(strict_types=1);

use a9f\Fractor\Configuration\FractorConfiguration;
use a9f\Typo3Fractor\TYPO3v12\FlexForm\MigrateItemsIndexedKeysToAssociativeFractor;

return FractorConfiguration::configure()
    ->withPaths([__DIR__ . '/packages/'])
    ->withRules([
        MigrateItemsIndexedKeysToAssociativeFractor::class,
    ]);

3. Running Fractor

Dry Run (Preview)

vendor/bin/fractor process --dry-run

Apply Changes

vendor/bin/fractor process

Useful CLI Options (since v1.0)

vendor/bin/fractor process --dry-run --no-diffs        # summary without diff output
vendor/bin/fractor process --dry-run --rules-summary   # which rules changed which files
vendor/bin/fractor process --memory-limit=2G           # raise the limit for large projects

Breaking in v1.0: the --quiet CLI option was removed.

Run Single Rule from Set

vendor/bin/fractor process --only="a9f\Typo3Fractor\TYPO3v14\TypoScript\RemoveExternalOptionFromTypoScriptFractor"

With DDEV

ddev exec vendor/bin/fractor process --dry-run
ddev exec vendor/bin/fractor process

4. Available Set Lists

Level Sets (Cumulative)

Apply all rules up to a target version:

Set List Includes
Typo3LevelSetList::UPTOTYPO3_10 Imports UPTOTYPO39 plus TYPO310 rules only (see package config/level/up-to-typo3-10.php)
Typo3LevelSetList::UPTOTYPO3_11 ... + v11
Typo3LevelSetList::UPTOTYPO3_12 ... + v12
Typo3LevelSetList::UPTOTYPO3_13 ... + v13
Typo3LevelSetList::UPTOTYPO3_14 ... + v14

Version-Specific Sets

Apply rules for a single version only:

Set List Description
Typo3SetList::TYPO3_12 v12 rules only
Typo3SetList::TYPO3_13 v13 rules only
Typo3SetList::TYPO3_14 v14 rules only

5. Rules by File Type and Version

FlexForm Rules (v12)

Rule Migration
MigrateEmailFlagToEmailTypeFlexFormFractor eval=emailtype=email
MigrateEvalIntAndDouble2ToTypeNumberFlexFormFractor eval=int/double2type=number
MigrateInternalTypeFolderToTypeFolderFlexFormFractor internalType=foldertype=folder
MigrateItemsIndexedKeysToAssociativeFractor Indexed items → label/value keys
MigrateNullFlagFlexFormFractor eval=nullnullable=true
MigratePasswordAndSaltedPasswordToPasswordTypeFlexFormFractor Password eval → type=password
MigrateRenderTypeColorpickerToTypeColorFlexFormFractor renderType=colorPickertype=color
MigrateRequiredFlagFlexFormFractor eval=requiredrequired=1
MigrateTypeNoneColsToSizeFlexFormFractor colssize for type=none
RemoveTceFormsDomElementFlexFormFractor Remove <TCEforms> wrapper

TypoScript Rules (v12)

Rule Migration
MigrateTypoScriptLoginUserAndUsergroupConditionsFractor Legacy conditions → Symfony expressions
MigrateDeprecatedTypoScriptConditionsFractor Deprecated TypoScript [compatVersion] / old condition syntax → supported forms
RemoveConfigDisablePageExternalUrlFractor Remove config.disablePageExternalUrl
RemoveConfigDoctypeSwitchFractor Remove config.doctypeSwitch
RemoveConfigMetaCharsetFractor Remove config.metaCharset
RemoveConfigSendCacheHeadersOnlyWhenLoginDeniedInBranchFractor Remove deprecated cache header config
RemoveConfigSpamProtectEmailAddressesAsciiOptionFractor Remove ascii option
RemoveNewContentElementWizardOptionsFractor Remove legacy CE wizard TSconfig
RemoveWorkspaceModeOptionsFractor Remove workspace mode options
RenameConfigXhtmlDoctypeToDoctypeFractor xhtmlDoctypedoctype
RenameTcemainLinkHandlerMailKeyFractor Rename mail link handler key
UseConfigArrayForTSFEPropertiesFractor TSFE properties → config array

Fluid Rules (bundle id TYPO3_8)

Rule Migration
ReplaceCaseDefaultWithDefaultCaseFluidFractor <f:case default="true"><f:defaultCase> (new in v1.0; applied through the cumulative level sets)

Fluid Rules (v12)

Rule Migration
AbstractMessageGetSeverityFluidFractor Migrate severity constants in Fluid

TypoScript rules (bundle id TYPO3_13)

These rules are published under the historical set name Typo3SetList::TYPO313 (v13-targeted rules). They still run when you apply the cumulative Typo3LevelSetList::UPTOTYPO314 level set on a v14 codebase.

Rule Migration
MigrateIncludeTypoScriptSyntaxFractor <INCLUDE_TYPOSCRIPT:@import
RemovePageDoktypeRecyclerFromUserTsConfigFractor Remove recycler doktype from TSconfig

TypoScript Rules (v14)

Rule Migration
MigrateTypoScriptConditionGetTSFEFractor getTSFE() conditions → new API
MigrateTypoScriptGetDataPathFractor getData path changes
RemoveDuplicateDoktypeRestrictionConfigurationFractor Remove duplicate doktype restrictions
RemoveExposeNonexistentUserInForgotPasswordDialogSettingInFeLoginFractor Remove deprecated fe_login setting
RemoveExternalOptionFromTypoScriptFractor Remove external option
RemoveFrontendAssetConcatenationAndCompressionFractor Remove asset concatenation/compression settings
RemoveModWebLayoutDefLangBindingFractor Remove mod.web_layout.defLangBinding
RemoveUserTSConfigAuthBeRedirectToURLFractor Remove auth.BE.redirectToURL

Fluid Rules (v14)

Rule Migration
ChangeLogoutHandlingInFeLoginFractor Migrate fe_login logout handling

YAML Rules (v14)

Rule Migration
MigrateLegacyFormTemplatesFractor Migrate legacy EXT:form templates

Htaccess Rules (v14)

Rule Migration
RemoveUploadsFromDefaultHtaccessFractor Remove /uploads/ from .htaccess

Detailed Reference

Read [the full guide](references/full-guide.md) when the task needs detailed examples, long templates, troubleshooting matrices, appendices, or sections not included above. Keep this file unloaded for narrow tasks so the skill follows progressive disclosure.