Files
test-2026-02-26-v1/skills/SYSTEM_SKILLS.md

480 lines
14 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.
# System Skills
Verbindliche Regeln für die KI-gestützte Website-Generierung im Agentur-Kontext.
---
## Scope
Diese Datei definiert den **harten Rahmen** für:
- Arbeitsweise und Workflow
- Code-Qualität und Repo-Konventionen
- Source of Truth für Design und Anforderungen
- Verbote und Pflichten
**Geltungsbereich:** Gilt global für jedes Projekt. CLIENT_OVERRIDES.md darf diese Regeln präzisieren oder erweitern, aber niemals widersprechen.
---
## Read Order
Die KI muss Dateien in folgender Reihenfolge lesen:
1. `skills/SYSTEM_SKILLS.md` (diese Datei)
2. `skills/UI_GUIDELINES.md`
3. `skills/DEFINITION_OF_DONE.md`
4. `skills/CLIENT_OVERRIDES.md` (falls vorhanden)
5. `spec/ProjectSpec.json`
6. `spec/design_tokens.json`
7. `theme/stylesheet.css` / `theme/globals.css`
Bei Konflikten gilt: **Globale Skills > Client Overrides**
---
## Non-Goals
Diese Datei definiert **NICHT**:
- Konkrete Design-Vorgaben (Farben, Layouts, Abstände)
- UI-Templates oder vorgefertigte Komponenten
- Visuelle Entscheidungen jeglicher Art
- Landingpage-Strukturen oder Section-Vorlagen
Design entsteht ausschließlich aus den Projekt-Specs, nicht aus diesen Skills.
---
## Parameter-Interpreter-Modus
Das System arbeitet mit **9 strukturierten Parameter-Kategorien (AJ)**. Diese Kategorien sind in `CLIENT_OVERRIDES.md` und `master_prompt.md` vollständig aufbereitet.
### Die 9 Kategorien
| Kat. | Name | Beschreibung |
|------|------|--------------|
| A | Unternehmensidentität & Kontext | Name, Slug, Beschreibung, Branche, Standort, Einzugsgebiet, Unternehmensgröße, Reifegrad, Locale, Kontaktdaten |
| B | Zielgruppe & Psychografie | Hauptzielgruppe, Altersbereich, Geschlecht, Entscheidertyp, Wissensstand, typische Einwände, Hauptprobleme |
| C | Tonalität & Kommunikation | Ansprache (Du/Sie), Basis-Tonalität, Schreibstil, emotionales Gefühl |
| D | Angebot & Leistungsstruktur | Angebotstyp, Leistungen mit Titel/Beschreibung/Nutzen, Preissensitivität, Upsells |
| E | Seitenarchitektur | Website-Typ (Onepager/Multipage), Seiten mit Slug/Titel/Beschreibung/Zweck/Priorität/Sections |
| F | Marken- & Stilparameter | Farben (12 Token), Fonts, Logo, Stil-Adjektive (max 5), Stil-Verbote |
| G | UX & Interaktion | Interaktionsniveau, Animationen, Scroll-Verhalten |
| H | Vertrauen & Conversion | Primärer & Sekundärer CTA, Kontaktmethoden, Vertrauenselemente |
| I | Technik & Recht | Domain, Hosting, Tracking, Legal-Daten, Features, Integrationen |
| J | KI-Kontext | Freitext: Was ist BESONDERS WICHTIG, was darf AUF KEINEN FALL passieren, Referenzen |
### Arbeitsweise
- Jede Kategorie enthält fertig aufbereitete Parameter
- **Keine Interpretation nötig** — die Parameter werden 1:1 umgesetzt
- Bei fehlenden Parametern: Sinnvolle Defaults verwenden, aber dokumentieren
---
## KI-Kontext Gewichtungshierarchie
Die Priorität bei Konflikten folgt dieser Hierarchie (höchste zuerst):
```
1. SYSTEM_SKILLS.md
2. UI_GUIDELINES.md
3. DEFINITION_OF_DONE.md
4. KI-KONTEXT (Kategorie J)
5. CLIENT_OVERRIDES (Kategorien AI)
```
### Spezielle Regeln für Kategorie J
- **Kategorie J hat die höchste Gewichtung innerhalb der Client-Parameter**
- Bei Konflikten zwischen Kat. J und Kat. AI: **Kat. J gewinnt**
- Bei Konflikten zwischen Kat. J und SYSTEM_SKILLS/UI_GUIDELINES: **Skills gewinnen**
- `whatIsImportant` aus Kat. J muss in **JEDER Designentscheidung** berücksichtigt werden
- `whatToAvoid` aus Kat. J sind **harte Verbote** — keine Ausnahmen
### Beispiel
Wenn Kat. J sagt "Keine Animationen" und Kat. G sagt "Interaktionsniveau: dynamisch", dann gilt: **Keine Animationen**.
---
## Seiten-Zweck-System
Jede Seite in Kat. E hat einen definierten `purpose` und eine `priority`.
### Purpose-Typen
| Purpose | Beschreibung | Content-Strategie |
|---------|--------------|-------------------|
| `informieren` | Fakten vermitteln | Fakten zuerst, klare Struktur, erklärende Sprache, CTAs dezent |
| `ueberzeugen` | Überzeugungsarbeit leisten | USPs hervorheben, Social Proof, emotionale + rationale Argumentation |
| `konvertieren` | Zur Handlung bewegen | Prominente CTAs, Einwände adressieren, Trust-Elemente, Urgency |
### Priority-Levels
| Priority | Beschreibung |
|----------|--------------|
| `hoch` | Maximaler Detailgrad, höchste Aufmerksamkeit bei der Implementierung |
| `mittel` | Solide Umsetzung mit allen wesentlichen Elementen |
| `niedrig` | Basis-Umsetzung, funktional aber ohne Extras |
### Umsetzung
- **Informieren:** H2-Struktur für Scanability, Inhaltsverzeichnis bei langen Seiten, CTAs am Ende von Sektionen
- **Überzeugen:** Problem → Lösung → Beweis → CTA Flow, USP-Cards/Feature-Grid, Social Proof prominent
- **Konvertieren:** Above-the-fold CTA, Trust-Section direkt unter Hero, Einwand-Entkräftung vor Kontaktformular
---
## Kommunikations-Parameter
Die Kommunikation wird durch Kategorie C definiert und muss **konsistent auf ALLEN Seiten** umgesetzt werden.
### Ansprache (address)
| Wert | Verwendung | Beispiel |
|------|------------|----------|
| `du` | Informelle Ansprache | "Schick uns eine Nachricht", "Dein Name" |
| `sie` | Formelle Ansprache | "Senden Sie uns eine Nachricht", "Ihr Name" |
**Pflicht:** Die gewählte Ansprache gilt für:
- Alle Fließtexte
- Alle Button-Labels
- Alle Formular-Labels und Placeholders
- Alle Microcopy-Elemente
- Alle CTAs
### Tonalität (baseTone)
| Wert | Beschreibung |
|------|--------------|
| `sachlich` | Neutral, faktenbasiert, nüchtern |
| `freundlich` | Warm, einladend, zugänglich |
| `beratend` | Kompetent, hilfsbereit, lösungsorientiert |
| `motivierend` | Energetisch, inspirierend, aktivierend |
| `exklusiv` | Premium, distinguiert, hochwertig |
### Schreibstil (writingStyle)
| Wert | Beschreibung |
|------|--------------|
| `kurz_praegnant` | Kurze Sätze, auf den Punkt, keine Füllwörter |
| `erklaerend` | Ausführlicher, didaktisch, schrittweise |
| `emotional` | Gefühlsbetont, storytelling, persönlich |
| `technisch` | Fachsprachlich, präzise, detailliert |
### Emotionales Gefühl (emotionalFeeling)
Beschreibt das gewünschte Gesamtgefühl der Website (z.B. "vertrauenswürdig und modern", "dynamisch und innovativ"). Muss sich im Gesamtdesign widerspiegeln.
---
## Vertrauens- & Conversion-Elemente
Kategorie H definiert, wie Vertrauen aufgebaut und Conversions erzielt werden.
### Vertrauenselemente (trustElements)
| Element | Implementierung |
|---------|-----------------|
| `bewertungen` | Google/Trustpilot-Widgets oder Zitat-Karten mit Sternebewertung |
| `zertifikate` | Logo-Leiste mit Zertifizierungen (TÜV, ISO, etc.) |
| `referenzen` | Kundenlogos oder Case-Study-Snippets |
| `community` | Mitglieder-Zahlen, Social-Media-Feeds, Follower-Counts |
### Kontaktmethoden (contactMethods)
| Methode | Implementierung |
|---------|-----------------|
| `formular` | Kontaktformular prominent auf Kontaktseite, ggf. auch in Footer |
| `telefon` | Telefonnummer im Header + sticky CTA auf Mobile |
| `buchung` | Buchungstool-Integration (z.B. Calendly-Embed) auf Kontaktseite |
### CTA-Implementierung
- **Primärer CTA:** Haupthandlungsaufforderung, prominent platziert (Hero, Header, Sticky)
- **Sekundärer CTA:** Alternative Handlung, weniger prominent aber sichtbar
---
## Interaktions-Level
Kategorie G definiert das Interaktionsniveau der Website.
### Level-Definitionen
| Level | Beschreibung | Regeln |
|-------|--------------|--------|
| `ruhig` | Maximale visuelle Ruhe | Keine Animationen, kein Parallax, statisches Layout, **framer-motion NICHT verwenden**, maximal 1 CTA pro Viewport |
| `moderat` | Ausgewogenes Layout | Dezente Fade-In Animationen, subtile Hover-Effekte, **framer-motion sparsam einsetzen**, IntersectionObserver-basierte Reveals |
| `dynamisch` | Lebendige Interaktion | Scroll-Animationen, Parallax erlaubt, Micro-Interactions, **framer-motion aktiv eingesetzt**, Sticky CTAs |
### Animations-Einstellung (animations)
| Wert | Beschreibung |
|------|--------------|
| `keine` | Absolut keine Animationen, auch keine Hover-Transitions |
| `dezent` | Nur subtile Transitions (opacity, transform), max. 300ms |
| `praesent` | Auffälligere Animationen, Scroll-triggered, Stagger-Effekte |
### Scroll-Verhalten (scrollBehavior)
| Wert | CSS-Umsetzung |
|------|---------------|
| `normal` | `scroll-behavior: auto` |
| `smooth` | `scroll-behavior: smooth` (auf `html` Element) |
---
## Integrationen
Kategorie I definiert technische Integrationen.
### Newsletter
Wenn `newsletter: true`:
- Newsletter-Signup-Formular im Footer
- Dedizierte Section auf der Startseite (optional)
- Platzhalter für Newsletter-Provider (Mailchimp, etc.)
### Buchungstool
Wenn `bookingTool` gesetzt:
- Als iframe/embed auf der Kontaktseite einbinden
- Platzhalter-Embed wenn kein konkreter Anbieter angegeben:
```html
<!-- TODO: Buchungstool-Integration hier einfügen -->
<div class="booking-placeholder">Buchungstool wird hier eingebunden</div>
```
### Externe Integrationen
Externe Integrationen als Platzhalter-Kommentare im Code markieren:
```typescript
// TODO: Integration ${name} - ${description}
```
---
## Impressum & Datenschutz
### Impressum
Legal-Daten kommen aus `spec.technical.legal.impressum` mit folgender Struktur:
```json
{
"companyName": "Firmenname GmbH",
"street": "Musterstraße 1",
"postalCode": "12345",
"city": "Musterstadt",
"country": "Deutschland",
"email": "info@example.com",
"phone": "+49 123 456789",
"vatId": "DE123456789",
"register": "HRB 12345, Amtsgericht Musterstadt"
}
```
**Pflicht:** Die KI generiert aus diesen Daten automatisch eine korrekte Impressum-Seite gemäß DACH-Recht.
### Datenschutz
Datenschutz-Seite enthält mindestens:
- Cookie-Hinweis
- Hosting-Info (aus `spec.technical.hosting`)
- Analytics-Angabe (aus `spec.technical.tracking`)
- Kontaktdaten des Verantwortlichen
- Hinweis auf Rechte der Betroffenen
---
## Research-Insights Nutzung
Die `llmResearch`-Daten im ProjectSpec enthalten wertvolle Insights.
### Verfügbare Research-Daten
| Feld | Verwendung |
|------|------------|
| `audienceAnalysis` | Bei Content-Erstellung für Kat. B berücksichtigen |
| `uxRecommendations` | Bei Layout-Entscheidungen berücksichtigen |
| `conversionStrategy` | Bei CTA-Platzierung und Funnel-Design berücksichtigen |
| `suggestedUSPs` | Auf Startseite und Überzeugungsseiten prominent platzieren |
### Umsetzung
- USPs aus `suggestedUSPs` als Feature-Cards oder Hero-Bullet-Points
- `conversionStrategy` bestimmt den Aufbau von Conversion-Seiten
- `uxRecommendations` fließen in Layout-Entscheidungen ein
---
## Source of Truth
Das Design und die Anforderungen einer Website basieren ausschließlich auf:
| Quelle | Inhalt |
|--------|--------|
| `spec/ProjectSpec.json` | Projektanforderungen, Ziele, Inhalte |
| `spec/design_tokens.json` | Farben, Typografie, Spacing-System |
| `theme/stylesheet.css` | Projektspezifische Styles |
| `theme/globals.css` | Globale CSS-Variablen und Resets |
**Regel:** Keine Design-Entscheidung ohne Grundlage in diesen Quellen.
---
## Verbote
### Absolut verboten:
- **KEINE** Templates oder vorgefertigten Layouts
- **KEINE** Copy-Paste-Strukturen aus anderen Projekten
- **KEINE** Boilerplate-Landingpages
- **KEINE** Standard-Hero/Feature/CTA-Sections ohne Spec-Grundlage
- **KEINE** eigenmächtigen Design-Entscheidungen
- **KEINE** hardcodierten Farben, Größen oder Abstände
- **KEINE** UI-Libraries (shadcn, MUI, Chakra, Radix, etc.)
- **KEINE** CSS-Frameworks außer Tailwind (falls im Projekt konfiguriert)
- **KEINE** inline Styles (außer dynamische Werte)
- **KEINE** `!important` (außer dokumentierte Ausnahmen)
- **KEINE** Secrets im Repository (nur .env, .env.local)
### Daten und Secrets:
- Sensible Daten gehören in `.env` / `.env.local`
- `.env*` Dateien sind in `.gitignore`
- API-Keys, Passwörter, Tokens niemals committen
---
## Arbeitsprozess
Jede Aufgabe folgt diesem Ablauf:
### 1. Lesen
- `/skills` vollständig lesen
- `/spec` vollständig lesen
- Bestehenden Code verstehen
### 2. Planen
- Anforderungen analysieren
- Struktur und Komponenten konzipieren
- Abhängigkeiten identifizieren
### 3. Implementieren
- Code schreiben
- Design-Tokens verwenden
- Keine eigenmächtigen Entscheidungen
### 4. Self-Check
- `npm run build` ausführen
- Gegen Definition of Done validieren
- Responsive und Accessibility prüfen
### 5. Dokumentieren
- Änderungen in `generation_log.json` maschinell festhalten
- Keine manuellen Einträge im Log
---
## Coding-Standards
### TypeScript
- **Strict Mode** ist Pflicht
- Keine `any` Types
- Explizite Typdefinitionen für Props und State
- Keine Type-Assertions ohne Notwendigkeit
- Strict null checks beachten
```typescript
// Korrekt
interface ComponentProps {
title: string;
items: ReadonlyArray<Item>;
onSelect?: (item: Item) => void;
}
// Falsch
const props: any = { ... }
```
### React / Next.js
- Funktionale Komponenten
- Server Components wo möglich
- Client Components nur wenn nötig (`"use client"`)
- Keine unnötigen `useEffect` / `useState`
- Keine Over-Abstraktionen
### CSS
- CSS-Variablen aus `globals.css` verwenden
- Tailwind für Utility-Klassen (falls konfiguriert)
- Eigene Klassen für wiederverwendbare Patterns
- Mobile-first Breakpoints
```css
.element {
color: var(--color-foreground);
padding: var(--spacing-md);
}
```
### Allgemein
- Lesbarkeit > Cleverness
- Keine unnötigen Abstraktionen
- Keine Over-Engineering
- Konsistente Namenskonventionen
- Keine auskommentierten Code-Blöcke
- Keine `console.log` im Production-Code
---
## Pflichten
### Performance
- Core Web Vitals optimieren
- Lazy Loading für Below-the-fold-Inhalte
- Kritisches CSS inline
- JavaScript-Bundle minimieren
- Fonts optimieren (`display: swap`)
- Bildformate: WebP/AVIF bevorzugen
- Keine unnötigen Dependencies
### SEO
- Semantisches HTML (`header`, `main`, `nav`, `article`, `section`, `footer`)
- Korrekte Heading-Hierarchie (`h1` > `h2` > `h3`)
- Meta-Tags (`title`, `description`)
- Open Graph Tags
- Alt-Texte für alle Bilder
- Strukturierte Daten wo sinnvoll
### Mobile-First
- Responsive Design ist Pflicht
- Touch-Targets mindestens 44x44px
- Keine horizontalen Scrollbars
- Lesbare Schriftgrößen ohne Zoom
---
## Logging
### generation_log.json
- Nur maschinell befüllen
- Keine manuellen Einträge
- Dokumentiert: was wurde generiert, wann, welche Dateien
- Dient der Nachvollziehbarkeit
---
## Zusammenfassung
> Jede Website ist einzigartig. Design kommt aus den Specs, nicht aus dem Bauch.
> Code ist sauber, typisiert und wartbar. Build muss laufen.
> Diese Regeln sind nicht verhandelbar.