Communitygithub.com

chukaofili/agent-plugins

Verwendet, wenn eine Änderung das betrifft, was ein Benutzer sieht – Komponenten, Seiten, Ansichten, Bildschirme, Styles, Vorlagen, Dialoge, Formulare oder Texte – und vor dem Öffnen eines PRs. Deckt die Überprüfung der Änderung in einem echten Browser über alle Zustände hinweg ab, führt eine Review-Überprüfung gegen die Design- und Framework-Richtlinien des Repos durch und erfasst Screenshots für den PR, einschließlich der Vorgehensweise, wenn kein Browser verfügbar ist.

Was ist agent-plugins?

Dieses Skill namens „Verify UI“ stellt sicher, dass eine UI-Änderung vollständig abgeschlossen ist, bevor ein Pull Request (PR) erstellt wird. Es geht über reine Code-Qualitätsprüfungen (Typcheck, Linting, Unit-Tests) hinaus, indem es die Änderung in einem echten Browser mit echten Daten durch alle Zustände treibt (Themen, mobile/Desktop-Ansichten, leere, Lade-, Fehlerzustände). Anschließend wird eine Review-Überprüfung gegen die Design- und Framework-Richtlinien des Repos durchgeführt, wobei Unter-Agenten parallel günstigere Modelle nutzen können. Abschließend werden Screenshots für den PR erstellt, die nach Commit-SHA referenziert werden, und die Ergebnisse werden klug in einem gestapelten PR verwaltet. Das Skill behandelt auch den Fall, dass kein Browser verfügbar ist, und dokumentiert dann die Einschränkungen im PR. Es fängt Probleme wie falsche Lade-Skelette, überschneidende Dialoge, fehlerhafte Identitätsanzeige, falsche leere Zustände, ausgetauschte Design-Token, hartcodierte Labels, abstürzende Menüs und widersprüchliche Dialoge – alles, was ein Typprüfer oder Linter niemals findet.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/chukaofili/agent-plugins/tree/HEAD/plugins/coding-protocol/skills/verify-ui

In Ihrer bevorzugten KI fragen

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

Dokumentation

UI überprüfen

Die Bildschirme zu bauen ist die erste Hälfte. Eine UI-Änderung ist erst dann abgeschlossen, wenn sie in einem echten Browser getestet wurde und ihre Screenshots im PR sind. Ein sauberer Typcheck, Lint-Durchlauf und Unit-Suite sagen, dass der Code kompiliert und seine Logik stimmt. Keiner von ihnen sagt, ob das Panel rendert oder ob der Footer an der vom Design vorgesehenen Stelle sitzt. Reviewer, die den Branch nie ausführen, beurteilen die Arbeit anhand der Screenshots – oder gar nicht.

1. In einem echten Browser mit echten Daten testen

Verwenden Sie eine laufende App mit einer echten (geseedeten) Datenbank, keine Mocks, und nicht nur einen Screenshot des Happy Paths. Gehen Sie jeden Zustand durch, den das Design nennt, plus die, die es nicht nennt:

  • Beide Themes. Handgeschriebene Farben sind der Ort, an dem Dark-Mode-Varianten vergessen werden.
  • Mobil und Desktop. Layouts ordnen sich an Breakpoints neu, und Footers und Toolbars können die Hälfte ihres Inhalts verwaist lassen.
  • Leere, Lade-, Limit- und Fehlerzustände, nicht nur den befüllten Zustand.
  • Jede Übergabe, bei der ein Dialog oder eine Ansicht geschlossen und eine andere geöffnet wird.
  • Öffnen Sie jedes Menü, Popover und Dropdown, das Sie hinzugefügt haben. Ein Menü, das Sie nie öffnen, sieht identisch aus wie eines, das die Seite beim Öffnen zum Absturz bringt.
  • Überprüfen Sie die Browserkonsole und das Netzwerkpanel auf Fehler, während Sie vorgehen.

2. Eine Review-Überprüfung durchführen

Überprüfen Sie die Änderung gegen die Design- und Framework-Richtlinien, die das Repo verwendet (Designsystem, Barrierefreiheit, Framework-Best Practices). Wenn Ihr Agent Subagenten erstellen kann, führen Sie einen Reviewer pro Richtlinie parallel auf einem günstigeren Modell aus. Es ist Mustererkennungsarbeit, kein Urteilsvermögen.

  • Geben Sie den Reviewern die eigenen Regeln des Repos. Ein Reviewer, der sie nicht gelesen hat, meldet dokumentierte Entscheidungen als Verstöße.
  • Sagen Sie ihnen, sie sollen nur melden. Beurteilen Sie dann jeden Befund selbst nach realer Wahrscheinlichkeit. Lehnen Sie Befunde ab, die für ein anderes Produkt zutreffen würden, wie z. B. Virtualisierungsempfehlungen für eine Liste, die auf ein Dutzend Zeilen begrenzt ist.

3. Screenshots für den PR erfassen

Keine Beschreibung der Bildschirme: die Bildschirme selbst. Das Erfassen ist auch der günstigste Weg, einen Zustand zu erwischen, den Sie nicht wirklich angesehen haben.

  • Die echte App testen. Ein Einweg-Browser-Skript, das jeden Zustand erreicht, ist in Ordnung. Verwenden Sie die Seed-Helfer des E2E-Harnesses, um Zustände zu erreichen, die kein UI-Flow produziert, und löschen Sie dann das Skript, sobald die Bilder existieren. Es behauptet nichts und ist keine Coverage.
  • Vor dem Erfassen neu bauen. Sonst screenshoten Sie möglicherweise den Bug, den Sie gerade behoben haben.
  • Vor dem Auslösen auf Animationen warten. „Sichtbar“ wird aufgelöst, wenn ein Element layoutet ist, nicht wenn seine Eingangstransition endet, daher zeigt eine naive Aufnahme halb ausgeblendete Dialoge ohne Hintergrund. Warten Sie auf endliche Animationen (filtern Sie unendliche wie Skelett-Pulse aus), mit einem Timeout.
  • Jeden Zustand so erreichen, wie ein Benutzer es tun würde, wo möglich. Das Erzwingen eines Flags überspringt das Rennen, das einen Bug aufdecken könnte.
  • Committen Sie sie in docs/screenshots/<topic>/, neben dem Design, das sie implementieren, falls vorhanden.
  • Referenzieren Sie sie per Commit-SHA, nicht per Branch, z. B. https://github.com/<org>/<repo>/blob/<sha>/<path>?raw=true. Eine Branch-URL stirbt, wenn der Branch beim Merge gelöscht wird, und hinterlässt den PR voller kaputter Bilder.

Kein Browser verfügbar

Wenn die Umgebung die UI wirklich nicht ausführen kann (keine Browser-Tools, fehlende Credentials, Infrastruktur, die Sie nicht kontrollieren), sagen Sie das im Testing-Abschnitt des PRs. Nennen Sie, was es blockiert hat und was Sie stattdessen überprüft haben. Schweigen wird als „überprüft“ gelesen.

Review-Fixes als Stage oben drauf versenden

Fixes, die bei diesem Durchlauf gefunden werden, gehen in einen neuen gestapelten PR oben auf dem Feature, sodass der Build und der Review-Durchlauf separat überprüfbar bleiben (siehe stacked-prs).

Was dieser Durchlauf abfängt

Keiner dieser Fehler stammt von einem Typprüfer, Linter oder Unit-Suite:

  • Ein Lade-Skelett, das nicht zu seiner Seite passte. Es skeletonte eine Toolbar, die die Seite nicht hat, sodass jede Navigation zwischen zwei Layouts sprang. Spiegeln Sie das echte Layout Zeile für Zeile, oder liefern Sie kein Skelett aus.
  • Zwei gleichzeitig gemalte Dialoge bei einer Übergabe, weil jeder Dialog gemountet war und nur sein open-Flag umgeschaltet wurde. Versteckt ist nicht unmountet.
  • Ein kurzer Identitätsfehler: Die eigene Zeile des Benutzers bot an, ihn für einen Paint zu entfernen, weil der Client die Sitzung nach dem ersten Rendern las. Die Identität, die der Server bereits kennt, sollte mit der Seite herunterkommen.
  • Ein falscher leerer Zustand: „Keine Ergebnisse gefunden“ wurde für einen Frame vor der Auflösung der Abfrage gerendert, weil null Zeilen sowohl „Laden“ als auch „Leer“ bedeuteten.
  • Ein Design-Token gegen ein ähnlich aussehendes ausgetauscht, sichtbar unterschiedlich in einem der Themes.
  • Ein hartcodiertes Label neben vier anderen Aufrufstellen, die dasselbe Label aus einem gemeinsamen Katalog lesen.
  • Ein Menü, das die Seite beim Öffnen abstürzen ließ, weil eine Unterkomponente ein Elternteil erforderte, das sie nicht hatte. Ein manueller Klick-Durchlauf verpasste es zweimal, weil niemand das Menü öffnete.
  • Ein Spezifikationspunkt leise übersprungen, und ein anderer aus gutem Grund fallengelassen, aber undokumentiert. Jede Abweichung vom Design braucht einen Hinweis, warum.
  • Ein sich widersprechender Dialog, gefunden durch das Anschauen des Screenshots: Ein Hinweis sagte „alle Plätze sind belegt“, während der Footer daneben immer noch „2 Plätze frei“ anbot.

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

Verwandte Skills