mcpField
A
analytics-unused

analytics-unused

github.com/laurigatesAgent workflows5946 installsUpdated 1d ago
Repository

About analytics-unused

A skill that uses Claude analytics data to identify commands and skills that have never been invoked. It helps surface unused features or clean up plugins, and cannot determine usage without analytics data.

Key features

  1. 01Check whether an analytics summary file exists
  2. 02Identify commands and skills never invoked
  3. 03Find unused features or plugins

Use cases

  1. 01Find commands that have never been used
  2. 02Clean up unused skills or plugins

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/laurigates/claude-plugins --skill analytics-unused

After installing, type/analytics-unusedin Claude Code to confirm it loaded.

Details

From the project README

/analytics:unused

Identify commands and skills that have never been invoked, helping you discover unused features or clean up unused plugins.

Context

Check analytics availability:

if [[ ! -f ~/.claude-analytics/summary.json ]]; then
  echo "No analytics data yet. Cannot determine unused commands/skills."
  exit 0
fi

Execution

Scan for unused commands and skills:

ANALYTICS_DIR="${HOME}/.claude-analytics"
SUMMARY_FILE="${ANALYTICS_DIR}/summary.json"

echo "🔍 Scanning for unused commands and skills..."
echo ""

# Get list of used commands/skills
if [[ -f "${SUMMARY_FILE}" ]]; then
  USED=$(cat "${SUMMARY_FILE}" | jq -r '.items | keys[]')
else
  USED=""
fi

# Find all command files in plugins
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "Unused Commands"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo ""

UNUSED_COUNT=0

# Scan for skill files
find . -type f \( -name "SKILL.md" -o -name "skill.md" \) -not -path "*/node_modules/*" 2>/dev/null | while read -r cmd_file; do
  # Extract command name from filename
  # Format: plugin-name/commands/plugin-command.md -> plugin:command
  BASENAME=$(basename "$cmd_file" .md)

  # Try to extract command name from frontmatter
  CMD_NAME=$(grep -A 20 "^---$" "$cmd_file" | grep "^# /" | head -1 | sed 's/^# \///' || echo "")

  if [[ -z "$CMD_NAME" ]]; then
    # Fallback: derive from filename (e.g., analytics-report.md -> analytics:report)
    CMD_NAME=$(echo "$BASENAME" | sed 's/-/:/' | sed 's/-/:/')
  fi

  # Check if command has been used
  if ! echo "$USED" | grep -q "^${CMD_NAME}$"; then
    echo "  📝 /${CMD_NAME}"
    echo "     File: ${cmd_file}"
    echo ""
    UNUSED_COUNT=$((UNUSED_COUNT + 1))
  fi
done

if [[ $UNUSED_COUNT -eq 0 ]]; then
  echo "  All commands have been used! 🎉"
  echo ""
fi

# Find all skill files
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "Unused Skills"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo ""

UNUSED_SKILLS=0

find . -type f -path "*/skills/*/skill.md" -not -path "*/node_modules/*" 2>/dev/null | while read -r skill_file; do
  # Extract skill name from directory name
  SKILL_DIR=$(dirname "$skill_file")
  SKILL_NAME=$(basename "$SKILL_DIR")

  # Try to get skill name from frontmatter
  FRONTMATTER_NAME=$(grep -A 5 "^---$" "$skill_file" | grep "^name:" | head -1 | sed 's/^name: *//' || echo "")

  if [[ -n "$FRONTMATTER_NAME" ]]; then
    SKILL_NAME="$FRONTMATTER_NAME"
  fi

  # Check if skill has been used
  if ! echo "$USED" | grep -qi "$SKILL_NAME"; then
    echo "  🎯 ${SKILL_NAME}"
    echo "     File: ${skill_file}"
    echo ""
    UNUSED_SKILLS=$((UNUSED_SKILLS + 1))
  fi
done

if [[ $UNUSED_SKILLS -eq 0 ]]; then
  echo "  All skills have been used! 🎉"
  echo ""
fi

echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo ""

if [[ $UNUSED_COUNT -eq 0 && $UNUSED_SKILLS -eq 0 ]]; then
  echo "✨ All commands and skills have been used at least once!"
else
  echo "💡 Consider:"
  echo "  • Trying out unused features to see if they're helpful"
  echo "  • Removing plugins you never use"
  echo "  • Sharing useful commands with your team"
fi

echo ""

Post-actions

None.

Comments

Markdown supported