Skip to content
Back to skills

Elephant

ASecurity

Eat the elephant one bite at a time: turn a large list-shaped job into a finite routine that chews a small batch every night, detects when it is done, switches itself off and reports. Triggers: /elephant, eat the elephant, split into bites, make it a routine, ten a day, backfill everything.

  • 9 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 25, 2026
ai-agentspythongobashsqlgit

Works with

  • mcp

Security analysis

A100/100

Scanned October 3, 2026

npx -y skills add tonydzi/second-brain-starter-kit --skill elephant --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Elephant?

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

Security grade badge for Elephant
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/tonydzi-elephant/badge)](https://www.skillsdirectory.com/skills/tonydzi-elephant)

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: elephant
description: "Eat the elephant one bite at a time: turn a large list-shaped job into a finite routine that chews a small batch every night, detects when it is done, switches itself off and reports. Triggers: /elephant, eat the elephant, split into bites, make it a routine, ten a day, backfill everything."
license: MIT
version: 1.0.0
---

# 🐘 Слон — большая работа как конечная рутина

## Зачем это существует

Приказ Антона 23.08.2026, голосом, дважды: «рутина может съесть слона за 100 или за 1000 присестов, потихонечку… поняла, что задачу выполнила — выключилась и сказала».

Повод был конкретный: он **месяц** руками вытаскивал тысячи своих YouTube-видео и получил бан от площадки. Та же работа по 12 штук за ночь не банится вообще и не требует его присутствия ни разу.

До 23.08 у нас было ~49 app-рутин и ~160 OS-рутин, и **все до одной бесконечные** — крон по расписанию, живут вечно, конца не предусмотрено. Класса «рутина с концом» не существовало, поэтому большие списочные работы делались героическими сессиями, которые выдыхались на середине.

Движок: `$USERPROFILE/.claude/scripts/elephant.py` (0 LLM, чистый SQLite). Этот скилл — решение «слон или нет» и рецепт сборки.

---

## Шаг 1. Судить: слон это или нет

Тут скилл зарабатывает своё существование. **Соблазн ответить «да» на всё крупное — главная ошибка**, потому что слон, натравленный не на ту работу, режет её на куски, каждый из которых бессмыслен без остальных.

Различай две разные крупности:

| | что это | признак | лечение |
|---|---|---|---|
| **ШИРОКАЯ** | N одинаковых кусков, N велико | «список из 2241 видео» | 🐘 слон |
| **ГЛУБОКАЯ** | одна трудная вещь | «спроектировать архитектуру», «написать лонгрид», «провести переговоры» | 👤 сессия или разбивка на параллельные сессии (CLAUDE.md §9.2 ②) |

**Слон ест только ШИРОКОЕ.** Размер сам по себе ничего не решает.

### Признаки ЗА (нужно ≥2, причём первый обязателен)

1. **Список однотипных кусков, и он длинный** — десятки, сотни, тысячи. Куски взаимозаменяемы: кусок №700 обрабатывается так же, как №3.
2. **Кусок механический** — его делает код или узкий вызов, а не размышление и не разговор.
3. **Список сам не кончится** — он пополняется (история браузера, новые диалоги) либо просто огромен.
4. ⭐ **Работа спотыкается о живое препятствие** — участие Антона, лимиты вендора, баны площадки, ночные окна. Это признак-фаворит: Антон назвал его первым, и он сильнее размера. Именно он превращает «героическую сессию на месяц» в спокойную рутину.

### Стоп-признаки — при любом ОДНОМ слона НЕ заводим

- 🚫 **Есть срок.** Слон медленный ПО ЗАМЫСЛУ (мы нарочно спим между кусками, чтобы не ловить бан). Дедлайн → обычная сессия, слон не успеет.
- 🚫 **Куски зависят друг от друга.** Нельзя сделать кусок №50, не держа в голове №49 → это глубокая работа, слон её искалечит.
- 🚫 **Каждый кусок требует суждения, вкуса или переписки с человеком.** Это не капельница, а разбивка на параллельные человеко-сессии.
- 🚫 **Список короче ~20.** Одна сессия съест за раз; конвейер ради трёх гвоздей — нарушение АК-47.

### Что сказать по итогам

Вердикт одной строкой, всегда явный:
- 🐘 **слон** — плюс какие признаки сошлись;
- ♾ **бесконечная рутина** — конца нет по природе (синк флота, сбор входящих). Это тоже рутина, но без `--quota` и без самовыключения;
- 👤 **не слон** — назвать, какой стоп-признак сработал, и предложить правильное лечение. **Честное «не слон» — это успех скилла, а не отказ.**

---

## Шаг 2. Назвать потребителя ДО стройки

Правило Connect: у слона обязан быть тот, кто съест результат. Слон, чей выход никто не читает, — это 186 дней работы в мусор.

Ответь письменно, до первой команды:
- **кто потребитель** — RAG-индекс, дашборд, CRM-поле, конкретный человек;
- **как поймём, что результат потребляется** — метрика, а не надежда;
- **что произойдёт, когда слон доест** — куда уходит финальный доклад.

Нет ответа → не заводить. Это гейт §3.5 «внедряю только критичное сейчас».

---

## Шаг 3. Собрать очередь (сырьё)

Собери список кусков в JSONL — по строке на кусок, с устойчивым ключом (`video_id`, `chat_id`, путь к файлу).

**Ключ обязан быть стабильным между прогонами.** Если ключ — это порядковый номер или что-то, что меняется при пересборке, слон будет жевать одно и то же и никогда не кончится.

Собирай **ретроспективу целиком сразу** — это дешёвая часть, и она даёт честное число кусков, то есть честную ETA. Ежедневный добор свежего — отдельная, бесконечная половина (см. Шаг 6).

---

## Шаг 4. Завести слона и накормить

```bash
python "$USERPROFILE/.claude/scripts/elephant.py" new <slug> \
  --title "<человеческое название>" \
  --quota <кусков за прогон> \
  --os-task "<ИмяЗадачиWindows>" \
  --vault-note "<папка/заметка потребителя>"

python "$USERPROFILE/.claude/scripts/elephant.py" feed <slug> \
  --jsonl <путь к очереди> --key-field <имя поля ключа>
```

`--os-task` — это имя задачи планировщика, которую слон **сам выключит**, когда доест. Без него он не умеет закончиться и превращается в бесконечную рутину.

Подбирая `--quota`, считай вслух: `кусков ÷ (quota × прогонов за ночь)` = дней. Если получается больше пары месяцев — либо поднимай quota, либо честно скажи Антону, что работа растянется до такой-то даты, и пусть решает он.

---

## Шаг 5. Рабочий скрипт: ровно четыре движения

На каждом прогоне:

```
next --n <quota>   →   работа над куском   →   mark --key K --state ok|fail|skip   →   tick --ok N --fail M
```

- `tick` — **сердце**. Он считает прогресс, ловит конец (`todo == 0` → статус `done` → выключает OS-задачу → доклад в TG-03) и ловит затык (5 прогонов подряд без единого куска → `blocked` + доклад, но задачу НЕ выключает — это беда, а не финиш).
- Кусок, упавший 3 раза, выбывает из очереди. Без этого слон не кончится никогда: одна битая ссылка держит рутину вечно.
- `stop` / `resume` — приостановить и вернуть слона, не теряя прогресса.

**Скрипт обязан честно падать.** Если `elephant next` вернул не то, что ждали, — выходи ненулевым кодом и пробрасывай его наружу (в `.cmd` — через `%ERRORLEVEL%`). Иначе получится прибор, который врёт зелёным.

---

## Шаг 6. Две половины в одном прогоне (если список пополняется)

Часто работа состоит из конечной ретро-очереди и бесконечного добора свежего:

```
python worker.py harvest --fresh-only   # бесконечная половина: добрать новое
python worker.py run --n 12             # конечная половина: порция ретро-очереди
```

Конечная половина кончится и выключит себя; бесконечная останется. Так и задумано — скажи это Антону прямо, чтобы «слон доел, а задача всё ещё в планировщике» не выглядело поломкой.

---

## Шаг 7. Грабли, оплаченные кровью

Каждая строка ниже — реальный замер, а не осторожность.

- ⛔ **Журнал прогресса НИКОГДА не кладём в синкаемую папку.** Замер 23.08: предшественник `YT-Transcript-Trickle-Hub` держал журнал в `[шина]\_transit\` — **453 прогона за 19 суток дали 39 строк**. Синк непрерывно затирал файл, рутина 19 суток жевала одни и те же первые куски, а логи бодро писали «RUN DONE +3 ok». Дом журнала — строго локальный: `%LOCALAPPDATA%\claude-elephants\`.
- ⛔ **Зелёный код возврата ≠ работа сделана.** Замер 26.08: строка слона пропала из реестра, `yt_drip.py` глотал `exit 2`, `.cmd` не пробрасывал `ERRORLEVEL` — задача трое суток отдавала `LastTaskResult=0`, не сделав ничего. Проверяй **таблицу `runs`**, а не код возврата.
- ⛔ **Порция обязана отдавать РАЗНЫЕ незанятые куски.** Замер 27.08: первый прогон съел 12, каждый следующий по 1, сумма прогонов 21 при 14 готовых кусках → часть выдач повторные. Это тот же почерк, что убил предшественника. Поставь красный тест на «`next --n N` возвращает N разных кусков, ни один из которых не взят».
- ⛔ **Не суди слона по первой ночи.** Смотри `status` через сутки и сверяй фактический темп с обещанным. Расхождение — это поломка, а не «ну оно медленно».
- ⚠️ **Старая задача-предшественник может остаться жить.** Перед заведением нового слона проверь, не крутится ли ещё прежняя рутина по той же работе, и погаси её (иногда нужно админское окно Антона).

---

## Шаг 8. Канарейка и доклад

Перед тем как отдать слона в ночь, прогони **один полный цикл руками** и покажи результат: `next` → работа → `mark` → `tick`, затем `status`. Один зелёный цикл дешевле недели тихого простоя.

Доложи Антону коротко:
- вердикт (🐘 / ♾ / 👤) и по каким признакам;
- сколько кусков, сколько за прогон, **к какой дате доест**;
- кто потребитель результата;
- что произойдёт, когда доест.

Дашборд по §2.4 строй, если фактов больше одного экрана; `elephant.py status` уже даёт таблицу — не дублируй её стеной текста.

---

## Когда этот скилл обязан сработать САМ

Канон — `reglament-dolguyu-rabotu-srazu-sudim-na-rutinu` (anton 10.09.2026, голосом): вердикт выносится **НА ВХОДЕ**, пока работа идёт, а не на разборе в конце.

Четыре повода, любого одного достаточно: работа тянется долго · Антон сказал «занимался месяц» / «по 10 в день» / «ретроспективно вытащить всё» · вижу кучу однотипных шагов · работа спотыкается о его участие, лимиты вендора или баны.

⛔ Ждать вопроса «а это не рутина?» запрещено — этот вопрос от Антона означает, что правило уже не сработало. Автоматическую подсказку даёт хук `~/.claude/hooks/skill_suggest_hook.py`, но он лишь страхует: судить обязан я.

## Границы

- Слон **не отменяет Tier-2**: если куски делают что-то необратимое, наружу или за деньги — это пауза и спрос Антона, сколько бы их ни было.
- Слон **не место для суждения**. Если внутри куска нужен вкус или голос Антона — это сессия, а слон в лучшем случае готовит для неё сырьё.
- Ночное окно (23:00–06:00 Лиссабон) — дом тяжёлых слонов; лёгкие могут идти чаще, если площадка не банит.

## Родня

- CLAUDE.md §4.5-бис (конечные рутины), §4.5 (повтор → рутина), §4.6 (ночное окно), §5.5 (сторож проверяет выход)
- память `finite-routines-eat-the-elephant`, `yt-watch-history-drip`, `deterministic-script-gotchas`
- `/retro` Шаг 4★ — ловит слонов задним числом, на разборе сессии; этот скилл ловит их **на входе**



<!--kit-footer-->

---

**Like this skill?** It is one of 100 in [second-brain-starter-kit](https://github.com/tonydzi/second-brain-starter-kit): the second brain we built for ourselves and run every day at Palo Alto AI Research Lab. Install the whole set with `npx skills add tonydzi/second-brain-starter-kit`. Everything is open source and free, so take what you need.

Flagships worth a look on their own: [secondop-panel](https://github.com/tonydzi/secondop-panel) (a second opinion from a panel of external models), [claude-memory-tidy](https://github.com/tonydzi/claude-memory-tidy) (stop your agent's memory from rotting), [telegram-mcp-kit](https://github.com/tonydzi/telegram-mcp-kit) (your own Telegram over MCP in about 15 minutes).

Author: **Anton Dziatkovskii**, Palo Alto AI Research Lab. Telegram [@tonydzi](https://t.me/tonydzi) - WhatsApp [+1 341 222 9178](https://wa.me/13412229178) - X [@Tony_Stef_](https://x.com/Tony_Stef_)

**Engineers: want to test-drive this setup?** Message me. I hand out free starter seeds to engineers who test and report back, and custom skill requests are welcome.

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…