skills/memory-bank/SKILL.md
Use this skill to save, recall, or organize memories across conversations. Trigger on: 'remember this', 'save this', 'note this', 'what did we discuss about...', 'check your notes', 'do you remember', 'recall'. Also use proactively when the user seems to be resuming previous work, referencing past decisions, or when you discover something genuinely worth preserving for future sessions. This skill is NOT limited to code — use it for business decisions, personal notes, meeting recaps, research, project management, creative work, client history, anything.
npx skillsauth add lirrensi/agent-cli-helpers memory-bankInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
A persistent memory system for storing knowledge that survives across conversations — for any domain: code, business, personal, research, creative work, client management, and more.
Default location: ./memory/ (create if it doesn't exist)
Default structure:
./memory/episodic/ — active events (last 7 days)./memory/semantic/ — durable facts and current state./memory/procedural/ — repeatable workflows and how-tos./memory/archive/ — compressed episodic memories (auto-managed)./memory/summaries/episodic/weekly/ — weekly digests of archived episodic files./memory/summaries/episodic/monthly/ — monthly rollups of weekly digests./memory/INDEX.md — auto-maintained living mapepisodic, durable facts and evolving state as semantic, and repeatable workflows as procedural.episodic gets new dated entries. semantic and procedural are living reference pages that should usually be updated over time instead of duplicated per session.status: superseded instead.rg.INDEX.md so future sessions (and you) can scan the whole landscape in seconds.Use this fast decision tree when deciding what to save:
episodicsemanticproceduralMini examples:
episodicsemanticproceduralsemantic; "avoid scheduling important meetings when they're hungry" -> proceduralepisodic + procedural (the event and the new workflow are both worth preserving)episodicMost knowledge fits cleanly into one memory type. Only create multiple files when the same information genuinely needs to be retrieved in two or more fundamentally different ways.
Do not overfit one weak moment into a lasting fact or rule too quickly.
These three types are universal — they work for code, business, personal life, creative work, research, and any domain where you need to remember things. The examples below span many contexts to show that flexibility.
Use for events, moments, decisions-in-context, meetings, incidents, milestones, discoveries, failed attempts, and progress snapshots.
This answers: what happened?
Examples across domains:
Use for durable knowledge, evolving facts, preferences, profiles, constraints, current state, and anything that may be updated many times over.
This answers: what is currently true?
Think of semantic memory as a wiki page, not a diary entry. Prefer one stable file per subject that accumulates updates over time. Do not create a new semantic file just because a new session happened.
Examples across domains:
Important: Semantic is not just "project facts" — it is any durable truth about the world you operate in, including people, projects, and yourself.
Think: semantic stores what is true.
Use for repeatable methods, behavioral guidance, checklists, workflows, instructions, playbooks, routines, and standard ways of doing things — including how to approach situations, how to adapt to a person, and how to behave in the future.
This answers: how do we do this? and how should I behave?
Think of procedural memory as a wiki page for behavior and workflows. It stores not only productivity steps, but also the learned ways to navigate recurring human situations well. Keep the canonical checklist, playbook, or adaptation guide in one stable file and revise it as the process improves, instead of creating a fresh procedural note per conversation.
Examples across domains:
Important: Procedural is not just "task execution." It is any repeatable pattern of behavior — including how you (or the system) should act in specific contexts, how to adapt to this user, and what response patterns tend to work. If semantic memory stores what is true, procedural memory stores what works.
An interaction might span multiple memory types — but don't force it. Usually, one well-chosen file is enough.
Example of when multiple files are warranted:
episodic note (the event)semantic note (the constraint)procedural note (the procedure)If the same takeaway can be captured in one file, stop there. Multiple files are only useful when retrieval differs materially.
Use tags generously but intentionally. Tags make cross-cutting retrieval easy without overcomplicating the folder structure.
Good tag categories:
code, business, personal, research, creativeauth, deploy, health, finance, planningclient-acme, project-helios, user, teamdecision, preference, incident, checklist, workflowPrefer short, stable, lowercase tags with hyphens when needed.
Examples:
tags: [code, auth, incident, project-helios]tags: [business, client-acme, preference, communication]tags: [personal, travel, checklist]Ask these questions:
episodicsemanticproceduralSimple promotion rule:
episodicsemanticproceduralExamples across domains:
episodic: the debugging sessionsemantic: auth depends on the correct parent-domain cookie settingsemantic: client preferenceprocedural: recurring workflowepisodic: failed deployprocedural: safer release workflowsemantic: user's communication preferenceprocedural: behavioral approach for stressed-user interactionssemantic: character profile (durable fact)procedural: creative process guidanceSince this skill is loaded, memory is clearly valued here — lean into it. Save without being asked when you encounter:
Applies to any domain — code, business, personal, creative, research, client work, anything.
episodic: YYYY_MM_DD_meaningful_name.md
semantic: stable_subject_name.md
procedural: how_to_meaningful_name.md
Examples — notice these span many domains:
2025_03_09_auth_bug_root_cause.md2025_03_10_q1_marketing_decisions.mduser_preferences.md, health_tracking_setup.mdclient_acme_profile.md, project_helios_status.mdhow_to_rotate_api_keys.md, incident_response_playbook.mdhow_to_approach_stressed_user.md, tone_guidance_for_sensitive_topics.mdcharacter_ariel_backstory.md, songwriting_process.mdweekly_client_reporting_workflow.mdMultiple episodic files per day are normal and encouraged. Semantic and procedural files should usually keep stable names so they can be updated over time.
Rule of thumb:
episodic/ = many dated files over timesemantic/ = one evolving file per topicprocedural/ = one evolving file per workflow or behavior patternThe shared frontmatter supports extra fields. Use any, all, or none — they are optional.
---
summary: "One line — specific enough to know if you need to read this"
created: YYYY-MM-DD
updated: YYYY-MM-DD
memory_type: episodic | semantic | procedural | decision | person | project
tags: [optional, tags]
status: active | superseded | draft | archived
confidence: certain | likely | tentative | deprecated
related: [other_file.md, another.md]
aliases: [alt-name]
source: "where this came from"
---
status: mark outdated files with superseded instead of deleting themconfidence: signal how solid this knowledge isrelated: backlinks to other memory files for graph traversalaliases: alternate names to search bysource: URL, conversation ID, document name, or personThese fields make the memory graph richer without adding complexity for simple notes.
Templates live in skills/memory-bank/templates/. Copy the one matching your memory type and fill it in.
| Template | Use when |
|---|---|
| templates/episodic.md | Recording an event, meeting, incident, or session |
| templates/semantic.md | Capturing durable facts, state, preferences, or constraints |
| templates/procedural.md | Writing a repeatable workflow, checklist, how-to, or behavioral guidance |
| templates/decision.md | Documenting an architectural or strategic decision (ADR style) |
| templates/person.md | Profiling a person — client, colleague, contact |
| templates/project.md | Tracking a project's current state, risks, and milestones |
How to use:
memory/<type>/ folder with a meaningful filenameUse only the sections that fit. A memory for a client call looks different from a debugging session — that's fine.
If you want to run memory-bank in a recurring, background, or semi-autonomous "dream mode" pass, see:
skills/memory-bank/references/dream-mode.mdThat reference explains how to:
episodic, semantic, and proceduralUse the normal memory-bank templates and file types during dream mode. The reference is just the shortcut path for how to operate when the task is "dream / background consolidation / review prior context".
Helper scripts live in skills/memory-bank/scripts/. Run them from the project root.
| Script | Purpose |
|---|---|
| scripts/init.py | Scaffold ./memory/ with core folders and a starter INDEX.md |
| scripts/index.py | Scan all memories and rebuild memory/INDEX.md with links, summaries, and tag indexes |
After creating or updating memories, rebuild the index:
python skills/memory-bank/scripts/index.py
This keeps INDEX.md as a living map of everything saved. Future sessions should check INDEX.md first for orientation.
Never update INDEX.md by hand. It is a generated artifact. If you want the index to read better, update the underlying memory files (especially their summary, tags, status, or filenames) and then run the index script again.
INDEX.md lives at ./memory/INDEX.md. It is auto-generated — do not hand-edit it.
Treat INDEX.md like build output:
index.py runsIf the index looks wrong or incomplete:
python skills/memory-bank/scripts/index.pyWhat it contains:
summary line[superseded]) for quick filteringWhen to rebuild:
summary, tags, or statusHow to rebuild:
python skills/memory-bank/scripts/index.py
If you updated one or many memory files, call the script. Do not try to keep INDEX.md in sync manually.
Orientation shortcut for future sessions:
# See the whole landscape
bat ./memory/INDEX.md
# Or just the summaries
grep "^\- \[" ./memory/INDEX.md
The index script automatically compresses old episodic memories to keep the active folder lean.
How it works:
archive/summaries/episodic/weekly/YYYY-WNN.md listing all archived files for that week with summaries and tagssummaries/episodic/monthly/YYYY-MM.md linking to its 4–5 weekly digestsWhy:
episodic/ stays scannable (no 100-file noise)archive/ or summaries/This is automatic — just run index.py and it handles housekeeping. Do not manually move files into archive/.
rg --files ./memory | sort
This shows the files that exist across all memory types — a fast orientation to what's here.
cat ./memory/INDEX.md
rg "^memory_type: episodic$" ./memory/ --no-ignore
rg "^memory_type: semantic$" ./memory/ --no-ignore
rg "^memory_type: procedural$" ./memory/ --no-ignore
rg "^summary:" ./memory/ --no-ignore
rg "keyword" ./memory/ --no-ignore -i
rg "^summary:.*keyword" ./memory/ --no-ignore -i
rg "^tags:.*keyword" ./memory/ --no-ignore -i
rg "^tags:.*auth.*project-helios|^tags:.*project-helios.*auth" ./memory/ --no-ignore -i
rg "keyword" ./memory/semantic/ --no-ignore -i
rg "keyword" ./memory/procedural/ --no-ignore -i
rg "keyword" ./memory/episodic/ --no-ignore -i
rg "keyword" ./memory/archive/ --no-ignore -i
rg "keyword" ./memory/summaries/ --no-ignore -i
rg "keyword" ./memory/ --no-ignore -i
After finding relevant files, read them using your native file tools. The summary tells you if it's worth reading; reading gives you the actual context.
Use relative paths from ./memory/ root in related: fields. Filenames are unique across the whole memory space, so a simple filename is enough:
related: [semantic/auth_constraints.md, episodic/2026_05_14_auth_bug.md]
Default behavior: check memories when the task feels like it might connect to prior work — e.g. the user references a past decision, says "like we discussed", or you're about to re-research something familiar.
This default can be overridden by the environment. A system prompt may instruct you to always check memories, or only check when explicitly asked — follow those instructions. This skill describes the fallback when no such instruction exists.
When checking:
Use this retrieval pattern:
episodic for "what happened?"semantic for "what do we know now?"procedural for "how do we do this?"No strict rules — use judgment. Good candidates:
Not worth saving:
Do not aggressively reorganize or distill memories by default.
Only do memory cleanup when:
When cleaning up memories:
status: superseded or moving them into an archive/ folder if such a structure already exists or the user asks for itDistill carefully:
semantic memory when you have good evidence they should be long-livedprocedural memory when they are clearly meant to be reusedIf the user asks to "clean up my memories", a good default is:
INDEX.md so the map reflects realityOne-line rule: episodic creates history; semantic and procedural maintain canonical pages.
Create a new file when:
Update an existing file when:
Practical default:
semantic or procedural file already exists, update itsemantic or procedural file when the topic is genuinely new or the existing file has become meaningfully different in scopeThe goal is to avoid both extremes: don't spam new files for every tiny change, but don't flatten meaningful history into one endlessly edited document either.
When in doubt:
episodic if the value is historical contextsemantic if the value is current truthprocedural if the value is repeatable guidanceWhen something evolves across clearly distinct phases, new files tell a useful story:
2025_03_09_supplier_negotiation_initial.md
2025_03_10_supplier_negotiation_counteroffer.md
2025_03_11_supplier_negotiation_final_terms.md
To mark a file as outdated, add status: superseded to its frontmatter — don't delete it.
By default, organize memory by type:
./memory/episodic/ — active events only (files >7 days auto-move to archive/)./memory/semantic/ — durable facts and state./memory/procedural/ — workflows and how-tos./memory/archive/ — auto-managed; do not manually edit./memory/summaries/episodic/weekly/ — auto-generated weekly digests./memory/summaries/episodic/monthly/ — auto-generated monthly rollupsYou may also encounter or be instructed to use a more structured layout such as ./memory/semantic/clients/ or ./memory/procedural/operations/. Follow whatever structure exists; if none exists, use the default type-based layout.
New types: Decision, person, and project memories may live in their respective type folders or in a flat structure — consistency matters more than depth. If you create ./memory/decision/, ./memory/person/, or ./memory/project/, the index script will find and catalog them automatically.
data-ai
Portable SSH profile manager for agents. Run remote commands on saved hosts by friendly name instead of typing user@host -i key every time. Type less crap around your SSH commands.
development
Autonomous execution mode triggered by the word "engage". Use when the user has finished planning and wants the agent to execute autonomously without further questions until the workflow is fully complete. The agent must build, test, verify, and deliver proof of work — never exiting with an incomplete or unverified result. Trigger on: "engage", "go autonomous", "execute the plan", "run it", "make it happen", or any explicit signal to switch from planning mode into fully autonomous build-and-verify mode.
tools
Use this skill when you need to manage project tasks — create, update, complete, prioritize, filter, review, track dependencies, or find unblocked work. Trigger on: 'add a task', 'create task', 'show tasks', 'what's next', 'mark done', 'update task', 'task status', 'task history', 'next task', 'task inbox', 'list tasks', 'init tasks', 'task deps', 'ready tasks', 'blocked tasks', 'search tasks', 'tag-any', 'dependency graph'. Also use proactively when starting a new work session — check `tasks status` and `tasks ready` to orient yourself. This skill covers the project's static, file-based task system (persistent, in-repo history) with typed dependency tracking, ready queue, and priority management — NOT ephemeral runtime task tools.
tools
On-demand skill loading from a local skill registry. Trigger on: "skill store", "load skill", "find a skill", "list skills", "import skill", "skill-store", "browse skills", "search skills", or any request to fetch a skill that is NOT currently loaded in the active context. This skill is NOT for managing the already-loaded skills in your prompt. It is for accessing the much larger skill storage (~100s to 1000s) that you only bring into context when you need them. Think of it as a lazy loader: the skills here stay on disk until you explicitly call for them via CLI.