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
This commit is contained in:
parent
ba3ec6ced5
commit
c95ffa03c5
16 changed files with 1013 additions and 2 deletions
99
dot_claude/executable_openclaw-install.sh
Normal file
99
dot_claude/executable_openclaw-install.sh
Normal file
|
|
@ -0,0 +1,99 @@
|
|||
#!/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
|
||||
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
|
||||
|
||||
# Install settings (render template: replace {{HOME}} and {{CLAUDE_DIR}} with actual paths)
|
||||
if [ -f "$SRC/settings.json" ]; then
|
||||
sed -e "s|{{CLAUDE_DIR}}|$OPENCLAW_HOME|g" \
|
||||
-e "s|{{HOME}}|$(dirname "$OPENCLAW_HOME")|g" \
|
||||
"$SRC/settings.json" > "$OPENCLAW_HOME/settings.json"
|
||||
log "Installed settings.json (templated)"
|
||||
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"
|
||||
Loading…
Add table
Add a link
Reference in a new issue