Agent skill

Vga Face

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

MITAuto-check passedDevelopment

Install Vga Face

skills CLI
$ npx skills add jggonz/os8088 --skill vga-face -a claude-code

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

GitHub CLI
$ gh skill install jggonz/os8088 vga-face --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/vga-face .claude/skills/vga-face && 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
vga-face
GitHub stars
104
Token cost
~2.7k tokens
SKILL.md length
1,661 words
Files
2
Skills in repo
7
Repo updated
First seen
Licence
MIT

At a glance

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…

  • Works in 9 steps: scope, and the pictures to keep → measure the redraws (before touching the… → draw what changed (the caches) → …
  • Development work in your project
  • SKILL.md covers Step 0 - scope, and the…, Step 1 - measure the redraws…, Step 2 - draw what changed… and Step 3 - when to draw the…, plus 5 more sections
  • Calls git and make

What it does

Vga Face is an agent skill from 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 faces stay exactly as they were. The method MIDIRack's (SPEC.md 105.9.4, 105.9.5) was built with, step by step. Manual invocation only.

Its SKILL.md is about 2.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 1 other file (for example `LESSONS.md`).

It sits in Development. The licence is MIT.

When your agent uses it

  • Development work in your project

Example prompts

  • “/vga-face”

Workflow steps

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

  1. scope, and the pictures to keep
  2. measure the redraws (before touching the paint)
  3. draw what changed (the caches)
  4. when to draw the colour face
  5. the layout
  6. the vocabulary, and what each costs
  7. the buttons
  8. verify, on every face
  9. write it down, then the PR

What it can do on your machine

Read from SKILL.md and the folder at commit 95f7e97. 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

    Shell commands in SKILL.md call:

    • git
    • make

    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

Vga Face loads about 2.7k tokens when it runs. Until then it costs about 86 tokens; SKILL.md has 1,661 words of instructions outside code blocks.

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

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 95f7e97, republished under its MIT licence (© jggonz). 1,661 words, ~2,743 tokens.

Download SKILL.mdSave it as .claude/skills/vga-face/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
vga-face
description
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 faces stay exactly as they were. The method MIDIRack's (SPEC.md 105.9.4, 105.9.5) was built with, step by step. Manual invocation only.
argument-hint
<package, e.g. apps/tracker>
disable-model-invocation
true

The colour face

A package on this machine is drawn for the 1bpp adapters first - black ink, white paper - and on a VGA it looks the same. This skill gives one a second face for a 4bpp display without touching the first: colour where colour carries meaning, a layout cut on the card's own grid, and buttons whose captions sit inside them. And it starts with the redraws, not the paint: a face that is twice as pretty and repaints twice as much is a regression on the machine this OS is for (CLAUDE.md, Performance).

The worked example is MIDIRack: SPEC.md §105.9.4 (the caches), §105.9.5 (the colour face), §13.8.10 (the library hook it needed), apps/midirack/mrui.inc (all of it), tests/mrdraw.py (the instrument) and tools/os88midart.py (the button pictures). Read those before writing a line - this skill is the order they were done in and why, and the code is the reference.

Read LESSONS.md first. Every entry cost a rebuild or a wrong picture during the MIDIRack work, and most of them look like a bug in the package when they are a bug in the method.

Step 0 - scope, and the pictures to keep

  • $ARGUMENTS names the package. Read its SPEC.md section and the window code end to end - layout, painter, every caller of a repaint. Check docs/INDEX.md for what the library already gives (os88ui.inc's buttons, check boxes, radio groups, group boxes, scroll bar, About card).
  • Take the baseline on all three adapters before changing anything: VGA (os8088_xt_vga), Hercules (os8088_5150_herc_*), CGA (os8088_5150_cga_gla), through MartyPC's fbuf (see Step 6's script shape). The mono pictures are the contract: at the end they must be identical except where you meant them not to be, and you will need the "before" to prove it.
  • Work in a worktree of your own (git worktree add), never the main checkout - several sessions write there (docs/UPSTREAM.md, the memory).

Step 1 - measure the redraws (before touching the paint)

PERFORMANCE.md's first sentence: a redraw is priced by the PRIMITIVE CALLS it makes. So count them, per gesture:

  • Copy tests/mrdraw.py to tests/<pkg>draw.py. It arms os88marty.bp_trace on the API table's DRAWING CELLS themselves (KERNEL_SEG:0x38 fill, 0x40 frame, 0x1E5 font_run, 0x39D icon, 0x3A4 BLITP, ...) - so the kernel's own painting (menus, the title bar) is never counted - and for each hit reads SS:SP and the far return address: which task made the call (a worker's stack is not the UI task's) and which package routine (the nearest symbol below the return IP, from tests/mrprobe.py-style re-assembly).
  • Drive the gestures a user makes: play, pause, a selection move, a skip, a toggle, a card up and down - by KEY where the package has keys, so the menu's own painting stays out of the count.
  • Write the numbers down. MIDIRack's first table read Pause 197 calls, of which 152 were the button group drawn twice; Next 229; Stop-when-stopped
    1. The routine names point straight at the waste.

Step 2 - draw what changed (the caches)

The pattern (§105.9.4), one cache per kind of thing on the glass:

on the glassthe cacheMIDIRack's
any string that can changea FIELD SLOT holding its cells as drawn; a redraw draws one font_run of the run from the first differing cell to the lastmru_field, mru_fowe
list rowsa KEY per row (entry, highlight, mark); an add/remove/clear owes them allmru_list_sync, mru_list_owe
a scroll barits three numbersmru_sbk
buttonseach one's flags as drawnmru_btn_sync, mru_bdr
check boxeseach one's state (and tell the cache when the library toggled it)mru_ck_sync, mru_ckd
bars, metersthe drawn length; a change is ONE fill of the strip betweenmru_lw, mru_rack_bar
  • One routine, <pkg>_update, walks the whole window through the caches. Every command calls it instead of a repaint. W_PAINT owes every cache and is otherwise unchanged.
  • A card going UP draws the card alone; going DOWN is the one command that repaints - and so is a card replacing another (LESSONS.md).
  • THE IDENTITY ASSERTION is what makes the caches trustworthy: after a run of gestures, capture the content, force a full repaint (a card up and down), capture again - identical to the pixel. Put it in the draw test with per-gesture CEILINGS a repaint would blow through, register it as a soak row, and run it on Hercules AND VGA.
  • Then re-measure. MIDIRack: 1,177 calls across the gestures became 86.

Step 3 - when to draw the colour face

  • Ask the DISPLAY the window is on, at each full paint: OSAPI_WM_DISPLAY (BX = the window) answers DH = bits per pixel; > 1 is colour (§39.16.4; it answers the more restrictive display for a straddle). Not OSAPI_VIDEO - that is the primary's. Bank the answer in a byte the paint sets and every later draw reads (mru_col), so a worker draw and a W_PAINT never disagree mid-flight.
  • Gate it on the content box too, and compute the gate from the narrowest real case. MIDIRack's needs 600 x 270: a VGA's window is 624 x 311, an EGA's ~624 x 279 (350 lines less the 20-line menu bar, the dock and the title). Below the gate, a colour display gets the mono face - which is a complete face.
  • The compact (CGA) layout is never the colour face.

Step 4 - the layout

  • Fixed columns where the mono face uses shares, sized from what must be WHOLE: an 8.3 name (12 cells + mark + scroll bar), the longest label, the longest value. MIDIRack: playlist 140, Now Playing 248, the rack the rest.
  • Put anything you will BLITP on the 8-pixel grid. OSAPI_GFX_BLITP takes x on a multiple of 8, and a window's content origin already is one (§11.94) - so it is your own inset that has to be. MIDIRack's transport starts at 152 and steps 48.
  • Anchor rows bottom-up so the panes' last rows line up across the window (Load Directory with Eject/Loop, Add/Remove with the transport's bottom edge), and let the tallest flexible element (the display, the list) take what is left.
  • Derive pitches (line spacing) from the space left, clamped (10..14), and centre what remains - then check the arithmetic at the EGA height.
Show full SKILL.md (658 more words)Show less

Step 5 - the vocabulary, and what each costs

Content is the application's (§76): white paper stays, because the kernel white-fills before W_PAINT (there is OSAPI_WM_OWNBG to opt out, but every pixel you then own is yours on every expose). Spend colour on meaning:

  • Panes: a CDGRAY frame, a CLGRAY title strip ruled off under it, the title black on the strip. Four calls a pane, full paint only.
  • A display (a now-playing readout, a status LCD): one black fill, text CLGREEN/CGREEN/CYELLOW on black through the field slots with their own pair.
  • Meters: zones (green to 5/8, yellow to 7/8, red) over black in a grey frame; growing is one fill per zone crossed, of the change alone.
  • Highlight: CBLUE with white text; a "current" mark green.
  • Every value the caches draw takes the face's pair ([mru_pair]), so the incremental draw and the full paint use the same colours by construction.
  • Full-paint decoration may write a pixel twice (strip then title); an INCREMENTAL draw never may (CLAUDE.md, Nothing writes a pixel twice).

Step 6 - the buttons

  • Keep the library's gesture. %define OS88UI_BOWN and set OS88UI_OWN in a button's flags (§13.8.10): os88ui_btn then calls the label entry as YOUR painter (AX index, BX rect, DI flags with DOWN/DIS resolved), so press, drag-off and release redraw your face, not the standard one. Point the record's labels array at the painter only on the colour face (mru_recmain); the mono face keeps its standard buttons.
  • A bevelled text button: black frame; white top/left and grey bottom/right lines (pressed: one grey line top/left, caption +1,+1; greyed: grey caption); the caption opaque on CLGRAY with the face RINGED round it in up to four fills - no pixel twice (mru_bevel).
  • Picture faces with the caption inside (the transport): draw them on the host - tools/os88midart.py is the template: shapes with an automatic outline and bevel, labels set from faces/helv.t88 by the ink with a 1-pixel gap (the face's EVEN advances read "Pa use" at this size), PLANAR output for OSAPI_GFX_BLITP (one call and a few ms a face on the 8088, against ~30 ms for a packed BLIT4), up/pressed/greyed states, --png to look, --selfcheck and --check-asm (the package's MRA_* numbers against the art) in the fast tier.
  • Where the pictures live: a lazy part (OP_ASSET | OP_LAZY, §20.12) is the OS's standard - UNLESS the image is compressed: os88pkg.py refuses --compress beside parts. Then a SIDECAR beside the package, LZ-wrapped, read at entry only when the primary is colour, freed at close and on a failed entry. Either way the fallback (no file, short heap, BLITP refusing a straddle) is the bevelled caption - a complete face.
  • Check every disk the package rides for the extra clusters (§24.6.1); a disk left with one spare cluster is not a fit.

Step 7 - verify, on every face

  • The draw test's ceilings and identity on Hercules and VGA; the package's existing soak rows; make (fast) and make test-full.
  • Look: VGA, Hercules and CGA screenshots through MartyPC's fbuf - compare the mono ones with Step 0's; on VGA crop and zoom the buttons in every state (latched, pressed, greyed). Scroll every dialog on CGA: a dialog that fits on paper can sit under the dock.
  • EGA has no MartyPC profile: say so, and show the layout arithmetic at its height instead of claiming it was seen.
  • Show the user the VGA face before calling it done; "neat" is theirs to judge.

Step 8 - write it down, then the PR

  • The package's SPEC section gets the caches (with the before/after call table and the identity assertion), the colour face (the gate, the layout's reasons, the vocabulary, where the pictures live and why) - before the merge, not after.
  • A new library flag gets its own SPEC subsection and tools/os88index.py's description of the include; regenerate docs/INDEX.md.
  • New rows in tests/suite.py; new targets in the Makefile with a comment; CONTRIBUTING-style commit messages that say what was measured.
  • A PR from the worktree's branch with the numbers in its body.

© 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 1 other file in .claude/skills/vga-face of jggonz/os8088.

  • SKILL.md
  • LESSONS.md

Open the folder on GitHubat commit 95f7e97

Compare with similar skills

Vga Face 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.

Vga Face compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Vga Face this skilljggonz/os8088104—~2.7kAutomated safety check: PassMIT
Vercel Composition Patternssupabase/supabase111k58 repos~726Automated safety check: PassMIT
Finishing a Development Branchobra/superpowers297k5 repos~1.9kAutomated safety check: PassMIT
Typescript Advanced Typesrolling-scopes/rsschool-app10k25 repos~4.2kAutomated safety check: PassMPL-2.0
PR Babysitteropeninterpreter/openinterpreter69k3 repos~4.2kAutomated safety check: PassApache-2.0
Code Review ChecklistshareAI-lab/learn-claude-code78k5 repos~1.1kAutomated safety check: PassMIT

Similar skills

  • Official

    React composition patterns that scale. An agent skill from supabase/supabase.

    111k GitHub starsUsed in 58 repos~726 tokens
    DevelopmentAuto-check passed
  • Walks the last step of a branch: confirm tests pass, detect the git environment, ask how to integrate, carry out your choice and clean up the worktree.

    297k GitHub starsUsed in 5 repos~1.9k tokens
    DevelopmentAuto-check passed
  • Typescript Advanced Types

    rolling-scopes/rsschool-app

    Master TypeScript's advanced type system including generics, conditional types, mapped types, template literals, and utility types for building type-safe applications.

    10k GitHub starsUsed in 25 repos~4.2k tokens
    DevelopmentAuto-check passed
  • PR Babysitter

    openinterpreter/openinterpreter

    Watches an open GitHub pull request until it merges, handling review comments, diagnosing CI failures and retrying flaky checks along the way.

    69k GitHub starsUsed in 3 repos~4.2k tokens
    DevelopmentAuto-check passed
  • Code Review Checklist

    shareAI-lab/learn-claude-code

    Reviews code against a five-part checklist covering security, correctness, performance, maintainability and testing, and reports findings in a fixed format.

    78k GitHub starsUsed in 5 repos~1.1k tokens
    DevelopmentAuto-check passed
  • Greploop

    onyx-dot-app/onyx

    Iteratively improves a PR (GitHub), MR (GitLab), or shelved changelist (Perforce) until Greptile gives it a 5/5 confidence score with zero unresolved comments.

    32k GitHub starsUsed in 4 repos~3.3k tokens
    DevelopmentAuto-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 2 days ago
    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 2 days ago
    Auto-check passed
  • Port To Os8088

    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.

    104 GitHub stars~3.6k tokensUpdated 2 days ago
    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 2 days ago
    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 2 days ago
    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 2 days ago
    Auto-check passed

Categories

Questions about Vga Face

What does Vga Face do?

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…. Vga Face is an agent skill from 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 faces stay exactly as they were.

When should I use Vga Face?

Vga Face fits situations like: development work in your project.

How do I install Vga Face in Claude Code?

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

How do I install Vga Face in Codex?

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

Can I use Vga Face 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 vga-face -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/vga-face, .gemini/skills/vga-face, .github/skills/vga-face and .opencode/skills/vga-face in your project.

What does Vga Face need to run?

Going by SKILL.md and its folder, Vga Face needs the command-line tools its instructions call (git and make).

Does Vga Face 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 Vga Face 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 Vga Face use?

Vga Face 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 Vga Face use?

About 2.7k tokens (SKILL.md is roughly 11k 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 Vga Face?

Skills that share tags, products or a category with Vga Face: Vercel Composition Patterns (supabase/supabase, 111k stars), Finishing a Development Branch (obra/superpowers, 297k stars), Typescript Advanced Types (rolling-scopes/rsschool-app, 10k stars) and PR Babysitter (openinterpreter/openinterpreter, 69k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Vga Face?

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.