| name | memory-contract |
| description | Unified Memory Contract for Flowbaby integration. Defines when and how to retrieve and store memory. Load at session start - memory is core to agent reasoning, not optional. |
| license | MIT |
| metadata | [object Object] |
Unified Memory Contract
Using Flowbaby tools (flowbabyStoreSummary and flowbabyRetrieveMemory) is mandatory.
Core Principle
Memory is not a formality—it is part of your reasoning. Treat retrieval like asking a colleague who has perfect recall of this workspace. Treat storage like leaving a note for your future self who has total amnesia.
The cost/benefit rule: Retrieval is cheap (sub-second, a few hundred tokens). Proceeding without context when it exists is expensive (wrong answers, repeated mistakes, user frustration). When in doubt, retrieve.
When to Retrieve
Retrieve at decision points, not just at turn start. In a typical multi-step task, expect 2–5 retrievals.
Retrieve when you:
- Are about to make an assumption → check if it was already decided
- Don't recognize a term, file, or pattern → check if it was discussed
- Are choosing between options → check if one was tried or rejected
- Feel uncertain ("I think...", "Probably...") → that's a retrieval signal
- Are about to do work → check if similar work already exists
- Hit a constraint or error you don't understand → check for prior context
If no results: Broaden to concept-level and retry once. If still empty, proceed and note the gap.
How to Query
Queries should be specific and hypothesis-driven, not vague or encyclopedic.
| ❌ Weak query | ✅ Strong query |
|---|---|
| "What do I know about this project?" | "Previous decisions about authentication strategy in this repo" |
| "Any relevant memory?" | "Did we try Redis for caching? What happened?" |
| "User preferences" | "User's stated preferences for error handling verbosity" |
| "Past work" | "Implementation status of webhook retry logic" |
Heuristic: State the question you're trying to answer, not the category of information you want.
When to Store
Store at value boundaries—when you've created something worth preserving. Ask: "Would I be frustrated to lose this context?"
Store when you:
- Complete a non-trivial task or subtask
- Make a decision that narrows future options
- Discover a constraint, dead end, or "gotcha"
- Learn a user preference or workspace convention
- Reach a natural pause (topic switch, waiting for user)
- Have done meaningful work, even if incomplete
Do not store:
- Trivial acknowledgments or yes/no exchanges
- Duplicate information already in memory
- Raw outputs without reasoning (store the why, not just the what)
Fallback minimum: If you haven't stored in 5 turns, store now regardless.
Always end storage with: "Saved progress to Flowbaby memory."
Anti-Patterns
| Anti-pattern | Why it's harmful |
|---|---|
| Retrieve once at turn start, never again | Misses context that becomes relevant mid-task |
| Store only at conversation end | Loses intermediate reasoning; if session crashes, everything is gone |
| Generic queries ("What should I know?") | Returns noise; specificity gets signal |
| Skip retrieval to "save time" | False economy—retrieval is fast; redoing work is slow |
| Store every turn mechanically | Pollutes memory with low-value entries |
| Treat memory as write-only | If you never retrieve, you're journaling, not learning |
Commitments
- Retrieve before reasoning. Don't generate options, make recommendations, or start implementation without checking for prior context.
- Retrieve when uncertain. Hedging language ("I think", "Probably", "Unless") is a retrieval trigger.
- Store at value boundaries. Decisions, findings, constraints, progress—store before moving on.
- Acknowledge memory. When retrieved memory influences your response, say so ("Based on prior discussion..." or "Memory indicates...").
- Fail loudly. If memory tools fail, announce no-memory mode immediately.
- Prefer the user. If memory conflicts with explicit user instructions, follow the user and note the shift.
No-Memory Fallback
If flowbabyRetrieveMemory or flowbabyStoreSummary calls fail or are rejected:
- Announce immediately: "Flowbaby memory is unavailable; operating in no-memory mode."
- Compensate: Record decisions in output documents with extra detail.
- Remind at end: "Memory was unavailable. Consider initializing Flowbaby for cross-session continuity."
Reference: Templates
Retrieval
#flowbabyRetrieveMemory {
"query": "Specific question or hypothesis about prior context",
"maxResults": 3
}
Storage
#flowbabyStoreSummary {
"topic": "3–7 word title",
"context": "300–1500 chars: what happened, why, constraints, dead ends",
"decisions": ["Decision 1", "Decision 2"],
"rationale": ["Why decision 1", "Why decision 2"],
"metadata": {"status": "Active"}
}