mm-bridge · v0.3.0 · 2026-05-09 · sha256 901c029533ff6f9f
mm-bridge v0.3.0A
Immutable. This exact content is served forever at /api/v1/blob/901c029533ff6f9f.
--- name: mm-bridge version: 0.3.0 description: Compose 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 the PowerShell instance. Auto-reads passport.md of the target project to inject stack/conventions/constraints. Supports prompt frameworks (CRISPE / XML / PERSONA / HYPOTHESIS) via --framework flag or auto-detect. Writes to Claude/Bridge/next-prompt.md in the Obsidian vault and archives the previous prompt automatically. --- # mm-bridge — Prompt Composer for PowerShell Claude Code Я работаю в **app/web инстансе** Claude Code или в claude.ai. У пользователя есть **другой** Claude Code в PowerShell — там идёт реальная работа. Этот skill пишет файл-мост в Obsidian. Пользователь копипастит из файла в PowerShell-сессию. PowerShell-инстанс **не видел** этот разговор. Каждый промпт — самодостаточен. ## Конфиг Загрузи `mm-config.json` по алгоритму из `<repo>/docs/CONFIG-LOADING.md` (env `MM_REPO_ROOT` → resolve junction → fallback). Поддержка `mm-config.local.json` overlay обязательна. Понадобятся ключи: - `paths.obsidian_bridge` — куда писать `next-prompt.md` - `paths.obsidian_bridge_archive` — куда переносить старые промпты - `default_language` — `ru` по умолчанию ## Процесс ### Шаг 1. Собери контекст задачи Из текущего разговора пойми: - **Что сделать?** — действие в одном предложении - **В каком проекте?** — абсолютный путь - **Какой результат?** — definition of done ### Шаг 2. Авто-подгрузка паспорта проекта Если ты знаешь целевой путь проекта — попробуй прочитать `<project_path>/passport.md`. Из него возьми: - `project` (имя) - Стек (секция 2): язык, фреймворк, главные зависимости - Конвенции (секция 7) - **Секция 8 «Контекст для промптов»** — критично, перенеси в промпт целиком - Точки входа (секция 4) - Команды (секция 5) Если паспорта нет — попроси пользователя дать минимальный контекст (одно сообщение, не больше 3 вопросов): 1. Целевая папка (абсолютный путь)? 2. Какие файлы должен прочитать другой Клод первыми? 3. Что считаем готовым? Если пользователь говорит «ты решай» / «default» — выбираешь сам, отмечаешь в промпте `<assumed: ...>`. ### Шаг 2.5. Выбери prompt framework Шаблоны лежат в `<repo>/templates/prompt-frameworks.md`. Доступны: `none | CRISPE | XML | PERSONA | HYPOTHESIS`. **Если юзер передал `--framework <name>`** — используй его. Точка. **Иначе auto-detect** по эвристикам из текста задачи: | Сигнал | Framework | |---|---| | Содержит «ревью», «посмотри», «оцени», «review», «critique» | **PERSONA** | | Содержит «не работает», «падает», «bug», «ошибка», «error», «debug» | **HYPOTHESIS** | | Длина задачи > 200 символов ИЛИ ≥3 шага в «Что нужно сделать» ИЛИ затрагивает ≥3 файла | **XML** | | Длина < 50 символов И один файл | **none** | | Иначе | **CRISPE** | **Если эвристика не уверена** — спроси одной строкой: `Framework: XML / CRISPE / none? (дефолт XML)`. Запомни выбранный framework — он нужен для шага 4 (формирование промпта) и для frontmatter (`framework: <name>`). Если выбран framework ≠ none — прочти соответствующий блок из `<repo>/templates/prompt-frameworks.md` и используй как шаблон обёртки. ### Шаг 3. Архивируй прошлый промпт Перед перезаписью `<obsidian_bridge>/next-prompt.md`: - Если файл существует — прочитай frontmatter (`created`, `slug`). - Скопируй (Read + Write) в `<obsidian_bridge_archive>/<YYYY-MM-DD-HHMM>-<slug>.md` на основе frontmatter. - Только после успешной записи в архив — перезапиши `next-prompt.md`. - Если slug отсутствует — выведи из первого `# Заголовка`. ### Шаг 4. Запиши новый промпт Файл: `<obsidian_bridge>/next-prompt.md`. Формат: ```markdown --- created: <YYYY-MM-DDTHH:MM> project: <project_name | "general"> project_path: <abs_path> task_type: feature | bugfix | refactor | setup | research | other slug: <kebab-case 3-5 слов> source: mm-bridge passport_used: <true | false> framework: <none | CRISPE | XML | PERSONA | HYPOTHESIS> --- # Задача <одно императивное предложение> # Контекст <2-5 предложений: зачем, что уже есть, что НЕ трогать> <Если паспорт прочитан — вставь блок:> **Стек проекта** (из passport.md): <язык> · <фреймворк> · <DB> · <главные зависимости через "·"> # Файлы для чтения сначала - `<абсолютный путь>` — <зачем> - `<абсолютный путь>` — <зачем> <Обязательно включи: passport.md если есть> # Что нужно сделать 1. <шаг> 2. <шаг> 3. <шаг> # Ограничения <Из секции 8 паспорта точная копия + любые ограничения из чата> - <ограничение> - <ограничение> # Done when - [ ] <критерий, проверяемый> - [ ] <критерий> - [ ] <критерий> # Полезные команды ```bash # Из секции 5 паспорта или из контекста ``` # После выполнения Когда закончишь — выполни `/mm-save-session` чтобы залогировать сессию в Obsidian. ``` ### Шаг 5. Подтверди пользователю Одной строкой (не блоком): ``` Готово: C:\Users\louise\Documents\Obsidian Vault\Claude\Bridge\next-prompt.md (framework: <name>, passport: <yes/no>, архив: <yes/no>). Скопируй и вставь в PowerShell. ``` ## Стиль промпта - **Русский по умолчанию** (`default_language` из конфига). - **Императив**: «Создай», «Обнови», «Проверь» — не «Можно ли...». - **Абсолютные пути Windows** (`C:\...`). - **Никаких отсылок** к «нашему разговору», «как мы обсуждали», «we». - **Конкретное Done when** — проверяемое («бот стартует без ошибок», «тест X проходит»), а не размытое («работает хорошо»). - **1 страница max**. Если задача больше — раздели на несколько мостов или предложи `/gsd-plan-phase` (если в проекте есть GSD). - **Ссылки на конвенции проекта** — если есть `CLAUDE.md` или `passport.md` в проекте, упомяни: «Перед началом прочитай passport.md и секцию 8 — там жёсткие ограничения». ## Когда не писать мост, а возразить - **Расплывчато** («сделай мне бота»): задай 1-2 уточняющих вопроса. - **Многодневный скоуп**: предложи `/gsd-plan-phase` или разбить на серию мостов. - **Тривиально** (1 строка): просто скажи что вставить, без файла-моста. - **В паспорте секция 8 пустая**: предупреди — `Секция 8 паспорта пустая. Промпт без жёстких ограничений → риск что Клод сделает не так. Заполнить сначала?` ## Edge cases - **Несколько проектов в задаче**: только один `project_path` в frontmatter (главный). Остальные упоминай в «Контексте». - **Bridge-папки нет**: создай (Obsidian не падает на отсутствующих папках). - **Архив-папки нет**: создай. - **Текущий промпт пустой/повреждённый**: пропусти архивацию, перезапиши.