make-slide 2.0.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -74,6 +74,11 @@ Follow these steps in order:
74
74
  - 30-min talk → 30–40 slides
75
75
  - Identify the target audience and tone (technical, business, casual, academic)
76
76
  - Detect the user's language from the conversation — generate content in that language
77
+ - Detect or ask about the desired output format:
78
+ - **HTML** (default) — Interactive single-file presentation with navigation, animations, and speaker notes
79
+ - **PPTX** — PowerPoint file for traditional presentation software (Office, Google Slides, Keynote)
80
+ - If the user mentions "PowerPoint", "pptx", "PPT", ".pptx", "Google Slides", or "Keynote" → use PPTX mode
81
+ - If unclear, default to HTML and mention PPTX is also available
77
82
 
78
83
  ### Step 2: Choose a Theme
79
84
  Present the user with the theme gallery link for browsing:
@@ -91,12 +96,25 @@ If the user doesn't choose a theme, recommend one based on context:
91
96
  - Product launch → `keynote-apple`
92
97
  - Casual/team event → `playful`
93
98
 
94
- ### Step 3: Check Image Needs
95
- Ask the user:
96
- > "Would you like me to identify image insertion points in the slides? If yes, I'll mark them in the outline and you can provide image URLs. If no, I'll use styled placeholders."
97
-
98
- - **Yes** → Mark image positions in the outline, ask user for image URLs
99
- - **No** Use CSS placeholders (emoji, SVG icons, CSS shapes) that match the theme
99
+ ### Step 3: Image Options
100
+ Ask the user which image approach they prefer:
101
+
102
+ > **How would you like to handle images in your slides?**
103
+ >
104
+ > **A) No images** Use styled CSS placeholders (emoji, icons, shapes) that match the theme. Clean and lightweight.
105
+ >
106
+ > **B) I'll provide URLs** — I'll mark image positions in the outline, and you provide the image URLs.
107
+ >
108
+ > **C) Auto-search** — I'll search the web for relevant, high-quality images and place them automatically.
109
+
110
+ - **Option A** → Use CSS placeholders matching the theme (emoji, SVG icons, CSS shapes)
111
+ - **Option B** → Mark image positions in the outline, ask user for URLs, use `<img src>` with `loading="lazy"` and descriptive `alt` text
112
+ - **Option C** → For each slide that would benefit from an image:
113
+ 1. Determine a relevant search query based on the slide content
114
+ 2. Search for images using web search (prefer Unsplash, Pexels, or other royalty-free sources)
115
+ 3. Select the most relevant, high-quality result
116
+ 4. Insert as `<img src="URL" alt="description" loading="lazy">`
117
+ 5. Note: Inform the user that auto-searched images are from the web and they should verify licensing for commercial use
100
118
 
101
119
  ### Step 4: Generate Outline
102
120
  Create a slide-by-slide outline with:
@@ -160,6 +178,26 @@ For Mode C, the user already has a script — skip this step.
160
178
 
161
179
  ---
162
180
 
181
+ ## PPTX Output Mode
182
+
183
+ When the user selects PPTX output, follow this modified workflow:
184
+
185
+ ### PPTX Step 1: Generate HTML Slides (PPTX-Compatible)
186
+ Follow the standard HTML generation workflow (Steps 1-7) but with these constraints from the PPTX spec. Read `references/pptx-spec.md` for the complete PPTX conversion rules before generating HTML.
187
+
188
+ ### PPTX Step 2: Convert HTML to PPTX
189
+ Use the html2pptx conversion pipeline:
190
+ 1. Install dependencies if not present: `npm install pptxgenjs sharp puppeteer`
191
+ 2. For each HTML slide, render and convert to PPTX using PptxGenJS
192
+ 3. Combine all slides into a single `.pptx` file
193
+
194
+ ### PPTX Step 3: Validate and Deliver
195
+ - Open the PPTX to verify content and formatting
196
+ - Save as `presentation.pptx` (or user-specified filename)
197
+ - Offer to also generate the HTML version for preview
198
+
199
+ ---
200
+
163
201
  ## Output Rules
164
202
 
165
203
  1. Always output a single `.html` file with all CSS and JS inlined
@@ -47,10 +47,28 @@ Every generated presentation includes all of the following features. These ensur
47
47
 
48
48
  ### Speaker Notes Panel
49
49
  - `S` key toggles the speaker notes panel
50
- - Panel displays:
50
+ - Implementation: Open a **separate popup window** using `window.open()`, not an inline panel
51
+ - The popup window displays:
52
+ - Current slide number and total
51
53
  - Current slide's notes (from `data-notes` attribute)
52
- - Next slide preview (when possible)
53
- - Panel should not obstruct the main slide view
54
+ - Next slide preview text (when possible)
55
+ - The popup auto-updates when the main presentation changes slides
56
+ - Popup styling should be clean and readable (large font, good contrast)
57
+ - The main slide view must NOT be affected by the notes panel
58
+ - Example implementation pattern:
59
+ ```javascript
60
+ let notesWindow = null;
61
+ function toggleNotes() {
62
+ if (notesWindow && !notesWindow.closed) { notesWindow.close(); notesWindow = null; return; }
63
+ notesWindow = window.open('', 'SpeakerNotes', 'width=500,height=400');
64
+ // Write styled HTML to notesWindow.document
65
+ updateNotes();
66
+ }
67
+ function updateNotes() {
68
+ if (!notesWindow || notesWindow.closed) return;
69
+ // Update content with current slide's data-notes
70
+ }
71
+ ```
54
72
 
55
73
  ### Touch/Swipe Navigation
56
74
  - Swipe left → Next slide
@@ -0,0 +1,116 @@
1
+ # PPTX Conversion Specification
2
+
3
+ ## Overview
4
+ When generating PPTX output, first create HTML slides following PPTX-compatible rules, then convert using PptxGenJS or python-pptx.
5
+
6
+ ## HTML-to-PPTX Constraints
7
+
8
+ These rules ensure HTML slides convert cleanly to PowerPoint format.
9
+
10
+ ### Text Rules (Critical)
11
+ - ALL text MUST be inside `<p>`, `<h1>`-`<h6>`, `<ul>`, or `<ol>` tags
12
+ - Text inside raw `<div>` or `<span>` without a text tag will be SILENTLY IGNORED in PPTX
13
+ - NEVER use `<br>` tags — use separate text elements for each line
14
+ - NEVER use manual bullet symbols (•, -, *) — use `<ul>` or `<ol>` lists
15
+
16
+ ### Font Rules
17
+ - Use ONLY web-safe fonts that are universally available in PowerPoint:
18
+ - ✅ Arial, Helvetica, Verdana, Tahoma, Trebuchet MS, Georgia, Times New Roman, Courier New, Impact
19
+ - ❌ Pretendard, JetBrains Mono, SF Pro, Roboto, or any custom/CDN fonts
20
+ - For code blocks, use Courier New instead of JetBrains Mono
21
+
22
+ ### Color and Gradient Rules
23
+ - NEVER use CSS gradients (`linear-gradient`, `radial-gradient`) — they don't convert to PowerPoint
24
+ - If gradients are needed, rasterize them as PNG images first using Sharp/Puppeteer, then reference as `<img>`
25
+ - Use solid colors with hex format (#RRGGBB)
26
+ - Ensure sufficient contrast for readability
27
+
28
+ ### Layout Rules
29
+ - Slide dimensions: 720pt × 405pt (16:9 standard)
30
+ - Use `display: flex` on body to prevent margin collapse
31
+ - Use `margin` for spacing (padding is included in element size)
32
+ - Flexbox positioning works — positions calculated from rendered layout
33
+ - For slides with charts/tables, use either:
34
+ - Two-column layout (preferred): header spanning full width, text + content side by side
35
+ - Full-slide layout: let featured content take the entire slide
36
+ - NEVER vertically stack charts/tables below text in a single column
37
+
38
+ ### Shape and Border Rules
39
+ - Backgrounds, borders, and shadows ONLY work on `<div>` elements, NOT on text elements
40
+ - Supported border styles: `border: 2px solid #333333`
41
+ - Partial borders supported: `border-left`, `border-right`, `border-top`, `border-bottom`
42
+ - `border-radius: 50%` creates circular shapes
43
+ - Box shadows convert to PowerPoint shadows (outer only, inset shadows ignored)
44
+
45
+ ### Image Rules
46
+ - Use `<img>` tags with absolute URLs or local file paths
47
+ - Inline SVG is NOT supported — convert to PNG first
48
+ - Icons/emoji should be rasterized as PNG images
49
+
50
+ ### Animation Rules
51
+ - CSS animations do NOT convert to PowerPoint
52
+ - PowerPoint animations must be added programmatically via PptxGenJS if needed
53
+ - For PPTX mode, skip stagger animations and transitions in HTML
54
+
55
+ ## Conversion Methods
56
+
57
+ ### Method 1: PptxGenJS (Recommended for Node.js)
58
+ ```bash
59
+ npm install pptxgenjs sharp puppeteer
60
+ ```
61
+
62
+ Workflow:
63
+ 1. Create HTML files for each slide (following rules above)
64
+ 2. Use Puppeteer to render each HTML slide and extract element positions
65
+ 3. Use PptxGenJS to create native PowerPoint elements at the extracted positions
66
+ 4. Save as .pptx
67
+
68
+ ### Method 2: python-pptx (Alternative for Python)
69
+ ```bash
70
+ pip install python-pptx Pillow
71
+ ```
72
+
73
+ Workflow:
74
+ 1. Create HTML slides following PPTX-compatible rules
75
+ 2. Use python-pptx to create slides programmatically
76
+ 3. Map HTML elements to python-pptx objects:
77
+ - `<p>`, `<h1>`-`<h6>` → `add_textbox()` with `TextFrame`
78
+ - `<ul>`, `<ol>` → `TextFrame` with `level` property for indentation
79
+ - `<div>` with background → `add_shape()` with fill
80
+ - `<img>` → `add_picture()`
81
+ 4. Save as .pptx
82
+
83
+ ### Method 3: Screenshot-based (Simplest but lowest quality)
84
+ ```bash
85
+ npm install puppeteer pptxgenjs
86
+ ```
87
+
88
+ Workflow:
89
+ 1. Generate full HTML presentation (standard mode, no PPTX constraints needed)
90
+ 2. Use Puppeteer to screenshot each slide as high-resolution PNG
91
+ 3. Insert each screenshot as a full-slide image in PPTX
92
+ 4. Add text overlays for searchability (optional)
93
+ - Note: This produces image-based slides (no editable text) but preserves exact visual design
94
+
95
+ ## Design Principles for PPTX
96
+
97
+ ### Color Palette Selection
98
+ Choose 3-5 colors that work together:
99
+ - 1 dominant background color
100
+ - 1-2 supporting/accent colors
101
+ - 1 text color with strong contrast
102
+ - Use solid colors only (no gradients unless rasterized)
103
+
104
+ ### Typography
105
+ - Use 2-3 font sizes max for clear hierarchy:
106
+ - Title: 36-44pt
107
+ - Subtitle/heading: 24-28pt
108
+ - Body: 16-20pt
109
+ - Caption: 12-14pt
110
+ - Bold for emphasis, avoid italic for body text
111
+
112
+ ### Layout Tips
113
+ - Leave 10% margin on all sides (minimum)
114
+ - Align elements to a grid
115
+ - Use consistent spacing between elements
116
+ - Left-align body text (center-align only for titles)
package/README.md CHANGED
@@ -4,6 +4,7 @@
4
4
  **AI 코딩 에이전트가 단일 HTML 파일로 고품질 프레젠테이션을 생성하는 범용 스킬.**
5
5
 
6
6
  [![Live Gallery](https://img.shields.io/badge/🎨_Theme_Gallery-Live_Demo-blue?style=for-the-badge)](https://make-slide.vercel.app)
7
+ [![npm](https://img.shields.io/npm/v/make-slide?style=for-the-badge)](https://www.npmjs.com/package/make-slide)
7
8
  [![License: MIT](https://img.shields.io/badge/License-MIT-green?style=for-the-badge)](LICENSE)
8
9
 
9
10
  ---
@@ -41,59 +42,94 @@ Instead of crafting designs from scratch every time (wasting tokens and producin
41
42
 
42
43
  ## 🚀 Quick Start
43
44
 
44
- Give your AI coding tool the following instruction:
45
+ ### Install with npx (Recommended)
45
46
 
46
- ### Claude Code
47
+ ```bash
48
+ npx make-slide init
47
49
  ```
48
- Read SKILL.md from https://github.com/kuneosu/make-slide and create a presentation about [your topic] using the minimal-dark theme.
50
+
51
+ This will:
52
+ 1. Copy the skill files into your project's `.claude/skills/make-slide/`
53
+ 2. Auto-detect your AI config (`CLAUDE.md`, `AGENTS.md`, `.cursorrules`) and inject the `/make-slide` command
54
+ 3. You're ready! Type `/make-slide` in Claude Code to create presentations
55
+
56
+ ### Other Commands
57
+
58
+ ```bash
59
+ npx make-slide themes # View all 10 themes
60
+ npx make-slide gallery # Open theme gallery in browser
61
+ npx make-slide help # Show help
49
62
  ```
50
63
 
51
- ### Gemini CLI
64
+ ### Manual Setup (Any AI Tool)
65
+
66
+ Give your AI coding tool the following instruction:
67
+
52
68
  ```
53
- Follow the instructions in SKILL.md at https://github.com/kuneosu/make-slide to build a 10-slide presentation about [your topic].
69
+ Read SKILL.md from https://github.com/kuneosu/make-slide and create a presentation about [your topic] using the minimal-dark theme.
54
70
  ```
55
71
 
56
- ### Any AI Coding Tool
72
+ Or fetch it directly:
57
73
  ```
58
- Fetch https://raw.githubusercontent.com/kuneosu/make-slide/main/SKILL.md and follow its instructions to create a presentation about [your topic].
74
+ Fetch https://raw.githubusercontent.com/kuneosu/make-slide/main/.claude/skills/make-slide/SKILL.md and follow its instructions to create a presentation about [your topic].
59
75
  ```
60
76
 
61
77
  > **Tip:** Browse themes first at [make-slide.vercel.app](https://make-slide.vercel.app) and tell your AI which one you like!
62
78
 
63
79
  ---
64
80
 
65
- ## 🎨 Themes
81
+ ## ⚙️ How It Works
66
82
 
67
- All 10 themes are live at **[make-slide.vercel.app](https://make-slide.vercel.app)**
83
+ ### The `.claude/skills/` Convention
68
84
 
69
- | # | Theme | Style | Best For |
70
- |:-:|-------|-------|----------|
71
- | 1 | [`minimal-dark`](https://make-slide.vercel.app) | Clean dark, white typography | Tech talks, conferences |
72
- | 2 | [`minimal-light`](https://make-slide.vercel.app) | Bright white, precise type | General, academic |
73
- | 3 | [`corporate`](https://make-slide.vercel.app) | Navy & gold, structured | Business, reports |
74
- | 4 | [`gradient-pop`](https://make-slide.vercel.app) | Vibrant gradients, glassmorphism | Startups, pitches |
75
- | 5 | [`neon-terminal`](https://make-slide.vercel.app) | Terminal green, scanlines | Dev talks, hackathons |
76
- | 6 | [`paper`](https://make-slide.vercel.app) | Kraft paper, serif type | Education, workshops |
77
- | 7 | [`keynote-apple`](https://make-slide.vercel.app) | Dramatic dark, Apple-inspired | Product launches, keynotes |
78
- | 8 | [`magazine`](https://make-slide.vercel.app) | Editorial, asymmetric layout | Design, creative |
79
- | 9 | [`data-focus`](https://make-slide.vercel.app) | Dashboard aesthetic, clean | Data analysis, KPIs |
80
- | 10 | [`playful`](https://make-slide.vercel.app) | Rounded, pastel, bouncy | Workshops, casual talks |
85
+ make-slide uses Claude Code's native skill system. After running `npx make-slide init`, your project gets:
86
+
87
+ ```
88
+ your-project/
89
+ ├── .claude/
90
+ │ └── skills/
91
+ │ └── make-slide/
92
+ │ ├── SKILL.md ← Main instruction file
93
+ │ └── references/
94
+ │ ├── themes.md ← 10 themes with GitHub raw URLs
95
+ │ ├── slide-types.md 12 slide type patterns
96
+ │ └── html-spec.md ← HTML requirements
97
+ ├── CLAUDE.md ← Auto-updated with /make-slide command
98
+ └── ... your project files
99
+ ```
100
+
101
+ When you type `/make-slide` in Claude Code, it reads the skill and follows a 9-step workflow:
102
+
103
+ 1. **Analyze your input** — determine mode (topic / content / script) and slide count
104
+ 2. **Choose a theme** — you pick from the gallery or AI recommends one
105
+ 3. **Check image needs** — real images or styled CSS placeholders
106
+ 4. **Generate outline** — slide-by-slide plan for your approval
107
+ 5. **Fetch theme reference** — downloads the theme template from GitHub
108
+ 6. **Generate HTML** — builds your presentation matching the theme exactly
109
+ 7. **Add speaker notes** — conversational notes with timing cues
110
+ 8. **Generate script** — full speaking script (optional)
111
+ 9. **Deliver** — saves `index.html` + offers local preview
112
+
113
+ Theme files are fetched from GitHub on demand — nothing heavy is stored locally.
81
114
 
82
115
  ---
83
116
 
84
- ## ⚙️ How It Works
117
+ ## 🎨 Themes
85
118
 
86
- ```
87
- ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐
88
- │ 1. AI reads │────▶│ 2. User picks│────▶│ 3. AI fetches│────▶│ 4. AI builds │
89
- │ SKILL.md │ │ theme │ │ reference │ │ your slides │
90
- └──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘
91
- ```
119
+ All 10 themes are live at **[make-slide.vercel.app](https://make-slide.vercel.app)**
92
120
 
93
- 1. **AI reads `SKILL.md`** the universal instruction file that any AI coding tool can follow
94
- 2. **User picks a theme** — from the [gallery](https://make-slide.vercel.app) or AI recommends one
95
- 3. **AI fetches theme reference** `reference.html` (full example) + `README.md` (design guide) from GitHub
96
- 4. **AI generates your presentation** a single `index.html` file with speaker notes, matching the theme perfectly
121
+ | # | Theme | Style | Best For |
122
+ |:-:|-------|-------|----------|
123
+ | 1 | `minimal-dark` | Clean dark, white typography | Tech talks, conferences |
124
+ | 2 | `minimal-light` | Bright white, precise type | General, academic |
125
+ | 3 | `corporate` | Navy & gold, structured | Business, reports |
126
+ | 4 | `gradient-pop` | Vibrant gradients, glassmorphism | Startups, pitches |
127
+ | 5 | `neon-terminal` | Terminal green, scanlines | Dev talks, hackathons |
128
+ | 6 | `paper` | Kraft paper, serif type | Education, workshops |
129
+ | 7 | `keynote-apple` | Dramatic dark, Apple-inspired | Product launches, keynotes |
130
+ | 8 | `magazine` | Editorial, asymmetric layout | Design, creative |
131
+ | 9 | `data-focus` | Dashboard aesthetic, clean | Data analysis, KPIs |
132
+ | 10 | `playful` | Rounded, pastel, bouncy | Workshops, casual talks |
97
133
 
98
134
  ---
99
135
 
@@ -101,15 +137,22 @@ All 10 themes are live at **[make-slide.vercel.app](https://make-slide.vercel.ap
101
137
 
102
138
  ```
103
139
  make-slide/
104
- ├── README.md # This file
105
- ├── SKILL.md # AI agent instruction file (the "skill")
106
- ├── LICENSE # MIT License
140
+ ├── package.json # npm package config
141
+ ├── bin/cli.js # CLI (init, themes, gallery)
142
+ ├── .claude/skills/make-slide/ # Skill template (copied by init)
143
+ │ ├── SKILL.md
144
+ │ └── references/
145
+ │ ├── themes.md
146
+ │ ├── slide-types.md
147
+ │ └── html-spec.md
148
+ ├── SKILL.md # Legacy standalone skill file
149
+ ├── README.md # This file
150
+ ├── LICENSE # MIT License
107
151
 
108
- ├── themes/ # Theme references (10 themes)
152
+ ├── themes/ # Theme references (10 themes)
109
153
  │ ├── minimal-dark/
110
- │ │ ├── README.md # Design guidelines
111
- │ │ ├── reference.html # Full example presentation
112
- │ │ └── preview.png # Theme thumbnail
154
+ │ │ ├── README.md # Design guidelines
155
+ │ │ └── reference.html # Full example presentation
113
156
  │ ├── minimal-light/
114
157
  │ ├── corporate/
115
158
  │ ├── gradient-pop/
@@ -120,18 +163,17 @@ make-slide/
120
163
  │ ├── data-focus/
121
164
  │ └── playful/
122
165
 
123
- ├── gallery/ # Theme gallery website (Vercel)
124
- ├── index.html # Gallery page
125
- │ └── public/previews/ # Theme screenshots
166
+ ├── gallery/ # Theme gallery website (Vercel)
167
+ └── index.html
126
168
 
127
- ├── core/ # Shared JS/CSS source
128
- │ ├── navigation.js # Keyboard + touch navigation
129
- │ ├── fullscreen.js # Fullscreen toggle
130
- │ ├── speaker-notes.js # Speaker notes panel
131
- │ ├── pdf-export.css # Print styles
132
- │ └── base.css # Reset + utilities
169
+ ├── core/ # Shared JS/CSS source
170
+ │ ├── navigation.js
171
+ │ ├── fullscreen.js
172
+ │ ├── speaker-notes.js
173
+ │ ├── pdf-export.css
174
+ │ └── base.css
133
175
 
134
- └── examples/ # Example presentations
176
+ └── examples/ # Example presentations
135
177
  └── pineone-talk-reference.html
136
178
  ```
137
179
 
@@ -141,24 +183,23 @@ make-slide/
141
183
 
142
184
  ### Adding a New Theme
143
185
 
144
- 1. **Create a folder** in `themes/` with your theme ID (kebab-case):
186
+ 1. Create a folder in `themes/` with your theme ID (kebab-case):
145
187
  ```
146
188
  themes/your-theme-name/
147
189
  ```
148
190
 
149
- 2. **Add three files:**
150
- - `reference.html` — A complete 10-slide example presentation showcasing all slide types (title, content, comparison, code, data, quote, closing, etc.) with navigation, fullscreen, speaker notes, and PDF export all working
151
- - `README.md` — Design guidelines: color palette, typography, spacing, design philosophy, and use cases
152
- - `preview.png` — A 1280×720 screenshot of the title slide
191
+ 2. Add these files:
192
+ - `reference.html` — Complete 10-slide example with all slide types, navigation, fullscreen, speaker notes, and PDF export
193
+ - `README.md` — Design guidelines: color palette, typography, spacing, philosophy
153
194
 
154
- 3. **Follow the conventions** in `core/` for navigation, fullscreen, speaker notes, and PDF export functionality
195
+ 3. Follow the conventions in `core/` for navigation, fullscreen, speaker notes, and PDF export
155
196
 
156
- 4. **Submit a PR**and your theme will appear in the gallery!
197
+ 4. Submit a PR — your theme will appear in the gallery!
157
198
 
158
199
  ### Guidelines
159
200
  - Output must be a single `.html` file — all CSS/JS inlined
160
- - Only external dependencies allowed: font CDNs (Pretendard required) + Prism.js (for code blocks)
161
- - All themes must support the full slide type set defined in `SKILL.md`
201
+ - Only external dependencies: font CDNs (Pretendard required) + Prism.js (for code blocks)
202
+ - All themes must support the full slide type set
162
203
  - Test keyboard navigation, fullscreen, speaker notes, and print export
163
204
 
164
205
  ---
@@ -177,6 +218,7 @@ make-slide/
177
218
  **AI 코딩 에이전트가 단일 HTML 파일로 고품질 프레젠테이션을 생성하는 범용 스킬.**
178
219
 
179
220
  [![테마 갤러리](https://img.shields.io/badge/🎨_테마_갤러리-라이브_데모-blue?style=for-the-badge)](https://make-slide.vercel.app)
221
+ [![npm](https://img.shields.io/npm/v/make-slide?style=for-the-badge)](https://www.npmjs.com/package/make-slide)
180
222
  [![License: MIT](https://img.shields.io/badge/License-MIT-green?style=for-the-badge)](LICENSE)
181
223
 
182
224
  ---
@@ -195,139 +237,102 @@ make-slide/
195
237
 
196
238
  ---
197
239
 
198
- ## ✨ 주요 기능
199
-
200
- | 기능 | 설명 |
201
- |------|------|
202
- | 🎨 **10개 테마** | 다크 미니멀부터 플레이풀 파스텔까지 — [갤러리 둘러보기](https://make-slide.vercel.app) |
203
- | 📄 **단일 HTML 출력** | 파일 하나, 빌드 불필요, 프레임워크 없음 — 브라우저에서 바로 열기 |
204
- | 🎤 **발표자 노트** | 슬라이드별 발표 노트 내장 (`S` 키로 토글) |
205
- | 🖨️ **PDF 내보내기** | `Ctrl+P`로 깔끔하게 인쇄 (`@media print` 스타일 적용) |
206
- | 🖥️ **전체화면** | `F` 키로 풀스크린 전환 |
207
- | ⌨️ **키보드 네비게이션** | 방향키, 스페이스바, 터치/스와이프 지원 |
208
- | 📥 **3가지 입력 모드** | 주제만 / 내용 제공 / 대본 제공 |
209
- | 🤖 **모든 AI 도구 호환** | Claude Code, Gemini CLI, Codex, Cursor 등 |
210
- | 🌍 **언어 무관** | 사용자의 언어로 콘텐츠 생성 |
211
- | 📊 **CSS 전용 차트** | 바 차트, 프로그레스 링, KPI 카드 — 차트 라이브러리 불필요 |
212
-
213
- ---
214
-
215
240
  ## 🚀 빠른 시작
216
241
 
217
- AI 코딩 도구에 다음과 같이 지시하세요:
242
+ ### npx로 설치 (권장)
218
243
 
219
- ### Claude Code
220
- ```
221
- https://github.com/kuneosu/make-slide 의 SKILL.md를 읽고 [주제]에 대한 프레젠테이션을 minimal-dark 테마로 만들어줘.
244
+ ```bash
245
+ npx make-slide init
222
246
  ```
223
247
 
224
- ### Gemini CLI
225
- ```
226
- https://github.com/kuneosu/make-slide SKILL.md 지침을 따라 [주제]에 대한 10장짜리 프레젠테이션을 만들어줘.
248
+ 명령어는:
249
+ 1. `.claude/skills/make-slide/`에 스킬 파일 복사
250
+ 2. AI 설정 파일(`CLAUDE.md`, `AGENTS.md`, `.cursorrules`) 자동 감지 `/make-slide` 명령어 주입
251
+ 3. 준비 완료! Claude Code에서 `/make-slide` 입력하면 프레젠테이션 생성
252
+
253
+ ### 기타 명령어
254
+
255
+ ```bash
256
+ npx make-slide themes # 10개 테마 보기
257
+ npx make-slide gallery # 테마 갤러리 열기
258
+ npx make-slide help # 도움말
227
259
  ```
228
260
 
229
- ### 기타 AI 코딩 도구
261
+ ### 수동 설정 (다른 AI 도구)
262
+
263
+ AI 코딩 도구에 다음과 같이 지시하세요:
264
+
230
265
  ```
231
- https://raw.githubusercontent.com/kuneosu/make-slide/main/SKILL.md 가져와서 지침에 따라 [주제]에 대한 프레젠테이션을 만들어줘.
266
+ https://github.com/kuneosu/make-slideSKILL.md를 읽고 [주제]에 대한 프레젠테이션을 minimal-dark 테마로 만들어줘.
232
267
  ```
233
268
 
234
269
  > **팁:** [make-slide.vercel.app](https://make-slide.vercel.app)에서 테마를 먼저 둘러보고 마음에 드는 것을 AI에게 알려주세요!
235
270
 
236
271
  ---
237
272
 
238
- ## 🎨 테마
239
-
240
- 10개 테마 모두 **[make-slide.vercel.app](https://make-slide.vercel.app)** 에서 확인할 수 있습니다.
273
+ ## ⚙️ 작동 방식
241
274
 
242
- | # | 테마 | 스타일 | 추천 용도 |
243
- |:-:|------|--------|-----------|
244
- | 1 | [`minimal-dark`](https://make-slide.vercel.app) | 다크 배경, 화이트 타이포 | 테크 발표, 컨퍼런스 |
245
- | 2 | [`minimal-light`](https://make-slide.vercel.app) | 화이트 배경, 클린 타이포 | 일반 발표, 세미나 |
246
- | 3 | [`corporate`](https://make-slide.vercel.app) | 네이비 & 골드, 구조적 | 비즈니스, 보고 |
247
- | 4 | [`gradient-pop`](https://make-slide.vercel.app) | 비비드 그라디언트, 글라스모피즘 | 스타트업, 피칭 |
248
- | 5 | [`neon-terminal`](https://make-slide.vercel.app) | 터미널 그린, 스캔라인 | 개발자 발표, 해커톤 |
249
- | 6 | [`paper`](https://make-slide.vercel.app) | 크래프트지, 세리프 타이포 | 교육, 워크숍 |
250
- | 7 | [`keynote-apple`](https://make-slide.vercel.app) | 드라마틱 다크, Apple 스타일 | 제품 발표, 키노트 |
251
- | 8 | [`magazine`](https://make-slide.vercel.app) | 에디토리얼, 비대칭 레이아웃 | 디자인, 크리에이티브 |
252
- | 9 | [`data-focus`](https://make-slide.vercel.app) | 대시보드 스타일, 깔끔 | 데이터 분석, KPI |
253
- | 10 | [`playful`](https://make-slide.vercel.app) | 둥근 모서리, 파스텔, 바운스 | 워크숍, 캐주얼 발표 |
275
+ ### `.claude/skills/` 컨벤션
254
276
 
255
- ---
256
-
257
- ## ⚙️ 작동 방식
277
+ `npx make-slide init` 실행 후 프로젝트 구조:
258
278
 
259
279
  ```
260
- ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐
261
- 1. AI가 │────▶│ 2. 사용자가 │────▶│ 3. AI가 │────▶│ 4. AI가 │
262
- SKILL.md 읽기│ │ 테마 선택 │ │ 레퍼런스 참조 │ │ 슬라이드 생성 │
263
- └──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘
280
+ your-project/
281
+ ├── .claude/
282
+ └── skills/
283
+ │ └── make-slide/
284
+ │ ├── SKILL.md ← 메인 지침서
285
+ │ └── references/
286
+ │ ├── themes.md ← 10개 테마 + GitHub raw URL
287
+ │ ├── slide-types.md ← 12가지 슬라이드 타입
288
+ │ └── html-spec.md ← HTML 요구사항
289
+ ├── CLAUDE.md ← /make-slide 명령어 자동 추가
290
+ └── ... 프로젝트 파일들
264
291
  ```
265
292
 
266
- 1. **AI가 `SKILL.md`를 읽습니다** 모든 AI 코딩 도구가 따를 수 있는 범용 지침서
267
- 2. **사용자가 테마를 선택합니다** — [갤러리](https://make-slide.vercel.app)에서 선택하거나 AI가 추천
268
- 3. **AI가 테마 레퍼런스를 가져옵니다** — GitHub에서 `reference.html`(풀 예시) + `README.md`(디자인 가이드) fetch
269
- 4. **AI가 프레젠테이션을 생성합니다** — 테마에 맞는 단일 `index.html` 파일 + 발표자 노트
293
+ Claude Code에서 `/make-slide` 입력하면 9단계 워크플로우를 따릅니다:
270
294
 
271
- ---
295
+ 1. **입력 분석** — 모드(주제/내용/대본) 및 슬라이드 수 결정
296
+ 2. **테마 선택** — 갤러리에서 선택하거나 AI가 추천
297
+ 3. **이미지 확인** — 실제 이미지 또는 CSS 플레이스홀더
298
+ 4. **아웃라인 생성** — 슬라이드별 구성 승인
299
+ 5. **테마 레퍼런스 가져오기** — GitHub에서 테마 템플릿 다운로드
300
+ 6. **HTML 생성** — 테마에 맞는 프레젠테이션 빌드
301
+ 7. **발표자 노트 추가** — 타이밍 큐 포함 노트
302
+ 8. **대본 생성** — 전체 발표 대본 (선택)
303
+ 9. **전달** — `index.html` 저장 + 로컬 프리뷰
272
304
 
273
- ## 📁 프로젝트 구조
274
-
275
- ```
276
- make-slide/
277
- ├── README.md # 이 파일
278
- ├── SKILL.md # AI 에이전트 지침서 (스킬)
279
- ├── LICENSE # MIT 라이선스
280
-
281
- ├── themes/ # 테마 레퍼런스 (10개)
282
- │ ├── minimal-dark/
283
- │ │ ├── README.md # 디자인 가이드라인
284
- │ │ ├── reference.html # 전체 예시 프레젠테이션
285
- │ │ └── preview.png # 테마 썸네일
286
- │ ├── minimal-light/
287
- │ ├── corporate/
288
- │ ├── ... (총 10개)
289
- │ └── playful/
290
-
291
- ├── gallery/ # 테마 갤러리 웹사이트 (Vercel)
292
- │ ├── index.html # 갤러리 페이지
293
- │ └── public/previews/ # 테마 스크린샷
294
-
295
- ├── core/ # 공통 JS/CSS 소스
296
- │ ├── navigation.js # 키보드 + 터치 네비게이션
297
- │ ├── fullscreen.js # 전체화면 토글
298
- │ ├── speaker-notes.js # 발표자 노트 패널
299
- │ ├── pdf-export.css # 인쇄 스타일
300
- │ └── base.css # 리셋 + 유틸리티
301
-
302
- └── examples/ # 예시 프레젠테이션
303
- └── pineone-talk-reference.html
304
- ```
305
+ 테마 파일은 GitHub에서 온디맨드로 가져옵니다 — 로컬에 무거운 파일이 저장되지 않습니다.
305
306
 
306
307
  ---
307
308
 
308
- ## 🤝 기여하기
309
+ ## 🎨 테마
309
310
 
310
- ### 테마 추가하기
311
+ 10개 테마 모두 **[make-slide.vercel.app](https://make-slide.vercel.app)** 에서 확인할 수 있습니다.
311
312
 
312
- 1. `themes/` 안에 테마 ID로 폴더를 생성하세요 (케밥 케이스):
313
- ```
314
- themes/your-theme-name/
315
- ```
313
+ | # | 테마 | 스타일 | 추천 용도 |
314
+ |:-:|------|--------|-----------|
315
+ | 1 | `minimal-dark` | 다크 배경, 화이트 타이포 | 테크 발표, 컨퍼런스 |
316
+ | 2 | `minimal-light` | 화이트 배경, 클린 타이포 | 일반 발표, 세미나 |
317
+ | 3 | `corporate` | 네이비 & 골드, 구조적 | 비즈니스, 보고 |
318
+ | 4 | `gradient-pop` | 비비드 그라디언트, 글라스모피즘 | 스타트업, 피칭 |
319
+ | 5 | `neon-terminal` | 터미널 그린, 스캔라인 | 개발자 발표, 해커톤 |
320
+ | 6 | `paper` | 크래프트지, 세리프 타이포 | 교육, 워크숍 |
321
+ | 7 | `keynote-apple` | 드라마틱 다크, Apple 스타일 | 제품 발표, 키노트 |
322
+ | 8 | `magazine` | 에디토리얼, 비대칭 레이아웃 | 디자인, 크리에이티브 |
323
+ | 9 | `data-focus` | 대시보드 스타일, 깔끔 | 데이터 분석, KPI |
324
+ | 10 | `playful` | 둥근 모서리, 파스텔, 바운스 | 워크숍, 캐주얼 발표 |
316
325
 
317
- 2. **세 가지 파일을 추가하세요:**
318
- - `reference.html` — 모든 슬라이드 타입(타이틀, 콘텐츠, 비교, 코드, 데이터, 인용, 클로징 등)을 포함하는 10장짜리 전체 예시 프레젠테이션. 네비게이션, 전체화면, 발표자 노트, PDF 내보내기 모두 동작해야 함
319
- - `README.md` — 디자인 가이드라인: 컬러 팔레트, 타이포그래피, 간격, 디자인 철학, 용도
320
- - `preview.png` — 타이틀 슬라이드의 1280×720 스크린샷
326
+ ---
321
327
 
322
- 3. `core/`의 네비게이션, 전체화면, 발표자 노트, PDF 내보내기 기능 **컨벤션을 따르세요**
328
+ ## 🤝 기여하기
323
329
 
324
- 4. **PR을 제출하세요** — 갤러리에 테마가 추가됩니다!
330
+ ### 테마 추가하기
325
331
 
326
- ### 가이드라인
327
- - 결과물은 반드시 단일 `.html` 파일 모든 CSS/JS 인라인
328
- - 허용되는 외부 의존성: 폰트 CDN (Pretendard 필수) + Prism.js (코드 블록용)
329
- - 모든 테마는 `SKILL.md`에 정의된 전체 슬라이드 타입 세트를 지원해야 함
330
- - 키보드 네비게이션, 전체화면, 발표자 노트, 인쇄 내보내기 테스트 필수
332
+ 1. `themes/` 안에 테마 ID로 폴더 생성 (케밥 케이스)
333
+ 2. `reference.html` + `README.md` 추가
334
+ 3. `core/`의 컨벤션을 따르기
335
+ 4. PR 제출 갤러리에 자동 추가!
331
336
 
332
337
  ---
333
338
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "make-slide",
3
- "version": "2.0.0",
3
+ "version": "2.1.0",
4
4
  "description": "AI presentation skill — generate single-file HTML slides with 10 themes",
5
5
  "bin": {
6
6
  "make-slide": "./bin/cli.js"
@@ -11,7 +11,14 @@
11
11
  "README.md",
12
12
  "LICENSE"
13
13
  ],
14
- "keywords": ["slides", "presentation", "ai", "claude", "skill", "html"],
14
+ "keywords": [
15
+ "slides",
16
+ "presentation",
17
+ "ai",
18
+ "claude",
19
+ "skill",
20
+ "html"
21
+ ],
15
22
  "author": "Kuneosu",
16
23
  "license": "MIT",
17
24
  "repository": {