一键导入
slides
Build, edit, render, import, and export presentation decks with the preloaded @oai/artifact-tool JavaScript surface through the artifacts tool.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Build, edit, render, import, and export presentation decks with the preloaded @oai/artifact-tool JavaScript surface through the artifacts tool.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Run and recover long-lived Codex CLI conversations in Linux tmux sessions with workspace-scoped metadata and SESSION_ID tracking. Use when Codex needs to keep watching one interactive session, continue the same conversation after detach/reattach, recover after terminal loss with exact `SESSION_ID` resume, or monitor tmux-backed Codex output without relying on VS Code integrated terminals.
Build, edit, recalculate, import, and export spreadsheet workbooks with the preloaded @oai/artifact-tool JavaScript surface through the artifacts tool.
You MUST use this before any creative work - creating features, building components, adding functionality, or modifying behavior. Explores user intent, requirements and design before implementation.
Use when you have a written implementation plan to execute in a separate session with review checkpoints
Check Codex "cloud review" signals on a GitHub PR (thumbs-up reactions, comments/reviews, checks) and troubleshoot cases where the review appears to have "no feedback". Use when a PR is expected to be reviewed by Codex but gh/CLI output shows nothing.
Implements Manus-style file-based planning to organize and track progress on complex tasks. Creates task_plan.md, findings.md, and progress.md. Use when asked to plan out, break down, or organize a multi-step project, research task, or any work requiring >5 tool calls. Supports automatic session recovery after /clear.
| name | slides |
| description | Build, edit, render, import, and export presentation decks with the preloaded @oai/artifact-tool JavaScript surface through the artifacts tool. |
| metadata | {"short-description":"Use the artifacts tool to create and edit slide decks in JavaScript"} |
Use this skill when the user wants to create or modify presentation decks with the artifacts tool.
artifacts tool.type, interface, or import type.import { ... } from "@oai/artifact-tool". The @oai/artifact-tool module surface is already preloaded on globalThis.Presentation, PresentationFile, FileBlob, AutoLayoutAlign, and AutoLayoutDirection are available directly.artifactTool, artifacts, and codexArtifacts.node:fs/promises when you need to write preview bytes to disk.artifacts/quarterly-update.pptx or artifacts/slide-1.png.const presentation = Presentation.create({
slideSize: { width: 960, height: 540 },
});
const slide = presentation.slides.add();
slide.background.fill = "background1";
const title = slide.shapes.add({
geometry: "roundRect",
position: { left: 80, top: 72, width: 800, height: 96 },
fill: "accent1",
});
title.text = "Q2 Product Update";
const subtitle = slide.shapes.add({
geometry: "rect",
position: { left: 80, top: 196, width: 800, height: 48 },
});
subtitle.text = "Launch status, reliability, and next milestones";
const pptxBlob = await PresentationFile.exportPptx(presentation);
await pptxBlob.save("artifacts/q2-product-update.pptx");
slide.elements.charts.add("line", { position: ... }) for charts. The runtime chart surface is element-based; slide.charts.add(...) is not the reliable entry point for authoring new charts in this skill.const chart = slide.elements.charts.add("line", {
position: { left: 80, top: 180, width: 640, height: 320 },
});
chart.title = "Horsepower";
chart.categories = ["1964", "1973", "1989", "2024"];
const series = chart.series.add("911");
series.values = [130, 210, 247, 518];
chart.hasLegend = false;
ArrayBuffer plus contentType:const fs = await import("node:fs/promises");
const source = await fs.readFile("artifacts/porsche.jpg");
const imageBuffer = source.buffer.slice(
source.byteOffset,
source.byteOffset + source.byteLength,
);
slide.elements.images.add({
blob: imageBuffer,
contentType: "image/jpeg",
position: { left: 500, top: 0, width: 460, height: 540 },
fit: "cover",
});
ArrayBuffer into slide.elements.images.add(...). Do not assume path, url, src, or a Node Buffer will preview correctly.Title 1, Subtitle 2, date/footer placeholders, or PowerPoint's Click to add title boxes. If the deck is meant to be fully custom, strip placeholder shapes before final export:const placeholderNames = new Set([
"Title 1",
"Subtitle 2",
"Date Placeholder 3",
"Footer Placeholder 4",
"Slide Number Placeholder 5",
]);
for (const slide of presentation.slides.items) {
const toDelete = slide.shapes.items.filter((shape) => {
const name = shape.name ?? "";
return placeholderNames.has(name) || Boolean(shape.placeholderType);
});
for (const shape of toDelete) {
shape.delete();
}
}
Presentation.create({ slideSize }).await PresentationFile.importPptx(await FileBlob.load("deck.pptx")).presentation.slides.add() or presentation.slides.insert({ after, layout }).slide.shapes.add(...), slide.tables.add(...), slide.elements.charts.add(...), and slide.elements.images.add(...) when you need preview-safe embedded images.await presentation.export({ slide, format: "png", scale: 2 }), then write new Uint8Array(await blob.arrayBuffer()) with node:fs/promises..pptx with await PresentationFile.exportPptx(presentation).artifacts tool is ready and start authoring immediately; only investigate runtime installation or packaging if the tool fails before your slide code runs.text or textStyle, export one PNG, and inspect the result before scaling up to the full deck..pptx after meaningful milestones so the user can inspect output.placeholderType.slide.autoLayout(...) rather than hand-tuning every coordinate..pptx back into the runtime and inspecting round-tripped objects.Click to add ... placeholders, fix the layout or delete the inherited placeholder shapes and re-export before handoff..pptx.references/presentation.md for the core Presentation and PresentationFile lifecycle.references/auto-layout.md for deterministic layout helpers and alignment enums.