Comprehensive interactive testing of all Memory MCP features
Add this skill
npx mdskills install michael-denyer/test-memoryExhaustive guided test suite covering all memory operations with detailed verification steps
1---2name: test-memory3description: Comprehensive interactive testing of all Memory MCP features4allowed-tools: "mcp__memory__*"5---67# Memory MCP Live Testing Skill89Run `/test-memory` to start a guided testing session. Walk through each phase, execute tests, and track results.1011## Prerequisites1213Install memory-mcp from the marketplace:1415```bash16# Add the marketplace17/plugin marketplace add michael-denyer/memory-mcp1819# Install the plugin20/plugin install memory-mcp@michael-denyer/memory-mcp21```2223Or install directly:24```bash25/plugin install github:michael-denyer/memory-mcp26```2728## Phases2930---3132### Phase 1: Core Memory Operations3334**1.1 Remember** - Store test memories:35```36remember("Test: FastAPI with async endpoints", memory_type="project", tags=["test", "tech-stack"])37remember("Test: Always use uv run pytest -v", memory_type="pattern", tags=["test", "commands"])38remember("Test: API rate limit 100 req/min", memory_type="reference", tags=["test", "api"])39```40Record the returned IDs for later tests.4142**1.2 Recall** - Semantic search (use different phrasings):43- "what framework for backend" → should find FastAPI44- "how to run tests" → should find pytest45- "request throttling" → should find rate limit4647Verify confidence levels returned.4849**1.3 Recall Modes** - Compare precision vs exploratory:50- `recall("testing", mode="precision")` → fewer, higher-confidence51- `recall("testing", mode="exploratory")` → more results5253**1.4 Recall by Tag**:54- `recall_by_tag("test")` → should return all test memories5556**1.5 Forget** - Delete one test memory and verify it's gone.5758---5960### Phase 2: Hot Cache Mechanics6162**2.1 Manual Promotion**:63- `promote(memory_id)` one of the test memories64- `hot_cache_status()` → verify it appears6566**2.2 Manual Demotion**:67- `demote(memory_id)`68- Verify removed from hot cache but still recallable6970**2.3 Pin/Unpin**:71- `pin(memory_id)` → pinned_count increases72- `unpin(memory_id)` → pinned_count decreases7374**2.4 Auto-Promotion** (optional - requires multiple recalls):75- Create a memory and recall it 3+ times76- Check if auto-promoted7778---7980### Phase 3: Knowledge Graph8182**3.1 Create Linked Memories**:83```84remember("Test: Database uses PostgreSQL") → ID: A85remember("Test: pgvector for embeddings") → ID: B86remember("Test: Vector search needs pgvector") → ID: C87link_memories(A, B, "relates_to")88link_memories(B, C, "depends_on")89```9091**3.2 Traverse Graph**:92- `get_related_memories(B)` → should show A and C93- `get_related_memories(A, direction="outgoing")` → should show B9495**3.3 Multi-Hop Recall**:96- `recall("PostgreSQL", expand_relations=true)` → should include related memories9798**3.4 Unlink**:99- `unlink_memories(A, B)`100- Verify relationship removed101102---103104### Phase 4: Trust Management105106**4.1 Validate**:107- `validate_memory(id, reason="used_correctly")`108- Check trust_score increased109110**4.2 Invalidate**:111- `invalidate_memory(id, reason="outdated", note="Testing invalidation")`112- Check trust_score decreased113114**4.3 Trust History**:115- `get_trust_history(memory_id)` → shows all changes116117---118119### Phase 5: Contradiction Detection120121**5.1 Create Conflicting Memories**:122```123remember("Test: Timeout is 30 seconds") → ID: X124remember("Test: Timeout is 60 seconds") → ID: Y125```126127**5.2 Find & Mark**:128- `find_contradictions(X)` → should suggest Y129- `mark_contradiction(X, Y)`130- `get_contradictions()` → pair listed131132**5.3 Resolve**:133- `resolve_contradiction(X, Y, keep_id=X, resolution="supersedes")`134- Verify X supersedes Y, Y's trust reduced135136---137138### Phase 6: Sessions & Episodic Memory139140**6.1 Check Sessions**:141- `get_sessions(limit=5)`142143**6.2 Episodic Memories**:144```145remember("Test: Debugging auth today", memory_type="episodic")146remember("Test: Found token bug", memory_type="episodic")147```148149**6.3 Session Topic**:150- `set_session_topic(session_id, "Testing session")`151152**6.4 Summarize Session**:153- `summarize_session(session_id)` → structured summary with:154 - Decisions (choices made and rationale)155 - Insights (lessons, antipatterns, landmines, constraints)156 - Action Items (todos, bugs, tasks)157 - Context (background, conventions, preferences, architecture)158- Use before `end_session()` to review what will be promoted159160**6.5 End Session** (optional - ends current session):161- `end_session(session_id, promote_top=true)`162163---164165### Phase 7: Pattern Mining166167**7.1 Log Output**:168```169log_output("import pandas as pd")170log_output("import numpy as np")171log_output("uv run pytest -v")172```173174**7.2 Run Mining**:175- `run_mining(hours=1)`176- `mining_status()`177178**7.3 Review Candidates**:179- `review_candidates()`180181**7.4 Approve/Reject** (if candidates exist):182- `approve_candidate(id)` or `reject_candidate(id)`183184---185186### Phase 8: Seeding & Bootstrap187188**8.1 Seed from Text**:189```190seed_from_text("- Item one\n- Item two\n- Item three", memory_type="project")191```192Verify 3 memories created.193194**8.2 Seed from File** (creates temp file):195- `seed_from_file(file_path, memory_type="reference")`196197**8.3 Bootstrap Project**:198- `bootstrap_project(root_path=".", promote_to_hot=false)`199- Verify it finds CLAUDE.md, README.md, etc.200201---202203### Phase 9: Predictive Cache204205**9.1 Check Status**:206- `predictive_cache_status()` → shows if enabled207208**9.2 Access Patterns**:209- `access_patterns(limit=5)` → learned patterns210211**9.3 Predict Next** (needs existing access history):212- `predict_next(memory_id)` → predicted memories213214**9.4 Warm Cache**:215- `warm_cache(memory_id)` → pre-promote predicted216217---218219### Phase 10: Retrieval Quality220221**10.1 Mark Memory Used**:222- `mark_memory_used(memory_id, feedback="helpful")`223224**10.2 Retrieval Stats**:225- `retrieval_quality_stats()` → global stats226- `retrieval_quality_stats(memory_id=X)` → per-memory227228---229230### Phase 11: Maintenance & DB Info231232**11.1 Stats & Observability**:233- `memory_stats()`234- `hot_cache_status()`235- `metrics_status()`236237**11.2 Database Info**:238- `db_info()` → schema version, size239- `embedding_info()` → provider, cache info240241**11.3 Maintenance Operations**:242- `db_maintenance()`243- `validate_embeddings()`244- `run_cleanup()` → comprehensive cleanup245246**11.4 Consolidation**:247- `preview_consolidation()` → dry run248- `run_consolidation(dry_run=true)` → preview249- `run_consolidation(dry_run=false)` → actual merge (careful!)250251**11.5 Audit History**:252- `audit_history(limit=10)`253254**11.6 Vector Rebuild** (use with caution - rebuilds all embeddings):255- `db_rebuild_vectors(batch_size=100)` → re-embed all memories256- Use when: switching embedding models, fixing dimension mismatches, recovering from corruption257258---259260### Phase 12: MCP Resources261262**12.1 Hot Cache Resource**:263Read `memory://hot-cache` directly (auto-injected to Claude):264- Contains all promoted memories for instant recall265- Verify contents match `hot_cache_status()` items266267**12.2 Working Set Resource**:268Read `memory://working-set` directly:269- Session-aware active context (~10 items max)270- Combines: recently recalled, predicted next, top salience271- Verify smaller/more focused than hot-cache272273**12.3 Project Context Resource**:274Read `memory://project-context` directly:275- Project-scoped memories for current working directory276- Should filter to current project only277278---279280### Phase 13: Additional Tools281282**13.1 List Memories**:283- `list_memories(limit=5)` → paginated browse284- `list_memories(memory_type="pattern")` → filtered285- `list_memories(offset=5, limit=5)` → pagination286287**13.2 Recall with Fallback**:288- `recall_with_fallback("query")` → tries patterns → project → all289290**13.3 Relationship Stats**:291- `relationship_stats()` → knowledge graph overview292293**13.4 Session Details**:294- `get_session(session_id)` → specific session295- `get_session_memories(session_id)` → memories from session296- `cross_session_patterns()` → patterns across sessions297298---299300### Phase 14: Error Handling & Edge Cases301302**14.1 Invalid IDs**:303- `forget(memory_id=999999)` → should return error/not found304- `promote(memory_id=-1)` → should handle gracefully305- `get_related_memories(memory_id=0)` → should not crash306307**14.2 Recall Edge Cases**:308- `recall("", mode="precision")` → empty query handling309- `recall("xyz", threshold=0.99)` → very high threshold, likely no results310- `recall("test", limit=0)` → zero limit edge case311- `recall("test", limit=1000)` → large limit handling312313**14.3 Pagination Boundaries**:314- `list_memories(offset=99999, limit=10)` → beyond data range315- `list_memories(offset=-1)` → negative offset316- `audit_history(limit=0)` → zero limit317318**14.4 Link/Unlink Errors**:319- `link_memories(id, id, "relates_to")` → self-link320- `link_memories(999, 888, "relates_to")` → non-existent IDs321- `unlink_memories(id_a, id_b)` → when no link exists322323**14.5 Trust Boundaries**:324- `validate_memory(id, boost=10.0)` → extreme boost (should cap at 1.0)325- `invalidate_memory(id, penalty=10.0)` → extreme penalty (should floor at 0.0)326327**14.6 Session Errors**:328- `get_session("nonexistent-session-id")` → invalid session329- `end_session("bad-id")` → non-existent session330331**14.7 Mining Edge Cases**:332- `run_mining(hours=0)` → zero hours333- `approve_candidate(pattern_id=999)` → non-existent candidate334335---336337### Phase 15: Cleanup338339After testing, clean up test data:340- `forget()` all memories tagged with "test"341- Or use `recall_by_tag("test")` to find them first342343---344345### Phase 16: Compact Conversation346347**16.1 Run Compact**:348After completing all tests, prompt the user to run `/compact` to:349- Reduce conversation context size350- Test that the session can be resumed after compaction351- Verify memories persist across conversation summarization352353Note: `/compact` is a user-initiated command and cannot be run programmatically by the assistant.354355---356357## Test Tracking358359Track results as you go:360361| Phase | Test | Status | Notes |362|-------|------|--------|-------|363| 1.1 | Remember | ⬜ | IDs: |364| 1.2 | Recall | ⬜ | |365| 1.3 | Recall Modes | ⬜ | |366| 1.4 | Recall by Tag | ⬜ | |367| 1.5 | Forget | ⬜ | |368| 2.1 | Promotion | ⬜ | |369| 2.2 | Demotion | ⬜ | |370| 2.3 | Pin/Unpin | ⬜ | |371| 3.1 | Link Memories | ⬜ | IDs: A=, B=, C= |372| 3.2 | Get Related | ⬜ | |373| 3.3 | Multi-Hop | ⬜ | |374| 3.4 | Unlink | ⬜ | |375| 4.1 | Validate | ⬜ | |376| 4.2 | Invalidate | ⬜ | |377| 4.3 | Trust History | ⬜ | |378| 5.1 | Contradictions | ⬜ | IDs: X=, Y= |379| 5.2 | Mark/Find | ⬜ | |380| 5.3 | Resolve | ⬜ | |381| 6.1 | Sessions | ⬜ | |382| 6.2 | Episodic | ⬜ | |383| 6.3 | Session Topic | ⬜ | |384| 6.4 | Summarize Session | ⬜ | |385| 7.1 | Log Output | ⬜ | |386| 7.2 | Run Mining | ⬜ | |387| 7.3 | Review | ⬜ | |388| 8.1 | Seed from Text | ⬜ | |389| 8.2 | Seed from File | ⬜ | |390| 8.3 | Bootstrap | ⬜ | |391| 9.1 | Predictive Status | ⬜ | |392| 9.2 | Access Patterns | ⬜ | |393| 9.3 | Predict Next | ⬜ | |394| 9.4 | Warm Cache | ⬜ | |395| 10.1 | Mark Used | ⬜ | |396| 10.2 | Retrieval Stats | ⬜ | |397| 11.1 | Stats | ⬜ | |398| 11.2 | DB Info | ⬜ | |399| 11.3 | Maintenance | ⬜ | |400| 11.4 | Consolidation | ⬜ | |401| 11.5 | Audit | ⬜ | |402| 11.6 | Vector Rebuild | ⬜ | |403| 12.1 | Hot Cache Resource | ⬜ | |404| 12.2 | Working Set Resource | ⬜ | |405| 12.3 | Project Context Resource | ⬜ | |406| 13.1 | List Memories | ⬜ | |407| 13.2 | Recall Fallback | ⬜ | |408| 13.3 | Relationship Stats | ⬜ | |409| 13.4 | Session Details | ⬜ | |410| 14.1 | Invalid IDs | ⬜ | |411| 14.2 | Recall Edge Cases | ⬜ | |412| 14.3 | Pagination Boundaries | ⬜ | |413| 14.4 | Link/Unlink Errors | ⬜ | |414| 14.5 | Trust Boundaries | ⬜ | |415| 14.6 | Session Errors | ⬜ | |416| 14.7 | Mining Edge Cases | ⬜ | |417| 15 | Cleanup | ⬜ | |418| 16.1 | Compact Conversation | ⬜ | |419420## Quick Smoke Test421422For a 2-minute sanity check:4231. `remember("Smoke test", tags=["smoke"])`4242. `recall("smoke")`4253. `promote(id)` → `hot_cache_status()`4264. `demote(id)` → `forget(id)`4275. `memory_stats()`428429---430431## Execution Mode432433When running this skill:4341. Ask user which phase to start with (or start from Phase 1)4352. Execute each test, showing tool calls and results4363. Update the tracking table after each test4374. Pause between phases to let user review4385. Note any failures or unexpected behavior4396. Offer to skip phases or run specific tests440
Full transparency — inspect the skill content before installing.