migrate cc-config to chezmoi: add all skills, agents, and openclaw installer
- Add 4 missing skills: chromedp-alpine-container, claude-memory-api,
openclaw-custom-model-provider, webrtc-turn-shared-secret
- Add 9 custom agents: sre, dba, devops-engineer, platform-engineer,
security-engineer, network-engineer, observability-engineer,
home-automation-engineer, cluster-health-checker
- Add openclaw-install.sh: standalone script to clone dotfiles and
install skills/agents/hooks/settings to OpenClaw's home directory
Replaces the cc-config NFS volume + sync.sh approach
2026-03-15 16:02:05 +00:00
|
|
|
#!/bin/bash
|
|
|
|
|
# Install Claude Code config for OpenClaw from the dotfiles repo.
|
|
|
|
|
#
|
|
|
|
|
# Usage:
|
|
|
|
|
# # First time (clone + install):
|
|
|
|
|
# curl -fsSL https://raw.githubusercontent.com/ViktorBarzin/dot_files/master/dot_claude/executable_openclaw-install.sh | bash
|
|
|
|
|
#
|
|
|
|
|
# # Update (pull + reinstall):
|
|
|
|
|
# ~/.openclaw/dotfiles/dot_claude/executable_openclaw-install.sh
|
|
|
|
|
#
|
|
|
|
|
# Environment:
|
|
|
|
|
# OPENCLAW_HOME - OpenClaw home directory (default: /home/node/.openclaw or ~/.openclaw)
|
|
|
|
|
# DOTFILES_REPO - Git repo URL (default: https://github.com/ViktorBarzin/dot_files.git)
|
|
|
|
|
# DOTFILES_DIR - Where to clone the repo (default: $OPENCLAW_HOME/dotfiles)
|
|
|
|
|
|
|
|
|
|
set -euo pipefail
|
|
|
|
|
|
|
|
|
|
log() { echo "[openclaw-install] $*"; }
|
|
|
|
|
|
|
|
|
|
# Detect environment
|
|
|
|
|
if [ -d "/home/node/.openclaw" ]; then
|
|
|
|
|
OPENCLAW_HOME="${OPENCLAW_HOME:-/home/node/.openclaw}"
|
|
|
|
|
elif [ -d "$HOME/.openclaw" ]; then
|
|
|
|
|
OPENCLAW_HOME="${OPENCLAW_HOME:-$HOME/.openclaw}"
|
|
|
|
|
else
|
|
|
|
|
OPENCLAW_HOME="${OPENCLAW_HOME:-$HOME/.claude}"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
DOTFILES_REPO="${DOTFILES_REPO:-https://github.com/ViktorBarzin/dot_files.git}"
|
|
|
|
|
DOTFILES_DIR="${DOTFILES_DIR:-$OPENCLAW_HOME/dotfiles}"
|
|
|
|
|
SRC="$DOTFILES_DIR/dot_claude"
|
|
|
|
|
|
|
|
|
|
log "OPENCLAW_HOME=$OPENCLAW_HOME"
|
|
|
|
|
log "DOTFILES_DIR=$DOTFILES_DIR"
|
|
|
|
|
|
|
|
|
|
# Clone or pull
|
2026-03-15 17:18:56 +00:00
|
|
|
git config --global --add safe.directory "$DOTFILES_DIR" 2>/dev/null || true
|
migrate cc-config to chezmoi: add all skills, agents, and openclaw installer
- Add 4 missing skills: chromedp-alpine-container, claude-memory-api,
openclaw-custom-model-provider, webrtc-turn-shared-secret
- Add 9 custom agents: sre, dba, devops-engineer, platform-engineer,
security-engineer, network-engineer, observability-engineer,
home-automation-engineer, cluster-health-checker
- Add openclaw-install.sh: standalone script to clone dotfiles and
install skills/agents/hooks/settings to OpenClaw's home directory
Replaces the cc-config NFS volume + sync.sh approach
2026-03-15 16:02:05 +00:00
|
|
|
if [ -d "$DOTFILES_DIR/.git" ]; then
|
|
|
|
|
log "Pulling latest dotfiles..."
|
|
|
|
|
git -C "$DOTFILES_DIR" pull --ff-only 2>/dev/null || git -C "$DOTFILES_DIR" pull --rebase || true
|
|
|
|
|
else
|
|
|
|
|
log "Cloning dotfiles..."
|
|
|
|
|
git clone --depth 1 "$DOTFILES_REPO" "$DOTFILES_DIR"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# Install skills
|
|
|
|
|
if [ -d "$SRC/skills" ]; then
|
|
|
|
|
mkdir -p "$OPENCLAW_HOME/skills"
|
|
|
|
|
rsync -a --delete "$SRC/skills/" "$OPENCLAW_HOME/skills/"
|
|
|
|
|
log "Installed $(ls "$OPENCLAW_HOME/skills/" | wc -l | tr -d ' ') skills"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# Install agents
|
|
|
|
|
if [ -d "$SRC/agents" ]; then
|
|
|
|
|
mkdir -p "$OPENCLAW_HOME/agents"
|
|
|
|
|
rsync -a --delete "$SRC/agents/" "$OPENCLAW_HOME/agents/"
|
|
|
|
|
log "Installed $(ls "$OPENCLAW_HOME/agents/" | wc -l | tr -d ' ') agents"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# Install hooks (skip executable_ prefix renaming — OpenClaw doesn't use chezmoi)
|
|
|
|
|
if [ -d "$SRC/hooks" ]; then
|
|
|
|
|
mkdir -p "$OPENCLAW_HOME/hooks"
|
|
|
|
|
for f in "$SRC/hooks/"*; do
|
|
|
|
|
base=$(basename "$f")
|
|
|
|
|
# Strip chezmoi executable_ prefix if present
|
|
|
|
|
dest="${base#executable_}"
|
|
|
|
|
cp "$f" "$OPENCLAW_HOME/hooks/$dest"
|
|
|
|
|
chmod +x "$OPENCLAW_HOME/hooks/$dest" 2>/dev/null || true
|
|
|
|
|
done
|
|
|
|
|
log "Installed $(ls "$OPENCLAW_HOME/hooks/" | wc -l | tr -d ' ') hooks"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# Install commands
|
|
|
|
|
if [ -d "$SRC/commands" ]; then
|
|
|
|
|
mkdir -p "$OPENCLAW_HOME/commands"
|
|
|
|
|
rsync -a --delete "$SRC/commands/" "$OPENCLAW_HOME/commands/"
|
|
|
|
|
log "Installed commands"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# Install CLAUDE.md (global knowledge)
|
|
|
|
|
if [ -f "$SRC/CLAUDE.md" ]; then
|
|
|
|
|
cp "$SRC/CLAUDE.md" "$OPENCLAW_HOME/CLAUDE.md"
|
|
|
|
|
log "Installed CLAUDE.md"
|
|
|
|
|
fi
|
|
|
|
|
|
2026-03-15 16:02:53 +00:00
|
|
|
# Install settings — rewrite hardcoded Mac paths to OpenClaw paths
|
|
|
|
|
# Source has /Users/viktorbarzin/.claude/... paths from the Mac; replace with OpenClaw equivalents
|
migrate cc-config to chezmoi: add all skills, agents, and openclaw installer
- Add 4 missing skills: chromedp-alpine-container, claude-memory-api,
openclaw-custom-model-provider, webrtc-turn-shared-secret
- Add 9 custom agents: sre, dba, devops-engineer, platform-engineer,
security-engineer, network-engineer, observability-engineer,
home-automation-engineer, cluster-health-checker
- Add openclaw-install.sh: standalone script to clone dotfiles and
install skills/agents/hooks/settings to OpenClaw's home directory
Replaces the cc-config NFS volume + sync.sh approach
2026-03-15 16:02:05 +00:00
|
|
|
if [ -f "$SRC/settings.json" ]; then
|
2026-03-15 16:02:53 +00:00
|
|
|
sed -e "s|/Users/viktorbarzin/.claude|$OPENCLAW_HOME|g" \
|
|
|
|
|
-e "s|/Users/viktorbarzin|$(dirname "$OPENCLAW_HOME")|g" \
|
|
|
|
|
-e "s|{{CLAUDE_DIR}}|$OPENCLAW_HOME|g" \
|
migrate cc-config to chezmoi: add all skills, agents, and openclaw installer
- Add 4 missing skills: chromedp-alpine-container, claude-memory-api,
openclaw-custom-model-provider, webrtc-turn-shared-secret
- Add 9 custom agents: sre, dba, devops-engineer, platform-engineer,
security-engineer, network-engineer, observability-engineer,
home-automation-engineer, cluster-health-checker
- Add openclaw-install.sh: standalone script to clone dotfiles and
install skills/agents/hooks/settings to OpenClaw's home directory
Replaces the cc-config NFS volume + sync.sh approach
2026-03-15 16:02:05 +00:00
|
|
|
-e "s|{{HOME}}|$(dirname "$OPENCLAW_HOME")|g" \
|
|
|
|
|
"$SRC/settings.json" > "$OPENCLAW_HOME/settings.json"
|
2026-03-15 16:02:53 +00:00
|
|
|
log "Installed settings.json (paths rewritten)"
|
migrate cc-config to chezmoi: add all skills, agents, and openclaw installer
- Add 4 missing skills: chromedp-alpine-container, claude-memory-api,
openclaw-custom-model-provider, webrtc-turn-shared-secret
- Add 9 custom agents: sre, dba, devops-engineer, platform-engineer,
security-engineer, network-engineer, observability-engineer,
home-automation-engineer, cluster-health-checker
- Add openclaw-install.sh: standalone script to clone dotfiles and
install skills/agents/hooks/settings to OpenClaw's home directory
Replaces the cc-config NFS volume + sync.sh approach
2026-03-15 16:02:05 +00:00
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# Fix ownership if running as root (init container)
|
|
|
|
|
if [ "$(id -u)" = "0" ]; then
|
|
|
|
|
chown -R 1000:1000 "$OPENCLAW_HOME" 2>/dev/null || true
|
|
|
|
|
log "Fixed ownership to UID 1000"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
log "Done. Installed to $OPENCLAW_HOME"
|