#!/usr/bin/env bash # Install the skills plugin globally into ~/.claude/. # # Each top-level directory that contains a SKILL.md is treated as # a skill. For each such , creates symlinks: # ~/.claude/skills/ -> / # ~/.claude/agents/ -> //agents (if that dir exists) # # Idempotent — existing symlinks pointing to this repo are left # alone; existing entries that point elsewhere are reported and # skipped. set -euo pipefail REPO_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" CLAUDE_SKILLS="$HOME/.claude/skills" CLAUDE_AGENTS="$HOME/.claude/agents" mkdir -p "$CLAUDE_SKILLS" "$CLAUDE_AGENTS" link_one() { local src="$1" local dst="$2" if [ -L "$dst" ]; then local existing existing="$(readlink "$dst")" if [ "$existing" = "$src" ]; then echo "ok $dst -> $src" return 0 fi echo "skip $dst already symlinked to $existing" return 0 fi if [ -e "$dst" ]; then echo "skip $dst exists and is not a symlink" return 0 fi ln -s "$src" "$dst" echo "link $dst -> $src" } for d in "$REPO_DIR"/*/; do [ -d "$d" ] || continue [ -f "$d/SKILL.md" ] || continue name="$(basename "$d")" link_one "${d%/}" "$CLAUDE_SKILLS/$name" if [ -d "$d/agents" ]; then link_one "${d%/}/agents" "$CLAUDE_AGENTS/$name" fi done echo echo "Install complete." echo "Next: drop a profile into each project that should use the plugin:" echo " cp $REPO_DIR/templates/project-profile.yml /.claude/dev-cycle-profile.yml"