AI Image Generation and Editing
zhayujie/CowAgent
Generates or edits images from text prompts through a Python script that picks an image backend based on which API keys are configured.
Build a native 8086 assembly remake of a console/arcade game (reference = a disassembly or source tree) as an os8088 package, the way apps/drmario (DrMarco), apps/1942 and apps/excitebike were made…
$ npx skills add jggonz/os8088 --skill native-game-port -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install jggonz/os8088 native-game-port --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/jggonz/os8088.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/native-game-port .claude/skills/native-game-port && 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 "native-game-port" agent skill from https://github.com/jggonz/os8088/tree/main/.claude/skills/native-game-port into .claude/skills/native-game-port/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "native-game-port", 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/jggonz/os8088/tree/main/.claude/skills/native-game-portType 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 jggonz/os8088 --skill native-game-port -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install jggonz/os8088 native-game-port --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jggonz/os8088.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/native-game-port .agents/skills/native-game-port && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "native-game-port" agent skill from https://github.com/jggonz/os8088/tree/main/.claude/skills/native-game-port into .agents/skills/native-game-port/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "native-game-port", 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 jggonz/os8088 --skill native-game-port -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install jggonz/os8088 native-game-port --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jggonz/os8088.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/native-game-port .cursor/skills/native-game-port && 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 "native-game-port" agent skill from https://github.com/jggonz/os8088/tree/main/.claude/skills/native-game-port into .cursor/skills/native-game-port/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "native-game-port", 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/jggonz/os8088.git --path .claude/skills/native-game-port--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 jggonz/os8088 --skill native-game-port -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install jggonz/os8088 native-game-port --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jggonz/os8088.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/native-game-port .gemini/skills/native-game-port && 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 "native-game-port" agent skill from https://github.com/jggonz/os8088/tree/main/.claude/skills/native-game-port into .gemini/skills/native-game-port/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "native-game-port", 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 jggonz/os8088 native-game-portInstalls 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 jggonz/os8088 --skill native-game-port -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/jggonz/os8088.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/native-game-port .github/skills/native-game-port && 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 "native-game-port" agent skill from https://github.com/jggonz/os8088/tree/main/.claude/skills/native-game-port into .github/skills/native-game-port/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "native-game-port", 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 jggonz/os8088 --skill native-game-port -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install jggonz/os8088 native-game-port --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jggonz/os8088.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/native-game-port .opencode/skills/native-game-port && 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 "native-game-port" agent skill from https://github.com/jggonz/os8088/tree/main/.claude/skills/native-game-port into .opencode/skills/native-game-port/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "native-game-port", 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.
native-game-portBuild a native 8086 assembly remake of a console/arcade game (reference = a disassembly or source tree) as an os8088 package, the way apps/drmario (DrMarco), apps/1942 and apps/excitebike were made…
Native Game Port is an agent skill from jggonz/os8088. Build a native 8086 assembly remake of a console/arcade game (reference = a disassembly or source tree) as an os8088 package, the way apps/drmario (DrMarco), apps/1942 and apps/excitebike were made - levels and look matched to the cartridge, committed assets made once (codex/imagegen art), NO build-time dependency on the reference, XT-4.77MHz-first speed. Drives one Workflow - five scouts, an architect plan, sequential waves (implement, three review lenses, fix, independent verify with one repair round), then a…
Its SKILL.md is about 2.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files (for example `LESSONS.md` and `workflows/port.js`).
It sits in Media & Creative, covering Image generation. The licence is MIT.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 95f7e97. 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.
Ships script files (JavaScript), which the agent can run.
Shell commands in SKILL.md call:
gitcodexghFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git and gh, which can reach the network depending on how they are called.
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.
Native Game Port loads about 2.9k tokens when it runs. Until then it costs about 202 tokens; SKILL.md has 1,510 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 jggonz/os8088 at commit 95f7e97, republished under its MIT licence (© jggonz). 1,510 words, ~2,935 tokens.
.claude/skills/native-game-port/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.This is the technique that produced apps/excitebike/ (SPEC.md §102, PR #206)
in one orchestrated run on Sonnet 5.5 (53 agents, 7 waves, ~83 minutes of
wall clock). Agents inherit the session model - never pass a model
override - so whatever model you are running is the one that builds the game.
It was sized for that model; a larger one just needs fewer repair rounds.
What it makes: a native remake, not an emulator. The simulation is the
package's own code, ported routine by routine from the reference's rules. The
picture, courses and sound are the cartridge's, extracted once into committed
sources. The publisher's marks are replaced with generated art, and the game
carries its own name. The whole thing is priced against a 4.77MHz 8088 and
verified on MartyPC's cycle counter. Precedents to name in every agent brief:
apps/drmario/ (SPEC §100: splash, animation, embedded-art streams; its generated-art prompts are the model for section 5a),
apps/1942/ (SPEC §101: FSX pages, CRTC scrolling, compiled sprites, latch
copies, dirty rectangles), apps/excitebike/ (SPEC §102: horizontal scroll).
LESSONS.md beside this file is what the Excitebike run learned the hard way.
Read it before step 1.
Two requirements, both the user's, and they pull against each other only if you confuse them:
make on a
machine without it builds the whole game; no test requires it (comparisons
SKIP cleanly when it is absent); no ROM image, CHR dump, sample or note
stream is read at build or run time. Anything taken from the reference is
taken ONCE, at authoring time, by a one-off tool that make never runs
(tools/<name>_transcribe_once.py), and only the result is committed, in
our own format, with a provenance line in apps/<name>/art/README.md. A
fast-tier provenance gate (tests/unit/t_<name>_clean.py) fails the build
if a reference path or importer creeps into make. A drift row re-runs the
one-off tool when the reference IS present, requires the committed output
to be byte-identical, and SKIPs without it.Excitebike took three tries to reach this. The first launch planned
DrMarco's shape, a CHR importer read at build time, and the user stopped it:
"It shouldn't be that way." The second shipped all-original art (PR #206).
Then the user asked for "the original game graphics, levels, etc." without
relying on the source being available, and for the marks replaced with
generated art. That is artMode: extract plus requirement 3, and
excitebike_plan.md is the worked plan. So at intake ask, with
AskUserQuestion, what "match" means for graphics and audio (levels and
tables are always transcribed unless the user says otherwise):
artMode: extract. A one-off tool
converts the cartridge's tiles, palettes, screens and sound data into
committed text sources in our own format: pixel-exact, and diffable. The
marks are still replaced (requirement 3). The licensing call is the user's;
say so in the PR.artMode: recreate. Same poses, sprite roles,
palette feel, layout, scale and animation timing, but every committed pixel
and note is newly made with the image generator (section 5a) and procedural
tools. Reference frames are studied, never attached as inputs or traced, and
their bytes are never committed.artMode: original. In the spirit of the game, not
copies.Also ask for the display name (requirement 3), unless the user gave one.
Prove the match against the real game, recorded once. Where the reference assembles into a ROM, a host emulator (agnes, MIT, for NES) runs it with scripted controller bytes, and the recordings are committed as fixtures: per-frame state, frame buffers and the APU note log. The gates compare the guest against those fixtures on MartyPC, so they need neither the reference nor the emulator. A mode that never reads the RNG is compared byte for byte every frame; one that does gets the recorded RNG bytes injected. 1942's lesson applies: port the ROUTINE that reads a table, not the table alone.
Levels, piece/obstacle grammar, speed and timing tables, par times and rules
are transcribed once into committed text sources (Excitebike's .trk files)
so the game plays the original's courses; deliberate deviations go in
tests/<name>_ref_deviations.txt with a reason each. Pass levels: "original" to skip that.
../NES-Games-Disassembly/<Game>), the game's name, its display name
(section 0, requirement 3), and an 8.3-safe package stem taken from that
(8BitBike is 8BITBIKE.O88).docs/INDEX.md, SPEC.md §100-§102 headings, and LESSONS.md.git fetch origin
git worktree add -b game/<name> /tmp/<short> origin/main # SHORT path: sockets die past ~100 chars
mkdir -p /tmp/<short>-reports
cp -R <main>/build/martypc /tmp/<short>/build/martypc # a copy, not a symlink; `make marty` if staleOne worktree, one writer at a time. Other sessions dirty the main checkout and
run their own emulators: never pkill -f, never git add -A/-u, never touch
main.
Workflow({ scriptPath: "<repo>/.claude/skills/native-game-port/workflows/port.js",
args: { repo: "<abs main repo>", worktree: "/tmp/<short>", ref: "<abs reference dir>",
name: "<Game>", stem: "<pkgstem>", reports: "/tmp/<short>-reports",
scope: "<what must ship / may be cut>", artMode: "extract", levels: "transcribe" } })args can arrive as a STRING in some harnesses; the script parses it and has
defaults, so a bare launch with edited DEFAULTS also works. Phases (skipScout: true reuses existing reports):
| phase | agents | output |
|---|---|---|
| Scout | 5 parallel: game logic, graphics, audio, perf techniques, integration checklist | <reports>/scout-*.md |
| Plan | 1 architect | docs/plans/<NAME>-PLAN.md and a wave list (4-7 waves, acceptance = a command or a measurement) |
| Waves | per wave: implement -> 3 lenses (8086/memory, XT performance, fidelity) -> fix -> independent verify -> one repair + re-verify | wave-N-impl/fix/repair.md, screenshots |
| Close | completeness critic (fixes mechanical gaps, runs make + test-full), perf audit (writes a PERFORMANCE.md Set) | close-*.md |
Sequential waves are deliberate: each builds on the last and there is one writer. Parallelism is inside a wave (the lenses) and in scouting.
While it runs, do not touch the worktree or start another make there (a
concurrent build fails make's wall-clock gate and clobbers build/).
Read the workflow's return plus close-critic.md and close-perf.md. Report
to the user: per-wave pass/fail with the measured numbers, the gaps the critic
left open, and anything the plan cut. Numbers come from MartyPC cycle
counters, never from wall clock or QEMU, and say which adapter.
Masters come from an image generator; production assets are derived from them
deterministically. In extract mode the generator makes only the replacements
for the marks (the logo, plates and name, sized to the tiles they replace) and
the desktop splash. A 144x16 wordmark is below what a generator draws well, so
treat the master as a guide: quantize it into the cartridge's tile format and
palette, hand-finish it in the committed tile source, and that edit is the art.
Probe in this order and use the first that exists:
image_generation feature
stable): from a scratch directory,codex features list | grep image_generation # must say true
codex exec --skip-git-repo-check --sandbox workspace-write -C <scratch> \
"Use your image generation tool to create <prompt>. Save the PNG into the current directory as <name>.png and print its path."~/.codex/generated_images/. Run it in the BACKGROUND (run_in_background)
and read the file when done. Run from outside the repo (it can hang in a
repo checkout), never --dangerously-bypass-approvals-and-sandbox, and do not
pass --image with cartridge frames in recreate mode.mcp__mcp-image__generate_image, or the
built-in imagegen DrMarco and 1942 used).Write prompts like apps/drmario/art/PROMPT.md: use case, asset type, the
logical grid (e.g. 320x240), exact pixel regions that must stay black for the
engine, palette list, "hard edges, no gradients or anti-aliasing", "no text,
logos or watermarks" (except the new name, spelled out, where it is the asset),
"no publisher wording, no original title, no copyright line", and in recreate mode the measurements and poses of
the original in words. Commit the master PNG plus the exact prompt
(art/PROMPT.md) and the derive tool; look at every generated image (Read the
PNG) before building on it, and check it survives 4-colour CGA and 1bpp
Hercules. Generators drift: pin assets by committing the master, never by
regenerating in make.
Commit with explicit paths (never -A): package dir, tools, tests, SPEC
section, plan, PERFORMANCE Sets, INDEX (regenerated), Makefile/suite/retired
edits, vm/xt-<name>/. Push to origin, gh pr create --base main, put the
measured table and the known gaps in the body. Attribution lines per the
session's commit/PR reminder. Do not merge; merges need --admin and are the
maintainer's call.
© jggonz, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 2 other files in .claude/skills/native-game-port of jggonz/os8088.
Open the folder on GitHubat commit 95f7e97
Native Game Port 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 |
|---|---|---|---|---|---|---|
| Native Game Port this skilljggonz/os8088 | 104 | — | ~2.9k | Automated safety check: Pass | MIT | |
| AI Image Generation and Editingzhayujie/CowAgent | 47k | — | ~1.3k | Automated safety check: Pass | MIT | |
| Structured Image Generationbytedance/deer-flow | 84k | 4 repos | ~2.9k | Automated safety check: Pass | MIT | |
| Canghe Comicfreestylefly/canghe-skills | 461 | 8 repos | ~3.2k | Automated safety check: Pass | None | |
| Generate Imageynulihao/AgentSkillOS | 618 | 10 repos | ~1.7k | Automated safety check: Notes | None | |
| GPT Image Generation CLIwuyoscar/GPT-Image2-Skill | 5.7k | — | ~2.5k | Automated safety check: Notes | MIT |
zhayujie/CowAgent
Generates or edits images from text prompts through a Python script that picks an image backend based on which API keys are configured.
bytedance/deer-flow
Turns an image request into a structured JSON prompt and runs a bundled Python script to generate the picture, optionally guided by reference images.
freestylefly/canghe-skills
Knowledge comic creator supporting multiple art styles and tones.
ynulihao/AgentSkillOS
Generate or edit images using AI models (FLUX, Gemini). An agent skill from ynulihao/AgentSkillOS.
wuyoscar/GPT-Image2-Skill
Generates and edits images with GPT Image 2 or 2.5 through a packaged CLI and a prompt gallery, after settling which model fits the request.
LiamGvchi/gc-minimal-zine-poster
Creates or analyzes quiet, paper-texture zine posters with big negative space, one color accent and experimental type, returning an image prompt and the generated poster.
jggonz/os8088
Functionally verify a change on the glass before it merges - boot the built OS in QEMU, drive the actual UI the change proposes (mouse, keys, menus) over QMP, screenshot the evidence for every…
jggonz/os8088
Port an existing program - written in C or in any other language - to os8088 as a C package (SPEC.md §73), the way apps/cword ported Microsoft Word 1.1a.
jggonz/os8088
Bring one of the maintainer's own stale pull requests (a branch on jggonz/os8088 that main has moved past) back to mergeable - merge main into it in a scratch worktree, decide whether it is still…
jggonz/os8088
Review an incoming pull request that comes from someone else's fork of os8088 - fetch it, merge main into it, review it with a team of agents for memory safety, lost-from-main regressions, redraw…
jggonz/os8088
Build os8088 and publish the floppy images to the os8088.com website repo as a pull request, plus a GitHub release on the OS repo.
jggonz/os8088
Give an os8088 package a COLOUR FACE on VGA/EGA - fewer redraws first, then a neater layout, styled panes and bevelled, picture-faced buttons with their captions inside - while the Hercules and CGA…
Categories
Build a native 8086 assembly remake of a console/arcade game (reference = a disassembly or source tree) as an os8088 package, the way apps/drmario (DrMarco), apps/1942 and apps/excitebike were made…. Native Game Port is an agent skill from jggonz/os8088.77MHz-first speed.
Native Game Port fits situations like: the user asks to port; bring a NES/arcade/console game to os8088 as a fast native game.
Run `npx skills add jggonz/os8088 --skill native-game-port -a claude-code`. Or copy the skill folder (.claude/skills/native-game-port in jggonz/os8088) into .claude/skills/native-game-port in your project. Claude Code loads it when a task matches its description.
Run `npx skills add jggonz/os8088 --skill native-game-port -a codex`. Or copy the skill folder (.claude/skills/native-game-port in jggonz/os8088) into .agents/skills/native-game-port 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 jggonz/os8088 --skill native-game-port -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/native-game-port, .gemini/skills/native-game-port, .github/skills/native-game-port and .opencode/skills/native-game-port in your project.
Going by SKILL.md and its folder, Native Game Port needs JavaScript for the scripts in its folder and the command-line tools its instructions call (git, codex and gh). Our summary lists: Node.js.
SKILL.md contains no URLs. Its commands use git and gh, which can reach the network depending on how they are called. 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.
Native Game Port is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.9k tokens (SKILL.md is roughly 12k 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 Native Game Port: AI Image Generation and Editing (zhayujie/CowAgent, 47k stars), Structured Image Generation (bytedance/deer-flow, 84k stars), Canghe Comic (freestylefly/canghe-skills, 461 stars) and Generate Image (ynulihao/AgentSkillOS, 618 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
jggonz (a GitHub user) maintains it in jggonz/os8088, which has 104 GitHub stars. The repository holds 7 skills in this directory. The repository was last updated on October 8, 2026.
Source: jggonz/os8088 on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.