Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
A direct command skips the review prompt. Inspect the source before running it.
Generate a PPTX presentation explaining code changes on the current branch, with matplotlib diagrams and dark theme slides.
argument-hint
[base-branch]
user-invocable
true
Generate a PPTX presentation explaining the changes on the current branch.
Arguments
If "$ARGUMENTS" is non-empty, use it as the target branch to compare against.
Otherwise, default to origin/develop.
Task
You are creating a technical presentation for a team of developers. The output
is a .pptx file in the project root that the user can open in Google Slides.
Step 1 — Investigate the branch
Run git log --oneline <base>..HEAD to list all commits on this branch.
Run git diff --name-only <base>..HEAD to find changed source files.
Separate generated files (e.g. sql/parser/YouTrackDBSql*.java) from hand-written code.
Read every non-generated changed source file to understand the full picture.
Read commit messages for motivation and design rationale.
Step 2 — Plan the slides
Create a slide outline (15–25 slides) covering:
Title slide with branch name and issue ID (extracted from branch name).
Problem statement — what motivated this change.
Solution overview — high-level summary with a phase/flow diagram.
Architecture slides — new files, data structures, on-disk formats.
Algorithm slides — step-by-step flowcharts for key algorithms.
Code path slides — how existing code is modified and where new code hooks in.
Configuration — new parameters, defaults, tuning guidance.
Safety properties — crash safety, concurrency, error handling.
If the venv already exists, skip creation and just verify imports work.
Step 4 — Generate diagrams with matplotlib
For every diagram (flowcharts, architecture, data flow, record layouts, before/after
comparisons), generate a matplotlib figure rendered to a PNG BytesIO stream.
Always use matplotlib.use('Agg') before importing pyplot.
Use fig.savefig(buf, format='png', dpi=200, bbox_inches='tight', facecolor=fig.get_facecolor()).
Turn off axes: ax.axis('off').
Use figsize appropriate for widescreen (e.g. (12, 5) for wide diagrams, (10, 7) for tall ones).
What NOT to do for diagrams
Do NOT use Pillow ImageDraw.text() to render ASCII art — the default bitmap
font has broken glyph coverage for box-drawing characters (U+250x) and the
output is unreadable in presentations.
Do NOT use mermaid-py or mermaid-cli — they require network access or a
headless browser, neither of which is reliably available.
Do NOT use the graphviz Python package — it requires the dot binary which
may not be installed.
matplotlib is the ONLY reliable local renderer. Use it for ALL diagrams.
Step 5 — Build the PPTX
Use python-pptx to assemble slides. Follow these conventions:
Run with: .tmp/pptx-venv/bin/python .tmp/gen-presentation.py
Step 6 — Output
Save the PPTX to the project root as <branch-name>-presentation.pptx.
Tell the user the file path and total slide count.
Also leave the Python script at .tmp/gen-presentation.py so the user
can tweak and regenerate.
Quality checklist
Every diagram is a matplotlib-rendered PNG — no ASCII art in the final PPTX.
Diagrams use the dark color theme and render at 200 DPI.
All text is legible (minimum 10pt in diagrams, 13pt in code blocks, 17pt in body).
Slide count is between 15 and 25.
The presentation tells a coherent story: problem → solution → details → safety → decisions.