Purpose
AI Features are not prompt templates and not MCP tools. They are configuration surfaces for extensions that use T3AF. T3AF renders the card, drawer, AJAX save/load flow, and per-site storage. Your extension provides the card metadata, allowed settings scope, and field schema.Architecture
Settings schemaConfiguration/ExtensionSettings/schema.php points to the field definition file.
Field definitions
Configuration/ExtensionSettings/fields.typoscript defines the fields shown in the drawer.
Card provider
AiFeatureCardProviderInterface returns one or more cards for the AI Features overview.
Scope provider
ExtensionSettingsScopeProviderInterface declares which settings scopes your extension accepts.
Storage
Values are stored by T3AF in tx_nst3af_extension_setting for the selected site context.
Implementation steps
- Add
schema.phpandfields.typoscriptto your extension. - Implement
AiFeatureCardProviderInterface. - Implement
ExtensionSettingsScopeProviderInterface. - Tag both services in your extension.
- Read saved values at runtime through the T3AF settings service.
- Flush caches and verify the card in T3AF > AI Features.
Schema example
Field example
The category in# cat= must match the card’s settingsScope.
Service registration
Runtime usage
Read settings through the T3AF settings API instead of parsing extension configuration manually. The saved values are merged with schema defaults.Best practices
- Keep
settingsScopestable. - Use clear labels because editors see them in the backend drawer.
- Do not overload one card with unrelated feature groups.
- Use Feature Provider Overrides when a feature needs its own provider dropdown.
- Flush caches after changing schema or DI definitions.
Verification
- Select a site in T3AF.
- Open T3AF > AI Features.
- Confirm your card appears.
- Open the drawer and verify fields from
fields.typoscript. - Save settings and reopen the drawer.
- Confirm your runtime service reads the saved value.
Troubleshooting
Card is missing- Confirm the card provider is tagged with
t3af.ai_feature_card_provider. - Confirm
isAvailable()returnstrue. - Flush TYPO3 caches.
- Confirm the card
settingsScopeis listed by your scope provider. - Confirm the
# cat=category matches the same scope.