Agent Skills: Development Memory Skill

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.

UncategorizedID: anortham/julie/development-memory

Skill Files

Browse the full folder contents for development-memory.

Download Skill

Loading file tree…

skills/development-memory/SKILL.md

Skill Metadata

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.

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.