$npx -y skills add mworldorg/markdown-memory --skill mm-vaultСоздаёт приватный vault-репозиторий памяти проекта в Obsidian и пушит его на GitHub для синхронизации с claude.ai Knowledge. Use when user says "создай vault", "синхронизация памяти", "memory sync", "/mm vault", "/mm-vault".
| 1 | # mm-vault — Memory Vault Git Sync Initializer |
| 2 | |
| 3 | Инициализирует и настраивает приватный git-репозиторий для папки памяти проекта Obsidian Vault. Это позволяет синхронизировать долгосрочную память с claude.ai Project Knowledge/Files через интеграцию с GitHub, исключая ручной копипаст. |
| 4 | |
| 5 | ## Конфиг |
| 6 | |
| 7 | Загрузи `mm-config.json` по алгоритму из `<repo>/docs/CONFIG-LOADING.md`. Поддержка `mm-config.local.json` overlay обязательна. |
| 8 | |
| 9 | Понадобятся: |
| 10 | - `paths.obsidian_projects` |
| 11 | - `paths.obsidian_vault` |
| 12 | |
| 13 | ## Процесс |
| 14 | |
| 15 | ### Шаг 1. Определи проект и папку памяти (Vault Root) |
| 16 | |
| 17 | 1. Определи **проект** по `passport.md` в текущей `cwd` или её родительских директориях. |
| 18 | - Извлеки имя проекта из YAML frontmatter `project:` (или из поля "Имя" таблицы Идентификация). |
| 19 | - Если `passport.md` не найден, выведи предупреждение и спроси имя проекта или предложи запустить `/mm new` сначала. |
| 20 | 2. Определи **slug** проекта (в нижнем регистре, с заменой пробелов на дефисы). Для `markdown-memory` slug равен `markdown-memory`. |
| 21 | 3. Определи путь базы знаний `<vault_root>` по единому алгоритму резолва: |
| 22 | - (1) из секции `## Obsidian Knowledge Vault` в `CLAUDE.md` со строкой `Хранилище знаний: <путь>`, если она есть; |
| 23 | - (2) локальная папка `.vault/` в корне проекта; |
| 24 | - (3) глобальная папка проекта `<obsidian_projects>/<slug>/` из конфига. |
| 25 | 4. Выведи пользователю подтвержденный путь папки памяти. |
| 26 | |
| 27 | ### Шаг 2. Покажи состав папки и прогони Secret-Scan |
| 28 | |
| 29 | 1. Сделай рекурсивный обход папки `<vault_root>` и покажи дерево файлов, которые попадут в репозиторий. |
| 30 | 2. Прогони все файлы папки через паттерны из канона `<repo>/config/secret-patterns.json` (пояснение — `<repo>/docs/SECRET-PATTERNS.md`). |
| 31 | - **Класс A (Высокоточные секреты):** |
| 32 | - Если найден хотя бы один реальный секрет, **останови выполнение (hard-stop)**. |
| 33 | - Покажи пользователю найденную строку и файл. |
| 34 | - **Жди явного исправления/подтверждения** перед созданием репозитория. Не продолжай автоматически. Блокирует только реальный секрет (когда человек сам убирает реальный секрет). |
| 35 | - **Класс B (Широкие совпадения / предупреждения):** |
| 36 | - Выведи предупреждения в формате: `⚠️ возможный секрет/длинная строка в <файл>, строка N: <первые 12 симв.>… — проверь вручную (не замаскировано).` |
| 37 | - **Важно:** Класс B служит только для предупреждения пользователя. **НИКОГДА** не редактируй содержимое файлов памяти проекта ради сканера. Скилл никогда не переписывает текст заметок. |
| 38 | 3. **Жди подтверждения (y/n)** от пользователя для создания репозитория и первого пуша. |
| 39 | |
| 40 | ### Шаг 3. Создай или обнови .gitignore |
| 41 | |
| 42 | В папке `<vault_root>` создай или обнови файл `.gitignore` со следующим содержимым: |
| 43 | ```gitignore |
| 44 | .obsidian/ |
| 45 | .trash/ |
| 46 | Thumbs.db |
| 47 | .DS_Store |
| 48 | *.tmp |
| 49 | *.log |
| 50 | ``` |
| 51 | |
| 52 | ### Шаг 4. Инициализация репозитория (Идемпотентно) |
| 53 | |
| 54 | 1. Проверь, инициализирован ли уже Git в `<vault_root>` (наличие папки `.git`). |
| 55 | 2. Если Git **не инициализирован**: |
| 56 | - Выполни `git init` в `<vault_root>`. |
| 57 | - Настрой ветку по умолчанию (например, `git checkout -b main` или `git branch -M main`). |
| 58 | 3. Добавь файлы в индекс и сделай коммит: |
| 59 | - `git add -A` |
| 60 | - `git commit -m "init: <slug> vault (passport, handoff, dashboard, sessions)"` |
| 61 | |
| 62 | ### Шаг 5. Создание приватного репозитория на GitHub |
| 63 | |
| 64 | 1. Проверь, настроен ли уже remote `origin` (`git remote -v`). |
| 65 | 2. Если remote `origin` **уже настроен**: |
| 66 | - Выведи: `GitHub remote origin уже настроен: <remote_url>` |
| 67 | - Выполни пуш: `git push -u origin main` |
| 68 | 3. Если remote `origin` **не настроен**: |
| 69 | - Создай приватный репозиторий на GitHub под владельцем (по умолчанию `mworldorg` или по умолчанию из gh CLI): |
| 70 | `gh repo create mworldorg/<slug>-vault --private --description "Memory vault for <slug> project" --source . --push` |
| 71 | - Если команда завершилась успешно, переходи к Шагу 6. |
| 72 | - Если произошел сбой создания через CLI, предложи пользователю создать репозиторий вручную, добавить remote и сделать пуш. |
| 73 | |
| 74 | ### Шаг 6. Инструкция по ручному подключению |
| 75 | |
| 76 | Напечатай URL созданного репозитория и выведи подробную инструкцию по ручному подключению памяти в claude.ai: |
| 77 | |
| 78 | ``` |
| 79 | ✅ Репозиторий памяти успешно синхронизирован! |
| 80 | URL: https://github.com/mworldorg/<slug>-vault |
| 81 | |
| 82 | Теперь подключи его к claude.ai: |
| 83 | 1. Открой нужный Project в claude.ai |
| 84 | 2. Перейди в раздел "Project Knowledge" (или "Files") |
| 85 | 3. Нажми кнопку "+" -> выбери "GitHub" |
| 86 | 4. Выбери репозиторий: mworldorg/<slug>-vault |
| 87 | 5. Отметь файлы для синхронизации: |
| 88 | • passport.md |
| 89 | • handoff.md |
| 90 | • dashboard.md |
| 91 | • sessions/ (все файлы сессий) |
| 92 | 6. Сними галочку со скачивания .gitignore (если применимо) |
| 93 | 7. Нажми "Add to Project" |
| 94 | 8. Каждый раз после вызова `/mm save` новые изменения будут запушены в репо автоматически. В claude.ai останется лишь нажать кнопку "Sync now" в панели Files/Pr |