Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 1 addition & 4 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,6 @@
<!-- Add or update one behavior descriptor. -->

## Checklist
- [ ] `pnpm validate` passes
- [ ] `pnpm test` passes
- [ ] `pnpm compile` was run and `public/registry.json` is committed
- [ ] `pnpm check` passes
- [ ] The source, license, compatibility, and verification label are accurate
- [ ] Community work is not presented as official Pollen Robotics work
- [ ] `pnpm build` passes
8 changes: 4 additions & 4 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ permissions:

jobs:
validate:
name: Validate Registry & Artifacts
name: Validate Registry & Build
runs-on: ubuntu-latest
steps:
- name: Checkout Code
Expand Down Expand Up @@ -40,10 +40,10 @@ jobs:
- name: Compile Public Registry Index
run: pnpm compile

- name: Snapshot-diff registry.json
- name: Snapshot-diff generated catalog
run: |
if ! git diff --exit-code public/registry.json; then
echo "::error::public/registry.json is stale — run 'pnpm compile' and commit the result."
if ! git diff --exit-code -- public/registry.json README.md; then
echo "::error::Generated catalog is stale — run 'pnpm compile' and commit the result."
exit 1
fi

Expand Down
25 changes: 19 additions & 6 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,23 +12,36 @@ uDuck Registry is a directory of Microduck behavior policies. A contribution is
pnpm install
```

2. Add `registry/behaviors/<id>.json`. The filename must match the lowercase kebab-case `id`.
First-time fork contributions may show a pending workflow until a maintainer approves it.

3. Use `community_experimental` unless the upstream project or a pull request provides physical-run evidence. Use `claimed_hardware` when the author reports a physical run that the registry has not reproduced. Use `verified_hardware` only for an upstream-supported behavior or a submission with physical evidence.
2. Generate a descriptor scaffold so the fixed Microduck contract does not need to be written by hand:

```bash
pnpm --silent new-behavior id=my-cool-trick name="My Cool Duck Trick" category=agility-tricks author="Your Name" > registry/behaviors/my-cool-trick.json
```

Replace the TODO values and update the source, artifact, compatibility, deployment, and media fields. The command only writes JSON to stdout; it does not contact GitHub or open a pull request.

3. The filename must match the lowercase kebab-case `id`. Use `community_experimental` unless the upstream project or a pull request provides physical-run evidence. Use `claimed_hardware` when the author reports a physical run that the registry has not reproduced. Use `verified_hardware` only for an upstream-supported behavior or a submission with physical evidence.

4. Point `artifacts.onnx.url` at the canonical ONNX file. The registry links to that file and does not copy policy weights into the repository.

5. Run the checks and rebuild the catalog:

```bash
pnpm validate
pnpm test
pnpm compile
pnpm build
pnpm check
```

6. Open a pull request with the upstream source, license, hardware requirements, and any evidence supporting the verification label.

### Preview media

- `video_url` is the main demonstration for the behavior page. It can show the full context of a move and has player controls.
- `loop_url` is the muted, autoplaying preview used on explorer cards. Keep it short and focused on the movement. If it is omitted, cards fall back to `video_url`.
- `thumbnail_url` is an optional static poster or fallback image.

For a local media path such as `/media/my-move/loop.mp4`, include the matching file at `public/media/my-move/loop.mp4` in the pull request.

## Descriptor shape

```json
Expand Down
64 changes: 28 additions & 36 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,27 +31,33 @@ The descriptor schema is [`registry/schema/behavior.schema.json`](registry/schem

## Catalog

The registry currently includes 19 indexed behaviors:

1. `alpha-walking` — **Alpha Dynamic Walk** *(Pollen Robotics · Hardware verified)*
2. `fall-recovery` — **Dynamic Fall Recovery** *(Pollen Robotics · Hardware verified)*
3. `ground-pick` — **Autonomous Ground Pick** *(Pollen Robotics · Hardware verified)*
4. `sit-stand` — **Smooth Sit ↔ Stand** *(Pollen Robotics · Hardware verified)*
5. `roulade` — **Acrobatic Roulade (Forward Roll)** *(Pollen Robotics · Hardware verified)*
6. `ball-kick-left` — **Impulse Ball Kick (Left Foot)** *(Pollen Robotics · Hardware verified)*
7. `ball-kick-right` — **Impulse Ball Kick (Right Foot)** *(Pollen Robotics · Hardware verified)*
8. `roller-drive` — **Roller Skate Velocity Drive** *(Pollen Robotics · Hardware verified)*
9. `roller-crouch` — **Roller Blade Crouch Glide** *(Pollen Robotics · Hardware verified)*
10. `genesis-velocity` — **Genesis Flat Walk** *(Macmachi · Experimental)*
11. `genesis-rough` — **Genesis Rough-Terrain Walk** *(Macmachi · Experimental)*
12. `genesis-backlash` — **Genesis Backlash Walk** *(Macmachi · Experimental)*
13. `jump` — **Vertical Jump** *(Liyucheng1997 · Experimental)*
14. `courier` — **Microduck Courier** *(selinayfilizp · Experimental)*
15. `running` — **Microduck Running** *(HannesVonEssen · Experimental)*
16. `flamingo-cycle` — **Flamingo Cycle** *(RemiFabre · Experimental)*
17. `rough-walk-e` — **Rough Walk E** *(RemiFabre · Experimental)*
18. `rough-walk-g` — **Rough Walk G** *(RemiFabre · Experimental)*
19. `max-height-jump` — **Maximum-Height Jump** *(Thomas Burgess · Experimental)*
The table below is generated from the descriptors in `registry/behaviors/`.

<!-- BEGIN GENERATED BEHAVIOR TABLE -->

| Behavior | ID | Category | Status | Publisher | Setup | Preview |
| --- | --- | --- | --- | --- | --- | --- |
| [Acrobatic Roulade (Forward Roll)](https://uduckmoves.com/behaviors/roulade) | `roulade` | agility tricks | Hardware verified | Pollen Robotics | none | — |
| [Alpha Dynamic Walk](https://uduckmoves.com/behaviors/alpha-walking) | `alpha-walking` | locomotion | Hardware verified | Pollen Robotics | none | video + poster |
| [Autonomous Ground Pick](https://uduckmoves.com/behaviors/ground-pick) | `ground-pick` | manipulation | Hardware verified | Pollen Robotics | none | video + poster |
| [Dynamic Fall Recovery](https://uduckmoves.com/behaviors/fall-recovery) | `fall-recovery` | recovery | Hardware verified | Pollen Robotics | none | video + poster |
| [Impulse Ball Kick (Left Foot)](https://uduckmoves.com/behaviors/ball-kick-left) | `ball-kick-left` | manipulation | Hardware verified | Pollen Robotics | 70mm practice ball | video + poster |
| [Impulse Ball Kick (Right Foot)](https://uduckmoves.com/behaviors/ball-kick-right) | `ball-kick-right` | manipulation | Hardware verified | Pollen Robotics | 70mm practice ball | — |
| [Roller Blade Crouch Glide](https://uduckmoves.com/behaviors/roller-crouch) | `roller-crouch` | roller skate | Hardware verified | Pollen Robotics | roller skate blades | — |
| [Roller Skate Velocity Drive](https://uduckmoves.com/behaviors/roller-drive) | `roller-drive` | roller skate | Hardware verified | Pollen Robotics | roller skate blades | video + poster |
| [Smooth Sit ↔ Stand](https://uduckmoves.com/behaviors/sit-stand) | `sit-stand` | locomotion | Hardware verified | Pollen Robotics | none | video + poster |
| [Flamingo Cycle](https://uduckmoves.com/behaviors/flamingo-cycle) | `flamingo-cycle` | agility tricks | Experimental | RemiFabre | none | video |
| [Genesis Backlash Walk](https://uduckmoves.com/behaviors/genesis-backlash) | `genesis-backlash` | locomotion | Experimental | Macmachi | none | — |
| [Genesis Flat Walk](https://uduckmoves.com/behaviors/genesis-velocity) | `genesis-velocity` | locomotion | Experimental | Macmachi | none | — |
| [Genesis Rough-Terrain Walk](https://uduckmoves.com/behaviors/genesis-rough) | `genesis-rough` | locomotion | Experimental | Macmachi | none | — |
| [Maximum-Height Jump](https://uduckmoves.com/behaviors/max-height-jump) | `max-height-jump` | agility tricks | Experimental | Thomas Burgess | none | loop + video |
| [Microduck Courier](https://uduckmoves.com/behaviors/courier) | `courier` | manipulation | Experimental | selinayfilizp | none | video + poster |
| [Microduck Running](https://uduckmoves.com/behaviors/running) | `running` | locomotion | Experimental | HannesVonEssen | none | video |
| [Rough Walk E](https://uduckmoves.com/behaviors/rough-walk-e) | `rough-walk-e` | locomotion | Experimental | RemiFabre | none | video |
| [Rough Walk G](https://uduckmoves.com/behaviors/rough-walk-g) | `rough-walk-g` | locomotion | Experimental | RemiFabre | none | video |
| [Vertical Jump](https://uduckmoves.com/behaviors/jump) | `jump` | agility tricks | Experimental | Liyucheng1997 | none | — |

<!-- END GENERATED BEHAVIOR TABLE -->

## Machine-readable access

Expand All @@ -63,23 +69,9 @@ curl -s https://uduckmoves.com/registry.json | jq .

The same snapshot is in [`public/registry.json`](public/registry.json). The static site also exposes one JSON endpoint per behavior at `/api/behaviors/<id>`.

## Quickstart

```bash
git clone https://github.com/ob1-s/uduck-registry.git
cd uduck-registry
pnpm install

pnpm cli list
pnpm cli info alpha-walking
pnpm cli pull alpha-walking ./policies
```

Use `pnpm cli info <id>` or `pnpm cli toml <id>` for the exact `robotd` configuration for a behavior. Check the compatibility and accessory requirements before running a policy on hardware.

## Contributing

Add one descriptor at `registry/behaviors/<id>.json`, run `pnpm validate`, `pnpm test`, and `pnpm compile`, then open a pull request. See [CONTRIBUTING.md](CONTRIBUTING.md) for the descriptor shape and review expectations.
Generate a starting descriptor with `pnpm --silent new-behavior id=my-move name="My Move" category=locomotion author="Your Name"`, run `pnpm check`, then open a pull request. See [CONTRIBUTING.md](CONTRIBUTING.md) for the descriptor shape and review expectations.

## Attribution and license

Expand Down
5 changes: 3 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,10 @@
"build": "next build --webpack",
"start": "python3 -m http.server 3000 --directory out",
"test": "vitest run",
"check": "pnpm validate && pnpm test && pnpm compile && pnpm build",
"new-behavior": "tsx scripts/new-behavior.ts",
"validate": "tsx scripts/validate-registry.ts",
"compile": "tsx scripts/generate-registry-index.ts",
"cli": "tsx scripts/cli.ts"
"compile": "tsx scripts/generate-registry-index.ts"
},
"keywords": [],
"author": "",
Expand Down
2 changes: 1 addition & 1 deletion registry/schema/allowlist.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/** Shared registry validation constants used by the CLI and validator. */
/** Shared registry validation constants used by the descriptor schema and validator. */

/** Only these hosts may serve canonical ONNX artifacts (HTTPS only). */
export const HOST_ALLOWLIST = ["huggingface.co", "raw.githubusercontent.com"] as const;
Expand Down
217 changes: 0 additions & 217 deletions scripts/cli.ts

This file was deleted.

Loading