forked from bchanot/claude
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:
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user