opentui
Comprehensive OpenTUI skill for building terminal user interfaces. Covers the core imperative API, React reconciler, and Solid reconciler. Use for any TUI development task including components, layout, keyboard handling, animations, and testing.
About this skill
This skill serves as a consolidated guide for AI agents tasked with developing Terminal User Interfaces (TUIs) using the OpenTUI platform. It provides extensive knowledge spanning the core imperative API, as well as integrations with popular frontend frameworks like React and Solid through their respective reconcilers. The skill details critical rules and best practices for OpenTUI development, ensuring consistent and high-quality output. AI agents can leverage this skill for a wide array of TUI development tasks, including initializing new projects with `create-tui`, designing and implementing custom components, managing complex layouts, handling keyboard input, creating animations, and setting up comprehensive testing environments. It also includes guidance on project configuration, troubleshooting common pitfalls, and adhering to specific OpenTUI conventions. Users would employ this skill to ensure that their AI agent generates OpenTUI code that follows established patterns, avoids common errors like direct `process.exit()` calls, and utilizes correct styling methodologies. By providing a structured reference to OpenTUI's modular documentation, it significantly streamlines the TUI development workflow for AI-assisted coding.
Best use case
The primary use case is to empower AI agents to efficiently develop, debug, and configure modern Terminal User Interfaces (TUIs) using the OpenTUI framework. Software developers and technical teams seeking to automate or accelerate the creation of command-line applications and interactive terminal tools will benefit most, as it ensures generated code aligns with OpenTUI's architecture and best practices.
Comprehensive OpenTUI skill for building terminal user interfaces. Covers the core imperative API, React reconciler, and Solid reconciler. Use for any TUI development task including components, layout, keyboard handling, animations, and testing.
The user should expect well-structured, functional OpenTUI applications or code snippets, adhering to OpenTUI's best practices and critical rules, with efficient guidance on development, configuration, and troubleshooting.
Practical example
Example input
Create a new OpenTUI application using React, named 'my-cli-tool', that displays a welcome message and a clickable button. Also, ensure proper text styling.
Example output
Agent will use `bunx create-tui -t react my-cli-tool` and then guide on creating `src/App.tsx` with nested text tags for styling, e.g., `<Box><Text color='blue'>Welcome!</Text></Box>` and a `<Button>Click Me</Button>` component, ensuring `renderer.destroy()` is used for exit.
When to use this skill
- When initiating a new terminal user interface project using OpenTUI.
- When developing or refactoring TUI components, layouts, or input handling with OpenTUI.
- When configuring OpenTUI projects, especially with React or SolidJS.
- When an AI agent needs to troubleshoot or understand common pitfalls in OpenTUI development.
When not to use this skill
- When developing graphical user interfaces (GUIs) for desktop or web environments.
- When the development task involves TUI frameworks other than OpenTUI.
- When the AI agent needs to perform tasks unrelated to front-end or terminal-based coding.
- When working on backend services without any direct user interface component.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/opentui/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How opentui Compares
| Feature / Agent | opentui | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | easy | N/A |
Frequently Asked Questions
What does this skill do?
Comprehensive OpenTUI skill for building terminal user interfaces. Covers the core imperative API, React reconciler, and Solid reconciler. Use for any TUI development task including components, layout, keyboard handling, animations, and testing.
How difficult is it to install?
The installation complexity is rated as easy. You can find the installation instructions above.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
Related Guides
AI Agents for Coding
Browse AI agent skills for coding, debugging, testing, refactoring, code review, and developer workflows across Claude, Cursor, and Codex.
Best AI Skills for Claude
Explore the best AI skills for Claude and Claude Code across coding, research, workflow automation, documentation, and agent operations.
Cursor vs Codex for AI Workflows
Compare Cursor and Codex for AI coding workflows, repository assistance, debugging, refactoring, and reusable developer skills.
SKILL.md Source
# OpenTUI Platform Skill Consolidated skill for building terminal user interfaces with OpenTUI. Use decision trees below to find the right framework and components, then load detailed references. ## Critical Rules **Follow these rules in all OpenTUI code:** 1. **Use `create-tui` for new projects.** See framework `REFERENCE.md` quick starts. 2. **`create-tui` options must come before arguments.** `bunx create-tui -t react my-app` works, `bunx create-tui my-app -t react` does NOT. 3. **Never call `process.exit()` directly.** Use `renderer.destroy()` (see `core/gotchas.md`). 4. **Text styling requires nested tags in React/Solid.** Use modifier elements, not props (see `components/text-display.md`). ## How to Use This Skill ### Reference File Structure Framework references follow a 5-file pattern. Cross-cutting concepts are single-file guides. Each framework in `./references/<framework>/` contains: | File | Purpose | When to Read | | ------------------ | ---------------------------------- | ----------------------- | | `REFERENCE.md` | Overview, when to use, quick start | **Always read first** | | `api.md` | Runtime API, components, hooks | Writing code | | `configuration.md` | Setup, tsconfig, bundling | Configuring a project | | `patterns.md` | Common patterns, best practices | Implementation guidance | | `gotchas.md` | Pitfalls, limitations, debugging | Troubleshooting | Cross-cutting concepts in `./references/<concept>/` have `REFERENCE.md` as the entry point. ### Reading Order 1. Start with `REFERENCE.md` for your chosen framework 2. Then read additional files relevant to your task: - Building components -> `api.md` + `components/<category>.md` - Setting up project -> `configuration.md` - Layout/positioning -> `layout/REFERENCE.md` - Keyboard/input handling -> `keyboard/REFERENCE.md` - Animations -> `animation/REFERENCE.md` - Troubleshooting -> `gotchas.md` + `testing/REFERENCE.md` ### Example Paths ``` ./references/react/REFERENCE.md # Start here for React ./references/react/api.md # React components and hooks ./references/solid/configuration.md # Solid project setup ./references/components/inputs.md # Input, Textarea, Select docs ./references/core/gotchas.md # Core debugging tips ``` ### Runtime Notes OpenTUI runs on Bun and uses Zig for native builds. Read `./references/core/gotchas.md` for runtime requirements and build guidance. ## Quick Decision Trees ### "Which framework should I use?" ``` Which framework? ├─ I want full control, maximum performance, no framework overhead │ └─ core/ (imperative API) ├─ I know React, want familiar component patterns │ └─ react/ (React reconciler) ├─ I want fine-grained reactivity, optimal re-renders │ └─ solid/ (Solid reconciler) └─ I'm building a library/framework on top of OpenTUI └─ core/ (imperative API) ``` ### "I need to display content" ``` Display content? ├─ Plain or styled text -> components/text-display.md ├─ Container with borders/background -> components/containers.md ├─ Scrollable content area -> components/containers.md (scrollbox) ├─ ASCII art banner/title -> components/text-display.md (ascii-font) ├─ Code with syntax highlighting -> components/code-diff.md ├─ Diff viewer (unified/split) -> components/code-diff.md ├─ Line numbers with diagnostics -> components/code-diff.md └─ Markdown content (streaming) -> components/code-diff.md (markdown) ``` ### "I need user input" ``` User input? ├─ Single-line text field -> components/inputs.md (input) ├─ Multi-line text editor -> components/inputs.md (textarea) ├─ Select from a list (vertical) -> components/inputs.md (select) ├─ Tab-based selection (horizontal) -> components/inputs.md (tab-select) └─ Custom keyboard shortcuts -> keyboard/REFERENCE.md ``` ### "I need layout/positioning" ``` Layout? ├─ Flexbox-style layouts (row, column, wrap) -> layout/REFERENCE.md ├─ Absolute positioning -> layout/patterns.md ├─ Responsive to terminal size -> layout/patterns.md ├─ Centering content -> layout/patterns.md └─ Complex nested layouts -> layout/patterns.md ``` ### "I need animations" ``` Animations? ├─ Timeline-based animations -> animation/REFERENCE.md ├─ Easing functions -> animation/REFERENCE.md ├─ Property transitions -> animation/REFERENCE.md └─ Looping animations -> animation/REFERENCE.md ``` ### "I need to handle input" ``` Input handling? ├─ Keyboard events (keypress, release) -> keyboard/REFERENCE.md ├─ Focus management -> keyboard/REFERENCE.md ├─ Paste events -> keyboard/REFERENCE.md ├─ Mouse events -> components/containers.md └─ Text selection -> components/text-display.md ``` ### "I need to test my TUI" ``` Testing? ├─ Snapshot testing -> testing/REFERENCE.md ├─ Interaction testing -> testing/REFERENCE.md ├─ Test renderer setup -> testing/REFERENCE.md └─ Debugging tests -> testing/REFERENCE.md ``` ### "I need to debug/troubleshoot" ``` Troubleshooting? ├─ Runtime errors, crashes -> <framework>/gotchas.md ├─ Layout issues -> layout/REFERENCE.md + layout/patterns.md ├─ Input/focus issues -> keyboard/REFERENCE.md └─ Repro + regression tests -> testing/REFERENCE.md ``` ### Troubleshooting Index - Terminal cleanup, crashes -> `core/gotchas.md` - Text styling not applying -> `components/text-display.md` - Input focus/shortcuts -> `keyboard/REFERENCE.md` - Layout misalignment -> `layout/REFERENCE.md` - Flaky snapshots -> `testing/REFERENCE.md` For component naming differences and text modifiers, see `components/REFERENCE.md`. ## Product Index ### Frameworks | Framework | Entry File | Description | | --------- | --------------------------------- | -------------------------------------- | | Core | `./references/core/REFERENCE.md` | Imperative API, all primitives | | React | `./references/react/REFERENCE.md` | React reconciler for declarative TUI | | Solid | `./references/solid/REFERENCE.md` | SolidJS reconciler for declarative TUI | ### Cross-Cutting Concepts | Concept | Entry File | Description | | ---------- | -------------------------------------- | ------------------------------- | | Layout | `./references/layout/REFERENCE.md` | Yoga/Flexbox layout system | | Components | `./references/components/REFERENCE.md` | Component reference by category | | Keyboard | `./references/keyboard/REFERENCE.md` | Keyboard input handling | | Animation | `./references/animation/REFERENCE.md` | Timeline-based animations | | Testing | `./references/testing/REFERENCE.md` | Test renderer and snapshots | ### Component Categories | Category | Entry File | Components | | -------------- | ----------------------------------------- | ----------------------------------- | | Text & Display | `./references/components/text-display.md` | text, ascii-font, styled text | | Containers | `./references/components/containers.md` | box, scrollbox, borders | | Inputs | `./references/components/inputs.md` | input, textarea, select, tab-select | | Code & Diff | `./references/components/code-diff.md` | code, line-number, diff, markdown | ## Resources **Repository**: https://github.com/anomalyco/opentui **Core Docs**: https://github.com/anomalyco/opentui/tree/main/packages/core/docs **Examples**: https://github.com/anomalyco/opentui/tree/main/packages/core/src/examples **Awesome List**: https://github.com/msmps/awesome-opentui
Related Skills
raycast-extension-docs
Guidance for building, debugging, and publishing Raycast extensions using the Raycast documentation set. Use when Codex needs to create or modify Raycast extensions (React/TypeScript/Node), consult Raycast API reference or UI components, build AI extensions, handle manifest/lifecycle/preferences, troubleshoot issues, or prepare/publish extensions to the Raycast Store or Teams.
maestro
Intelligent skill knowledge gateway. Routes tasks to the right knowledge without loading all skills into context. MUST be consulted before any coding task — call the search_skills MCP tool to retrieve relevant expertise from 100+ indexed skills covering Swift, SwiftUI, concurrency, testing, architecture, performance, and security.
frontend-design
Create distinctive, production-grade frontend interfaces with intentional aesthetics, high craft, and non-generic visual identity. Use when building or styling web UIs, components, pages, dashboard...
better-skills
Index and route better-skills vault operations from the CLI. Trigger when users ask to manage better-skills or a skill vault (create, edit, delete, remove, search, import, clone, link, sync, backup, onboard, enable/disable vaults, inspect available vaults, move a skill across vaults). Do not use when asked to use a skill.
web-design-guidelines
Review UI code for Web Interface Guidelines compliance. Use when asked to "review my UI", "check accessibility", "audit design", "review UX", or "check my site against best practices".
vercel-react-best-practices
React and Next.js performance optimization guidelines from Vercel Engineering. This skill should be used when writing, reviewing, or refactoring React/Next.js code to ensure optimal performance patterns. Triggers on tasks involving React components, Next.js pages, data fetching, bundle optimization, or performance improvements.
vercel-composition-patterns
React composition patterns that scale. Use when refactoring components with boolean prop proliferation, building flexible component libraries, or designing reusable APIs. Triggers on tasks involving compound components, render props, context providers, or component architecture. Includes React 19 API changes.
turborepo
Turborepo monorepo build system guidance. Triggers on: turbo.json, task pipelines, dependsOn, caching, remote cache, the "turbo" CLI, --filter, --affected, CI optimization, environment variables, internal packages, monorepo structure/best practices, and boundaries. Use when user: configures tasks/workflows/pipelines, creates packages, sets up monorepo, shares code between apps, runs changed/affected packages, debugs cache, or has apps/packages directories.
next-cache-components
Next.js 16 Cache Components - PPR, use cache directive, cacheLife, cacheTag, updateTag
next-best-practices
Next.js best practices - file conventions, RSC boundaries, data patterns, async APIs, metadata, error handling, route handlers, image/font optimization, bundling
neon-postgres
Guides and best practices for working with Neon Serverless Postgres. Covers getting started, local development with Neon, choosing a connection method, Neon features, authentication (@neondatabase/auth), PostgREST-style data API (@neondatabase/neon-js), Neon CLI, and Neon's Platform API/SDKs. Use for any Neon-related questions.
hono
Efficiently develop Hono applications using Hono CLI. Supports documentation search, API reference lookup, request testing, and bundle optimization.