mm-projects — Cross-Project Overview

SkillDocs & knowledge

Overview of all registered mm-projects on a single screen — status, type, GSD phase, last activity, number of open questions. Use when user says "/mm projects", "/mm list", "покажи все проекты", "что у меня по проектам", "обзор проектов", "какие проекты есть", "список проектов". Reads only Obsi

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the mm-projects — Cross-Project Overview skill

What this skill tells your AI

The instructions your AI receives, as published by mworldorg/markdown-memory in skills/mm-projects/SKILL.md and read by ahel’s review.

Отвечает на вопрос «что у меня вообще есть и где что в работе» — в отличие от /mm-resume, который про один проект. Команда независима от cwd: читает папку проектов в Obsidian, не код.

Только чтение. Ничего не пишет. Git по проектам — только с флагом --git (иначе дорого при многих проектах).

Конфиг

Загрузи mm-config.json по алгоритму из <repo>/docs/CONFIG-LOADING.md. Поддержка mm-config.local.json overlay обязательна.

Понадобятся:

  • paths.obsidian_projects
  • paths.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.md frontmatter: status, type, gsd_version, updated, mm_version.
  • passport.md секция 8: есть ли маркер <!-- TODO louise: заполни секцию 8 --> (не заполнена).
  • passport.md секция 9 (если GSD): Текущий milestone / phase.
  • passport.md секция 10: посчитай чекбоксы - [ ] в «Открытые вопросы».
  • dashboard.md frontmatter updated: + секция «Сейчас» (первая непустая строка).
  • handoff.md frontmatter generated: (для оценки свежести).
  • 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> = человекочитаемо: сегодня / / 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 пусто — пиши .

Signals

GitHub stars
25
Forks
3
Last commit
Aug 2026
Advanced
Catalog kind
skill
Gateway key
mm-projects
Source
github.com/mworldorg/markdown-memory