# pptx-infrago — PowerPoint-Präsentations-Skill Kiro-Skill für `.pptx`-Präsentationen im DB InfraGO Corporate Design. Folgt der [Agent Skills Specification](https://agentskills.io/specification). ## Struktur ``` pptx-infrago/ ├── SKILL.md # Einstiegspunkt (Frontmatter + Workflow) ├── README.md # Diese Anleitung ├── references/ │ ├── layout-katalog.md # 31 Layouts mit Index, Name, Platzhaltern │ ├── slide-typen.md # Funktions-API mit Code-Beispielen │ ├── asset-katalog.md # Hintergrundbilder + Auswahl-Heuristik │ └── ci-referenz.md # Farben, Schriften, CI-Regeln └── assets/ ├── InfraGo_master_vorlage.pptx # Offizieller DB InfraGO Folienmaster ├── db_infrago_pptx.py # Helper-Modul mit Funktion pro Layout ├── Ice_line_background.png # 10 Hintergrundbilder └── bg-*.jpeg ``` ## Voraussetzungen ```powershell pip install python-pptx ``` Python 3.10+. `lxml` wird transitiv von `python-pptx` mitinstalliert und vom Helper direkt für XML-Manipulationen genutzt (Footer- und Slide-Number-Platzhalter aus dem Layout klonen, slidenum-Field setzen, Section-Liste entfernen). Auf DB-Rechnern stehen die DB-Schriften (DB Head Black, DB Sans) automatisch zur Verfügung. Auf anderen Systemen verwendet PowerPoint einen Fallback-Font. ## Funktionsweise Der Skill arbeitet mit dem offiziellen DB InfraGO Folienmaster (31 Layouts) und einem Helper-Modul. Statt Folien-Geometrie selbst zu zeichnen, wählt der Skill ein passendes Layout aus und befüllt dessen Platzhalter. Logo, Footer-Slot, Foliennummer und Farben werden vom Master geerbt (Footer und Foliennummer werden technisch aus dem Layout in die Slide geklont, weil python-pptx das nicht von selbst übernimmt). Workflow: 1. Skill fragt: Thema, Zielgruppe, Umfang, Footer, Ablageort 2. Skill schlägt ein Hintergrundbild für die Titelfolie vor (passend zum Thema) 3. Skill schlägt eine Gliederung vor (Folie + Layout-Funktion) 4. Skill generiert ein Python-Skript 5. Skill führt das Skript aus und öffnet die `.pptx` ## Nutzung Im Kiro-Chat: "Erstelle eine PowerPoint-Präsentation über [Thema]" Der Skill durchläuft die obigen 5 Schritte und legt am Ende eine fertige `.pptx`-Datei am gewünschten Ablageort ab. ## Direkter Code-Aufruf (ohne Skill) `SKILL_DIR` ist der Pfad zum `assets/`-Ordner deines Skill-Klons. Beispiele: - Windows (user-level): `C:\Users\\.kiro\skills\pptx-infrago\assets` - Windows (workspace): `\.kiro\skills\pptx-infrago\assets` - macOS / Linux (user-level): `~/.kiro/skills/pptx-infrago/assets` - macOS / Linux (workspace): `/.kiro/skills/pptx-infrago/assets` ```python import sys from pathlib import Path # Pfad anpassen — siehe Beispiele oben SKILL = Path.home() / ".kiro" / "skills" / "pptx-infrago" / "assets" sys.path.insert(0, str(SKILL)) from db_infrago_pptx import ( open_deck, save, background_image_path, add_titel_bild_schwarz, add_titel_und_inhalt, add_ende_bild, ) prs = open_deck() add_titel_bild_schwarz( prs, "Mein Thema", "Untertitel", bild=background_image_path("datenstroeme"), kategorie="Architektur", footer="DB InfraGO AG | Max Mustermann | Team | 2026", ) add_titel_und_inhalt(prs, "Punkte", ["Eins", "Zwei", "Drei"]) add_ende_bild(prs, "Vielen Dank.", bild=background_image_path("ice_bahnsteig")) save(prs, "output.pptx") ``` ## Version 1.0.1 — Stand 11.05.2026 - Basiert auf dem offiziellen DB InfraGO Folienmaster (31 Layouts) - Funktion pro Layout im Helper-Modul `db_infrago_pptx.py` - 10 mitgelieferte Hintergrundbilder mit thematischer Auswahl-Heuristik - Ergänzend zum bestehenden HTML-Skill `praesi-infrago` (Reveal.js) ### Changelog **1.1.0** — Klassifizierung + Breaking Changes (18.05.2026): - **NEU:** `klassifizierung`-Parameter auf allen Slide-Funktionen. Platziert Vertraulichkeitsstufe (z.B. "DB Offen / DB Open") oben links in roter Schrift. - **NEU:** `_set_klassifizierung()` Helper — Textbox mit DB Neo Office 11pt rot. - **NEU:** SKILL.md erweitert um Klassifizierungs-Abfrage (Punkt 6) mit Sicherheitshinweis (DB Streng Vertraulich wird abgelehnt). - **NEU:** Logo-Assets: `logo_infrago.png`, `logo_infrago_schwarz.png`, `logo_infrago_weiss.png`, `logo_infrago_rot_weiss.png` fuer manuelle Platzierung. - **FIX:** `_set_kategorie()` prueft jetzt ob der Platzhalter ein Logo (blipFill) enthaelt und fasst ihn dann NICHT an (statt ihn zu entfernen). - **FIX:** `add_ende_logo()` platziert Text als separates Textfeld statt in den Logo-Platzhalter zu schreiben. - **BREAKING:** Entfernt: `add_titel_weiss`, `add_titel_rot`, `add_titel_bild_schwarz_zentriert`, `add_titel_bild_weiss_zentriert`. Diese Layouts (0, 1, 4, 5) sind im aktuellen Folienmaster nicht mehr relevant. **1.1.0** — Klassifizierung + Breaking Changes (18.05.2026): - NEU: klassifizierung-Parameter auf allen Slide-Funktionen - NEU: _set_klassifizierung() Helper - NEU: SKILL.md erweitert um Klassifizierungs-Abfrage (Punkt 6) - NEU: Logo-Assets fuer manuelle Platzierung - FIX: _set_kategorie() prueft blipFill (Logo-Schutz) - FIX: add_ende_logo() nutzt separates Textfeld - BREAKING: Entfernt: add_titel_weiss, add_titel_rot, add_titel_bild_schwarz_zentriert, add_titel_bild_weiss_zentriert **1.0.1** — Bugfixes und Doku-Konsistenz nach erstem Review: - Bugfix: Beispiel in „Kreative Folien" importierte fälschlich `FOOTER` aus dem Helper - Helper: ungenutzte Imports entfernt (`os`, `Cm`, `Pt`) - Helper: Slide-Number-Field-ID nun pro Slide eindeutig (UUID statt fixer ID) - Helper: Imports zentralisiert; `lxml`-Nutzung explizit dokumentiert - Helper: `_set_text` skipt bei Leerstring (Layout-Default bleibt erhalten) - `__all__` vervollständigt um `DB_RED_DARK`, `DB_TURQUOISE_300/100`, `DB_GRAY_MED` - Doku: Workflow-Schrittzahl angeglichen (5 statt 4), Pfad-Beispiele cross-platform, „kommt vom Master"-Formulierung präzisiert, Layout-Katalog/Slide-Typen ergänzt **1.0.0** — Initial-Release