From typo3-skills
Create, edit, and troubleshoot TYPO3 Content Blocks from the friendsoftypo3/content-blocks extension. Covers config.yaml, templates, backend previews, icons, and CLI commands.
How this skill is triggered — by the user, by Claude, or both
Slash command
/typo3-skills:typo3-content-blocksThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Use this skill for TYPO3 projects using `friendsoftypo3/content-blocks`. The extension defines content types with a component-like folder containing `config.yaml`, optional assets, templates, and labels.
Use this skill for TYPO3 projects using friendsoftypo3/content-blocks. The extension defines content types with a component-like folder containing config.yaml, optional assets, templates, and labels.
friendsoftypo3/content-blocks is installed and whether the project uses Composer mode.ContentBlocks/ContentElements/*/config.yamlContentBlocks/PageTypes/*/config.yamlContentBlocks/RecordTypes/*/config.yamlContentBlocks/FileTypes/*/config.yamlContentBlocks/Basics/*.yamlA Content Block is auto-discovered when a loaded extension contains a folder below the correct ContentBlocks type directory and that folder contains config.yaml.
Use these canonical locations:
EXT:site_package/ContentBlocks/ContentElements/my-element/config.yaml
EXT:site_package/ContentBlocks/PageTypes/my-page-type/config.yaml
EXT:site_package/ContentBlocks/RecordTypes/my-record-type/config.yaml
EXT:site_package/ContentBlocks/FileTypes/my-file-type/config.yaml
EXT:site_package/ContentBlocks/Basics/shared-fields.yaml
Optional resources live next to config.yaml:
assets/icon.svg
assets/frontend.css
assets/frontend.js
language/labels.xlf
templates/frontend.fluid.html
templates/backend-preview.fluid.html
templates/partials/*
templates/layouts/*
Prefer the project-local generator when available because it creates the expected folder, label file, templates, and icon skeleton:
vendor/bin/typo3 make:content-block --content-type="content-element" --vendor="vendor-name" --name="my-element" --title="My Element" --extension="site_package"
Use content-element, page-type, or record-type for --content-type. Page types require an integer --type-name.
After creating or changing fields, run the project equivalent of:
vendor/bin/typo3 cache:flush -g system
vendor/bin/typo3 extension:setup --extension=site_package
vendor/bin/typo3 content-blocks:lint
If the project has wrappers such as ddev, composer, bin/typo3, Build/Scripts, or Makefile targets, use those instead of hard-coding the bare command.
config.yaml as YAML. Avoid regex edits for structured changes.name, group, basics, prefixFields, prefixType, typeName, labelField, and fallbackLabelFields.useExistingField: true, commonly for fields such as header or bodytext; do not reuse system fields casually.identifier values within the Content Block.language/labels.xlf for editor-visible labels and descriptions.templates/frontend.fluid.html and templates/backend-preview.fluid.html when the editor preview needs to mirror frontend content.Start with the observable symptom, then narrow the layer:
config.yaml filename, valid name, extension dependency on Content Blocks, and backend user group permissions for generated CType/fields.vendor/bin/typo3 content-blocks:lint; use the reported JSON pointer path to find the invalid field or root option.{data.fieldIdentifier} for processed properties and {data.rawRecord.field_name} for raw database values.Collection, Select, Relation, File, Folder, Category, and FlexForm fields are resolved automatically in Content Block templates.assets/, published assets, and cb:assetPath() usage in Fluid.language/labels.xlf; for places where Content Blocks cannot centralize labels, use a TCA override for a default column label.Inside frontend.fluid.html and backend-preview.fluid.html, use the Content Blocks data object:
{data.header}
{data.my_text_field}
{data.rawRecord.vendor_field_name}
<f:for each="{data.items}" as="item">{item.title}</f:for>
Use Content Block ViewHelpers for local assets and labels:
<f:asset.css identifier="myElementCss" href="{cb:assetPath()}/frontend.css" />
<f:asset.script identifier="myElementJs" src="{cb:assetPath()}/frontend.js" />
<f:translate key="{cb:languagePath()}:header" />
Read references/content-blocks-patterns.md when you need concrete examples, docs links, validation details, or a troubleshooting checklist.
npx claudepluginhub starraider/typo3-skillsGuides modeling TYPO3 Content Blocks (config.yaml) for content elements, record types, page types, and file types. Use when creating, migrating, or debugging Content Blocks and friendsoftypo3/content-blocks behavior.
Provides battle-tested TYPO3 Fluid template patterns for v12+ site packages, covering template hierarchy, CMS-first content architecture, responsive images, and WCAG 2.1 AA accessibility.
Designs content type hierarchies, reusable parts, and field compositions for headless CMS using Type > Part > Field pattern. Covers composition vs inheritance and multi-channel reusability.