Files
mem0/mem0-plugin/skills/mem0-stats/SKILL.md
T
kartik-mem0 1daa7ece66 fix(mem0-plugin): fix 3 critical + 5 important issues from review
Critical fixes:
- C1: Pin/dream update_memory now reads content first via get_memory
  before updating, preventing metadata-only calls that wipe content
- C2: SessionStart memory count uses GET /v3/memories/?page_size=1 for
  real count from pagination envelope instead of search limit=100
- C3: on_task_completed.sh uses ${MEM0_PROJECT_ID:-unknown} to avoid
  crash when identity resolution fails under set -u

Important fixes:
- I1: session_stats.py tracks recent_ids (memory IDs + timestamps) for
  /mem0:forget undo support. Capped at 50 entries.
- I2: /mem0:health --deep mode adds memory quality analysis: duplicate
  detection, stale entry scan, contradiction flags, orphan tagging
- I3: /mem0:stats ASCII histogram for category distribution with bar
  chart, sorted by count descending
- I4: mem0-mcp skill documents access counter pattern: get_memory then
  update_memory to track which memories are actually used
- I5: on_pre_commit.py reads COMMIT_EDITMSG first (current commit),
  falls back to HEAD only if EDITMSG unavailable

Tests: 91 -> 94 (3 new for recent_ids tracking)
2026-05-21 18:46:08 +05:30

2.5 KiB

name, description
name description
mem0-stats Show memory statistics for the current session and project lifetime. Combines local session counters with API-fetched totals. TRIGGER: user runs /mem0:stats, or asks "how many memories", "mem0 stats", "memory usage", "show memory count".

Mem0 Stats

Show session and lifetime memory statistics.

Execution

Step 1: Gather session stats

Run the session stats reporter:

SCRIPT_DIR="${CLAUDE_PLUGIN_ROOT:-${CODEX_PLUGIN_ROOT:-${CURSOR_PLUGIN_ROOT:-}}}/scripts"
python3 "$SCRIPT_DIR/session_stats.py" peek 2>/dev/null || echo "{}"

The peek command returns JSON without clearing the stats file (unlike report).

If the script returns empty or errors, note "No session data available" and continue.

Step 2: Fetch lifetime stats from API

Call get_memories with:

  • user_id=<active_user_id>
  • app_id=<active_project_id>
  • page_size=100

Count the returned memories. Group them by:

  1. categories[0] (platform-assigned) — primary grouping
  2. metadata.type (agent-assigned) — secondary if no categories
  3. created_at date — for age analysis

Also run a search_memories call with query="project", limit=1 to measure round-trip latency (time the call).

Step 3: Display

Print a compact dashboard with an ASCII histogram for category distribution:

## mem0 Stats

### This Session
  Memories written:  <N>
  Searches run:      <N>
  Categories touched: <list>

### Project Lifetime (<project_id>)
  Total memories:    <N>

  By category:
    decision          ████████████████ 24
    convention        ██████████░░░░░░ 15
    anti_pattern      ████░░░░░░░░░░░░  6
    task_learning     ███░░░░░░░░░░░░░  5
    user_preference   ██░░░░░░░░░░░░░░  3
    session_state     █░░░░░░░░░░░░░░░  2

  Oldest memory:     <date>
  Newest memory:     <date>

### Health
  API latency:       <N>ms
  User:              <user_id>
  Project:           <project_id>
  Branch:            <branch>

Histogram rules:

  • Max bar width: 16 characters. Scale all bars relative to the highest count.
  • Use █ for filled and ░ for empty. Right-align the count number.
  • Sort categories by count descending. Omit categories with 0 memories.
  • If only 1-2 categories exist, still show the histogram — it provides visual context.

Skip any section with zero data.