From 4a9502150ce1cc134e8c5615f08b9108f8abb614 Mon Sep 17 00:00:00 2001 From: Kai Moritz Date: Tue, 16 Jun 2026 18:19:47 +0000 Subject: [PATCH] Add CLAUDE.md documenting skin architecture and import scripts Covers site.vm behavior, sili-json structure, page types, body extraction, and both import scripts with their target-system specifics. Co-Authored-By: Claude Sonnet 4.6 --- CLAUDE.md | 141 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 141 insertions(+) create mode 100644 CLAUDE.md diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..753baa0 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,141 @@ +# CLAUDE.md + +Diese Datei enthält Anweisungen für Claude Code (claude.ai/code) beim Arbeiten mit diesem Repository. + +## Arbeitsregeln + +- Ab und zu bin ich ungenau oder bringe Details durcheinander. Wenn du den Eindruck hast, dass etwas nicht passt oder Details fehlen, frage immer direkt nach. +- Für alle Aufgaben gilt: du kannst und sollst Nachfragen stellen, bevor du mit der Umsetzung beginnst, wenn das sinnvoll ist. + +## Commits + +- Erstelle nach dem Abschluss einer Aufgabe jeweils einen Commit — direkt, ohne vorher nachzufragen. +- Fasse in der Commit-Nachricht zusammen, was und warum geändert wurde. + +--- + +## Zweck + +`maven-sili-skin` ist eine Maven-Doxia-Skin, die Maven-Site-Output für den Import in statische Website-Generatoren aufbereitet. Die Skin erzeugt HTML-Seiten mit eingebettetem JSON-Metadaten-Block, den die Import-Skripte auslesen. + +## Funktionsweise: `site.vm` + +Das Velocity-Template `src/main/resources/META-INF/maven/site.vm` ist das Herzstück der Skin. Es rendert jede Maven-Seite so: + +```html +

Seitentitel

+
+ $bodyContent +
+``` + +**Nur für `index.html`** wird zusätzlich ein JSON-Metadaten-Block angehängt: + +```html + +``` + +### JSON-Struktur: `pages`-Array + +Das `pages`-Array enthält alle Seiten der Maven-Site in der Reihenfolge, in der sie im Menü auftauchen. Die Position im Array dient als `weight` für die Nav-Sortierung. + +Jeder Eintrag: + +```json +{ + "name": "Project Reports", + "href": "project-reports.html", + "childs": ["plugin-info.html"], + "crumbs": [], + "path": "" +} +``` + +- `href`: Dateiname relativ zum Site-Root (z.B. `project-reports.html`, bei Verzeichnissen z.B. `apidocs/index.html`) +- `childs`: direkte Kinder im Menübaum (nur deren `href`-Werte) +- `crumbs`: Vorfahren von der Wurzel aus (ohne `index.html`), z.B. `["project-reports.html"]` +- `path`: Vorfahren als Verzeichnispfad — `crumbs` mit `.html` → `/` substituiert, z.B. `"project-reports/"` oder `"project-reports/plugin-info/"` + +### Seitentypen im Maven-Output + +| Typ | Beispiel | Erkennung | +|---|---|---| +| Root | `index.html` | `href == "index.html"` | +| Section-Node (hat Kinder) | `project-reports.html` | `childs.length > 0` | +| Blatt-Seite | `configuration.html` | `childs.length == 0` | +| Generierter Content | `apidocs/`, `xref/` etc. | Verzeichnis, nicht HTML-Datei | + +Generierter Content (JavaDocs, Xref etc.) erscheint als Unterverzeichnis im Maven-Site-Output und hat einen Eintrag in `pages` mit `href` wie `apidocs/index.html`. + +### Extraktion des Body-Inhalts + +Aus den HTML-Dateien wird der Body so extrahiert: + +```bash +sed -n '/