SKILL.md
SKILL.mdBrowse 89 files
2,637 tokens
11,750 bytes
Token encoding: o200k_base
Snapshot ac753b4
1---2name: opentui3description: Build terminal UIs with OpenTUI. Covers Core, frameworks, components, application APIs, testing, extensions, integrations, deployment, and public API lookup.4---5 6# OpenTUI Skill7 8Canonical reference docs are in the sibling `docs/**/*.mdx` files.9 10Inside the OpenTUI repository, this skill root is `packages/web/src/content/`. The same files are available under11`packages/web/src/content/docs/**/*.mdx` from the repository root.12 13## Terminal layout defaults14 15Design for a terminal app, not a browser. Use the available columns and rows efficiently.16 17- Do not use gaps between adjacent UI panels.18- Do not add unnecessary margins or padding.19- Prefer compact, information-dense layouts over website-style card spacing.20 21## Path invariant22 23- `/docs` maps to `docs/getting-started.mdx`.24- `/docs/components` maps to `docs/components/overview.mdx`.25- Every other `/docs/<slug>` URL maps to `docs/<slug>.mdx` relative to this skill root.26- From the repository root, prepend `packages/web/src/content/` to each source path.27 28## Choose packages29 30Use Core directly or choose a React or Solid binding for the UI. Recommend companion packages when their features fit31the task. Do not install every package by default.32 33- [`@opentui/core`](docs/core-concepts/renderer.mdx): use imperative renderables and events with `createCliRenderer()`.34- [`@opentui/react`](docs/bindings/react.mdx): use React components, JSX, and hooks with `createRoot()`.35- [`@opentui/solid`](docs/bindings/solid.mdx): use Solid components, JSX, and signals with `render()`.36- [`@opentui/keymap`](docs/keymap/overview.mdx): centralize keyboard bindings and named commands across views.37 The package supports focus-scoped layers, configurable shortcuts, and multi-key sequences.38 Start with `createDefaultOpenTuiKeymap()` from `@opentui/keymap/opentui`.39 Use `@opentui/keymap/react` or `@opentui/keymap/solid` for providers and hooks.40 [Direct keyboard events](docs/core-concepts/keyboard.mdx) or component-local bindings are enough for simple local input.41- [`@opentui/ssh`](docs/reference/ssh.mdx): serve a terminal UI to standard SSH clients without a local app installation.42 Import `createServer()` from the package root. Pass each session's renderer to Core, React, or Solid.43 The package has no framework subpaths. Read the SSH guide for authentication, middleware, and session cleanup.44- [`@opentui/qrcode`](docs/reference/qr-encoder.mdx): encode QR matrices, terminal text, or SVG, or display a45 `QRCodeRenderable`. For JSX, use `registerQRCode()` from `@opentui/qrcode/react` or `@opentui/qrcode/solid`. See the46 [QR code component](docs/components/qr-code.mdx).47- [`@opentui/three`](docs/reference/three.mdx): render Three.js WebGPU scenes in the terminal with `ThreeRenderable`.48 This integration supports only Bun. Before you choose it, check its runtime and dependency requirements.49 50See [Package entry points](docs/reference/package-entrypoints.mdx) for the full list of public imports.51The list includes testing, addons, host adapters, and runtime-module maps.52Use the [API and symbol index](docs/reference/api-index.mdx) to find exports.53Use public package entry points instead of source-file deep imports.54 55## Reading order by area56 57- Start: `/docs`, `/docs/getting-started/quickstart`, `/docs/getting-started/runtime-support`58- Frameworks: `/docs/bindings/react`, `/docs/bindings/solid`59- Core: `/docs/core-concepts/renderer`, `/docs/core-concepts/layout`, `/docs/core-concepts/keyboard`60- Components: `/docs/components`, `/docs/components/text`, `/docs/components/input`, `/docs/components/image`, `/docs/components/embedded-terminal`61- Application APIs: `/docs/core-concepts/clipboard`, `/docs/core-concepts/audio`, `/docs/application-apis/audio-streaming`, `/docs/application-apis/audio-capture`, `/docs/application-apis/animation`62- Test and debug: `/docs/core-concepts/testing`, `/docs/test-and-debug/troubleshooting`63- Extensions: `/docs/plugins/slots`, `/docs/extend/runtime-plugins`64- Keymap: `/docs/keymap/overview`65- Integrations: `/docs/reference/ssh`, `/docs/reference/three`, `/docs/reference/qr-encoder`66- Ship: `/docs/ship/deploy`, `/docs/reference/standalone-executables`67- Reference: `/docs/reference/api-index`, `/docs/reference/package-entrypoints`, `/docs/reference/env-vars`, `/docs/reference/native-image`68 69## Quick routing by intent70 71| Intent(s) | Start here |72| -------------------------------------------------------------------------------------------------------------------- | ------------------------------------------- |73| `getting-started`, `intro`, `examples`, `agent-skill` | `docs/getting-started.mdx` |74| `installation`, `quickstart` | `docs/getting-started/quickstart.mdx` |75| `runtime-support`, `bun`, `nodejs`, `native-artifacts`, `ffi`, `permissions`, `libc`, `runtime-assets` | `docs/getting-started/runtime-support.mdx` |76| `react`, `jsx`, `hooks`, `keyboard`, `paste`, `focus`, `blur`, `selection`, `animation`, `testing` | `docs/bindings/react.mdx` |77| `solid`, `jsx`, `signals`, `hooks`, `keyboard`, `animation`, `testing` | `docs/bindings/solid.mdx` |78| `core`, `renderer`, `terminal`, `scrollback`, `lifecycle` | `docs/core-concepts/renderer.mdx` |79| `layout`, `flexbox`, `yoga`, `positioning` | `docs/core-concepts/layout.mdx` |80| `keyboard`, `input`, `keybindings`, `paste`, `focus` | `docs/core-concepts/keyboard.mdx` |81| `components`, `component`, `component-support`, `support-matrix`, `react-components`, `solid-components` | `docs/components/overview.mdx` |82| `text`, `styling`, `content`, `selection` | `docs/components/text.mdx` |83| `input`, `form`, `editing`, `focus` | `docs/components/input.mdx` |84| `image`, `image-renderable`, `image-display`, `kitty`, `sixel` | `docs/components/image.mdx` |85| `embedded-terminal`, `terminal-renderable`, `ghostty`, `vt`, `pty` | `docs/components/embedded-terminal.mdx` |86| `clipboard`, `copy`, `osc52`, `host-clipboard` | `docs/core-concepts/clipboard.mdx` |87| `audio`, `native-audio`, `sound`, `playback`, `mixer`, `devices`, `tap` | `docs/core-concepts/audio.mdx` |88| `audio-streaming`, `audio-stream`, `pcm`, `f32le`, `radio`, `mp3`, `flac`, `icy`, `backpressure`, `reconnect` | `docs/application-apis/audio-streaming.mdx` |89| `audio-capture`, `microphone`, `pcm`, `recording`, `wav`, `audio-recorder` | `docs/application-apis/audio-capture.mdx` |90| `animation`, `timeline`, `easing`, `use-timeline` | `docs/application-apis/animation.mdx` |91| `testing`, `test-renderer`, `snapshots`, `frames` | `docs/core-concepts/testing.mdx` |92| `troubleshooting`, `terminal-reset`, `ffi-errors`, `native-loading`, `runtime-plugins`, `protocols`, `test-timeouts` | `docs/test-and-debug/troubleshooting.mdx` |93| `plugins`, `plugin`, `slots`, `registry`, `extensions` | `docs/plugins/slots.mdx` |94| `runtime-plugins`, `dynamic-import`, `external-modules`, `bun-plugin`, `module-maps`, `plugin-loading` | `docs/extend/runtime-plugins.mdx` |95| `keymap`, `keybindings`, `shortcuts`, `commands`, `leader`, `ex-commands` | `docs/keymap/overview.mdx` |96| `ssh`, `remote-tui`, `ssh-server`, `authentication`, `middleware` | `docs/reference/ssh.mdx` |97| `three`, `threejs`, `webgpu`, `3d`, `sprites`, `physics` | `docs/reference/three.mdx` |98| `qr`, `qrcode`, `qr-encoder`, `svg-qr`, `gs1`, `eci`, `structured-append` | `docs/reference/qr-encoder.mdx` |99| `deploy`, `bundle`, `bun-executable`, `nodejs-esm`, `node-sea`, `ssh-deployment` | `docs/ship/deploy.mdx` |100| `standalone`, `executable`, `bun-compile`, `node-sea`, `node-assets` | `docs/reference/standalone-executables.mdx` |101| `api`, `symbols`, `exports`, `public-api`, `api-index`, `lookup` | `docs/reference/api-index.mdx` |102| `package-exports`, `entrypoints`, `subpath-exports`, `imports` | `docs/reference/package-entrypoints.mdx` |103| `env`, `environment`, `configuration`, `flags` | `docs/reference/env-vars.mdx` |104| `native-image`, `image-decode`, `png`, `jpeg`, `webp`, `gif`, `rgba`, `pixels`, `resize` | `docs/reference/native-image.mdx` |105 106For a component request, read `docs/components/overview.mdx`, then open `docs/components/<name>.mdx`. For plugin slot107details, start at `docs/plugins/slots.mdx`, then open the Core, React, or Solid page.108 109## Current skill entry pages110 111- `docs/getting-started.mdx`112- `docs/getting-started/quickstart.mdx`113- `docs/getting-started/runtime-support.mdx`114- `docs/bindings/react.mdx`115- `docs/bindings/solid.mdx`116- `docs/core-concepts/renderer.mdx`117- `docs/core-concepts/layout.mdx`118- `docs/core-concepts/keyboard.mdx`119- `docs/components/overview.mdx`120- `docs/components/text.mdx`121- `docs/components/input.mdx`122- `docs/components/image.mdx`123- `docs/components/embedded-terminal.mdx`124- `docs/core-concepts/clipboard.mdx`125- `docs/core-concepts/audio.mdx`126- `docs/application-apis/audio-streaming.mdx`127- `docs/application-apis/audio-capture.mdx`128- `docs/application-apis/animation.mdx`129- `docs/core-concepts/testing.mdx`130- `docs/test-and-debug/troubleshooting.mdx`131- `docs/plugins/slots.mdx`132- `docs/extend/runtime-plugins.mdx`133- `docs/keymap/overview.mdx`134- `docs/reference/ssh.mdx`135- `docs/reference/three.mdx`136- `docs/reference/qr-encoder.mdx`137- `docs/ship/deploy.mdx`138- `docs/reference/standalone-executables.mdx`139- `docs/reference/api-index.mdx`140- `docs/reference/package-entrypoints.mdx`141- `docs/reference/env-vars.mdx`142- `docs/reference/native-image.mdx`143 144## Working rules145 146- Read an entry page first, then read the narrower canonical page for the task.147- Read the sibling `docs/**/*.mdx` files directly. Do not copy their prose into this file.148- Use canonical `/docs` URLs for references between documentation pages.149 For links in this file, use the corresponding relative `docs/**/*.mdx` paths.150 Discovery context
Discovered by repository scan. No exact path reference found in the snapshot’s root AGENTS.md.