ai-docs/scripts/sync-skills.sh
2026-02-10 14:08:36 -06:00

45 lines
1017 B
Bash

#!/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."