Claude Code User Settings Doctor
doctor.sh が Claude Code の user settings を診断し、--fix を付けると期待値に揃えます。
どの項目をどの値にすべきかは全て doctor.sh 側に定義されています。
この手順書は個々の設定項目を知らないので、項目が増減しても手順は変わりません。
手順
- 診断する。
--fixを付けない限り設定ファイルは一切変更されない:
${CLAUDE_SKILL_DIR}/doctor.sh
出力末尾の
RESULT:行で分岐する:ng=0→ 問題なし。[診断]の内容を要約して報告し、終了ng>0かつfixable>0→ 直せる項目がある。[NG]の項目名・現在値・期待値と、 なぜその値が良いかをユーザーに伝え、--fixを実行してよいか確認するng>0かつfixable=0→ user settings を直しても解決しない。[診断]の!行に理由が出ているので、それをそのまま伝えるuser_settings_state=invalid→ JSON が壊れていて設定全体が読み込まれない。--fixも実行できないので、先に手で修復する
ユーザーが同意した項目がある場合のみ書き換える:
${CLAUDE_SKILL_DIR}/doctor.sh --fix
--fixの出力に含まれる[修正後の再診断]とRESULT:で反映を確認し、結果を報告する。
出力の読み方
[設定ファイル]: 各スコープのパスと状態 (ok/missing/invalid)。<- --fix の書き込み先が付いている行が更新対象[診断]: 項目ごとに[OK]または[NG]。インデントされた行が現在値・期待値・理由で、!で始まる行は注意点、→で始まる行は--fixでは解決しないことを示す[修正]/[修正後の再診断]:--fixを付けたときだけ出るRESULT:: 機械可読なサマリ (ok/ng/fixable/fixed/user_settings_state)
診断項目を増やす・期待値を変える
doctor.sh 冒頭の CHECKS に1行足す (または既存行の期待値を変える) だけでよい。
項目固有の注意書きが必要なら、同ファイルに notes_<id>() を定義する。
この SKILL.md を変更する必要はない。
その他の設定を手で変更する場合
doctor.sh が扱うのは CHECKS に定義された項目だけ。
それ以外のキーを変えるときは、[設定ファイル] の user の行に出ているパスを対象にする
(CLAUDE_CONFIG_DIR があれば $CLAUDE_CONFIG_DIR/settings.json、無ければ ~/.claude/settings.json)。
そのパスを Read してから Edit する。バックアップを取ってから編集し、編集後に
jq . "<そのパス>" で JSON が壊れていないか確認すること。
Notes
- 依存:
jq(必須)、git(任意。プロジェクト設定のパス解決に使う) ${CLAUDE_SKILL_DIR}は Claude Code がこの SKILL.md の置かれたディレクトリに置換する。 personal / project / plugin のどこにインストールされていても、また現在の作業ディレクトリが どこでも同じように解決されるので、パスを組み立てる手順は不要allowed-toolsは引数なしのdoctor.sh(読み取り専用の診断) だけを許可している。 完全一致のルールなので--fixは含まれず、書き換え時は permission プロンプトが出る--fixは設定ファイルを書き換える。ユーザーに確認せず勝手に実行しない--fixは書き換え前に.bakを作り、対象キー以外は保持する~/.claude/は保護パスなので、書き込み時は permission プロンプトが出る。これは正常な挙動