Agent skill

Record World

by jonathanhawkins in jonathanhawkins/microduck-lab

Record a /sim WORLD scenario — the living room, the playroom tidy loop, a soccer pitch, any scenario JSON — to an mp4, a captioned contact sheet and an events log, headless and under a seed, then…

Apache-2.0Auto-check passedDevelopment

Install Record World

skills CLI
$ npx skills add jonathanhawkins/microduck-lab --skill record-world -a claude-code

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

GitHub CLI
$ gh skill install jonathanhawkins/microduck-lab record-world --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/jonathanhawkins/microduck-lab.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/record-world .claude/skills/record-world && 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
record-world
GitHub stars
132
Token cost
~1.2k tokens
SKILL.md length
517 words
Files
1
Skills in repo
7
Repo updated
First seen
Licence
Apache-2.0

At a glance

Record a /sim WORLD scenario — the living room, the playroom tidy loop, a soccer pitch, any scenario JSON — to an mp4, a captioned contact sheet and an events log, headless and under a seed, then…

  • Works in 3 steps: events.txt — every brain state… → sheet.png — Read it (it is an image).… → world.mp4 — for the human. Attach it to…
  • Scores on itself
  • SKILL.md covers Then READ it — in this order, Cameras and What it is not
  • Calls uv

What it does

Record World is an agent skill from jonathanhawkins/microduck-lab. Record a /sim WORLD scenario — the living room, the playroom tidy loop, a soccer pitch, any scenario JSON — to an mp4, a captioned contact sheet and an events log, headless and under a seed, then READ the sheet and the log to see what the ducks actually did. This is the debugging eye for the lab's world mode: the same brains, policies, team boards, tether and kickoff rule as duck-lab, minus the socket. Use when a duck falls, stalls, crowds, scores on itself or "does something weird" on the /sim page, when…

Its SKILL.md is about 1.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Development. The repository describes itself as: Train RL policies for the Pollen Microduck 🦆 on an ordinary Mac, no CUDA GPU, and watch them learn live in the browser. The licence is Apache-2.0.

When your agent uses it

  • Scores on itself
  • Does something weird on the /sim page
  • Eval-tidy / eval-pitch numbers move and you want to see why
  • After touching brain/

Example prompts

  • “does something weird”
  • “record the sim”
  • “video of the soccer”
  • “/record-world”

Workflow steps

3 steps, taken from the first numbered list in SKILL.md.

  1. events.txt — every brain state transition, fall (with the state,
  2. sheet.png — Read it (it is an image). Header: scenario, seed,
  3. world.mp4 — for the human. Attach it to the PR or SendUserFile it.

What it can do on your machine

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

    • uv

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

  • Network

    No URLs in SKILL.md. Its commands use uv, 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

Record World loads about 1.2k tokens when it runs. Until then it costs about 217 tokens; SKILL.md has 517 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~217
When it runs · the whole SKILL.md, loaded when a task matches
~1.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 jonathanhawkins/microduck-lab at commit bbf0326, republished under its Apache-2.0 licence (© jonathanhawkins). 517 words, ~1,169 tokens.

Download SKILL.mdSave it as .claude/skills/record-world/SKILL.md (or your agent's skills folder).
name
record-world
description
Record a /sim WORLD scenario — the living room, the playroom tidy loop, a soccer pitch, any scenario JSON — to an mp4, a captioned contact sheet and an events log, headless and under a seed, then READ the sheet and the log to see what the ducks actually did. This is the debugging eye for the lab's world mode: the same brains, policies, team boards, tether and kickoff rule as duck-lab, minus the socket. Use when a duck falls, stalls, crowds, scores on itself or "does something weird" on the /sim page, when eval-tidy / eval-pitch numbers move and you want to see why, after touching brain/, world/, sensors/ or a scenario, and to capture a clip for a PR. Trigger on: "record the sim", "video of the soccer", "what is the duck doing in the living room", "watch the tidy loop", "show me the pitch", "why did it fall on the pitch", "record a scenario".

record-world — video, sheet and log of a world scenario

The lab streams a world to a browser; nobody is watching most of the time and a bug report is "it looked wrong". This runs the SAME world headlessly (world_server.WorldState builds it, the loop is world_loop without the socket), so a scenario is reproduced under a seed and what you record is what the lab would do.

From microduck_local/:

bash
uv run record-world pitch-2v2 --seconds 30 --out /tmp/rw-pitch                          # a 2v2 match, whole-floor camera
uv run record-world living-room --seconds 20 --camera follow:d0 --out /tmp/rw-room     # follow one duck (wander brain)
uv run record-world playroom --seconds 120 --skip 60 --brain d0=tidy --out /tmp/rw-tidy # tidy loop, minute 2 only
uv run record-world scenarios/my-room.json --seed 3 --tether-ms 250 --out /tmp/rw-mine  # a user scenario, over a tether

Scenarios: any name GET /scenarios lists (built-ins: empty-floor, wall-test, living-room, follow-me, playroom, pitch, pitch-2v2, pitch-3v3) or a .json path. --brain DUCK=KIND (repeatable) swaps a brain the way the inspector does; kinds are REGISTRY.available() (wander, tidy, chase, follow, learned:<run>, ...). Runs ~2x real time on a Mac for a 4-duck pitch, faster for a room.

Then READ it — in this order

  1. events.txt — every brain state transition, fall (with the state, skill, what was held, and where it respawned), pick-up / release, goal and kickoff, stamped with sim time. This is the whole run in a few hundred lines and it tells you WHEN to look. A run that is all carry/deliver turning is not seeing the basket; a chase duck cycling blocked/chase/lineup every 0.1 s is fighting a teammate.
  2. sheet.png — Read it (it is an image). Header: scenario, seed, per-duck brain and policy, total falls, final score. Per tile: time, score line (goals a-b ball x,y on a pitch, tidy k/n in the playroom), then one line per duck: id role-or-brain/state v<speed> f<falls> x,y, plus a second line for hold=, skill= and the brain's note when there is one. A highlighted tile is one in which some duck fell since the previous tile — go to that second in events.txt.
  3. world.mp4 — for the human. Attach it to the PR or SendUserFile it. Default --stride 5 --fps 10 is real time; --stride 2 --fps 25 for a slow-motion look at a fall or a grasp.
Show full SKILL.md (206 more words)Show less

Cameras

  • top (default) — the whole floor from near-plan, the pitch's view. Ducks are small; the captions carry the positions.
  • follow:<duck> — three-quarter camera tracking that duck at ~1.1 m. Use it for a fall, a grasp, a kick, a wall bump.
  • side / front / three-quarter — fixed at the room centre.

What it is not

  • Not a replay of the live lab session: the lab is unseeded and a browser may have driven it. Reproduce the scenario with --seed and --brain instead; if the bug does not appear, try a few seeds before saying so.
  • Not render-rollout (one policy in its training env, with reward diagnostics) and not scripts/render_pitch.py (a roster from the battery's side, with the pitch metrics burned in). Use those for those questions; use this one for "what happens in the room".
  • Nothing here restarts or touches a running lab; safe at any time.
  • Not the browser's own 🎥 record button (the /sim top bar): that films what the USER is looking at, their camera, no captions, and lands in microduck_local/captures/ as mp4 + gif via POST /captures. Point a human at that; use this one when you need the numbers.

MuJoCo renders offscreen on the Mac's CGL backend with no MUJOCO_GL set; set MUJOCO_GL=egl only on Linux.

© jonathanhawkins, 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

Just SKILL.md in .claude/skills/record-world of jonathanhawkins/microduck-lab.

Open the folder on GitHubat commit bbf0326

Compare with similar skills

Record World 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.

Record World compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Record World this skilljonathanhawkins/microduck-lab132—~1.2kAutomated safety check: PassApache-2.0
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 jonathanhawkins/microduck-lab

  • Render Rollout

    jonathanhawkins/microduck-lab

    Render a microduck policy rollout to video AND to a frame contact sheet with per-frame diagnostics burned in, then READ the sheet to see what the policy actually does.

    132 GitHub stars~3.2k tokensUpdated 7 days ago
    Auto-check passed
  • Tidy Trace

    jonathanhawkins/microduck-lab

    Debug the playroom tidy loop (Track 12) — trace one run state by state, see every release, landing and fall with context, and re-measure the walker facts the brain's constants rest on.

    132 GitHub stars~1.1k tokensUpdated 7 days ago
    Auto-check passed
  • Train Loop

    jonathanhawkins/microduck-lab

    Run the CLOSED training loop on a MOSS/duck policy without a human having to ask "is it done yet": launch through the lab, block until the run finishes, print the standard report and the per-term…

    132 GitHub stars~947 tokensUpdated 7 days ago
    Auto-check passed
  • Restart Servers

    jonathanhawkins/microduck-lab

    Restart the microduck dev stack — the duck-lab backend (farm, :8788) and the duck-viewer dev server (:63317).

    132 GitHub stars~1.1k tokensUpdated 7 days ago
    Auto-check passed
  • Sim Smoke

    jonathanhawkins/microduck-lab

    Look at the /sim world page the way a user would — bring up the lab in world mode and the viewer, open the page in headless Chromium, press keys, screenshot it, and READ the screenshot and console.

    132 GitHub stars~1.2k tokensUpdated 7 days ago
    Auto-check passed
  • Watch Training

    jonathanhawkins/microduck-lab

    Look at what the ACTIVE teach run is practicing right now: renders the live checkpoint under the trainer's own env knobs (actuator, spawn mix, reward gates — read from the live trainer process) and…

    132 GitHub stars~525 tokensUpdated 7 days ago
    Auto-check passed

Categories

Questions about Record World

What does Record World do?

Record a /sim WORLD scenario — the living room, the playroom tidy loop, a soccer pitch, any scenario JSON — to an mp4, a captioned contact sheet and an events log, headless and under a seed, then…. Record World is an agent skill from jonathanhawkins/microduck-lab. Record a /sim WORLD scenario — the living room, the playroom tidy loop, a soccer pitch, any scenario JSON — to an mp4, a captioned contact sheet and an events log, headless and under a seed, then READ the sheet and the log to see what the ducks actually did.

When should I use Record World?

Record World fits situations like: scores on itself; does something weird on the /sim page; eval-tidy / eval-pitch numbers move and you want to see why; after touching brain/.

How do I install Record World in Claude Code?

Run `npx skills add jonathanhawkins/microduck-lab --skill record-world -a claude-code`. Or copy the skill folder (.claude/skills/record-world in jonathanhawkins/microduck-lab) into .claude/skills/record-world in your project. Claude Code loads it when a task matches its description.

How do I install Record World in Codex?

Run `npx skills add jonathanhawkins/microduck-lab --skill record-world -a codex`. Or copy the skill folder (.claude/skills/record-world in jonathanhawkins/microduck-lab) into .agents/skills/record-world in your project. Codex loads it when a task matches its description.

Can I use Record World 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 jonathanhawkins/microduck-lab --skill record-world -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/record-world, .gemini/skills/record-world, .github/skills/record-world and .opencode/skills/record-world in your project.

What does Record World need to run?

Going by SKILL.md and its folder, Record World needs the command-line tools its instructions call (uv).

Does Record World access the network?

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

Is Record World 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 Record World use?

Record World 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 Record World use?

About 1.2k tokens (SKILL.md is roughly 4.7k 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 Record World?

Skills that share tags, products or a category with Record World: 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 Record World?

jonathanhawkins (a GitHub user) maintains it in jonathanhawkins/microduck-lab, which has 132 GitHub stars. The repository holds 7 skills in this directory. The repository was last updated on October 1, 2026.

Source: jonathanhawkins/microduck-lab on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.