Agent Memory Systems
omer-metin/skills-for-antigravity
Memory is the cornerstone of intelligent agents. An agent skill from omer-metin/skills-for-antigravity.
Persistent memory across AI sessions using ChromaDB vector database.
$ npx skills add EliasOulkadi/shokunin --skill memory -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install EliasOulkadi/shokunin memory --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/EliasOulkadi/shokunin.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.pack/skills/memory .claude/skills/memory && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "memory" agent skill from https://github.com/EliasOulkadi/shokunin/tree/master/.pack/skills/memory into .claude/skills/memory/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "memory", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/EliasOulkadi/shokunin/tree/master/.pack/skills/memoryType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add EliasOulkadi/shokunin --skill memory -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install EliasOulkadi/shokunin memory --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/EliasOulkadi/shokunin.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.pack/skills/memory .agents/skills/memory && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "memory" agent skill from https://github.com/EliasOulkadi/shokunin/tree/master/.pack/skills/memory into .agents/skills/memory/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "memory", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add EliasOulkadi/shokunin --skill memory -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install EliasOulkadi/shokunin memory --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/EliasOulkadi/shokunin.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.pack/skills/memory .cursor/skills/memory && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "memory" agent skill from https://github.com/EliasOulkadi/shokunin/tree/master/.pack/skills/memory into .cursor/skills/memory/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "memory", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/EliasOulkadi/shokunin.git --path .pack/skills/memory--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add EliasOulkadi/shokunin --skill memory -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install EliasOulkadi/shokunin memory --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/EliasOulkadi/shokunin.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.pack/skills/memory .gemini/skills/memory && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "memory" agent skill from https://github.com/EliasOulkadi/shokunin/tree/master/.pack/skills/memory into .gemini/skills/memory/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "memory", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install EliasOulkadi/shokunin memoryInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add EliasOulkadi/shokunin --skill memory -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/EliasOulkadi/shokunin.git skills-src && mkdir -p .github/skills && cp -r skills-src/.pack/skills/memory .github/skills/memory && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "memory" agent skill from https://github.com/EliasOulkadi/shokunin/tree/master/.pack/skills/memory into .github/skills/memory/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "memory", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add EliasOulkadi/shokunin --skill memory -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install EliasOulkadi/shokunin memory --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/EliasOulkadi/shokunin.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.pack/skills/memory .opencode/skills/memory && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "memory" agent skill from https://github.com/EliasOulkadi/shokunin/tree/master/.pack/skills/memory into .opencode/skills/memory/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "memory", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
memoryPersistent memory across AI sessions using ChromaDB vector database.
Memory is an agent skill from EliasOulkadi/shokunin. Persistent memory across AI sessions using ChromaDB vector database. Stores and retrieves context from past conversations, decisions, and code. Use when user asks to remember something, search past conversations, recall what was done before, save context for later, or find information from previous sessions. Do NOT use for git history or file-based notes.
Its SKILL.md is about 2.3k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts. Compatibility notes: opencode
It sits in Agent Workflows, covering Vector databases, Agent memory and Git workflow. It works with Chroma and Model Context Protocol. The repository describes itself as: 職人 Shokunin 62 AI agent skills for OpenCode, Claude Code, Cursor, Windsurf. ChromaDB memory, MCP servers, declarative self-updates. Multi-model, open source, zero cost. The licence is MIT.
4 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 4c68e5b. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
ReadBashWriteFrom allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
pippythonFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use pip, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
opencode
From compatibility in the SKILL.md frontmatter.
Memory loads about 2.3k tokens when it runs. Until then it costs about 91 tokens; SKILL.md has 747 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Read, Bash, WriteAutomated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from EliasOulkadi/shokunin at commit 4c68e5b, republished under its MIT licence (© EliasOulkadi). 747 words, ~2,255 tokens.
.claude/skills/memory/SKILL.md (or your agent's skills folder).Persistent memory across sessions using ChromaDB vector search. Every conversation is stored and retrievable.
The memory system uses ChromaDB (local vector database, no server needed) to store conversation context as embeddings. When you start a new session, the agent searches past memory for relevant context.
~/.shokunin/memory/chroma_db/ (ChromaDB persistent files)~/.shokunin/memory/sessions/ (markdown summaries per session)~/.shokunin/memory/mcp-server.pyThe memory MCP server is configured in opencode.json. It starts automatically when OpenCode connects to it.
At the end of each significant task, save context:
store_context with:
text: "Summary of what was done, key decisions, code patterns"
tags: ["project-name", "feature", "language"]
project: "project-name"
session_id: "current-session-id"When starting a new session, search for relevant context:
search_context with:
query: "what we discussed about auth"
project: "current-project"get_session_summary with:
session_id: "session-id"The agent should automatically:
| Error | Cause | Fix |
|---|---|---|
| ChromaDB not found | Not installed | pip install chromadb |
| Collection not found | First run | Creates automatically on first store |
| Slow first query | Downloading ONNX model | First run downloads ~79MB. Subsequent runs are instant. |
| Memory not returning results | No data stored yet | Normal on first use. Start by saving something. |
| Embedding model fails to download | Network blocked or proxy required | Set CHROMADB_EMBEDDING_MODEL env var. Fall back to all-MiniLM-L6-v2 which is smaller (~23MB). |
| Duplicate or stale entries flooding results | Auto-save firing too frequently during rapid iteration | Apply 5-second debounce before storing context. Consolidate entries with memory_consolidate_memories periodically. |
| Collection corrupted after crash | Write interrupted during power loss or force-quit | Restore from latest backup in ~/.shokunin/memory/backups/. Run memory-healthcheck.ps1 to verify integrity. |
| Search returns irrelevant results for short queries | Under-2-word queries have poor vector signal | Use 3+ word queries. Include project name, topic, and a descriptive verb phrase. |
| Session ID collision or reuse | Wrapper failed to generate unique ID, or manual copy-paste | Check ~/.shokunin/current-session.json. Run python chroma-helper.py session list to verify uniqueness. |
/remember [text] → Save an important piece of context
/search [query] → Search past memory
/whatdidwe [topic] → What did we discuss about X before?
/forget [id] → Remove a specific memory entry| Pattern | Problem | Fix |
|---|---|---|
| Storing secrets or tokens in memory entries | Plaintext memory is readable by any process with filesystem access | Never store API keys, passwords, or tokens. Use environment variables or a dedicated secret manager. |
| Saving every single message instead of checkpoints | Floods the vector DB with near-duplicate embeddings, degrading search quality | Save only decisions, file changes, and commands. Debounce rapid successive saves to 5 seconds. |
| Using memory as a key-value store | ChromaDB is optimized for semantic similarity, not exact-match lookups | Use the file system or a config file for deterministic data. Reserve memory for fuzzy, contextual recall. |
| Searching with overly broad queries like "what did we do" | Returns too many low-relevance results, wasting tokens and attention | Narrow the query: project name + topic + timeframe. Example: "auth refactoring decisions May 2026". |
| Not consolidating old sessions | Vector DB grows unbounded, slowing queries and increasing disk usage | Run memory_consolidate_memories weekly. Archive sessions older than 90 days. |
| Assuming memory entries are immutable truth | Entries represent frozen-in-time claims. Code may have changed since then. | Always verify file paths and function names before acting. Use verify_file_path or grep to confirm. |
| Skipping session search at conversation start | Loses all context from prior work, forcing the agent to re-discover already-solved problems | Mandatory step: always run session list and search before responding to any task. |
# List collections
collections = client.list_collections()
for c in collections: print(c.name, c.count())
# Create collection with custom embedding function
from chromadb.utils import embedding_functions
ef = embedding_functions.OpenAIEmbeddingFunction(api_key="...", model_name="text-embedding-3-small")
collection = client.create_collection(name="custom", embedding_function=ef)
# Delete by metadata filter
collection.delete(where={"project": "test-project"})
# Peek at stored data
sample = collection.peek(limit=5)| Model | Dimensions | Speed | Accuracy |
|---|---|---|---|
| all-MiniLM-L6-v2 (default/ONNX) | 384 | Fastest | Good for short text |
| text-embedding-3-small (OpenAI) | 1536 | API-dependent | Excellent |
| text-embedding-3-large (OpenAI) | 3072 | API-dependent | Best (expensive) |
Default ONNX model (all-MiniLM-L6-v2) runs locally, no API key needed. Downloads once (~79MB).
# Batch inserts (100x faster than single inserts)
batch_size = 100
for i in range(0, len(documents), batch_size):
collection.add(
documents=documents[i:i+batch_size],
metadatas=metadatas[i:i+batch_size],
ids=ids[i:i+batch_size]
)
# Limit query results
results = collection.query(query_texts=["query"], n_results=10)
# Get with limit (prevents OOM)
all_data = collection.get(limit=500, include=["documents", "metadatas"])import os
db_path = "~/.shokunin/memory/chroma_db"
size = sum(os.path.getsize(os.path.join(root, f)) for root, _, files in os.walk(db_path) for f in files)
print(f"Database size: {size / 1024 / 1024:.1f} MB")
print(f"Collection count: {collection.count()}")~/.shokunin/scripts/seed-memory.ps1 — Imports session markdown files into ChromaDB for first-time population~/.shokunin/scripts/memory-healthcheck.ps1 — Verifies ChromaDB collection integrity and reports health status~/.shokunin/scripts/read-transcript.py — Parses MCP session transcripts and extracts structured decisions and sectionssession list)© EliasOulkadi, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .pack/skills/memory of EliasOulkadi/shokunin.
Open the folder on GitHubat commit 4c68e5b
Memory next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Memory this skillEliasOulkadi/shokunin | 114 | — | ~2.3k | Automated safety check: Notes | MIT | |
| Agent Memory Systemsomer-metin/skills-for-antigravity | 162 | — | ~731 | Automated safety check: Pass | Apache-2.0 | |
| Memoryharperreed/dotfiles | 334 | — | ~484 | Automated safety check: Pass | None | |
| Ogham Recallogham-mcp/ogham-mcp | 115 | — | ~1k | Automated safety check: Pass | MIT | |
| Save Knowledgeindranilbanerjee/digital-marketing-pro | 859 | 1 repos | ~2.2k | Automated safety check: Pass | MIT | |
| Codebase Managementgiancarloerra/SocratiCode | 3.3k | 1 repos | ~1.8k | Automated safety check: Pass | AGPL-3.0 |
omer-metin/skills-for-antigravity
Memory is the cornerstone of intelligent agents. An agent skill from omer-metin/skills-for-antigravity.
harperreed/dotfiles
Semantic memory and context - store and retrieve information with embeddings for similarity search.
ogham-mcp/ogham-mcp
Smart retrieval from Ogham shared memory. An agent skill from ogham-mcp/ogham-mcp.
indranilbanerjee/digital-marketing-pro
Save a single piece of brand knowledge — a campaign learning, guideline, competitive finding, performance insight, or approved asset — to the persistent memory layer with SHA-256 deduplication…
giancarloerra/SocratiCode
Set up, index, and manage SocratiCode codebase indexing. An agent skill from giancarloerra/SocratiCode.
Goldentrii/AgentRecall-X
Persistent compounding memory for AI agents. An agent skill from Goldentrii/AgentRecall-X.
EliasOulkadi/shokunin
Design CI/CD pipelines for GitHub Actions, GitLab CI, and CircleCI with matrix builds, test sharding, caching, Docker layer caching, OIDC auth, deployment strategies (rolling, blue-green, canary)…
EliasOulkadi/shokunin
Build production-grade components for React, Vue 3, and Svelte 5 with all states (loading, empty, error, success, idle), TypeScript strict, WCAG 2.2 accessibility, server components (RSC), and…
EliasOulkadi/shokunin
PostgreSQL database administration — backup/restore (pgdump, PITR, WAL archiving), health monitoring (connections, bloat, cache hit ratio, dead tuples), connection pooling (PgBouncer), replication…
EliasOulkadi/shokunin
Design database schemas with Prisma/Drizzle, PostgreSQL index strategy (B-tree, GIN, GiST, BRIN, Hash), query optimization (EXPLAIN ANALYZE), migration safety (expand/contract, zero-downtime), and…
EliasOulkadi/shokunin
Optimize Docker images with multi-stage builds, distroless bases, BuildKit cache mounts, multi-arch builds, compose watch, security hardening (non-root, seccomp, capabilities drop), and…
EliasOulkadi/shokunin
Design error handling, structured logging, and observability with OpenTelemetry (traces, metrics, logs), error classification, recovery patterns (retry with jitter, circuit breaker, bulkhead…
Works with
Categories
Persistent memory across AI sessions using ChromaDB vector database. Memory is an agent skill from EliasOulkadi/shokunin. Persistent memory across AI sessions using ChromaDB vector database.
Memory fits situations like: user asks to remember something; search past conversations; recall what was done before; save context for later.
Run `npx skills add EliasOulkadi/shokunin --skill memory -a claude-code`. Or copy the skill folder (.pack/skills/memory in EliasOulkadi/shokunin) into .claude/skills/memory in your project. Claude Code loads it when a task matches its description.
Run `npx skills add EliasOulkadi/shokunin --skill memory -a codex`. Or copy the skill folder (.pack/skills/memory in EliasOulkadi/shokunin) into .agents/skills/memory in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add EliasOulkadi/shokunin --skill memory -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/memory, .gemini/skills/memory, .github/skills/memory and .opencode/skills/memory in your project.
Going by SKILL.md and its folder, Memory needs the command-line tools its instructions call (pip and python). Our summary lists: Python 3. Its frontmatter pre-approves these tools: Read, Bash, Write. Compatibility (from SKILL.md): opencode.
SKILL.md contains no URLs. Its commands use pip, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Memory is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.3k tokens (SKILL.md is roughly 9k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Memory: Agent Memory Systems (omer-metin/skills-for-antigravity, 162 stars), Memory (harperreed/dotfiles, 334 stars), Ogham Recall (ogham-mcp/ogham-mcp, 115 stars) and Save Knowledge (indranilbanerjee/digital-marketing-pro, 859 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
EliasOulkadi (a GitHub user) maintains it in EliasOulkadi/shokunin, which has 114 GitHub stars. The repository holds 49 skills in this directory. The repository was last updated on October 5, 2026.
Source: EliasOulkadi/shokunin on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.