TYPO3 Extension Conformance Checker
Evaluate TYPO3 extensions against TYPO3 coding standards, architecture patterns, and best practices.
When to Use
- Extension quality / TER readiness
- Scored conformance reports
- Modernization to v12/v13/v14 (v14.3 LTS is default/gold standard)
Delegation
Testing -> typo3-testing | Docs -> typo3-docs | OpenSSF -> enterprise-readiness
Scope: extensions only. Site/project repos (type: project + Compose) — score with the gold checker typo3-14-gold/tools/conformance.
Workflow
Step 0: Context
Read ext_emconf.php + composer.json for version, type, scope.
Steps 1-11: Checks
- Metadata -- key, TYPO3 version, type
- Structure -- composer.json, ext_emconf.php, Classes/, Configuration/, Resources/
- Coding -- strict_types, PSR-12, PHP 8.4 explicit nullable, PHP 8.5 float-to-int
- Prohibited -- no
$GLOBALS, no GeneralUtility::makeInstance() for services
- Architecture -- constructor DI, Services.yaml, PSR-14 events (try/catch), PSR-3 logging (LoggerAware+NullLogger), factory fallback
- Backend -- ES6, Modal API, CSRF, CSP (v13+)
- Testing -- PHPUnit, Playwright E2E, coverage >70%
- Practices -- DDEV, runTests.sh, CI/CD
- TER -- publish workflow, upload comment
- Audit -- PHPStan baseline, TCA searchFields, XLIFF, cache has()+get(), query properties, multi-version adapters
- v14 readiness -- no
ext_tables.php/HashService/magic finders; Fluid VHs strict; XLF 2-space. See references/v14-deprecations.md.
Step 12: Verify
Re-run after fixes. Document score delta.
Quick Grep Recipes
grep -rL 'strict_types' Classes/ --include='*.php'
grep -rn '\$GLOBALS' Classes/ --include='*.php'
grep -rn 'GeneralUtility::makeInstance' Classes/ --include='*.php'
grep -rPn '\(\s*[A-Za-z\\]+\s+\$\w+\s*=\s*null' Classes/ --include='*.php' | grep -v '?' # PHP 8.4 implicit nullable
grep -rn '->has(' Classes/ --include='*.php' # cache has()+get() anti-pattern
grep -l 'strict_types' ext_emconf.php # ext_emconf must NOT have strict_types
grep -rn '(int)\s*\$' Classes/ --include='*.php' # PHP 8.5 implicit float-to-int
grep -rn 'data-toggle\|data-dismiss\|data-ride' Resources/ --include='*.html' # Bootstrap 4 in Fluid
grep -rn 'HashService\|GeneralUtility::hmac(\|->findBy[A-Z]\|->findOneBy[A-Z]\|->countBy[A-Z]' Classes/ --include='*.php' # v14 removals
[ -f ext_tables.php ] && echo "WARN: ext_tables.php deprecated (#109438)" # v14.3 deprecation
Scoring
Base (0-100): Architecture(20) + Guidelines(20) + PHP(20) + Testing(20) + Practices(20). Excellence bonus up to 22. Critical issues block regardless.
| Range |
Level |
Action |
| 90+ |
Excellent |
Production/TER ready |
| 80-89 |
Good |
Minor fixes |
| 70-79 |
Acceptable |
Fix before release |
| 50-69 |
Needs Work |
Significant effort |
| <50 |
Critical |
Block deployment |
References
See references/:
- Architecture & code:
extension-architecture.md, directory-structure.md, php-architecture.md, coding-guidelines.md, best-practices.md, hooks-and-events.md
- Validation:
composer-validation.md, ext-emconf-validation.md, ext-files-validation.md, runtests-validation.md, version-requirements.md, testing-standards.md
- Multi-version:
dual-version-compatibility.md, v13-v14-dual-compatibility.md, multi-version-dependency-compatibility.md, v13-deprecations.md, v14-deprecations.md
- Practices & backend:
development-environment.md, backend-module-v13.md, ter-publishing.md, report-template.md, excellence-indicators.md, localization-coverage.md, crowdin-integration.md
Asset templates in assets/Build/: PHPStan, PHP-CS-Fixer, Rector, ESLint, Stylelint, TypoScript lint.
Credits & Attribution
This skill is based on the excellent work by
Netresearch DTT GmbH.
Original repository: https://github.com/netresearch/typo3-conformance-skill
Copyright (c) Netresearch DTT GmbH — Methodology and best practices (MIT / CC-BY-SA-4.0)
Special thanks to Netresearch DTT GmbH for their generous open-source contributions to the TYPO3 community, which helped shape this skill collection.
Adapted by webconsulting.at for this skill collection
1---2name: typo3-conformance3description: Use when assessing TYPO3 extension quality, conformance checking, standards compliance, modernization to v12/v13/v14 (v14.3 LTS is the default/gold standard), TER readiness, or best practices review. Also triggers on: extension audit, quality score, full assessment, fix all findings, conformance audit, Fluid 5 strict ViewHelpers, ext_tables.php removal, Extbase attributes (Authorize/RateLimit), HashService removal, Bootstrap 5 migration, CSP compliance, ViewHelper security, XLIFF hygiene, PHP 8.4/8.5 compat.4---56# TYPO3 Extension Conformance Checker78Evaluate TYPO3 extensions against TYPO3 coding standards, architecture patterns, and best practices.910## When to Use1112- Extension quality / TER readiness13- Scored conformance reports14- Modernization to v12/v13/v14 (**v14.3 LTS is default/gold standard**)1516## Delegation1718Testing -> `typo3-testing` | Docs -> `typo3-docs` | OpenSSF -> `enterprise-readiness`1920**Scope:** extensions only. **Site/project** repos (`type: project` + Compose) — score with the gold checker [`typo3-14-gold`](https://git.netresearch.de/typo3/typo3-14-gold)`/tools/conformance`.2122## Workflow2324### Step 0: Context2526Read ext_emconf.php + composer.json for version, type, scope.2728### Steps 1-11: Checks29301. **Metadata** -- key, TYPO3 version, type312. **Structure** -- composer.json, ext_emconf.php, Classes/, Configuration/, Resources/323. **Coding** -- strict_types, PSR-12, PHP 8.4 explicit nullable, PHP 8.5 float-to-int334. **Prohibited** -- no `$GLOBALS`, no `GeneralUtility::makeInstance()` for services345. **Architecture** -- constructor DI, Services.yaml, PSR-14 events (try/catch), PSR-3 logging (LoggerAware+NullLogger), factory fallback356. **Backend** -- ES6, Modal API, CSRF, CSP (v13+)367. **Testing** -- PHPUnit, Playwright E2E, coverage >70%378. **Practices** -- DDEV, runTests.sh, CI/CD389. **TER** -- publish workflow, upload comment3910. **Audit** -- PHPStan baseline, TCA searchFields, XLIFF, cache has()+get(), query properties, multi-version adapters4011. **v14 readiness** -- no `ext_tables.php`/`HashService`/magic finders; Fluid VHs strict; XLF 2-space. See `references/v14-deprecations.md`.4142### Step 12: Verify4344Re-run after fixes. Document score delta.4546## Quick Grep Recipes4748```bash49grep -rL 'strict_types' Classes/ --include='*.php'50grep -rn '\$GLOBALS' Classes/ --include='*.php'51grep -rn 'GeneralUtility::makeInstance' Classes/ --include='*.php'52grep -rPn '\(\s*[A-Za-z\\]+\s+\$\w+\s*=\s*null' Classes/ --include='*.php' | grep -v '?' # PHP 8.4 implicit nullable53grep -rn '->has(' Classes/ --include='*.php' # cache has()+get() anti-pattern54grep -l 'strict_types' ext_emconf.php # ext_emconf must NOT have strict_types55grep -rn '(int)\s*\$' Classes/ --include='*.php' # PHP 8.5 implicit float-to-int56grep -rn 'data-toggle\|data-dismiss\|data-ride' Resources/ --include='*.html' # Bootstrap 4 in Fluid57grep -rn 'HashService\|GeneralUtility::hmac(\|->findBy[A-Z]\|->findOneBy[A-Z]\|->countBy[A-Z]' Classes/ --include='*.php' # v14 removals58[ -f ext_tables.php ] && echo "WARN: ext_tables.php deprecated (#109438)" # v14.3 deprecation59```6061## Scoring6263**Base (0-100):** Architecture(20) + Guidelines(20) + PHP(20) + Testing(20) + Practices(20). Excellence bonus up to 22. Critical issues block regardless.6465| Range | Level | Action |66|-------|-------|--------|67| 90+ | Excellent | Production/TER ready |68| 80-89 | Good | Minor fixes |69| 70-79 | Acceptable | Fix before release |70| 50-69 | Needs Work | Significant effort |71| <50 | Critical | Block deployment |7273## References7475See `references/`:7677- **Architecture & code:** `extension-architecture.md`, `directory-structure.md`, `php-architecture.md`, `coding-guidelines.md`, `best-practices.md`, `hooks-and-events.md`78- **Validation:** `composer-validation.md`, `ext-emconf-validation.md`, `ext-files-validation.md`, `runtests-validation.md`, `version-requirements.md`, `testing-standards.md`79- **Multi-version:** `dual-version-compatibility.md`, `v13-v14-dual-compatibility.md`, `multi-version-dependency-compatibility.md`, `v13-deprecations.md`, `v14-deprecations.md`80- **Practices & backend:** `development-environment.md`, `backend-module-v13.md`, `ter-publishing.md`, `report-template.md`, `excellence-indicators.md`, `localization-coverage.md`, `crowdin-integration.md`8182Asset templates in `assets/Build/`: PHPStan, PHP-CS-Fixer, Rector, ESLint, Stylelint, TypoScript lint.8384---8586## Credits & Attribution8788This skill is based on the excellent work by89**[Netresearch DTT GmbH](https://www.netresearch.de/)**.9091Original repository: https://github.com/netresearch/typo3-conformance-skill9293**Copyright (c) Netresearch DTT GmbH** — Methodology and best practices (MIT / CC-BY-SA-4.0)9495Special thanks to [Netresearch DTT GmbH](https://www.netresearch.de/) for their generous open-source contributions to the TYPO3 community, which helped shape this skill collection.96Adapted by webconsulting.at for this skill collection