make-slide 2.0.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.
- package/.claude/skills/make-slide/SKILL.md +230 -0
- package/.claude/skills/make-slide/references/html-spec.md +160 -0
- package/.claude/skills/make-slide/references/slide-types.md +106 -0
- package/.claude/skills/make-slide/references/themes.md +31 -0
- package/LICENSE +21 -0
- package/README.md +336 -0
- package/bin/cli.js +170 -0
- package/package.json +21 -0
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: make-slide
|
|
3
|
+
description: "Generate single-file HTML presentations with 10 professional themes and speaker notes. Use this skill whenever the user mentions presentations, slides, deck, talk, keynote, pitch, slideshow, or wants to turn any content into a visual presentation — even if they don't explicitly say 'slide'. Also triggers for requests like 'make a talk about', 'create a pitch for', 'turn this into slides', or any request to visualize content for an audience."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# make-slide — AI Presentation Skill
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
Generate single-file HTML presentations with speaker notes. The output is always a standalone `.html` file with all CSS and JS inlined — no build step, no framework, no dependencies beyond font CDNs.
|
|
11
|
+
|
|
12
|
+
**Repository**: [github.com/kuneosu/make-slide](https://github.com/kuneosu/make-slide)
|
|
13
|
+
**Theme Gallery**: [make-slide.vercel.app](https://make-slide.vercel.app)
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## When to Use
|
|
18
|
+
|
|
19
|
+
Activate this skill when the user's request matches any of these patterns:
|
|
20
|
+
|
|
21
|
+
- "Make a presentation about..."
|
|
22
|
+
- "Create slides for..."
|
|
23
|
+
- "Build a slide deck..."
|
|
24
|
+
- "Turn this into a presentation"
|
|
25
|
+
- "Make a talk about..."
|
|
26
|
+
- "Create a pitch deck for..."
|
|
27
|
+
- "Generate presentation slides..."
|
|
28
|
+
- Any request involving: **presentation**, **slides**, **deck**, **talk**, **keynote**, **pitch**, **slideshow**
|
|
29
|
+
- Any request to visualize or structure content for an audience, even without explicit "slide" mention
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## Input Modes
|
|
34
|
+
|
|
35
|
+
Determine which mode applies based on the user's input:
|
|
36
|
+
|
|
37
|
+
### Mode A: Topic Only
|
|
38
|
+
The user provides a topic and optionally a duration or audience.
|
|
39
|
+
```
|
|
40
|
+
"Make a 15-min talk about AI trends"
|
|
41
|
+
"Create a presentation on microservices architecture"
|
|
42
|
+
```
|
|
43
|
+
→ Design the structure, content, and speaker notes from scratch.
|
|
44
|
+
|
|
45
|
+
### Mode B: Content/Material Provided
|
|
46
|
+
The user provides source material (documents, notes, data, articles).
|
|
47
|
+
```
|
|
48
|
+
"Turn this document into a presentation"
|
|
49
|
+
"Create slides based on these meeting notes"
|
|
50
|
+
```
|
|
51
|
+
→ Organize and distill the material into slides + speaker notes.
|
|
52
|
+
|
|
53
|
+
### Mode C: Script Provided
|
|
54
|
+
The user provides a written speech or speaking script.
|
|
55
|
+
```
|
|
56
|
+
"Create slides for this speech script"
|
|
57
|
+
"Make a visual deck that accompanies this talk"
|
|
58
|
+
```
|
|
59
|
+
→ Analyze the script's structure and create matching visual slides. The script becomes the speaker notes.
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## Workflow
|
|
64
|
+
|
|
65
|
+
Follow these steps in order:
|
|
66
|
+
|
|
67
|
+
### Step 1: Analyze Input
|
|
68
|
+
- Determine the input mode (A, B, or C)
|
|
69
|
+
- Estimate the appropriate number of slides:
|
|
70
|
+
- 5-min talk → 8–12 slides
|
|
71
|
+
- 10-min talk → 12–18 slides
|
|
72
|
+
- 15-min talk → 18–25 slides
|
|
73
|
+
- 20-min talk → 25–30 slides
|
|
74
|
+
- 30-min talk → 30–40 slides
|
|
75
|
+
- Identify the target audience and tone (technical, business, casual, academic)
|
|
76
|
+
- Detect the user's language from the conversation — generate content in that language
|
|
77
|
+
|
|
78
|
+
### Step 2: Choose a Theme
|
|
79
|
+
Present the user with the theme gallery link for browsing:
|
|
80
|
+
> **Browse themes here**: https://make-slide.vercel.app
|
|
81
|
+
|
|
82
|
+
Read `references/themes.md` for the full theme list with GitHub raw URLs and recommendations by context.
|
|
83
|
+
|
|
84
|
+
If the user doesn't choose a theme, recommend one based on context:
|
|
85
|
+
- Tech/developer talk → `minimal-dark` or `neon-terminal`
|
|
86
|
+
- Business/corporate → `corporate` or `minimal-light`
|
|
87
|
+
- Startup pitch → `gradient-pop` or `keynote-apple`
|
|
88
|
+
- Data/analytics → `data-focus`
|
|
89
|
+
- Education/workshop → `paper` or `playful`
|
|
90
|
+
- Design/creative → `magazine`
|
|
91
|
+
- Product launch → `keynote-apple`
|
|
92
|
+
- Casual/team event → `playful`
|
|
93
|
+
|
|
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
|
|
100
|
+
|
|
101
|
+
### Step 4: Generate Outline
|
|
102
|
+
Create a slide-by-slide outline with:
|
|
103
|
+
- Slide number
|
|
104
|
+
- Slide type (from slide types reference)
|
|
105
|
+
- Title
|
|
106
|
+
- Key points / content summary
|
|
107
|
+
- Image placement (if applicable)
|
|
108
|
+
|
|
109
|
+
Read `references/slide-types.md` for the 12 available slide type patterns.
|
|
110
|
+
|
|
111
|
+
Present the outline to the user for confirmation. Wait for approval or modifications before proceeding.
|
|
112
|
+
|
|
113
|
+
### Step 5: Fetch Theme Reference
|
|
114
|
+
Fetch the chosen theme's reference files from GitHub:
|
|
115
|
+
|
|
116
|
+
1. **reference.html** — The complete example presentation with all slide types, styles, navigation, and interactive features. This is the primary template.
|
|
117
|
+
2. **README.md** — Design guidelines including color palette, typography, spacing rules, and design philosophy.
|
|
118
|
+
|
|
119
|
+
Use the raw GitHub URLs listed in `references/themes.md`.
|
|
120
|
+
|
|
121
|
+
### Step 6: Generate HTML
|
|
122
|
+
Using the reference.html as the template:
|
|
123
|
+
- Replicate the exact HTML structure, CSS styles, and JS functionality
|
|
124
|
+
- Replace the demo content with the user's actual content
|
|
125
|
+
- Keep all interactive features (navigation, fullscreen, speaker notes, etc.)
|
|
126
|
+
- Match the theme's typography, colors, spacing, and animations
|
|
127
|
+
- Ensure all slide types used match the patterns in the reference
|
|
128
|
+
|
|
129
|
+
Read `references/html-spec.md` for the full HTML requirements including navigation, fullscreen, PDF export, CDN dependencies, image handling, and code blocks.
|
|
130
|
+
|
|
131
|
+
### Step 7: Generate Speaker Notes
|
|
132
|
+
Add speaker notes as `data-notes` attributes on each slide's `<div>`:
|
|
133
|
+
```html
|
|
134
|
+
<div class="slide" data-notes="Welcome everyone. Today I'll be talking about...">
|
|
135
|
+
```
|
|
136
|
+
- Notes should be conversational and natural
|
|
137
|
+
- Include timing cues where helpful (e.g., "[PAUSE]", "[2 min]")
|
|
138
|
+
- Expand on the slide text — don't just repeat it
|
|
139
|
+
- Include transitions between slides (e.g., "Now let's move on to...")
|
|
140
|
+
|
|
141
|
+
### Step 8: Generate Script (Mode A and B only)
|
|
142
|
+
For Mode A and B, also generate a separate `script.md` file containing:
|
|
143
|
+
- Full speaking script organized by slide
|
|
144
|
+
- Timing estimates per section
|
|
145
|
+
- Audience interaction cues
|
|
146
|
+
- Key points to emphasize
|
|
147
|
+
|
|
148
|
+
For Mode C, the user already has a script — skip this step.
|
|
149
|
+
|
|
150
|
+
### Step 9: Save and Deliver
|
|
151
|
+
- Save the presentation as `index.html` (or user-specified filename)
|
|
152
|
+
- Save the script as `script.md` (if generated)
|
|
153
|
+
- Offer to start a local server for preview:
|
|
154
|
+
```bash
|
|
155
|
+
# Python
|
|
156
|
+
python -m http.server 8000
|
|
157
|
+
# Node.js
|
|
158
|
+
npx serve .
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## Output Rules
|
|
164
|
+
|
|
165
|
+
1. Always output a single `.html` file with all CSS and JS inlined
|
|
166
|
+
2. Only allowed external dependencies: Font CDNs (Pretendard, JetBrains Mono) + Prism.js CDN (conditional)
|
|
167
|
+
3. Speaker notes embedded as `data-notes` attributes on each slide `<div>`
|
|
168
|
+
4. Optionally output `script.md` for full speaking script (Mode A and B)
|
|
169
|
+
5. Generate content in the user's language — detect from the conversation context
|
|
170
|
+
6. Filename: `index.html` by default, or as specified by the user
|
|
171
|
+
7. Vanilla JS only — no JavaScript frameworks
|
|
172
|
+
8. Vanilla CSS only — no CSS frameworks
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
## Tips for Best Results
|
|
177
|
+
|
|
178
|
+
### Content
|
|
179
|
+
- Keep slides concise: max 6–8 bullet points per slide
|
|
180
|
+
- One core idea per slide
|
|
181
|
+
- Use short phrases, not full sentences, on slides
|
|
182
|
+
- Save detailed explanations for speaker notes
|
|
183
|
+
|
|
184
|
+
### Design
|
|
185
|
+
- Use the theme's accent color for emphasis and key terms
|
|
186
|
+
- Match typography hierarchy exactly from the reference.html
|
|
187
|
+
- Maintain consistent spacing and padding throughout
|
|
188
|
+
- Work within the theme's design system — don't override its core design
|
|
189
|
+
|
|
190
|
+
### Speaker Notes
|
|
191
|
+
- Write notes in a conversational tone
|
|
192
|
+
- Expand, explain, give examples — don't just repeat slide text
|
|
193
|
+
- Include timing hints: "[This section: ~3 minutes]"
|
|
194
|
+
- Add transition phrases: "Now let's look at...", "Building on that..."
|
|
195
|
+
- Mark audience interaction points: "[ASK AUDIENCE]", "[DEMO]", "[PAUSE]"
|
|
196
|
+
|
|
197
|
+
### Data Visualization
|
|
198
|
+
- Use CSS-only charts when possible (bar charts, progress bars, donut charts)
|
|
199
|
+
- Keep numbers round and memorable (say "nearly 50%" not "49.7%")
|
|
200
|
+
- Highlight the most important metric with size or color
|
|
201
|
+
|
|
202
|
+
### Performance
|
|
203
|
+
- Keep total HTML file size under 200KB ideally
|
|
204
|
+
- Use `loading="lazy"` on images
|
|
205
|
+
- Minimize complex CSS animations on slides with heavy content
|
|
206
|
+
|
|
207
|
+
### Accessibility
|
|
208
|
+
- Maintain sufficient color contrast ratios
|
|
209
|
+
- Include `alt` text on all images
|
|
210
|
+
- Ensure keyboard navigation works for all interactive elements
|
|
211
|
+
- Use semantic HTML where appropriate
|
|
212
|
+
|
|
213
|
+
---
|
|
214
|
+
|
|
215
|
+
## Quick Start Example
|
|
216
|
+
|
|
217
|
+
If the user says: *"Make a 10-minute presentation about Python best practices"*
|
|
218
|
+
|
|
219
|
+
1. **Mode**: A (Topic only)
|
|
220
|
+
2. **Slides**: ~15 slides
|
|
221
|
+
3. **Theme recommendation**: `minimal-dark` or `neon-terminal` (developer topic)
|
|
222
|
+
4. **Ask**: Theme preference + image needs
|
|
223
|
+
5. **Generate outline** → Get confirmation
|
|
224
|
+
6. **Fetch**: `minimal-dark/reference.html` + `minimal-dark/README.md`
|
|
225
|
+
7. **Generate**: `index.html` + `script.md`
|
|
226
|
+
8. **Offer**: Local server preview
|
|
227
|
+
|
|
228
|
+
---
|
|
229
|
+
|
|
230
|
+
*Skill version: 2.0 | Repository: [kuneosu/make-slide](https://github.com/kuneosu/make-slide) | Gallery: [make-slide.vercel.app](https://make-slide.vercel.app)*
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
# HTML Specification
|
|
2
|
+
|
|
3
|
+
Every generated presentation includes all of the following features. These ensure consistent, professional output across all themes.
|
|
4
|
+
|
|
5
|
+
## File Structure
|
|
6
|
+
- Single standalone `.html` file
|
|
7
|
+
- All CSS inlined in `<style>` tags
|
|
8
|
+
- All JS inlined in `<script>` tags
|
|
9
|
+
- No external files except CDN links listed below
|
|
10
|
+
|
|
11
|
+
## Required CDN Dependencies
|
|
12
|
+
```html
|
|
13
|
+
<!-- Pretendard Font (always include) -->
|
|
14
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.min.css">
|
|
15
|
+
|
|
16
|
+
<!-- JetBrains Mono for code blocks -->
|
|
17
|
+
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;700&display=swap">
|
|
18
|
+
|
|
19
|
+
<!-- Prism.js for syntax highlighting (ONLY if code blocks exist) -->
|
|
20
|
+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism-tomorrow.min.css">
|
|
21
|
+
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/prism.min.js"></script>
|
|
22
|
+
<!-- Add language components as needed -->
|
|
23
|
+
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/prism-javascript.min.js"></script>
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Navigation & Controls
|
|
27
|
+
|
|
28
|
+
### Keyboard Navigation
|
|
29
|
+
- `←` / `→` Arrow keys: Previous / Next slide
|
|
30
|
+
- `Space`: Next slide
|
|
31
|
+
- `F`: Toggle fullscreen
|
|
32
|
+
- `S`: Toggle speaker notes panel
|
|
33
|
+
- `Escape`: Exit fullscreen
|
|
34
|
+
|
|
35
|
+
### Slide Counter
|
|
36
|
+
- Display current slide number and total: `3 / 25`
|
|
37
|
+
- Position: bottom-right or as defined by the theme
|
|
38
|
+
|
|
39
|
+
### Progress Bar
|
|
40
|
+
- Visual progress indicator showing position in the deck
|
|
41
|
+
- Updates on each slide transition
|
|
42
|
+
|
|
43
|
+
### Fullscreen
|
|
44
|
+
- `F` key toggles fullscreen mode
|
|
45
|
+
- Fullscreen button in the UI controls
|
|
46
|
+
- Uses the Fullscreen API (`requestFullscreen`)
|
|
47
|
+
|
|
48
|
+
### Speaker Notes Panel
|
|
49
|
+
- `S` key toggles the speaker notes panel
|
|
50
|
+
- Panel displays:
|
|
51
|
+
- Current slide's notes (from `data-notes` attribute)
|
|
52
|
+
- Next slide preview (when possible)
|
|
53
|
+
- Panel should not obstruct the main slide view
|
|
54
|
+
|
|
55
|
+
### Touch/Swipe Navigation
|
|
56
|
+
- Swipe left → Next slide
|
|
57
|
+
- Swipe right → Previous slide
|
|
58
|
+
- Implement using touch event listeners (`touchstart`, `touchend`)
|
|
59
|
+
|
|
60
|
+
## PDF Export
|
|
61
|
+
```css
|
|
62
|
+
@media print {
|
|
63
|
+
/* Hide all UI controls */
|
|
64
|
+
.controls, .progress-bar, .slide-counter,
|
|
65
|
+
.fullscreen-btn, .speaker-notes-panel,
|
|
66
|
+
nav, button { display: none !important; }
|
|
67
|
+
|
|
68
|
+
/* Each slide = 1 page, landscape */
|
|
69
|
+
.slide {
|
|
70
|
+
page-break-after: always;
|
|
71
|
+
width: 100vw;
|
|
72
|
+
height: 100vh;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
@page {
|
|
76
|
+
size: landscape;
|
|
77
|
+
margin: 0;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Slide Transitions
|
|
83
|
+
- Fade transition between slides (CSS transitions or animations)
|
|
84
|
+
- Smooth and professional — no jarring jumps
|
|
85
|
+
|
|
86
|
+
## Staggered Element Animations
|
|
87
|
+
- Elements within a slide animate in sequentially (stagger effect)
|
|
88
|
+
- Use CSS animations with incremental `animation-delay`
|
|
89
|
+
- Trigger animations when the slide becomes active
|
|
90
|
+
|
|
91
|
+
## Layout
|
|
92
|
+
|
|
93
|
+
### Aspect Ratio
|
|
94
|
+
- 16:9 aspect ratio for all slides
|
|
95
|
+
- Centered on screen with letterboxing if needed
|
|
96
|
+
|
|
97
|
+
### Responsive Design
|
|
98
|
+
- Scales to fit various screen sizes
|
|
99
|
+
- Text remains readable at all resolutions
|
|
100
|
+
- Controls adapt to screen size
|
|
101
|
+
|
|
102
|
+
### Content Overflow
|
|
103
|
+
- Apply `overflow-y: auto` on slide content areas to prevent clipping
|
|
104
|
+
- Scrollbar should be subtle and match the theme
|
|
105
|
+
|
|
106
|
+
## Image Handling
|
|
107
|
+
|
|
108
|
+
### Default: CSS Placeholders
|
|
109
|
+
When no image URLs are provided, use styled placeholders that match the theme:
|
|
110
|
+
```html
|
|
111
|
+
<!-- Emoji-based placeholder -->
|
|
112
|
+
<div class="image-placeholder">
|
|
113
|
+
<span class="placeholder-icon">🚀</span>
|
|
114
|
+
<span class="placeholder-label">Product Screenshot</span>
|
|
115
|
+
</div>
|
|
116
|
+
|
|
117
|
+
<!-- CSS shape placeholder -->
|
|
118
|
+
<div class="image-placeholder gradient-bg">
|
|
119
|
+
<svg>...</svg>
|
|
120
|
+
</div>
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### When User Provides URLs
|
|
124
|
+
```html
|
|
125
|
+
<img src="https://example.com/image.jpg" alt="Description" loading="lazy">
|
|
126
|
+
```
|
|
127
|
+
- Always include descriptive `alt` text
|
|
128
|
+
- Use `loading="lazy"` for images below the fold
|
|
129
|
+
- Style images to fit within the slide layout without overflow
|
|
130
|
+
|
|
131
|
+
## Code Blocks
|
|
132
|
+
|
|
133
|
+
### Syntax Highlighting with Prism.js
|
|
134
|
+
- Only include Prism.js CDN when code blocks are present in the presentation
|
|
135
|
+
- If no code blocks exist, omit all Prism.js `<link>` and `<script>` tags
|
|
136
|
+
|
|
137
|
+
### Supported Languages
|
|
138
|
+
Include Prism.js language components as needed:
|
|
139
|
+
- `prism-javascript.min.js` — JavaScript
|
|
140
|
+
- `prism-typescript.min.js` — TypeScript
|
|
141
|
+
- `prism-python.min.js` — Python
|
|
142
|
+
- `prism-markup.min.js` — HTML/XML (included in core)
|
|
143
|
+
- `prism-css.min.js` — CSS (included in core)
|
|
144
|
+
- `prism-bash.min.js` — Bash/Shell
|
|
145
|
+
- `prism-json.min.js` — JSON
|
|
146
|
+
- `prism-java.min.js` — Java
|
|
147
|
+
- `prism-go.min.js` — Go
|
|
148
|
+
- `prism-rust.min.js` — Rust
|
|
149
|
+
|
|
150
|
+
### Code Block Markup
|
|
151
|
+
```html
|
|
152
|
+
<pre><code class="language-javascript">
|
|
153
|
+
function hello() {
|
|
154
|
+
console.log("Hello, World!");
|
|
155
|
+
}
|
|
156
|
+
</code></pre>
|
|
157
|
+
```
|
|
158
|
+
- Use `JetBrains Mono` font for all code blocks
|
|
159
|
+
- Ensure adequate contrast for readability
|
|
160
|
+
- Match the code theme to the presentation theme (dark themes → dark code, light themes → light code)
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
# Slide Types Reference
|
|
2
|
+
|
|
3
|
+
Every theme supports these 12 common slide types. Use the appropriate type based on content needs.
|
|
4
|
+
|
|
5
|
+
## 1. Title Slide
|
|
6
|
+
The opening slide with presentation title, subtitle, presenter name, and date.
|
|
7
|
+
```
|
|
8
|
+
[Large Title]
|
|
9
|
+
[Subtitle or tagline]
|
|
10
|
+
[Presenter Name — Date]
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## 2. Agenda / Table of Contents
|
|
14
|
+
Overview of the presentation structure with numbered sections.
|
|
15
|
+
```
|
|
16
|
+
[Agenda heading]
|
|
17
|
+
01. First Section
|
|
18
|
+
02. Second Section
|
|
19
|
+
03. Third Section
|
|
20
|
+
...
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## 3. Section Divider
|
|
24
|
+
Marks the beginning of a new section. Usually has a big number or icon.
|
|
25
|
+
```
|
|
26
|
+
[Big Number: 01]
|
|
27
|
+
[Section Title]
|
|
28
|
+
[Optional brief description]
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## 4. Content Slide
|
|
32
|
+
Standard slide with heading and bullet points or paragraphs.
|
|
33
|
+
```
|
|
34
|
+
[Heading]
|
|
35
|
+
• Point one
|
|
36
|
+
• Point two
|
|
37
|
+
• Point three
|
|
38
|
+
[Optional supporting text]
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## 5. Quote Slide
|
|
42
|
+
Features a prominent quotation with attribution.
|
|
43
|
+
```
|
|
44
|
+
"The best way to predict the future is to invent it."
|
|
45
|
+
— Alan Kay
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## 6. Comparison Slide
|
|
49
|
+
Side-by-side columns comparing two concepts, approaches, or options.
|
|
50
|
+
```
|
|
51
|
+
[Left Column: Option A] [Right Column: Option B]
|
|
52
|
+
- Feature 1 - Feature 1
|
|
53
|
+
- Feature 2 - Feature 2
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## 7. Flow / Process Slide
|
|
57
|
+
Step-by-step process visualization with arrows or connectors.
|
|
58
|
+
```
|
|
59
|
+
[Step 1] → [Step 2] → [Step 3] → [Step 4]
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## 8. Card Grid Slide
|
|
63
|
+
2–4 cards arranged in a grid, each with an icon, title, and description.
|
|
64
|
+
```
|
|
65
|
+
[🎯 Card 1] [🚀 Card 2]
|
|
66
|
+
[Title] [Title]
|
|
67
|
+
[Desc] [Desc]
|
|
68
|
+
|
|
69
|
+
[💡 Card 3] [⚡ Card 4]
|
|
70
|
+
[Title] [Title]
|
|
71
|
+
[Desc] [Desc]
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## 9. Data / Chart Slide
|
|
75
|
+
Statistics, metrics, bar charts, or KPI displays. Use CSS-only charts when possible.
|
|
76
|
+
```
|
|
77
|
+
[Metric: 95%] [Metric: 2.5x] [Metric: 10K+]
|
|
78
|
+
[CSS bar chart or visual representation]
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## 10. Code Block Slide
|
|
82
|
+
Syntax-highlighted code with optional title and description.
|
|
83
|
+
```
|
|
84
|
+
[Title: Implementation Example]
|
|
85
|
+
┌──────────────────────────┐
|
|
86
|
+
│ function example() { │
|
|
87
|
+
│ return "hello"; │
|
|
88
|
+
│ } │
|
|
89
|
+
└──────────────────────────┘
|
|
90
|
+
[Optional explanation below]
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
## 11. Image Slide
|
|
94
|
+
Slide featuring an image (or placeholder) with optional caption.
|
|
95
|
+
```
|
|
96
|
+
[Image or Placeholder]
|
|
97
|
+
[Caption text]
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## 12. Closing Slide
|
|
101
|
+
Final slide with thank you message, contact info, or call to action.
|
|
102
|
+
```
|
|
103
|
+
[Thank You]
|
|
104
|
+
[Contact info / Social links / QR code]
|
|
105
|
+
[Call to action]
|
|
106
|
+
```
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Theme List
|
|
2
|
+
|
|
3
|
+
10 professional themes available for presentations. Each theme includes a complete `reference.html` (template with all slide types) and a `README.md` (design guidelines).
|
|
4
|
+
|
|
5
|
+
## Theme Table
|
|
6
|
+
|
|
7
|
+
| # | Theme ID | Style | Best For | Reference HTML | README |
|
|
8
|
+
|---|----------|-------|----------|---------------|--------|
|
|
9
|
+
| 1 | `minimal-dark` | Clean dark background, white typography, modern minimal | Tech conferences, developer talks, open source presentations | [reference.html](https://raw.githubusercontent.com/kuneosu/make-slide/main/themes/minimal-dark/reference.html) | [README.md](https://raw.githubusercontent.com/kuneosu/make-slide/main/themes/minimal-dark/README.md) |
|
|
10
|
+
| 2 | `minimal-light` | Bright white background, precise typography, Apple-inspired | General presentations, corporate meetings, academic lectures | [reference.html](https://raw.githubusercontent.com/kuneosu/make-slide/main/themes/minimal-light/reference.html) | [README.md](https://raw.githubusercontent.com/kuneosu/make-slide/main/themes/minimal-light/README.md) |
|
|
11
|
+
| 3 | `corporate` | Navy and gold accents, professional structured layout | Business presentations, investor meetings, quarterly reports | [reference.html](https://raw.githubusercontent.com/kuneosu/make-slide/main/themes/corporate/reference.html) | [README.md](https://raw.githubusercontent.com/kuneosu/make-slide/main/themes/corporate/README.md) |
|
|
12
|
+
| 4 | `gradient-pop` | Vibrant purple-pink-orange gradients, glass-morphism cards | Startup pitches, product launches, marketing campaigns | [reference.html](https://raw.githubusercontent.com/kuneosu/make-slide/main/themes/gradient-pop/reference.html) | [README.md](https://raw.githubusercontent.com/kuneosu/make-slide/main/themes/gradient-pop/README.md) |
|
|
13
|
+
| 5 | `neon-terminal` | Terminal-style dark theme, neon green/cyan, scanline effects | Developer conferences, hackathons, CTF events, security talks | [reference.html](https://raw.githubusercontent.com/kuneosu/make-slide/main/themes/neon-terminal/reference.html) | [README.md](https://raw.githubusercontent.com/kuneosu/make-slide/main/themes/neon-terminal/README.md) |
|
|
14
|
+
| 6 | `paper` | Warm kraft-paper aesthetic, serif typography, terracotta accents | Educational talks, academic conferences, workshops, research | [reference.html](https://raw.githubusercontent.com/kuneosu/make-slide/main/themes/paper/reference.html) | [README.md](https://raw.githubusercontent.com/kuneosu/make-slide/main/themes/paper/README.md) |
|
|
15
|
+
| 7 | `keynote-apple` | Dramatic dark/gradient backgrounds, Apple keynote-inspired | Product launches, keynote conferences, executive briefings | [reference.html](https://raw.githubusercontent.com/kuneosu/make-slide/main/themes/keynote-apple/reference.html) | [README.md](https://raw.githubusercontent.com/kuneosu/make-slide/main/themes/keynote-apple/README.md) |
|
|
16
|
+
| 8 | `magazine` | Editorial magazine layout, asymmetric design, dramatic typography | Design presentations, portfolio reviews, brand guidelines | [reference.html](https://raw.githubusercontent.com/kuneosu/make-slide/main/themes/magazine/reference.html) | [README.md](https://raw.githubusercontent.com/kuneosu/make-slide/main/themes/magazine/README.md) |
|
|
17
|
+
| 9 | `data-focus` | Clean data-centric layout, dashboard aesthetics, trend indicators | Data analysis, KPI dashboards, financial reviews, statistical reports | [reference.html](https://raw.githubusercontent.com/kuneosu/make-slide/main/themes/data-focus/reference.html) | [README.md](https://raw.githubusercontent.com/kuneosu/make-slide/main/themes/data-focus/README.md) |
|
|
18
|
+
| 10 | `playful` | Rounded corners, pastel colors, emoji accents, bouncy animations | Team workshops, casual tech talks, retrospectives, community events | [reference.html](https://raw.githubusercontent.com/kuneosu/make-slide/main/themes/playful/reference.html) | [README.md](https://raw.githubusercontent.com/kuneosu/make-slide/main/themes/playful/README.md) |
|
|
19
|
+
|
|
20
|
+
## Recommendation Guide
|
|
21
|
+
|
|
22
|
+
| Context | Recommended Themes |
|
|
23
|
+
|---------|-------------------|
|
|
24
|
+
| Tech/developer talk | `minimal-dark`, `neon-terminal` |
|
|
25
|
+
| Business/corporate | `corporate`, `minimal-light` |
|
|
26
|
+
| Startup pitch | `gradient-pop`, `keynote-apple` |
|
|
27
|
+
| Data/analytics | `data-focus` |
|
|
28
|
+
| Education/workshop | `paper`, `playful` |
|
|
29
|
+
| Design/creative | `magazine` |
|
|
30
|
+
| Product launch | `keynote-apple` |
|
|
31
|
+
| Casual/team event | `playful` |
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 kuneosu
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,336 @@
|
|
|
1
|
+
# make-slide 🎯
|
|
2
|
+
|
|
3
|
+
**AI-powered presentation skill that generates stunning single-file HTML slide decks.**
|
|
4
|
+
**AI 코딩 에이전트가 단일 HTML 파일로 고품질 프레젠테이션을 생성하는 범용 스킬.**
|
|
5
|
+
|
|
6
|
+
[](https://make-slide.vercel.app)
|
|
7
|
+
[](LICENSE)
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## What is make-slide?
|
|
12
|
+
|
|
13
|
+
**make-slide** is a skill (instruction set) for AI coding agents — like Claude Code, Gemini CLI, Codex, Cursor, and others — that enables them to generate professional presentation slides as a **single HTML file**.
|
|
14
|
+
|
|
15
|
+
Instead of crafting designs from scratch every time (wasting tokens and producing inconsistent results), the AI references pre-built theme templates from this repository. The result is:
|
|
16
|
+
|
|
17
|
+
- **Token-efficient** — AI fetches a reference file instead of inventing layouts
|
|
18
|
+
- **Consistent quality** — every presentation follows a polished, tested design system
|
|
19
|
+
- **Zero dependencies** — output is one `.html` file you can open anywhere
|
|
20
|
+
|
|
21
|
+
> Think of it as a **design system for AI-generated presentations**.
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## ✨ Features
|
|
26
|
+
|
|
27
|
+
| Feature | Description |
|
|
28
|
+
|---------|-------------|
|
|
29
|
+
| 🎨 **10 Themes** | From dark minimal to playful pastels — [browse the gallery](https://make-slide.vercel.app) |
|
|
30
|
+
| 📄 **Single HTML Output** | One file, no build step, no framework — just open in a browser |
|
|
31
|
+
| 🎤 **Speaker Notes** | Built-in presenter mode with per-slide notes (press `S`) |
|
|
32
|
+
| 🖨️ **PDF Export** | Print-ready via `Ctrl+P` with clean `@media print` styles |
|
|
33
|
+
| 🖥️ **Fullscreen** | One-key fullscreen toggle (press `F`) |
|
|
34
|
+
| ⌨️ **Keyboard Navigation** | Arrow keys, spacebar, touch/swipe support |
|
|
35
|
+
| 📥 **3 Input Modes** | Topic only / Content provided / Script provided |
|
|
36
|
+
| 🤖 **Works with Any AI Tool** | Claude Code, Gemini CLI, Codex, Cursor, and more |
|
|
37
|
+
| 🌍 **Language-Agnostic** | Generates content in whatever language you speak |
|
|
38
|
+
| 📊 **CSS-Only Charts** | Bar charts, progress rings, KPI cards — no chart library needed |
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## 🚀 Quick Start
|
|
43
|
+
|
|
44
|
+
Give your AI coding tool the following instruction:
|
|
45
|
+
|
|
46
|
+
### Claude Code
|
|
47
|
+
```
|
|
48
|
+
Read SKILL.md from https://github.com/kuneosu/make-slide and create a presentation about [your topic] using the minimal-dark theme.
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Gemini CLI
|
|
52
|
+
```
|
|
53
|
+
Follow the instructions in SKILL.md at https://github.com/kuneosu/make-slide to build a 10-slide presentation about [your topic].
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### Any AI Coding Tool
|
|
57
|
+
```
|
|
58
|
+
Fetch https://raw.githubusercontent.com/kuneosu/make-slide/main/SKILL.md and follow its instructions to create a presentation about [your topic].
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
> **Tip:** Browse themes first at [make-slide.vercel.app](https://make-slide.vercel.app) and tell your AI which one you like!
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## 🎨 Themes
|
|
66
|
+
|
|
67
|
+
All 10 themes are live at **[make-slide.vercel.app](https://make-slide.vercel.app)**
|
|
68
|
+
|
|
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 |
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## ⚙️ How It Works
|
|
85
|
+
|
|
86
|
+
```
|
|
87
|
+
┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐
|
|
88
|
+
│ 1. AI reads │────▶│ 2. User picks│────▶│ 3. AI fetches│────▶│ 4. AI builds │
|
|
89
|
+
│ SKILL.md │ │ theme │ │ reference │ │ your slides │
|
|
90
|
+
└──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘
|
|
91
|
+
```
|
|
92
|
+
|
|
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
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## 📁 Project Structure
|
|
101
|
+
|
|
102
|
+
```
|
|
103
|
+
make-slide/
|
|
104
|
+
├── README.md # This file
|
|
105
|
+
├── SKILL.md # AI agent instruction file (the "skill")
|
|
106
|
+
├── LICENSE # MIT License
|
|
107
|
+
│
|
|
108
|
+
├── themes/ # Theme references (10 themes)
|
|
109
|
+
│ ├── minimal-dark/
|
|
110
|
+
│ │ ├── README.md # Design guidelines
|
|
111
|
+
│ │ ├── reference.html # Full example presentation
|
|
112
|
+
│ │ └── preview.png # Theme thumbnail
|
|
113
|
+
│ ├── minimal-light/
|
|
114
|
+
│ ├── corporate/
|
|
115
|
+
│ ├── gradient-pop/
|
|
116
|
+
│ ├── neon-terminal/
|
|
117
|
+
│ ├── paper/
|
|
118
|
+
│ ├── keynote-apple/
|
|
119
|
+
│ ├── magazine/
|
|
120
|
+
│ ├── data-focus/
|
|
121
|
+
│ └── playful/
|
|
122
|
+
│
|
|
123
|
+
├── gallery/ # Theme gallery website (Vercel)
|
|
124
|
+
│ ├── index.html # Gallery page
|
|
125
|
+
│ └── public/previews/ # Theme screenshots
|
|
126
|
+
│
|
|
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
|
|
133
|
+
│
|
|
134
|
+
└── examples/ # Example presentations
|
|
135
|
+
└── pineone-talk-reference.html
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## 🤝 Contributing
|
|
141
|
+
|
|
142
|
+
### Adding a New Theme
|
|
143
|
+
|
|
144
|
+
1. **Create a folder** in `themes/` with your theme ID (kebab-case):
|
|
145
|
+
```
|
|
146
|
+
themes/your-theme-name/
|
|
147
|
+
```
|
|
148
|
+
|
|
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
|
|
153
|
+
|
|
154
|
+
3. **Follow the conventions** in `core/` for navigation, fullscreen, speaker notes, and PDF export functionality
|
|
155
|
+
|
|
156
|
+
4. **Submit a PR** — and your theme will appear in the gallery!
|
|
157
|
+
|
|
158
|
+
### Guidelines
|
|
159
|
+
- 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`
|
|
162
|
+
- Test keyboard navigation, fullscreen, speaker notes, and print export
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
## 📜 License
|
|
167
|
+
|
|
168
|
+
[MIT](LICENSE) — use freely for personal and commercial projects.
|
|
169
|
+
|
|
170
|
+
---
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
<br>
|
|
174
|
+
|
|
175
|
+
# make-slide 🎯 (한국어)
|
|
176
|
+
|
|
177
|
+
**AI 코딩 에이전트가 단일 HTML 파일로 고품질 프레젠테이션을 생성하는 범용 스킬.**
|
|
178
|
+
|
|
179
|
+
[](https://make-slide.vercel.app)
|
|
180
|
+
[](LICENSE)
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
## make-slide란?
|
|
185
|
+
|
|
186
|
+
**make-slide**는 Claude Code, Gemini CLI, Codex, Cursor 등 AI 코딩 에이전트를 위한 스킬(지침서)입니다. AI가 이 스킬을 읽고 따라하면 전문적인 프레젠테이션 슬라이드를 **단일 HTML 파일**로 생성합니다.
|
|
187
|
+
|
|
188
|
+
매번 처음부터 디자인을 만드는 대신(토큰 낭비 + 일관성 없는 결과), AI가 이 레포의 사전 제작된 테마 템플릿을 참조합니다:
|
|
189
|
+
|
|
190
|
+
- **토큰 절약** — AI가 레이아웃을 발명하는 대신 레퍼런스 파일을 가져옴
|
|
191
|
+
- **일관된 품질** — 모든 프레젠테이션이 검증된 디자인 시스템을 따름
|
|
192
|
+
- **제로 의존성** — 결과물은 어디서나 열 수 있는 `.html` 파일 하나
|
|
193
|
+
|
|
194
|
+
> **AI 생성 프레젠테이션을 위한 디자인 시스템**이라고 생각하세요.
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
|
|
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
|
+
## 🚀 빠른 시작
|
|
216
|
+
|
|
217
|
+
AI 코딩 도구에 다음과 같이 지시하세요:
|
|
218
|
+
|
|
219
|
+
### Claude Code
|
|
220
|
+
```
|
|
221
|
+
https://github.com/kuneosu/make-slide 의 SKILL.md를 읽고 [주제]에 대한 프레젠테이션을 minimal-dark 테마로 만들어줘.
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
### Gemini CLI
|
|
225
|
+
```
|
|
226
|
+
https://github.com/kuneosu/make-slide 의 SKILL.md 지침을 따라 [주제]에 대한 10장짜리 프레젠테이션을 만들어줘.
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
### 기타 AI 코딩 도구
|
|
230
|
+
```
|
|
231
|
+
https://raw.githubusercontent.com/kuneosu/make-slide/main/SKILL.md 를 가져와서 지침에 따라 [주제]에 대한 프레젠테이션을 만들어줘.
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
> **팁:** [make-slide.vercel.app](https://make-slide.vercel.app)에서 테마를 먼저 둘러보고 마음에 드는 것을 AI에게 알려주세요!
|
|
235
|
+
|
|
236
|
+
---
|
|
237
|
+
|
|
238
|
+
## 🎨 테마
|
|
239
|
+
|
|
240
|
+
10개 테마 모두 **[make-slide.vercel.app](https://make-slide.vercel.app)** 에서 확인할 수 있습니다.
|
|
241
|
+
|
|
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) | 둥근 모서리, 파스텔, 바운스 | 워크숍, 캐주얼 발표 |
|
|
254
|
+
|
|
255
|
+
---
|
|
256
|
+
|
|
257
|
+
## ⚙️ 작동 방식
|
|
258
|
+
|
|
259
|
+
```
|
|
260
|
+
┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐
|
|
261
|
+
│ 1. AI가 │────▶│ 2. 사용자가 │────▶│ 3. AI가 │────▶│ 4. AI가 │
|
|
262
|
+
│ SKILL.md 읽기│ │ 테마 선택 │ │ 레퍼런스 참조 │ │ 슬라이드 생성 │
|
|
263
|
+
└──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘
|
|
264
|
+
```
|
|
265
|
+
|
|
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` 파일 + 발표자 노트
|
|
270
|
+
|
|
271
|
+
---
|
|
272
|
+
|
|
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
|
+
|
|
306
|
+
---
|
|
307
|
+
|
|
308
|
+
## 🤝 기여하기
|
|
309
|
+
|
|
310
|
+
### 새 테마 추가하기
|
|
311
|
+
|
|
312
|
+
1. `themes/` 안에 테마 ID로 폴더를 생성하세요 (케밥 케이스):
|
|
313
|
+
```
|
|
314
|
+
themes/your-theme-name/
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
2. **세 가지 파일을 추가하세요:**
|
|
318
|
+
- `reference.html` — 모든 슬라이드 타입(타이틀, 콘텐츠, 비교, 코드, 데이터, 인용, 클로징 등)을 포함하는 10장짜리 전체 예시 프레젠테이션. 네비게이션, 전체화면, 발표자 노트, PDF 내보내기 모두 동작해야 함
|
|
319
|
+
- `README.md` — 디자인 가이드라인: 컬러 팔레트, 타이포그래피, 간격, 디자인 철학, 용도
|
|
320
|
+
- `preview.png` — 타이틀 슬라이드의 1280×720 스크린샷
|
|
321
|
+
|
|
322
|
+
3. `core/`의 네비게이션, 전체화면, 발표자 노트, PDF 내보내기 기능 **컨벤션을 따르세요**
|
|
323
|
+
|
|
324
|
+
4. **PR을 제출하세요** — 갤러리에 테마가 추가됩니다!
|
|
325
|
+
|
|
326
|
+
### 가이드라인
|
|
327
|
+
- 결과물은 반드시 단일 `.html` 파일 — 모든 CSS/JS 인라인
|
|
328
|
+
- 허용되는 외부 의존성: 폰트 CDN (Pretendard 필수) + Prism.js (코드 블록용)
|
|
329
|
+
- 모든 테마는 `SKILL.md`에 정의된 전체 슬라이드 타입 세트를 지원해야 함
|
|
330
|
+
- 키보드 네비게이션, 전체화면, 발표자 노트, 인쇄 내보내기 테스트 필수
|
|
331
|
+
|
|
332
|
+
---
|
|
333
|
+
|
|
334
|
+
## 📜 라이선스
|
|
335
|
+
|
|
336
|
+
[MIT](LICENSE) — 개인 및 상업 프로젝트에 자유롭게 사용하세요.
|
package/bin/cli.js
ADDED
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const fs = require('fs');
|
|
4
|
+
const path = require('path');
|
|
5
|
+
const { execSync } = require('child_process');
|
|
6
|
+
|
|
7
|
+
const SKILL_DIR = '.claude/skills/make-slide';
|
|
8
|
+
const GALLERY_URL = 'https://make-slide.vercel.app';
|
|
9
|
+
|
|
10
|
+
const THEMES = [
|
|
11
|
+
{ id: 'minimal-dark', style: 'Clean dark, white typography', bestFor: 'Tech talks, developer conferences' },
|
|
12
|
+
{ id: 'minimal-light', style: 'Bright white, Apple-inspired', bestFor: 'General, corporate, academic' },
|
|
13
|
+
{ id: 'corporate', style: 'Navy & gold, professional layout', bestFor: 'Business, investor meetings' },
|
|
14
|
+
{ id: 'gradient-pop', style: 'Purple-pink gradients, glassmorphism',bestFor: 'Startup pitches, marketing' },
|
|
15
|
+
{ id: 'neon-terminal', style: 'Terminal dark, neon green/cyan', bestFor: 'Hackathons, security, CTF' },
|
|
16
|
+
{ id: 'paper', style: 'Kraft paper, serif, terracotta', bestFor: 'Education, workshops, research' },
|
|
17
|
+
{ id: 'keynote-apple', style: 'Dramatic dark, Apple keynote', bestFor: 'Product launches, keynotes' },
|
|
18
|
+
{ id: 'magazine', style: 'Editorial, asymmetric, dramatic', bestFor: 'Design, portfolio, branding' },
|
|
19
|
+
{ id: 'data-focus', style: 'Dashboard aesthetics, data-centric', bestFor: 'Analytics, KPIs, financial' },
|
|
20
|
+
{ id: 'playful', style: 'Pastel colors, bouncy animations', bestFor: 'Workshops, casual talks, retros' },
|
|
21
|
+
];
|
|
22
|
+
|
|
23
|
+
const INJECT_TEXT = `
|
|
24
|
+
|
|
25
|
+
## /make-slide
|
|
26
|
+
When the user types "/make-slide", read \`.claude/skills/make-slide/SKILL.md\` and follow the presentation creation workflow. Browse themes at ${GALLERY_URL}
|
|
27
|
+
`;
|
|
28
|
+
|
|
29
|
+
// ── Helpers ──
|
|
30
|
+
|
|
31
|
+
function copyDirSync(src, dest) {
|
|
32
|
+
fs.mkdirSync(dest, { recursive: true });
|
|
33
|
+
for (const entry of fs.readdirSync(src, { withFileTypes: true })) {
|
|
34
|
+
const srcPath = path.join(src, entry.name);
|
|
35
|
+
const destPath = path.join(dest, entry.name);
|
|
36
|
+
if (entry.isDirectory()) {
|
|
37
|
+
copyDirSync(srcPath, destPath);
|
|
38
|
+
} else {
|
|
39
|
+
fs.copyFileSync(srcPath, destPath);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
function openUrl(url) {
|
|
45
|
+
const platform = process.platform;
|
|
46
|
+
try {
|
|
47
|
+
if (platform === 'darwin') execSync(`open "${url}"`);
|
|
48
|
+
else if (platform === 'win32') execSync(`start "" "${url}"`);
|
|
49
|
+
else execSync(`xdg-open "${url}"`);
|
|
50
|
+
} catch {
|
|
51
|
+
console.log(`Open manually: ${url}`);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
function padEnd(str, len) {
|
|
56
|
+
return str.length >= len ? str : str + ' '.repeat(len - str.length);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// ── Commands ──
|
|
60
|
+
|
|
61
|
+
function cmdInit() {
|
|
62
|
+
const cwd = process.cwd();
|
|
63
|
+
|
|
64
|
+
// Find the source skill directory (bundled with the package)
|
|
65
|
+
const packageRoot = path.resolve(__dirname, '..');
|
|
66
|
+
const srcSkill = path.join(packageRoot, SKILL_DIR);
|
|
67
|
+
|
|
68
|
+
if (!fs.existsSync(srcSkill)) {
|
|
69
|
+
console.error('❌ Skill template not found. Reinstall with: npx make-slide init');
|
|
70
|
+
process.exit(1);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
const destSkill = path.join(cwd, SKILL_DIR);
|
|
74
|
+
|
|
75
|
+
// Copy skill files
|
|
76
|
+
console.log('📁 Copying skill files...');
|
|
77
|
+
copyDirSync(srcSkill, destSkill);
|
|
78
|
+
console.log(` ✅ ${SKILL_DIR}/`);
|
|
79
|
+
|
|
80
|
+
// Auto-detect and inject into AI config files
|
|
81
|
+
const configFiles = ['CLAUDE.md', 'AGENTS.md', '.cursorrules'];
|
|
82
|
+
let injected = false;
|
|
83
|
+
|
|
84
|
+
for (const file of configFiles) {
|
|
85
|
+
const filePath = path.join(cwd, file);
|
|
86
|
+
if (fs.existsSync(filePath)) {
|
|
87
|
+
const content = fs.readFileSync(filePath, 'utf-8');
|
|
88
|
+
if (content.includes('/make-slide')) {
|
|
89
|
+
console.log(` ⏭️ ${file} already has /make-slide reference`);
|
|
90
|
+
} else {
|
|
91
|
+
fs.appendFileSync(filePath, INJECT_TEXT);
|
|
92
|
+
console.log(` ✅ Injected /make-slide into ${file}`);
|
|
93
|
+
}
|
|
94
|
+
injected = true;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
if (!injected) {
|
|
99
|
+
console.log('');
|
|
100
|
+
console.log('💡 No AI config file found (CLAUDE.md, AGENTS.md, .cursorrules).');
|
|
101
|
+
console.log(' To use with Claude Code, add this to your CLAUDE.md:');
|
|
102
|
+
console.log('');
|
|
103
|
+
console.log(' ## /make-slide');
|
|
104
|
+
console.log(' When the user types "/make-slide", read `.claude/skills/make-slide/SKILL.md`');
|
|
105
|
+
console.log(' and follow the presentation creation workflow.');
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
console.log('');
|
|
109
|
+
console.log('🎉 make-slide installed successfully!');
|
|
110
|
+
console.log('');
|
|
111
|
+
console.log('Next steps:');
|
|
112
|
+
console.log(' 1. Type /make-slide in Claude Code to create a presentation');
|
|
113
|
+
console.log(` 2. Browse themes: ${GALLERY_URL}`);
|
|
114
|
+
console.log(' 3. Run: npx make-slide themes');
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
function cmdThemes() {
|
|
118
|
+
console.log('');
|
|
119
|
+
console.log('🎨 make-slide themes');
|
|
120
|
+
console.log('═'.repeat(80));
|
|
121
|
+
console.log('');
|
|
122
|
+
console.log(` ${padEnd('#', 4)} ${padEnd('Theme', 18)} ${padEnd('Style', 40)} Best For`);
|
|
123
|
+
console.log(` ${'-'.repeat(4)} ${'-'.repeat(18)} ${'-'.repeat(40)} ${'-'.repeat(30)}`);
|
|
124
|
+
|
|
125
|
+
THEMES.forEach((t, i) => {
|
|
126
|
+
const num = String(i + 1).padStart(2, ' ');
|
|
127
|
+
console.log(` ${padEnd(num, 4)} ${padEnd(t.id, 18)} ${padEnd(t.style, 40)} ${t.bestFor}`);
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
console.log('');
|
|
131
|
+
console.log(` 🌐 Gallery: ${GALLERY_URL}`);
|
|
132
|
+
console.log('');
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
function cmdGallery() {
|
|
136
|
+
console.log(`🌐 Opening theme gallery: ${GALLERY_URL}`);
|
|
137
|
+
openUrl(GALLERY_URL);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
function cmdHelp() {
|
|
141
|
+
console.log('');
|
|
142
|
+
console.log('🎯 make-slide — AI presentation skill');
|
|
143
|
+
console.log('');
|
|
144
|
+
console.log('Commands:');
|
|
145
|
+
console.log(' npx make-slide init Install skill into current project');
|
|
146
|
+
console.log(' npx make-slide themes Show available themes');
|
|
147
|
+
console.log(' npx make-slide gallery Open theme gallery in browser');
|
|
148
|
+
console.log(' npx make-slide help Show this help');
|
|
149
|
+
console.log('');
|
|
150
|
+
console.log(`Gallery: ${GALLERY_URL}`);
|
|
151
|
+
console.log('GitHub: https://github.com/Kuneosu/make-slide');
|
|
152
|
+
console.log('');
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
// ── Main ──
|
|
156
|
+
|
|
157
|
+
const command = process.argv[2] || 'help';
|
|
158
|
+
|
|
159
|
+
switch (command) {
|
|
160
|
+
case 'init': cmdInit(); break;
|
|
161
|
+
case 'themes': cmdThemes(); break;
|
|
162
|
+
case 'gallery': cmdGallery(); break;
|
|
163
|
+
case 'help':
|
|
164
|
+
case '--help':
|
|
165
|
+
case '-h': cmdHelp(); break;
|
|
166
|
+
default:
|
|
167
|
+
console.error(`Unknown command: ${command}`);
|
|
168
|
+
cmdHelp();
|
|
169
|
+
process.exit(1);
|
|
170
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "make-slide",
|
|
3
|
+
"version": "2.0.0",
|
|
4
|
+
"description": "AI presentation skill — generate single-file HTML slides with 10 themes",
|
|
5
|
+
"bin": {
|
|
6
|
+
"make-slide": "./bin/cli.js"
|
|
7
|
+
},
|
|
8
|
+
"files": [
|
|
9
|
+
"bin/",
|
|
10
|
+
".claude/",
|
|
11
|
+
"README.md",
|
|
12
|
+
"LICENSE"
|
|
13
|
+
],
|
|
14
|
+
"keywords": ["slides", "presentation", "ai", "claude", "skill", "html"],
|
|
15
|
+
"author": "Kuneosu",
|
|
16
|
+
"license": "MIT",
|
|
17
|
+
"repository": {
|
|
18
|
+
"type": "git",
|
|
19
|
+
"url": "https://github.com/Kuneosu/make-slide.git"
|
|
20
|
+
}
|
|
21
|
+
}
|