glaze-byok-ai
Give Glaze app users a choice of AI engine - built-in Glaze AI (zero setup, uses their Glaze credits), their own free API key (Google Gemini free tier,…
Build, edit, run, and debug Glaze (Raycast) desktop apps directly from Claude Code, for free, using your own Claude subscription instead of Glaze's paid credits. Use whenever the user wants to create, modify, style, fix, or add features to a Glaze app, mentions Glaze, a Glaze
$ npx -y skills add GaimsDevSoftware/glaze-coder --skill glaze-app-dev --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/glaze-app-devContext preview
The summary Claude sees to decide when to auto-load this skill.
Build, edit, run, and debug Glaze (Raycast) desktop apps directly from Claude Code, for free, using your own Claude subscription instead of Glaze's paid credits. Use whenever the user wants to create, modify, style, fix, or add features to a Glaze app, mentions Glaze, a Glaze
name: glaze-app-dev description: Build, edit, run, and debug Glaze (Raycast) desktop apps directly from Claude Code, for free, using your own Claude subscription instead of Glaze's paid credits. Use whenever the user wants to create, modify, style, fix, or add features to a Glaze app, mentions Glaze, a Glaze app, or an app under Glaze's apps folder.
Glaze (by Raycast) builds macOS desktop apps with an AI agent. That built-in agent is what costs **Glaze credits**. But every Glaze app is an ordinary **Claude Code project on disk**, you own the code (Glaze states this explicitly). So you can edit, build and run it with your own Claude Code and local tooling and spend **zero Glaze credits**. Building/compiling is fully local and free.
This skill teaches you to do exactly that safely.
Run this once per task to set up the environment (works on any Mac):
# Find Glaze's data dir (handles profile-name variants) GLAZE_BASE="$(for d in "$HOME/Library/Application Support/"app.glaze.macos.*; do [ -d "$d/apps" ] && echo "$d" && break; done)" echo "BASE=$GLAZE_BASE" ls "$GLAZE_BASE/apps" # each subfolder is one app # Glaze bundles Node >= 24, REQUIRED for builds (system node is often too old) NODE_BIN="$(ls -d "$GLAZE_BASE"/node/runtime/*/bin 2>/dev/null | head -1)" export PATH="$NODE_BIN:$PATH" node -v # should print v24.x # Match Glaze's npm policy without editing its config: [ -f "$GLAZE_BASE/.npmrc" ] && export NPM_CONFIG_USERCONFIG="$GLAZE_BASE/.npmrc"
An app lives at `"$GLAZE_BASE/apps/<app-folder>/"` and contains:
<app-folder>/ ├── .glaze-sources/ ← EDIT HERE (the real source) ├── .glaze/ ← build output, NEVER touch ├── .claude/ ← project Claude config (settings.local.json) └── <ProductName>.app ← symlink to the installed app in /Applications/Glaze/
Each Glaze install ships its own always-current guide + skills. Read them before coding:
(backend/frontend layout, window/tray/notification/global-shortcut recipes, bundling, publishing, and an "SDK API Reference" section that tells you how to look up exact `@glaze/core` exports and `window.glazeAPI` symbols instead of enumerating `sdk/current`).
the user's Glaze install (the set grows with each SDK release, so list the folder rather than trusting a fixed count). Core ones: `glaze-component-patterns`, `glaze-frontend-rules`, `glaze-backend-rules`, `glaze-ipc-communication`, `glaze-data-storage`, `glaze-external-api`, `glaze-browser-window-recipes`, `glaze-theming`, `glaze-oauth`. Newer ones you should know exist:
Not the default AI path; only for users known to have Claude Code installed.
default, in-app HTTP for live control) so the app is usable from Claude Code, Codex, etc.
`getFileIconUrl()` / `getFileThumbnailUrl()` from `@glaze/core/utils`.
(where `SRC="$GLAZE_BASE/apps/<app-folder>/.glaze-sources"`).
publish rejects apps that call AI without it), call `generateText` from the backend or the `useGlazeAI` hook in the renderer, and pick a grade (`"fast"`/`"smart"`/`"powerful"`), never a raw model id. Glaze owns consent/credits/blocked-state UI. Do not trigger AI calls just to verify a build. Details: `glaze-ai`. **Default for apps built with this plugin: give the end user an AI engine choice.** Whenever you add an AI feature, also implement the engine picker from this plugin's `glaze-byok-ai` skill (Glaze AI as default + the user's own free Gemini key, optionally OpenRouter), so users decide whether using the app costs them anything. Skip it only if the user building the app asks for Glaze-only AI, or the app targets Claude Code users (`glaze-claude-cli`).
`claude -p`. Backend only, no credential collection. Details: `glaze-claude-cli`.
Details: `glaze-mcp-server`.
JXA/`sips` or push base64 icons over IPC. Details: `glaze-native-images`.
Read the matching skill BEFORE writing code that touches: UI components, IPC handlers, data storage, external APIs, native permissions, windows/tray, CLI tools, or perf-sensitive code.
Frontend (React 19 + Vite + TanStack Router/Query + Tailwind v4, in `.glaze-sources/renderer/`) renders in a macOS WebView and talks over a JSON-RPC IPC bridge to the Backend (Node.js, in `.glaze-sources/main/`, which calls Swift host APIs). The SDK `@glaze/core` mirrors much of Electron's API surface, use Electron as a *starting point* but verify each API is actually exported here. Renderer calls the backend via `window.glazeAPI` (exposed through `renderer/preload.ts`); only `preload.ts` may import `ipcRenderer`.
<critical>
Build Glaze (by Raycast) desktop apps from Claude Code, using your own Claude subscription instead of Glaze's paid credits. Glaze builds Mac apps with a built-in AI agent, and that agent is what spends Glaze credits.
Give Glaze app users a choice of AI engine - built-in Glaze AI (zero setup, uses their Glaze credits), their own free API key (Google Gemini free tier,…