From claude-ecosystem
Runs Claude Code performance diagnostics: analyzes ~/.claude storage usage across folders, API status, GitHub issues, and version.
How this skill is triggered — by the user, by Claude, or both
Slash command
/claude-ecosystem:diagnose-performanceThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Comprehensive performance diagnostic for Claude Code. This orchestrator command combines local analysis with API status checks and known issue research.
Comprehensive performance diagnostic for Claude Code. This orchestrator command combines local analysis with API status checks and known issue research.
/diagnose-performance
/diagnose-performance --quick # Skip external checks
| Argument | Description |
|---|---|
--quick | Skip API status and GitHub issue checks (local analysis only) |
echo "Performance Diagnostic Report"
echo "============================="
echo "Generated: $(date '+%Y-%m-%d %H:%M:%S %Z')"
echo ""
# Get Claude Code version
VERSION=$(claude --version 2>/dev/null | head -1)
echo "Claude Code: $VERSION"
echo "Platform: $(uname -s) $(uname -m)"
echo ""
Analyze ALL folders in ~/.claude/:
echo "STORAGE ANALYSIS"
echo "================"
echo ""
# Total size
TOTAL=$(du -sh ~/.claude 2>/dev/null | cut -f1)
echo "Total ~/.claude size: $TOTAL"
echo ""
# Status determination
TOTAL_MB=$(du -sm ~/.claude 2>/dev/null | cut -f1)
if [ "$TOTAL_MB" -gt 1000 ]; then
STATUS="CRITICAL"
elif [ "$TOTAL_MB" -gt 500 ]; then
STATUS="WARNING"
else
STATUS="HEALTHY"
fi
echo "Status: $STATUS"
echo ""
# By category - ALL folders
echo "By Category:"
echo "------------"
printf " %-18s %10s %12s\n" "Folder" "Size" "Files"
printf " %-18s %10s %12s\n" "------" "----" "-----"
for dir in projects debug plugins file-history plans shell-snapshots todos statsig local; do
if [ -d "$HOME/.claude/$dir" ]; then
SIZE=$(du -sh "$HOME/.claude/$dir" 2>/dev/null | cut -f1)
COUNT=$(find "$HOME/.claude/$dir" -type f 2>/dev/null | wc -l)
printf " %-18s %10s %12d\n" "$dir/" "$SIZE" "$COUNT"
fi
done
# Individual files
for file in history.jsonl settings.json; do
if [ -f "$HOME/.claude/$file" ]; then
SIZE=$(du -sh "$HOME/.claude/$file" 2>/dev/null | cut -f1)
printf " %-18s %10s\n" "$file" "$SIZE"
fi
done
echo ""
echo "CURRENT PROJECT"
echo "==============="
# Cross-platform project path detection
if [ -n "$MSYSTEM" ]; then
PROJECT_NAME=$(pwd | sed 's|^/\([a-z]\)/|\U\1--|' | sed 's|/|--|g')
else
PROJECT_NAME=$(pwd | sed 's/[\/:]/-/g' | sed 's/^-//')
fi
PROJECT_DIR="$HOME/.claude/projects/$PROJECT_NAME"
echo "Project: $PROJECT_NAME"
if [ -d "$PROJECT_DIR" ]; then
PROJECT_SIZE=$(du -sh "$PROJECT_DIR" 2>/dev/null | cut -f1)
TOTAL_FILES=$(find "$PROJECT_DIR" -maxdepth 1 -name "*.jsonl" 2>/dev/null | wc -l)
AGENT_FILES=$(find "$PROJECT_DIR" -maxdepth 1 -name "agent-*.jsonl" 2>/dev/null | wc -l)
SESSION_FILES=$((TOTAL_FILES - AGENT_FILES))
echo "Size: $PROJECT_SIZE"
echo "Session files: $SESSION_FILES"
echo "Agent transcripts: $AGENT_FILES"
echo ""
echo "By Age:"
echo " Today: $(find "$PROJECT_DIR" -maxdepth 1 -name "*.jsonl" -mtime 0 2>/dev/null | wc -l)"
echo " 1-3 days: $(find "$PROJECT_DIR" -maxdepth 1 -name "*.jsonl" -mtime +0 -mtime -3 2>/dev/null | wc -l)"
echo " 3-7 days: $(find "$PROJECT_DIR" -maxdepth 1 -name "*.jsonl" -mtime +2 -mtime -7 2>/dev/null | wc -l)"
echo " >7 days: $(find "$PROJECT_DIR" -maxdepth 1 -name "*.jsonl" -mtime +7 2>/dev/null | wc -l)"
else
echo "No session data found"
fi
echo ""
echo "DEBUG TRANSCRIPTS"
echo "================="
if [ -d "$HOME/.claude/debug" ]; then
DEBUG_SIZE=$(du -sh "$HOME/.claude/debug" 2>/dev/null | cut -f1)
DEBUG_COUNT=$(find "$HOME/.claude/debug" -type f 2>/dev/null | wc -l)
OLD_DEBUG=$(find "$HOME/.claude/debug" -type f -mtime +7 2>/dev/null | wc -l)
echo "Total: $DEBUG_SIZE ($DEBUG_COUNT files)"
echo ">7 days: $OLD_DEBUG files"
# Warning if debug is large
DEBUG_MB=$(du -sm "$HOME/.claude/debug" 2>/dev/null | cut -f1)
if [ "$DEBUG_MB" -gt 100 ]; then
echo "WARNING: Debug folder is large. Run /cleanup-debug to reclaim space."
fi
else
echo "No debug folder found"
fi
echo ""
echo "LARGE FILES (>10MB)"
echo "==================="
LARGE_COUNT=$(find ~/.claude -type f -size +10M 2>/dev/null | wc -l)
if [ "$LARGE_COUNT" -gt 0 ]; then
find ~/.claude -type f -size +10M -exec ls -lh {} \; 2>/dev/null | \
awk '{print " " $5 " " $9}' | head -10
if [ "$LARGE_COUNT" -gt 10 ]; then
echo " ... and $((LARGE_COUNT - 10)) more"
fi
else
echo " None found"
fi
echo ""
echo "RECLAIMABLE SPACE"
echo "================="
TOTAL_RECLAIMABLE=0
# Sessions >7 days
if [ -d "$PROJECT_DIR" ]; then
OLD_SESSIONS=$(find "$PROJECT_DIR" -maxdepth 1 -name "*.jsonl" ! -name "agent-*" -mtime +7 2>/dev/null | wc -l)
OLD_AGENTS=$(find "$PROJECT_DIR" -maxdepth 1 -name "agent-*.jsonl" -mtime +7 2>/dev/null | wc -l)
echo " Sessions >7 days: $OLD_SESSIONS files"
echo " Agents >7 days: $OLD_AGENTS files"
fi
# Debug
if [ -d "$HOME/.claude/debug" ]; then
OLD_DEBUG=$(find "$HOME/.claude/debug" -type f -mtime +7 2>/dev/null | wc -l)
OLD_DEBUG_SIZE=$(find "$HOME/.claude/debug" -type f -mtime +7 -exec du -ch {} + 2>/dev/null | tail -1 | cut -f1)
echo " Debug >7 days: $OLD_DEBUG files (${OLD_DEBUG_SIZE:-0})"
fi
# Statsig (always safe)
if [ -d "$HOME/.claude/statsig" ]; then
STATSIG_SIZE=$(du -sh "$HOME/.claude/statsig" 2>/dev/null | cut -f1)
echo " Statsig cache: $STATSIG_SIZE (always safe)"
fi
If --quick is NOT specified, use the Task tool to spawn the performance-diagnostician agent:
Spawn performance-diagnostician agent to:
1. Check API status at status.anthropic.com
2. Search for known Claude Code performance issues on GitHub
3. Provide prioritized recommendations based on current version
Combine local analysis with agent findings into a unified report:
EXTERNAL CHECKS (from agent)
============================
API Status: {OPERATIONAL | DEGRADED | OUTAGE}
- Recent incidents: {list}
Known Issues:
- {issue number}: {title}
Workaround: {workaround}
RECOMMENDATIONS
===============
Priority 1: {most impactful action}
Priority 2: {second action}
Priority 3: {third action}
QUICK COMMANDS
==============
/cleanup-sessions 7 - Remove old session files
/cleanup-agents 7 - Remove old agent transcripts
/cleanup-debug 7 - Remove old debug transcripts
/prune-cache 7 - Comprehensive cleanup
/prune-cache --nuclear - Maximum cleanup (all folders)
/clear - Reset context window
Performance Diagnostic Report
=============================
Generated: 2025-12-26 16:45:00 EST
Claude Code: 2.0.75 (Claude Code)
Platform: MINGW64_NT-10.0 x86_64
STORAGE ANALYSIS
================
Total ~/.claude size: 1.5G
Status: CRITICAL
By Category:
------------
Folder Size Files
------ ---- -----
projects/ 950M 4928
debug/ 359M 878
plugins/ 149M 312
file-history/ 53M 1205
plans/ 2.4M 15
shell-snapshots/ 1.5M 12
todos/ 1.1M 45
history.jsonl 480K
CURRENT PROJECT
===============
Project: D--repos-gh-melodic-claude-code-plugins
Size: 948M
Session files: 510
Agent transcripts: 2140
By Age:
Today: 492
1-3 days: 948
3-7 days: 353
>7 days: 406
DEBUG TRANSCRIPTS
=================
Total: 359M (878 files)
>7 days: 0 files
LARGE FILES (>10MB)
===================
15M ~/.claude/projects/.../session-abc123.jsonl
14M ~/.claude/projects/.../session-def456.jsonl
RECLAIMABLE SPACE
=================
Sessions >7 days: 406 files
Agents >7 days: 0 files
Debug >7 days: 0 files (0)
Statsig cache: 34K (always safe)
EXTERNAL CHECKS
===============
API Status: OPERATIONAL
- Dec 23: Opus 4.5 elevated errors (resolved)
- Dec 22: Opus 4.5 elevated errors (resolved)
Known Issues:
- #14476: Input lag in v2.0.72+ (OPEN)
Workaround: Rollback to v2.0.36
- #10881: Long session degradation (OPEN)
Workaround: Restart Claude Code periodically
RECOMMENDATIONS
===============
Priority 1: Run /prune-cache --nuclear (frees ~400MB)
Priority 2: Restart Claude Code to reset session state
Priority 3: Use /clear proactively at 75% context
QUICK COMMANDS
==============
/cleanup-sessions 7 - Remove old session files
/cleanup-agents 7 - Remove old agent transcripts
/cleanup-debug 7 - Remove old debug transcripts
/prune-cache 7 - Comprehensive cleanup
/prune-cache --nuclear - Maximum cleanup (all folders)
/clear - Reset context window
/check-claude-storage/cleanup-* commands--quick flag skips network requests for offline diagnosticsnpx claudepluginhub melodic-software/claude-code-plugins --plugin claude-ecosystemDiagnoses performance bottlenecks in Claude Code and the local system by measuring CPU, RAM, disk, and API latency. Generates health reports and suggests corrective actions.
Optimizes Claude Code performance using storage cleanup, context management commands, and diagnostics for slowdowns, lag, and full contexts.
Analyzes Claude Code session health using PRISM: token usage, CLAUDE.md audits, session failures, and project listings.