# Razbivka Marshruta Pod Limit

> «Добраться дешевле лимита», «единый билет дорогой — собери сплит», «разбей маршрут на плечи», «через какой город дешевле въехать в страну», «долететь дёшево».

- Skill: `kir-kopylov/razbivka-marshruta-pod-limit` (Agent Skill, multi-file: 10 files)
- Install (CLI): `npx skillmds@latest add kir-kopylov/razbivka-marshruta-pod-limit`
- Raw SKILL.md: https://api.skillmd.com/api/skills/kir-kopylov/razbivka-marshruta-pod-limit/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: kir-kopylov (https://skillmd.com/u/kir-kopylov)
- Updated: 2026-09-21
- Page: https://skillmd.com/skills/kir-kopylov/razbivka-marshruta-pod-limit

---


# Cheap Route Splitter

## Запуск Навыка

При явном вызове или однозначном смысловом совпадении применяйте навык сразу. Перед первым шагом покажите ровно одну короткую контекстную строку (не более 30 слов) и продолжайте работу в том же ответе, не ожидая реакции:

Применяю **«Поиск дешёвого составного маршрута»**: <кратко назовите конкретную дополнительную процедуру или проверяемый результат для текущего запроса>; продолжаю без ожидания.

Не включайте в строку `author_github`, внутреннее имя папки или пересказ всего запроса. Не спрашивайте, применять ли навык.

Если одновременно подходят совместимые навыки, выберите минимальный набор и покажите одну общую строку. Если подходы ведут к несовместимым результатам и запрос не позволяет выбрать, спросите только о желаемом результате, не о разрешении применить навык.

Запуск навыка не расширяет полномочия. Выполните всю безопасную и уже разрешённую часть; запросите подтверждение только непосредственно перед ещё не разрешённым внешним или изменяющим действием. Не запрашивайте повторно уже данное разрешение и не дублируйте системное окно подтверждения.

## Обзор

Повторяемая задача: единый межстрановой билет стоит дороже лимита пользователя, а составной маршрут — заметно дешевле, потому что перевозчики берут наценку за «шов» между странами. Skill разбирает маршрут на плечи: дёшево въехать в страну назначения (самолёт до входа-хаба или наземный транспорт), купить внутреннее плечо отдельно в местной валюте, свести всё в таблицу с проверенными ценами. Пользователь получает не «идею», а таблицу маршрутов-кандидатов с составом плеч, ценами всё-включено и статусом проверки каждого числа.

## Естественные Входы

- «добраться до [город] дешевле [сумма]», «уложиться в [лимит] до [страна]»;
- «единый билет слишком дорогой, что можно сделать»;
- «разбей маршрут на плечи», «собери сплит-маршрут»;
- «проверь все входы в страну», «через какой город дешевле въехать»;
- «долететь/доехать максимально дёшево, способ не важен».

## Карточка Входов

Зафиксируйте в начале и перечитывайте перед каждым уточняющим вопросом — вопрос разрешён, только если ответа нет в карточке:

- города А и Б; окно дат; лимит бюджета (или «максимально дёшево»);
- гражданство/паспорт пассажира и известные визовые или транзитные ограничения — без этого нельзя сравнивать кандидатов: самый дешёвый вход может быть закрыт для въезда или пересадки;
- багаж: только ручная кладь или чемодан — победитель объявляется только в багажной конфигурации пользователя;
- жёсткий дедлайн прибытия; допустимое время в пути; какие карты оплаты доступны (важно для местной валюты);
- число пассажиров.

Проверку проводи внутренне; пользователю не показывай вероятные ответы и карту изменений.

Перед любым вопросом проведи контрфактическую проверку:
Представь наиболее вероятные ответы пользователя.
Назови, какое решение, действие или часть результата изменит каждый ответ.
Если следующий шаг при всех ответах одинаков — вопрос запрещён.
Если пользователь уже зафиксировал выбор — запиши его, не открывай заново.
Если неизвестное техническое и его можно проверить самостоятельно — проверь, не спрашивай.
Задавай только ближайший вопрос, ответ на который реально меняет результат.

Если не хватает лимита или багажа, выберите один ближайший вопрос. После ответа заново проверьте, изменит ли второй пробел сравнение маршрутов. Остальное — разумные дефолты с явной пометкой в результате.

## Процесс

1. **Baseline и kill-gate 0.** Снимите живую цену единого билета по окну дат. Первой строкой ответа — baseline-блок: `лимит X / baseline (единый билет, live) Y / вердикт: сплит нужен или не нужен`. Baseline уже в лимите — стоп, skill не нужен.
2. **Перебор входов с инвариантом отсечения.** Кандидаты — только входы с прямым первым плечом из города отправления плюс наземные хабы у границы. Вход, достижимый только стыковкой через другой вход, не может быть дешевле своего первого плеча — отсекается без проверки. Полный перебор всех аэропортов страны — только если прямые входы не побили baseline или пользователь явно попросил.
3. **Гейт въезда.** До сравнения по цене каждый кандидат проверяется на въездную допустимость для паспорта пассажира: виза страны входа, транзитные правила, документ для пересечения наземной границы. Кандидат с неподтверждённой допустимостью не участвует в рекомендации — он получает пометку «проверить въезд» и вопрос пользователю. Skill не даёт визовых консультаций: при сомнении — явная передача проверки пользователю, а не догадка.
4. **Сбор сплитов.** Для каждого кандидата: внутреннее плечо страны назначения искать отдельно, на местных источниках, в местной валюте; сравнение каналов — только через живой курс карты пользователя. Цена плеча — всё-включено: багаж в конфигурации пользователя, сборы, транспорт между вокзалами/аэропортами хаба.
5. **Верификация branch-and-bound.** Live-проверяйте (процедура `proverka-aktualnosti-v-momente` как под-шаг) только кандидата, чья оптимистичная оценка бьёт текущего лидера. Регулируемые тарифы (гос-ж/д и т.п.) получают статус «регулируемый» без боя за live. Для наземных плеч дни курсирования — обязательное поле: поезд три раза в неделю убивает сплит.
6. **Стыковки.** Отдельные билеты = риск пассажира: буфер от 2 часов в одном терминале, от полудня при смене вокзала или вида транспорта; ночёвки и повторные регистрации — явно в таблицу.
7. **Результат.** Таблица кандидатов по цене + рекомендация + «что подтвердить при покупке» для плеч со статусом «стена». Каждое число — в карточке плеча.

## Карточка Плеча

Обязательные поля каждого числа в финальной таблице:

- маршрут плеча и вид транспорта;
- цена и валюта покупки;
- статус: `live` (подтверждено вызовом инструмента в этом прогоне) / `оценка` (по [источник, дата] — подтвердить через [канал]) / `регулируемый` (тариф не двигается) / `стена` (сайт не поддался: что именно передано пользователю на ручную проверку);
- состав: прямой или стыковка, время в пути; для земли — дни курсирования;
- источник и дата снимка. Рекомендация несёт метку времени: дешёвое прямое плечо умирает за часы, «вечных» цен нет.

## Экономия Хода

- Иерархия съёма цены: заголовок вкладки после перехода → текст страницы (короткий фрагмент) → дерево интерактивных элементов → скриншот только при провале текстовых способов.
- Лента «цены на соседние даты» покрывает всё окно одним заходом — не снимайте окно по одной дате. Baseline снимается один раз за прогон.
- Бюджет на сайт — 8 вызовов инструментов. Исчерпан — статус «стена», шаг передаётся пользователю; не перебирайте один сломанный виджет разными механизмами.
- Никакого широкого research в базовом прогоне: порядок жёсткий — карточка входов → baseline → перебор → верификация. Research рынка — отдельный расширенный режим по явному запросу пользователя.

## Границы

- Разовая live-проверка одного варианта «в моменте» — это `proverka-aktualnosti-v-momente`, не этот skill.
- Отслеживание динамики цен по расписанию, журнал снимков, графики — отдельная задача (трекер цен), сюда не входит; здесь один снимок на прогон.
- Ранжирование локальных исполнителей и подрядчиков — `reyting-podryadchikov-do-zvonka`.
- Не используйте, когда багаж и стыковки должны быть под защитой одного перевозчика (командировка с жёсткой ответственностью, пассажир с детьми/малым буфером времени): сплит переносит риск разрыва на пассажира — скажите это прямо и остановитесь.
- Не путайте города-омонимы: сверяйте IATA-код и страну каждого пункта.
- Не обещайте валютный арбитраж заранее — он бывает отрицательным; только живое сравнение.
- Skill не покупает билеты и не вводит платёжные данные — финальная бронь всегда за пользователем.

## Опрос После Использования

Опрос задаётся один раз — после выдачи финальной таблицы маршрутов с рекомендацией или после явного стопа (kill-gate 0, отказ по границе), не посреди перебора входов. Если пользователь уже ответил «пропустить» в этой сессии, не переспрашивайте.

```text
Опрос по skill:
1. Что в этом использовании razbivka-marshruta-pod-limit было полезно?
2. Что стоит доработать в skill или его формате?
Можно ответить коротко или написать "пропустить".
```

Если пользователь ответил, сохраните санированную карточку в `~/.codex/skill-runs/razbivka-marshruta-pod-limit/usage-feedback.jsonl` — лучше через bundled script:

```bash
python3 scripts/log_usage_feedback.py --liked "..." --improve "..." --outcome "..."
```

Script перед записью редактирует приватные пути, контакты и token-like строки и сохраняет в JSONL `redaction_applied` и `redaction_types`. Если запись невозможна из-за sandbox, прав или отсутствия tools, не делайте вид, что лог сохранён: скажите об этом и покажите короткую JSONL-карточку для ручного сохранения. Raw-ответы, контакты, пути и секреты не коммитить.

## Логирование Сбоев

Перед выполнением прочитайте локальный `known-exceptions.yaml` как список уже известных случаев и применяйте подходящее `do_next_time` без нового поиска.

Если пользователь поправил skill, tool/API/browser упал, нарушен режим работы, пришлось искать workaround или skill сделал ложное предположение, запишите приватную карточку в `~/.codex/skill-runs/<skill-name>/exception-log.jsonl`.

Пишите факты: что skill хотел сделать, что сделал, где сломался, какая предпосылка была ложной и что сделать в следующий раз. Если поле неизвестно, пишите `unknown`. Raw logs не коммитить.

## Критерий Готовности Ответа

Перед финальным ответом проверьте:

1. Baseline снят live в этом прогоне, baseline-блок стоит первой строкой.
2. У каждого числа в таблице — карточка плеча с полным статусом; «оценка» всегда с формулой «по [источник, дата] — подтвердить через [канал]».
3. Победитель посчитан всё-включено в багажной конфигурации пользователя, для наземных плеч проверены дни курсирования.
4. Каждый кандидат рекомендации прошёл гейт въезда для паспорта пассажира; сомнительные помечены «проверить въезд» и не выданы как победитель.
5. Риски стыковок (буферы, ночёвки, повторная регистрация) названы явно.
6. Все «стены» переданы пользователю списком «что подтвердить при покупке».

