// the find
Code-with-Beto/snapai
AI-powered icon generation CLI for React Native & Expo developers. Generate stunning app icons in seconds using OpenAI's latest models.
A CLI tool that wraps OpenAI and Gemini image generation APIs to produce mobile app icons and Google Play feature graphics. It targets React Native and Expo developers who want to generate 1024x1024 assets from a text prompt without leaving the terminal. Thin wrapper around provider APIs with some prompt enhancement and image-processing utilities on top.
The dual-provider support (OpenAI gpt-image-* and Gemini flash/pro variants) behind a single consistent CLI interface is genuinely useful — you're not locked into one vendor's image quality or pricing. Prompt enhancement is a real feature, not just forwarding your string verbatim; the preview flag (`--prompt-only`) lets you inspect what gets sent before burning credits. No backend, no telemetry, no account — keys stay on your machine and go straight to the provider, which is the right call for a tool like this. The agent skill integration (compatible with Codex, Claude Code) means it can be dropped into an agentic workflow and driven by natural language.
The source tree is essentially a thin CLI shim over two provider SDKs — `src/services/openai.ts` and `src/services/gemini.ts` are doing the real work, and there's nothing here that couldn't be reproduced in an afternoon. The prompt enhancement logic in `src/utils/icon-prompt.ts` is black-box; no tests are visible in the tree, so you have no idea how it performs across different input styles until you've spent credits. Output is fixed at `./assets` by default with basic save utilities — there's no batch processing, no manifest generation for Expo's `app.json`, and no resize pipeline to the multiple sizes Expo actually needs (the agent skill handles that separately, but the CLI alone leaves that work to you). Model naming is confusing: `banana` maps to Gemini Flash, `banana-2` to a preview model, `--pro` to another — none of which are discoverable without reading the docs.