Build a Game Lab for one mechanic of a studio's game (the jump, a hit, a dash, a drift, a landing) and iterate on how it FEELS with the creator, side by side.

Apache-2.0Auto-check passedDevelopment

Install Lab

skills CLI
$ npx skills add hashgraph-online/awesome-codex-plugins --skill lab -a claude-code

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

GitHub CLI
$ gh skill install hashgraph-online/awesome-codex-plugins lab --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/hashgraph-online/awesome-codex-plugins.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/homie-rocks/homie/skills/lab .claude/skills/lab && 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
lab
GitHub stars
1.2k
Token cost
~2.7k tokens
SKILL.md length
1,590 words
Files
4 (incl. references)
Skills in repo
686
Repo updated
First seen
Licence
Apache-2.0

At a glance

Build a Game Lab for one mechanic of a studio's game (the jump, a hit, a dash, a drift, a landing) and iterate on how it FEELS with the creator, side by side.

  • Works in 7 steps: Before anything → Instrument it, change nothing, commit → Look for what it is missing, with the… → …
  • Someone says iterate on the jump
  • SKILL.md covers 0. Before anything, 1. Instrument it, change…, 2. Look for what it is… and 3. Propose it as phases and…, plus 5 more sections
  • Calls npx, git and npm

What it does

Lab is an agent skill from hashgraph-online/awesome-codex-plugins. Build a Game Lab for one mechanic of a studio's game (the jump, a hit, a dash, a drift, a landing) and iterate on how it FEELS with the creator, side by side. The lab plays one short take in two builds at once, New (the working tree) and Today (the last commit), on one clock with the same seed and presses, slowed to a tenth or stepped a frame at a time, with a timeline of named phases, graphs of tracked values New against Today, the game's own onion skins and arcs, preset views, a phone-size view, and live…

Its SKILL.md is about 2.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 4 other files, including reference files (for example `references/API.md`, `references/PRINCIPLES.md` and `references/record-lab.json`).

It sits in Development. It works with Git. The repository describes itself as: A curated list of awesome OpenAI Codex / ChatGPT plugins, skills, and resources. The 1 Codex Marketplace. See live plugins at: https://hol.org/plugins/best-codex-plugins. The licence is Apache-2.0.

When your agent uses it

  • Someone says iterate on the jump
  • Make the hit feel punchier
  • The dash feels floaty
  • The landing is stiff

Example prompts

  • “s tunables.json. Use when someone says”
  • “make the hit feel punchier”
  • “tune the drift”
  • “/lab”

Requirements

  • Node.js

Workflow steps

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

  1. Before anything
  2. Instrument it, change nothing, commit
  3. Look for what it is missing, with the person
  4. Propose it as phases and tunables, then build New
  5. Multiplayer: every screen, the host's rules
  6. When a feel change costs frames, say so with numbers
  7. Keep what the person likes, then commit

What it can do on your machine

Read from SKILL.md and the folder at commit 78497e5. 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:

    • npx
    • git
    • npm
    • node

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

  • Network

    No URLs in SKILL.md. Its commands use npx, git and npm, 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

Lab loads about 2.7k tokens when it runs, and up to ~5.2k if it reads all its reference files. Until then it costs about 211 tokens; SKILL.md has 1,590 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~211
When it runs · the whole SKILL.md, loaded when a task matches
~2.7k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~5.2k

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 hashgraph-online/awesome-codex-plugins at commit 78497e5, republished under its Apache-2.0 licence (© hashgraph-online). 1,590 words, ~2,732 tokens.

Download SKILL.mdSave it as .claude/skills/lab/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.
name
lab
description
Build a Game Lab for one mechanic of a studio's game (the jump, a hit, a dash, a drift, a landing) and iterate on how it FEELS with the creator, side by side. The lab plays one short take in two builds at once, New (the working tree) and Today (the last commit), on one clock with the same seed and presses, slowed to a tenth or stepped a frame at a time, with a timeline of named phases, graphs of tracked values New against Today, the game's own onion skins and arcs, preset views, a phone-size view, and live sliders that write kept values back into the game's tunables.json. Use when someone says "iterate on the jump", "make the hit feel punchier", "tune the drift", "the dash feels floaty", "the landing is stiff", "add juice", "hit-stop", "squash and stretch", "screen shake", or asks for an animation or feel editor for their game.

The Game Lab: one mechanic, New against Today

A studio is the folder with studio.json. The lab is npx --no-install homie-studio lab <game> (from @homie-rocks/studio 0.20.0): a page on this computer that plays a take (games/<game>/lab.json) in New (the working tree, rebuilt on every save) beside Today (HEAD, or --today <ref>). Both run on the lab's clock: frame f is exactly f/fps seconds, the dice are seeded, the presses land on the same frames, so a take plays the same every time and the two builds can be compared frame by frame. The page checks that too: "Replays match" (or where they differ). homie-studio lab check <game> plays the same take headless and writes numbers, a contact sheet and a still.

The game opts in with a few calls from @homie-rocks/studio/lab (every one a no-op outside the lab, so they stay in the game). references/API.md has every call, the take format and the multiplayer rules; references/PRINCIPLES.md has the principles of feel this skill works from, with honest sources.

0. Before anything

  • df -h .: keep 10 GB free. Commit or stash what the person is working on: Today is a commit, and the lab never touches git beyond reading it (Today is built from git's own checkout of the ref, in .studio/lab/, git-ignored).
  • Name the mechanic in one line with the person ("the bump in Gem Rush: you wave, a body near you flies"), and find it in the code: the input that starts it, the state it changes, where it is drawn. Say which numbers shape it.

1. Instrument it, change nothing, commit

Make the lab able to see the mechanic without changing how it feels (Today must be the game as it is):

  1. tunables.json next to game.json: move the numbers that shape the mechanic into it, at their current values, each with a range, a unit, a group and a note in plain words. Read them with const T = lab.tunables(tuning).
  2. Phases at its natural beats: lab.phase('LAUNCH', 'Leaves at full speed, slows evenly'), lab.phase(null) when it is over. Short capital names; the note says what the phase is FOR. Name today's phases honestly: a mechanic with no anticipation has no COIL.
  3. Tracks that show its motion: speed, height, distance, squash, a camera's offset (lab.track(name, v, unit)). Speed from the position each frame (distance / dt) is honest whatever the code does inside.
  4. Poses and overlays: lab.pose('subject', { x, y, sx, sy, a }) each frame, and the game's own onion (ghosts every few frames), arcs (the path with a dot a frame: spacing) and a reach or hit box (lab.overlay), drawn by lab.draw(ctx, scale) in world space.
  5. Views: lab.camera({ game: null, close: { zoom: 2.4 }, arena: { whole: true } }); 3D: side, front, top, orbit.
  6. Characters (@homie-rocks/studio/animate): pass the lab's tunables to loadCharacter(models, url, { tune: T }) and copy its ANIM_TUNING (fade, walkSpeed, runSpeed, actSpeed, jumpStretch, landSquash, squashHz, lean, flinch, lookAt, spring) into tunables.json's "Motion" group: the clips' blends, the squash and stretch and the lean become sliders too. Report the character's own state (IDLE, RUN, JUMP, FALL, LAND, ATTACK, HIT) as phases when the move is an animation. The hero-rush-3d starter's takes ("jump", "swing") show it; the animate skill has the rest.
  7. A stage when the mechanic needs a target (a dummy to hit, a ledge to jump from): lab.stage === 'dummy' where the round starts. Only the lab ever sets it. Keep a real-play take too.
  8. A take in lab.json: a few seconds, a seed, the presses ({ "at": 0.5, "key": "Space" }), the view and track to open on. Or record one: press REC in the lab and play it in NEW (both builds get the presses).

Guard allocation: report from one if (lab.on) labReport(dt) a frame. Then:

sh
npx --no-install homie-studio lab check <game>     # phases show, replays match, New = Today
git commit -m "Lab: instrument <the mechanic> (no change to how it feels)"

2. Look for what it is missing, with the person

Open the lab (npx --no-install homie-studio lab <game>, a background task; give the person the link; never open a browser yourself) and read the take at ¼ speed with the onion skin and arcs on. Say what you see in the terms of references/PRINCIPLES.md: no anticipation, no impact moment (hit-stop), even spacing (no ease), a creep and a pop at the end, no follow-through or overlap, a rigid body (no squash and stretch), a camera that never reacts.

References: describe the principle and, if it helps, a well-known game where anyone can see it, in your own words. Never copy another game's art, code, sounds or frame data, and never state another game's exact numbers unless you measured them yourself from footage the person can see or a public source you name.

3. Propose it as phases and tunables, then build New

Write the proposal as the phases the move will have and the number that shapes each one, for example:

HIT-STOP 70 ms (the body holds, white, squashed) → LAUNCH (leaves at 1500 px/s, stretched 30%) → SLIDE (eases into the stop over 185 px, the same at 12 fps as at 60) → SETTLE 260 ms (squash, then a wobble: overlap).

Change the game in the working tree; the lab rebuilds New on save and replays the take. Then:

sh
npx --no-install homie-studio lab check <game>     # New against Today: phases, peaks, JavaScript per frame

Read REPORT.md and look at sheet.png (the lab at each phase's start, New beside Today) before you say anything about it. Tell the person in a few lines: which phases New has that Today did not, the numbers that moved, and what to watch for in the lab. The person tunes with the sliders and presses Keep in code (written into tunables.json, one line a value), or tells you, and you run npx --no-install homie-studio lab set <game> name=value.

Show full SKILL.md (664 more words)Show less

4. Multiplayer: every screen, the host's rules

A studio game is played in a room. A feel change must look the same on every screen and keep the two-browser check green:

  • Presentation from what every screen already has: an event the host sends (net.send('knock', { slot, dx, dy })) or a change in the snapshot (a slime's hit points dropping). Flashes, squash, sparks and numbers are drawn locally.
  • Gameplay on the host: a hit-stop that holds a body, a push, a slide's curve. Make motion frame-rate independent (a curve of time, not a per-frame multiply), so a 30 fps phone moves the same distance.
  • Juice dice: lab.random() for particles and shake, never Math.random(): the world's dice must be the same in both builds for the lab to compare them, and lab.random() is Math.random() outside the lab.
  • A change that moves gameplay (a push that puts a target out of reach) shows in the lab's numbers: read them. One push in this skill's own proof took a slime out of reach and the next two strikes missed; a lunge fixed it.

Then the game's own check: npm run dev (background), npx --no-install homie-studio check <game> --url http://127.0.0.1:8787. It must pass before anything is kept.

5. When a feel change costs frames, say so with numbers

lab check prints the game's JavaScript per frame, New against Today, on the same frames (the mean: Chrome times a page in steps of about 0.1 ms). It is a hint. For the real cost, the perf skill measures both builds in a room, on an emulated phone, in alternating pairs: perf.mjs baseline <game> with games/<game>/ at Today (git stash the change, or check out HEAD's copy of the folder), then the change back and perf.mjs try <game> --name "<the feel change>" --looks "<what looks different>" --plays "<what plays different>" --measure. --measure is required here: without it try reverts anything that is not faster, and a feel change is kept for its feel, not its speed. Tell the person the result in numbers: frames (p95), the main thread per frame, time to playable, against Today. In this skill's own proof the bump cost 0.09 ms of main thread a frame on the emulated phone (1.48 to 1.57 ms, +4.9%, within the noise) with frames unchanged at 16.7 ms. Never say a feel change is free from the code.

6. Keep what the person likes, then commit

The person decides. Revert what they did not like (only those lines, in games/<game>/), keep the rest, run lab check and the two-browser check once more, then commit with the phases in the message:

sh
git add games/<game> && git commit -m "<Game>: the bump lands (hit-stop 70 ms), flies stretched, eases out, settles"

Record a side-by-side clip the person can share with the video skill's record, driving the lab page itself: references/record-lab.json is a steps file (play at 1x, then ¼ with the onion skin, then step through the phases). node <video.mjs> record lab-<game> --steps <steps> --url http://127.0.0.1:8790. Stop the lab when done: npx --no-install homie-studio lab --stop (this studio's only; it also removes the checkouts Today was built from).

Where people see it

  • Claude Code: the link http://127.0.0.1:8790/<game>/ (run the lab as a background task).
  • Claude Desktop and claude.ai (Homie Studio's local tools): the game_lab tool starts the lab and answers with a card: a still of New beside Today at the take's busiest moment, the phases of each, the numbers, and Open.
  • Anyone: the recorded clip, and the commit, whose message names the phases.

Never

  • Never say it feels better from the code. Show the take; the person feels it.
  • Never change Today: instrumenting changes nothing a player feels, and is committed on its own first.
  • Never put a lab call where it allocates every frame outside the lab (if (lab.on) around reporting).
  • Never use Math.random() for juice, or read a clock other than requestAnimationFrame's time and net.now().
  • Never edit a take to make New look better; record a new one and say why.
  • Never leave the lab running when the work is done (lab --stop), or open a browser for the person.

© hashgraph-online, Apache-2.0. 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 (references) in plugins/homie-rocks/homie/skills/lab of hashgraph-online/awesome-codex-plugins.

  • SKILL.md
  • references/API.md
  • references/PRINCIPLES.md
  • references/record-lab.json

Open the folder on GitHubat commit 78497e5

Compare with similar skills

Lab 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.

Lab compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Lab this skillhashgraph-online/awesome-codex-plugins1.2k—~2.7kAutomated safety check: PassApache-2.0
Finishing a Development Branchobra/superpowers296k5 repos~1.9kAutomated safety check: PassMIT
Code Review ChecklistshareAI-lab/learn-claude-code78k5 repos~1.1kAutomated safety check: PassMIT
Codebase Knowledge Graph Q&AEgonex-AI/Understand-Anything86k1 repos~1.2kAutomated safety check: PassMIT
Code Design Rationale Investigatorcursor/plugins10k9 repos~2.6kAutomated safety check: PassNone
Understand Diff AnalysisEgonex-AI/Understand-Anything86k1 repos~1.4kAutomated safety check: PassMIT

Similar skills

  • 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.

    296k GitHub starsUsed in 5 repos~1.9k 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
  • Codebase Knowledge Graph Q&A

    Egonex-AI/Understand-Anything

    Answers questions about a codebase by searching a prebuilt knowledge graph of its files, functions, classes and dependencies, not by rereading every source file.

    86k GitHub starsUsed in 1 repo~1.2k tokens
    DevelopmentAuto-check passed
  • Official

    Digs into why code is shaped the way it is by checking git history, pull requests and connected tools in parallel, then reporting a cited read on the tradeoffs.

    10k GitHub starsUsed in 9 repos~2.6k tokens
    DevelopmentAuto-check passed
  • Understand Diff Analysis

    Egonex-AI/Understand-Anything

    Reads your git changes or a pull request against a prebuilt knowledge graph of the project to explain what changed, which components are affected and what is risky.

    86k GitHub starsUsed in 1 repo~1.4k tokens
    DevelopmentAuto-check passed
  • Understand Explain

    Egonex-AI/Understand-Anything

    Gives an in-depth explanation of one file, function or module by reading the project's knowledge graph and checking that the graph is still fresh.

    86k GitHub starsUsed in 1 repo~1.3k tokens
    DevelopmentAuto-check passed

More from hashgraph-online/awesome-codex-plugins

All 686 skills in this repo
  • Anime Reaction Gif

    hashgraph-online/awesome-codex-plugins

    Create original anime-style reaction stickers as looping GIFs and MP4 previews, using generated character pose sheets and timed key poses.

    1.2k GitHub stars~922 tokensUpdated today
    Auto-check passed
  • Calibredb

    hashgraph-online/awesome-codex-plugins

    Manage and query Calibre libraries with the calibredb CLI (local paths or Calibre Content server URLs).

    1.2k GitHub stars~1k tokensUpdated today
    Auto-check passed
  • Rust API Test Harness

    hashgraph-online/awesome-codex-plugins

    A skill your agent uses when adding, changing, testing, or debugging Rust HTTP APIs and services, especially when Codex needs black-box integration tests, random-port app startup, real database test…

    1.2k GitHub stars~1.7k tokensUpdated today
    Auto-check passed
  • Art

    hashgraph-online/awesome-codex-plugins

    Make a studio's game look like something at build time — a cover from a real frame of the game (free), painted covers, backdrops, textures and character plates from image models through the…

    1.2k GitHub stars~2.4k tokensUpdated today
    Auto-check passed
  • Game Balance Economy

    hashgraph-online/awesome-codex-plugins

    Balance game difficulty, resources, rewards, probability, progression, economies, and dominant strategies.

    1.2k GitHub stars~618 tokensUpdated today
    Auto-check passed
  • Manuscript Engagement Analytics

    hashgraph-online/awesome-codex-plugins

    Analyze nonfiction manuscripts for reader engagement signals, including heading-level word counts, slow starts, long slogs, weak takeaway titles, value pacing, beta-reader comment dropoff, and…

    1.2k GitHub stars~875 tokensUpdated today
    Auto-check passed

Works with

Categories

Questions about Lab

What does Lab do?

Build a Game Lab for one mechanic of a studio's game (the jump, a hit, a dash, a drift, a landing) and iterate on how it FEELS with the creator, side by side. Lab is an agent skill from hashgraph-online/awesome-codex-plugins. Build a Game Lab for one mechanic of a studio's game (the jump, a hit, a dash, a drift, a landing) and iterate on how it FEELS with the creator, side by side.

When should I use Lab?

Lab fits situations like: someone says iterate on the jump; make the hit feel punchier; the dash feels floaty; the landing is stiff.

How do I install Lab in Claude Code?

Run `npx skills add hashgraph-online/awesome-codex-plugins --skill lab -a claude-code`. Or copy the skill folder (plugins/homie-rocks/homie/skills/lab in hashgraph-online/awesome-codex-plugins) into .claude/skills/lab in your project. Claude Code loads it when a task matches its description.

How do I install Lab in Codex?

Run `npx skills add hashgraph-online/awesome-codex-plugins --skill lab -a codex`. Or copy the skill folder (plugins/homie-rocks/homie/skills/lab in hashgraph-online/awesome-codex-plugins) into .agents/skills/lab in your project. Codex loads it when a task matches its description.

Can I use Lab 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 hashgraph-online/awesome-codex-plugins --skill lab -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/lab, .gemini/skills/lab, .github/skills/lab and .opencode/skills/lab in your project.

What does Lab need to run?

Going by SKILL.md and its folder, Lab needs the command-line tools its instructions call (npx, git, npm and node). Our summary lists: Node.js.

Does Lab access the network?

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

Is Lab 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 Lab use?

Lab is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Lab 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. Its references folder adds about 2.5k tokens, read only when the agent opens those files.

What are the alternatives to Lab?

Skills that share tags, products or a category with Lab: Finishing a Development Branch (obra/superpowers, 296k stars), Code Review Checklist (shareAI-lab/learn-claude-code, 78k stars), Codebase Knowledge Graph Q&A (Egonex-AI/Understand-Anything, 86k stars) and Code Design Rationale Investigator (cursor/plugins, 10k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Lab?

hashgraph-online (a GitHub organization) maintains it in hashgraph-online/awesome-codex-plugins, which has 1,242 GitHub stars. The repository holds 686 skills in this directory. The repository was last updated on October 8, 2026.

Source: hashgraph-online/awesome-codex-plugins on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.