MusePi

Marketplace 插件系统

English 中文

marketplace 系统让你能够从 Git、本地或直接目录源(direct-catalog sources)发现、安装和管理插件。它与 Claude Code plugin registry 格式兼容。

快速开始

/marketplace add anthropics/claude-plugins-official
/marketplace install wordpress.com@claude-plugins-official

在 TUI 中,不带参数执行 /marketplace 会打开交互式插件浏览器。在非 TUI 命令处理中,/marketplace 列出已配置的 marketplace;使用 /marketplace discover 来浏览。

概念

marketplace 是一个 Git 仓库(或本地目录),其中在 .omp-plugin/marketplace.json(首选)或 .claude-plugin/marketplace.json(Claude Code 兼容后备)存放 catalog 文件。catalog 列出可用插件及其来源、描述和元数据。

plugin 是一个目录,包含 Claude/OMP 插件内容,如 skills、commands、agents、hooks、tools、MCP servers 或 LSP servers。Marketplace 安装还会加载由 package.jsonomp.extensions 声明的扩展模块:安装时把缓存的插件符号链接到 scope 的 node_modules 树,并将其记录在 musepi-plugins.lock.json 中——这与 npm 安装及 musepi plugin link 的插件所用的运行时表面相同。插件以 name@marketplace 标识(例如 code-review@claude-plugins-official)。

Scopes(作用域):marketplace 插件可以安装到两个作用域:

已启用的 project 作用域安装会遮蔽同一插件的已启用 user 作用域安装。已禁用的 project 安装不会遮蔽 user 安装。

命令

交互模式

命令 效果
/marketplace 打开交互式插件浏览器(安装)

Marketplace 管理

命令 效果
/marketplace add <source> 添加一个 marketplace 来源
/marketplace remove <name> 移除一个 marketplace
/marketplace update [name] 重新拉取 catalog;省略 name 则更新全部
/marketplace list 列出已配置的 marketplaces

插件操作

命令 效果
/marketplace discover [marketplace] 浏览可用插件
/marketplace install [--force] [--scope user\|project] name@marketplace 安装一个插件
/marketplace uninstall [--scope user\|project] name@marketplace 卸载一个插件;不带参数时打开 TUI 选择器
/marketplace installed 列出已安装的 marketplace 插件
/marketplace upgrade [--scope user\|project] [name@marketplace] 升级一个或全部插件
/plugins list 列出 npm/link 与 marketplace 插件
/plugins enable [--scope user\|project] name@marketplace 启用一个 marketplace 插件
/plugins disable [--scope user\|project] name@marketplace 禁用一个 marketplace 插件

CLI 等价命令

同样的操作也可以在命令行中使用:

musepi plugin marketplace add <source>
musepi plugin marketplace remove <name>
musepi plugin marketplace update [name]
musepi plugin marketplace list
musepi plugin discover [marketplace]
musepi plugin install [--force] [--scope user|project] name@marketplace
musepi plugin uninstall [--scope user|project] name@marketplace
musepi plugin upgrade [--scope user|project] [name@marketplace]
musepi plugin enable [--scope user|project] name@marketplace
musepi plugin disable [--scope user|project] name@marketplace

Marketplace 来源

当你运行 /marketplace add <source> 时,系统会对来源进行分类:

来源格式 类型 示例
owner/repo GitHub 简写 anthropics/claude-plugins-official
https://...*.json 直接 catalog URL https://example.com/marketplace.json
https://... / http://... Git 仓库,除非 URL 路径以 .json 结尾 https://github.com/org/repo
git@... / ssh://... Git 仓库 git@github.com:org/repo.git
./path~/path/path 本地目录 ./my-marketplace

Git 和本地来源必须在 .omp-plugin/marketplace.json(首选)或 .claude-plugin/marketplace.json(Claude Code 兼容后备)中提供 catalog。直接 catalog URL 只缓存 JSON catalog;URL 来源 catalog 中的插件不能使用像 "./plugins/foo" 这样的相对字符串来源。

Catalog 格式(marketplace.json)

marketplace catalog 位于仓库根目录的 .omp-plugin/marketplace.json。当 musepi 是唯一预期的消费者时,优先使用此路径。若要继续兼容 Claude Code(musepi 从任一路径加载相同结构),请改为发布到 .claude-plugin/marketplace.json——当 .omp-plugin/marketplace.json 不存在时,musepi 会将其用作后备。仓库可以同时提供两个:musepi 读取 .omp-plugin/ 副本,Claude Code 读取 .claude-plugin/ 副本。两种路径的 catalog 格式相同:

{
  "$schema": "https://anthropic.com/claude-code/marketplace.schema.json",
  "name": "my-marketplace",
  "owner": {
    "name": "Your Name",
    "email": "you@example.com"
  },
  "metadata": {
    "description": "A collection of plugins",
    "version": "1.0.0",
    "pluginRoot": "plugins"
  },
  "plugins": [
    {
      "name": "my-plugin",
      "description": "What this plugin does",
      "source": "./my-plugin",
      "category": "development",
      "homepage": "https://github.com/you/my-plugin"
    }
  ]
}

必需字段

字段 描述
name marketplace 名称。小写字母数字、连字符和点。必须以字母数字开头和结尾。最多 64 个字符。
owner.name marketplace 所有者名称
plugins 插件条目数组

顶层 metadata.descriptionmetadata.versionmetadata.pluginRoot 是可选的。当设置了 metadata.pluginRoot 时,它会前置到相对的插件 source 路径。

插件条目字段

字段 必需 描述
name 插件名称(规则与 marketplace 名称相同)
source 插件在哪里(见下文)
description 简短描述
version 版本字符串;安装版本依次回退到插件 manifest、来源 SHA,然后是 0.0.0
author { name, email? }
homepage URL
repository 仓库 URL/字符串
license 许可证字符串
keywords 字符串关键字数组
category 类别字符串(例如 developmentproductivitysecurity
tags 字符串标签数组
strict 布尔值
commands 提供的斜杠命令
agents 提供的 agents
hooks Hook 定义
mcpServers MCP server 定义
lspServers LSP server 定义或路径;安装时复制到 .lsp.json

插件来源格式

source 字段支持以下格式。字符串来源必须以 ./ 开头,并在可选的 metadata.pluginRoot 前置之后、在 marketplace 根目录内解析:

相对路径(在 marketplace 仓库内):

"source": "./my-plugin"

Git 仓库 URL

"source": {
  "source": "url",
  "url": "https://github.com/org/repo.git",
  "sha": "abc123..."
}

GitHub 简写

"source": {
  "source": "github",
  "repo": "org/repo",
  "ref": "main",
  "sha": "abc123..."
}

Git 子目录(monorepo):

"source": {
  "source": "git-subdir",
  "url": "https://github.com/org/monorepo.git",
  "path": "plugins/my-plugin",
  "ref": "main",
  "sha": "abc123..."
}

npm 包(可解析但尚不可安装):

"source": {
  "source": "npm",
  "package": "@scope/my-plugin",
  "version": "1.0.0"
}

当前的安装器行为会用 npm plugin sources are not yet supported 拒绝 npm marketplace 来源;请使用 relative、GitHub、URL 或 git-subdir 来源。

磁盘上的布局

~/.musepi/
  marketplaces.json              # Registry of added marketplaces
  plugins/
    installed_plugins.json       # User-scoped marketplace plugins (version: 2)
    musepi-plugins.lock.json         # Runtime enable/feature state
    node_modules/<package>        # Symlink to the cached plugin
    cache/
      marketplaces/<name>/       # Cached marketplace clone/catalog
      plugins/<marketplace>___<plugin>___<version>/  # Cached plugin directories

<project>/.musepi/
  plugins/
    installed_plugins.json       # Project-scoped marketplace plugins (version: 2)
    musepi-plugins.lock.json         # Project runtime enable/feature state
    node_modules/<package>        # Symlink to the cached plugin

命名规则

marketplace 和插件名称必须:

插件 ID(name@marketplace)总长最多 128 个字符。

有效示例:my-plugincode-reviewwordpress.comai-firstify 无效示例:-badbad-.badBadunder_score