#!/usr/bin/env bash # Install the skills plugin globally into ~/.claude/. # # For each skill under skills//, creates symlinks: # ~/.claude/skills/ -> /skills/ # ~/.claude/agents/ -> /skills//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" } if [ -d "$REPO_DIR/skills" ]; then for s in "$REPO_DIR"/skills/*/; do [ -d "$s" ] || continue name="$(basename "$s")" link_one "$s" "$CLAUDE_SKILLS/$name" if [ -d "$s/agents" ]; then link_one "$s/agents" "$CLAUDE_AGENTS/$name" fi done fi 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"