feat(skills): vendor agent-skills trio at a pinned commit, emil precedent

observability-and-instrumentation, deprecation-and-migration,
ci-cd-and-automation from addyosmani/agent-skills 2686b620, curl'd into
skills-external/<name>/ by install-plugins.sh Step 8e (tmp+mv), refreshed
by update-all.sh 7.3, symlinked by link.sh, registered in toggle-external,
profile.sh and the full/backend/dev profiles. Pin read from the lock via
argv, never hardcoded. Case 2 of the 6-repo review, BDR-102.
This commit is contained in:
bastien
2026-09-27 20:17:36 +02:00
parent 642fea826e
commit d28c45ed19
13 changed files with 160 additions and 14 deletions
+55
View File
@@ -90,6 +90,22 @@ print(v)
fi
}
# Read a pinned commit sha from plugins.lock.json (agent-skills style entries
# — no "version", a "commit" field instead). Prints the sha, or "" if the
# entry or the field is absent.
# Usage: pinned_commit "agent-skills" → prints the commit sha or ""
pinned_commit() {
local key="$1"
if [ -f "$REPO/plugins.lock.json" ] && command -v python3 &>/dev/null; then
python3 -c "
import json, sys
with open(sys.argv[1]) as f:
d = json.load(f)
print(d.get(sys.argv[2], {}).get('commit', ''))
" "$REPO/plugins.lock.json" "$key" 2>/dev/null || true
fi
}
# ============================================================
# DETECT OS
# ============================================================
@@ -899,6 +915,43 @@ else
fi
echo ""
# ── Step 8e: Agent Skills (addyosmani/agent-skills, pinned commit) ──
# Three dev-lifecycle skills vendored the emil-design-eng way (curl →
# skills-external/<name>/SKILL.md, symlinked by link.sh) but COMMIT-pinned
# instead of tracking main: the sha lives in plugins.lock.json ("agent-skills"
# entry), never hardcoded here.
echo "── Step 8e: Agent Skills (addyosmani/agent-skills) ─────────"
echo ""
AGENT_SKILLS_NAMES=(observability-and-instrumentation deprecation-and-migration ci-cd-and-automation)
AGENT_SKILLS_SHA=$(pinned_commit "agent-skills")
if [ -z "$AGENT_SKILLS_SHA" ]; then
err "agent-skills: no commit pinned in plugins.lock.json — add an \"agent-skills\" entry with a \"commit\" field"
else
for _as_skill in "${AGENT_SKILLS_NAMES[@]}"; do
_as_dir="$REPO/skills-external/$_as_skill"
_as_url="https://raw.githubusercontent.com/addyosmani/agent-skills/$AGENT_SKILLS_SHA/skills/$_as_skill/SKILL.md"
mkdir -p "$_as_dir"
if [ -f "$_as_dir/SKILL.md" ]; then
ok "$_as_skill already downloaded"
else
info "Downloading SKILL.md from addyosmani/agent-skills ($_as_skill)..."
if curl -fsSL "$_as_url" -o "$_as_dir/SKILL.md.tmp" \
&& mv "$_as_dir/SKILL.md.tmp" "$_as_dir/SKILL.md"; then
ok "$_as_skill installed"
else
rm -f "$_as_dir/SKILL.md.tmp"
err "$_as_skill download failed — try: curl -fsSL $_as_url -o $_as_dir/SKILL.md"
fi
fi
if [ -L "$HOME/.claude/skills/$_as_skill" ]; then
ok "$_as_skill symlink OK"
else
info "Symlinking $_as_skill — will be created by link.sh"
fi
done
fi
echo ""
# ============================================================
# STEP 8.5 — EXTERNAL SKILLS (npx skills add …)
# ============================================================
@@ -1186,6 +1239,7 @@ echo " 🔄 emil-design-eng — UI polish, animations, component craft (c
echo " 🔄 frontend-design — distinctive frontend interfaces, anti-AI-slop (anthropic-agent-skills)"
echo " 🔄 impeccable — /impeccable design verbs + 45-rule deterministic detector (npx impeccable detect)"
echo " 🔄 design-motion-principles — motion/animation design, 3-designer lens (kylezantos)"
echo " 🔄 agent-skills trio — observability-and-instrumentation, deprecation-and-migration, ci-cd-and-automation (curl → symlink, pinned commit)"
echo " 🔄 darwin-skill — autonomous skill optimizer (npx skills, ~/.agents/skills/)"
echo " 🔄 21st skill pack — 21st.dev CLI skills; design ones follow the profile (full by default), publishing ones on demand (toggle: lib/toggle-external.sh enable 21st)"
echo ""
@@ -1194,6 +1248,7 @@ echo " GStack skills symlinked individually into ~/.claude/skills/ (→ submodu
echo " Emil Design Eng at: ~/.claude/skills/emil-design-eng/ (symlink → skills-external)"
echo " Frontend Design at: ~/.claude/skills/frontend-design/ (symlink → skills-external)"
echo " Design Motion Principles at: ~/.claude/skills/design-motion-principles/ (symlink → skills-external)"
echo " Agent Skills trio at: ~/.claude/skills/{observability-and-instrumentation,deprecation-and-migration,ci-cd-and-automation}/ (symlink → skills-external)"
echo " npx skills at: ~/.agents/skills/ (symlinked into ~/.claude/skills/)"
echo ""
echo " → Restart Claude Code — plugins load automatically"