agentsclimarketplace

Global config push

Skill mjcreativelab/mjcreativelab-agent-prompts/internal/global-config-push

Claude Code 用プラグイン集(skills, hooks, rules)

Install
npx -y skills add mjcreativelab/mjcreativelab-agent-prompts --skill global-config-push

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

リポジトリの dotfiles/claude/ からグローバル Claude 設定(~/.claude/ の CLAUDE.md・settings.json・statusline-command.sh・rules/・hooks/・agents/・commands/・keybindings.json・.mcp.json)へ反映する。「設定を反映する」「グローバル設定を push して」と言ったら起動。既存ファイルはバックアップ後に上書き。

SKILL.md

5.8 KB, ~1.9k tokens by cl100k_base, as published. Nobody here has run it

Global Config Push

dotfiles/claude/ の設定ファイルを ~/.claude/ に反映(コピー)する。

同期対象

pull(global-config-pull)と同一。ミラー側に存在するものだけを反映する:

  • ファイル: CLAUDE.mdsettings.jsonstatusline-command.shkeybindings.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. 差分確認(反映前に必ず実施):

    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. バックアップ:

    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. コピー実行(追加・上書きのみ。削除はしない):

    for f in CLAUDE.md statusline-command.sh keybindings.json .mcp.json; do
      [ -f dotfiles/claude/"$f" ] && cp dotfiles/claude/"$f" ~/.claude/"$f"
    done
    for d in rules hooks agents commands; do
      [ -d dotfiles/claude/"$d" ] && { mkdir -p ~/.claude/"$d" && cp -R dotfiles/claude/"$d"/. ~/.claude/"$d"/; }
    done
    chmod +x ~/.claude/hooks/*.sh ~/.claude/statusline-command.sh 2>/dev/null || true
    

    settings.json~ の展開 + 非公開 marketplace の保持を行ってから反映する(jq が必要。live 側が無い初回はミラーをそのまま置く):

    MIRROR=dotfiles/claude/settings.json
    if [ -f "$MIRROR" ]; then
      TMP="${TMPDIR:-/tmp}/settings-push.json"
      sed "s|\"~/|\"${HOME}/|g" "$MIRROR" > "$TMP"
      if [ -f ~/.claude/settings.json ]; then
        EXCLUDE=~/.claude/.config-sync-exclude
        MPS=$([ -f "$EXCLUDE" ] && grep -vE '^[[:space:]]*(#|$)' "$EXCLUDE" | jq -R . | jq -s . || echo '[]')
        jq -s --argjson mps "$MPS" '
          .[0] as $mirror | .[1] as $live
          | $mirror
          | .enabledPlugins = (($mirror.enabledPlugins // {}) + (($live.enabledPlugins // {}) | with_entries((.key | split("@") | last) as $m | select(($mps | index($m)) != null))))
          | .extraKnownMarketplaces = (($mirror.extraKnownMarketplaces // {}) + (($live.extraKnownMarketplaces // {}) | with_entries(.key as $k | select(($mps | index($k)) != null))))
        ' "$TMP" ~/.claude/settings.json > "${TMP}.merged" && mv "${TMP}.merged" "$TMP"
      fi
      jq -e . "$TMP" >/dev/null && cp "$TMP" ~/.claude/settings.json
    fi
    

    jq -e . の妥当性チェックを通ったものだけ反映する(壊れた JSON で live 設定を潰さない)。jq が無い環境ではこのステップを飛ばし、settings.json は反映せずその旨を報告する(単純コピーで代替しない)。

  4. 確認:

    for f in CLAUDE.md statusline-command.sh keybindings.json .mcp.json; do
      [ -f dotfiles/claude/"$f" ] && { diff dotfiles/claude/"$f" ~/.claude/"$f" >/dev/null && echo "$f: OK" || echo "$f: 差分あり(要確認)"; }
    done
    for d in rules hooks agents commands; do
      [ -d dotfiles/claude/"$d" ] && { echo "--- $d/"; diff -r dotfiles/claude/"$d" ~/.claude/"$d"; }
    done
    # settings.json はマージ反映のため一致しないのが正常。ミラー側の内容が live に入ったかを確認する
    jq -e . ~/.claude/settings.json >/dev/null && echo "settings.json: 妥当な JSON"
    echo "live のみに残る非公開 marketplace: $(jq -r '.extraKnownMarketplaces | keys | join(",")' ~/.claude/settings.json)"
    grep -c '"~/' ~/.claude/settings.json | sed 's/^/live に残る ~ リテラル: /'
    

    結果を日本語で報告する。バックアップパスも提示すること。ディレクトリの diff で Only in ~/.claude/... が出た場合は、ミラー対象外(ローカル限定)のファイルを示すだけなので、ミラー側ファイルが一致していれば反映は成功と判断してよい。settings.jsonマージ反映のためミラーと一致しないのが正常で、確認すべきは「妥当な JSON であること」「非公開 marketplace が live に残っていること」「~ リテラルが 0 件であること」の 3 点。

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 326,970. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.