{"id":"9ba974f7-6629-4cef-b3d4-3924941b9912","shortId":"4sPYXM","kind":"skill","title":"typo3-conformance","tagline":"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 findi","description":"# TYPO3 Extension Conformance Checker\n\nEvaluate TYPO3 extensions against TYPO3 coding standards, architecture patterns, and best practices.\n\n## When to Use\n\n- Extension quality / TER readiness\n- Scored conformance reports\n- Modernization to v12/v13/v14 (**v14.3 LTS is default/gold standard**)\n\n## Delegation\n\nTesting -> `typo3-testing` | Docs -> `typo3-docs` | OpenSSF -> `enterprise-readiness`\n\n## Workflow\n\n### Step 0: Context\n\nRead ext_emconf.php + composer.json for version, type, scope.\n\n### Steps 1-11: Checks\n\n1. **Metadata** -- key, TYPO3 version, type\n2. **Structure** -- composer.json, ext_emconf.php, Classes/, Configuration/, Resources/\n3. **Coding** -- strict_types, PSR-12, PHP 8.4 explicit nullable, PHP 8.5 float-to-int\n4. **Prohibited** -- no `$GLOBALS`, no `GeneralUtility::makeInstance()` for services\n5. **Architecture** -- constructor DI, Services.yaml, PSR-14 events (try/catch), PSR-3 logging (LoggerAware+NullLogger), factory fallback\n6. **Backend** -- ES6, Modal API, CSRF, CSP (v13+)\n7. **Testing** -- PHPUnit, Playwright E2E, coverage >70%\n8. **Practices** -- DDEV, runTests.sh, CI/CD\n9. **TER** -- publish workflow, upload comment\n10. **Audit** -- PHPStan baseline, TCA searchFields, XLIFF, cache has()+get(), query properties, multi-version adapters\n11. **v14 readiness** -- no `ext_tables.php`/`HashService`/magic finders; Fluid VHs strict; XLF 2-space. See `references/v14-deprecations.md`.\n\n### Step 12: Verify\n\nRe-run after fixes. Document score delta.\n\n## Quick Grep Recipes\n\n```bash\ngrep -rL 'strict_types' Classes/ --include='*.php'                   # missing strict_types\ngrep -rn '\\$GLOBALS' Classes/ --include='*.php'                       # prohibited $GLOBALS\ngrep -rn 'GeneralUtility::makeInstance' Classes/ --include='*.php'    # makeInstance for services\ngrep -rPn '\\(\\s*[A-Za-z\\\\]+\\s+\\$\\w+\\s*=\\s*null' Classes/ --include='*.php' | grep -v '?'  # PHP 8.4 implicit nullable\ngrep -rn '->has(' Classes/ --include='*.php'                          # cache has()+get() anti-pattern\ngrep -l 'strict_types' ext_emconf.php                                 # ext_emconf must NOT have strict_types\ngrep -rn '(int)\\s*\\$' Classes/ --include='*.php'                      # PHP 8.5 implicit float-to-int\ngrep -rn 'data-toggle\\|data-dismiss\\|data-ride' Resources/ --include='*.html'  # Bootstrap 4 in Fluid\ngrep -rn 'HashService\\|GeneralUtility::hmac(\\|->findBy[A-Z]\\|->findOneBy[A-Z]\\|->countBy[A-Z]' Classes/ --include='*.php'  # v14 removals\n[ -f ext_tables.php ] && echo \"WARN: ext_tables.php deprecated (#109438)\"   # v14.3 deprecation\n```\n\n## Scoring\n\n**Base (0-100):** Architecture(20) + Guidelines(20) + PHP(20) + Testing(20) + Practices(20). Excellence bonus up to 22. Critical issues block regardless.\n\n| Range | Level | Action |\n|-------|-------|--------|\n| 90+ | Excellent | Production/TER ready |\n| 80-89 | Good | Minor fixes |\n| 70-79 | Acceptable | Fix before release |\n| 50-69 | Needs Work | Significant effort |\n| <50 | Critical | Block deployment |\n\n## References\n\nSee `references/`:\n\n- **Architecture & code:** `extension-architecture.md`, `directory-structure.md`, `php-architecture.md`, `coding-guidelines.md`, `best-practices.md`, `hooks-and-events.md`\n- **Validation:** `composer-validation.md`, `ext-emconf-validation.md`, `ext-files-validation.md`, `runtests-validation.md`, `version-requirements.md`, `testing-standards.md`\n- **Multi-version:** `dual-version-compatibility.md` (v12+v13), `v13-v14-dual-compatibility.md` (v13+v14), `multi-version-dependency-compatibility.md`, `v13-deprecations.md`, `v14-deprecations.md`\n- **Practices & environment:** `development-environment.md` (DDEV)\n- **Backend & publishing:** `backend-module-v13.md`, `ter-publishing.md`, `report-template.md`, `excellence-indicators.md`, `localization-coverage.md`, `crowdin-integration.md`\n\nAsset templates in `assets/Build/`: PHPStan, PHP-CS-Fixer, Rector, ESLint, Stylelint, TypoScript lint.","tags":["typo3","conformance","skill","netresearch","agent-skills","ai-agent","claude-code-skill","open-standard","quality-assurance","quality-control","typo3-cms","typo3-extension"],"capabilities":["skill","source-netresearch","skill-typo3-conformance","topic-agent-skills","topic-ai-agent","topic-claude-code-skill","topic-open-standard","topic-quality-assurance","topic-quality-control","topic-skill","topic-typo3","topic-typo3-cms","topic-typo3-extension"],"categories":["typo3-conformance-skill"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/netresearch/typo3-conformance-skill/typo3-conformance","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add netresearch/typo3-conformance-skill","source_repo":"https://github.com/netresearch/typo3-conformance-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,923 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-18T13:22:58.505Z","embedding":null,"createdAt":"2026-05-18T13:22:58.505Z","updatedAt":"2026-05-18T13:22:58.505Z","lastSeenAt":"2026-05-18T13:22:58.505Z","tsv":"'-100':369 '-11':101 '-12':121 '-14':147 '-3':151 '-69':408 '-79':402 '-89':397 '/magic':205 '0':90,368 '1':100,103 '10':183 '109438':363 '11':199 '12':216 '2':109,211 '20':371,373,375,377,379 '22':384 '3':116 '4':132,332 '5':141 '50':407,413 '6':157 '7':165 '70':171,401 '8':172 '8.4':123,276 '8.5':127,311 '80':396 '9':177 '90':392 'a-z':341,345,349 'a-za-z':261 'accept':403 'action':391 'adapt':198 'also':29 'anti':289 'anti-pattern':288 'api':161 'architectur':52,142,370,420 'assess':6,37 'asset':459 'assets/build':462 'audit':33,184 'backend':158,451 'backend-module-v13.md':453 'base':367 'baselin':186 'bash':229 'best':26,55 'best-practices.md':426 'block':387,415 'bonus':381 'bootstrap':331 'cach':190,285 'check':11,102 'checker':44 'ci/cd':176 'class':113,234,243,252,270,282,307,352 'code':50,117,421 'coding-guidelines.md':425 'comment':182 'complianc':13 'composer-validation.md':429 'composer.json':94,111 'configur':114 'conform':3,10,43,65 'constructor':143 'context':91 'countbi':348 'coverag':170 'critic':385,414 'crowdin-integration.md':458 'cs':466 'csp':163 'csrf':162 'data':320,323,326 'data-dismiss':322 'data-rid':325 'data-toggl':319 'ddev':174,450 'default/gold':21,73 'deleg':75 'delta':225 'deploy':416 'deprec':362,365 'development-environment.md':449 'di':144 'directory-structure.md':423 'dismiss':324 'doc':80,83 'document':223 'dual-version-compatibility.md':438 'e2e':169 'echo':359 'effort':412 'emconf':297 'enterpris':86 'enterprise-readi':85 'environ':448 'es6':159 'eslint':469 'evalu':45 'event':148 'excel':380,393 'excellence-indicators.md':456 'explicit':124 'ext':296 'ext-emconf-validation.md':430 'ext-files-validation.md':431 'ext_emconf.php':93,112,295 'ext_tables.php':203,358,361 'extens':8,32,42,47,60 'extension-architecture.md':422 'f':357 'factori':155 'fallback':156 'findbi':340 'finder':206 'findi':40 'findonebi':344 'fix':38,222,400,404 'fixer':467 'float':129,314 'float-to-int':128,313 'fluid':207,334 'full':36 'generalutil':137,250,338 'get':192,287 'global':135,242,247 'good':398 'grep':227,230,240,248,258,273,279,291,303,317,335 'guidelin':372 'hashservic':204,337 'hmac':339 'hooks-and-events.md':427 'html':330 'implicit':277,312 'includ':235,244,253,271,283,308,329,353 'int':131,305,316 'issu':386 'key':105 'l':292 'level':390 'lint':472 'localization-coverage.md':457 'log':152 'loggerawar':153 'lts':18,71 'makeinst':138,251,255 'metadata':104 'minor':399 'miss':237 'modal':160 'modern':14,67 'multi':196,436 'multi-vers':195,435 'multi-version-dependency-compatibility.md':444 'must':298 'need':409 'null':269 'nullabl':125,278 'nulllogg':154 'openssf':84 'pattern':53,290 'php':122,126,236,245,254,272,275,284,309,310,354,374,465 'php-architecture.md':424 'php-cs-fixer':464 'phpstan':185,463 'phpunit':167 'playwright':168 'practic':27,56,173,378,447 'production/ter':394 'prohibit':133,246 'properti':194 'psr':120,146,150 'publish':179,452 'qualiti':9,34,61 'queri':193 'quick':226 'rang':389 're':219 're-run':218 'read':92 'readi':24,63,87,201,395 'recip':228 'rector':468 'refer':417,419 'references/v14-deprecations.md':214 'regardless':388 'releas':406 'remov':356 'report':66 'report-template.md':455 'resourc':115,328 'review':28 'ride':327 'rl':231 'rn':241,249,280,304,318,336 'rpn':259 'run':220 'runtests-validation.md':432 'runtests.sh':175 'scope':98 'score':35,64,224,366 'searchfield':188 'see':213,418 'servic':140,257 'services.yaml':145 'signific':411 'skill' 'skill-typo3-conformance' 'source-netresearch' 'space':212 'standard':12,22,51,74 'step':89,99,215 'strict':118,209,232,238,293,301 'structur':110 'stylelint':470 'tca':187 'templat':460 'ter':23,62,178 'ter-publishing.md':454 'test':76,79,166,376 'testing-standards.md':434 'toggl':321 'topic-agent-skills' 'topic-ai-agent' 'topic-claude-code-skill' 'topic-open-standard' 'topic-quality-assurance' 'topic-quality-control' 'topic-skill' 'topic-typo3' 'topic-typo3-cms' 'topic-typo3-extension' 'trigger':30 'try/catch':149 'type':97,108,119,233,239,294,302 'typo3':2,7,41,46,49,78,82,106 'typo3-conformance':1 'typo3-docs':81 'typo3-testing':77 'typoscript':471 'upload':181 'use':4,59 'v':274 'v12':439 'v12/v13/v14':16,69 'v13':164,440,442 'v13-deprecations.md':445 'v13-v14-dual-compatibility.md':441 'v14':200,355,443 'v14-deprecations.md':446 'v14.3':17,70,364 'valid':428 'verifi':217 'version':96,107,197,437 'version-requirements.md':433 'vhs':208 'w':266 'warn':360 'work':410 'workflow':88,180 'xlf':210 'xliff':189 'z':264,343,347,351 'za':263","prices":[{"id":"1d13955a-fd13-44ff-ab4a-770773aa51f6","listingId":"9ba974f7-6629-4cef-b3d4-3924941b9912","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"netresearch","category":"typo3-conformance-skill","install_from":"skills.sh"},"createdAt":"2026-05-18T13:22:58.505Z"}],"sources":[{"listingId":"9ba974f7-6629-4cef-b3d4-3924941b9912","source":"github","sourceId":"netresearch/typo3-conformance-skill/typo3-conformance","sourceUrl":"https://github.com/netresearch/typo3-conformance-skill/tree/main/skills/typo3-conformance","isPrimary":false,"firstSeenAt":"2026-05-18T13:22:58.505Z","lastSeenAt":"2026-05-18T13:22:58.505Z"}],"details":{"listingId":"9ba974f7-6629-4cef-b3d4-3924941b9912","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"netresearch","slug":"typo3-conformance","github":{"repo":"netresearch/typo3-conformance-skill","stars":6,"topics":["agent-skills","ai-agent","claude-code-skill","open-standard","quality-assurance","quality-control","skill","typo3","typo3-cms","typo3-extension"],"license":"other","html_url":"https://github.com/netresearch/typo3-conformance-skill","pushed_at":"2026-05-15T11:43:28Z","description":"Agent Skill: TYPO3 extension conformance checker - validates against official standards | Claude Code compatible","skill_md_sha":"8f3d422fbedbdcc20a477d2d42d719eb4327b640","skill_md_path":"skills/typo3-conformance/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/netresearch/typo3-conformance-skill/tree/main/skills/typo3-conformance"},"layout":"multi","source":"github","category":"typo3-conformance-skill","frontmatter":{"name":"typo3-conformance","description":"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."},"skills_sh_url":"https://skills.sh/netresearch/typo3-conformance-skill/typo3-conformance"},"updatedAt":"2026-05-18T13:22:58.505Z"}}