Перевод живого проекта на актуальный движок Vibe Dev (v8). Два режима — МЯГКИЙ (--soft: v8-проверки как подсказки, для живых проектов с историей) и СТРОГИЙ (полные блокировки). Всегда сначала --dry-run: покажет, что заблокируется. Ставит .harness/engine-version + режим, мигрирует провенанс, бэкап-тег. Триггеры — "/upgrade-project", "обнови проект на новый движок", "переведи на strict/на мягкий". - Когда старый или новый проект готов перейти на актуальный движок; --soft — не останавливая работу.
Installs into .claude/skills of the current project.
Are you the author of Upgrade Project?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/andrewcigan-upgrade-project)
---
name: upgrade-project
description: Перевод живого проекта на актуальный движок Vibe Dev (v8). Два режима — МЯГКИЙ (--soft: v8-проверки как подсказки, для живых проектов с историей) и СТРОГИЙ (полные блокировки). Всегда сначала --dry-run: покажет, что заблокируется. Ставит .harness/engine-version + режим, мигрирует провенанс, бэкап-тег. Триггеры — "/upgrade-project", "обнови проект на новый движок", "переведи на strict/на мягкий". - Когда старый или новый проект готов перейти на актуальный движок; --soft — не останавливая работу.
disable-model-invocation: true
---
# /upgrade-project — перевод живого проекта на актуальный движок
## Зачем
При обновлении плагина движок (`hooks/`, схема, строгость) меняется. Живые проекты остаются «legacy» (структурные проверки = warn), пока пользователь явно не выполнит апгрейд. `legacy` = нет `.harness/engine-version` или его major ниже актуального.
Скрипт `scripts/upgrade-project.sh` (v8.0.1) — **источник правды**, у него три режима. Мажор движка берётся автоматически из `plugin.json` (сейчас 8).
## Порядок (ВСЕГДА сначала dry-run)
1. **Подтвердить vibe-проект** — есть `.harness/` или `feature_list.json`.
2. **`--dry-run` ПЕРВЫМ ДЕЛОМ** (ничего не пишет):
```bash
bash "${CLAUDE_PLUGIN_ROOT}/scripts/upgrade-project.sh" --dry-run .
```
Прогоняет реальный сторож и печатает человекочитаемо: что заблокируется в строгом режиме, останется ли блок в мягком (жёсткий UI-контроль не понижается — задачи в «готово» без скриншота), сколько провенанс-этикеток проставится. **Не пропускай этот шаг** — иначе первая же правка feature_list упадёт постфактум (жёсткий UI-гейт B2/feat-204 строг всегда, dry-run предупреждает о нём заранее).
3. **Выбрать режим по результату dry-run:**
- **Мягкий** (живой проект с историей, задачи заведены задним числом без формальных доказательств):
```bash
bash "${CLAUDE_PLUGIN_ROOT}/scripts/upgrade-project.sh" --soft .
```
Ставит движок 8 + мягкий режим (v8-проверки = подсказки, профиль strict СОХРАНЯЕТСЯ), мигрирует провенанс, создаёт бэкап-тег. Git-гейты не навязываются. Жёсткими остаются UI-скриншоты и массовый внешний API.
- **Строгий** (проект приведён в порядок, готов к полным блокировкам):
```bash
bash "${CLAUDE_PLUGIN_ROOT}/scripts/upgrade-project.sh" --strict .
```
Движок 8 + pending-strict + git pre-commit backstop. Все v8-гейты блокируют.
4. **Если dry-run показал «ОСТАНЕТСЯ БЛОК» (UI-долг)** — сначала реши его (перенеси метку реального browser-прогона в `layer_4_user_at`, или честно понизь `passing`→`awaiting_user_acceptance`, или переснимай скриншоты), потом переводи. Не выдумывай evidence «задним числом» без реального прогона.
5. **Требование скрипта:** чистое git-дерево (бэкап-точка ставится тегом). Грязное дерево → сначала закоммить. Скрипт сам дописывает `.gitignore` для служебных файлов харнеса.
6. **Закоммить** результат осмысленным сообщением.
## Все проекты сразу
Для массового мягкого включения на многих проектах — скилл `/patch-projects` (скан + предпросмотр + перевод безопасных, флаг UI-долга). Этот скилл — точечный, на один проект.
## Граница
Скрипт делает переключение детерминированно; **выбор режима и решение UI-долга — ответственность агента по результату `--dry-run`**. Не переключай, не прогнав dry-run.