Claude Media
Claude Codeのspellcheck設定 — 効く3か所と優先順位

Claude Codeのspellcheck設定 — 効く3か所と優先順位

spellcheck設定が読まれるのはユーザー設定・--settings・管理設定の3か所だけです。プロジェクト側の設定ファイルでは無視される点と、3か所が競合したときの優先順位をまとめます。

spellcheck設定はどこに書くと効くのか

Claude Codeのスペルチェックは、プロンプト入力欄の綴りミスに下線を引く機能です。既定ではオフで、spellcheck設定で有効にします。効くのは次の3か所だけです。

  • ユーザー設定(~/.claude/settings.json)
  • コマンドラインの--settingsで渡したJSON
  • 管理設定(managed settings)

プロジェクトの.claude/settings.jsonと.claude/settings.local.jsonに書いても、Claude Codeはspellcheckを無視します。チームのリポジトリにコミットして全員に配る、という使い方はできません。

3か所に別々の値があるときは、管理設定、--settings、ユーザー設定の順で1つだけが採用されます。項目ごとの合成はしません。この記事では、書き方と優先順位の挙動、下線が出ないときの切り分けを扱います。要件はClaude Code v2.1.235以降です。

設定の前に入れておく外部コマンド

Claude Codeは自前の辞書を持っていません。綴りが間違いかどうかは、ローカルにインストールしたチェッカーが判定します。

対応するのはaspell・hunspell・ispellの3つです。PATH上にあるものを、この順で探して最初に見つかったものを使います。Windowsでもパッケージマネージャーが置く.cmdのシムまで対象です。

インストールできたかは、ターミナルで確認できます。

aspell --version
hunspell --version
ispell -v

どれも「command not found」なら、PATHに入っていません。設定を書く前に、ここを先に通しておきます。

ユーザー設定に書く

個人で使うなら、いちばん素直な置き場所です。~/.claude/settings.jsonに書けば、開くすべてのプロジェクトで有効になります。

{
  "spellcheck": { "enabled": true }
}

有効になったかは、綴りを間違えた単語を打ってスペースを入れれば分かります。下線が付けば成功です。オフに戻すときは、同じ場所でenabledをfalseにするか、spellcheckごと消します。

設定ファイル全体の作法はClaude Code設定ガイドにまとめてあります。

--settingsで1セッションだけ有効にする

「今日のセッションだけ試したい」なら、--settingsが向いています。JSONをファイルに保存して渡します。

{
  "spellcheck": { "enabled": true }
}
claude --settings spellcheck.json

このファイルの内容は、そのセッションにしか効きません。ユーザー設定は書き換わらないので、試したあとの後始末が要りません。

管理設定で組織に配る

組織で揃えたいときの経路が管理設定です。配る側は管理設定のいずれかの経路にspellcheckを書きます。受け取る全員に適用され、利用者は自分で切れません。

プロジェクト設定で配れない代わりに、この経路が用意されている形です。管理設定の配り方そのものはClaude Code組織管理ガイドが扱っています。

3か所が競合したときの優先順位

一般の設定キーは、高い階層が低い階層を上書きしつつ、書いていないキーは下の値が残る合成になります。spellcheckは違います。

優先場所採用のされ方
1場所管理設定採用のされ方書かれていれば、ここのブロックだけを使う
2場所--settings採用のされ方管理設定に無いときだけ、ここのブロックを使う
3場所ユーザー設定採用のされ方上の2つに無いときだけ使う

spellcheckのブロックは、最も高い階層のものが丸ごと採用されます。フィールド単位でのマージはありません。

具体例で見ます。ユーザー設定に次の内容があるとします。

{
  "spellcheck": { "enabled": true, "language": "en_GB", "color": "yellow" }
}

このときclaude --settingsで{"spellcheck": {"enabled": true}}だけを渡すと、languageとcolorはユーザー設定から引き継がれません。辞書はチェッカーの既定、下線色はテーマのエラー色に戻ります。

ここから、次の挙動が導けます。

  • --settingsでenabled: falseを書けば、ユーザー設定が有効でもそのセッションはオフになる
  • 管理設定にspellcheckがあると、ユーザー設定のlanguageやcolorは効かない
  • 「一部だけ上書き」はできないので、上書きするなら全フィールドを書き直す

「languageだけ変えたいのに、enabledまで書かされる」と感じたら、この仕様が原因です。

追加できるフィールド

enabledの隣に、次の3つを置けます。どれも同じブロックの中に書きます。

フィールド値省略したとき
checker値aspell / hunspell / ispell / auto省略したときauto(PATH上で最初に見つかったもの)
language値en_GBのような辞書名省略したときチェッカーの既定辞書
color値yellow、#rrggbb、ansi256(n)など省略したときテーマのエラー色

checkerに名前を書くと、その1つしか使いません。未インストールでも、別のチェッカーには切り替わりません。auto以外の未知の値は、auto扱いになります。

languageはパスや空白入りの文字列を渡しても無視されます。使えるのは辞書名だけです。

hunspellの英国辞書で黄色の下線にする例です。

{
  "spellcheck": {
    "enabled": true,
    "checker": "hunspell",
    "language": "en_GB",
    "color": "yellow"
  }
}

日本語のプロンプトでは何が下線になるのか

日本語で指示を書くことが多い人は、この節が肝です。

Claude Codeは、中国語・日本語・韓国語・タイ語・ラオ語・クメール語・ミャンマー語のテキストを検査しません。日本語の文の中に混ざった英単語は、対象になります。

さらに、コードらしく見えるものは最初から除外されます。

  • /helpのようなコマンド、@メンション、URL、ファイルパス、--verboseのようなフラグ
  • 数字・アンダースコアを含む語、2文字目以降に大文字がある語(camelCaseなど)、バッククォートで囲んだ語

固有名詞や社内用語には下線が付きます。下線を消したい単語は、チェッカーの個人辞書に足します。Claude Code側に単語リストはなく、辞書を編集したら再起動すると反映されます。

入力欄以外は検査対象外です。Claudeの返答やファイルの中身は見ません。シェルモード(!)、Ctrl+Rの履歴検索、音声入力の最中も動きません。スクリーンリーダーモードも対象外です。

オフにしたいときはどこを直すのか

オンにした場所と同じ場所で、オフにします。ユーザー設定ならenabledをfalseにするかspellcheckを消します。--settingsなら、そのファイルを渡さずに起動します。

管理設定で有効にされている場合は、利用者側で切れません。ユーザー設定をfalseにしても、管理設定のブロックが優先されるためです。切りたい場合は、管理設定を配っている管理者に依頼することになります。

逆に、ユーザー設定でオンにしている人が1回だけ切りたいときは、enabledをfalseにした--settingsのファイルを渡す手があります。ユーザー設定のspellcheckより--settingsが上位なので、そのセッションだけオフになります。ただし管理設定がspellcheckを持っている環境では、この手は効きません。

どの場所を選ぶか

やりたいこと置き場所理由
自分のマシンで常に使う置き場所ユーザー設定理由全プロジェクトで有効になる
今日のセッションで試す置き場所--settings理由そのセッションだけで、後始末が不要
組織で揃える置き場所管理設定理由全員に適用され、利用者は切れない
チームのリポジトリで揃える置き場所(不可)理由プロジェクト設定では無視される

最後の行は、よく起きる取り違えです。リポジトリにコミットして配るつもりでも、受け取った側では何も起きません。

下線が出ないときの切り分け

設定を書いたのに何も出ないときは、まず優先順位を疑います。

  1. プロジェクト側の.claude/settings.jsonや.claude/settings.local.jsonに書いていないか。ここは読まれません
  2. より高い階層(管理設定や--settings)に別のspellcheckブロックがないか。あれば、ユーザー設定のブロックは丸ごと無効
  3. enabledがtrueか、checkerの名前が正しいか

次にチェッカー側を疑います。Claude Codeは、チェッカーを維持できなくなると黙って下線を出さなくなります。

  • チェッカーが未インストール、またはcheckerで指名したものが無い
  • チェッカーが2回続けて失敗した。1回目は再起動しますが、2回目で以後の検査をやめ、Claude Codeを再起動するまで戻りません
  • 応答に15秒を超えることが3回あった。3回目以降は検査をやめます

原因の特定には--debugが使えます。

claude --debug

スペルチェックを有効にした状態で単語を打つと、~/.claude/debug/<session-id>.txtに[spellcheck]で始まる行が出ます。起動したプログラム名、または探して見つからなかったプログラムの一覧が読めます。あとの行には、止まった理由が続きます。「辞書が無い」というエラーなら、languageで指定した辞書が入っていないか、languageを省略したのに既定の辞書が無い状態です。辞書を入れるか、手元にある辞書名をlanguageに書きます。

どの設定ファイルが読み込まれているかは、/statusで確認できます。ロード元を見れば、「自分のユーザー設定が上位に負けている」ケースがすぐ分かります。

Claudeに設定を書かせるときの頼み方

設定ファイルの編集をClaude Codeに任せるなら、書き込み先を指定します。「スペルチェックを有効にして」とだけ頼むと、プロジェクトの.claude/settings.jsonに書かれる可能性があります。そこでは無視されるので、次のように頼むと確実です。

~/.claude/settings.json に spellcheck を追加して。enabled は true、
checker は hunspell、language は en_GB。書いたあとに aspell/hunspell の
--version を実行して、PATH にあることも確認して。

書き込み先を明示し、コマンドの実行結果まで読ませる形にしておけば、「書いたのに効かない」を後から探し回らずに済みます。.claude/settings.jsonにcommitされたspellcheckを見つけたら、それは効いていない設定です。ユーザー設定か管理設定へ移す候補になります。

「効く場所が限られるキー」は他にもある

spellcheckのように、プロジェクトの設定ファイルでは働かないキーは他にもあります。設定リファレンスでは、スコープが「User or managed」などと書かれたキーがその仲間です。どのキーがどこで効くかは、設定の索引にあるScope列で確認できます。

絵文字ショートコードやPrompt suggestionsとの違いは、入力欄の補助機能を比べた記事にあります。あちらのキーは「Any file」で、プロジェクト設定にも書けます。

機能の追加経緯はv2.1.235のリリースノートで読めます。

まとめ

spellcheckは、ユーザー設定・--settings・管理設定の3か所でだけ読まれます。プロジェクト側のファイルに書いても効きません。優先順位は管理設定、--settings、ユーザー設定の順で、ブロックは丸ごと1つだけが採用されます。

書き足しでの部分上書きはできないので、上書きするなら全フィールドを書きます。日本語の文は検査されず、対象になるのは混ざった英単語です。下線が出ないときは、書き込み先、上位の階層、チェッカーの状態の順で確認します。

この記事を共有:XはてブLinkedIn