export-download-debugging — Claude Code skill: what it does
Diagnoses and resolves failed downloads, broken File System Access API calls, and 0 KB file exports in browsers and Electron shells.
npx skills add nexu-io/open-design --skill export-download-debugging -a claude-codeWhat export-download-debugging does
This skill guides debugging when an export runs but leaves behind an empty or broken file. The core directive separates payload preparation from the actual save call. When a downloaded file sits at 0 KB on disk, the operating system usually created the file handle before the write stream failed.
The workflow validates payload bytes before showing any save dialog. Never trigger native pickers early. If showSaveFilePicker or createWritable fails inside an iframe or sandbox, the fix routes the output through standard <a download> tags or Electron's download manager. For PNG images under strict CSP policies, it switches from blob URLs to verified data URLs.
Verification requires running export tests alongside pnpm --filter @open-design/web typecheck. Electron changes also call for running desktop type checks and pnpm guard before opening a pull request.
What it helps with
- fix 0 KB files generated by failed write streams
- route failed
createWritablecalls to an<a download>fallback - replace failing blob URLs with data URLs under strict CSP rules
- configure image extension filters for Electron Save As dialogs
Example prompts for the agent
- Debug why image export produces a 0 KB file in the browser preview
- Fix the createWritable error by adding an a-download fallback channel
- Inspect the Electron will-download handler and add image extension filters
How to install export-download-debugging
1Skills CLI (Vercel)
npx skills add nexu-io/open-design --skill export-download-debugging -a claude-code2Manually: put the files in place
~/.claude/skills/export-download-debugging/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/export-download-debugging/
1Skills CLI (Vercel)
npx skills add nexu-io/open-design --skill export-download-debugging -a codex2Manually: put the files in place
.agents/skills/export-download-debugging/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add nexu-io/open-design --skill export-download-debugging -a cursor2Manually: put the files in place
.cursor/skills/export-download-debugging/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install nexu-io/open-design export-download-debugging2Manually: put the files in place
.github/skills/export-download-debugging/SKILL.md1Skills CLI (Vercel)
npx skills add nexu-io/open-design --skill export-download-debugging -a gemini-cli2Platform CLI
gemini skills install https://github.com/nexu-io/open-design --path skills/export-download-debuggingManually: put the files in place
.devin/skills/export-download-debugging/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add nexu-io/open-design --skill export-download-debugging -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
From the same set106
The whole set →Similar
Questions about export-download-debugging
How do I install export-download-debugging in Claude Code?
Run npx skills add nexu-io/open-design --skill export-download-debugging -a claude-code in your terminal.
What does export-download-debugging do?
It directs the coding agent to validate export payloads before triggering file pickers and provides fallback paths like <a download> when native file system APIs fail.
How does the skill handle 0 KB download bugs?
It keeps the Save action disabled until payload bytes are confirmed in memory, preventing the host OS from creating an empty target file prior to writing.
Source text
SKILL.md · Apache-2.0
--- name: export-download-debugging description: | Diagnose and fix browser, preview, or Electron export/download failures, especially image export issues involving Save As, Blob/Data URLs, the File System Access API, createWritable failures, and 0 KB files. triggers: - "export image failed" - "image export" - "download is 0kb" - "0 KB file" - "showSaveFilePicker" - "createWritable" - "blob URL" - "Electron download" od: mode: utility category: web-artifacts --- # Export Download Debugging Use this when an export or download appears to run but produces an empty, missing, or unusable file. It is tuned for browser previews, iframe capture, and Electron shells. ## Core rule Separate capture from save. Prove the export payload has non-zero bytes before debugging the destination path. A 0 KB file often means the native picker or host created the target file, then the write failed or was blocked. ## Evidence - Record the payload type, MIME type, byte length, object URL or data URL path, and thrown error name/message. - Check browser console output and app logs around `showSaveFilePicker`, `createWritable`, `<a download>`, `URL.createObjectURL`, and URL revocation. - In Electron, inspect the `will-download` path: filename, MIME, file extension, save dialog filters, cancellation, and final file size. - Confirm the actual downloaded file size on disk and whether it opens in a normal image viewer. ## Fix order 1. Prepare and validate the export payload first; disable Save until bytes are available. 2. Prefer the simplest stable save channel for the host. If `showSaveFilePicker().createWritable()` fails, is sandboxed, or creates empty files, route to `<a download>` or Electron's download manager instead. 3. Avoid opening a native picker before the payload is ready. This prevents the host from creating an empty destination file on later write failure. 4. For PNG fallback, prefer a verified non-empty data URL when blob URLs, revocation timing, CSP, or iframe sandboxing are suspicious. 5. In Electron, add explicit Save As filters for exported image extensions (`.png`, `.jpg`, `.jpeg`, `.webp`) so users can choose a real image target. 6. Keep the UI restrained: format selection, filename/path hint, clear pending and error states, and one primary save action. ## Validation - Add or update tests for non-empty payload preparation, fallback save behavior, file extension/MIME mapping, and UI disabled/error states. - Run focused export tests, then `pnpm --filter @open-design/web typecheck`. - If Electron download handling changed, also run `pnpm --filter @open-design/desktop typecheck`. - Before landing, run `pnpm guard`, inspect the staged diff for unrelated files, generated artifacts, and accidental secrets, then use the repository's PR quality-gate workflow if the fix is being prepared for review.
© nexu-io · Apache-2.0 · nexu-io/open-design