Finishing a Development Branch
obra/superpowers
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.
Agent skill
by open-edge-platform in open-edge-platform/physical-ai-studio
Creates or modifies an external Physical AI robot plugin for Studio.
$ npx skills add open-edge-platform/physical-ai-studio --skill studio-creating-a-robot-plugin -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install open-edge-platform/physical-ai-studio studio-creating-a-robot-plugin --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ 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-srcUse ~/.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/
Install the "studio-creating-a-robot-plugin" agent skill from https://github.com/open-edge-platform/physical-ai-studio/tree/main/skills/application/studio-creating-a-robot-plugin into .claude/skills/studio-creating-a-robot-plugin/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "studio-creating-a-robot-plugin", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/open-edge-platform/physical-ai-studio/tree/main/skills/application/studio-creating-a-robot-pluginType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add open-edge-platform/physical-ai-studio --skill studio-creating-a-robot-plugin -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install open-edge-platform/physical-ai-studio studio-creating-a-robot-plugin --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/open-edge-platform/physical-ai-studio.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/application/studio-creating-a-robot-plugin .agents/skills/studio-creating-a-robot-plugin && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "studio-creating-a-robot-plugin" agent skill from https://github.com/open-edge-platform/physical-ai-studio/tree/main/skills/application/studio-creating-a-robot-plugin into .agents/skills/studio-creating-a-robot-plugin/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "studio-creating-a-robot-plugin", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add open-edge-platform/physical-ai-studio --skill studio-creating-a-robot-plugin -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install open-edge-platform/physical-ai-studio studio-creating-a-robot-plugin --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/open-edge-platform/physical-ai-studio.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/application/studio-creating-a-robot-plugin .cursor/skills/studio-creating-a-robot-plugin && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "studio-creating-a-robot-plugin" agent skill from https://github.com/open-edge-platform/physical-ai-studio/tree/main/skills/application/studio-creating-a-robot-plugin into .cursor/skills/studio-creating-a-robot-plugin/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "studio-creating-a-robot-plugin", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/open-edge-platform/physical-ai-studio.git --path skills/application/studio-creating-a-robot-plugin--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add open-edge-platform/physical-ai-studio --skill studio-creating-a-robot-plugin -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install open-edge-platform/physical-ai-studio studio-creating-a-robot-plugin --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/open-edge-platform/physical-ai-studio.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/application/studio-creating-a-robot-plugin .gemini/skills/studio-creating-a-robot-plugin && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "studio-creating-a-robot-plugin" agent skill from https://github.com/open-edge-platform/physical-ai-studio/tree/main/skills/application/studio-creating-a-robot-plugin into .gemini/skills/studio-creating-a-robot-plugin/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "studio-creating-a-robot-plugin", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install open-edge-platform/physical-ai-studio studio-creating-a-robot-pluginInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add open-edge-platform/physical-ai-studio --skill studio-creating-a-robot-plugin -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/open-edge-platform/physical-ai-studio.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/application/studio-creating-a-robot-plugin .github/skills/studio-creating-a-robot-plugin && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "studio-creating-a-robot-plugin" agent skill from https://github.com/open-edge-platform/physical-ai-studio/tree/main/skills/application/studio-creating-a-robot-plugin into .github/skills/studio-creating-a-robot-plugin/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "studio-creating-a-robot-plugin", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add open-edge-platform/physical-ai-studio --skill studio-creating-a-robot-plugin -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install open-edge-platform/physical-ai-studio studio-creating-a-robot-plugin --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/open-edge-platform/physical-ai-studio.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/application/studio-creating-a-robot-plugin .opencode/skills/studio-creating-a-robot-plugin && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "studio-creating-a-robot-plugin" agent skill from https://github.com/open-edge-platform/physical-ai-studio/tree/main/skills/application/studio-creating-a-robot-plugin into .opencode/skills/studio-creating-a-robot-plugin/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "studio-creating-a-robot-plugin", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
studio-creating-a-robot-pluginCreates 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. 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.
9 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 12d15cd. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
uvcurlpython3npmFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
github.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
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.
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.
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.
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.
.claude/skills/studio-creating-a-robot-plugin/SKILL.md (or your agent's skills folder).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.
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.follower robots that execute actions and which are leader robots that supply teleoperation input.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.
connect(), safe disconnect(), and is_connected().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),).device_ids from constructor arguments without hardware I/O, including every exclusive device for composite robots.@physicalai.config.export_config. Studio serializes the disconnected driver to start its hardware-owner process; an undecorated driver fails with ConfigError.isinstance(driver, Robot), lifecycle behavior, safe disconnected behavior, joint/action order, and configuration round-tripping, with no import of physicalai_studio_plugin.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.
pyproject.toml:[project.entry-points."physicalai.studio.catalog_plugins"]
acme-arm = "physicalai_acme_arm_plugin.studio_catalog:register_physicalai_studio_plugin"RobotAsset.application/backend/; entry points from another virtual environment are invisible to Studio.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.
Field titles, descriptions, defaults, literals/enums, and validators for ordinary configuration behavior.robot_field_ui({"advanced_configuration": True}) only for fields that belong behind Studio's advanced configuration control.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.left.connection_string.validate_robot_payload_ui(Payload) and Payload.model_rebuild(raise_errors=True) pass for every payload model.Build and register catalog definitions. Implement an async builder for each driver shape and register a RobotCatalogDefinition for every stable type.
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.RobotProbe only when discovery, visual identification, or online checks have meaningful implementations. Keep probe behavior separate from driver construction.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.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.def register_physicalai_studio_plugin(registry) -> None:
for definition in _definitions():
registry.register_robot(definition)Test the catalog contract without Studio. Add focused tests alongside the plugin package.
model_rebuild, and validate_robot_payload_ui(...).CatalogRobotFactory, including both a resolved connection and a missing-device error.RobotAsset.root_resolver() and the URDF path when assets are supplied.uv run pytest packages/physicalai-acme-arm-plugin/tests/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:
uv add --editable ../../physicalai-acme-arm-plugin
uv syncuv sync after dependency-source changes and restart the backend after changes to entry points, payload models, or studio_catalog.py.npm run start from application/ui/, its development server proxies /api to the backend and is available on port 3000.Debug through the live catalog APIs before debugging the UI. Use the browser or curl against the UI proxy:
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/schemaTrossen_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./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./{robot_type}/schema. Correct Pydantic field metadata or robot_payload_ui ownership/bindings rather than adding plugin-specific React code./{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./{robot_type}/urdf and verify the asset root resolver, relative URDF path, package map, and joint map.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./api/robots/catalog.Run the plugin's driver and catalog tests first. Then validate the Studio skill changes from the Studio repository root:
python3 .github/scripts/skills/agent_skills.py sync
python3 .github/scripts/skills/agent_skills.py validate
prek run --all-filesapplication/docs/robot-plugins.md - installation, catalog, form, manifest, and troubleshooting contract.openvinotoolkit/physicalai/packages/physicalai-studio-plugin/README.md - Studio plugin SDK types and examples.application/backend/src/api/robot_catalog.py - live catalog, schema, probe, and asset endpoints.application/backend/src/robots/catalog/widowxai.py - built-in single-arm and bimanual network payload example.© 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
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
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Studio Creating A Robot Plugin this skillopen-edge-platform/physical-ai-studio | 128 | — | ~3.1k | Automated safety check: Pass | Apache-2.0 | |
| Finishing a Development Branchobra/superpowers | 296k | 5 repos | ~1.9k | Automated safety check: Pass | MIT | |
| Typescript Advanced Typesrolling-scopes/rsschool-app | 10k | 24 repos | ~4.2k | Automated safety check: Pass | MPL-2.0 | |
| PR Babysitteropeninterpreter/openinterpreter | 69k | 3 repos | ~4.2k | Automated safety check: Pass | Apache-2.0 | |
| Code Review ChecklistshareAI-lab/learn-claude-code | 78k | 5 repos | ~1.1k | Automated safety check: Pass | MIT | |
| Greplooponyx-dot-app/onyx | 32k | 4 repos | ~3.3k | Automated safety check: Pass | MIT |
obra/superpowers
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.
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.
openinterpreter/openinterpreter
Watches an open GitHub pull request until it merges, handling review comments, diagnosing CI failures and retrying flaky checks along the way.
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.
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.
akash-network/node
Behavioral guidelines to reduce common LLM coding mistakes. An agent skill from akash-network/node.
open-edge-platform/physical-ai-studio
Adds or modifies a Physical AI Studio policy under library/src/physicalai/policies.
open-edge-platform/physical-ai-studio
Exports and validates Physical AI Studio policies for Runtime deployment.
open-edge-platform/physical-ai-studio
Benchmarks a trained Physical AI Studio policy in a simulation gym and reports success metrics.
open-edge-platform/physical-ai-studio
Trains, validates, tests, and runs prediction for Physical AI Studio policies via the library Lightning stack.
open-edge-platform/physical-ai-studio
Works with Physical AI Studio datasets and Lightning datamodules built on the LeRobot format.
open-edge-platform/physical-ai-studio
Adds a new interactive robot form UI field for plugin payload schemas.
Categories
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.
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.
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.
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.
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.
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.
SKILL.md names 1 domain. As links in the text: github.com. This is read from the text; nothing was executed.
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.
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.
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.
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.
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.