opentui
A comprehensive skill for building terminal user interfaces (TUIs) with the OpenTUI platform. It covers the core imperative API, React reconciler, and Solid reconciler for diverse TUI development tasks.
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.
A comprehensive skill for building terminal user interfaces (TUIs) with the OpenTUI platform. It covers the core imperative API, React reconciler, and Solid reconciler for diverse TUI development tasks.
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?
A comprehensive skill for building terminal user interfaces (TUIs) with the OpenTUI platform. It covers the core imperative API, React reconciler, and Solid reconciler for diverse TUI development tasks.
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
laravel-expert
Senior Laravel Engineer role for production-grade, maintainable, and idiomatic Laravel solutions. Focuses on clean architecture, security, performance, and modern standards (Laravel 10/11+).
debug-nw
Debug a Nativewind v5 setup issue. Walks through common configuration problems with metro, babel, postcss, and dependencies.
Go Production Engineering
You are a Go production engineering expert. Follow this system for every Go project — from architecture decisions through production deployment. Apply phases sequentially for new projects; use individual phases as needed for existing codebases.
Database Engineering Mastery
> Complete database design, optimization, migration, and operations system. From schema design to production monitoring — covers PostgreSQL, MySQL, SQLite, and general SQL patterns.
afrexai-code-reviewer
Enterprise-grade code review agent. Reviews PRs, diffs, or code files for security vulnerabilities, performance issues, error handling gaps, architecture smells, and test coverage. Works with any language, any repo, no dependencies required.
API Documentation Generator
Generate production-ready API documentation from endpoint descriptions. Outputs OpenAPI 3.0, markdown reference docs, and SDK quickstart guides.
bili-rs
Development skill for bili-rs, a Rust CLI tool for Bilibili (B站). Use when implementing features, fixing bugs, or extending the bilibili-cli-rust codebase. Provides architecture conventions, API endpoints, coding patterns, and project-specific constraints. Triggers on tasks involving adding CLI commands, calling Bilibili APIs, handling authentication, implementing output formatting, or working with the layered cli/commands/client/payloads architecture.
Puppeteer
Automate Chrome and Chromium with Puppeteer for scraping, testing, screenshots, and browser workflows.
pharaoh
Codebase knowledge graph with 23 development workflow skills. Query architecture, dependencies, blast radius, dead code, and test coverage via MCP. Requires GitHub App installation (read-only repo access) and OAuth authentication. Connects to external MCP server at mcp.pharaoh.so.
git-commit-helper
Generate standardized git commit messages following Conventional Commits format. Use this skill when the user asks to commit code, write a commit message, or create a git commit. Enforces team conventions for type prefixes, scope naming, message length, and breaking change documentation.
ask-claude
Delegate a task to Claude Code CLI and immediately report the result back in chat. Supports persistent sessions with full context memory. Safe execution: no data exfiltration, no external calls, file operations confined to workspace. Use when the user asks to run Claude, delegate a coding task, continue a previous Claude session, or any task benefiting from Claude Code's tools (file editing, code analysis, bash, etc.).
bnbchain-mcp
Interact with the BNB Chain Model Context Protocol (MCP) server. Blocks, contracts, tokens, NFTs, wallet, Greenfield, and ERC-8004 agent tools. Use npx @bnb-chain/mcp@latest or read the official skill page.