Skip to content
Back to skills

Stuck

ASecurity

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

  • 5 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 6, 2026
ai-agentsapi

Works with

  • cli
  • api

Security analysis

A100/100

Scanned September 6, 2026

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

Installs into .claude/skills of the current project.

Are you the author of Stuck?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Stuck
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/andrewcigan-stuck/badge)](https://www.skillsdirectory.com/skills/andrewcigan-stuck)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
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:
```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)

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.