From lcars
Show LCARS scoring stats, drift history, correction fitness rate, and active patterns
How this skill is triggered — by the user, by Claude, or both
Slash command
/lcars:dashboardThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Display current plugin state: rolling stats, drift patterns, correction effectiveness, and active thresholds.
Display current plugin state: rolling stats, drift patterns, correction effectiveness, and active thresholds.
When user runs /lcars:dashboard:
Read the following files from ~/.claude/lcars/:
scores.jsonl — score ledgerthresholds.json — active thresholdsmemory/correction-outcomes.jsonl — correction outcomesmemory/patterns.json — consolidated patternsmemory/session-summaries.jsonl — session summariesCompute and display:
Run: python3 ${CLAUDE_PLUGIN_ROOT}/lib/score.py is available for ad-hoc scoring, but for stats, read scores.jsonl directly and compute:
Run: python3 -c "import sys; sys.path.insert(0, '${CLAUDE_PLUGIN_ROOT}/lib'); from fitness import fitness_rate; import json; r = fitness_rate(); print(json.dumps(r, indent=2) if r else 'No correction data yet.')"
Display the rate with interpretation:
= 0.70: "Corrections working well"
Read thresholds.json and display the global defaults plus any query-type overrides in a table.
Read memory/patterns.json and list any validated or stale patterns with their session counts and date ranges.
Read ~/.claude/lcars/memory/tool-registry.json and display tracked tools by tier:
python3 -c "
import sys, json
sys.path.insert(0, '${CLAUDE_PLUGIN_ROOT}/lib')
import registry
reg = registry.load()
tools = reg.get('tools', [])
by_tier = {}
for t in tools:
tier = t.get('tier', 'candidate')
by_tier.setdefault(tier, []).append(t)
for tier in ['promoted', 'standard', 'candidate']:
group = by_tier.get(tier, [])
if group:
print(f'\n{tier.upper()} ({len(group)}):')
for t in group:
inv = t.get('lifetime_invocations', 0)
rate = t.get('lifetime_successes', 0) / inv if inv > 0 else None
rate_str = f'{rate:.0%}' if rate is not None else 'n/a'
print(f' {t[\"name\"]:15s} inv={inv:3d} fitness={rate_str:>4s} {t.get(\"status\", \"\")}')
archived = len(by_tier.get('archived', []) + [t for t in tools if t.get('status') == 'archived'])
if archived:
print(f'\nARCHIVED: {archived}')
"
Show promoted tools (injected into context), standard tools (tracked), and candidate count. Include fitness rate for tools with usage.
Read the last 10 entries from scores.jsonl that have padding_count > 0 or answer_position > 0, showing timestamp, query type, and which dimensions drifted.
Present as a compact summary. No preambles. Data first.
npx claudepluginhub melek/lcars --plugin lcarsRenders an on-demand dashboard of basemind activity showing tool call counts, per-tool histogram, and estimated tokens saved vs a grep+Read baseline. User-invoked via `/basemind-stats`.
Generates usage analytics dashboard from Claude Code sessions with epistemic protocol coverage metrics, friction analysis, growth timelines, and improvement recommendations.
Opens a personal analytics dashboard in the browser showing Claude Code session activity, tool usage, error rates, parallel work patterns, and project focus. First run installs dependencies.