# Инструкции для агентов в `packages/**`

## Назначение

`packages/**` содержит checkout пакетов, объявленных в `.gitmodules`. `services.yaml` хранит политику работы с пакетами и рабочим пространством, но не дублирует реестр source submodule.

## Правила работы

- Инициализировать все пакетные submodule, объявленные в `.gitmodules` для текущего рабочего контура.
- Платформа должна проверять доступность пакета и права текущего пользователя до checkout.
- Для downstream-репозиториев отдельный workflow должен удалять магазин, сайт и необязательные пакеты, которые не должны попадать в конкретную установку.
- Массовую синхронизацию submodule выполнять только когда задача требует обновить все объявленные пакеты.
- Если меняется содержимое пакетного репозитория, сначала изменения вносятся в его собственной ветке и PR, и только после merge в `kodex` обновляется gitlink.
- Если пакет добавляется из каталога, после установки он должен появиться в `packages/**` с зафиксированным `tag` или `commit`.

## Именование репозиториев

- Имя платформенного пакетного репозитория должно описывать устанавливаемый пакет, а не конкретную инсталляцию или проект-потребитель.
- Для platform-owned package repos использовать схему `kodex-package-<name>`.
- Если пакет содержит сайт, документацию, магазин или другой устанавливаемый модуль платформы, это должно читаться из slug без обращения к README.

## Источники

Актуальный перечень подключённых пакетных submodule смотреть в `.gitmodules` и в каталогах внутри `packages/**`.
