by lucasrosati
Up to 71.5x fewer tokens per session on Claude Code with Obsidian + Graphify. Persistent memory, codebase knowledge graphs, and chat import pipeline. π§π· PT-BR included.
# Add to your Claude Code skills
git clone https://github.com/lucasrosati/claude-code-memory-setupGuides for using ai agents skills like claude-code-memory-setup.
Last scanned: 5/11/2026
{
"issues": [],
"status": "PASSED",
"scannedAt": "2026-05-11T07:43:43.026Z",
"semgrepRan": false,
"npmAuditRan": true,
"pipAuditRan": true
}claude-code-memory-setup is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by lucasrosati. Up to 71.5x fewer tokens per session on Claude Code with Obsidian + Graphify. Persistent memory, codebase knowledge graphs, and chat import pipeline. π§π· PT-BR included. It has 861 GitHub stars.
Yes. claude-code-memory-setup passed SkillsLLM's automated security scan β a dependency vulnerability audit plus prompt-injection heuristics β with no high-severity issues. You can read the full report in the Security Report section on this page.
Clone the repository with "git clone https://github.com/lucasrosati/claude-code-memory-setup" and add it to your Claude Code skills directory (see the Installation section above).
claude-code-memory-setup is primarily written in Python. It is open-source under lucasrosati on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh claude-code-memory-setup against similar tools.
No comments yet. Be the first to share your thoughts!
71.5x fewer tokens per session with Graphify + permanent memory across sessions with Obsidian Zettelkasten.
A complete setup to turn Claude Code into an agent with long-term memory and full codebase awareness β without wasting tokens re-reading files.
π§π· Leia em PortuguΓͺs
When working with Claude Code, two problems silently eat your tokens:
Problem 1 β Amnesia between sessions. Every time you open a new session, you have to re-explain your project: stack, past decisions, current bugs, what's left to do. Claude Code remembers nothing from the previous session.
Problem 2 β Codebase re-reading. Claude Code re-reads all your project files every session to understand the structure. A project with ~40 files burns ~20,000 tokens just for Claude to orient itself β before you even ask a question. If you run 10 sessions a day, that's 200,000 wasted tokens.
Two complementary systems, each solving a different problem:
| Layer | Tool | Problem Solved | Cost |
|---|---|---|---|
| Project memory | Obsidian Zettelkasten | Amnesia between sessions | Free |
| Code map | Graphify | Codebase re-reading | Free (AST mode) |
| Conversation history | Import pipeline | Lost chat insights | Free |
| Continuity | /resume and /save commands |
Picking up where you left off | Free |
Obsidian handles what was decided (declarative memory). Graphify handles how the code is structured (structural map). Together, Claude Code starts every session knowing everything β without re-reading anything.
A single, centralized Obsidian vault acts as Claude Code's "second brain." It stores decisions, context, progress, and knowledge for all your projects. Notes follow the Zettelkasten method: atomic (one idea per note), densely interlinked, with standardized metadata.
Claude Code accesses the vault through CLAUDE.md and custom skills.
~/vault/ # SINGLE vault for all projects
βββ CLAUDE.md # global instructions for Claude Code
βββ permanent/ # consolidated atomic notes
βββ inbox/ # raw capture (ideas, drafts)
βββ fleeting/ # quick temporary notes
βββ templates/ # note templates
βββ logs/ # global session logs
βββ references/ # reference material
βββ my-project/ # MOCs and notes for project X
β βββ architecture/ # architecture, decisions, conventions
β βββ pipeline/ # data flows, APIs
β βββ data/ # schema, data model
β βββ features/ # planned/implemented features
β βββ logs/ # project session logs
βββ another-project/ # MOCs and notes for project Y
β βββ ...
βββ chats/ # imported Claude chats
β βββ code/ # from Claude Code
β βββ web/ # from Claude Web/App
βββ graphify/ # codebase knowledge graphs
βββ my-project/ # graph notes for project X
βββ another-project/ # graph notes for project Y
Why a single vault? Having one vault per project fragments knowledge. With a single vault, a note about "Supabase Auth" links to both project A and B. The graph view reveals cross-project connections you didn't expect.
Prerequisites:
1. Create the vault:
Obsidian β "Create new vault" β choose a name and location.
2. Create the folder structure:
cd ~/vault # adjust to your path
mkdir -p permanent inbox fleeting templates logs references
mkdir -p my-project/{architecture,pipeline,data,features,logs}
3. Create the CLAUDE.md:
This is the file Claude Code reads automatically. Create CLAUDE.md at the vault root:
# Vault β Instructions for Claude Code
## What is this vault
Centralized knowledge base for all projects.
Persistent memory across sessions.
## Project stacks
- Project X: React + Supabase
- Project Y: Python + FastAPI
(adapt to your projects)
## Zettelkasten Rules
### Note creation
- Use wikilinks: [[note-name]] (not markdown links)
- Mandatory YAML frontmatter on every note
- Filenames in kebab-case: `auth-flow.md`, not `Auth Flow.md`
- 1 concept per permanent note (atomicity)
- Minimum 2 wikilinks per note (dense linking)
### Standard frontmatter
---
title: Note Name
tags: [project, topic]
created: YYYY-MM-DD
updated: YYYY-MM-DD
status: active
type: permanent
---
### Never do
- Don't delete notes without asking
- Don't use markdown links for internal notes (use wikilinks)
- Don't create notes without frontmatter
- Don't change folder structure without documenting it
## Session Commands
### /resume
When you receive this command:
1. Read the 3 most recent session logs in logs/
2. Read architecture/decisions.md for the current project
3. Summarize current state and what's left to do
### /save
When you receive this command:
1. Create a session log in logs/YYYY-MM-DD-description.md
2. Record: what was done, decisions made, pending items
3. Add wikilinks to created/modified notes
4. Run git commit + push if in a repository
4. Create a note template:
cat > templates/default-note.md << 'EOF'
---
title: {{title}}
tags: []
created: {{date}}
updated: {{date}}
status: draft
type: permanent
---
# {{title}}
## Context
## Details
## Related links
EOF
5. Recommended Obsidian plugins:
| Plugin | Purpose | Install method |
|---|---|---|
| BRAT | Install beta plugins | Community Plugins β Browse |
| 3D Graph | 3D vault visualization | Via BRAT (v2.4.1) |
| Folders to Graph | Folders as graph nodes | Community Plugins β Browse |
| Calendar | Daily note navigation | Community Plugins β Browse |
Your Claude chats (both Code and Web) contain valuable decisions, insights, and context that get lost in the history. This pipeline exports, processes, and imports those conversations as vault notes β with frontmatter, automatic tags, and wikilinks to existing notes.
~/scripts/
βββ claude_to_obsidian.py # processor (frontmatter, tags, wikilinks)
βββ sync_claude_obsidian.sh # automation (export + process)
~/claude-exports/ # temporary staging area (outside vault)
βββ code/ # Claude Code exports
βββ web/ # Claude Web exports
1. Install the Claude Code extractor:
pip install claude-conversation-extractor
2. Create staging directories:
mkdir -p ~/claude-exports/code ~/claude-exports/web
3. Create the post-processing script (~/scripts/claude_to_obsidian.py):
The script should:
.md file[[wikilinks]] for notes that already exist in the vaultchats/code/ or chats/web/ inside the vaultExample keyword-to-tag mapping:
KEYWORD_TAG_MAP = {
"python": "python",
"react": "react",
"supabase": "supabase",
"deploy": "deploy",
"bug": "debugging",
"refactor": "refactoring",
# add your own
}
4. Create the automation script (~/scripts/sync_claude_obsidian.sh):
#!/bin/bash
EXPORT_DIR="$HOME/claude-exports"
VAULT_DIR="$HOME/vault" # adjust to your path
SCRIPT_DIR="$HOME/scripts"
LOG="$SCRIPT_DIR/sync.log"
echo "[$(date)] Sync started" >> "$LOG"
# Export Claude Code chats
claude-extract --all --output "$EXPORT_DIR/code" 2>> "$LOG"
# Process and send to vault
python3 "$SCRIPT_DIR/claude_to_obsidian.py" \
--export-dir "$EXPORT_DIR" \
--vault-dir "$VAULT_DIR" \
--move 2>> "$LOG"
echo "[$(date)] Sync completed" >> "$LOG"
5. Schedule automatic execution:
chmod +x ~/scripts/sync_claude_obsidian.sh
# Run daily at 10 PM
(crontab -l 2>/dev/null; echo "0 22 * * * $HOME/scripts/sync_claude_obsidian.sh") | crontab -
6. For Claude Web chats:
Install the "Export Claude Chat to Markdown" browser extension for Chrome/Edge. Do periodic bulk exports, save the .md files to ~/claude-exports/web/, and the cron job handles the rest.
7. Add a section to the vault's CLAUDE.md:
## Chat Import Pipeline
### Structure
- `chats/code/` β imported Claude Code conversations
- `chats/web/` β imported Claude Web/App conversations
- All chats get frontmatter with `type: chat` and `chat-import` tag
### Filter in Graph View
- `tag:chat-import` β chats only
- `-path:chats` β hide chats
Graphify transforms your codebase into a queryable knowledge graph. Instead of Claude Code re-reading every file, it queries the graph β which is persistent across sessions and costs a fracti