Build Fluentqt Gui
calvinhxx/Fluent-Qt
Create, integrate, redesign, or fix C++ and PySide6 GUIs using FluentQt, including component and Gallery work.
Turn a game installer/archive/disc (InstallShield, PackageForTheWeb/WinZip-SFX, Inno/GOG, ISO/BIN-CUE, CAB, FreeArc, plain ZIP) into a .wgb bundle using BottleShip's OWN self-hosted format readers —…
$ npx skills add jenissimo/bottleship --skill repack -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install jenissimo/bottleship repack --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/jenissimo/bottleship.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/repack .claude/skills/repack && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "repack" agent skill from https://github.com/jenissimo/bottleship/tree/main/.claude/skills/repack into .claude/skills/repack/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "repack", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/jenissimo/bottleship/tree/main/.claude/skills/repackType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add jenissimo/bottleship --skill repack -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install jenissimo/bottleship repack --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jenissimo/bottleship.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/repack .agents/skills/repack && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "repack" agent skill from https://github.com/jenissimo/bottleship/tree/main/.claude/skills/repack into .agents/skills/repack/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "repack", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add jenissimo/bottleship --skill repack -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install jenissimo/bottleship repack --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jenissimo/bottleship.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/repack .cursor/skills/repack && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "repack" agent skill from https://github.com/jenissimo/bottleship/tree/main/.claude/skills/repack into .cursor/skills/repack/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "repack", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/jenissimo/bottleship.git --path .claude/skills/repack--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add jenissimo/bottleship --skill repack -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install jenissimo/bottleship repack --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jenissimo/bottleship.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/repack .gemini/skills/repack && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "repack" agent skill from https://github.com/jenissimo/bottleship/tree/main/.claude/skills/repack into .gemini/skills/repack/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "repack", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install jenissimo/bottleship repackInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add jenissimo/bottleship --skill repack -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/jenissimo/bottleship.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/repack .github/skills/repack && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "repack" agent skill from https://github.com/jenissimo/bottleship/tree/main/.claude/skills/repack into .github/skills/repack/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "repack", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add jenissimo/bottleship --skill repack -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install jenissimo/bottleship repack --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jenissimo/bottleship.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/repack .opencode/skills/repack && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "repack" agent skill from https://github.com/jenissimo/bottleship/tree/main/.claude/skills/repack into .opencode/skills/repack/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "repack", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
repackTurn a game installer/archive/disc (InstallShield, PackageForTheWeb/WinZip-SFX, Inno/GOG, ISO/BIN-CUE, CAB, FreeArc, plain ZIP) into a .wgb bundle using BottleShip's OWN self-hosted format readers —…
Repack is an agent skill from jenissimo/bottleship. Turn a game installer/archive/disc (InstallShield, PackageForTheWeb/WinZip-SFX, Inno/GOG, ISO/BIN-CUE, CAB, FreeArc, plain ZIP) into a .wgb bundle using BottleShip's OWN self-hosted format readers — NEVER apt/7-Zip/cabextract/unshield/innoextract. Use when packing a new game, repacking an existing .wgb, or diagnosing a bundle that boots but writes nothing / loops a menu (the empty-directory pitfall). Covers make-wgb, wgb.ts, and the formats/ stack.
Its SKILL.md is about 2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It works with TypeScript, WebAssembly and Windows. The repository describes itself as: Run classic Windows games in your browser. A high-level-emulation engine that boots real x86 Windows executables and reimplements Win32, COM and DirectDraw/Direct3D on WebGPU…. The licence is Apache-2.0.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 358a9ed. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
bunaptFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Repack loads about 2k tokens when it runs. Until then it costs about 115 tokens; SKILL.md has 930 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from jenissimo/bottleship at commit 358a9ed, republished under its Apache-2.0 licence (© jenissimo). 930 words, ~2,026 tokens.
.claude/skills/repack/SKILL.md (or your agent's skills folder).Everything to get a game from a distributed installer/archive/disc into a bootable
.wgb is self-hosted in this repo. Do NOT install or shell out to a system unpacker
(apt install, 7-Zip, cabextract, unshield, innoextract, WINE). The whole point is that
.wgb bring-up needs no external native tool and works headless (CI, cron, no root). If a
container isn't covered, EXTEND the stack (packages/formats/<fmt> core + a tools/ CLI),
don't reach for a binary.
| Distribution | What it is | Our tool |
|---|---|---|
data1.hdr + data1.cab… | InstallShield Cabinet (ISc(, v5/v6+) — most 1998–2003 game installers | bun tools/unshield-extract.ts <data1.hdr> <out> [--list] |
setup.exe (WinZip-SFX / "PackageForTheWeb") | a ZIP or CAB wrapping an InstallShield disk set | unwrap outer with cab-extract/zip → then unshield-extract the inner data1.hdr |
.cab (MSCF), incl. appended to an SFX stub | Microsoft Cabinet (NONE + MSZIP) | bun tools/cab-extract.ts |
GOG setup_*.exe / Inno Setup | Inno headers (LZMA1/2) | end-to-end: bun tools/gog-to-wgb.ts; inspect: bun tools/inno-inspect.ts |
.iso / .bin+.cue | ISO9660 / disc image | bun tools/iso-to-wgb.ts; bun tools/bin2iso.ts |
.arc | FreeArc (srep+LZMA) repacks | packages/formats/src/freearc/ |
.rar | store-only RAR5 wrapper around an installer (typical game drop), incl. .partN.rar sets | bun tools/rar-extract.ts <a.rar> <out> [--list] — refuses compressed/solid/encrypted/RAR4 |
.zip / .wgb | store+deflate ZIP (also the .wgb container) | bun tools/wgb.ts |
Blizzard setup.exe / .mpq | MoPaQ archive appended to a self-extracting stub | bun tools/mpq-extract.ts <installer.exe> <out> [--list] |
.tar.xz, or a Linux .sh installer | a tar.xz appended to a shell stub (makeself, YAD Simple Installer) — the shape a Wine-wrapped repack arrives as | bun tools/tar-extract.ts <a.sh> <out> [--list] [--filter s] [--strip n] — finds the appended stream itself |
A Blizzard installer payload carries no (listfile) — MPQ stores hashes, not names — so
--list comes up empty and extraction has to go by block index. The names live in the
installer's own script inside the archive (SetupDat\*.ins, the FileBlock lists): dump the
blocks, read the script, then map MPQ paths to install paths. Files whose block is encrypted
still decrypt: the key is recovered from the sector table.
Cores live in packages/formats/src/<fmt>/; the native codec backend (LZMA1/2/srep) is
public/unpack-streaming.wasm (Rust crate tools/build-unpack-streaming). See CLAUDE.md
"Archive / installer formats" for the authoritative list.
A Linux repack is a whole Wine prefix, so the game is …/prefix/drive_c/<install dir> and the
tarball also carries Wine itself — extract the subtree, not the archive (--filter prefix/ --strip <n>). Beware Git Bash rewriting an argument that looks like a POSIX path: --filter /prefix/ arrives as C:/Program Files/Git/prefix/ and matches nothing (an empty extraction
now fails loudly instead of exiting 0). The prefix's system.reg/user.reg are the
authoritative record of what the installer wrote and --reg-import reads them directly —
with --reg-import-under, since a hive is a whole machine's registry (see §2).
bun tools/make-wgb.ts <game-dir> <out.wgb> \
--name "Game Name" --exe GAME.EXE \
--os win98 --width 1024 --height 768 --bpp 16 \
--reg-path "Software\Vendor\Game" --skip-videomake-wgb generates manifest.json + registry.json via JSON.stringify (correct \\
escaping) and packs in one step. Never write registry.json/manifest.json by hand
(shell heredoc / Write) — backslash escaping is unreliable across editors/linters/hooks.
--help prints the full flag list.
Registry from a real install rather than retyped: --reg-import <file> takes an exported
.reg OR a Wine prefix's own system.reg/user.reg, and --reg-import-under "Software\Vendor"
(repeatable, and an error if it matches nothing) keeps the game's subtree out of the 17 000
other keys a hive carries. --reg-path/--reg-value still win on a value they both name —
which is how the install path gets corrected, since the prefix records where the game lived
THERE (C:\game\RA3\) and a bundle's rom is the guest's C:\.
A .wgb is a store-only ZIP, and a ZIP has no entry for an empty directory. An
installer-created empty folder (user\rosters, user\save\photos, save/config trees) is
silently dropped on pack. The game then does fopen("user\rosters\x","wb"), which on
Windows does NOT create parent dirs, so the write FAILS — and our VFS faithfully returns
null (parentDirectoryExists gate). Symptoms are nasty and non-obvious: the game boots and
renders fine but saves nothing, or a menu resets/loops (e.g. Airfix Dogfighter's
Enlist → the pilot-roster write failed → login re-opened New-Pilot forever).
Fixes, in order of preference:
emulator.createDirs. So if your EXTRACT preserved the empty dirs, you're covered for free.--create-dirs "user\rosters,user\save\photos,user\save\levels" (comma/semicolon list,
/ or \).bun tools/wgb.ts set-manifest <archive.wgb> <manifest.json> (edit JSON, never shell).At boot the worker calls ensureDirTreeSync (mkdir -p) for each createDirs entry —
recreating the installer's on-disk layout. This is the sanctioned mechanism, not a
per-game hack.
How to SUSPECT this class: game writes/saves silently no-op, or a "create/confirm" action
bounces back. Confirm from a log window around the action — a VFS: openSync(...) CREATE_* parent missing line is the smoking gun. Cross-check what dirs the game expects with the RE
service (strings for user\..., save\... paths) and seed exactly those.
bun tools/wgb.ts list <a.wgb> # ls entries
bun tools/wgb.ts manifest <a.wgb> # print manifest.json
bun tools/wgb.ts cat <a.wgb> <entry> # dump one entry
bun tools/wgb.ts replace <a.wgb> <entry> <file>
bun tools/wgb.ts patch-manifest <a.wgb> <json.path> <value> # single field
bun tools/wgb.ts set-manifest <a.wgb> <manifest.json> # whole manifestpatch-wgb-vram overrides VRAM for an existing bundle. Aliases: ls, x, pm.
Note: the dev server may hold the file handle (EPERM on rename during set-manifest). Stop
Vite (PowerShell kill of the vite process), patch, restart.
Load it and drive to the point the pack decision affects (a save, the menu that looped):
?game=dev then window.loadApp('/apps/<name>.wgb'), or the /bringup skill + harness. For
a save/dir fix, confirm via bun tools/harness.ts fsStat "C:\\user\\rosters" (isDir=true)
and fsList after the game writes — the file should enumerate from the overlay.
formats/.createDirs.© jenissimo, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .claude/skills/repack of jenissimo/bottleship.
Open the folder on GitHubat commit 358a9ed
Repack next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Repack this skilljenissimo/bottleship | 131 | — | ~2k | Automated safety check: Pass | Apache-2.0 | |
| Build Fluentqt Guicalvinhxx/Fluent-Qt | 152 | — | ~1.6k | Automated safety check: Pass | MIT | |
| Bun Win32involvex/youtube-music-cli | 456 | — | ~1.1k | Automated safety check: Pass | MIT | |
| Language Supportlive-codes/livecodes | 1.5k | — | ~1.6k | Automated safety check: Pass | MIT | |
| Wine Assembly Connectvgrichina/berrry-wine | 110 | — | ~1.9k | Automated safety check: Pass | MIT | |
| Dotnet UInovotnyllc/dotnet-artisan | 233 | — | ~1.3k | Automated safety check: Pass | MIT |
calvinhxx/Fluent-Qt
Create, integrate, redesign, or fix C++ and PySide6 GUIs using FluentQt, including component and Gallery work.
involvex/youtube-music-cli
Win32 FFI binding lifecycle for @bun-win32/ packages (Win32 DLL bindings via bun:ffi on Windows).
live-codes/livecodes
Work with 90+ supported languages, compilers, CSS processors, and WASM-compiled languages for markup, style, and script editors.
vgrichina/berrry-wine
Connect to a Windows 98 game or app that a person is running in their browser on wine-assembly, then see its screen and play it with mouse and keyboard.
novotnyllc/dotnet-artisan
Builds .NET UI apps across Blazor (Server, WASM, Hybrid, Auto), MAUI (XAML, MVVM, Shell, Native AOT), Uno Platform (MVUX, Extensions, Toolkit), WPF (.NET 8+, Fluent theme), WinUI 3 (Windows App SDK…
TanStack/ai
LLM-generated TypeScript execution in sandboxed environments: createCodeModeTool() with isolate drivers (createNodeIsolateDriver, createQuickJSIsolateDriver, createQuickJSBunIsolateDriver…
jenissimo/bottleship
Drive and observe the BottleShip emulator to bring up a game, using the AI-agent harness (window.BS.harness + bun tools/harness.ts).
Works with
Turn a game installer/archive/disc (InstallShield, PackageForTheWeb/WinZip-SFX, Inno/GOG, ISO/BIN-CUE, CAB, FreeArc, plain ZIP) into a .wgb bundle using BottleShip's OWN self-hosted format readers —…. Repack is an agent skill from jenissimo/bottleship.wgb bundle using BottleShip's OWN self-hosted format readers — NEVER apt/7-Zip/cabextract/unshield/innoextract.
Repack fits situations like: packing a new game; repacking an existing .wgb; diagnosing a bundle that boots but writes nothing / loops a menu (the empty-directory pitfall).
Run `npx skills add jenissimo/bottleship --skill repack -a claude-code`. Or copy the skill folder (.claude/skills/repack in jenissimo/bottleship) into .claude/skills/repack in your project. Claude Code loads it when a task matches its description.
Run `npx skills add jenissimo/bottleship --skill repack -a codex`. Or copy the skill folder (.claude/skills/repack in jenissimo/bottleship) into .agents/skills/repack in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add jenissimo/bottleship --skill repack -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/repack, .gemini/skills/repack, .github/skills/repack and .opencode/skills/repack in your project.
Going by SKILL.md and its folder, Repack needs the command-line tools its instructions call (bun and apt).
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Repack is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2k tokens (SKILL.md is roughly 8.1k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Repack: Build Fluentqt Gui (calvinhxx/Fluent-Qt, 152 stars), Bun Win32 (involvex/youtube-music-cli, 456 stars), Language Support (live-codes/livecodes, 1.5k stars) and Wine Assembly Connect (vgrichina/berrry-wine, 110 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
jenissimo (a GitHub user) maintains it in jenissimo/bottleship, which has 131 GitHub stars. The repository holds 2 skills in this directory. The repository was last updated on October 6, 2026.
Source: jenissimo/bottleship on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.