ワークフロー&基本ツール · daymade/claude-code-skills

claude-switch-models-setup

受講生やパワーユーザーが複数のLLMプロバイダー(Kimi K3、Kimi K2.7 highspeed、MiniMax M3、MiniMax M2.7、GLM、DeepSeek、StepFun、Anthropic)を別々のターミナルウィンドウで同時に実行できるように、複数の隔離されたClaude Code CLIプロファイルをセットアップおよび保守します。マルチプロバイダーのClaude環境構築、複数のClaude Codeウィンドウの実行、モデル切り替えやcsk/csd/csgエイリアス、CLAUDE_CONFIG_DIR、~/.claude-profilesディレクトリ、またはAnthropicと並行してKimi/MiniMax/GLM/DeepSeek/StepFunを実行することに関する質問があった場合は、常にこのスキルを使用してください。また、プロファイルのドリフトトラブルシューティング(デフォルトプロファイルにあるスキル/フック/プラグインがサードパーティプロファイルに欠落している、claude-profiles-doctorがシンボリックリンクであるべき場所に実ディレクトリを報告する、設定が収束しないなど)や、プロバイダーごとのコンテキストウィンドウ設定([1m]マーカーまたは明示的なCLAUDE_CODE_MAX_CONTEXT_TOKENS)も担当します。

L4 高権限 · 段階的認可と監査V1 コミット固定コマンド実行ネットワーク通信ファイル書き込みDual-pass Audit
Author daymadeGitHub daymade/claude-code-skills ↗Stars 1385License MIT(仓库根 LICENSE:Copyright (c) 2025 daymade;GitHub API spdx MIT)Commit d5c4678cb5
管理レベルは Skill の能力と推奨統制措置を示すものであり、品質や安全性の認証、利用可否の判定ではありません。使用の可否はユーザーおよび管理者が決定します。Agent 環境によって制約が異なるため、自動保護を仮定しないでください。第三者製 Skill の著作権は原著作者に帰属し、利用リスクは利用者が負います。

1仕組みと動作原理

CLAUDE_CONFIG_DIRによるプロセスレベルの分離:プロバイダーごとに~/.claude-profiles/<name>/ディレクトリと独立した.claude.json(認証情報およびセッション履歴)を保持し、共有ディレクトリ(skills/projects/hooks/agents/pluginsコンテンツ)を~/.claudeへシンボリックリンクすることで、「複数ウィンドウで異なるプロバイダーを同時に実行しつつ設定の混同を防ぐ」構成を実現します。

daymade-claude-code/claude-switch-models-setup/SKILL.md
The result: you can open one terminal with Kimi, another with DeepSeek, another with Anthropic — each running as a fully independent Claude Code process, without configuration bleed.
起動はclaude-profiles.shのclaude-profileによって行われます:CLAUDE_CONFIG_DIR=プロファイルディレクトリ + claude --settings <provider>.json。プロバイダーのルーティング環境変数は~/.claude/settings/<name>.jsonから提供されます。

settings.json層での「デフォルトプロファイルからの収束」:sync-profile-settings.pyをSessionStartフックとして登録し、デフォルトプロファイルのsettings.jsonの各キーを各サードパーティプロファイルにコピー(model/advisorModelなどの識別キーやプロバイダールーティング環境変数は上書きせず保持)することで、サードパーティウィンドウでのフック/マーケットプレイス/環境変数のドリフトを解消します。

daymade-claude-code/claude-switch-models-setup/scripts/sync-profile-settings.py
Two denylists define the identity boundary — these are NEVER synced:
docstringの実測記録:9/9プロファイルでフック未設定、7/9でマーケットプレイス未設定を検出。ENV_KEY_DENYLISTにはANTHROPIC_*プレフィックスおよびCLAUDE_CODE_SUBAGENT_MODELなどの分離フラグが含まれます。

.claude.jsonの動作キーに対する許可リスト収束+状態キーの3分類ガードレール:workflowSizeGuidelineなどの一部の動作キーのみを同期し、状態/認証情報/アイデンティティキー(oauthAccount/userID/token/secret…)は一切同期せず、その他のグレーゾーンのキーは自動書き込みせず報告のみとすることで、あるプロファイルのセッション状態やアカウント情報が他プロファイルへ漏洩・上書きされるのを防ぎます。

daymade-claude-code/claude-switch-models-setup/scripts/sync-profile-settings.py
State keys (is_state_key(): prefixes/substrings/exact names) — per- profile runtime state, caches, counters, migration flags, identity and credentials. NEVER synced
実測に基づく背景(SKILL本文):2026-08-17にworkflowSizeGuideline:smallがメインプロファイルにしか存在せず、KimiセッションがDynamic Workflowで30以上のエージェントへファンアウトする事象が発生しました。

プラグイン状態の特殊処理:known_marketplaces.jsonはプロファイルごとに独立させる必要があります(Claudeはpath.resolve()でinstallLocationを検証しシンボリックリンクを解決しないため、共有すると他プロファイルでcorrupted installLocationエラーが発生します)。claude-plugins-sync.pyが各プロファイル固有の構造を再構築し、enabledPluginsをミラーリングします。

daymade-claude-code/claude-switch-models-setup/scripts/claude-plugins-sync.py
Each profile runs with its own CLAUDE_CONFIG_DIR, so `c` is a DIFFERENT literal string per profile
スクリプトのdocstringには、plugins/全体をシンボリックリンクで共有した場合に失敗する理由(最後に書き込んだ側が優先される問題)およびプロファイルごとの修正構造が記載されています。

メンテナー向けローカルソース同期:sync-local-skill-sources.pyは、ローカルのスキルソースリポジトリをシンボリックリンクでClaudeプラグインキャッシュおよびCodexの~/.agents/skills、~/.codex/skillsへ接続します。デフォルトはdry-runで、--apply指定時のみ変更を適用します。O_NOFOLLOW dirfd、renameat2/renameatx_npによる排他的リネーム、タイムスタンプ付きバックアップにより、並行処理やディレクトリの競合状態を防ぎます。

daymade-claude-code/claude-switch-models-setup/scripts/sync-local-skill-sources.py
Real files/directories and third-party links are never deleted or automatically moved.
この2,153行のスクリプトはリポジトリ内で最も厳格な安全設計を備えています。変更前にソース/ルートの同一性を固定し、対象ルートディレクトリをno-followハンドルで開き、失敗時にはロールバック(exclusive_renameによる双方向の往復処理)を実行します。

コンテキストウィンドウ設定の判断ルール化:実際のコンテキストが約1Mの場合のみリテラルの[1m]サフィックスを付与し(Claude Codeがこのリテラルに一致)、既知の小さいウィンドウには明示的なCLAUDE_CODE_MAX_CONTEXT_TOKENS/AUTO_COMPACTを使用し、未検証モデルでは推測を避けます。deepseek/glmテンプレートの二重記述は意図的に維持されています。

daymade-claude-code/claude-switch-models-setup/SKILL.md
Claude Code matches this literal string, not a made-up marker like `[1million]` or `[max]`.
references/context-window-config.mdには、[1m]の全メカニズムと、「環境変数が実際に通信上のバイト列を変更しているか」を検証するためのローカルhttp.serverキャプチャ手順が記録されています。

デプロイ規律:スクリプトはcpではなくシンボリックリンクでデプロイ(リポジトリ内で26日間放置されたバグ修正と、デプロイコピーにしか反映されなかったクリーンアップコードという過去の実事故による双方向ドリフトを防止)。setup.shインストーラーとclaude-profiles-init/doctor/rm運用コマンド群を提供します。

daymade-claude-code/claude-switch-models-setup/scripts/setup.sh
# Symlink rather than copy.
SKILL.mdにはライブリンクを検証する専用のワンライナーコマンドが記載されています。claude-profile-rmは意図しない実ファイルを事前にスキャンし、y/Nの確認を経てから隔離ディレクトリをrm -rfします。

2コア機能

01ワンクリックでのマルチプロファイル構築・起動・診断・削除:claude-profiles-init / claude-profile <name> / doctor / rm
02settings.jsonの網羅的収束機能(SessionStartフックによる自己修復 + --all/--check)
03.claude.json動作キーの許可リスト同期(workflowSizeGuideline等)+状態/認証情報キーの3分類ガードレール
04プラグイン構造の修復とenabledPluginsのミラーリング(claude-plugins-sync.py、プロファイル起動/書き込み時に自動トリガー)
05ローカルスキルソース ↔ Claude/Codexアクティブ配置先同期(dry-runプレビュー + --apply + macOS LaunchAgentデーモン)
0611種類のプロバイダー設定テンプレート(Kimi/MiniMax×2/GLM/DeepSeek/StepFun/Anthropic等、[1m]または明示的ウィンドウ設定を含む)+コンテキストウィンドウ判断ルール
07プロファイルドリフトのトラブルシューティング(孤立リソース、実ディレクトリ化ドリフト、corrupted installLocation、設定の非収束)

3外部依存関係

KindDependency / Endpoint
cliclaude(官方 CLI,按 profile 启动)
clipython3
cliuv(仅 daemon --install 时 uv python install 3.12 取托管运行时)
clilaunchctl(macOS LaunchAgent 安装/启动)
networkprovider API 端点(经 claude CLI 转发;模板列出 base URL 需用户核实)

4推奨統制措置と判定根拠

安全運用のための推奨統制措置
Agent 向け
段階的・都度認可、サンドボックス推奨
管理者向け
承認フロー、ロールバック可能、全履歴監査
判定根拠(ファイルパスと抜粋)
  • scripts/: ローカルスクリプトまたはコマンドの実行: scripts/setup.sh
  • 网络端点: 外部ネットワークアクセスの宣言: (SKILL実行時のユーザーアクション)各プロバイダーのエンドポイント/ゲートウェイへのclaude CLIアウトバウンド通信、daemon --install時のuv python取得
  • 本地工作目录: ファイル読み書きおよび成果物の出力: ~/.claude-profiles/<name>/ ディレクトリ構造(.claude.json、シンボリックリンク群)
監査ノート: 本スキルが直接操作する対象は平文の認証情報を含む設定ファイルです。SKILLはユーザーにAPIキーを~/.claude/settings/<provider>.jsonへ平文で保存することを求めます(Claude Codeネイティブの動作仕様に準拠)。提供されるスクリプト群は、メインプロファイルおよび各プロファイルのsettings.jsonと.claude.jsonを読み込み・分類します(oauthAccount、token、secretなどの状態キーは名称で識別され明示的にスキップされ、決して書き戻されることはなく、収束方向はデフォルト→サードパーティへの単方向かつ拒絶リスト/許可リストの3分類で保護されます)。独自開発による外部ネットワーク送信処理は一切含まれず、ネットワーク通信はユーザー設定に基づく各プロバイダーエンドポイントへのclaude CLIによる通信と、デーモンインストール時にastral公式ソースからuvを用いてPythonを取得する処理のみです。トリガー条件:ユーザーが複数プロバイダーのプロファイル構築・保守、またはプロファイルドリフトのトラブルシューティングを要求した時のみ実行されます。評価の重要ポイントは「平文のAPIキーが複数の設定コピーに配置されること」および「ローカルソースリポジトリが信頼できるアクティブなソースとして扱われること」の2点です。

5二重目の独立検証

  • [ok] 脚本零网络外发 — 全部脚本无 urllib/requests/socket;grep 到的 https 仅 setup.sh echo 链接与模板/文档里的 provider base URL
  • [ok] 凭证键不被同步(防串 profile) — STATE_EXACT 含 projects/oauthAccount/userID 等;STATE_SUBSTR 匹配 token/secret/credential/apikey;ENV_KEY_DENYLIST 拦 ANTHROPIC_* 与隔离旗标;灰键仅报告
  • [ok] converger 方向单向(默认→第三方) — docstring:'every key present in main's settings.json overwrites the profile's, except denylisted ones';顶层 profile-only 键保留
  • [ok] 删除/修复路径受控 — claude-profile-rm:意外真实文件即 ABORT + y/N 确认;init --repair 把 real dir 归档为 .pre-symlink-bak-<ts> 再 symlink,不直接删
  • [ok] 源码同步竞态防护真实存在 — O_NOFOLLOW 打开每个路径组件、libc renameat2/renameatx_np 独占改名、失败 exclusive_rename 回滚、KEEP_JSON_BACKUPS=20
  • [ok] ‘claude-profiles-doctor 报 real dir’等能力声明有脚本支撑 — doctor 遍历 profile 目录对比 symlink 与 real dir('WARN: <name> is a real directory (expected symlink...)')

6結論

  • 複数プロバイダー並行実行時の設定ドリフト問題を体系化:シンボリックリンク共有+設定収束+状態分離の3層モデルによる明確な判断基準
  • 厳格な認証情報および状態保護設計:3分類(許可リスト/状態/グレー)+単方向収束+グレーキーのトリップワイヤー報告により、プロファイル間でのアカウント情報の上書き・流出を防止
  • 並行処理およびディレクトリ競合に対する高度な保護(no-follow fd、renameat2、ロールバック処理)の実装
  • 実績ログ(日付+数値)としてのドキュメント管理により、後続メンテナーが個々の設計意図を正確に検証可能
  • 破壊的変更を伴う操作への安全策:アーカイブ優先の修復、y/N確認プロンプト、dry-runデフォルト
  • 最適な用途: 複数のLLMプロバイダーをClaude Codeで同時に利用するヘビーユーザー、ワークショップ等で受講生環境を一括構築するケース、またはローカルのスキルソースリポジトリを保守しClaude/Codexのアクティブ実行環境へリアルタイムに反映させたいメンテナーに最適です。体系的なマルチウィンドウ分離とプロファイルドリフトの自動収束を確実に実現します。
    不向きな用途: 単一の公式Anthropicモデルのみを利用し複数プロバイダーを必要としないユーザー(仕組み全体が過剰なオーバーヘッドとなります)、複数の設定ファイルに平文でAPIキーを保存することを禁止するセキュリティポリシーの環境、Claude Codeの内部設定構造に不慣れで自力トラブルシューティングが困難なユーザー(受講生向けセットアップガイドの参照または有人サポートを推奨)、未監査のローカルリポジトリを直接スキルソースとして読み込む環境には適していません。
    Install Agent-Ready
    ① Verified Mirror 2026-09-09
    Option A · Direct DownloadDownload claude-switch-models-setup.tar.gz
    sha256: 1c1947b7efbf6091…
    Option B · Copy Guide for Agent
    install.json
    Agent はこの JSON ガイドから自動的にダウンロードして検証します。
    ② Upstream GitHub
    GitHub Repo ↗
    Pinned to commit d5c4678cb5.