letta/navigating-chatgpt-history/SKILL.md
Navigates archived ChatGPT or Claude-style conversation exports and a MemFS reference archive on demand. Use when recalling what a past assistant knew, searching old conversations, rendering specific chats, seeding reference memory from export sidecars, or mining historical context without doing a full import.
npx skillsauth add letta-ai/skills navigating-chatgpt-historyInstall 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.
Use this skill when the goal is referenceable history, not immediate full ingestion.
memories.json or projects.jsonTreat the export as an archive you can navigate later.
reference/chatgpt/index.mdscripts/inspect-export.pyreference/chatgpt/ firstsystem/human.md only when the fact is durable, current, and worth carrying every turnDo not re-digest the entire archive unless the user explicitly wants that.
Keep the external-memory archive under reference/chatgpt/.
Recommended files:
reference/chatgpt/index.md — source exports, schema notes, known paths, retrieval strategyreference/chatgpt/export-YYYY-MM-DD.md — inventory and sidecar summary for one exportreference/chatgpt/chatgpt-memory-summary-YYYY-MM-DD.md — content from memories.jsonreference/chatgpt/projects-YYYY-MM-DD.md — projects sidecar summary when usefulreference/chatgpt/transcripts/NNN-slug.md — curated high-signal conversation summariesreference/chatgpt/notes/ — topic-specific notes mined laterPrefer progressive memory. Keep active memory small.
scripts/inspect-export.pyUse first. It inventories the export and reads sidecars such as memories.json, projects.json, and users.json.
python3 scripts/inspect-export.py <export-path>
python3 scripts/inspect-export.py <export-path> --output /tmp/export-summary.md
scripts/list-conversations.pyUse to browse by title, recency, or message count.
python3 scripts/list-conversations.py <export-path> --limit 25
python3 scripts/list-conversations.py <export-path> --title-contains Letta --sort messages
scripts/search-conversations.pyUse when titles are not enough.
python3 scripts/search-conversations.py <export-path> --query "Recovery Bench"
python3 scripts/search-conversations.py <export-path> --query TFCC --role user --limit 20
scripts/render-conversation.pyUse for one conversation once you know the index.
python3 scripts/render-conversation.py <export-path> --index 212
python3 scripts/render-conversation.py <export-path> --index 212 --compact-nontext --output /tmp/chat-212.md
scripts/render-range.pyUse only for focused batches after search narrows the field.
python3 scripts/render-range.py <export-path> --start-index 210 --end-index 220 --output-dir /tmp/chat-range
Before touching the raw export, check whether the archive already has:
If yes, use that first.
Run inspect-export.py to answer:
memories.json already contain a synthesized memory block?projects.json hold useful background?For large archives, this often answers the question before raw conversation mining is needed.
Prefer this sequence:
list-conversations.py for browsesearch-conversations.py for content lookuprender-conversation.py for deep readrender-range.py only when several adjacent conversations matterDo not render dozens of chats just because you can.
When a conversation matters, summarize it into:
reference/chatgpt/transcripts/ for high-signal conversation summariesreference/chatgpt/notes/ for topic notesOnly then decide whether anything belongs in system/human.md.
Promote to active memory only when the fact is:
Everything else can stay in reference/chatgpt/.
Read references/repository-layout.md when creating or extending the MemFS archive layout.
This skill is designed for newer exports that contain conversations.json with chat_messages, while still handling older shard-based exports with conversations-*.json and mapping graphs.
When in doubt, start with inspect-export.py instead of assuming the schema.
tools
Test any GUI app or change on a Daytona Windows remote desktop sandbox. Use to launch a GUI program, sync a local project, take a screenshot, record a video, or share a clickable live-desktop link with a teammate. Generic — the only dependency is Daytona. For Linux, use remote-desktop-testing-linux.
tools
Test any GUI app or change on a Daytona Linux (Ubuntu xfce4 + noVNC) remote desktop sandbox. Use to launch a GUI program, sync a local project, take a screenshot, record a video, or share a clickable live-desktop link with a teammate. Generic — the only dependency is Daytona. For Windows, use remote-desktop-testing-windows.
testing
Configures Letta agents' own runtime behavior, including model, context window, system prompt, reasoning, conversation overrides, compaction settings, and compaction prompts. Use when an agent or user asks to self-modify, tune summarization/compaction, change identity/system instructions, adjust model settings, or test conversation-scoped overrides.
development
Sets Letta Desktop and Letta Code agent profile images by writing profile.png into an agent MemFS repository. Use when the user asks to add, change, generate, or fix an agent avatar, profile picture, profile image, or Desktop agent photo.