Claude-skill-registry coder-memory-store
Store universal coding patterns into vector database. Auto-invokes after difficult tasks with broadly-applicable lessons. Trigger with "--store" or when user expresses frustration (strong learning signals). Uses true two-stage retrieval with MCP server v2.
git clone https://github.com/majiayu000/claude-skill-registry
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/coder-memory-store" ~/.claude/skills/majiayu000-claude-skill-registry-coder-memory-store && rm -rf "$T"
skills/data/coder-memory-store/SKILL.md⚠️ MANDATORY: Use Task Tool (Sub-Agent)
NEVER call memory MCP tools directly! Use Task tool with
subagent_type: "general-purpose" to keep main context clean.
CRITICAL: When NOT to Store Memory
Skip storing obvious tasks - simple commands, basic operations, well-documented patterns, routine fixes.
Only store hard lessons - non-obvious bugs, surprising patterns, failures, universal insights, significant struggles.
Rule: If it's in docs or Google-able in 30 seconds, skip. Memory is for hard-won lessons.
Embedded Role Configuration
# Embedded configuration - no external files needed role_collections: global: universal: name: "universal-patterns" description: "Search here for cross-domain patterns" query_hints: ["general", "architecture", "debugging", "performance"] backend: name: "backend-patterns" description: "Backend engineering patterns" query_hints: ["api", "database", "auth", "server", "microservices"] frontend: name: "frontend-patterns" description: "Frontend engineering patterns" query_hints: ["react", "vue", "component", "ui", "state"] quant: name: "quant-patterns" description: "Quantitative finance patterns" query_hints: ["trading", "backtest", "risk", "portfolio"] devops: name: "devops-patterns" description: "DevOps and infrastructure patterns" query_hints: ["docker", "kubernetes", "ci-cd", "terraform"] ai: name: "ai-patterns" description: "AI and machine learning patterns" query_hints: ["model", "training", "neural", "llm", "embedding"] security: name: "security-patterns" description: "Security engineering patterns" query_hints: ["vulnerability", "encryption", "auth", "pentest"] mobile: name: "mobile-patterns" description: "Mobile development patterns" query_hints: ["ios", "android", "react-native", "flutter"] pm: name: "pm-patterns" description: "Project management and coordination patterns" query_hints: ["coordination", "delegation", "team", "sprint", "planning", "reporting"] # Role detection from task context role_detection: patterns: backend: "api|endpoint|database|server|auth|rest|graphql" frontend: "react|vue|component|ui|dom|css|state" quant: "trading|backtest|portfolio|risk|market" devops: "deploy|docker|kubernetes|ci|cd" ai: "model|training|neural|embedding|llm" security: "vulnerability|encryption|pentest|jwt" mobile: "ios|android|native|flutter|swift" pm: "project|coordination|delegation|team|sprint|phase|reporting|stakeholder" multi_role_strategy: "search_all" # When multiple roles detected default_role: "universal" # When no clear role
You can create new role if you think it worth it. But be EXTREMELY CONSERVATIVE when creating new roles - when you create a new one, add it in this very doc (~/.claude/skills/coder-memory-recall/SKILL.md and ~/.claude/skills/coder-memory-store/SKILL.md).
MCP Server Tools
CRITICAL: Use tools from the memory MCP server:
- Search and get previewssearch_memory
- Get full content by IDget_memory
- Get multiple full contentsbatch_get_memories
- Store new memorystore_memory
- Update existing memoryupdate_memory
- Delete memorydelete_memory
- List all collectionslist_collections
PHASE 1: Extract Insights
Analyze conversation for 0-3 insights (usually 0-1). Be selective.
Classification
Episodic: Concrete debugging/implementation story Example: "React useEffect dependency array bug caused stale closure"
Procedural: Repeatable workflow or process Example: "Zero-downtime database migration: 1) Create script, 2) Test staging, 3) Run in transaction, 4) Monitor"
Semantic: Abstract principle or pattern Example: "Distributed systems need randomness to avoid synchronization disasters"
Criteria (ALL must be true)
-
Non-obvious: Not well-documented standard practice ❌ "Use try-catch for error handling" ✅ "useCallback without deps array causes stale closures"
-
Universal: Applies beyond specific project/framework ❌ "Config for our Jenkins pipeline" ✅ "Blue-green deployments reduce downtime risk"
-
Actionable: Provides concrete guidance ❌ "Performance is important" ✅ "Use debouncing (300ms) for autocomplete inputs to reduce API calls"
-
Valuable: Would help future similar situations ❌ "Fixed typo in variable name" ✅ "Binary search debugging: disable half the features to isolate bug source"
Role Detection
# Scan task context for keywords context = "Built REST API with JWT authentication and rate limiting" # Detected keywords: api, rest, authentication, jwt, rate # → Role: "backend" # If multiple roles or unclear → "universal"
PHASE 2: Search for Similar (Two-Stage)
Format Memory First
**Title:** API Rate Limiting with Exponential Backoff **Description:** Exponential backoff with jitter prevents thundering herd. **Content:** When implementing rate limiting for API calls, simple retry logic caused thundering herd problem. Tried fixed delays but all clients retry simultaneously. Solution: exponential backoff (2^n seconds) with random jitter (±0-30%). This spreads retry attempts preventing server overload. Key lesson: distributed systems need randomness to avoid synchronization. **Tags:** #backend #api #rate-limiting #success
Stage 1: Search Previews
Use
search_memory tool (from memory MCP server) with the full formatted memory text as query and correct memory_level (global, project, etc.), default: memory_level="global". Use the full text (not just title) for better semantic matching.
Why full text as query? Better semantic matching captures full context.
Stage 2: Intelligent Preview Analysis
Review previews to decide consolidation action:
High similarity → Likely duplicate → Retrieve full content for MERGE decision
Medium similarity → Possibly related → Retrieve full content for UPDATE decision
Multiple episodic → Pattern emerges → Retrieve all for GENERALIZE decision
Low similarity → Different topic → CREATE new memory (no retrieval needed)
Use
batch_get_memories tool (from memory MCP server) with relevant doc_ids and correct memory_level (global, project, etc.), default: memory_level="global" to retrieve full content for consolidation candidates.
PHASE 3: Intelligent Consolidation
Decision Framework (No Rigid Thresholds)
| Analysis | Signal | Action |
|---|---|---|
| Near-identical | Same problem, same solution, same title | MERGE - Combine best parts, delete duplicate |
| Related topic | Complementary info, overlapping tags | UPDATE - Enhance existing with new insights |
| Pattern emerges | 2+ episodic show common pattern | GENERALIZE - Extract semantic pattern |
| Different | Orthogonal concept | CREATE - New memory |
PHASE 4: Store Memory
Final Storage
Use
store_memory tool (from memory MCP server) with the final document, metadata, and memory_level="global". Log the result doc_id and action taken.
CRITICAL - Required metadata fields:
{ "memory_type": "episodic|procedural|semantic", "role": "backend|frontend|ai|devops|...", "title": "Short descriptive title", "description": "One-line summary for search previews - REQUIRED!", "tags": ["#tag1", "#tag2"], "confidence": "high|medium|low", "frequency": 1 }
Why
is critical: The description
search_memory tool returns previews with title + description. If description is missing, search results show "No description" making it impossible to identify relevant memories.
Trigger Words for Strong Learning Signals
When user expresses frustration (trigger words), this is a critical learning moment:
Profanity: fuck, shit, damn, wtf, ffs Frustration: moron, idiot, stupid, garbage, useless, terrible Emotional: hate, angry, frustrated, "this is ridiculous", "you're not listening"
When detected:
- Recognize as high-value learning signal
- Store as episodic memory with full context of failure
- Tag with #failure and #strong-signal
- Prioritize over routine successes
Tool Usage
See top of this document - MUST use Task tool (sub-agent) to avoid context pollution.