6.2 KiB
Codex-Anweisung: WordPress-Plugin fuer GitLab-basierte Markdown-Knowledgebase
1. Projektziel
Entwickle ein WordPress-Plugin, das technische Produktdokumentationen aus einer GitLab-Gruppe einliest, verarbeitet und innerhalb eines WordPress-basierten Kundenportals veroeffentlicht.
Die neue Dokumentationsstruktur basiert ausschliesslich auf Markdown (.md). Die alte Dokumentation wird ausserhalb dieses Plugins als statischer Legacy-Stand weitergehostet. Das Plugin importiert keine Legacy-Dateien und bildet keine Legacy-Strukturen mehr nach.
2. GitLab-Struktur
GitLab enthaelt eine Gruppe, zum Beispiel:
knowledgebase/
produkt-a/
Branch: v1.0.0
Branch: v1.1.0
produkt-b/
Branch: v2.0.0
Jedes Projekt repraesentiert ein Produkt oder Modul. Jede Branch repraesentiert eine Dokumentationsversion.
3. Pflichtstruktur pro Version-Branch
Jeder Branch muss mindestens enthalten:
doku.md
stepbystep.md
images/
Empfohlen:
doku.md
stepbystep.md
faq.md
doku.yml
images/
produktbild.png
allgemein.png
konfiguration.png
doku.md ist die Startseite der Version. stepbystep.md ist immer vorhanden und enthaelt die konkrete Einrichtung und Konfiguration. Weitere Markdown-Dateien auf Root-Ebene sind erlaubt und werden als Unterseiten importiert. README.md wird ignoriert.
4. Optionale Metadaten: doku.yml
doku.yml kann Produkttitel, Version und Navigationsreihenfolge definieren.
title: Testdoku
version: X.X.X
revision: vXXX
starface: "ab STARFACE 9.0.0.0"
date: 2025-01-01
start: doku.md
nav:
- title: Uebersicht
file: doku.md
- title: Schritt fuer Schritt
file: stepbystep.md
- title: FAQ
file: faq.md
Wenn doku.yml fehlt, nutzt das Plugin den GitLab-Projektnamen als Produkttitel, den Branchnamen als Version und erzeugt die Navigation aus den Markdown-Dateien.
5. Importlogik
Pro Synchronisation:
- Einstellungen laden.
- GitLab-Gruppe abrufen.
- Projekte abrufen.
- Branches nach Pattern filtern, Standard
^v.*. - Repository Tree pro Branch abrufen.
- Branch nur importieren, wenn
doku.mdvorhanden ist. - Warnung loggen, wenn
stepbystep.mdfehlt. - Optional
doku.ymllesen. - Root-Markdown-Dateien importieren,
README.mdignorieren. - Bilder aus
images/in die WordPress Media Library importieren. - Markdown nach HTML rendern.
- Interne
.md-Links auf WordPress-Doku-URLs umschreiben. - Bildreferenzen auf WordPress-Medien-URLs umschreiben.
- Seiten als
kb_doc_pagespeichern oder aktualisieren. - Importlog schreiben.
6. Markdown-Regeln
Unterstuetzt werden mindestens:
- Ueberschriften
#bis###### - Absaetze
- ungeordnete und geordnete Listen
- Blockquotes fuer Hinweise und Warnungen
- Code-Fences
- Inline-Code
- Fett und kursiv
- Bilder
 - Links
[Text](ziel.md)
Hinweise:
> **Hinweis:** Zusatzinformation ohne direkten Einfluss auf die Funktion.
Warnungen:
> **Warnung:** Kritischer Punkt oder Fallstrick bei der Konfiguration.
7. Link- und Bildauflösung
Interne Markdown-Links werden umgeschrieben:
[FAQ](faq.md)
wird zu:
<a href="/docs/produkt/version/faq/">FAQ</a>
doku.md und index.md verweisen auf die Versions-Startseite.
Bilder muessen relativ zum Projektroot unter images/ liegen:

Das Plugin importiert diese Dateien in die WordPress Media Library und ersetzt die Bild-URLs im HTML.
8. WordPress-Datenmodell
Das Plugin nutzt WordPress-nativ:
- Custom Post Type
kb_doc_page - Taxonomie
kb_product - Taxonomie
kb_version - optional Taxonomie
kb_component
Wichtige Metadaten:
_kb_gitlab_project_id
_kb_gitlab_project_path
_kb_gitlab_branch
_kb_gitlab_commit_sha
_kb_markdown_source_path
_kb_page_checksum
_kb_last_imported_at
_kb_nav_order
_kb_product_slug
_kb_version_slug
_kb_page_slug
_kb_nav_tree
_kb_renderer_version
9. Frontend
Standard-URL-Struktur:
/docs/
/docs/{product}/
/docs/{product}/{version}/
/docs/{product}/{version}/{page}/
Shortcodes:
[kb_docs]
[kb_docs_index]
[kb_product_index product="produkt-a"]
[kb_search]
[kb_docs] bindet die Dokumentation in eine normale WordPress-Seite ein.
10. Admin-Einstellungen
Backend-Menue:
Knowledgebase
Uebersicht
Synchronisation
Einstellungen
Einstellungen:
- GitLab Base URL
- GitLab API Token
- GitLab Group Path / ID
- Branch Pattern
- Frontend Base Slug
- Bilder mit Lightbox verlinken
- Dokumentation oeffentlich anzeigen
- SVG-Import erlauben
- Automatische Synchronisation
- Frontend-Design
- Optionale eigene
theme.css
Es gibt keine Renderer-Modus-Einstellung mehr. Markdown wird direkt im Plugin verarbeitet.
11. Sicherheit
- GitLab-Token niemals ausgeben.
- Admin-Aktionen mit Capabilities absichern.
- REST-API mit Berechtigungen schuetzen.
- Markdown-HTML sanitizen.
- Keine Shell-Aufrufe fuer Rendering.
- SVG nur erlauben, wenn die Option aktiv ist.
- Keine privaten GitLab-URLs im Frontend leaken.
- Logs ohne Secrets speichern.
12. Akzeptanzkriterien
- Plugin heisst KB Markdown Importer.
- Plugin laesst sich aktivieren.
- Admin-Menue erscheint.
- GitLab-Verbindungstest funktioniert.
- Projekt mit Branch
v...wird erkannt. - Branch mit
doku.md,stepbystep.mdundimages/wird importiert. doku.mdwird Startseite der Version.stepbystep.mdwird als Unterseite importiert.- Weitere Root-
.md-Dateien werden als Unterseiten importiert. - Bilder aus
images/werden importiert und im HTML ersetzt. - Interne
.md-Links funktionieren. /docs/zeigt die Dokumentationsuebersicht./docs/{product}/{version}/zeigt die Startseite.- Synchronisation dupliziert unveraenderte Seiten nicht.
- Importfehler werden im Backend-Log sichtbar.
13. Nicht-Ziele
- Kein Legacy-Rendering.
- Keine Legacy-Kompatibilitaet im Importpfad.
- Kein externer Render-Service.
- Kein lokaler CLI-Renderer.
- Kein Live-Rendering aus GitLab bei jedem Seitenaufruf.
- Kein Gutenberg-Editor fuer Dokumentationsquellen.
14. Beispielprojekt
Ein Beispiel fuer die neue Struktur liegt im Repository unter:
markdown-beispielprojekt/
Diese Struktur dient als Vorlage fuer neue GitLab-Dokumentationsprojekte.