feat(update-skills): dual install target — ~/.claude/skills + ~/.agents/skills (agent-neutral); pi settings hack removed (v0.2.1)
This commit is contained in:
@@ -20,7 +20,8 @@ YES_MODE=false
|
||||
|
||||
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
SKILLS_SRC="$ROOT/skills"
|
||||
TARGET="${CLAUDE_SKILLS_DIR:-$HOME/.claude/skills}"
|
||||
# Dual install targets — the "canon" is the git repo (skills/); both dirs are installs.
|
||||
TARGETS=("${CLAUDE_SKILLS_DIR:-$HOME/.claude/skills}" "$HOME/.agents/skills")
|
||||
|
||||
COMMON_ROOT="${COMMON_ROOT:-$HOME/projects/.common}"
|
||||
META_MCP="$COMMON_ROOT/lib/projects-meta-mcp"
|
||||
@@ -43,8 +44,9 @@ confirm() {
|
||||
# ── Collect before-versions ────────────────────────────────────────────────
|
||||
|
||||
declare -A BEFORE_VERSIONS=()
|
||||
if [[ -d "$TARGET" ]]; then
|
||||
for skill_dir in "$TARGET"/*/; do
|
||||
for target in "${TARGETS[@]}"; do
|
||||
[[ -d "$target" ]] || continue
|
||||
for skill_dir in "$target"/*/; do
|
||||
name="$(basename "$skill_dir")"
|
||||
vf="$skill_dir/SKILL.md"
|
||||
if [[ -f "$vf" ]]; then
|
||||
@@ -52,7 +54,7 @@ if [[ -d "$TARGET" ]]; then
|
||||
BEFORE_VERSIONS["$name"]="$ver"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
done
|
||||
|
||||
# ── Step 1: git pull ────────────────────────────────────────────────────────
|
||||
|
||||
@@ -133,17 +135,19 @@ ok "Skills installed."
|
||||
|
||||
info "Version diff:"
|
||||
CHANGES=false
|
||||
for skill_dir in "$TARGET"/*/; do
|
||||
name="$(basename "$skill_dir")"
|
||||
vf="$skill_dir/SKILL.md"
|
||||
if [[ -f "$vf" ]]; then
|
||||
after="$(grep -oP '^version:\s*\K[0-9]+\.[0-9]+\.[0-9]+' "$vf" 2>/dev/null || echo '?')"
|
||||
before="${BEFORE_VERSIONS[$name]:-new}"
|
||||
if [[ "$before" != "$after" ]]; then
|
||||
echo " $before → $after ($name)"
|
||||
CHANGES=true
|
||||
for target in "${TARGETS[@]}"; do
|
||||
for skill_dir in "$target"/*/; do
|
||||
name="$(basename "$skill_dir")"
|
||||
vf="$skill_dir/SKILL.md"
|
||||
if [[ -f "$vf" ]]; then
|
||||
after="$(grep -oP '^version:\s*\K[0-9]+\.[0-9]+\.[0-9]+' "$vf" 2>/dev/null || echo '?')"
|
||||
before="${BEFORE_VERSIONS[$name]:-new}"
|
||||
if [[ "$before" != "$after" ]]; then
|
||||
echo " $before → $after ($name)"
|
||||
CHANGES=true
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
done
|
||||
done
|
||||
if ! $CHANGES; then
|
||||
echo " (no version changes)"
|
||||
@@ -154,8 +158,12 @@ fi
|
||||
NEW_SETUP=()
|
||||
for skill_dir in "$SKILLS_SRC"/*/; do
|
||||
name="$(basename "$skill_dir")"
|
||||
if [[ "$name" == setup-* ]] && [[ ! -d "$TARGET/$name" ]]; then
|
||||
NEW_SETUP+=("$name")
|
||||
if [[ "$name" == setup-* ]]; then
|
||||
missing=false
|
||||
for target in "${TARGETS[@]}"; do
|
||||
[[ ! -d "$target/$name" ]] && missing=true
|
||||
done
|
||||
$missing && NEW_SETUP+=("$name")
|
||||
fi
|
||||
done
|
||||
|
||||
|
||||
Reference in New Issue
Block a user