# pi-skill-reinject Pi Coding Agent extension: отслеживает вызванные skills и повторно инжектит их после auto compaction. **Статус:** реализовано (v1) ## Установка ```bash # из клона репозитория pi -e ./src/index.ts # или абсолютный путь pi -e ~/Documents/repos/pi-auto-reinjection/src/index.ts ``` Для постоянной установки укажите путь к `src/index.ts` в `~/.pi/agent/settings.json` → `extensions` (нужен весь каталог `src/`, не один файл). См. [Pi extensions](https://github.com/earendil-works/pi/blob/main/packages/coding-agent/docs/extensions.md). По умолчанию extension **выключен**. Включение: ```text /skill-reinject on # эта сессия /skill-reinject global on # навсегда (~/.pi/agent/settings.json) ``` ## Команда `/skill-reinject` ```text /skill-reinject # статус (enabled, delivery, tracked, pending) /skill-reinject on | off | reset # session override /skill-reinject global on | off # глобальный default /skill-reinject list | clear # tracked skills /skill-reinject now # принудительный re-inject (debug) /skill-reinject integration auto|defer|immediate|off ``` Алиасы: `/sr`, `/skills-reinject`. Footer status: `on·N` / `off·N`. Полный синтаксис и настройки — [SPEC.md §7](./SPEC.md#7-команда-skill-reinject). ## Как это работает Pi хранит в контексте только описания skills; полный `SKILL.md` теряется при compaction. Extension отслеживает вызванные skills (`/skill:name`, skill-блоки, `read` на `SKILL.md` при `trackReadPaths: true`) и после **auto** compaction повторно инжектит отсутствующие в kept window блоки — тем же форматом, что `/skill:name`. ## Совместимость с pi-auto-compact Рассчитан на совместную работу с [@capyup/pi-auto-compact](https://github.com/capyup/pi-auto-compact). При обнаружении команды `auto-compact` re-inject идёт через `defer` + `before_agent_start`, чтобы не конкурировать с follow-up pi-auto-compact (см. [SPEC.md §16](./SPEC.md#16-совместимость-с-capyuppi-auto-compact)). **Coexistence с Pi default auto-compaction:** оба механизма могут сработать в одной сессии. При использовании pi-auto-compact можно отключить встроенный compaction Pi (`"compaction.enabled": false` в settings) или оставить оба — skill-reinject отработает после каждого **auto** compaction. Extension не отключает чужой compaction; при первом обнаружении обоих механизмов показывает одноразовый hint. ## Разработка ```bash npm run typecheck # tsc --noEmit npm test # vitest ``` ## Документация - [SPEC.md](./SPEC.md) — полное ТЗ - [Pi extensions](https://github.com/earendil-works/pi/blob/main/packages/coding-agent/docs/extensions.md) - [Pi skills](https://github.com/earendil-works/pi/blob/main/packages/coding-agent/docs/skills.md) - [Pi compaction](https://github.com/earendil-works/pi/blob/main/packages/coding-agent/docs/compaction.md) - [pi-auto-compact](https://github.com/capyup/pi-auto-compact)