Agent Native

letta-filesystem-to-memfs

This skill migrates deprecated Letta Filesystem folder and file uploads to MemFS by extracting documents to markdown, chunking them into stable files, and…

by LettaOfficial publisherNot reviewed

Identity proven by GitHub's verified organisation badge (letta-ai)

Agents
Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode
License
MIT (permissive)
Pin
6785511pinned Oct 9, 2026
Context cost
about 1,200 tokenswhen the skill loads
GitHub stars
148on letta-ai/skills
Scripts
3 scripts

What it does

“Migrates deprecated Letta Filesystem folders/files to MemFS using markdown document corpora, chunking, local lexical search, and QMD semantic search via the memfs-search skill. Use when replacing folders.files.upload, working with PDFs or document QA, or emulating open_file, grep_file, and search_file behavior.”
The author's description, from SKILL.md

Generated summary from the skill's own text

This skill migrates deprecated Letta Filesystem folder and file uploads to MemFS by extracting documents to markdown, chunking them into stable files, and providing lexical and semantic search via CLI tools. It replaces the old folders.files.upload workflow with a git-backed markdown memory structure that supports PDFs, directories, and URLs.

When to use it

  • Replacing deprecated Letta Filesystem folder uploads with MemFS
  • Building document QA systems with PDF or markdown corpora
  • Implementing grep_file and search_file behavior in MemFS
  • Ingesting multiple documents with semantic and keyword search

When not to

  • Storing large unstructured binary files without extraction
  • Migrating from active Filesystem APIs still in production
  • Handling scanned PDFs without OCR preprocessing

Install

These commands install from the publisher's repository and need no account.

skills CLI

npx skills add letta-ai/skills --skill letta-filesystem-to-memfs

Installs from the repository's default branch, which may have changed since the commit we checked.

GitHub CLI 2.90 or later

gh skill install letta-ai/skills letta-filesystem-to-memfs@6785511e7d3913d9ec598435a77ae637cd45fc89

Installs the commit we checked (6785511).

Copy by hand

Download the folder at 6785511 and put it in .claude/skills/letta-filesystem-to-memfs for Claude Code and in .agents/skills/letta-filesystem-to-memfs for Codex, Cursor, Gemini CLI, GitHub Copilot and OpenCode.

Skill folder on GitHub at 6785511

Copy for your agent

A prompt for any coding agent. It installs this skill from GitHub at the pinned commit, copies the files as they are, and runs nothing unless you ask.

Prompt

Install the agent skill "letta-filesystem-to-memfs" by Letta.

Source, pinned to commit 6785511e7d3913d9ec598435a77ae637cd45fc89:
https://github.com/letta-ai/skills/tree/6785511e7d3913d9ec598435a77ae637cd45fc89/letta/letta-filesystem-to-memfs

1. Download that folder at exactly this commit. Do not use the default branch.
2. Copy every file unchanged, keeping the folder structure, into .claude/skills/letta-filesystem-to-memfs/ for Claude Code and .agents/skills/letta-filesystem-to-memfs/ for Codex, Cursor, Gemini CLI, GitHub Copilot and OpenCode. Create the folders if they do not exist.
3. Do not edit the files, and do not run any script in the folder unless I ask you to.
4. When you are done, list the files you copied and where you put them.

Listing and checks: https://www.agentnative.dev/skills/letta/letta-filesystem-to-memfs

SKILL.md at the pin

---
name: letta-filesystem-to-memfs
description: Migrates deprecated Letta Filesystem folders/files to MemFS using markdown document corpora, chunking, local lexical search, and QMD semantic search via the memfs-search skill. Use when replacing folders.files.upload, working with PDFs or document QA, or emulating open_file, grep_file, and search_file behavior.
license: MIT
---

# Letta Filesystem to MemFS

Use this skill when a user wants the old Letta Filesystem behavior: upload documents, chunk them, attach them to an agent, and let the agent search/open them.

MemFS is not the same product. It is git-backed markdown memory. To mimic the old workflow, use the bundled CLI:

1. Extract PDFs/docs to markdown text.
2. Chunk the text into stable markdown files under `documents/<corpus>/<doc>/chunks/`.
3. Write a small pinned index under `system/filesystem/<corpus>.md`.
4. Index only the corpus chunk files in QMD for semantic search.
5. Review the MemFS git diff. Commit only if asked.

## Quick workflow

```bash
# Set this to the skill directory shown in the skill load header.
SKILL_DIR="/path/to/letta-filesystem-to-memfs"

# From any directory. MEMORY_DIR should point at the target agent's memfs repo.
uv run --with pymupdf \
  "$SKILL_DIR/scripts/letta_fs_to_memfs.py" ingest \
  --memory-dir "$MEMORY_DIR" \
  --corpus product-docs \
  --source ./docs/ \
  --source ./guide.pdf \
  --source https://arxiv.org/pdf/2310.08560

cd "$MEMORY_DIR"
git status --short
git diff --stat
```

Search the chunk corpus lexically:

```bash
uv run "$SKILL_DIR/scripts/letta_fs_to_memfs.py" search \
  --memory-dir "$MEMORY_DIR" \
  --corpus product-docs \
  "memory hierarchy" \
  -n 5
```

Semantic search with QMD. The CLI creates a corpus-scoped QMD collection over chunk files only:

```bash
uv run "$SKILL_DIR/scripts/letta_fs_to_memfs.py" qmd setup \
  --memory-dir "$MEMORY_DIR" \
  --corpus product-docs

uv run "$SKILL_DIR/scripts/letta_fs_to_memfs.py" qmd query \
  --memory-dir "$MEMORY_DIR" \
  --corpus product-docs \
  "memory hierarchy" \
  -n 5
```

Use `qmd reindex` after changing corpus files, and `qmd search` / `qmd vsearch` when you specifically want keyword-only or vector-only search.

## Layout

The ingest script writes:

```txt
system/filesystem/<corpus>.md
  Pinned index and operating instructions for the corpus.

documents/<corpus>/manifest.md
  Corpus manifest.

documents/<corpus>/<doc-slug>/manifest.md
  Per-document metadata and chunk table.

documents/<corpus>/<doc-slug>/chunks/chunk-0001.md
  Chunk content with frontmatter metadata.

documents/<corpus>/chunks.jsonl
  Machine-readable chunk export for custom indexing or debugging.
```

## Old API mapping

| Old Filesystem | MemFS mimic |
|---|---|
| `folders.create` | `--corpus <name>` creates `documents/<corpus>/` |
| `folders.files.upload` | `letta_fs_to_memfs.py ingest --source <file-or-directory-or-url>` |
| OCR/chunk/embed job | Extract + chunk locally; `qmd setup` / `qmd reindex` for semantic search |
| `agents.folders.attach` | Enable MemFS, then review and sync repo changes when appropriate |
| `open_file` | Read chunk markdown files by path |
| `grep_file` | `rg` or `letta_fs_to_memfs.py search` |
| `search_file` | `letta_fs_to_memfs.py qmd query` over the corpus chunk collection |

## Heuristics

- Use `system/filesystem/<corpus>.md` for the small always-visible index only.
- Do not pin full documents into `system/`; it will bloat the prompt.
- Keep chunks outside `system/`, usually under `documents/<corpus>/...`.
- Passing a directory to `--source` recursively ingests supported files (`.pdf`, `.md`, `.txt`, `.json`, `.csv`, `.html`, `.xml`).
- Use `--glob` / `--exclude` for messy directories. Defaults exclude `.git`, `node_modules`, `.venv`, and `__pycache__`.
- URL downloads default to `--max-download-mb 100`; set `0` for unlimited.
- Re-ingesting the same document slug replaces that document's old chunk directory, so stale chunks do not survive chunk-size changes.
- Use chunk sizes around 2,000-4,000 characters with 200-500 character overlap.
- Use the CLI's `qmd` subcommands when the user needs semantic search over many chunks.
- Preserve source URLs, checksums, page markers, chunk numbers, and corpus names in the generated files.

## CLI reference

```bash
uv run --with pymupdf "$SKILL_DIR/scripts/letta_fs_to_memfs.py" ingest --help
uv run "$SKILL_DIR/scripts/letta_fs_to_memfs.py" search --help
uv run "$SKILL_DIR/scripts/letta_fs_to_memfs.py" qmd setup --help
uv run "$SKILL_DIR/scripts/letta_fs_to_memfs.py" qmd query --help
```

Compatibility wrappers remain for older examples:

```bash
uv run --with pymupdf "$SKILL_DIR/scripts/ingest_documents.py" --memory-dir "$MEMORY_DIR" --corpus docs --source ./docs
uv run "$SKILL_DIR/scripts/search_corpus.py" --memory-dir "$MEMORY_DIR" --corpus docs --query "refund policy"
```

## PDF notes

The ingest script uses PyMuPDF when it sees a PDF. Run it with `uv run --with pymupdf ...`.

For scanned PDFs or complex tables, use the `tools/extracting-pdf-text` skill first, then ingest the extracted markdown/text file with this skill.

See `references/design.md` for design notes and edge cases.

From letta-ai/skills at 6785511, shown as plain text under its license: MIT (permissive). The license text is in letta/letta-filesystem-to-memfs/LICENSE.

View SKILL.md on GitHub at 6785511

Files

6 files, 38 KB in total. Each file has a sha256 in the pin's manifest; the first 12 characters are shown.

Skill folder on GitHub at 6785511
All 50 skills from Letta

More from Letta

  • acquiring-skills

    Enables the agent to discover and install skills from multiple registries including Hermes Skills Hub, ClawHub, GitHub, and community repositories.

    Agents not labelled yet · about 3.1K tokens · pinned 6 days ago

  • browser-use

    Control a real browser using Chrome DevTools Protocol over WebSocket to navigate pages, interact with UI, fill forms, scrape sites, and capture screenshots or…

    Claude Code, Codex, Cursor +4 · about 3.2K tokens · pinned 6 days ago

  • Context Doctor

    Context Doctor investigates and repairs an agent's context including memory, system prompt, and skills by analyzing observed behavior as evidence.

    Claude Code, Codex, Cursor +3 · about 1K tokens · pinned 6 days ago

  • creating-mods

    This skill creates and edits mod files that extend local Letta instances with tools, slash commands, event handlers, custom model providers, permissions, and…

    Claude Code, Codex, Cursor +4 · about 2.4K tokens · pinned 6 days ago

  • creating-skills

    This skill guides developers in creating modular packages that extend Letta Code agent capabilities with specialized knowledge, workflows, tool integrations…

    Contains scripts

    Claude Code, Codex, Cursor +3 · about 4.5K tokens · pinned 6 days ago

  • curating-memory-palace

    This skill lets the agent maintain a Memory Palace, a structured dashboard view that shows the user what the agent is working on, what it could do next, and…

    Agents not labelled yet · about 3.1K tokens · pinned 6 days ago

All AI and agents skills
  • databricks-unstructured-pdf-generation

    This skill generates synthetic PDF documents from HTML and pairs them with test questions for RAG evaluation datasets on Databricks Unity Catalog.

    by DatabricksOfficial publisher

    Contains scripts

    Claude Code, Codex, Cursor +3 · about 1.6K tokens · pinned 6 days ago

  • twilio-enterprise-knowledge

    This skill adds retrieval-augmented generation (RAG) to AI agents using Twilio Enterprise Knowledge, enabling semantic search across your organization's…

    by TwilioOfficial publisher

    Claude Code, Codex, Cursor +4 · about 3.2K tokens · pinned 6 days ago

  • vectara-agents

    This skill enables developers to build AI agents on the Vectara platform using retrieval-augmented generation (RAG).

    by VectaraOfficial publisher

    Claude Code, Codex, Cursor +3 · about 8K tokens · pinned 6 days ago

  • agent-builder

    Agent Builder orchestrates the creation, modification, testing, and publishing of n8n Agents.

    by n8nOfficial publisher

    Claude Code, Codex, Cursor +3 · about 2.3K tokens · pinned 6 days ago

  • intent-recognition

    Classifies automation requests by determining which primitive owns the top-level control flow (workflow, agent, needs clarification, or out-of-scope) and…

    by n8nOfficial publisher

    Claude Code, Codex, Cursor +4 · about 6.9K tokens · pinned 6 days ago

  • planned-task-runtime

    This skill manages follow-up interactions with a background task execution system, handling task completion synthesis, failure replanning, workflow building…

    by n8nOfficial publisher

    Claude Code, Codex, Cursor +3 · about 2.2K tokens · pinned 6 days ago

Open roles at Letta

4 open roles on the jobs board

The skills listed here are third-party software, collected from public GitHub repositories as a catalog of recent skills and provided as is. Agent Native does not write or control them and is not responsible for any harm, loss or damage caused by installing or using them. Labels and checks describe what we saw at one commit and are not a guarantee. Read a skill's files before you run it. Terms of use