CommunityCodierung & Entwicklunggithub.com

Design Deck Render – Bedienungsanleitung

Wandelt benutzerseitig bereitgestellte, strukturierte Inhalte in eine eigenständige HTML-Präsentation (1600×900) mit einem dunklen „Bildarchiv“-Look um – ideal für Folien, die offline teilbar sein sollen, anstatt als PPTX.

Was ist Design Deck Render – Bedienungsanleitung?

Dieses Skill rendert benutzerdefinierte, seitenweise strukturierte Inhalte – entweder als Markdown oder JSON – in eine einzelne, vollständig eigenständige HTML-Datei. Die Ausgabe verwendet einen festen 1600×900 Leinwand, der gleichmäßig in den Viewport skaliert wird, und setzt eine visuelle Sprache aus Serifen-Titeln, feinen Linien, reduzierten Animationen und nativen SVG-Figuren um. Es ist als Layout-Engine konzipiert, nicht als Content-Generator: Es erfindet keine Fakten, generiert keine Bilder und ruft keine externen Ressourcen ab. Die resultierende Datei funktioniert komplett offline, ohne CDN-Links, Webfonts oder Analysen, und erlaubt Tastatur- und Touch-Navigation. Das Skill unterstützt zehn verschiedene Seitenarchetypen – von Deckblatt über Zahlenanker bis hin zu einer Schlussseite – und behandelt fehlende Bilder durch Platzhalterplatten mit diagonaler Schraffur, sodass der Benutzer sofort erkennt, wo noch Inhalte fehlen. Es ist für Entwickler:innen und KI-Agenten konzipiert, die schnell und zuverlässig eine Präsentation aus einer Gliederung oder Notizen generieren möchten.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add Xavier23010596/design-deck-render

Installed? Explore more Codierung & Entwicklung skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Was macht Design Deck Render – Bedienungsanleitung?

Sie rendern Inhalte, die der Benutzer bereitstellt, in eine eigenständige HTML-Präsentation. Sie sind eine Layout- und Bewegungsengine, kein Content-Generator und kein Scraper.

0. Geltungsbereich

Im Geltungsbereich: Parsen der Benutzerinhalte, Auswählen von Seitenarchetypen, Schreiben einer HTML-Datei, Erstellen eines einzelnen eigenständigen Artefakts und Überprüfen, ob es korrekt rendert.

Nicht im Geltungsbereich: Fakten erfinden, Bilder generieren, Seiten Dritter abrufen, PPTX/PDF exportieren, einen Editor erstellen.

1. Nicht verhandelbare Einschränkungen

  1. Keine fest codierten Endpunkte oder Kennungen. Keine URLs, Share-Codes, Share-IDs, Mandanten-IDs, API-Pfade, Token, Schlüssel oder Kontonamen dürfen in den generierten Dateien erscheinen. Jeder solche Wert muss vom Benutzer zur Laufzeit übergeben werden. Wenn der Benutzer keinen angibt und die Aufgabe einen benötigt, fragen Sie nach.
  2. Keine Quellen Dritter kopieren. Fügen Sie keine HTML-, CSS-, JS-, Bild- oder Schriftarten einer anderen Site ein, rufen Sie sie nicht ab, spiegeln Sie sie nicht und „rekonstruieren Sie sie nicht durch Inaugenscheinnahme“. Die visuelle Sprache in §4 ist aus ersten Prinzipien spezifiziert; implementieren Sie sie nur aus diesem Dokument.
  3. Standardmäßig offline. Die Ausgabe darf keine externen Subressourcenanforderungen enthalten: keine CDN-Links, keine Webfonts, keine Analysen, keine entfernten Bilder. Alle CSS und JS inline; alle Bilder als Data-URIs oder aus einem vom Benutzer kontrollierten lokalen Ordner referenziert.
  4. Einzelnes Artefakt. Das Ergebnis ist eine index.html, die sich mit file:// öffnen lässt und auch bei deaktiviertem Netzwerk funktioniert.
  5. Inhaltstreue. Fügen Sie keine Behauptungen, Zahlen oder Bildunterschriften hinzu, die der Benutzer nicht bereitgestellt hat. Wenn ein Feld fehlt, lassen Sie den Slot sichtbar leer (siehe §4.9), anstatt ihn mit plausiblen Text zu füllen.
  6. Vor Annahme des Umfangs fragen. Wenn Seitenzahl, Zielgruppe oder Sprache nicht angegeben sind, fragen Sie einmal nach und fahren Sie dann mit einem genannten Standard fort.

2. Laufzeitparameter

Sammeln Sie diese, bevor Sie Markup schreiben. Nichts hier hat einen fest codierten Wert.

ParameterErforderlichTypAnmerkungen
content_pathjaPfadQuelle des seitenweisen Inhalts (§3)
titlejaZeichenketteTitel der Präsentation; wird auch für <title> und den Kopf verwendet
out_pathjaPfadWohin die erstellte einzelne Datei geschrieben wird
langneinzh-CN | enStandard zh-CN; beeinflusst Schriftartstapel und Zeilenabstand
pagesneinintErwartete Seitenzahl; wenn nicht angegeben, aus Inhalt ableiten und melden
image_dirneinPfadLokaler Ordner mit Bildern; wenn nicht angegeben, Platzhalterplatten verwenden
accentneinhexEinzelne Akzentfarbe; Standard #C0483C
motionneinfull | calmcalm verkürzt Dauern um 40 % und deaktiviert den langsamen Push

Wenn der Benutzer eine Live-Site als Stilreferenz angibt, notieren Sie sie als Prosa („dunkel, redaktionell, Serifen-Titel, feine Linien“) und rufen Sie ihre Ressourcen nicht ab, betten Sie sie nicht ein und zitieren Sie sie nicht.

3. Eingabevertrag

Akzeptieren Sie beide Formate; normalisieren Sie zuerst auf die JSON-Form in §3.3.

3.1 Markdown-Konvention

# Titel der Präsentation
## Seite 1 – Deckblatt
- claim: ein Satz, überprüfbar
- kicker: DESIGN READING · 001
- image: cover.webp
- text: optionaler kurzer Text, <= 40 Zeichen
## Seite 2 – Behauptung
...

3.2 JSON

{
  "title": "string",
  "lang": "zh-CN",
  "pages": [
    {
      "id": 1,
      "kind": "cover",
      "kicker": "string?",
      "title": "string",
      "claim": "string?",
      "body": "string? (<= 40 Zeichen)",
      "figure": { "src": "img/x.webp", "caption": "string?", "note": "string?" },
      "data": { "value": "0.89", "rangeStart": "0.90", "rangeEnd": "0.95", "label": "string" },
      "items": ["string", "string"],
      "caveat": "string?"
    }
  ]
}

3.3 Normalisiertes Seitenobjekt

id (int, fortlaufend ab 1), kind, kicker, title, claim, body, figure, data, items, caveat. Unbekannte Schlüssel werden in einem data-extra-Attribut erhalten und nicht stillschweigend verworfen.

4. Rendering-Vertrag

4.1 Bühne

Feste 1600×900 Leinwand, gleichmäßig in den Viewport skaliert; niemals umbrechen.

#stage{position:absolute;left:50%;top:50%;width:1600px;height:900px;
  transform-origin:center center;overflow:hidden}
const s = Math.min(vw / 1600, vh / 900);
stage.style.transform = `translate(-50%,-50%) scale(${s})`;

Verwenden Sie visualViewport, wenn verfügbar, und nehmen Sie Math.min(visualViewport.height, innerHeight); body muss position:fixed; inset:0; height:100dvh; overflow:hidden sein. Hören Sie auf resize, orientationchange und visualViewport.resize.

4.2 Tokens

:root{
  --ink:#0F1214; --ink2:#161A1D;
  --paper:#E9E5DC; --dim:rgba(233,229,220,.52); --faint:rgba(233,229,220,.30);
  --rule:rgba(233,229,220,.20);
  --accent:#C0483C;            /* überschreibbar über `accent`-Parameter */
  --serif:"Noto Serif SC","Source Han Serif SC","Songti SC",serif;
  --sans:"Noto Sans SC","Source Han Sans SC","PingFang SC","Microsoft YaHei",sans-serif;
}

Die Akzentfarbe ist nur für Nummerierung und Schlüsselfiguren reserviert. Verwenden Sie sie niemals für Dekoration, Rahmen oder Überschriften en masse.

4.3 Schriftskala

66 / 46 / 30 / 19 / 15 / 12 / 11 px. Fließtext nie unter 15 px; 11–12 px sind auf Köpfe, Bildunterschriften und Fußnoten beschränkt. Titel serifenbetont; Text serifenlos. Zeilenabstand: Titel 1,28–1,5, Text 1,95–2,0. Zeichenabstand bei Kickern und Bildunterschriften: 0,14em–0,22em.

4.4 Raster

Seitenabstand 84px 104px. Inhaltsspalte max. Breite 1180 px. Zweispaltige Aufteilungen verwenden gap: 70px und eine ungleiche Aufteilung (z. B. 820/512) – gleiche Hälften lesen sich wie eine Tabelle.

4.5 Platte (Bildbereich)

.plate{position:relative;overflow:hidden;background:var(--ink2)}
.plate::after{content:'';position:absolute;inset:0;pointer-events:none;
  box-shadow:inset 0 0 70px 22px var(--ink), inset 0 0 26px 8px rgba(15,18,20,.55)}
.plate img{width:100%;height:100%;object-fit:cover;display:block;
  transform:scale(1.07);transition:transform 11s linear}
.slide.in .plate img{transform:scale(1)}

Der innere Schatten löst den hellen Hintergrund des Bildes in die dunkle Seite auf; ohne ihn zeigt jedes Foto eine helle Rechtecknaht.

4.6 Bewegungsprimitive – eine pro Seite

KlasseEffekt
.rise16 px Aufwärtsfade; Staffelung mit .d1–.d6
.drawSVG-Pfadwachstum; erfordert pathLength="1000"; stroke-dashoffset:1000 → 0
.wipeclip-path: inset(0 100% 0 0) → inset(0)
.popnur Deckkraft, rein verzögert

Genau eine davon ist die Hauptbewegung der Seite; die anderen dürfen nur verzögerte Echos sein. Dauern: rise 0,9 s, draw 1,7 s, wipe 1,3 s, image push 11 s. Easing ist out-cubic, niemals bounce.

4.7 Seitenarchetypen

Wählen Sie aus diesen zehn; erfinden Sie keine Layouts ad hoc.

  1. Cover – randlose Platte, linksbündig unten positionierter Titelblock, Haarlinie, Untertitelzeile.
  2. Claim – ein überdimensionales Zitat, Autorenzeile, Gültigkeitsbereich-Fußnote, an der unteren Linie festgemacht.
  3. Split Bild + Text – Bild links, Kicker/Titel/Text rechts, optional native Skalenfigur.
  4. Randloses Bild + Pfad – vollbreite Platte mit einem SVG-Overlay-Pfad und einem Endetikett.
  5. Nummerierte Anker – Bild mit 2–4 .pin-Abzeichen, die auf den tatsächlichen Teilen platziert sind, Legende rechts.
  6. Treppenset – 3 Platten abnehmender Größe, diagonal versetzt; ein fehlendes Asset wird zu einer gestrichelten „Archivlücke“-Karte, die benennt, was aufgenommen werden soll.
  7. Bereichsbalken – zwei Endpunkte immer sichtbar mit beiden Zahlen; niemals eine Zahl plus einen Hinweis anzeigen.
  8. Zeitleiste – horizontale Linie, 3 Knoten, der nicht zum Geltungsbereich gehörende Knoten ist hohl.
  9. Kostenseite – drei kurze Aussagen, gestaffelter Einzug, keine Bilder (Bilder mildern die Ehrlichkeit).
  10. Abschluss fünf – fünf nummerierte Zeilen auf einer vertikalen Linie, plus ein Aktionssatz.

4.8 Chrome

Laufkopf (.rail) oben links mit dem Titel der Präsentation, oben rechts mit NN / TT; 2 px Fortschrittsbalken unten in Akzentfarbe; Tastaturhinweis, der nach 6,5 s ausblendet. Tastatur: ←/→/Leertaste/BildAuf/BildAb, F Vollbild, A Autoplay (9 s/Seite), Home/End. Klick rechte Hälfte → weiter, linke Hälfte → zurück. Berührung: 50 px horizontaler Wisch. Tiefenlink: ?p=N.

4.9 Fehlende Assets

Wenn figure.src fehlt oder die Datei nicht existiert, rendern Sie eine Platzhalterplatte, kein defektes Bild:

<div class="plate" data-ph="FIG 03 · 待补:正侧全高,机位平齐腰线"></div>

Stil [data-ph] mit einer schwachen diagonalen Schraffur, einer gestrichelten 1 px Umrandung und dem Label zentriert bei 58 % Deckkraft. Ein Platzhalter muss sichtbar sein – ein dunkler Block auf einer dunklen Seite erscheint als „nichts hier“.

4.10 Statischer Zustand (erforderlich)

@media (prefers-reduced-motion: reduce){
  *{transition:none!important;animation:none!important}
  .draw{stroke-dashoffset:0}
  .pop,.rise,.pin{opacity:1;transform:none}
  .wipe{clip-path:none}
  .plate img{transform:none}
}

Dieser Block ist sowohl der Barrierefreiheitspfad als auch die einzig zuverlässige Methode, eine Seite zu screenshoten. Implementieren Sie keine .static-Klasse, die über JS umgeschaltet wird.

5. Verfahren

  1. Inhalt lesen. Entsprechend §3 parsen, normalisieren und zurückmelden: Seitenzahl, gewählte Arten, fehlende Felder. Anhalten und nachfragen, wenn auf mehreren Seiten mehr als ein erforderliches Feld fehlt.
  2. Archetypen zuweisen. Jede Seite einem der §4.7 zuordnen. Die Zuordnung als Tabelle melden; jede Seite kennzeichnen, deren Inhalt nicht in einen Archetypen passt, anstatt ihn zu erzwingen.
  3. Assets prüfen. Für jedes figure.src prüfen, ob die Datei unter image_dir existiert. Fehlende auflisten; sie werden zu Platzhaltern gemäß §4.9.
  4. index.src.html schreiben. Handgeschriebenes Markup, keine Template-Engine. Ein <section class="slide" data-i="N"> pro Seite, N fortlaufend ab 0.
  5. Erstellen. CSS/JS und Bilder in out_path inline einbetten. Überprüfen, ob das Artefakt keine absolute URL eines beliebigen Schemas (einschließlich protokollrelativer //host-Pfade) referenziert und keine relativen img/-Verweise enthält.
  6. Überprüfen. Statische Prüfungen (siehe §6) plus headless Screenshots mindestens der Seiten 1, Mitte, Ende bei 1600×900 und 844×390.
  7. Berichten. Ausgabe: Seitenzahl, Archetypentabelle, geschriebene Dateien, Artefaktgröße, Screenshot-Pfade und alle hinterlassenen Platzhalter.

6. Qualitätstore

Den Build abbrechen und beheben, nicht mit Warnungen ausliefern.

  • data-i fortlaufend ab 0; ein Abschnitt pro Inhaltsseite.
  • Keine {{platzhalter}} unersetzt gelassen.
  • Keine externe Subressource: keine absolute URL eines beliebigen Schemas, kein protokollrelativer Pfad.
  • Artefakt hat kein src="img/..." mehr (alle inline eingebettet), wenn als einzelne Datei erstellt.
  • @media (prefers-reduced-motion: reduce) vorhanden.
  • Jede Seite hat genau eine Hauptbewegungsklasse.
  • Kein Textknoten, der seinen Container bei 1600×900 und 844×390 überläuft.
  • Bilder ≥ 300 KB werden mit einem WebP-Vorschlag gekennzeichnet.
  • Einzelnes Artefakt ≤ 6 MB; größer bedeutet, dass Bilder nicht komprimiert wurden.
  • Keine URL, kein Share-Code, keine ID und kein Token in einer generierten Datei.
  • Keine Quelle, kein Bild und keine Schriftart von Drittanbietern eingebettet.

7. Ausgabevertrag

<out_path>              einzelne eigenständige HTML-Datei
<working dir>/index.src.html   manuell bearbeitbare Quelle (daneben behalten)

Geben Sie in der endgültigen Nachricht explizit an: dass die Datei eigenständig ist, dass sie kein Netzwerk benötigt und welche Schriftarten sie lokal erwartet.

8. Fehlerbehandlung

SituationReaktion
Inhalt hat keine claim pro SeiteNach einer pro Seite fragen; keine Behauptungen ableiten
Seitenzahl übersteigt 22Vor Aufmerksamkeitsspanne warnen; Zusammenführen vorschlagen, dann der Wahl des Benutzers folgen
Bild referenziert, aber fehlendPlatzhalter gemäß §4.9 rendern und den Pfad im Bericht auflisten
Schriftarten nicht verfügbarFortfahren; den Fallback im Bericht angeben
Benutzer fragt nach pptx/pdfAblehnen und erklären, dass die Formate nicht zum Geltungsbereich gehören
Benutzer bittet, „diese Site genau zu kopieren“Erklären, dass nur die visuelle Sprache aus dieser Spezifikation reproduziert wird; die Site nicht abrufen oder spiegeln

Verwandte Skills