#!/usr/bin/env bash set -euo pipefail ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" MANIFEST="$ROOT_DIR/skills.yaml" CACHE_DIR="$HOME/.ai-skills/registry" LOCAL_SKILLS_DIR="$HOME/.ai-skills/skills" if [[ ! -f "$MANIFEST" ]]; then echo "Missing skills manifest: $MANIFEST" >&2 exit 1 fi REGISTRY_URL="$(grep -E '^registry:' "$MANIFEST" | awk '{print $2}')" if [[ -z "$REGISTRY_URL" ]]; then echo "Missing registry in skills.yaml" >&2 exit 1 fi mkdir -p "$CACHE_DIR" "$LOCAL_SKILLS_DIR" if [[ -d "$CACHE_DIR/.git" ]]; then git -C "$CACHE_DIR" pull --ff-only else git clone "$REGISTRY_URL" "$CACHE_DIR" fi SKILL_NAMES=$(awk '/^- name:/{print $2}' "$MANIFEST") for SKILL in $SKILL_NAMES; do SRC="$CACHE_DIR/skills/$SKILL" DEST="$LOCAL_SKILLS_DIR/$SKILL" if [[ ! -d "$SRC" ]]; then echo "Missing skill in registry: $SKILL" >&2 exit 1 fi rm -rf "$DEST" cp -R "$SRC" "$DEST" echo "Synced skill: $SKILL" done echo "Done. Restart your editor if skills do not appear."