English | 日本語
Claude Codeの複数プロジェクトの設定を統合するTypeScriptツールです。 グローバル設定ファイルに統合します。
Claude Codeでは、特定のコマンド実行を今後ユーザーへの確認なしに許可する機能があります。
この許可設定は各プロジェクトのローカル設定ファイル(.claude/settings.local.json)に保存されます。
問題点: プロジェクトごとに個別に許可設定を行う必要があります。 同じコマンドを複数プロジェクトで毎回許可するのは非効率です。
解決策: 各プロジェクトの設定を統合します。
グローバル設定ファイル(~/.claude/settings.json)にマージされます。
これにより、全プロジェクトで共通の許可設定を利用できます。
- 複数プロジェクトの
.claude/settings.local.jsonを自動検出 - グローバル設定 (
~/.claude/settings.json) にマージ - 書き込み前に自動バックアップを作成 (
~/.claude/settings.json.bak) permissionsフィールドは配列を結合して重複を自動削除- 実行時に許可されたコマンドをデバッグ出力
npxで直接実行できます(インストール不要)。
npx merge-claude-code-settings
# デバッグモード(各プロジェクトで許可されているコマンドを標準出力)
npx merge-claude-code-settings --show-allow-commands実行すると次の処理を行います。
~/.claude.jsonから登録済みのプロジェクト一覧を取得- 各プロジェクトの
.claude/settings.local.jsonを読み込み - グローバル設定にマージ
- 現在の設定のバックアップを作成 (
~/.claude/settings.json.bak) - マージ済み設定を
~/.claude/settings.jsonに書き込み
--show-allow-commands オプション使用時の出力例。
/path/to/project/.claude/settings.local.json Bash(git status)
/path/to/project/.claude/settings.local.json Bash(npm run build)
後から読み込まれた設定で上書きされます(最後のプロジェクトの設定が優先)。
特別な処理を行います。
- 全プロジェクトの配列を結合
- 重複を削除
- アルファベット順にソート
例:
- グローバル設定:
{"permissions": {"allow": ["cmd1", "cmd2"]}} - プロジェクトA:
{"permissions": {"allow": ["cmd2", "cmd3"]}} - プロジェクトB:
{"permissions": {"allow": ["cmd4"]}} - 結果:
{"permissions": {"allow": ["cmd1", "cmd2", "cmd3", "cmd4"]}}
- 言語: TypeScript
- ランタイム: Bun
- 主な依存関係: Node.js標準ライブラリ(fs, path, os)
ソースからビルドして実行。
# TypeScript を JavaScript にビルド
bun run build
# Bun で直接実行(開発モード)
bun run dev
# コンパイル済み JavaScript を実行
node dist/index.js
# デバッグモード
node dist/index.js --show-allow-commandshttps://pre-commit.com/ の手順に従って pre-commit をインストールします。
これにより、コミット時にクレデンシャルが含まれていないかの検査が行われるようになります。
ライブラリ関数の機能を検証するために、テストスイートを実行します。
bun test39の包括的なテストが実行されます。
isStringArray: 型ガード検証(21テスト)mergeSettings: 設定マージロジック(18テスト)
bun run fixPrettierでコードをフォーマットします。