Communitygithub.com

IshitRaj/eyt

EYT dient als technischer Leitfaden für KI-Agenten, die Web-Apps und SaaS erstellen, ändern oder überprüfen. Verwende es, wenn ein Benutzer beschreibt, was gebaut werden soll, aber keine Architektur, UX, Barrierefreiheit, Sicherheit, Persistenz, Fehlerzustände, lesbaren Code oder Verifikation spezifiziert hat. Wähle proaktiv angemessene Sicherheitsvorkehrungen, vermeide häufige Anti-Patterns von KI-generierten Apps, bewahre genehmigte Designs auf und erkläre die Evidenz. Nicht verwenden für unzusammenhängende einzeilige Programmierfragen.

Was ist eyt?

EYT (Engineer Your Thing) ist ein experimentelles Leitfaden-Skill für KI-Codierungsagenten (wie Claude Code, Cursor oder Codex), um als „fehlender Ingenieur“ zu agieren, anstatt nur als längere Checkliste. Es befähigt den Agenten, fundierte technische Entscheidungen innerhalb der Autorisierungsgrenzen des Benutzers zu treffen, ohne unnötige Architektur, modische UI oder gefälschte Daten einzuführen. Das Skill ist plattformunabhängig und kann in jedem KI-Entwicklungstool verwendet werden, das SKILL.md-Dateien unterstützt. EYT strukturiert den Agenten-Workflow in neun klaren Regeln: Von der Bestimmung des Umfangs und der Übersetzung vager Anforderungen in technische Verträge über die Verwendung starker Defaults für Implementierungen bis hin zur Wahl kleiner, nachvollziehbarer Code-Strukturen. Es betont hochwertigen, lesbaren Code, die Vermeidung generischer KI-generierter UI-Anti-Patterns, Sicherheits- und Zustandsprüfungen an Systemgrenzen und die Verifikation der tatsächlichen Benutzerreise, nicht nur der Code-Pfade. Abschließend führt der Agent eine Selbstprüfung durch und erstellt einen ehrlichen Kurzbericht über Änderungen, Entscheidungen, geprüfte Checks und ungeprüfte Risiken. Der wesentliche Vorteil von EYT liegt darin, typische KI-Fehler zu vermeiden: zu komplexe Architekturen, erfundene Funktionen oder Daten, Vernachlässigung von Fehlerzuständen, Barrierefreiheit und Sicherheit – und eine falsche Darstellung der Fertigstellung allein durch bestandene Builds oder Tests. Es definiert starke technische Defaults, die der Agent automatisch anwenden soll, es sei denn, der Benutzer hat explizit etwas anderes autorisiert. Am Ende wird nicht die Code-Menge oder das Abhaken von Checklisten als Erfolg gewertet, sondern eine verständliche, nutzbare, angemessen sichere Implementierung mit passender Evidenz. Das Skill verlinkt auf detaillierte Referenzdokumente (Agenten-Fehlermuster, Architektur-Lesbarkeit, Code-Qualität, UI/UX-Barrierefreiheit, Sicherheit/Privatsphäre, Daten/Zustand, Verifikation/Release), die bei Bedarf geladen werden.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/IshitRaj/eyt/tree/HEAD/skills/eyt

In Ihrer bevorzugten KI fragen

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

Dokumentation

EYT: Engineer Your Thing (Gestalte dein Ding)

Sei der fehlende Ingenieur, nicht eine längere Checkliste. Der Benutzer beschreibt vielleicht das Produkt, weiß aber nicht, welche technischen Entscheidungen er anfordern soll. Triff kluge Entscheidungen in seinem Namen innerhalb seiner Autorisierung, zeige die wichtigen Abwägungen auf und liefere funktionierende, verständliche Software aus. Verwende nicht standardmäßig eine ausgeklügelte Architektur, modische UI, gefälschte Daten oder die Behauptung, dass bestandene Tests Qualität beweisen.

EYT ist ein experimenteller Leitfaden, kein Sicherheitszertifikat. Die folgenden Regeln sind Handlungen für dich, den Codierungsagenten, keine Anweisungen für den Benutzer, Ingenieur zu werden.

0. Befolge die Autorität und lege den Umfang fest

  • Der letzte explizit vom Benutzer genehmigte Umfang und das bestehende Produktverhalten haben Vorrang vor EYT-Präferenzen. Respektiere Repository-Richtlinien und etablierte Verträge. Gestalte während des Refactorings niemals stillschweigend genehmigte UI neu, setze Daten zurück oder ändere öffentliche APIs.
  • Planungs-/Prüfungsanfrage: Erstelle den angeforderten Plan oder das Audit; implementiere nicht. Build-/Änderungsanfrage: Implementiere und prüfe innerhalb des autorisierten Umfangs. Keine der beiden Anfragen erlaubt die öffentliche Bereitstellung, den Kauf von Diensten, das Hinzufügen von Tracking oder die zerstörerische Änderung von Live-Daten.
  • Standardmäßig eine verhältnismäßige Lösung. Statische Broschüre: einfaches semantisches Markup und minimale Tests. Persönliches lokales Tool: zuverlässiger lokaler Zustand und klare Fehlerpfade. Authentifizierte Multi-Benutzer-App: echte Identität, Besitz pro Datensatz, Eingabevalidierung, sichere Sitzungen und Isolations-Tests. Füge Zahlungs-, Synchronisations- und verteilte Komponenten nur hinzu, wenn das Produkt sie benötigt.
  • Bitte nur um Zustimmung für wesentliche Entscheidungen (destruktive Migration, Zahlung, neue Datensammlung, Konflikt mit genehmigter UI, riskante Produktionsänderung). Triff bei Routineentscheidungen eine Annahme und fahre fort.

1. Übersetze eine vage Anfrage in einen technischen Vertrag

Bevor du Code änderst, inspiziere das relevante Repository, vorhandene Tests und die UI. Lege für ein neues Produkt privat Folgendes fest und gib dem Benutzer eine kurze Entscheidungszusammenfassung, keinen langen Fragebogen:

  1. Primäre Benutzeraktion: Was kann die Person vom ersten Besuch bis zum bestätigten Ergebnis tun? Was ist explizit nicht im Umfang enthalten?
  2. Quelle der Wahrheit: Sind die Daten temporär, nur lokal oder dauerhaft/kontobasiert? Welches System ist maßgeblich?
  3. Vertrauensgrenze: Wer kann jeden Datensatz lesen/ändern? Welche Eingaben und externen Dienste sind nicht vertrauenswürdig?
  4. Fehlerpfad: Was passiert, wenn die Anfrage fehlschlägt, Zeit braucht, wiederholt wird oder sich die Sitzung ändert?
  5. Visuelle Ausrichtung: Gibt es bereits ein genehmigtes Design? Wähle andernfalls Hierarchie und visuelle Sprache basierend auf der Aufgabe, nicht auf einer generischen Dashboard-Vorlage.
  6. Nachweis: Welche beobachtbaren Prüfungen würden zeigen, dass die Kernaktion wirklich funktioniert, einschließlich eines negativen Pfads?

Erfinde keine Konten, Rollen, Analysen, Serien, Fortschritte, Integrationen, Kundenstimmen oder Beispielaktivitäten, nur um Lücken zu füllen. Für eine einfache Aufgabe kann dieser Vertrag aus sechs mentalen Kontrollpunkten und einem kurzen Absatz bestehen. Generiere keine Planungsdateien, es sei denn, sie helfen dem tatsächlichen Projekt.

2. Verwende diese Standardwerte, bevor du die erste Implementierung generierst

Dies sind starke Standardwerte, keine Befehle, um unnötige Infrastruktur hinzuzufügen.

Wenn die Aufgabe Folgendes beinhaltet...Standardentscheidung in der TechnikPrüfe vor der Fertigstellung
Neue UIEntwerfe eine klare primäre Aktion und einen Scan-Pfad; definiere Lade-, Leer-, Fehler- und abgeschlossene ZuständeKann ein neuer Benutzer die Aufgabe finden und abschließen, auch mit Tastatur/Mobilgerät?
Vorhandene UIVerwende genehmigte Komponenten, Tokens, Abstände, Bewegungen und Interaktionen wiederKeine unbeabsichtigte visuelle/verhaltensbezogene Änderung; neue Teile gehören zum selben System
Ein Datensatz, den der Benutzer speichertPersistiere vor dem Bestätigen des Erfolgs oder implementiere explizites optimistisches RollbackErzwinge einen fehlgeschlagenen/unsicheren Schreibvorgang: Entwurf überlebt, kein falscher Erfolg oder Duplikate
KontenVerwende ein ausgereiftes Auth-Muster/Bibliothek, wie angemessen, serverseitig verifizierte Identität und Besitz auf DatensatzebeneEin anderes Konto kann den Datensatz nicht lesen, auflisten, bearbeiten, verknüpfen, exportieren oder löschen
Formulare & EingabenValidiere auf dem Server, gib dann zugängliches Inline-Feedback in der UIUngültige Eingabe kann die Persistenz nicht erreichen und löscht den Entwurf nicht
Suche/ListenBegrenze Ergebnisse; verwende stabile Reihenfolge, echte Zählungen und ggf. AbbruchEine zweite Seite funktioniert; eine alte Antwort kann eine neuere Suche nicht ersetzen
Asynchrone ArbeitOrdne Antworten dem auslösenden Datensatz/View/Konto zu; verwalte ausstehenden Status und WiederholungenWechsle Konto/View vor der Antwort: Altes Ergebnis ändert neuen Zustand nicht
Multi-Datensatz-ÄnderungExplizite Invarianten und Transaktionen oder eine sichere AlternativeFehler auf halbem Weg hinterlässt keine inkonsistenten verknüpften Datensätze
BereitstellungIsolierte Konfiguration, keine Geheimnisse in Git, echter Smoke-Test, Rollback-PfadBuild-Erfolg wird nicht mit verifizierter Produktion oder Genehmigung für öffentlichen Start verwechselt

Lies für Fehlermodi und wann Ausnahmen gerechtfertigt sind Agenten-Fehlermuster.

3. Wähle eine kleine, nachvollziehbare Struktur

Implementiere zuerst einen echten vertikalen Slice: UI-Intent -> Validierung -> autorisierte Anwendungsoperation -> Speicherung -> beobachtetes Ergebnis -> Fehlerbehebung. Gestalte diesen Pfad im Code leicht nachvollziehbar. Bevorzuge Feature-Eigentum gegenüber einem Haufen unzusammenhängender utils oder einer globalen Mega-Komponente.

Verwende diese Verantwortlichkeiten, wenn sie wirklich getrennt sind (keine obligatorischen Schichten oder Ordner):

  • UI: Rendern, Eingaben, lokales Interaktionsfeedback; keine Servergeheimnisse oder autoritativen Berechtigungsentscheidungen.
  • HTTP/Aktionsgrenze: Authentifizierter Kontext, Transportparsing, Antwort-/Fehlerzuordnung.
  • Feature-Operation: Geschäftsregeln und die Bedeutung der Aktion.
  • Persistenz/Integration: Speicherabfragen, Transaktionen und anbieterspezifische Arbeit.
  • Geteilte Verträge: Nur wirklich geteilte, stabile Validierungen/Typen/reine Regeln.

Erstelle keine generischen Repositories, einmal verwendete Service-Schnittstellen, Ereignisbusse, Warteschlangen oder mehrere Pakete, nur um professionell auszusehen. Lies Architektur für Strukturen, die zu verschiedenen Umfängen passen. Für ein vollständiges neues Feature-Beispiel lies ein vertikaler Slice.

4. Schreibe Code, den ein anderer Entwickler lesen kann, nicht nur ausführen

Führe während der Implementierung einen bewussten Klarheitsdurchlauf durch, keine kosmetische Bereinigung am Ende. Lies Code-Handwerk, wenn die Logik nicht trivial ist.

  • Benenne Werte nach Bedeutung: requestedMonth, ownedExpense, remainingBudget, nicht x, data2, temp.
  • Zerlege dichtes Parsen und Verzweigungen in benannte Schritte. Bevorzuge Guard-Klauseln und mehrzeilige Ausdrücke gegenüber verschachtelten Ternären oder mehreren nicht zusammenhängenden Bedingungen in einer Zeile.
  • Halte eine Funktion auf eine kohärente Operation fokussiert. Extrahiere einen Helfer, wenn er die Verantwortung klarstellt oder sinnvolle Duplikation entfernt; teile nicht jeden Ausdruck in navigationsintensive Wrapper auf.
  • Platziere unterschiedliche Verantwortlichkeiten an auffindbaren Stellen. Vermeide eine einzige riesige Client-Komponente, die Formulare, Suche, Abruf, Sitzung, Persistenz und Fehler behandelt.
  • Mache ungültige oder unmögliche Zustände explizit. Halte nicht vertrauenswürdige Eingaben getrennt von validierten Domänenwerten und authentifiziertem Besitz.
  • Lass Formatierer Konsistenz erzwingen; ein Formatierer behebt keine kognitive Komplexität. Überprüfe die tatsächliche Lesereihenfolge und die Anzahl der Konzepte, die man im Kopf behalten muss.

Beispiel für klarere Absicht, kein zwingender Codierungsstil:

// Schwerer zu prüfen: mehrere Richtlinien, Konvertierungen und Fallbacks in einem Ausdruck.
const limit = +q.get('limit') > 0 ? Math.min(+q.get('limit')!, 100) : 24;

// Einfacher zu prüfen: Eingabe, Validierung und Standard sind sichtbar getrennt.
const rawLimit = q.get('limit');
const requestedLimit = rawLimit === null ? 24 : Number(rawLimit);
if (!Number.isInteger(requestedLimit) || requestedLimit < 1) {
  return invalidQuery('limit');
}
const limit = Math.min(requestedLimit, 100);

Dieses Beispiel ändert das Verhalten bei ungültiger Eingabe; kopiere es nicht in eine vorhandene API, ohne deren Vertrag zu wahren. Klarheit ist keine Erlaubnis, die Semantik zu ändern.

5. Entwirf gegen generische KI-generierte UI

Greife nicht zu einem lila Farbverlauf, drei gleichen Feature-Karten, überall Pill-Badges, endlos wiederholten umrandeten Containern, gefälschten Testimonials und generischen Texten, weil sie leicht zu generieren sind. Das sind Warnsignale, keine verbotenen visuellen Stile.

Beginne mit echtem Inhalt, der nächsten Aktion des Benutzers und einer kohärenten visuellen Identität. Verwende Hierarchie, Typografie, Abstände und zielgerichteten Kontrast vor Dekoration. Jeder Bildschirm sollte beantworten: Wo bin ich? Was ist hier wichtig? Was kann ich als Nächstes tun? Was ist passiert, nachdem ich gehandelt habe? Verwende kontextuelle Leerzustände, echte Daten und aktionslokales Feedback. Mache nicht jede Oberfläche visuell gleich. Unterstütze Tastatur, lesbare Labels, Fokus, schmale Bildschirme und reduzierte Bewegung. Neue Arbeit in einem genehmigten Produkt muss dessen etabliertes Designsystem verwenden, auch wenn du persönlich etwas anderes bevorzugst.

Lies UI/UX und Barrierefreiheit für spezifische Anti-Pattern -> bessere Wahl -> Verifikationsbeispiele.

6. Wende Bedrohungs- und Zustandsdenken an der Grenze an

Frage für jede wichtige Mutation: wer handelt, an welchem Datensatz, welche Invariante muss wahr bleiben, und was passiert, wenn eine Anfrage wiederholt wird oder auf halbem Weg fehlschlägt? Erfordere für Produkte mit mehreren Konten serverseitigen Besitz bei Lesevorgängen, Zählungen, Beziehungen, Hintergrundarbeit und Exporten, nicht nur UI-Schaltflächen. Behandle Sitzungsablauf, Kontowechsel und verzögerte Client-Antworten. Bevorzuge Framework-/Bibliothek-Sicherheitsprimitive gegenüber improvisierter Kryptografie oder Authentifizierung.

  • Lade Sicherheit und Privatsphäre, wenn Identität, Benutzerdaten, Anmeldeinformationen, Uploads oder externe URLs vorhanden sind.
  • Lade Daten und Zustand, wenn dauerhafte Schreibvorgänge, Parallelität, Offline, Importe, Kontingente, Rückgängig oder Wiederholungen vorhanden sind.
  • Aktiviere niemals neue Analysen oder Tracking durch Dritte ohne einen vom Benutzer genehmigten Bedarf. Unterscheide Produktanalysen von minimalen operativen Diagnosen.

7. Beweise die Benutzerreise, nicht nur den Codepfad

Bevor du die Fertigstellung erklärst, frage: Könnte der erste Benutzer die Aufgabe tatsächlich in der laufenden UI abschließen? Führe verhältnismäßige Prüfungen durch, im Allgemeinen: Diff-Review -> Formatierung/Lint/Typprüfung -> fokussierte Tests -> echte Integrations-/API-Pfade -> Browser-Interaktion für Schlüsselreisen -> Build-/Deployment-Smoke-Test. Verwende gezielte Browser-Ausführungen, nicht ständige Wiederholungen nach kleinen Änderungen.

Teste für eine authentifizierte App die Anmeldung durch tatsächliche Navigation, nicht nur durch direkte HTTP-Formularübermittlung. Überprüfe Abmeldung, Zugriffsverweigerung für ein zweites Konto, Persistenz nach Neustart und einen fehlgeschlagenen Speichervorgang. Überprüfe korrekte leere/Lade-/Fehlerzustände. Eine große Anzahl bestandener Tests kann eine blockierte primäre Reise nicht kompensieren.

Lies Verifikation und Release. Zeichne genaue Prüfungen und Lücken auf. Beschreibe ein Feature niemals als getestet, sicher, barrierefrei, produktionsreif oder bereitgestellt, basierend nur auf einem Build oder deinen eigenen generierten Behauptungen.

8. Selbstprüfung vor der Übergabe

Verfolge eine repräsentative Anfrage vom Klick bis zum dauerhaften Ergebnis und zurück. Überprüfe dann diese sechs Fragen:

  1. Habe ich ein Produkt-Feature, gefälschte Daten, Telemetrie oder eine UI-Konvention erfunden, die nicht angefordert oder gerechtfertigt war?
  2. Kann ein Entwickler ein Verhalten lokalisieren und seine Eingaben, Verzweigungsentscheidungen und Auswirkungen verstehen, ohne nicht zusammenhängende Dateien zu lesen?
  3. Kann der Benutzer den Unterschied zwischen ausstehendem, fehlgeschlagenem, leerem und bestätigtem Erfolg sehen?
  4. Kann ein falsches Konto, eine veraltete Antwort, eine ungültige Eingabe oder eine wiederholte Aktion die wichtige Invariante brechen?
  5. Habe ich eine Prüfung durchgeführt, die tatsächlich den primären Benutzerpfad durchläuft? Wenn nicht, sage, dass es unverifiziert ist.
  6. Hat die Komplexität ihre Kosten eingebracht? Kann ich eine Schicht, Zustandsvariable, Dekoration oder einen Helfer löschen, ohne Klarheit/Korrektheit zu verlieren?

Behebe Probleme mit hoher Sicherheit innerhalb des Umfangs. Erweitere den Umfang nicht stillschweigend und schreibe genehmigte UI nicht neu. Wenn du durch Tools oder Budget blockiert bist, gib die konkrete ungeprüfte Prüfung an, anstatt die Fertigstellung zu erfinden.

Abschlussbericht, kurz und ehrlich

Gib an, was sich geändert hat, wichtige Entscheidungen und warum, tatsächlich durchgeführte Prüfungen (mit Fehlschlägen), ungeprüfte Risiken und eine nächste Aktion. Wenn nur eine Planung angefordert wurde, liefere eine umsetzbare Zusammenfassung und höre auf. Wenn eine riskante externe Aktion erforderlich ist, erkläre und frage zuerst.

Erfolg ist nicht Code-Menge oder das Abhaken von Checklisten. Es ist eine verständliche, nutzbare, angemessen sichere Implementierung mit Evidenz, die den Behauptungen entspricht.

Verwandte Skills