Skip to content
Agentmart
Submit a tool

bento-slides

This skill should be used when the request is for a slide deck, a presentation, a talk, a pitch, or "make some slides about X", and a .bento.html file is…

Skill by theschoolofai

IndexedMIT
Write a review

Chalk Labs

Need help deploying bento-slides?

Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.

Book a call

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/theschoolofai-bento-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.

We use your email only for this newsletter. Privacy

About

This skill should be used when the request is for a slide deck, a presentation, a talk, a pitch, or "make some slides about X", and a .bento.html file is available in the workspace. Bento decks are a single HTML file whose slide data is JSON near the top, so making slides is editing that JSON. Carries the document location, the element schema, the morph rule, and the one escaping mistake that silently destroys the file.

Use cases: documents, presentations, frontend, data

No 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/bento-slides

What's inside

Skill name
bento-slides
Description
This skill should be used when the request is for a slide deck, a presentation, a talk, a pitch, or "make some slides about X", and a .bento.html file is available in the workspace. Bento decks are a single HTML file whose slide data is JSON near the top, so making slides is editing that JSON. Carries the document location, the element schema, the morph rule, and the one escaping mistake that silently destroys the file.
License
MIT
Instructions
166 lines in SKILL.md · view on GitHub

Files (1)

  • SKILL.md

SKILL.md (first lines)

A Bento deck is one `.bento.html` file that is the document, the editor and the
player at once. Making slides means editing JSON inside that file. You are not
writing HTML, CSS or JavaScript.

## Before anything else

**The base file must already be in the workspace.** You cannot download it: the
command runner has no network client on its allowlist. Check first:

```
glob_files("**/*.bento.html")
```

If there is no such file, stop and say so plainly. Do not hand-write an HTML
file and call it a Bento deck; the player is the other 99% of that file.

**The app file arrives with an empty deck**, which is what you want:

```html
<script type="application/bento+json" id="bento-doc"></script>
```

Your job is to fill that in, not to perform surgery on an existing document.

**Copy the base file first. Do not create a new one.**

```
copy_code_file(source="Bento_Slides.bento.html", destination="attention.bento.html")
```

`create_file` cannot do this: it refuses to overwrite the base, and it could not
reproduce 690 KB it has not read anyway. The command runner cannot do it either:
`python -c` is refused as an unbounded shell, and there is no copy program on the
allowlist. `copy_code_file` is the one route, and the copy is editable
immediately because nothing was read into the model to begin with.

Then edit the copy. Gallery templates are also valid decks but they embed images
as data URIs, over a megabyte of base64 on one line: never use one as a base.

**Never read the whole file.** It is around 690 KB, almost all of it the embedded
player and fonts. Find the block and read only around it:

```
grep_code("bento-doc")          -> the line number (94 in the current release)
read_code(path, start, end)     -> a small window
```

## Where the deck lives

```html
<script type="application/bento+json" id="bento-doc">
{ "format": "bento/slides", "version": 1, "title": "...", "size": {...},
  "theme": {...}, "slides": [ ... ] }
</script>
```

Top level: `format` must be `"bento/slides"`, `version` is `1`, and `title`,
`size` and `theme` are required. `slides` is the array you will mostly edit.
`assets`, `fonts`, `layouts` and `meta` are optional.

**If `docId` is present, it is an identity, not a value: never regenerate it.**
A fresh app file and the gallery templates both ship without one, so its absence
is normal and not something to fix.

`size` is an object, `{"width": 1280, "height": 720}` in the current release.
Read it rather than assuming it.

## The escaping rule that destroys files

**Every `<` inside the JSON must be written `<`.**

This is not theoretical. The shipped `signal` template contains zero literal `<`
and twelve escaped `\u003c`, because a literal `<` anywhere in the JSON closes
the surrounding `<script>` tag early.
The browser then parses the rest of your deck as HTML, and the file is silently
ruined: it still opens, and it is empty. This bites hardest in `text` elements,
whose `html` field is the place you are most likely to type a tag.

## A slide

```
id          unique
elements    the array of things on the slide
transition  "none" or "morph"
background  hex colour
notes       speaker notes
stateOf     parent slide id, making this a hidden drill-down variant
hidden      skipped during presentation
```

## An element

Every element has `id, x, y, w, h, rotation, opacity`. Then by type:

| type | the fields that matter |
| --- | --- |
| `text` | `html`, `fontSize`, `fontFamily`, `fontWeight`, `color`, `align`, `valign`, `lineHeight` |
| `shape` | `shape` (rect, ellipse, triangle, arrow, line, path), `fill`, `stroke`, `strokeWidth`, `radius` |
| `image` | `src` (a data URI or `"asset:key"`), `fit`, `radius` |
| `chart` | `preset` (bar, line, pie, scatter), `option` (ECharts-shaped) |
| `table` | `columns`, `rows`, `header`, `style` |
| `media` | `kind` (video or audio), `src`, `controls`, `autoplay`, `loop`, `muted` |
| `svg` | `asset` or `markup` |

Chart data for bar and line must be plain numbers, not objects.

## Morph is the whole reason to use this

Set `transition: "morph"` on the **later** slide. Any element whose `id` matches
one on the previous slide tweens: position, size, colour, gradients. Elements
with no partner fade in.

So a title that shrinks and moves to the corner is one element with the same id
on both slides, at different `x`, `y` and `fontSize`. It is not two elements and
not an animation you write.

Use `morphId` when you want two elements to morph into each other but need their
`id` values to stay distinct.

## Layout

From theschoolofai/S17Code, MIT.

Signals

Stars
0
Forks
31
Open issues
0
Last commit (this folder)
Aug 13, 2026 (2 months ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from theschoolofai

Done for you

Rather not set it up yourself?

Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.

See how we build AI agents →Read the case studies

Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.

launches shipped
50+
launches shipped
media placements
500+
media placements
founders on every account
2
founders on every account

Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block

Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.

Get bento-slides running in your business

Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.

Goes to the Chalk Labs founders, not the newsletter. Privacy

Need help deploying bento-slides?

CallGet help
Cite this page

bento-slides skill. Agent Mart. https://agentmart.dev/skills/theschoolofai-bento-slides (last updated 2026-10-24)