analytics-unused
SKILL.md
/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.
Weekly Installs
43
Repository
laurigates/clauβ¦-pluginsGitHub Stars
13
First Seen
Feb 9, 2026
Security Audits
Installed on
opencode43
gemini-cli43
github-copilot43
codex43
amp43
cline43