slidev-styles
Guide for brand discovery, theme generation, and style validation for Slidev presentations. Use when extracting brand tokens from websites, creating Slidev themes from brand guidelines, validating slide compliance with brand standards, or configuring colors, fonts, and spacing.
What this skill does
# Slidev Styles
Brand discovery, theme generation, and style validation for Slidev presentations.
## When to Use This Skill
Activate when:
- Extracting brand tokens (colors, fonts, spacing) from a website using Playwright MCP
- Creating a Slidev theme from brand guidelines or a style guide URL
- Validating slides for brand compliance or WCAG contrast requirements
- Configuring UnoCSS theme shortcuts and CSS variables for a presentation
- Applying a logo, custom font, or color palette to existing slides
- Working from a manual brand brief when no website is available
## Brand Discovery Pipeline Overview
The full brand discovery workflow has four stages:
1. **Navigate** to the brand site using Playwright MCP tools
2. **Extract** CSS variables and computed styles via `browser_evaluate`
3. **Parse** extracted values into a brand config JSON object
4. **Generate** the Slidev theme from the brand config
For step-by-step Playwright extraction details, see `references/discovery-pipeline.md`.
For theme generation details, see `references/theme-generation.md`.
For validation details, see `references/validation-checklist.md`.
## Playwright MCP Tools
Use these tools during brand extraction:
| Tool | Purpose |
|------|---------|
| `browser_navigate` | Open the brand site URL |
| `browser_evaluate` | Run JavaScript to extract CSS vars and computed styles |
| `browser_take_screenshot` | Capture rendered slides or pages for visual validation |
| `browser_snapshot` | Get accessibility tree snapshot for structural inspection |
| `browser_close` | Close the browser session when extraction is complete |
Always call `browser_close` after extraction to release resources.
## Brand Config JSON Schema
Produce a brand config JSON object after extraction. All fields are optional; populate what is available.
```json
{
"colors": {
"primary": "#hex",
"secondary": "#hex",
"accent": "#hex",
"background": "#hex",
"text": "#hex",
"error": "#hex",
"success": "#hex"
},
"fonts": {
"heading": "Font Name",
"body": "Font Name",
"code": "Monospace Font"
},
"spacing": {
"slide-padding": "value",
"section-gap": "value"
},
"logo": {
"url": "path/to/logo",
"position": "top-left|top-right"
}
}
```
Save the brand config as `brand-config.json` in the project root before proceeding to theme generation.
## Theme Generation Overview
Convert the brand config to a Slidev theme by:
1. Creating `styles/index.css` with CSS custom properties mapped from brand config colors and spacing
2. Configuring UnoCSS theme extensions in `uno.config.ts` (or `vite.config.ts`) with brand colors and font stacks
3. Adding UnoCSS shortcut classes for common slide patterns (headings, callouts, code blocks)
4. Loading fonts via Google Fonts import in `styles/index.css` or placing font files in `public/fonts/`
5. Creating a global `components/Logo.vue` component for logo placement
For complete theme generation with code examples, see `references/theme-generation.md`.
## Validation Overview
After applying a theme, validate compliance by:
1. Taking screenshots of rendered slides with `browser_take_screenshot`
2. Running contrast ratio checks using the WCAG AA formula via `browser_evaluate`
3. Verifying rendered font families match the brand spec
4. Checking all colors against the brand palette within a tolerance of ±5 hex units per channel
5. Confirming logo placement and sizing
WCAG 2.1 AA requirements (per `core:accessibility`):
- Normal text (< 18pt): minimum contrast ratio **4.5:1**
- Large text (≥ 18pt or ≥ 14pt bold): minimum contrast ratio **3:1**
- UI components and graphical objects: minimum contrast ratio **3:1**
For the full validation workflow and automated checks, see `references/validation-checklist.md`.
## Manual Brand Input
When no website is available, gather brand information using this questionnaire:
```
Brand Color Questionnaire
--------------------------
1. Primary brand color (main CTA, headings): ___
2. Secondary brand color (accents, highlights): ___
3. Background color (slides): ___
4. Body text color: ___
5. Accent/success color (callouts): ___
6. Error/warning color: ___
Font Questionnaire
------------------
7. Heading font (name and weight): ___
8. Body text font: ___
9. Code/monospace font: ___
10. Are fonts hosted on Google Fonts, or do you have local files?
Spacing Questionnaire
---------------------
11. Slide padding (distance from edge to content): ___
12. Gap between major sections: ___
Logo Questionnaire
------------------
13. Logo file URL or local path: ___
14. Logo placement: top-left / top-right / none
```
Populate the brand config JSON from questionnaire answers, then proceed to theme generation.
## Integration with core:accessibility
Load `core:accessibility` when:
- Validating contrast ratios for slide text and UI components
- Reviewing color combinations for color-blindness considerations
- Checking that information is not conveyed by color alone
Key WCAG requirements that apply to slide presentations:
- Text on slide backgrounds must meet 4.5:1 contrast ratio (AA)
- Heading text at large sizes must meet 3:1 contrast ratio
- Charts and diagrams must have text labels or patterns, not only color
- Slide transitions and animations must not flash more than 3 times per second
## Slidev Theme File Structure
A self-contained brand theme lives in a `slidev-theme-brand/` directory:
```
slidev-theme-brand/
├── package.json # Theme package with name "slidev-theme-brand"
├── styles/
│ └── index.css # CSS custom properties and base styles
├── uno.config.ts # UnoCSS theme extensions and shortcuts
└── components/
└── Logo.vue # Global logo component for all slides
```
Reference the theme from the presentation frontmatter:
```yaml
---
theme: ./slidev-theme-brand
---
```
## References
- `references/discovery-pipeline.md` — Step-by-step Playwright MCP extraction workflow with JavaScript snippets
- `references/theme-generation.md` — Converting brand config to UnoCSS theme and CSS variables
- `references/validation-checklist.md` — Contrast validation, font verification, and compliance checklist
Related in Ads & Marketing
ads
IncludedMulti-platform paid advertising audit and optimization skill. Analyzes Google, Meta, YouTube, LinkedIn, TikTok, Microsoft, and Apple Ads. 250+ checks with scoring, parallel agents, industry templates, and AI creative generation.
banana
IncludedAI image generation Creative Director powered by Google Gemini Nano Banana models. Use this skill for ANY request involving image creation, editing, visual asset production, or creative direction. Triggers on: generate an image, create a photo, edit this picture, design a logo, make a banner, visual for my anything, and all /banana commands. Handles text-to-image, image editing, multi-turn creative sessions, batch workflows, and brand presets.
rpg-migration-analyzer
IncludedAnalyzes legacy RPG (Report Program Generator) programs from AS/400 and IBM i systems for migration to modern Java applications. Extracts business logic from RPG III/IV/ILE source code, identifies data structures (D-specs), file operations (F-specs), program dependencies (CALLB/CALLP), and converts RPG constructs to Java equivalents. Generates migration reports, complexity estimates, and Java implementation strategies with POJO classes, JPA entities, and service methods. Use when modernizing AS/400 or IBM i legacy systems, analyzing RPG source files (.rpg, .rpgle, .RPGLE), converting RPG to Java, mapping data specifications to Java classes, planning legacy system migration, or when user mentions RPG analysis, Report Program Generator, RPG III/IV/ILE, AS/400 modernization, IBM i migration, packed decimal conversion, or mainframe application rewrite.
brand-library-architect
IncludedBuild a complete brand library for a product — visual asset render pipeline, brand documentation set (BRAND, COPY, MANIFESTO, BIOS, FAQ, GLOSSARY, TONE, PRICING), open-source convention files (README, CONTRIBUTING, SECURITY, CODE_OF_CONDUCT), and a self-contained press kit. This skill should be used when the user asks to "build a brand library / brand kit / press kit / brand assets" for a product, "set up a brand library workflow," "create a positioning manifesto plus visual identity," or any combination of brand documentation + visual asset pipeline. Apply phase-by-phase or run end-to-end. Templates are product-agnostic and use {{TOKEN}} placeholders the skill prompts the user to fill.
writing-tech-post
IncludedAuthors engineering blog posts end-to-end: launch deep-dives, incident postmortems, architecture migrations, performance case studies, tutorials, AI/agent system writeups, security disclosures, and research-to-product translations. Picks the correct archetype, plans the abstraction ladder, enforces an evidence cadence (diagrams, benchmarks, profiles, traces, code, ablations), tunes voice against publisher house styles (Datadog, Vercel, GitHub, AWS, Meta, Cloudflare, Jane Street), and runs a pre-publish gate for narrative momentum and disclosure ethics. Use when drafting a new engineering post, restructuring a draft that feels flat, deciding which evidence form belongs where, validating that depth and product context are balanced, or preparing a postmortem, migration, or performance narrative for external publication. Do not use for API reference documentation, README authoring, marketing copy, release notes, generic SEO content, ghost-written executive thought leadership, or non-engineering long-form essays.
blog-google
IncludedGoogle API integration for blog performance: PageSpeed Insights, CrUX Core Web Vitals with 25-week history, Search Console performance, URL Inspection, Indexing API, GA4 organic traffic, NLP entity analysis for E-E-A-T, YouTube video search for embedding, and Google Ads Keyword Planner. Progressive feature availability based on credential tier (API key, OAuth/service account, GA4, Ads). Shares config with claude-seo at ~/.config/claude-seo/google-api.json. Use when user says "google data", "page speed", "core web vitals", "search console", "indexation", "GA4", "keyword research", "nlp entities", "blog performance", "youtube search", "google api setup".