CommunityCodierung & Entwicklunggithub.com

kevin8656/claude-skill-preview

Verwandle Pläne, Vorschläge, Entwürfe oder Endfassungen in eine HTML-Vorschau mit auswählbaren Kommentaren und ankreuzbaren Checklisten, die im Standard-Browser geöffnet wird. Erklärungsinhalte werden vor der Generierung in klare, bildhafte Sprache umgeschrieben.

Was ist claude-skill-preview?

Dieses Skill für Claude Code (und ähnliche KI-Agenten) generiert aus Markdown-Dokumenten interaktive HTML-Ansichten, die speziell für Reviewer und Kunden entwickelt wurden. Es ermöglicht das **Auswählen und Kommentieren von beliebigem Text** (wie in Google Docs) sowie das **Ankreuzen von Checklisten**. Der Fokus liegt auf einer klaren, visuellen Aufbereitung: Es bietet vorgefertigte Bausteine wie Vergleichstabellen, Zeitleisten, Architekturdiagramme, Schrittabfolgen, Zahlenkarten und Entscheidungsboxen, die über eine einfache Kurzsyntax im Markdown definiert werden. Das Skill wandelt erklärende Inhalte automatisch in eine verständliche, redundanzfreie und bildreiche Darstellung um („Erst umschreiben, dann generieren“). Es unterstützt mehrere Plattformen (macOS, Windows, Linux) und benötigt nur Python 3.9+ ohne zusätzliche Abhängigkeiten. Das Ergebnis ist eine einzelne HTML-Datei mit eingebetteten Schriftarten und einem Overlay, das nach dem Auswählen von Text ein Kommentarformular öffnet. Kommentare und Ankreuzungen werden im Browser gespeichert und können per Knopfdruck als Markdown exportiert werden. Das Skill kann auch bereits vorhandene HTML-Seiten mit der Kommentarfunktion nachrüsten.

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/kevin8656/claude-skill-preview/tree/HEAD/preview

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.

Vorschau

Aus dem Skill-README

Beschreibung

Dokumentation

Vorschau: HTML-Seite mit auswählbaren Kommentaren

Verwandle jeden Plan, Vorschlag, Entwurf oder jede Endfassung in ein HTML-Dokument, in dem man „Text auswählen → Kommentar hinterlassen“ kann, und öffne es auf dem Computer des Nutzers (oder seines Kunden) zur Überprüfung. Nach dem Ansehen kann der Nutzer auf „Alle kopieren“ klicken – Kommentare und Ankreuzungen werden als Markdown ausgegeben, das zurück in den Chat eingefügt werden kann, um die Änderungen nachzuvollziehen.

Wo befindet sich dieses Skill

Das Verzeichnis, in dem diese Datei liegt, ist das Skill-Verzeichnis (im Folgenden als $SKILL_DIR bezeichnet). Setze es vor jeder Ausführung:

SKILL_DIR="${CLAUDE_SKILL_DIR:-$HOME/.claude/skills/preview}"
[ -f "$SKILL_DIR/scripts/md-to-preview.py" ] || SKILL_DIR="$(cd "$(dirname "$(find "$HOME/.claude/skills" .claude/skills -path '*/preview/scripts/md-to-preview.py' 2>/dev/null | head -1)")/.." && pwd)"
echo "$SKILL_DIR"
  • Es wird nur Python 3.9 oder höher benötigt – ausschließlich die Standardbibliothek, keine Installation über pip nötig.
  • Auf macOS wird python3 verwendet; falls unter Windows der Befehl python3 nicht existiert, nutze python oder py.
  • Falls das Skill-Verzeichnis nicht gefunden wird, stoppe und teile dem Nutzer mit, dass der preview-Ordner unter ~/.claude/skills/ abgelegt sein muss. Erstelle keine eigene Kommentarfunktion.
DateiZweck
scripts/md-to-preview.pyHaupt-Generator: wandelt Markdown in eine Vorschauseite um
scripts/convert/inject.pyFügt einem bereits formatierten HTML die Kommentarfunktion hinzu
scripts/convert/visuals.py, flow.py, tables.pyVisuelle Komponenten, Flussdiagramme und Tabellenkonvertierung (werden vom Generator automatisch aufgerufen)
assets/preview-comment-overlay.htmlOverlay für auswählbare Kommentare
assets/preview-tokens.cssFarben, Schriftarten, Abstände; zum Anpassen des Aussehens hier ändern
assets/fonts/Mitgelieferte Schriftarten: Noto Sans TC, Geist, Geist Mono (SIL OFL-Lizenz)
assets/example.mdVollständiges Beispiel: ein fiktiver Angebotsvorschlag, der alle Komponenten zeigt

Regel 1: Kommentare sind immer „auswählbar“

Wenn der Nutzer sagt „Kommentar hinzufügen“ oder „Version mit Kommentaren“, ist damit immer gemeint: Text auswählen → Kommentar hinterlassen – wie in Google Docs. Es geht nicht um ein Eingabefeld neben jedem Absatz. Die Kommentaroberfläche dieses Skills ist genau diese Auswähl-Funktion – verwende sie direkt, baue nichts Eigenes.

Regel 2: Erst umschreiben, dann generieren

Seitenart bestimmen

ArtBeispieleVorgehen
ErklärendPläne, Vorschläge, Berichte, Vergleiche, EntscheidungsseitenNach der untenstehenden Schreibweise umschreiben und dann generieren – nicht den Arbeitsentwurf direkt in den Generator geben
Original-ReviewVerträge, endgültige Texte, Transkripte, KundentexteAm Inhalt kein Wort ändern, mit --no-lint generieren; höchstens ein > [!Fazit] am Anfang einfügen, das erklärt, worum es auf dieser Seite geht

Schreibweise für erklärende Texte

  1. Auf der ersten Seite alles Wesentliche: Ganz oben mit > [!Fazit] einen Satz zum Ergebnis, dann > [!Deine Entscheidung] mit den Aufgaben für den Leser. Hintergrundinformationen kommen später – der Leser kann entscheiden, ohne zu scrollen.
  2. Jede Information nur einmal: Was im Fazit-Kasten steht, wird im Fließtext nicht wiederholt. Was in einer Grafik oder Tabelle gezeigt wird, wird nicht zusätzlich als Absatz beschrieben. Kein „Zusammenfassung“-Abschnitt.
  3. Einfache Sprache: Verwende die alltäglichen Wörter des Lesers. Fachbegriffe beim ersten Mal mit einem Vergleich erklären oder mit > [!Einfach gesagt] eine Erläuterung einfügen.
  4. Zeichnen statt schreiben: Frage zuerst „Welche Beziehung beschreibt dieser Abschnitt?“, dann wähle die Komponente aus der Tabelle. Reiner Text maximal drei Zeilen pro Absatz; jeder ##-Abschnitt enthält mindestens eine grafische Komponente oder Tabelle.
  5. Kurz: Ein Satz, ein Punkt. Streiche Formulierungen wie „mit anderen Worten“, „das heißt“, „bemerkenswert ist“.
  6. Gestrichen wird nur Wiederholung, nicht Information: Zahlen, Daten, Namen, Konsequenzen – nichts davon darf fehlen oder verändert werden.

Schnellübersicht grafischer Komponenten

Schreibe ein paar Zeilen in Kurzsyntax, der Generator zeichnet die Grafik. Trenner mit vollbreitem Pfeil |, Pfeil →. Vollständige Beispiele in assets/example.md.

Beschreibt …KomponenteSyntax
Alt vs. Neu, Vorher vs. NachherVergleich```Vergleich: erste Zeile Vorher → Nachher, dann jede Zeile Punkt|Alt → Neu
Systemaufbau, DatenflussArchitektur```Architektur: eine Zeile pro Ebene Ebene|Kasten, Kasten; innerhalb der Ebene: A → B; zwischen Ebenen: ↓ Beschreibung
Was wann passiertZeitleiste```Zeitleiste: jede Zeile Zeit|Titel|Beschreibung; ✅ für erledigt, 👉 für aktuell
Reihenfolge, Schritte, KausalketteSchritte```Schritte: jede Zeile Titel|Beschreibung, automatisch nummeriert; bis zu 4 Schritte horizontal, ab 5 vertikal
Wichtige ZahlenZahlen```Zahlen: jede Zeile Zahl Einheit|Label|Anmerkung; ein Leerzeichen zwischen Zahl und Einheit wandelt die Einheit in kleinere Schrift
Alternativen, Rollen, parallele EinträgeKarten```Karten (auch Optionen, Aufteilung): jede Zeile Titel|Zeile|Zeile; ★ markiert die empfohlene Option
Mehrspaltiger VergleichTabelleStandard-Markdown-Tabelle. Wenn die Kopfzeile gleichzeitig „Vorher/Alt“ und „Nachher/Neu/Vorschlag“ enthält, wird die alte Spalte automatisch grau, die neue hellgrün
Verzweigte AbläufeFlusskartenASCII- oder mermaid-Flussdiagramme (graph/flowchart mit TD, LR); falls die Umwandlung nicht gelingt, bleibt das Original erhalten
Fazit, Entscheidung, Hinweis, RisikoHervorhebungskasten> [!Fazit] Titel, ab nächster Zeile > Inhalt. Verfügbare Typen: Fazit, Deine Entscheidung, Hinweis, Risiko, Erledigt, Einfach gesagt, Erklärung
StatusFarbmarkierungInline {grün:Erledigt} {gelb:Wartet auf dich} {rot:Blockiert} {blau:In Bearbeitung} {grau:Nicht gemacht}
Schlüsselwörter in einem SatzHervorhebung==Schlüsselwort==, maximal eine Stelle pro Absatz
  • Farben haben feste Bedeutung: Blau = Fazit und Information, Grün = Erledigt und Nachher, Gelb = Hinweis und Warten, Rot = Risiko und Blockiert. „Deine Entscheidung“ kommt nur einmal pro Seite vor.
  • Syntaxfehler brechen die Seite nicht – es wird nur als grauer Codeblock angezeigt. Prüfe nach der Generierung, ob eine Grafik als grauer Block erscheint.
  • Bei zeitlicher oder kausaler Abfolge: Schritte oder Zeitleiste. Wenn die Punkte unabhängig sind: Karten.
  • Der Text in Grafiken ist echter Text und kann ebenfalls ausgewählt und kommentiert werden.

Seiten-Check

Bei der Generierung wird automatisch ein „Seiten-Check“ ausgegeben: fehlender Fazit-Kasten am Anfang, zu lange reine Textabschnitte, zu wenige grafische Komponenten, Füllwörter, Gedankenstriche, doppelte Informationen usw. Bei Aufforderung die Markdown-Datei korrigieren und neu generieren, bis „Seiten-Check: Bestanden“ erscheint. Bei Original-Review-Seiten --no-lint verwenden.

Ressourcen sparen

  • Grafiken immer in Kurzsyntax, kein handgeschriebenes HTML oder SVG, keine externen Bilder.
  • Inhalte durch Bearbeiten der Markdown-Datei und erneutes Generieren ändern, nicht direkt im ausgegebenen HTML.
  • Sehr lange Listen mit --fold "3" einklappen.

Regel 3: Immer den Generator verwenden

  • Vorschauseiten immer mit scripts/md-to-preview.py (Markdown-Quelle) oder scripts/convert/inject.py (bereits formatiertes HTML) generieren – kein eigenes CSS schreiben, keine eigene Kommentarfunktion bauen.
  • Für Aussehen-Änderungen assets/preview-tokens.css bearbeiten und den Generator neu ausführen.

Ablauf

Schritt 1: Quelle und Identität festlegen

Aus dem Chat ableiten, wenn nicht möglich nachfragen:

  • Was soll in die Vorschau? (gerade geschriebener Inhalt, Datei vom Nutzer)
  • Wer wird kommentieren? Standard-Identitäten: ich,Gast. Für Kunden z. B. Kunde,ich (erste ist die Standard-Identität).

Bei Inhalten aus dem Chat: zuerst als .md-Datei speichern, im aktuellen Arbeitsverzeichnis des Nutzers (falls nicht vorhanden, im Ordner Vorschau auf dem Desktop). Dateiname auf Deutsch und beschreibend, z. B. Vorschlag-Beispielkunde.md.

Schritt 2: Seite generieren

Quelle ist Markdown (häufigster Fall):

python3 "$SKILL_DIR/scripts/md-to-preview.py" "<Quelle>.md" "<Ausgabe>.html" \
  --identities "ich,Gast" --badges "Entwurf,2026-10-19"
ParameterWirkung
--identitiesListe der Identitäten, durch Komma getrennt; erste ist Standard
--badgesGraue kleine Labels unter dem Titel, durch Komma getrennt; ohne Angabe keine Anzeige
--keyName, unter dem Kommentare im Browser gespeichert werden; pro Seite eindeutig; ohne Angabe wird der Ausgabedateiname verwendet
--titleDokumenttitel; ohne Angabe wird der erste #-Titel aus der Markdown-Datei verwendet
--fold "3,4"Überschriften der angegebenen Ebenen als aufklappbare Abschnitte darstellen – für lange Seiten
--no-lintKein Seiten-Check (für Verträge, Endfassungen usw.)
--no-overlaySaubere Version ohne Kommentarfunktion
--iconZeichen oder Emoji im Tab-Symbol; ohne Angabe wird das erste Zeichen des Titels verwendet
--fonts copy/link/noneSchriftarten-Verarbeitung; Standard ist copy

Schriftarten: Standardmäßig wird neben dem ausgegebenen HTML ein Ordner preview-fonts/ erstellt. 🚨 Wenn die Seite an jemand anderen weitergegeben wird: HTML und preview-fonts/-Ordner zusammen packen. Nur das HTML zu verschicken führt zu Systemschriften (funktioniert noch, sieht aber schlechter aus).

Bilder: Eine einzelne ![Beschreibung](img/datei.jpg)-Zeile in der Markdown-Datei wird zu einer Abbildung mit Bildunterschrift; der Pfad ist relativ zum ausgegebenen HTML.

Quelle ist bereits formatiertes HTML (z. B. selbst erstellte Angebotsseite): Layout bleibt erhalten, nur Kommentarfunktion wird hinzugefügt.

python3 "$SKILL_DIR/scripts/convert/inject.py" "<Seite>.html" -o "<Seite>-mit-Kommentaren.html" --identities "ich,Kunde"
  • -o muss ein neuer Dateiname sein; das Tool überschreibt nicht die Quelle.
  • Wenn die Seite bereits eine Kommentarfunktion hat und durch eine neue ersetzt werden soll: --replace verwenden.

Schritt 3: Für den Nutzer öffnen

Mit dem Standard-Browser des Systems öffnen:

# macOS
open "<Ausgabe>.html"
# Windows (Claude-Terminal ist Git Bash → `start`; PowerShell → `Start-Process "<Ausgabe>.html"`)
start "" "<Ausgabe>.html"
# Linux
xdg-open "<Ausgabe>.html"

Dem Nutzer drei Dinge mitteilen:

  1. Beliebigen Text auswählen – es erscheint „Neuer Kommentar“.
  2. Kästchen können direkt angeklickt werden.
  3. Nach dem Durchsehen oben rechts auf „Alle kopieren“ klicken und den Inhalt zurück in den Chat einfügen.

Schritt 4 (optional): Für Kunden kommentierbar machen

  • HTML und den dazugehörigen preview-fonts/-Ordner als ZIP packen und an den Kunden senden. Er soll die ZIP entpacken und die HTML-Datei doppelklicken.
  • Identität auf die Rolle des Kunden setzen, z. B. --identities "Kunde,ich".
  • Kommentare werden im Browser des Kunden gespeichert und nicht automatisch synchronisiert. Bitte den Kunden, nach dem Durchsehen „Alle kopieren“ zu klicken und den Text per E-Mail oder Nachricht zurückzusenden.

Ankreuz-Bestätigung

Wenn der Nutzer aus einer Liste von Punkten einzeln entscheiden muss und die Optionen feststehen, erstelle eine Ankreuz-Liste – der Nutzer soll nicht tippen müssen. Beispiele: welche Funktionen umgesetzt werden sollen, welche Materialien ausgewählt werden, Checkliste vor dem Go-Live. Bei nur einer oder zwei Optionen oder wenn eine Begründung nötig ist, reicht direktes Fragen oder die auswählbaren Kommentare.

Wie schreiben

In der Markdown-Datei als Checkliste notieren, der Generator wandelt sie in anklickbare Kästchen um:

### Unbedingt umsetzen

- [x] Bestellformular (Kunde füllt aus, landet automatisch in der DB)
- [ ] Schichtkalender (jeder Mitarbeiter sieht nur seine Schichten)
  • - [ ] = nicht angekreuzt, - [x] = standardmäßig angekreuzt.
  • Jede Gruppe unter einer eigenen Überschrift (## oder ###): Beim Export wird nach „der nächstgelegenen vorherigen Überschrift“ gruppiert.
  • Jeder Punkt muss einen Namen und eine kurze Erklärung enthalten, sodass er allein verständlich ist – nicht nur „ja“/„nein“.
  • Unter derselben Überschrift dürfen keine zwei identischen Optionstexte stehen.

Was auf der Nutzerseite passiert

  • Der Ankreuz-Status bleibt im Browser erhalten, auch nach einem Neuladen. „Zurücksetzen“ löscht nur Kommentare, nicht die Ankreuzungen.
  • Nach Klick auf „Alle kopieren“ wird vorangestellt:
## Ankreuz-Ergebnis (angekreuzt: 2/5)

### Umfangsklärung › Unbedingt umsetzen
- [x] Bestellformular (Kunde füllt aus, landet automatisch in der DB)
- [ ] Schichtkalender (jeder Mitarbeiter sieht nur seine Schichten)

Beim Erhalt von Ankreuz-Ergebnissen

  1. Das Ankreuz-Ergebnis unverändert als Datei speichern und danach genau danach arbeiten – nicht aus dem Gedächtnis neu tippen.
  2. Nicht angekreuzte Punkte werden nicht umgesetzt oder bleiben wie gehabt – keine eigene Entscheidung treffen.
  3. Wenn in derselben Gruppe widersprüchliche Optionen angekreuzt wurden, beim Nutzer nachfragen.
  4. Wenn externe Aktionen betroffen sind (E-Mail versenden, Dateien löschen, Go-Live), erst die endgültige Liste präsentieren und warten, bis der Nutzer sagt „Mach es“.

Umgang mit eingegangenen „Kommentar-Zusammenfassungen“

Wenn der Nutzer „Alle kopieren“ drückt und den Inhalt zurückschickt, enthält dieser: den ausgewählten Originaltext (Zitat), die Position (Abschnittsüberschrift), den Kontext und den Kommentar.

Einzeln interpretieren

Aussehen des KommentarsInterpretation
Nur ein neuer Text, kein VerbErsetzen: Zitat durch Kommentartext ersetzen
„Löschen“, „Entfernen“Zitierten Abschnitt löschen (nur den Bereich des Zitats)
„Hinzufügen“, „Ergänzen“, „darunter ein weiterer“Neu: In der Nähe des Zitats Inhalte einfügen
Beschreibend („Könnte man …?“, „Ich wünschte …“)Entsprechend der Anforderung ändern
Vage, mehrere Interpretationen möglichDie minimalinvasive Änderung wählen und bei der Rückmeldung klar angeben, welche Variante gewählt wurde
  • Zuerst mit „Position“ und „Kontext“ die richtige Stelle im Dokument finden. Wenn derselbe Text mehrmals vorkommt, den Kontext nutzen, um sicherzustellen, dass nur eine Stelle geändert wird.
  • Kommentare aus derselben Runde können sich mit denen der vorherigen Runde überschneiden – zuerst prüfen, welche bereits umgesetzt wurden.

Anwenden, neu generieren, erneut öffnen

  1. Die Markdown-Quelldatei bearbeiten, dann mit demselben Befehl und demselben --key den Generator neu ausführen – nicht direkt das ausgegebene HTML ändern (es würde beim nächsten Durchlauf überschrieben). Nur mit demselben Key bleiben alte Kommentare erhalten.
  2. Die Seite erneut für den Nutzer öffnen.
  3. Rückmeldung geben: Punkt für Punkt auflisten „welcher Kommentar → was wurde geändert“. Bei vagen Kommentaren die getroffene Wahl anmerken.

Technische Notizen (für Claude, nicht für den Nutzer bestimmt)

  • Kommentarverankerung erfolgt über „ausgewählten Text + Kontext“ – auch bei geringfügigen Textänderungen kann die Position neu zugeordnet werden. Falls nicht möglich, wird „Originaltext geändert“ markiert.
  • Hervorhebung nutzt die CSS Custom Highlight API des Browsers – keine Änderung der Seitenstruktur. Unterstützt in Chrome, Edge und neueren Safari-Versionen. In nicht unterstützten Browsern fehlt die gelbe Hervorhebung, die Seitenleiste mit Kommentaren funktioniert aber normal.
  • Kommentare und Ankreuzungen werden im localStorage des Browsers gespeichert. Jede Seite verwendet einen eigenen --key, sonst würden Kommentare verschiedener Seiten vermischt.
  • Nach dem Laden der Kommentaroberfläche steht window.PreviewComments zur Verfügung: .refresh() aktualisiert die Hervorhebungen, .data() gibt alle Kommentare aus, .exportMd() liefert den exportierten Markdown.
  • Der z-Index von modalen Fenstern der Seite muss unter 10400 liegen, damit die Kommentar-Buttons nicht verdeckt werden.

Verwandte Skills