Agent skill

Port To Os8088

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

MITAuto-check passedAgent Workflows

Install Port To Os8088

skills CLI
$ npx skills add jggonz/os8088 --skill port-to-os8088 -a claude-code

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

GitHub CLI
$ gh skill install jggonz/os8088 port-to-os8088 --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/jggonz/os8088.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/port-to-os8088 .claude/skills/port-to-os8088 && 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
port-to-os8088
GitHub stars
104
Token cost
~3.6k tokens
SKILL.md length
2,012 words
Files
4
Skills in repo
7
Repo updated
First seen
Licence
MIT

At a glance

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.

  • Works in 9 steps: The model gate — do this first → Read before asking → Intake — where is the reference source? → …
  • The user asks to port
  • SKILL.md covers 0. The model gate — do this…, 1. Read before asking, 2. Intake — where is the… and 3. Preflight — the machine and…, plus 6 more sections
  • Runs JavaScript scripts from its folder; calls make and git

What it does

Port To Os8088 is an agent skill from 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. Interactive intake of the reference source (scan nearby repos or clone a list), then a multi-agent scouting workflow that drafts the port plan, then one multi-agent implementation workflow per wave, asking the user only at real decisions, and a PR at the end. Runs on Opus 5 or Fable 5 only. Use when the user asks to port, bring over, reimplement or "do a…

Its SKILL.md is about 3.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 4 other files (for example `LESSONS.md`, `workflows/implement.js` and `workflows/scout.js`).

It sits in Agent Workflows, covering Multi-agent orchestration. It works with Microsoft Word. The licence is MIT.

When your agent uses it

  • The user asks to port
  • Do a CWORD-style port of an application

Example prompts

  • “do a CWORD-style port of”
  • “/port-to-os8088”

Requirements

  • Node.js

Workflow steps

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

  1. The model gate — do this first
  2. Read before asking
  3. Intake — where is the reference source?
  4. Preflight — the machine and the branch
  5. Scout — the multi-agent survey
  6. Decide — the user's questions, and yours
  7. Names, once
  8. Implement — one workflow per wave
  9. Finish

What it can do on your machine

Read from SKILL.md and the folder at commit 29cb627. 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 script files (JavaScript), which the agent can run.

    Shell commands in SKILL.md call:

    • make
    • git

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

  • Network

    No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.

    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

Port To Os8088 loads about 3.6k tokens when it runs. Until then it costs about 141 tokens; SKILL.md has 2,012 words of instructions outside code blocks.

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

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); files beside SKILL.md are not scanned.

SKILL.md

The full file from jggonz/os8088 at commit 29cb627, republished under its MIT licence (© jggonz). 2,012 words, ~3,622 tokens.

Download SKILL.mdSave it as .claude/skills/port-to-os8088/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.
name
port-to-os8088
description
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. Interactive intake of the reference source (scan nearby repos or clone a list), then a multi-agent scouting workflow that drafts the port plan, then one multi-agent implementation workflow per wave, asking the user only at real decisions, and a PR at the end. Runs on Opus 5 or Fable 5 only. Use when the user asks to port, bring over, reimplement or "do a CWORD-style port of" an application.

Port a program to os8088, in C

This skill turns a reference codebase — the original program, in whatever language — into a native os8088 package written in C, the way apps/cword/ is Microsoft Word 1.1a. "Port" here means what it meant there: the user interface is the original's, taken from its source and not from memory; the behaviour is reimplemented in the strict C subset this toolchain compiles; what cannot be carried is present and greyed with the fact that greys it, never silently missing. The code of the original almost never compiles here and is not expected to. Its resources, tables, formats and behaviour do.

Invoking this skill authorises the multi-agent orchestration below (the Workflow tool — what the user calls "ultracode"). Every phase that reads a lot or writes a lot fans out; every decision that is the user's comes back to them through AskUserQuestion; everything else you decide and record.

Three files travel with this skill and are read by every agent it spawns:

filewhat
LESSONS.mdeverything the CWORD port learned the hard way — the obstacles, in the order a port meets them, each with the fix. Read it in full before step 1.
workflows/scout.jsthe scouting workflow: reference source + this tree → a draft port plan and the user's questions
workflows/implement.jsone implementation wave: implement → three review lenses → fix → independent verify on QEMU

Also binding, and already in the tree: docs/C-TOOLCHAIN.md (what to type and what each refusal means), SPEC.md §73 (the contract), apps/cc/os88.h (the API), CLAUDE.md (the hard rules and the performance table).


0. The model gate — do this first

This skill is supported on Opus 5 and Fable 5 only. Look at the # Environment block of your own system prompt: it says which model is running. If it is not claude-opus-5 or claude-fable-5, say so in one line, tell the user to switch with /model and re-run /port-to-os8088, and stop. Do not run the workflows on another model: they were sized and worded for these two, and a smaller model reading twenty thousand lines of someone else's source and a 50,000-line SPEC does not scout, it guesses.

Never pass a model override to an agent inside the workflows — they inherit the session model, which is the one the gate just checked.

1. Read before asking

  1. LESSONS.md beside this file — all of it.
  2. docs/C-TOOLCHAIN.md — the four rules, the ceiling, the overlay.
  3. apps/cc/os88.h's header comment, and skim the prototypes.
  4. SPEC.md §73.12 (the CWORD account) and §73.14 (the overlay).
  5. apps/cword/cword.c's header comment — the redraw model and the cost table.

That is ~1,500 lines and it is the difference between a plan that fits and one that discovers the 60KB ceiling in wave 4.

2. Intake — where is the reference source?

Ask, with AskUserQuestion, in one call — three questions:

  1. Where is the reference source? (single select)
    • Scan for repositories here (Recommended) — you list every git checkout in the current directory and its parent (ls -d ./*/ ../*/, keep the ones with a .git), and the user picks from them.
    • I will give you a list to clone — the user supplies URLs (or paths) in "Other"; you git clone --depth 1 each into the session scratchpad directory (never into this repo, never into build/).
  2. What is the program? (single select)
    • Infer it from the repository — its name, README and about text (Recommended)
    • I will type the name and version — "Microsoft Word 1.1a", "Lotus 1-2-3 2.01"; the answer arrives as "Other".
  3. Anything about scope you already know? (single select)
    • No — port it whole and grey what cannot carry (Recommended)
    • Yes, I will describe it — a subsystem to leave out, a file format to prefer, a feature that matters most; arrives as "Other".

If they chose scan, run the scan and ask a second AskUserQuestion (multiSelect) listing what you found — path, top-level language guess from file extensions, and one line from its README if it has one — and let them pick one or more. If nothing plausible is found, fall through to clone.

Then confirm the set back in one line and record it: write a memory (a reference type, like the existing word-opus-source memory) naming where the reference source lives, because the repo will never say — SPEC.md names the release, not a path — and the next session that touches the port will need it.

Two things to say to the user here, once, plainly:

  • The reference source stays outside this repo. Nothing is vendored (CONTRIBUTING.md §6): the port quotes strings, tables and formats and cites the file; it does not copy code. If the reference is under a licence that needs attribution, that attribution goes into every file header that carries derived material and into the About box — CWORD carries the Computer History Museum credit exactly so.
  • The port will be written in the C this toolchain accepts, which is smaller than C: no long, float, double, no &local, no struct by value, no printf, no malloc as they know it, one translation unit, 60KB. A program that needs 32-bit arithmetic on its hot path is a candidate for a rewrite of its behaviour, and the plan will say so.

3. Preflight — the machine and the branch

tools/setup-cc.sh && make cc-smoke        # the compiler, at the pinned commit; the smoke test builds
make covl                                 # the overlay gate builds (you will very likely need the overlay)
pkill -f qemu-system-i386 || true         # a stale QEMU answers on build/qmp.sock with an OLD image
git status --short                        # clean tree
git checkout -b port/<name> main          # branch; never work on main

If setup-cc.sh fails, that is a blocker for the user (network, Xcode tools) — say what it printed and stop. Every later step needs the compiler.

4. Scout — the multi-agent survey

Workflow({ scriptPath: "<abs repo>/.claude/skills/port-to-os8088/workflows/scout.js",
           args: { repo: "<abs repo>", sources: ["<abs path>", ...],
                   app: "<program name and version>", name: "<proposed package name or ''>",
                   notes: "<the user's scope notes>" } })

It runs one scout per reference repo and three over this tree, one planner, three adversarial reviewers and a reconciler, and returns { plan, sources, tree, reviews }. The plan is JSON in the shape PLAN_SCHEMA in scout.js: name, authority table (surface → defining source file), scope (ships / greyed-with-fact / absent), file split, byte budget with its basis, API gaps, waves, verification, risks, and questions.

While it runs, do nothing that touches the tree. If it returns with a source report missing (a null in sources), say which repo failed and re-run scouting for that one alone before planning on three-quarters of the facts.

5. Decide — the user's questions, and yours

Take plan.questions to the user with AskUserQuestion, at most four questions per call, each with the plan's options and its recommendation first, labelled (Recommended). Typical ones, and they are the only kind that belong here:

  • the package name, if the plan's is unsure or collides
  • a scope cut that changes what ships (which of two file formats; whether a whole subsystem is greyed or built)
  • whether to spend an API slot / add a thunk versus greying a feature
  • which reference wins where two disagree

Everything else — the file split, the wave order, the buffer sizes, which mode the program opens in — you decide, and you record the decision in the plan. Do not ask a question whose answer is in LESSONS.md or the SPEC.

Then write the plan into the tree, in this order:

  1. SPEC.md — a new top-level section at the end (the next free number), titled <N>. <NAME> — <Product>, written in C, in the shape of §73.12: what it is, where the UI comes from (the authority table), the two segments and the byte budget, what ships, what is greyed and the fact for each, the names (package, dir, images, vm) and the sentence that it shares nothing with any other package. SPEC is updated before the code, and this is the section every wave amends. make runs tools/checkdocs.py, so every § you cite must exist.
  2. docs/plans/<NAME>-PORT-PLAN.md — the plan itself, with the user's answers folded in and the questions section replaced by "Decisions". This is the file the implementation workflow reads.
  3. Commit the two: Plan the <NAME> port (SPEC.md §<N>).
Show full SKILL.md (751 more words)Show less

6. Names, once

Before wave 1, check every name the plan uses collides with nothing: ls apps/ vm/ | grep -i <name>, grep -in <name> Makefile | head. A package, its directory, its disk images, its vm directory and its extension must not answer to an existing program's name — apps/word and apps/cword are two programs with one ambition and share nothing, by rule (SPEC.md §73.12). Package names are ≤ 15 characters, upper case in CC_PKG_NAME.

7. Implement — one workflow per wave

For each wave n in the plan, in order:

Workflow({ scriptPath: "<abs repo>/.claude/skills/port-to-os8088/workflows/implement.js",
           args: { repo: "<abs repo>", plan: "<abs repo>/docs/plans/<NAME>-PORT-PLAN.md",
                   wave: n, name: "<NAME>", dir: "apps/<dir>",
                   sources: ["<abs path>", ...],
                   decisions: "<every user answer so far, verbatim>", rounds: 2 } })

One implementer builds the wave through the gate, runs the host harness, boots it and shoots it; three read-only reviewers (the four rules + budget, the redraw budget, fidelity to the source) find what is wrong; a fixer applies it; an independent verifier rebuilds, reboots and checks the wave's done_when with its own eyes. It returns { status, report, questions, size, shots, reviews }.

Then, you:

  • status: done — read report and size, look at two of the shots yourself (Read the PNGs), run make once (the doc gate) and commit the wave: subject <NAME>: <what the wave added> (§<N>), body with the size line and how it was verified. Amend the SPEC section if the wave changed a fact in it. Go to the next wave.
  • status: blocked — take questions to the user (AskUserQuestion, ≤ 4 a call, recommendation first), append the answers to decisions, and re-run the same wave with the new decisions.
  • status: failed — read the workflow's journal.jsonl (the path is in the tool result), find which agent failed and why, and either re-run the wave or fix the specific thing by hand and re-run. Do not skip a wave; a later wave builds on it.

Watch the size line across waves. The moment resident image + bss passes 55,000 of 61,440, the next wave's first job is the overlay split, not a feature — LESSONS.md "The overlay" says what moves and what may not.

Between waves the tree always builds and boots. If it does not, that is the thing to fix before anything else.

8. Finish

When the last wave is done:

  1. The disk and the machine. The plan's disk target builds all three geometries and --verifys each (copy the cworddisk rules). Ask the user whether the port gets its own 86Box machine (vm/<machine>/86box.cfg, copied from vm/386-c-word/86box.cfg with the B: image and the uuid changed and nothing else — see LESSONS.md on 86Box rewriting configs) and whether it goes onto make allapps (SPEC.md §19.9: a package with an overlay gets a folder of its own on that disk, never APPS/).
  2. The documents. The SPEC section is final and its numbers are the shipping ones (os88pkg line, overlay size, frame max, the harness's cost table). docs/plans/<NAME>-PORT-PLAN.md gets a closing "What shipped" section. README.md gets a paragraph beside the CWORD one under A package can also be written in C. CLAUDE.md's command table gets the new targets if they are on demand like cword's.
  3. The gates. make clean && make (nothing in all may need the compiler — your targets are on demand); make <name>disk; the host harness; boot the 360KB image once (make test TESTAPPS=build/<name>360.img); VIDEO=cga once and look at a dialog and a greyed item on it.
  4. The PR. Push the branch and open the PR against main with the body CONTRIBUTING.md §7 asks for: what changed and why, which SPEC sections moved, how you verified it with the exact commands and cropped screendumps, and whether the 360KB build was booted. Attach the cost table. Add Co-Authored-By: Claude <model> <noreply@anthropic.com>.
  5. Tell the user, in a paragraph they can paste into a release note, what the port does, what it greys, and what it costs — numbers, not adjectives (the release-os8088 skill's "Writing the copy" section is the standard).

When to stop and ask, and when not to

Ask (AskUserQuestion, with a recommendation) when:

  • a scope cut changes what ships, or a feature would need a new kernel facility rather than a thunk;
  • two references disagree about the UI;
  • a name collides;
  • a wave comes back blocked;
  • the plan wants to raise KERN_BUDGET, KERN_CODE_MAX or APP_MAX_SIZE — the answer is no unless the user says otherwise, and CLAUDE.md says why;
  • the reference's licence needs something you cannot give.

Do not ask about: file layout, buffer sizes, wave order, which precedent to copy, whether to build the harness (always), whether to use the overlay (when the size line says so), whether to grey rather than fake (always grey a fact). Those are in LESSONS.md and were settled once.

© jggonz, 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 3 other files in .claude/skills/port-to-os8088 of jggonz/os8088.

  • SKILL.md
  • LESSONS.md
  • workflows/implement.js
  • workflows/scout.js

Open the folder on GitHubat commit 29cb627

Compare with similar skills

Port To Os8088 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.

Port To Os8088 compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Port To Os8088 this skilljggonz/os8088104—~3.6kAutomated safety check: PassMIT
Orca CLIstablyai/orca89k2 repos~593Automated safety check: PassMIT
Paseo Advisor Second Opiniongetpaseo/paseo20k1 repos~756Automated safety check: PassCustom licence
O2 Review Loopopenobserve/openobserve22k—~3.7kAutomated safety check: PassAGPL-3.0
Paseo Committeegetpaseo/paseo20k1 repos~496Automated safety check: PassCustom licence
Mission Control Agent APIbuilderz-labs/mission-control6.3k—~2.1kAutomated safety check: PassMIT

Similar skills

  • Orca CLI

    stablyai/orca

    Operate Orca-managed worktrees, folder contexts, terminals, repos, automations, artifacts, skill sharing, worktree comments, and Orca's embedded browser…

    89k GitHub starsUsed in 2 repos~593 tokens
    Agent WorkflowsAuto-check passed
  • Launches one separate agent through Paseo to give a second opinion on the current task, with a self-contained briefing and no permission to edit files.

    20k GitHub starsUsed in 1 repo~756 tokens
    Agent WorkflowsAuto-check passed
  • O2 Review Loop

    openobserve/openobserve

    Splits a change into planner, coder and independent reviewer roles: you confirm a spec, a subagent implements it, and a separate reviewer checks each round's local WIP commit.

    22k GitHub stars~3.7k tokensUpdated yesterday
    Agent WorkflowsAuto-check passed
  • Paseo Committee

    getpaseo/paseo

    Forms a two-agent committee with contrasting profiles to analyze a stuck problem in parallel, reconcile their views and return a consensus plan without editing files.

    20k GitHub starsUsed in 1 repo~496 tokens
    Agent WorkflowsAuto-check passed
  • Mission Control Agent API

    builderz-labs/mission-control

    Teaches an agent to use the Mission Control dashboard API: register, send heartbeats, fetch assigned tasks, report progress and disconnect, with API key auth.

    6.3k GitHub stars~2.1k tokensUpdated yesterday
    Agent WorkflowsAuto-check passed
  • Paseo Agent Handoff

    getpaseo/paseo

    Hands off the current task, including context, decisions and failed attempts, to a fresh agent through Paseo by writing a self-contained briefing prompt and launching that agent.

    20k GitHub starsUsed in 1 repo~606 tokens
    Agent WorkflowsAuto-check passed

More from jggonz/os8088

  • Functional Check

    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…

    104 GitHub stars~2.1k tokensUpdated today
    Auto-check passed
  • Native Game Port

    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…

    104 GitHub stars~2.9k tokensUpdated today
    Auto-check passed
  • Refresh Stale PR

    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…

    104 GitHub stars~2.6k tokensUpdated today
    Auto-check passed
  • Review Fork PR

    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…

    104 GitHub stars~4.3k tokensUpdated today
    Auto-check passed
  • Release Os8088

    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.

    104 GitHub stars~10k tokensUpdated today
    Auto-check passed
  • Vga Face

    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…

    104 GitHub stars~2.7k tokensUpdated 3 days ago
    Auto-check passed

Works with

Categories

Questions about Port To Os8088

What does Port To Os8088 do?

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. Port To Os8088 is an agent skill from jggonz/os8088.1a.

When should I use Port To Os8088?

Port To Os8088 fits situations like: the user asks to port; do a CWORD-style port of an application.

How do I install Port To Os8088 in Claude Code?

Run `npx skills add jggonz/os8088 --skill port-to-os8088 -a claude-code`. Or copy the skill folder (.claude/skills/port-to-os8088 in jggonz/os8088) into .claude/skills/port-to-os8088 in your project. Claude Code loads it when a task matches its description.

How do I install Port To Os8088 in Codex?

Run `npx skills add jggonz/os8088 --skill port-to-os8088 -a codex`. Or copy the skill folder (.claude/skills/port-to-os8088 in jggonz/os8088) into .agents/skills/port-to-os8088 in your project. Codex loads it when a task matches its description.

Can I use Port To Os8088 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 jggonz/os8088 --skill port-to-os8088 -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/port-to-os8088, .gemini/skills/port-to-os8088, .github/skills/port-to-os8088 and .opencode/skills/port-to-os8088 in your project.

What does Port To Os8088 need to run?

Going by SKILL.md and its folder, Port To Os8088 needs JavaScript for the scripts in its folder and the command-line tools its instructions call (make and git). Our summary lists: Node.js.

Does Port To Os8088 access the network?

SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Port To Os8088 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. Review the folder before installing.

What licence does Port To Os8088 use?

Port To Os8088 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 Port To Os8088 use?

About 3.6k tokens (SKILL.md is roughly 14k 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 Port To Os8088?

Skills that share tags, products or a category with Port To Os8088: Orca CLI (stablyai/orca, 89k stars), Paseo Advisor Second Opinion (getpaseo/paseo, 20k stars), O2 Review Loop (openobserve/openobserve, 22k stars) and Paseo Committee (getpaseo/paseo, 20k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Port To Os8088?

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 10, 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.