$npx -y skills add mworldorg/markdown-memory --skill mm-instructionsГенерирует текст для claude.ai → Project → Instructions из шаблона + персонализирует под текущий проект. Кладёт результат в Obsidian для копипаста. Use when user says "сделай инструкции для проекта", "обнови project instructions", "/mm-instructions", "перегенери инструкции", "что
| 1 | # mm-instructions — claude.ai Project Instructions Generator |
| 2 | |
| 3 | Создаёт ready-to-paste текст для **Project Instructions** в claude.ai. Это «инструкция» для веб-Клода: как работать в паре с PowerShell-Клодом и mm-системой. Раз сгенерировал — копипастишь в Project, оно живёт там вечно. |
| 4 | |
| 5 | ## Конфиг |
| 6 | |
| 7 | Загрузи `mm-config.json` по алгоритму из `<repo>/docs/CONFIG-LOADING.md`. Поддержка `mm-config.local.json` overlay обязательна. `<repo>` берётся из `_repo_root` инжектированного в конфиг loader'ом. |
| 8 | |
| 9 | Понадобятся: |
| 10 | - `paths.obsidian_projects` |
| 11 | - `paths.obsidian_bridge` (универсальная версия идёт сюда) |
| 12 | - `default_language` |
| 13 | - `_repo_root` (для шаблона `templates/project-instructions.md`) |
| 14 | |
| 15 | ## Режимы |
| 16 | |
| 17 | ### A. Для конкретного проекта |
| 18 | |
| 19 | Запуск из папки с `passport.md`. Скилл: |
| 20 | 1. Читает `passport.md` → берёт `project` из frontmatter, тип, стек, `gsd_version` из frontmatter, секцию 8 «Контекст для промптов», секцию 9 (текущий milestone/phase, если GSD). |
| 21 | 2. Берёт шаблон `<skills_repo>/templates/project-instructions.md`. |
| 22 | 3. Подставляет: |
| 23 | - `<PROJECT_NAME>` → имя проекта. |
| 24 | - **GSD-блок** (между `GSD-BLOCK-START`/`GSD-BLOCK-END`): если `gsd_version != none` — заполняет `<GSD_VERSION>` и `<GSD_CURRENT_PHASE>`; иначе **удаляет блок целиком**. |
| 25 | - В конец добавляет секцию **«Особенности этого проекта»** с топ-3 строками из секции 8 паспорта (как напоминание Клоду в каждом промпте). |
| 26 | 4. Сохраняет в `<obsidian_projects>/<project>/project-instructions.md` (перезапись). |
| 27 | |
| 28 | ### B. Универсальная версия |
| 29 | |
| 30 | Запуск без `passport.md` или с флагом «универсальная» / «общая». Скилл: |
| 31 | 1. Берёт шаблон as-is. |
| 32 | 2. `<PROJECT_NAME>` заменяет на `<универсальный — определяется в чате>`; `<USER_NAME>` — на `config.user.name`. |
| 33 | 3. Удаляет секцию «Особенности этого проекта» **и GSD-блок** (универсальной комнате конкретный GSD неизвестен). |
| 34 | 4. Сохраняет в `<obsidian_bridge>/project-instructions-universal.md`. |
| 35 | |
| 36 | Эту версию вставляешь в Project, который ты используешь как **«комната для идей»** — где ещё нет конкретного проекта, или где обсуждаешь общие задачи. |
| 37 | |
| 38 | ## Процесс |
| 39 | |
| 40 | ### Шаг 1. Определи режим |
| 41 | |
| 42 | - В cwd есть `passport.md` → режим A, имя из frontmatter. |
| 43 | - Нет → спроси: `Универсальная версия (1) или укажи путь к passport.md (2)?` |
| 44 | |
| 45 | ### Шаг 2. Прочитай шаблон |
| 46 | |
| 47 | `<skills_repo>/templates/project-instructions.md`. Скопируй в память как строку. |
| 48 | |
| 49 | ### Шаг 3. Подстановки (режим A) |
| 50 | |
| 51 | Замени все вхождения `<PROJECT_NAME>` на реальное имя. |
| 52 | |
| 53 | Замени все вхождения `<USER_NAME>` на `config.user.name` (из mm-config, с учётом local-оверлея). Если поля нет — оставь нейтральное «разработчика». |
| 54 | |
| 55 | **GSD-блок** (между `<!-- GSD-BLOCK-START ... -->` и `<!-- GSD-BLOCK-END -->`): |
| 56 | - Если `gsd_version != none`: замени `<GSD_VERSION>` на `v1 (.planning/)`, `v2 (.gsd/)` или `core (.planning/ config.json)`, `<GSD_CURRENT_PHASE>` — на текущую фазу из секции 9 паспорта (или `см. STATE.md`, если не указана). Сами маркеры-комментарии удали. |
| 57 | - Если `gsd_version == none` (или поля нет): **удали весь блок целиком** вместе с маркерами — у проекта нет GSD, незачем путать веб-Клода. |
| 58 | |
| 59 | В конец файла, перед последней секцией «Доступные команды», вставь: |
| 60 | |
| 61 | ```markdown |
| 62 | # Особенности этого проекта (топ-правила из паспорта) |
| 63 | |
| 64 | > Сверяй каждый сгенерированный промпт с этими правилами. Они жёсткие. |
| 65 | |
| 66 | <до 5 пунктов из секции 8 паспорта, точная копия — без перефразирования> |
| 67 | ``` |
| 68 | |
| 69 | ### Шаг 4. Сохрани |
| 70 | |
| 71 | - A: `<obsidian_projects>/<project>/project-instructions.md` |
| 72 | - B: `<obsidian_bridge>/project-instructions-universal.md` |
| 73 | |
| 74 | Если файл уже был — не архивируй, перезаписывай (это деривативный артефакт, оригинал всегда можно перегенерить). |
| 75 | |
| 76 | ### Шаг 5. Подтверди |
| 77 | |
| 78 | ``` |
| 79 | ✅ Project Instructions готовы |
| 80 | |
| 81 | Режим: <A для проекта <name> | B универсальная> |
| 82 | Файл: <abs_path> |
| 83 | Длина: ~<N> строк |
| 84 | |
| 85 | Что делать: |
| 86 | 1. Открой файл, скопируй ВСЁ содержимое |
| 87 | 2. claude.ai → Project «<name>» → Settings → Instructions |
| 88 | 3. Удали старое, вставь новое, Save |
| 89 | 4. Проверь: New Chat → "Что ты делаешь?" — должен ответить про режимы A/B/C |
| 90 | ``` |
| 91 | |
| 92 | ## Edge cases |
| 93 | |
| 94 | - **Шаблон отсутствует** (`templates/project-instructions.md` нет): скажи `Не найден шаблон: <_repo_root>/templates/project-instructions.md. Возможно, markdown-memory не до конца установлен — проверь git pull в репо (см. $env:MM_REPO_ROOT).` |
| 95 | - **Секция 8 паспорта пустая** (только TODO-маркер): пропусти секцию «Особенности этого проекта», предложи `Заполни сначала секцию 8 в passport.md, потом перегенери.` |
| 96 | - **Имя проекта с пробелами** (плохая практика): пройдёт, но в файле проекта в Obsidian используй slug. |
| 97 | |
| 98 | ## Что НЕ делать |
| 99 | |
| 100 | - Не вставляй в инструкции живые секреты, ENV-значения, токены. |
| 101 | - |