From jack-tar-ollama
Create a PowerPoint presentation with AI-generated visual assets. You orchestrate two capabilities:
How this skill is triggered — by the user, by Claude, or both
Slash command
/jack-tar-ollama:presentationThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Create a PowerPoint presentation with AI-generated visual assets. You orchestrate two capabilities:
Create a PowerPoint presentation with AI-generated visual assets. You orchestrate two capabilities:
src/generate_image.py and the ollama-image-expert agent for custom images, icons, diagrams, and patternsConsult the ollama-image-expert agent for all image generation knowledge, including the "Images for Presentations" section specifically.
Parse $ARGUMENTS for:
output/presentation-YYYYMMDD-HHMMSS.pptx)corporate, creative, technical, minimal (default: infer from topic)If no topic and no --prompt-file, stop and ask what the presentation is about.
Before generating anything, plan the full deck. Create a slide plan with:
For each slide:
Visual asset strategy by layout:
| Layout | Visual Asset | Generation Approach |
|---|---|---|
| Title slide | Background pattern or hero image | /ollama-pattern for texture background, or /ollama-image for hero |
| Two-column | Content illustration | /ollama-image with topic-specific prompt |
| Icon grid | 3-4 custom icons | /ollama-icon --style flat for each concept |
| Stat callout | Background accent or pattern | /ollama-pattern or use shapes only |
| Image feature | Full or half-bleed image | /ollama-image with composition-aware prompt |
| Diagram | Technical diagram | /ollama-diagram --type flowchart/architecture |
| Section divider | Subtle pattern or gradient image | /ollama-pattern --style abstract |
| Closing | Echo title slide background | Reuse title slide assets |
Not every slide needs a generated image. Charts, shapes, and icons from react-icons are faster and sometimes better. Use generated images where they add genuine value — hero shots, illustrations of concepts, custom diagrams, branded patterns.
Pick a palette that matches the topic (don't default to blue). Reference the pptx skill's palette table or create a custom one. Define:
Pick a font pairing — header font with personality, clean body font.
Before running any Python scripts, discover the plugin root:
PLUGIN_ROOT=$(python3 -c "
from pathlib import Path
import sys, os
if os.environ.get('JACK_TAR_OLLAMA_ROOT'):
print(os.environ['JACK_TAR_OLLAMA_ROOT']); sys.exit()
home = Path.home()
for base in [home / '.claude' / 'plugins' / 'cache']:
for p in base.rglob('jack-tar-ollama/.claude-plugin/plugin.json'):
print(str(p.parent.parent)); sys.exit()
dev = Path.cwd() / 'plugins' / 'jack-tar-ollama'
if dev.exists():
print(str(dev)); sys.exit()
print('NOT_FOUND')
" 2>/dev/null)
if [ -z "$PLUGIN_ROOT" ] || [ "$PLUGIN_ROOT" = "NOT_FOUND" ]; then
echo "ERROR: jack-tar-ollama plugin not found. Set JACK_TAR_OLLAMA_ROOT or install the plugin."
exit 1
fi
Generate all needed images BEFORE building slides. Store them in a temporary directory:
mkdir -p /tmp/presentation-assets
For each planned visual asset, run the appropriate generation:
For content images:
python3 "$PLUGIN_ROOT/src/generate_image.py" --prompt "PROMPT" --model "MODEL" --output /tmp/presentation-assets/slide-N-image.png --width WIDTH --height HEIGHT
Image sizing for slides (16:9 at 10" × 5.625"):
Consult the ollama-image-expert agent for prompt strategies, especially the "Images for Presentations" section for slide-specific guidance.
For icons — if react-icons doesn't have what you need:
python3 "$PLUGIN_ROOT/src/generate_image.py" --prompt "ICON PROMPT" --model "x/flux2-klein" --output /tmp/presentation-assets/icon-N.png --width 512 --height 512 --steps 20
For diagrams:
python3 "$PLUGIN_ROOT/src/generate_image.py" --prompt "DIAGRAM PROMPT" --model "x/flux2-klein" --output /tmp/presentation-assets/diagram-N.png --width 1024 --height 768 --steps 20
For patterns/textures:
python3 "$PLUGIN_ROOT/src/generate_image.py" --prompt "PATTERN PROMPT" --model "x/z-image-turbo" --output /tmp/presentation-assets/pattern-N.png --width 1024 --height 1024 --steps 8
Review each generated image using the Read tool. If an image is poor quality or doesn't match the intent, regenerate with a refined prompt. Don't waste time on perfection — one retry is usually enough for presentations.
Ensure pptxgenjs is installed:
which pptxgenjs || npm install -g pptxgenjs
Write a Node.js script that builds the presentation using pptxgenjs. Follow the pptx skill's creation guide (pptxgenjs.md) for API reference. Key points:
slide.addImage({ path: "/tmp/presentation-assets/slide-N-image.png", ... }) for generated imagesslide.background = { path: "/tmp/presentation-assets/pattern-N.png" } for pattern backgroundssizing: { type: 'cover', w: W, h: H } for backgroundssizing: { type: 'contain', w: W, h: H } for content images to preserve aspect ratioFollow pptx skill design guidelines:
# prefix on hex colorsRun the script:
node /tmp/presentation-build.js
Content QA:
pip install "markitdown[pptx]" 2>/dev/null
python -m markitdown OUTPUT_PATH
Check for missing content, wrong order, typos.
Visual QA: Convert to images and review:
python scripts/office/soffice.py --headless --convert-to pdf OUTPUT_PATH 2>/dev/null || soffice --headless --convert-to pdf OUTPUT_PATH
pdftoppm -jpeg -r 150 OUTPUT_PDF slide
Read the slide images with the Read tool. Check for:
Fix any issues found. Re-verify after fixes.
rm -rf /tmp/presentation-assets /tmp/presentation-build.js
Report:
Use --no-images or skip image generation when:
In these cases, use shapes, react-icons, charts, and strong typography to create visual interest without generated images.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub stevegjones/jack-tar-deckhand --plugin jack-tar-ollama