Was macht g-resentation?
Verwandle ‚eine PPT erstellen‘ in einen vollständigen Produktionsworkflow vom Fragen bis zur Lieferung. Der Name kommt von grill me in presentation: Zuerst wirst du so lange gelöchert, bis du nichts Vages mehr sagen kannst – dann wird losgelegt.
Dieser Skill orchestriert nur: Er fragt Anforderungen ab, legt die Struktur fest, wählt die Route, delegiert die Arbeit an die geeigneten Erstellungsskills und führt die finale Abnahme durch. Er zeichnet selbst keine Folien.
Führe beim ersten Mal python3 "<SKILL_DIR>/scripts/doctor.py" aus; es zeigt dir, was fehlt und welchen Befehl du als Nächstes ausführen sollst. Den vollständigen Einstiegspfad findest du in QUICKSTART.md.
Abgrenzung
- Nutzen: Der Inhalt steht noch nicht fest und du musst Präsentationsmaterial von Grund auf neu erstellen.
- Nicht nutzen: Du hast bereits eine seitenweise Gliederung und möchtest sie nur layouten, oder du möchtest nur eine einzelne Folie verschönern, ändern oder das Format konvertieren – verwende direkt die Erstellungsskills.
- Auslösungspriorität: Dieser Skill wählt zuerst die Route und ruft dann erst den Erstellungsskill auf. Die Erstellungsskills behaupten vielleicht selbst, ‚Präsentationen generieren‘ zu können; lass sie Schritt 0 nicht überspringen.
Projektstruktur
Ein Projekt bekommt einen Ordner decks/<slug>/. Die Dateinamen sind fest vorgegeben; jeder weitere Schritt arbeitet nur mit diesen Dateinamen:
decks/<slug>/
├── brief.md Anforderungsbeschreibung (Ergebnis von Schritt 0)
├── outline.md Seitenweises Skript (P01, P02…)
├── assets/
│ ├── sources/ Quellmaterial zur Faktenprüfung
│ └── media/ Tatsächlich verwendete Bilder, Logos, Screenshots
├── out/ Endergebnis
└── versions/ Archivierte Versionen
Bei kleinen Projekten können die Ordner assets/ und versions/ weggelassen werden.
Skripte
Die drei Skripte erledigen nur deterministische Aufgaben, sie ersetzen keine menschliche Entscheidung. Sie verwenden nur die Standardbibliothek und laufen mit jedem Python 3.10+. Es müssen keine zusätzlichen Pakete installiert werden.
<SKILL_DIR> ist der absolute Pfad des Verzeichnisses, in dem sich dieser Skill befindet. Ersetze ihn vor der Ausführung selbst. Die folgenden Befehle funktionieren unter macOS / Linux / Git Bash gleichermaßen. Für PowerShell schreibe "$S/xxx.py" als "$S\xxx.py".
S="<SKILL_DIR>/scripts"
python3 "$S/new_deck.py" q4-review --title "Q4 Recap" # Erstellt Projektordner und zwei leere Vorlagen
python3 "$S/new_deck.py" weekly-sync --small # Kleines Projekt
python3 "$S/check_outline.py" decks/q4-review # Prüft fortlaufende Seitennummerierung, sieben Felder, Vergleich mit eingefrorener Baseline
python3 "$S/snapshot.py" decks/q4-review outline # Erstellt einen Snapshot, automatisch inkrementell (v01, v02…)
Unter Windows könnte python3 ein Platzhalter aus dem Microsoft Store sein. Führe zuerst python3 -V aus, um es zu überprüfen; falls es nicht funktioniert, verwende python oder py -3. Alle Skripte akzeptieren jeden funktionierenden Interpreter.
Wenn check_outline.py einen Exit-Code ungleich 0 hat, repariere zuerst und fahre dann fort. Nach dem Einfrieren führe es erneut aus; es listet die Seitenunterschiede im Vergleich zu versions/v01-outline/ auf. Dies ist die Absicherung für Änderungen wie ‚Ändere P07 nur anhand der Nummer‘.
Externe Abhängigkeiten (optional, bei Bedarf selbst installieren)
Dieser Skill ist nur die Orchestrierungsschicht und enthält keine Erstellungswerkzeuge. Die folgenden vier werden je nach gewählter Route benötigt. Fehlen sie, wird auf eine niedrigere Route zurückgegriffen:
| Abhängigkeit | Verwendete Route | Was tun, wenn nicht installiert |
|---|---|---|
frontend-slides | HTML-Präsentation | Eigenes HTML-Einzeiler schreiben oder eine der beiden anderen Routen verwenden |
guizang-ppt-skill | Alternativer Stil für HTML-Präsentation | Mit frontend-slides ersetzen |
ppt-master | Editierbares PPTX | Auf HTML oder Bilder zurückgreifen; in der Präsentation darauf hinweisen, dass kein PPTX erstellt wurde |
imagegen | Ganze Seite als Bild | HTML als Screenshot exportieren (PNG) |
Installation erfolgt immer mit npx skills add <owner/repo>; Details findest du in den jeweiligen Repositories. Wenn Abhängigkeiten fehlen, teile dem Benutzer mit, welche Route fehlt und welche Auswirkungen das hat; gib nicht vor, etwas erstellen zu können.
ppt-master hat eine Reihe von Nicht-Standardbibliotheks-Abhängigkeiten (python-pptx, PyYAML, skia-pathops, uharfbuzz usw.). Schreibe den Interpreterpfad nicht fest vor; ermittle ihn zuerst:
PY=$(command -v python3 || command -v python)
"$PY" -c "import pptx, yaml, pathops, uharfbuzz" 2>/dev/null \
|| echo "Fehlende Abhängigkeiten: Lass den Benutzer in dieser Python-Umgebung pip install -r <PPT_MASTER_DIR>/requirements.txt ausführen"
Wenn die Abhängigkeiten vorhanden sind, führe die Integritätsprüfung aus: "$PY" "<PPT_MASTER_DIR>/scripts/attribution_guard.py". Wenn der Exit-Code ungleich 0 ist, stoppe; repariere nicht und umgehe es nicht.
Materialien und Fakten
Spreche über die ‚Gegenwart‘. Schreibe nicht aus dem Gedächtnis. Wenn der Skill aihot installiert ist, verwende ihn, um die neuesten Informationen zu erhalten. aihot ist eine schreibgeschützte öffentliche API, die keinen API-Key benötigt:
curl -sL "https://aihot.virxact.com/api/v1/items?mode=selected&window=7d&q=<Schlüsselwort>&limit=10"
curl -sL "https://aihot.virxact.com/api/v1/hot-topics"
mode=selectedist der kuratierte Pool. Wenn die Abfrage mitqleer zurückkommt, versuche es erneut mitmode=allund weise darauf hin, dass das Thema nicht kuratiert wurde.- Speichere die abgerufene Rohantwort in
assets/sources/zur späteren Überprüfung; sie gehört nicht in die Lieferdokumente. - Gib in der Fußzeile nur die ursprüngliche Drittquelle an (Herausgeber, Berichtsname, Datum). Gib keine ganze Zusammenfassung von Nachrichtenseiten wieder und verlinke nicht auf diese als Referenz.
- Die API erlaubt persönliche und nicht-kommerzielle Nutzung. Für kundenorientierte, kommerzielle Lieferungen, externe Abrechnung oder Weiterverbreitung in großem Umfang muss zuerst eine Genehmigung gemäß den Nutzungsbedingungen eingeholt werden. Gehe nicht davon aus, dass sie standardmäßig verwendet werden kann.
- Wenn der Skill nicht installiert ist oder die Datenabfrage fehlschlägt, falle auf öffentliche Suche zurück oder bitte den Benutzer um Materialien. Gib an, bis zu welchem Datum die Daten aktuell sind.
Workflow
1. Klassifizierung
Es gibt nur ein Kriterium: Kann der Fehler rückgängig gemacht werden?
Externe Kunden, formelle Überprüfungen, zu archivierende oder zu verbreitende Inhalte, abteilungsübergreifende Lieferungen → Großes Projekt. Internes Team-Meeting, kleiner Kreis, jederzeit wiederholbar → Kleines Projekt.
Teile dem Benutzer nach der Klassifizierung mit einem Satz mit: ‚Dieses Projekt behandle ich als großes Projekt‘ oder ‚Kleines Projekt, fülle einfach das Formular aus‘. Der Benutzer kann die Klassifizierung ändern. Dann geht es weiter.
2. Anforderungen erfragen (Gate)
- Kleines Projekt: Gib dem Benutzer die Vorlage
assets/brief-template.mdzum Ausfüllen. Frage bei fehlenden Feldern gezielt nach; rate nicht für ihn. - Großes Projekt: Stelle immer nur eine Frage auf einmal. Zuerst zum Inhalt, dann zur Zielgruppe (4 Dimensionen), zuletzt zur Form. Fragen und Formulierungshilfen findest du in
references/step0.md.
Unabhängig von der Klasse: Formuliere nach dem Fragen zuerst mit drei Sätzen eine Zusammenfassung: ‚Diese Präsentation ist für [Zielgruppe], sie sollen [Handlung] ausführen, und sich danach an [Kernbotschaft] erinnern.‘ Schreibe erst brief.md, nachdem der Benutzer die Zusammenfassung bestätigt hat.
3. Seitenweises Skript (Gate)
Schreibe outline.md gemäß dem 7-Felder-Schema in references/step0.md. Jede Seite bekommt eine Nummer, beginnend mit P01, fortlaufend. Der Titel steht in der Zeile mit der Nummer, die restlichen sechs Felder darunter. Verwende zum Schreiben die Vorlage P1 Seitenweises Skript aus references/prompts.md und ersetze alle [ ] durch die tatsächlichen Inhalte aus brief.md. Führe nach dem Schreiben check_outline.py aus. Wenn die Seitennummern nicht fortlaufend sind, Titel oder Felder fehlen, gilt das Skript als unvollständig.
Nach der Bestätigung: Einfrieren. Führe sofort snapshot.py <deck> outline aus, um die Baseline zu speichern. Die Seitenanzahl und -nummerierung darf ab jetzt nicht mehr geändert werden. Das Hinzufügen oder Löschen von Seiten erfordert die Zustimmung des Benutzers. Jede Neuanordnung muss gemeldet werden (z. B. ‚Ursprüngliche P07 → Jetzige P05‘). Alle späteren Änderungen an ‚Seite X‘ beziehen sich nur auf die Nummer.
4. Route wählen + drei Musterseiten (Gate)
Schätze zuerst, dann lasse bestätigen. Leite basierend auf dem Brief eine Route ab, begründe sie und lasse den Benutzer sie ablehnen. Frage nicht direkt ‚Welche möchtest du?‘. Kriterien und Aufruf findest du in references/paths.md.
Wähle für die Muster die drei schwierigsten Seiten aus: Titelseite, die informationsreichste Seite und die Seite mit dem komplexesten Diagramm oder Ablauf. Gib echte Ergebnisse (durchblätterbares HTML, betrachtbares PNG, öffnbare PPTX), keine Screenshots. Fahre erst mit der Massenproduktion fort, wenn die Richtung bestätigt ist. Die Prompts für die drei Routen (P3 / P4 / P6) enthalten bereits die Anforderungen für diese Musterseiten; es muss nichts zusätzlich formuliert werden.
5. Erstellung
Rufe den entsprechenden Skill gemäß der Route auf und verwende den zugehörigen Prompt:
| Route | Verwendeter Prompt | Skill |
|---|---|---|
| Web-Präsentation | P3 | frontend-slides oder guizang-ppt-skill |
| Bilder | P4, ggf. ergänzt durch P5 | imagegen; P5 verwendet ppt-master |
| Editierbares PPTX | P6 | ppt-master |
Wenn Referenzbilder vorhanden sind oder hohe visuelle Anforderungen bestehen, füge vor dem Prompt P2 Stilanalyse ein. Ohne Referenzbilder überspringe diesen Schritt; der Stil folgt den Standardeinstellungen des Erstellungsskills.
Ersetze alle [ ] in den Prompts durch die tatsächlichen Inhalte aus brief.md. Kein einziger Platzhalter darf übrig bleiben.
Produziere in Batches von zehn Seiten. Melde nach jedem Batch: ‚P11–P20 sind fertig‘. Unterbrich den Rhythmus nicht. Halte nur an, wenn eine Seite tatsächlich nicht erstellt werden kann.
Prüfe vor der Verwendung von ppt-master, ob der Interpreter die erforderlichen Pakete importieren kann. Wenn nicht, lasse den Benutzer die requirements.txt im entsprechenden Python-Environment installieren. Schreibe den virtuellen Umgebungspfad nicht fest vor:
PY=$(command -v python3 || command -v python)
"$PY" -c "import pptx, yaml, pathops, uharfbuzz" || echo "Fehlende Abhängigkeiten, siehe Abschnitt ‚Externe Abhängigkeiten‘ oben"
6. Abnahme + Archivierung
Führe die Prüfung gemäß den vier Kategorien in references/checklist.md Punkt für Punkt durch. Die Webversion muss im integrierten Browser tatsächlich geöffnet und getestet werden (Blättern, Zoomen, Offline-Modus). Wenn ein Punkt nicht besteht, verwende P7 Einzelseiten-Änderung mit Seitennummer und Screenshot; ändere immer nur eine Seite auf einmal. Bei mehreren Seiten mit demselben Problem erkläre den Umfang einheitlich und führe eine erneute Gesamtprüfung durch.
Vor der Lieferung: snapshot.py <deck> final, um eine Version zu archivieren.
7. Lieferhinweise
Ein Satz, der erklärt: Welche Datei geöffnet werden muss, welche Laufzeitumgebung erforderlich ist und welche bekannten Einschränkungen es gibt.
Harte Regeln
- Stelle an jedem Prüfpunkt nur spezifische Fragen (z. B. ‚Stimmt die Richtung dieser drei Seiten? Was ist falsch?‘). Frage nicht ‚Was meinen Sie?‘.
- Erfinde keine Fakten, Zahlen oder Beispiele. Wenn Informationen widersprüchlich sind oder fehlen, halte inne und frage; rate nicht.
- Wenn eine Anforderung nicht erfüllt werden kann, nenne die Einschränkung und eine Alternative. Führe nicht stillschweigend eine niedrigere Qualität aus.
- Wenn sich ein Problem nach zwei Iterationen nicht verbessert hat, suche zuerst die Ursache und generiere nicht weiter ohne Änderung.
- Der gesamte Workflow pausiert nur zweimal: bei den Musterseiten und bei der Endabnahme. Zwischendurch werden keine Seiten einzeln bestätigt.