From claude-brain-sync
Joins existing Claude Code brain sync network from another machine by cloning git repo, merging local state, validating URL, and setting up age encryption if needed.
How this skill is triggered — by the user, by Claude, or both
Slash command
/claude-brain-sync:brain-joinThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
The user wants to join an existing brain network from this machine.
The user wants to join an existing brain network from this machine.
The Git remote URL is provided as: $ARGUMENTS
Check dependencies (git, jq or python3).
Validate the remote URL for security:
source "${CLAUDE_PLUGIN_ROOT}/scripts/common.sh"
validate_remote_url "$ARGUMENTS"
If the URL appears to point to a PUBLIC repo, warn the user and ask for confirmation.
Show current local brain inventory:
bash "${CLAUDE_PLUGIN_ROOT}/scripts/status.sh"
Show security notice:
Clone the brain repo:
git clone "$ARGUMENTS" ~/.claude/brain-repo
If the directory exists, do git -C ~/.claude/brain-repo pull origin main instead.
Check if the network uses encryption:
# Check for recipients file indicating encryption
if [ -f ~/.claude/brain-repo/meta/recipients.txt ]; then
echo "This brain network uses age encryption."
if ! command -v age-keygen &>/dev/null; then
echo "ERROR: age not found. Install it from https://github.com/FiloSottile/age"
echo "On macOS: brew install age"
echo "On Ubuntu/Debian: apt install age"
exit 1
fi
echo ""
echo "You need to set up age encryption to join this network."
echo "Options:"
echo " 1. Generate a new age keypair for this machine"
echo " 2. Use an existing age private key"
echo ""
read -p "Generate new keypair? (y/n): " -r generate_key
if [ "$generate_key" = "y" ] || [ "$generate_key" = "Y" ]; then
# Generate new keypair
source "${CLAUDE_PLUGIN_ROOT}/scripts/common.sh"
IDENTITY_FILE="${HOME}/.claude/brain-age-key.txt"
age-keygen -o "$IDENTITY_FILE"
chmod 600 "$IDENTITY_FILE"
# Extract public key
PUBLIC_KEY=$(grep "# public key:" "$IDENTITY_FILE" | cut -d' ' -f4)
echo ""
echo "Generated age keypair. Your public key is:"
echo "$PUBLIC_KEY"
echo ""
echo "IMPORTANT: Share this public key with the brain network owner"
echo "so they can add it to the recipients file."
echo ""
echo "The network owner should run:"
echo " echo '$PUBLIC_KEY' >> ~/.claude/brain-repo/meta/recipients.txt"
echo " git add meta/recipients.txt && git commit -m 'Add machine: $(hostname)' && git push"
echo ""
read -p "Press Enter when the network owner has added your public key..."
# Pull to get updated recipients
git -C ~/.claude/brain-repo pull origin main
REGISTER_FLAGS="--encrypt"
else
echo "Please place your existing age private key at: ~/.claude/brain-age-key.txt"
echo "Make sure it's readable only by you: chmod 600 ~/.claude/brain-age-key.txt"
read -p "Press Enter when ready..."
if [ ! -f ~/.claude/brain-age-key.txt ]; then
echo "ERROR: Age private key not found at ~/.claude/brain-age-key.txt"
exit 1
fi
REGISTER_FLAGS="--encrypt"
fi
else
echo "This brain network does not use encryption."
REGISTER_FLAGS=""
fi
Register this machine:
if [ -n "$REGISTER_FLAGS" ]; then
bash "${CLAUDE_PLUGIN_ROOT}/scripts/register-machine.sh" "$ARGUMENTS" $REGISTER_FLAGS
else
bash "${CLAUDE_PLUGIN_ROOT}/scripts/register-machine.sh" "$ARGUMENTS"
fi
Show what's in the consolidated brain vs what's local. Run export first:
MACHINE_ID=$(cat ~/.claude/brain-config.json | jq -r '.machine_id')
mkdir -p ~/.claude/brain-repo/machines/${MACHINE_ID}
bash "${CLAUDE_PLUGIN_ROOT}/scripts/export.sh" --output ~/.claude/brain-repo/machines/${MACHINE_ID}/brain-snapshot.json
Ask the user how to handle existing local data:
Based on choice:
Push the updated state:
cd ~/.claude/brain-repo
git add machines/ consolidated/ meta/
git commit -m "Join: $(hostname) joined brain network"
git push origin main
Confirm success:
npx claudepluginhub toroleapinc/claude-brain --plugin claude-brain-syncInitializes Git remote for Claude Code brain sync network. Exports memories, skills, settings (minus secrets) to private repo with validation, inventory, and optional age encryption.
Manages StatsClaw Brain knowledge sharing lifecycle: user opt-in via context.md, git clone/pull of statsclaw/brain and brain-seedbank repos, consent for PR contributions.
Helps users sync Claude Code projects across multiple devices using Git as a synchronization tool. Includes setup guidance for beginners.