Последние три месяца я живу в парадигме, где обычные мобильные приложения постепенно заменяются текстовыми командами в терминале. Звучит как откат в 90-е, но на практике это быстрее, удобнее и мощнее, чем нажатия по экрану. Рассказываю, как создал skill для управления личным кабинетом СберМобайл через Claude Code, почему это уже второй подобный проект и куда движется эта идея.
Что такое Claude Code Skills
Claude Code — это CLI-агент от Anthropic, который работает в терминале и может писать код, управлять файлами, запускать команды. Главная фишка — система skills (или slash commands). Skill — это markdown-файл, который добавляет Claude новую способность: какие API вызывать, как авторизовываться, что отвечать пользователю.
Файл кладётся в ~/.claude/commands/, вызывается командой /имя-скилла. Claude получает полный контекст: документацию API, примеры запросов, формат ответа. Дальше он сам решает, какие вызовы сделать и как обработать результат. Не нужно ни фронтенда, ни мобильного приложения — только терминал и естественный язык.
Первый опыт: skill для Dodo Pizza
Всё началось с желания заказать пиццу без открытия приложения. Я создал /dodo — и Claude стал моим ассистентом: показывает меню, ищет по названию, отображает корзину и профиль.
Технически skill использует Puppeteer — headless-браузер Chrome. Причина в защите сайта Dodo Pizza: он стоит за ServicePipe, и любые прямые HTTP-запросы блокируются. Авторизация требует видимый браузер и прохождение reCAPTCHA. Это работает, но тяжело: Chrome жрёт память, запуск медленный, капча — ручное вмешательство.
После этого я задумался: а можно ли сделать следующий skill проще — без браузера, без капчи, на чистых REST-вызовах?
Зачем нужен skill для мобильного оператора
Я пользуюсь СберМобайл: часто звоню, раздаю интернет, периодически проверяю остатки. Каждый раз — одни и те же действия: открыть приложение, ждать, переключаться между вкладками. Три нажатия, чтобы узнать, сколько гигабайт осталось. Пять — чтобы посмотреть подключённые услуги.
Хотелось видеть всю информацию сразу: остатки, тариф, услуги, бонусы — одним запросом. Ни одно приложение так не умеет: данные размазаны по экранам. А вот AI-агент может собрать их из нескольких API и дать сводку за один ответ.
Как устроен SberMobile skill
Разведка API
Первый шаг — изучить личный кабинет. Я открыл lk.sbermobile.ru в Chrome DevTools и начал записывать сетевые запросы. Оказалось: это SPA-приложение с базовым API по адресу https://lk.sbermobile.ru/v2/api/. Все данные — в JSON, без антиботов и ServicePipe. Просто REST API с авторизацией. После Dodo Pizza это было как глоток свежего воздуха.
Несколько неочевидных деталей:
- Токен передаётся в заголовке
token, а не вAuthorization: Bearer. - Номер телефона — 10 цифр без
+7, в полеnumber, а неphone. - Все суммы — в копейках:
39000означает 390 рублей.
Архитектура
Проект состоит из двух слоёв: Python-клиента и набора AI-skills поверх него.
Python-клиент
SberMobileClient — обёртка над requests. Один файл, около 350 строк, единственная зависимость — requests. Поддерживает авторизацию через SMS OTP, автоматически сохраняет и подгружает токен из /tmp/sbermobile_token.json. Все методы — read-only GET-запросы: тариф, остатки, услуги, платежи, промо, семья.
Токен живёт долго, и при следующем запуске клиент использует его автоматически. Не нужно авторизовываться каждый раз.
Skills — атомарные способности агента
Каждый skill — это Python-класс, наследник базового Skill. У него есть имя, описание для LLM (когда и зачем вызывать), JSON Schema входных параметров и метод execute(). Skill может вызывать один или несколько методов клиента и агрегировать результат.
Шесть skills покрывают основные сценарии:
- Проверка остатков (гигабайты, минуты, SMS).
- Информация о тарифе и стоимости.
- Список подключённых услуг.
- Рекомендации по пополнению и статус бонусов СберСпасибо.
- Акции и персональные предложения.
- История платежей.
Все skills — только для чтения. Write-операции (смена тарифа, подключение опций) в API есть, но я сознательно не включил их в публичную версию. Хотя Smart executor умеет запрашивать подтверждение перед изменением данных — эта функция пока отложена.
SKILL.md — точка входа для Claude Code
Файл SKILL.md — это то, что Claude Code читает при вызове /sbermobile. Он содержит инструкции: как создать клиент, какие методы вызывать, как обрабатывать ошибки авторизации. По сути, это промпт, который превращает Claude из универсального ассистента в специалиста по моему личному кабинету.
agent_demo.py — автономный агент
Помимо skill для Claude Code, в проекте есть standalone-агент (examples/agent_demo.py). Это полноценный агентский цикл: пользователь задаёт вопрос, Claude решает, какие skills вызвать, получает данные, формирует ответ. Всё работает на Anthropic Python SDK — всего 130 строк кода. Можно запускать без Claude Code: в Jupyter, на сервере, где угодно.
Вот типичные запросы, которые я использую:
- «Сколько у меня осталось гигабайт и минут?»
- «Какой у меня тариф и сколько я плачу?»
- «Какие услуги у меня подключены?»
- «Сколько мне пополнить и есть ли бонусы СберСпасибо?»
- «Какие есть акции или предложения для меня?»
Помогает находить инсайты
Например, агент может проанализировать расход трафика за месяц и предложить более выгодный тариф. Или напомнить, что подключённая опция не используется — и её можно отключить.
Пополнить баланс не заходя в банк
Хотя write-операции пока отключены, сам факт, что агент знает, сколько нужно пополнить, уже экономит время. В будущем можно будет добавить подтверждение и автоматическое пополнение.
Что дальше
У меня уже два работающих skill-а: Dodo Pizza и СберМобайл. Первый — через headless-браузер, второй — через чистые REST-вызовы. Разница в скорости и удобстве — колоссальная. REST-skill отвечает за секунду, браузерный — за 10–15.
Но идея шире. Я вижу это как агентскую систему управления повседневными сервисами. Следующие кандидаты:
- Банк — остатки, переводы, история операций.
- Маркетплейс — отслеживание заказов, статус доставки.
- Транспорт — баланс карты, маршруты.
- Госуслуги — статус заявлений, записи.
Представьте утренний запрос в терминале: «дай сводку» — и Claude сам обращается к оператору, банку, маркетплейсу и выдаёт одним сообщением: остаток на балансе, статус доставки, сколько гигабайт осталось. Это не футуристика — это рабочий паттерн уже сегодня.
Каждый skill — это одна зависимость (requests или puppeteer), один markdown-файл с промптом и несколько API-вызовов.
Код проекта доступен на GitHub: https://github.com/pocketpet/sbermobile-skill