global-config-pushlisted
Install: claude install-skill mjcreativelab/mjcreativelab-agent-prompts
# Global Config Push
`dotfiles/claude/` の設定ファイルを `~/.claude/` に反映(コピー)する。
## 同期対象
pull(global-config-pull)と同一。ミラー側に存在するものだけを反映する:
- ファイル: `CLAUDE.md`・`settings.json`・`statusline-command.sh`・`keybindings.json`・`.mcp.json`
- ディレクトリ: `rules/`・`hooks/`・`agents/`・`commands/`
push は追加・上書きのみ行い、`~/.claude/` 側にしかないファイルは削除しない(ローカル限定ファイルの保護。削除の反映=ミラー同期は pull 側のみ)。
`settings.json` だけは単純コピーではなく**マージ**で反映する(手順 3)。pull 側がミラー作成時に (a) `$HOME` を `~` へ正規化し、(b) `~/.claude/.config-sync-exclude` に列挙した非公開 marketplace のエントリを除去しているため、そのまま上書きすると live の絶対パスが `~` リテラルに化け、社内 marketplace の設定が消えるため。
## 手順
リポジトリルートで実行する。
1. **差分確認(反映前に必ず実施):**
```bash
for f in CLAUDE.md settings.json statusline-command.sh keybindings.json .mcp.json; do
[ -f dotfiles/claude/"$f" ] && { echo "--- $f"; diff dotfiles/claude/"$f" ~/.claude/"$f"; }
done
for d in rules hooks agents commands; do
[ -d dotfiles/claude/"$d" ] && { echo "--- $d/"; diff -r dotfiles/claude/"$d" ~/.claude/"$d"; }
done
```
差分サマリを日本語で提示し、ユーザーに反映の意思を確認する(`AskUserQuestion` を使う)。
2. **バックアップ:**
```bash
TS=$(date +%Y%m%d%H%M%S)
for f in CLAUDE.md settings.json statusline-command.sh keybindings.json .mcp.json; do
[ -f ~/.claude/"$f" ] && cp ~/.claude/"$f" ~/.claude/"$f".bak.${TS}
done
for d in rules hooks agents commands; do
[ -d ~/.claude/"$d" ] && cp -R ~/.claude/"$d" ~/.claude/"$d".bak.${TS}
done
```
3. **コピー実行(追加・上書きのみ。削除はしない):**
```bash
for f in CLAUDE.md statusline-command.sh ke