Install
$ agentstack add skill-jorgempenalva-slides-slides ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Slidev Presentations Skill
Generate branded presentations from natural language. Auto-detects brand colors and fonts from your repo configuration, generates Slidev markdown, and exports to PDF.
Prerequisites
- Node.js >= 18
- If
presentations/does not exist, runbash scripts/init.sh(path relative to this skill's directory) to scaffold the project
Brand Discovery
On every presentation request, resolve brand colors and fonts before generating slides.
Resolution Flow
- Check
presentations/brand.json— if it exists, read and use those colors and fonts. Skip to slide generation. - Search the repo for brand colors in this order:
a. tailwind.config.{js,ts,mjs,cjs} — look in theme.extend.colors or theme.colors for primary/brand keys b. CSS/SCSS files — :root blocks with --brand-*, --color-*, or --primary-* custom properties c. Design token files — tokens.json, design-tokens.json, theme.json d. package.json — theme or brand fields e. Any .claude/skills/*.md files mentioning hex color codes
- Search the repo for brand fonts in this order:
a. tailwind.config.{js,ts,mjs,cjs} — look in theme.extend.fontFamily or theme.fontFamily for sans and mono keys b. CSS/SCSS files — font-family declarations or --font-* custom properties c. Design token files — font family definitions
- If colors/fonts found — generate
presentations/brand.jsonand confirm with the user: "I found these brand colors and fonts in [source]. Should I use them?" - If NOT found — ask the user: "I couldn't find brand colors in your repo. Where should I get them? (company website, design file, specific file, or just give me a hex code)"
- Save the resolved palette and fonts to
presentations/brand.json
brand.json Format
{
"name": "Company Name",
"colors": {
"primary-light": "#e8f4fd",
"primary-medium": "#7fb8e0",
"primary": "#2196f3",
"primary-dark": "#1565c0",
"heading": "#1a237e",
"subheading": "#283593",
"border": "#e0e0e0"
},
"fonts": {
"sans": "Inter",
"mono": "Fira Mono"
}
}
Deriving a Full Palette from a Single Color
When the user provides just one primary hex, derive the full palette by generating light/medium/dark/heading/subheading variants plus a neutral border (#e0e0e0).
Default Fonts
If no fonts are found in the repo, omit the fonts key from brand.json and Slidev will use its theme defaults. When fonts are specified, they are loaded via Google Fonts automatically by Slidev's frontmatter fonts configuration.
Slide Generation Workflow
Step 1 — Gather Content
Ask the user (via AskUserQuestion) if not already clear: title, key content/topics, and optional slide count (default 6–8).
Step 2 — Generate Slidev Markdown
Create the file at presentations/output/.md with:
- Frontmatter — Slidev configuration
- `` block — Brand colors mapped to CSS variables (see Styling Rules)
- Slides — Content formatted using Layout Patterns, separated by
---
Step 3 — Export to PDF
cd presentations && npx slidev export output/.md --output ./output/.pdf
Report the output path to the user when done.
Frontmatter Template
Every generated presentation starts with:
---
theme: default
title: ""
class: text-center
drawings:
persist: false
transition: slide-left
mdc: true
fonts:
sans: ""
mono: ""
---
If brand.json includes a fonts key, populate the fonts block with those values. If no fonts are configured, omit the fonts block entirely and let Slidev use its theme defaults. Slidev loads the specified fonts automatically from Google Fonts.
Styling Rules
Map brand.json colors to the `` block inserted after the frontmatter:
:root {
--brand-primary-light: ;
--brand-primary-medium: ;
--brand-primary: ;
--brand-primary-dark: ;
--brand-heading: ;
--brand-subheading: ;
--brand-border: ;
}
.slidev-layout h1 {
color: var(--brand-heading) !important;
border-bottom: 3px solid var(--brand-primary);
padding-bottom: 0.3rem;
}
.slidev-layout h2 {
color: var(--brand-primary-dark) !important;
}
.slidev-layout h3 {
color: var(--brand-subheading) !important;
}
.slidev-layout table th {
background-color: var(--brand-heading) !important;
color: white !important;
padding: 0.5rem 0.75rem;
}
.slidev-layout table td {
padding: 0.4rem 0.75rem;
border-bottom: 1px solid var(--brand-border);
}
.slidev-layout table tr:nth-child(even) {
background-color: var(--brand-primary-light);
}
.slidev-layout blockquote {
border-left: 4px solid var(--brand-primary);
background-color: var(--brand-primary-light);
padding: 0.5rem 1rem;
border-radius: 0 0.25rem 0.25rem 0;
}
.slidev-layout strong {
color: var(--brand-heading);
}
Layout Patterns
Use these 5 patterns when composing slides. Mix them based on content type.
Title Slide
# Presentation Title
## Subtitle or context
Date or tagline
Bullet List
# Slide Title
- Point one with **emphasis**
- Point two with supporting detail
- Point three
Two-Column Layout
# Slide Title
### Left Column
- Content here
### Right Column
- Content here
Table
# Slide Title
| Column A | Column B | Column C |
|----------|----------|----------|
| Data 1 | Data 2 | Data 3 |
| Data 4 | Data 5 | Data 6 |
Blockquote / Highlight
# Slide Title
> Key insight or quote that deserves emphasis.
> Can span multiple lines.
Supporting context below the quote.
Export Instructions
Standard Export
cd presentations && npx slidev export output/.md --output ./output/.pdf
Output Files
- Markdown source:
presentations/output/.md - PDF export:
presentations/output/.pdf
Example Usage
Simple topic: > "Create a presentation about our engineering team's 2024 accomplishments"
Structured content: > "Make slides for the board meeting covering: revenue growth, customer acquisition, product roadmap, and hiring plan"
With specifics: > "Generate a deck on microservices migration — 8 slides, cover current architecture, target state, timeline, risks, and team allocation"
Notes
- Brand discovery runs only once per project (persisted in
brand.json) - Subsequent requests reuse existing
brand.jsonwithout re-prompting - If the user wants to change brand colors, delete
presentations/brand.jsonand request a new presentation - The
presentations/directory is project-local (not committed to this skill's repo) - This skill does NOT include any fixed templates — all content is generated dynamically from user input
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: jorgempenalva
- Source: jorgempenalva/slides
- License: Apache-2.0
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.