new-task
Skill3.1k starsChanged 34 days agoApache-2.0View on GitHub
Create a new training task in this repository -- the directory, the registration, the config skeleton and the operator controls, with every control name taken from the gamepad dictionary. Use this whenever someone wants a new task: "创建一个 task", "新建一个任务", "add a task for a bounding gait", "I want a new locomotion task that jumps", "make a task like tripod but slower", or a request that names a gait, a behaviour or a robot and asks for training to be set up for it. Reach for it before hand-copying an existing task directory, because the failures here are quiet -- a task missing its import line does not exist and `--list` simply does not show it, a controls file with an invented stick name loads and drives nothing, and a parameter copied from a sibling is a decision nobody made for this task.
7 other projects use a version of this.
Trending
More talk lately.thin dataabout the whole repository
Most recently taken up by
- hams-ollo/zen-agent-skillstheir own version, first seen Oct 20, 2026
- raoofaltaher/ultrapowerstheir own version, first seen Oct 11, 2026
- hempq/symfony-claude-codetheir own version, first seen Oct 9, 2026
- glowingkitty/OpenMatestheir own version, first seen Oct 8, 2026
- gyovanysantos/claude-skillstheir own version, first seen Aug 2, 2026
- idigon/plainpmtheir own version, first seen Jul 10, 2026
Who's talking about KingKongRobotics/jumper
- @pythonhub.dev“Jumper Jumper is an open-source Python toolkit for a 22-DoF crab robot that lets AI coding agents design …”Bluesky · Oct 23, 2026 · 2 likes
- @taea.kani.show“結構デカイのでちくわがびびりそう github.com/KingKongRobo...”Bluesky · Oct 7, 2026 · 2 likes
- A Hacker News story“Jumper – a 22-DoF crab robot”Hacker News · Oct 7, 2026 · 2 points
- A Hacker News story“Jumper – Cute Crab Robot”Hacker News · Oct 4, 2026 · 1 points
The biggest 4 of 4 mentions linking to the repository that our crawl found. Each line is their own headline.
Other versions7 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 7
- glowingkitty/OpenMates★ 53same name
- chrisetheridge/skills★ 4same name
- hams-ollo/zen-agent-skills★ 2same name
- raoofaltaher/ultrapowers★ 2same name
- hempq/symfony-claude-code★ 1same name
- gyovanysantos/claude-skills★ 0same name
- idigon/plainpm★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
The file
We split this skill into the rules it gives an agent
2 rules. 0 are common, 2 are distinctive, and 0 are very specific to this project.
0
Common
Most of the 7 edited versions we read keep these.
2
Distinctive
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 44
If the person named buttons ("用 LB 切进去", "A 按下起跳"), write those down verbatim.
- Distinctive: line 136
Do not copy a value from a sibling task to make an error go away.
“Common” is measured: kept by at least 6 in 10 of the 7 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Creating a task
docs/USAGE.md is the reference for what a task is; CLAUDE.md's "Working
rules" table is where each parameter belongs. This skill does not restate
them. It gives the order, and it owns the one step that must not be done by
hand.
The one thing to understand first
A task is a directory whose name is its id. tasks/jumper/tripod/ is
"jumper.tripod", and load_env_cfg turns the id straight into an import. There
is no registry of config values to fill in, and nothing to wire up beyond the
files below plus one import line.
That import line is the trap. Forget it and the task silently does not
exist -- no error, --list just does not show it. tests/test_registry.py
exists for exactly that.
Procedure
1. Settle what differs before writing anything
A new locomotion task must differ from its siblings in the gait and the speed
ceiling the gait implies, and in nothing else. tests/test_task_parity.py
fails on any other difference and tells you to justify it in GAIT_EXEMPT /
CEILING_EXEMPT.
So ask, and do not guess:
- what the gait is, and what makes it different from
flat/tripod/ripple/tetrapod - the speed ceiling it implies
- which command axes the policy observes -- normally the three velocity axes, and this is the answer step 3 needs
- which stick and which keys drive each axis -- the pad and the keyboard are two paths and a controls file binds both, so an axis left off the keyboard needs a reason
If the person named buttons ("用 LB 切进去", "A 按下起跳"), write those down verbatim. They are inputs to steps 3 and 5 and they must not be paraphrased.
2. The directory
tasks/jumper/<name>/
__init__.py register(...) and nothing else -- no config imports
env_cfg.py every parameter this task owns
rl_cfg.py hyper-parameters
controls.yaml step 3 writes this
mdp/ only the terms this task alone uses__init__.py must not import a config module. --list has to work on a machine
with no simulation dependencies, and after it runs there must not be one heavy
import in sys.modules.
Then the line that is easy to forget, in tasks/__init__.py:
from .jumper import <name> # noqa: F401,E4023. The operator controls -- use the controls skill
Invoke the controls skill and follow it. It owns the dictionary and both
files that consume it, and this step does not restate them -- a second copy of
that list is the failure the dictionary exists to prevent.
Hand it what step 1 collected: the command axes, and any controls the person named verbatim. It runs
python3 .claude/skills/controls/scripts/write_controls.py --task jumper.<name>which reads controller/vocabulary.json, refuses a name that is not in it, and
writes the file. Do not hand-write controls.yaml and do not copy a sibling's.
4. The parameters
velocity_env_cfg raises rather than defaulting for everything a task must
own: the reward weights, the command ceilings, the foot-lift target. Fill them
in env_cfg.py, one at a time, reading the message each raise gives -- they say
why the parameter belongs to the task rather than to common/.
Writing the same value as a sibling is fine and is the point. Agreement that is
written down survives one of them changing; agreement by inheritance is four
tasks running a decision none of them made, which is not hypothetical --
jumper.tetrapod ran for months on a command ladder nobody had picked for it.
Anything that is a fact about the hardware goes in
tasks/jumper/common/constants.py instead. Anything that is mechanism with no
tuning in it goes in tasks/jumper/common/.
5. Buttons that switch modes are not this file
controls.yaml says how a person drives a policy -- which stick and which key
moves which axis. Which button or key switches into this task as an FSM mode is
a property of a deploy bundle, not of the task, and lives in
deploy/manifests.json as the mode's pad and keys switches, each with a
gesture and the modes it may be pressed from. Same dictionary, different file --
the controls skill covers both halves and why neither may say the other's.
6. Check it exists and builds
python scripts/train.py --list # it must appear
python scripts/train.py --task jumper.<name> --dry-run # resolves, builds nothing
python -m pytest tests/test_registry.py tests/test_task_parity.py -q
python -c "from pathlib import Path; from tasks.jumper.common.mdp.controls import load_controls; load_controls(Path('tasks/jumper/<name>/controls.yaml'))"tests/test_controls.py loads the existing tasks' files only, so the last line is what
parses the new one.
--list not showing it means the import line in step 2 is missing. That is the
failure this whole procedure is ordered around.
Failures worth recognising
| symptom | likely cause |
--list does not show the task | no import line in tasks/__init__.py |
--list is slow, or drags in torch | __init__.py imports a config module |
| anything about a control binding | the controls skill's own table |
test_task_parity fails on a reward | a locomotion task differing in something other than the gait. Either it is a mistake or it belongs in GAIT_EXEMPT with a reason |
ValueError: ... is required at startup | a parameter the task must own. The message says which and why -- that is the design, not an omission |
When something does not match
Do not copy a value from a sibling task to make an error go away. The raise is telling you a decision has not been made, and a copied number is that decision made by accident. Read the sibling to understand what the number is, then choose one for this task -- even if you choose the same one.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

