Rideful

Slide Rules and Element Roles

The deck's rules file and semantic element roles keep AI-generated presentations consistent and correct.

When an AI agent works on your presentation, two systems ensure consistency: slide rules define your deck-specific standards, and element roles tag each text element with its purpose. Together, they prevent the agent from drifting off-brand or breaking your layout as it adds and edits content.

Tip: Enable extended thinking on your AI assistant for the best results. The extra reasoning time helps the agent carefully follow slide rules and maintain consistent visual hierarchy across slides.

Slide Rules

Slide rules are instructions you write to tell AI agents how your presentations should be built. They are the deck's rules.md file, in the files column beside the chat: click the icon, switch to Edit and save. Every agent working on the deck follows the same file, and everyone who can open the deck sees it.

Rules can specify anything: tone of voice, formatting requirements, brand guidelines, structural constraints, or content restrictions. For example:

Story Structure
- Use Minto Principle: lead with the answer
- Maximum 5 slides for executive summaries

Titles
- Titles should be actionable statements, not labels
- Example: "Revenue grew 20% in Q4" not "Q4 Revenue"

Visuals
- Use the company's blue palette (#1C2833, #2E4053)
- Charts must include data source attribution

Rules a Template Passes On

A brand template has its own rules.md, and every deck made from it follows the template's rules until someone edits them on the deck. That first edit gives the deck its own copy, and Reset to template in the dialog goes back. Blank and imported decks start with no rules.

Asking the Agent for a Rule

You can write rules yourself or ask for them in the chat — “add a rule that titles are full sentences”. The agent edits rules.md, keeping the rules already there, and the change applies from its next turn.

Layout Descriptions

If you use brand templates, each template layout can have a description that tells AI agents when and how to use it. For example, a layout description might say “Use this for section dividers — large centered title with a dark background”. When the agent calls layout_list, it reads these descriptions to pick the right layout for each slide's content. You can write or edit layout descriptions from the template detail page, or let the AI generate them by inspecting the layout and calling layout_update.

Element Roles

Every text element with semantic meaning gets a role property that identifies its purpose on the slide. Roles help the agent maintain consistency and enable the visual editor to apply smart defaults.

Roles also make it easier for you to communicate with the AI. When you say “change the title to something shorter” or “make all subtitles italic”, the agent can instantly find the right elements by their role. Without roles, the agent has to analyze every element on every slide to figure out which ones are subtitles — slower and more error-prone.

RolePurposeRecommended Size
titleSlide header — typically one line at the top36-44pt
subtitleOptional line below the title18-24pt
bodyMain content area — paragraphs, bullet lists, descriptions14-18pt
footerBottom text — page numbers, disclaimers, attributions10-12pt

When to Set Roles

Agents always set a role on title, subtitle, body, and footer elements. Decorative shapes without semantic meaning — dividers, background rectangles, accent bars — do not get a role. This distinction lets the editor treat content elements and design elements differently.

Visual Hierarchy

Agents maintain a consistent size hierarchy across all slides: Title > Subtitle > Body > Footer. If the title is 40pt on slide 1, it should be 40pt on every slide. Inconsistent sizing breaks the presentation's visual rhythm and makes it look unpolished.

Font Tier Selection

Rideful organizes fonts into three tiers. Agents call util_list_fonts to discover available fonts and choose from its results; a font outside the library renders only where it is installed. Every tier exports to PowerPoint.

  • Universal tier — Fonts installed everywhere: Windows, macOS, PowerPoint, Keynote, Google Slides, web browsers.
  • Office tier — Fonts bundled with Microsoft Office, so they render wherever PowerPoint runs.
  • Google tier — Google Fonts in the Rideful editor. Embedded in the exported .pptx, so PowerPoint renders them on machines that don't have them.

Agents choose fonts for the design. If you'll present from Keynote or Google Slides, which ignore embedded fonts, they prefer universal or office tier fonts.

Key Concepts

A quick reference for the building blocks agents work with:

  • Deck — A presentation containing ordered slides.
  • Slide — A single page in a deck. Has a background color and contains elements.
  • Shape — Rectangle, ellipse, diamond, triangle, arrow (pointing right), leftArrow, upArrow, downArrow, hexagon, star, pie, arc, or donut. Supports rich text directly inside (no need for a separate text element on top).
  • Text — Standalone text block. Supports markdown: **bold**, *italic*, - bullet lists, 1. numbered lists.
  • Line — With optional arrows and anchors to other elements.
  • Image — Added in the editor (paste, drag, or Insert Image) or from a public HTTPS URL over MCP. Set only width or height to preserve aspect ratio.
  • Layout — Every deck carries its own layouts, copied from the template it was created from. They auto-create placeholder elements. Call deck_get to list them, or omit layoutId for the deck's default.

Code Example

A slide with roles explicitly set on every semantic element. Notice the accent bar has no role — it's decorative:

// Elements with semantic roles explicitly set
element_bulk_create({
  deckId: "abc123",
  slideId: "slide-1",
  elements: [
    // Side accent bar — decorative, NO role
    {
      type: "shape",
      shapeType: "rectangle",
      x: 0, y: 0,
      width: 16, height: 720,
      fillColor: "#E33737"
    },
    // Title — role: "title"
    {
      type: "text",
      role: "title",
      text: "Q4 Revenue Summary",
      x: 80, y: 60,
      width: 1120, height: 60,
      fontSize: 40,
      fontFamily: "Inter",
      fontColor: "#292929"
    },
    // Subtitle — role: "subtitle"
    {
      type: "text",
      role: "subtitle",
      text: "North America Region",
      x: 80, y: 130,
      width: 1120, height: 36,
      fontSize: 20,
      fontFamily: "Lato",
      fontColor: "#CCCBCB"
    },
    // Body content — role: "body"
    {
      type: "text",
      role: "body",
      text: "- Total revenue: $4.2M\n- Growth: +18% YoY\n- Top segment: Enterprise (62%)",
      x: 80, y: 200,
      width: 1120, height: 360,
      fontSize: 16,
      fontFamily: "Lato",
      fontColor: "#292929"
    },
    // Footer — role: "footer"
    {
      type: "text",
      role: "footer",
      text: "Confidential — Internal Use Only",
      x: 80, y: 670,
      width: 1120, height: 24,
      fontSize: 11,
      fontFamily: "Lato",
      fontColor: "#CCCBCB"
    }
  ]
})

Common Issues

  • Missing roles on text elements: Without roles, the editor can't properly manage elements and agents can't maintain visual hierarchy when editing later. Every title, subtitle, body, and footer element needs its role set.
  • Fonts outside the library: A font name that util_list_fonts doesn't return can't be embedded on export, so it renders only where it is installed. Pick from the library.
  • Ignoring slide rules: If you've set slide rules on a deck and the agent doesn't follow them, the output won't match your expectations. The agent reads slide rules from deck_get at the start of every workflow.

Related