Обзор всех зарегистрированных mm-проектов одним экраном — статус, тип, GSD-фаза, последняя активность, число открытых вопросов. Use when user says "/mm projects", "/mm list", "покажи все проекты", "что у меня по проектам", "обзор проектов", "какие проекты есть", "список проектов". Читает только Obsidian-копии (passport/dashboard/handoff/sessions), git по проектам не трогает без флага --git.
Scanned 6/9/2026
Install to Claude Code
npx -y skills add mworldorg/markdown-memory --skill mm-projects --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Mm Projects?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/mworldorg-mm-projects)More formats (shields.io, HTML) on the badges page.
---
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_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 «Путь к коду» извлекается существующий путь — выполни быстро:
```bash
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 пусто — пиши `—`.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!