baoyu-electron-extract
Skill27k starsChanged 6 months agoMITView on GitHub
Extracts resources and JavaScript from any installed Electron app (`.asar` bundle), restoring original sources from `.js.map` files when available or formatting minified code with Prettier otherwise. Use when user wants to "extract Electron app", "decompile Electron", "get the source code of <app>", "inspect app.asar", "看 Electron 应用源码", "提取 .asar", or asks how a desktop Electron app is built. Skips `node_modules` and supports both macOS and Windows.
Adopted by
Steady: 0 new projects took it in the last 4 weeks, none the 4 weeks before.thin data
Who's talking about JimLiu/baoyu-skills
- 宝玉的技术分享“Agent Skills 设计哲学和实战进化”YouTube · Mar 23, 2026 · 2k views
- Yangjin | AI, Life & Business“我让 Codex 找 GitHub Skill,为什么一个都没直接装?”YouTube · Jul 19, 2026 · 1.4k views
- GitHub Trending Digest“baoyu-skills - GitHub Trending Today”YouTube · Apr 11, 2026 · 236 views
- Find Interesting AI“OPC时代—程序员的营销基础、工具选择、学习建议”YouTube · Jul 5, 2026 · 150 views
- AI워크랩“ChatGPT 보고서 꾸미기 스킬 5개 설치해 써 봤다 — Word 서식 · 테마 10종 · PPT 10장 | GitHub 인기 스킬”YouTube · Oct 21, 2026 · 114 views
The biggest 5 of 66 mentions linking to the repository that our crawl found. Each line is their own headline.
See all 66
Talked about on GitHub, YouTube, Bluesky and the web (66 times).
On GitHub · 50
- Nov 7, 2026candidate: baoyu-wechat-summary — BigPengSays/awesome-creator-skills0 reactions
- Nov 7, 2026candidate: baoyu-post-to-wechat — BigPengSays/awesome-creator-skills0 reactions
- Nov 6, 2026candidate: baoyu-wechat-summary — BigPengSays/awesome-creator-skills0 reactions
- Nov 6, 2026candidate: baoyu-post-to-wechat — BigPengSays/awesome-creator-skills0 reactions
- Nov 5, 2026candidate: baoyu-wechat-summary — BigPengSays/awesome-creator-skills0 reactions
45 more on GitHub
- Nov 5, 2026candidate: baoyu-post-to-wechat — BigPengSays/awesome-creator-skills0 reactions
- Nov 4, 2026candidate: baoyu-wechat-summary — BigPengSays/awesome-creator-skills0 reactions
- Nov 4, 2026candidate: baoyu-post-to-wechat — BigPengSays/awesome-creator-skills0 reactions
- Nov 3, 2026candidate: baoyu-wechat-summary — BigPengSays/awesome-creator-skills0 reactions
- Nov 3, 2026candidate: baoyu-post-to-wechat — BigPengSays/awesome-creator-skills0 reactions
- Nov 2, 2026candidate: baoyu-wechat-summary — BigPengSays/awesome-creator-skills0 reactions
- Nov 2, 2026candidate: baoyu-post-to-wechat — BigPengSays/awesome-creator-skills0 reactions
- Nov 1, 2026candidate: baoyu-wechat-summary — BigPengSays/awesome-creator-skills0 reactions
- Nov 1, 2026candidate: baoyu-post-to-wechat — BigPengSays/awesome-creator-skills0 reactions
- Oct 31, 2026candidate: baoyu-wechat-summary — BigPengSays/awesome-creator-skills0 reactions
- Oct 31, 2026candidate: baoyu-post-to-wechat — BigPengSays/awesome-creator-skills0 reactions
- Oct 30, 2026candidate: baoyu-wechat-summary — BigPengSays/awesome-creator-skills0 reactions
- Oct 30, 2026candidate: baoyu-post-to-wechat — BigPengSays/awesome-creator-skills0 reactions
- Oct 29, 2026candidate: baoyu-wechat-summary — BigPengSays/awesome-creator-skills0 reactions
- Oct 29, 2026candidate: baoyu-post-to-wechat — BigPengSays/awesome-creator-skills0 reactions
- Oct 28, 2026candidate: baoyu-wechat-summary — BigPengSays/awesome-creator-skills0 reactions
- Oct 28, 2026candidate: baoyu-post-to-wechat — BigPengSays/awesome-creator-skills0 reactions
- Oct 27, 2026candidate: baoyu-wechat-summary — BigPengSays/awesome-creator-skills0 reactions
- Oct 27, 2026candidate: baoyu-post-to-wechat — BigPengSays/awesome-creator-skills0 reactions
- Oct 26, 2026candidate: baoyu-wechat-summary — BigPengSays/awesome-creator-skills0 reactions
- Oct 26, 2026candidate: baoyu-post-to-wechat — BigPengSays/awesome-creator-skills0 reactions
- Oct 25, 2026candidate: baoyu-wechat-summary — BigPengSays/awesome-creator-skills0 reactions
- Oct 25, 2026candidate: baoyu-post-to-wechat — BigPengSays/awesome-creator-skills0 reactions
- Oct 24, 2026candidate: baoyu-wechat-summary — BigPengSays/awesome-creator-skills0 reactions
- Oct 24, 2026candidate: baoyu-post-to-wechat — BigPengSays/awesome-creator-skills0 reactions
- Oct 23, 2026candidate: baoyu-wechat-summary — BigPengSays/awesome-creator-skills0 reactions
- Oct 23, 2026candidate: baoyu-post-to-wechat — BigPengSays/awesome-creator-skills0 reactions
- Oct 22, 2026candidate: baoyu-wechat-summary — BigPengSays/awesome-creator-skills0 reactions
- Oct 22, 2026candidate: baoyu-post-to-wechat — BigPengSays/awesome-creator-skills0 reactions
- Oct 21, 2026candidate: baoyu-wechat-summary — BigPengSays/awesome-creator-skills0 reactions
- Oct 21, 2026candidate: baoyu-post-to-wechat — BigPengSays/awesome-creator-skills0 reactions
- Oct 20, 2026candidate: baoyu-wechat-summary — BigPengSays/awesome-creator-skills0 reactions
- Oct 20, 2026candidate: baoyu-post-to-wechat — BigPengSays/awesome-creator-skills0 reactions
- Oct 19, 2026candidate: baoyu-wechat-summary — BigPengSays/awesome-creator-skills0 reactions
- Oct 19, 2026candidate: baoyu-post-to-wechat — BigPengSays/awesome-creator-skills0 reactions
- Oct 18, 2026candidate: baoyu-wechat-summary — BigPengSays/awesome-creator-skills0 reactions
- Oct 18, 2026candidate: baoyu-post-to-wechat — BigPengSays/awesome-creator-skills0 reactions
- Oct 17, 2026candidate: baoyu-wechat-summary — BigPengSays/awesome-creator-skills0 reactions
- Oct 17, 2026candidate: baoyu-post-to-wechat — BigPengSays/awesome-creator-skills0 reactions
- Oct 16, 2026candidate: baoyu-wechat-summary — BigPengSays/awesome-creator-skills0 reactions
- Oct 16, 2026candidate: baoyu-post-to-wechat — BigPengSays/awesome-creator-skills0 reactions
- Oct 15, 2026candidate: baoyu-wechat-summary — BigPengSays/awesome-creator-skills0 reactions
- Oct 14, 2026candidate: baoyu-wechat-summary — BigPengSays/awesome-creator-skills0 reactions
- Oct 5, 2026[Candidate] jimliu/baoyu-skills/skills/baoyu-compress-image - baoyu-compress-image — ProSkillsMD/proskills0 reactions · 1 comment
- Oct 5, 2026[Candidate] jimliu/baoyu-skills/skills/baoyu-comic - baoyu-comic — ProSkillsMD/proskills0 reactions · 1 comment
On YouTube · 12
- Mar 23, 2026Agent Skills 设计哲学和实战进化 — 宝玉的技术分享2k views · 5 comments
- Jul 19, 2026我让 Codex 找 GitHub Skill,为什么一个都没直接装? — Yangjin | AI, Life & Business1.4k views
- Apr 11, 2026baoyu-skills - GitHub Trending Today — GitHub Trending Digest236 views
- Jul 5, 2026OPC时代—程序员的营销基础、工具选择、学习建议 — Find Interesting AI150 views · 2 comments
- Oct 21, 2026ChatGPT 보고서 꾸미기 스킬 5개 설치해 써 봤다 — Word 서식 · 테마 10종 · PPT 10장 | GitHub 인기 스킬 — AI워크랩114 views
7 more on YouTube
- May 19, 2026Skills profissionais para Claude Code, Codex, Gemini e Cursor #AI #Shorts — RepoShots105 views · 1 comment
- Mar 11, 2026baoyu-skills hit 9.4K GitHub stars #BaoyuSkills #AgentSkills #ClaudeSkills #CodexSkills #Shorts — Pulse100 views · 1 comment
- May 19, 2026ClaudeCode 实战应用-打通公众号从配图、排版到推送到草稿箱,一气呵成,不再被编辑器束缚 — NicknickAI59 views
- Oct 28, 2026baoyu-skills: This AI agent can create new skills while it works — HubMesh40 views
- Oct 26, 20263 skills de Claude que convierten tu texto en cómics e infografías 🎨 — BarbuPrime IA | Claude Code Vs Codex14 views · 1 comment
- Oct 24, 2026一张产品图,做出两版醒目封面 — 慢半拍的安迪鲁14 views
- Oct 24, 2026用Codex把一页说明变成六步上手图|相机入门 #Shorts — 慢半拍的安迪鲁14 views
On Bluesky · 3
- Aug 11, 2026📦 JimLiu / baoyu-skills ⭐ 24,846 (+50) 🗒 TypeScript — @github-trending-js.bsky.social1 likes and repost
- Apr 11, 2026🔥 Hot Repo! 🔥 (100+ new stars) 📦 JimLiu / baoyu-skills ⭐ 14,102 (+111) 🗒 TypeScript — @github-trending-js.bsky.social1 likes and repost
- Feb 20, 2026https://github.com/JimLiu/baoyu-skills — @tom-doerr.bsky.social1 likes and repost
On the web · 1
- Nov 2, 2026baoyu-infographic Skill: Turn Text into Infographics | PlugWiki — plugwiki.com
In this repository22 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- release-skillsSkill
- baoyu-article-illustratorSkill
- baoyu-comicSkill
- baoyu-compress-imageSkill
- baoyu-cover-imageSkill
- baoyu-danger-gemini-webSkill
- baoyu-danger-x-to-markdownSkill
- baoyu-diagramSkill
- baoyu-format-markdownSkill
- baoyu-image-genSkill
- baoyu-infographicSkill
- baoyu-markdown-to-htmlSkill
- baoyu-post-to-wechatSkill
- baoyu-post-to-weiboSkill
- baoyu-post-to-xSkill
- baoyu-slide-deckSkill
- baoyu-translateSkill
- baoyu-url-to-markdownSkill
- baoyu-wechat-summarySkill
- baoyu-xhs-imagesSkill
- baoyu-youtube-transcriptSkill
The file
We split this skill into the rules it gives an agent
5 rules. About 0 are common, 3 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈3
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 18
When this skill prompts the user, follow this tool-selection rule (priority order):
- Distinctive: line 21
Fallback: if no such tool exists, emit a numbered plain-text message and ask the user to reply with the chosen number/answer for each …
- Distinctive: line 22
Batching: if the tool supports multiple questions per call, combine all applicable questions into a single call.
- Very specific: line 44
If unsure discovery will find the right bundle, run with --dry-run first (prints resolved paths, writes nothing).
- Very specific: line 56
Only extracted/ (no maps) → JS/CSS in extracted/ was Prettier-formatted in place.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Electron App Extract
User Input Tools
When this skill prompts the user, follow this tool-selection rule (priority order):
- Prefer built-in user-input tools exposed by the current agent runtime — e.g.,
AskUserQuestion,request_user_input,clarify,ask_user, or any equivalent. - Fallback: if no such tool exists, emit a numbered plain-text message and ask the user to reply with the chosen number/answer for each question.
- Batching: if the tool supports multiple questions per call, combine all applicable questions into a single call; if only single-question, ask them one at a time in priority order.
Concrete AskUserQuestion references below are examples — substitute the local equivalent in other runtimes.
Script Directory
{baseDir} = this SKILL.md's directory. Resolve ${BUN_X}: bun if installed; else npx -y bun; else suggest installing bun. Replace {baseDir} and ${BUN_X} with actual values.
| Script | Purpose |
scripts/main.ts | App discovery + asar extraction + source-map restoration + Prettier formatting |
Workflow
1. Determine the input. Accepts an app name (e.g., Codex) or absolute path (/Applications/Codex.app, a .asar file, or a Windows install dir). Ask for it if not given; ask for a custom output directory if they want one.
2. Run the script.
${BUN_X} {baseDir}/scripts/main.ts "<app>" [--output <dir>] [--asar <path>] [--force]If unsure discovery will find the right bundle, run with --dry-run first (prints resolved paths, writes nothing).
3. Handle the result.
- Success → report output paths and counts (extracted / restored / formatted).
- Multiple matches → script lists candidates and exits non-zero. Ask the user which one (via
AskUserQuestionor the runtime equivalent), then re-run with the chosen absolute path. - Existing non-empty output dir → script refuses without
--force. Ask whether to overwrite (--force) or pick a new--output. - Unsupported platform / no match → suggest
--asar /full/path/to/app.asarif the user knows where the bundle lives.
4. Point the user at the result (default ~/Downloads/<AppName>-electron-extract/):
restored/exists → original source tree reconstructed from.js.mapfiles; read this first.- Only
extracted/(no maps) → JS/CSS inextracted/was Prettier-formatted in place; read from there.
Usage
${BUN_X} {baseDir}/scripts/main.ts Codex # → ~/Downloads/Codex-electron-extract/
${BUN_X} {baseDir}/scripts/main.ts "/Applications/Visual Studio Code.app" # .app bundle, install dir, or .asar
${BUN_X} {baseDir}/scripts/main.ts "C:\Users\you\AppData\Local\Programs\codex"
${BUN_X} {baseDir}/scripts/main.ts --asar /Applications/Codex.app/Contents/Resources/app.asar Codex
${BUN_X} {baseDir}/scripts/main.ts Codex --output ~/work/codex-source
${BUN_X} {baseDir}/scripts/main.ts Codex --json # one JSON line on stdoutOptions
| Option | Short | Description | Default |
<app> | App name or absolute path. Required unless --asar is given. | — | |
--output | -o | Output directory | ~/Downloads/<AppName>-electron-extract |
--asar | Override the resolved .asar path | auto-discovered | |
--force | -f | Allow writing into a non-empty existing output dir | false |
--skip-format | Skip Prettier formatting | false | |
--skip-restore | Skip source-map restoration | false | |
--no-unpacked | Don't copy app.asar.unpacked/ alongside | false | |
--dry-run | Print resolved paths and exit without writing | false | |
--json | Emit one JSON-line summary on stdout (suppresses normal output) | false |
Output layout
~/Downloads/<AppName>-electron-extract/
├── extract-report.json # JSON summary: counts, warnings, resolved paths
├── extracted/ # raw asar contents (JS/CSS Prettier-formatted when no map)
│ └── ... # node_modules left untouched (skipped from format)
├── extracted.unpacked/ # copied from <asar>.unpacked/ if present
│ └── ... # native modules (.node), large assets
└── restored/ # only present if at least one .js.map was usable
└── <original/source/tree> # rebuilt from sourcesContent in each .js.mapSource-Map Path Restoration
Original source names and directory structure are preserved as far as the map allows:
- Each
sources[]entry resolves withsourceRootwhen present, then relative to the.js.mapfile's directory insideextracted/— e.g..vite/main/index.js.map+../../src/main.ts→restored/src/main.ts. ../segments are not treated as automatically unsafe: resolve from the map location first, then sanitize the final path so it stays underrestored/. A path climbing aboveextracted/keeps its readable remainder —.vite/main/index.js.map+../../../shared/src/lib/foo.ts→restored/shared/src/lib/foo.ts.- URL/query decorations are stripped (
webpack://,file://,?loadersuffixes). restored/__unknown/<hash>.<ext>only when the source name is empty or can't be reduced to a safe file path.node_modulesandwebpack/runtime/*entries are skipped (bundler/runtime noise).
Notes
- node_modules is always skipped, for both source-map restoration and Prettier formatting.
- Restoration needs embedded
sourcesContent(common for webpack, esbuild, Vite, rollup). Maps referencing external files without embedding them are skipped and the.jsis Prettier-formatted instead; skipped maps appear inextract-report.jsonunderwarnings. - App discovery: macOS
/Applications+~/Applications; Windows%LOCALAPPDATA%\Programs,%PROGRAMFILES%,%PROGRAMFILES(X86)%,%APPDATA%. Multiple matches → script exits and lists them; re-run with an absolute path. Linux/other: pass--asar /path/to/app.asar. - Safety: refuses to write to
/, the user home directly, or the current working directory, and refuses to populate an existing non-empty output dir without--force. - No global installs:
@electron/asarandprettierresolve on-the-fly vianpx -y; first run is slower while npx caches them.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

