Add personal superpowers overlay system

Enables users to write and manage their own skills alongside core skills.

## Key Features:
- Auto-setup on first session: Creates ~/.config/superpowers/ git repo
- Two-tier skills: Personal skills shadow core skills when paths match
- Environment variable support: PERSONAL_SUPERPOWERS_DIR, XDG_CONFIG_HOME
- GitHub integration: Optional public repo creation for sharing skills
- CLI-agnostic: Works across Claude Code, Codex CLI, Gemini CLI (future)

## Changes:
- Added hooks/setup-personal-superpowers.sh - Auto-initializes personal repo
- Updated hooks/session-start.sh - Runs setup, offers GitHub repo creation
- Updated list-skills, skills-search - Search both personal and core skills
- Renamed skills/meta/creating-skills → writing-skills
- Added skills/meta/setting-up-personal-superpowers - Setup documentation
- Added skills/meta/sharing-skills - Contribution workflow
- Removed skills/meta/installing-skills - Old ~/.clank system
- Removed all INDEX.md files - Replaced by list-skills tool
- Updated README.md, getting-started - Document personal skills workflow

## Architecture:
~/.config/superpowers/skills/  # Personal (user-created, git-tracked)
${CLAUDE_PLUGIN_ROOT}/skills/  # Core (read-only, from plugin)

Search order: Personal first, core second (first match wins)
This commit is contained in:
Jesse Vincent
2025-10-10 14:01:45 -07:00
parent dee324d417
commit 6c0ab4cfec
19 changed files with 668 additions and 590 deletions

View File

@@ -1,15 +1,37 @@
#!/usr/bin/env bash
# SessionStart hook for superpowers plugin
# Create data directory
mkdir -p ~/.superpowers
set -euo pipefail
# Run personal superpowers setup
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
setup_output=$("${SCRIPT_DIR}/setup-personal-superpowers.sh" 2>&1 || echo "setup_failed=true")
# Use same directory resolution as setup script
SUPERPOWERS_DIR="${PERSONAL_SUPERPOWERS_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/superpowers}"
# Check if GitHub CLI is available and setup succeeded
github_recommendation=""
if echo "$setup_output" | grep -q "github_cli_available=true"; then
if [[ ! -d "$SUPERPOWERS_DIR/.git" ]]; then
# This should not happen, but handle gracefully
github_recommendation=""
else
# Check if remote already exists
if ! (cd "$SUPERPOWERS_DIR" && git remote get-url origin &>/dev/null); then
github_recommendation="\n\n💡 Want to share your personal skills on GitHub? Superpowers are best when everyone can learn from them! I can create a 'personal-superpowers' repo for you."
fi
fi
elif echo "$setup_output" | grep -q "setup_failed=true"; then
github_recommendation="\n\n⚠ Personal superpowers setup encountered an issue. Please file a bug at https://github.com/obra/superpowers/issues"
fi
# Output context injection as JSON
cat <<EOF
{
"hookSpecificOutput": {
"hookEventName": "SessionStart",
"additionalContext": "<EXTREMELY_IMPORTANT>\nYou have superpowers.\n\n**RIGHT NOW, go read**: @${CLAUDE_PLUGIN_ROOT}/skills/getting-started/SKILL.md\n</EXTREMELY_IMPORTANT>"
"additionalContext": "<EXTREMELY_IMPORTANT>\nYou have superpowers.\n\n**RIGHT NOW, go read**: @${CLAUDE_PLUGIN_ROOT}/skills/getting-started/SKILL.md${github_recommendation}\n</EXTREMELY_IMPORTANT>"
}
}
EOF

View File

@@ -0,0 +1,52 @@
#!/usr/bin/env bash
# Setup script for personal superpowers directory
# Creates personal superpowers directory with git repo for personal skills
set -euo pipefail
# Use PERSONAL_SUPERPOWERS_DIR if set, otherwise XDG_CONFIG_HOME/superpowers, otherwise ~/.config/superpowers
SUPERPOWERS_DIR="${PERSONAL_SUPERPOWERS_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/superpowers}"
SKILLS_DIR="${SUPERPOWERS_DIR}/skills"
# Check if already set up
if [[ -d "${SUPERPOWERS_DIR}/.git" ]] && [[ -d "${SKILLS_DIR}" ]]; then
# Already set up, nothing to do
exit 0
fi
# Create directory structure
mkdir -p "${SKILLS_DIR}"
# Create .gitignore
cat > "${SUPERPOWERS_DIR}/.gitignore" <<'EOF'
# Superpowers local data
search-log.jsonl
conversation-index/
conversation-archive/
EOF
# Create README
cat > "${SUPERPOWERS_DIR}/README.md" <<'EOF'
# My Personal Superpowers
Personal skills and techniques for Claude Code.
Learn more about Superpowers: https://github.com/obra/superpowers
EOF
# Initialize git repo if not already initialized
if [[ ! -d "${SUPERPOWERS_DIR}/.git" ]]; then
cd "${SUPERPOWERS_DIR}"
git init -q
git add .gitignore README.md
git commit -q -m "Initial commit: Personal superpowers setup"
fi
# Check for gh and recommend GitHub setup
if command -v gh &> /dev/null; then
echo "github_cli_available=true"
else
echo "github_cli_available=false"
fi
exit 0