# CLAUDE.md — свод правил поведения агента

> Публичная версия. Всё, что указывает на конкретную инфраструктуру и людей,
> заменено плейсхолдерами вида <тут айпи>. Логика и формулировки — как в рабочем файле.
> Этот файл лежит в памяти и раздаётся на все машины ссылкой: правка в одном месте
> действует везде.

## ЧИТАЙ ПЕРЕД ТЕМ КАК ТРОГАТЬ (rm / overwrite / правка)
Перед ЛЮБЫМ Edit / Write-поверх / rm по файлу — сначала прочитай его ЦЕЛИКОМ в этой сессии.
- Не прочитал — не трогай. Большой файл читать кусками ДО КОНЦА, не по первым строкам.
- Правило шире инструментов: правки по ssh (`sed -i`, `cat >`, `>`/`>>`, `python3 -c`,
  mv-поверх) и правки на других машинах — то же самое, харнесс их не страхует.
  Перезапись через `>` — только после чтения целиком.
- При сомнении «точно ли это тот файл / точно ли можно» — остановись и спроси.
- Бэкап перед рискованной правкой — в <тут путь для бэкапов> на сервере.
  Файлы `.bak*` рядом с оригиналом в папке памяти ЗАПРЕЩЕНЫ.
- Зачем: перезапись и удаление необратимы; «примерно помню» = потеря данных.

## ФАЙЛЫ: где создавать, как отдавать
- Файлы — это файлы ПРОЕКТА. Перед созданием нового СНАЧАЛА поиск по теме ВНУТРИ
  проекта: есть подходящий → дописать туда, не плодить.
- Нет подходящего проекта → не сваливать файл абы куда: предложить завести проект
  ЛИБО добавить разделом в существующий.
- Только логичная папка проекта. Не в корень домашней директории, не на рабочий стол.
- «Один артефакт на тему»: лучше длинный файл с разделами, чем 10 коротких.
- Временные файлы сессии — только во временную папку сессии, не в проекты.
- Отдаёшь путь человеку — кликабельной ссылкой, чтобы открывалось прямо из терминала.

## Определение устройства
При старте: имя машины + дата. Парк описан таблицей: <тут имя машины> = <тут роль>.
Незнакомое имя машины → стоп, спросить владельца и дописать машину в таблицу.

## Инфраструктура: единый источник
Быстрый доступ: `ssh <тут пользователь>@<тут айпи>` — нужен постоянно.
Адреса локальных машин в этом файле НЕ держим: они зависят от сети и локации,
их место — в файле состояния инфраструктуры.
Там же искать: машины парка и их роли, роутеры, туннели между машинами и сервером,
что где запущено, что стартует при загрузке.
Кажется «инструмента/доступа нет» → СНАЧАЛА прочитай файл инфраструктуры, потом спрашивай.
- Появился новый сервис/доступ/туннель/железка → сразу допиши туда же, не жди «сохранись».

## Источник правды
Оригинал памяти ОДИН: <тут путь к памяти> на сервере. Копии на машинах —
зеркала только для чтения: правку руками синхронизация молча откатит.
- Писать — только на сервере. Читать можно с зеркала.
- Автопамять агента ВЫКЛючена — чтобы не плодить параллельные памяти.
- Сервер недоступен → сказать владельцу, работать по зеркалу только на чтение.
- Правка сложнее одной команды: скрипт писать ЛОКАЛЬНО → копировать на сервер →
  запускать файлом. Вложенные heredoc съедают уровень экранирования: `\n` доезжает
  реальным переносом строки и рвёт исходник.

## Сжатие контекста
При сжатии сохранять: (1) какие файлы правились в этой сессии и что именно изменено;
(2) одобренное, но ещё НЕ применённое; (3) открытые вопросы и хвосты.

## Проекты
Карта «номер → проект» живёт в MEMORY.md, здесь НЕ дублируется — иначе разъедется.
Текстом, без слэша: «го» / «продолжаем» → команда старта; «сохранись» → команда записи.

## Улучшения системы
Увидел, как улучшить систему — скажи ОДНОЙ строкой в конце ответа, сам не внедряй.
Поводы конкретные:
- правило в памяти протухло или противоречит другому;
- одно и то же делаем руками третий раз → хук / скилл / команда;
- правило регулярно нарушается → значит ему место в хуке, а не в тексте;
- файл памяти разросся настолько, что его перестают читать.
Без повода из списка — не предлагать.

## ГРАБЛИ — по темам, НЕ грузятся каждый разговор
Взялся за тему из таблицы — СНАЧАЛА прочитай её файл, до первой команды по теме.
Хук страхует только часть тем; остальные — на агенте.

| Тема | Файл |
|---|---|
| сервер / ssh / nginx / systemd | `grabli_vps.md` |
| shell / ОС / автозапуск | `grabli_windows.md` |
| таблицы | `grabli_sheets.md` |
| синхронизация файлов | `grabli_yadisk.md` |
| боты | `grabli_bots.md` |
| фронтенд / лендинги / браузер | `grabli_web.md` |
| остальное | `grabli_misc.md` |

- Новая повторяемая техническая грабля — добавлять СРАЗУ через движок записи,
  без переспроса.

## Почему это работает
Агент не помнит прошлую сессию. Помнит файл. Поэтому ошибка, записанная сюда один раз,
перестаёт повторяться навсегда — а не до следующего запуска.
