Ratatui Kit Contrib

July 13, 2026 · View on GitHub

Ratatui Kit Contrib

The official monorepo for first-party ratatui-kit extension crates.

CI ratatui-kit License: MIT

Main framework · Author contract · Extension API · awesome-ratatui-kit


ratatui-kit-markdown demo

The demo above is generated from the real ratatui-kit-markdown example with its package-local tapes/markdown.tape. The recording asset lives next to the crate at assets/markdown.gif.


Overview

This is the home for official ratatui-kit-<name> component crates — extensions maintained alongside the framework but shipped as their own packages. If you want to build UIs with the framework itself, start at the main repository.

Each crate here:

  • is independently versioned and independently published to crates.io as ratatui-kit-<name> (e.g. ratatui-kit-markdown);
  • depends on the framework through the public Extension API from the ratatui-kit = ">=0.10" baseline, reaching ratatui / crossterm types via ratatui_kit::ratatui / ratatui_kit::crossterm rather than a direct dependency;
  • lives in its own directory under crates/ and is released by pushing a per-crate tag ratatui-kit-<name>-v<version>.

Community (non-official) crates do not need to live here — publish them anywhere and list them in awesome-ratatui-kit. This monorepo exists so the crates the core team maintains stay in lockstep with the framework's release cadence and quality bar.


Crates

CrateDescriptionVersionOriginal authorFeature-gated deps
ratatui-kit-markdownMarkdown, code block, diff, blockquote and divider components0.3.0KonghaYao via ratatui-kit#12pulldown-cmark (markdown), syntect (highlight), similar (diff)
ratatui-kit-themesratatui-themes catalog adapters for the core Palette / PaletteProvider pipeline0.1.0yexiyue— (ratatui-themes is a core dep, not feature-gated)

As crates land, add a row here and a member entry in the workspace Cargo.toml.


AI-assisted development

This repo ships an AI agent skill for developers using these crates in their own ratatui-kit app — it teaches your AI coding assistant the real component props, feature flags, and theming API for ratatui-kit-markdown and ratatui-kit-themes, verified against the published source rather than guessed, so a request like "render this README with syntax highlighting, themed like Dracula" reaches for Markdown + ratatui-kit-themes and compiles on the first or second try instead of reinventing a Markdown parser.

npx skills add yexiyue/ratatui-kit-contrib --skill ratatui-kit-contrib

The skill lives in skills/ratatui-kit-contrib/. Pair it with the main framework's ratatui-kit skill — this one only covers what these extension crates add on top.


Repository layout

ratatui-kit-contrib/
├── Cargo.toml           # [workspace] resolver = "3"; members added per crate
├── cliff.toml           # per-crate tag-prefix aware CHANGELOG config
├── rustfmt.toml         # tab_spaces = 4
├── .github/workflows/   # fmt · clippy -D warnings · test · doc, workspace-wide
└── crates/
    └── ratatui-kit-<name>/   # one directory per official extension crate
        ├── assets/           # generated example GIFs for this crate
        ├── tapes/            # reproducible VHS recordings for real examples
        ├── examples/
        └── src/

Contributing a crate

Official extension crates are held to the same quality bar as the framework: the author contract. In short:

  • Depend only on the Extension API surface; reach ratatui / crossterm through ratatui_kit::*, never a direct dependency.
  • Feature-gate heavy dependencies (optional = true + a feature); keep default features minimal so cargo add ratatui-kit-<name> stays light.
  • English panic / expect / error messages shown to library users.
  • Layout props go on the returned root element for #[component] functions (transparent-layout wrappers do not own a layout node).
  • Compile baseline: all examples and doctests must compile — it is the CI gate.
  • Publish as ratatui-kit-<name> with keywords = ["ratatui-kit", "tui"] and use the workspace ratatui-kit >=0.10 baseline.

Run the same validation matrix CI uses before opening a PR:

cargo fmt --all --check
cargo clippy --all-targets --all-features --workspace -- -D warnings
cargo test --all-features --workspace --lib --tests --examples
RUSTDOCFLAGS="-D warnings" cargo doc --no-deps --document-private-items --all-features --workspace --examples

Recording examples

Example GIFs live inside the crate they demonstrate. Each package-local tape writes to that crate's assets/ directory:

for tape in crates/*/tapes/*.tape; do
    vhs "$tape"
done

Tapes may also emit verification screenshots under target/vhs-*.png; target/ is ignored, so these PNGs are for local visual checks only. Commit the tape and generated GIF when an example output changes.

Releasing

Bump the crate's version → commit → tag ratatui-kit-<name>-v<version> → push the tag. CI runs cargo publish for that crate and generates its CHANGELOG with git-cliff using the per-crate tag prefix (see cliff.toml).


License

Released under the MIT License.