Help us improve
Share bugs, ideas, or general feedback.
From ce
Guides log analysis with grep filters, bash pipelines, iterative refinement, and utility scripts to debug errors, incidents, and patterns efficiently.
npx claudepluginhub rileyhilliard/claude-essentials --plugin ceHow this skill is triggered — by the user, by Claude, or both
Slash command
/ce:reading-logsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
**IRON LAW:** Filter first, then read. Never open a large log file without narrowing it first.
Analyzes JSONL and other log files using rg and jq: structured extraction, cross-log correlation, timeline reconstruction, pattern search.
Parses JSON, Apache, and custom app logs to detect error trends, anomalies, performance metrics, user patterns, and system health; provides root cause analysis and fix recommendations.
Analyzes application logs to detect slow requests, recurring errors, and resource anomalies with summaries and optimization suggestions. Useful for performance troubleshooting and debugging.
Share bugs, ideas, or general feedback.
IRON LAW: Filter first, then read. Never open a large log file without narrowing it first.
For log files over a few hundred lines, delegate to the @ce:log-reader agent. It runs on haiku to keep costs low and context clean. Prompt it with:
scripts/ utilities available (see Utility Scripts below)The agent has this skill preloaded, so it already knows the methodology. Keep your prompt tight and specific - don't paste log contents into the delegation message.
**/*.log
**/logs/**
**/*.log.* # Rotated logs
# Severity search
grep -Ei "error|warn" app.log
# Exclude noise
grep -i "ERROR" app.log | grep -v "known-benign"
# Context around matches
grep -C 5 "ERROR" app.log # 5 lines before/after
# Time window
grep "2025-12-04T11:" app.log | grep "ERROR"
# Count occurrences
grep -c "connection refused" app.log
# Recent only
tail -n 2000 app.log | grep -Ei "error"
# Top recurring
grep -i "ERROR" app.log | sort | uniq -c | sort -nr | head -20
Only after narrowing with Grep. Use context flags (-C, -A, -B) to grab targeted chunks.
Glob)grep "2025-12-04T11:" service.log | grep -i "timeout"grep "req-abc123" *.loggrep -C 10 "req-abc123" app.loggrep -Ei "error|warn" app.loggrep -i "ERROR" app.log | sort | uniq -c | sort -nr | headFor complex operations, use the scripts in scripts/:
# Aggregate errors by frequency (normalizes timestamps/IDs)
bash scripts/aggregate-errors.sh app.log "ERROR" 20
# Extract and group stack traces by type
bash scripts/extract-stack-traces.sh app.log "NullPointer"
# Parse JSON logs with jq filter
bash scripts/parse-json-logs.sh app.log 'select(.level == "error")'
# Show error distribution over time (hourly/minute buckets)
bash scripts/timeline.sh app.log "ERROR" hour
# Trace a request ID across multiple log files
bash scripts/trace-request.sh req-abc123 logs/
# Find slow operations by duration
bash scripts/slow-requests.sh app.log 1000 20