4.0 KiB
AGENTS.md
Инструкции для агентов (и IDE-ассистентов) по работе с этим репозиторием.
Стек
- SvelteKit (
web/) — основное приложение, Svelte 5 (runes). - Менеджер пакетов: pnpm. Запускать команды из
web/, либо через обёртки в корне:pnpm build,pnpm dev(этоpnpm --dir web ...). Не использовать npm. - Сборка:
pnpm --dir web build, проверка типов:pnpm --dir web exec svelte-check --tsconfig ./tsconfig.json, тесты:pnpm --dir web test(Vitest), e2e:pnpm --dir web test:e2e(Playwright,web/e2e/, свой webServer наpnpm build+scripts/serve-static.mjs, порт 4173). - Форматирование:
pnpm formatв корне (оба прогона) илиpnpm --dir web format(только код web/). Проверка:pnpm check:docs(docs) +pnpm --dir web exec prettier --check .(код). - Линтинг:
pnpm --dir web lint(ESLint). Полный прогон дизайн-проверок:pnpm --dir web lint:all(ESLint + stylelint + токен-аудит). Каждый шаг выполняется, даже если предыдущий упал. Текущие «ожидаемые долги» (hardcoded размеры в kit до C19, не-Prefix токены вapp_v1.css) — техдолг: чинить только по заведённым tasks, не игнорировать правилом.
Правила кода
Синтаксические ограничения описывать не нужно — они проверяются линтером
(весь список правил и токены-префиксы в web/eslint-plugins/README.md,
прогон: pnpm --dir web lint / pnpm --dir web lint:all). Здесь — только то,
что линтер не умеет.
Svelte 5
Типизация пропсов через локальный interface Props закреплена правилом
conventions/interface-props; руками его нигде дублировать не надо.
Сначала искать
Новая константа или тип не заводится, пока не произведён поиск существующего
определения (по ключу в соседних модулях и по всему web/src/). Это правило
в первую очередь для ИИ-агентов: дублирующее определение ухудшает правки в
нескольких местах и запутывает. (Синтаксис самих определений — под линтером:
строка conventions/no-string-union-alias и т.д.)
Дизайн
Описание нового визуального языка — в docs/plan-redesign.md. Общие правила,
которые линтер не проверяет:
- Новый дизайн живёт в
web/src/app.css(корневые маршруты), старый — вweb/src/app_v1.css(маршруты/v1/*). - Все повторяющиеся визуальные элементы — отдельные компоненты в
web/src/lib/components/, даже «просто div с двумя стилями». - Дизайн-токены (цвета, размеры, длительности, z-index) — только из
CSS-переменных; детали ограничений — в
web/eslint-plugins/README.md.
Изоляция веток old ↔ new
Старый (v1/) и новый UI изолированы: isolation/no-mixed-imports резолвит
каждый импорт до файла и запрещает смешивание.
- Trunk-based: коммиты делает разработчик после ревью, самому не коммитить. Изменения делать небольшими (< ~500 строк), атомарными.