skills/vibe-deck/SKILL.md
Vibe Deck — vibe-code professional slide presentations — describe what you want, AI builds it. Scaffolds a React + ECharts project, creates slides with charts, animations, theming, and PDF export. Use PROACTIVELY when the user mentions slides, deck, presentation, PPT, PPTX, slideshow, keynote, pitch deck, quarterly review, board meeting, investor update, sales deck, training deck, onboarding slides, report presentation, add a slide, build a deck, create slides, make a roadmap slide, put this data into a presentation, turn this Excel into slides, visualize this data as a deck. Also trigger when the user wants to modify, reorder, or delete slides in an existing slide-kit project. Also trigger when the user wants to share, export, or package the deck as a single HTML file for email or offline viewing. Chinese triggers: 做PPT, 做个deck, 写pptx, 创建演示, 制作幻灯片, 做幻灯片, 加一页, 新增slide, 做演示文稿, 工作汇报, 述职报告, 季度回顾, 方案展示, 写个汇报, 改一下这页, 调整幻灯片顺序, 删掉这页, 把数据做成图表展示, 帮我做个路线图, 导出单个HTML, 分享给别人看.
npx skillsauth add aiden0z/skills vibe-deckInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Before anything else, verify that Node.js and npm are available. Try these commands (use whichever works on the current platform):
node --version # or: where.exe node (Windows)
npm --version # or: where.exe npm (Windows)
uname -s and uname -m (or systeminfo on Windows) to detect the user's OS and architecture.中文: VibeDeck 需要 Node.js 20 或更高版本。请访问 https://nodejs.org 下载并安装适合你操作系统的版本,安装完成后重新运行。
English: VibeDeck requires Node.js 20 or later. Please visit https://nodejs.org to download and install the version for your OS, then try again.
Check if slide-kit.config.js exists in the current directory.
Only ask for the project title (required). Show defaults for everything else:
I'll set up the project with these defaults unless you want changes:
- Directory:
./<title-slug>/- Theme:
corporate-blue(also available:minimal)- Logo: built-in SlideKit logo
- Presenter: none (can set later in config)
- Password: none
Let me know if you want to change any of these, or I'll proceed.
See theme-presets.md for theme details.
cp -r <this-skill-dir>/template/ <target-dir>
cd <target-dir>
git init
No network required — the template is bundled in this skill.
slide-kit.config.js: set title, theme, logo, presenter as needed
overrides.colors.primary — variants auto-derivedpublic/, reference as /filename.svgindex.html: set <title>src/App.jsx: remove PasswordGate if no passwordRead instruction-template.md, replace placeholders, write to both CLAUDE.md and AGENTS.md.
npm install
npm run dev
Report: project location, theme, dev server URL.
Read these three files first — skipping this step leads to duplicated content, wrong theme colors, or missed conventions:
CLAUDE.md (or AGENTS.md) — theme, conventions, data sourcessrc/App.jsx — current slide list and ordering (what already exists)slide-kit.config.js — active theme and presenter infoDon't guess the layout — derive it systematically. Read layout-engine.md and follow this sequence:
Available layouts — see layout-templates.md for code:
| Layout | Best for | |--------|----------| | FullChart | Single large chart + KeyMessage | | SplitView | Side-by-side comparison | | MetricGrid | Dashboard with N metric cards | | ComparisonView | Before/after, similar-depth comparison | | DataTable | Tool comparison, feature matrix, pricing | | TimelineFlow | Roadmap, milestones, phased plans | | CardGrid | 4–6 feature items with icon + text | | CardRow | 2–4 items in a single row | | ConceptSlide | Explanation / text-heavy, no data | | Composite | Mixed content — see layout-engine.md Phase 4 |
Built-in slide templates (import from src/slides/):
| Template | Use case |
|----------|----------|
| SlideCover | Cover page (reads config.title automatically) |
| SlideDivider | Chapter divider/transition |
| SlideAgenda | Table of contents |
| SlideThankYou | Closing/Q&A page |
SlideLayout for all content slides — it enforces Title → KeyMessage → Content order. See layout-templates.mdimport { colors } from '../theme'import SlideXxx from './slides/SlideXxx'
// In <Deck>:
<Slide title="Page Title"><SlideXxx /></Slide>
Before moving on, verify:
import added at top of App.jsx<Slide title="..."> — title is set (powers navigator, do NOT omit)<Deck> (narrative order)footnote prop set if slide uses external dataEvery time new slides are added, re-read the full <Deck> in App.jsx and verify the overall narrative:
After building each slide, visually verify the layout or use the layout checklist:
justify-center or justify-between, not justify-starth-full to fill their cellshrink-0), body in flex-1 justify-center — see content-rules.md > Card Layout Alignment for the pattern and common mistakesmt-2 or mt-3 between sections, not mt-autopy-2.5 → gap-4). See content-rules.md > Card Spacinglucide-react icons, not emoji characters. Store as component refs in data arrays (icon: Mail), render as <item.icon size={14} />scripts/extract-xlsx.js to inspect Excel structuresrc/data/<name>.jsWhen the user asks to change, reorder, or remove slides in an existing deck:
Same as Building Slides — read CLAUDE.md, App.jsx, and slide-kit.config.js before touching anything.
src/slides/SlideRevenue.jsx)src/data/ files and verify totals still match<Slide> entries in App.jsx — this is the only file that controls order<Slide> entry from App.jsxIf the user wants to change a slide from one layout to another (e.g., FullChart → SplitView):
After every edit, reorder, or removal, do ALL of the following before reporting completion:
Import cleanup — scan App.jsx line by line:
import at the top of App.jsx is actually used in the JSX below. Remove any that aren't (including leftover config, component, or data imports from removed slides)Storyline review — re-read the full <Deck> in App.jsx and verify:
Report the final slide order with titles to the user so they can confirm.
When the user wants to share the deck as a single portable HTML file (for email, IM, or offline viewing):
npm run build:single
This produces dist-single/index.html — a self-contained file with all JS, CSS, and SVG inlined. No server needed; just open in any browser.
How it works: vite.single.config.js uses vite-plugin-singlefile to inline all assets. The logo SVG is imported as a module (not a /public reference) so it gets bundled too.
When to suggest this: If the user says "share", "send to someone", "email the deck", "make it portable", "single file", "offline", or "不需要服务器".
Limitations:
public/ (e.g., config.logo = '/my-logo.png') are automatically inlined as data URIs by the build plugin — no extra steps neededCLAUDE.md and AGENTS.mdslide-kit.config.js is the single source of truth for runtime configsrc/slides/Slide<PascalCaseName>.jsxsrc/data/<kebab-case-name>.jstesting
Use when asked to review a skill's quality, test whether a skill works correctly, find why a skill behaves inconsistently or fails to trigger, check if a skill is ready to publish, harden a skill against known failure modes, or turn an observed failure into a repeatable test case.
development
Use when asked to find Bugs, audit or review a repository, scan code for security/reliability/architecture risks, inspect a folder of many repos, produce evidence-backed Bug reports, continue a prior audit, or compare/triage candidate findings.
development
Generate Outlook-compatible email templates (EML + HTML) through conversation. Three modes: Design (create from scratch), Import (replicate an existing .eml), Production (fill Excel data into a crystallized template). Use when user wants to: create or design an email template, generate an .eml file, make a newsletter, format an email for Outlook, import/replicate an email (导入/复刻邮件), design a 邮件模板, do 邮件排版 or 邮件设计, build pixel-perfect HTML email with Outlook compatibility. Triggers: weekly report email (周报邮件), product update email, event invitation (活动邀请邮件), announcement (公告邮件), company newsletter, .eml import, replicate email template, or make an email look professional/beautiful for Outlook. Handles visual design, EML generation, and EML import — not SMTP, sending, or account management. Without this skill, Outlook emails break because Outlook uses Word rendering which ignores modern CSS.
development
Maintainer-only workflow for handling GitHub Secret Scanning alerts on OpenClaw. Use when Codex needs to triage, redact, clean up, and resolve secret leakage found in issue comments, issue bodies, PR comments, or other GitHub content.