Vercel Composition Patterns
supabase/supabase
React composition patterns that scale. An agent skill from supabase/supabase.
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…
$ npx skills add jggonz/os8088 --skill functional-check -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install jggonz/os8088 functional-check --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/functional-check .claude/skills/functional-check && 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 "functional-check" agent skill from https://github.com/jggonz/os8088/tree/main/.claude/skills/functional-check into .claude/skills/functional-check/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "functional-check", 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/functional-checkType 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 functional-check -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install jggonz/os8088 functional-check --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/functional-check .agents/skills/functional-check && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "functional-check" agent skill from https://github.com/jggonz/os8088/tree/main/.claude/skills/functional-check into .agents/skills/functional-check/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "functional-check", 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 functional-check -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install jggonz/os8088 functional-check --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/functional-check .cursor/skills/functional-check && 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 "functional-check" agent skill from https://github.com/jggonz/os8088/tree/main/.claude/skills/functional-check into .cursor/skills/functional-check/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "functional-check", 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/functional-check--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 functional-check -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install jggonz/os8088 functional-check --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/functional-check .gemini/skills/functional-check && 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 "functional-check" agent skill from https://github.com/jggonz/os8088/tree/main/.claude/skills/functional-check into .gemini/skills/functional-check/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "functional-check", 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 functional-checkInstalls 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 functional-check -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/functional-check .github/skills/functional-check && 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 "functional-check" agent skill from https://github.com/jggonz/os8088/tree/main/.claude/skills/functional-check into .github/skills/functional-check/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "functional-check", 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 functional-check -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 functional-check --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/functional-check .opencode/skills/functional-check && 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 "functional-check" agent skill from https://github.com/jggonz/os8088/tree/main/.claude/skills/functional-check into .opencode/skills/functional-check/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "functional-check", 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.
functional-checkFunctionally 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…
Functional Check is an agent skill from 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 user-visible claim, and report per-claim pass/fail. Use when the user asks to functionally check, exercise, or "click through" a branch, PR, or the working tree - or to merge PRs as they pass such a check. Runs the change's own registered gates first; the driving pass is what the gates cannot see.
Its SKILL.md is about 2.1k 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.
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.
Shell commands in SKILL.md call:
makepython3gitghFrom 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.
Functional Check loads about 2.1k tokens when it runs. Until then it costs about 127 tokens; SKILL.md has 1,121 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,121 words, ~2,143 tokens.
.claude/skills/functional-check/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.A change's tests prove what the tests ask. This skill proves the thing the
user was promised: the button fires, the cell recalculates, the pane draws
the picture. It boots what make built, drives the real UI over QMP, and
keeps a screenshot for every claim - so the merge decision rests on what was
seen, not on what a description said.
It exists because the Weave waves 3-7 merge train (PRs #124-#128) was checked
exactly this way, and the checking found what no gate had: a modal alert
explaining a "dead" ^R, a key poll that only reads during play, and a
half-broken machine config that killed every MartyPC row at launch. Every
trap below fired on a real screen during that work. Read LESSONS.md
before driving anything - it is the trap list, and each entry names the
wrong conclusion the trap produces.
Establish what work is under check and what it CLAIMS, before booting anything:
gh pr view <N> - the body's claims are the checklist.
Check out the head branch. If main has moved since the branch forked,
merge origin/main into it FIRST and re-run its gates - a functional
check of a tree that will not exist after merge proves nothing
(docs/UPSTREAM.md; the wave merges each collided with main's own drift).git diff --stat main... plus commit messages. Turn it into concrete,
user-visible sentences ("clicking X does Y") before starting.Write the checklist down. The report at the end is this list with evidence attached, and anything that cannot be exercised is REPORTED as not exercised, never silently skipped.
Cheapest evidence first, and it catches a broken tree before a long interactive session does:
make # fast tier rides it; checkdocs too
make test-full # the pre-merge gate, inside its 600s budget
python3 tools/os88test.py soak -k '<subject>*' # the rows the change ownsmake after every commit and before any emulator row - the About box's
build number is the commit count, so a commit invalidates build/kernel.bin
for the symbol reader and every row dies saying the map describes a
different kernel (CLAUDE.md, Testing traps).
A soak row that fails on a loaded box with a navigation-shaped error (drive B's window never opened; two presses 9 ticks apart) is retried STANDALONE before it is believed - the flake is documented, and one retry distinguishes it from a defect. Never loosen a shared retry to make a row greener.
pkill -f "[q]emu-system" # a stale QEMU answers on the old kernel;
# the pattern must not appear in the killing
# command itself (CLAUDE.md, Testing)
make <the-disk-target> # weavedisk, zdisk, worddisk, ... whatever
# the change ships on
make test TESTAPPS=build/<x>.img &Then WAIT for the socket - make test may rebuild for a long time first,
and a screenshot taken too early photographs the previous world or nothing:
for i in $(seq 1 40); do
[ -S build/qmp.sock ] && python3 tools/qmp.py build/qmp.sock 'info status' \
>/dev/null 2>&1 && break
sleep 2
done
sleep 5 # let the desktop finish its first paintThe three drivers, and the idioms that actually work (each learned the hard way - LESSONS.md has the failure that taught it):
Move / click: python3 tools/mouse.py build/qmp.sock to|click X Y.
--screen WxH must match the adapter (§39).
Double-click: two mouse.py click invocations are two processes and
ALWAYS miss the window. Position first, then both presses down ONE QMP
connection:
python3 tools/mouse.py build/qmp.sock to X Y
python3 tools/qmp.py build/qmp.sock 'mouse_button 1' 'sleep 0.08' \
'mouse_button 0' 'sleep 0.12' 'mouse_button 1' 'sleep 0.08' \
'mouse_button 0'Menus: down on the title, to the item, up on it. Screenshot the
open menu once per session to learn the real item coordinates before
selecting blind.
Keys: python3 tools/qmp.py build/qmp.sock 'sendkey <key>'. A
key-STATE consumer (OSAPI_KEY_DOWN pollers - games) needs a held key:
sendkey z 800 holds for 800ms; the default tap can fall between polls.
Rapid sequences lose keystrokes - pace them, and verify the on-screen
text rather than trusting the send.
Screenshot: python3 tools/shot.py build/qmp.sock out.png [--crop X,Y,W,H] [--zoom N]. Crop and zoom before concluding a click
was lost - a small change is invisible in a full-screen dump. Move the
mouse away first; the cursor sits exactly where you were working.
Verify the target before acting on it: single-click, screenshot the selection, THEN double-click in place. Rows move when file counts change; windows move when reopened.
Read the whole screen when anything is odd. A menu bar that "lost its menus", input that "stopped working" - take a FULL screenshot before theorizing: a modal alert owns the bar and swallows every event, and it may have been raised by the previous action's handler.
Prove animation with arithmetic, not eyeballs: two shots N seconds apart, diff the pixels (PIL), report the changed-pixel count and bbox. Identical frames are CORRECT for an idle canvas - know what the contract says before calling stillness a bug.
Exercise every checklist claim, happy path AND one refusal per surface the
change added (the refusal sentence is part of the contract - §10-style
sentences are quoted in the report verbatim). When an oracle exists
(weavesim --render, dfrotz, a golden number in the PR body), check the
glass against it, not against the change's own opinion of itself.
A table: claim | what was driven | what the glass showed | verdict, with the screenshot paths. Then, plainly: anything NOT exercised and why, any flake seen and how it was disambiguated, and any defect found - a defect in the change blocks the merge; a defect found in code the change does not own is reported separately (and fixed in its own commit/PR if small, the wave precedent).
Merging is not part of the check; do it only when the user asked for
check-then-merge. The house style is squash (gh pr merge N --squash;
--admin only when the user said to use admin privileges). For a STACK,
per PR, in order:
gh pr edit <next> --base main, then delete. Deleting a
branch that is still the base of an open PR CLOSES that PR, and a closed
PR whose base branch is gone cannot be reopened until the branch is
pushed back.origin/main into the next branch, resolve (squash merges mean
the histories share no commits - identical content auto-resolves, and a
conflict means one side is genuinely newer; classify per file against
the previous branch's tip before touching anything), re-run step 1's
gates, re-run the functional pass for THAT change, merge, repeat.git diff main <last-branch> must be EMPTY - the
proof that what merged is what was gated - then make && make test-full
on main, and leave the checkout on main.Throughout: never git add -A/-u/. (name the paths), never
git reset --hard or git stash pop in a tree with anyone else's dirty
files or stash stack (capture git diff of any pre-existing dirty file
before starting, so it can be restored byte-for-byte), and leave the user's
uncommitted files exactly as found.
© 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 1 other file in .claude/skills/functional-check of jggonz/os8088.
Open the folder on GitHubat commit 95f7e97
Functional Check 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 |
|---|---|---|---|---|---|---|
| Functional Check this skilljggonz/os8088 | 104 | — | ~2.1k | Automated safety check: Pass | MIT | |
| Vercel Composition Patternssupabase/supabase | 111k | 58 repos | ~726 | Automated safety check: Pass | MIT | |
| Finishing a Development Branchobra/superpowers | 297k | 5 repos | ~1.9k | Automated safety check: Pass | MIT | |
| Typescript Advanced Typesrolling-scopes/rsschool-app | 10k | 25 repos | ~4.2k | Automated safety check: Pass | MPL-2.0 | |
| PR Babysitteropeninterpreter/openinterpreter | 69k | 3 repos | ~4.2k | Automated safety check: Pass | Apache-2.0 | |
| Code Review ChecklistshareAI-lab/learn-claude-code | 78k | 5 repos | ~1.1k | Automated safety check: Pass | MIT |
supabase/supabase
React composition patterns that scale. An agent skill from supabase/supabase.
obra/superpowers
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.
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.
openinterpreter/openinterpreter
Watches an open GitHub pull request until it merges, handling review comments, diagnosing CI failures and retrying flaky checks along the way.
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.
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.
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…
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
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…. Functional Check is an agent skill from 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 user-visible claim, and report per-claim pass/fail.
Functional Check fits situations like: the user asks to functionally check; click through a branch; the working tree -; merge PRs as they pass such a check.
Run `npx skills add jggonz/os8088 --skill functional-check -a claude-code`. Or copy the skill folder (.claude/skills/functional-check in jggonz/os8088) into .claude/skills/functional-check in your project. Claude Code loads it when a task matches its description.
Run `npx skills add jggonz/os8088 --skill functional-check -a codex`. Or copy the skill folder (.claude/skills/functional-check in jggonz/os8088) into .agents/skills/functional-check 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 functional-check -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/functional-check, .gemini/skills/functional-check, .github/skills/functional-check and .opencode/skills/functional-check in your project.
Going by SKILL.md and its folder, Functional Check needs the command-line tools its instructions call (make, python3, git and gh). Our summary lists: Python 3.
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.
Functional Check 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.1k tokens (SKILL.md is roughly 8.6k 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 Functional Check: 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.
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.