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.

install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
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"
manifest: skills/data/coder-memory-store/SKILL.md
source content

⚠️ 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_memory
    - Search and get previews
  • get_memory
    - Get full content by ID
  • batch_get_memories
    - Get multiple full contents
  • store_memory
    - Store new memory
  • update_memory
    - Update existing memory
  • delete_memory
    - Delete memory
  • list_collections
    - List all 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)

  1. Non-obvious: Not well-documented standard practice ❌ "Use try-catch for error handling" ✅ "useCallback without deps array causes stale closures"

  2. Universal: Applies beyond specific project/framework ❌ "Config for our Jenkins pipeline" ✅ "Blue-green deployments reduce downtime risk"

  3. Actionable: Provides concrete guidance ❌ "Performance is important" ✅ "Use debouncing (300ms) for autocomplete inputs to reduce API calls"

  4. 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)

AnalysisSignalAction
Near-identicalSame problem, same solution, same titleMERGE - Combine best parts, delete duplicate
Related topicComplementary info, overlapping tagsUPDATE - Enhance existing with new insights
Pattern emerges2+ episodic show common patternGENERALIZE - Extract semantic pattern
DifferentOrthogonal conceptCREATE - 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

description
is critical: The
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:

  1. Recognize as high-value learning signal
  2. Store as episodic memory with full context of failure
  3. Tag with #failure and #strong-signal
  4. Prioritize over routine successes

Tool Usage

See top of this document - MUST use Task tool (sub-agent) to avoid context pollution.