
Claude Code v2.1.152 - `/code-review --fix`(作業ツリー適用)の詳細解説
クラウド事業本部の石川です。先日、Claude Code v2.1.152 の主要アップデートで/code-review --fix がレビュー結果を作業ツリーへ直接適用するようになり、また /simplify が /code-review --fix を呼び出すようになったことを紹介しました。いつもお世話になっているビルトインの/code-reviewなので、これまでの動作も確認しつつ、サンプルコードを用意して実際に試してみました。
本記事では、わざと「再利用・簡素化」の余地があるサンプルコードを用意し、/code-review で指摘を確認したうえで、/code-review --fix と /simplify が実際に作業ツリーへ修正を当てる様子を確認していきます。
なお、ここで扱うのは現在の作業差分をレビューするビルトインの /code-review です。GitHub の PR をレビューしてコメントを投稿するプラグイン版 code-review とは別物で、プラグイン版は既存の PR に対してレビュー結果をコメント形式で書き込むもの、本記事のビルトイン版はローカルの作業差分を対象に修正まで適用するもの、という違いがあります。
このアップデートで変わったこと
CHANGELOG(v2.1.152)に記載された変更点は次の2点です。
/code-review --fixが、レビュー後に指摘(再利用・簡素化・効率化の提案)を作業ツリーへ直接適用するようになった。/simplifyが/code-review --fixを呼び出すようになった。
/code-review 自体は、現在の差分に対して「バグ(correctness)」と「再利用・簡素化・効率化のクリーンアップ」を effort レベルに応じて指摘するコマンドです。指摘の出口には、PR のインラインコメントとして投稿する --comment と、作業ツリーへ適用する --fix があり、今回のアップデートは、この --fix がレビュー後に作業ツリーへ直接修正を当てることを明確にしたものです。
何が嬉しいのか
- レビューと修正の適用が1コマンドで完結する: レビューで見つかった指摘を、続けて作業ツリーへ反映するところまで
--fix1つで進みます。指摘を読み取って自分で当て直す手間が減ります。 - バグだけでなくクリーンアップまで対象: correctness(バグ)に限らず、コードの再利用(重複の共通化)・簡素化・効率化といったリファクタリング寄りの指摘も拾って適用してくれます。
- 作業ツリーに当たるので、確認・取捨選択しやすい: 変更はコミット前の作業ツリーに入るため、
git diffで中身を確認し、不要なものは戻す、という安全な試し方ができます。 /simplifyで気軽に呼べる: 「いまの差分をひと通りきれいにしたい」を、/simplifyの一語で実行できます(中身は/code-review --fix)。- effort で深さを選べる: 軽く高確度の指摘だけ欲しいときと、広く洗い出したいときを effort レベルで使い分けられます(low / medium は少数・高確度、high〜max は広め、ultra はクラウドでの多エージェントレビュー)。
/code-review --fix とは
/code-review は、現在の差分に対して次の観点で指摘するコマンドです。
- バグ(correctness)
- 再利用(重複の共通化)・簡素化・効率化のクリーンアップ
指摘の出口には、PR のインラインコメントとして投稿する --comment と、作業ツリーへ適用する --fix があります。今回のアップデートは、この --fix がレビュー後に作業ツリーへ直接修正を当てることを明確にしたものです。
全体の流れは次のとおりです。
コマンドの関係は次のとおりです。
やってみた
前提条件
- Claude Code 2.1.152
- macOS(Darwin 25.5.0)
- git 2.53.0 / Python 3.14.0
/code-reviewは現在の git diff をレビュー対象とするため、git 管理下のリポジトリと、レビュー対象の差分を用意します。
1. 検証用リポジトリとサンプルコードを用意する
まず git リポジトリを作り、素直な実装をコミットしておきます。
% git init
hint: Using 'master' as the name for the initial branch. This default branch name
hint: will change to "main" in Git 3.0. To configure the initial branch name
hint: to use in all of your new repositories, which will suppress this warning,
hint: call:
hint:
hint: git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: git branch -m <name>
hint:
hint: Disable this message with "git config set advice.defaultBranchName false"
Initialized empty Git repository in /Users/ishikawa.satoru/workspaces/cc/blog/20260528-code-review-fix/code-review-demo/.git/
合計金額を計算するだけの cart.py を作成し、初期状態としてコミットします。
"""買い物カゴの金額計算モジュール。"""
def calculate_total(items):
total = 0
for item in items:
total += item["price"] * item["quantity"]
return total
% git add cart.py && git commit -m "Add calculate_total for shopping cart"
[master (root-commit) 7c632a6] Add calculate_total for shopping cart
1 file changed, 8 insertions(+)
create mode 100644 cart.py
次に、レビューさせるための差分として、わざと「再利用・簡素化」の余地があるコードを追加します。calculate_total とほぼ同じ処理の重複関数や、== True を使った冗長な条件分岐です。
def calculate_subtotal(products):
subtotal = 0
for product in products:
subtotal += product["price"] * product["quantity"]
return subtotal
def is_premium_member(customer):
if customer["is_premium"] == True:
return True
else:
return False
def apply_discount(items, customer):
total = calculate_total(items)
if is_premium_member(customer) == True:
return total * 0.9
else:
return total
この時点での差分は次のとおりです。
% git diff
diff --git a/cart.py b/cart.py
index 6e3bd2a..4f305a2 100644
--- a/cart.py
+++ b/cart.py
@@ -6,3 +6,25 @@ def calculate_total(items):
for item in items:
total += item["price"] * item["quantity"]
return total
+
+
+def calculate_subtotal(products):
+ subtotal = 0
+ for product in products:
+ subtotal += product["price"] * product["quantity"]
+ return subtotal
+
+
+def is_premium_member(customer):
+ if customer["is_premium"] == True:
+ return True
+ else:
+ return False
+
+
+def apply_discount(items, customer):
+ total = calculate_total(items)
+ if is_premium_member(customer) == True:
+ return total * 0.9
+ else:
+ return total

2. まず /code-review で指摘だけ確認する
いきなり適用する前に、--fix を付けずに /code-review を実行し、どんな指摘が出るかを確認します。
/code-review
実行すると、レビュー用のプロンプトが起動しました。最大の effort では、correctness(バグ)の観点に加えて、再利用・簡素化・効率化といったクリーンアップの観点を含む複数の角度から多角的にレビューする設計であることが読み取れます。
今回の差分に対しては、次の指摘が返りました。--fix を付けていないため、この段階では作業ツリーは変更されません。
calculate_subtotalがcalculate_totalと同一ロジックの重複(再利用)is_premium_memberのif/elseによる真偽値返却が冗長(簡素化)apply_discountの== True比較が冗長(簡素化)


3. /code-review --fix で作業ツリーへ適用する
続いて --fix を付けて実行します。
/code-review --fix
--fix を付けると、レビュープロンプトの末尾に「指摘を作業ツリーへ適用する」フェーズが追加されました。挙動を変えてしまう指摘や誤検出は適用せずにスキップし、最後に適用結果を要約する、という流れです。

適用後、git diff で当たった内容を確認します。事前に適用前の状態をステージングしておくと、--fix が当てた差分だけを切り分けて確認できます。
% git diff
diff --git a/cart.py b/cart.py
index 6e3bd2a..58d7e74 100644
--- a/cart.py
+++ b/cart.py
@@ -6,3 +6,18 @@ def calculate_total(items):
for item in items:
total += item["price"] * item["quantity"]
return total
+
+
+def calculate_subtotal(products):
+ return calculate_total(products)
+
+
+def is_premium_member(customer):
+ return bool(customer.get("is_premium", False))
+
+
+def apply_discount(items, customer):
+ total = calculate_total(items)
+ if is_premium_member(customer):
+ return round(total * 0.9, 2)
+ return total
重複していた calculate_subtotal は calculate_total を呼び出す形に統合され、is_premium_member と apply_discount の冗長な if/else・== True も簡素化されました。
適用後のコードが壊れていないかも確認しておきます。
% python3 -c "
import cart
items = [{'price': 100, 'quantity': 2}, {'price': 50, 'quantity': 3}]
print('calculate_total :', cart.calculate_total(items))
print('calculate_subtotal:', cart.calculate_subtotal(items))
print('discount(premium) :', cart.apply_discount(items, {'is_premium': True}))
print('discount(normal) :', cart.apply_discount(items, {'is_premium': False}))
"
calculate_total : 350
calculate_subtotal: 350
discount(premium) : 315.0
discount(normal) : 350
calculate_subtotal は calculate_total と同じ 350 を返し、割引も期待どおりの値です。簡素化の前後で出力は一致しており、挙動は変わっていません。
4. /simplify がエイリアスであることを確認する
/simplify が /code-review --fix のエイリアスである点も確認します。新たに冗長な関数 has_items を追加してから /simplify を実行します。
def has_items(items):
if len(items) > 0:
return True
else:
return False
/simplify
/simplify を実行したところ、/code-review --fix を実行したときと**同一のレビュープロンプト(適用フェーズ付き)**が起動しました。エイリアスであることが確認できます。

has_items も次のように簡素化されました。
% git diff
diff --git a/cart.py b/cart.py
index 6e3bd2a..778a9c4 100644
--- a/cart.py
+++ b/cart.py
@@ -6,3 +6,22 @@ def calculate_total(items):
for item in items:
total += item["price"] * item["quantity"]
return total
+
+
+def calculate_subtotal(products):
+ return calculate_total(products)
+
+
+def is_premium_member(customer):
+ return bool(customer.get("is_premium", False))
+
+
+def apply_discount(items, customer):
+ total = calculate_total(items)
+ if is_premium_member(customer):
+ return round(total * 0.9, 2)
+ return total
+
+
+def has_items(items):
+ return len(items) > 0
考察
実際に試して分かった点を整理します。
- レビューと適用が1コマンドで完結する:
/code-review --fix1つで、指摘の洗い出しから作業ツリーへの反映まで進みます。今回はバグではなく、重複の共通化(再利用)と冗長な条件分岐の簡素化が適用されました。 - 作業ツリーに当たるので確認・取捨選択しやすい:
--fixは作業ツリーを書き換えますが、git add / commit までは行いません。そのためgit diffで内容を確認し、不要な変更はgit restore <file>で戻す、という進め方ができます。事前に適用前の状態をコミットまたはステージングしておくと、当たった差分の切り分けが楽になります。 /simplifyは/code-review --fixと同一: 起動するプロンプトが一致しており、「いまの差分をひと通り整えたい」を/simplifyの一語で実行できます。- effort で深さを選べる: 高確度の指摘だけ欲しいときと、広く洗い出したいときを effort(low / medium 〜 high / max)で使い分けられます。
一方で、注意したい点もあります。
- 指摘は毎回同一とは限りません: レビューは差分の内容に応じて指摘を組み立てるため、同じコードでも実行のたびに細部が変わる可能性があります。
--fixを当てたあとはgit diffで必ず内容を確認することをおすすめします。 ultraは別系統です:/code-review ultraはクラウド上で多エージェントが深くレビューするもので、ユーザーが明示的に起動する課金機能です。作業ツリーへ自動適用する--fixとは目的が異なるため、本記事では検証対象外としています。混同しないようにしてください。
最後に
Claude Code v2.1.152 の /code-review --fix を、サンプルコードを用意して実際に試しました。レビューで見つかった再利用・簡素化の指摘が作業ツリーへ直接適用され、git diff で内容を確認できること、/simplify が同一のエイリアスであることを確認できました。
変更はコミット前の作業ツリーに入るため、git diff で確認して必要なものだけを取り込む、という進め方ができます。日常的にコードレビューやリファクタリングを Claude Code に任せている方は、試してみてはいかがでしょうか。この記事がどなたかのお役に立てば幸いです。
参考リンク









