detect-plugins.sh 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #!/usr/bin/env bash
  2. # ============================================================
  3. # lib/detect-plugins.sh — Single source of truth for plugin detection
  4. # Sourced by: session-start.sh, doctor.sh, install-plugins.sh
  5. #
  6. # Each function returns 0 (detected) or 1 (not detected).
  7. # No output — callers handle messaging.
  8. # ============================================================
  9. # --- Always-on plugins ---
  10. detect_rtk() {
  11. command -v rtk &>/dev/null
  12. }
  13. detect_superpowers() {
  14. # Fast check: filesystem (plugin cache)
  15. local cache_dir="$HOME/.claude/plugins/cache"
  16. if [ -d "$cache_dir" ]; then
  17. ls "$cache_dir" 2>/dev/null | grep -qi "superpowers" && return 0
  18. fi
  19. # Slow fallback: CLI (only if fast check fails)
  20. claude plugin list 2>/dev/null | grep -qi "superpowers" && return 0
  21. return 1
  22. }
  23. detect_security_guidance() {
  24. local cache_dir="$HOME/.claude/plugins/cache"
  25. [ -d "$cache_dir" ] && ls "$cache_dir" 2>/dev/null | grep -qi "security-guidance"
  26. }
  27. detect_skill_creator() {
  28. local cache_dir="$HOME/.claude/plugins/cache"
  29. [ -d "$cache_dir" ] && ls "$cache_dir" 2>/dev/null | grep -qi "skill-creator"
  30. }
  31. detect_pr_review_toolkit() {
  32. local cache_dir="$HOME/.claude/plugins/cache"
  33. [ -d "$cache_dir" ] && ls "$cache_dir" 2>/dev/null | grep -qi "pr-review-toolkit"
  34. }
  35. # --- Toggle plugins ---
  36. detect_gstack() {
  37. [ -d "$HOME/.claude/skills/gstack" ]
  38. }
  39. detect_gsd() {
  40. ls "$HOME/.claude/skills/" 2>/dev/null | grep -qi "gsd"
  41. }
  42. detect_frontend_design() {
  43. local cache_dir="$HOME/.claude/plugins/cache"
  44. [ -d "$cache_dir" ] && ls "$cache_dir" 2>/dev/null | grep -qi "frontend-design"
  45. }
  46. detect_uiux_pro_max() {
  47. local cache_dir="$HOME/.claude/plugins/cache"
  48. [ -d "$cache_dir" ] && ls "$cache_dir" 2>/dev/null | grep -qi "ui-ux-pro-max"
  49. }
  50. detect_context7() {
  51. claude mcp list 2>/dev/null | grep -q "context7"
  52. }