---
type: skill
name: neue-praesentation
agent_ready: true
schema_version: 1
bundle_skill: true
bundle_version: "0.28.0"
scope: vault
default_active:
  allgemein: false
  business: true
  automation: false
  content: true
  image: false
  beratung: true
conflicts_with: []
depends_on:
  - natur-sprech-check
trigger_words:
  - neue-praesentation
  - praesentation
  - praesentation-anlegen
  - slides
  - pitch-deck
  - folien
  - echo-praesentation
  - audit-praesentation
  - druckfaehige-praesentation
  - a4-praesentation
allowed-tools:
  - Read
  - Glob
  - Bash
  - AskUserQuestion
  - Skill
  - Edit
  - Write
created: 2026-05-20
updated: 2026-05-20
description: "Verwaltet den Lebenszyklus von Präsentationen in vier Modi. Neu: legt eine Präsentation an (HTML-Bundle Default Warm Navigator, alternativ PowerPoint). Update: ändert ein bestehendes Bundle, nimmt Slide-Edits vor oder lintet Bearbeitungen gegen Branding und Designsystem. Echo: erweitert ein Bundle still aus einem Kunden-Transkript (Slash-Command /echo). Audit: erzeugt aus einem Webseiten-Audit-Manifest eine Audit-Ergebnis-Präsentation. Trigger, sinngemäß und nicht wörtlich: 'neue Präsentation', 'mach mir Slides für …', 'Pitch-Deck für …', 'Folien zum Termin am …', 'pass die Präsentation X an', 'ergänze Slide', 'füge ein Slide ein', 'aktualisiere Folie', 'Echo-Lauf', 'berücksichtige das Transkript', 'pack die Punkte aus dem Gespräch in die Slides'. Erzeugt auf Zuruf zusätzlich eine druckfähige A4-quer-Variante als randloses PDF ('druckfähige Präsentation', 'DIN A4', 'A4-Variante'). Nimmt für HTML-Präsentationen Vorrang vor claude-design und design-kickoff."
---

# Neue Präsentation

Diese Datei kapselt den kompletten Lebenszyklus von Präsentationen in vier Modi (Neu, Update, Echo, Audit). Ergebnis ist immer ein selbst-enthaltenes Single-Folder-HTML-Bundle (Default) oder ein PowerPoint-Deck. Bundles starten offline per Doppelklick und sind versendbar. Modus Audit ist additiv und greift, wenn ein Webseiten-Audit-Ordner referenziert wird.

Designregeln, Slide-Templates und Layout-Pflichten (Gold-Dot, SigLine, Top-Anchoring) leben in der Foundation `<BUNDLE_ROOT>/_lib/designsystem/templates/praesentation/Layout-Regeln.md` und werden hier **nicht** dupliziert. Eiserne Layout-Regeln (Header-Zone, SigLine-Konsistenz, Footer-Safe-Zone) sind in jedem Modus Pflicht-Lektüre.

## Pfad-Resolver (BUNDLE_ROOT-Standard)

Skill-interne Skripte resolven die Foundation und Skill-Wurzel über das Standard-Pattern:

```python
from pathlib import Path
BUNDLE_ROOT = Path(__file__).resolve().parent.parent.parent  # .skills/<skill>/scripts/file.py -> Repo-Root
SKILL_ROOT = BUNDLE_ROOT / ".skills" / "neue-praesentation"
FOUNDATION = BUNDLE_ROOT / "_lib" / "designsystem" / "templates" / "praesentation"
```

Vault-Kontext-Dateien (`Branding`, `Schreibstil`, `KI-Sprech-Fallen`, `Glossar`) liegen unter dem `{context}`-Placeholder, der vom Skill-Runtime zur Anwender-Vault-Kontext-Wurzel aufgelöst wird (Wave-H-Konvention).

## Modus-Übersicht

| Modus | Zweck | Trigger | Detail |
|---|---|---|---|
| **Neu** | Präsentation von Grund auf anlegen | „neue Präsentation", „Slides für …", „Pitch für …", „bereite eine Präsentation vor" | [references/modus-neu.md](references/modus-neu.md) |
| **Update** | Bestehendes Bundle ändern, lintet Edits | „pass Präsentation X an", „ergänze Slide", „füge Slide ein", „aktualisiere Folie" | [references/modus-update.md](references/modus-update.md) |
| **Echo** | Bundle still erweitern aus Kunden-Transkript | `/echo`, „berücksichtige das Transkript in Präsentation Y", „pack die Punkte aus dem Gespräch rein" | [references/modus-echo.md](references/modus-echo.md) |
| **Audit** | Webseiten-Audit-Ergebnisbericht als Präsentation | Audit-Ordner-Pfad `<webseiten-audit-root>/<domain>_<datum>/`, „Audit-Präsentation für <domain>", „Bericht aus dem Audit vom <Datum>" | [references/modus-audit.md](references/modus-audit.md) |

## Modus Audit — Bundle-Fingerprint und Asset-Vertrag

Im **Modus Audit** schreibt der Skill am Ende des Builds zusätzlich zur eigentlichen Präsentation eine `bundle.manifest.json` ins Bundle-Verzeichnis. Diese Datei ist der Fingerprint, den ein Audit-Verifikations-Helper später prüfen kann. Drift bricht den Audit mit Exit 12 ab.

**Bundle-Ablage:** Bundle landet unter `<audit_dir>/Praesentation/`, also im Audit-Ordner selbst (Default aus `Audit-Manifest.json::praesentation_ablage`).

**Pflicht-Inhalt `<audit_dir>/Praesentation/bundle.manifest.json`** (am Ende des Builds geschrieben):

```json
{
  "built_by": "neue-praesentation",
  "source_manifest_hash": "<SHA-256 des Audit-Manifest.json-Subsets OHNE generated_at>",
  "empfaenger": "<aus Audit-Manifest.json::praesentation_empfaenger gelesen>",
  "built_at": "<ISO-Datum, z.B. 2026-05-18T14:32:11Z>"
}
```

**Hash-Berechnung (verbindlich, sonst Exit 12):**

```python
import hashlib, json
m = json.loads(audit_manifest_path.read_text(encoding="utf-8"))
m.pop("generated_at", None)
source_manifest_hash = hashlib.sha256(
    json.dumps(m, sort_keys=True, ensure_ascii=False).encode("utf-8")
).hexdigest()
```

Das Feld `generated_at` ist ausgeschlossen, weil Re-Run-Phase-5d-Mutationen sonst False-Positive-Hash-Mismatches erzeugen würden.

**Asset-Vertrag:** Die Designsystem-Templates aus `<BUNDLE_ROOT>/_lib/designsystem/templates/praesentation/` werden ins Bundle nach `<audit_dir>/Praesentation/assets/` kopiert. Logo-Pfade werden per `window.LOGO_BASE = "assets/"` gesetzt — keine Pfad-Raten. Das Bundle muss mindestens `index.html` ODER eine `*.jsx`-Datei plus den `assets/`-Ordner enthalten, sonst greift `fingerprint_assets_missing` (Exit 12).

## Pflicht-Reads (gelten für alle vier Modi)

Bevor irgendein Modus arbeitet, liest Du in einem einzigen parallelen Tool-Block:

- `{context}/Branding` (Anwender-Brand-Identität)
- `{context}/Schreibstil` (Schreibregeln, Tonalität)
- `{context}/KI-Sprech-Fallen` (Phrase-Fallenliste)
- `{context}/Glossar` (verbindliche Schreibweise aller Eigennamen)
- `<BUNDLE_ROOT>/_lib/designsystem/templates/praesentation/Layout-Regeln.md` (eiserne Layout-Regeln, Foundation)
- `<BUNDLE_ROOT>/_lib/designsystem/tokens/tokens.json` (Tokens verbatim, Foundation)
- `<SKILL_ROOT>/references/modus-<aktiv>.md` (aktive Modus-Karte)

Wenn eine Pflicht-Read-Datei fehlt: harter Stopp mit präzisem Fehler (`Datei X nicht gefunden — Branding-Pflicht kann nicht erfüllt werden, bitte prüfe den Pfad`).

## Glossar-Pflicht (PFLICHT bei jedem Personennamen)

Bevor ein Personenname, Firmenname oder Fachbegriff in einer Folie geschrieben wird, ist die Schreibweise zwingend gegen `{context}/Glossar` zu prüfen. Auch wenn der Anwender im Gesprächsverlauf eine eigene Schreibweise verwendet, gilt das Glossar als Quelle der Wahrheit. Im Zweifel direkt im Glossar nachschlagen, nicht aus dem Gedächtnis schreiben. Neue Namen, die im Glossar fehlen, vor der ersten Verwendung mit dem Anwender klären und ins Glossar eintragen.

Pflicht-Check beim Bauen: nach esbuild einmal alle in den JSX-Dateien vorkommenden Personennamen extrahieren und gegen das Glossar abgleichen.

## Natur-Sprech-Pflicht (PFLICHT bei jedem Slide-Inhalt)

Jeder Folien-Inhaltstext (Headlines, Body, Bullets, Pills, Quotes) ist nach außen gerichtete Kommunikation und triggert damit automatisch Modus B des Skills `natur-sprech-check`. Schreibstil und Fallen-Liste sind beim Formulieren mental gegen jeden geschriebenen Satz zu führen. Häufigste Verstöße sind in Layout-Regeln Abschnitt 0b dokumentiert und müssen vor dem Build per Grep gegen-geprüft werden:

- `grep -nE ', (und|oder)\b'` — Falle Komma-vor-und/oder
- `grep -nE '[a-zäöü]+: [a-zäöüA-ZÄÖÜ]'` — Falle Doppelpunkt-Pointe

## Modus-Auswahl

Bestimme den Modus aus dem User-Prompt nach diesem Entscheidungsbaum:

1. **Audit-Ordner referenziert?** Pfad-Pattern `<webseiten-audit-root>/<domain>_<datum>[_<suffix>]/` ODER Wort „Webseiten-Audit" plus Domain plus Datum im Prompt ODER Prompt enthält `Audit-Ordner:` plus `Manifest:` → Modus Audit. Details in [references/modus-audit.md](references/modus-audit.md).
2. **Slash-Command `/echo` im Prompt?** → Modus Echo.
3. **Wort „Transkript" oder „Echo" im Prompt + Datei-Hinweis + Bezug auf eine bestehende Präsentation?** → Modus Echo.
4. **Bezug auf eine bestehende Präsentation + Bearbeitungs-Verb (anpassen, ergänzen, ändern, aktualisieren, einfügen, korrigieren)?** → Modus Update.
5. **Sonst:** Wunsch nach einer neuen Präsentation, einem Pitch-Deck, Slides für einen Termin → Modus Neu.

Wenn der Modus nicht eindeutig ist (z.B. „mach mir Folien dazu"), eine **einzige** Klärungsfrage: „Neue Präsentation oder eine bestehende anpassen?"

## Vorrang vor anderen Design-Skills

Dieser Skill nimmt bei HTML-Präsentationen Vorrang vor `claude-design`, `design-kickoff`, `frontend-design`, `impeccable`. Diese Skills dürfen kein eigenes HTML-Slide-Layout erfinden, wenn das Ziel eine Bundle-Präsentation ist.

## Helper-Skripte

Alle Helper liegen skill-lokal unter `<SKILL_ROOT>/scripts/`:

- `neue_praesentation.py` — Bundle erstellen aus Foundation-Template (Modus Neu)
- `update_lint.py` — Linting gegen Designsystem (Modus Update + Echo)
- `echo_helper.py` — Backup, Build, Diff-Report (Modus Echo)
- `print_to_pdf.py` — PDF-Export 16:9 (allgemein)
- `print_to_a4_pdf.py` — PDF-Export A4-quer (allgemein)
- `check_audit_bundle_filled.py` — Pflicht-Gate im Modus-Audit-Flow

Aufruf-Syntax pro Helper steht in der jeweiligen Modus-Karte.

## PDF-Export einer fertigen HTML-Präsentation

Wenn der Anwender später aus einer HTML-Präsentation ein PDF braucht (Versand an Empfänger, der nicht selbst klicken will):

```
python "<SKILL_ROOT>/scripts/print_to_pdf.py" "<pfad/zur/praesentation.html>"
```

Output liegt direkt neben der HTML als `<slug>.pdf`. Optionale Flags: `-o <ziel.pdf>`, `--width`, `--height`, `--wait` (Default 1500 ms). Nutzt Playwright + Headless Chrome.

**Nutzungsregel:** Bei „mach eine PDF aus der Präsentation", „drucke das als PDF", „PDF für den Versand" immer dieses Skript aufrufen — nicht den Browser-Druckdialog vorschlagen.

## A4-Druck-Variante (randloses A4-quer-PDF)

Wenn der Anwender ein druckfähiges PDF will, das ein DIN-A4-Blatt im Querformat voll ausfüllt, ruft der Skill den parallelen Helper auf:

```
python "<SKILL_ROOT>/scripts/print_to_a4_pdf.py" "<pfad/zur/praesentation.html>"
```

Default-Output: `<slug>-a4.pdf` neben der HTML. Inhalte sind 1:1 identisch zur 16:9-Variante, nur die Slide-Höhe ist auf A4-Aspect (1.4143:1, 1920×1358) angepasst.

**Wichtig:** Die A4-Variante ist **kein neuer Modus** und erzeugt **kein neues Bundle**. Sie ist eine zusätzliche Render-Funktion auf einem bestehenden Bundle.

## Was dieser Skill bewusst nicht macht

- **Keine Slide-Inhalte erfinden im Modus Neu.** Templates sind leer/Beispielinhalt, der Anwender füllt selbst.
- **Keine Designregeln neu definieren.** Layout-Pflichten, Farben, Slide-Templates stehen in der Foundation.
- **Kein eigenes HTML-Layout.** Pflicht-Template ist Warm Navigator Deck v1.
- **Keine Audio-Aufnahme oder Live-Transkription.** Modus Echo akzeptiert nur fertige Text-Dateien (`.txt`, `.md`).
- **Keine Live-Steuerung während des Vortrags.** Modus Echo ergänzt das Bundle vor dem Vortrag.
- **Keine Bild-API-Generierung.** Bild-Slots werden vom Anwender selbst befüllt (Datei-Pfad, Drop). Bild-API-Integration ist Wave-II-Backlog nach `_lib/api_keys.py`-Refactor.
- **Kein eigener Webseiten-Audit.** Modus Audit setzt einen separaten Anwender-Vault-Skill `webseiten-audit` voraus, der das `Audit-Manifest.json` plus `praesentation-bauplan.md` und `methodik-story.md` liefert. Ohne diesen Skill fehlen Pflicht-Reads und Modus Audit bricht mit präzisem Fehler ab.

## Verknüpfungen

- [README — Foundation Praesentation](../../_lib/designsystem/templates/praesentation/README.md)
- [Modus-Karte Neu](references/modus-neu.md)
- [Modus-Karte Update](references/modus-update.md)
- [Modus-Karte Echo](references/modus-echo.md)
- [Modus-Karte Audit](references/modus-audit.md)
