Personal dotfiles managed by chezmoi.
| Source | Target |
|---|---|
dot_zshrc |
~/.zshrc |
dot_zshenv |
~/.zshenv |
dot_zprofile |
~/.zprofile |
dot_p10k.zsh |
~/.p10k.zsh |
dot_zsh/alias.zsh |
~/.zsh/alias.zsh |
dot_zsh/brew_drift_check.zsh |
~/.zsh/brew_drift_check.zsh |
dot_zsh/herdr.zsh |
~/.zsh/herdr.zsh(herdr 用のシェル設定。自分の pane ID を herdr にカスタムトークンとして報告する _herdr_report_pane_id を定義する。~/.zsh/*.zsh の source は mise activate より前で herdr が PATH に無いため、定義だけを置き呼び出しは dot_zshrc の mise activate 直後に置いている) |
dot_tmux.conf |
~/.tmux.conf |
executable_dot_tmux-rename-session |
~/.tmux-rename-session |
dot_gitconfig.tmpl |
~/.gitconfig |
dot_ideavimrc |
~/.ideavimrc |
dot_crit.config.json |
~/.crit.config.json(crit のグローバル設定。plan_approve_mode で plan 承認後の Claude Code permission mode を指定する。プロジェクト側 .crit.config.json からは上書き不可) |
dot_config/nvim/ |
~/.config/nvim/ |
dot_config/karabiner/karabiner.json |
~/.config/karabiner/karabiner.json |
dot_config/mise/config.toml.tmpl |
~/.config/mise/config.toml(言語ランタイム + aqua バックエンドの主要 CLI ツール群。aqua 未登録のツールは github バックエンド等を使い、npm 配布の WXT は npm バックエンドで管理する。private tool はここに書かない — lockfile mise.lock を追跡しているため、下記 config.local.toml に隔離する) |
dot_config/mise/private_config.local.toml.tmpl |
~/.config/mise/config.local.toml(private tool 専用の machine-local config。mode 0600。private_tool_repo を設定したマシンでのみ展開され、lockfile は mise.local.lock に分離されて追跡されない) |
dot_config/mise/private_mise.lock |
~/.config/mise/mise.lock(mise の lockfile。全ツールの version / URL / checksum を複数プラットフォーム分固定して再現性を担保する。mode 0600。生成物なので手で編集せず mise lock -g → cp で同期する。手順は下記 "mise lockfile の更新" 参照) |
dot_config/helm/repositories.yaml |
~/.config/helm/repositories.yaml |
dot_config/cage/presets.yml |
~/.config/cage/presets.yml |
dot_config/herdr/config.toml |
~/.config/herdr/config.toml(キーバインドを dot_tmux.conf に合わせた herdr 設定。prefix=C-j、分割 |/-、ペイン移動 h/j/k/l、タブ移動 C-h/C-l、デタッチ prefix+d、workspace 作成 prefix+Shift+C、workspace リネーム prefix+Space、pane を新 tab に切り出し prefix+!(tmux の break-pane 相当。組み込みアクションが無いため herdr pane move --new-tab を shell command で呼ぶ)。加えて [ui.sidebar.agents] で左サイドバーの agent 行に pane ID (wG:pB) を表示する。この $pane_id はカスタムトークンで、値の供給は dot_zsh/herdr.zsh に依存する — 片方だけ消すと ID が空欄になる) |
dot_config/herdr/executable_rename-workspace.sh |
~/.config/herdr/rename-workspace.sh(実行ビット付き。focused workspace を git リポジトリ名にリネームする。tmux の ~/.tmux-rename-session の herdr 版で、config.toml の [[keys.command]] から prefix+Space で呼ぶ) |
dot_codex/modify_private_config.toml |
~/.codex/config.toml(mode 0600 の chezmoi modify_ スクリプト。model / reasoning effort / personality / approval / service tier / .agents・.codex・.git 書き込みを含む workspace-agents-write permission profile だけを強制し、Codex が書き換える project trust / notify / Desktop / plugin / MCP / hook 等は実ファイルから保持する) |
dot_codex/AGENTS.md.tmpl |
~/.codex/AGENTS.md(全プロジェクト共通の Codex 指示。CLI ツール管理ルールを .chezmoitemplates/cli-tool-management.md から展開) |
dot_claude/modify_settings.json.tmpl |
~/.claude/settings.json(chezmoi modify_ スクリプト。自分が管理するキー(env/permissions/model/hooks/deny 等)だけ強制し、Claude Code が実行時に書き換えるキー(enabledPlugins/extraKnownMarketplaces/feedbackSurveyState)は実ファイルから保持してドリフトを防ぐ。herdr フックパスは {{ .chezmoi.homeDir }} で展開) |
dot_claude/hooks/executable_herdr-agent-state.sh |
~/.claude/hooks/herdr-agent-state.sh(実行ビット付き。settings.json の SessionStart フックが呼ぶ herdr の Claude 連携スクリプト。herdr が自動管理し integration 更新時に上書きするため source はスナップショット。更新時は再 cp で同期する) |
dot_claude/CLAUDE.md |
~/.claude/CLAUDE.md |
dot_claude/agents/*.md |
~/.claude/agents/*.md (user-level subagent) |
dot_claude/rules/*.md |
~/.claude/rules/*.md (CLAUDE.md から @-import するコーディング規約) |
dot_claude/rules/tool-management.md.tmpl |
~/.claude/rules/tool-management.md(Claude Code 用の CLI ツール管理ルール。同じ共通テンプレートから展開) |
dot_claude/rules/golang/*.md |
~/.claude/rules/golang/*.md (Go 固有ルール。@-import せず参照用) |
dot_claude/rules/kotlin/*.md |
~/.claude/rules/kotlin/*.md (Kotlin 固有ルール。@-import せず参照用) |
dot_claude/plugins/config.json |
~/.claude/plugins/config.json |
dot_claude/plugins/private_blocklist.json |
~/.claude/plugins/blocklist.json |
dot_claude/symlink_skills |
~/.claude/skills → ~/.agents/skills (symlink) |
dot_agents/dot_skill-lock.json |
~/.agents/.skill-lock.json |
dot_agents/skills-local/pair-programming/** |
~/.agents/skills-local/pair-programming/(日本語・ヒント中心のペアプロ用 skill。インストーラ経由で ~/.agents/skills/pair-programming/ にも展開。明示呼び出し専用: Codex は $pair-programming、Claude Code は /pair-programming) |
dot_agents/skills-local/codex-version-update/SKILL.md |
~/.agents/skills-local/codex-version-update/SKILL.md(この dotfiles の mise/aqua 管理に沿って Codex CLI の version pin、公式 changelog 確認、lock 同期、導入版検証を進める skill。インストーラ経由で ~/.agents/skills/codex-version-update/ にも展開) |
dot_agents/skills-local/pr-critical-review/** |
~/.agents/skills-local/pr-critical-review/(根拠付きの PR トリアージを行う Markdown 専用 skill。未採用の図解仕様は references/ に保管し、インストーラ経由で ~/.agents/skills/pr-critical-review/ にも展開) |
dot_agents/skills-local/review-io-impact/SKILL.md |
~/.agents/skills-local/review-io-impact/SKILL.md(インストーラ経由で ~/.agents/skills/review-io-impact/SKILL.md にも展開) |
dot_agents/skills-local/svg-diagram/** |
~/.agents/skills-local/svg-diagram/(SKILL.md + components/ examples/ の HTML テンプレート。インストーラ経由で ~/.agents/skills/svg-diagram/ にも展開) |
Note (Codex config):
~/.codex/config.tomlは手動設定と Codex 所有の実行時状態が混在するため、ファイル全体をスナップショットせずmodify_private_config.tomlで管理対象キーだけを置換する。未管理の root key と table はそのまま保持されるので、Codex が project trust・通知先・Desktop 設定・plugin/MCP/hook 状態を更新してもchezmoi diffの対象にならない。~/.codexには認証情報・会話履歴・shell snapshot もあるため、ディレクトリ全体をchezmoi add ~/.codexしない。
Note (共通 CLI ツール管理ルール):
.chezmoitemplates/cli-tool-management.mdを正本とし、~/.codex/AGENTS.mdと~/.claude/rules/tool-management.mdの両方へ同じ内容を展開する。ルール変更時は各出力テンプレートではなく共通テンプレートを編集する。
Note (agent skills): skill の導入チャネルは2種類ある。① GitHub lock チャネル:
skillsCLI で導入する skill の正本は~/.agents/skills/(store)。~/.claude/skillsはそこへの symlink で、Claude Code から同じ skill を共有する。~/.agents/.skill-lock.json(どの GitHub ソースから入れたかの記録) を管理対象にしており、これが変わるとrun_onchange_after_install-skills.shがchezmoi apply時に各 skill をskills addで再取得する (Brewfile と同じ仕組み)。skill を追加/削除したらcp ~/.agents/.skill-lock.json dot_agents/dot_skill-lock.jsonで lock を source へ同期してコミットする。② 自作 skill チャネル:dot_agents/skills-local/<name>/にSKILL.md(とサポートファイル)を置き、run_onchange_after_install-local-skills.shがchezmoi apply時に~/.agents/skills/<name>/へコピーする。GitHub チャネルは lock 外のフォルダを削除しないため両チャネルは共存できる。store 本体 (~/.agents/skills/**) は再生成可能なので.chezmoiignoreで除外(自作スキルの source はdot_agents/skills-local/に残る)。自作 skill を削除するときは source から消すだけでは足りず、run_onchange_after_install-local-skills.sh.tmplのREMOVED_SKILLS配列(store 側の実体を除去)と.chezmoiremove(~/.agents/skills-local/側の残骸を除去。残すと毎回再インストールされる)の2箇所に追記する。
Note (Claude Code plugins): プラグインの導入は
run_onchange_after_install-claude-plugins.sh.tmplの inline manifest(MARKETPLACES/PLUGINS配列)が唯一の source of truth。chezmoi apply時にこのスクリプトがclaude plugin marketplace add+claude plugin installを冪等に流し、marketplace の clone と cache 本体を再生成する(skills store と同じ「ignore して run_onchange で再生成」方式)。Claude Code が実行時に所有するknown_marketplaces.json/installed_plugins.jsonは.chezmoiignore済みで追跡しない(タイムスタンプ等のドリフトが出ない)。有効化状態enabledPluginsはmodify_settings.json.tmplが新規マシン用に seed し、以降は Claude Code の値を保持する。現在は公式 LSP (gopls-lsp/rust-analyzer-lsp@claude-plugins-official) とecc(ecc@ecc)、crit(crit@crit) を管理 (ecc は Claude Code CLI ≥ v2.1.0 必須)。プラグインを増減するときは manifest 配列を編集するだけ(JSON への手動反映やchezmoi re-addは不要)。
Note (Homebrew 管理の CLI):
Brewfile.tmplの「CLI・シェル環境(Homebrew 管理)」に formula と CLI の cask をまとめ、各定義行の右側に Homebrew 管理理由を記載する。既存方針・設定・配布情報から理由を確認し、特定できないものは「個別の管理理由は未確認」と明記する。diff-pdfは aqua 標準レジストリに未登録で、公式配布に macOS 用バイナリがないため、Homebrew formula で Poppler・Cairo・wxWidgets 等の依存ライブラリとともに管理する。通常のchezmoi applyでbrew bundleが実行され、ほかの Brewfile エントリとともにインストール・更新される。
Note (op / 1Password CLI):
opは「single-binary CLI は原則 aqua (mise)」方針の例外で、Brewfile.tmplのcask "1password-cli"で管理する。aqua registry の1password/cliは配布元が GitHub release ではなくcache.agilebits.comのためtype: http扱いでrepo_owner/repo_nameを持たず、mise ではバージョン一覧を引けない (ls-remote/latest/"latest"指定が不可 → 更新検知が効かず手動追従になる)。上流が digest を公開していないので lockfile にも checksum が載らない。aqua を選ぶ利点が両方とも成立しない一方、資格情報ツールは追従が遅れるほうが痛いため brew に置いている (cask はopの zsh 補完も同梱する)。バージョン追従はbrew upgradeに任せる。
Note (二重チャネル管理ツール): crit / herdr は CLI(mise)と Claude 連携(plugin / skill / hook)の複数チャネルで同じツールを管理している。CLI のバージョンだけ上げると連携側が古いままズレるため、更新時は両方を揃えること。対応表と更新手順は
CLAUDE.mdの「二重チャネル管理ツール(CLI + Claude 連携)」を参照。
以下はリポジトリ専用のメタファイル、認証トークン・機密情報、アプリが所有する実行時状態のため管理対象外。
| パス | 理由 |
|---|---|
AGENTS.md(リポジトリ直下) |
この dotfiles の chezmoi 適用ルールの正本。Git で管理し、home には展開しない |
~/.config/chezmoi/ |
chezmoi 設定ファイル (sourceDir / [data] の手動変数を含む) |
~/.config/gh/ |
GitHub CLI 認証トークン |
~/.config/github-copilot/ |
GitHub Copilot 認証トークン |
~/.config/configstore/ |
各種ツールの認証情報 |
~/.config/nvim/lazyvim.json |
LazyVim が自動更新する既読状態ファイル |
~/.config/mise/mise.local.lock |
config.local.toml(private tool)の lockfile。private repo 名とリリースアセット URL を含むため public repo に置けない。mise lock -g を実行すると(mise.lock と一緒に)各マシンで自動生成される |
~/.agents/skills/ |
skills CLI が GitHub から取得する store。lock から再生成可能 (run_onchange_after_install-skills.sh) |
~/.codex/auth.json, .codex-global-state.json*, installation_id |
Codex の認証・インストール・アプリ状態。機密またはマシン固有 |
~/.codex/history.jsonl, session_index.jsonl, sessions/, archived_sessions/, attachments/, shell_snapshots/ |
会話・添付・実行環境の履歴。機密情報を含む可能性が高い |
~/.codex/*.sqlite*, cache/, log/, tmp/, .tmp/, plugins/cache/, skills/.system/ |
Codex とpluginが生成するDB・cache・log・組み込みskill。再生成可能 |
~/.codex/rules/, ~/.codex/automations/ |
rules は一時的なコマンド許可、automations はmachine-localな定義・memoryのため追跡しない |
~/.claude.json |
Claude Code OAuth/セッション情報 (253 KB、自動 backup あり) |
~/.claude/sessions/ |
アクティブセッション (mode 700、トークン含む) |
~/.claude/projects/ |
プロジェクト別トランスクリプト (79 MB、機密含む) |
~/.claude/history.jsonl |
プロンプト履歴 (機密含む) |
~/.claude/paste-cache/, shell-snapshots/, image-cache/, file-history/ |
ペースト/環境変数/画像/編集履歴キャッシュ (機密の可能性大) |
~/.claude/cache/, backups/, plans/, tasks/, todos/, session-env/, debug/, ide/ |
ランタイム生成物。再生成可能 |
~/.claude/statsig/, telemetry/, stats-cache.json, mcp-needs-auth-cache.json |
テレメトリ / SDK キャッシュ |
~/.claude/plugins/cache/, plugins/data/, plugins/marketplaces/, plugins/repos/ |
clone 済みプラグインリポジトリ / LSP データ。Claude Code 起動時に再生成 |
~/.claude/plugins/known_marketplaces.json, plugins/installed_plugins.json |
Claude Code が実行時に所有・書き換える(タイムスタンプ等が drift する)。run_onchange_after_install-claude-plugins.sh の manifest から claude plugin install で再生成 |
.tmpl ファイルは chezmoi が Go template として評価する。変数は2種類:
- 手動設定が必要 —
~/.config/chezmoi/chezmoi.tomlの[data]に記述する。~/.config/chezmoi/は機密のためこのリポジトリには含まれないので、新規マシンではchezmoi applyの前に必ず設定する (下記 step 4)。 - chezmoi 自動提供 — 設定不要。
| 変数 | 種別 | 使用箇所 | 取得元 / 意味 |
|---|---|---|---|
.github_username |
手動 | dot_gitconfig.tmpl |
[data] github_username → git の user.name (GitHub アカウント名) |
.github_email |
手動 | dot_gitconfig.tmpl |
[data] github_email → git の user.email (GitHub に紐づく email) |
.private_tool_repo |
手動 (任意) | dot_config/mise/private_config.local.toml.tmpl |
private GitHub repo のツールの owner/repo。github バックエンドの tool spec に使用。設定時のみ導入 (hasKey ゲート) |
.private_tool_version |
手動 (任意) | dot_config/mise/private_config.local.toml.tmpl / run_onchange_after_install-mise-tools.sh.tmpl |
private tool の tool spec のバージョン。repo 名と同様に public repo へ残さないため注入する。バージョンを上げるときはこの値を書き換えて chezmoi apply するだけでよい (dotfiles のコミット不要) |
.op_account |
手動 (任意) | run_onchange_after_install-mise-tools.sh.tmpl |
op-vault の OP_ACCOUNT (1Password アカウント識別子) |
.private_tool_token_ref |
手動 (任意) | run_onchange_after_install-mise-tools.sh.tmpl |
private repo を読める GitHub PAT の op://<Vault>/<Item>/<field> 参照 |
install_orbstack |
手動 (任意) | Brewfile.tmpl |
設定したマシンでのみ cask "orbstack" を install (hasKey ゲート) |
install_docker_desktop |
手動 (任意) | Brewfile.tmpl |
設定したマシンでのみ cask "docker-desktop" を install (hasKey ゲート) |
.chezmoi.homeDir |
自動 | dot_gitconfig.tmpl |
ホームディレクトリのパス (excludesfile に使用) |
.chezmoi.sourceDir |
自動 | run_onchange_install-packages.sh.tmpl |
source ディレクトリのパス (Brewfile.tmpl の場所に使用) |
include "..." |
自動 (関数) | run_onchange_install-packages.sh.tmpl / run_onchange_after_install-skills.sh.tmpl / run_onchange_after_install-local-skills.sh.tmpl / run_onchange_after_install-mise-tools.sh.tmpl |
source 相対のファイル内容を埋め込む。sha256sum と組み合わせ Brewfile.tmpl / skill-lock / 自作 skill / mise config (config.toml.tmpl・private_config.local.toml.tmpl・private_mise.lock) の変更検知に使用 |
新たにテンプレートを追加する場合、ファイル名に .tmpl を付ければ上記の変数を参照できる。手動変数を増やしたときはこの表と step 4 を更新すること。
# 1. Install Homebrew (https://brew.sh)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# 2. Install chezmoi and ghq
brew install chezmoi ghq
# 3. Clone dotfiles via ghq
ghq get [email protected]:Msksgm/dotfiles.git # → ~/workspace/github.com/Msksgm/dotfiles
# 4. Configure chezmoi (sourceDir + テンプレート手動変数。詳細は "Template variables" 参照)
mkdir -p ~/.config/chezmoi
cat > ~/.config/chezmoi/chezmoi.toml <<'EOF'
sourceDir = "~/workspace/github.com/Msksgm/dotfiles"
[data]
github_username = "Msksgm" # → ~/.gitconfig の user.name
github_email = "[email protected]" # → ~/.gitconfig の user.email
# 以下4変数は private GitHub repo のツールを mise で入れるマシンでだけ設定(任意)。
# 詳細は下記 "Private tool" 参照。4つはセットで必要。
private_tool_repo = "<owner>/<repo>"
private_tool_version = "<version>" # 例: "1.2.3"
op_account = "<1Password アカウント識別子>"
private_tool_token_ref = "op://<Vault>/<Item>/<field>"
# container runtime cask はマシンごとに入れ分ける(任意・どちらか一方 or 両方)。
# 設定したキーの cask だけが `brew bundle` で install される。
# install_orbstack = true
# install_docker_desktop = true
EOF
# 5. Apply dotfiles
# run_onchange_install-packages.sh runs `brew bundle` automatically,
# so Brewfile packages (powerlevel10k 等) もここでインストールされる
# mise.lock も chezmoi 管理下なので、mise のツールは全マシンで同一 version/checksum で入る
chezmoi applyprivate GitHub repo のリリースを mise の github バックエンドで導入する仕組み。mise install が private repo を認証するために GITHUB_TOKEN が要るので、run_onchange_after_install-mise-tools.sh が 1Password から op-vault 経由でトークンを取得して mise install の直前に export する。public repo にシークレット・内部参照(対象 repo 名・バージョンも含む)を残さないため、op アカウント・シークレット参照・repo 名・バージョンはすべて chezmoi の [data] (上記 step 4) から注入する。
opt-in: private_tool_repo を設定したマシンでだけ有効(hasKey ゲート)。未設定のマシンでは config.local.toml 自体が展開されず (.chezmoiignore で制御)・トークン処理も走らないため、chezmoi apply は通常どおり成功する。private_tool_repo を設定していて private_tool_version を設定し忘れた場合は、chezmoi がキー未定義エラーで apply を止める(設定漏れに気付けるようにあえて fail-fast にしている)。
なぜ config.toml と別ファイルなのか: mise の lockfile は「宣言した config ファイル名の .toml → .lock」で決まり、~/.config/mise/config.toml の lock は ~/.config/mise/mise.lock。この mise.lock は再現性のため dotfiles で追跡している (dot_config/mise/private_mise.lock) ので、private tool をここに書くと repo 名とリリースアセット URL が public repo に載ってしまう。そのため private tool は ~/.config/mise/config.local.toml に隔離し、lock を mise.local.lock(追跡対象外)へ分離している。
conf.d/*.tomlは lockfile が親ディレクトリのmise.lockに合流するため隔離手段にならない。MISE_ENV方式は全プロジェクトディレクトリに波及するうえ、chezmoi のスクリプトは非対話 bash で走り.zshenvを読まないため apply 時にツールが入らない。
バージョン更新: ~/.config/chezmoi/chezmoi.toml の private_tool_version を書き換えて chezmoi apply するだけ。dotfiles 側のコミットは不要(スクリプトのバージョン hash 行が変わるので mise install も再実行される)。mise.local.lock の更新もあわせて行うなら mise lock -g(追跡対象外なのでコミットは不要)。
導入するマシンで一度だけ用意しておくもの:
- 1Password デスクトップアプリの CLI 連携を有効化し、
op-vault initを実行する (op-vault は 1Password SDK 利用のためopCLI に依存しない。op自体は Brewfile で別途入るが、この仕組みの前提ではない)。 - private repo を読める GitHub PAT を 1Password に保存し、その
op://<Vault>/<Item>/<field>参照をprivate_tool_token_refに設定する。 private_tool_repo/op_account/private_tool_token_refを~/.config/chezmoi/chezmoi.tomlの[data]に設定する(3つセット)。
トークンを解決できない (1Password ロック・変数未設定等) 場合、スクリプトは 中断する (silent skip しない)。導入対象マシンで一時的に他ツールだけ入れたいときは 1Password を解錠してから再 apply すること。
~/.config/mise/mise.lock(全ツールの version / URL / checksum を複数プラットフォーム分固定した lockfile)は dot_config/mise/private_mise.lock として追跡している。生成物なので手で編集せず、ツールを追加・バージョン変更したら mise lock -g → cp で source へ同期してコミットする(dot_agents/dot_skill-lock.json と同じ「実体を cp で追跡」パターン)。mise install だけでは現在の platform 分しか lock されず、削除済みツールのエントリも残るため mise lock -g を挟むのが必須。
手順・検証コマンド・注意点は .agents/skills/mise-lock-update/SKILL.md に集約している(Codex では $mise-lock-update、Claude Code では /mise-lock-update で起動できる。.claude/skills は .agents/skills への symlink)。
cpした直後のchezmoi diffは空にならない。install-mise-tools.shがnew file mode 100755として全文表示される。これはファイル差分ではなく「apply したらこのスクリプトが走る」という予告で、lockfile の中身が変わるとスクリプトに埋め込まれた# lockfile hash:行が変わり run_onchange の再実行対象になるため。もう一度chezmoi applyすればmise installが冪等に走って diff が収束する。 見るべきは「diff が空か」ではなく「.config/mise/mise.lockのファイル差分が出ていないか」。
# Preview what would change
chezmoi diff
# Apply all managed files
chezmoi apply
# List managed files
chezmoi managed
# Re-apply after editing source
chezmoi apply -v
# Pull remote changes and apply
chezmoi update
# Claude Code の blocklist / config を source 側に同期 (drift したとき)
# settings.json は modify_ が、plugins の marketplaces/installed は run_onchange が
# 面倒を見るので re-add 不要。手動編集したときだけ blocklist/config を取り込む。
chezmoi re-add ~/.claude/plugins/blocklist.json ~/.claude/plugins/config.json
# brew drift: インストール済みだが Brewfile にない formula を追加
brewfile-add <formula>
brewfile-add --cask <cask>
# drift チェックを手動で強制実行(1日1回キャッシュを無視)
# ※ source して関数として呼ぶ必要がある(スクリプト直接実行では --force が届かない)
source ~/.zsh/brew_drift_check.zsh && brew-drift # Brewfile との差分を確認
source ~/.zsh/drift_check.zsh && dotfiles-drift # git・chezmoi の差分を確認Note (Claude Code 設定の drift):
settings.jsonのfeedbackSurveyState/enabledPlugins/extraKnownMarketplaces(Claude Code が実行時に書き換えるキー)はmodify_settings.json.tmplが実ファイルの値を保持するため diff は出ない。plugins/known_marketplaces.json/installed_plugins.jsonは.chezmoiignore済みで追跡しない。→ 以前のようにタイムスタンプや git SHA でchezmoi diffが出続けることはない。