Рано или поздно скилу нужен платный сервис: проверка контрагента, погода, карты, рассылка. А значит, нужен API-ключ. И вот тут происходит главная ошибка новичка: ключ так и тянет вписать прямо в код или прямо в файл скила - “чтобы работало”. Работает. До первого коммита.
Дальше сценарий грустный и типовой. Ключ уехал в репозиторий. Репозиторий стал публичным или его просто увидел кто-то ещё. Ключ нашли боты, которые круглосуточно сканируют гитхаб именно на такие утечки. И теперь по твоему ключу кто-то жжёт лимит платного сервиса, а счёт прилетает тебе. Удалить ключ из истории git задним числом - отдельная боль, проще сразу его отозвать и завести новый.
Хорошая новость: чтобы этого не случилось, не нужно ничего сложного. Нужно одно простое правило, и сегодня мы его зашьём прямо в скил. Разберём на приземлённом примере - скил, который проверяет контрагента по ИНН через сервис DaData и возвращает название, статус, руководителя и основной код ОКВЭД (это именно код вида деятельности, например 46.69.4, а не его расшифровка).
В чём идея
Правило ровно одно: ключ живёт отдельно от кода. Не в файле скила, не в коде, не в репозитории - а в переменной окружения. Это такая именованная настройка операционной системы (например, DADATA_TOKEN), которую видит запущенная программа, но которой нет ни в одном файле проекта. Код не хранит ключ - он его просто читает из окружения в момент запуска.
Почему это работает? Потому что в репозиторий уезжают файлы, а переменные окружения - не файлы. Ты можешь спокойно выложить скил хоть в открытый доступ: в нём нет ключа, в нём есть только инструкция “возьми ключ из окружения”. Ключ остаётся у тебя на машине. У другого человека будет свой ключ в своём окружении - и тот же самый скил заработает у него, без единой правки.
Поэтому хороший скил с секретом устроен так: в самом скиле написано не “ключ равно вот эти буквы”, а “прочитай ключ из переменной DADATA_TOKEN; если её нет - остановись и попроси задать”. Скил при этом никогда не печатает ключ в ответ и не пишет его в лог - чтобы секрет не утёк ещё и через вывод.
И второй момент, про вежливость к чужому сервису - лимиты. У бесплатного плана DaData это около десяти тысяч запросов в сутки. Звучит много, но скил легко спалить весь лимит за минуту, если дёргать сервис в цикле или проверять один и тот же ИНН по кругу. Правильный скил уважает лимит: один запрос на один ИНН, без лишних повторов. Тогда тебя не заблокируют и хватит на всех.
Как себе сделать
Не пиши скил руками и тем более не разбирайся, где у твоей системы переменные окружения и какой синтаксис у запроса. Отдай задачу своему ассистенту - Claude Code, Codex, Cursor, Gemini, любому. Он сам положит файл куда надо и оформит чтение ключа из окружения под твою систему. Сначала заведи ключ на dadata.ru и положи его в переменную окружения DADATA_TOKEN, а потом просто скопируй промпт:
Создай мне скил, который проверяет контрагента по ИНН через сервис DaData и возвращает название, статус, руководителя и основной ОКВЭД.
Срабатывай на просьбы вроде "проверь контрагента", "пробей компанию по ИНН", "кто директор по ИНН".
Главное правило по секрету: API-ключ бери ТОЛЬКО из переменной окружения DADATA_TOKEN. В код и в файл скила ключ не вписывай никогда - иначе он утечёт в репозиторий. Если переменной нет - остановись и попроси её задать, ключ не выдумывай. В ответ и в лог ключ не печатай.
Данные запрашивай у DaData методом findById по ИНН. Не завязывайся на конкретную ОС или на Python - ходи любым инструментом, что есть в системе.
Уважай дневной лимит сервиса: один запрос на один ИНН, без циклов и повторов.
Как понять, что заработало: сначала проверь, что ключа нет в файлах - задай ассистенту “найди в скиле API-ключ”, он должен ничего не найти, только ссылку на переменную окружения. Потом напиши по-человечески “проверь контрагента по ИНН 7707083893”. Если он сам возьмёт ключ из окружения, сходит в сервис и вернёт карточку компании - всё на месте: и секрет спрятан, и скил живой.
И всё. Ты только что дал ассистенту платный ключ так, что его невозможно случайно слить в репозиторий. Это не разовый трюк для одного скила - это правило для любого скила с секретом: ключ в окружении, в коде - никогда.
Смотреть полностью
- YouTube: https://www.youtube.com/watch?v=L5KZR-qSRAA
- VK Видео: https://vk.com/video-233222565_456239042
- Rutube: https://rutube.ru/video/d792df745387ea491ba19b068894a87e/
Коротко
- YouTube Shorts: https://www.youtube.com/shorts/sWE_j16I4PM
- VK Клипы: https://vk.com/clip-233222565_456239043
- Rutube: https://rutube.ru/video/430d2865f7a986647f30824731a76662/
- Telegram: https://t.me/chernovdev/2127
