Files
Orchestrator/bahn/aisupport/skills/pptx-infrago/SKILL.md
T
ankn a5f8fb49ab Migrate all repos into monorepo context folders
Bahn: aisupport, Analyse-O2C-C2S, awesome-bahn-mcp-servers, beam-mcp,
      Confluence_Bot, db-planet-mcp-server, O2C-Harness, project-audit,
      Projekt-KIQ-HP, teamlandkarte-mcp
Dhive: Jury-Voting
Privat: CV, NoteGraph (NOTE: NoteGraph needs complete redo after consolidation)
Shared: AI-Orchestrator, OrgMyLife, power_skills_and_more
Shared/references: symphony (read-only)

Bahn repos remain available as independent remotes - this monorepo
pulls them in via subtree, the originals are untouched.
2026-06-30 20:39:52 +02:00

16 KiB
Raw Blame History

name, description, compatibility, metadata
name description compatibility metadata
pptx-infrago Erstellt PowerPoint-Präsentationen (.pptx) im DB InfraGO Corporate Design mit Python. Nutzt den offiziellen DB InfraGO Folienmaster (31 Layouts) und ein Helper-Modul. Nutze diesen Skill wenn der User eine PowerPoint-Datei, .pptx, Foliensatz oder Vortrag als PowerPoint-Datei (nicht HTML) erstellen möchte. Keywords: PowerPoint, PPTX, Folien, Foliensatz, Vortrag, Folienmaster, python-pptx, Master. Benötigt Python 3.10+ mit python-pptx (>=1.0). DB-Rechner empfohlen für DB-Schriften (DB Neo Office Head / DB Neo Office). Kein Internet nötig — Vorlage und Bilder liegen im Skill.
version author theme template
1.3.0 Uwe Sülter DB InfraGO Folienmaster (offiziell) InfraGo_master_vorlage.pptx

PowerPoint-Präsentationen im DB InfraGO Folienmaster

Self-contained Skill für .pptx-Dateien. Die offizielle Vorlage InfraGo_master_vorlage.pptx und das Helper-Modul db_infrago_pptx.py liegen direkt im Skill-Ordner unter assets/.

Grundprinzip: Der Skill schreibt nicht selbst Folien-Geometrie, sondern nutzt die 31 fertigen Layouts des offiziellen Folienmasters. Pro Layout gibt es eine Funktion im Helper-Modul. Logo, Footer-Slot, Foliennummer und Farben werden vom Master geerbt — Python befüllt nur die Platzhalter (Footer und Foliennummer werden technisch aus dem Layout in die Slide geklont, weil python-pptx das nicht von selbst tut).

Ablauf

Schritt 1: Infos sammeln

ALLE 6 Punkte MÜSSEN geklärt sein bevor es weitergeht. Auch wenn das Thema offensichtlich scheint — Zielgruppe und Umfang IMMER nachfragen, NIEMALS selbst annehmen.

Name ermitteln (Fallback-Kette):

  1. Steerings/Kontext prüfen — steht der Name schon im geladenen Kontext (z.B. kiro-umgebung.md)?

  2. git config user.name ausführen

  3. Wenn beides fehlschlägt: User fragen

  4. Thema — Worum geht es?

  5. Zielgruppe — Für wen? (Devs, POs, Management, Fachbereich?)

  6. Umfang — Wie viele Folien / wie lang?

  7. Footer — Default: "DB InfraGO AG | [Name] | [Team] | [Jahr]"

  8. Ablageort — Wo soll die .pptx-Datei hin?

  9. Klassifizierung — Welche Vertraulichkeitsstufe? Erlaubte Werte:

    • "DB Offen / DB Open" — für öffentlich teilbare Inhalte
    • "DB Intern / DB internal" — für konzerninterne Inhalte (häufigster Fall)
    • "DB Vertraulich / DB confidential" — für vertrauliche Inhalte
    • "" (leer) — keine Klassifizierung anzeigen

    WICHTIG: Dieser Skill darf NUR für die Stufen "DB Offen", "DB Intern" und "DB Vertraulich" verwendet werden. Für höhere Stufen (z.B. "DB Streng Vertraulich") ist die automatische Erstellung von Präsentationen NICHT zulässig — den User darauf hinweisen und ablehnen.

Nachfrage-Template — IMMER komplett zeigen, KEINE Felder weglassen:

Bevor ich loslege, brauche ich noch ein paar Infos:

- **Thema:** [fehlt/vorhanden]
- **Zielgruppe:** [fehlt/vorhanden]
- **Umfang:** [fehlt/vorhanden]
- **Footer:** DB InfraGO AG | [git user.name] | [Team?] | [Jahr]
- **Ablageort:** [fehlt/vorhanden]
- **Klassifizierung:** [fehlt] — Erlaubt: "DB Offen / DB Open", "DB Intern / DB internal",
  "DB Vertraulich / DB confidential", oder leer (keine Anzeige).
  ⚠️ Dieser Skill darf nur für DB Offen, DB Intern und DB Vertraulich genutzt werden.

Optional:
- Hintergrundbild für die Titelfolie? (Ich schlage selbst ein passendes Bild aus den
  10 mitgelieferten Bildern vor — basierend auf dem Thema. Du kannst das Vorgeschlagene
  bestätigen, ein anderes wählen oder einen eigenen Pfad angeben.)
- Bestimmte Inhalte die rein müssen? (Tabellen, Zitate, Statements, Bild-Folien?)

WICHTIG: NIEMALS "Laut Skill muss ich..." oder "Der Skill verlangt..." sagen. Natürlich kommunizieren.

Schritt 2: Hintergrundbild für Titelfolie auswählen

Ohne dass der User explizit ein Bild nennt: Schau ins Thema und schlage GENAU EIN Bild aus BACKGROUND_IMAGES vor (siehe assets/db_infrago_pptx.py oder references/asset-katalog.md). Sag dem User welches Bild und warum.

Beispielzuordnungen:

  • Architektur, Datenflüsse, Migration → datenstroeme
  • Innovation, neue Konzepte, Ideen → gluehbirne
  • Strategie, Vision, Digitalisierung → weltkugel oder digital_transformation
  • Infrastruktur, Bahnbetrieb, Wartung → gleisarbeiter
  • Performance, Geschwindigkeit, Go-Live → ice_bahnsteig
  • Teamwork, Onboarding, Integration → puzzle
  • Demos, Abnahme, Qualitätssicherung → laptop_checkmark
  • Daten, Code, Netzwerk → binaercode
  • Neutral / kein klares Thema → ice_line (ICE-Silhouette mit Sand→Türkis Gradient)

Schritt 3: Gliederung vorschlagen

Folien-Struktur als Markdown-Liste vorschlagen, jeweils mit dem Layout-Funktionsnamen in Klammern. Beispiel:

1. Titelfolie (add_titel_bild_schwarz mit "datenstroeme")
2. Agenda (add_inhaltsverzeichnis_weiss)
3. Ausgangslage (add_titel_und_inhalt)
4. Lösung (add_titel_und_2_inhalte)
5. Beispiel (add_text_und_bild_links)
6. Statement (add_statement_rot)
7. Ausblick (add_titel_und_inhalt)
8. Schluss (add_ende_bild mit "ice_bahnsteig")

Auf Bestätigung warten, BEVOR Code geschrieben wird.

Schritt 4: Python-Skript generieren

Pfadberechnung: Das Helper-Modul db_infrago_pptx.py und die Vorlage liegen im Skill-Ordner. Python kann daraus importieren wenn der Skill-Ordner im sys.path ist oder das Modul kopiert wird.

Empfohlener Ansatz: Im generierten Skript am Anfang den Skill-Ordner zum sys.path hinzufügen — dann kein Kopieren, immer auf der aktuellen Helper-Version. SKILL_DIR zeigt auf den assets/-Ordner deiner Skill-Installation:

  • Windows (user-level): C:\Users\<dein-username>\.kiro\skills\pptx-infrago\assets
  • Windows (workspace): <projekt>\.kiro\skills\pptx-infrago\assets
  • macOS / Linux (user-level): ~/.kiro/skills/pptx-infrago/assets
  • macOS / Linux (workspace): <projekt>/.kiro/skills/pptx-infrago/assets
# -*- coding: utf-8 -*-
import sys
from pathlib import Path

# Skill-Ordner zum sys.path hinzufügen — Pfad an deine Installation anpassen
SKILL_DIR = Path.home() / ".kiro" / "skills" / "pptx-infrago" / "assets"
sys.path.insert(0, str(SKILL_DIR))

from db_infrago_pptx import (
    open_deck, save, add_notes, background_image_path,
    add_titel_bild_schwarz, add_inhaltsverzeichnis_weiss,
    add_titel_und_inhalt, add_titel_und_2_inhalte,
    add_text_und_bild_links, add_statement_rot, add_ende_bild,
)

FOOTER = "DB InfraGO AG | Max Mustermann | Team | 2026"
KLASSIFIZIERUNG = "DB Intern / DB internal"  # oder "" wenn keine Anzeige gewünscht

prs = open_deck()

# Folie 1: Titel mit Hintergrundbild
slide = add_titel_bild_schwarz(
    prs,
    titel="Mein Thema",
    untertitel="Untertitel der Präsentation",
    bild=background_image_path("datenstroeme"),
    kategorie="Strategie",
    footer=FOOTER,
    klassifizierung=KLASSIFIZIERUNG,
)
add_notes(slide, "Begrüßung, Vorstellung des Themas, Motivation.")

# Folie 2: Agenda
add_inhaltsverzeichnis_weiss(
    prs,
    titel="Agenda",
    eintraege=["Ausgangslage", "Lösung", "Beispiel", "Statement", "Ausblick"],
    footer=FOOTER,
    klassifizierung=KLASSIFIZIERUNG,
)

# … weitere Folien …

# Folie n: Schluss
add_ende_bild(prs, titel="Vielen Dank.", bild=background_image_path("ice_bahnsteig"))

out = save(prs, r"C:\BA\projekt\folien.pptx")
print(f"Datei erzeugt: {out}")

Dateiname: YYYY-MM-DD_thema-kebab-case.py für das Skript, YYYY-MM-DD_thema-kebab-case.pptx als Output.

Speaker Notes: Für jeden Inhalts-Slide Speaker-Notes via add_notes(slide, "...") schreiben. Notes enthalten Stichpunkte für den Vortragenden — Details die nicht auf den Slide passen, Erklärungen, Überleitung zur nächsten Folie.

Schreibstrategie:

  • fsWrite für Header + Imports + erste 12 Folien (max ~50 Zeilen)
  • fsAppend in Blöcken à max 40 Zeilen
  • Letzter fsAppend: Schlussfolie + save()-Aufruf
  • Anzahl der Blöcke vorher abschätzen
  • NIEMALS die Datei komplett neu schreiben weil ein Append fehlschlug — gezielt mit strReplace patchen

Schritt 5: Skript ausführen und PPTX öffnen — IN DERSELBEN ANTWORT

Direkt nach dem letzten fsAppend (mit save()) — OHNE vorher "fertig" zu sagen:

  1. Skript ausführen: python C:\BA\{Ablageort}\{Dateiname}.py
  2. Datei öffnen: Invoke-Item "C:\BA\{Ablageort}\{Dateiname}.pptx" — einfach machen, nicht nachfragen.
  3. Kurzer Hinweis: Dem User mitteilen, was generiert wurde und wie er die Datei nachbearbeiten kann (PowerPoint öffnet automatisch).

Slide-Funktionen Übersicht

Volle API-Doku siehe references/slide-typen.md. Mapping Layout-Index → Funktion siehe references/layout-katalog.md.

Anlass Funktion
Titel mit Bild add_titel_bild_schwarz / _weiss
Titel im Rahmen add_titel_rahmen
Agenda / Inhaltsverzeichnis add_inhaltsverzeichnis_weiss / _rot / _bild_*
Kapiteltrenner add_kapiteltrenner_weiss / _bild_*
Standard-Inhaltsfolie add_titel_und_inhalt
Zwei-Spalten-Inhalt add_titel_und_2_inhalte
Text + Bild add_text_und_bild_links / _rechts
Vollbild mit Titelzeile add_bild_mit_titel_schwarz / _weiss
Nur Titel (für eigenes Layout) add_nur_titel / _grau
Komplett leer add_leer
Aussage groß add_statement_rot / _weiss
Zitat add_zitat_rot / _weiss
Schlussfolie Bild add_ende_bild
Schlussfolie Rot add_ende_rot
Schlussfolie Logo add_ende_logo
Bild-Agenda add_bild_agenda
Tabelle (Türkis-Header) add_tabelle
Daten und Fakten (Kennzahl groß) add_daten_und_fakten
Zeitstrahl (n Stationen) add_zeitstrahl
Prozessablauf (n Schritte) add_prozessablauf
Piktogramm einfügen add_pictogram (86 Icons aus DB-Master)

Kreative Folien — wenn die Templates nicht reichen

Die 31 Layouts decken die häufigsten Fälle ab, sind aber ausdrücklich KEIN Korsett. Für Diagramme, eigene Skizzen, freie Visualisierungen, Roadmaps, BPMN-Skizzen, Architektur-Bilder usw. gibt es zwei Layouts, die genau dafür gemacht sind:

Funktion Was du bekommst Wann
add_nur_titel(prs, titel, footer) Folientitel oben + komplett freier Inhaltsbereich Diagramme mit Titelzeile
add_nur_titel_grau(prs, titel, footer) Wie oben, aber grauer Hintergrund Visuelle Abgrenzung im Foliensatz
add_leer(prs, footer) Komplett freie Folie (nur Footer-Slot) Vollbild-Visualisierung, eigene Header-Position

Auf diesen Folien gilt: alles ist erlaubt. Logo, Foliennummer und Footer werden vom Master geerbt — du sparst dir nur die starre Bullet-Liste.

Typische Erweiterungen mit python-pptx:

from pptx.util import Cm, Pt
from pptx.enum.shapes import MSO_SHAPE, MSO_CONNECTOR
from pptx.dml.color import RGBColor
from db_infrago_pptx import add_nur_titel, DB_TURQUOISE_500, DB_RED

FOOTER = "DB InfraGO AG | Max Mustermann | Team | 2026"

slide = add_nur_titel(prs, "Architektur-Skizze", FOOTER)

# Box
box = slide.shapes.add_shape(MSO_SHAPE.ROUNDED_RECTANGLE,
                              Cm(2), Cm(4), Cm(8), Cm(3))
box.fill.solid(); box.fill.fore_color.rgb = DB_TURQUOISE_500
box.text_frame.text = "Frontend"

# Pfeil zwischen Boxen
conn = slide.shapes.add_connector(MSO_CONNECTOR.STRAIGHT,
                                   Cm(10), Cm(5.5), Cm(14), Cm(5.5))
conn.line.color.rgb = DB_RED

# Eigenes Bild
slide.shapes.add_picture(r"C:\diagramme\flow.png",
                          left=Cm(2), top=Cm(8), width=Cm(20))

# Freies Textfeld
tb = slide.shapes.add_textbox(Cm(2), Cm(15), Cm(20), Cm(2))
tb.text_frame.text = "Hinweis: Skizze, kein finales Design."

Mehr Beispiele und Patterns: references/slide-typen.md unter „Kreative Folien".

Wichtig bei kreativen Folien:

  • DB-Farbpalette nutzen (DB_TURQUOISE_500, DB_RED, DB_SAND usw. aus dem Helper)
  • Maße in Cm() oder Emu() — nicht in Pixeln
  • Folie ist 33.87 × 19.05 cm groß
  • Master-Elemente nicht überdecken (Logo oben rechts, Footer unten)

Hintergrundbilder (10 Stück)

Verwendung:

from db_infrago_pptx import background_image_path
add_titel_bild_weiss(prs, "Titel", bild=background_image_path("datenstroeme"))

Verfügbare Keys: ice_line, laptop_checkmark, datenstroeme, gleisarbeiter, weltkugel, ice_bahnsteig, gluehbirne, puzzle, digital_transformation, binaercode. Details in references/asset-katalog.md.

User kann auch eigene Bilder per Pfad angeben (statt background_image_path("...") einfach r"C:\pfad\zu\bild.jpg").

Piktogrammbibliothek (86 SVG-Icons)

Aus dem DB InfraGO Master extrahiert — alle als monochrome SVG-Vektoren, die zur Laufzeit in jede DB-Farbe eingefärbt werden können (Türkis, Rot, Schwarz, Weiß). PowerPoint 2016+ rendert SVGs nativ — die Icons bleiben gestochen scharf bei jeder Größe.

from db_infrago_pptx import add_pictogram, list_pictograms, DB_TURQUOISE_500, DB_RED
from pptx.util import Cm

# Auf einer "Nur Titel"-Folie 4 Icons mit Beschriftung platzieren
slide = add_nur_titel(prs, "Vorteile", footer=FOOTER)
add_pictogram(slide, "haekchen",     Cm(2),  Cm(7), Cm(4), color=DB_TURQUOISE_500)
add_pictogram(slide, "uhr",          Cm(9),  Cm(7), Cm(4), color=DB_TURQUOISE_500)
add_pictogram(slide, "datenbank",    Cm(16), Cm(7), Cm(4), color=DB_TURQUOISE_500)
add_pictogram(slide, "puzzleteile",  Cm(23), Cm(7), Cm(4), color=DB_TURQUOISE_500)

# Verfügbare Keys auflisten
for key, descr in list_pictograms():
    print(f"  {key:30s} {descr}")

Häufige Keys (sortiert nach Anwendung):

  • Bestätigung: haekchen, volltreffer, pruefliste, klemmbrett
  • Negation: schliessen, verbotsschild, nicht_zulaessig
  • Daten: datenbank, cloud, cloudcomputing, balkendiagramm, flussdiagramm, verzweigungsdiagramm, abwaertstrend-diagramm
  • Kommunikation: chat, chatblase, e-mail, kommentar_like, kommentar_herz
  • Zeit: uhr, tageskalender, flip-kalender
  • Aktionen: wiedergabe, aktualisieren, herunterladen, uebertragen
  • Pfeile: pfeil_nach_oben, pfeil_nach_unten, pfeil_nach_rechts, pfeil_kreis, diverse Drehpfeile
  • Sonstiges: puzzleteile, handschlag, aktenkoffer, lupe, informationen, hilfe, fragezeichen, ausrufezeichen, management, vertrag, gehaltsabrechnung, geschichte, blockchain, computer, browserfenster

Vollständige Liste mit list_pictograms() oder direkt aus PICTOGRAMS.keys().

Farb-Override ist optional — ohne color-Parameter bleibt das Icon in der SVG-Default-Farbe (meist schwarz). Empfehlung für CI-konforme Slides: DB_TURQUOISE_500 als Akzent oder DB_BLACK für neutralen Look.

Design-Guide (DB InfraGO)

Siehe references/ci-referenz.md. Wichtigste Regeln:

  • Folienmaster nicht überschreiben — er bringt Logo, Footer-Slot, Foliennummer und Farben automatisch mit.
  • Schriften: DB Neo Office Head (Überschriften) und DB Neo Office (Fließtext) — auf DB-Rechnern installiert. Der Helper setzt diese explizit, damit sie nicht über System-Defaults wie Calibri ersetzt werden.
  • DB Rot (#EC0016) = Akzentfarbe (Logo, Highlights), NICHT Hauptfarbe.
  • Primärfarben: Türkis (#006E6B / #00A099) + Sand (#FCE3BA).
  • Schriftfarbe: nur Schwarz oder Weiß.
  • Max 57 Bullets pro Folie, max 2 Sätze pro Bullet (besser: Stichworte).
  • Eine Kernaussage pro Folie — nicht mehrere Themen mischen.
  • Tabellen: max 56 Zeilen sichtbar, sonst aufteilen.
  • Speaker Notes für Details nutzen.
  • Jede Folie muss in 3060 Sekunden erfassbar sein.
  • 3-Akt-Struktur: Eröffnung → Hauptteil mit Trennern → Abschluss.
  • NIEMALS nur Vorname im Footer — immer "DB InfraGO AG | Vollständiger Name | Team | Jahr".

Voraussetzungen

python-pptx muss installiert sein:

pip install python-pptx

Referenz-Dateien