Back to behaviors
Contribution guideBring a new move

Give the shelf a new trick.

Add one validated JSON manifest, keep the source link close, and tell us what the duck actually ran.

01

Make a manifest

Create registry/behaviors/<your-id>.json. Use a lowercase kebab-case id that matches the filename.

02

Keep the contract honest

Policies in this catalog use 61 observations, 14 joint outputs, and a 50 Hz control loop. Point to the canonical ONNX artifact rather than copying it here.

Only use verified_hardware when the behavior has run on a physical Microduck with evidence in the pull request. Use verified_simulation for a tested simulator run.
03

Validate before opening a PR

Run the registry checks from the repository root.

pnpm validate
pnpm test
04

Open the pull request

Include a short description, evidence, and the upstream links. Once merged, the catalog index is regenerated automatically.

Starter manifest

Copy this shape, then fill in the fields required by the full schema.

{
  "id": "my-cool-trick",
  "name": "My Cool Duck Trick",
  "version": "1.0.0",
  "description": "A short explanation of the behavior.",
  "category": "agility-tricks",
  "tags": ["community", "trick"],
  "authors": [{ "name": "Your Name", "github": "yourgithub" }],
  "license": "Apache-2.0",
  "verification": {
    "status": "verified_simulation",
    "summary": "Simulated in mjlab.",
    "hardware_target": "Microduck v1"
  },
  "contract": {
    "observation_dim": 61,
    "action_dim": 14,
    "control_frequency_hz": 50
  },
  "compatibility": {
    "robot_model": "microduck-standard",
    "mjcf_model": "robot_allcollisions.xml",
    "accessories_required": [],
    "terrain": ["flat"],
    "robotd_slot": "custom"
  },
  "artifacts": { "onnx": { "filename": "my_cool_trick.onnx", "url": "https://…" } },
  "media": { "hero_type": "badge" },
  "sources": { "upstream_repo": "https://github.com/yourgithub/my_duck_repo" },
  "deployment": { "robotd_toml": "[policy]\ncustom = \"/opt/robot/policies/my_cool_trick.onnx\"" }
}