Open Kimi Ppt
jinwyp/open-ppt-skill
Create, edit, replicate, read, and export presentations. An agent skill from jinwyp/open-ppt-skill.
Create beautiful, professional HTML or React slide decks ready for fullscreen presentation.
$ npx skills add unclecatvn/agent-skills --skill ai-vibe-slides -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install unclecatvn/agent-skills ai-vibe-slides --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/unclecatvn/agent-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/slide .claude/skills/ai-vibe-slides && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "ai-vibe-slides" agent skill from https://github.com/unclecatvn/agent-skills/tree/main/skills/slide into .claude/skills/ai-vibe-slides/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ai-vibe-slides", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/unclecatvn/agent-skills/tree/main/skills/slideType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add unclecatvn/agent-skills --skill ai-vibe-slides -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install unclecatvn/agent-skills ai-vibe-slides --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/unclecatvn/agent-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/slide .agents/skills/ai-vibe-slides && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "ai-vibe-slides" agent skill from https://github.com/unclecatvn/agent-skills/tree/main/skills/slide into .agents/skills/ai-vibe-slides/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ai-vibe-slides", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add unclecatvn/agent-skills --skill ai-vibe-slides -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install unclecatvn/agent-skills ai-vibe-slides --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/unclecatvn/agent-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/slide .cursor/skills/ai-vibe-slides && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "ai-vibe-slides" agent skill from https://github.com/unclecatvn/agent-skills/tree/main/skills/slide into .cursor/skills/ai-vibe-slides/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ai-vibe-slides", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/unclecatvn/agent-skills.git --path skills/slide--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add unclecatvn/agent-skills --skill ai-vibe-slides -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install unclecatvn/agent-skills ai-vibe-slides --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/unclecatvn/agent-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/slide .gemini/skills/ai-vibe-slides && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "ai-vibe-slides" agent skill from https://github.com/unclecatvn/agent-skills/tree/main/skills/slide into .gemini/skills/ai-vibe-slides/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ai-vibe-slides", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install unclecatvn/agent-skills ai-vibe-slidesInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add unclecatvn/agent-skills --skill ai-vibe-slides -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/unclecatvn/agent-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/slide .github/skills/ai-vibe-slides && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "ai-vibe-slides" agent skill from https://github.com/unclecatvn/agent-skills/tree/main/skills/slide into .github/skills/ai-vibe-slides/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ai-vibe-slides", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add unclecatvn/agent-skills --skill ai-vibe-slides -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install unclecatvn/agent-skills ai-vibe-slides --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/unclecatvn/agent-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/slide .opencode/skills/ai-vibe-slides && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "ai-vibe-slides" agent skill from https://github.com/unclecatvn/agent-skills/tree/main/skills/slide into .opencode/skills/ai-vibe-slides/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ai-vibe-slides", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
ai-vibe-slidesCreate beautiful, professional HTML or React slide decks ready for fullscreen presentation.
AI Vibe Slides is an agent skill from unclecatvn/agent-skills. Create beautiful, professional HTML or React slide decks ready for fullscreen presentation. Use this skill when the user wants to: create a PPT/slide/presentation from an idea or outline; build a visually stunning slide deck from existing content; generate an HTML presentation that can be projected fullscreen; convert a document into a presentation. Trigger when you hear: 'create slides', 'make a PPT', 'presentation', 'slide deck', 'pitch deck', 'vibe ppt', 'make a talk', or any request to create a presentation…
Its SKILL.md is about 3.5k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Documents & Office, covering Slides and decks. It works with React, Python and Odoo. The repository describes itself as: Odoo Skills Documentation. The licence is MIT.
12 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 3039ef3. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are html and javascript).
From the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
fonts.googleapis.comAlso links to:
github.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
AI Vibe Slides loads about 3.5k tokens when it runs. Until then it costs about 161 tokens; SKILL.md has 793 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from unclecatvn/agent-skills at commit 3039ef3, republished under its MIT licence (© unclecatvn). 793 words, ~3,498 tokens.
.claude/skills/ai-vibe-slides/SKILL.md (or your agent's skills folder).Produce a single HTML or React artifact file containing a complete slide deck that can:
Inspired by banana-slides: a 3-step pipeline of Idea → Outline → Finished Slides, but the output is a self-contained HTML file instead of a fullstack application.
When the user provides a request, first build an outline mentally (no need to display it unless the user asks):
If the user only gives a short sentence (e.g., "create slides about AI in healthcare"), automatically expand it into 8-12 slides with a logical structure.
Based on context, commit to one clear design direction:
| Context | Suggested Style |
|---|---|
| Startup pitch deck | Bold, dark theme, gradient accents, strong sans-serif |
| Academic / education | Clean, light, diagram-heavy, readable fonts |
| Tech talk / conference | Modern dark, code-style typography, neon accents |
| Corporate / report | Minimal, professional, navy/white, serif headings |
| Creative / marketing | Colorful, asymmetric layout, bold typography |
| Kids / early education | Pastel, rounded corners, playful icons, large text |
General rules:
Create a single file (.html or .jsx) containing everything:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>{Presentation Title}</title>
<link
href="https://fonts.googleapis.com/css2?family={Font1}&family={Font2}&display=swap"
rel="stylesheet"
/>
<style>
/* === RESET + BASE === */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
/* === SLIDE CONTAINER === */
.slide-deck {
width: 100vw;
height: 100vh;
overflow: hidden;
position: relative;
}
.slide {
width: 100%;
height: 100%;
display: none;
flex-direction: column;
justify-content: center;
padding: 60px 80px;
position: absolute;
top: 0;
left: 0;
}
.slide.active {
display: flex;
}
/* === TYPOGRAPHY === */
h1 {
font-family: "{Font1}", sans-serif;
font-size: 3.2rem;
margin-bottom: 1rem;
}
h2 {
font-family: "{Font1}", sans-serif;
font-size: 2.4rem;
margin-bottom: 1.5rem;
}
p,
li {
font-family: "{Font2}", sans-serif;
font-size: 1.4rem;
line-height: 1.8;
}
/* === THEME COLORS === */
:root {
--bg-primary: #0f172a;
--bg-slide: #1e293b;
--text-primary: #f8fafc;
--text-secondary: #94a3b8;
--accent: #3b82f6;
--accent-2: #8b5cf6;
}
/* === NAVIGATION UI === */
.nav-hint {
position: fixed;
bottom: 20px;
right: 30px;
font-size: 0.8rem;
color: var(--text-secondary);
opacity: 0.5;
}
.slide-counter {
position: fixed;
bottom: 20px;
left: 30px;
font-size: 0.8rem;
color: var(--text-secondary);
}
/* === TRANSITIONS === */
.slide {
animation: fadeIn 0.4s ease;
}
@keyframes fadeIn {
from {
opacity: 0;
transform: translateY(10px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
/* === LAYOUT VARIANTS === */
.slide.cover {
justify-content: center;
align-items: center;
text-align: center;
}
.slide.two-column {
flex-direction: row;
gap: 60px;
align-items: center;
}
.slide.two-column .col {
flex: 1;
}
.slide.centered {
align-items: center;
text-align: center;
}
/* === VISUAL ELEMENTS === */
.card {
background: rgba(255, 255, 255, 0.05);
border-radius: 12px;
padding: 24px;
margin: 8px 0;
}
.badge {
display: inline-block;
background: var(--accent);
color: white;
padding: 4px 14px;
border-radius: 20px;
font-size: 0.85rem;
}
.divider {
width: 60px;
height: 4px;
background: var(--accent);
border-radius: 2px;
margin: 16px 0;
}
.icon-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: 20px;
}
/* === PRINT / PDF EXPORT === */
@media print {
.slide {
page-break-after: always;
display: flex !important;
position: relative;
}
.nav-hint,
.slide-counter {
display: none;
}
}
</style>
</head>
<body>
<div class="slide-deck" id="deck">
<!-- SLIDE 1: COVER -->
<div
class="slide cover active"
style="background: linear-gradient(135deg, var(--bg-primary), #1a1a2e);"
>
<div class="badge">Topic</div>
<h1 style="font-size: 3.8rem; margin-top: 20px;">Main Title</h1>
<p
style="color: var(--text-secondary); font-size: 1.3rem; margin-top: 12px;"
>
Short subtitle description
</p>
<div class="divider" style="margin: 20px auto;"></div>
<p style="color: var(--text-secondary); font-size: 1rem;">
Author — Date
</p>
</div>
<!-- SLIDE 2+: CONTENT -->
<div class="slide">
<h2>Slide Title</h2>
<div class="divider"></div>
<ul>
<li>Key point 1</li>
<li>Key point 2</li>
<li>Key point 3</li>
</ul>
</div>
<!-- ... more slides ... -->
</div>
<div class="slide-counter">
<span id="current">1</span> / <span id="total"></span>
</div>
<div class="nav-hint">← → or click to navigate</div>
<script>
const slides = document.querySelectorAll(".slide");
let currentSlide = 0;
document.getElementById("total").textContent = slides.length;
function showSlide(n) {
slides[currentSlide].classList.remove("active");
currentSlide = (n + slides.length) % slides.length;
slides[currentSlide].classList.add("active");
document.getElementById("current").textContent = currentSlide + 1;
}
document.addEventListener("keydown", (e) => {
if (e.key === "ArrowRight" || e.key === " ")
showSlide(currentSlide + 1);
if (e.key === "ArrowLeft") showSlide(currentSlide - 1);
if (e.key === "f") document.documentElement.requestFullscreen?.();
if (e.key === "Escape") document.exitFullscreen?.();
});
document.querySelector(".slide-deck").addEventListener("click", (e) => {
const x = e.clientX / window.innerWidth;
x > 0.5 ? showSlide(currentSlide + 1) : showSlide(currentSlide - 1);
});
</script>
</body>
</html>Each slide should use the layout that best fits its content:
.two-column layout: text on left, visuals/list/cards on rightwidth: 100vw; height: 100vh — each slide fills the entire screen<img src="placeholder">. Replace with CSS shapes, gradients, icons (emoji or Lucide for React), or inline SVGs@media print rules so each slide becomes one printed pageIf creating a React artifact, use this pattern:
import { useState, useEffect, useCallback } from "react";
const slides = [
{ type: "cover", title: "...", subtitle: "..." },
{ type: "content", title: "...", points: ["...", "..."] },
{ type: "twoColumn", title: "...", left: "...", right: "..." },
// ...
];
export default function SlideDeck() {
const [current, setCurrent] = useState(0);
const next = useCallback(
() => setCurrent((c) => (c + 1) % slides.length),
[],
);
const prev = useCallback(
() => setCurrent((c) => (c - 1 + slides.length) % slides.length),
[],
);
useEffect(() => {
const handleKey = (e) => {
if (e.key === "ArrowRight" || e.key === " ") next();
if (e.key === "ArrowLeft") prev();
if (e.key === "f") document.documentElement.requestFullscreen?.();
};
window.addEventListener("keydown", handleKey);
return () => window.removeEventListener("keydown", handleKey);
}, [next, prev]);
const renderSlide = (slide) => {
switch (slide.type) {
case "cover":
return /* cover layout */;
case "content":
return /* content layout */;
case "twoColumn":
return /* two-column layout */;
// ...
}
};
return (
<div
className="w-screen h-screen overflow-hidden relative"
onClick={(e) => (e.clientX > window.innerWidth / 2 ? next() : prev())}
style={{ fontFamily: "'Outfit', sans-serif" }}
>
{renderSlide(slides[current])}
<div className="fixed bottom-5 left-8 text-sm opacity-40">
{current + 1} / {slides.length}
</div>
</div>
);
}Advantages of React: Tailwind CSS utilities, Lucide icons, more complex logic, recharts for charts.
@media print)After initial creation, the user can request modifications:
On each edit, keep unchanged slides intact and only update what the user requested.
© unclecatvn, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/slide of unclecatvn/agent-skills.
Open the folder on GitHubat commit 3039ef3
AI Vibe Slides next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| AI Vibe Slides this skillunclecatvn/agent-skills | 145 | — | ~3.5k | Automated safety check: Pass | MIT | |
| Open Kimi Pptjinwyp/open-ppt-skill | 161 | 2 repos | ~5.1k | Automated safety check: Pass | MIT | |
| Slidesstackblitz/bolt-slides | 1.1k | — | ~4.5k | Automated safety check: Pass | MIT | |
| PPTX Builder for WindowsMegaSuperKitty/WeClaw | 370 | — | ~650 | Automated safety check: Pass | MIT | |
| Presentation Creatorgetsentry/skills | 1k | — | ~2.3k | Automated safety check: Pass | Apache-2.0 | |
| Ambiguity Reportlawve-ai/awesome-legal-skills | 847 | — | ~4.6k | Automated safety check: Pass | Apache-2.0 |
jinwyp/open-ppt-skill
Create, edit, replicate, read, and export presentations. An agent skill from jinwyp/open-ppt-skill.
stackblitz/bolt-slides
Build a premium PRESENTED slide deck — classic one-slide-at-a-time slides you advance with a clicker — as a Vite + React app.
MegaSuperKitty/WeClaw
Builds PowerPoint decks on Windows from a structured slide spec using python-pptx, with an optional HTML-to-PDF-to-image path for complex layouts.
getsentry/skills
Create data-driven presentation slides using React, Vite, and Recharts with Sentry branding.
lawve-ai/awesome-legal-skills
Turn an interpretive-ambiguity audit of a legal text — contract, statute, regulation, or judicial opinion — into a polished deliverable.
sickn33/agentic-awesome-skills
Expert in Odoo QWeb templating for PDF reports, email templates, and website pages.
unclecatvn/agent-skills
Mandatory pre-code gate and definition-of-done for ANY Odoo change (add field, override method, inherit view/xpath, OWL/JS patch, wizard, cron, controller, report, security, migration, bug fix…
unclecatvn/agent-skills
A skill your agent uses when receiving code review feedback (especially if unclear or technically questionable), when completing tasks or major features requiring review before proceeding, or before…
unclecatvn/agent-skills
Odoo 16 development reference for Python models and ORM (search, domain, readgroup, compute fields), XML/CSV data and views, OWL/JS client code, QWeb reports, security (ACL, record rules, groups)…
unclecatvn/agent-skills
Odoo 17 development reference for Python models and ORM (search, domain, readgroup, compute fields), XML/CSV data and views, OWL/JS client code, QWeb reports, security (ACL, record rules, groups)…
unclecatvn/agent-skills
Odoo 18 development reference for Python models and ORM (search, domain, readgroup, compute fields), XML/CSV data and views, OWL/JS client code, QWeb reports, security (ACL, record rules, groups)…
unclecatvn/agent-skills
Complete reference for DTG Base module utilities and helpers.
Categories
Create beautiful, professional HTML or React slide decks ready for fullscreen presentation. AI Vibe Slides is an agent skill from unclecatvn/agent-skills. Create beautiful, professional HTML or React slide decks ready for fullscreen presentation.
AI Vibe Slides fits situations like: the user wants to: create a PPT/slide/presentation from an idea; build a visually stunning slide deck from existing content; generate an HTML presentation that can be projected fullscreen; convert a document into a presentation.
Run `npx skills add unclecatvn/agent-skills --skill ai-vibe-slides -a claude-code`. Or copy the skill folder (skills/slide in unclecatvn/agent-skills) into .claude/skills/ai-vibe-slides in your project. Claude Code loads it when a task matches its description.
Run `npx skills add unclecatvn/agent-skills --skill ai-vibe-slides -a codex`. Or copy the skill folder (skills/slide in unclecatvn/agent-skills) into .agents/skills/ai-vibe-slides in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add unclecatvn/agent-skills --skill ai-vibe-slides -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/ai-vibe-slides, .gemini/skills/ai-vibe-slides, .github/skills/ai-vibe-slides and .opencode/skills/ai-vibe-slides in your project.
SKILL.md names no scripts, command-line tools or credentials: AI Vibe Slides is instructions for the agent only.
SKILL.md names 2 domains. In commands or code: fonts.googleapis.com; the agent is likely to contact it when it follows the instructions. As links in the text: github.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
AI Vibe Slides is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.5k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with AI Vibe Slides: Open Kimi Ppt (jinwyp/open-ppt-skill, 161 stars), Slides (stackblitz/bolt-slides, 1.1k stars), PPTX Builder for Windows (MegaSuperKitty/WeClaw, 370 stars) and Presentation Creator (getsentry/skills, 1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
unclecatvn (a GitHub user) maintains it in unclecatvn/agent-skills, which has 145 GitHub stars. The repository holds 8 skills in this directory. The repository was last updated on September 24, 2026.
Source: unclecatvn/agent-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.