Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01At3V6SjwbMe6eMzVGW3Hs7
10 KiB
Etappe 2b – Manuelle Abnahme (Divi schreiben)
Vorbereitet von Task 10 (Hinweise, Guides, Version 0.3.0, Ende-zu-Ende-Test). Automatisch geprüft sind bereits:
- alle Unit-Tests (
composer test) und Lint (composer lint); - die fünf Integrationsskripte
divi-write-smoke.sh,divi-read-smoke.sh,mcp-smoke.sh,wp-basis-smoke.shundmedia-admin-smoke.sh(alle intests/Integration/).
divi-write-smoke.sh prüft über den OAuth-Endpunkt:
- Einfügen, Ändern, Verschieben, Löschen und Duplizieren;
- Ersetzen mit Probelauf;
lit-content-createmit Divi-Inhalt;- den ersten Abschnitt auf einer leeren Seite;
- einen Redakteur ohne
unfiltered_html: unberührte Bytes bleiben gleich, und es wird weder Skript, Event-Handler,javascript:noch ein eingeschleustes Attribut gespeichert oder gerendert; - Divis eigene Speicherfilter (Seite mit eigenen HTML-Attributen);
- keine Wege am Divi-Pfad vorbei: Rohtext-
contentmit Divi-Markup wird abgelehnt, und bei Divi „nur lesen“ lehntlit-content-creatediviab undlit/divi-insertist auch übermcp-adapter-execute-abilitynicht erreichbar.
Details stehen im Report von Task 10 (.superpowers/sdd/2026-09-26-etappe-2b-divi-schreiben/task-10-report.md).
Die folgenden Punkte lassen sich nicht automatisch prüfen, weil sie den echten Divi Visual Builder und den claude.ai-Connector brauchen. Jan-Niclas prüft sie selbst (Spec §1.3 Nr. 2, §13 „Bearbeitbarkeit im Visual Builder“). Abweichungen als kurze Notiz zurückmelden; sie werden Folgeaufgaben (z. B. anders gespeicherte Spaltenbreiten, D8).
Vorbereitung: Testdaten des Probelaufs entfernen
Der Probelauf „Tischlerei Holzwerk Berger“ (trial-feedback.md) hat Daten auf der DDEV-Seite hinterlassen.
Vor der Abnahme von Hand zurücksetzen, sonst laufen §1–§3 auf einer veränderten Seite und das Testmenü
ist live. Nicht automatisch gelöscht – bitte selbst prüfen und ausführen
(cd /home/janniclas/Projekte/WordPress && ddev wp …):
- Website-Titel und Untertitel zurücksetzen:
ddev wp option update blogname "Breva Map Dev"undddev wp option update blogdescription ""(vorher leer). - Die „[Test]“-Entwürfe löschen: Seiten 831, 834, 837, 839 und Beiträge 854, 856, 858
(vorher mit
ddev wp post list --post_type=page,post --post_status=draft --fields=ID,post_titleprüfen, dass es genau diese sind), dannddev wp post delete 831 834 837 839 854 856 858 --force. - Das Menü „[Test] Hauptmenü“ (ID 22) aus der Position
primary-menunehmen und löschen:ddev wp menu location remove 22 primary-menuundddev wp menu delete 22; falls vorher ein anderes Menü dort zugewiesen war, dieses wieder zuweisen (ddev wp menu location assign <id> primary-menu). - Die Platzhalter-Medien 828, 829, 830 löschen:
ddev wp post delete 828 829 830 --force(vorher in der Mediathek prüfen, dass sie nirgends mehr verwendet werden). - Optional: Einträge des Probelaufs im Protokoll-Tab über „Protokoll leeren“ entfernen.
0. Verbindung, Zugriff, Tools- und Protokoll-Tab
- Discovery ohne Weiterleitung (Fix DiscoveryCanonical,
bb85868):curl -si https://wordpress.ddev.site:8443/.well-known/oauth-protected-resource | head -1undcurl -si https://wordpress.ddev.site:8443/.well-known/oauth-authorization-server | head -1antworten beide mit200(kein301auf eine URL mit Schrägstrich) und JSON. - Den Connector in claude.ai neu verbinden (Einstellungen → Connectors → LIT MCP → Verbinden): Login, Zustimmung, danach sind die Tools in einer neuen Unterhaltung sichtbar.
- Mit einem Konto verbinden, dessen Rolle unter Zugriff nicht freigegeben ist (z. B. ein Abonnent): die Autorisierung bricht mit „Dein Benutzer hat keinen Zugriff auf LIT MCP.“ ab; es entsteht keine Verbindung (kein Anwendungspasswort im Profil).
- Einstellungen → LIT MCP → Zugriff: die Spalte „Zuletzt genutzt“ zeigt für die eben genutzte Verbindung ein Datum (Aktualisierung höchstens einmal am Tag).
- Tools-Tab: je Gruppe Modus und „nur lesen“; die Warnung zur Zahl direkter Tools erscheint erst, wenn mehr als 25 Tools direkt sichtbar sind (z. B. testweise eine Gruppe auf „direkt“ stellen, danach zurücksetzen).
- Protokoll-Tab: Liste wie die WordPress-Listen (Filter nach Tool, Benutzer und Ergebnis links über der Tabelle, Blättern, „Einträge pro Seite“ in den Ansichtsoptionen oben rechts); Links zu Bearbeiten/Revision je Eintrag.
1. Visual Builder: von Claude gebaute Seite
- Dieser Auftrag in claude.ai:
„Lege eine Entwurfsseite ‚Abnahme Divi‘ an mit Hero (Überschrift, Text, Button mit Preset), einer
Zeile 1/3 + 2/3 mit Bild und Blurb, einem Akkordeon und einem Kontaktformular.“
Erwartet:
- Claude liest vorher
lit-divi-design-systemundlit-divi-catalog; - dannlit-content-createmitdivi(oder eine leere Seite pluslit-divi-insert); - die Antwort nenntpreview_urlundedit_url(beidivider Link in den Visual Builder,…&et_fb=1). - Die Seite im Divi Visual Builder öffnen (
edit_url) und prüfen:- Alle Module erscheinen als native Module, nicht als Code-Modul.
- Die Admin-Labels folgen dem Muster „ – “, z. B. „Hero – Button“.
- Jedes Modul lässt sich anklicken, ändern und speichern, ohne Fehlermeldung des Builders.
- Die Spaltenbreiten stimmen (1/3 + 2/3), auch in der Spalteneinstellung des Builders.
- Farben aus
{{color:…}}sind als globale Farbe verknüpft: der Farbwähler zeigt die globale Farbe, nicht einen festen Hex-Wert. - Das Button-Preset ist im Builder als Preset ausgewählt.
- Akkordeon-Einträge und Kontaktformular-Felder sind einzeln bearbeitbar.
- Eine zweite Seite nur mit
lit-divi-insertaufbauen lassen: leere Seite anlegen, dann „Füge einen Abschnitt ‚Start‘ mit Überschrift und Text ein“. Im Builder öffnen: der Abschnitt erscheint normal und ist bearbeitbar (Ruling S9: Hülledivi/placeholderwie beim Builder).
2. Visual Builder: von Claude geänderte Seite
- Eine bestehende, im Builder gebaute Seite kopieren (
lit/post-duplicate) und an der Kopie per claude.ai einen Button-Text ändern, ein Modul verschieben und einen Abschnitt duplizieren lassen. - Die Kopie im Builder öffnen und prüfen:
- Alle unveränderten Module sehen aus wie vorher (Einstellungen, Presets, globale Farben).
- Die geänderten Module sind bearbeitbar, und die Änderung ist sichtbar.
- Die Kopie eines Abschnitts heißt „ (Kopie)“.
3. Zurück zu Claude nach einer Builder-Änderung
- Die Seite aus Schritt 1 im Builder ändern und speichern.
- Danach per claude.ai eine weitere Änderung verlangen. Erwartet:
rev_mismatcherscheint nur, wenn Claude eine altetree_revbenutzt.- Nach erneutem Lesen (
lit-divi-outline) gelingt die Änderung. - Die im Builder gemachten Einstellungen bleiben erhalten.
4. Rückgängig
- Einen Abschnitt löschen lassen. Claude fragt nach (
confirm_required) und löscht erst nach der Bestätigung. - Den Abschnitt über
lit/revision-restoremit der gemeldetenrevision_idzurückholen und im Builder prüfen, dass er wieder vollständig da ist.
5. Text auf mehreren Seiten ersetzen
- „Ersetze auf allen Seiten ‚Termin‘ durch ‚Beratungstermin‘“. Erwartet:
- Claude zeigt erst den Probelauf (Treffer je Seite) und fragt nach.
- Erst danach ersetzt es.
- Im Protokoll-Tab (Einstellungen → LIT MCP → Protokoll) steht je geänderter Seite ein Eintrag mit eigener Revision.
- Liegt ein Treffer in einem globalen Modul, ändert Claude ihn nicht, sondern nennt ihn
(
skipped_nodes, „in der Divi-Bibliothek bearbeiten“).
6. Redakteur ohne unfiltered_html
- Mit einem Redakteurs-Konto verbinden; unter Einstellungen → LIT MCP → Zugriff muss die Rolle freigegeben sein.
- Auf einer Seite eines Administrators einen Text ändern lassen.
- Die Seite im Builder öffnen. Erwartet:
- Eingebettete Inhalte des Administrators (z. B. iframe, eigenes HTML im Code-Modul) sind unverändert.
- Die Änderung des Redakteurs ist da.
- Den Redakteur eigenes HTML/CSS/Attribute eines Moduls setzen lassen, z. B. „füge dem Button das HTML-Attribut data-x hinzu“. Erwartet: Ablehnung mit „nur im Divi-Builder änderbar“.
7. Tool-Gruppen und „nur lesen“
- Unter Einstellungen → LIT MCP → Tools die Gruppe Divi auf „nur lesen“ stellen.
- Neu verbinden. Die Divi-Schreibwerkzeuge (
lit-divi-insertusw.) fehlen; die Lesewerkzeuge sind noch da. - „Lege eine Entwurfsseite ‚Nur lesen‘ mit einem Abschnitt und einer Überschrift an“:
lit-content-createmitdivi→unsupportedmit Hinweis auf den Tools-Tab; ohnedivi(einfacher Entwurf) gelingt das Anlegen weiterhin. Dasselbe gilt, wenn nurlit-divi-insertdeaktiviert oder die Gruppe Divi ganz deaktiviert ist. lit-content-createbzw.lit-content-updatemit Divi-Markup im Feldcontent(<!-- wp:divi/section -->…) →validation_failedmit Hinweis aufdivibzw. die lit-divi-*-Tools (unabhängig von „nur lesen“).- Hinweis:
lit/post-duplicate,lit/post-replace-with-copyundlit/revision-restoregehören zur Gruppe WordPress und kopieren bzw. stellen gespeicherte Divi-Inhalte auch bei Divi „nur lesen“ her; sie schreiben keine neuen Divi-Werte vom Client. - Die Einstellung zurücksetzen.
8. Builder-Fixtures aus 2a (falls noch offen; Ruling S20)
- Seiten mit globalem Modul, Preset, Variablen und Dynamic Content exportieren:
tests/Integration/divi-export-page.php(Anleitung in2026-09-26-etappe-2a-abnahme.md§1).composer testbleibt grün. - Auf einer Kopie einer solchen Seite
lit-divi-updatean einem normalen Modul ausführen. Das globale Modul bleibt byte-identisch: Export vorher und nachher vergleichen. - Hat die Seite Module mit eigenen HTML-Attributen oder einem eigenen HTML-Element (Erweitert → Attribute/HTML), meldet die Antwort evtl. „Inhalt beim Speichern verändert“. Das ist dokumentiert (Ruling S7: Divi normalisiert solche Seiten selbst). Prüfen, dass die Seite im Builder danach einwandfrei ist.