create-presentation
Skill442 starsChanged 5 months agoApache-2.0View on GitHub
Generate a PPTX presentation explaining code changes on the current branch, with matplotlib diagrams and dark theme slides.
- Installs packages
We split this skill into the rules it gives an agent
16 rules. About 0 are common, 5 are distinctive, and 11 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈5
Distinctive · estimate
This author's own choices. Worth a look.
11
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 12
If "$ARGUMENTS" is non-empty, use it as the target branch to compare against.
- Very specific: line 22
Run git log --oneline <base>..HEAD to list all commits on this branch.
- Very specific: line 23
Run git diff --name-only <base>..HEAD to find changed source files.
- Distinctive: line 25
Read every non-generated changed source file to understand the full picture.
- Distinctive: line 26
Read commit messages for motivation and design rationale.
- Distinctive: line 30
Create a slide outline (15–25 slides) covering:
- Distinctive: line 51
If the venv already exists, skip creation and just verify imports work.
- Very specific: line 76
Use matplotlib.patches.FancyBboxPatch for boxes and ax.annotate with arrowprops for arrows.
- Very specific: line 95
Always use matplotlib.use('Agg') before importing pyplot.
- Very specific: line 98
Use figsize appropriate for widescreen (e.g.
- Very specific: line 102
Do NOT use Pillow ImageDraw.text() to render ASCII art — the default bitmap font has broken glyph coverage for box-drawing characters …
- Distinctive: line 105
Do NOT use mermaid-py or mermaid-cli — they require network access or a headless browser, neither of which is reliably available.
- Very specific: line 107
Do NOT use the graphviz Python package — it requires the dot binary which may not be installed.
- Very specific: line 113
Use python-pptx to assemble slides.
- Very specific: line 139
Use prs.slide_layouts[6] (blank layout) for all slides.
- Very specific: line 149
Write the entire generator as a single Python script saved to .tmp/gen-presentation.py.
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
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>..HEADto list all commits on this branch. - Run
git diff --name-only <base>..HEADto 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.
- Design decisions — key trade-offs and rationale.
- Scope/limitations — what is NOT covered.
- Q&A slide.
Step 3 — Set up Python environment
python3 -m venv .tmp/pptx-venv
.tmp/pptx-venv/bin/pip install python-pptx matplotlibIf 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.
Follow these conventions:
Color theme (dark, matches slide background)
MPL_BG = '#121224' # figure/axes background
MPL_FG = '#e0e0e0' # default text
MPL_BLUE = '#64B5F6' # titles, primary boxes
MPL_LBLUE = '#81D4FA' # secondary highlights
MPL_GREEN = '#A5D6A7' # success/safe elements
MPL_ORANGE = '#FFB74D' # accent/new/warning
MPL_RED = '#EF5350' # delete/danger
MPL_BOX_BG = '#1a2a44' # box fill
MPL_BOX_BORDER = '#3a5a8a' # box strokeDiagram building blocks
Use matplotlib.patches.FancyBboxPatch for boxes and ax.annotate with
arrowprops for arrows. Helper pattern:
def make_box(ax, x, y, w, h, text, facecolor, edgecolor, text_color,
fontsize=11, weight='normal'):
box = FancyBboxPatch((x, y), w, h, boxstyle="round,pad=0.15",
facecolor=facecolor, edgecolor=edgecolor, linewidth=1.5)
ax.add_patch(box)
ax.text(x + w/2, y + h/2, text, ha='center', va='center',
fontsize=fontsize, color=text_color, weight=weight, family='monospace', wrap=True)
def make_arrow(ax, x1, y1, x2, y2, color='#81D4FA', style='->', lw=2):
ax.annotate('', xy=(x2, y2), xytext=(x1, y1),
arrowprops=dict(arrowstyle=style, color=color, lw=lw))Figure setup
- 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
figsizeappropriate 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
dotbinary 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:
Slide dimensions
prs.slide_width = Inches(13.333) # widescreen 16:9
prs.slide_height = Inches(7.5)PPTX color theme
BG_COLOR = RGBColor(0x1B, 0x1B, 0x2F) # slide background
TITLE_COLOR = RGBColor(0x64, 0xB5, 0xF6) # slide titles
HEADING_COLOR = RGBColor(0x81, 0xD4, 0xFA) # subtitles
TEXT_COLOR = RGBColor(0xE0, 0xE0, 0xE0) # body text
ACCENT_COLOR = RGBColor(0xFF, 0xB7, 0x4D) # bold highlights
CODE_BG = RGBColor(0x12, 0x12, 0x24) # code block fill
TABLE_HEADER_BG = RGBColor(0x1A, 0x3A, 0x5C) # table header row
TABLE_ROW_BG = RGBColor(0x15, 0x15, 0x2A) # odd table rows
TABLE_ALT_BG = RGBColor(0x1D, 0x1D, 0x35) # even table rows
BORDER_COLOR = RGBColor(0x3A, 0x3A, 0x5C) # code block borderSlide structure
- Use
prs.slide_layouts[6](blank layout) for all slides. - Set background:
slide.background.fill.solid(); slide.background.fill.fore_color.rgb = BG_COLOR. - Title: 32pt, bold, TITLE_COLOR, positioned at
(0.5", 0.3"). - Body text: 17–18pt, TEXT_COLOR. Use
**bold**parsing to apply ACCENT_COLOR. - Code blocks:
ROUNDED_RECTANGLEshape with CODE_BG fill, Consolas 13pt, green text. - Tables: styled with alternating row colors, header row in TABLE_HEADER_BG.
- Diagrams: inserted as PNG images via
slide.shapes.add_picture(stream, left, top, width).
Code organization
Write the entire generator as a single Python script saved to .tmp/gen-presentation.py.
Structure it as:
- Imports and theme constants.
- matplotlib diagram generator functions (one per diagram).
- PPTX helper functions (
set_slide_bg,add_title,add_bullet_text,add_code_block,add_table,add_image). - Slide-by-slide assembly.
prs.save(output_path)at the end.
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.
- No broken images or placeholder text.
Other versions2 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 2
- snap-stanford/snap-skills★ 4same name
- infomiho/skills★ 1same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository17 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- ai-tellsSkill
- analyze-changesSkill
- code-reviewSkill
- create-planSkill
- edit-designSkill
- execute-tracksSkill
- fix-ci-failureSkill
- migrate-workflowSkill
- profile-jmh-regressionsSkill
- profile-query-bottleneckSkill
- readability-feedbackSkill
- review-docsSkill
- review-planSkill
- review-workflow-prSkill
- run-jmh-benchmarks-hetznerSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
Reviews can't be read right now.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

