smithery.ai

pull

Pull latest configuration from GitHub

First seen Mar 21, 2026

Installation

$ npx skills add https://smithery.ai

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from smithery.ai · top by installs.

npx skills add https://smithery.ai

Browse all from smithery.ai

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Skill metadata

Parsed from SKILL.md frontmatter.

Declared agents claude-code

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 4,337 B
  • docs SUMMARY.md 49 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 1 installs

SKILL.md

Pull Configuration

Pull the latest configuration from your GitHub repository and automatically merge settings.

Usage

/claude-github-sync:pull

Configuration Reference

Item Path Description
Config file ~/.claude/sync-config.json Sync configuration (repo URL, setup method)
Git remote ~/.claude/.git/config Primary check - git origin remote URL
Sync settings ~/.claude/settings.sync.json Shared settings (synced to GitHub)
Local settings ~/.claude/settings.local.json Machine-specific settings (gitignored)
Merged output ~/.claude/settings.json Auto-merged result of sync + local
Merge script ~/.claude/scripts/merge-settings.mjs Deep merges sync + local → settings.json

Instructions

Step 1: Check git remote (primary check)

The sync is configured if ~/.claude has a git remote. Config file (~/.claude/sync-config.json) is optional fallback.

cd ~/.claude

# Primary check: git remote
REPO_URL=$(git remote get-url origin 2>/dev/null)
if [ -n "$REPO_URL" ]; then
    echo "✅ Remote: $REPO_URL"
else
    # Fallback: check config file
    CONFIG_FILE="$HOME/.claude/sync-config.json"
    if [ -f "$CONFIG_FILE" ]; then
        echo "⚠️  Config exists but no git remote"
        echo "Run: /claude-github-sync:setup to fix"
        exit 1
    else
        echo "❌ Not configured"
        echo ""
        echo "Run: /claude-github-sync:setup"
        exit 1
    fi
fi

Step 2: Pull changes

cd ~/.claude

# Get current branch
BRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null || echo "main")

# Save current HEAD for change detection
HEAD_BEFORE=$(git rev-parse HEAD 2>/dev/null)

# Stash local changes if any
STASHED=false
if ! git diff --quiet 2>/dev/null; then
    echo "Stashing local changes..."
    git stash
    STASHED=true
fi

# Pull with rebase
if git pull --rebase origin "$BRANCH" 2>&1; then
    echo "✅ Pulled latest configuration"
else
    echo "❌ Pull failed"
    echo ""
    echo "Possible issues:"
    echo "  - Network connection"
    echo "  - Merge conflicts (run: git status)"
    echo "  - Remote branch doesn't exist"
    git status --short
fi

# Restore stashed changes
if [ "$STASHED" = true ]; then
    echo "Restoring local changes..."
    git stash pop
fi

# Show what changed
HEAD_AFTER=$(git rev-parse HEAD 2>/dev/null)
if [ "$HEAD_BEFORE" != "$HEAD_AFTER" ]; then
    echo ""
    echo "📋 Changes pulled:"
    echo ""
    echo "--- New commits ---"
    git log --oneline "$HEAD_BEFORE..$HEAD_AFTER"
    echo ""
    echo "--- Files changed ---"
    git diff --stat "$HEAD_BEFORE..$HEAD_AFTER"
else
    echo ""
    echo "📋 No new changes from remote."
fi

Step 3: Merge settings

After pulling, automatically merge sync and local settings.

The merge script can be in multiple locations:

  1. ~/.claude/scripts/merge-settings.mjs (user installed)
  2. Plugin's scripts directory (bundled)
cd ~/.claude

# Find merge script in multiple locations
MERGE_SCRIPT=""

# Location 1: User's scripts directory
if [ -f "$HOME/.claude/scripts/merge-settings.mjs" ]; then
    MERGE_SCRIPT="$HOME/.claude/scripts/merge-settings.mjs"
fi

# Location 2: Plugin cache (find latest version)
if [ -z "$MERGE_SCRIPT" ]; then
    PLUGIN_SCRIPT=$(find "$HOME/.claude/plugins/cache/claude-sync/claude-github-sync" -name "merge-settings.mjs" 2>/dev/null | head -1)
    if [ -n "$PLUGIN_SCRIPT" ]; then
        MERGE_SCRIPT="$PLUGIN_SCRIPT"
    fi
fi

# Location 3: Marketplace source
if [ -z "$MERGE_SCRIPT" ]; then
    MARKETPLACE_SCRIPT="$HOME/.claude/plugins/marketplaces/claude-sync/scripts/merge-settings.mjs"
    if [ -f "$MARKETPLACE_SCRIPT" ]; then
        MERGE_SCRIPT="$MARKETPLACE_SCRIPT"
    fi
fi

# Run merge if found
if [ -n "$MERGE_SCRIPT" ]; then
    echo ""
    echo "Merging settings..."
    node "$MERGE_SCRIPT"
else
    echo ""
    echo "⚠️  merge-settings.mjs not found"
    echo "   Settings will not be auto-merged"
fi

Step 4: Report result

Show the user what was updated.

echo ""
echo "📊 Current settings files:"
ls -la ~/.claude/settings*.json 2>/dev/null | awk '{print "  " $9 " (" $5 " bytes)"}'