コードレビューは品質が生まれる場所です — しかし、多くの人はWebブラウザでレビューしています:GitHubのPRページをスクロールし、diffをクリックして回り、コメントボタンを探し回る。機能はしますが、遅く、作業の流れを断ち切ります。
TUICR(読み: “ツイーカー”)は別のアプローチです:Vimキーバインドでターミナル内で動作するコードレビューTUI。Rust製の単一静的バイナリとして、GitHub風のdiff体験をターミナルにもたらし — ブラウザを開かずに実際のレビューをGitHubやGitLabにプッシュできます。
TUICRとは#
TUICRはコードレビューのためのターミナルUIで、以下を提供します:
- GitHub風の連続diff — 変更された全ファイルを1つのストリームでスクロール
- PRスタイルのコメント — 行・範囲・ファイル・レビューレベル
- レビュー追跡 — ファイルまたはハンク単位、セッションをまたいで永続化
- 3つの書き出し先 — GitHub/GitLabへ実際のレビューをプッシュ、構造化されたマークダウンをクリップボードへコピー、またはstdoutへパイプ
- git、jj、mercurial対応 — 未コミットの変更、コミット範囲、任意のGitHub PRやGitLab MRをレビュー
インストール#
# ワンライナー
curl -fsSL tuicr.dev/install.sh | sh
# Homebrew
brew install agavra/tap/tuicr
# Cargo
cargo install tuicr
# Nix
nix run github:agavra/tuicrbashクイックスタート#
tuicr # コミットセレクターから選択
tuicr -w # 未コミットの変更(セレクターをスキップ)
tuicr -r main..HEAD # コミット範囲
tuicr pr 125 # GitHub PR
tuicr mr 125 # GitLab MR
tuicr --stdout # レビューをstdoutにパイプbashTUI内:j/kで移動、cでコメント、yでレビューをコピー、:submitでGitHubまたはGitLabにプッシュ。
主な機能#
ターミナルでのGitHub風diff#
TUICRはGitHubと同じようにdiffをレンダリングします — 変更された全ファイルの連続ストリーム。[と]でハンクを移動、{と}でファイル間をジャンプ、/でdiffを検索。
あらゆるレベルのコメント#
- 行コメント(
c)— 特定の行にコメント - 範囲コメント(
v→コメント)— ビジュアルモードで範囲を選択 - ファイルコメント(
C)— ファイル全体にコメント - レビューコメント — レビュー全体のサマリーコメント
セッションをまたぐレビュー追跡#
TUICRはレビュー済みのファイルとハンクをファイルまたはハンク単位で追跡し、セッションをまたいで永続化します。以前レビューしたPRを開き直すと、最新の提出レビューより新しいコミットが自動選択されます。カバー済みのコミットはセレクターで✓が付きます。
ワンコマンド書き出し#
GitHubへ: :submitでComment、Approve、Request changes、Draftのピッカーが開きます。インラインコメントは実際のPRレビューとして正しい行に配置されます。認証済みのghが必要です。
GitLabへ: :submitでGitLab MRにComment、Approve、Request changesを提供。インラインコメントはディスカッションノートとして投稿されます。認証済みのglabが必要です。
コーディングエージェントへ: yで構造化されたマークダウンブロックをクリップボードにコピー:
I reviewed your code and have the following comments. Please address them.
1. `src/auth.rs` - Consider adding unit tests
2. `src/auth.rs:42` - Magic number should be a named constant
3. `src/auth.rs:50-55` - This block could be refactoredtextClaude、Codex、Cursorなど任意のコーディングエージェントに貼り付け。
stdoutへ: tuicr --stdout > review.md または tuicr --stdout | pbcopy。
Vimキーバインド#
| キー | アクション |
|---|---|
j / k | 下 / 上 |
Ctrl-d / Ctrl-u | 半ページ下 / 上 |
g / G | 先頭 / 末尾 |
{ / } | 前 / 次のファイル |
[ / ] | 前 / 次のハンク |
m / M | 次 / 前のコメント |
c / C | 行 / ファイルコメントを追加 |
v / V | ビジュアルモード(範囲コメント) |
r / R | ファイル / ハンクのレビュー済みを切替 |
e | フォーカス中のファイルを$EDITORで開く |
y | レビューをクリップボードにコピー |
:submit | レビューをGitHubまたはGitLabにプッシュ |
? | 完全なヘルプを切替 |
VCS対応#
TUICRはgit、jj、mercurialを自動検出します。以下をレビュー可能:
- 未コミットの変更
- コミット範囲
- GitHub PR
- GitLab MR
これは珍しいことです — ほとんどのレビューツールは1つのVCSまたは1つのプラットフォームに縛られています。
設定#
設定は~/.config/tuicr/config.tomlにあります:
theme = "catppuccin-mocha"
diff_view = "side-by-side" # または "unified"
appearance = "system" # または "dark" / "light"
mouse = truetoml22のバンドルテーマ(catppuccin、onedark、gruvbox、nord、solarized、tokyo-night、github、everforestなど)に加え、カスタムローカルテーマもサポート。
ライブラリAPI#
TUIに加えて、TUICRは永続化されたレビューセッション上にツールを構築するためのRustライブラリAPIを公開しています:
use tuicr::{AddCommentRequest, CommentTarget, CommentType, LineSide, ReviewStore};
let store = ReviewStore::new();
let sessions = store.list_sessions_for_repo("/path/to/repo")?;
let session = &sessions[0].session_ref;
store.add_comment(
session,
AddCommentRequest {
target: CommentTarget::Line {
path: "src/main.rs".into(),
line: 42,
side: LineSide::New,
},
content: "Handle the empty case here.".into(),
comment_type: CommentType::from_id("issue"),
},
)?;rust他のツールとの比較#
| 機能 | TUICR | hunk | lumen | gh pr review |
|---|---|---|---|---|
| TUI diffビューア | ✅ | ✅ | ✅ | ❌ |
| TUI内でコメント | ✅ | ✅ | ✅ | ❌ |
| Vimキーバインド | ✅ | ❌ | 一部 | ❌ |
| GitHubへインラインレビュー | ✅ | ❌ | ❌ | 一部 |
| GitLabへインラインレビュー | ✅ | ❌ | ❌ | ❌ |
| エージェント向けマークダウン | ✅ | スキル経由 | ❌ | ❌ |
| git | ✅ | ✅ | ✅ | ❌ |
| jj | ✅ | ✅ | ✅ | ❌ |
| Mercurial (hg) | ✅ | ❌ | ❌ | ❌ |
| 単一静的バイナリ | ✅ | Node必要 | ✅ | ✅ |
TUICRが重要な理由#
コードレビューはターミナルから離れることを強いるべきではありません。TUICRは、diffを読み、コメントを残し、レビューを提出するという完全なレビューワークフローを、あなたがすでに使い慣れたツールとキーバインドにもたらします。
エージェント対応のマークダウン書き出しは特に先進的な機能です:構造化されたレビューをClaude CodeやCursorに貼り付ければ、エージェントが各コメントをファイルと行に固定された番号付きの形で対応します。
ターミナルで生活する開発者にとって、TUICRは待ち望んでいたコードレビューツールです。