Communitygithub.com

jovd83/prototype-sketching-skill

Reversible, nicht-destruktive handschriftliche Oberfläche (Balsamiq, Sharpie, Bleistift, Doodle, Blaupause) für Angular/React/Vue/statische Web-Apps mit einem einstellbaren Skizzen-Level (0–100 %) und einem interaktiven Overlay. Nur Look-and-Feel.

Was ist prototype-sketching-skill?

Diese Fähigkeit verwandelt das Erscheinungsbild einer funktionierenden Web-App in eine handgezeichnete Skizze, sodass Kunden sofort erkennen, dass es sich um einen Prototyp handelt – ohne die Funktionalität zu beeinträchtigen. Sie ist rein additiv (fügt nur CSS und SVG-Filter hinzu) und vollständig reversibel. Der Entwickler aktiviert den Look durch zwei Attribute am `<html>`-Tag: `data-sketch` (Stil: Balsamiq, Sharpie, Pencil, Doodle, Blueprint) und `data-sketch-level` (Skizzenhaftigkeit 0–100 %). Ein optionales Wasserzeichen (`data-sketch-watermark`) und ein interaktives Overlay zum direkten Umschalten der Einstellungen runden das Angebot ab. Die Fähigkeit ist Framework-unabhängig (Angular, React, Vue, statisches HTML) und funktioniert auch mit Modals, Popups und SPA-Navigation, da sie auf globalen Selektoren basiert. Ein wichtiger Schutzmechanismus: Nur die Styling-Einstiegspunkte und index.html werden bearbeitet; Komponenten, Logik und Tests bleiben unberührt. Assets wie Logos oder Diagramme können mit der Klasse `.no-sketch` vom Effekt ausgenommen werden.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add jovd83/prototype-sketching-skill

In Ihrer bevorzugten KI fragen

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

Vorschau

Aus dem Skill-README

prototype-sketching-skill preview

Dokumentation

Fähigkeit: Prototyp-Skizze

Machen Sie eine funktionierende Web-App so, dass sie aussieht, als wäre sie handgezeichnet – damit Kunden erkennen, dass es ein Prototyp und kein fertiges Produkt ist. Es handelt sich nur um ein Look-and-Feel-Skin. Es ist rein additiv und vollständig reversibel.

Scope-Guardrails (zuerst lesen, niemals verletzen)

  1. Nur Styling-Einstiegspunkte und index.html bearbeiten. Ein Stylesheet anhängen, einen SVG-Block einfügen, zwei Attribute setzen. Sonst nichts.
  2. Niemals Komponenten, Templates, .ts/.tsx/.jsx/.vue-Logik, Routing, State, Services oder Tests bearbeiten.
  3. Niemals Komponenten durch skizzenhafte Komponentenbibliotheken (z. B. wired-elements) ersetzen – das würde Markup umschreiben. Verboten.
  4. Niemals Logos, Fotos, Diagramme oder Icons, die scharf bleiben müssen, umfärben oder verzerren – die Opt-out-Klasse verwenden.
  5. Das Rückgängigmachen muss trivial bleiben: Das Entfernen der beiden <html>-Attribute schaltet das gesamte Skin aus.

Funktionsweise (ein mentales Modell)

  • Ein Stylesheet assets/sketch-skin.css definiert alle 5 Stile + die Skizzenhaftigkeitsrampe.
  • Ein SVG-Block assets/sketch-filters.html definiert die Wackelfilter (#sketch-25 … #sketch-100).
  • Die Aktivierung erfolgt durch zwei Attribute am <html>: data-sketch="<Stil>" und data-sketch-level="<0|25|50|75|100>".
  • Der Look entsteht durch: Schriftartenwechsel (Handschrift) + handgezeichnete Boxen (unregelmäßige border-radius, flache Füllungen) + einen SVG-Verschiebungsfilter, dessen Stärke der Skizzenhaftigkeitsstufe entspricht. Die Schriftart trägt den Text; der Filter wackelt nur die Boxdekoration (verwischt niemals Text).

Kurzanleitung (in dieser Reihenfolge vorgehen)

  1. Bestätigen, dass es sich um ein reines Skin handelt. Wenn der Benutzer Verhaltens-/Layout-Änderungen wünscht, anhalten – das ist nicht im Scope.
  2. Framework erkennen und das globale Stylesheet + index.html finden (siehe Rezepttabelle unten).
  3. Stil auswählen (Tabelle unter "Stile") und eine Stufe (0, 25, 50, 75 oder 100).
  4. Das Skin-CSS zu den globalen Styles des Projekts hinzufügen:
    • assets/sketch-skin.css in das Projekt kopieren (z. B. src/styles.scss) oder per @import einbinden. Der @import für die Schriftart ist bereits in dieser Datei enthalten (für Online-Nutzung).
  5. Die SVG-Filter aus assets/sketch-filters.html direkt nach dem öffnenden <body>-Tag in index.html einfügen. (Erforderlich – filter: url(#sketch-…) funktioniert nur, wenn diese Defs im DOM vorhanden sind.)
  6. Aktivieren, indem Sie das <html>-Tag in index.html bearbeiten:
    <html lang="de" data-sketch="balsamiq" data-sketch-level="50">
    
  7. Im Browser überprüfen. Zum Rückgängigmachen die beiden data-sketch*-Attribute löschen (das hinzugefügte CSS/SVG kann inaktiv bleiben – ohne die Attribute tun sie nichts).

Stile

data-sketchLookSchriftartVerwendung für
balsamiqSauberes Graustufen-Wireframe, flache BoxenBalsamiq SansDer Standard für "das ist ein Mockup"
sharpieFetter schwarzer Marker, dicker StrichPermanent MarkerWhiteboard / Workshop-Skizze
pencilLeichter Graphit, weiche StricheGaeguSanfter "Bleistift auf Papier"-Entwurf
doodleVerspielt, helle FarbakzenteShort StackFreundliche, informelle Konzepte
blueprintWeiße Tinte auf blauem PapierPatrick HandTechnisches "Zeichenbrett"-Gefühl

Skizzenhaftigkeitsstufe

data-sketch-level steuert, wie zittrig die Linien sind. Es wählt einen anderen SVG-Verschiebungsfilter aus:

StufeEffekt
0Handgezeichnete Boxen + Schriftart, aber gerade, stetige Linien (am saubersten)
25Dezentes Wackeln
50Deutlich handgezeichnet (empfohlener Standard)
75Lockerer, energischer Skizzenstil
100Sehr grob, maximales "Gekritzel"

Wenn data-sketch gesetzt ist, data-sketch-level aber fehlt, wird standardmäßig Stufe 50 verwendet.

Diagonales Wasserzeichen (optional)

Um den gesamten Bildschirm als Entwurf zu kennzeichnen, ein drittes <html>-Attribut mit dem anzuzeigenden Text hinzufügen:

<html data-sketch="balsamiq" data-sketch-level="50" data-sketch-watermark="ENTWURF">

data-sketch-watermark zeichnet ein blasses, handgeschriebenes Wort diagonal über den Viewport. Es ist eine feste, nicht interaktive Ebene (pointer-events: none), sodass es niemals Klicks blockiert, das Layout nicht verändert und bei Seiten- und Routenwechseln an Ort und Stelle bleibt. Jeder Text ist möglich (ENTWURF, PROTOTYP, VERTRAULICH, ein Kundenname…). Entfernen Sie das Attribut, um es auszuschalten. Im Overlay legt ein Textfeld Wasserzeichen es live fest.

Modals, Popups & SPA-Navigation

Da das Skin durch Attribute am <html> aktiviert und mit globalen [data-sketch] …-Selektoren gestylt wird, erben alle Elemente, die nach der Aktivierung erscheinen, es automatisch – Dialoge, Popover, Dropdown-Menüs, Tooltips und Toasts (auch portal-gemountete) sowie jeder Bildschirm, zu dem in einer Single-Page-App navigiert wird. Es muss nichts pro Komponente oder pro Route verdrahtet werden.

Zwei Dinge sorgen für Konsistenz:

  • Die Selektorlisten decken bereits dialog, [popover], [role="dialog"], [aria-modal="true"], .modal, .popover, Menüs, Tooltips und Toasts sowie den nativen ::backdrop ab.
  • Das Overlay-Skript überwacht <body> und injiziert die SVG-Filter erneut, wenn ein Framework bei einem Routenwechsel den Body ersetzt, damit das Wackeln niemals stillschweigend verschwindet. (Beim statischen Attribut-Modell sketch-filters.html einmal nach <body> einfügen; SPA-Frameworks mounten in ein untergeordnetes Root und lassen es intakt.)

Framework-Injektionsrezepte

Das Skin ist Framework-unabhängig. Dies sind die genauen Ziele; vollständige Details in references/implementation.md.

StackCSS hinzufügen zuSVG einfügen inAttribute setzen auf
Angularsrc/styles.scss (oder styles.css)src/index.html nach <body><html> in src/index.html
React / Vitesrc/index.css (importiert in main.tsx)index.html nach <body><html> in index.html
Vuesrc/assets/main.css (importiert in main.ts)index.html nach <body><html> in index.html
Statisches HTMLsketch-skin.css im <head> verlinkenindex.html nach <body><html> in index.html

Bestimmte Assets scharf halten (Opt-out)

Das Skin bearbeitet kein Markup, aber wenn der Benutzer explizit darum bittet, ein Element (Logo, Diagramm) zu schützen, ist die einzige erlaubte Markup-Änderung das Hinzufügen des Opt-out-Hooks zu diesem einzelnen Element:

<img src="logo.svg" class="no-sketch" alt="Logo">

.no-sketch (oder data-no-sketch) entfernt den Wackelfilter und Farbüberschreibungen von diesem Element. Spärlich und nur auf Anfrage verwenden.

Interaktives Vorschau-Overlay (optional)

Wenn der Benutzer Stile live umschalten möchte (z. B. einem Kunden einen Schalter zeigen), das Overlay anstelle statischer Attribute verwenden:

  1. assets/sketch-skin.css zu den globalen Styles hinzufügen (wie in der Kurzanleitung).
  2. Ein Script-Tag vor </body> hinzufügen:
    <script src="sketch-toggle.js" defer></script>
    
  3. Fertig. Das Skript rendert ein schwebendes Panel mit AUS + je einen Radio-Button pro Thema, einen 0–100 %-Schieberegler für die Skizzenhaftigkeit und ein Textfeld für das Wasserzeichen, setzt die <html>-Attribute live und merkt sich die Auswahl im localStorage. Es injiziert die SVG-Filter automatisch (und injiziert sie erneut, wenn ein SPA den Body ersetzt), sodass Schritt 5 der Kurzanleitung (Einfügen von sketch-filters.html) nicht erforderlich ist.

Dies ist immer noch reines Skin und nicht destruktiv – das Skript setzt lediglich Attribute. Entfernen Sie das Tag, um es zu deaktivieren. Wählen Sie dieses Modell, wenn die Anfrage lautet "lassen Sie mich/den Kunden die Stile wechseln"; verwenden Sie statische Attribute für einen festen, bildschirmfoto-stabilen Look.

Screenshot-Galerie

README.md zeigt jeden Stil und die 0→100 %-Leiter anhand der PNGs in demo/screenshots/. Diese Bilder sind vorgerendert; die interaktive Demo-App und das Playwright-Erfassungsskript, die sie generieren, befinden sich im Entwicklungsquellcode des Projekts und werden nicht mit der installierten Fähigkeit gebündelt. Die Fähigkeit selbst besteht nur aus assets/ + references/ – kein Build-Schritt, keine Abhängigkeiten.

Beispiele

Beispiel 1 – Angular-Demo in Balsamiq, moderate Skizze

  • Eingabe: "Lass diese Angular-App für die morgige Demo wie ein Balsamiq-Wireframe aussehen."
  • Aktionen: sketch-skin.css an src/styles.scss anhängen; Filter in src/index.html einfügen; <html data-sketch="balsamiq" data-sketch-level="50"> setzen.
  • Ergebnis: App läuft identisch; wird als Graustufen-Wireframe gerendert.

Beispiel 2 – React, maximaler Sharpie

  • Eingabe: "React-App, kompletter Whiteboard-Marker-Look, richtig grob."
  • Aktionen: sketch-skin.css in main.tsx importieren; Filter in index.html einfügen; data-sketch="sharpie" data-sketch-level="100" setzen.

Beispiel 3 – Ausschalten

  • Eingabe: "Zurück zum echten UI."
  • Aktion: data-sketch und data-sketch-level aus <html> löschen. Fertig – keine weiteren Änderungen nötig.

Fehlerbehebung

SymptomUrsacheLösung
Boxen sehen handgezeichnet aus, aber Linien sind perfekt geradeSVG-Filter nicht im DOM oder Stufe 0Sicherstellen, dass sketch-filters.html nach <body> eingefügt ist; Stufe ≥ 25 setzen
Nichts hat sich geändertAttribute fehlen oder CSS nicht geladenÜberprüfen, ob <html data-sketch="…"> vorhanden ist und sketch-skin.css in den globalen Styles enthalten ist
Text sieht unscharf ausFilter auf Text/gesamten <body> angewendetKein filter: auf body oder Text anwenden; das Skin filtert nur Boxdekoration – sketch-skin.css unverändert erneut kopieren
Schriftarten sind nicht handschriftlichOffline / blockierte Google FontsSchriftarten selbst hosten – siehe assets/fonts/README.md
Seite fühlt sich bei großen Tabellen/Rastern träge anfeDisplacementMap-Aufwand bei großem DOMStufe senken oder die Wackel-Selektorliste eingrenzen (siehe references/implementation.md)
Ein Logo wurde entsättigt/wackeligKein Opt-out für dieses Assetclass="no-sketch" zu diesem einzelnen Element hinzufügen
Icon-Fonts / SVG-Icons verschwundenAggressive Vereinfachungno-sketch zum Icon-Container hinzufügen oder den Icon-Hinweis in references/implementation.md beachten

Referenzdateien (nur bei Bedarf lesen)

  • references/styles.md – exakte Schrift-/Paletten-/Strich-Spezifikation für jeden der 5 Stile und wie ein neuer Stil hinzugefügt wird.
  • references/implementation.md – SVG-Filter-Mathematik, Schritt-für-Schritt pro Framework, Selektor-Anpassung, Offline-Schriftarten, Performance, Details zum Rückgängigmachen.

Verwandte Skills