# Slide Dsl

The complete slide DSL manual, the canvas and its background, the ten element types...

- Repository: https://github.com/THU-MAIC/OpenMAIC (42385 stars)
- Category: Documents
- License: MIT
- Last updated: 2026-11-01
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add THU-MAIC/OpenMAIC --skill slide-dsl -g -a claude-code -y`
Codex: `npx skills add THU-MAIC/OpenMAIC --skill slide-dsl -g -a codex -y`
Cursor: `npx skills add THU-MAIC/OpenMAIC --skill slide-dsl -g -a cursor -y`
Gemini CLI: `npx skills add THU-MAIC/OpenMAIC --skill slide-dsl -g -a gemini-cli -y`

## Description

The complete slide DSL manual, the canvas and its background, the ten element types field by field with units, defaults and legal values, where each type keeps its words, which field the renderer actually paints when two disagree, exactly what happens to the HTML you put in `content`, and the structure schema that is now the ONLY thing a write is checked against. Nothing filters your markup and nothing normalises your values, so this manual is the whole of what makes a page render correctly. Load it before patching a field you have not patched before, when a patch comes back rejected, when a patch lands but nothing moves on screen, or when you need to know where a colour, a font, a table cell or a code line really lives. This is a field reference and not a procedure, `page-clone` and `pro-editing` decide which pages to touch, `slide-craft` decides what a good page looks like, and this one says what the JSON means.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# The slide DSL

A slide page is a JSON document. Editing it well means writing the exact field
that holds the thing you want to change, in the exact shape the renderer reads,
and leaving every neighbouring field byte-identical.

**Read this part first, because it changes how you should use everything below.**
The write path stores what you send. There is no markup allow-list, no
sanitizer, no colour or font normalisation, no geometry clamping, no house style
applied on the way in. `patch_stage` checks one thing, that the resulting
document still matches the DSL **structure** schema (field names, types, required
fields, closed objects), and then persists your value byte for byte.

So there is nothing between you and the screen. A structurally legal page can
still be an unreadable page: markup the renderer never styles, a colour on a
field nothing paints, a formula snapshot that disagrees with its source. The
guard rail catches shape, not meaning. **This manual is the meaning.** Where it
tells you how the renderer behaves, that is the whole of your knowledge, write
against it, then read the page back and check what you wrote is what is there.

## Contents

The rest: https://github.com/THU-MAIC/OpenMAIC/blob/HEAD/skills/agent-runtime/slide-dsl/SKILL.md
