AIの出力は全部「プレーンテキスト」問題
AIコーディングエージェントに「このプランをレビューして」「この差分を直して」と頼むとき、 私たちはたいていターミナルに流れるプレーンテキストを眺めて、言葉で修正指示を返しています。 「3つ目の見出しのところ、もう少し具体的に」「そのエラーハンドリング、null チェックが抜けてる」—— こうした指示は「どこを」指しているのかが曖昧になりがちで、エージェントが別の箇所を直したり、 意図がずれたりします。
問題の根っこは、エージェントがプラン・コード・UIをすべて同じテキストとして扱う点にあります。 しかし人間がレビューするときは、プランには整形された文章ビューが、コードには構文ハイライト付きの差分が、 フロントエンドには実際に動く画面が必要です。Critはこの断絶を埋めるために作られた ローカルファーストのCLIツールです。
核心:エージェントとのレビューループ
Critの本質は単発のビューアではなく「レビューの往復(ループ)」にあります。 エージェントとのやり取りは次の流れで回ります。
flowchart TD
A["エージェントが成果物を生成<br/>(プラン / コード / UI)"] --> B["/crit でレビューUIを起動"]
B --> C["ブラウザで行コメントを残す<br/>Finish または Approve"]
C --> D{"未解決コメントは<br/>あるか?"}
D -->|あり| E["コメントがエージェントに戻る"]
E --> F["エージェントが修正して<br/>再度 Crit を起動"]
F --> G["前ラウンドとの差分を表示"]
G --> C
D -->|なし(承認)| H["レビュー完了"]
ポイントはラウンド間の差分(round-to-round diff)が表示されることです。 エージェントがコメントを受けて修正したあと、「前回から何が変わったのか」を分割ビューまたは ユニファイドビューで確認できます。全体を読み直す必要はなく、変更点だけを追えます。
3つの出力タイプを自動検出
Critは引数から出力タイプを判別し、それぞれに合ったUIをレンダリングします。
# コード差分:引数なしでgitの変更を自動検出し、構文ハイライト付き差分を表示
crit
# プラン:Markdownを整形表示してレビュー(複数指定も可)
crit plan.md
crit plan.md api-spec.md
# フロントエンド(起動中のdevサーバ):プロキシしてレビューUIを重ねる
crit http://localhost:3000
# フロントエンド(静的HTML):ランディングページなどをレンダリングしてレビュー
crit landing.html差分レビューでは、単一行はクリック、複数行はドラッグで範囲選択してコメントできます。 コメントはGitHubのPRレビューと同じく、対象行の直後にインライン表示されます。
インストール
Crit本体はGo製の単一バイナリです。主要な導入方法は以下のとおり。
# Homebrew(macOS / Linux)
brew install crit
# Go(1.26+ が必要)
go install github.com/tomasz-tomczyk/crit@latest
# Nix
nix profile install github:tomasz-tomczyk/crit
# Windows は Releases から crit-windows-*.exe を取得し、
# crit.exe にリネームして PATH に配置Send to agent:コメントを直接エージェントに送る
Critが単なるレビューツールと一線を画すのが「Send to agent」です。 レビュー画面の各コメントにある「Send now」を押すと、そのコメントが直接エージェントに渡り、 自動で修正が走るようになります。設定はグローバル設定の agent_cmd に エージェント起動コマンドを書くだけです。
{
"agent_cmd": "claude --dangerously-skip-permissions -p"
}仕組みはシンプルです。「Send now」を押すと、コメント本文・選択したテキストの引用・ファイルパス・ 行範囲が標準入力(stdin)でエージェントに渡され、エージェントの標準出力(stdout)が 返信として自動投稿されます。エージェントがファイルを編集すればCritがファイル監視で検知し、UIを更新します。 一度やり取りするとコメントはライブスレッド(⚡ live)になり、以降の返信は再クリック不要で 自動的にエージェントへ送られ、会話履歴も引き継がれます。
Claude Codeの権限モードは agent_cmd のフラグで調整します。
| 権限モード | agent_cmd の例 | できること |
|---|---|---|
| フルアクセス | claude --dangerously-skip-permissions -p | 読み書き・任意ツール実行すべて可 |
| 選択的アクセス | claude --allowedTools Edit,Read,Bash,Write,Glob,Grep -p | 許可したツールのみ実行可 |
| 権限なし | claude -p | コメントに返信できるがファイル編集は不可 |
対応エージェントはClaude Codeだけではありません。OpenCode(opencode ask)、 Cline(cline --pipe)、Aider(aider --message-file -)、 Cursor(実験的、cursor --pipe)など、stdin/stdoutで対話できるエージェントを差し替えられます。
Claude Codeプラグイン:/crit で全自動化
Claude Codeユーザーはプラグインを入れると、レビューループを/critスラッシュコマンド一発で回せます。
# Claude Code に Crit プラグインを追加
claude plugin marketplace add tomasz-tomczyk/crit
claude plugin install crit@crit会話中に /crit を実行すると、Critがコンテキスト(プラン/差分/フロントエンド)を 自動検出してレビューUIを起動し、レビュー完了まで待機します。あなたが残したコメントは そのまま会話に戻り、エージェントが修正して——承認されるまでこれが繰り返されます。プロンプトの手動コピペが一切不要になるのが最大の利点です。
共有とGitHub PR連携
レビューはローカルで完結しますが、必要なら他者と共有できます。共有したときだけファイルが 外部(デフォルトは crit.md)にアップロードされます。
# 非同期レビュー用に公開URLを発行(QRコードも表示可能)
crit share plan.md
crit share plan.md --qr
# 組織単位で共有(可視性も指定可)
crit share plan.md --org acme --visibility organization
# 共有を取り下げる
crit unpublish
# GitHub PR とコメントを同期(gh CLI が必要)
crit pull # 現在のブランチからPRを自動検出して取り込み
crit pull 42 # PR番号を明示
crit push # ローカルのコメントをPRへ投稿
crit push --dry-run # 投稿せずプレビュー共有レビューでは複数人のコメントが著者ごとに色分けされます。crit.md はcrit-webでセルフホストもでき、share_url を空文字にすれば共有機能自体を無効化できます。
その他の実用機能
- ブランチごとのレビュー隔離:各ブランチが独自のレビューファイルを持ち、切り替えてもコメントが失われない。
- ドラフト自動保存:レビュー途中でブラウザを閉じても、次回そこから再開できる。
- 並行レビュー:インスタンスごとに別ポートで動くため、複数のプランを同時にレビュー可能。
- ライブファイル監視:ソースが変わるとブラウザが自動リロード。
- Vim風キーバインド:
j/kで移動、cでコメント、Shift+FでFinish、?でキー一覧。 - テレメトリなし:解析データは一切収集しない(将来追加されても明示的オプトイン)。
Orcaや通常のレビューとの立ち位置
「AIエージェント × レビュー」という文脈で混同しやすいツールとの違いを整理します。
| 観点 | Crit | GitHub PR レビュー | ターミナルに直接指示 |
|---|---|---|---|
| 主な役割 | エージェント成果物への行コメント→修正指示 | 人間同士のコード変更レビュー | 自然言語で口頭指示 |
| 対象 | プラン / 差分 / フロントエンド | 主にコード差分 | 何でも(曖昧になりがち) |
| 「どこ」の指定 | ✅ 行・範囲をクリック/ドラッグで正確に指定 | ✅ 行単位で指定 | ❌ 言葉頼みで曖昧 |
| エージェントへの返送 | ✅ Send to agent / スラッシュコマンドで自動 | △ 手動でコピペ | △ 都度入力 |
| ラウンド間差分 | ✅ 前回からの変更を表示 | △ PR全体の履歴 | ❌ なし |
| ライセンス・価格 | MIT・無料 | GitHub依存 | — |
どんな場面で効くか
- 実装前のプランレビュー。エージェントが立てた設計プラン(Markdown)に対し、「この章はもっと具体的に」「この前提は誤り」と行単位で指摘し、そのまま修正させられる。
- コード差分の精密レビュー。「言葉でどの行か説明する」コストをゼロにし、null チェック漏れやエラーハンドリングの問題を該当行にピン留めして返せる。
- フロントエンドの見た目修正。起動中のdevサーバをプロキシし、実際の画面を見ながらレビューコメントを残せる。
- チームでの非同期レビュー。公開URLやGitHub PR連携で、他者のコメントも巻き込んでエージェントに反映できる。
まとめ
- ① 「どこが問題か」を行で指せる。Critはプラン・差分・フロントエンドを出力タイプごとに最適なUIで表示し、GitHubのPRレビューのように行・範囲を指してコメントできる。言葉頼みの曖昧な指示から卒業できる。
- ② レビューは往復(ループ)で回る。コメント→修正→ラウンド間差分の表示、という往復をコピペなしで繰り返せる。Claude Codeなら
/critでこの全工程が自動化される。 - ③ ローカルファースト・無料・安全設計。単一バイナリでローカル動作し、共有しない限りファイルは手元に留まる。
agent_cmdをグローバル設定限定にするなど、任意コマンド実行への配慮も効いている。
理解度チェック
Critが解決しようとしている根本的な問題として最も適切なものはどれですか?
キーボード: 1〜4 で選択、Enter で回答