TYPO3 Documentation Skill
Create and maintain TYPO3 extension documentation per docs.typo3.org standards.
Core Workflow
-
No
Documentation/yet? Run this, do not type the file out. The namespace is the part that comes out wrong when it is written from memory --guides.phpdoc.organdguides.typo3.orgare both addresses nobody serves -- and a file in the wrong namespace is well-formed XML that renders nothing:mkdir -p Documentation && cat > Documentation/guides.xml <<'XML' <?xml version="1.0" encoding="UTF-8"?> <guides xmlns="https://www.phpdoc.org/guides" links-are-relative="true"> <project title="TITLE" version="MAJOR.MINOR" release="MAJOR.MINOR.PATCH"/> </guides> XML grep -Fc 'xmlns="https://www.phpdoc.org/guides"' Documentation/guides.xmlSettings.cfgis the fileguides.xmlreplaced. Nothing reads it any more, so writing one leaves the extension with no rendered documentation and no error to show for it.The
grepprints1when the namespace is right and0when it is not. Then replace TITLE and both versions.<project>carries them as attributes; an element whose text is the extension key has no title and no release.assets/guides.xml.distholds the full file -- extension element, interlinks, build configuration -- and is the better starting point wherever the skill directory is reachable. -
Run extraction first to find gaps:
scripts/extract-all.sh /path/to/extension scripts/analyze-docs.sh /path/to/extension -
Consult the matching reference
-
Use TYPO3 directives, not plain text
-
Validate:
scripts/validate_docs.sh /path/to/extension -
Render:
scripts/render_docs.sh /path/to/extension
Critical: For "show docs", render HTML, not raw RST.
Element Selection Guide
| Content Type | Directive |
|--------------|-----------|
| Complete code | literalinclude (preferred) |
| Short snippets | code-block with :caption: |
| Config options | confval with :type:, :default: |
| PHP API | php:method:: -- :returntype: for nullable/union |
| Notices | note, tip, warning, important |
| Feature grids | card-grid with footer stretched-link |
| Alternatives | tabs (synchronized) |
| Screenshots | figure with :zoom: lightbox + border/shadow classes |
Critical Rules
Official docs are canonical; on conflict the live manual wins -- report
drift (references/canonical-sources.md).
Upstream:
- UTF-8, 4-space indent (no tabs), LF; wrap at 80 chars where possible
- CamelCase files, sentence case headings
- Permalink anchors (
.. _label:) before every heading - Index.rst in every subdirectory
- PNG/AVIF images with
:alt: - PHP domain: no
?Type/Type|nullinphp:method::; use:returntype:
NR policy: no mailto: (upstream allows it; spam/PII -- use
Issues/Discussions); .editorconfig in Documentation/.
Heuristic: ~250 lines per RST, split with toctree; screenshots where
they help (backend modules, config, workflows).
Code Example Validation
Cross-reference examples against source: grep method names in
Classes/, compare CLI arguments with configure().
See references/extraction-patterns.md.
Pre-Commit Checklist
- Code blocks have
:caption:, inline code uses proper roles - Screenshots exist with
:alt:and:zoom: lightbox scripts/validate_docs.shpasses, render has no warnings- README and Documentation/ synchronized
References
references/canonical-sources.md-- topic-to-upstream map, provenance labelsreferences/file-structure.md-- layout, namingreferences/guides-xml.md-- the guides.xml skeleton, build config, interlinksreferences/coding-guidelines.md-- CGL deltas, .editorconfigreferences/rst-syntax.md-- headings, punctuation pitfallsreferences/text-roles-inline-code.md--:php:,:guilabel:,:ref:references/code-structure-elements.md-- code blocks, confval, PHP domainreferences/typo3-directives.md-- confval, versionadded, deprecatedreferences/content-directives.md-- accordion, tabs, card-gridreferences/screenshots.md-- figures, image rules, SVG diagramsreferences/rendering.md-- Docker commands, live previewreferences/intercept-deployment.md-- webhook, build triggersreferences/asset-templates-guide.md-- templates, screenshot workflowreferences/architecture-decision-records.md-- ADR patternsreferences/documentation-coverage-analysis.md-- coverage scoringreferences/scripts-guide.md-- script optionsreferences/typo3-extension-architecture.md-- extension layoutreferences/upstream-docs-contribution.md-- upstream docs PRsreferences/render-guides-development.md-- changing the renderer itself: directive options, interlink parsing, integration-fixture semantics