#!/usr/bin/env bash
# SessionStart hook for <project-name> plugin
#
# Emits a lightweight one-line prompt informing the agent that skills are
# available. The full routing context (using-<project-name>/SKILL.md) is
# loaded on demand via the platform's Skill tool when any command is first
# invoked.
#
# Platform detection:
#   CURSOR_PLUGIN_ROOT  → Cursor format  (additional_context)
#   CLAUDE_PLUGIN_ROOT  → Claude Code    (hookSpecificOutput)
#   COPILOT_CLI / other → SDK standard   (additionalContext)

set -euo pipefail

SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
PLUGIN_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)"
PROJECT_NAME="<project-name>"

# Dynamic skill discovery — scan skills/*/SKILL.md
skill_list=""
for d in "${PLUGIN_ROOT}"/skills/*/; do
  [ -f "${d}SKILL.md" ] && skill_list="${skill_list:+${skill_list}, }$(basename "$d")"
done

prompt="${PROJECT_NAME} loaded. Available skills: ${skill_list:-(none)}. Use ${PROJECT_NAME}:<skill-name> to invoke."

escape_for_json() {
    local s="$1"
    s="${s//\\/\\\\}"
    s="${s//\"/\\\"}"
    s="${s//$'\n'/\\n}"
    s="${s//$'\r'/\\r}"
    s="${s//$'\t'/\\t}"
    printf '%s' "$s"
}

escaped=$(escape_for_json "$prompt")

# Platform-specific JSON output (printf, no heredoc — bash 5.3+ compat)
if [ -n "${CURSOR_PLUGIN_ROOT:-}" ]; then
  printf '{"additional_context":"%s"}\n' "$escaped"
elif [ -n "${CLAUDE_PLUGIN_ROOT:-}" ] && [ -z "${COPILOT_CLI:-}" ]; then
  printf '{"hookSpecificOutput":{"hookEventName":"SessionStart","additionalContext":"%s"}}\n' "$escaped"
else
  printf '{"additionalContext":"%s"}\n' "$escaped"
fi

exit 0
