From memory-recall
Interactive troubleshooting for memory-recall plugin. Diagnose hook failures, empty results, timeouts, config issues, cache sync problems, and more. Use when the user says /diagnose or reports a plugin problem.
npx claudepluginhub t2ance/memory-recall-pluginThis skill uses the workspace's default tool permissions.
Designs and optimizes AI agent action spaces, tool definitions, observation formats, error recovery, and context for higher task completion rates.
Implements structured self-debugging workflow for AI agent failures: capture errors, diagnose patterns like loops or context overflow, apply contained recoveries, and generate introspection reports.
Compares coding agents like Claude Code and Aider on custom YAML-defined codebase tasks using git worktrees, measuring pass rate, cost, time, and consistency.
Interactively diagnose memory-recall plugin issues. Ask the user about their symptom, run targeted checks, report findings.
The single most useful diagnostic artifact. Every recall invocation logs here:
~/.claude/plugins/data/memory-recall-memory-recall/recall.jsonl
Read the last entry first (tail -30). Key fields:
event: UserPromptSubmit or SubagentStartdimensions: which backend each dim useddiscovered: resource counts per dimresults: what was selected (files, items, or no_results)elapsed_s, per_dim_s: timingper_dim_usage: token counts and cost (agentic only)output: the full additionalContext that was injectedRun these 5 checks first to get a baseline:
Plugin cache exists:
ls ~/.claude/plugins/cache/memory-recall/memory-recall/*/hooks/hooks.json
Config is set:
python3 -c "import json; print(json.dumps(json.load(open('$HOME/.claude/settings.json')).get('pluginConfigs',{}).get('memory-recall@memory-recall',{}), indent=2))"
Recent log exists:
tail -5 ~/.claude/plugins/data/memory-recall-memory-recall/recall.jsonl | python3 -c "import sys,json; [print(json.loads(l).get('ts','?'), json.loads(l).get('event','?'), json.loads(l).get('elapsed_s','?')) for l in sys.stdin if l.strip()]"
Agent SDK works (agentic backend):
python3 -c "from claude_agent_sdk import query; print('OK')"
Memory directories exist:
ls ~/.claude/plugins/data/memory-recall-memory-recall/global-memory/MEMORY.md
Symptom: No recall context in system-reminder. No new entries in recall.jsonl.
Checks:
UserPromptSubmit and SubagentStart entries?/reload-plugins -- does it report "2 hooks"?/doctor -- any errors referencing memory-recall?Common causes:
Symptom: Log entries show all "status": "no_results". Or additionalContext is the fallback "CRITICAL: Before responding, check your memory directories...".
Checks:
discovered field. If counts are 0, discovery found nothing.ls ~/.claude/projects/-*/memory/*.md 2>/dev/null | head -5
ls ~/.claude/plugins/data/memory-recall-memory-recall/global-memory/*.md 2>/dev/null | head -5
Common causes:
Symptom: Hook killed after 30s (UserPromptSubmit) or 60s (SubagentStart). Log entry may be missing or incomplete.
Checks:
elapsed_s and per_dim_s to find the slow dimension.per_dim_usage.duration_api_ms for API response time.Fixes to suggest:
reminder or off).agentic_mode: "merged" (single Haiku call, faster but lower quality for large catalogs).Symptom: Hook crashes. Log may show partial entry or no entry.
Checks:
python3 -c "from claude_agent_sdk import query; print('OK')"
pip show claude-agent-sdk 2>/dev/null | grep Version
Common causes:
merged mode or reduce enabled dimensions.Symptom: Changed settings.json but hook uses old values. Log shows wrong backend.
Checks:
pluginConfigs.memory-recall@memory-recall.optionsdimensions field to see what was actually used./reload-plugins after editing settings.json?Cause: Plugin options are memoized per session. MUST run /reload-plugins after editing settings.json.
Symptom: Set {dim}_input: "full" or {dim}_output: "full" but output unchanged.
Key knowledge -- N/A combinations by design:
| Backend | input_granularity | output_granularity |
|---|---|---|
| reminder | N/A (no selection) | Works |
| agentic | Works | Works |
| embedding (memory) | N/A (daemon reads full) | Works |
| embedding (non-mem) | Works | Works |
Checks:
content_path (real file). Built-in/hardcoded items from constants.py have no file and fall back to title_desc.Symptom: Sub-agent has no recall context, or log shows wrong/empty query for SubagentStart.
Checks:
"event": "SubagentStart" entries? If not, hook not firing.query field. It should be the parent's prompt to the sub-agent.# Get transcript path from a recent log entry, then:
tail -100 <transcript_path> | python3 -c "
import json, sys
for line in reversed(sys.stdin.read().strip().split('\n')):
msg = json.loads(line)
if msg.get('type') == 'assistant':
for b in msg.get('message',{}).get('content',[]):
if b.get('type') == 'tool_use' and b.get('name') == 'Agent':
print('Found:', b['input']['prompt'][:200])
sys.exit(0)
print('No Agent tool_use found')
"
Common causes:
SubagentStart entry.Symptom: Code changes don't take effect. Or plugin breaks after syncing.
Checks:
ls -la ~/.claude/plugins/cache/memory-recall/memory-recall/
diff <source>/hooks/recall.py ~/.claude/plugins/cache/memory-recall/memory-recall/<version>/hooks/recall.py
Critical rule: rsync --delete ONLY on the versioned subdirectory (e.g., 3.0.0/), NEVER on the parent dir. Parent contains multiple version dirs + direct hooks/skills dirs.
Common causes:
__pycache__/ in cache dir.Symptom: Log or injected context shows \u4f60\u597d instead of readable Chinese.
Cause: json.dumps defaults to ensure_ascii=True. The code uses ensure_ascii=False in write_log(). If you see escaped chars, check whether the reading tool handles UTF-8, or whether a different code path is dumping JSON.
Symptom: Embedding backend fails with socket error or "daemon error".
Checks:
ls -la ~/.claude/plugins/data/memory-recall-memory-recall/daemon.sock
tail -50 ~/.claude/plugins/data/memory-recall-memory-recall/daemon.log
~/miniconda3/envs/memory-recall/bin/python -c "from sentence_transformers import SentenceTransformer; print('OK')"
Common causes:
/setup.rm ~/.claude/plugins/data/memory-recall-memory-recall/daemon.sock
Symptom: /reload-plugins reports errors. /doctor shows issues.
Check: Run /doctor and read specific errors. Common ones:
Important: Errors are often from OTHER plugins, not memory-recall. Check which plugin each error references.
If all other diagnostics fail and the plugin is still broken (especially CLI subprocess crashes like Command failed with exit code 1 from Agent SDK), try a full reinstall:
claude plugin marketplace update memory-recall
claude plugin install memory-recall@memory-recall
Both steps are required in this order. marketplace update does git pull on the local marketplace clone. plugin install re-copies from the updated marketplace to the versioned cache. Without marketplace update first, plugin install just re-copies stale code.
Note: claude plugin update does NOT work for same-version code changes -- it compares the version field in plugin.json and skips if unchanged.
After reinstalling, run /reload-plugins in the active session.