#!/usr/bin/env bash # SessionStart hook for superpowers plugin set -euo pipefail # Determine plugin root directory SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]:-$0}")" && pwd)" PLUGIN_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)" # Check if legacy skills directory exists and build warning warning_message="" legacy_skills_dir="${HOME}/.config/superpowers/skills" if [ -d "$legacy_skills_dir" ]; then warning_message="\n\nIN YOUR FIRST REPLY AFTER SEEING THIS MESSAGE YOU MUST TELL THE USER:⚠️ **WARNING:** Superpowers now uses Claude Code's skills system. Custom skills in ~/.config/superpowers/skills will not be read. Move custom skills to ~/.claude/skills instead. To make this message go away, remove ~/.config/superpowers/skills" fi # Read using-superpowers content using_superpowers_content=$(cat "${PLUGIN_ROOT}/skills/using-superpowers/SKILL.md" 2>&1 || echo "Error reading using-superpowers skill") # Escape outputs for JSON using pure bash escape_for_json() { local input="$1" local output="" local i char for (( i=0; i<${#input}; i++ )); do char="${input:$i:1}" case "$char" in $'\\') output+='\\' ;; '"') output+='\"' ;; $'\n') output+='\n' ;; $'\r') output+='\r' ;; $'\t') output+='\t' ;; *) output+="$char" ;; esac done printf '%s' "$output" } using_superpowers_escaped=$(escape_for_json "$using_superpowers_content") warning_escaped=$(escape_for_json "$warning_message") # Output context injection as JSON cat <\nYou have superpowers.\n\n**Below is the full content of your 'superpowers:using-superpowers' skill - your introduction to using skills. For all other skills, use the 'Skill' tool:**\n\n${using_superpowers_escaped}\n\n${warning_escaped}\n" } } EOF exit 0