---
name: фиксируй
description: Логирует результаты сессии Claude Code в SESSION_LOG.md. Без вопросов, без пауз — записал и показал саммари. Вызывай когда пользователь говорит «фиксируй», «зафиксируй», «сохрани лог», «session log».
---

# Скилл: ФИКСИРУЙ v4.0 — агентный

## Конфигурация

Замени плейсхолдеры перед первым использованием:

| Плейсхолдер | Пример | Описание |
|-------------|--------|----------|
| `{{SESSION_LOG}}` | `~/Documents/Projects/SESSION_LOG.md` | Путь к файлу лога сессий |
| `{{ARCH_CHANGELOG}}` | `~/Documents/Projects/ARCHITECTURE_CHANGELOG.md` | Лог архитектурных изменений (опционально) |
| `{{TASKS_DIR}}` | `~/Documents/Projects/Tasks/` | Папка с файлами задач (опционально) |

---

## Единственный источник правды

**SESSION_LOG:** `{{SESSION_LOG}}`
**ARCH_CHANGELOG:** `{{ARCH_CHANGELOG}}`
**TASKS_DIR:** `{{TASKS_DIR}}`

Всегда используй АБСОЛЮТНЫЕ ПУТИ.

## Триггер

Пользователь говорит «фиксируй», «зафиксируй», «сохрани лог».

## Принцип: Zero Questions

Весь flow выполняется молча. Вопросы пользователю — НИКОГДА. Подсказки — в саммари в конце.

## Принцип: Minimal Context Footprint

Вся тяжёлая работа (чтение/запись файлов) выполняется субагентами. Основной контекст остаётся чистым: только подготовка payload и финальное саммари.

---

## ФАЗА 1: ПОДГОТОВКА PAYLOAD (в основном контексте)

### Шаг 1: Прочитать session json

Read `/tmp/current-claude-session.json` -> извлечь `session_id`, `task_id`.

Это ЕДИНСТВЕННЫЙ Read в основном контексте.

### Шаг 2: Проанализировать текущий разговор

Из контекста текущей беседы (без tool-call'ов к файлам!) сформировать payload:

```
project:          название проекта (из контекста разговора)
twitter:          1-2 предложения — суть сессии
details:          список: что сделано (этапы, решения, инсайты)
files_changed:    список файлов (Создан/Обновлён + путь + описание)
time_start:       HH:MM (начало сессии, из контекста)
time_end:         HH:MM (текущее время)
date:             YYYY-MM-DD
session_id:       из session json
task_id:          из session json (может быть null)
arch_changes:     список архитектурных изменений ИЛИ null
has_incident:     true/false — был ли инцидент
```

**Архитектурные изменения** = новые/обновленные скиллы, API-интеграции, изменения настроек Claude Code, инфраструктурные файлы.

---

## ФАЗА 2: ЗАПУСК АГЕНТОВ (параллельно)

Запускай агентов **в одном сообщении** (одновременно). Каждый агент получает полный payload как текст промпта.

### Agent 1: session-log-writer (ВСЕГДА)

```
Промпт для агента:
---
Запиши сессию в SESSION_LOG.

SESSION_LOG: {{SESSION_LOG}}

Данные сессии:
- Дата: {date}
- Время: {time_start}-{time_end}
- Проект: {project}
- Твиттер: {twitter}
- Детали: {details}
- Файлы: {files_changed}
- Session ID: {session_id}

Инструкции:
1. Read SESSION_LOG (limit: 50) — посмотри оглавление и последнюю запись
2. Определи режим:
   - Новая запись — если нет записи за эту сессию
   - Дополнение — если последняя запись от этой же сессии (по session_id или времени). Дополни деталями, обнови время окончания. НЕ удаляй существующее.
3. Для новой записи:
   - Добавь строку в оглавление (В НАЧАЛО списка после `## Оглавление`):
     `- **YYYY-MM-DD | HH:MM-HH:MM** — Краткое описание`
   - Вставь запись СРАЗУ ПОСЛЕ разделителя `---` после оглавления, ПЕРЕД предыдущей записью
4. Формат:
   ## YYYY-MM-DD | HH:MM-HH:MM — Краткое описание
   **Твиттер:** ...
   **Детали:**
   - ...
   **Файлы:**
   - **Создан:** `путь` — описание
   - **Обновлен:** `путь` — что изменено
   ---
5. Используй Edit, не Write. АБСОЛЮТНЫЕ ПУТИ.
6. Ответь одной строкой: "SESSION_LOG: новая запись YYYY-MM-DD | HH:MM-HH:MM — Суть" или "SESSION_LOG: дополнена запись YYYY-MM-DD"
---
```

### Agent 2: task-creator (опционально, если настроен TASKS_DIR)

Основной сценарий — **создание новой задачи** (task_id обычно null).

```
Промпт для агента:
---
Создай задачу в таск-трекере и привяжи к ней сессию.

TASKS_DIR: {{TASKS_DIR}}
task_id: {task_id}
session_id: {session_id}
project: {project}
twitter: {twitter}
date: {date}

ПРАВИЛА РАБОТЫ С ТАСК-ТРЕКЕРОМ:
- Задачи = Markdown-файлы в TASKS_DIR, по одному на проект
- Структура: YAML frontmatter с полем `tracker` (JSON) -> `columns[].cards[]`
- ID карточек — числовые (int), глобально уникальные среди ВСЕХ проектов
- Предпочитать Edit вместо Write
- При работе с JSON в frontmatter — валидировать что JSON парсится перед записью

ОСНОВНОЙ СЦЕНАРИЙ (task_id == null — 90% случаев):
1. Определи, к какому проекту относится сессия по названию: {project}
   Если не уверен — Glob *.md в TASKS_DIR и найди подходящий
2. Read файл трекера
3. Распарси JSON из поля `tracker` в YAML frontmatter
4. Определи максимальный ID среди ВСЕХ карточек во ВСЕХ колонках
5. Создай новую карточку с ID = max+1 в колонке "Сделано" (или последней колонке):
   {"id": NEW_ID, "title": "{twitter}", "sessions": [{"id": "{session_id}", "title": "{twitter}", "linked_at": "{ISO}"}], "logs": [{"text": "{twitter}", "at": "{ISO}"}]}
6. Сохрани через Edit — заменяй ВЕСЬ блок tracker JSON
7. Ответь: "Создана задача #{NEW_ID} в {project}"

РЕДКИЙ СЦЕНАРИЙ (task_id НЕ null):
1. Grep `"id":{task_id}` в TASKS_DIR — найти файл
2. Найди карточку, добавь в sessions[] и logs[]
3. Ответь: "Задача #{task_id}: сессия привязана"

При ошибках — ответь: "Задача: ошибка — {описание}"
---
```

### Agent 3: arch-changelog-writer (ТОЛЬКО если arch_changes не null)

```
Промпт для агента:
---
Обнови ARCHITECTURE_CHANGELOG.

ARCH_CHANGELOG: {{ARCH_CHANGELOG}}

Дата: {date}
Изменения: {arch_changes}

Инструкции:
1. Read ARCHITECTURE_CHANGELOG (limit: 30)
2. Если секция за {date} уже есть — дополни её
3. Если нет — добавь новую секцию в начало (после заголовка файла)
4. Группируй по категориям: ### Skills / ### Data & Integrations / ### Infrastructure
5. Используй Edit, не Write. АБСОЛЮТНЫЕ ПУТИ.
6. Ответь: "ARCH_CHANGELOG: обновлён ({date})"
---
```

**НЕ запускай Agent 3 если arch_changes == null.**

---

## ФАЗА 3: САММАРИ

Дождись завершения всех агентов. Собери их ответы (каждый — одна строка).

Выведи компактный блок:

```
## ЗАФИКСИРОВАНО: "{twitter}"
---
{ответ Agent 1 — session-log}
{ответ Agent 2 — task-creator, если запускался}
{ответ Agent 3 — arch-changelog, если запускался}
```

---

## Важные правила

1. **АБСОЛЮТНЫЕ ПУТИ** — всегда, и в основном контексте, и в промптах агентов
2. **Edit вместо Write** — для точечных изменений
3. **Новые записи сверху** — сортировка от новых к старым
4. **Детальность** — лучше больше деталей. Этот лог = память между сессиями
5. **Файлы** — всегда указывай полные пути
6. **Без AskUserQuestion** — никогда не задавай вопросов в этом скилле
7. **Агенты параллельно** — запускай все Agent tool-call'ы в ОДНОМ сообщении
8. **Промпт агента = полная инструкция** — агент не видит основной контекст, передавай ВСЁ что нужно
