6.9 KiB
UI Guidelines
Qualitätsregeln für Benutzeroberflächen. Keine Designvorgaben.
Scope
Diese Datei definiert Qualitätsanforderungen für:
- Accessibility (Barrierefreiheit)
- Responsive Design (Mobile-First)
- Performance-Budgets
- SEO-Grundlagen
- GEO/AI-Search-Optimierung
- Interaktionsqualität
Geltungsbereich: Gilt global für jedes Projekt. Definiert WIE UI gebaut wird, nicht WIE sie aussieht.
Read Order
Diese Datei wird nach SYSTEM_SKILLS.md gelesen:
skills/SYSTEM_SKILLS.mdskills/UI_GUIDELINES.md(diese Datei)skills/DEFINITION_OF_DONE.mdskills/CLIENT_OVERRIDES.md- Projekt-Specs
Non-Goals
Diese Datei definiert NICHT:
- Welche Farben verwendet werden (kommt aus Tokens)
- Welche Schriftarten verwendet werden (kommt aus Tokens)
- Welche Layouts oder Sections erstellt werden (kommt aus ProjectSpec)
- Konkrete visuelle Gestaltung
- UI-Templates oder Komponenten-Vorlagen
Regel: Alle visuellen Entscheidungen kommen aus design_tokens.json und stylesheet.css.
Accessibility (Barrierefreiheit)
WCAG 2.1 Level AA
Jede UI muss mindestens WCAG 2.1 Level AA erfüllen:
| Anforderung | Kriterium |
|---|---|
| Kontrast (normaler Text) | mindestens 4.5:1 |
| Kontrast (großer Text) | mindestens 3:1 |
| Kontrast (UI-Elemente) | mindestens 3:1 |
| Fokus-Indikator | sichtbar für alle interaktiven Elemente |
| Tastatur-Navigation | vollständig ohne Maus bedienbar |
| Screen Reader | alle Inhalte zugänglich |
Semantisches HTML
<!-- Korrekt -->
<button type="button">Aktion ausführen</button>
<a href="/kontakt">Zum Kontaktformular</a>
<nav aria-label="Hauptnavigation">...</nav>
<!-- Falsch -->
<div onclick="...">Aktion ausführen</div>
<span class="link">Zum Kontaktformular</span>
<div class="nav">...</div>
ARIA-Attribute
- ARIA nur verwenden, wenn natives HTML nicht ausreicht
aria-labelfür Icons ohne sichtbaren Textaria-expanded,aria-hiddenfür dynamische Inhaltearia-livefür dynamische Updates (z.B. Fehlermeldungen)rolenur wenn semantisches HTML keine Option ist
Formulare
- Jedes Eingabefeld braucht ein sichtbares
<label> - Fehlermeldungen sind klar, hilfreich und programmatisch verknüpft
- Pflichtfelder sind gekennzeichnet (
aria-required) - Validierung sowohl visuell als auch für Screenreader
- Autofill-Attribute (
autocomplete) wo sinnvoll
Nicht nur Farbe
- Informationen nie nur durch Farbe vermitteln
- Zusätzliche Indikatoren: Icons, Text, Muster, Unterstreichungen
Responsive Design
Mobile-First Pflicht
Basis-Styles gelten für Mobile. Erweiterungen für größere Screens:
/* Basis: Mobile (< 640px) */
.element {
flex-direction: column;
padding: var(--spacing-sm);
}
/* Tablet und größer */
@media (min-width: 768px) {
.element {
flex-direction: row;
padding: var(--spacing-md);
}
}
Breakpoints
Breakpoints aus design_tokens.json verwenden:
| Token | Wert | Gerät |
|---|---|---|
sm |
640px | Große Smartphones |
md |
768px | Tablets |
lg |
1024px | Kleine Laptops |
xl |
1280px | Desktop |
2xl |
1536px | Große Screens |
Prüfpflicht
- Minimum: 320px (kleine Smartphones)
- Maximum: unbegrenzt (fluid bis Container-Max)
- Keine horizontalen Scrollbars
- Keine abgeschnittenen Inhalte
- Touch-Targets: mindestens 44x44px
Fluid Typography
Schriftgrößen skalieren responsiv (wenn in Tokens definiert):
font-size: clamp(1rem, 2vw + 0.5rem, 1.5rem);
SEO Basics
Pflicht-Elemente pro Seite
- Eindeutiger
<title>(50-60 Zeichen) - Meta-Description (150-160 Zeichen)
- Korrekte Heading-Hierarchie (
h1>h2>h3, nur einh1pro Seite) - Alt-Texte für alle informativen Bilder
- Open Graph Tags (
og:title,og:description,og:image) - Canonical URL (bei Duplicate Content)
Strukturierte Inhalte
- Semantische HTML-Elemente verwenden
- Strukturierte Daten (JSON-LD) wo sinnvoll:
- Organization
- LocalBusiness
- FAQ
- BreadcrumbList
- Article
Technisches SEO
- Sprechende URLs
robots.txtvorhandensitemap.xmlgeneriert- Keine Duplicate Content ohne Canonical
- Keine Blocking-Resources im Critical Path
GEO / AI-Search-Optimierung
Klare Informationsarchitektur
- Prägnante, gut strukturierte Abschnitte
- Klare Überschriften, die den Inhalt beschreiben
- Faktenbasierte, zitierbare Aussagen
- Keine Marketing-Floskeln ohne Substanz
FAQ wo sinnvoll
- FAQ-Schema für häufige Fragen
- Klare Frage-Antwort-Struktur
- Direkte, hilfreiche Antworten
Zitierbarkeit
- Unique Content mit klarem Mehrwert
- Quellenangaben wo relevant
- Autorenschaft und Expertise zeigen (E-E-A-T)
Performance Budget
Core Web Vitals Ziele
| Metrik | Ziel | Beschreibung |
|---|---|---|
| LCP | < 2.5s | Largest Contentful Paint |
| INP | < 200ms | Interaction to Next Paint |
| CLS | < 0.1 | Cumulative Layout Shift |
Asset-Limits
| Asset-Typ | Maximum |
|---|---|
| JavaScript Bundle (gzip) | < 100kb |
| CSS Bundle (gzip) | < 30kb |
| Einzelbild | < 200kb |
| Gesamte Seite | < 1.5MB |
Optimierungspflichten
- Bilder: WebP/AVIF, responsive
srcset, Lazy Loading - Fonts: Subset,
display: swap, Preload für kritische Fonts - JavaScript: Code-Splitting, Tree-Shaking, defer/async
- CSS: Kritisches CSS inline, Rest async laden
Interaktionen
Feedback-Pflicht
- Hover-States für alle klickbaren Elemente
- Focus-States sichtbar und deutlich
- Loading-States für asynchrone Aktionen
- Erfolgs- und Fehlermeldungen klar kommunizieren
Animationen
- Subtil und zweckmäßig (nicht dekorativ)
prefers-reduced-motionrespektieren- UI-Feedback-Animationen < 300ms
- Keine automatisch startenden Videos/Animationen
@media (prefers-reduced-motion: reduce) {
*,
*::before,
*::after {
animation-duration: 0.01ms !important;
transition-duration: 0.01ms !important;
}
}
Typografie (Qualität, nicht Design)
Lesbarkeit
- Zeilenlänge: 45-75 Zeichen optimal
- Zeilenabstand: 1.4-1.6 für Fließtext
- Ausreichende Absatzabstände
Hierarchie
- Klare visuelle Hierarchie durch Größen/Gewichte
- Konsistente Heading-Levels
- Logische Informationsstruktur
Hinweis: Konkrete Schriftarten, -größen und -farben kommen aus design_tokens.json.
Farben (Qualität, nicht Design)
Kontrastprüfung
Alle Farbkombinationen müssen geprüft werden:
- Tool: WebAIM Contrast Checker oder ähnlich
- Dokumentierte Ausnahmen sind möglich, aber selten
Herkunft
- Alle Farben kommen aus
design_tokens.jsonoderstylesheet.css - Keine hardcodierten Hex/RGB-Werte im Code
- CSS-Variablen verwenden
Zusammenfassung
UI muss zugänglich, responsive, performant und suchmaschinenoptimiert sein. Diese Guidelines definieren Qualitätsstandards, nicht visuelles Design. Design-Entscheidungen kommen aus den Projekt-Specs.