# rindig/lecture-deck-skill architecture

> Architecture diagram of the GitHub repository rindig/lecture-deck-skill, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/rindig/lecture-deck-skill
- Repository: https://github.com/rindig/lecture-deck-skill

## Overview

lecture-deck is a Python toolkit and authoring skill for turning a storyboard and screen modules into a self-contained, themed HTML presentation. Authors plan a session, implement screens using the shared kit, and build the deck; presenters then navigate screens and use notes, overview, blackout, fullscreen, print, and copy-prompt features. The graph includes documented capabilities whose implementation was not sampled; those links are limited to what the README and sampled source establish.

Main entry points: [`scripts/build_deck.py`](https://github.com/rindig/lecture-deck-skill/blob/master/scripts/build_deck.py) (Deck builder), [`scripts/deckkit/shell.py`](https://github.com/rindig/lecture-deck-skill/blob/master/scripts/deckkit/shell.py) (Deck shell), [`examples/demo/screens.py`](https://github.com/rindig/lecture-deck-skill/blob/master/examples/demo/screens.py) (Screen modules), [`scripts/deckkit/kit.py`](https://github.com/rindig/lecture-deck-skill/blob/master/scripts/deckkit/kit.py) (Screen kit)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_authoring["Deck authoring"]
  node_storyboard["Session storyboard"]
  node_screen_modules["Screen modules<br/>[screens.py]"]
  node_kit["Screen kit<br/>[kit.py]"]
end

subgraph group_generation["Deck generation"]
  node_deck_config["Deck configuration<br/>[deck.json]"]
  node_builder["Deck builder<br/>[build_deck.py]"]
  node_html_deck["HTML deck<br/>[Demo.html]"]
end

subgraph group_presentation["Presentation runtime"]
  node_shell["Deck shell<br/>[shell.py]"]
end

subgraph group_themes["Themes"]
  node_theme_files["Theme files"]
end

node_author(("Deck author"))
node_presenter(("Presenter"))
node_audience(("Live audience"))
node_font_service["Google Fonts"]

node_author -->|"plans session"| node_storyboard
node_author -->|"writes screens"| node_screen_modules
node_storyboard -->|"guides content"| node_screen_modules
node_screen_modules -->|"uses helpers"| node_kit
node_author -->|"sets deck options"| node_deck_config
node_builder -->|"reads settings"| node_deck_config
node_builder -->|"imports slides"| node_screen_modules
node_builder -->|"uses theme and helpers"| node_kit
node_builder -->|"formats page"| node_shell
node_kit -->|"loads theme"| node_theme_files
node_builder -->|"writes HTML"| node_html_deck
node_html_deck -->|"includes runtime"| node_shell
node_presenter -->|"opens deck"| node_html_deck
node_shell -->|"presents screens"| node_audience
node_shell -->|"provides controls"| node_presenter
node_theme_files -.->|"imports fonts"| node_font_service

click node_storyboard "https://github.com/rindig/lecture-deck-skill/blob/master/reference/storyboard-template.md"
click node_screen_modules "https://github.com/rindig/lecture-deck-skill/blob/master/examples/demo/screens.py"
click node_kit "https://github.com/rindig/lecture-deck-skill/blob/master/scripts/deckkit/kit.py"
click node_deck_config "https://github.com/rindig/lecture-deck-skill/blob/master/examples/demo/deck.json"
click node_builder "https://github.com/rindig/lecture-deck-skill/blob/master/scripts/build_deck.py"
click node_html_deck "https://github.com/rindig/lecture-deck-skill/blob/master/examples/demo/out/Demo.html"
click node_shell "https://github.com/rindig/lecture-deck-skill/blob/master/scripts/deckkit/shell.py"
click node_theme_files "https://github.com/rindig/lecture-deck-skill/tree/master/scripts/deckkit/themes"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_storyboard,node_screen_modules,node_kit toneBlue
class node_deck_config,node_builder,node_html_deck toneAmber
class node_shell toneMint
class node_theme_files toneRose
class node_author,node_presenter,node_audience,node_font_service toneIndigo
```

## Components

### Deck authoring

- [Session storyboard](https://github.com/rindig/lecture-deck-skill/blob/master/reference/storyboard-template.md): `reference/storyboard-template.md`
- [Screen modules](https://github.com/rindig/lecture-deck-skill/blob/master/examples/demo/screens.py): `examples/demo/screens.py`
- [Screen kit](https://github.com/rindig/lecture-deck-skill/blob/master/scripts/deckkit/kit.py): `scripts/deckkit/kit.py`

### Deck generation

- [Deck configuration](https://github.com/rindig/lecture-deck-skill/blob/master/examples/demo/deck.json): `examples/demo/deck.json`
- [Deck builder](https://github.com/rindig/lecture-deck-skill/blob/master/scripts/build_deck.py): `scripts/build_deck.py`
- [HTML deck](https://github.com/rindig/lecture-deck-skill/blob/master/examples/demo/out/Demo.html): `examples/demo/out/Demo.html`

### Presentation runtime

- [Deck shell](https://github.com/rindig/lecture-deck-skill/blob/master/scripts/deckkit/shell.py): `scripts/deckkit/shell.py`

### Themes

- [Theme files](https://github.com/rindig/lecture-deck-skill/tree/master/scripts/deckkit/themes): `scripts/deckkit/themes`

### Other components

- **Deck author**
- **Presenter**
- **Live audience**
- **Google Fonts**

## Connections

- Deck author → Session storyboard: plans session
- Deck author → Screen modules: writes screens
- Session storyboard → Screen modules: guides content
- Screen modules → Screen kit: uses helpers
- Deck author → Deck configuration: sets deck options
- Deck builder → Deck configuration: reads settings
- Deck builder → Screen modules: imports slides
- Deck builder → Screen kit: uses theme and helpers
- Deck builder → Deck shell: formats page
- Screen kit → Theme files: loads theme
- Deck builder → HTML deck: writes HTML
- HTML deck → Deck shell: includes runtime
- Presenter → HTML deck: opens deck
- Deck shell → Live audience: presents screens
- Deck shell → Presenter: provides controls
- Theme files → Google Fonts: imports fonts
