#!/usr/bin/env bash
# linkedin-skills setup — register skills with Claude Code and initialize state
set -e

REPO_DIR="$(cd "$(dirname "$0")" && pwd)"

# ─── Detect Claude skills directory ───────────────────────────────────────────
# If this repo is already inside ~/.claude/skills/, link siblings there.
# Otherwise default to ~/.claude/skills/.
INSTALL_SKILLS_DIR="$(dirname "$REPO_DIR")"
PARENT_BASENAME="$(basename "$(dirname "$INSTALL_SKILLS_DIR")")"
SKILLS_BASENAME="$(basename "$INSTALL_SKILLS_DIR")"

if [ "$SKILLS_BASENAME" = "skills" ] && [ "$PARENT_BASENAME" = ".claude" ]; then
  : # already inside ~/.claude/skills/ — good
else
  INSTALL_SKILLS_DIR="$HOME/.claude/skills"
  mkdir -p "$INSTALL_SKILLS_DIR"
fi

# ─── Check Node.js (optional) ─────────────────────────────────────────────────
HAS_NODE=false
if command -v node >/dev/null 2>&1; then
  NODE_MAJOR=$(node -e "process.stdout.write(String(process.versions.node.split('.')[0]))")
  if [ "$NODE_MAJOR" -ge 18 ]; then
    HAS_NODE=true
  else
    echo "Note: Node.js $(node --version) found but 18+ is recommended. Skills will run in LLM-only mode."
  fi
else
  echo "Note: Node.js not found. Skills will run in LLM-only mode (no scripts needed)."
fi

# ─── Symlink each skill directory into the skills parent ──────────────────────
echo "Linking skills to $INSTALL_SKILLS_DIR..."
linked=()
for skill_dir in "$REPO_DIR"/*/; do
  if [ -f "$skill_dir/SKILL.md" ]; then
    skill_name="$(basename "$skill_dir")"
    target="$INSTALL_SKILLS_DIR/$skill_name"
    if [ -L "$target" ] || [ ! -e "$target" ]; then
      ln -snf "$REPO_DIR/$skill_name" "$target"
      linked+=("$skill_name")
    else
      echo "  skipped $skill_name (already exists at $target, not a symlink)"
    fi
  fi
done

if [ ${#linked[@]} -gt 0 ]; then
  echo ""
  printf "  %-30s %s\n" "Skill" "Status"
  printf "  %-30s %s\n" "------------------------------" "--------"
  for skill in "${linked[@]}"; do
    printf "  %-30s %s\n" "$skill" "linked"
  done
  echo ""
else
  echo "  (all skills already linked)"
fi

# ─── Initialize state files ───────────────────────────────────────────────────
echo "Initializing state..."
if [ "$HAS_NODE" = true ]; then
  node "$REPO_DIR/scripts/bootstrap-system.js"
else
  # Create state files directly without Node.js
  mkdir -p "$REPO_DIR/state" "$REPO_DIR/context" "$REPO_DIR/output" "$REPO_DIR/reports"
  [ -f "$REPO_DIR/state/linkedin-settings.json" ] || cp "$REPO_DIR/config/default-settings.json" "$REPO_DIR/state/linkedin-settings.json"
  [ -f "$REPO_DIR/state/linkedin-system-state.json" ] || cp "$REPO_DIR/state/linkedin-system-state.example.json" "$REPO_DIR/state/linkedin-system-state.json"
fi

# ─── Done ─────────────────────────────────────────────────────────────────────
echo ""
echo "linkedin-skills ready."
echo "  skills dir: $INSTALL_SKILLS_DIR"
echo ""
echo "Next steps:"
echo "  ─────────────────────────────────────────────────────────────────────"
printf "  %-28s %s\n" "1. Open in Claude Code" "Open this folder in Claude Code"
printf "  %-28s %s\n" "2. /onboard" "Analyze your landing page and set up your ICP"
printf "  %-28s %s\n" "3. /linkedin-lead-filter" "Filter your CSV leads against your ICP"
echo "  ─────────────────────────────────────────────────────────────────────"
