#!/usr/bin/env bash
# VibeMarketers installer.
# Installs the starter skills into .claude/skills/ and every published loop into
# .claude/loops/ in the current project.
# Usage: curl -fsSL https://vibemarketers.ai/install.sh | bash
set -euo pipefail

BASE="https://vibemarketers.ai"
SKILLS=(product-marketing-context loop-engineering loop-author verifier-author aeo-content-optimizer niche-content-research buying-signal-scout youtube-video-planner video-repurposer)
SKILL_DEST=".claude/skills"
LOOP_DEST=".claude/loops"

echo "VibeMarketers"
echo "Installing ${#SKILLS[@]} starter skills into ${SKILL_DEST}/"

for skill in "${SKILLS[@]}"; do
  mkdir -p "${SKILL_DEST}/${skill}"
  curl -fsSL "${BASE}/starter-pack/${skill}/SKILL.md" -o "${SKILL_DEST}/${skill}/SKILL.md"
  # Not every skill ships a README; skip it quietly when there is none.
  curl -fsSL "${BASE}/starter-pack/${skill}/README.md" -o "${SKILL_DEST}/${skill}/README.md" 2>/dev/null || rm -f "${SKILL_DEST}/${skill}/README.md"
  echo "  installed skill ${skill}"
done

echo "Fetching every published loop from ${BASE}/api/loops.json"
mkdir -p "${LOOP_DEST}"
LOOPS_JSON="$(curl -fsSL "${BASE}/api/loops.json")"

if command -v node >/dev/null 2>&1; then
  printf '%s' "${LOOPS_JSON}" | node -e '
    const fs = require("fs");
    const data = JSON.parse(fs.readFileSync(0, "utf8"));
    for (const loop of data.loops) {
      const lines = [
        `# ${loop.title}`,
        ``,
        `Loop: ${loop.loop}`,
        `Stage: ${loop.stage}`,
        `Autonomy: ${loop.autonomy}`,
        `Source: ${loop.url}`,
        loop.fixture ? `Fixture: every receipt on this loop is fixture data, nothing measured yet.` : ``,
        ``,
        `## Goal prompt`,
        ``,
        loop.goalPrompt,
        ``,
        `## Verifier prompt`,
        ``,
        loop.verifierPrompt,
        ``,
        `## Stopping condition`,
        ``,
        loop.stoppingCondition,
        ``,
        `## MCPs`,
        ``,
        ...loop.mcps.map((m) => `- ${m}`),
        ``,
      ];
      fs.writeFileSync(`'"${LOOP_DEST}"'/${loop.loop}.md`, lines.join("\n"));
      console.log(`  installed loop ${loop.loop}`);
    }
  '
else
  printf '%s' "${LOOPS_JSON}" > "${LOOP_DEST}/loops.json"
  echo "  node not found; saved the raw index to ${LOOP_DEST}/loops.json"
fi

echo "Done. Restart your agent session so it picks up the new skills and loops."
echo "Receipts, method, scoreboard: ${BASE}"
