mirror of
https://github.com/Ku6epXBOCTuK/easy-png-tools.git
synced 2026-09-14 21:46:35 +00:00
64 lines
4.0 KiB
Markdown
64 lines
4.0 KiB
Markdown
# 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 строк), атомарными.
|