# version-sentinel

Не даёт агенту добавить, обновить или откатить пакет, пока он не сверит версию в реестре и не запишет источник. Пригодится там, где важна свежесть зависимостей.

- плагин · `type=plugin` · Claude Code · ★ 6
- Автор: KSEGIT
- Лицензия: MIT · policy=mirror · начало файла — в конце страницы
- Исходник: https://github.com/KSEGIT/Version-Sentinel
- Обновлён: 2026-10-24
- HTML: https://affpapa.org/nevibecode/plugins/version-sentinel

## Что делает

Плагин ставит хук `PreToolUse` перед правками манифестов и командами установки. Если Claude пытается прописать версию, которой нет в свежей проверке, вызов отклоняется с кодом выхода 2 — агенту приходится искать актуальную версию через `WebSearch`, записывать её слэш-командой `/vs-record` и повторять попытку.

Поддержаны npm/pnpm/yarn/bun (`package.json`), pip (`requirements*.txt`, `constraints*.txt`, `pyproject.toml`), Cargo (`Cargo.toml`) и NuGet (`*.csproj`, `*.fsproj`, `*.vbproj`). Перехватываются `Edit`, `Write`, `MultiEdit` и команды установки вроде `npm install`, `pip install`, `poetry add`, `uv add`, `cargo add`, `dotnet add package`. Пакет из реестра без версии или с плавающим тегом вроде npm `latest` тоже блокируется. Локальные пути, URL, git-источники и workspace-зависимости проверка не трогает. В NuGet `PackageReference` без `Version` не считается незакреплённым, если версия приходит из `Directory.Packages.props`, а вот `Version="*"` блокируется.

Для работы нужны `bash`, `jq`, `curl` и `python3` 3.11+ в `PATH`. На Windows Git Bash даёт `bash`, `jq` и `curl`, а Python 3.13 придётся поставить отдельно. Ставить плагин через сокращение `owner/repo` не стоит: оно разворачивается в SSH-клонирование и требует ключей GitHub — используйте полный HTTPS-адрес.

## Установка

### Claude Code (родная платформа)

**Через маркетплейс плагинов**
В чате агента (не в терминале):
```text
/plugin marketplace add anthropics/claude-plugins-community
```
В чате агента (не в терминале):
```text
/plugin install version-sentinel@claude-community
```

## Когда брать
- остановить добавление версии пакета, которой никогда не существовало
- не дать агенту откатить зависимость до уязвимой сборки при разборе ошибки CI
- зафиксировать, почему выбрана именно эта версия пакета
- поймать установку отозванного или скомпрометированного релиза
- заменить устаревший пин из памяти модели на актуальный

## Примеры запросов агенту
- Добавь lodash в package.json, но сначала проверь последнюю версию в реестре и запиши её через /vs-record
- Обнови Cargo.toml до свежей версии serde и зафиксируй источник проверки
- Почему установка пакета заблокирована? Проверь версию через WebSearch и повтори

## Похожие
- [dependency-audit](https://affpapa.org/nevibecode/commands/dependency-audit.md) — команда · 658 установок
- [dependency-checker](https://affpapa.org/nevibecode/hooks/dependency-checker.md) — хук · 2314 установок
- [deps-upgrade](https://affpapa.org/nevibecode/commands/deps-upgrade.md) — команда · ★ 41823
- [dependency-manager](https://affpapa.org/nevibecode/agents/dependency-manager.md) — субагент · 356 установок
- [dependency-auditor](https://affpapa.org/nevibecode/skills/useai-pro-dependency-auditor.md) — скилл · 500 установок
- [dependencies-audit](https://affpapa.org/nevibecode/skills/dependencies-audit.md) — скилл · 1900 установок

_Часть страницы не вошла по размеру — она есть в HTML-версии._

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
