analytics-report

Display usage analytics for commands and skills across all projects.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "analytics-report" with this command: npx skills add laurigates/claude-plugins/laurigates-claude-plugins-analytics-report

/analytics:report

Display usage analytics for commands and skills across all projects.

Context

Check if analytics data exists:

if [[ -f ~/.claude-analytics/summary.json ]]; then echo "Analytics available" SUMMARY=$(cat ~/.claude-analytics/summary.json) TOTAL=$(echo "$SUMMARY" | jq -r '.total_invocations // 0') SINCE=$(echo "$SUMMARY" | jq -r '.tracking_since // "unknown"') echo "Total invocations: $TOTAL" echo "Tracking since: $SINCE" else echo "No analytics data found. Start using commands to collect data." exit 0 fi

Parameters

  • $ARGS

  • Optional filter:

  • Empty: Show all analytics

  • commands : Show only commands

  • skills : Show only skills

  • <name> : Show specific command/skill details

Execution

Display analytics report:

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

if [[ ! -f "${SUMMARY_FILE}" ]]; then echo "📊 No analytics data yet" echo "" echo "Analytics will be collected automatically as you use commands and skills." echo "Data is stored in: ${ANALYTICS_DIR}" exit 0 fi

SUMMARY=$(cat "${SUMMARY_FILE}") FILTER="${ARGS:-all}"

echo "📊 Command & Skill Analytics" echo ""

Header info

TOTAL=$(echo "$SUMMARY" | jq -r '.total_invocations') SINCE=$(echo "$SUMMARY" | jq -r '.tracking_since') echo "Total invocations: ${TOTAL}" echo "Tracking since: ${SINCE}" echo ""

Top used items

echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "Most Used" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"

if [[ "${FILTER}" == "all" || "${FILTER}" == "commands" ]]; then echo "" echo "📝 Commands" echo "$SUMMARY" | jq -r ' .items | to_entries | map(select(.value.type == "command")) | sort_by(-.value.count) | .[:10] | .[] | " (.value.count | tostring | (. + " ")[:6]) (.key) ((.value.success)✓ (.value.failure)✗)" ' fi

if [[ "${FILTER}" == "all" || "${FILTER}" == "skills" ]]; then echo "" echo "🎯 Skills" echo "$SUMMARY" | jq -r ' .items | to_entries | map(select(.value.type == "skill")) | sort_by(-.value.count) | .[:10] | .[] | " (.value.count | tostring | (. + " ")[:6]) (.key) ((.value.success)✓ (.value.failure)✗)" ' fi

Success rate

if [[ "${FILTER}" == "all" ]]; then echo "" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "Success Rates" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo ""

TOTAL_SUCCESS=$(echo "$SUMMARY" | jq '[.items[].success] | add // 0') TOTAL_FAILURE=$(echo "$SUMMARY" | jq '[.items[].failure] | add // 0') TOTAL_OPS=$((TOTAL_SUCCESS + TOTAL_FAILURE))

if [[ $TOTAL_OPS -gt 0 ]]; then SUCCESS_RATE=$(echo "scale=1; ${TOTAL_SUCCESS} * 100 / ${TOTAL_OPS}" | bc) echo " Overall: ${SUCCESS_RATE}% (${TOTAL_SUCCESS}✓ ${TOTAL_FAILURE}✗)" fi

Items with failures

echo "" echo " Items with failures:" echo "$SUMMARY" | jq -r ' .items | to_entries | map(select(.value.failure > 0)) | sort_by(-.value.failure) | .[:5] | .[] | " (.key): (.value.failure) failures" ' | while read -r line; do if [[ -n "$line" ]]; then echo "$line" else echo " None!" fi done fi

Recent activity

if [[ "${FILTER}" == "all" ]]; then echo "" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "Recent Activity (last 10)" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo ""

if [[ -f "${EVENTS_FILE}" ]]; then tail -10 "${EVENTS_FILE}" | jq -r ' "(.timestamp | split("T")[0] + " " + (.timestamp | split("T")[1] | split(".")[0])) (.name) " + (if .success then "✓" else "✗" end) ' fi fi

Specific item details

if [[ "${FILTER}" != "all" && "${FILTER}" != "commands" && "${FILTER}" != "skills" ]]; then echo "" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "Details: ${FILTER}" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo ""

echo "$SUMMARY" | jq -r
--arg name "${FILTER}"
' if .items[$name] then .items[$name] | "Type: (.type)\n" + "Total uses: (.count)\n" + "Successful: (.success)\n" + "Failed: (.failure)\n" + "First used: (.first_used)\n" + "Last used: (.last_used)" else "No data found for: " + $name end '

Show recent invocations

if [[ -f "${EVENTS_FILE}" ]]; then echo "" echo "Recent invocations:" grep ""${FILTER}"" "${EVENTS_FILE}" | tail -5 | jq -r ' " (.timestamp) " + (if .success then "✓" else "✗ (.error)" end) ' fi fi

echo "" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "" echo "💡 Tips:" echo " • /analytics:report commands - Show only commands" echo " • /analytics:report skills - Show only skills" echo " • /analytics:unused - Find never-used commands" echo " • /analytics:clear - Reset analytics data"

Post-actions

None.

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

ruff linting

No summary provided by upstream source.

Repository SourceNeeds Review
General

imagemagick-conversion

No summary provided by upstream source.

Repository SourceNeeds Review
General

jq json processing

No summary provided by upstream source.

Repository SourceNeeds Review
General

api-testing

No summary provided by upstream source.

Repository SourceNeeds Review