Skip to content
Development
Skill

/stuck

Stuck-протокол при тупике (3 попытки или 45 мин без progress). STOP + statement + LLM-кворум 3-4 моделей + синтез + 3 подхода пользователю. Триггеры — "/stuck", auto после порогов из tools-allowlist.

From plugin
vibe-dev
529 skills24 agents7 hooks

Claude Code

$ npx -y skills add andrewcigan/vibe-dev-plugin --skill stuck --agent claude-code

SKILL.md

stuck.SKILL.md
name: stuck
description: Stuck-протокол при тупике (3 попытки или 45 мин без progress). STOP + statement + LLM-кворум 3-4 моделей + синтез + 3 подхода пользователю. Триггеры — "/stuck", auto после порогов из tools-allowlist.
when_to_use: Когда 3 попытки не привели к цели (фича, тест, диагностика). Auto-trigger через 45 мин без commit/test-pass. Не для отсутствующих данных или auth — там прямая эскалация.

/stuck

Формализация правила: «3 попытки — стоп, не 4-я попытка того же».

Триггеры (auto или manual)

**Auto**: 1. **45 мин без commit/test-pass** (из tools-allowlist.yaml stuck_detector) 2. **3 неуспешных /verify** на одну фичу 3. **2 одинаковых ошибки подряд** (recurrence detect в error-journal) 4. **stage-verifier вернул FAIL 3 раза**

**Manual**:

  • Пользователь сказал «в тупике / крутимся / не получается»

Шаг 0: Эскалация тира ПЕРЕД кворумом (pilotfish N=2)

Прежде чем собирать дорогой LLM-кворум — различи **«модель не тянет»** и **«подход неверен»**:

  • Если работа/фича шла на **дешёвом тире** (Sonnet-исполнитель, `implementer`) и провалилась **2 раза** — первая эскалация НЕ кворум, а **поднять тир**: перезапусти задачу на Opus или возьми её в main-session (takeover). **Запрещён 3-й ретрай того же тира** — это и есть залипание.
  • Кворум и statement (Шаги 1–6) запускаются, ТОЛЬКО если и **высший тир (Opus) провалил 2 раза** — тогда причина не в модели, а в подходе (нужны принципиально другие гипотезы).

Порядок эскалации: **Sonnet ×2 → Opus ×2 → кворум**. «Додумал размытый план» на дешёвом тире лечится сменой тира, а не кворумом — это дешевле и часто решает.

Шаг 1: STOP

Немедленно остановить попытки того же подхода. **Не делать 4-ю попытку.**

Зафиксировать в SESSION.md:

## Stuck Event YYYY-MM-DD HH:MM
- Active feature: feat-XXX
- Attempts made: 3 (или N)
- Last approach: <описание>
- Trigger: auto / manual

Шаг 2: Создать stuck-statement

Subagent **stuck-protocol-handler** (Sonnet) генерирует `docs/stuck-statements/stuck-YYYY-MM-DD-HHMM.md`:

# Stuck Statement — <короткое название>

**Дата**: ISO
**Этап pipeline**: <номер>
**Задача**: <что пытались сделать>

## Цель
[Что должны достичь — метрика / проверяемая формулировка]

## Что делали (все попытки)

### Попытка 1
- Подход: ...
- Результат: ...
- Почему не сработало: ...

### Попытка 2-3
...

## Анализ

### Bottleneck (TOC)
[Где именно застряли — конкретный компонент]

### 5 Whys
1-5. Корневая причина: ...

### Диаграмма Ишикавы (опц.)
Man / Method / Machine / Material / Measurement / Environment — что причина?

## Проверенные и отвергнутые гипотезы
- [гипотеза] — отвергнута потому что ...

## Контекст
- Стек, ограничения, данные
- Эталон если есть

## Открытые вопросы
- Что не знаем
- Что нужно уточнить у пользователя

## Прошу у других LLM
Предложите 3-5 новых подходов, принципиально отличных от перечисленных.
Используйте: Lean (муда, poka-yoke, pull), TOC (настоящий bottleneck), 
смена абстракции, альтернативные технологии.

Шаг 3: Кворум LLM

Отправить stuck-statement параллельно в **3-4 LLM** (с budget cap из tools-allowlist):

| LLM | Канал | Cost cap | |---|---|---| | Claude (Opus subscription) | Локальный subagent | $0 (подписка) | | Gemini (cli) | `gemini -p "$(cat statement.md)"` | $0.50 | | Codex (cli) | `codex -p "$(cat statement.md)"` | $0.30 | | ChatGPT (через API) | если ключ доступен | $1.00 |

**Hard cap всего кворума**: $5 (из cost_policy). Если бюджет не позволяет — 2 LLM минимум (Claude + Gemini).

Ответы → `docs/research/llm-quorum-<timestamp>-<source>.md`.

Шаг 4: Synthesizer

Synthesizer subagent читает все ответы и пишет `docs/research/llm-quorum-synthesis-<timestamp>.md`:

# Кворум LLM — синтез гипотез

## Триангулированные гипотезы (несколько LLM предложили одно и то же)
1. <гипотеза> — Claude + Gemini — **высокий приоритет**
2. <гипотеза> — Gemini + Codex — **высокий приоритет**

## Уникальные интересные идеи
- <идея> — Codex — почему интересно
- <идея> — ChatGPT — почему интересно

## Отвергнутые (уже пробовали)
- <идея> — источник — причина

## 3 подхода для пользователя
### A: <название>
- Суть (1-2 предложения)
- Оценка времени
- Риск

### B: ...
### C: ...

Шаг 5: Эскалация пользователю

**Формат сообщения (по Quality Gate — НЕ technical A/B):**

🚨 /stuck на feat-XXX

3 попытки не привели к цели. Собрал кворум 3 моделей.

Самые перспективные подходы:

A) [название] — суть одной фразой
   Время: ~X часов / Риск: <оценка> / Качество: <оценка>

B) [название] — суть одной фразой
   Время: ~Y часов / Риск: <оценка>

C) [название] — суть одной фразой
   Время: ~Z часов / Риск: <оценка>

Моя рекомендация: B — потому что [одна причина бизнес-языком]

Детали в docs/research/llm-quorum-synthesis-*.md

Какой? (A / B / C / свой вариант)

Шаг 6: Новый подход, не 4-я попытка того же

После выбора:

  • feature.state = active (rollback counter обнуляется)
  • Старые попытки → в SESSION.md секцию `Decisions Made` как «попробовали, не сработало»
  • Новый подход → новая последовательность attempts

Лимиты

  • **Максимум 3 stuck-протокола на фичу.** Если третий — `/escalate-to-human`, остановка плагина, серьёзный разговор.
  • **Stuck-statement никогда не удаляется** — архив в `docs/stuck-statements/`. Это история решений.

Что НЕ stuck (прямая эскалация без протокола)

  • Отсутствие критичных данных (нет API ключа, нет доступа) → ASK пользователю напрямую
  • Блокер на уровне инфры (нет интернета, сервер не отвечает) → ASK
  • Бизнес-вопрос (что важнее — A или B по бизнесу) → ASK

Stuck-протокол — **только для алгоритмического / архитектурного тупика**.

Anti-patterns

  • ❌ 4-я попытка того же подхода — главное правило
  • ❌ Кворум из 1 LLM (минимум 2)
  • ❌ Послать секреты или приватные данные в внешние LLM — вырезать `<private>` теги
  • ❌ Эскалировать пользователю technical A/B — переписать в business-impact формат (Quality Gate)
Read more
@andrewcigan
Ships withvibe-dev

🌐 English: this file · Русский: README.ru.md A harness-first plugin that turns a business idea into a shipped product — for founders who build with Codex and Claude Code.

529 skills24 agents
Get the whole plugin

Stars on GitHub

Momentum

stars in total
5
Star history of andrewcigan/vibe-dev-plugin on GitHub, a chart by star-history.com

Other skills on vibe-dev.

architecture

architecture

V0 архитектура с TOC bottleneck-анализом. Запускает architect (Fable 5.1). ≤10 компонентов, Mermaid диаграмма, invariants как…

audit

audit

7-tuple оценка здоровья проекта (Instructions / State / Verification / Scope / Lifecycle / Learning / Cost-Safety) через ВНЕШНЕГО…

checkpoint

checkpoint

Управляемый чекпоинт состояния в файлы посреди работы — вместо авто-сжатия («рулетки»). Перезаписывает Current State,…

choose-stack

choose-stack

Выбор стека под bottleneck архитектуры. Запускает stack-advisor (Fable 5.1). Использует 2026 tech-updates (opendataloader-pdf,…

critique

critique

FULL этап 5 — автономный critique long-list идей. Запускает idea-critic (Sonnet), который отсеивает hard-filters и оставляет…

design-handoff

design-handoff

Бриф для Claude Design (claude.ai/design) по формуле C.R.O.P. Плагин не рисует UI сам — готовит handoff. Запускает…

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills11d309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc13d293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react2d252k
@facebook@facebookInstall Skill

Questions about stuck.

Which coding agents can use stuck?
stuck installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.