#!/usr/bin/env bash set -Eeuo pipefail STACK_DIR=${STACK_DIR:-$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)} HERMES_DATA_DIR=${HERMES_DATA_DIR:-/mnt/nvme-storage/appdata/Hermes-Agent} PROFILE_MATRIX=${PROFILE_MATRIX:-$STACK_DIR/config/profile-matrix.json} SKILL_ROOT=$STACK_DIR/platform/hermes/skills die() { printf 'FEHLER: %s\n' "$*" >&2; exit 1; } [[ $EUID -eq 0 ]] || die "Bitte als root ausführen." [[ -s $PROFILE_MATRIX ]] || die "Profilmatrix fehlt: $PROFILE_MATRIX" install_skill() { local source=$1 root=$2 name target name=${source%/SKILL.md} name=${name##*/} target=$root/platform/$name/SKILL.md grep -Fxq -- "name: $name" "$source" || \ die "Skill-Quelle hat kein gültiges Frontmatter: $source" install -d -o 10000 -g 10000 -m 0750 "${target%/*}" if [[ -s $target ]] && ! cmp -s "$source" "$target"; then cp -a "$target" "$target.before-managed-update-$(date +%Y%m%d-%H%M%S)" fi install -o 10000 -g 10000 -m 0640 "$source" "$target" cmp -s "$source" "$target" || die "Skill-Synchronisierung fehlgeschlagen: $target" } mapfile -t profiles < <(jq -r '.profiles[].id' "$PROFILE_MATRIX") for source in "$SKILL_ROOT"/*/SKILL.md; do [[ -s $source ]] || continue install_skill "$source" "$HERMES_DATA_DIR/skills" for profile in "${profiles[@]}"; do [[ -d $HERMES_DATA_DIR/profiles/$profile ]] || continue install_skill "$source" "$HERMES_DATA_DIR/profiles/$profile/skills" done done printf 'HERMES_SKILLS_OK\n'