Create and maintain TYPO3 extension documentation following official docs.typo3.org standards...
Create and maintain TYPO3 extension documentation per docs.typo3.org standards.
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.org and guides.typo3.org are 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.xml
Settings.cfg is the file guides.xml replaced. Nothing reads it any
more, so writing one leaves the extension with no rendered documentation
and no error to show for it.
The grep prints 1 when the namespace is right and 0 when 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.dist holds 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.
| 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 |
Official docs are canonical; on conflict the live manual wins -- report
drift (references/canonical-sources.md).
Upstream:
.. _label:) before every heading:alt:?Type/Type|null in php: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).
Cross-reference examples against source: grep method names in
Classes/, compare CLI arguments with configure().
See references/extraction-patterns.md.
:caption:, inline code uses proper roles:alt: and :zoom: lightboxscripts/validate_docs.sh passes, render has no warningsreferences/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