skills/agent-goal-skill/install.sh

73 lines
2.0 KiB
Bash
Executable File

#!/usr/bin/env bash
# agent-goal-skill — one-liner installer for Claude Code, Codex, Kimi, Droid, Auggie
#
# Detects which CLI agents are installed and clones the skill into each one's
# skill directory. Idempotent — safe to re-run.
set -euo pipefail
REPO_URL="${AGENT_GOAL_SKILL_REPO:-https://github.com/dallionking/agent-goal-skill.git}"
SKILL_NAME="agent-goal-skill"
declare -A TARGETS=(
[claude-code]="$HOME/.claude/skills/$SKILL_NAME"
[codex]="$HOME/.codex/skills/$SKILL_NAME"
[kimi]="$HOME/.kimi/skills/$SKILL_NAME"
[droid]="$HOME/.factory/skills/$SKILL_NAME"
[auggie]="$HOME/.augment/skills/$SKILL_NAME"
)
is_installed() {
local agent="$1"
case "$agent" in
claude-code) command -v claude >/dev/null 2>&1 ;;
codex) command -v codex >/dev/null 2>&1 ;;
kimi) command -v kimi >/dev/null 2>&1 ;;
droid) command -v droid >/dev/null 2>&1 ;;
auggie) command -v auggie >/dev/null 2>&1 ;;
*) return 1 ;;
esac
}
install_to() {
local agent="$1"
local target="${TARGETS[$agent]}"
local parent
parent="$(dirname "$target")"
mkdir -p "$parent"
if [ -d "$target/.git" ]; then
echo " [$agent] already installed → updating..."
git -C "$target" pull --ff-only
elif [ -d "$target" ]; then
echo " [$agent] non-git directory exists — skipping (move or delete it first)"
return 0
else
echo " [$agent] installing → $target"
git clone --quiet "$REPO_URL" "$target"
fi
echo " [$agent] ✓"
}
echo "agent-goal-skill installer"
echo "Repo: $REPO_URL"
echo
installed_any=0
for agent in "${!TARGETS[@]}"; do
if is_installed "$agent"; then
install_to "$agent"
installed_any=1
fi
done
if [ "$installed_any" -eq 0 ]; then
echo "No supported CLI agent detected. Install one of: claude, codex, kimi, droid, auggie."
echo "Or set target manually: git clone $REPO_URL <your-skills-dir>/$SKILL_NAME"
exit 1
fi
echo
echo "Done. Restart your agent and invoke: /$SKILL_NAME <rough goal description>"