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
Install
$ npx -y skills add andrewcigan/vibe-dev-plugin --skill stuck --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/stuck

Context preview

The summary Claude sees to decide when to auto-load this skill.

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

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
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.

Get the whole plugin

Other skills on vibe-dev.

architecture
Skill

architecture

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

checkpoint
Skill

checkpoint

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

critique
Skill

critique

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