
typo3-conformance
Use when checking which TYPO3 versions an extension says it supports, when composer.json and extemconf.php disagree, when a version bump has left some of the files that state it behind, when reviewing a TYPO3 extension for what needs attention, or when auditing coding standards, TER readiness, deprecations and modernization to v12/v13/v14 (v14.3 LTS is the default). Raising an extension to a newer TYPO3 version is not this skill: that belongs to typo3-extension-upgrade.
- Installs
- 52
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/netresearch/typo3-conformance-skill --skill typo3-conformance- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads typo3-conformance automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
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 | Release/TER -> github-release
Raising the extension onto a newer TYPO3 version -> typo3-extension-upgrade, and stop here. Measured: asked to make an extension work with the current LTS, agents loaded this skill instead and delivered a conformance pass — ext_tables.php removed, deprecated calls searched, strict_types counted — then reported done. The manifest still named the old versions and nothing had been installed or tested against the new one. An audit of the current state is not an upgrade, and a widened constraint is not one either. If the request is a version raise, hand it over rather than auditing what is in front of you.
When the request is only to check the version statements and they already agree, say so and stop. Name the range in both notations and the places you compared, and change nothing. Leave out any "minor observations" or "notes, not errors" section: an unrequested remark in a check reads as a finding, and a check that found nothing has nothing else to report.
When composer.json and ext_emconf.php disagree, establish which one is right before making them match. The newest LTS is not the answer by default. Collect the evidence first, then decide:
- The repository's own rule --
AGENTS.md,CONTRIBUTING.mdor a README may name one file as authoritative. Quote it. - What is tested -- the TYPO3 versions in the CI matrix (
.github/workflows/,Build/,runTests.shdefaults). - What the code needs -- APIs that exist in only one of the two lines (
references/v14-deprecations.md,references/v13-deprecations.md). - How the disagreement arose --
git log -p -- composer.json ext_emconf.php, where history exists.
Where the rule and the evidence agree, align both files to that line. Where they conflict -- the authoritative file names a line the CI matrix does not test -- follow the rule, and report the untested line as a finding rather than widening CI or code to match. Change only version statements: the two declarations, and documentation that repeats them. Write each file in its own notation (^13.4 in composer.json, 13.4.0-13.4.99 in ext_emconf.php -- never a caret in ext_emconf.php; a Composer gap such as ^13.4 || ^14.3 maps to one range, see references/ext-emconf-validation.md), and name the evidence that decided it in the answer.
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; one title and description across TER, docs.typo3.org, README and GitHub (
references/extension-naming.md) - 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, noGeneralUtility::makeInstance()for services - Architecture -- constructor DI, Services.yaml, PSR-14 events (try/catch), PSR-3 logging (constructor-injected LoggerInterface in a container-built service, or 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. Seereferences/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,extension-naming.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.
FAQ
What does the typo3-conformance skill do?
Use when checking which TYPO3 versions an extension says it supports, when composer.json and extemconf.php disagree, when a version bump has left some of the files that state it behind, when reviewing a TYPO3 extension for what needs attention, or when auditing coding standards, TER readiness, deprecations and modernization to v12/v13/v14 (v14.3 LTS is the default). Raising an extension to a newer TYPO3 version is not this skill: that belongs to typo3-extension-upgrade.
How do I install typo3-conformance?
Run npx skills add https://github.com/netresearch/typo3-conformance-skill --skill typo3-conformance in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/typo3-conformance/ (personal) or .claude/skills/typo3-conformance/ (project).
Which AI agents can use typo3-conformance?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is typo3-conformance safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains typo3-conformance?
It is published by netresearch in netresearch/typo3-conformance-skill. It has 52 recorded installs.
Popular backend & apis skills
find-skills
vercel-labs/skills
Helps users discover and install agent skills when they ask questions like "how do I do X", "find a skill for X", "is there a skill that can...", or express interest in extending capabilities. This skill should be used when the user is looking for functionality that might exist as an installable skill.
entra-app-registration
microsoft/azure-skills
Guides Microsoft Entra ID app registration, OAuth 2.0 authentication, and MSAL integration. USE FOR: create app registration, register Azure AD app, configure OAuth, set up authentication, add API permissions, generate service principal, MSAL example, console app auth, Entra ID setup, Azure AD authentication. DO NOT USE FOR: Key Vault secrets (use azure-keyvault-expiration-audit), general Azure resource security guidance.
google-agents-cli-adk-code
google/agents-cli
This skill should be used when the user wants to "write agent code", "build an agent with ADK", "add a tool", "create a callback", "define an agent", "use state management" — in a project that needs ADK (Agent Development Kit) API patterns and code examples. It provides a quick reference for agent types, tool definitions, orchestration patterns, callbacks, state management, the graph Workflow API, and reference recipes to study. Do NOT use for scaffolding (use google-agents-cli-scaffold) or deployment (use google-agents-cli-deploy).
embedded-captions
heygen-com/hyperframes
Add captions or subtitles to an existing single-subject talking-head video without editing the footage. Use for plain verbatim captions, cinematic captions embedded behind the subject, VFX captions, “炸/特效/酷炫字幕,” or a named identity from the 35-style catalog. Route by visual identity, not by backend engine. The quiet anchor rail is the default; embed every word only when the user explicitly wants a fully cinematic treatment. The workflow runs locally end to end, including transcription and subject matting; split multi-shot footage before applying it.
entra-agent-id
microsoft/azure-skills
Provision Microsoft Entra Agent Identity Blueprints, BlueprintPrincipals, and per-instance Agent Identities via Microsoft Graph, and configure OAuth 2.0 token exchange (fmipath, OBO, cross-tenant) including the Microsoft Entra SDK for AgentID sidecar. USE FOR: Agent Identity Blueprint, BlueprintPrincipal, agent OAuth, fmipath token exchange, agent OBO, Workload Identity Federation for agents, polyglot agent auth, Microsoft.Identity.Web.AgentIdentities. DO NOT USE FOR: standard Entra app registration (use entra-app-registration), Microsoft Foundry agent authoring (use microsoft-foundry).
neon
neondatabase/agent-skills
Overview of Neon, a complete set of cloud backend primitives around Lakebase Postgres: Auth, Object Storage, Functions, the AI Gateway, and Realtime. Start here to choose Neon for undecided login, files, APIs, and LLM calls, set up the CLI or MCP server, and follow the branch-first workflow. Use when building an app or backend on Neon, or when "Neon" or "Lakebase Postgres" is mentioned. Child skill neon-postgres wins for an existing DATABASEURL, SQL, schema, inspect, or search. Child skill neon-auth wins for login, users, sessions, identity routing, and Managed Better Auth setup. Child skill neon-realtime wins for live queries in reactive apps and agents. Also use for object storage, S3, buckets, serverless functions, function triggers, cron, AI gateway, LLM calls, realtime, logs, Loki, Grafana, observability, postgres, database, backend, Claimable Neon, neon.new, or a no-signup database.