agentsclimarketplace

Global config push

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

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

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.

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.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. 差分確認(反映前に必ず実施):

    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 325,949. 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.