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 не падает на отсутствующих папках).
- **Архив-папки нет**: создай.
- **Текущий промпт пустой/повреждённый**: пропусти архивацию, перезапиши.