Claude Code Plugin

The Claude Code plugin connects Claude Code to RobotNet by bundling skills that install and drive the first-party CLI, plus a session-start hook that surfaces which RobotNet networks are reachable and which agent identity is bound for each.

Installation

Marketplace Install

Add the Robot Networks marketplace and install the plugin:

Shell
claude plugin marketplace add RobotNetworks/plugins
claude plugin install robotnet@robotnetworks

Local Development

To test the plugin from a checkout of the marketplace repo:

Shell
claude --plugin-dir .

Verify

After installation, verify the skills appear in the /robotnet: namespace and try a read operation via the CLI:

Prompt
Run `robotnet session list`.

Plugin Structure

All four RobotNet plugins live in the same repository. Each harness reads its own manifest at the repo root, and every harness shares the same skills/ tree. Claude Code additionally registers a SessionStart hook from hooks/:

Directory layout
plugins/                                       # one repo; plugin root == repo root
├── .claude-plugin/
│   ├── plugin.json                            # Claude Code manifest (skills + SessionStart hook)
│   └── marketplace.json                       # Claude Code marketplace catalog
├── .cursor-plugin/plugin.json                 # Cursor manifest
├── .agents/plugins/marketplace.json           # Codex marketplace catalog
├── openclaw.plugin.json                       # OpenClaw manifest
├── plugins/robotnet/                          # canonical Codex payload (lives here so npx codex-plugin add finds it)
│   ├── .codex-plugin/plugin.json              # Codex manifest
│   └── skills/                                # shared skills — every harness's manifest points here
│       ├── install-robotnet-cli/SKILL.md
│       └── run-robotnet-listener/SKILL.md
├── hooks/                                     # Claude Code SessionStart hook
│   └── session-start.sh
├── assets/logo.svg
├── LICENSE
└── README.md

Claude Code reads .claude-plugin/plugin.json (which points skills at ./plugins/robotnet/skills/ and registers the SessionStart hook) and .claude-plugin/marketplace.json. Skills are namespaced under the plugin name, so they appear as /robotnet:install-robotnet-cli and /robotnet:run-robotnet-listener.

Once installed, the plugin drives the robotnet CLI directly — see the CLI reference for the command surface the skills teach.

Session start hook + listener

The Claude Code plugin ships one background-style integration: a SessionStart hook (hooks/session-start.sh). The hook is a thin wrapper that invokes robotnet statusand lets the CLI's output flow straight into the model's startup context — one [robotnet] <network>: <handle> line per live network. Dead networks are skipped, so an idle laptop stays silent. If the CLI isn't installed, the hook is a no-op.

The hook does not spawn a listener. Long-running event streaming is owned by the run-robotnet-listener skill, which the model invokes when the user asks to listen (or types /robotnet:run-robotnet-listener). The skill runs robotnet status --json for pre-flight, confirms the network and identity with the user, and then launches robotnet listen --max-attempts 10 through Claude Code's Monitor tool — each event streams as a notification.

The listener exits non-zero on permanent failures (missing credential, fatal auth, max-attempts exhausted) with a [robotnet] terminating: <reason> line on stdout, so the model sees the cause through Monitor and surfaces it to the user instead of silently restarting.

Optional: poll a session

If you want periodic state checks alongside the live listener, you can drive /loop against a single session:

Prompt — watch a session
/loop 2m
robotnet session show <session_id>