Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsCommunityBlog
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

Back to skills

Mm Save Session

ASecurity

Закрывает текущую Claude Code сессию — сохраняет лог в Obsidian/Claude/Sessions/, обновляет project note, обновляет INDEX.md, перегенерирует handoff.md (для Project Knowledge claude.ai) через /mm-handoff. Если в проекте есть GSD (.planning/ или .gsd/) — также вызывает /gsd-pause-work для technical state в HANDOFF.json. Use when user says "закругляемся", "сохрани", "до завтра", "конец дня", "save session", "/mm-save-session", "закрываемся".

25 stars
0 votes
0 copies
1 views
Added 6/9/2026
ai-agentsgoshellbashdebugginggitapi

Works with

claude codecliapi

Security Analysis

A100/100

Scanned 6/9/2026

Install to Claude Code

$npx -y skills add mworldorg/markdown-memory --skill mm-save-session --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Mm Save Session?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Mm Save Session
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/mworldorg-mm-save-session/badge)](https://www.skillsdirectory.com/skills/mworldorg-mm-save-session)

More formats (shields.io, HTML) on the badges page.

Download Zip
Files
SKILL.md
---

name: mm-save-session

version: 0.6.0

description: Закрывает текущую Claude Code сессию — сохраняет лог в Obsidian/Claude/Sessions/, обновляет project note, обновляет INDEX.md, перегенерирует handoff.md (для Project Knowledge claude.ai) через /mm-handoff. Если в проекте есть GSD (.planning/ или .gsd/) — также вызывает /gsd-pause-work для technical state в HANDOFF.json. Use when user says "закругляемся", "сохрани", "до завтра", "конец дня", "save session", "/mm-save-session", "закрываемся".

---



# mm-save-session — End-of-Session Logger



Оформляет финал Claude Code сессии в три места: Sessions/, Projects/, INDEX.md. Реализует правила из `~/.claude/CLAUDE.md` как skill (раньше выполнялось вручную, теперь гарантированно).



## Конфиг



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



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

- `paths.obsidian_sessions`

- `paths.obsidian_projects`

- `paths.obsidian_index`



## Процесс



### Шаг 1. Собери контекст сессии



**Из текущего разговора:**

- Что обсуждали (тема в 1-2 предложениях)

- Что было сделано (список фактов: что создано, изменено, исправлено)

- Какие решения приняты и почему

- Что осталось / открытые вопросы / следующие шаги



**Из git** (если репо):

```bash

git log --since="6 hours ago" --oneline

git status --short

git diff --stat HEAD~5 2>/dev/null || git diff --stat

```

Список изменённых файлов и коммитов сегодня.



**Из cwd**: имя проекта = имя корневой папки (или из `passport.md` если есть).



### Шаг 1.5. Собери «Точку возврата»



Чтобы следующее возвращение было без раскачки, на **КАЖДОМ** save фиксируй три вещи (команда остаётся одна — никаких отдельных режимов сохранения):



1. **Следующий конкретный шаг** — одно действие, с которого продолжить. Бери из «Открытых вопросов / следующих шагов» этой сессии. Если из разговора он неочевиден — спроси louise одной строкой: `С чего продолжить в следующий раз? (одна строка)`.

2. **Недокоммиченный WIP** — из `git status --short` (уже собран в Шаге 1). Перечисли файлы или `нет, дерево чисто`.

3. **Готовый, но неотправленный промпт** — если в этой сессии был собран промпт для PowerShell-Клода / claude.ai, который так и не выполнили, — запиши его текст целиком. Иначе `нет`.



Это пойдёт в секцию «Точка возврата» файла сессии (Шаг 3) и оттуда — в handoff.md (Шаг 5.6 через `/mm-handoff`).



### Шаг 2. Определи целевые пути



- **Имя проекта**: из `passport.md` (если в cwd или его родителях есть) → frontmatter `project`. Иначе — имя папки cwd.

- **Файл сессии**: `<obsidian_sessions>/<YYYY-MM-DD-HHMM>-<тема-slug>.md`. Время — текущее, тему-slug сгенерируй из 3-5 слов на русском в kebab-case (транслит, нижний регистр).

  - Если файл уже существует — добавь суффикс `-2`, `-3`.



### Шаг 3. Создай файл сессии



```markdown

---

created: <YYYY-MM-DDTHH:MM>

project: <project_name>

project_path: <abs_path>

tags: [claude-session, проект-<project_name>, <topical-tags>]

---



# <Заголовок-человеческий>



**Дата:** <YYYY-MM-DD HH:MM>

**Проект:** [[../Projects/<project_name>|<project_name>]]

**Длительность:** примерно <Xм / Xч>



## Задача сессии

<1-2 предложения что собирались сделать>



## Что сделано

- <факт 1>

- <факт 2>

- <факт 3>



## Ключевые решения

- **<решение>** — <почему>



## Открытые вопросы / следующие шаги

- [ ] <q1>

- [ ] <q2>



## Точка возврата

- **Следующий конкретный шаг:** <одно действие, из Шага 1.5>

- **Если прервались посреди:**

  - Недоделано: <что осталось / «—»>

  - Неотправленный промпт: <текст готового, но не выполненного промпта целиком / «нет»>

  - Недокоммиченный WIP: <файлы из git status / «нет, дерево чисто»>



## Затронутые файлы

- `<rel_path>` — <что>

- `<rel_path>` — <что>



## Git

<если был>

- Ветка: `<branch>`

- Коммитов сегодня: <N>

- `<hash> <subject>`

```



### Шаг 3.5. Scrub секретов ПЕРЕД записью в vault (по SECRET-PATTERNS.md)



> **Заметка сессии оседает в долговременном vault** (и через Шаги 4–6 её выжимка попадает в project note / INDEX / handoff). Токен, случайно вставленный из кода или git-вывода в «Что сделано», утечёт. Поэтому собранный на Шаге 3 текст прогоняется через фильтр **до** записи.



Переиспользуй единый механизм (как `mm-handoff` Шаг 5.9) — не дублируй список паттернов здесь. Прогони весь собранный текст заметки через паттерны из `<repo>/docs/SECRET-PATTERNS.md`:



1. **Класс A** — маскируй **молча**, типизированным плейсхолдером с сохранением контекста (`TELEGRAM_TOKEN=<REDACTED:telegram-token>` и т.п. — см. doc). Не вырезай строку.

2. **Класс B** (широкое `[A-Za-z0-9_\-]{32,}`) — **НЕ маскируй** (задевает git SHA-40 / UUID, которых полно в сессиях). Только добавь одну строку-warn в финальный отчёт.

3. **Покажи preview перед записью**: если что-то замаскировано или есть warn — выведи одну сводную строку (`🔒 Замаскировано N (telegram-token×1, …); ⚠️ K warn`) и сами места (по 1 строке). Если находок нет — короткое `🔒 секретов не найдено`, без шума.

4. В Шагах 3 (запись файла сессии), 4 (project note), 5 (INDEX) используй **уже очищенный** текст — выжимки наследуют scrub, повторно не маскируй.



### Шаг 4. Обнови файлы 00-home/



Путь хранилища: `<vault_root>` (определяй по единому алгоритму: (1) из секции `## Obsidian Knowledge Vault` в `CLAUDE.md` со строкой `Хранилище знаний: <путь>`, если она есть; (2) локальная папка `.vault/` в корне проекта; (3) глобальная папка проекта `<obsidian_projects>/<name>/` из конфига).



1. **Обнови `<vault_root>/00-home/текущие приоритеты.md`**:

   - Перепиши файл, указав текущий milestone/phase и актуальный список задач (WIP и следующие шаги, определенные на Шаге 1.5).



2. **Создай новые заметки в `knowledge/` (если применимо)**:

   - Проанализируй сессию. Если были приняты ключевые решения, исправлены баги или зафиксированы паттерны:

     - **Решения**: Создай файл в `<vault_root>/knowledge/decisions/`. Имя файла должно быть **утверждением**, а не категорией (например, `выбрали Supabase Auth вместо NextAuth потому что...md`). Внутри напиши краткое обоснование (на русском), добавь frontmatter (`tags: [decision]`, `date: <YYYY-MM-DD>`) и wiki-ссылку на сессию: `[[sessions/<session_file_basename>|Лог сессии]]`.

     - **Баги**: Создай файл в `<vault_root>/knowledge/debugging/`. Имя файла должно быть **утверждением** (например, `API возвращает 429 после 500 запросов решено экспоненциальным бэкоффом.md`). Внутри напиши суть проблемы и решение, добавь frontmatter (`tags: [bugfix]`, `date`) и wiki-ссылку на сессию.

     - **Паттерны**: Создай файл в `<vault_root>/knowledge/patterns/`. Имя файла должно быть **утверждением** (например, `все API роуты валидируются через Pydantic.md`). Напиши описание паттерна и ссылку на сессию.

     - Все названия файлов должны оканчиваться на `.md`.



3. **Регенерируй `<vault_root>/00-home/index.md`**:

   - Просканируй папки базы знаний.

   - Сформируй оглавление со ссылками `[[00-home/текущие приоритеты|Текущие приоритеты]]`, `[[atlas/passport|Паспорт проекта]]`, `[[atlas/архитектура проекта|Архитектура]]`, `[[atlas/база данных|База данных]]`, `[[atlas/деплой|Деплой]]`, а также ссылки на все заметки в `knowledge/decisions/`, `knowledge/debugging/`, `knowledge/patterns/`, `knowledge/business/`, `knowledge/integrations/` и последние 5 сессий из `sessions/`.

   - Держи индекс компактным (до 100 строк).



### Шаг 5. Обнови INDEX.md (глобальный)



Путь: `<obsidian_index>` (по дефолту `<obsidian_claude_root>/INDEX.md`).

Добавь строку **наверх** списка сессий:

```

- <YYYY-MM-DD HH:MM> · **<project_name>** · [[Projects/<project_name>/sessions/<file_basename>|<тема>]] (если глобальный) или [[.vault/sessions/<file_basename>|<тема>]] (если локальный)

```

Если INDEX.md нет — создай со скелетом (аналогично старому mm).



### Шаг 5.5. GSD-кооперация (если применимо)



**Цель:** mm и GSD не дублируются. mm пишет нарратив в Obsidian. GSD пишет technical state в `HANDOFF.json`.

Алгоритм:

1. Проверь `<project_root>/.planning/` (GSD v1 / core) или `<project_root>/.gsd/` (v2).

2. Если ни одного — пропусти этот шаг.

3. Если есть — спроси одной строкой: `Также вызвать /gsd-pause-work для technical handoff (HANDOFF.json)? (y/n, дефолт y)`.

4. На `y`:

   - **GSD v1 / Core**: вызови skill `/gsd-pause-work` (в Claude Code/Antigravity; не пиши `.planning/HANDOFF.json` сам — там охраняющий хук).

   - **GSD v2**: предложи юзеру выполнить в терминале `gsd handoff` (skill этот не запускает CLI).

5. На `n` — продолжай без GSD-handoff, упомяни в финальном отчёте: «GSD handoff пропущен по запросу».

6. Если `/gsd-pause-work` вернул ошибку — не падай, упомяни в отчёте: «GSD pause-work failed: <reason>», продолжай.



### Шаг 5.6. Обнови handoff.md (для claude.ai Project Knowledge)



**Цель:** `handoff.md` должен оставаться свежим после каждого закрытия сессии, без ручного `/mm next`.



Алгоритм:

1. Делегируй генерацию в `/mm-handoff` (он — единственный владелец формата handoff; не дублируй его логику здесь). Вызови skill `mm-handoff` — он прочитает только что записанную сессию + последние 3-5 + git + (если есть) GSD и **перезапишет** `<vault_root>/handoff.md`.

2. Это поведение **по умолчанию включено** (пользователь явно его просил) — не спрашивай y/n.

3. Если `<vault_root>/handoff.md` ещё скелет (после `/mm-init-project`) — `/mm-handoff` просто заменит его полноценной версией. Это нормально.

4. Если `/mm-handoff` упал (нет паспорта, vault недоступен) — не падай, упомяни в финальном отчёте: «handoff обновить не удалось: <reason>», сессия всё равно сохранена.



### Шаг 6. Подтверди



Выведи (короткий блок, без воды):



```

✅ Сессия сохранена



Проект: <name>

Директория Vault: <vault_root>

Файл сессии: sessions/<session_file>

Созданы новые знания:

  • <список созданных файлов решений/багов/паттернов с именами-утверждениями или "нет">

00-home/index.md и текущие приоритеты.md обновлены.

handoff.md обновлён: <да | не удалось: <reason>>

GSD handoff: <выполнен | пропущен | n/a>



Открытых вопросов: <K>

Следующий шаг: <дейстие из Точки возврата>

```



## Edge cases



- **Очень короткая сессия** (один вопрос-ответ, ничего не делалось): спроси `Сессия короткая, всё равно сохранять? (y/n)`. Если да — сохрани с пометкой `короткая консультация`.

- **Несколько проектов в одной сессии** (редко): спроси какой считать главным, остальные упомяни в тегах.

- **Нет Obsidian vault по пути из конфига**: останови, скажи `Vault не найден: <path>. Проверь mm-config.json`.

- **Сессия в worktree**: имя проекта бери из основной папки репо, не из имени worktree (типа `crazy-galileo-...`).



## Что НЕ делать



- Не коммить ничего в git (это работа `/push` или ручная).

- Не делай длинные сессии-хроники — формат компактный, факты + решения + вопросы.

- Не тегируй случайно — теги только из реальных тем сессии.

- Не дублируй текст между Sessions/ и Projects/ — в Project note только ссылка + одна строка.

Attribution

mworldorgmworldorg
View sourceMore from mworldorg →
SSkills DirectorySkills Directory

Your tool, in front of Claude Code builders.

3 founder slots · $299/mo · GSC-verified traffic · sponsors can never buy grades.

See placements

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Your tool, in front of Claude Code builders.

3 founder slots · $299/mo · GSC-verified traffic · sponsors can never buy grades.

See placements

Related Skills

Caveman

Ultra-compressed communication mode. Cuts token usage ~75% by speaking like caveman while keeping full technical accuracy. Supports intensity levels: lite, full (default), ultra, wenyan-lite, wenyan-full, wenyan-ultra. Use when user says "caveman mode", "talk like caveman", "use caveman", "less tokens", "be brief", or invokes /caveman. Also auto-triggers when token efficiency is requested.

1023331 votes

Hyperplan

Adversarial multi-agent planning skill. Self-orchestrates 5 hostile category members (unspecified-low, unspecified-high, deep, ultrabrain, artistry) via team-mode for ruthless cross-critique debate, distills only the defensible insights, then MANDATORILY hands the distilled insight bundle to the `plan` agent for executable plan formalization. Use when planning needs maximum rigor and surfacing of weak assumptions, blind spots, and over-engineering. Triggers: 'hyperplan', 'hpp', '/hyperplan', ...

686011 votes

Mcp Code Execution

Routes multi-tool workflows through MCP servers for large datasets and pipelines. Use when Bash tool overhead is limiting throughput on data-heavy tasks.

3351 votes

catchup

Recovers the conversation and failed tool calls of a previous Codex, Claude Code, Antigravity, Cline, Copilot CLI, Cursor, DeepSeek Harness, Kimi, OpenCode, Pi Agent, or ZCode session. Use when the user says "catch up", "what did the last session do", "get me up to speed", "I switched agents", asks to recover/summarize a previous session before continuing, or asks to diagnose or report a catchup failure. Do NOT use for the current conversation, git history, or any non-agent log.

651 votes

math-skill

A comprehensive mathematical reasoning skill for AI assistants — handles arithmetic to research-level problems with rigorous step-by-step reasoning, systematic verification, and transparent uncertainty handling

381 votes
View all in ai-agents →