opentui について
opentuiは、OpenTUIでターミナルUIを構築するためのリファレンススキルです。開発者がCore、React、Solidから方式を選び、コンポーネントや入力、レイアウト、テストの資料を参照できます。
主な機能
- 01フレームワーク選択ガイド
- 02Core、React、Solidのリファレンス
- 03コンポーネントとレイアウトの資料
- 04キーボードとアニメーションのガイド
- 05テストとトラブルシューティング資料
活用シーン
- 01新しいターミナルUIの方式選択
- 02TUI実装中のコンポーネント資料参照
- 03キーボード入力、レイアウト、アニメーションの実装
- 04OpenTUIプロジェクトのテストとデバッグ
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ pedronauck/ skills --skill opentuiインストール後、Claude Code で/opentuiを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/animation/REFERENCE.mdreferences/components/REFERENCE.mdcode-diff.mdcontainers.mdinputs.mdtext-display.mdreferences/core/REFERENCE.mdapi.mdconfiguration.mdgotchas.mdpatterns.mdreferences/keyboard/REFERENCE.mdreferences/layout/REFERENCE.mdpatterns.mdreferences/react/REFERENCE.mdapi.mdconfiguration.mdgotchas.mdpatterns.mdreferences/solid/REFERENCE.mdapi.mdconfiguration.mdgotchas.mdpatterns.mdreferences/testing/REFERENCE.md詳細
OpenTUI プラットフォームスキル
OpenTUI を使ってターミナルユーザーインターフェースを構築するための統合スキルです。以下の判断ツリーで適切なフレームワークとコンポーネントを見つけ、詳細なリファレンスを参照してください。
重要なルール
OpenTUI のコードでは、常に次のルールに従ってください。
- 新しいプロジェクトには
create-tuiを使用してください。 フレームワークのREFERENCE.mdにあるクイックスタートを参照してください。 create-tuiのオプションは引数より前に指定してください。bunx create-tui -t react my-appは動作しますが、bunx create-tui my-app -t reactは動作しません。process.exit()を直接呼び出さないでください。renderer.destroy()を使用してください(core/gotchas.mdを参照)。- React/Solid でテキストをスタイル設定するには、タグを入れ子にする必要があります。 props ではなく修飾要素を使用してください(
components/text-display.mdを参照)。
このスキルの使い方
リファレンスファイルの構成
フレームワークリファレンスは、5 ファイルのパターンに従います。複数領域にまたがる概念は、単一ファイルのガイドです。
./references/<framework>/ にある各フレームワークには、次のファイルが含まれます。
| ファイル | 目的 | 参照するタイミング |
|---|---|---|
REFERENCE.md | 概要、使用する場面、クイックスタート | 必ず最初に読む |
api.md | ランタイム API、コンポーネント、フック | コードを書くとき |
configuration.md | セットアップ、tsconfig、バンドル | プロジェクトを設定するとき |
patterns.md | 一般的なパターン、ベストプラクティス | 実装の参考 |
gotchas.md | 落とし穴、制限事項、デバッグ | トラブルシューティング |
./references/<concept>/ にある複数領域にまたがる概念では、REFERENCE.md がエントリーポイントです。
読む順序
- 選択したフレームワークの
REFERENCE.mdから読み始めます - 次に、タスクに関連するファイルを読みます。
- コンポーネントの構築 ->
api.md+components/<category>.md - プロジェクトのセットアップ ->
configuration.md - レイアウト/配置 ->
layout/REFERENCE.md - キーボード/入力処理 ->
keyboard/REFERENCE.md - アニメーション ->
animation/REFERENCE.md - トラブルシューティング ->
gotchas.md+testing/REFERENCE.md
- コンポーネントの構築 ->
パスの例
./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
ランタイムに関する注意事項
OpenTUI は Bun 上で動作し、ネイティブビルドに Zig を使用します。ランタイム要件とビルドのガイダンスについては、./references/core/gotchas.md を参照してください。
クイック判断ツリー
「どのフレームワークを使えばよいですか?」
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)
「コンテンツを表示したい」
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)
├─ Data table with borders/wrapping -> components/code-diff.md (TextTable)
├─ 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)
「ユーザー入力を受け付けたい」
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
「レイアウト/配置を行いたい」
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
「アニメーションを使いたい」
Animations?
├─ Timeline-based animations -> animation/REFERENCE.md
├─ Easing functions -> animation/REFERENCE.md
├─ Property transitions -> animation/REFERENCE.md
└─ Looping animations -> animation/REFERENCE.md
「入力を処理したい」
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 & copy-on-select -> keyboard/REFERENCE.md (selection)
└─ Clipboard (OSC 52) -> keyboard/REFERENCE.md (clipboard)
「TUI をテストしたい」
Testing?
├─ Snapshot testing -> testing/REFERENCE.md
├─ Interaction testing -> testing/REFERENCE.md
├─ Test renderer setup -> testing/REFERENCE.md
└─ Debugging tests -> testing/REFERENCE.md
「デバッグ/トラブルシューティングを行いたい」
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
トラブルシューティング索引
- ターミナルのクリーンアップ、クラッシュ ->
core/gotchas.md - テキストのスタイルが適用されない ->
components/text-display.md - 入力フォーカス/ショートカット ->
keyboard/REFERENCE.md - レイアウトのずれ ->
layout/REFERENCE.md - 不安定なスナップショット ->
testing/REFERENCE.md
コンポーネントの命名の違いとテキスト修飾子については、components/REFERENCE.md を参照してください。
製品索引
フレームワーク
| フレームワーク | エントリーファイル | 説明 |
|---|---|---|
| Core | ./references/core/REFERENCE.md | 命令型 API、すべてのプリミティブ |
| React | ./references/react/REFERENCE.md | 宣言型 TUI 用の React リコンサイラー |
| Solid | ./references/solid/REFERENCE.md | 宣言型 TUI 用の SolidJS リコンサイラー |
複数領域にまたがる概念
| 概念 | エントリーファイル | 説明 |
|---|---|---|
| レイアウト | ./references/layout/REFERENCE.md | Yoga/Flexbox レイアウトシステム |
| コンポーネント | ./references/components/REFERENCE.md | カテゴリー別のコンポーネントリファレンス |
| キーボード | ./references/keyboard/REFERENCE.md | キーボード入力処理 |
| アニメーション | ./references/animation/REFERENCE.md | タイムラインベースのアニメーション |
| テスト | ./references/testing/REFERENCE.md | テストレンダラーとスナップショット |
コンポーネントのカテゴリ
| カテゴリ | エントリーファイル | コンポーネント |
|---|---|---|
| テキストと表示 | ./references/components/text-display.md | text、ascii-font、styled text |
| コンテナ | ./references/components/containers.md | box、scrollbox、borders |
| 入力 | ./references/components/inputs.md | input、textarea、select、tab-select |
| コードと差分 | ./references/components/code-diff.md | code、line-number、diff、markdown、text-table |
リソース
リポジトリ: https://github.com/anomalyco/opentui コアドキュメント: https://github.com/anomalyco/opentui/tree/main/packages/core/docs サンプル: https://github.com/anomalyco/opentui/tree/main/packages/core/src/examples Awesome List: https://github.com/msmps/awesome-opentui