agentleFS
imMamdouhaboammarimMamdouhaboammar/get-fable/skills/fable-memory/SKILL.md

fable-memory

Skill6 starsChanged 3 months agoMITView on GitHub

Manage persistent file-based memory, indexing cross-session user preferences, feedback, and architectural constraints in structured MEMORY.md stores. Use when recording user feedback, storing project conventions, recalling cross-session architectural constraints, or indexing durable project memory — even if the user does not explicitly say \"fable-memory\" (e.g. \"remember this preference\", \"save to memory\", \"what are my project rules\", \"recall user feedback\"). Do NOT use for volatile task state stored in .fable/state.json.

The file

We split this skill into the rules it gives an agent

10 rules. About 0 are common, 10 are distinctive, and 0 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈10

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 0

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    If not durable, leave it in current context/handoff only.

    line 70
  2. Distinctive:

    Search for existing records with same subject.

    line 83
  3. Distinctive:

    Update one canonical fact record and synchronize index/catalog.

    line 89
  4. Distinctive:

    Read back the record as a future agent would.

    line 92
  5. Distinctive:

    When a remembered fact affects current work:

    line 97
  6. Distinctive:

    prefer current user/repository evidence over old memory.

    line 99
  7. Distinctive:

    treat explicit new instruction as superseding old preference where applicable.

    line 101
  8. Distinctive:

    Do not infer broad personal preferences from a single project choice.

    line 108
  9. Distinctive:

    Never store credentials even when the user asks to "remember the token".

    line 109
  10. Distinctive:

    No secrets enter durable memory.

    line 113

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Fable Memory

Persist only facts that deserve to survive the session, with provenance and contradiction handling strong enough that old memory does not silently become a new source of error.

Mission

Memory is not a chat archive. It should reduce rediscovery without freezing temporary guesses into permanent instructions.

A durable record needs scope, provenance, confidence, freshness, and a way to be superseded when the user or repository changes.

Activate When

  • the user explicitly asks to remember a durable preference/constraint;
  • a stable project convention or architectural decision will materially affect future work;
  • cross-session continuity repeatedly depends on the same fact;
  • a prior durable fact needs correction, supersession, or retrieval.

Do Not Activate When

  • the information is temporary execution state (.fable/state, ledger, handoff);
  • it is a one-off conversational detail unlikely to affect future decisions;
  • it is a guess/inference not yet stable enough to persist;
  • it contains a password, token, private key, session cookie, or other secret.

Memory Classification

TypeExampleDurability rule
User preferencepreferred package managerpersist when explicit/stable
Project constraintruntime Bun >=1.3bind to project/source
Architecture decisionuse outbox for eventsstore rationale + supersession path
Repeated workflow ruleverify package clean-install before releasepersist if project-specific and durable
External factAPI behavior/versionusually cite/research at use time; avoid timeless storage
Temporary statecurrent failing testhandoff/state, not memory
Sensitive credentialAPI tokennever memory

Protocol

Stage 1 — Decide whether it deserves memory

Ask:

  • will this likely matter in another session?
  • is it stable, explicit, or source-backed?
  • is there a narrower existing record to update?
  • could persistence create privacy/security risk?

If not durable, leave it in current context/handoff only.

Stage 2 — Normalize the fact

Store one coherent decision/fact with:

  • canonical statement;
  • scope (user/project/repo/subsystem);
  • type;
  • source/provenance;
  • confidence/status;
  • created/updated timestamp if supported;
  • supersedes/superseded-by relation when relevant.

Stage 3 — Check conflicts before write

Search for existing records with same subject. Compare:

  • exact agreement → update provenance/freshness rather than duplicate;
  • narrower/wider scope → preserve both only if scopes are genuinely different;
  • contradiction → do not keep two active truths; resolve or mark conflict explicitly.

Stage 4 — Write atomically and index

Update one canonical fact record and synchronize index/catalog. Preserve unrelated records.

Stage 5 — Validate retrieval meaning

Read back the record as a future agent would. Ensure it does not overgeneralize:

  • use Bun in get-fable is not user always uses Bun everywhere;
  • API v4 did X in Aug 2026 is not an eternal API guarantee.

Stage 6 — Apply memory skeptically on retrieval

When a remembered fact affects current work:

  • confirm scope matches;
  • prefer current user/repository evidence over old memory;
  • revalidate time-sensitive external facts;
  • treat explicit new instruction as superseding old preference where applicable.

Decision Rules

  • User's current explicit statement outranks stored preference.
  • Repository/config/source evidence outranks contradictory memory about repository state.
  • Time-sensitive external facts should be researched again rather than trusted indefinitely.
  • A memory can be historical without remaining active; use superseded status instead of deletion when history matters.
  • Do not infer broad personal preferences from a single project choice.
  • Never store credentials even when the user asks to "remember the token"; reference secure credential management instead.
  • One fact per record is a maintainability rule, but related rationale/source may accompany the fact.

Invariants

  • No secrets enter durable memory.
  • Active memory contains no unresolved contradictory truths without explicit conflict status.
  • Scope is explicit enough to prevent accidental generalization.
  • Provenance is retained for consequential constraints/decisions.
  • Current evidence/instruction can supersede memory.
  • Index and underlying record remain consistent.

Failure Taxonomy

Duplicate memory

Same fact exists twice with minor wording differences. Merge/update canonical record.

Scope leak

Project-specific choice is treated as global user preference. Narrow the scope.

Stale memory

Repository/user/external reality changed. Supersede or revalidate before use.

Contradictory active facts

Two records give incompatible active guidance. Resolve with current source/user evidence.

Inference hardened into fact

Agent stored an assumption as durable truth. Downgrade/remove and require evidence.

Secret persistence

Sensitive value appears in memory. Remove exposure and handle credential rotation/security as appropriate.

Anti-Patterns

  • saving every conversation detail "just in case";
  • storing temporary errors/active todos as durable preference;
  • broadening in this repo into always;
  • persisting current API/version claims with no expiry/provenance;
  • creating a new fact file instead of updating a conflicting one;
  • storing a token because future automation may need it;
  • treating memory as more authoritative than current repository evidence;
  • silently deleting historical decisions when supersession context matters.

Memory Record

Subject/fact:
Scope:
Type:
Status: active | superseded | conflicted
Source/provenance:
Confidence:
Rationale/context:
Supersedes / superseded by:
Freshness/revalidation note:

Completion Criteria

Memory work completes when:

  • fact is genuinely durable and safely scoped;
  • duplicates/conflicts were checked;
  • record has enough provenance to evaluate later;
  • index is synchronized;
  • sensitive/temporary data was excluded;
  • a future agent can retrieve and apply the fact without overgeneralizing it.

Progressive Resources

  • Deep guide: references/durable-fact-lifecycle.md
  • Existing protocol: references/memory-management-protocol.md
  • Template: templates/memory-fact.template.md
  • Example: examples/recording-user-preference.md

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.