Agent skill

Wine Assembly Connect

by vgrichina in 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.

MITAuto-check passedSecurity

Install Wine Assembly Connect

skills CLI
$ npx skills add vgrichina/berrry-wine --skill wine-assembly-connect -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install vgrichina/berrry-wine wine-assembly-connect --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/vgrichina/berrry-wine.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/wine-assembly-connect .claude/skills/wine-assembly-connect && rm -rf skills-src

Use ~/.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/

Facts

Skill name
wine-assembly-connect
GitHub stars
116
Token cost
~1.9k tokens
SKILL.md length
1,069 words
Files
5 (incl. scripts)
Skills in repo
1
Repo updated
First seen
Licence
MIT

At a glance

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.

  • Works in 5 steps: Get the bridge → Start it with the token → First run only: register → …
  • Someone gives you a link containing wa1.
  • SKILL.md covers 1. Get the bridge, 2. Start it with the token, 3. First run only: register and 4. Wait for the person to…, plus 4 more sections
  • Runs JavaScript scripts from its folder; calls node and npm

What it does

Wine Assembly Connect is an agent skill from 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. Use when someone gives you a link containing "wa1." or a token starting "wa1.", or asks you to play or help with their wine-assembly session.

Its SKILL.md is about 1.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 6 other files, including scripts (for example `reference/api.md` and `reference/playing.md`).

It sits in Security, covering Reverse engineering and malware. It works with WebAssembly and Windows. The repository describes itself as: Run real Windows 98 apps and games in your browser. An x86 emulator and Win32 layer written directly in WebAssembly Text, no OS image, no source ports. The licence is MIT.

When your agent uses it

  • Someone gives you a link containing wa1.
  • A token starting wa1.
  • Asks you to play
  • Help with their wine-assembly session

Example prompts

  • “or a token starting”
  • “/wine-assembly-connect”

Requirements

  • Node.js

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. Get the bridge
  2. Start it with the token
  3. First run only: register
  4. Wait for the person to click Allow
  5. Look, then act

What it can do on your machine

Read from SKILL.md and the folder at commit dc7e845. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Ships 2 files in scripts/ (JavaScript), which the agent can run.

    Shell commands in SKILL.md call:

    • node
    • npm

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • wine-assembly.berrry.app

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Wine Assembly Connect loads about 1.9k tokens when it runs. Until then it costs about 79 tokens; SKILL.md has 1,069 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~79
When it runs · the whole SKILL.md, loaded when a task matches
~1.9k

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.

Safety

Auto-check passed

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); the scripts in this folder are not scanned.

SKILL.md

The full file from vgrichina/berrry-wine at commit dc7e845, republished under its MIT licence (© vgrichina). 1,069 words, ~1,866 tokens.

Download SKILL.mdSave it as .claude/skills/wine-assembly-connect/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.
name
wine-assembly-connect
description
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. Use when someone gives you a link containing "#wa1." or a token starting "wa1.", or asks you to play or help with their wine-assembly session.

Connect to a wine-assembly game

A person is running an old Windows program (a game, usually) in their browser at wine-assembly, and wants you to see it and play it. They gave you a link like

https://wine-assembly.berrry.app/skills/wine-assembly-connect/SKILL.md#wa1.Qm9v…

or just the part after #, starting wa1.. That part is the token. It is a one-time invitation to their browser tab, and it expires about 10 minutes after they made it. Treat it like a password: don't post it anywhere or put it in a file other people can read.

You connect by running a small bridge program on your machine. The bridge talks to their browser directly over WebRTC and gives you a plain HTTP API on 127.0.0.1. Anything that can run node and curl can do this: no account, no package install, no API keys.

You need: a shell, Node.js 18 or newer (node --version), curl, and outbound internet access. If you can't run commands, tell the person that this skill needs an agent that can run shell commands, and stop.

1. Get the bridge

mkdir -p ~/.cache/wine-agent && cd ~/.cache/wine-agent
curl -fsSLO https://wine-assembly.berrry.app/skills/wine-assembly-connect/scripts/wine-agent.mjs
curl -fsSL  https://wine-assembly.berrry.app/skills/wine-assembly-connect/scripts/SHA256SUMS.txt | shasum -a 256 -c -

Expect wine-agent.mjs: OK. On Linux without shasum, use sha256sum -c -. It is one file (about 1 MB) with its WebRTC library bundled in, and it needs no npm install.

If the link the person gave you starts with a different address (a local dev server such as http://127.0.0.1:8080/...), download from that address instead.

2. Start it with the token

Pass the whole link or just the token, in single quotes. Run it in the background and keep it running for the whole session, because it holds the connection:

node ~/.cache/wine-agent/wine-agent.mjs '<the link or wa1. token>' --runs-as='<what you are, e.g. "Codex CLI">' > ~/.cache/wine-agent/log.txt 2>&1 &
sleep 2; cat ~/.cache/wine-agent/log.txt

The bridge writes one line per event. The first is:

READY http://127.0.0.1:53817 key=4f0c…

Keep that address and key. Every request below goes to that address with the header Authorization: Bearer <key>. The examples use:

B=http://127.0.0.1:53817; K='Authorization: Bearer 4f0c…'

--runs-as is a label shown to the person ("says it runs as: …, unverified"). Make it honest.

3. First run only: register

The first time on a machine, the bridge makes itself an identity (a signing key saved in ~/.config/wine-agent/) and has to register it as a bot, which takes one small puzzle. The log then says REGISTER …:

curl -s -H "$K" $B/register

That returns a puzzle. Solve it, then choose a bot name: 4 to 30 letters, digits or _, ending in bot (the person will see it; for example claudeplaysbot):

curl -s -H "$K" -X POST $B/register -d '{"answer":"<your answer>","username":"<name>bot"}'

Expect {"ok":true,"username":"…"}. If the answer is wrong you get a new puzzle, so try again. Later runs on the same machine skip this step.

4. Wait for the person to click Allow

curl -s -H "$K" $B/status

state walks through starting, then publishing, then asking, then connected. asking means the answer was published; the bridge cannot yet tell whether the page has displayed the request or the person clicked Allow. Tell them to click Allow when the request appears, then poll /status every few seconds. If they already allowed it and it remains asking, inspect the page's connection message rather than repeatedly asking for approval. next in the reply says what to do.

  • connected: go to step 5.
  • closed or failed: read error. The usual causes are that the person denied you, closed the tab, or the link expired. Ask them for a new link and start again from step 2 (kill the old bridge first).
Show full SKILL.md (317 more words)Show less

5. Look, then act

Start with a screenshot. Its pixels are the click coordinates:

curl -s -H "$K" $B/screenshot.png -o screen.png      # then look at screen.png
curl -s -H "$K" $B/snapshot                          # {screen:{w,h}, title, frozen}

Then act:

curl -s -H "$K" -X POST $B/click -d '{"x":120,"y":88}'
curl -s -H "$K" -X POST $B/click -d '{"x":120,"y":88,"button":"right"}'
curl -s -H "$K" -X POST $B/dblclick -d '{"x":40,"y":40}'
curl -s -H "$K" -X POST $B/drag -d '{"x1":10,"y1":10,"x2":200,"y2":150}'
curl -s -H "$K" -X POST $B/key -d '{"key":"Enter"}'           # Escape, Left, F2, A, …
curl -s -H "$K" -X POST $B/key -d '{"key":"Left","type":"down"}'   # hold …
curl -s -H "$K" -X POST $B/key -d '{"key":"Left","type":"up"}'     # … release
curl -s -H "$K" -X POST $B/type -d '{"text":"hello\n"}'

After each action, take another screenshot before deciding the next one. A game keeps running while you think, so for anything timing-sensitive use frozen mode:

curl -s -H "$K" -X POST $B/frozen -d '{"on":true}'    # the game stops
curl -s -H "$K" -X POST $B/key -d '{"key":"Right","type":"down"}'
curl -s -H "$K" -X POST $B/step -d '{"n":10}'         # run 10 steps, then stop again
curl -s -H "$K" -X POST $B/key -d '{"key":"Right","type":"up"}'
curl -s -H "$K" -X POST $B/frozen -d '{"on":false}'   # let it run again

If nothing is running yet, GET /apps lists what the person can run and POST /launch {"app":"sol"} starts one.

Every reply is JSON: {"ok":true,…} or {"error":"…"}. The full list is in reference/api.md. Tips for actually playing (timing, menus, dialogs, common games) are in reference/playing.md.

The person stays in charge

The person can switch you to watch only, pause you, turn off your mouse and keyboard, or disconnect at any time. Their page enforces this, not you. When it happens, actions come back as errors saying why (for example the player set watch-only mode: you can look but not act), and /status shows it under lastEvent. Don't retry around it. Say what you'd like to do and let them hand control back.

Run page code (/eval) only if they explicitly enabled it. It is off by default and works only on debug pages.

When you're done

curl -s -H "$K" -X POST $B/disconnect

That tells their page you left and stops the bridge. Closing their tab ends it from their side.

Troubleshooting

You seeDo
ERROR … token when startingThe token got cut off or mangled. Copy it again exactly, in single quotes.
state: failed, "network path … blocked"A strict firewall or NAT on one side. Try another network, and tell the person.
expired / "link expired"Ask the person for a fresh link from Start → Connect Agent….
401 from the bridgeThe key is wrong. It's on the READY line, and a new one is made each run.
409 not connectedCheck /status. You may still be asking, or the session closed.
A click does nothingScreenshot first, because the screen may have changed. Some controls need /mouse down, a short wait, then up.

© vgrichina, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 4 other files (scripts) in skills/wine-assembly-connect of vgrichina/berrry-wine.

  • SKILL.md
  • reference/api.md
  • reference/playing.md
  • scripts/SHA256SUMS.txt
  • scripts/wine-agent.mjs

Open the folder on GitHubat commit dc7e845

Compare with similar skills

Wine Assembly Connect 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.

Wine Assembly Connect compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Wine Assembly Connect this skillvgrichina/berrry-wine116—~1.9kAutomated safety check: PassMIT
Dsl Vm Reversezhaoxuya520/reverse-skill41k3 repos~2.3kAutomated safety check: PassMIT
Dsl Vm Reversesickn33/agentic-awesome-skills47k1 repos~2.4kAutomated safety check: PassMIT
Client Request Signature Reversalawarexone/Agentic-Bug-Hunter5.3k—~4.7kAutomated safety check: PassMIT
Bringupjenissimo/bottleship152—~2.9kAutomated safety check: PassApache-2.0
Webhome Extension Builderwebhtv/webhtv1.7k—~2.8kAutomated safety check: PassGPL-3.0

Similar skills

  • Dsl Vm Reverse

    zhaoxuya520/reverse-skill

    Reverse JavaScript-based custom DSL/VM interpreters, non-standard WASM-like runtimes, and risk-control engines.

    41k GitHub starsUsed in 3 repos~2.3k tokens
    SecurityAuto-check passed
  • Dsl Vm Reverse

    sickn33/agentic-awesome-skills

    Reverse JavaScript-based custom DSL/VM interpreters and risk-control engines: identify IIFE/switch-based opcode dispatch, extract opcode tables, and capture runtime semantics.

    47k GitHub starsUsed in 1 repo~2.4k tokens
    SecurityAuto-check passed
  • Client Request Signature Reversal

    awarexone/Agentic-Bug-Hunter

    Recovers a client-side request signature or anti-bot token just far enough to replay blocked requests in bug bounty testing, starting from a captured packet.

    5.3k GitHub stars~4.7k tokensUpdated yesterday
    SecurityAuto-check passed
  • Bringup

    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).

    152 GitHub stars~2.9k tokensUpdated today
    Agent WorkflowsAuto-check passed
  • Build, review, debug, reverse-engineer, and package WebHome injected extension scripts for FongMi/WebHome App WebView pages.

    1.7k GitHub stars~2.8k tokensUpdated 2 days ago
    SecurityAuto-check passed
  • Rea Tool Design

    morluto/rea

    Design or change REA investigation tools, CLI/MCP contracts, provider capabilities, and Evidence semantics.

    80k GitHub stars~239 tokensUpdated today
    SecurityAuto-check passed

Categories

Questions about Wine Assembly Connect

What does Wine Assembly Connect do?

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. Wine Assembly Connect is an agent skill from 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.

When should I use Wine Assembly Connect?

Wine Assembly Connect fits situations like: someone gives you a link containing wa1; A token starting wa1; asks you to play; help with their wine-assembly session.

How do I install Wine Assembly Connect in Claude Code?

Run `npx skills add vgrichina/berrry-wine --skill wine-assembly-connect -a claude-code`. Or copy the skill folder (skills/wine-assembly-connect in vgrichina/berrry-wine) into .claude/skills/wine-assembly-connect in your project. Claude Code loads it when a task matches its description.

How do I install Wine Assembly Connect in Codex?

Run `npx skills add vgrichina/berrry-wine --skill wine-assembly-connect -a codex`. Or copy the skill folder (skills/wine-assembly-connect in vgrichina/berrry-wine) into .agents/skills/wine-assembly-connect in your project. Codex loads it when a task matches its description.

Can I use Wine Assembly Connect in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add vgrichina/berrry-wine --skill wine-assembly-connect -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/wine-assembly-connect, .gemini/skills/wine-assembly-connect, .github/skills/wine-assembly-connect and .opencode/skills/wine-assembly-connect in your project.

What does Wine Assembly Connect need to run?

Going by SKILL.md and its folder, Wine Assembly Connect needs JavaScript for the scripts in its folder and the command-line tools its instructions call (node and npm). Our summary lists: Node.js.

Does Wine Assembly Connect access the network?

SKILL.md names 1 domain. As links in the text: wine-assembly.berrry.app. This is read from the text; nothing was executed.

Is Wine Assembly Connect safe to install?

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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Wine Assembly Connect use?

Wine Assembly Connect is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Wine Assembly Connect use?

About 1.9k tokens (SKILL.md is roughly 7.5k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Wine Assembly Connect?

Skills that share tags, products or a category with Wine Assembly Connect: Dsl Vm Reverse (zhaoxuya520/reverse-skill, 41k stars), Dsl Vm Reverse (sickn33/agentic-awesome-skills, 47k stars), Client Request Signature Reversal (awarexone/Agentic-Bug-Hunter, 5.3k stars) and Bringup (jenissimo/bottleship, 152 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Wine Assembly Connect?

vgrichina (a GitHub user) maintains it in vgrichina/berrry-wine, which has 116 GitHub stars. The repository was last updated on October 11, 2026.

Source: vgrichina/berrry-wine on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.