Stuck-протокол при тупике (3 попытки или 45 мин без progress). STOP + statement + LLM-кворум 3-4 моделей + синтез + 3 подхода пользователю. Триггеры — "/stuck", auto после порогов из tools-allowlist.
Scanned 9/6/2026
Install to Claude Code
npx -y skills add andrewcigan/vibe-dev-plugin --skill stuck --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Stuck?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/andrewcigan-stuck)More formats (shields.io, HTML) on the badges page.
---
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:
```markdown
## 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`:
```markdown
# 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`:
```markdown
# Кворум 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)
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!