プログラミング
Show HN: ターミナル用のコマンドパレットを構築しました – 6.2MB、純粋なGo、fzfなし
Show HN: I built a command palette for the terminal – 6.2MB, pure Go, no fzf (github.com)
要約
開発者がターミナルで日常的に使用するコマンドを素早く検索・実行できる「decoreba」というコマンドパレットが紹介されています。このツールは、6.2MBの単一バイナリで、依存関係がなく、Go標準ライブラリのみで構築されています。インライン表示、あいまい検索、タイポトレランス、使用頻度や時間経過によるランキング、複数ステップのワークフロー、AIエージェントとの連携機能などを備えています。
全文翻訳
decoreba
日常的に使用するが、決して覚えきれないコマンドのためのインラインファインダー。
約2ミリ秒の起動時間・6.2MBのバイナリ・依存関係ゼロ
機能・インストール・クイックスタート・使用法・シェル・同期・MCP
機能
インラインオーバーレイ — フルスクリーンアプリではなく、カーソルの下に開きます。痕跡なく閉じます。純粋なANSIエスケープコード、ライブラリなし。あいまい検索+タイポトレランス — Damerau-Levenshtein距離でタイポを検出します。アクセント正規化(próximoはproximoと一致)。最近性ランキング — スコア=あいまい一致+使用回数+指数関数的減衰(48時間半減期)。ピン留めされたコマンドはトップに留まります。ワークフロー — インタラクティブランナーを備えた複数ステップのコマンド。各ステップはタイトル+コマンドのペアです。ステップを入力して進み、Ctrl+Xで全て実行します。依存関係ゼロ — 純粋なGo標準ライブラリ。ncursesなし、fzfなし、デーモンなし。単一の6.2MBバイナリ。MCPサーバー — 標準入出力経由のモデルコンテキストプロトコル。AIエージェントがボルトから検索、追加、編集、実行できるようにします。
インストール
npm install -g decoreba
プラットフォーム用のプリビルドバイナリをダウンロードします。Goツールチェーンは不要です。
go install github.com/matheuzgomes/decoreba/cmd/decoreba@latest
クイックスタート
decoreba # カレントディレクトリからコンテキストを自動検出
decoreba git # "git"コンテキスト内で検索
decoreba add # コマンドを追加
decoreba edit 0c9 # IDプレフィックスで編集
decoreba stats # ボルト統計
全リファレンスは以下を参照してください。
使用法
パレット
オーバーレイはプロンプトの下に表示され、フルスクリーンではありません。入力してあいまい検索します。Enterでコマンドをコピーします。Ctrl+Xで実行します。
注意
Shift+Enterも実行しますが、kittyキーボードプロトコル(kitty、WezTerm、Ghostty)を実装しているターミナルのみです。ほとんどのターミナルでは、Shift+EnterはEnterと同じバイトを送信し、コピーします。
結果がビューポートを超えると、オーバーフローインジケーター(… あと3つ)が表示されます。ターミナルが3行以下の場合、代わりに丁寧なメッセージが表示されます。
NO_COLORまたは--no-colorはすべてのANSIコードを無効にします。
キーバインディング
ユニバーサル(すべてのターミナルエミュレータ)
キー アクション
↑ / Ctrl+K 上へ移動
↓ / Ctrl+J 下へ移動
Enter 選択したものをコピー
1 ~ 9 直接選択(空の検索)
Ctrl+X 選択したものを実行(2回押すか、yで確認)
Ctrl+E 選択したものを編集
Ctrl+S ピン留めを切り替え
Backspace(空) コンテキストチップを削除
Tab / Shift+Tab 次/前のフィールド(フォーム)
Esc / Ctrl+C キャンセル
Kittyプロトコルのみ(kitty、WezTerm、Ghostty)
キー アクション
Shift+Enter 選択したものを実行
実行モード
Ctrl+Xで実行がトリガーされます。確認プロンプトが表示されます。「このコマンドを実行しますか? y/yes n/no」Ctrl+Xをもう一度押すか、yで確認します。それ以外のキーはキャンセルします。
--shell-outputを使用すると、コマンドテキストはクリップボードではなく標準出力に表示されます。シェルウィジェット(以下)はプレフィックスを自動的に削除します:
decoreba docker ps --shell-output # "✓ docker ps" または "EXEC:docker ps" と表示
追加/編集フォーム
5つのフィールド:コンテキスト、タイトル、コマンド、タグ、ノート。
コンテキストは既存のエントリから自動補完されます。タグは色付きチップとしてレンダリングされます。
Ctrl+Wでコマンドを複数ステップのワークフローエディタに変換します。decoreba edit <id> またはパレットからCtrl+Eで、事前入力されたフォームを再表示します。
ワークフロー
コマンドは複数のステップを持つことができます。各ステップはタイトル+コマンドのペアです。Enterで次のステップを実行します。Ctrl+Xで残りの全てを実行します(最初のステップを確認します)。Escで中止します。失敗したステップは✗で表示されます。
サブプロセスI/Oは/dev/ttyを経由するため、パイプされている場合でもインタラクティブなプログラムが機能します。
変数
コマンド内の{{placeholder}}または{{name:default}}を使用します。コピーまたは実行時に、decorebaは各値をインラインでプロンプト表示します:
$ decoreba deploy
Container name: [web]
シェル統合
サブコマンド、コンテキスト、同期アクションのタブ補完を生成します:
eval "$(decoreba completion bash)" # または zsh / fish
Ctrl+Oウィジェット
入力した内容でパレットを事前入力して開きます。Enterでカーソル位置にコマンドを挿入します。Ctrl+Xで実行します(最初に確認)。
source <(decoreba shell bash) # または zsh
Init
ウィジェットと補完の両方をシェルrcファイルに一度にインストールします。変更する前にバックアップを作成します。
decoreba init # インタラクティブ
decoreba init --yes # 非インタラクティブ
Gist同期
プライベートGitHub Gist経由でボルトをマシン間で同期します。
decoreba sync init # 新しいGistを作成してアップロード
decoreba sync push # ローカル変更をアップロード
decoreba sync pull # リモート変更をダウンロード
decoreba sync status # ahead/behind/diverged/cleanを表示
Gistスコープを持つクラシックPATであるDECOREBA_GIST_TOKENが必要です。アップロード前にAES-256-GCMで暗号化するには--encryptを渡します。キーはトークンから派生します。
MCPサーバー
標準入出力経由でモデルコンテキストプロトコルサーバーを実行します。AIエージェント(Claude Desktop、Clineなど)がコマンドボルトに直接アクセスできるようにします。
decoreba mcp
アクション
decoreba_search 全コンテキストであいまい検索
decoreba_get IDでコマンドを検索
decoreba_list_contexts カウント付きで全コンテキストをリスト
decoreba_add 新しいコマンドを追加
decoreba_edit 既存のコマンドを更新
decoreba_remove IDで削除
decoreba_execute コマンドを実行して出力を返す
decoreba_stats ボルト統計
書き込みおよび削除ツールはconfirm: trueが必要です。危険なコマンド(rm -rf /, > /dev/sdaなど)は、組み込みの拒否リストによってブロックされます。自動バックアップは、変更のたびに実行されます。
データ
単一のJSONファイル。アトミック書き込み(.tmpに保存し、ターゲットの上にリネーム)。
OSパス
Linux $XDG_CONFIG_HOME/decoreba/commands.json
macOS ~/Library/Application Support/decoreba/commands.json
Windows %AppData%
ecoreba/commands.json
$DECOREBA_CONFIGでディレクトリをオーバーライドします(ファイル名は常にcommands.jsonです)。
パフォーマンス
メトリック 値
バイナリ 6.2 MB (CLI、-s -wでストリップ済み)
起動時間 ~2 ms
RSS ~7 MB
依存関係 ゼロ (純粋なGo標準ライブラリ)
ターゲット linux amd64/arm64, macOS amd64/arm64, windows amd64
デザイン
表示する、置き換えない。インラインオーバーレイ、代替画面ではない。ターミナルは以前と全く同じ状態です。入力が終わる前に正しい答えを出す。あいまい検索+タイポトレランス+最近性+ピン留め。キーボードファースト。すべての操作にショートカットがあります。ヒント行がそれらを段階的に教えます。マウスなし。カテゴリではなくコンテキスト。コマンドは所属するツールの下にあります。カレントディレクトリからの自動検出。アクセス可能。NO_COLORと--no-colorはすべてのANSIエスケープコードを無効にします。