Agent skill

Studio Creating A Robot Plugin

by open-edge-platform in open-edge-platform/physical-ai-studio

Creates or modifies an external Physical AI robot plugin for Studio.

Apache-2.0Auto-check passedDevelopment

Install Studio Creating A Robot Plugin

skills CLI
$ npx skills add open-edge-platform/physical-ai-studio --skill studio-creating-a-robot-plugin -a claude-code

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

GitHub CLI
$ gh skill install open-edge-platform/physical-ai-studio studio-creating-a-robot-plugin --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/open-edge-platform/physical-ai-studio.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/application/studio-creating-a-robot-plugin .claude/skills/studio-creating-a-robot-plugin && 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
studio-creating-a-robot-plugin
GitHub stars
128
Token cost
~3.1k tokens
SKILL.md length
1,315 words
Files
1
Skills in repo
7
Repo updated
First seen
Licence
Apache-2.0

At a glance

Creates or modifies an external Physical AI robot plugin for Studio.

  • Works in 9 steps: Choose the plugin boundary and stable… → Implement the Runtime robot without… → Package the standalone driver. Create a… → …
  • Implementing a Runtime Robot driver outside Studio
  • SKILL.md covers Workflow, Verify and References
  • Calls uv, curl and python3

What it does

Studio Creating A Robot Plugin is an agent skill from open-edge-platform/physical-ai-studio. Creates or modifies an external Physical AI robot plugin for Studio. Use when implementing a Runtime Robot driver outside Studio, adding studiocatalog.py, RobotCatalogDefinition, RobotProbe, RobotAsset, the physicalai.studio.catalogplugins entry point, or a curated entry in application/backend/src/plugins/manifest.json.

Its SKILL.md is about 3.1k 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: Physical AI Studio is an end-to-end framework for training robots to perform tasks through imitation learning from human demonstrations. The licence is Apache-2.0.

When your agent uses it

  • Implementing a Runtime Robot driver outside Studio
  • Adding studiocatalog.py
  • RobotCatalogDefinition
  • The physicalai.studio.catalogplugins entry point

Example prompts

  • “Use the studio-creating-a-robot-plugin skill to create or modifies an external Physical AI robot plugin for Studio”
  • “/studio-creating-a-robot-plugin”

Requirements

  • Python 3

Workflow steps

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

  1. Choose the plugin boundary and stable identifiers. Keep the driver and its vendor dependencies in the plugin repository; do not add the…
  2. Implement the Runtime robot without Studio imports. Follow the Runtime skill physicalai-runtime-adding-a-robot-integration in the Physical…
  3. Package the standalone driver. Create a normal Python distribution with the driver package, tests, and optional URDF/mesh files. Add…
  4. Define one typed payload per Studio robot configuration. Add studio_catalog.py in the plugin package. Define Pydantic BaseModel payloads…
  5. Build and register catalog definitions. Implement an async builder for each driver shape and register a RobotCatalogDefinition for every…
  6. Test the catalog contract without Studio. Add focused tests alongside the plugin package.
  7. Install locally and restart Studio for catalog discovery. From application/backend/, install the plugin into the backend environment, then…
  8. Debug through the live catalog APIs before debugging the UI. Use the browser or curl against the UI proxy
  9. Add curated UI installation only after the package is installable. Add a reviewed entry to application/backend/src/plugins/manifest.json…

What it can do on your machine

Read from SKILL.md and the folder at commit 12d15cd. 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
    • curl
    • python3
    • npm

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

  • Network

    Links to these hosts (documentation or services it may open):

    • github.com

    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

Studio Creating A Robot Plugin loads about 3.1k tokens when it runs. Until then it costs about 89 tokens; SKILL.md has 1,315 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~89
When it runs · the whole SKILL.md, loaded when a task matches
~3.1k

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 open-edge-platform/physical-ai-studio at commit 12d15cd, republished under its Apache-2.0 licence (© open-edge-platform). 1,315 words, ~3,070 tokens.

Download SKILL.mdSave it as .claude/skills/studio-creating-a-robot-plugin/SKILL.md (or your agent's skills folder).
name
studio-creating-a-robot-plugin
description
Creates or modifies an external Physical AI robot plugin for Studio. Use when implementing a Runtime Robot driver outside Studio, adding studio_catalog.py, RobotCatalogDefinition, RobotProbe, RobotAsset, the physicalai.studio.catalog_plugins entry point, or a curated entry in application/backend/src/plugins/manifest.json.
license
Apache-2.0

Creating a Studio Robot Plugin

Build the Physical AI robot driver independently before adding Studio support. A plugin owns its driver, device integration, Pydantic payloads, catalog definitions, and optional assets. Studio owns project persistence, generated configuration forms, runtime orchestration, and the curated Plugins page.

Read application/docs/robot-plugins.md and the physicalai-studio-plugin SDK README before editing. For complete plugin examples, use the packages under openvinotoolkit/physicalai/packages, including physicalai-rebot-b601-plugin. Use Studio's built-in network robot implementation at application/backend/src/robots/catalog/widowxai.py as a schema example.

Workflow

  1. Choose the plugin boundary and stable identifiers. Keep the driver and its vendor dependencies in the plugin repository; do not add the robot to Studio's built-in catalog. Choose a globally unique, stable RobotCatalogDefinition.type for every configuration, such as AcmeArm_Follower and AcmeArm_Leader.

    • type is persisted in Studio projects and must never be casually renamed or duplicated by another installed plugin.
    • Decide which configurations are follower robots that execute actions and which are leader robots that supply teleoperation input.
    • Done when: every supported driver mode has a stable type, display name, role, connection method, and expected joint order.
  2. Implement the Runtime robot without Studio imports. Follow the Runtime skill physicalai-runtime-adding-a-robot-integration in the Physical AI repository. The driver structurally implements physicalai.robot.interface.Robot; it does not need a Studio base class.

    • Implement idempotent connect(), safe disconnect(), and is_connected().
    • Expose joint_names in exactly the order used by observations and actions. get_observation() returns joint positions in that order and a time.monotonic() timestamp. The returned observation must also expose sensor_data and images, set to None when unused. send_action(action, *, goal_time=...) accepts an action with shape (len(joint_names),).
    • Expose device_ids from constructor arguments without hardware I/O, including every exclusive device for composite robots.
    • Put vendor SDK imports behind the driver connection path when they are optional or heavy. Validate user-configured ports and addresses; do not invoke a shell with them.
    • Decorate every driver class returned to Studio with @physicalai.config.export_config. Studio serializes the disconnected driver to start its hardware-owner process; an undecorated driver fails with ConfigError.
    • Done when: mocked-hardware tests prove isinstance(driver, Robot), lifecycle behavior, safe disconnected behavior, joint/action order, and configuration round-tripping, with no import of physicalai_studio_plugin.
  3. Package the standalone driver. Create a normal Python distribution with the driver package, tests, and optional URDF/mesh files. Add physicalai, physicalai-studio-plugin, vendor dependencies, and test extras as appropriate.

    • Declare the Studio entry point in the plugin package's pyproject.toml:
    toml
    [project.entry-points."physicalai.studio.catalog_plugins"]
    acme-arm = "physicalai_acme_arm_plugin.studio_catalog:register_physicalai_studio_plugin"
    • Include URDF resources in both wheel and source distributions if the catalog exposes a RobotAsset.
    • Build or install the package in the same Python environment used by application/backend/; entry points from another virtual environment are invisible to Studio.
    • Done when: the package imports, its entry point resolves, and its standalone test suite passes.
  4. Define one typed payload per Studio robot configuration. Add studio_catalog.py in the plugin package. Define Pydantic BaseModel payloads for connection values and driver options; the payload is the persisted data and generated form contract.

    • Use Pydantic Field titles, descriptions, defaults, literals/enums, and validators for ordinary configuration behavior.
    • Use robot_field_ui({"advanced_configuration": True}) only for fields that belong behind Studio's advanced configuration control.
    • Use robot_payload_ui(...) to order fields, add sections or guidance, and render a serial connection selector. A connection item owns the fields named by bind.connection and optional bind.serial_number, so do not also render those fields as field items.
    • Connection bindings are relative to the Pydantic model declaring the UI metadata. Nested arm models define their own bindings; never use dotted paths such as left.connection_string.
    • Done when: validate_robot_payload_ui(Payload) and Payload.model_rebuild(raise_errors=True) pass for every payload model.
  5. Build and register catalog definitions. Implement an async builder for each driver shape and register a RobotCatalogDefinition for every stable type.

    • The builder receives CatalogRobot[Payload] and CatalogRobotFactory. Read robot.payload, validate or normalize it if necessary, resolve serial or network connections with factory.find_port(SerialPortInfo(...)) when appropriate, and return the plain @export_config Runtime driver. Do not return a SharedRobot; Studio wraps the driver.
    • Raise a clear error if a configured device cannot be resolved.
    • Add a structural RobotProbe only when discovery, visual identification, or online checks have meaningful implementations. Keep probe behavior separate from driver construction.
    • Add RobotAsset only when the plugin ships a valid URDF, mesh package map, and observation-key-to-joint mapping. An asset-less robot is still supported but has no 3D preview.
    • Add RobotZeroCalibration only when the arm is calibrated by storing a zero pose on its motors. Provide plain-text instructions, a set_zero step, and a release step when the connected arm is not already movable by hand. Studio then offers a guided calibration when the robot is added.
    • Register each definition from the entry-point function:
    python
    def register_physicalai_studio_plugin(registry) -> None:
        for definition in _definitions():
            registry.register_robot(definition)
    • Done when: direct registration into a fake registry produces exactly the expected types, payload models, builders, roles, and optional assets/probes.
  6. Test the catalog contract without Studio. Add focused tests alongside the plugin package.

    • Test the entry-point registration and exact set of catalog types.
    • Test payload defaults, required-field and cross-field validation, model_rebuild, and validate_robot_payload_ui(...).
    • Test each builder with fake payload containers and a fake CatalogRobotFactory, including both a resolved connection and a missing-device error.
    • Test RobotAsset.root_resolver() and the URDF path when assets are supplied.
    • Run the package's focused test command from its repository, for example:
    bash
    uv run pytest packages/physicalai-acme-arm-plugin/tests/
    • Done when: driver and catalog tests pass without physical hardware.
  7. Install locally and restart Studio for catalog discovery. From application/backend/, install the plugin into the backend environment, then restart the backend. For a local plugin, use an editable dependency relative to the backend directory:

    bash
    uv add --editable ../../physicalai-acme-arm-plugin
    uv sync
    • Entry points and catalog schemas load only at backend startup. Re-run uv sync after dependency-source changes and restart the backend after changes to entry points, payload models, or studio_catalog.py.
    • With the UI started by npm run start from application/ui/, its development server proxies /api to the backend and is available on port 3000.
    • Done when: the backend starts without catalog registration errors and the plugin type is available from the live catalog.
  8. Debug through the live catalog APIs before debugging the UI. Use the browser or curl against the UI proxy:

    bash
    curl --fail http://localhost:3000/api/robots/catalog
    curl --fail http://localhost:3000/api/robots/catalog/Trossen_Bimanual_WidowXAI_Follower/schema
    curl --fail http://localhost:3000/api/robots/catalog/AcmeArm_Follower/schema
    • Treat Trossen_Bimanual_WidowXAI_Follower/schema as the known-good reference for a network bimanual payload. Compare your schema's properties, required fields, defaults, descriptions, nested $defs, and x-physicalai-ui metadata against the desired form.
    • If the plugin type is absent from /catalog, inspect backend startup logs for entry-point import, registration, duplicate-type, or UI-schema validation failures. Confirm the distribution is installed in the backend environment and restart it.
    • If the type appears but its form is wrong, inspect /{robot_type}/schema. Correct Pydantic field metadata or robot_payload_ui ownership/bindings rather than adding plugin-specific React code.
    • For a probe, test /{robot_type}/discover, /{robot_type}/identify, and /{robot_type}/is-online with a JSON body that conforms to the schema. For a build failure, inspect the saved payload, find_port result, device permissions, vendor dependencies, and driver logs.
    • If visualization fails, request /{robot_type}/urdf and verify the asset root resolver, relative URDF path, package map, and joint map.
    • Done when: catalog and schema endpoints return the expected definition and JSON Schema, and the generated Studio form reflects it without duplicate or missing fields.
  9. Add curated UI installation only after the package is installable. Add a reviewed entry to application/backend/src/plugins/manifest.json when Studio should expose the plugin on its Plugins page.

    • id must equal the Python distribution name. install_source must be a reviewed package, Git, or path requirement accepted by uv pip install. Add user-facing metadata and known robot types under robots.
    • The manifest controls what the UI may install; it does not replace the package entry point that registers the actual robot definitions.
    • Restart the backend after a manifest change.
    • Done when: the Plugins page lists the plugin before installation, installs the reviewed source, prompts for restart, and the restarted backend exposes the registered types through /api/robots/catalog.
Show full SKILL.md (60 more words)Show less

Verify

Run the plugin's driver and catalog tests first. Then validate the Studio skill changes from the Studio repository root:

bash
python3 .github/scripts/skills/agent_skills.py sync
python3 .github/scripts/skills/agent_skills.py validate
prek run --all-files

References

© open-edge-platform, 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 skills/application/studio-creating-a-robot-plugin of open-edge-platform/physical-ai-studio.

Open the folder on GitHubat commit 12d15cd

Compare with similar skills

Studio Creating A Robot Plugin 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.

Studio Creating A Robot Plugin compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Studio Creating A Robot Plugin this skillopen-edge-platform/physical-ai-studio128—~3.1kAutomated safety check: PassApache-2.0
Finishing a Development Branchobra/superpowers296k5 repos~1.9kAutomated safety check: PassMIT
Typescript Advanced Typesrolling-scopes/rsschool-app10k24 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
Greplooponyx-dot-app/onyx32k4 repos~3.3kAutomated 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
  • 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 24 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
  • Guidelines

    akash-network/node

    Behavioral guidelines to reduce common LLM coding mistakes. An agent skill from akash-network/node.

    1.1k GitHub starsUsed in 22 repos~577 tokens
    DevelopmentAuto-check passed

More from open-edge-platform/physical-ai-studio

  • Physicalai Train Adding A Policy

    open-edge-platform/physical-ai-studio

    Adds or modifies a Physical AI Studio policy under library/src/physicalai/policies.

    128 GitHub stars~1.4k tokensUpdated yesterday
    Auto-check passed
  • Physicalai Train Exporting And Validating

    open-edge-platform/physical-ai-studio

    Exports and validates Physical AI Studio policies for Runtime deployment.

    128 GitHub stars~1.1k tokensUpdated yesterday
    Auto-check passed
  • Physicalai Train Benchmarking A Policy

    open-edge-platform/physical-ai-studio

    Benchmarks a trained Physical AI Studio policy in a simulation gym and reports success metrics.

    128 GitHub stars~1.2k tokensUpdated yesterday
    Auto-check passed
  • Physicalai Train Training A Policy

    open-edge-platform/physical-ai-studio

    Trains, validates, tests, and runs prediction for Physical AI Studio policies via the library Lightning stack.

    128 GitHub stars~1.6k tokensUpdated yesterday
    Auto-check passed
  • Physicalai Train Working With Datasets

    open-edge-platform/physical-ai-studio

    Works with Physical AI Studio datasets and Lightning datamodules built on the LeRobot format.

    128 GitHub stars~1.2k tokensUpdated yesterday
    Auto-check passed
  • Studio Adding Robot Form UI Fields

    open-edge-platform/physical-ai-studio

    Adds a new interactive robot form UI field for plugin payload schemas.

    128 GitHub stars~1.6k tokensUpdated yesterday
    Auto-check passed

Categories

Questions about Studio Creating A Robot Plugin

What does Studio Creating A Robot Plugin do?

Creates or modifies an external Physical AI robot plugin for Studio. Studio Creating A Robot Plugin is an agent skill from open-edge-platform/physical-ai-studio. Creates or modifies an external Physical AI robot plugin for Studio.

When should I use Studio Creating A Robot Plugin?

Studio Creating A Robot Plugin fits situations like: implementing a Runtime Robot driver outside Studio; adding studiocatalog.py; robotCatalogDefinition; the physicalai.studio.catalogplugins entry point.

How do I install Studio Creating A Robot Plugin in Claude Code?

Run `npx skills add open-edge-platform/physical-ai-studio --skill studio-creating-a-robot-plugin -a claude-code`. Or copy the skill folder (skills/application/studio-creating-a-robot-plugin in open-edge-platform/physical-ai-studio) into .claude/skills/studio-creating-a-robot-plugin in your project. Claude Code loads it when a task matches its description.

How do I install Studio Creating A Robot Plugin in Codex?

Run `npx skills add open-edge-platform/physical-ai-studio --skill studio-creating-a-robot-plugin -a codex`. Or copy the skill folder (skills/application/studio-creating-a-robot-plugin in open-edge-platform/physical-ai-studio) into .agents/skills/studio-creating-a-robot-plugin in your project. Codex loads it when a task matches its description.

Can I use Studio Creating A Robot Plugin 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 open-edge-platform/physical-ai-studio --skill studio-creating-a-robot-plugin -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/studio-creating-a-robot-plugin, .gemini/skills/studio-creating-a-robot-plugin, .github/skills/studio-creating-a-robot-plugin and .opencode/skills/studio-creating-a-robot-plugin in your project.

What does Studio Creating A Robot Plugin need to run?

Going by SKILL.md and its folder, Studio Creating A Robot Plugin needs the command-line tools its instructions call (uv, curl, python3 and npm). Our summary lists: Python 3.

Does Studio Creating A Robot Plugin access the network?

SKILL.md names 1 domain. As links in the text: github.com. This is read from the text; nothing was executed.

Is Studio Creating A Robot Plugin 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 Studio Creating A Robot Plugin use?

Studio Creating A Robot Plugin is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Studio Creating A Robot Plugin use?

About 3.1k tokens (SKILL.md is roughly 12k 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 Studio Creating A Robot Plugin?

Skills that share tags, products or a category with Studio Creating A Robot Plugin: Finishing a Development Branch (obra/superpowers, 296k stars), Typescript Advanced Types (rolling-scopes/rsschool-app, 10k stars), PR Babysitter (openinterpreter/openinterpreter, 69k stars) and Code Review Checklist (shareAI-lab/learn-claude-code, 78k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Studio Creating A Robot Plugin?

open-edge-platform (a GitHub organization) maintains it in open-edge-platform/physical-ai-studio, which has 128 GitHub stars. The repository holds 7 skills in this directory. The repository was last updated on October 6, 2026.

Source: open-edge-platform/physical-ai-studio on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.