{"id":"9f41700c-34db-4475-8d7b-b612b214f44a","shortId":"7LEDBQ","kind":"skill","title":"typo3-extension-upgrade","tagline":"Use when upgrading TYPO3 extensions to newer LTS versions (v11->v12, v12->v13, v13->v14 - v14.3 LTS is the current target), running Extension Scanner, Rector, Fractor, PHPStan, fixing deprecated APIs, or resolving compatibility issues. Also triggers on: migration, version upgrade","description":"# TYPO3 Extension Upgrade Skill\n\nSystematic framework for upgrading TYPO3 extensions to newer LTS versions.\nExtension code only -- NOT for project/core upgrades.\n\n## Upgrade Toolkit\n\n| Tool | Purpose | Files |\n|------|---------|-------|\n| Extension Scanner | Diagnose deprecated APIs | TYPO3 Backend |\n| Rector | Automated PHP migrations | `.php` |\n| Fractor | Non-PHP migrations | FlexForms, TypoScript, YAML, Fluid |\n| PHPStan | Static analysis | `.php` |\n\n## Core Workflow\n\n1. Complete planning phase (consult `references/pre-upgrade.md`)\n2. Create feature branch (verify git is clean)\n3. Update `composer.json` constraints for target version\n4. **Audit third-party dependencies** for major version changes (consult `references/third-party-dependency-upgrades.md`)\n5. Run `rector process --dry-run` then review and apply\n6. Run `fractor process --dry-run` then review and apply\n7. Run `php-cs-fixer fix`\n8. Run `phpstan analyse` **against each supported dependency version** and fix errors\n9. Run `phpunit` and fix tests\n10. Test in target TYPO3 version(s)\n11. Verify success criteria (consult `references/verification.md`)\n\n## When NOT to Apply Automatically\n\nDo NOT blindly apply Rector/Fractor if dual-version compatibility is needed,\ntests are missing, changes are unclear, or complex APIs (DBAL, Extbase) are\naffected. Instead: apply specific rules manually, test between each change.\n\n## Third-Party Dependency Upgrades\n\nWhen `composer.json` widens constraints to a new major version: enumerate API usages, cross-reference the new version's API, flag interface/concrete-only methods, verify mocks against all supported versions, use adapter pattern for signature differences, run PHPStan against each major version. See `references/third-party-dependency-upgrades.md`.\n\n## Quick Commands\n\n```bash\nrector process --dry-run && rector process        # PHP migrations\nfractor process --dry-run && fractor process       # Non-PHP migrations\nphp-cs-fixer fix && phpstan analyse && phpunit     # Quality checks\n```\n\n## Asset Templates\n\nConfig templates in `assets/`: `rector.php`, `fractor.php`, `phpstan.neon`, `phpunit.xml`, `.php-cs-fixer.php`\n\n## References\n\n| Reference | Use when... |\n|-----------|-------------|\n| `references/pre-upgrade.md` | Starting an upgrade: planning checklist, version audit, risk assessment |\n| `references/api-changes.md` | Checking deprecated/removed APIs by TYPO3 version |\n| `references/api-traps.md` | Cross-version footguns: TCA restrictions, boot order, DI bypass |\n| `references/upgrade-v11-to-v12.md` | Upgrading from TYPO3 v11 to v12 |\n| `references/upgrade-v12-to-v13.md` | Upgrading from TYPO3 v12 to v13 |\n| `references/upgrade-v13-to-v14.md` | Upgrading from TYPO3 v13 to v14 |\n| `references/dual-compatibility.md` | Maintaining dual compatibility (v12 + v13) |\n| `references/real-world-patterns.md` | Looking for real-world migration examples |\n| `references/toolchain-output.md` | Understanding Rector/Fractor dry-run output |\n| `references/troubleshooting.md` | Rector broke code, PHPStan errors, test failures |\n| `references/third-party-dependency-upgrades.md` | Upgrading non-TYPO3 dependencies (major version bumps, adapter patterns) |\n| `references/verification.md` | Checking success criteria and real-world testing |\n| `references/multi-version-worktrees.md` | Per-LTS worktree layout, backport workflow, cross-version CI matrix |\n\n## External Resources\n\n- [TYPO3 Rector](https://github.com/sabbelasichon/typo3-rector)\n- [Fractor](https://github.com/andreaswolf/fractor)\n- [TYPO3 Core Changelog](https://docs.typo3.org/c/typo3/cms-core/main/en-us/)","tags":["typo3","extension","upgrade","skill","netresearch","agent-skills","ai-agent","open-standard"],"capabilities":["skill","source-netresearch","skill-typo3-extension-upgrade","topic-agent-skills","topic-ai-agent","topic-open-standard"],"categories":["typo3-extension-upgrade-skill"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/netresearch/typo3-extension-upgrade-skill/typo3-extension-upgrade","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add netresearch/typo3-extension-upgrade-skill","source_repo":"https://github.com/netresearch/typo3-extension-upgrade-skill","install_from":"skills.sh"}},"qualityScore":"0.453","qualityRationale":"deterministic score 0.45 from registry signals: · indexed on github topic:agent-skills · 6 github stars · SKILL.md body (3,606 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T19:14:25.142Z","embedding":null,"createdAt":"2026-05-18T13:21:59.120Z","updatedAt":"2026-05-18T19:14:25.142Z","lastSeenAt":"2026-05-18T19:14:25.142Z","tsv":"'/andreaswolf/fractor)':447 '/c/typo3/cms-core/main/en-us/)':453 '/sabbelasichon/typo3-rector)':443 '1':98 '10':178 '11':185 '2':104 '3':112 '4':119 '5':131 '6':142 '7':153 '8':160 '9':172 'adapt':265,413 'affect':220 'also':39 'analys':163,307 'analysi':94 'api':34,75,216,245,254,339 'appli':141,152,194,199,222 'assess':335 'asset':311,316 'audit':120,333 'autom':79 'automat':195 'backend':77 'backport':430 'bash':280 'blind':198 'boot':350 'branch':107 'broke':398 'bump':412 'bypass':353 'chang':128,211,229 'changelog':450 'check':310,337,416 'checklist':331 'ci':435 'clean':111 'code':60,399 'command':279 'compat':37,205,378 'complet':99 'complex':215 'composer.json':114,236 'config':313 'constraint':115,238 'consult':102,129,189 'core':96,449 'creat':105 'criteria':188,418 'cross':248,345,433 'cross-refer':247 'cross-vers':344,432 'cs':157,303 'current':24 'dbal':217 'depend':124,167,233,409 'deprec':33,74 'deprecated/removed':338 'di':352 'diagnos':73 'differ':269 'docs.typo3.org':452 'docs.typo3.org/c/typo3/cms-core/main/en-us/)':451 'dri':136,147,284,293,393 'dry-run':135,146,283,292,392 'dual':203,377 'dual-vers':202 'enumer':244 'error':171,401 'exampl':388 'extbas':218 'extens':3,9,27,46,54,59,71 'extern':437 'failur':403 'featur':106 'file':70 'fix':32,159,170,176,305 'fixer':158,304 'flag':255 'flexform':88 'fluid':91 'footgun':347 'fractor':30,83,144,290,295,444 'fractor.php':318 'framework':50 'git':109 'github.com':442,446 'github.com/andreaswolf/fractor)':445 'github.com/sabbelasichon/typo3-rector)':441 'instead':221 'interface/concrete-only':256 'issu':38 'layout':429 'look':382 'lts':12,21,57,427 'maintain':376 'major':126,242,274,410 'manual':225 'matrix':436 'method':257 'migrat':42,81,87,289,300,387 'miss':210 'mock':259 'need':207 'new':241,251 'newer':11,56 'non':85,298,407 'non-php':84,297 'non-typo3':406 'order':351 'output':395 'parti':123,232 'pattern':266,414 'per':426 'per-lt':425 'phase':101 'php':80,82,86,95,156,288,299,302 'php-cs-fixer':155,301 'php-cs-fixer.php':321 'phpstan':31,92,162,271,306,400 'phpstan.neon':319 'phpunit':174,308 'phpunit.xml':320 'plan':100,330 'process':134,145,282,287,291,296 'project/core':64 'purpos':69 'qualiti':309 'quick':278 'real':385,421 'real-world':384,420 'rector':29,78,133,281,286,397,440 'rector.php':317 'rector/fractor':200,391 'refer':249,322,323 'references/api-changes.md':336 'references/api-traps.md':343 'references/dual-compatibility.md':375 'references/multi-version-worktrees.md':424 'references/pre-upgrade.md':103,326 'references/real-world-patterns.md':381 'references/third-party-dependency-upgrades.md':130,277,404 'references/toolchain-output.md':389 'references/troubleshooting.md':396 'references/upgrade-v11-to-v12.md':354 'references/upgrade-v12-to-v13.md':361 'references/upgrade-v13-to-v14.md':368 'references/verification.md':190,415 'resolv':36 'resourc':438 'restrict':349 'review':139,150 'risk':334 'rule':224 'run':26,132,137,143,148,154,161,173,270,285,294,394 'scanner':28,72 'see':276 'signatur':268 'skill':48 'skill-typo3-extension-upgrade' 'source-netresearch' 'specif':223 'start':327 'static':93 'success':187,417 'support':166,262 'systemat':49 'target':25,117,181 'tca':348 'templat':312,314 'test':177,179,208,226,402,423 'third':122,231 'third-parti':121,230 'tool':68 'toolkit':67 'topic-agent-skills' 'topic-ai-agent' 'topic-open-standard' 'trigger':40 'typo3':2,8,45,53,76,182,341,357,364,371,408,439,448 'typo3-extension-upgrade':1 'typoscript':89 'unclear':213 'understand':390 'updat':113 'upgrad':4,7,44,47,52,65,66,234,329,355,362,369,405 'usag':246 'use':5,264,324 'v11':14,358 'v12':15,16,360,365,379 'v13':17,18,367,372,380 'v14':19,374 'v14.3':20 'verifi':108,186,258 'version':13,43,58,118,127,168,183,204,243,252,263,275,332,342,346,411,434 'widen':237 'workflow':97,431 'worktre':428 'world':386,422 'yaml':90","prices":[{"id":"22c9f674-18ed-4d13-bed8-bb4cf5fceb2b","listingId":"9f41700c-34db-4475-8d7b-b612b214f44a","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"netresearch","category":"typo3-extension-upgrade-skill","install_from":"skills.sh"},"createdAt":"2026-05-18T13:21:59.120Z"}],"sources":[{"listingId":"9f41700c-34db-4475-8d7b-b612b214f44a","source":"github","sourceId":"netresearch/typo3-extension-upgrade-skill/typo3-extension-upgrade","sourceUrl":"https://github.com/netresearch/typo3-extension-upgrade-skill/tree/main/skills/typo3-extension-upgrade","isPrimary":false,"firstSeenAt":"2026-05-18T13:21:59.120Z","lastSeenAt":"2026-05-18T19:14:25.142Z"}],"details":{"listingId":"9f41700c-34db-4475-8d7b-b612b214f44a","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"netresearch","slug":"typo3-extension-upgrade","github":{"repo":"netresearch/typo3-extension-upgrade-skill","stars":6,"topics":["agent-skills","ai-agent","open-standard"],"license":"other","html_url":"https://github.com/netresearch/typo3-extension-upgrade-skill","pushed_at":"2026-05-15T11:34:39Z","description":"Agent Skill for systematically upgrading TYPO3 extensions to newer LTS versions | Claude Code compatible","skill_md_sha":"c2b0a1043c3f31459b9815d42ab02fa59aebdebb","skill_md_path":"skills/typo3-extension-upgrade/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/netresearch/typo3-extension-upgrade-skill/tree/main/skills/typo3-extension-upgrade"},"layout":"multi","source":"github","category":"typo3-extension-upgrade-skill","frontmatter":{"name":"typo3-extension-upgrade","description":"Use when upgrading TYPO3 extensions to newer LTS versions (v11->v12, v12->v13, v13->v14 - v14.3 LTS is the current target), running Extension Scanner, Rector, Fractor, PHPStan, fixing deprecated APIs, or resolving compatibility issues. Also triggers on: migration, version upgrade, deprecated API, dual-version compatibility, Fluid 5 strict VHs, HashService removal, ext_tables.php split."},"skills_sh_url":"https://skills.sh/netresearch/typo3-extension-upgrade-skill/typo3-extension-upgrade"},"updatedAt":"2026-05-18T19:14:25.142Z"}}