slides
Build, edit, render, import, and export presentation decks with the preloaded @oai/artifact-tool JavaScript surface through the artifacts tool.
Skill by caglarkc
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/caglarkc-slides
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: presentations, writing, agent-building
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/slides
What's inside
- Skill name
slides- Description
- Build, edit, render, import, and export presentation decks with the preloaded @oai/artifact-tool JavaScript surface through the artifacts tool.
- License
- MIT
- Metadata
- short-description: Use the artifacts tool to create and edit slide decks in JavaScript
- Instructions
- 132 lines in SKILL.md · view on GitHub
Files (4)
- SKILL.md
- openai.yaml · agents/
- auto-layout.md · references/
- presentation.md · references/
SKILL.md (first lines)
# Slides
Use this skill when the user wants to create or modify presentation decks with the `artifacts` tool.
## Tool Contract
- Use the `artifacts` tool.
- Send raw JavaScript only. Do not send JSON objects, quoted code, or markdown fences.
- This tool runs plain JavaScript in Node, not TypeScript. Do not use type annotations, `type`, `interface`, or `import type`.
- Do not write `import { ... } from "@oai/artifact-tool"`. The `@oai/artifact-tool` module surface is already preloaded on `globalThis`.
- Named exports such as `Presentation`, `PresentationFile`, `FileBlob`, `AutoLayoutAlign`, and `AutoLayoutDirection` are available directly.
- The full module is also available as `artifactTool`, `artifacts`, and `codexArtifacts`.
- You may still import Node built-ins such as `node:fs/promises` when you need to write preview bytes to disk.
- Save outputs under a user-visible path such as `artifacts/quarterly-update.pptx` or `artifacts/slide-1.png`.
## Quick Start
```js
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");
```
## Runtime Guardrails
- Prefer `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.
- After creating a chart element, set properties on the returned chart object:
```js
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;
```
- For local or fetched images that must survive preview rendering, embed bytes rather than passing only a file path or URL. The most reliable pattern is an `ArrayBuffer` plus `contentType`:
```js
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",
});
```
- If you fetch an image in-script, save or convert it to bytes first, then pass the `ArrayBuffer` into `slide.elements.images.add(...)`. Do not assume `path`, `url`, `src`, or a Node `Buffer` will preview correctly.
- PPTX export can still inherit layout placeholders such as `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:
```js
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();
}
}
```
## Common Patterns
- Create a new deck with `Presentation.create({ slideSize })`.
- Import an existing deck with `await PresentationFile.importPptx(await FileBlob.load("deck.pptx"))`.
- Add slides with `presentation.slides.add()` or `presentation.slides.insert({ after, layout })`.
- Add content with `slide.shapes.add(...)`, `slide.tables.add(...)`, `slide.elements.charts.add(...)`, and `slide.elements.images.add(...)` when you need preview-safe embedded images.
- Render a preview with `await presentation.export({ slide, format: "png", scale: 2 })`, then write `new Uint8Array(await blob.arrayBuffer())` with `node:fs/promises`.
- Export a `.pptx` with `await PresentationFile.exportPptx(presentation)`.
## Workflow
- Start with the smallest script that creates or imports the deck.
- Do not begin by checking whether the local artifacts runtime package or cache exists. Assume the `artifacts` tool is ready and start authoring immediately; only investigate runtime installation or packaging if the tool fails before your slide code runs.
- If the API surface is unclear, do a tiny probe first: create one slide, add one shape, set `text` or `textStyle`, export one PNG, and inspect the result before scaling up to the full deck.
- Save the `.pptx` after meaningful milestones so the user can inspect output.
- Prefer short copy and a reusable component system over text-heavy layouts; the preview loop is much faster than rescuing a dense slide after export.
- Text boxes do not reliably auto-fit. If copy might wrap, give the shape extra height up front, then shorten the copy or enlarge the box until the rendered PNG shows clear padding on every edge.
- Deliberately check text contrast against the actual fill or image behind it. Do not leave dark text on dark fills, light text on light fills, or any pairing that is hard to read at presentation distance.
- Treat text containment as a hard requirement. No text should overlap other elements, sit underneath another object, spill outside its geometry, or run off the slide edge.
- If text sits inside a box, make the alignment look intentional. Center it only when the layout calls for centered copy; otherwise choose left or right alignment that matches the composition and leaves balanced padding.From caglarkc/sentinel-coming, MIT.
More from caglarkc/sentinel-coming
- 0.558score
orchestrate-sentinel
caglarkc
Manage and execute Sentinel CLI, observability-gateway, test-platform, installer, chart, and docs work through the repository's central .orchestrator run graph.
SkillBFreshness: B★ 2Claude Code +9 - 0.501score
agentic-cli-accessibility
caglarkc
CLI deneyimini üretim kalitesine taşımak için etkileşim, çıktı, ergonomi ve güvenli varsayılanlar tasarlanırken kullan.
SkillCFreshness: C★ 2Claude Code +9 - 0.501score
agentic-cli-config-validation
caglarkc
CLI deneyimini üretim kalitesine taşımak için etkileşim, çıktı, ergonomi ve güvenli varsayılanlar tasarlanırken kullan.
SkillCFreshness: C★ 2Claude Code +9 - 0.501score
agentic-cli-alias-command
caglarkc
CLI deneyimini üretim kalitesine taşımak için etkileşim, çıktı, ergonomi ve güvenli varsayılanlar tasarlanırken kullan.
SkillCFreshness: C★ 2Claude Code +9 - 0.501score
agentic-cli-autocomplete
caglarkc
CLI deneyimini üretim kalitesine taşımak için etkileşim, çıktı, ergonomi ve güvenli varsayılanlar tasarlanırken kullan.
SkillCFreshness: C★ 2Claude Code +9 - 0.448score
babysit-pr
caglarkc
Babysit a GitHub pull request after creation by continuously polling CI checks/workflow runs, new review comments, and mergeability state until the PR is…
SkillDFreshness: D★ 2Claude Code +9 - 0.445score
spreadsheets
caglarkc
Build, edit, recalculate, import, and export spreadsheet workbooks with the preloaded @oai/artifact-tool JavaScript surface through the artifacts tool.
SkillDFreshness: D★ 2Claude Code +9 - 0.440score
sentinel-phase4-executor
caglarkc
Sentinel CLI Faz 4 — Grafana HTTP bağlantı doğrulama: config, doctor, mock testler, dokümantasyon.
SkillDFreshness: D★ 2Claude Code +9 - 0.440score
sentinel-individual-close-executor
caglarkc
Sentinel CLI bireysel kapanış: REPL’e Grafana doctor özetinin secret-safe enjeksiyonu, config bayrağı, testler ve dokümantasyon.
SkillDFreshness: D★ 2Claude Code +9 - 0.436score
agentic-agent-history-compaction
caglarkc
Uzun oturumlarda konuşma özetleme veya kesme politikası ve korunacak mesajları seçerken kullan.
SkillDFreshness: D★ 2Claude Code +9 - 0.436score
agentic-agent-multi-provider-switch
caglarkc
Oturumlar arası profil ve sağlayıcı değişiminde riskleri ve yeni oturum önerisini tanımlarken kullan.
SkillDFreshness: D★ 2Claude Code +9 - 0.436score
agentic-agent-turn-loop
caglarkc
Ajan tur döngüsü, max_turns, durdurma koşulları ve SIGINT ile iptali tanımlarken kullan.
SkillDFreshness: D★ 2Claude Code +9
Signals
- Stars
- 2
- Forks
- 2
- Open issues
- 0
- Last commit (this folder)
- Apr 4, 2026 (6 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/caglarkc/sentinel-coming
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from caglarkc
- 0.558score
orchestrate-sentinel
caglarkc
Manage and execute Sentinel CLI, observability-gateway, test-platform, installer, chart, and docs work through the repository's central .orchestrator run graph.
SkillBFreshness: B★ 2Claude Code +9 - 0.501score
agentic-cli-config-validation
caglarkc
CLI deneyimini üretim kalitesine taşımak için etkileşim, çıktı, ergonomi ve güvenli varsayılanlar tasarlanırken kullan.
SkillCFreshness: C★ 2Claude Code +9 - 0.501score
agentic-cli-accessibility
caglarkc
CLI deneyimini üretim kalitesine taşımak için etkileşim, çıktı, ergonomi ve güvenli varsayılanlar tasarlanırken kullan.
SkillCFreshness: C★ 2Claude Code +9 - 0.501score
agentic-cli-alias-command
caglarkc
CLI deneyimini üretim kalitesine taşımak için etkileşim, çıktı, ergonomi ve güvenli varsayılanlar tasarlanırken kullan.
SkillCFreshness: C★ 2Claude Code +9 - 0.501score
agentic-cli-autocomplete
caglarkc
CLI deneyimini üretim kalitesine taşımak için etkileşim, çıktı, ergonomi ve güvenli varsayılanlar tasarlanırken kullan.
SkillCFreshness: C★ 2Claude Code +9 - 0.461score
coaching-member-boundary
caglarkc
Coach-member akışlarında aktif ilişki doğrulaması, stale snapshot riski, role boundary ve read-only/member-safe ekran davranışlarını koruma skill'i.
SkillDFreshness: D★ 7Claude Code +9
Cite this page
slides skill. Agent Mart. https://agentmart.dev/skills/caglarkc-slides (last updated 2026-10-24)