Agent skill

Bento Slides

by sammcj in sammcj/agentic-coding

A skill your agent uses when creating or editing Bento (.bento.html) slide decks, including any request for a single-file HTML slide deck.

Apache-2.0Auto-check passedDocuments & Office

Install Bento Slides

skills CLI
$ npx skills add sammcj/agentic-coding --skill bento-slides -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install sammcj/agentic-coding bento-slides --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/sammcj/agentic-coding.git skills-src && mkdir -p .claude/skills && cp -r skills-src/Skills/bento-slides .claude/skills/bento-slides && rm -rf skills-src

Use ~/.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/

Facts

Skill name
bento-slides
GitHub stars
162
Token cost
~2.9k tokens
SKILL.md length
1,624 words
Files
9 (incl. scripts, references)
Skills in repo
64
Repo updated
First seen
Licence
Apache-2.0

At a glance

A skill your agent uses when creating or editing Bento (.bento.html) slide decks, including any request for a single-file HTML slide deck.

  • Works in 8 steps: Read the references.… → Find the document (existing deck). Parse… → Classify the source material. For each… → …
  • Editing Bento (.bento.html) slide decks
  • SKILL.md covers Before touching an existing deck, Starting from nothing, Starting from a theme and Workflow, plus 4 more sections
  • Runs JavaScript scripts from its folder; calls node, curl and git; reaches bento.page and github.com

What it does

Bento Slides is an agent skill from sammcj/agentic-coding. Use when creating or editing Bento (.bento.html) slide decks, including any request for a single-file HTML slide deck.

Its SKILL.md is about 2.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 11 other files, including scripts and reference files (for example `CHANGELOG.md`, `CLAUDE.md` and `evals/trigger.json`).

It sits in Documents & Office, covering Slides and decks and HTML artifacts. The repository describes itself as: Agentic Coding Rules, Templates etc... The licence is Apache-2.0.

When your agent uses it

  • Editing Bento (.bento.html) slide decks
  • Including any request for a single-file HTML slide deck

Example prompts

  • “/bento-slides”

Requirements

  • Node.js

Workflow steps

8 steps, taken from the first numbered list in SKILL.md.

  1. Read the references. references/agents-1.2.3.md (element shapes, chart/state/hidden-slide rules, column arithmetic) and…
  2. Find the document (existing deck). Parse the #bento-doc JSON. Note doc.size, doc.theme, element ids, docId, and whether template or…
  3. Classify the source material. For each piece: a stat, a table, a process, a definition to expand, a photo, code?
  4. Map each piece to a feature. This step makes it a Bento deck
  5. Author doc.json in compact form ("compact": true), per format-reference "Compact form". Its typography and role-placement rules fail…
  6. Render and write back: render_check.mjs ".bento.html" --doc doc.json --write ".bento.html" (add --motion if the user asked for animation)…
  7. Fix and re-run until there are no dropped entries or errors, and no warnings on content you authored, then read every PNG. On an existing…
  8. Self-audit before finishing

What it can do on your machine

Read from SKILL.md and the folder at commit 2f25ced. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Ships 2 files in scripts/ (JavaScript), which the agent can run.

    Shell commands in SKILL.md call:

    • node
    • curl
    • git

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • bento.page
    • github.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Bento Slides loads about 2.9k tokens when it runs, and up to ~8.5k if it reads all its reference files. Until then it costs about 33 tokens; SKILL.md has 1,624 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~33
When it runs · the whole SKILL.md, loaded when a task matches
~2.9k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~8.5k

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.

Safety

Auto-check passed

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); the scripts in this folder are not scanned.

SKILL.md

The full file from sammcj/agentic-coding at commit 2f25ced, republished under its Apache-2.0 licence (© sammcj). 1,624 words, ~2,852 tokens.

Download SKILL.mdSave it as .claude/skills/bento-slides/SKILL.md (or your agent's skills folder). This skill also uses 8 other files; get the full folder from GitHub.
name
bento-slides
description
Use when creating or editing Bento (`.bento.html`) slide decks, including any request for a single-file HTML slide deck.

Authoring Bento decks

A Bento deck is one self-contained .bento.html file: a compressed app runtime plus the document as plain JSON in one block:

html
<script type="application/bento+json" id="bento-doc"> { "format":"bento/slides", ... } </script>
  • Edit that block only, in place. Leave the runtime untouched.
  • render_check.mjs --write writes the block for you. A hand-written splice must escape every < in the JSON as its unicode escape (a backslash followed by u003c), so the block never contains a literal </script> and a build script can find the block's end at the first </script> after the opening tag.
  • Chat context (no filesystem): the user copies the JSON out (Save > Copy compact JSON) and pastes your replacement back (Save > Replace from JSON). window.bento.loadDoc(json) does the same from the console.

Before touching an existing deck

  • Ask the user to close the deck in their browser. A save from the open tab overwrites your edit. Autosave keeps a recovery snapshot in IndexedDB keyed by docId, so a stale tab offers to "restore" the old version on the next open; tell the user to pick Discard.
  • If the #bento-doc block contains "format":"bento/enc", the deck is password-encrypted. Stop and tell the user; plain JSON written over it destroys the ciphertext.
  • Leave collab as found. Keys mint at creation and every save writes them, so nearly every saved deck carries ownerPriv: anyone with the file can join its live session.
    • Deleting collab severs the owner from their own room while sent copies keep the old one.
    • Tell the user once that the file contains session keys. Hand-outs: Share > View-only copy. Leaked file: Share > Reset access.
    • Every save also stamps CRDT state into collab.sync; the next open merges it with the room, so elements a script deleted come back. render_check.mjs --write drops collab.sync. If edits still reappear, the owner's other tabs are in the room: set collab.on to false and have the user Share > Reset access.
    • Otherwise set collab.on to false only when the user asks to stop sharing. Change that one field and keep the keys.

Starting from nothing

The user does not need Bento installed; the app ships inside every deck. Fetch the latest release and author into it:

bash
# name the file after the deck's topic, e.g. Q4_Review.bento.html
curl -fsSL https://bento.page/releases/slides/Bento_Slides.bento.html -o "<Topic>.bento.html"

Verify the download contains id="bento-doc". The block is empty on disk (a browser mints a demo deck on first open), so there is nothing to discard. Omit docId and collab. render_check.mjs --write saves freshly minted keys with sharing off (collab.on:false); the user turns sharing on with Share. Never author a collab object: one without keys never gets any, so Share silently connects nothing.

Starting from a theme

When the user asks for a themed deck or names a theme from bento-themes, use the local clone at ~/git/sammcj/bento-themes if it exists (it may hold unreleased work). Otherwise clone it there: git clone https://github.com/sammcj/bento-themes ~/git/sammcj/bento-themes.

  • Pick a theme from the repo README (one section per theme) and themes/<name>/preview/*.png.
  • Shell: copy themes/<name>/<Name>.bento.html to <Topic>.bento.html.
  • Document: start doc.json from themes/<name>/<Name>.doc.json (full form). Keep theme, fonts, assets, present, meta and layouts. Delete collab, docId and template so the deck is not a template and --write saves it with sharing off.
  • Slides: copy the demo slide for each layout you need (its element ids match the layout), give it a unique slide id, and replace its text, data and notes. A layout with a detail state needs its state slide copied too, with stateOf and link updated. Theme layouts carry no role, so compact role placement does not apply.

Workflow

Create a task per step below, each with its completion criterion, then work them to completion.

  1. Read the references. references/agents-1.2.3.md (element shapes, chart/state/hidden-slide rules, column arithmetic) and references/format-reference.md (compact form, fields since 1.0.18, runtime rules). Every key, generated from the runtime: https://bento.page/schema/slides.json.
  2. Find the document (existing deck). Parse the #bento-doc JSON. Note doc.size, doc.theme, element ids, docId, and whether template or readonly is set. Keep docId unchanged.
  3. Classify the source material. For each piece: a stat, a table, a process, a definition to expand, a photo, code?
  4. Map each piece to a feature. This step makes it a Bento deck:
    • numbers to compare (trend, magnitude, share) -> a chart element
    • a comparison, spec, pricing or feature grid -> a table element (columns weights + rows of cells + a style object)
    • a point to drill into -> a state slide (stateOf + element link)
    • a hero or full-slide image -> full-bleed image + scrim rect + text
    • a sequence, flow or timeline -> connectors (from/to) or a path
    • a headline number -> big text, one plain number per box
    • source code -> a code element
    • a build across slides -> one slide per step with unnumbered:true on the continuations
    • repeated chrome or logo -> keep its id stable across slides
    • a demo clip, recording or soundbite -> a media element
  5. Author doc.json in compact form ("compact": true), per format-reference "Compact form". Its typography and role-placement rules fail silently: read both before writing text. Compact fills size (1280x720) and theme when omitted.
    • Keep one accent colour, at most two typefaces, and 96px side margins (right-most x <= 1184).
    • Write speaker notes on each slide.
    • Size text with compact h:"auto"; otherwise window.bento.measure({html, w, fontSize, fontFamily}) via render_check.mjs --eval, always passing fontFamily.
    • When fanning slides out to several agents, the shared spec lists the type scale (title/body/caption px) and the band tier per slide, as well as colours and columns.
  6. Render and write back: render_check.mjs "<Topic>.bento.html" --doc doc.json --write "<Topic>.bento.html" (add --motion if the user asked for animation). In a chat context, return the replacement JSON instead.
  7. Fix and re-run until there are no dropped entries or errors, and no warnings on content you authored, then read every PNG. On an existing deck, report warnings about the user's own content (motion, notes, fonts) instead of rewriting it. Overflow, crowding and a dropped chart key are invisible in the JSON and obvious on screen.
  8. Self-audit before finishing:
    • any numbers rendered as text that should be a chart?
    • a drill-down that would work better as a state slide?
    • one accent colour?
    • captions baked into raster images flagged to the user?
    • on content slides, does the content reach the bottom of the band, with slack spread between blocks rather than pooled underneath?
Show full SKILL.md (612 more words)Show less

Motion default

Static decks: transition:"none" or "fade", no fx, no loops, no ken-burns. Most decks are shown over a video call, where frame drops smear motion and loops pull attention from the speaker. Bento's templates lean on animation; ignore that. Only when the user asks for animation, read references/motion.md (morph, entrances, step reveals, count-up, ken-burns, loops).

Density rules

Bento's examples use a display band (y:72 h:84, content from y:208, 96px bottom margin) that leaves 416px of 720 for content. Pick a tier per slide:

  • Display tier (cover, section divider, one-idea slide): that band, 88px headline, 40px+ body.
  • Content tier (bullets, tables, charts, comparisons): title ~40px at y:64, rule at y:132, content from y:156 to y:656 (500px), 96px side margins kept.
  • Type floor: body 16px or larger, nothing below 14px, 20px+ body on content slides. Video calls downscale the canvas, so 13px on 1280 reaches the audience at about 7px. Text baked into a raster image cannot be fixed; flag it during classification (step 3).
  • Fill the band, then choose the gaps. On a content slide, content reaches the band's bottom and right edges, with leftover height distributed between blocks. For a column: measure every block (or use compact h:"auto"), sum, then split the remainder across the gaps.

Scripts

  • node scripts/render_check.mjs <deck> [--doc doc.json [--write <deck>]] boots the deck in headless Brave/Chrome with DNS off, prints the load report, validate() findings and the skill's own checks, and saves one PNG per page. --help lists the options.
  • node scripts/inflate_runtime.mjs <deck> extracts the compressed runtime as searchable minified JS; rg it to settle a question about app behaviour.
  • The browser needs its profile directory under $TMPDIR; a sandbox that blocks it kills the run, so run outside it. Outside the sandbox $TMPDIR differs: keep doc.json and the deck on project paths.

Critical gotchas

  • Bullets are <ul><li> in html (nested <ul> for sub-bullets, <ol> for numbered). A typed "•" or "-" is inline, so a wrapped line returns under the bullet instead of hanging under the text. Compact md bullets produce those glyph lines, so a bulleted element uses html. Lists cost height and <ul> already breaks (no <br> beside it): re-measure after converting. Centre or right aligned lists lose the hanging indent.
  • Text html keeps tags only (b i u br p div span ul ol li h1 h2 a code strong em s). Every attribute except http(s) href is stripped, so inline colour or size needs a separate text element. $…$ on one line renders as maths ($typst: …$ for Typst); write \$ for a literal dollar.
  • Charts implement a subset of ECharts: unimplemented keys are ignored silently, and validate() misses ignored sub-keys. Write charts only from agents "chart" and format-reference "Chart rules".
  • fit:"contain" draws smaller than its box. Margin and coverage checks read the box, so a portrait image in a landscape box passes while leaving dead space. Give the box the asset's aspect ratio.
  • Tables: the header row is always bold and borderWidth applies to every edge. For horizontal rules only, set borderWidth:0 and draw rect shapes of h:1 at the row pitch.
  • Hairlines: a line shape draws at 2px minimum. A 1px rule is a rect with h:1.
  • {{date}} renders the viewer's today. {{date:YYYY-MM-DD}} pins the format only. Write a literal date for a fixed event.
  • template:true -> every open mints a fresh deck, so the runtime strips the flag on load; render_check.mjs --write restores template and layouts from the input JSON. readonly:true -> the file boots straight into the show with no editor (validate/measure absent).
  • doc.layouts insert semantics: deep-clones, preserves element ids, clears notes, name and stateOf. Leave link out of layouts.

Working examples of every technique: open any template at https://bento.page and read its #bento-doc block.

© sammcj, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 8 other files (scripts, references) in Skills/bento-slides of sammcj/agentic-coding.

  • SKILL.md
  • CHANGELOG.md
  • CLAUDE.md
  • evals/trigger.json
  • references/agents-1.2.3.md
  • references/format-reference.md
  • references/motion.md
  • scripts/inflate_runtime.mjs
  • scripts/render_check.mjs

Open the folder on GitHubat commit 2f25ced

Compare with similar skills

Bento 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.

Bento Slides compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Bento Slides this skillsammcj/agentic-coding162—~2.9kAutomated safety check: PassApache-2.0
Qiaomu Bento Pptjoeseesun/qiaomu-bento-ppt127—~1.3kAutomated safety check: PassMIT
Ky Markdown RebuilderKyrieCheungYep/ky-markdown-rebuilder117—~5.7kAutomated safety check: PassNone
PPT as CodeRussell-cell/PPT-as-code190—~11kAutomated safety check: PassMIT
Sci HTMLShZhao27208/Aut_Sci_Write209—~1.4kAutomated safety check: NotesMIT
Karpathy Output EvolutionLearnPrompt/andrej-karpathy-skills110—~1.5kAutomated safety check: PassMIT

Similar skills

  • Qiaomu Bento Ppt

    joeseesun/qiaomu-bento-ppt

    Use the standalone qiaomu-bento-ppt skill to create or edit qiaomu-style bento presentations as self-contained .bento.html files from briefs, notes, reports, URLs, data, or existing bento decks.

    127 GitHub stars~1.3k tokensUpdated 2 mo ago
    Documents & OfficeAuto-check passed
  • Ky Markdown Rebuilder

    KyrieCheungYep/ky-markdown-rebuilder

    Rebuild visual documents into reliable Markdown by combining text extraction with page or screenshot alignment.

    117 GitHub stars~5.7k tokensUpdated 3 mo ago
    Documents & OfficeAuto-check passed
  • PPT as Code

    Russell-cell/PPT-as-code

    Plans and builds HTML-based web presentations through staged quick, basic or advanced workflows, with optional visualization planning, motion, a workbench and PPTX export handoff.

    190 GitHub stars~11k tokensUpdated 5 mo ago
    Documents & OfficeAuto-check passed
  • Sci HTML

    ShZhao27208/Aut_Sci_Write

    Generate academic presentation-style HTML slide decks and browser reports from PDFs, structured text, Markdown, paper summaries, outlines, or research notes.

    209 GitHub stars~1.4k tokensUpdated 1 mo ago
    Documents & OfficeAuto-check: notes
  • Karpathy Output Evolution

    LearnPrompt/andrej-karpathy-skills

    Upgrade LLM outputs from plain text to structured, rendered formats like HTML, Marp slides, or interactive dashboards.

    110 GitHub stars~1.5k tokensUpdated 3 mo ago
    Documents & OfficeAuto-check passed
  • Visual Explainer

    NikiforovAll/claude-code-rules

    Generate self-contained HTML pages that visually explain technical material — systems, code changes, plans, data.

    141 GitHub stars~7.5k tokensUpdated 8 days ago
    Documents & OfficeAuto-check passed

More from sammcj/agentic-coding

All 64 skills in this repo
  • Yue2 Music

    sammcj/agentic-coding

    A skill your agent uses when generating songs with YuE2, covering a recording via SheetSage2 audio-to-ABC, editing a score or lyrics with melody preservation, or building a reproducible listening…

    162 GitHub stars~2.3k tokensUpdated yesterday
    Auto-check passed
  • Idrive Backup

    sammcj/agentic-coding

    A skill your agent uses whenever the user wants you to manage, discuss or diagnose iDrive Backup configuration on macOS

    162 GitHub stars~1.7k tokensUpdated yesterday
    Auto-check: notes
  • Piper Tts Training

    sammcj/agentic-coding

    Train custom TTS voices for Piper (ONNX format) using fine-tuning or from-scratch approaches.

    162 GitHub stars~1.4k tokensUpdated yesterday
    Auto-check passed
  • PPTX To Md

    sammcj/agentic-coding

    Convert a PPTX slide deck into per-slide markdown that preserves both the verbatim text and the meaning of embedded screenshots, diagrams and charts in their original layout positions.

    162 GitHub stars~1.8k tokensUpdated yesterday
    Auto-check passed
  • Skill Creator Primer

    sammcj/agentic-coding

    You MUST load this skill before the skill-creator skill AND before making ANY change to, or conducting a review of ANY Agent Skill.

    162 GitHub stars~9.8k tokensUpdated yesterday
    Auto-check passed
  • Deferred Task Execution

    sammcj/agentic-coding

    Delays execution of a task until a specified time or after a duration.

    162 GitHub stars~642 tokensUpdated yesterday
    Auto-check: notes

Questions about Bento Slides

What does Bento Slides do?

A skill your agent uses when creating or editing Bento (.bento.html) slide decks, including any request for a single-file HTML slide deck. Bento Slides is an agent skill from sammcj/agentic-coding.html) slide decks, including any request for a single-file HTML slide deck.

When should I use Bento Slides?

Bento Slides fits situations like: editing Bento (.bento.html) slide decks; including any request for a single-file HTML slide deck.

How do I install Bento Slides in Claude Code?

Run `npx skills add sammcj/agentic-coding --skill bento-slides -a claude-code`. Or copy the skill folder (Skills/bento-slides in sammcj/agentic-coding) into .claude/skills/bento-slides in your project. Claude Code loads it when a task matches its description.

How do I install Bento Slides in Codex?

Run `npx skills add sammcj/agentic-coding --skill bento-slides -a codex`. Or copy the skill folder (Skills/bento-slides in sammcj/agentic-coding) into .agents/skills/bento-slides in your project. Codex loads it when a task matches its description.

Can I use Bento Slides in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add sammcj/agentic-coding --skill bento-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/bento-slides, .gemini/skills/bento-slides, .github/skills/bento-slides and .opencode/skills/bento-slides in your project.

What does Bento Slides need to run?

Going by SKILL.md and its folder, Bento Slides needs JavaScript for the scripts in its folder and the command-line tools its instructions call (node, curl and git). Our summary lists: Node.js.

Does Bento Slides access the network?

SKILL.md names 2 domains. In commands or code: bento.page and github.com; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.

Is Bento Slides safe to install?

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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Bento Slides use?

Bento Slides is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Bento Slides use?

About 2.9k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 5.6k tokens, read only when the agent opens those files.

What are the alternatives to Bento Slides?

Skills that share tags, products or a category with Bento Slides: Qiaomu Bento Ppt (joeseesun/qiaomu-bento-ppt, 127 stars), Ky Markdown Rebuilder (KyrieCheungYep/ky-markdown-rebuilder, 117 stars), PPT as Code (Russell-cell/PPT-as-code, 190 stars) and Sci HTML (ShZhao27208/Aut_Sci_Write, 209 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Bento Slides?

sammcj (a GitHub user) maintains it in sammcj/agentic-coding, which has 162 GitHub stars. The repository holds 64 skills in this directory. The repository was last updated on October 9, 2026.

Source: sammcj/agentic-coding on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.