AI Agent Plugins
EnhancedAdvanced
AI Agent Plugins is an experimental feature. An administrator can enable it on the Experimental Features settings page or with rspm config experimental enable agent_plugins. Experimental features might change or be removed in future releases.
An AI agent plugin is a bundle of extensions for AI coding tools, such as skills, sub-agents, slash commands, hooks, and Model Context Protocol (MCP) and Language Server Protocol (LSP) servers. Plugins use the Claude Code plugin format (a plugin.json manifest indexed by a marketplace.json) and install into tools such as Claude Code and VS Code. A plugin can be as small as a single skill or bundle many related capabilities together.
Posit Package Manager can host and distribute AI agent plugins: skills, sub-agents, slash commands, hooks, MCP servers, and LSP servers. It serves them to AI coding tools such as Claude Code and VS Code. Package Manager serves plugins over a read-only Git endpoint. Clients install them with their standard marketplace add (or equivalent) workflow against a Package Manager URL, with no Package Manager-specific tooling.
AI agent plugin hosting requires an Enhanced or Advanced license. Without one, AI agent plugin sources and repositories are unavailable.
Overview
Agent plugin hosting uses a plugins repository type. A plugins repository aggregates plugins from one or more agent plugin sources, and serves them at:
https://<package-manager-address>/<repo>/latest/marketplace.gitIn addition to latest, you can pin clients to an immutable snapshot of the repository using the frozen URL from the repository’s Setup page. The frozen URL encodes the snapshot date, for example, https://<package-manager-address>/<repo>/2026-06-29+a7fstUZG/marketplace.git. See Snapshot Identifiers for background.
There are two agent plugin source types:
local-pluginssource (LocalPlugin): An administrator uploads a plugin bundle (a.tar.gzor.ziparchive). This is analogous to a Local VSX source for internally managed plugins.git-pluginssource (GitPlugin): A git builder mirrors an upstream git repository, polling for new commits and tags and ingesting them as plugin versions. This is analogous to a Git source for R and Python packages.
A plugins repository can subscribe to any combination of local-plugins and git-plugins sources.
Quickstart
Create a plugins repository, create a local agent plugin source, subscribe the repository to it, and upload a bundle:
Terminal
# Create a local agent plugin source:
rspm create source --name=local-plugin-src --type=local-plugins
Source 'local-plugin-src':
Type: Local Agent Plugins
# Create a `plugins` repository:
rspm create repo --name=plugins --type=plugins --description='agent plugins'
Repository: plugins - agent plugins - Plugins
# Subscribe the repository to the local agent plugin source:
rspm subscribe --repo=plugins --source=local-plugin-src
Repository: plugins
Sources:
- local-plugin-src (Local Agent Plugins)
# Upload a plugin bundle (a plugin directory or a pre-made archive):
rspm add --source=local-plugin-src --path=/path/to/my-plugin.tar.gzOnce a plugin is uploaded, clients install it from https://<package-manager-address>/plugins/latest/marketplace.git. See Installing AI Agent Plugins in the User Guide for the per-tool recipes.
Local agent plugin sources
Local agent plugin sources accept plugin bundles uploaded by an administrator. Bundles are .tar.gz or .zip archives, with a default maximum size of 30 MB. Configure the maximum bundle size with the AI.PluginMaxBundleSize setting. An extracted bundle defaults to a maximum uncompressed size of 300 MB, which you can change with the AI.PluginMaxBundleSizeUncompressed setting.
Bundle detection
When you upload a bundle, Package Manager inspects its contents to discover the plugins it contains, using the following hierarchy:
marketplace.json: If the bundle contains amarketplace.jsonat its root, Package Manager treats the bundle as a multi-plugin marketplace and ingests each declared plugin.- Single plugin manifest: Otherwise, Package Manager looks for a single plugin manifest in any of the following locations:
.plugin/plugin.json,.claude-plugin/,.codex-plugin/,.cursor-plugin/,.github/plugin/, or the bundle root. Package Manager ingests the bundle as a single plugin. - Bare skills (auto-wrap): If Package Manager finds no manifest, it automatically synthesizes plugins from bare skills. A lone
SKILL.mdfile (or a single skill folder) becomes one synthesized plugin. Askills/directory becomes one synthesized plugin per child skill, so each skill is versioned and served independently of its siblings. This lets you host bare skill bundles without an authored manifest.
Managing plugins
Upload plugin bundles with the rspm add CLI command. The --path flag accepts a plugin directory (which is archived automatically) or a pre-made .tar.gz, .tgz, or .zip archive:
Terminal
rspm add --source=local-plugin-src --path=/path/to/my-plugin
rspm add --source=local-plugin-src --path=/path/to/my-plugin.tar.gzList and delete plugins in a local agent plugin source with the same rspm CLI:
Terminal
# List the plugins in a source:
rspm list packages --source=local-plugin-src
# Delete a plugin (all versions), or a specific version, by scope:
rspm remove --source=local-plugin-src --name=my-plugin@all
rspm remove --source=local-plugin-src --name=my-plugin@1.2.0Git agent plugin sources
Git agent plugin sources mirror an upstream git repository. A git builder polls the upstream repository for new commits and tags and ingests them as plugin versions. This is useful for distributing plugins that are developed and versioned in git, including plugins maintained by upstream open source projects.
Creating a git-plugins source requires the Git Builders entitlement, which is included in the Advanced tier. local-plugins sources require only an AI license entitlement and are available on Enhanced and Advanced.
Create a git-plugins source and add a git builder to it. A name identifies the builder within the source. If you omit it, the name defaults to <owner>-<repo> derived from the git URL (for example, https://github.com/example-org/skills yields example-org-skills). Supply name to override. Each plugin’s own manifest provides its name, and a single mirrored repository can declare multiple plugins (for example, via a marketplace.json):
Terminal
# Create a git agent plugin source:
rspm create source --name=git-plugin-src --type=git-plugins
Source 'git-plugin-src':
Type: Git Agent Plugins
# Subscribe the agent plugin repository to the git agent plugin source:
rspm subscribe --repo=plugins --source=git-plugin-src
# Create a git builder that mirrors an upstream repository:
rspm create git-builder --source=git-plugin-src --url=https://github.com/example/my-plugin.gitThe git builder applies the same bundle detection hierarchy to the contents of each commit or tag it ingests, including auto-wrapping bare skills into synthesized plugins.
Versions and immutability
Plugin versions are immutable. Once published, a version never changes. Package Manager also exposes each version as a git tag of the form <plugin>-v<version>, so clients can pin to a specific version by checking out that tag. Deleting a version lets you upload a new bundle with the same version string. The per-version tag on the latest snapshot then points at the new content, while transaction-pinned snapshots from before the delete continue to serve the original content.
The commit hash (SHA) associated with a version depends on the source type:
- For git agent plugin sources, the version uses the upstream commit SHA.
- For local agent plugin sources, a version that declares a
versionin its manifest uses that version. For a bundle without a manifestversion, Package Manager assigns a deterministic, synthesized git commit SHA derived from its contents, so the same bundle always produces the same version reference.
Web interface
Agent plugin repositories appear in the repository selector in the Package Manager web interface alongside R, Python, and VSX repositories. Within a plugins repository, plugins are listable and searchable. Each plugin has a detail page that shows its resources (skills, sub-agents, slash commands, hooks, MCP servers, and LSP servers) along with per-tool install snippets.
Plugin detail pages support the full Custom Metadata feature set. Administrators can attach arbitrary key-value pairs to a plugin and add tab.* custom tabs that appear on the detail page alongside the built-in tabs. The detail page also renders a README when a top-level README.md is present in the plugin bundle. An Other Versions tab lists all published versions of the plugin. Use rspm create metadata with --repo to scope metadata to a specific plugins repository, exactly as you do for any other package type.
Authentication
Like other Package Manager repositories, you can restrict agent plugin repositories to authenticated users with a Package Manager API token. Create the repository with --authenticated, or set Authentication.NewReposAuthByDefault to require authentication for new repositories by default. Issue users a token with the repos:read scope (optionally limited to specific repositories). See Token Authentication for details.
Clients access plugins over a read-only Git endpoint. They authenticate to a private agent plugin repository using HTTP Basic authentication with the username __token__ and a Package Manager API token as the password. Every supported client (Claude Code, VS Code, and npx skills) installs plugins by cloning the git endpoint. They authenticate by embedding the token in the URL or through a git credential helper. See Installing AI Agent Plugins in the User Guide for client configuration.