https://github.com/andrewcigan/vibe-dev-plugin
Vibe Dev — harness-first pipeline для Claude Code: от бизнес-идеи до работающего продукта. 20 проверяемых механизмов (hooks из коробки) + онбординг под пользователя (/setup).
https://github.com/andrewcigan/vibe-dev-plugin
ai-agents claude-code claude-code-plugin harness vibe-coding
Last synced: 6 days ago
JSON representation
Vibe Dev — harness-first pipeline для Claude Code: от бизнес-идеи до работающего продукта. 20 проверяемых механизмов (hooks из коробки) + онбординг под пользователя (/setup).
- Host: GitHub
- URL: https://github.com/andrewcigan/vibe-dev-plugin
- Owner: andrewcigan
- Created: 2026-06-05T18:34:43.000Z (12 days ago)
- Default Branch: main
- Last Pushed: 2026-06-05T21:56:34.000Z (12 days ago)
- Last Synced: 2026-06-05T22:11:45.484Z (12 days ago)
- Topics: ai-agents, claude-code, claude-code-plugin, harness, vibe-coding
- Language: Shell
- Size: 266 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Agents: AGENTS.md
Awesome Lists containing this project
README
# Vibe Dev v6
**Harness-first pipeline от бизнес-идеи до работающего продукта — плагин для Claude Code.**
Плагин берёт идею у предпринимателя-непрограммиста и автономно ведёт её до работающего
продукта: агент сам принимает технические решения, а человек остаётся на уровне бизнеса
и архитектуры. Главный принцип:
> ## «Harness — это enforcement, не documentation.»
> Каждый принцип имеет **реальный механизм** (hook / gate / agent / self-check), а не строчку
> в инструкции, которую агент может проигнорировать. Дисциплину ломает ровно то звено, которое
> должно её соблюдать — сам агент. Поэтому правила превращены в проверяемые «посты».
В v6.2 таких механизмов — **38**, каждый с тремя атрибутами: *где зафиксирован / чем enforce /
что произойдёт при попытке обойти* (полный список — `docs/traceability.md`). Полноту проверяет
self-check плагина — строка без механизма не пройдёт. Новое в v6.2: **активация хуков стала
проверяемым фактом** (сторож, который «не включился», больше не может молчать), а **ясность
финального сообщения** — из пожелания стала блокирующим гейтом. Все новые сторожа проверены
живыми прогонами на движке Claude Code 2.1.170.
---
## Как это работает (харнесс простыми словами)
У Claude Code есть ключевые моменты, которые он объявляет: «сейчас сохраню файл», «выполню
команду», «показываю сообщение человеку», «открываю/закрываю сессию». Плагин **вешает на эти
моменты маленьких инспекторов** (hooks). Каждый инспектор смотрит на намерение и выносит один
из вердиктов:
- **block** — действие отменяется (например, нельзя пометить фичу «готово» без доказательства);
- **warn / inject** — действие проходит, но появляется пометка для агента или флаг для человека;
- **pass** — всё чисто, молча пропустить.
Список «на таком-то событии — позови такого-то инспектора» лежит в `hooks/hooks.json` и
**подхватывается автоматически** при установке (Claude Code v2.1+) — ручная настройка не нужна.
Строгость регулируется на проект: `minimal` / `standard` / `strict` (живые проекты не ломаются —
переводятся командой `/upgrade-project`).
---
## Механизмы — что каждый ловит (ключевые из 38)
### A. «Готово» = проверено, а не на словах
| Механизм | Что ловит | Что делает |
|---|---|---|
| **UI-evidence gate** | UI-фичу помечают «готово» по typecheck/тестам, но пользователь нажал — пусто | **block** (нужен скриншот/живой прогон) |
| **Evidence по поверхности** (v6.2) | фича «без UI» (API/задача по расписанию/CLI) закрывается без следа реального вызова; UI-фича маскируется под «библиотеку» | поверхность определяется по файлам и только ужесточается: ui → **block**, остальные → **warn** с инструкцией приёмки |
| **Критика до реализации** (H7) | средняя/большая фича уходит в работу без продуманной стратегии проверки | **block** (нет `docs/test-strategy.md` — нельзя в active) |
| **Ревью модели данных** | пишут схему БД без отдельного критического ревью (модель «застывает», переделка дорогая) | **block** (нет `docs/data-model-review.md` — нельзя в active) |
| **State-machine переходов** | фича прыгает в невалидное состояние / битый служебный файл | **block** (актуальный проект) / warn (старый) |
### A2. Активация хуков — проверяемый факт (новое в v6.2)
| Механизм | Что ловит | Что делает |
|---|---|---|
| **Heartbeat** | хуки «вроде установлены», но физически не работают (тихий театр строгости) | каждое живое событие пишет отметку с версией; читатели сверяют свежесть |
| **Двухфазный профиль** | профиль «strict» записан, а enforcement не включался | bootstrap пишет `pending-strict`; в боевой `strict` переводит ТОЛЬКО живой хук — факт перевода = доказательство |
| **Git pre-commit backstop** | плагин снесли/сломали — и никто не заметил | НЕЗАВИСИМЫЙ от плагина пост в `.git/hooks`: pending-профиль или протухший heartbeat → **block** коммита |
| **Fail-loud + crash-артефакты** | сторож упал и молча «разрешил всё» (реальный баг 2026-06-06) | краш → громкое предупреждение + лог краша + probe при старте сессии |
| **Корпус реальных форм** | гейт зелёный на синтетике, падает на боевых файлах | self-check гоняет гейт на 6 обезличенных боевых `feature_list` |
| **`/doctor`** | «почему сторожа молчат?» | самодиагностика: профиль/heartbeat/краши/установка + таблица починки |
### B. Безопасность и деньги
| Механизм | Что ловит | Что делает |
|---|---|---|
| **bulk-API gate** | массовый внешний API без проверки лимитов (реальный кейс: бан проекта на 2 суток + впустую деньги) | **block** без pre-launch-checklist (теперь чеклист требует явные объём × цену) |
| **Смена модели без smoke** | правка вносит модель/настройку, влияющую на каждый ответ (реальный кейс: 3 дня обрывов клиентам после «новее = drop-in») | **warn** «это изменение контракта, прогони smoke» |
| **Vendor-lock без research** | в архитектуру вшивают конкретного поставщика наугад, без сравнения вариантов | **block** integration-фичи без `docs/research/*.md` |
| **Секрет в чате** (v6.2) | пользователь вставил живой ключ в сообщение | **warn**: ключ скомпрометирован → ротация + перенос в `.env` |
| **Секрет в выводе команды** (v6.2) | CLI напечатал токен — он оседает в контексте сессии | **warn** модели: не переиспользовать литералом, предложить ротацию (+маска вывода на движках с поддержкой) |
| **concurrent-write** | две сессии пишут в один файл (реальный кейс: потеря данных) | **warn** (advisory) |
### C. Анти-залипание
| Механизм | Что ловит | Что делает |
|---|---|---|
| **Стоп-сигнал пользователя** | человек пишет «не туда / остановись / мы не то делаем», а агент продолжает тактически | **inject** «смена уровня, не способа; запусти субагент-диагностику» |
| **Interrupt-recovery** (v6.2.1) | обрыв связи (закрытая крышка ноутбука) или доставка сообщения убили выполнявшийся инструмент — система лживо пишет «пользователь отклонил», агент стоит часами | следующее сообщение без «стоп» → **inject** «это был обрыв, не запрет — продолжай план»; настоящий «стоп» сохраняет силу |
| **Повтор падающих команд** | одна и та же команда запускается 3-й раз подряд без успеха и без структурных правок | **warn** ДО выполнения: подсказка про субагент-диагностику (носитель выверен по живой модели событий 2.1.170) |
### D. Понятный язык (главная боль непрограммиста)
| Механизм | Что ловит | Что делает |
|---|---|---|
| **Clarity-gate на финал хода** (v6.2) | ход завершается оценкой в человеко-днях или тяжёлым жаргоном вне кода | **block**: агент обязан дописать то же самое простыми словами (≤10 строк); точность держит размеченный корпус из боевых сессий + лимиты дописок |
| **Язык-ловец (экранный слой)** | жаргон / развилка без «что теряешь» / человеко-дни в любом сообщении | **флаг на экране + лог-метрика** (честно display-only; в Desktop-среде событие не приходит — несущий слой выше) |
| **Онбординг (`/setup`)** | система не знает, как говорить с новым пользователем | портрет `~/.vibe-dev/portrait.md` → строгость гейтов и формат развилок подстраиваются (без портрета — нейтральный дефолт) |
### E. Дисциплина процесса
| Механизм | Что ловит | Что делает |
|---|---|---|
| **WIP=1 / scope** | правки выходят за рамки заявленной фичи | **block** коммита (diff ⊆ affected_files) |
| **Намерение без действия** | агент завершает ход словами «сейчас сделаю X» без единого действия | **block** (продолжить ход) |
| **Единый Stop-диспетчер** (v6.2) | несколько сторожей на завершении хода каскадят блокировки и зацикливают ход | приоритеты + общий предел ≤3 блокировок на ход; переполнение → pass с записью в лог |
| **Research-гейт архитектуры** (v6.2) | архитектура пишется без изучения лучших практик и готовых решений | **block** записи `ARCHITECTURE*.md` без `docs/research/*`; пропуск — ТОЛЬКО явной фразой пользователя |
| **Closing-mode** (v6.2) | «закрываем сессию» → агент вдруг начинает кодить | права деградируют: запись только в файлы состояния; новая работа → backlog; снимается обычным сообщением |
| **Lock-паттерн** (v6.2) | агент сам «изображает согласие пользователя» (маркеры пропуска/закрытия) | маркеры `.harness/locks/*` пишут ТОЛЬКО хуки по явной фразе — запись агентом **block** |
| **Config-protect** (v6.2) | агент ослабляет собственные гейты (профиль, heartbeat, отключение) | **block** во всех профилях; отключение enforcement — только руками пользователя |
| **Handoff-петля** | при закрытии сессии план остаётся в чате (новая сессия его не увидит) | **inject** cold-start чеклиста + детекция пропуска при старте |
| **Правило пользователя** (`/hookify`) | «больше не делай X» забывается и повторяется | человек замораживает коррекцию в постоянное **block/warn**-правило без кода |
### F. Инфраструктура харнесса
| Механизм | Что делает |
|---|---|
| **Hooks из коробки** | авто-загрузка `hooks.json` при установке; без файла — невозможно «забыть включить» |
| **warn доходит до модели** | предупреждения идут правильным каналом (иначе молча терялись бы) |
| **Профили + version-lifecycle** | minimal/standard/strict; старые проекты не форсятся, переводятся по команде |
| **Таблица трассировки + self-check** | каждый механизм описан 3 атрибутами; строка без живого механизма роняет self-check |
| **Gate обезличенности** | в публичной версии случайно осталось личное (почта / клиентский проект / личный путь) — **block** self-check |
> **Честно — что осталось дисциплиной, а не механизмом:** проверка связок между модулями на
> реальном пути, «агент делает сам, не шлёт в терминал», реалистичность тестовых данных. Их
> хуком надёжно не заставить. Держим дисциплиной + ловим на реальном проекте. Не выдаём за
> «железобетон».
Построено **после аудита всех ~20 реальных проектов** предыдущих версий (12 ретроспектив +
~150 заметок памяти + 6 журналов багов); v6.2 — после **аудита 54 боевых сессий** на v6.1
+ рисёрча практик харнессов + независимой критики плана.
---
## 7 подсистем
**Instructions** (CLAUDE.md-роутинг + domain-rules.yaml) · **State** (feature_list.json +
SESSION.md + error-journal) · **Verification** (4 слоя + dual critique + negative-gate) ·
**Scope** (affected_files, WIP=1) · **Lifecycle** (init, cold-start, clean-exit, /upgrade) ·
**Learning** (feedback-память, ретроспективы, anti-patterns) · **Cost & Safety** (bulk-gate,
concurrent-lock, secrets-scope).
---
## Команды
| Команда | Что делает |
|---|---|
| `/setup` | Онбординг: 6 простых вопросов → портрет (как с тобой общаться) |
| `/new-project` | Бизнес-интервью + bootstrap harness (4 файла на старте) |
| `/resume ` | Cold-start test + диф с прошлой сессией |
| `/feature ` | WIP=1 + dual critique (test-researcher + user-perspective-critic) |
| `/verify` | 4-слойная проверка (синтаксис + рантайм + e2e + пользователь) |
| `/hookify` | «больше не делай X» → постоянное block/warn-правило |
| `/handoff` · `/end-session` | Clean-exit + фиксация состояния в файлы |
| `/audit` | Внешняя оценка харнесса + скорость ошибок |
| `/stuck` | Стак-протокол + LLM-кворум |
| `/ship` | Финальная валидация ≥90% + ретроспектива |
| `/research` · `/architecture` · `/dev-plan` · `/upgrade-project` | … (полный список в `skills/`) |
## Pipeline
- **FAST (5 этапов)** — внутренние инструменты, простые MVP, Telegram-боты:
интервью → архитектура+стек → дизайн-handoff (если UI) → `/feature` loop → `/ship`.
- **FULL (10 этапов)** — продукты на рынок: идеи R1/R2 → валидация → research → архитектура+
прототип → дизайн → wave-план → `/feature` loop → `/ship` + маркетинг-запуск.
---
## Установка
```bash
# 1. Добавить marketplace из GitHub
claude plugin marketplace add andrewcigan/vibe-dev-plugin
# 2. Установить и включить плагин
claude plugin install vibe-dev@vibe-dev
```
Или локально (для разработки самого плагина):
```bash
claude --plugin-dir "/path/to/vibe-dev-plugin"
```
> Технический id плагина — `vibe-dev` (от него зависят имена команд и установка). Версия — **6.2.1**.
---
## Версия
**v6.2.1** — Interrupt-recovery: техническое прерывание (обрыв клиента / доставка сообщения) больше не парализует агента «жду указаний» — следующий промпт без «стоп» продолжает план автоматически.
**v6.2.0** — Enforcement как проверяемый факт (37 механизмов): доказуемая активация хуков
(heartbeat + двухфазный профиль + независимый git pre-commit backstop + `/doctor`), fail-loud
(краш сторожа не молчит), clarity-gate финального сообщения, evidence по поверхности фичи,
обязательный research перед архитектурой, closing-mode, секрет-гигиена, config-protect.
Все новые сторожа проверены живыми прогонами на движке 2.1.170. Построено по аудиту 54 боевых
сессий v6.1. Полный список изменений — [`CHANGELOG.md`](CHANGELOG.md).
_v6.1.0 — публичный релиз: enforcement из текста в механизм (20 механизмов) + онбординг
(`/setup`) + gate обезличенности, после аудита ~20 реальных проектов v5._