Claude Code を使い始めて8ヶ月。正直、Plan Mode だけ使っておけばいいんでしょくらいの認識で、アップデート内容もろくに追っていませんでした。
ここ1週間でちゃんと調べてみたら、知らなかった機能や設定が出るわ出るわ。どれも前からあった機能なのに、調べるまで存在すら知らなかったです。
/help で出てくる基本機能や CLAUDE.md の書き方は省略しています。
@ のファイル検索を fzf に置き換える
Claude Code でファイルを参照するとき @ で検索しますが、大規模リポジトリだと遅かったり、目的のファイルになかなかたどり着けないことがありました。
これを fzf のファジー検索に置き換えると改善します。
~/.claude/settings.json:
{
"fileSuggestion": {
"type": "command",
"command": "~/.claude/file-suggestion.sh"
}
}
~/.claude/file-suggestion.sh:
#!/bin/bash
set -eu
query=$(cat | jq -r '.query')
cd "${CLAUDE_PROJECT_DIR:-.}"
{
# Git変更ファイルを最優先
if git rev-parse --is-inside-work-tree &>/dev/null; then
git diff --name-only 2>/dev/null || true
git diff --name-only --cached 2>/dev/null || true
git ls-files --others --exclude-standard 2>/dev/null
fi
# 全追跡ファイル
if git rev-parse --is-inside-work-tree &>/dev/null; then
git ls-files 2>/dev/null
else
fd --type f --hidden --exclude .git
fi
} | awk 'NF && !seen[$0]++' \
| if [ -n "$query" ]; then fzf --filter="$query"; else cat; fi \
| head -15
ポイントは2つ。fzf による高速なファジー検索と、Git の変更ファイルを先頭に出す優先順位付けです。デフォルトにはない機能なので、作業中のファイルがリストの上位に来るようになります。事前に fd、fzf、jq のインストールが必要です。
環境変数を Fish/Zsh 関数で切り替える
Claude Code には隠し環境変数がいくつかあって、用途によって切り替えると便利です。毎回 export するのは面倒なので、関数にまとめています。
Fish版(~/.config/fish/functions/cc.fish):
function cc --description "Claude Code with modes"
set -l env_vars
set -l claude_args
set -l awaiting_pr false
set -l awaiting_task false
set -l task_id ""
for arg in $argv
if $awaiting_pr
set -a claude_args --from-pr $arg
set awaiting_pr false; continue
end
if $awaiting_task
set task_id $arg
set awaiting_task false; continue
end
switch $arg
case team
set -a env_vars CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1
case fast
set -a env_vars DISABLE_INTERLEAVED_THINKING=1
case long
set -a env_vars BASH_MAX_TIMEOUT_MS=1800000
case c
set -a claude_args -c
case pr
set awaiting_pr true
case task
set awaiting_task true
case '*'
set -a claude_args $arg
end
end
# タスクリストID: 手動指定 or Gitリポジトリ名から自動生成
if test -z "$task_id"
set task_id (basename (git rev-parse --show-toplevel 2>/dev/null))
end
if test -n "$task_id"
set -a env_vars CLAUDE_CODE_TASK_LIST_ID=$task_id
end
if test (count $env_vars) -gt 0
env $env_vars claude $claude_args
else
claude $claude_args
end
end
使い方:
cc # 起動(タスクリストIDはGitリポジトリ名から自動設定)
cc team # Agent Teams 有効化
cc pr 123 # PR #123 のセッション再開
cc c # 前回のセッションを継続(-c)
cc task my-feat # タスクリストIDを手動指定
cc long team # 組み合わせ可能
ポイントは CLAUDE_CODE_TASK_LIST_ID の自動設定。Git リポジトリ名から自動生成するので、プロジェクトごとにタスクリストが分離されます。pr で --from-pr のラッパー、c で -c(前回セッション継続)のショートカットにもなります。
知っておくと便利な環境変数
| 変数 | 効果 | 公式 |
|---|---|---|
CLAUDE_CODE_EFFORT_LEVEL | Opus 4.6 の思考深度(low/medium/high) | 公式 |
ANTHROPIC_DEFAULT_OPUS_MODEL | opus エイリアスの指す先を変更 | 公式 |
ANTHROPIC_DEFAULT_SONNET_MODEL | sonnet エイリアスの指す先を変更 | 公式 |
DISABLE_INTERLEAVED_THINKING=1 | 段階的推論オフ(高速化) | 非公式 |
BASH_MAX_TIMEOUT_MS=1800000 | Bashタイムアウト30分(デフォルト2分) | 非公式 |
CLAUDE_CODE_MAX_OUTPUT_TOKENS | 出力トークン上限変更 | 非公式 |
ターミナルのキーバインドが奪われる問題
Claude Code を使っていて「Ctrl+T でタスクリストが開かない」「Shift+Enter で改行できない」と思ったことはありませんか。原因はターミナル側の設定です。
Ctrl+T が効かない
macOS のターミナルでは stty status がデフォルトで ^T に設定されています。これが Claude Code の Ctrl+T(タスクリスト表示)を横取りします。
# 確認
stty -a | grep status
# → status = ^T と表示されるはず
# 無効化
stty status undef
Fish で永続化する場合は ~/.config/fish/config.fish に追記:
stty status undef
Shift+Enter が効かない(tmux)
tmux 経由だと Shift+Enter(複数行入力)のキーシーケンスが正しく伝わりません。tmux.conf に以下を追加:
bind -n S-Enter send-keys Escape "[13;2u"
どちらもハマると地味に時間を溶かす。自分は Ctrl+T が効かない原因を探すのに30分かけた後、stty -a で一発だった。先に知っておけばよかった。
タスクリストを使い倒す
タスクリスト(Ctrl+T で表示)は、実は /clear してもセッション切り替えても残ります。これが地味に強い。
依存関係のあるタスク管理
Task 1: DBスキーマ設計
Task 2: API実装 ← Task 1完了待ち(blocked)
Task 3: フロントエンド ← Task 2完了待ち
Claude が自動で依存関係を追跡してくれるので、「次に何をすべきか」を迷わない。
Writer/Reviewer パターン
# ターミナル1(Writer)
CLAUDE_CODE_TASK_LIST_ID=feature-x claude
# 「実装して」→ Task完了
# ターミナル2(Reviewer)
CLAUDE_CODE_TASK_LIST_ID=feature-x claude
# 「レビューして」→ クリーンな視点でレビュー
同じタスクリストを共有するので、Writer が完了したタスクを Reviewer が確認できます。前述の cc 関数なら cc task feature-x で済みます。
/clear 後も計画が残る
/clear # コンテキスト解放
# タスクリストは永続化されている
「残りのタスク続けて」
保存場所は ~/.claude/tasks/ で、現時点では変更不可。シンボリックリンクで回避するしかないかも。
/teleport で Web とターミナルを行き来する
Claude Code は Web 版(claude.ai/code)でも使えます。Web 版の利点は 放置できる こと。ターミナルを閉じても、PCをシャットダウンしても処理が続きます。
# ターミナル → Web
& 重いリファクタリングして # &プレフィックスでWebに送信
# Web → ターミナル
/teleport # Webセッションを取得
/tp # 短縮形
Boris Cherny(Claude Code 作者)は、朝に Web で重いタスクを開始して放置、日中はターミナルで軽いタスクをこなし、夕方に Web の結果を /teleport で取得するワークフローを公開しています。Web 版はスマホからも操作できるので、通勤中にタスクを投げて会社で結果を受け取る、という使い方もできます。
--from-pr で PR 連動セッション再開
PR を作った翌日に続きをやりたいとき。
claude --from-pr 123 # PR番号で再開
claude --from-pr <URL> # URLで再開
gh pr create で作成した PR なら自動でリンクされるので、番号を指定するだけで前回の文脈を引き継いで作業できます。
Plan Mode を使いこなす
Plan Mode(Shift+Tab で切り替え、または /plan)は、Claude にコードを書かせる前に計画だけ立てさせるモード。読み取り専用のツールしか使えない状態で調査・設計し、マークダウンの計画書を ~/.claude/plans/ に出力します。
計画に満足したら Shift+Tab で通常モードに戻すと、Claude が計画書を読み込んで実装を開始します。計画の却下時にフィードバックを入力すれば、修正版を出してくれます。
計画書ファイルの活用
計画書は ~/.claude/plans/ にマークダウンとして残るので、再利用が効きます。
/clearしても計画書は消えない。「さっきの計画に従って実装して」で再開できる- 手動でファイルを編集して、計画の一部だけ修正してから実装に入ることも可能
- 別セッションで「
~/.claude/plans/にある最新の計画書を読んで続きを実装して」と指示する使い方もできる
出力が長すぎる問題
Plan Mode は放っておくとやたら長い出力を返すことがあります。GitHub でも 冗長性削減の要望 が出ていますが、まだ対応されていません。
CLAUDE.md に「プラン出力は200ワード以内」「抽象的な表現禁止」のような制約を書いておくと、多少マシになるかもしれません。自分も試している最中ですが、劇的に変わるわけではないです。
セッションデータを活用する
Claude Code は会話ログ、タスク、プランなど多くのデータを ~/.claude/ に蓄積しています。これを活用するツールがいくつか登場しています。
/insights で自分の使い方を分析
/insights
2026年2月4日に追加された公式機能。過去1ヶ月のセッションログ(最大50セッション)を分析し、インタラクティブな HTML レポートを ~/.claude/usage-data/report.html に出力します。
レポートの構成:
- 統計ダッシュボード: セッション数、メッセージ数、トークン消費量、コミット数、連続作業日数
- うまくいっていること: 自分のインタラクションスタイルや効果的だったワークフローの分析
- 妨げになっていること: Claude 側の問題(誤解、バグ)とユーザー側の問題(コンテキスト不足、環境問題)を分けて表示
- すぐに試せる改善: Hooks、スキル、MCP サーバーなど、実際の使用パターンに基づいた具体的な提案(コピペ可能)
「放棄したセッションが多い」「Hooks を活用できていない」など、人間のマネージャーみたいなフィードバックが返ってきます。2回実行すると内容が微妙に変わるので、定期的に回すと新しい発見があります。
プロンプト履歴から自分の課題を抽出する
Claude Code に入力したプロンプトは ~/.claude/projects/ の JSONL に全て残っています。これ、振り返ると面白い。自分が何に困って、何を聞いて、何を諦めたかが全部記録されています。
自分はこれを週次で Obsidian に抽出するスクリプトを書いて使っています。
#!/bin/bash
# ~/.claude/scripts/extract-prompts.sh
OBSIDIAN_BASE="$HOME/Documents/notes/Claude Prompts"
# JSONL からユーザープロンプトを抽出
find ~/.claude/projects -name "*.jsonl" -type f | while read logfile; do
jq -r '
select(.type == "user") |
select(.message.content | type == "string") |
select(.message.content | length > 15) |
.message.content | gsub("\n"; " ") | .[0:300]
' "$logfile"
done | sort -u > /tmp/prompts.txt
# AI で課題・発見を抽出
cat /tmp/prompts.txt | claude --print --model sonnet \
"課題や発見(困りごと、感情、要望、試行錯誤)を抽出して。
単なる指示は除外。" > "$OBSIDIAN_BASE/$(date +%Y-W%V).md"
抽出された結果は「型が合わなくて何度もやり直した」「テストの書き方が分からず諦めた」のような生々しい課題リストになります。
Claude Code へのプロンプトは、そのまま自分の課題リストだと思っている。何を聞いたかを振り返ると「ここが弱いんだな」が見えてくる。/insights がツールの使い方を改善するなら、こっちは自分自身のスキルを改善するためのもの。
MCP のコンテキスト消費を抑える
MCP サーバーをたくさん追加すると、起動時にツール定義だけでコンテキストの30-50%を消費することがあります。対策は2つあります。
Tool Search(自動・設定不要)
v2.1.7 で導入された公式機能。MCP ツール定義がコンテキストの10%を超えると自動で有効になり、ツールをオンデマンドで読み込みます。Anthropic のベンチマークでは、50以上の MCP ツールで約77Kトークン → 約8.7Kトークン(85%削減)という結果が出ています。
設定は不要で、最新版にアップデートするだけで有効になります。
ENABLE_EXPERIMENTAL_MCP_CLI=true(非公式)
Tool Search より踏み込んだ方法。この環境変数を設定すると、MCP ツールのスキーマが起動時に一切読み込まれなくなり、CLI 経由でオンデマンド取得に切り替わります。
export ENABLE_EXPERIMENTAL_MCP_CLI=true
Chrome MCP 2つで約32Kトークンが0になったという検証結果があります。ただしツール呼び出しごとに1往復増えるトレードオフがあります。
MCP を5個以上入れている人は Tool Search の恩恵が大きいはずです。Anthropic のベンチマークでは85%削減なので、セッション開始時点でコンテキストの半分近くが消えていた人は体感できるレベルで変わると思います。それでも足りなければ ENABLE_EXPERIMENTAL_MCP_CLI を試す価値あり。
スキルの Context Fork で並列実行
スキルのフロントマターに context: fork を設定すると、別のサブエージェントで実行されます。メインの会話コンテキストを汚さない。
---
name: heavy-analysis
context: fork
agent: explore
---
重い分析をスキルに切り出して context: fork するパターンは、コンテキスト管理の面で非常に有効です。
Wrapper Pattern でコマンドを軽量化
.claude/commands/review.md # 軽量エントリーポイント(~200バイト)
.claude/skills/review.md # 実際の実装(オンデマンド読み込み)
コマンドはスキルを呼び出すだけにして、実装はスキル側に置く。起動時のコンテキスト消費を最小限に抑えるテクニックです。
コマンドはセッション開始時に全て読み込まれますが、スキルはオンデマンドで読み込まれます。コマンドが多い人ほど効果大。
ステータスラインのカスタマイズ
複数セッションを並列で動かしていると「今どのセッションだっけ?」となりがち。カスタムステータスラインで対策できます。
ステータスラインは Claude Code の画面下部に常時表示されるバーです。デフォルトではモデル名やコンテキスト使用量が表示されますが、settings.json でシェルスクリプトの出力に差し替えられます。
~/.claude/settings.json:
{
"statusLine": {
"type": "command",
"command": "~/.claude/status-line.sh"
}
}
~/.claude/status-line.sh:
#!/bin/bash
echo "$(basename $CLAUDE_PROJECT_DIR) | ${CLAUDE_SESSION_ID:0:8}..."
この例ではプロジェクト名とセッション ID の先頭8文字を表示します。tmux で複数ペインを開いているときに、どのセッションがどのプロジェクトなのかが一目で分かります。
ykdojo/claude-code-tips に10色テーマ付きのスクリプトがあります。
Claude Code Hooksを遊び倒す|海外勢のネタ設定が面白すぎた開発Opus 4.6 で変わったこと
2026年2月5日に Opus 4.6 がリリースされ、v2.1.32 以降は デフォルトモデルが Opus 4.6 になりました(Max / Teams / Pro)。

主な変更点:
- Effort Level:
budget_tokens/MAX_THINKING_TOKENSが非推奨に。代わりに/modelのスライダーやCLAUDE_CODE_EFFORT_LEVELで思考深度をlow/medium/highから選択 - Agent Teams: まだ実験的機能で
CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1が必要。有効にすると自然言語でチーム作成を指示でき、Shift+Up/Downでチームメイトを切り替え - 1M トークンコンテキスト(beta):
/model sonnet[1m]で有効化。API / Pay-as-you-go ユーザーのみ、200K超は割増料金 - Compaction API(beta): サーバー側でコンテキスト自動圧縮。長時間のエージェントタスクでもコンテキスト切れを起こしにくくなる
コーディング性能は向上した一方、ドキュメント生成などの文章品質が下がったという報告もあります。文章生成がメインなら ANTHROPIC_DEFAULT_OPUS_MODEL で 4.5 に固定する選択肢もあります。公式リリースノートに詳しく書かれています。
おわりに
どれも「知っていれば30秒、知らなければ30分」みたいな話ばかりです。自分はターミナルの Ctrl+T 問題だけで30分溶かしたし、MCP のコンテキスト消費に気づかず「なんかすぐ溢れるな」と思いながら数週間過ごしていました。
Claude Code は更新が速くて、先月使えなかった機能が今月はデフォルトになっていたりします。この記事の内容もいつまで正確かは分かりません。
あなたが「もっと早く知りたかった」と思う Claude Code の Tips は何ですか?
Claude CodeでMacがスリープして困る?4つの解決策を比較してみた開発