Files
telenetsystems-2026-02-03-v1/skills/DEFINITION_OF_DONE.md

431 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Definition of Done
Harte Abnahmekriterien. Eine Aufgabe gilt erst als abgeschlossen, wenn alle Kriterien erfüllt sind.
---
## Scope
Diese Datei definiert **verbindliche Abnahmekriterien** für:
- Build und Deployment
- Code-Qualität
- Responsive Design
- Accessibility
- SEO
- Projektspezifikation
- **9 Parameter-Kategorien (AJ)**
**Geltungsbereich:** Gilt global für jedes Projekt. Keine Aufgabe ist fertig, bis diese Checkliste erfüllt ist.
---
## Read Order
Diese Datei wird nach den anderen Skills gelesen:
1. `skills/SYSTEM_SKILLS.md`
2. `skills/UI_GUIDELINES.md`
3. `skills/DEFINITION_OF_DONE.md` (diese Datei)
4. `skills/CLIENT_OVERRIDES.md`
Die Definition of Done ist die finale Prüfinstanz vor Abschluss einer Aufgabe.
---
## Non-Goals
Diese Datei definiert **NICHT**:
- Wie das Design aussehen soll
- Welche Farben oder Layouts verwendet werden
- Konkrete UI-Vorgaben
- Wie Code strukturiert sein soll (siehe SYSTEM_SKILLS.md)
Diese Datei prüft nur, ob Qualitätsstandards eingehalten wurden.
---
## Kategorie A — Unternehmensidentität
### Pflicht
- [ ] Client-Name erscheint im Seitentitel
- [ ] Client-Name erscheint im Footer
- [ ] Client-Name erscheint im Impressum
- [ ] `lang`-Attribut entspricht dem definierten Locale (z.B. `de`, `de-AT`, `en`)
- [ ] Standort korrekt im Footer/Kontaktbereich dargestellt (falls definiert)
- [ ] Kontaktdaten korrekt dargestellt (falls definiert)
---
## Kategorie B — Zielgruppe
### Pflicht
- [ ] Content ist auf das Wissensniveau der Zielgruppe abgestimmt
- [ ] Typische Einwände werden auf Überzeugungsseiten adressiert (falls definiert)
- [ ] Hauptprobleme der Zielgruppe werden in Hero/Intro angesprochen (falls definiert)
- [ ] Sprachniveau passt zum definierten Entscheidertyp
### Bei Zielgruppen-spezifischen Inhalten
- [ ] Fachbegriffe erklärt (wenn Zielgruppe = Laien)
- [ ] Fachbegriffe verwendet (wenn Zielgruppe = Experten)
---
## Kategorie C — Kommunikation
### Pflicht
- [ ] Ansprache (du/sie) ist konsistent auf ALLEN Seiten
- [ ] Ansprache ist konsistent in ALLEN UI-Elementen (Buttons, Labels, Microcopy)
- [ ] Tonalität entspricht den definierten `baseTone`-Werten
- [ ] Schreibstil entspricht den definierten `writingStyle`-Werten
- [ ] Emotionales Gefühl spiegelt sich im Gesamtdesign wider
### Konsistenz-Check
```
[ ] Alle Buttons mit korrekter Ansprache?
[ ] Alle Formular-Labels mit korrekter Ansprache?
[ ] Alle Microcopy-Elemente mit korrekter Ansprache?
[ ] Keine Mischung von Du und Sie?
```
---
## Kategorie D — Angebot
### Pflicht
- [ ] Alle definierten Leistungen sind auf der Website dargestellt
- [ ] Jede Leistung hat Titel
- [ ] Jede Leistung hat Beschreibung
- [ ] Jede Leistung hat Nutzen-Kommunikation (falls definiert)
- [ ] Angebotstyp bestimmt das Layout:
- Dienstleistung → Services-Grid oder Liste
- Produkt → Produkt-Karten
- Beratung → Prozess-Darstellung
---
## Kategorie E — Seitenarchitektur
### Pflicht
- [ ] Alle definierten Seiten existieren als Routes unter `app/`
- [ ] Jede Seite erfüllt ihren definierten Zweck:
- `informieren`: Fakten-First, klare Struktur, CTAs dezent
- `ueberzeugen`: USPs prominent, Social Proof, Argumentation
- `konvertieren`: CTAs above-the-fold, Trust-Elemente, Einwand-Behandlung
- [ ] Seiten mit Priorität `hoch` sind am detailliertesten umgesetzt
- [ ] Navigation enthält alle Seiten in logischer Reihenfolge
- [ ] Interne Verlinkungswünsche umgesetzt (falls definiert)
### Seiten-Zweck-Check
| Seite | Purpose | Priority | Umgesetzt |
|-------|---------|----------|-----------|
| (aus Spec) | (aus Spec) | (aus Spec) | [ ] |
---
## Kategorie F — Marke & Stil
### Pflicht
- [ ] Alle Farben kommen aus Design-Tokens (`globals.css`)
- [ ] Keine hardcodierten Hex/RGB-Werte im Code
- [ ] Heading-Font entspricht `brand.fonts.heading.family`
- [ ] Body-Font entspricht `brand.fonts.body.family`
- [ ] Visueller Stil entspricht den Stil-Adjektiven
- [ ] **Keines der Stil-Verbote wurde verletzt**
### Stil-Check
```
[ ] Passt jedes UI-Element zu den Stil-Adjektiven?
[ ] Verstößt kein Element gegen die Stil-Verbote?
[ ] Logo korrekt eingebunden (falls vorhanden)?
```
---
## Kategorie G — UX & Interaktion
### Pflicht
- [ ] Interaktionsniveau entspricht dem definierten Level (`ruhig`/`moderat`/`dynamisch`)
- [ ] Animations-Level ist korrekt (`keine`/`dezent`/`praesent`)
- [ ] Scroll-Verhalten ist korrekt konfiguriert (`normal`/`smooth`)
### Level-spezifische Checks
**Bei `ruhig`:**
- [ ] Keine framer-motion Animationen vorhanden
- [ ] Kein Parallax
- [ ] Maximal 1 CTA pro Viewport
- [ ] Große Whitespace-Blöcke
**Bei `moderat`:**
- [ ] Nur dezente Fade-In Animationen
- [ ] Subtile Hover-Effekte
- [ ] framer-motion sparsam eingesetzt
**Bei `dynamisch`:**
- [ ] Scroll-Animationen vorhanden
- [ ] Micro-Interactions implementiert
- [ ] framer-motion aktiv eingesetzt
---
## Kategorie H — Conversion
### Pflicht
- [ ] Primärer CTA-Text korrekt implementiert
- [ ] Primärer CTA-Ziel korrekt verlinkt
- [ ] Sekundärer CTA-Text korrekt implementiert (falls definiert)
- [ ] Sekundärer CTA-Ziel korrekt verlinkt (falls definiert)
### Kontaktmethoden
- [ ] `formular`: Kontaktformular auf Kontaktseite vorhanden
- [ ] `telefon`: Telefonnummer im Header sichtbar
- [ ] `buchung`: Buchungstool-Embed vorhanden (oder Platzhalter)
### Vertrauenselemente
- [ ] `bewertungen`: Bewertungs-Widgets oder Zitat-Karten platziert
- [ ] `zertifikate`: Logo-Leiste mit Zertifizierungen vorhanden
- [ ] `referenzen`: Kundenlogos oder Case-Studies eingebunden
- [ ] `community`: Mitglieder-Zahlen oder Social-Feeds vorhanden
### Conversion-Seiten-Check
- [ ] Konvertierungsseiten haben prominente CTAs above-the-fold
- [ ] Trust-Section direkt unter Hero auf Conversion-Seiten
- [ ] Einwand-Entkräftung vor Kontaktformular
---
## Kategorie I — Technik & Recht
### Impressum
- [ ] Impressum-Seite unter `/impressum` vorhanden
- [ ] `companyName` korrekt
- [ ] `street` korrekt
- [ ] `postalCode` + `city` korrekt
- [ ] `country` korrekt
- [ ] `email` korrekt
- [ ] `phone` korrekt (falls definiert)
- [ ] `vatId` korrekt (falls definiert)
- [ ] `register` korrekt (falls definiert)
### Datenschutz
- [ ] Datenschutz-Seite unter `/datenschutz` vorhanden
- [ ] Cookie-Hinweis enthalten
- [ ] Hosting-Info enthalten (aus `spec.technical.hosting`)
- [ ] Analytics-Angabe enthalten (aus `spec.technical.tracking`)
### Integrationen
- [ ] Newsletter-Integration vorhanden (wenn `newsletter: true`)
- [ ] Newsletter-Signup im Footer
- [ ] Buchungstool-Embed vorhanden (wenn `bookingTool` definiert)
- [ ] Externe Integrationen als TODO-Kommentare markiert
---
## Kategorie J — KI-Kontext
### Pflicht
- [ ] `whatIsImportant` wurde bei JEDER Designentscheidung berücksichtigt
- [ ] `whatToAvoid` wurde nirgendwo verletzt
- [ ] Positive Referenzen wurden als Inspiration erkennbar einbezogen (falls definiert)
- [ ] Negative Referenzen wurden bewusst vermieden (falls definiert)
### KI-Kontext-Check
```
[ ] Was ist besonders wichtig? → Umgesetzt?
[ ] Was darf auf keinen Fall passieren? → Vermieden?
[ ] Bei Konflikten: Kat. J priorisiert?
```
---
## Build & Deployment
### Pflicht
- [ ] `npm run build` erfolgreich ohne Fehler
- [ ] Keine TypeScript-Fehler
- [ ] Keine ESLint-Fehler (Warnungen dokumentieren falls unvermeidbar)
- [ ] Keine Runtime-Errors in der Console
### Bei Fehlern
Build-Fehler müssen vor Abschluss behoben werden. Keine Ausnahmen.
---
## Code-Qualität
### Pflicht
- [ ] Keine `any` Types in TypeScript
- [ ] Keine auskommentierten Code-Blöcke
- [ ] Keine `console.log` im Production-Code
- [ ] Konsistente Namenskonventionen
- [ ] Keine ungenutzten Imports oder Variablen
- [ ] Keine Dead Code (ungenutzte Funktionen/Komponenten)
### Abhängigkeiten
- [ ] Keine ungenutzten Dependencies in `package.json`
- [ ] Keine Sicherheitslücken in Dependencies (soweit bekannt)
---
## Responsive Design
### Pflichtprüfung
| Viewport | Bereich | Status |
|----------|---------|--------|
| Mobile | 320px - 767px | [ ] geprüft |
| Tablet | 768px - 1023px | [ ] geprüft |
| Desktop | 1024px+ | [ ] geprüft |
### Kriterien
- [ ] Keine horizontalen Scrollbars auf keinem Viewport
- [ ] Keine abgeschnittenen oder überlagernden Inhalte
- [ ] Touch-Targets mindestens 44x44px auf Touch-Geräten
- [ ] Lesbare Schriftgrößen ohne Zoom
---
## Accessibility
### Pflicht
- [ ] Kontrast WCAG AA erfüllt (4.5:1 Text, 3:1 UI-Elemente)
- [ ] Tastatur-Navigation funktioniert vollständig
- [ ] Fokus-Indikatoren sind sichtbar
- [ ] Semantisches HTML verwendet (keine `<div>` statt `<button>`)
- [ ] Alt-Texte für alle informativen Bilder
- [ ] Formular-Labels vorhanden und verknüpft
### Bei Ausnahmen
Kontrast-Ausnahmen müssen dokumentiert und begründet werden. Es muss ein Plan zur Behebung existieren.
---
## SEO Mindeststandard
### Pflicht pro Seite
- [ ] Eindeutiger `<title>` vorhanden
- [ ] Meta-Description vorhanden
- [ ] Korrekte Heading-Hierarchie (nur ein `h1`, dann `h2` > `h3`)
- [ ] Open Graph Tags gesetzt
- [ ] Alt-Texte für Bilder
### Pflicht global
- [ ] `robots.txt` vorhanden
- [ ] Canonical URLs gesetzt (falls relevant)
- [ ] Keine Blocking-Resources für Crawler
---
## Performance
### Pflicht
- [ ] Bilder optimiert (WebP/AVIF, responsive srcset)
- [ ] Lazy Loading für Below-the-fold-Inhalte
- [ ] Keine unnötigen Dependencies
- [ ] Bundle-Größe im Budget (JS < 100kb gzip, CSS < 30kb gzip)
### Empfohlen
- [ ] Core Web Vitals im grünen Bereich (LCP < 2.5s, CLS < 0.1, INP < 200ms)
---
## Browser-Kompatibilität
Unterstützte Browser (letzte 2 Major-Versionen):
- [ ] Chrome
- [ ] Firefox
- [ ] Safari
- [ ] Edge
Bei bekannten Inkompatibilitäten: dokumentieren und Workaround bereitstellen.
---
## Projektspezifikation
### Pflicht
- [ ] Alle Anforderungen aus `ProjectSpec.json` umgesetzt
- [ ] Design entspricht `design_tokens.json` und `stylesheet.css`
- [ ] Keine eigenmächtigen Design-Entscheidungen
- [ ] CLIENT_OVERRIDES.md berücksichtigt (falls vorhanden)
### Dokumentation
- [ ] Änderungen in `generation_log.json` maschinell dokumentiert
---
## Schnell-Checkliste
Vor Abschluss jeder Aufgabe durchgehen:
```
[ ] 1. npm run build erfolgreich?
[ ] 2. Mobile (320px) geprüft?
[ ] 3. Tablet (768px) geprüft?
[ ] 4. Desktop (1024px+) geprüft?
[ ] 5. Kontrast WCAG AA erfüllt?
[ ] 6. Tastatur-Navigation funktioniert?
[ ] 7. SEO-Basics vorhanden (title, description, h1)?
[ ] 8. Anforderungen aus ProjectSpec erfüllt?
[ ] 9. Kein Dead Code oder ungenutzte Dependencies?
[ ] 10. generation_log.json aktualisiert?
```
### Kategorie-Schnellcheck
```
[ ] A. Unternehmensidentität korrekt?
[ ] B. Zielgruppe berücksichtigt?
[ ] C. Ansprache konsistent?
[ ] D. Alle Leistungen dargestellt?
[ ] E. Alle Seiten mit richtigem Purpose?
[ ] F. Stil-Adjektive eingehalten, Verbote vermieden?
[ ] G. Interaktionsniveau korrekt?
[ ] H. CTAs und Trust-Elemente platziert?
[ ] I. Impressum und Datenschutz vollständig?
[ ] J. KI-Kontext beachtet?
```
---
## Zusammenfassung
> Erst wenn alle Checkboxen erfüllt sind, gilt eine Aufgabe als erledigt.
> Keine Ausnahmen ohne explizite Dokumentation und Begründung.
> Build-Fehler sind Blocker. Accessibility-Verstöße sind Blocker.
> KI-Kontext-Verstöße (Kat. J `whatToAvoid`) sind Blocker.