mcpField
A
analytics-report

analytics-report

github.com/laurigatesデータ・データベース5951 回インストール1 日前に更新
リポジトリ

analytics-report について

プロジェクト全体のコマンドとスキルの利用状況を表示するスキルです。全データ、コマンドのみ、スキルのみ、または指定項目の詳細に絞り込めます。

主な機能

  1. 01利用状況の分析を表示
  2. 02コマンドまたはスキルで絞り込み
  3. 03指定項目の詳細を表示

活用シーン

  1. 01コマンドとスキルの全体的な利用状況を確認
  2. 02コマンドまたはスキル別の統計を確認
  3. 03特定項目の分析データを確認

インストール

コマンドをコピーしてターミナルで実行します。

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

インストール後、Claude Code で/analytics-reportを入力して読み込まれたか確認します。

詳細

/analytics:report

すべてのプロジェクトにおけるコマンドとスキルの使用状況分析を表示します。

コンテキスト

分析データが存在するか確認します。

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

パラメーター

  • $ARGS - 任意のフィルター:
    • 空:すべての分析データを表示
    • commands:コマンドのみを表示
    • skills:スキルのみを表示
    • <name>:特定のコマンド/スキルの詳細を表示

実行

分析レポートを表示します:

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"

後処理

なし。

コメント