# dsauce/stickman-kino architecture

> Architecture diagram of the GitHub repository dsauce/stickman-kino, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-10). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/dsauce/stickman-kino
- Repository: https://github.com/dsauce/stickman-kino

## Overview

Stickman Kino turns a brief into an agent-authored film specification and timed scene code, then generates local audio, composes the scenes, checks and snapshots frames, and renders a video. The CLI dispatches the workflow; film composition prepares engine assets and metadata, while the engine supplies the animation and visual systems. The README documents additional prompt export and GIF output. Some engine internals and CLI branches were not excerpted, so their detailed runtime links are not asserted.

Main entry points: [`engine/sm-core.js`](https://github.com/dsauce/stickman-kino/blob/main/engine/sm-core.js) (Scene core), [`bin/stickman.mjs`](https://github.com/dsauce/stickman-kino/blob/main/bin/stickman.mjs) (CLI commands), [`lib/film.mjs`](https://github.com/dsauce/stickman-kino/blob/main/lib/film.mjs) (Film composition), [`lib/audio.mjs`](https://github.com/dsauce/stickman-kino/blob/main/lib/audio.mjs) (Audio generation)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_authoring["Agent authoring"]
  node_skills["Agent skills"]
  node_film_spec["Film specification<br/>[film.schema.json]"]
  node_scene_code["Scene choreography<br/>[SKILL.md]"]
end

subgraph group_cli["CLI workflow"]
  node_cli_entry["CLI commands<br/>[stickman.mjs]"]
end

subgraph group_media["Film and audio"]
  node_audio_build["Audio generation<br/>[audio.mjs]"]
  node_synth["Procedural audio<br/>[synth.mjs]"]
  node_composition["Film composition<br/>[film.mjs]"]
  node_prompt_export["Prompt export<br/>[prompts.mjs]"]
end

subgraph group_engine["Animation engine"]
  node_core["Scene core<br/>[sm-core.js]"]
  node_rig["Character rig<br/>[sm-rig.js]"]
  node_props["Prop library<br/>[sm-props.js]"]
  node_charts["Charts and diagrams<br/>[sm-charts.js]"]
  node_type["Typography<br/>[sm-type.js]"]
  node_effects["Effects and transitions<br/>[sm-fx.js]"]
  node_world["Worlds and themes<br/>[sm-world.js]"]
  node_titles["Intro and outro titles<br/>[sm-titles.js]"]
end

subgraph group_runtime["Runtime support"]
  node_setup["Tool setup<br/>[setup.mjs]"]
  node_environment["Tool resolution<br/>[env.mjs]"]
end

node_user(("Film requester"))
node_agent(("Coding agent"))
node_render_service["HyperFrames renderer"]
node_video["Rendered film"]

node_user -->|"requests"| node_agent
node_agent -->|"follows"| node_skills
node_agent -->|"authors"| node_film_spec
node_agent -->|"authors"| node_scene_code
node_agent -->|"runs"| node_cli_entry
node_cli_entry -->|"dispatches"| node_setup
node_setup -->|"uses"| node_environment
node_cli_entry -->|"dispatches"| node_audio_build
node_audio_build -->|"reads timing"| node_composition
node_audio_build -->|"generates audio"| node_synth
node_cli_entry -->|"composes"| node_composition
node_composition -->|"copies engine"| node_core
node_composition -->|"prepares composition"| node_render_service
node_cli_entry -->|"checks and renders"| node_render_service
node_render_service -->|"renders"| node_video
node_cli_entry -->|"exports prompts"| node_prompt_export
node_prompt_export -->|"reads film timing"| node_composition
node_core -.->|"supports scenes"| node_rig
node_core -.->|"supports scenes"| node_props
node_core -.->|"supports scenes"| node_charts
node_core -.->|"supports scenes"| node_type
node_core -.->|"supports scenes"| node_effects
node_core -.->|"supports scenes"| node_world
node_core -.->|"supports scenes"| node_titles

click node_skills "https://github.com/dsauce/stickman-kino/tree/main/skills"
click node_film_spec "https://github.com/dsauce/stickman-kino/blob/main/schema/film.schema.json"
click node_scene_code "https://github.com/dsauce/stickman-kino/blob/main/skills/stickman-animator/SKILL.md"
click node_cli_entry "https://github.com/dsauce/stickman-kino/blob/main/bin/stickman.mjs"
click node_setup "https://github.com/dsauce/stickman-kino/blob/main/lib/setup.mjs"
click node_environment "https://github.com/dsauce/stickman-kino/blob/main/lib/env.mjs"
click node_audio_build "https://github.com/dsauce/stickman-kino/blob/main/lib/audio.mjs"
click node_synth "https://github.com/dsauce/stickman-kino/blob/main/lib/synth.mjs"
click node_composition "https://github.com/dsauce/stickman-kino/blob/main/lib/film.mjs"
click node_prompt_export "https://github.com/dsauce/stickman-kino/blob/main/lib/prompts.mjs"
click node_core "https://github.com/dsauce/stickman-kino/blob/main/engine/sm-core.js"
click node_rig "https://github.com/dsauce/stickman-kino/blob/main/engine/sm-rig.js"
click node_props "https://github.com/dsauce/stickman-kino/blob/main/engine/sm-props.js"
click node_charts "https://github.com/dsauce/stickman-kino/blob/main/engine/sm-charts.js"
click node_type "https://github.com/dsauce/stickman-kino/blob/main/engine/sm-type.js"
click node_effects "https://github.com/dsauce/stickman-kino/blob/main/engine/sm-fx.js"
click node_world "https://github.com/dsauce/stickman-kino/blob/main/engine/sm-world.js"
click node_titles "https://github.com/dsauce/stickman-kino/blob/main/engine/sm-titles.js"

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_skills,node_film_spec,node_scene_code toneBlue
class node_cli_entry toneAmber
class node_audio_build,node_synth,node_composition,node_prompt_export,node_user toneMint
class node_core,node_rig,node_props,node_charts,node_type,node_effects,node_world,node_titles toneRose
class node_setup,node_environment,node_agent,node_render_service,node_video toneIndigo
```

## Components

### Agent authoring

- [Agent skills](https://github.com/dsauce/stickman-kino/tree/main/skills): `skills`
- [Film specification](https://github.com/dsauce/stickman-kino/blob/main/schema/film.schema.json): `schema/film.schema.json`
- [Scene choreography](https://github.com/dsauce/stickman-kino/blob/main/skills/stickman-animator/SKILL.md): `skills/stickman-animator/SKILL.md`

### CLI workflow

- [CLI commands](https://github.com/dsauce/stickman-kino/blob/main/bin/stickman.mjs): `bin/stickman.mjs`

### Film and audio

- [Audio generation](https://github.com/dsauce/stickman-kino/blob/main/lib/audio.mjs): `lib/audio.mjs`
- [Procedural audio](https://github.com/dsauce/stickman-kino/blob/main/lib/synth.mjs): `lib/synth.mjs`
- [Film composition](https://github.com/dsauce/stickman-kino/blob/main/lib/film.mjs): `lib/film.mjs`
- [Prompt export](https://github.com/dsauce/stickman-kino/blob/main/lib/prompts.mjs): `lib/prompts.mjs`

### Animation engine

- [Scene core](https://github.com/dsauce/stickman-kino/blob/main/engine/sm-core.js): `engine/sm-core.js`
- [Character rig](https://github.com/dsauce/stickman-kino/blob/main/engine/sm-rig.js): `engine/sm-rig.js`
- [Prop library](https://github.com/dsauce/stickman-kino/blob/main/engine/sm-props.js): `engine/sm-props.js`
- [Charts and diagrams](https://github.com/dsauce/stickman-kino/blob/main/engine/sm-charts.js): `engine/sm-charts.js`
- [Typography](https://github.com/dsauce/stickman-kino/blob/main/engine/sm-type.js): `engine/sm-type.js`
- [Effects and transitions](https://github.com/dsauce/stickman-kino/blob/main/engine/sm-fx.js): `engine/sm-fx.js`
- [Worlds and themes](https://github.com/dsauce/stickman-kino/blob/main/engine/sm-world.js): `engine/sm-world.js`
- [Intro and outro titles](https://github.com/dsauce/stickman-kino/blob/main/engine/sm-titles.js): `engine/sm-titles.js`

### Runtime support

- [Tool setup](https://github.com/dsauce/stickman-kino/blob/main/lib/setup.mjs): `lib/setup.mjs`
- [Tool resolution](https://github.com/dsauce/stickman-kino/blob/main/lib/env.mjs): `lib/env.mjs`

### Other components

- **Film requester**
- **Coding agent**
- **HyperFrames renderer**
- **Rendered film**

## Connections

- Film requester → Coding agent: requests (evidence: `README.md`)
- Coding agent → Agent skills: follows (evidence: `README.md`)
- Coding agent → Film specification: authors (evidence: `README.md`)
- Coding agent → Scene choreography: authors (evidence: `README.md`)
- Coding agent → CLI commands: runs (evidence: `README.md`)
- CLI commands → Tool setup: dispatches (evidence: `bin/stickman.mjs`)
- Tool setup → Tool resolution: uses (evidence: `lib/setup.mjs`)
- CLI commands → Audio generation: dispatches (evidence: `bin/stickman.mjs`)
- Audio generation → Film composition: reads timing (evidence: `lib/audio.mjs`)
- Audio generation → Procedural audio: generates audio (evidence: `lib/audio.mjs`)
- CLI commands → Film composition: composes (evidence: `bin/stickman.mjs`)
- Film composition → Scene core: copies engine (evidence: `lib/film.mjs`)
- Film composition → HyperFrames renderer: prepares composition (evidence: `README.md`)
- CLI commands → HyperFrames renderer: checks and renders (evidence: `bin/stickman.mjs`)
- HyperFrames renderer → Rendered film: renders (evidence: `README.md`)
- CLI commands → Prompt export: exports prompts (evidence: `bin/stickman.mjs`)
- Prompt export → Film composition: reads film timing (evidence: `lib/prompts.mjs`)
- Scene core → Character rig: supports scenes
- Scene core → Prop library: supports scenes
- Scene core → Charts and diagrams: supports scenes
- Scene core → Typography: supports scenes
- Scene core → Effects and transitions: supports scenes
- Scene core → Worlds and themes: supports scenes
- Scene core → Intro and outro titles: supports scenes
