diff --git a/skills/ralph-loop-execution/SKILL.md b/skills/ralph-loop-execution/SKILL.md new file mode 100644 index 0000000..5dbc5d1 --- /dev/null +++ b/skills/ralph-loop-execution/SKILL.md @@ -0,0 +1,64 @@ +# ralph-loop-execution + +## When to Use + +Когда задача содержит поле `**Verifier:** ` — это ralph-loop задача. Активируй этот скил в начале работы. + +## Algorithm + +1. Прочитай задачу. Извлеки: + - `**Verifier:** ` — oracle-команда + - `**Attempts:** N` — текущий счётчик (0 если отсутствует) + - `**Max-Attempts:** M` — потолок (если отсутствует, дефолт 5) + +2. Выполни работу (code, tests, edits — всё что требует задача). + +3. Запусти verifier: + ``` + + ``` + +4. **Если exit 0** → задача выполнена. Закрой задачу штатно (`**Status:** done`). Готово. + +5. **Если exit ≠ 0**: + + a. Вычисли новый номер попытки: `N_new = N + 1` + + b. Если `N_new >= M` (бюджет исчерпан): + ``` + **Attempts:** + **Status:** failed + ``` + Добавь в конец description: + ```markdown + ## Attempt (final) — budget exhausted + + ``` + Завершай сессию. + + c. Иначе (попытки ещё есть): + ``` + **Attempts:** + **Status:** ready + ``` + Добавь в конец description: + ```markdown + ## Attempt failure + + + ### Что попробовал: + <краткое резюме что делал в этой итерации> + ``` + Завершай сессию. Поллер подберёт задачу заново. + +## Reading Attempt History + +Когда клеймишь ralph-loop задачу с `**Attempts:** N > 0` — прочитай все секции `## Attempt K failure` в description. Это память о том, что уже не сработало. Не повторяй те же подходы. + +## Interactive Mode (/loop) + +В интерактивном `/loop` контексте: тот же алгоритм, но цикл внутренний (контекстное окно сохраняется). Запускай verifier в конце каждой итерации. `Max-Attempts` работает так же. + +## Key Invariant + +Verifier — единственный критерий готовности. Не закрывай задачу без `exit 0` от verifier, даже если субъективно кажется что всё правильно.