Mm resume
A cross-platform, file-based persistent memory and prompt bridge for Claude Code, claude.ai, and Antigravity IDE. Synchronizes project passports, handoffs, and session logs in an Obsidian Vault, connecting web planning with local CLI execution. Install via: npx markdown-memory
npx -y skills add mworldorg/markdown-memory --skill mm-resumeAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 23 stars23 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Восстановить контекст в начале сессии или после /clear. Читает passport.md + dashboard + последнюю сессию + git status + (если есть GSD) полный контекст планирования (.planning/ для v1 или .gsd/ для v2 — STATE, ROADMAP, текущий phase CONTEXT/PLAN, HANDOFF.json). Выдаёт компактную сводку «где мы». Use when user says "ну что у нас", "напомни где мы остановились", "вернулся", "возобновляю", "/mm resume", "/mm start", "/mm context", "что у нас по проекту", "где мы" в начале новой сессии Claude Code или после /clear.
SKILL.md
14.6 KB, as published. Nobody here has run it
mm-resume — Context Restore for Claude Code
Решает проблему: после /clear, exit && claude, или после паузы на день — нет контекста. Этот skill за один вызов читает все источники и говорит «где мы, что в работе, что брать следующим».
Это аналог git status, но для проекта в целом — не для рабочей копии, а для головы.
Когда вызывать
- В начале новой Claude Code сессии в проекте — первая команда
- После
/mm save→/clear— восстановить контекст в той же сессии - После недели паузы — догнать что вообще происходило
- Когда юзер пишет «где мы», «что у нас», «напомни» — сразу запускай, не переспрашивай
Конфиг
Загрузи mm-config.json по алгоритму из <repo>/docs/CONFIG-LOADING.md. Поддержка mm-config.local.json overlay обязательна.
Понадобятся:
paths.obsidian_projectspaths.obsidian_sessions(на случай старого формата без папки проекта)
Процесс
Шаг 0. Фоновый автоапдейт mm-системы (неблокирующий)
Выполни в фоновом режиме команду проверки обновлений:
- На macOS/Linux:
python3 $MM_REPO_ROOT/scripts/auto-update.py --background &(или используя путь~/.markdown-memory/scripts/auto-update.pyесли переменная не задана) - На Windows: запусти
pythonсо скриптомauto-update.py --backgroundв фоновом режиме (скрипт сам сделает Popen detached-процесс и мгновенно вернет управление).
Шаг 1. Определи проект (worktree-aware)
То же что в mm-init-project Phase 0:
- Если cwd внутри
.claude/worktrees/...— resolve до main repo через.gitфайл-указатель - Иначе — поднимись до корня (где
.git/,package.json,pyproject.toml, и т.п.) - Имя проекта = из
passport.mdfrontmatter (если есть) ИЛИ basename корневой папки
Если в проекте нет passport.md — скажи: Проект не инициализирован для mm. Запустить /mm new сначала? и остановись.
Шаг 2. Прочитай источники (параллельно если можно)
2a. Паспорт
<project_root>/passport.md— frontmatter, секция 8 (контекст промптов), секция 10 (текущее состояние)
2b. Obsidian-артефакты (Obsidian Knowledge Vault)
- Определи путь к хранилищу
<vault_root>(из секции## Obsidian Knowledge VaultвCLAUDE.md, либо дефолтная локальная папка.vault/, либо глобальная папка проекта<obsidian_projects>/<name>/). - Прочитай
<vault_root>/00-home/текущие приоритеты.md— извлеки текущие цели, WIP и следующие шаги. - Прочитай
<vault_root>/00-home/index.md— для понимания структуры доступных вknowledge/иatlas/заметок. <vault_root>/handoff.md(если есть) — последний snapshot для chat; обязательно вытащи секцию «Точка возврата» (следующий шаг + висящее: неотправленный промпт прошлой сессии, недоделанное, WIP).<vault_root>/sessions/— найди самый свежий .md по mtime; прочти секции «Что сделано», «Открытые вопросы», «Следующие шаги».- Если текущая задача пользователя касается конкретных интеграций, решений или архитектурных вопросов, найди релевантные заметки в
<vault_root>/knowledge/(или вatlas/) и предложи агенту прочитать их.
2c. Git-контекст
git rev-parse --show-toplevel
git branch --show-current
git status --short # сколько uncommitted
git log --oneline -5 # последние коммиты
git stash list 2>/dev/null # есть ли stash'ы
2d. GSD-контекст (dual-detection v1/v2/core)
Сначала определи версию:
<project_root>/.planning/существует:- Если
<project_root>/.planning/config.jsonсуществует → GSD Core - Иначе → GSD v1
- Если
<project_root>/.gsd/существует → GSD v2- Оба → используй
gsd_versionиз passport frontmatter; если нет — спроси. - Ничего нет → пропусти секцию.
Если GSD v1 или GSD Core (.planning/) — прочитай в этом порядке (приоритет ↓):
.planning/STATE.md— главное. Из него: текущий milestone, position (phase/step), последние решения, blockers..planning/HANDOFF.json(если существует) — самый свежий snapshot от/gsd-pause-work. Если его mtime > чем у последней mm-сессии — приоритет HANDOFF..planning/ROADMAP.md— список фаз с[x]/[~]/[ ]. Покажи позицию: фаза X из Y, прогресс milestone'а..planning/phases/<NN-current>/CONTEXT.md(если есть текущая фаза) — preferences и решения этой фазы. Это критично — покажет что мы решали в текущей фазе..planning/phases/<NN-current>/PLAN.md— что планировали. Извлеки список задач, посчитай completed/pending..planning/phases/<NN-current>/SUMMARY.md(если фаза завершена) — итог..planning/threads/(если есть) — активные темы для cross-session.
Если GSD v2 (.gsd/):
.gsd/STATE.md(rendered dashboard от gsd CLI) — главное..gsd/AGENTS.md— preferences для агентов (равноCONTEXT.mdv1)..gsd/gsd.db(SQLite) — опционально, если естьsqlite3в PATH. Используй абсолютный путь от<project_root>:
Парси вывод. Если sqlite3 недоступен — пропусти, сводка будет беднее но не сломается.sqlite3 "<project_root>/.gsd/gsd.db" "SELECT name, status FROM milestones WHERE active=1; SELECT name, status FROM slices WHERE milestone_id=(SELECT id FROM milestones WHERE active=1); SELECT title, status FROM tasks WHERE slice_id=(SELECT id FROM slices WHERE active=1) LIMIT 10;"
Это эквивалент /gsd-progress плюс часть /gsd-resume-work — встроено сюда, не нужно дёргать GSD-команды отдельно.
Не пиши в .planning/* или .gsd/* — только читай (там file-lock'и и охраняющие хуки).
2e. mm-система (smoke check)
Быстрая проверка:
~/.claude/skills/mm-bridgeсуществует и junction живой → ✅- Иначе — намекни запустить
/mm check
Не делай полный /mm-doctor — это лишнее на старте, юзер вызовет если нужно.
Шаг 3. Синтезируй сводку
Не просто вывали данные — синтезируй. Коротко, в одном экране. Веди той же формой, что и возвращение в claude.ai: ориентир по структуре плана (GSD-фаза или чек-лист открытых вопросов — что у проекта есть), затем «Точка возврата», затем один следующий конкретный шаг. Не плоский дамп коммитов.
Формат:
🚀 <project_name> — где мы
Стек: <язык> · <фреймворк> · <DB>
Ветка: <branch> | <N> uncommitted | <K> stash'ей
Последний коммит: <hash> "<subject>" (<X дней назад>)
📍 Сейчас в работе
<1-3 строки из текущие приоритеты.md (раздел WIP/Приоритеты) + если есть текущая GSD-фаза — она>
<Если GSD:>
🎯 GSD <v1|v2|core>: M<N> «<milestone_title>», фаза <X>/<Y> — «<phase_title>»
Статус: <X задач completed, Y pending, Z blocked>
Текущая фаза: <статус из STATE.md>
<Если есть HANDOFF.json свежее последней сессии:>
📌 HANDOFF (от /gsd-pause-work, <date>): <первый параграф what_next>
Решения текущей фазы (из CONTEXT.md): <топ-2 пункта>
Следующее: <next phase title или "execute current" или "verify">
📝 Последняя сессия (<date>)
Тема: <тема из имени файла>
Сделано: <первые 2 пункта>
Решения: <если были — 1 ключевое>
❓ Открытые вопросы (<всего N>)
1. <q1>
2. <q2>
3. <q3>
<если больше — «...ещё (N-3)»>
🐛 Известные баги (если есть)
• <bug1>
📌 Точка возврата (из handoff.md / последней сессии)
Следующий шаг: <один конкретный>
Висит: <неотправленный промпт прошлой сессии / недоделанное / WIP — если есть; иначе пропусти строку>
💡 Что брать следующим
<синтезируй из: GSD next phase ИЛИ первый open question ИЛИ последний "Следующий шаг" из сессии>
Аргумент: <почему именно это>
⚙️ Команды
/mm prompt "..." — собрать промпт для PowerShell-Клода (если ты сейчас в claude.ai)
/gsd-execute-phase N — выполнить текущую GSD-фазу (если применимо)
/mm save — закрыть сессию когда закончишь
/mm next — обновить handoff.md перед новым чатом claude.ai
Шаг 4. После сводки — жди
Не предлагай делать что-то конкретное автоматически. Юзер прочёл, решил, скажет.
Особые режимы
Если включена опция --quick (или юзер пишет «коротко»)
Выдай только:
<name> · <branch> · <N> uncommitted · последняя сессия <date>
Сейчас: <одна строка>
Дальше: <одна строка>
3 строки максимум. Для случая «я просто проверить вспомнить».
Если включена --verbose (или «подробно»)
Дополни:
- Полный список open questions (без обрезки)
- Полное «Сделано» из последней сессии (не первые 2)
- Список последних 3 сессий с темами
- Список фаз GSD с галочками
Edge cases
- Несколько проектов в моно-репо: в Discovery возьми проект ближе к cwd. Если cwd на корне — спроси какой.
- Свежий
/mm new, ещё нет сессий: пропусти секцию «Последняя сессия», в «Что брать следующим» предложи «заполнить секцию 8 паспорта». - GSD без активной фазы (между milestone'ами): «GSD: между фазами, последняя завершена N дней назад. /gsd-new-milestone?»
- Нет git вообще (просто папка с файлами): пропусти git-секцию.
- passport.md очень старый (
updated:> 60 дней назад): добавь предупреждение «Паспорт давно не обновлялся, может быть неточен. /mm new для refresh». - Уже Memory у Anthropic накопилась: не дублируй её. mm-resume — про актуальное (что сейчас, что вчера). Memory — про долгосрочное (как ты любишь работать).
Что НЕ делать
- Не запрашивать данные из чата если их можно прочитать из файлов.
- Не выводить полные тексты файлов — только выжимки.
- Не делать
git pull/git fetchбез явного запроса. - Не запускать сам
/gsd-progressкак отдельную команду — логика встроена сюда. - Не предлагать действие если не уверен что нужно — лучше промолчать чем советовать наугад.
- Не дублируй чек
/mm-doctor— для смок-теста достаточно одной junction-проверки.