#!/bin/bash # export-connaissances.sh — exporte la « connaissance » Claude Code + l'accès MacLustr de cet opérateur. # usage : export-connaissances.sh [--mcp] [--vers-cluster-skill] [chemin-archive.tar.gz] # --mcp inclut ~/.claude.json → mcpServers (JETONS !) # --vers-cluster-skill copie aussi CLAUDE.md + mémoire + commandes dans /operateur/connaissances/ et pousse sur spbgit set -euo pipefail MCP=0; VERS=0; OUT="" for a in "$@"; do case "$a" in --mcp) MCP=1;; --vers-cluster-skill) VERS=1;; *) OUT="$a";; esac; done OUT=${OUT:-$HOME/Desktop/maclustr-operateur-$(date +%Y%m%d).tar.gz} HERE="$(cd "$(dirname "$0")" && pwd)" SLUG=$(echo "$HOME" | tr '/' '-') # ex. -Users-simon-pierreboucher MEM="$HOME/.claude/projects/$SLUG/memory" T=$(mktemp -d); mkdir -p "$T/claude/memory" "$T/ssh" "$T/operateur" cp "$HOME/.claude/CLAUDE.md" "$T/claude/CLAUDE.md" [ -d "$HOME/.claude/commands" ] && cp -R "$HOME/.claude/commands" "$T/claude/" [ -f "$HOME/.claude/settings.json" ] && cp "$HOME/.claude/settings.json" "$T/claude/" [ -d "$MEM" ] && cp -R "$MEM/." "$T/claude/memory/" || echo "avertissement : pas de mémoire dans $MEM" cp "$HOME/.ssh/config" "$T/ssh/config" [ -f "$HOME/.ssh/maclustr-egress.sh" ] && cp "$HOME/.ssh/maclustr-egress.sh" "$T/ssh/" if [ $MCP = 1 ]; then python3 - "$T/claude/mcpServers.json" <<'PY' import json, os, sys d = json.load(open(os.path.expanduser("~/.claude.json"))) json.dump(d.get("mcpServers", {}), open(sys.argv[1], "w"), indent=1) PY fi cp "$HERE"/*.sh "$T/operateur/" # les scripts voyagent avec l'archive echo "$HOME" > "$T/SOURCE_HOME"; whoami > "$T/SOURCE_USER"; date "+%Y-%m-%d %H:%M" > "$T/EXPORTED_AT" tar -czf "$OUT" -C "$T" . && chmod 600 "$OUT" echo "export → $OUT ($(du -h "$OUT" | cut -f1)) ; mémoire : $(ls "$T/claude/memory" | wc -l | tr -d ' ') fichiers ; MCP : $([ $MCP = 1 ] && echo inclus || echo non)" if [ $VERS = 1 ]; then CS="$(cd "$HERE/.." && pwd)"; K="$CS/operateur/connaissances" rm -rf "$K"; mkdir -p "$K"; cp -R "$T/claude/." "$K/"; rm -f "$K/mcpServers.json" # jamais les jetons dans git cp "$T/ssh/config" "$K/ssh-config"; [ -f "$T/ssh/maclustr-egress.sh" ] && cp "$T/ssh/maclustr-egress.sh" "$K/" cp "$T/SOURCE_HOME" "$T/EXPORTED_AT" "$K/" git -C "$CS" add operateur/connaissances && git -C "$CS" commit -q -m "connaissances Claude Code exportées depuis $(hostname -s) ($(date +%Y-%m-%d))" && git -C "$CS" push -q origin main && echo "poussé dans cluster-skill/operateur/connaissances/" fi rm -rf "$T"