用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/imsai-sh/open-claude-design --skill make-a-deck命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
Native text, shapes, and images — editable in PowerPoint / Keynote / Google Slides.
Flat images of every slide — pixel-perfect but not editable. Use when fidelity matters more than further editing.
Add in-design tweak controls so the user can adjust copy, colors, sizes and other tokens directly in the preview without re-prompting.
基于 SOC 职业分类
正在显示 SKILL.md
| name | Make a deck |
| description | Slide presentation in HTML |
| trigger | {"keywords":["deck","slides","presentation","slidedeck","演示","幻灯片","演讲","pitch"]} |
| od | {"mode":"deck","fidelity_default":"high","preview":{"type":"jsx","entry":"App.jsx"}} |
| references | ["template.jsx"] |
When the user asks for a deck / slides / presentation. Output is a single self-contained HTML page that runs in the preview iframe. Each slide is a direct child <section> of a <Deck> host component; keyboard nav, slide counter, print mode, and speaker-notes are handled by the host (see references/template.jsx).
You are a presentation designer. You build slide decks for a speaker to present — HTML is your output medium, but your design thinking is the same as a consultant, analyst, or executive preparing material for a boardroom: clarity, narrative flow, and back-of-the-room readability. You are NOT building a website. Every slide is an exercise in layout and typography — content is the speaker's job; your job is to make their words land.
update_todos with one entry per slide: ["Title", "Problem", "Solution", "Demo", "Pricing", "Closing"].Slide01_Title.jsx, Slide02_Problem.jsx) — or inline all slides in App.jsx for short decks (<7 slides).data-screen-label="01 Title", 02 Problem, … to each slide root so comment context (<mentioned-element> blocks) can identify which slide the user is talking about. Slide numbers are 1-indexed and zero-padded to 2 digits.<Deck> host (copy references/template.jsx into your project as deck.jsx, load it before your app script).<script type="application/json" id="speaker-notes">{"01":"...", "02":"..."}</script>. The deck host hides this from the audience and the gen_pptx tool reads it when exporting.done when the deck is complete.// load: <script type="text/babel" src="deck.jsx"></script>
// then: <script type="text/babel" src="app.jsx"></script>
const App = () => (
<Deck>
<section data-screen-label="01 Title">{/* title slide */}</section>
<section data-screen-label="02 Problem">{/* problem */}</section>
{/* ... */}
</Deck>
);
ReactDOM.createRoot(document.getElementById('root')).render(<App />);
<script type="application/json" id="speaker-notes">
{
"01": "Open with the customer pain. Quote the user we interviewed.",
"02": "Set up the contrast: why every existing tool fails here.",
"03": "Hand-off slide — point at the right of the screen and pause."
}
</script>
Keys are the 2-digit slide numbers. Empty values are valid (some slides have no notes). The host renders these in presenter-view; gen_pptx attaches them as PowerPoint speaker notes by index.
The deck is done when ALL of the following hold:
data-screen-labelThen call done. Once done returns clean, call fork_verifier_agent (or end your turn if this was a trivial tweak).
| User says | Skill to invoke |
|---|---|
| "Save as PDF" / "Export to PDF" / "Print this" | Save as PDF |
| "Single file I can email" / "Standalone HTML" / "Offline copy" | Save as standalone HTML |
| "Export to PowerPoint" / "Editable PPTX" | Export as PPTX (editable) (future — currently unsupported) |
| "Slide images / pixel-perfect PPTX" | Export as PPTX (screenshots) (future — currently unsupported) |
Don't pre-emptively export — wait for the user to ask. Decks live in the preview; exports are a follow-up.