Skip to content

Agent Skills

Deploy a local Claude Code project to a hosted Runbear agent.


On this page

Agent Skills are Claude Code plugins that Runbear publishes so you can drive Runbear from your terminal. The headline skill, runbear:deploy, takes a local Claude Code project — its CLAUDE.md, skills, subagents, docs, and code — and deploys the whole thing to a hosted Runbear Claude Agent SDK agent. From there you connect the agent to Slack and chat with your project as a teammate.

This is the counterpart to the MCP Server: the MCP server lets a client manage your agents; the deploy skill ships your local project into one.

Install#

In Claude Code, add the Runbear marketplace and install the runbear plugin:

/plugin marketplace add runbear-io/skills
/plugin install runbear@runbear-skills

This registers the /runbear:deploy command. You'll also need the Runbear MCP server connected — see MCP Server → Connect.

On macOS, Linux, or WSL:

install_id="$(command -v uuidgen >/dev/null 2>&1 && uuidgen || cat /proc/sys/kernel/random/uuid)"
claude mcp add --transport http runbear "https://api.runbear.io/mcp?install_id=$install_id"

On Windows PowerShell:

$installId = [guid]::NewGuid()
claude mcp add --transport http runbear "https://api.runbear.io/mcp?install_id=$installId"

Deploy your project to Slack#

1. Deploy the project to a new agent#

From your project directory, create a fresh Claude Agent SDK agent and deploy to it in one step:

/runbear:deploy --new "My Project"

The skill creates the agent, packs and uploads your files, and finalizes the deploy. On success it reports the file count and a link to the new agent's setup page in the Runbear dashboard.

To deploy into an existing agent instead, pass its app UUID, agent URL, or agent name as the first argument:

/runbear:deploy <appId>
/runbear:deploy https://app.runbear.io/agents/<appId>
/runbear:deploy "My Project"

A name is fuzzy-matched against your agents. If more than one agent matches — or several share the same name — the skill lists the matches with their app IDs so you can pick the right one instead of guessing.

2. Connect the agent to Slack#

Once your project is in the agent's workspace, bring it to Slack. From the same Claude Code session you can ask the Runbear MCP server to do it — it exposes get_slack_install_link, deploy_to_slack, and join_slack_channels (see MCP Server → Slack):

Deploy the "My Project" agent to our Slack workspace and join #project-team.

Or wire it up from the dashboard the same way you would any other agent — see Adding Channels.

3. Chat with it#

Mention the agent in Slack. On its next activation the Agent SDK loads the files you deployed, so it runs against the same CLAUDE.md, skills, and code you have locally.

Upload a large workspace#

Use the workspace upload flow for local directories that exceed the project deploy limits, such as investor diligence folders containing spreadsheets, PDFs, and supporting documents. The skill packages the selected sources into compressed tar shards, using zstd by default with gzip as a fallback, then uploads them through resumable GCS sessions. The agent-worker extracts the shards into the agent's writable workspace on the next activation.

Install the public runbear plugin and run /runbear:workspace-upload. The skill:

  1. inventories the selected local sources without following symlinks;
  2. packages them into compressed tar shards and a SHA-256 manifest;
  3. requests one resumable GCS upload session per shard through create_workspace_upload;
  4. resumes and completes each direct upload;
  5. calls finalize_workspace_upload; and
  6. polls get_workspace_upload_status until extraction is complete.

Uploaded files are ordinary workspace files: the agent can read, edit, and delete them. With --name <name>, everything lands under <name>/ in the workspace root. Without --name, a single source file or directory keeps its own name, while multiple sources are grouped under a generated upload-<timestamp>/ directory.

The server accepts at most 64 shards, 512 MiB per shard, 20 GiB total compressed, and 200,000 files. It verifies archive size, SHA-256, file count, paths, and entry types before installing the upload into the workspace.

Keep the generated local shards until get_workspace_upload_status returns completed. A successful finalize_workspace_upload response means the job was queued, not that the files are ready.

Options#

ArgumentPurpose
<target>Deploy to an existing agent, as the first positional argument — an app UUID, agent URL, or agent name (fuzzy-matched, with an interactive picker when more than one matches)
--new "<name>"Create a new Claude Agent SDK agent named <name> and deploy to it
--cwd <path>Project folder to deploy (defaults to the current directory)
--overwriteReplace files that already exist in the agent workspace
/runbear:deploy --new "My Project" --cwd ./services/api
/runbear:deploy "My Project" --cwd ./services/api --overwrite

What gets deployed#

The skill sends the files that git tracks (or would track — it honors .gitignore), minus anything sensitive. Both the local packing step and the server re-validation block:

  • Secrets and env files.env / .env.*, and any file containing API keys, tokens, private keys, bearer tokens, or database URLs with real inline credentials.
  • Credential and agent config.mcp.json, .claude/settings.json, .claude/settings.local.json, .claude.json.
  • Build and dependency output.git/, node_modules/, dist/, build/, .next/, .turbo/, coverage/, .venv/, vendor/, __pycache__/, and similar.

A deploy is capped at 500 files, 25 MiB decompressed, and a 50 MiB archive. If your project is larger, deploy a focused subset with --cwd.