$npx -y skills add mworldorg/markdown-memory --skill mm-bridgeCompose a ready-to-copy prompt for the user's OTHER Claude Code instance (running in PowerShell). Use when the user asks to "напиши промпт для powershell", "сгенерируй задание для другого клода", "переброс задачи в основной клод", "/mm-bridge", or any request to hand off work to
| 1 | # mm-bridge — Prompt Composer for PowerShell Claude Code |
| 2 | |
| 3 | Я работаю в **app/web инстансе** Claude Code или в claude.ai. У пользователя есть **другой** Claude Code в PowerShell — там идёт реальная работа. Этот skill пишет файл-мост в Obsidian. Пользователь копипастит из файла в PowerShell-сессию. |
| 4 | |
| 5 | PowerShell-инстанс **не видел** этот разговор. Каждый промпт — самодостаточен. |
| 6 | |
| 7 | ## Конфиг |
| 8 | |
| 9 | Загрузи `mm-config.json` по алгоритму из `<repo>/docs/CONFIG-LOADING.md` (env `MM_REPO_ROOT` → resolve junction → fallback). Поддержка `mm-config.local.json` overlay обязательна. |
| 10 | |
| 11 | Понадобятся ключи: |
| 12 | - `paths.obsidian_bridge` — куда писать `next-prompt.md` |
| 13 | - `paths.obsidian_bridge_archive` — куда переносить старые промпты |
| 14 | - `default_language` — `ru` по умолчанию |
| 15 | |
| 16 | ## Процесс |
| 17 | |
| 18 | ### Шаг 1. Собери контекст задачи |
| 19 | |
| 20 | Из текущего разговора пойми: |
| 21 | - **Что сделать?** — действие в одном предложении |
| 22 | - **В каком проекте?** — абсолютный путь |
| 23 | - **Какой результат?** — definition of done |
| 24 | |
| 25 | ### Шаг 2. Авто-подгрузка паспорта проекта |
| 26 | |
| 27 | Если ты знаешь целевой путь проекта — попробуй прочитать `<project_path>/passport.md`. Из него возьми: |
| 28 | - `project` (имя) |
| 29 | - Стек (секция 2): язык, фреймворк, главные зависимости |
| 30 | - Конвенции (секция 7) |
| 31 | - **Секция 8 «Контекст для промптов»** — критично, перенеси в промпт целиком |
| 32 | - Точки входа (секция 4) |
| 33 | - Команды (секция 5) |
| 34 | |
| 35 | Если паспорта нет — попроси пользователя дать минимальный контекст (одно сообщение, не больше 3 вопросов): |
| 36 | 1. Целевая папка (абсолютный путь)? |
| 37 | 2. Какие файлы должен прочитать другой Клод первыми? |
| 38 | 3. Что считаем готовым? |
| 39 | |
| 40 | Если пользователь говорит «ты решай» / «default» — выбираешь сам, отмечаешь в промпте `<assumed: ...>`. |
| 41 | |
| 42 | ### Шаг 2.5. Выбери prompt framework |
| 43 | |
| 44 | Шаблоны лежат в `<repo>/templates/prompt-frameworks.md`. Доступны: `none | CRISPE | XML | PERSONA | HYPOTHESIS`. |
| 45 | |
| 46 | **Если юзер передал `--framework <name>`** — используй его. Точка. |
| 47 | |
| 48 | **Иначе auto-detect** — применяй эвристики из `<repo>/templates/prompt-frameworks.md` (раздел «Auto-detect»). Этот документ — единственный source-of-truth для эвристик; не дублируй здесь. |
| 49 | |
| 50 | **Если эвристика не уверена** — спроси одной строкой: `Framework: XML / CRISPE / none? (дефолт XML)`. |
| 51 | |
| 52 | Запомни выбранный framework — он нужен для шага 4 (формирование промпта) и для frontmatter (`framework: <name>`). |
| 53 | |
| 54 | Если выбран framework ≠ none — прочти соответствующий блок из `<repo>/templates/prompt-frameworks.md` и используй как шаблон обёртки. |
| 55 | |
| 56 | ### Шаг 3. Архивируй прошлый промпт |
| 57 | |
| 58 | Перед перезаписью `<obsidian_bridge>/next-prompt.md`: |
| 59 | - Если файл существует — прочитай frontmatter (`created`, `slug`). |
| 60 | - Скопируй (Read + Write) в `<obsidian_bridge_archive>/<YYYY-MM-DD-HHMM>-<slug>.md` на основе frontmatter. |
| 61 | - Только после успешной записи в архив — перезапиши `next-prompt.md`. |
| 62 | - Если slug отсутствует — выведи из первого `# Заголовка`. |
| 63 | |
| 64 | ### Шаг 3.9. Scrub секретов перед записью и отдачей (hard-stop, строже handoff) |
| 65 | |
| 66 | > **Вывод этого скилла пользователь руками вставляет в claude.ai** (внешний сервис) — это самая «утечкоёмкая» точка mm. Промпт собирается из паспорта + контекста чата, куда мог просочиться токен. Поэтому политика строже, чем у `mm-handoff`. |
| 67 | |
| 68 | Переиспользуй единый механизм — паттерны бери из канона `<repo>/config/secret-patterns.json` (политику `mm-bridge` и пояснение см. в `<repo>/docs/SECRET-PATTERNS.md`, строка `mm-bridge` в «Политики применения»), не дублируй их здесь. Прогони **весь** собранный текст промпта (frontmatter + тело) через паттерны. TG-summary (Шаг 4.5) выводится из уже очищенного промпта → наследует маски, отдельно сканировать не нужно: |
| 69 | |
| 70 | 1. **Маскируй И Класс A, И Класс B** — типизированными плейсхолдерами с сохранением контекста (в отличие от handoff/save, здесь Класс B тоже маскируется, не warn-only). |
| 71 | 2. **Если найдено что-либо (A или B) — жёсткий стоп.** НЕ записывай `next-prompt.md`, НЕ показывай вывод, НЕ отправляй TG. Выведи список находок (тип + место + первые 12 символов) и спроси одной строкой: `🛑 Найдено N потенциальных секретов, замаскировано. Отдать промпт с масками? (y / отмена)`. |
| 72 | 3. Отдавай (Шаги 4–5) **только после явного `y`** — и только уже замаскированный текст. На «отмена» — ничего не пиши, скажи где посмотреть/почистить источник. |
| 73 | 4. Если находок ноль — продолжай молча (Шаг 4), без лишнего шума. |
| 74 | |
| 75 | ### Шаг 4. Запиши |