日常をターミナルで過ごしている。vimモーションでファイルを操作し、プレフィックスキーでtmuxペインを切り替え、Ctrl-Rでシェル履歴を検索する。そしてバックログのトリアージが必要になると、あらゆるプロジェクト管理ツールがマウスに手を伸ばすよう求めてくる。
Jiraはイシューを開くのにクリックが必要。パネルを閉じるのにもう1クリック。プロジェクト切り替えにもう1クリック。Linearは速いが、やはり根本的にマウスファーストだ: ポイントし、クリックし、スクロールする。GitHub Issuesはイシューを開くたびにフルページロードが発生する。これらのツールはブラウザで作業するプロダクトマネージャー向けに設計されており、ターミナルで作業する開発者向けではない。
1回のインタラクションでの摩擦は小さいが、1日を通すと膨大になる。午前中に30のイシューをトリアージする場合、それは30回のマウスに手を伸ばし、クリックし、読み、クリックして閉じるサイクルだ。本来リストを順にスキャンするだけで済むはずのことに、手がキーボードを60回離れる。
Beadboxはこれがばかげていると思う開発者のために作った。
キーボード完結のトリアージワークフロー
Beadboxはネイティブデスクトップアプリで(Tauriベース、Electronではない)、beadsイシュートラッカーのリアルタイムビジュアルダッシュボードをレンダリングする。エピックツリー、依存関係バッジ、ステータスフィルター、プログレスバーが表示される。そしてそのすべてをマウスに触れずにナビゲートできる。
トリアージセッションはこうなる:
-
Beadboxを開く。 最新のワークスペースが自動ロードされる。ステータスバッジ、優先度インジケーター、担当者カラム付きのテーブルにイシューが表示される。
-
jを押してリストを下に移動。kで上に移動。vim式モーションで、すでに持っている筋肉記憶と同じだ。選択ハイライトが位置を追跡する。 -
Enterを押して詳細パネルを開く。 選択されたイシューがサイドパネルに展開され、完全な説明、コメント、依存関係、メタデータが表示される。リスト上の位置を失わずに読める。 -
Escapeを押してパネルを閉じる。 リストに戻り、カーソルは離れた場所のまま。jを押して次のイシューに移動。 -
/を押して検索。 検索バーが現れる。キーワードやイシューIDを入力すると、リストが即座にフィルタリングされる。Escapeで検索をクリアし、全リストに戻る。 -
エピックツリーで矢印キーを使用。 ネストされた子を持つエピックを表示中に、左右矢印でツリーノードの折りたたみと展開ができる。
hとlも使える(vim式の水平ナビゲーション)。15イシューのエピックを、1つもディスクロージャートライアングルをクリックせずにスキャンできる。
以上だ。j/kで移動、Enterで開く、Escapeで閉じる、/で検索、矢印キーでツリー展開。5つのキーでトリアージナビゲーションの90%をカバーする。
トリアージ中にステータス変更や優先度の引き上げが必要なイシューを見つけたら、ターミナルに降りる:
bd update bb-f8o --status in_progress --priority 1
Beadboxはその変更をミリ秒以内に検知し(ファイルシステムウォッチとWebSocket経由)、再レンダリングする。リフレッシュもクリックも不要で、更新されたステータスバッジが見える。あとはjを押して先に進む。
読み書きが意図的に分離されている理由
ここが大半のGUIツールが間違えるところだ。すべてを処理しようとする: イシューの読み取り、フィールドの編集、ステータスの変更、依存関係の管理。結果はフォームの山だ。ステータスのドロップダウンメニュー。説明のテキスト入力。依存関係管理のモーダルダイアログ。これらのインタラクションのすべてがクリックを要求する。
Beadboxは別のアプローチを取った。読み取り重視のインターフェースだ。書き込みはCLIが処理する。
beads CLI(bd)は、イシューデータの正規ソースだ。エージェントが使い、スクリプトが使い、自動化が使う。GUIを通じた第2の書き込みパスを構築すると、同期の問題が発生し、バグの対象面積が2倍になる。
代わりに、Beadboxは理解とナビゲーションに徹底的に最適化している。ターミナルが最も苦手な質問に答える: エピックツリーの全体像は? どのイシューがブロックされていて、何に? この機能はどこまで進んだ? 直近1時間で何が変わった? これらはビジュアルな質問だ。bd listのフラットテキスト出力は技術的にはこれらに答えられるが、プログレスバー付きの折りたたみ可能なツリーは一目で答えを返す。
キーボードショートカットはその一目を速くするためにある。スキャンし、読み、理解する。行動が必要なときはbdコマンドを入力する。2つのツールが、それぞれ最も得意なことを担う。
コンテキストを失わないワークスペース切り替え
複数のプロジェクト(それぞれ独自のbeadsデータベースを持つ)で作業している場合、ワークスペースの切り替えが日常的な摩擦点になる。大半のプロジェクト管理ツールでは、プロジェクトの切り替えは別のURLへの遷移、別のワークスペースへのログイン、新しいブラウザタブの開設を意味する。フィルターがリセットされる。スクロール位置がリセットされる。前のプロジェクトで持っていたメンタルコンテキストが失われる。
Beadboxは別のやり方を取る。ヘッダーのドロップダウンに検出されたすべてのワークスペースがリストされる。クリック(またはキーボードでナビゲート)して別のプロジェクトを選ぶと、そのプロジェクトのデータベースからビュー全体がリロードされる。重要な点: フィルターとスクロール位置がワークスペースごとに保持される。戻したとき、すべてが離れたときの状態のままだ。
検出は自動だ。Beadboxが~/.beads/registry.jsonで登録済みワークスペースをスキャンし、.beads/データベースを含むディレクトリを発見する。新しいプロジェクトを追加し、そこでbd initを実行すれば、次にBeadboxを開いたときにドロップダウンに表示される。インポートも設定画面も「ワークスペースを追加」ウィザードもない。
複数のサービスを管理する開発者や、複数のリポジトリにまたがってエージェントを管理する開発者にとって、これはBeadboxをすべてのアクティブな作業にわたる単一ペインにする。代替手段は、複数のターミナルウィンドウで、それぞれ異なる--dbパスに対してbd listを実行し、どのウィンドウがどのプロジェクトを指しているかを頭の中で追跡することだ。
代替ツールとの比較
主要なプロジェクト管理ツールはすべて、基本的なナビゲーションにマウス操作を必要とする:
Jira にはキーボードショートカットがある(j/kが存在する)が、詳細を開くにはクリック、プロジェクト切り替えにはクリック、エピック管理のための深いネストメニューの操作にはクリックが必要なリストビュー間のナビゲーションだ。ショートカットは土台の上に後付けされた感がある。
Linear はSaaSツールの中でキーボードフレンドリーに最も近い。Cmd+Kでコマンドパレット、いくつかのナビゲーションショートカットがある。しかしワークスペースの切り替えはサイドバーメニューのクリックが必要で、コマンドパレットはスキャンファーストではなくサーチファーストのインタラクションモデルだ。探しているものが分かっている必要がある。トリアージはまだ分かっていないものをスキャンすることだ。
GitHub Issues にはトリアージのための意味のあるキーボードナビゲーションがない。イシューをクリックして開き(フルページロード)、戻るボタンをクリックして戻り、繰り返す。リポジトリ間の切り替えはURL変更だ。バックログのキーボードドリブンなスキャンは存在しない。
Beadbox は最初からキーボードトリアージを前提に設計された。ショートカットはマウスファーストUIの上に後から載せたものではない。ナビゲーションモデル全体が、手がキーボードに置かれたままであることを前提としている。マウスも機能する(すべてクリック可能)が、プライマリではなくフォールバックだ。
本当に比較しているもの
本当の違いは「どのツールがより多くのキーボードショートカットを持つか」ではない。インタラクションモデルだ。
マウスファーストのツールは発見可能性のために最適化する。すべてのアクションに見えるボタンがある。オンボーディングや機能を見つける必要がある非技術ユーザーには最適だ。やるべきことを知った後のスピードには最悪だ。
キーボードファーストのツールはスループットのために最適化する。j/k/Enter/Escapeを覚えれば、ポインティングの速度ではなく、読む速度でトリアージする。トレードオフは初期学習曲線が急なこと(ショートカットの存在を知る必要がある)。エディターやターミナルですでにvimモーションを使っている開発者にとって、その曲線は実質的にフラットだ。
Beadboxはまた、SaaSツールにはできないトレードオフも行っている: beads専用だ。Jiraのインテグレーション、Linearのサイクル、GitHubのプルリクエストリンクは得られない。ローカルにすべてを保存し、オフラインで動作し、AIエージェントがUnixパイプを通じてイシューを読み書きできるGitネイティブイシュートラッカーのビジュアルダッシュボードが得られる。それが自分のスタックなら、このキーボードワークフローに匹敵するものはない。イシューがクローズされたときにSlack通知が必要なら、今のところ適切なツールではない。
はじめよう
BeadboxをHomebrewでインストール:
brew tap beadbox/cask && brew install --cask beadbox
すでにbeadsを使っているなら、Beadboxが.beads/ワークスペースを自動検出する。アプリを開いてjを押し始めるだけだ。
macOS、Linux、Windowsで動作する。ベータ期間中は無料。
