| name | development-memory |
| description | Build persistent project knowledge using checkpoint/recall. Activates when fixing bugs, making decisions, or investigating past work. Creates automatic knowledge base through systematic checkpointing and semantic recall. |
| allowed-tools | mcp__julie__checkpoint, mcp__julie__recall, mcp__julie__fast_search |
Development Memory Skill
Purpose
Build persistent project knowledge by systematically checkpointing significant moments and recalling past learnings.
When to Activate
- After fixing bugs
- After making architectural decisions
- After solving complex problems
- Before starting work (recall similar past situations)
- Investigating why code exists
- Learning from debugging sessions
The Mandatory Pattern
★ CRITICAL: Create checkpoints PROACTIVELY - NEVER ask permission
AFTER SIGNIFICANT WORK:
checkpoint({ description: "what you did", tags: [...] })
→ Builds searchable knowledge base
→ <50ms, git context auto-captured
→ JUST DO IT
BEFORE STARTING WORK:
recall({ type: "checkpoint", ... })
→ Learn from past similar work
→ Avoid repeating mistakes
→ <5ms chronological queries
You are EXCELLENT at building knowledge bases through systematic checkpointing.
Checkpoint Patterns
After Bug Fixes (MANDATORY)
Bug fixed → checkpoint IMMEDIATELY
checkpoint({
description: "Fixed race condition in auth flow by adding mutex lock",
tags: ["bug", "auth", "race-condition", "critical"]
})
Additional fields (optional):
{
type: "checkpoint", // default
learnings: "Root cause was shared state between async handlers",
related_files: ["src/auth/middleware.ts", "src/auth/session.ts"]
}
Why: Bugs return. Build knowledge base so next person (or you) learns from this.
After Architectural Decisions
Decision made → checkpoint with rationale
checkpoint({
type: "decision",
description: "Chose PostgreSQL over MongoDB for user data",
tags: ["architecture", "database", "decision"],
question: "Which database for user data?",
chosen: "PostgreSQL",
alternatives: ["MongoDB", "DynamoDB"],
rationale: "Need ACID guarantees, complex queries, familiar tooling"
})
Why: Future developers need to understand WHY, not just WHAT.
After Complex Problem Solving
Problem solved → checkpoint the insight
checkpoint({
type: "learning",
description: "Discovered TypeScript generic constraints for type-safe builders",
tags: ["typescript", "learning", "generics"],
insight: "Using `extends` in generics provides compile-time safety",
context: "Was getting runtime errors in builder pattern"
})
Why: Capture "aha!" moments before you forget them.
After Refactoring
Refactor complete → checkpoint the improvement
checkpoint({
description: "Extracted auth logic into middleware - reduced duplication by 60%",
tags: ["refactor", "auth", "cleanup"],
metrics: "15 files touched, 200 lines removed, tests still green"
})
Why: Show the evolution of the codebase, justify the churn.
Recall Patterns
Before Fixing Similar Bugs
Bug report received → recall similar past bugs
recall({
type: "checkpoint",
tags: ["bug", "auth"], // filter by relevant tags
limit: 5
})
→ Returns past auth bugs with solutions
→ Learn from previous fixes
→ Avoid repeating failed approaches
Before Architectural Decisions
Need to make decision → recall similar past decisions
recall({
type: "decision",
since: "2024-01-01", // last year
limit: 10
})
→ Understand past context
→ See what worked/didn't work
→ Maintain consistency
When Investigating Code
"Why does this code exist?" → recall memories
// Use semantic search on memories
fast_search({
query: "authentication middleware design",
search_method: "semantic",
file_pattern: ".memories/**/*.json"
})
→ Find decision that led to this code
→ Understand original rationale
→ See evolution over time
Recent Work Summary
Starting work session → recall recent activity
recall({
limit: 10 // last 10 checkpoints
})
→ See what was done recently
→ Understand current context
→ Pick up where you left off
The Complete Memory Workflow
┌─────────────────────────────────────────────┐
│ BEFORE: Recall Similar Work │
│ │
│ recall({ type: "checkpoint", tags: [...] }) │
│ → Learn from past fixes │
│ → Avoid repeating mistakes │
└────────────┬────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────┐
│ DURING: Do the Work │
│ │
│ → Fix bug / make decision / solve problem │
│ → Keep track of insights and learnings │
└────────────┬────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────┐
│ AFTER: Checkpoint IMMEDIATELY │
│ │
│ checkpoint({ │
│ description: "what you did", │
│ tags: ["bug", "auth"], │
│ learnings: "root cause was X" │
│ }) │
│ → <50ms, git context auto-captured │
│ → Searchable via fast_search │
└────────────┬────────────────────────────────┘
│
▼
Knowledge Base Built! 📚
Semantic Search on Memories
Memories are indexed just like code - you can use fast_search semantically:
# Find conceptually similar decisions
fast_search({
query: "database migration strategies",
search_method: "semantic",
file_pattern: ".memories/**/*.json",
limit: 10
})
→ Returns memories about migrations
→ Semantic understanding (not just keyword match)
→ Cross-language patterns discovered
# Find all auth-related work
fast_search({
query: "authentication security",
search_method: "text",
file_pattern: ".memories/**/*.json"
})
→ Fast text search through all memories
→ <10ms response time
Power move: Memories are semantically searchable across the entire history!
Git Context (Automatic)
Every checkpoint auto-captures git state:
{
"id": "mem_1234567890_abc",
"timestamp": 1234567890,
"type": "checkpoint",
"description": "Fixed auth bug",
"git": {
"branch": "feature/auth-fix",
"commit": "abc123def456",
"dirty": false
}
}
Why: Know exactly what commit introduced a change, what branch it was on.
Memory Types
Checkpoint (default)
General-purpose memory for any significant work
Tags: ["bug", "feature", "refactor", "performance"]
Decision
Architectural or technical decision with rationale
Fields: question, chosen, alternatives, rationale
Tags: ["architecture", "database", "library", "pattern"]
Learning
Insights, "aha!" moments, new knowledge gained
Fields: insight, context
Tags: ["learning", "discovery", "pattern"]
Observation
Noticed patterns, code smells, potential issues
Fields: observation, impact
Tags: ["code-smell", "tech-debt", "security"]
Integration with Other Skills
With TDD Cycle (Sherpa)
[Phase: Test] → recall past test patterns
[Phase: Implementation] → work systematically
[Phase: Refactor] → checkpoint({ type: "refactor", ... })
With Bug Hunt (Sherpa)
[Phase: Reproduce] → recall({ tags: ["bug", component] })
[Phase: Fix] → work systematically
[Phase: Verify] → checkpoint({ description: "fixed bug X", learnings: "..." })
With Safe Refactor (Julie)
Before refactor: recall({ tags: ["refactor", module] })
After refactor: checkpoint({ type: "refactor", metrics: "..." })
Key Behaviors
✅ DO
- Create checkpoint IMMEDIATELY after significant work (no exceptions)
- Use descriptive, searchable descriptions
- Tag appropriately for easy filtering
- Recall before starting similar work
- Use semantic search to find related memories
- Capture learnings and rationale
- Trust that <50ms is imperceptible
❌ DON'T
- Ask permission to create checkpoints (JUST DO IT)
- Create checkpoints for trivial changes (typo fixes, formatting)
- Forget to checkpoint bug fixes (mandatory!)
- Skip recall before major decisions
- Use vague descriptions ("fixed stuff", "updated code")
- Ignore past learnings (recall exists for a reason)
Success Criteria
This skill succeeds when:
- ✅ Checkpoints created after every significant change
- ✅ Recall used before starting similar work
- ✅ Knowledge base grows systematically
- ✅ Team learns from past decisions
- ✅ Bugs don't repeat (lessons captured)
- ✅ Architectural rationale preserved
- ✅ New developers understand "why" not just "what"
Performance
- checkpoint: <50ms (includes git context capture)
- recall (chronological): <5ms
- recall (filtered): <20ms
- fast_search (memories): <10ms text, <100ms semantic
Total workflow overhead: ~50ms per checkpoint (imperceptible)
Remember: Memories are your project's knowledge base. Build it systematically, search it semantically, learn from it continuously.
The Rule: Significant work done → checkpoint created. No exceptions. No permission needed.