$npx -y skills add mworldorg/markdown-memory --skill mm-setupОнбординг/персонализация mm-системы под конкретного пользователя — спрашивает имя, чем занимается, стек, язык, путь к Obsidian vault, и записывает это в личный gitignored-оверлей config/mm-config.local.json + генерирует персональную копию claude.ai-скилла mm-web-bridge. Use when
| 1 | # mm-setup — Персонализация mm-системы под пользователя |
| 2 | |
| 3 | Делает систему «своей»: имя, домен, стек, пути — без правки committed-файлов (репо общий, расшарен на GitHub). Личное идёт в **gitignored** оверлей и в **генерируемую** персональную копию claude.ai-скилла. |
| 4 | |
| 5 | ## Контракт безопасности (соблюдай дословно) |
| 6 | |
| 7 | **Skill ПИШЕТ только в:** |
| 8 | - `<repo>/config/mm-config.local.json` — создаёт или мёрджит (gitignored, личный оверлей) |
| 9 | - `<repo>/claude-ai-skills/_generated/mm-web-bridge/SKILL.md` — персональная копия для загрузки в claude.ai (gitignored) |
| 10 | |
| 11 | **Skill НИКОГДА не трогает:** |
| 12 | - `config/mm-config.json` (committed — общие дефолты louise; их не перезаписываем) |
| 13 | - `claude-ai-skills/mm-web-bridge/SKILL.md` (committed шаблон — читаем как источник, не правим) |
| 14 | - любые `skills/*/SKILL.md`, `~/.claude/CLAUDE.md` (для глобального — только предложим сниппет) |
| 15 | - git-операции |
| 16 | |
| 17 | ## Конфиг |
| 18 | |
| 19 | Загрузи `mm-config.json` по алгоритму из `<repo>/docs/CONFIG-LOADING.md` (нужен `_repo_root`). Если уже есть `mm-config.local.json` — прочитай его как текущие значения (режим повторной настройки). |
| 20 | |
| 21 | ## Шаг 1. Интервью |
| 22 | |
| 23 | Задай **одним сообщением** (не по одному вопросу), с разумными дефолтами в скобках: |
| 24 | |
| 25 | ``` |
| 26 | Настрою mm-систему под тебя. Ответь (можно коротко): |
| 27 | 1. Имя — как тебя называть? <текущее из config, если есть> |
| 28 | 2. Чем занимаешься / домен? (например: «Telegram-боты», «веб на React», «data-инженерия») |
| 29 | 3. Основной стек? (язык · фреймворк · БД · деплой — например «Python · aiogram 3.x · SQLite · Railway») |
| 30 | 4. Язык общения по умолчанию? (ru / en) <текущий default_language> |
| 31 | 5. Путь к Obsidian vault? <текущий obsidian_vault, или предложи C:\Users\<user>\Documents\Obsidian Vault> |
| 32 | ``` |
| 33 | |
| 34 | Дополнительно (не спрашивай, выведи сам): |
| 35 | - `<user>` для дефолтных путей возьми из `$env:USERPROFILE` / `~`. |
| 36 | - Если на п.5 дают только vault — остальные obsidian-пути (`Claude/`, `Bridge/`, `Sessions/`, `Projects/`, `INDEX.md`) выведи относительно него по той же структуре, что в committed `mm-config.json`. |
| 37 | - Если пользователь говорит «как у тебя в дефолте / пропусти» — оставь committed-значение (не дублируй его в local без нужды). |
| 38 | |
| 39 | ## Шаг 2. Покажи план (preview перед записью) |
| 40 | |
| 41 | ``` |
| 42 | 📋 Запишу в config/mm-config.local.json (личный, gitignored): |
| 43 | user.name = <name> |
| 44 | user.domain = <domain> |
| 45 | user.stack = <stack> |
| 46 | default_language = <lang> |
| 47 | paths.obsidian_* = <выведенные из vault пути> |
| 48 | |
| 49 | 📋 Сгенерирую claude.ai-скилл: |
| 50 | claude-ai-skills/_generated/mm-web-bridge/SKILL.md |
| 51 | (персональная копия — louise/Telegram заменены на <name>/<domain>/<stack>) |
| 52 | |
| 53 | Committed-файлы НЕ трогаю. Продолжить? (y / n / правки) |
| 54 | ``` |
| 55 | |
| 56 | Без `y` — ничего не пишется. |
| 57 | |
| 58 | ## Шаг 3. Запиши mm-config.local.json |
| 59 | |
| 60 | Сформируй/обнови `<repo>/config/mm-config.local.json`. Только изменённые относительно дефолта ключи (deep-merge поверх committed). Минимум: |
| 61 | |
| 62 | ```json |
| 63 | { |
| 64 | "default_language": "<lang>", |
| 65 | "user": { |
| 66 | "name": "<name>", |
| 67 | "domain": "<domain>", |
| 68 | "stack": "<stack>" |
| 69 | }, |
| 70 | "paths": { |
| 71 | "obsidian_vault": "<...>", |
| 72 | "obsidian_claude_root": "<...>\\Claude", |
| 73 | "obsidian_bridge": "<...>\\Claude\\Bridge", |
| 74 | "obsidian_bridge_archive": "<...>\\Claude\\Bridge\\archive", |
| 75 | "obsidian_sessions": "<...>\\Claude\\Sessions", |
| 76 | "obsidian_projects": "<...>\\Claude\\Projects", |
| 77 | "obsidian_index": "<...>\\Claude\\INDEX.md" |
| 78 | } |
| 79 | } |
| 80 | ``` |
| 81 | |
| 82 | Если файл уже есть — мёрджи, не затирай чужие ключи. Пути — в формате текущей ОС (Windows — `\\`). |
| 83 | |
| 84 | ## Шаг 4. Сгенерируй персональный mm-web-bridge |
| 85 | |
| 86 | 1. Прочитай committed-шаблон `<repo>/claude-ai-skills/mm-web-bridge/SKILL.md`. |
| 87 | 2. Сделай **персональную копию**, заменив louise-специфику на данные пользователя: |
| 88 | - имя «louise» → `<name>` (везде); |
| 89 | - строку про стек/домен (абзац «louise работает на русском. Её типичный стек: …») → под `<domain>` и `<stack>` пользователя; |
| 90 | - в **Принципе 1 (веб-проверка)** примеры «Telegram Bot API / aiogram» → под технологии из `<stack>` пользователя (если стек неизвестен/общий — оставь обобщённо «внешние API/библиотеки/фреймворки» без конкретики, но сам принцип сохрани — он универсален); |
| 91 | - язык изложения — под `<lang>` (если en — можно перевести ключевые формулировки; если ru — оставь как есть). |
| 92 | - `description` во frontmatter — тоже под пользователя (имя + домен + что следить за актуальностью именно его стека). |
| 93 | 3. Сохрани в `<repo>/claude-ai-skills/_generated/mm-web-bridge/SKILL.md`. |
| 94 | 4. **Не меняй смысл и структуру** скилла (три принципа, режимы A/B/C, GSD, ко |