Mm update
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-updateAssembled 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
Самообновление mm-системы из удалённого репозитория. mm раздаётся через git clone + register-skills (не npm), поэтому update = git pull свежего mm из origin/main + повторный register-skills + notice о перезапуске Claude Code. Use when user says "обнови mm", "обнови систему", "/mm update", "update mm", "подтяни свежий mm", "проверь обновления mm".
SKILL.md
9.4 KB, as published. Nobody here has run it
mm-update — Self-Update from Git Remote
Обновляет mm-систему до свежей версии из origin/main. mm установлен как git-клон с junction'ами в ~/.claude/skills/ — поэтому обновление это git pull репозитория + повторный прогон register-skills, а не пакетный менеджер.
Ничего не сливает и не ребейзит автоматически. При любом расхождении или ошибке --ff-only — стоп с инструкцией разрулить вручную.
Ручной интерактивный аналог фонового
scripts/auto-update.py(ff-only, дёргается изmm-resume); git-поток общий — отличие в том, что здесь показывается changelog и спрашивается подтверждение.
Где работать
Корень репозитория mm:
$env:MM_REPO_ROOTесли задан;- иначе текущая рабочая директория (
cwd).
Все git-команды и register-skills выполняй из этого корня.
Процесс
0. Guard: это вообще git-репо?
Проверь, что в корне репо (см. «Где работать») есть .git:
Test-Path (Join-Path $repoRoot ".git")
Если .git нет — mm установлен не как git-репо (например, распакован из tarball). Стоп:
❌ mm установлен не как git-репозиторий — обновлять через git нечем.
Обнови через `npx markdown-memory update` или переустанови mm.
Не продолжай. (По смыслу как auto-update.py: «Not a git repository. Skipping update».)
1. Забрать состояние remote
git fetch origin main
Если git fetch упал (нет сети / нет доступа к origin) — стоп: ⚠️ Не удалось связаться с origin. Проверь сеть и доступ к github.com/mworldorg/markdown-memory. Не продолжай.
2. Сравнить версии
- Локальная версия: поле
versionизconfig/mm-config.json(читай файл напрямую). - Удалённая версия:
распарси JSON, возьмиgit show origin/main:config/mm-config.jsonversion.
Это поле — единый источник версии системы (repo-wide release). Per-skill version: в каждом SKILL.md гранулярны и здесь не сравниваются.
3. Определить расхождение ветки
git rev-list --left-right --count HEAD...origin/main
Вывод — два числа через таб: первое = ahead (коммиты, которые есть локально, но нет в origin/main), второе = behind (коммиты, которые есть в origin/main, но нет локально). Не перепутай порядок.
4. Развилка по (ahead, behind)
| Состояние | Что делать |
|---|---|
behind=0, ahead=0 | ✅ Уже синхронизировано с origin/main (версия X). Обновлять нечего. → выход |
behind=0, ahead>0 | ℹ️ Локаль впереди origin/main на N коммит(ов) — машина разработчика или есть незапушенное. Обновлять нечего. → выход |
behind>0, ahead=0 | Показать локаль X → remote Y + changelog (см. ниже), спросить y/n, при y → git pull --ff-only |
behind>0, ahead>0 | ⚠️ Ветки разошлись (N локальных / M удалённых). Авто-обновление отменено — разрули вручную. → выход, без pull |
Changelog (только для случая behind>0, ahead=0):
git log --oneline HEAD..origin/main
Покажи список как есть. Никакого CHANGELOG.md — changelog это git-лог между HEAD и origin/main.
Формат запроса подтверждения:
Доступно обновление mm: версия X → Y
Новые коммиты (N):
<hash> <subject>
...
Подтянуть (git pull --ff-only)? (y/n)
При n — стоп: Обновление отменено.
5. Pull (только при подтверждённом behind>0, ahead=0)
git pull --ff-only origin main
Если --ff-only упал (обычно из-за локальных незакоммиченных правок или непушенных дивергентных коммитов):
- Стоп:
❌ git pull --ff-only не прошёл. Вероятно есть локальные правки в репо mm. Закоммить/стэшни их и повтори /mm update, либо разрули вручную. - Никогда не делай авто-
mergeилиrebaseчтобы «починить» это. Останавливайся и отдавай решение пользователю.
6. Переджанкшенить скиллы
После успешного pull прогони регистрацию (pull мог добавить/переименовать скиллы):
.\scripts\register-skills.ps1
(На macOS/Linux — python3 scripts/register-skills.py.)
Покажи вывод скрипта.
7. Финал
✅ Обновлено до версии Y.
Перезапусти Claude Code, чтобы подхватить обновлённые скиллы.
Скиллы загружаются на старте сессии — без рестарта новые/изменённые скиллы не активируются.
Ограничения
- Не трогать
config.version. Обновление это потребление релиза, не выпуск. Версию проставляет мейнтейнер при релизе, не этот скилл. - Вендоренные скиллы (
vendor/) не обновляются отдельной логикой.git pullтянет их вместе со всем репо — это нормально. Перевендоринг (обновление до новой upstream-версии ECC и т.п.) — ручная работа мейнтейнера, не часть/mm update. - Никогда не делать авто-
merge/rebase: ни при расхождении веток (ahead>0 && behind>0), ни при падении--ff-only. mm-config.local.jsonи_generated/— gitignored,git pullих не трогает. Отдельной защиты добавлять не нужно.- Только
origin/main. Других веток/ремоутов скилл не рассматривает.
Финальный отчёт (пример)
🔄 mm-update
Repo root: <path> (из MM_REPO_ROOT | cwd)
fetch origin main: ✅
Версия: локаль 0.6.0 → remote 0.7.0
Состояние: behind 4, ahead 0
Новые коммиты:
a1b2c3d feat: ...
...
git pull --ff-only: ✅ (4 коммита подтянуто)
register-skills.ps1: ✅ (N junction'ов)
Перезапусти Claude Code, чтобы подхватить обновлённые скиллы.
Edge cases
- Нет
$env:MM_REPO_ROOTи cwd не репо mm —git fetchне найдёт origin/упадёт; сообщи, что запускать надо из корня репо mm или задатьMM_REPO_ROOT. - Detached HEAD —
HEAD...origin/mainотработает, но pull в detached не имеет смысла; предупреди и не делай pull. - Нет интернета —
git fetchупадёт на шаге 1, дальше не идём (см. шаг 1). - Запуск из worktree — git-команды отрабатывают в контексте worktree; если worktree указывает на тот же origin/main — ок. Иначе предупреди.
Что НЕ делать
- Не делать авто-merge/rebase ни при каких обстоятельствах.
- Не править
config.versionи любые файлы — толькоgit pullиregister-skills. - Не пушить, не коммитить, не стэшить за пользователя.
- Не молчать при ошибке — всегда показывай конкретную причину и команду фикса.
- Не обновлять с других веток/ремоутов кроме
origin/main.