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.
@@ -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
+ [![Live Gallery](https://img.shields.io/badge/🎨_Theme_Gallery-Live_Demo-blue?style=for-the-badge)](https://make-slide.vercel.app)
7
+ [![License: MIT](https://img.shields.io/badge/License-MIT-green?style=for-the-badge)](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://img.shields.io/badge/🎨_테마_갤러리-라이브_데모-blue?style=for-the-badge)](https://make-slide.vercel.app)
180
+ [![License: MIT](https://img.shields.io/badge/License-MIT-green?style=for-the-badge)](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
+ }