name: mm-projects version: 0.1.0 description: Обзор всех зарегистрированных mm-проектов одним экраном — статус, тип, GSD-фаза, последняя активность, число открытых вопросов. Use when user says "/mm projects", "/mm list", "покажи все проекты", "что у меня по проектам", "обзор проектов", "какие проекты есть", "список проектов". Читает только Obsidian-копии (passport/dashboard/handoff/sessions), git по проектам не трогает без флага --git.
mm-projects — Cross-Project Overview
Отвечает на вопрос «что у меня вообще есть и где что в работе» — в отличие от /mm-resume, который про один проект. Команда независима от cwd: читает папку проектов в Obsidian, не код.
Только чтение. Ничего не пишет. Git по проектам — только с флагом --git (иначе дорого при многих проектах).
Конфиг
Загрузи mm-config.json по алгоритму из <repo>/docs/CONFIG-LOADING.md. Поддержка mm-config.local.json overlay обязательна.
Понадобятся:
paths.obsidian_projectspaths.obsidian_sessions(для legacy-проектов без папки)
Процесс
Шаг 1. Собери список проектов
В <obsidian_projects>/:
- Папки-проекты (новый формат от
/mm-init-project): каждая подпапка = проект. - Legacy плоские файлы
<name>.mdв корне<obsidian_projects>/(старый формат) — тоже проект.
Если папка проектов не существует → Папка проектов не найдена: <path>. Запусти /mm-init-project хотя бы в одном проекте. и стоп.
Если проектов 0 → Зарегистрированных проектов пока нет. /mm new в любом проекте создаст первый.
Шаг 2. По каждому проекту прочитай дёшево (не углубляясь)
Папка-проект <obsidian_projects>/<name>/:
passport.mdfrontmatter:status,type,gsd_version,updated,mm_version.passport.mdсекция 8: есть ли маркер<!-- TODO louise: заполни секцию 8 -->(не заполнена).passport.mdсекция 9 (если GSD):Текущий milestone / phase.passport.mdсекция 10: посчитай чекбоксы- [ ]в «Открытые вопросы».dashboard.mdfrontmatterupdated:+ секция «Сейчас» (первая непустая строка).handoff.mdfrontmattergenerated:(для оценки свежести).sessions/— дата самого свежего файла (по имениYYYY-MM-DD...или mtime).
Legacy плоский <name>.md: вытащи что есть (секция «Текущее состояние», последняя сессия). Помечай в выводе как (legacy).
Last activity = максимум из: dashboard.updated, дата свежей сессии, handoff.generated, passport.updated.
Шаг 3. (Опционально) git — только если флаг --git
Если юзер передал --git: для каждого проекта, где из passport.md секции 1 «Путь к коду» извлекается существующий путь — выполни быстро:
git -C "<code_path>" branch --show-current
git -C "<code_path>" status --short # посчитать строки = uncommitted
Без --git — пропусти, в выводе колонку git не показывай.
Шаг 4. Вывод (одним экраном, отсортировано по last activity ↓)
📂 mm-проекты (<N>)
<name> <type> <status> <gsd> <activity> Q:<n>
└ <одна строка из dashboard «Сейчас» или «—»>
...
Где:
<gsd>=—если none, иначеv1·<phase>/v2·<phase>/core·<phase>(фаза из секции 9, кратко).<activity>= человекочитаемо:сегодня/2д/3нед/2мес.Q:<n>= число открытых вопросов.- С флагом
--gitдобавь хвост· <branch> (<k> wip).
После таблицы — короткие сигналы (только непустые):
⚠️ Залежались (>30 дней без активности): <names>
⚠️ Паспорт без секции 8: <names>
⚠️ GSD есть, но в CLAUDE.md нет директивы: запусти /mm check в <names> ← если знаешь (см. ниже)
📌 Паспорт старше config.version (нужен /mm new update): <names>
Примечание: «GSD без директивы» точно проверяет /mm-doctor; здесь упоминай только если это дёшево определить (флага в Obsidian-копии нет — обычно просто не пиши эту строку).
Шаг 5. Подсказка по навигации
Одной строкой в конце:
Подробнее по проекту: /mm projects <name> (= /mm-resume для него) · обзор с git: /mm projects --git
Режимы / аргументы
/mm projects— таблица всех./mm projects --git— + ветка и число несохранённых по каждому (медленнее)./mm projects --active— толькоstatus: active./mm projects <name>— не таблица, а deep-dive: запусти логику/mm-resumeдля этого проекта (его путь к коду из passport секции 1; если кода нет на диске — выведи сводку из Obsidian-артефактов).
Edge cases
- Папка проекта без
passport.md(мусор / недоинициализирован): покажи строкой<name> — ⚠️ нет passport.md (недоинициализирован, /mm new). - Очень много проектов (>30): покажи топ-20 по активности + строку
…ещё N (см. --all). С--all— все. - Рассинхрон дат (dashboard свежее passport): бери максимум, не падай.
- Legacy и folder-формат для одного имени одновременно: предпочитай folder, отметь дубль.
- Vault недоступен: останови, скажи путь из конфига.
Что НЕ делать
- Не запускать git по всем проектам без флага
--git— это дорого и шумит. - Не писать ничего (это read-only обзор).
- Не углубляться в каждый проект — для этого
/mm projects <name>или/mm-resume. - Не выдумывать «Сейчас», если в dashboard пусто — пиши
—.