| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- #!/usr/bin/env bash
- # ============================================================
- # lib/detect-plugins.sh — Single source of truth for plugin detection
- # Sourced by: session-start.sh, doctor.sh, install-plugins.sh
- #
- # Each function returns 0 (detected) or 1 (not detected).
- # No output — callers handle messaging.
- # ============================================================
- # --- Always-on plugins ---
- detect_rtk() {
- command -v rtk &>/dev/null
- }
- detect_superpowers() {
- # Fast check: filesystem (plugin cache)
- local cache_dir="$HOME/.claude/plugins/cache"
- if [ -d "$cache_dir" ]; then
- ls "$cache_dir" 2>/dev/null | grep -qi "superpowers" && return 0
- fi
- # Slow fallback: CLI (only if fast check fails)
- claude plugin list 2>/dev/null | grep -qi "superpowers" && return 0
- return 1
- }
- detect_security_guidance() {
- local cache_dir="$HOME/.claude/plugins/cache"
- [ -d "$cache_dir" ] && ls "$cache_dir" 2>/dev/null | grep -qi "security-guidance"
- }
- detect_skill_creator() {
- local cache_dir="$HOME/.claude/plugins/cache"
- [ -d "$cache_dir" ] && ls "$cache_dir" 2>/dev/null | grep -qi "skill-creator"
- }
- detect_pr_review_toolkit() {
- local cache_dir="$HOME/.claude/plugins/cache"
- [ -d "$cache_dir" ] && ls "$cache_dir" 2>/dev/null | grep -qi "pr-review-toolkit"
- }
- # --- Toggle plugins ---
- detect_gstack() {
- [ -d "$HOME/.claude/skills/gstack" ]
- }
- detect_gsd() {
- ls "$HOME/.claude/skills/" 2>/dev/null | grep -qi "gsd"
- }
- detect_frontend_design() {
- local cache_dir="$HOME/.claude/plugins/cache"
- [ -d "$cache_dir" ] && ls "$cache_dir" 2>/dev/null | grep -qi "frontend-design"
- }
- detect_uiux_pro_max() {
- local cache_dir="$HOME/.claude/plugins/cache"
- [ -d "$cache_dir" ] && ls "$cache_dir" 2>/dev/null | grep -qi "ui-ux-pro-max"
- }
- detect_context7() {
- claude mcp list 2>/dev/null | grep -q "context7"
- }
|