terminal-standards について
ターミナル制御シーケンスを出力または解析するソフトウェアの開発者向けリファレンスです。環境をまたぐ機能検出、代替策、後処理を扱います。
主な機能
- 01ターミナル規格の階層
- 02制御シーケンスの安全な扱い
- 03機能ネゴシエーションのチェックリスト
- 04ターミナルモードの後処理要件
- 05シーケンスと検出のリファレンス
活用シーン
- 01ターミナルユーザーインターフェースの構築
- 02色やターミナル機能への対応
- 03エラー後のモード復元の確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ josiahsiegel/ claude-plugin-marketplace --skill terminal-standardsインストール後、Claude Code で/terminal-standardsを入力して読み込まれたか確認します。
同梱ファイルreferences/capability-negotiation.mdreferences/escape-sequence-field-guide.md
詳細
ターミナル規格、エスケープシーケンス、機能ネゴシエーション
コードがターミナル制御シーケンスを出力または解析する場合、ターミナル機能に依存する場合、あるいはエミュレーター、マルチプレクサー、Windows コンソールホスト間で動作させる必要がある場合に、このスキルを使用してください。
規格の階層
次のような階層で考えてください。
- 基本: 印字可能なテキスト、復帰、改行、バックスペース、タブ。
- ECMA-48 / ANSI / ISO 6429: CSI 制御シーケンスと SGR 属性。
- DEC VT 系譜: カーソル移動、代替キーパッドモード、デバイスステータスパターン、プライベートモード。
- xterm の慣例: 代替画面、マウスモード、フォーカスイベント、ブラケット付きペースト、OSC 拡張。
- 最新のエミュレーター拡張: Kitty のキーボード/グラフィックス、iTerm2 の画像、sixel、OSC 8 ハイパーリンク、OSC 52 クリップボード、テーマ照会。
- プラットフォームホストの動作: Windows 仮想端末処理、ConPTY、tmux/screen によるフィルタリング、SSH の遅延。
この階層を下に進むほど、検出、フォールバック、クリーンアップが必要になります。
安全な既定値
- ハードコードされた制御シーケンスよりも、フレームワークの抽象化や terminfo/機能ライブラリを優先してください。
- スタイルは意図的にリセットしてください。複雑な SGR 出力の後にターミナルの既定値に戻ることを前提にしないでください。
- 不明な応答、応答がない場合、照会がブロックされた場合を通常のこととして扱ってください。
- クリップボード、画像、フォーカスイベント、拡張キーボードプロトコルを、主要機能の必須要件にしないでください。
- モードを有効にする際は、処理を続ける前にクリーンアップ経路を登録してください。
一般的なシーケンスと注意点
| 機能 | 典型的なシーケンス | 注意点 |
|---|---|---|
| 代替画面 | CSI ? 1049 h / CSI ? 1049 l | 無効化されている場合や、マルチプレクサーによって仲介される場合があります。クリーンアップは必須です。 |
| SGR リセット | CSI 0 m | 終了時とエラー発生後にリセットしてください。 |
| トゥルーカラー | CSI 38;2;R;G;B m / CSI 48;2;R;G;B m | 必要に応じて 256 色/16 色/色なしにダウンサンプリングしてください。 |
| ブラケット付きペースト | CSI ? 2004 h / CSI ? 2004 l | ペーストの境界を解析し、終了時に無効にしてください。 |
| SGR マウス | CSI ? 1006 h と追跡モード | パーサーと座標の検証が必要です。 |
| フォーカスイベント | CSI ? 1004 h | 補助的な情報として扱ってください。届かない場合があります。 |
| OSC 8 リンク | OSC 8 ; ; URI ST | URL を見える形で表示するフォールバックを用意してください。 |
| OSC 52 クリップボード | OSC 52 | ターミナル、マルチプレクサー、SSH ポリシー、セキュリティ設定によってブロックされることがよくあります。 |
| DCS パススルー | DCS ... ST | マルチプレクサーや一部のプロトコルで使用されます。環境への依存度が非常に高い機能です。 |
| ターミナルタイトル | OSC 0/2 | タイトルを復元するか、予期せず変更しないようにしてください。 |
| パレットの照会/変更 | OSC 4/10/11 の各種形式 | 便利ですが実装が断片化しています。変更は復元し、照会にはタイムアウトを設定してください。 |
詳細な表については、references/escape-sequence-field-guide.md を参照してください。
機能ネゴシエーションのチェックリスト
- stdout は TTY ですか?そうでない場合、既定ではカーソル制御と対話型モードを避けてください。
TERMは適切な値ですか?dumb、空の値、不明な値を処理してください。- アプリは tmux/screen の内部で実行されていますか?一部のプロトコルはフィルタリングされるか、パススルーが必要になると想定してください。
- 従来のコンソール API で Windows VT 処理が有効になっていますか?
- ライブラリは色レベルの検出機能を提供していますか?場当たり的な環境変数の解析より、それを優先してください。
- ユーザーが上書きできるオプション(
--color、--no-color、--plain、--ascii、--no-mouse)はありますか? - ターミナルからの応答を待ってアプリがハングしないよう、照会のタイムアウトに上限を設けていますか?
クリーンアップの取り決め
raw モード、代替画面、マウス追跡、ブラケット付きペースト、フォーカスイベント、カーソル非表示、またはキーボードプロトコルを有効にする場合は、通常の終了、Ctrl-C、パニック、例外、致命的エラー、初期化の一部失敗、テストのアサーション失敗時にクリーンアップされることを確認してください。
参考ファイル
references/escape-sequence-field-guide.md- ANSI/VT/xterm の制御シーケンスと注意点。references/capability-negotiation.md- ターミナル間での検出とフォールバックのパターン。
コメント
Markdown 対応