Schritt-für-Schritt-Ausführung und Abhängigkeiten
- Befolgen Sie die Reihenfolge dieses Skills. Bevor ein Schritt eine Bibliothek, ein Befehlszeilentool, eine Laufzeitumgebung oder eine Schriftart verwendet, prüfen Sie nur die für diesen Schritt erforderlichen Abhängigkeiten; gehen Sie nicht davon aus, dass sie installiert sind.
- Verwenden Sie verfügbare Abhängigkeiten erneut. Fehlt eine, installieren Sie nur diese Abhängigkeit mit dem aktuellen Betriebssystem und einem verfügbaren Paketmanager, überprüfen Sie sie und wiederholen Sie den ursprünglichen Schritt. Installieren Sie nicht die gesamte Abhängigkeitsliste im Voraus.
- Verwenden Sie die aktive Python-Umgebung (
python -m pip install <Paket>oder das passendepython); erstellen Sie bei Bedarf eine task-lokale virtuelle Umgebung. Installieren Sie Node.js-Bibliotheken im Task-Projekt (npm install <Paket>), damit das Skript sie auflösen kann. Für Systemtools und Schriftarten verwenden Sie den verfügbaren Betriebssystem-Paketmanager (z.B. Homebrew auf macOS, apt auf Debian/Ubuntu oder winget auf Windows). - Befolgen Sie den Berechtigungsablauf des Hosts, wenn die Installation eine Genehmigung erfordert. Wenn der Paketmanager oder die erforderliche Berechtigung nicht verfügbar ist oder die Installation/der Download fehlschlägt, melden Sie die fehlende Abhängigkeit und den betroffenen Schritt; wiederholen Sie nicht unbegrenzt oder behaupten Sie, der Schritt sei bestanden. Fahren Sie nach Möglichkeit mit unabhängigen Schritten fort.
- Behalten Sie den ursprünglichen Workflow und die Qualitätsprüfungen bei. Prüfen Sie Schriftarten nur, wenn das Rendern sie erfordert. Schritte, die nur Text, integrierte Tools oder eigenständiges HTML verwenden, erfordern keine Paketinstallation; der Zugriff auf externe Tools oder die Authentifizierung müssen über den Host erfolgen, nicht über einen Paketmanager.
Pfad- und Laufzeitumgebungs-Konventionen (vor Befehlsausführung lesen)
- Python-Befehl: Dieser Computer verwendet
python(unter Windows gibt es normalerweise keinpython3). Alle folgenden Befehle verwenden einheitlichpython. - Skript-Pfade: Die Skripte dieses Skills befinden sich in
AppData/skills/pptx/scripts/(relativ zum Projektstamm). Die Skriptbefehle in diesem Dokument sowie in editing.md / pptxgenjs.md sind bereits als absolute relative Pfade zu diesem Basisverzeichnis angegeben und können direkt vom Projektstamm aus ausgeführt werden. - Arbeitsverzeichnis: Die Befehle gehen davon aus, dass das aktuelle Arbeitsverzeichnis der Projektstamm ist. Falls das Arbeitsverzeichnis abweicht (z.B.
default_workdirauf ein anderes Verzeichnis gesetzt wurde), ersetzen SieAppData/skills/pptxdurch den absoluten Pfad des Skill-Verzeichnisses. - Node.js: Fügen Sie vor der Ausführung von
npm/node(benötigt für pptxgenjs) gemäß den Projektregeln das Node.js-Verzeichnis zur PATH-Variable hinzu.
PPTX Skill
Kurzreferenz
| Aufgabe | Anleitung |
|---|---|
| Inhalt lesen/analysieren | python -m markitdown presentation.pptx |
| Bearbeiten oder aus Vorlage erstellen | Lesen Sie editing.md — QA: validate_layout.py + markitdown |
| Von Grund auf neu erstellen | 1. Inhalt planen → 2. Assets vorab generieren → 3. Lesen Sie pptxgenjs.md |
| Überlauf durch Design verhindern | Lesen Sie pptxgenjs.md |
| Designsystem generieren | python AppData/skills/pptx/scripts/design/search.py "<Thema>" --design-system |
| Korrektur nach Generierung | python AppData/skills/pptx/scripts/fix_pptx.py output.pptx |
| Layout-QA (zuerst kritisch) | python AppData/skills/pptx/scripts/validate_layout.py presentation.pptx |
Inhalt lesen
# Textextraktion
python -m markitdown presentation.pptx
# Raw-XML
python AppData/skills/pptx/scripts/unpack.py presentation.pptx unpacked/
Bearbeitungs-Workflow
Lesen Sie editing.md für vollständige Details.
- Vorlage mit
markitdownanalysieren - Entpacken + Stil-Ebenen-Prüfung + Theme- & Style-Ausrichtungsplan
- Folien manipulieren → Inhalt bearbeiten → bereinigen → packen
- ⚠️ Layout-QA (obligatorisches Tor):
python AppData/skills/pptx/scripts/validate_layout.py output.pptx --slides <bearbeitete_Foliennummern> - ⚠️ Inhalts-QA (obligatorisch):
python -m markitdown output.pptx
Von Grund auf neu erstellen
Lesen Sie pptxgenjs.md für vollständige Details.
Verwenden Sie diesen Workflow, wenn keine Vorlage oder Referenzpräsentation verfügbar ist.
Erforderliche Folienstruktur (nur bei Neuerstellung)
Wenn Sie eine Präsentation von Grund auf neu erstellen, MÜSSEN Sie diese Struktur befolgen:
- Folie 1: Titelseite
- Folie 2: Inhaltsverzeichnis (Agenda)
- Folie 3 ff.: Inhaltsabschnitte in der genauen Reihenfolge, die auf Folie 2 aufgeführt ist
- Letzte Folie: Abschluss-/Dankesseite
Überspringen Sie nicht die Folie mit dem Inhaltsverzeichnis. Platzieren Sie keine Inhaltsfolien vor dem Inhaltsverzeichnis.
⚠️ Keine leeren Folien erlaubt
Jede Folie MUSS mindestens ein sichtbares Element (addText, addShape, addImage, addChart oder addTable) innerhalb der Folie enthalten. Eine Folie mit nur einer Hintergrundfarbe und ohne Inhaltselemente ist ein Generierungsfehler.
Häufige Ursachen für leere Folien:
- Vergessen, Inhalt zu Abschnittstrenn- / Übergangsfolien hinzuzufügen
- Token-Kürzung während der Generierung, die einige Folien leer zurücklässt
- Annahme, dass Folienlayout oder Master die Inhalte automatisch ausfüllen (tun sie nicht – pptxgenjs erstellt minimale Layouts ohne geerbte Formen)
Wenn Sie eine Folie als Abschnittstrenner beabsichtigen, MÜSSEN Sie explizit Elemente hinzufügen – z.B. eine große Abschnittsnummer, Titeltext und/oder dekorative Formen.
⚠️ ERFORDERLICH: Planung vor der Generierung
Bevor Sie Code schreiben, MÜSSEN Sie diese Planungsschritte abschließen:
⚡ Schnellpfad für einfache Anfragen: Wenn der Benutzer nach einem kurzen/einfachen Deck fragt (≤ 6 Folien, ein Thema, keine komplexen Diagramme), überspringen Sie die formelle Planungsausgabe und gehen Sie direkt zu Schritt 3 (Code schreiben) mit der Standardstruktur Titelseite + Inhaltsverzeichnis + (N-3) Inhalte + Abschluss. Schnellpfad = keine ausführliche Planung in Ihrer Antwort, sondern erstellen und führen Sie das Skript direkt aus.
Schritt 1: Inhalts-Design-Plan ausgeben
Präsentieren Sie einen strukturierten Plan, der Folgendes abdeckt:
-
Gesamtthema und -stil
- Farbpalettenauswahl (siehe Abschnitt "Design-Ideen")
- Typografie-Kombination
- Visuelles Motiv, das sich durch alle Folien zieht
-
Folien-für-Folien-Gliederung
Folie 1: Titelseite - Layouttyp, Schlüsselelemente Folie 2: Inhaltsverzeichnis - Geordnete Abschnittsliste Folie 3: [Abschnitt 1 aus Inhaltsverzeichnis] - Layouttyp, Schlüsselelemente, Einblicksplan (falls visuell) ... Folie N: Abschluss / Danke - Layouttyp, Schlüsselelemente ... -
Inventar der visuellen Elemente
- Alle benötigten Bilder, Symbole, Diagramme und Grafiken auflisten
- Jedes als
[Integriert](pptxgenjs-Formen/Diagramme) oder[Extern](benötigt Vorabgenerierung) markieren
Beispiel für eine Planungsausgabe:
## Präsentationsplan
**Thema:** Ozean-Verlaufspalette (065A82, 1C7293, 21295C)
**Schriftarten:** Georgia (Überschriften) + Calibri (Fließtext)
**Motiv:** Abgerundete Karten mit linkem Akzentrand
### Folien:
1. Titelseite - Zentrierter Titel, Verlaufshintergrund
2. Inhaltsverzeichnis - Überblick / Architektur / Metriken / Zeitplan
3. [Abschnitt 1 aus Inhaltsverzeichnis] - Layouttyp, Schlüsselelemente, Einblicksplan (falls visuell)
...
n. Danke - Abschlusserklärung + Kontakt
⚠️ Nach der Ausgabe Ihres Plans fahren Sie SOFORT mit Schritt 2 und Schritt 3 fort. Planen Sie nicht erneut, wiederholen Sie nicht dieselbe Gliederung mit geringfügigen Abweichungen. Geben Sie den Plan EINMAL aus und beginnen Sie dann mit dem Schreiben des pptxgenjs-Codes.
Schritt 2: Externe Assets vorab generieren
Für als [Extern] markierte Grafiken generieren Sie diese VOR dem Schreiben des pptxgenjs-Codes.
⚠️ KRITISCH: Farbkonsistenz
Alle generierten Diagramme und Grafiken MÜSSEN dieselbe Farbpalette wie die Präsentation verwenden. Definieren Sie die Farben am Anfang Ihres Generierungsskripts basierend auf Ihrem gewählten Thema.
Option A: Native Formen/Diagramme zuerst (ERFORDERLICH Standard)
ALLE Architekturdiagramme, Flussdiagramme, Prozessdiagramme, Organigramme und Beziehungsdiagramme MÜSSEN mit nativen pptxgenjs-Formen (RECHTECK, OVAL, LINIE, Verbinder + addText) erstellt werden. Siehe pptxgenjs.md "Diagramme mit nativen Formen erstellen" für Muster und Beispiele.
- Verwenden Sie eine starke Vorlagenfolie (Prozess, Vergleich, 2-spaltig, Symbolraster), wenn sie passt
- Verwenden Sie native pptxgenjs-Formen (Boxen/Pfeile/Linien + Text) für Abläufe, Architekturen und Hierarchien
- Verwenden Sie pptxgenjs-Diagramme für einfache Datendiagramme (Balken, Kreis, Linie usw.)
Verwenden Sie matplotlib nur für komplexe statistische Diagramme (Heatmaps, Streudiagramme, Boxplots), die pptxgenjs-Diagramme nicht verarbeiten können. Verwenden Sie Mermaid nur, wenn das Diagramm mit nativen Formen zu komplex ist UND viele Querverweise enthält.
Option B: Matplotlib/Python-Diagramme
Definieren Sie die Farbpalette am Anfang, um sie an Ihr PPT-Thema anzupassen:
import matplotlib.pyplot as plt
import matplotlib.colors as mcolors
# ============================================================
# FARBPALETTE - An Ihr PPT-Thema anpassen
# ============================================================
# Beispiel: "Ozean-Verlauf"-Thema
COLORS = {
'primary': '#065A82',
'secondary': '#1C7293',
'accent': '#21295C',
'background': '#F0F7FA',
'text': '#21295C',
'light': '#E8F4F8',
}
# Farbzyklus für mehrere Datenreihen
COLOR_CYCLE = [COLORS['primary'], COLORS['secondary'], COLORS['accent'], '#4A90A4', '#2D5A6B']
# Thema global anwenden
plt.rcParams.update({
'axes.prop_cycle': plt.cycler(color=COLOR_CYCLE),
'axes.facecolor': 'none',
'axes.edgecolor': COLORS['text'],
'axes.labelcolor': COLORS['text'],
'text.color': COLORS['text'],
'xtick.color': COLORS['text'],
'ytick.color': COLORS['text'],
'figure.facecolor': 'none',
'font.family': 'sans-serif',
'font.size': 12,
})
# ============================================================
# Diagramm mit Themenfarben erstellen
fig, ax = plt.subplots(figsize=(8, 5), dpi=150)
bars = ax.bar(['Q1', 'Q2', 'Q3', 'Q4'], [25, 40, 35, 50],
color=[COLORS['primary'], COLORS['secondary'], COLORS['primary'], COLORS['secondary']],
edgecolor=COLORS['accent'], linewidth=1.5)
ax.set_title('Quartalsumsatz', fontsize=16, fontweight='bold', color=COLORS['text'])
ax.set_ylabel('Umsatz (Mio. $)', color=COLORS['text'])
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
plt.tight_layout()
width_px, height_px = int(8 * 150), int(5 * 150)
plt.savefig(f'chart_{width_px}x{height_px}.png', dpi=150, transparent=True)
plt.close()
Matplotlib-Palettenvorlagen:
# Mitternachts-Manager
COLORS = {'primary': '#1E2761', 'secondary': '#CADCFC', 'accent': '#FFFFFF', 'text': '#1E2761'}
# Wald & Moos
COLORS = {'primary': '#2C5F2D', 'secondary': '#97BC62', 'accent': '#F5F5F5', 'text': '#2C5F2D'}
# Korallen-Energie
COLORS = {'primary': '#F96167', 'secondary': '#F9E795', 'accent': '#2F3C7E', 'text': '#2F3C7E'}
# Warmes Terrakotta
COLORS = {'primary': '#B85042', 'secondary': '#E7E8D1', 'accent': '#A7BEAE', 'text': '#B85042'}
# Teal-Vertrauen
COLORS = {'primary': '#028090', 'secondary': '#00A896', 'accent': '#02C39A', 'text': '#028090'}
Verwenden für:
- Komplexe statistische Diagramme (Balken, Linie, Kreis, Punkt, Radar usw.)
- Benutzerdefinierte Visualisierungen, die von pptxgenjs nicht unterstützt werden
- Heatmaps, Streudiagramme, Boxplots
⚠️ Verwenden Sie matplotlib NICHT für:
- Architekturdiagramme
- Flussdiagramme / Prozessdiagramme
- Organigramme / Hierarchiediagramme
- Netzwerktopologiediagramme
- Jedes Diagramm, das hauptsächlich Beziehungen zwischen Komponenten zeigt
Diese MÜSSEN mit nativen pptxgenjs-Formen erstellt werden, damit sie als bearbeitbare PPT-Objekte gerendert werden – nicht als Rasterbilder.
matplotlib - Diagramme mit CJK-Unterstützung
Beim Erstellen von Diagrammen/Grafiken mit matplotlib, die chinesischen Text enthalten, MÜSSEN Sie die Schriftart konfigurieren:
import os
import platform
import matplotlib.pyplot as plt
import matplotlib
def setup_matplotlib_cjk():
"""Konfiguriert matplotlib zur Unterstützung von CJK-Zeichen"""
system = platform.system()
if system == "Darwin": # macOS
font_names = ['Arial Unicode MS', 'PingFang SC', 'Heiti SC', 'STHeiti']
elif system == "Windows":
font_names = ['Microsoft YaHei', 'SimHei', 'SimSun']
else: # Linux
font_names = ['Noto Sans CJK SC', 'WenQuanYi Zen Hei', 'Droid Sans Fallback']
# Verfügbare Schriftart finden
available_fonts = [f.name for f in matplotlib.font_manager.fontManager.ttflist]
for font_name in font_names:
if font_name in available_fonts:
plt.rcParams['font.sans-serif'] = [font_name] + plt.rcParams['font.sans-serif']
plt.rcParams['axes.unicode_minus'] = False # Minuszeichen-Anzeige korrigieren
return font_name
return None
# CJK-Schriftart vor dem Erstellen von Diagrammen einrichten
cjk_font = setup_matplotlib_cjk()
# Balkendiagramm mit chinesischen Beschriftungen erstellen
categories = ['Erstes Quartal', 'Zweites Quartal', 'Drittes Quartal', 'Viertes Quartal']
values = [120, 135, 142, 158]
plt.figure(figsize=(10, 6))
plt.bar(categories, values, color='steelblue')
plt.title('Vierteljährliche Verkaufsdaten', fontsize=16)
plt.xlabel('Quartal', fontsize=12)
plt.ylabel('Umsatz', fontsize=12)
plt.tight_layout()
plt.savefig('chart.png', dpi=150)
plt.close()
Option C: Websuche nach Bildern
Nach relevanten Bildern suchen, wenn:
- Stockfotos oder Illustrationen benötigt werden
- Symbole oder Logos erforderlich sind
- Referenzbilder für Konzepte
Option D: Mermaid-Diagramme (letzter Ausweg)
Nur verwenden, wenn das Diagramm nicht sauber mit nativen Formen/Layouts dargestellt werden kann, und es konsistent mit dem Deck halten:
# Installieren falls nötig: npm install -g @mermaid-js/mermaid-cli
Erstellen Sie eine Theme-Konfigurationsdatei, die zu Ihrer PPT-Palette passt:
// mermaid-config.json - Beispiel für "Ozean-Verlauf"-Thema
{
"theme": "base",
"themeVariables": {
"primaryColor": "#065A82",
"primaryTextColor": "#FFFFFF",
"primaryBorderColor": "#21295C",
"secondaryColor": "#1C7293",
"secondaryTextColor": "#FFFFFF",
"secondaryBorderColor": "#065A82",
"tertiaryColor": "#E8F4F8",
"tertiaryTextColor": "#21295C",
"lineColor": "#21295C",
"textColor": "#21295C",
"mainBkg": "#E8F4F8",
"nodeBorder": "#065A82",
"clusterBkg": "#F0F7FA",
"titleColor": "#21295C",
"edgeLabelBackground": "#FFFFFF"
}
}
cat > diagram.mmd << 'EOF'
graph LR
A[Client] --> B[API Gateway]
B --> C[Dienst A]
B --> D[Dienst B]
EOF
# Hohe Auflösung für PPT-Verwendung bevorzugen
mmdc -i diagram.mmd -o diagram.png -c mermaid-config.json -b white -w 1600 --scale 2
Schritt 3: Bildbenennungskonvention (ERFORDERLICH)
Alle generierten Bilder MÜSSEN die Abmessungen im Dateinamen enthalten:
{name}_{breite}x{höhe}.png
Beispiele:
architecture_800x600.png- 800px breit, 600px hochtimeline_1200x400.png- 1200px breit, 400px hochchart_600x600.png- 600px quadratisch
Beim Speichern von Bildern immer die Abmessungen angeben:
# Matplotlib-Beispiel
fig, ax = plt.subplots(figsize=(8, 5), dpi=150)
# ... Diagramm erstellen ...
width_px = int(8 * 150) # 1200
height_px = int(5 * 150) # 750
plt.savefig(f'chart_{width_px}x{height_px}.png', dpi=150, transparent=True)
# Allgemein