원클릭으로
electron-ai-key-silent-fail
Diagnose when AI features silently return 'Offline' or 'no API key' despite valid settings
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Diagnose when AI features silently return 'Offline' or 'no API key' despite valid settings
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Find and fix WCAG 2.2 accessibility issues. Two modes — report (sweep a codebase or page, produce a prioritized written report, no edits) and fix (audit→edit→verify loop on a target). Prefers direct-CDP live-DOM auditing; falls back to HTML-string audits.
Diff a live page's accessibility violations against a baseline — by default compares uncommitted changes (stash-based), or pass --branch [<name>] to diff against a branch. Reports only new violations introduced, violations fixed, and pre-existing count. Use `scan` for a full audit with no diffing.
Audit a live page for accessibility issues and locate each violation precisely — pass a URL, a config target name (e.g. `accesslint:scan dev`), or nothing to use the default target from accesslint.config.json. Ensures a debuggable Chrome, runs the @accesslint/core engine via CDP, and returns a worklist of live-DOM WCAG violations grounded to each violation's DOM selector and source file:line. Locates; doesn't edit — output drives fixes by Claude. Use it for "is this page accessible", or to verify a UI change. For diffing against uncommitted changes or a branch, use the `diff` skill.
Remove native title bar double-rendering in Electron by setting `frame: false` and using CSS `-webkit-app-region` for window dragging
When a utility exports a boolean constant but a component imports and calls it as a function — `isNative()` instead of `isNative` — causes "is not a function" at render time
Systematically remove Firebase auth & cloud sync from an Electron + React app — trace dependencies across renderer, main process, and preload bridge
| name | electron-ai-key-silent-fail |
| description | Diagnose when AI features silently return 'Offline' or 'no API key' despite valid settings |
| source | auto-skill |
| extracted_at | 2026-06-06T10:38:00.000Z |
AI features (transforms, chat, OCR) return "[Offline] Cannot transform X → Y without an AI key" or similar, even though Settings shows a valid API key and the provider appears "Active" in the sidebar.
The openai npm package is not installed. Electron's electron/ai.js does:
try {
const { OpenAI } = require('openai')
_client = new OpenAI({ apiKey, baseURL })
} catch {
return null // SILENT FAILURE
}
The require('openai') throws because the package isn't in package.json. The try/catch silently returns null, which makes every AI call fall through to the offline/error path.
npm install openai
Then restart the Electron app (not just Vite HMR — the main process needs a full restart).
Check if openai is in package.json dependencies. If missing, it's the cause. All providers (OpenAI, Gemini, DeepSeek, Groq, Ollama, OpenRouter, DashScope, Custom) use the OpenAI-compatible client, so this single package affects everything.