lazyslides 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +207 -0
- package/_includes/slides/_nested-list.njk +26 -0
- package/_includes/slides/agenda.njk +17 -0
- package/_includes/slides/center.njk +16 -0
- package/_includes/slides/code.njk +15 -0
- package/_includes/slides/columns.njk +35 -0
- package/_includes/slides/comparison.njk +29 -0
- package/_includes/slides/content.njk +22 -0
- package/_includes/slides/footer.njk +58 -0
- package/_includes/slides/funnel.njk +30 -0
- package/_includes/slides/hero.njk +27 -0
- package/_includes/slides/image-overlay.njk +21 -0
- package/_includes/slides/metrics.njk +27 -0
- package/_includes/slides/quote.njk +17 -0
- package/_includes/slides/section.njk +6 -0
- package/_includes/slides/split-wide.njk +30 -0
- package/_includes/slides/split.njk +30 -0
- package/_includes/slides/table.njk +31 -0
- package/_includes/slides/timeline.njk +30 -0
- package/_includes/slides/title.njk +17 -0
- package/_layouts/default.njk +20 -0
- package/_layouts/presentation.njk +240 -0
- package/assets/css/themes/default.css +62 -0
- package/assets/css/vendor/glightbox.min.css +1 -0
- package/assets/js/vendor/glightbox.min.js +1 -0
- package/assets/reveal.js/LICENSE +19 -0
- package/assets/reveal.js/dist/reset.css +30 -0
- package/assets/reveal.js/dist/reveal.css +8 -0
- package/assets/reveal.js/dist/reveal.esm.js +9 -0
- package/assets/reveal.js/dist/reveal.esm.js.map +1 -0
- package/assets/reveal.js/dist/reveal.js +9 -0
- package/assets/reveal.js/dist/reveal.js.map +1 -0
- package/assets/reveal.js/dist/theme/beige.css +366 -0
- package/assets/reveal.js/dist/theme/black-contrast.css +362 -0
- package/assets/reveal.js/dist/theme/black.css +359 -0
- package/assets/reveal.js/dist/theme/blood.css +392 -0
- package/assets/reveal.js/dist/theme/dracula.css +385 -0
- package/assets/reveal.js/dist/theme/fonts/league-gothic/LICENSE +2 -0
- package/assets/reveal.js/dist/theme/fonts/league-gothic/league-gothic.css +10 -0
- package/assets/reveal.js/dist/theme/fonts/league-gothic/league-gothic.eot +0 -0
- package/assets/reveal.js/dist/theme/fonts/league-gothic/league-gothic.ttf +0 -0
- package/assets/reveal.js/dist/theme/fonts/league-gothic/league-gothic.woff +0 -0
- package/assets/reveal.js/dist/theme/fonts/source-sans-pro/LICENSE +45 -0
- package/assets/reveal.js/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.eot +0 -0
- package/assets/reveal.js/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.ttf +0 -0
- package/assets/reveal.js/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.woff +0 -0
- package/assets/reveal.js/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.eot +0 -0
- package/assets/reveal.js/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.ttf +0 -0
- package/assets/reveal.js/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.woff +0 -0
- package/assets/reveal.js/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.eot +0 -0
- package/assets/reveal.js/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.ttf +0 -0
- package/assets/reveal.js/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.woff +0 -0
- package/assets/reveal.js/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.eot +0 -0
- package/assets/reveal.js/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.ttf +0 -0
- package/assets/reveal.js/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.woff +0 -0
- package/assets/reveal.js/dist/theme/fonts/source-sans-pro/source-sans-pro.css +39 -0
- package/assets/reveal.js/dist/theme/league.css +368 -0
- package/assets/reveal.js/dist/theme/moon.css +362 -0
- package/assets/reveal.js/dist/theme/night.css +360 -0
- package/assets/reveal.js/dist/theme/serif.css +363 -0
- package/assets/reveal.js/dist/theme/simple.css +362 -0
- package/assets/reveal.js/dist/theme/sky.css +370 -0
- package/assets/reveal.js/dist/theme/solarized.css +363 -0
- package/assets/reveal.js/dist/theme/white-contrast.css +362 -0
- package/assets/reveal.js/dist/theme/white.css +359 -0
- package/assets/reveal.js/dist/theme/white_contrast_compact_verbatim_headers.css +360 -0
- package/assets/reveal.js/plugin/highlight/highlight.esm.js +5 -0
- package/assets/reveal.js/plugin/highlight/highlight.js +5 -0
- package/assets/reveal.js/plugin/highlight/monokai.css +71 -0
- package/assets/reveal.js/plugin/highlight/plugin.js +439 -0
- package/assets/reveal.js/plugin/highlight/zenburn.css +80 -0
- package/assets/reveal.js/plugin/markdown/markdown.esm.js +7 -0
- package/assets/reveal.js/plugin/markdown/markdown.js +7 -0
- package/assets/reveal.js/plugin/markdown/plugin.js +491 -0
- package/assets/reveal.js/plugin/notes/notes.esm.js +1 -0
- package/assets/reveal.js/plugin/notes/notes.js +1 -0
- package/assets/reveal.js/plugin/notes/plugin.js +267 -0
- package/assets/reveal.js/plugin/notes/speaker-view.html +898 -0
- package/cli.js +80 -0
- package/data/site.json +3 -0
- package/index.js +153 -0
- package/lib/export-pdf.js +137 -0
- package/lib/init.js +154 -0
- package/lib/renumber.js +181 -0
- package/lib/validate.js +196 -0
- package/package.json +76 -0
- package/scaffold/CLAUDE.md +283 -0
- package/scaffold/README.md +29 -0
- package/scaffold/_template/index.md +78 -0
- package/scaffold/_template/outline.md +32 -0
- package/scaffold/claude-commands/add-slide.md +61 -0
- package/scaffold/claude-commands/create-outline.md +75 -0
- package/scaffold/claude-commands/new-presentation.md +218 -0
- package/scaffold/claude-commands/refine-slides.md +62 -0
- package/scaffold/claude-commands/research-topic.md +66 -0
- package/scaffold/claude-commands/validate.md +47 -0
- package/scaffold/claude-settings.json +7 -0
- package/scaffold/eleventy.config.js +11 -0
- package/scaffold/gitignore +5 -0
- package/scaffold/my-first-deck/index.md +26 -0
- package/scaffold/nvmrc +1 -0
- package/scaffold/package.json.tmpl +25 -0
- package/scaffold/presentations.11tydata.js +11 -0
- package/scaffold/styles.css +3 -0
- package/src/styles.css +2077 -0
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
# Create New Presentation
|
|
2
|
+
|
|
3
|
+
You are helping the user create a new presentation in this Eleventy + Reveal.js presentation system.
|
|
4
|
+
|
|
5
|
+
## Step 1: Gather Basic Information
|
|
6
|
+
|
|
7
|
+
Ask the user for:
|
|
8
|
+
1. **Presentation name** (required) - will be used for folder name (kebab-case)
|
|
9
|
+
2. **Presentation date** (optional) - format: MMYYYY (e.g., 032026 for March 2026)
|
|
10
|
+
|
|
11
|
+
Create the folder at `presentations/{name}-{date}/` or `presentations/{name}/` if no date provided.
|
|
12
|
+
|
|
13
|
+
## Step 2: Check for Outline
|
|
14
|
+
|
|
15
|
+
Ask the user if they have an `outline.md` file to supply.
|
|
16
|
+
|
|
17
|
+
### If NO outline exists:
|
|
18
|
+
|
|
19
|
+
Help them create one by gathering:
|
|
20
|
+
|
|
21
|
+
1. **Audience** - Who will be watching this presentation?
|
|
22
|
+
2. **Purpose** - What's the goal? (inform, persuade, teach, pitch, etc.)
|
|
23
|
+
3. **Speaker background** - What gives the speaker credibility on this topic?
|
|
24
|
+
4. **Key points** - What are the 3-5 main messages they want to convey?
|
|
25
|
+
5. **Desired structure** - Do they have a mental model? (problem/solution, journey, comparison, etc.)
|
|
26
|
+
6. **Time constraint** - How long is the presentation? (affects slide count)
|
|
27
|
+
|
|
28
|
+
Use this information to draft an `outline.md` in the presentation folder with this structure:
|
|
29
|
+
|
|
30
|
+
```markdown
|
|
31
|
+
# [Presentation Title]
|
|
32
|
+
|
|
33
|
+
## Metadata
|
|
34
|
+
- **Audience:** [description]
|
|
35
|
+
- **Purpose:** [goal]
|
|
36
|
+
- **Speaker:** [name and background]
|
|
37
|
+
- **Duration:** [estimated time]
|
|
38
|
+
|
|
39
|
+
## Key Messages
|
|
40
|
+
1. [message 1]
|
|
41
|
+
2. [message 2]
|
|
42
|
+
3. [message 3]
|
|
43
|
+
|
|
44
|
+
## Outline
|
|
45
|
+
|
|
46
|
+
### Section 1: [Section Name]
|
|
47
|
+
Purpose: [why this section exists]
|
|
48
|
+
|
|
49
|
+
#### Slide 1.1: [Slide Title]
|
|
50
|
+
- **Key point:** [main takeaway]
|
|
51
|
+
- **Notes:** [what to say]
|
|
52
|
+
- **Visual idea:** [optional visualization concept]
|
|
53
|
+
|
|
54
|
+
#### Slide 1.2: [Slide Title]
|
|
55
|
+
...
|
|
56
|
+
|
|
57
|
+
### Section 2: [Section Name]
|
|
58
|
+
...
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### If outline IS supplied:
|
|
62
|
+
|
|
63
|
+
Review it and confirm:
|
|
64
|
+
- Does it have clear sections?
|
|
65
|
+
- Does each slide have a key point?
|
|
66
|
+
- Is there enough detail to select templates?
|
|
67
|
+
|
|
68
|
+
If not, iterate with the user to fill in gaps.
|
|
69
|
+
|
|
70
|
+
## Step 3: Map Slides to Templates
|
|
71
|
+
|
|
72
|
+
Review each slide in the outline and propose a template. The available templates are in `_includes/slides/`:
|
|
73
|
+
|
|
74
|
+
| Template | Best For |
|
|
75
|
+
|----------|----------|
|
|
76
|
+
| `title` | Opening slide with logo, title, subtitle, author |
|
|
77
|
+
| `section` | Section dividers within the presentation |
|
|
78
|
+
| `agenda` | Table of contents with clickable section links |
|
|
79
|
+
| `content` | Standard bullet points with optional lead text |
|
|
80
|
+
| `center` | Single impactful statement, centered |
|
|
81
|
+
| `hero` | Full-bleed background image with big text |
|
|
82
|
+
| `metrics` | 2-4 key statistics with colored cards |
|
|
83
|
+
| `comparison` | Before/after or two-column comparison table |
|
|
84
|
+
| `columns` | Side-by-side content columns |
|
|
85
|
+
| `split` | 1/3 image + 2/3 content layout |
|
|
86
|
+
| `split-wide` | 1/3 content + 2/3 image layout |
|
|
87
|
+
| `quote` | Testimonial or quotation with attribution |
|
|
88
|
+
| `timeline` | Horizontal timeline with events |
|
|
89
|
+
| `funnel` | Sales/conversion funnel visualization |
|
|
90
|
+
| `table` | Data table with headers |
|
|
91
|
+
| `code` | Code snippet with syntax highlighting |
|
|
92
|
+
| `image-overlay` | Image with text overlay |
|
|
93
|
+
|
|
94
|
+
Read each template file's docblock comment for exact YAML structure and options.
|
|
95
|
+
|
|
96
|
+
Present your template recommendations to the user in a table:
|
|
97
|
+
|
|
98
|
+
```
|
|
99
|
+
| Slide | Title | Proposed Template | Rationale |
|
|
100
|
+
|-------|-------|-------------------|-----------|
|
|
101
|
+
| 1.1 | ... | title | Opening |
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
Iterate until the user approves. Then update `outline.md` with a `template:` field for each slide.
|
|
105
|
+
|
|
106
|
+
## Step 4: Research & Enrichment (Optional)
|
|
107
|
+
|
|
108
|
+
If the user wants, help enrich the outline with:
|
|
109
|
+
- Statistics and citations
|
|
110
|
+
- Industry data
|
|
111
|
+
- Competitor analysis
|
|
112
|
+
- Supporting examples
|
|
113
|
+
|
|
114
|
+
Add references to the outline as you find them.
|
|
115
|
+
|
|
116
|
+
## Step 5: Create index.md
|
|
117
|
+
|
|
118
|
+
Once the outline is finalized, create `presentations/{folder}/index.md` with the full YAML frontmatter.
|
|
119
|
+
|
|
120
|
+
### Required frontmatter structure:
|
|
121
|
+
|
|
122
|
+
```yaml
|
|
123
|
+
---
|
|
124
|
+
title: [Presentation Title]
|
|
125
|
+
description: [Subtitle or tagline]
|
|
126
|
+
author: [Speaker Name]
|
|
127
|
+
theme: default
|
|
128
|
+
transition: slide
|
|
129
|
+
progress: true
|
|
130
|
+
slideNumber: true
|
|
131
|
+
show_footer: true
|
|
132
|
+
slides:
|
|
133
|
+
# Slide 1: [Title]
|
|
134
|
+
- template: [template_name]
|
|
135
|
+
title: [slide title]
|
|
136
|
+
# ... template-specific fields from docblock
|
|
137
|
+
notes: |
|
|
138
|
+
[speaker notes from outline]
|
|
139
|
+
---
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
Note: Do NOT include `layout: presentation` — this is set automatically by the directory data file.
|
|
143
|
+
|
|
144
|
+
### For each slide:
|
|
145
|
+
|
|
146
|
+
1. Read the template docblock in `_includes/slides/{template}.njk`
|
|
147
|
+
2. Map outline content to the template's required/optional fields
|
|
148
|
+
3. Add speaker notes from the outline
|
|
149
|
+
4. Add references if provided
|
|
150
|
+
|
|
151
|
+
### Image handling:
|
|
152
|
+
|
|
153
|
+
- Create an `images/` folder in the presentation directory
|
|
154
|
+
- If visuals are specified in outline, note them in the YAML
|
|
155
|
+
- If NO visuals are specified but the template needs an image (hero, split), create a placeholder:
|
|
156
|
+
- Create placeholder file: `images/placeholder-{slide-number}.jpg`
|
|
157
|
+
- Add a comment in the YAML: `# TODO: Replace placeholder image`
|
|
158
|
+
- Note in the slide's notes what kind of image would work
|
|
159
|
+
|
|
160
|
+
## Step 6: Validate
|
|
161
|
+
|
|
162
|
+
After creating `index.md`, run the validation:
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
pnpm run validate
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
Fix any errors before finishing.
|
|
169
|
+
|
|
170
|
+
## Step 7: Preview
|
|
171
|
+
|
|
172
|
+
Suggest the user run:
|
|
173
|
+
|
|
174
|
+
```bash
|
|
175
|
+
pnpm run dev
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
Then navigate to the presentation URL to preview.
|
|
179
|
+
|
|
180
|
+
---
|
|
181
|
+
|
|
182
|
+
## Template Quick Reference
|
|
183
|
+
|
|
184
|
+
When creating slides, always read the full docblock in the template file. Here are the key patterns:
|
|
185
|
+
|
|
186
|
+
### Nested lists (content, split, split-wide templates):
|
|
187
|
+
```yaml
|
|
188
|
+
items:
|
|
189
|
+
- "Regular item"
|
|
190
|
+
- "Parent with children:":
|
|
191
|
+
- "Child 1"
|
|
192
|
+
- "Child 2"
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
### References:
|
|
196
|
+
```yaml
|
|
197
|
+
reference: "Source Name 2025"
|
|
198
|
+
reference_link: "https://..."
|
|
199
|
+
# OR for multiple:
|
|
200
|
+
references:
|
|
201
|
+
- name: "Source 1"
|
|
202
|
+
link: "https://..."
|
|
203
|
+
- name: "Source 2"
|
|
204
|
+
link: "https://..."
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
### Metrics colors:
|
|
208
|
+
`mint`, `coral`, `icy`, `amber` (or omit for default mauve)
|
|
209
|
+
|
|
210
|
+
### Comparison highlight:
|
|
211
|
+
`highlight: left` | `highlight: right` (default) | `highlight: none`
|
|
212
|
+
|
|
213
|
+
### Hero backgrounds:
|
|
214
|
+
```yaml
|
|
215
|
+
image: images/background.jpg
|
|
216
|
+
# OR
|
|
217
|
+
color: "#1a1a2e"
|
|
218
|
+
```
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# Refine Slides
|
|
2
|
+
|
|
3
|
+
You are helping the user improve an existing presentation.
|
|
4
|
+
|
|
5
|
+
## Step 1: Load and Validate
|
|
6
|
+
|
|
7
|
+
1. Ask which presentation to refine (list `presentations/` folders)
|
|
8
|
+
2. Read the presentation's `index.md`
|
|
9
|
+
3. Run validation first:
|
|
10
|
+
```bash
|
|
11
|
+
pnpm run validate
|
|
12
|
+
```
|
|
13
|
+
4. Fix any errors before proceeding
|
|
14
|
+
|
|
15
|
+
## Step 2: Structural Analysis
|
|
16
|
+
|
|
17
|
+
Analyze and report:
|
|
18
|
+
- **Slide count** — is it appropriate for the estimated duration?
|
|
19
|
+
- **Template diversity** — are templates varied or repetitive? (e.g., 10 `content` slides in a row)
|
|
20
|
+
- **Visual rhythm** — is there a good mix of text-heavy and visual slides?
|
|
21
|
+
- **Section structure** — are `section` dividers used to organize the flow?
|
|
22
|
+
- **Notes coverage** — which slides are missing speaker notes?
|
|
23
|
+
|
|
24
|
+
## Step 3: Content Review
|
|
25
|
+
|
|
26
|
+
Check each slide for:
|
|
27
|
+
- **Title quality** — clear, concise, action-oriented?
|
|
28
|
+
- **Bullet density** — too many items per slide? (aim for 3-5)
|
|
29
|
+
- **Nested list depth** — more than 2 levels deep is hard to read
|
|
30
|
+
- **Quote length** — quotes should be impactful, not paragraphs
|
|
31
|
+
- **Image paths** — do all referenced images exist?
|
|
32
|
+
- **References** — are sources properly attributed?
|
|
33
|
+
|
|
34
|
+
## Step 4: Prioritized Suggestions
|
|
35
|
+
|
|
36
|
+
Present findings as a prioritized list:
|
|
37
|
+
|
|
38
|
+
### High Priority
|
|
39
|
+
- Issues that affect readability or correctness
|
|
40
|
+
|
|
41
|
+
### Medium Priority
|
|
42
|
+
- Template swaps that would improve visual variety
|
|
43
|
+
- Slides that could be split or merged
|
|
44
|
+
|
|
45
|
+
### Low Priority
|
|
46
|
+
- Minor wording improvements
|
|
47
|
+
- Optional enhancements (add speaker notes, add references)
|
|
48
|
+
|
|
49
|
+
## Step 5: Apply Changes
|
|
50
|
+
|
|
51
|
+
After the user approves specific suggestions:
|
|
52
|
+
1. Apply the changes to `index.md`
|
|
53
|
+
2. Run `pnpm run renumber` to update slide comments
|
|
54
|
+
3. Run `pnpm run validate` to verify
|
|
55
|
+
|
|
56
|
+
## Step 6: Summary
|
|
57
|
+
|
|
58
|
+
Show a before/after comparison:
|
|
59
|
+
- Slide count (before → after)
|
|
60
|
+
- Template distribution
|
|
61
|
+
- Issues resolved
|
|
62
|
+
- Remaining suggestions (if any)
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Research Topic
|
|
2
|
+
|
|
3
|
+
You are helping the user research a topic to build a data-driven presentation.
|
|
4
|
+
|
|
5
|
+
## Step 1: Gather Research Parameters
|
|
6
|
+
|
|
7
|
+
Ask the user for:
|
|
8
|
+
1. **Topic** — what is the presentation about?
|
|
9
|
+
2. **Angle** — what perspective or thesis? (e.g., "why companies should adopt X")
|
|
10
|
+
3. **Audience** — who will watch this? (affects depth and jargon level)
|
|
11
|
+
4. **Depth** — quick overview (5-10 data points) or deep dive (20+)?
|
|
12
|
+
|
|
13
|
+
## Step 2: Research
|
|
14
|
+
|
|
15
|
+
Search the web for:
|
|
16
|
+
- **Statistics** — recent numbers, percentages, growth rates
|
|
17
|
+
- **Quotes** — expert opinions, notable statements
|
|
18
|
+
- **Comparisons** — before/after, competitor analysis, benchmarks
|
|
19
|
+
- **Timelines** — key events, milestones, evolution
|
|
20
|
+
- **Case studies** — real-world examples with outcomes
|
|
21
|
+
|
|
22
|
+
Prioritize recent sources (last 2 years). Always capture the source name, URL, and date.
|
|
23
|
+
|
|
24
|
+
## Step 3: Organize Findings
|
|
25
|
+
|
|
26
|
+
Structure findings into categories:
|
|
27
|
+
|
|
28
|
+
```markdown
|
|
29
|
+
## Key Statistics
|
|
30
|
+
- [stat] — Source (Year)
|
|
31
|
+
|
|
32
|
+
## Notable Quotes
|
|
33
|
+
- "[quote]" — Author, Title (Source)
|
|
34
|
+
|
|
35
|
+
## Comparisons
|
|
36
|
+
- [comparison point] — Source
|
|
37
|
+
|
|
38
|
+
## Timeline / Milestones
|
|
39
|
+
- [date]: [event] — Source
|
|
40
|
+
|
|
41
|
+
## Case Studies
|
|
42
|
+
- [company/example]: [outcome] — Source
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Step 4: Save Research
|
|
46
|
+
|
|
47
|
+
Save the organized findings as `research.md` in the target presentation folder:
|
|
48
|
+
`presentations/{name}/research.md`
|
|
49
|
+
|
|
50
|
+
## Step 5: Suggest Template Mapping
|
|
51
|
+
|
|
52
|
+
For each finding, suggest which LazySlides template would best present it:
|
|
53
|
+
|
|
54
|
+
| Finding | Suggested Template | Rationale |
|
|
55
|
+
|---------|-------------------|-----------|
|
|
56
|
+
| Key statistic | `metrics` | Numeric data with colored cards |
|
|
57
|
+
| Quote | `quote` | Attribution and styling |
|
|
58
|
+
| Comparison | `comparison` | Side-by-side table |
|
|
59
|
+
| Timeline | `timeline` | Chronological events |
|
|
60
|
+
| Case study | `split` or `content` | Narrative with supporting image |
|
|
61
|
+
|
|
62
|
+
## Step 6: Next Steps
|
|
63
|
+
|
|
64
|
+
Offer the user:
|
|
65
|
+
- `/create-outline` to structure a full presentation from this research
|
|
66
|
+
- `/add-slide` to add individual data points to an existing deck
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Validate Presentations
|
|
2
|
+
|
|
3
|
+
You are helping the user validate their presentation YAML and fix any issues.
|
|
4
|
+
|
|
5
|
+
## Step 1: Run Validation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
pnpm run validate
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Step 2: Interpret Results
|
|
12
|
+
|
|
13
|
+
Review the output and categorize issues:
|
|
14
|
+
|
|
15
|
+
### Errors (must fix)
|
|
16
|
+
- **No valid YAML front matter** — missing `---` fences or malformed YAML
|
|
17
|
+
- **Missing required field** — `title` or `slides` missing from frontmatter
|
|
18
|
+
- **Missing template field** — a slide is missing the `template:` key
|
|
19
|
+
- **Wrong comparison format** — comparison slides must use `rows:` with `left`/`right` pairs
|
|
20
|
+
|
|
21
|
+
### Warnings (should fix)
|
|
22
|
+
- **Unknown template** — template name doesn't match one of the 17 valid types
|
|
23
|
+
- **Missing title** — slide has no title (except `quote` which doesn't need one)
|
|
24
|
+
- **Missing image** — image path in YAML doesn't exist on disk
|
|
25
|
+
- **Hidden slide** — possible slide definition commented out
|
|
26
|
+
- **Slide count mismatch** — `expected_slides` doesn't match actual count
|
|
27
|
+
|
|
28
|
+
## Step 3: Propose Fixes
|
|
29
|
+
|
|
30
|
+
For each error:
|
|
31
|
+
1. Explain what's wrong in plain language
|
|
32
|
+
2. Show the problematic YAML
|
|
33
|
+
3. Propose the corrected YAML
|
|
34
|
+
|
|
35
|
+
For each warning:
|
|
36
|
+
1. Explain the risk
|
|
37
|
+
2. Suggest a fix or explain why it's safe to ignore
|
|
38
|
+
|
|
39
|
+
## Step 4: Apply Fixes
|
|
40
|
+
|
|
41
|
+
After the user approves, apply the fixes and re-run validation:
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
pnpm run validate
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Repeat until all errors are resolved.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import lazyslides from "lazyslides";
|
|
2
|
+
|
|
3
|
+
export default function(eleventyConfig) {
|
|
4
|
+
eleventyConfig.addPlugin(lazyslides);
|
|
5
|
+
|
|
6
|
+
return {
|
|
7
|
+
dir: { input: ".", layouts: "_layouts", output: "_site" },
|
|
8
|
+
templateFormats: ["md", "njk"],
|
|
9
|
+
markdownTemplateEngine: "njk"
|
|
10
|
+
};
|
|
11
|
+
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: My First Deck
|
|
3
|
+
description: A hello world presentation
|
|
4
|
+
transition: slide
|
|
5
|
+
|
|
6
|
+
slides:
|
|
7
|
+
- template: title
|
|
8
|
+
title: My First Deck
|
|
9
|
+
subtitle: Built with LazySlides
|
|
10
|
+
|
|
11
|
+
- template: content
|
|
12
|
+
title: Getting Started
|
|
13
|
+
lead: Edit this file to build your presentation
|
|
14
|
+
items:
|
|
15
|
+
- Each slide is a YAML object with a template field
|
|
16
|
+
- Choose from 17 templates for different slide types
|
|
17
|
+
- Run pnpm run dev to preview with hot reload
|
|
18
|
+
|
|
19
|
+
- template: center
|
|
20
|
+
title: Start Building!
|
|
21
|
+
text: "Edit presentations/my-first-deck/index.md to add your slides."
|
|
22
|
+
|
|
23
|
+
- template: title
|
|
24
|
+
title: Thank You!
|
|
25
|
+
subtitle: Questions?
|
|
26
|
+
---
|
package/scaffold/nvmrc
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
22
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "{{name}}",
|
|
3
|
+
"private": true,
|
|
4
|
+
"type": "module",
|
|
5
|
+
"scripts": {
|
|
6
|
+
"dev": "lazyslides validate && concurrently \"pnpm:watch:*\"",
|
|
7
|
+
"watch:css": "tailwindcss -i src/styles.css -o _site/assets/css/styles.css --watch",
|
|
8
|
+
"watch:11ty": "eleventy --serve",
|
|
9
|
+
"build": "lazyslides validate && pnpm run build:css && pnpm run build:11ty",
|
|
10
|
+
"build:css": "tailwindcss -i src/styles.css -o _site/assets/css/styles.css",
|
|
11
|
+
"build:11ty": "eleventy",
|
|
12
|
+
"validate": "lazyslides validate",
|
|
13
|
+
"renumber": "lazyslides renumber",
|
|
14
|
+
"pdf": "lazyslides pdf"
|
|
15
|
+
},
|
|
16
|
+
"dependencies": {
|
|
17
|
+
"lazyslides": "^2.0.0"
|
|
18
|
+
},
|
|
19
|
+
"devDependencies": {
|
|
20
|
+
"@11ty/eleventy": "^3.0.0",
|
|
21
|
+
"@tailwindcss/cli": "^4.0.0",
|
|
22
|
+
"concurrently": "^9.0.0",
|
|
23
|
+
"tailwindcss": "^4.1.18"
|
|
24
|
+
}
|
|
25
|
+
}
|