原稿の主張と図の役割を頁ごとに整理し、選んだ書式を全頁へ引き継ぐ画像スライドと話者ノートを作る。
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Create polished, professional reveal.js presentations. Use when the user asks to create slides, a presentation, a deck, or a slideshow. Supports themes, multi-column layouts, code highlighting, animations, speaker notes, and custom styling. Generates HTML + CSS with no build step required.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
설치 방법 보기설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.
Create HTML presentations using reveal.js. No build step required - just open the HTML in a browser.
A reveal.js presentation consists of:
CRITICAL: Before creating any presentation, analyze the content and choose appropriate design elements:
Requirements:
@import in CSSpt (points) for font sizes - slides are fixed-size, so pt is predictable and familiar (like PowerPoint/Keynote). Never use em, rem, or px for font sizes.Choosing colors creatively:
Example color palettes (use these to spark creativity - choose one, adapt it, or create your own):
Diverse presentation is key. Even when slides have similar content types, vary the visual presentation:
<strong> for key terms, different colors to distinguish categoriesKeep it scannable:
When a slide has less content, make it bigger - don't leave empty space with tiny text.
Based on the user's content, determine:
Use the create-presentation.js script (located in the scripts/ directory next to this SKILL.md file) to generate the HTML scaffold.
node <path-to-skill>/scripts/create-presentation.js --structure 1,1,d,3,1,d,1 --title "My Presentation" --output presentation.html
Finding the script path: The script is at scripts/create-presentation.js relative to where this SKILL.md file is located. Common locations:
.claude/skills/revealjs/scripts/create-presentation.js~/.claude/skills/revealjs/scripts/create-presentation.jsOptions:
--slides N - Create N horizontal slides (simple mode)--structure <list> - Mixed layout with comma-separated values:
1 = single horizontal slideN (where N > 1) = vertical stack of N slidesd = section divider slide (centered, no content wrapper)--output <file> - Output filename (default: presentation.html)--title <text> - Presentation title--styles <file> - Custom CSS filename (default: styles.css)Examples:
# 10 horizontal slides
node <path-to-skill>/scripts/create-presentation.js --slides 10 --output presentation.html
# Mixed structure: intro, 2 content slides, divider, 3-slide vertical stack, divider, closing
node <path-to-skill>/scripts/create-presentation.js --structure 1,1,1,d,3,d,1 --title "Q4 Review" --output presentation.html
The scaffold script automatically copies base-styles.css to your presentation directory as styles.css. Now customize the CSS variables (especially colors) for your presentation theme.
Using Google Fonts: Add an @import at the top of your CSS file:
@import url('https://fonts.googleapis.com/css2?family=Playfair+Display:wght@400;600;700&family=Lato:wght@300;400;600&display=swap');
:root {
--heading-font: "Playfair Display", Georgia, serif;
--body-font: "Lato", Helvetica, sans-serif;
/* ... */
}
The base file includes:
:root {
/* ===========================================
BACKGROUND COLOR - Set this first!
=========================================== */
--background-color: #ffffff; /* Change for dark themes (e.g., #1a1a2e) */
/* Typography - ALWAYS use pt for font sizes */
--heading-font: "Source Sans Pro", Helvetica, sans-serif;
--body-font: "Source Sans Pro", Helvetica, sans-serif;
--base-font-size: 32px; /* Only px value - sets reveal.js base */
--text-size: 16pt; /* Base body text - intentionally small */
--h1-size: 48pt;
--h2-size: 36pt;
--h3-size: 24pt;
/* Colors - customize these for each presentation */
--primary-color: #2196F3;
--secondary-color: #ff9800;
--text-color: #222; /* Use light color (e.g., #FAF7F2) for dark backgrounds */
--muted-color: #666; /* Adjust for dark backgrounds too */
}
.reveal prefix:.reveal {
font-family: var(--body-font);
}
.reveal h1, .reveal h2, .reveal h3 {
font-family: var(--heading-font);
text-transform: none;
color: var(--text-color);
}
.reveal p, .reveal li {
font-size: var(--text-size);
color: var(--text-color);
}
.reveal .slides section {
padding: 40px 60px;
text-align: left;
}
/* Base text is 16pt - use these classes to increase size when needed */
.text-lg { font-size: 18pt; } /* Slightly larger */
.text-xl { font-size: 20pt; } /* Medium emphasis */
.text-2xl { font-size: 24pt; } /* Strong emphasis */
.text-3xl { font-size: 28pt; } /* Very large */
.text-4xl { font-size: 32pt; } /* Maximum body text */
.text-muted { color: var(--muted-color); }
.text-center { text-align: center; }
Typography guidance:
--text-size: 16pt) is intentionally small to fit more content.text-lg, .text-xl, etc. to fill space appropriatelyCustom CSS classes for repeated patterns:
Use inline styles for layout (grids, flex containers) since those vary per slide. But when a visual pattern appears on multiple slides, create a dedicated CSS class in styles.css instead of repeating inline styles. This keeps the HTML clean and ensures consistency. Common examples: stat boxes (number + label), feature cards (icon + title + description), timeline/process steps, profile/bio cards. If an element repeats 3+ times, it should be a class.
IMPORTANT: Use the Edit tool to fill in slides incrementally — one or a few slides at a time. Do NOT rewrite the entire HTML file with the Write tool. The scaffold generates unique placeholder text per slide (e.g., Slide 2 Title Here), so each section can be targeted with Edit. This is more token-efficient and less error-prone than generating the full file at once.
Follow these patterns:
Standard slide structure:
<section id="unique-slide-id">
<h2>Slide Title</h2>
<div class="content">
<!-- Content here -->
</div>
</section>
Multi-column layouts - always use inline CSS grid (do NOT create utility classes like .grid-2):
<!-- Equal columns -->
<div style="display: grid; grid-template-columns: repeat(2, 1fr); gap: 30px;">
<div>Column 1</div>
<div>Column 2</div>
</div>
<!-- Three columns -->
<div style="display: grid; grid-template-columns: repeat(3, 1fr); gap: 25px;">
<div>Column 1</div>
<div>Column 2</div>
<div>Column 3</div>
</div>
<!-- Unequal columns -->
<div style="display: grid; grid-template-columns: 1fr 2fr; gap: 30px;">
<div>Narrow sidebar</div>
<div>Wide main content</div>
</div>
Why inline styles for grids? Each slide's layout needs vary - column ratios, gaps, etc. Inline styles give you full control per-slide without creating dozens of utility classes.
Important HTML patterns:
<section> should have a unique id attribute for stable identificationclass="section-divider" for centered section title slides<div class="content"> for consistent spacing. This is a flexbox container that fills the remaining vertical space below the title, ensuring content flows properly.<div class="footnote"> for attribution or source text at bottom<p>, <li>, or <h1>–<h6>). These elements inherit the base font-size, color, and line-height from the CSS. Never put text directly in <span> or <div> — they won't pick up the base styles and will render at the wrong size. Use <div> only as a layout container (for grids, flexbox, etc.), with <p> elements inside it for the actual text.Run the overflow checker to ensure no slides have content that extends beyond boundaries:
node scripts/check-overflow.js presentation.html
The script checks each slide for:
If overflow is detected, reduce content or adjust font sizes on affected slides.
CRITICAL: You MUST review screenshots of EVERY SINGLE SLIDE. Do not skip slides or review only a sample. Visual issues are common and can only be caught by examining each slide individually.
Capture screenshots of all slides:
cd <presentation-directory>
npx decktape reveal "presentation.html?export" output.pdf \
--screenshots \
--screenshots-directory "screenshots/$(date +%Y%m%d_%H%M%S)"
Note: The ?export query parameter disables chart animations for cleaner PDF rendering. Charts will still animate when viewing the HTML directly in a browser.
This creates a timestamped folder (e.g., screenshots/20241210_143052/) so you can track versions and compare before/after fixes.
Then use the Read tool to examine each screenshot image file.
The overflow script catches most layout issues, but these problems require visual inspection:
Color inheritance in containers: Text inside styled containers may inherit the wrong color from parent elements. If you have light text on a dark page background, text inside a light-colored container will be unreadable unless you explicitly set dark text color for that container.
Custom bullet/list styling: If you override default list styles, bullets may not contrast well on all container backgrounds.
Icons not rendering: If Font Awesome fails to load, you'll see empty squares or nothing where icons should be.
Overflow edge cases: The script catches most overflow, but complex nested layouts occasionally slip through.
Unexpected text wrap: Text that you expected to fit on one line actually overflows to two lines. This is especially common in column layouts, where the header of one column may wrap while the rest don't, making things uneven.
Re-capture specific slides after fixes:
npx decktape reveal "presentation.html?export" output.pdf \
--screenshots \
--screenshots-directory "screenshots/$(date +%Y%m%d_%H%M%S)" \
--slides 2,5,7-9
Then re-examine the updated screenshots to verify fixes. The new timestamped folder makes it easy to compare with the previous version.
After completing the presentation, let the user know they can edit text directly in the browser using the included editor script:
node <path-to-skill>/scripts/edit-html.js <presentation-directory>/presentation.html
This opens the presentation in a local server where they can click any text to edit it inline, then save changes back to the file. It's useful for wordsmithing, fixing typos, or tweaking copy without needing to edit raw HTML.
Always mention this at the end of a presentation as a suggestion, e.g.:
To fine-tune the wording, you can edit text directly in the browser:
node <resolved-path>/scripts/edit-html.js <presentation-directory>/presentation.htmlClick any text to edit, press Escape to deselect, then click Save. Press Ctrl+C to stop the server when done.
.reveal blockquote {
border-left: 4px solid var(--primary-color);
padding-left: 20px;
margin: 20px 0;
font-style: italic;
background: none;
box-shadow: none;
width: 100%;
}
.reveal blockquote cite {
display: block;
margin-top: 10px;
font-style: normal;
color: var(--muted-color);
}
Font Awesome is included in the scaffold. Usage:
<i class="fa-solid fa-lightbulb"></i>
<i class="fa-solid fa-check"></i>
<i class="fa-solid fa-gears"></i>
For fragments (progressive reveal), speaker notes, custom backgrounds, auto-animate, and transitions, see references/advanced-features.md.
Reveal.initialize({
controls: true, // Show navigation arrows
progress: true, // Show progress bar
slideNumber: true, // Show slide numbers
hash: true, // Update URL hash for each slide
transition: 'slide', // none/fade/slide/convex/concave/zoom
center: false, // Vertical centering of slide content
autoSlide: 0, // Auto-advance (ms), 0 to disable
loop: false, // Loop presentation
});
Note on center: Default is false (content aligns to top), which works best for content-heavy slides. Set to true for minimal/creative presentations where you want content vertically centered.
Use these directly without custom CSS:
r-fit-text - Auto-size text to fill slider-stretch - Stretch element to fill remaining vertical spacer-stack - Layer elements on top of each other<h1 class="r-fit-text">BIG TEXT</h1>
<img class="r-stretch" src="image.jpg">
IMPORTANT: Before adding ANY chart, you MUST read references/charts.md. Charts require specific flexbox/grid patterns to size correctly and avoid overflow. Do not attempt to add charts without reading the full documentation first.
The scaffold includes the Chart.js plugin for adding bar, line, pie, doughnut, and scatter charts to slides.
Required pattern - charts need flexbox containers and maintainAspectRatio: false:
<section style="display: flex; flex-direction: column; height: 100%;">
<h2>Chart Title</h2>
<div style="flex: 1; position: relative; min-height: 0;">
<canvas data-chart="bar">
<!--
{
"data": {
"labels": ["Q1", "Q2", "Q3", "Q4"],
"datasets": [{ "label": "Revenue", "data": [12, 19, 8, 15] }]
},
"options": {
"maintainAspectRatio": false
}
}
-->
</canvas>
</div>
</section>
references/charts.md covers (required reading):
Required for the scripts, should be already installed:
npm install puppeteernpx decktape (runs directly)아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.
로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.
아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.
原稿の主張と図の役割を頁ごとに整理し、選んだ書式を全頁へ引き継ぐ画像スライドと話者ノートを作る。
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Convert literature reviews, paper folders, thesis drafts, journal-style reports, or research outlines into rigorous academic slide decks and review artifacts. Use when Codex must create, rebuild, or polish PPTX presentations from scholarly sources while preserving academic logic, citation-aware image/formula handling, editable layouts, figure explanations, template fidelity, and export-based visual QA.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
既存PPTXの書式・配置を抽出し、planとnative編集操作からPowerPointを生成・検査する。
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
読者と目的から構成・版式を決め、確認を挟みながら、編集できる図形と文字のPPTXにする。
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
全流程AI制作PPT演示文稿技能,克制专业、风格可选 A/B/C 三档(Aham UI v6.1 · Office 轨 · PPT)。 当用户说"帮我做PPT""做演示文稿""做一个汇报""根据这份资料做PPT" "做客户方案PPT""制作幻灯片"时立即触发。即使只有一句话需求也触发。 八阶段模块化流程:规范加载→材料解析→论点提炼→叙事骨架→大纲版式→样稿确认→逐页设计→质检交付。 内置能力自适应教练机制,无论用户专业水平高低,均引导至及格以上输出。 注意:本技能用于 PowerPoint / pptx 输出;SVG/HTML 版本见 ppt-svg 技能。
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
原典のReact scene kitを実scaffoldし、安定layoutIdの共通canvasでentityが移動・morphする日本語ブラウザ資料を作る。
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.