# AGENT.md

## Про что этот репозиторий

`dotfiles` - личный репозиторий конфигураций для двух разных зон:

- `nvim/` - конфиг Neovim для основной development-среды.
- `fedora/` - текущий основной профиль рабочего стола Fedora с Niri.
- `bazzite/` - старый профиль Bazzite/Niri, который теперь нужен в основном как
  legacy reference для миграции, сравнения и поддержки старых машин.

`CLAUDE.md` в этом репозитории покрывает в основном Neovim. Для desktop-задач
он не является полной картой проекта, поэтому сначала ориентируйся по
`README.md`, а затем по `fedora/README.md` или `bazzite/README.md`.

## Верхнеуровневая структура

- `README.md` - общий вход в репозиторий и краткая карта текущей структуры.
- `CLAUDE.md` - узкий guide по `nvim/`.
- `nvim/` - Neovim config:
  - `init.lua` - точка входа;
  - `lua/config/` - базовые options, keymaps, autocmds;
  - `lua/plugins/` - конфиги плагинов;
  - `lazy-lock.json` - зафиксированные версии плагинов.
- `fedora/` - основной desktop profile:
  - `README.md` - каноническое описание профиля;
  - `niri/config.kdl` - compositor/session behavior;
  - `waybar/config.jsonc` и `waybar/style.css` - панель и стили;
  - `khal-calendar/` и `mail-counter/` - Rust-модули для Waybar.
- `bazzite/` - legacy profile со структурой, близкой к `fedora/`.

Скрытые каталоги вроде `.git`, `.claude`, `.serena` считай tooling/infrastructure
metadata, а не рабочей частью конфигурации.

## Что читать для контекста

Всегда начинай с `README.md`.

Дальше маршрут такой:

- Если задача про Neovim:
  1. `CLAUDE.md`
  2. `nvim/init.lua`
  3. нужные файлы из `nvim/lua/config/` или `nvim/lua/plugins/`

- Если задача про текущую Fedora-машину, Niri, Waybar, wallpaper, Steam,
  Bottles, FlClash или desktop behavior:
  1. `fedora/README.md`
  2. нужный целевой конфиг, обычно один из:
     - `fedora/niri/config.kdl`
     - `fedora/waybar/config.jsonc`
     - `fedora/waybar/style.css`
     - `fedora/fuzzel/fuzzel.ini`
     - `fedora/xsettingsd/xsettingsd.conf`

- Если задача про старую Bazzite-конфигурацию или миграцию между Bazzite и
  Fedora:
  1. `bazzite/README.md`
  2. затем сравнивай с соответствующим файлом в `fedora/`

- Если задача про кастомные Waybar-модули:
  1. `fedora/khal-calendar/README.md` или `bazzite/khal-calendar/README.md`
  2. `fedora/khal-calendar/Cargo.toml` или `bazzite/khal-calendar/Cargo.toml`
  3. `fedora/mail-counter/README.md` или `bazzite/mail-counter/README.md`
  4. `fedora/mail-counter/Cargo.toml` или `bazzite/mail-counter/Cargo.toml`

## Repo-specific правила

- По умолчанию считай `fedora/` текущим и основным направлением.
- Не переноси автоматически старые предположения из `bazzite/` в `fedora/`.
- Если пользователь говорит просто "на федоре", "в desktop-конфиге" или
  "в niri", сначала смотри `fedora/`.
- Если пользователь просит исторический контекст, сравнение или миграцию,
  используй `bazzite/` как reference, но не как source of truth для новых
  изменений.
- Не считай `CLAUDE.md` полной документацией по всему репозиторию: он уже, чем
  реальная структура проекта.

## Как работать безопасно

- Для desktop-задач не ограничивайся общими рассуждениями: сначала читай
  subtree README, потом точечный конфиг.
- Не дублируй содержимое `fedora/README.md` и `bazzite/README.md` в новых
  документах без необходимости; эти файлы уже являются каноническими описаниями
  профилей.
- Если в рабочем дереве есть несвязанные изменения, не откатывай их и не
  расширяй задачу за пределы нужного subtree без явного запроса.
