Vercel Composition Patterns
supabase/supabase
React composition patterns that scale. An agent skill from supabase/supabase.
Write Commodore 64 BASIC v2 programs. An agent skill from idolpx/meatloaf.
$ npx skills add idolpx/meatloaf --skill c64-basic -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install idolpx/meatloaf c64-basic --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/idolpx/meatloaf.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/commodore64-basic .claude/skills/c64-basic && 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 "c64-basic" agent skill from https://github.com/idolpx/meatloaf/tree/main/.claude/skills/commodore64-basic into .claude/skills/c64-basic/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "c64-basic", 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/idolpx/meatloaf/tree/main/.claude/skills/commodore64-basicType 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 idolpx/meatloaf --skill c64-basic -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install idolpx/meatloaf c64-basic --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/idolpx/meatloaf.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/commodore64-basic .agents/skills/c64-basic && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "c64-basic" agent skill from https://github.com/idolpx/meatloaf/tree/main/.claude/skills/commodore64-basic into .agents/skills/c64-basic/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "c64-basic", 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 idolpx/meatloaf --skill c64-basic -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install idolpx/meatloaf c64-basic --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/idolpx/meatloaf.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/commodore64-basic .cursor/skills/c64-basic && 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 "c64-basic" agent skill from https://github.com/idolpx/meatloaf/tree/main/.claude/skills/commodore64-basic into .cursor/skills/c64-basic/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "c64-basic", 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/idolpx/meatloaf.git --path .claude/skills/commodore64-basic--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 idolpx/meatloaf --skill c64-basic -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install idolpx/meatloaf c64-basic --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/idolpx/meatloaf.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/commodore64-basic .gemini/skills/c64-basic && 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 "c64-basic" agent skill from https://github.com/idolpx/meatloaf/tree/main/.claude/skills/commodore64-basic into .gemini/skills/c64-basic/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "c64-basic", 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 idolpx/meatloaf c64-basicInstalls 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 idolpx/meatloaf --skill c64-basic -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/idolpx/meatloaf.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/commodore64-basic .github/skills/c64-basic && 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 "c64-basic" agent skill from https://github.com/idolpx/meatloaf/tree/main/.claude/skills/commodore64-basic into .github/skills/c64-basic/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "c64-basic", 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 idolpx/meatloaf --skill c64-basic -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install idolpx/meatloaf c64-basic --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/idolpx/meatloaf.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/commodore64-basic .opencode/skills/c64-basic && 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 "c64-basic" agent skill from https://github.com/idolpx/meatloaf/tree/main/.claude/skills/commodore64-basic into .opencode/skills/c64-basic/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "c64-basic", 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.
c64-basicWrite Commodore 64 BASIC v2 programs. An agent skill from idolpx/meatloaf.
C64 Basic is an agent skill from idolpx/meatloaf. Write Commodore 64 BASIC v2 programs. Use this skill whenever the user asks to write, edit, or debug C64 BASIC code — especially for hardware control, screen/color POKEs, sprites, SID, keyboard/joystick input, and the BASIC-specific tricks (PETSCII shortcuts, chr$() JSON helpers, line-numbering conventions, @alias long variables, label syntax with bc64). For HTTP requests and JSON APIs, the skill points you to the language-agnostic meatloaf-networking reference; BASIC is just one of several clients that drive the…
Its SKILL.md is about 2.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files (for example `bc_tokenizer.md`, `hardware.md` and `reference.md`).
It sits in Development. The repository describes itself as: The internet is a massive floppy drive for your C64 with Meatloaf! The licence is GPL-3.0.
2 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 9a88a9f. 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.
No scripts in the folder and no shell commands in SKILL.md (its code samples are basic).
From the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
github.comFrom 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.
C64 Basic loads about 2.8k tokens when it runs. Until then it costs about 152 tokens; SKILL.md has 1,303 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 idolpx/meatloaf at commit 9a88a9f, republished under its GPL-3.0 licence (© idolpx). 1,303 words, ~2,837 tokens.
.claude/skills/c64-basic/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.Important distinction: this skill covers two contexts:
.bas files into .prg binaries. It adds sugar on top of stock BASIC V2: labels, auto-numbering, case-insensitive keywords, @alias long variables, #include, PETSCII control codes, and more. bc_tokenizer.md is the authoritative reference — it always takes precedence over reference.md.When generating code, default to bc64's extended syntax (labels, auto-numbering, uppercase keywords, @aliases) unless the user explicitly asks for raw/pure BASIC V2.
Every .bas file you generate must start with this comment:
; Compile with bc.py from VS64 — https://github.com/rolandshacks/vs64Use a ; line-start comment for this (bc.py strips it from the output). If using #crunch, the attribution is stripped automatically in release builds.
Before writing the main logic, pick a color scheme that fits the program's theme. A blank C64 screen (cyan/blue) looks amateurish. A deliberate palette makes it feel intentional.
Set these three registers near the top of the program:
| Register | Purpose | Example |
|---|---|---|
POKE 53280, N | Border color | POKE 53280, 0 = black |
POKE 53281, N | Screen background | POKE 53281, 0 = black |
POKE 646, N | Text color | POKE 646, 7 = yellow |
Pick something that evokes the theme:
0), black background (0), yellow text (7) — like the opening crawl6), black background (0), cyan text (3) or white (1)0), dark grey background (11), red text (2)5), black background (0), light green (13) or white (1)0), black background (0), green text (5) — like a green-phosphor CRT6), light blue background (14), white text (1)4), black background (0), yellow text (7) or cyan (3)1), dark grey background (11), white text (1)7), black background (0), purple text (4) or pink (10)2), dark brown background (9), yellow text (7)Color palette (0–15): 0=black, 1=white, 2=red, 3=cyan, 4=purple, 5=green, 6=blue, 7=yellow, 8=orange, 9=brown, 10=light red, 11=dark grey, 12=grey, 13=light green, 14=light blue, 15=light grey
Wrap it up in a single line with the attribution:
; Compile with bc.py from VS64 — https://github.com/rolandshacks/vs64
POKE 53280,0 : POKE 53281,0 : POKE 646,7 : rem black border, black bg, yellow text
PRINT "{clr}" : rem clear screen with new colorsKeywords and variable names can be uppercase or lowercase — bc64 accepts both. print and PRINT compile to the same token. Use whichever reads better; uppercase keywords are conventional in BASIC literature.
There is no point creating indentation for loops or anything else — it only eats line space and memory.
You do not need explicit line numbers — bc64 auto-numbers lines starting at 1, incrementing by 1 (configurable via #linestep N). Lines that have no number get the next auto-number; lines with an explicit number set the counter for subsequent lines.
PRINT "HELLO" → line 1 (auto)
PRINT "WORLD" → line 2 (auto)
10 PRINT "TEN" → explicit line 10
PRINT "ELEVEN" → line 11 (continues from 10)If you use explicit line numbers, increment by 10 (10, 20, 30, ...) to leave room for inserts. An LLM cannot reliably renumber lines across a whole program.
Reserve a high line range (e.g. 10000+) for subroutines and helpers when using explicit numbers. This keeps main logic in the low range and lets it grow without crowding subroutines.
Use labels instead of line numbers for control flow. Labels make code far more readable and maintainable than raw numeric references.
GOTO Start ← jumps to wherever "Start:" ended up
Start:
A = 1
PRINT A
GOTO Start ← infinite loopLabel naming rules:
ReadJson starts with READ — the tokenizer sees READ JSON and tries to execute a DATA read, crashing with "Out of data". DataLoader, ForEach, NextItem, InputPrompt, PrintHeader all have the same problem. Prefer names like FetchJson, JsonRead, LoadData, EachItem, GetInput, ShowHeader instead.start == Start == START)Labels work with GOTO, GOSUB, ON ... GOTO/GOSUB, and IF ... THEN:
GOSUB PrintScore
ON X GOTO One, Two, Three
IF A > 10 THEN EndGameIn raw (non-bc64) BASIC V2: labels are NOT available — use line numbers and REM comments to mark sections.
There are no procedures in BASIC v2, but you can write cleaner code using subroutines called by gosub. With bc64, use labels as subroutine targets:
GOSUB InitScreen
GOSUB ReadJoystick
InitScreen:
PRINT "{clr}"
PRINT "Score: 0 Lives: 3"
RETURN
ReadJoystick:
JOY = PEEK(56320)
RETURNA subroutine ends with return. Prefix a subroutine with a rem comment naming its purpose if you prefer.
Document argument/return variables — BASIC V2 has no formal parameters, so when a subroutine reads variables as inputs or sets variables as outputs, note them in a comment:
; Subroutine: Divide
; Args: num — numerator
; den — denominator
; Returns: res — quotient
; rem — remainder
Divide:
res = num / den
rem = num - res * den
RETURNThis makes calling code self-documenting: num = 10 : den = 3 : GOSUB Divide. The caller knows what to set beforehand and what to read afterwards.
Think of on x gosub as a multiway branch. Important: it is 1-indexed — x must be 1 for the first line number, 2 for the second, etc. If x is 0 or exceeds the number of targets, execution falls through to the next line (no error). This is the most common off-by-one trap in BASIC v2.
For often-used calculations, define single-line functions with def fn.
When using for loops, always include the variable name in the next statement — this catches bugs.
INPUT syntax: always use ; (not ,) between the prompt string and the variable. Valid: input "prompt"; x — invalid: input "prompt", x.
With plain bc64 (no --aliases), the stock C64 2-char limit applies. To avoid collisions: give every variable a unique first-two-character name, factoring in the type suffix — cm (float), cm$ (string), and cm% (integer) are three separate variables, but cm and cm$ are distinct while cm and cmd are not.
With --aliases / -a, use the @ prefix to get unlimited-length variable names:
@score = 0 ← becomes A0
@screen = 1024 ← becomes A1
@name$ = "hero" ← becomes A2$
@lives% = 3 ← becomes A3%The compiler generates unique 2-char roots, avoiding BASIC keyword conflicts.
Don't use @ on names that are already 2 characters — @sc just becomes another 2-char root (wasting an alias slot). Use @ only for names longer than 2 characters where you'd otherwise hit the collision limit.
See bc_tokenizer.md §8 for full alias rules.
Commodore 64 can make HTTP requests (GET, POST, PUT) using Meatloaf's full-mode HTTP client. Use secondary address 2 when opening a URL to trigger full mode. The full command reference, response reading patterns, helper subroutines, and error handling live in the meatloaf-networking skill — that reference is language-agnostic and the same protocol applies whether you drive Meatloaf from BASIC, C, or assembly. For JSON Pointer syntax (the /path argument to the j command), see json_pointer.md in the networking skill.
When writing JSON for API requests, only three characters are tricky in C64 BASIC:
" is the string delimiter — use chr$(34){ and } don't exist in PETSCII — use chr$(123) and chr$(125)Everything else (:, ,, [, ], letters, numbers) works directly in strings.
Define helper constants once at the top of your program so JSON building stays readable:
10 qu$=chr$(34):ob$=chr$(123):cb$=chr$(125) : rem " { }
20 bd$=ob$+qu$+"name"+qu$+":"+qu$+"meatloaf"+qu$+","+qu$+"version"+qu$+":1"+cb$Without the helpers, the same line is a tangled wall of chr$() calls:
bd$=chr$(123)+chr$(34)+"name"+chr$(34)+":"+chr$(34)+"meatloaf"+chr$(34)+","+chr$(34)+"version"+chr$(34)+":1"+chr$(125)Use qu$, ob$, cb$ consistently and your JSON-building code will be far easier to read and edit.
Commodore 64 hardware is controlled by POKEing memory-mapped registers. See hardware.md for a growing reference of common pokes — screen/border color, character set selection, keyboard/joystick input, SID sound, and sprites. When you encounter a new hardware need, look it up and add it there so the list grows over time.
j command, see json_pointer.md in the networking skill.© idolpx, GPL-3.0. 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 3 other files in .claude/skills/commodore64-basic of idolpx/meatloaf.
Open the folder on GitHubat commit 9a88a9f
C64 Basic 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 |
|---|---|---|---|---|---|---|
| C64 Basic this skillidolpx/meatloaf | 128 | — | ~2.8k | Automated safety check: Pass | GPL-3.0 | |
| Vercel Composition Patternssupabase/supabase | 111k | 59 repos | ~726 | Automated safety check: Pass | MIT | |
| Finishing a Development Branchobra/superpowers | 296k | 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.
idolpx/meatloaf
Debug Commodore 64 programs running under the VICE emulator through its binary monitor: BASIC, cc65-compiled C, and 6502 assembly.
idolpx/meatloaf
Debug Commodore 64 BASIC programs, cc65-compiled C PRGs, and Meatloaf ESP32 firmware in tandem, using the Ultimate 64's REST API and Meatloaf's UART serial debug output.
idolpx/meatloaf
Commodore 64/128 JiffyDOS reference — use whenever the user is working in a C64/128 emulator (VICE, Ultimate 64, etc.) and you see signs of the JiffyDOS replacement ROM: the boot saying "jiffydos…
idolpx/meatloaf
Reference for Meatloaf's DOS command channel — the complete set of drive-level commands accepted over the IEC bus secondary address 15 on a Meatloaf ESP32 device.
idolpx/meatloaf
Reference for the Meatloaf full-mode HTTP client protocol — the line-oriented command language (m, h, b, s, status, r-h, r-b, j, c) that an ESP32-based Meatloaf device accepts over the C64's IEC bus…
Categories
Write Commodore 64 BASIC v2 programs. An agent skill from idolpx/meatloaf. C64 Basic is an agent skill from idolpx/meatloaf. Write Commodore 64 BASIC v2 programs.
C64 Basic fits situations like: the user asks to write; debug C64 BASIC code — especially for hardware control; screen/color POKEs; keyboard/joystick input.
Run `npx skills add idolpx/meatloaf --skill c64-basic -a claude-code`. Or copy the skill folder (.claude/skills/commodore64-basic in idolpx/meatloaf) into .claude/skills/c64-basic in your project. Claude Code loads it when a task matches its description.
Run `npx skills add idolpx/meatloaf --skill c64-basic -a codex`. Or copy the skill folder (.claude/skills/commodore64-basic in idolpx/meatloaf) into .agents/skills/c64-basic 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 idolpx/meatloaf --skill c64-basic -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/c64-basic, .gemini/skills/c64-basic, .github/skills/c64-basic and .opencode/skills/c64-basic in your project.
SKILL.md names no scripts, command-line tools or credentials: C64 Basic is instructions for the agent only.
SKILL.md names 1 domain. In commands or code: github.com; the agent is likely to contact it when it follows the instructions. 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.
C64 Basic is published under the GPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.8k 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.
Skills that share tags, products or a category with C64 Basic: Vercel Composition Patterns (supabase/supabase, 111k stars), Finishing a Development Branch (obra/superpowers, 296k 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.
idolpx (a GitHub user) maintains it in idolpx/meatloaf, which has 128 GitHub stars. The repository holds 6 skills in this directory. The repository was last updated on October 6, 2026.
Source: idolpx/meatloaf on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.