feat(update-skills): dual install target — ~/.claude/skills + ~/.agents/skills (agent-neutral); pi settings hack removed (v0.2.1)

This commit is contained in:
2026-08-12 21:43:00 +03:00
parent e431e9e142
commit 348f6f3108
7 changed files with 155 additions and 94 deletions

View File

@@ -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