#!/usr/bin/env bash # Install the skills plugin globally into ~/.claude/. # # Creates symlinks from ~/.claude/skills/ and # ~/.claude/agents/ into this repo's skills/ and agents/ # subdirectories. 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" done fi if [ -d "$REPO_DIR/agents" ]; then for a in "$REPO_DIR"/agents/*/; do [ -d "$a" ] || continue name="$(basename "$a")" link_one "$a" "$CLAUDE_AGENTS/$name" 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"