Prototyp-Änderungsnotizen-Schicht (proto-note)
Überlagere einen einzelnen HTML-Prototypen mit einer „Entwickler-Änderungsführung“: Fixierter, dunkler Anmerkungsbalken (Modulauswahl + Anmerkungskarten) ↔ Seitenanker-Punkte + Canvas-Verbindungen; bidirektionales Hover-/Klick-Locator; Anmerkungskarten mit SDD-Deep-Links.
Installation und Verzeichnis
# Persönliche Fähigkeit (empfohlen)
git clone https://github.com/pessimistcamellia/proto-note.git ~/.cursor/skills/proto-note
# Oder innerhalb eines Projekts
git clone https://github.com/pessimistcamellia/proto-note.git .cursor/skills/proto-note
Alternativ kann das gesamte Verzeichnis in den oben genannten Pfad kopiert werden. Verzeichnisstruktur:
proto-note/
├── SKILL.md
├── assets/diff-annotator.js # Annotations-Engine (als Ganzes in den Prototyp integriert, Logik nicht ändern)
├── references/changeset-schema.md
├── docs/screenshots/ # Screenshots für die README
└── scripts/deploy_github.sh # Backup-Bereitstellung für GitHub Pages
Umgebungsabhängigkeiten
| Fähigkeit | Werkzeug | Fehlschlagverhalten |
|---|---|---|
| Technologie-Stack/Quellcode-Lokalisierung | codewiki MCP (oder gleichwertige Code-Recherche) | Verwende Online-URL + Quellcode-Repository + Browser-DOM zur Rekonstruktion |
| SDD Deep-Link | lark-cli (Lark) | Manuelles Ausfüllen der Dokumenten-URL und des Kapitel-blockId; für Nicht-Lark-Systeme: Verlinke auf den entsprechenden Kapitel-Anker |
| Pixelgenaue Kalibrierung | Browser DevTools / chrome-devtools MCP | Manuelles Öffnen der Online-Seite zum Vergleich |
| Bereitstellung | Interne statische Hosting-Umgebung (bevorzugt) | Persönliches GitHub Pages (deploy_github.sh, benötigt gh-Autorisierung) |
Falls das Team über weitere Frontend-Regel-Fähigkeiten (z. B. Whitelist für Bibliotheken, Komponentenverwendung) verfügt, lese diese vor der Erstellung je nach Bedarf; anderenfalls orientiere dich am Quellcode des Ziel-Repositorys und der Team-Dokumentation.
Standard-Schema: Komponentenbibliothek und Veröffentlichungs-Priorität
Ausführen nach Priorität; nur wenn die vorherige Stufe nicht verfügbar ist, wird auf die nächste zurückgegriffen; die letzte Stufe ist die Standard-Fallbacklösung:
- Komponentenbibliothek / Standard (bevorzugt): Verwende die reale, im Zielsystem verwendete Komponentenbibliothek und deren Konventionen (anhand Quellcode / DOM / Team-Komponentenregel-Fähigkeit). Kein unbegründeter Bibliothekswechsel.
- Veröffentlichungsadresse (bevorzugt): Wenn ein bestehendes internes statisches Hosting (oder eine im Team vereinbarte interne Adresse) vorhanden ist, veröffentliche bevorzugt im Intranet.
- Standard-Fallback: Falls die reale Komponentenbibliothek / -spezifikation nicht ermittelt werden kann oder aufgrund von Berechtigungen, Netzwerk, nicht erreichbarem Intranet etc. nicht verwendet werden kann → Komponenten können nach einem allgemeinen Schema frei gewählt werden (bleibt dennoch als interaktives Einzel-HTML); veröffentliche im persönlichen GitHub-Repository (Pages) des Benutzers. Vor der Bereitstellung muss die
gh-Autorisierung bestätigt werden; ohne Autorisierung zuerst mit dem Benutzer kommunizieren; es ist verboten, ohne Zustimmung in ein privates Repository zu pushen.
Produkt-Grundregeln
- Änderungsebenen + Typen: Seite / Modul / Feld; Typen unterscheiden: Neu, Textänderung, Aufzählungsdefinition, Logik, Ablauf, Löschung. Verallgemeinernde Angaben wie „Neu“ sind verboten.
- Standardmäßig versteckt, Modul-Auswahl: Beim Öffnen werden keine Anmerkungen angezeigt; Auswahl nach
page::module; Zustand in localStorage. Fehlende Keys bei neuen Modulen sind standardmäßigtrue(sichtbar); es ist verboten, zu erben, dass ein Schalter jemals ausgeschaltet war, um die Sichtbarkeit zu bestimmen; unsaubere Zustände werden durch Upgrade derLS_KEY-Version gelöscht. - Nur mit SDD verknüpfen, kein PRD anzeigen: Anmerkungskarten verwenden
SDD-Dokumenten-URL#blockId. - Informationen minimieren: Keine Versionsnummern/Baselines/Bedienungsanleitungen im Anmerkungsbalken;
descenthält nur die Schlussfolgerung. - Klickbar muss funktionieren: Anklicken eines Moduls schaltet die Ansicht um + scrollt + pulsiert zur Position.
- Review-Zustand nur im Anmerkungsbalken: Normalzustand/Leerzustand/Fehlerzustand etc. in
demoControls; echte Business-Tabs bleiben in der Business-Seite. - Eingabezweige mit reproduzierbaren Beispielen:
examplesmüssen mit den Fixtures übereinstimmen; keine Platzhalter mit falschen Werten. - Anmerkungsbalken blockiert nicht den Inhalt: Keine Komprimierung des Business-Layouts; verwende Spacer zur Erweiterung des
scrollWidth. Horizontales Scrollen, um die rechte Seite vollständig zu sehen. Keinbody padding-rightoder Änderung der Business-Root-Breite. - Komponentenbibliothek und -spezifikation bevorzugen die echte Online-Version: Wenn möglich, muss rekonstruiert werden (siehe „Standardschema“ Stufe 1). Gleiche Komponentenbibliothek bedeutet nicht Rekonstruktion – Skelette, Spaltensets/-breiten, fixierte Spalten, Zellenstrukturen, Aktionsspalten-Layouts, benutzerdefinierte Klassennamen und wichtige Styles müssen mit dem Online-DOM/Quellcode abgeglichen werden; vor Auslieferung Screenshot-für-Screenshot vergleichen. Nur wenn keine echte Komponentenbibliothek/-spezifikation ermittelt werden kann, ist ein Fallback auf allgemeine Komponenten erlaubt.
- Veröffentlichung bevorzugt im Intranet, sonst persönliches GitHub: Wenn eine Intranet-Adresse vorhanden ist, diese bevorzugen; wenn nicht, auf persönlichem GitHub Pages veröffentlichen (siehe „Standardschema“ Stufen 2–3).
- „Vorher“ = aktueller Online-Zustand: Bei Neuerungen schreibe „Keine dieser Seite/dieses Moduls/dieser Funktion/dieses Feldes vorhanden“; keine Angabe als Differenz zur vorherigen Demo; neue Online-Punkte dürfen nicht übersehen werden.
- Keine UI-Landepunkte → keine Verbindung: Reine Prozess-/Ablaufänderungen:
target: null, kein Anker; Karte in „Prozesse & Abläufe · Seite nicht sichtbar“ und ans Ende der Changes setzen. - Änderungen innerhalb eines Popups: Beim Anklicken der Anmerkungskarte muss
DIFF_HOOKS.locatedas Popup öffnen, bevor die Verbindung gezeichnet wird; Anker/Verbindungen haben einen höheren z-index als das Popup (Engine verwendet 9000er Bereich). - Popup scrollt mit der Seite mit: Bei geöffnetem Anmerkungsbalken wird der Popup-Container mit
(-scrollX,-scrollY)verschoben (von der Engine behandelt); kein Fixieren des Scrollens zur Umgehung. - Herunterladbare Dateien im korrekten Format: Vorlagen/Quittungen haben dasselbe Format und dieselbe Struktur wie im echten Geschäft (z. B. echte .xlsx mit zwei Sheets); Verwenden von CSV als Ersatz ist verboten.
- Mehrere Endpunkte separat erstellen und verknüpfen: Admin-Backend, C-Seite etc. nach Systemgrenzen in separaten HTMLs; einheitliches Menü mit „Endpunkt · Seite“; bei seitenübergreifenden Daten das Schreiben/Lesen/Starten/Stoppen/Fehler simulieren.
- Anmerkungskarten müssen zu SDD springen können: Jede Änderung (oder der zugehörige Funktionspunkt) erhält
sdd.section+blockId; die Karte rendert einen Deep-Link; Klick sollte das entsprechende Kapitel öffnen, nicht nur den Kapitelnamen anzeigen.
Präsentationsschicht-Spezifikation (bereits in der Engine enthalten, nicht rückgängig machen)
- Rechter Anmerkungsbalken: Dunkles Marineblau, Breite 360px, einklappbar als schwebender Einstieg.
- Horizontales Scrollen: Verwende
document.body.scrollWidthzur Messung der Business-Breite (Spacer als absolute, wird nicht hinzugefügt); nicht zuerst den Spacer verstecken und dann messen. Wiederherstellung des Scrollens mitbehavior: "instant", um Konflikte mitscroll-behavior:smoothzu vermeiden. - Anker: Dokumentkoordinaten (
position:absolute), fixiert an der oberen linken Ecke des Ziels;fixed+ verfolgendes Scrollen ist verboten; Verdeckung mitelementFromPointverstecken. - Verbindungen: Normal keine Linien; bei Hover/Fixierung nur eine Linie zeichnen; fixierter Zustand hat Vorrang vor Hover-Zustand; Startpunkt ist das aktuelle rect.
- Anmerkungskarte: Nummer + Titel + Typ·Ebene + Schlussfolgerung + Vorher/Nachher + SDD; kann
examplesenthalten. - Demobereich: Segmented Control oben im Anmerkungsbalken →
DIFF_HOOKS.setDemoState.
Technologie-Stack-Rekonstruktion (Schritt 0)
Ausführen nach dem „Standardschema“: Wenn möglich, rekonstruieren; wenn nicht, den Grund dokumentieren und dann zur freien Auswahl als Fallback übergehen.
- Hat der Benutzer keine Online-URL angegeben → zuerst daran erinnern; falls weiterhin keine vorhanden, selbstständig das System/die Routen/den Quellcode durchsuchen.
- Mit codewiki (oder Quellcode-Recherche) bestätigen: Framework, Komponentenbibliothek, Routen → Seitendateien, wichtige Vorlagenfragmente; ggf. Aktualität des Index prüfen und mit Online-DOM kalibrieren.
- Bevorzugt die reale Komponentenbibliothek und Spezifikation aus dem Ziel-Repository verwenden; neue Steuerelemente übernehmen den bestehenden Typ/die Größe/Anordnung dieser Seite. Gleiche Komponentenbibliothek bedeutet nicht Rekonstruktion – Skelette, Spaltenbreiten, fixierte Spalten, Zellenstrukturen, Aktionsspalten-Layouts, benutzerdefinierte Klassennamen müssen mit dem Online-DOM/Quellcode abgeglichen werden.
- Falls Team-Komponentenregel-Fähigkeit vorhanden, dieser folgen; anderenfalls am Ziel-Repository und der Dokumentation orientieren.
- Bei unzureichenden Pixel- oder Rechercheinformationen: Öffne die Online-Seite und erfasse die Mount-Methode, Komponenten-Klassennamen, Tabellenspaltenbreiten/fixierte Spalten, Aktionsspalten-Struktur, benutzerdefinierte Computed Styles.
- Ausgabe bleibt ein einzelnes HTML; falls möglich, dasselbe Framework/dieselbe Komponentenbibliothek über CDN einbinden. Wenn die gesamte Seite nicht rekonstruiert werden kann, eine gängige Komponentenbibliothek für den interaktiven Prototyp frei wählen und im Auslieferungshinweis die „Ursache für die Nicht-Rekonstruktion“ angeben.
- Veröffentlichung: Bei vorhandener interner statischer Adresse bevorzugt dort hochladen; sonst nach Erhalt der GitHub-Autorisierung des Benutzers mit
deploy_github.shim persönlichen Repository veröffentlichen.
Häufige Fallstricke: Keine übermäßige min-width für äußere Container setzen, die die Tabelle aufbläht (dadurch gehen internes horizontales Scrollen und fixed-Spalten verloren); das einheitliche Menü in der Kopfzeile mit position:fixed, um zu vermeiden, dass die Kopfzeile bei breiten Seiten bricht.
Mehrere Seiten / Mehrere Endpunkte und Datenverknüpfung
- Zuerst eine Matrix erstellen: Endpunkt/System → Seite → Schlüsselzustände → Datenflüsse; verschiedene Technologie-Stacks in separaten Dateien, nicht gewaltsam zusammenführen.
- Einheitliches Menü: „Endpunkt · Seite“-Benennung, aktuelle Seite hervorheben; Menüs werden nicht mit Änderungsnotizen versehen.
- Gleicher Ursprung, gleiches Verzeichnis bereitstellen, um
localStorage-Freigabe zu gewährleisten. - Gemeinsamer Zustands-Key:
proto-note:<requirement-slug>:state:v1; nach dem Schreiben/Lesen ein Ereignis auf derselben Seite auslösen, über Tabs hinweg aufstoragehören. - URL trägt nur die Business-ID; der Inhalt im gemeinsamen Zustand. Bei unterschiedlichen Ursprüngen bevorzugt gleichen Ursprung herstellen, sonst
postMessageundoriginvalidieren. - Eingebaute Fixtures + "Demo-Daten zurücksetzen"; Zustände und Fehler der verbundenen Systeme reproduzierbar.
Arbeitsablauf
- Schritt 0: Technologie-Stack-Rekonstruktion.
- Aus der PRD die Änderungsliste, Endpunkt/Seiten-Matrix, Eingabezweige und seitenübergreifende Datenbeziehungen extrahieren → siehe references/changeset-schema.md.
- SDD blockId abrufen und in jede
sddschreiben. - Prototypen pro Endpunkt erstellen; bei mehreren Endpunkten mit Menü und gemeinsamem Zustand versehen und Verknüpfung testen.
- Anmerkungsschicht einbinden:
- Container mit
data-diff-pageversehen; Landepunkte mit id ergänzen;DIFF_HOOKS.locate/setDemoStateimplementieren. - Review-Tabs in
meta.demoControlsverschieben. - Zweige in
examplesschreiben (konsistent mit Fixtures). - Vor
</body>DIFF_CHANGESETinline einfügen, dann die gesamte neueste assets/diff-annotator.js kopieren (keine veraltete Kopie verwenden).
- Container mit
- Bereitstellung und Selbstprüfung:
-
Bevorzugt Intranet: Bei bestehendem internen statischen Hosting dort hochladen; falls Objektschlüssel nicht überschrieben werden können, neuen Pfad verwenden (z. B.
-v2), anhand der zurückgegebenen URL + md5. -
Fallback GitHub Pages: Wenn Intranet nicht verfügbar, im persönlichen Repository veröffentlichen. Zuerst
gh auth status; bei fehlender Berechtigung kommunizieren undgh auth logindurchführen; es ist verboten, ohne Autorisierung in ein privates Repository zu pushen:bash ~/.cursor/skills/proto-note/scripts/deploy_github.sh <slug> ./index.html
-
Selbstprüfliste
- Wenn möglich, wurde die echte Online-Komponentenbibliothek/-spezifikation verwendet; wenn nicht, wurde die Ursache dokumentiert und die freie Auswahl als Fallback gewählt
- Veröffentlichung bevorzugt im Intranet; wenn Intranet nicht verfügbar, nach Autorisierung auf persönlichem GitHub veröffentlicht
- Bildschirm-für-Bildschirm mit Online-Version verglichen (falls vorhanden: Spaltenbreite, fixierte Spalten, Aktionsspalte, Paginierung, Kopfzeile)
- Anfangs keine Anker/Verbindungen; Module nicht ausgewählt; neue Module für wiederkehrende Besucher standardmäßig sichtbar
- Auswahl eines Moduls zeigt nur die entsprechende Karte/Anker/Verbindung und positioniert automatisch; Änderungen innerhalb eines Popups öffnen das Popup automatisch und die Verbindung liegt über dem Popup
- Kein Anker-Drift beim Scrollen; normal keine Linien, bei Fixierung/Hover nur eine Linie; fixierter Zustand wird nicht von Hover überschrieben
- Bei geöffnetem Anmerkungsbalken kann horizontal gescrollt werden, um die rechte Seite vollständig zu sehen; horizontale Scrollposition springt nicht durch DOM-Updates zurück; Popup scrollt mit der zugrunde liegenden Seite mit
-
target:nullhat keinen Anker, Karte in „Prozesse & Abläufe“ und weiter hinten; „Vorher“ ist immer der aktuelle Online-Zustand, keine übersehenen Markierungen - SDD-Deep-Link auf der Anmerkungskarte kann das entsprechende Kapitel öffnen und positionieren
- Demo-Zustand nur im Anmerkungsbalken; Beispiele reproduzierbar; heruntergeladene Dateien im korrekten Format
- Mehrseitenmenü erreichbar; Lesen/Schreiben/Aktualisieren/Tab-übergreifend/Zurücksetzen konsistent zwischen Prototypen
- Eingeklappter Anmerkungsbalken ist sauber; Business-Interaktionen nicht beeinträchtigt
Referenzen
- README.md dieses Repositorys (Screenshots, Live-Demo, Erläuterung des Standardschemas)
- Live-Demo: https://pessimistcamellia.github.io/non-ecommerce-thirdparty-order-prototype/admin-upload.html