ИИ-инструменты и скрипты
Проверка конфигурации Expo EAS
Проверьте проекты Expo и EAS перед сборкой, отправкой или публикацией обновления: секреты в переменных EXPO_PUBLIC_, конфигурации приложения и eas.json, credentials.json вне .gitignore, dev-сборки в релизных профилях и небезопасные обновления по воздуху.
Что вы получите: 1 файл · 53.69 KB · ZIP
Варианты покупкиОписание товара
EXPO_PUBLIC_OPENAI_API_KEY=... помещает ваш ключ OpenAI открытым текстом в каждую копию вашего приложения, потому что Expo копирует каждое значение EXPO_PUBLIC_, которое читает ваш код, в JavaScript-бандл. Производственный профиль сборки с "developmentClient": true отправляет клиент для разработки пользователям магазина, а "disableAntiBrickingMeasures": true в app.json отключает страховку обновлений для каждой сборки, включая производственную. Этот навык находит такие ошибки и ещё четырнадцать ошибок конфигурации Expo и EAS до выпуска и подсказывает, как исправить каждую из них.
Ваш агент запускает сканер для app.json, app.config.js и app.config.ts, eas.json (комментарии и завершающие запятые допустимы), credentials.json, файлов .env, package.json и .gitignore, а также для ссылок process.env.EXPO_PUBLIC_ в вашем коде на JavaScript и TypeScript. Он знает, какие части конфигурации приложения Expo не включает в публичную конфигурацию, прослеживает профили eas.json через extends, читает правила .gitignore так же, как git, отличает публикуемые клиентские ключи (публикуемые ключи Firebase, Supabase, Stripe и Clerk, RevenueCat, Mapbox, PostHog) от секретных и работает в монорепозиториях с несколькими приложениями. Он никогда не запускает Expo, EAS CLI, конфигурацию вашего приложения или ваш код. Результат: BLOCK, REVIEW или NOT FLAGGED с указанием файла, строки, причины и более безопасного подхода. Секреты никогда не выводятся.
Что проверяется
BLOCK (исправить до публикации)
- E01: переменная EXPO_PUBLIC_, содержащая секрет (в файлах .env, env сборки в eas.json или в коде): значение в формате секретного ключа (секретные ключи Stripe, OpenAI, Anthropic, GitHub, AWS, ключ service_role Supabase и другие), имя, оканчивающееся на _SECRET, _SECRET_KEY, _PASSWORD, _PRIVATE_KEY, _SERVICE_ROLE_KEY или _AUTH_TOKEN, либо API-ключ серверного ИИ-провайдера, почтового или SMS-сервиса, например EXPO_PUBLIC_OPENAI_API_KEY (имена ключей хранилища, такие как EXPO_PUBLIC_AUTH_TOKEN_STORAGE_KEY, не отмечаются)
- E02: секрет в app.json или app.config: значение в формате секрета либо литеральный пароль или секретная настройка в extra, параметрах плагинов или hooks, пароль в URL или ...process.env, развёрнутый в конфигурацию
- E03: секрет в eas.json: переменная env профиля сборки, имя которой оканчивается секретной фразой (или является ключом серверного провайдера), заданная литералом, имя API-ключа или токена, которому присвоено длинное сгенерированное значение, или любое значение в формате секрета
- E04: credentials.json, указанное в нём хранилище ключей или сертификат распространения, ключ App Store Connect или Google Play, указанный в submit в eas.json, или закрытый ключ подписи кода expo-updates в проекте без правила .gitignore, которое бы его покрывало
- E05: профиль сборки production, release или store (не internal), создающий сборку для разработки: developmentClient true (в том числе через extends), конфигурация сборки iOS Debug или команда Gradle Debug
- E06: updates.url по обычному http на публичный хост без подписи в конфигурации приложения, которая также разрешает обычный http (usesCleartextTraffic или NSAllowsArbitraryLoads)
- E07: disableAntiBrickingMeasures true в app.json, что применяется к каждой сборке
REVIEW (проверить до релиза)
- E11: usesCleartextTraffic true (expo-build-properties)
- E12: NSAllowsArbitraryLoads true в ios.infoPlist (App Transport Security отключён)
- E13: собственный сервер обновлений без updates.codeSigningCertificate
- E14: updates.url задан, но runtimeVersion отсутствует, поэтому expo-updates остаётся отключённым
- E15: expo-secure-store с configureAndroidBackup false, в то время как резервное копирование Android разрешено
- E16: переменная EXPO_PUBLIC_ или значение конфигурации приложения с именем как у API-ключа, содержащее длинный сгенерированный литерал, который не является известным публикуемым ключом
- E17: app.config копирует переменную окружения с секретом или API-ключом (например, OPENAI_API_KEY) в extra или параметры плагинов, откуда она попадает в приложение
- E18: disableAntiBrickingMeasures true, прописанный в app.config
- E19: newArchEnabled false в Expo SDK 55 или новее, где эта настройка игнорируется
- E20: любой другой updates.url по обычному http на нелокальный хост: iOS и Android 9 и новее по умолчанию отклоняют его, поэтому обновления обычно не работают
Что входит в комплект
- Сканер (Python 3.9+, только стандартная библиотека)
- Руководство по правилам с причиной, более безопасным подходом и ссылкой на официальную документацию Expo или Apple для каждого правила
- Рискованный и безопасный примеры монорепозиториев (три приложения), а также реальный отчёт сканера по рискованному примеру
Ограничения
Сканер читает текст файлов и никогда не запускает app.config.js или app.config.ts, поэтому значения, построенные функциями или импортами, не прослеживаются, а переменные окружения оцениваются по именам, а не по значениям. E04 принимает решение по тексту .gitignore, а не по истории git, поэтому уже закоммиченный файл не обнаруживается. Переменные окружения EAS, хранящиеся на серверах Expo, не проверяются, а проекты EAS Update без подписи кода не отмечаются, потому что Expo предлагает подпись кода для EAS Update только в платных тарифах. Нативные файлы ios и android не читаются. Официальный пример клиента custom-expo-updates-server разрешает незашифрованный трафик для своего сервера на localhost и намеренно отмечается как E11 REVIEW. NOT FLAGGED не является гарантией.
Содержимое
Один ZIP-файл с 31 файлом: SKILL.md, сканер в scripts/ (8 файлов Python), references/rules.md (каждое правило с причиной и более безопасным подходом) и examples/ (20 файлов примеров и report.md, реальный вывод сканера по рискованному примеру).
Как использовать: это навык для агента: папка с файлом SKILL.md и скриптами Python, которые может запускать ИИ-агент для программирования, например Claude Code, Cursor или Codex CLI. Распакуйте архив в папку навыков вашего агента (для Claude Code: ~/.claude/skills/), затем попросите агента проверить ваш проект. Скрипты также работают самостоятельно с Python 3.9 или новее, ничего устанавливать не нужно. Они только читают ваши файлы: никакого доступа к сети, ничего никуда не отправляется.
Что вы получите
1 файл · 53.69 KB
- expo-eas-config-check-1.0.0.zipZIP · 53.69 KB
ИИ-инструменты и скрипты
Проверка конфигурации Expo EAS
Проверьте проекты Expo и EAS перед сборкой, отправкой или публикацией обновления: секреты в переменных EXPO_PUBLIC_, конфигурации приложения и eas.json, credentials.json вне .gitignore, dev-сборки в релизных профилях и небезопасные обновления по воздуху.
Getly открыл загруженные файлы и не нашёл ничего, что помешало бы их открыть. Это не проверка на вирусы и не оценка качества.
Теги
Частые вопросы
Доступ открывается сразу?
Да. Это цифровой товар - скачать его можно сразу после оплаты, прямо из своей библиотеки.
Можно ли использовать в коммерческих проектах?
Да. Коммерческое использование разрешено: в своём бизнесе и в том, что вы продаёте. Перепродавать и распространять сам файл нельзя.
Какие условия возврата?
Запросить возврат можно в течение 30 дней. Если что-то не так, оформите заявку в своём заказе - её рассмотрит команда Getly.
Какие форматы и размеры файлов я получу?
Вы скачаете 1 файл - ZIP - всего 53.69 KB.
Обновления бесплатны?
Да - когда продавец выпускает новую версию, вы можете бесплатно скачать актуальные файлы из своей библиотеки. Последние изменения смотрите в истории версий.
Цена
$5.00



