present/SKILL.md
Generate interactive HTML presentations with professional ElevenLabs voiceover narration synced to slides. Supports dual article/slides mode, scroll-reveal animations, GPT Image 2 illustrations, and configurable detail levels. Use this skill when the user wants to create a presentation, slide deck, narrated briefing, research report with voiceover, or any content that should be presentable as both a readable article and a navigable slide deck. Also triggers on "make a presentation", "create slides", "present this", "narrated deck", "voiceover slides", "briefing with audio", or requests to turn research/notes into a shareable presentation. Works with any content — research findings, meeting summaries, proposals, educational material.
npx skillsauth add glebis/claude-skills presentInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Generate a self-contained HTML presentation with dual article/slides mode, ElevenLabs narration, optional GPT Image 2 illustrations, and scroll-reveal animations.
A single index.html file (plus audio and optional image assets) that can be:
The output has two modes the viewer can toggle between:
/present "AI adoption research for Arseny" --slides 12 --voice daniel --images risograph
Or with a file:
/present path/to/research.md --detail detailed --voice alice
| Parameter | Values | Default | Description |
|-----------|--------|---------|-------------|
| --slides | 5-20 | 12 | Number of slides |
| --detail | executive, standard, detailed | standard | Content depth |
| --voice | ElevenLabs voice name | daniel | Narrator voice |
| --images | style name or none | none | Image generation style |
| --image-prompt | custom string | auto | Override image prompt prefix |
| --output | path | ./presentation/ | Output directory |
| --deploy | vercel project or none | none | Auto-deploy target |
| --title | string | auto | Presentation title |
| --no-audio | flag | false | Skip audio generation |
executive (5-7 slides): Key findings only. One stat slide, one recommendation slide, sources. Best for busy stakeholders who need the bottom line.standard (10-14 slides): Full narrative arc. Problem, evidence, analysis, recommendations, sources. The default for most presentations.detailed (15-20 slides): Deep dive. Includes methodology, multiple evidence sections, case studies, detailed recommendations with implementation steps.Uses ElevenLabs API. The key must be available in ~/claude-skills/elevenlabs-tts/.env as ELEVENLABS_API_KEY.
Recommended voices for presentations:
When --images is set, the skill generates illustrations for key slides using GPT Image 2 (~/.claude/skills/gpt-image-2/scripts/gpt_image_2.py). Available styles:
risograph — Gerd Arntz isotype style, muted colors, sand textureeditorial — Magazine photography style, dramatic lightingblueprint — Technical drawing aesthetic, white on blueink — Black ink illustration, hand-drawn feelconstellation — Data visualization aesthetic, dots and lines--image-prompt "your style description" to overrideImages are generated in --draft mode first (~$0.006/image). The skill decides which slides benefit from illustration (typically 3-5 out of 12).
Read the input content (a topic description, a markdown file, vault notes, meeting transcript, or research). Identify:
Based on --detail and --slides, create a slide plan. Each slide needs:
Slide N: [Type] — [Title]
Content: [what appears on screen]
Narration: [what the voice says — always more than what's on screen]
Read time: [seconds for an average reader to absorb the visual content]
Image: [yes/no, with prompt if yes]
Slide types: title, summary, stat, evidence, comparison, quote, framework, recommendation, case-study, sources
The narration script should be conversational and add context beyond what's displayed. It should NOT just read the slide text aloud — it should explain, connect, and elaborate. Target 15-30 seconds of narration per slide.
For each slide, generate narration using ElevenLabs:
python3 ~/.claude/skills/elevenlabs-tts/scripts/elevenlabs_tts.py \
--voice <voice_name> \
--text "<narration>" \
--output <output_dir>/audio/slide-<N>.mp3
Or use the direct API via the script at scripts/generate_audio.py in this skill.
Also generate a transition sound (Rhodes chord) for slide-to-slide transitions.
After generation, get durations with ffprobe to calculate slide timing.
For slides that benefit from illustration, generate images using GPT Image 2:
python3 ~/.claude/skills/gpt-image-2/scripts/gpt_image_2.py --draft --size 1536x1024 \
"<style prefix> <slide-specific prompt>" \
<output_dir>/images/<name>.png
Typically generate 3-5 images for a 12-slide deck. Choose slides where a visual metaphor strengthens the point — stat slides, concept slides, and the title slide are good candidates. Don't illustrate every slide.
Use the template at assets/template.html as the base. The template includes:
:root<audio> element, slide-synced playback with progress bar, transition sounds between slidesprefers-reduced-motion: All animations disabled when user prefers reduced motionPopulate the template by replacing placeholder sections with the actual slide and article content.
Open in browser using /real-browser or open <path>. Verify:
If --deploy is set, copy output to the target project's public/ folder and deploy:
cp -r <output_dir>/* <project_path>/public/<slug>/
cd <project_path> && vercel deploy --prod --yes
Each slide has three timing properties:
data-audio="slide-name" — maps to audio filedata-read-time="N" — seconds for reading the visual contentThe audio engine calculates: slide_duration = max(audio_duration, read_time) + 2s. After narration ends, it waits for any remaining read time plus a 2-second buffer, plays a transition sound (1.8s), then advances to the next slide.
The following patterns read as AI-generated and should be avoided:
Instead use:
<dl>) for structured pointsUse absolute paths from the deployment root: /slug/images/name.png, not relative paths. Relative paths break when URLs load without trailing slashes.
SKILL.md — This filescripts/generate_audio.py — ElevenLabs TTS batch generatorassets/template.html — Base HTML template with all CSS/JSreferences/slide-types.md — Detailed slide type specifications and examplesdevelopment
--- name: agency-docs-updater description: End-to-end pipeline for publishing Claude Code lab meetings. Accepts optional args: date (YYYYMMDD, "yesterday", "today") and lab number (e.g. "04"). Examples: "yesterday 04", "20260420 05", "04" (today, lab 04), "" (today, auto-detect lab). --- # Agency Docs Updater Execute ALL steps automatically in sequence. Only pause if a step fails and cannot be recovered. Read `references/learnings.md` before starting for known pitfalls. **Configuration**: pat
tools
This skill should be used when applying proper typography to prose text or files in Russian, English, German, or French — smart quotes per locale («ёлочки», “curly”, „Gänsefüßchen“, « guillemets »), correct dashes (тире, em/en dash, Gedankenstrich, tiret), non-breaking spaces, ranges, ellipsis, and French espaces insécables before ! ? ; :. Fully deterministic via a pinned typograf-based CLI; never apply these rules by hand. Triggers on "типографика", "typograf", "оттипографь", "smart quotes", "fix typography", "неразрывные пробелы".
development
This skill should be used when inspecting or applying advanced OpenType features of a font (woff2/otf/ttf) — ligatures, stylistic sets (ss01–ss20), character variants (cvXX), texture healing, slashed zero, tabular/oldstyle figures, fractions, small caps, case-sensitive forms — and generating the CSS to enable them. Interviews the user via cenno to pick features. Triggers on "OpenType features", "font features", "stylistic sets", "ligatures", "texture healing", "tabular figures", "what can this font do".
tools
--- name: pre-session-portrait description: Build a compressed, visualizable "portrait" of a consulting/coaching client before a session, so the paid hour is spent solving, not scoping. Runs a 7-lens JTBD-inspired interview (where / how / what / problem / ideal / tension / jobs-to-be-done) that takes rich open answers in and compresses them to an 11-field YAML portrait out. Delivers three ways: raw paste-into-a-clean-chat prompt, a secret GitHub gist link, or a Codex CLI one-liner. Use when prep