XP-Content-Vertrag 1.0.0

Offizieller Inhaltsvertrag für eigene Anwendungen, die in XP-Fenstern dargestellt werden. Gilt für HTML-Programme und MCP-Apps; fremde Apps verwenden ihren eigenen Stil, bis sie ausdrücklich teilnehmen. Er ersetzt weder ci-xp-ui/v1 noch MCP Apps.

Öffentliche Referenz: https://mcp-lab.christian-igel.tech/documentation/contracts/xp-content/v1/

Version und Einbindung

Datei xp-content-1.0.0.css, Root .xp-content[data-xp-content-version="1"]. Eine veröffentlichte Dateiversion wird nicht verändert. Fehlerkorrekturen erhalten eine neue Patchversion; inkompatible Semantik einen neuen Major und Rootwert. Keine Netzwerkfonts, Skripte oder Fremdressourcen im Stylesheet.

Eigene MCP-Apps kopieren die Datei beim Build in ein <style>-Element ihres vollständig gebündelten text/html;profile=mcp-app-Dokuments. HTML-Programme dürfen die gepinnte Datei relativ aus ihrem eigenen Release laden. Kein Laufzeit-Hotlink auf die Doku, kein Themezugriff durch Iframes und kein Umschreiben fremder HTML.

Klassen

Klasse Bedeutung und semantisches Element
xp-content expliziter Inhaltsbereich, main oder umschließendes div
xp-card zusammengehöriger Abschnitt, section/article mit Überschrift
xp-note ergänzender Hinweis; keine geheimen oder wesentlichen versteckten Informationen
xp-prose mehrzeiliger Text mit Zeilenumbruch und begrenzter Lesebreite
xp-stack vertikaler Inhaltsfluss
xp-grid automatisch umbrechende Inhaltsgruppen
xp-form semantisches form; Validierung bleibt App-Verantwortung
xp-field label mit zugeordnetem Eingabefeld
xp-actions umbrechende Aktionsgruppe mit nativen Buttons
xp-list echte ul/ol; keine Dateinavigation oder ARIA-Rolle allein durch CSS
xp-statusbar App-Status im Inhalt, bei Aktualisierung role="status"; keine Hoststatusleiste
xp-error visuelle Fehlerbetonung; zusätzlich verständlicher Fehlertext

xp-tree, xp-root, Explorerpfade, Dateioperationen, Berechtigungen, Rootauswahl, Titelleiste, Minimieren, Schließen und Fensternavigation sind kein Bestandteil. Allgemeine Semantik stammt aus program-standard.css, components.css und desktop.css; die alten globalen Selektoren und das Explorer-Raster wurden nicht übernommen.

Beispiel

<main class="xp-content xp-stack" data-xp-content-version="1">
  <h1>Aufgaben</h1>
  <section class="xp-card"><h2>Beschreibung</h2>
    <p class="xp-prose">Freigegebene Aufgaben lesen.</p>
  </section>
  <label class="xp-field">Suche<input type="search"></label>
  <p class="xp-statusbar" role="status">Bereit</p>
</main>

Die App baut keine zweite XP-Titelleiste. Das vollständige Beispiel steht in example.html und funktioniert ohne MCP und ohne private Daten.

Barrierearme und mobile Regeln

Native Überschriften, Labels, Listen, Buttons und Linktexte verwenden. Fokus bleibt sichtbar, Status nie ausschließlich farblich kennzeichnen. Inhalt ab 320 CSS-Pixeln und bei 200 Prozent Zoom ohne abgeschnittene Bedienung prüfen. Steuerflächen sind mindestens 44 Pixel hoch. Raster brechen nach verfügbarer Iframebreite um. Reduzierte Bewegung und Windows-Kontrastmodus werden berücksichtigt. Dynamische Fehler entfernen veraltete private Daten; Tastaturbedienung und Lesereihenfolge gehören zur App-Abnahme. CSS allein garantiert keine Barrierefreiheit.

data-xp-theme="dark" ist ein ausdrücklich von der App gesetztes Theme. Hosttheme kommt über den normalen MCP-Hostkontext; die App entscheidet über die Anwendung. Keine Kopie beliebiger Host-CSS-Variablen, kein Zugriff auf Parent-DOM oder Cookies.

MCP-Metadaten und Host

Opt-in am Ressourceninhalt, außerhalb der Standard-ui-Policy:

{"_meta":{"tech.christian-igel/xp-content":{"version":"1.0.0"},"ui":{"csp":{"connectDomains":[],"resourceDomains":[]}}}}

Der Host validiert die genaue Version. Nur bei diesem Opt-in liefert er im hostContext["tech.christian-igel/xp-content"] Version, Darstellungsfähigkeiten cards, notes, prose, forms, lists, status, responsive, light, dark, chrome:"host" und stylesheet:"bundled-by-app". Dieser namespaced Zusatz nutzt die ausdrücklich erlaubten zusätzlichen HostContext-Felder des gepinnten MCP Apps SDK 2.0.0. Die Kennzeichnung „XP-Content 1.0.0 · deklariert“ bestätigt Versionskompatibilität, keine Identität, Sicherheitszertifizierung oder erfolgreiche CSS-Prüfung. Unbekannte Versionen ergeben spezifischen App-Fallback, Funktionen bleiben verfügbar. Fremde Apps ohne Opt-in erhalten keine XP-Kennzeichnung und keine XP-Metadaten.

Ressourcen-CSP und Permissions bleiben unverändert und unabhängig vom CSS-Vertrag. Der gegenwärtige XP-Sandboxhost erlaubt ausschließlich gebündelte Inhalte ohne Fremdnetz oder Geräteberechtigungen. Nicht leere Domainlisten und unbekannte Policyfelder werden mit Feld und begrenztem Wert benannt. Die Karten-App verlangt aktuell in connectDomains und resourceDomains die drei Werte https://*.openstreetmap.org, https://cesium.com, https://*.cesium.com. Kein permissions-Objekt ist deklariert. Insbesondere Wildcardfreigaben werden nicht still in exakte Origins umgedeutet. Für Darstellung fehlen eine endliche, geprüfte Originliste sowie ein browsergeprüfter CSP-/Worker-Vertrag. Keine automatischen Toolaufrufe oder fremde Inhalte zum Ermitteln weiterer Rechte.

Build, Test und Veröffentlichung

Stylesheetversion und Hash im App-Release festhalten. Ressourcen-MIME, Metadaten, Bundling und keine externen Importe prüfen. Hosttests müssen fehlendes Opt-in, falsche Version, Policyfelder, fremde Origins und Geräteanfragen abdecken. Browserprüfung: 320/390/1280 Pixel, Tastatur, Theme, App/Funktionen, zwei Fenster, Resize, Schließen, Fehler und verspätete Antworten. Authentifizierung, effektive Rolle und Programmfreigabe separat prüfen; WP-Lab bleibt dafür die Autorität.

Veröffentlichung als neues Artefakt mit SHA-256-Manifest; Auswahl atomar, vorheriges Release als Rückweg erhalten. Keine aktiven Dateien ändern. Ein HTTP 200, ein Build oder CSS-Opt-in ist keine OAuth-/Browserabnahme.

Wiederverwendbarer Skill

xp-mcp-content-contract ist lokal unter ~/.codex/skills/ und auf wpmcp00 unter ~/.agents/skills/ installiert. Die öffentliche Kopie SKILL.md enthält dieselben Anwendungs- und Sicherheitsregeln, ohne Credentials.

Referenzen