Files
WP-LIT-MCP/docs/superpowers/notes/2026-09-27-etappe-3a-abnahme.md

8.7 KiB
Raw Permalink Blame History

Etappe 3a – Manuelle Abnahme (Divi-Bibliothek)

Automatisch geprüft sind bereits:

  • alle Unit-Tests (composer test) und Lint (composer lint);
  • divi-library-smoke.sh (neu) und die fünf bisherigen Integrationsskripte divi-write-smoke.sh, divi-read-smoke.sh, mcp-smoke.sh, wp-basis-smoke.sh und media-admin-smoke.sh (alle in tests/Integration/).

divi-library-smoke.sh prüft über den OAuth-Endpunkt, nur mit temporären Daten, die es danach wieder löscht:

  • Werkzeugliste: lit-library-insert direkt, lit/library-list, lit/library-save, lit/divi-node-copy und lit/divi-dynamic-sources indirekt, insgesamt 22 direkte Tools;
  • Speichern als normaler und als globaler Eintrag: Inhalt byte-gleich mit Divis eigenen Einträgen, dieselben Begriffe (scope, layout_type, module_width) und Divi-Metadaten, keine Divi-Kennzeichen, Quellseite unverändert; lit/library-list zeigt beide Einträge;
  • Einfügen als globale Instanz und als Kopie: Bytes wie beim Visual Builder, keine Windows-Zeilenumbrüche;
  • globale Änderung: Probelauf mit confirm_required und den betroffenen Seiten, confirm ändert den Eintrag mit Revision, die Bytes der Seiten bleiben gleich (sie verweisen nur auf den Eintrag);
  • ein Redakteur, der eine private Seite mit der Instanz nicht bearbeiten darf: Probelauf mit blocked_ids, Bestätigung abgelehnt (forbidden), nichts gespeichert;
  • Knoten kopieren zwischen Seiten, auch die Ablehnung einer veralteten source_tree_rev;
  • {{link:ID}} im Button: gespeichert als Divis „Seite Link“ (post_link_url_page), ein Entwurf als Ziel erscheint nur als ?page_id=…; in Textfeldern abgelehnt;
  • ein Redakteur ohne unfiltered_html: Interaktionen, Lottie-Quelle und eigenes HTML werden von lit/library-save, lit-library-insert (Kopie) und lit/divi-node-copy abgelehnt, harmlose Knoten gehen;
  • Gruppe „Divi-Bibliothek“ deaktiviert: Bibliothekseinträge sind in den Divi-Lesetools not_found, die Bibliothekstools verschwinden;
  • lit-guide mit Thema „all“, lit-site-status ohne Befunde bei Divi, lit/divi-dynamic-sources für Seiten.

Die folgenden Punkte brauchen den echten Visual Builder bzw. einen verbundenen KI-Assistenten. Abweichungen als kurze Notiz zurückmelden; sie werden Folgeaufgaben.

Vorbereitung

  • DDEV läuft, Divi 5.2.1 ist aktiv, LIT MCP zeigt Version 0.4.0 (Plugins-Seite).
  • Unter Einstellungen → LIT MCP → Tools stehen die Gruppen „Divi“ und „Divi-Bibliothek“ auf ihrem Standard (nicht „nur lesen“, nicht deaktiviert).
  • Den KI-Assistenten neu verbinden, damit er die neuen Tools und Hinweise lädt. In einer neuen Unterhaltung ist lit-library-insert sichtbar.
  • Nach einem Lauf von divi-library-smoke.sh ist nichts übrig: unter Seiten → Alle Seiten und unter Divi → Divi-Bibliothek nach „LIT Smoke“ suchen (jeweils auch im Papierkorb) – keine Treffer.
  • Zwei Entwurfsseiten mit dem Divi Builder anlegen, z. B. „Abnahme 3a – Seite A“ und „Abnahme 3a – Seite B“, jede mit mindestens einem Abschnitt, einer Zeile und einem Textmodul. Die „[Fixture]“- und „[Test]“-Inhalte nicht verwenden und nicht ändern.

1. Vom Plugin angelegte Bibliothekseinträge im Visual Builder

  • Den KI-Assistenten bitten, einen Abschnitt von Seite A als normalen Eintrag und ein Textmodul von Seite A als globalen Eintrag in der Divi-Bibliothek zu speichern (Titel mit „Abnahme 3a“).
  • Divi → Divi-Bibliothek öffnen: beide Einträge erscheinen mit dem richtigen Typ (Abschnitt bzw. Modul), der Modul-Eintrag ist als global gekennzeichnet.
  • Beide Einträge in der Bibliothek mit dem Visual Builder öffnen: der Inhalt stimmt mit dem Knoten auf Seite A überein, der Builder meldet keine Fehler.
  • Seite A im Visual Builder öffnen: sie ist unverändert (Speichern in die Bibliothek ändert die Quelle nicht).
  • Im Visual Builder von Seite B „Aus Bibliothek hinzufügen“: beide Einträge sind auswählbar und lassen sich einfügen. Danach die Seite ohne Speichern verlassen.

2. Vom Plugin eingefügte globale Instanz und Kopie

  • Den KI-Assistenten bitten, den globalen Eintrag mit lit-library-insert in Seite B einzufügen (als Instanz) und den normalen Eintrag als Kopie.
  • Seite B im Visual Builder öffnen: das Modul ist als global markiert (Divis Kennzeichnung für globale Module) und zeigt den Inhalt aus der Bibliothek; der kopierte Abschnitt ist nicht global.
  • Die Kopie im Builder ändern und speichern: der Bibliothekseintrag und Seite A bleiben unverändert.
  • Das globale Modul im Builder ändern und speichern: die Änderung erscheint im Bibliothekseintrag und überall, wo die Instanz steht.
  • Vorschau von Seite B: der Inhalt des globalen Moduls wird angezeigt.
  • Hinweis: lit-page-render-summary zeigt globale Module nicht (über die Schnittstelle rendert Divi sie nicht) und nennt sie unter notes; das ist erwartet.

3. Globales Modul über den KI-Assistenten ändern (Probelauf und Bestätigung)

  • Den KI-Assistenten bitten, den Text des globalen Moduls zu ändern. Er muss zuerst den Probelauf zeigen: welche Seiten betroffen sind (hier mindestens Seite B), und nachfragen, bevor er etwas speichert.
  • Nach der Nachfrage ablehnen: der Eintrag bleibt unverändert (in der Divi-Bibliothek prüfen).
  • Erneut bitten und zustimmen: der Assistent speichert mit Bestätigung (confirm).
  • Vorschau aller betroffenen Seiten zeigt den neuen Text; die Seiten selbst wurden nicht neu gespeichert (unter „Revisionen“ der Seite B keine neue Revision).
  • Beim Bibliothekseintrag ist unter „Revisionen“ der Stand vor der Änderung sichtbar.
  • Unter Einstellungen → LIT MCP → Protokoll steht die Änderung des Eintrags.
  • Den Eintrag im Visual Builder öffnen: er lässt sich weiter bearbeiten und speichern.

4. Knoten zwischen Seiten kopieren

  • Den KI-Assistenten bitten, einen Abschnitt von Seite A mit lit/divi-node-copy auf Seite B zu kopieren.
  • Seite B im Builder öffnen, den kopierten Abschnitt ändern und speichern: Seite A bleibt unverändert.
  • Den KI-Assistenten bitten, auf Seite B einen Button mit {{link:<ID von Seite A>}} einzufügen.
  • Im Builder zeigt das Link-Feld des Buttons dynamischen Inhalt „Seite Link“ mit Seite A.
  • Solange Seite A ein Entwurf ist, verlinkt der Button in der Vorschau auf ?page_id=<ID>.
  • Seite A veröffentlichen: der Button verlinkt auf die schöne Adresse. Danach Seite A wieder als Entwurf speichern.

6. Rechte und die Gruppe „Divi-Bibliothek“

  • Einstellungen → LIT MCP → Tools: die Gruppe „Divi-Bibliothek“ ist sichtbar, mit lit-library-insert, lit/library-list und lit/library-save.
  • Gruppe auf „nur lesen“: nach neuer Verbindung fehlt lit-library-insert in der Werkzeugliste; Bibliothekseinträge lassen sich lesen (lit-divi-outline), Änderungen daran werden abgelehnt, und lit/divi-node-copy mit einem Bibliothekseintrag als Quelle wird ebenfalls abgelehnt. Hinweis: Steht dagegen die Gruppe „Divi“ auf „nur lesen“, bleibt lit-library-insert in der Liste, lehnt aber jedes Einfügen ab (unsupported, „Divi-Änderungen sind … abgeschaltet“) – das ist so gewollt, kein Fehler.
  • Gruppe deaktivieren: nach neuer Verbindung fehlen die Bibliothekstools; eine Bibliotheks-ID gilt in lit-divi-outline als nicht vorhanden. Seiten lassen sich weiter lesen und bearbeiten.
  • Die Gruppe wieder auf ihren Standard stellen und neu verbinden.
  • Optional mit einem Redakteurs-Konto: unter Einstellungen → LIT MCP → Zugriff die Rolle „Redakteur“ freigeben. Im KI-Assistenten die Verbindung trennen und neu verbinden; bei der Anmeldung (OAuth) mit dem Redakteurs-Konto einloggen – am einfachsten in einem privaten Browserfenster, in dem niemand bei WordPress angemeldet ist. Dann in Divi → Rollen-Editor für „Redakteur“ „Globale Bibliothekselemente bearbeiten“ abschalten und den Assistenten ein globales Modul ändern lassen: Ablehnung mit Hinweis auf den Rollen-Editor. Danach das Recht wieder einschalten, die Freigabe der Rolle zurücknehmen und den Assistenten wieder als Administrator verbinden.
  • lit-site-status: bei Divi keine Einträge unter problems.

Aufräumen

  • Die Einträge „Abnahme 3a …“ in der Divi-Bibliothek und die Seiten A und B löschen (auch aus dem Papierkorb).
  • Divi legt fehlende Systembegriffe (scope, layout_type, module_width) beim nächsten Speichern selbst an; sie nicht von Hand löschen.
  • Optional: die Einträge der Abnahme im Protokoll-Tab über „Protokoll leeren“ entfernen.