跳转到主要内容
如果您为组织运营插件marketplace,您可以根据用户正在处理的内容让Claude Code向用户建议特定的插件。向marketplace.json中的插件条目添加relevance块,然后在托管设置中将marketplace加入允许列表。当用户的会话与声明的信号之一匹配时,Claude Code会显示该插件的安装建议。 Marketplace声明的建议通过托管设置按marketplace选择加入。在管理员将任何marketplace添加到允许列表之前,没有marketplace的relevance声明会产生建议,包括官方Anthropic marketplace。Claude Code还包括一个独立于此允许列表的内置建议;当spinnerTipsEnabled设置为false时,该提示和所有marketplace声明的提示都会被禁用。 此功能需要Claude Code v2.1.152或更高版本。较旧的客户端会忽略relevance字段。 此页面适用于marketplace运营商和企业管理员。如果您想要安装插件,请参阅发现和安装插件

工作原理

marketplace.json中的每个插件条目都可以包含一个relevance对象。该对象命名一个主题和一个或多个信号。信号是Claude Code针对当前会话测试的模式,例如工作目录或Claude已读取的文件。 信号匹配在用户的机器上本地进行。匹配不会增加网络流量,也不会向Anthropic或marketplace运营商报告哪些信号匹配或其值。 当信号匹配且插件尚未安装时,Claude Code会在三个位置显示该插件:
  • Spinner提示:当Claude正在响应时,spinner下方会显示”使用_topic_?安装_plugin_插件”消息,附带/plugin install命令。
  • 会话启动建议如果cwd信号与工作目录匹配,在第一轮之前会显示一行plugin suggestion: <name>@<marketplace> · /plugin通知。此表面需要Claude Code v2.1.153或更高版本。
  • /plugin Discover标签页插件被固定在Discover列表的顶部,带有”为此目录建议”或”为stripe命令建议”之类的注释。此表面需要Claude Code v2.1.154或更高版本。
Spinner提示和会话启动通知是spinner提示系统的一部分。当用户或项目将spinnerTipsEnabled设置为false,或当配置了带有excludeDefault的自定义spinnerTipsOverride时,两者都会被禁用。Discover标签页的固定独立于提示设置。 Claude Code永远不会自动安装插件。用户始终需要确认。

向插件条目添加relevance

向您的marketplace.json中的插件条目添加relevance对象。以下示例声明当Claude读取.tf文件或运行terraform时,terraform-helpers插件是相关的:
{
  "name": "acme-corp-plugins",
  "owner": { "name": "Acme Platform Team" },
  "plugins": [
    {
      "name": "terraform-helpers",
      "source": "./plugins/terraform-helpers",
      "description": "Acme conventions and helpers for Terraform",
      "relevance": {
        "topic": "Terraform",
        "signals": {
          "cli": ["terraform"],
          "filesRead": ["**/*.tf"]
        }
      }
    }
  ]
}
具有relevance块但没有匹配信号的插件的行为与任何其他marketplace条目相同。它在Discover列表中以其正常位置出现,永远不会显示为spinner提示。

字段参考

relevance

字段类型描述
topicstring可选。在spinner提示中填充”使用_topic_?“的短语。通常是产品名称,例如Stripe。当插件名称不能自然地作为主题读取时,使用域名如design。默认为插件名称,每个连字符段首字母大写。会话启动通知不使用此值。最多64个字符。
signalsobject确定插件何时相关的匹配器。至少需要一个信号才能使插件可被建议。请参阅下表。

relevance.signals

字段类型描述
cwdarray of strings与会话工作目录匹配的Glob模式。作为绝对路径匹配,当在git存储库内时,作为相对于存储库根目录的路径匹配。正斜杠规范化且不区分大小写。每个模式都匹配目录本身及其下的所有内容,因此infrainfra/infra/**的行为相同。这是唯一可以在会话启动时(第一轮之前)匹配的信号。最多10个模式,每个256个字符。
cliarray of stringsClaude在此会话中运行的shell命令中的命令名称,例如["stripe"]。适用于每个平台:在Windows上通过PowerShell或Git Bash运行的命令以相同方式记录。Claude Code每个shell工具调用记录一个命令名称:任何前导环境变量赋值和sudo之后的第一个令牌。复合命令仅贡献其前导命令,因此cd infra && terraform plan记录cd,而不是terraform。精确匹配。最多10个条目,每个64个字符。
hostsarray of strings此会话中Bash命令中http://https:// URL中看到的主机名,例如["api.stripe.com"]。仅限裸小写主机名:无方案、端口或路径。精确不区分大小写匹配。最多20个条目,每个128个字符。
filesReadarray of strings与Claude在此会话中读取的文件路径匹配的Glob模式,例如["**/*.tf"]。正斜杠规范化且不区分大小写。最多10个模式,每个256个字符。
manifestDepsarray of objectsClaude在此会话中读取的包清单中声明的依赖项。每个条目是{ "file": "...", "pattern": "..." },其中file是与清单文件路径匹配的正则表达式(如会话状态中记录的,通常是绝对路径),pattern是与该文件内容匹配的正则表达式。在末尾锚定file,例如JSON转义形式中的[/\\\\]package\\.json$,因为起始锚定的模式永远不会匹配绝对路径。路径对于此信号不进行分隔符规范化,因此Windows路径使用反斜杠。大于512 KB的清单文件会被跳过。两个值都是最多256个字符的JavaScript RegExp源字符串。file不区分大小写匹配。pattern区分大小写。最多10个条目。
clihostsfilesReadmanifestDeps信号需要会话历史记录,因此它们只能在spinner提示和Discover标签页上匹配。只有cwd可以在会话启动时匹配。filesReadmanifestDeps信号测试会话的记录文件状态,其中还包括Claude已写入或编辑的文件以及自动加载的CLAUDE.md内存文件。 以下示例使用manifestDeps在Claude读取了依赖于stripepackage.json后建议Stripe插件。file模式使用[/\\\\]以匹配正斜杠和反斜杠路径分隔符,使用\\.以使点为字面。在JSON中,正则表达式中的每个反斜杠都写两次。
{
  "name": "stripe-helpers",
  "source": "./plugins/stripe-helpers",
  "relevance": {
    "topic": "Stripe",
    "signals": {
      "manifestDeps": [
        {
          "file": "[/\\\\]package\\.json$",
          "pattern": "\"stripe\"\\s*:"
        }
      ]
    }
  }
}
relevancerelevance.signals下的未知字段在加载时被忽略,因此较旧的Claude Code客户端继续加载您的marketplace。运行claude plugin validate以将它们显示为警告。

在托管设置中启用建议

marketplace.json中声明relevance本身是不够的。管理员必须在托管设置中将marketplace加入允许列表,其建议才会显示给用户。 将marketplace名称添加到pluginSuggestionMarketplaces。对于官方Anthropic marketplace以外的任何marketplace,还要在同一托管设置中声明marketplace源,要么作为该名称在extraKnownMarketplaces中的条目,要么作为strictKnownMarketplaces中的条目。如果在机器上注册的marketplace来自不同的源,则忽略允许列表中的名称。这可以防止无关的源以允许列表中的名称注册,以便在您的组织中建议其插件。 以下managed-settings.json从GitHub存储库注册一个组织marketplace并启用其建议:
{
  "extraKnownMarketplaces": {
    "acme-corp-plugins": {
      "source": {
        "source": "github",
        "repo": "acme-corp/claude-plugins"
      }
    }
  },
  "pluginSuggestionMarketplaces": ["acme-corp-plugins"]
}
官方marketplace免除源声明要求,因为其名称只能从官方Anthropic源注册。仅允许列表中的名称就足够了:
{
  "pluginSuggestionMarketplaces": ["claude-plugins-official"]
}
有关pluginSuggestionMarketplacesextraKnownMarketplaces的完整配置详情,请参阅设置参考

用户看到的内容

当会话期间信号匹配时,spinner提示读取:
Working with Terraform? Install the terraform-helpers plugin:
/plugin install terraform-helpers@acme-corp-plugins
在会话启动时,匹配的cwd信号会显示一行通知:
plugin suggestion: terraform-helpers@acme-corp-plugins · /plugin
给定插件的建议在spinner提示和会话启动通知的组合中最多每三个会话出现一次,一旦插件被安装,两者都不会重复。会话启动通知在建议显示两次后还会停止出现。 /plugin Discover标签页中,插件被固定在其他结果上方,带有命名匹配信号的注释,例如suggested for this directorysuggested for terraform commands。Discover标签页固定给定插件一次;后续访问以正常顺序列出它。Discover标签页固定需要Claude Code v2.1.154或更高版本。在v2.1.152上仅显示spinner提示;会话启动通知在v2.1.153中添加。

验证您的marketplace

针对您的marketplace目录运行claude plugin validate以在发布前检查relevance块:
claude plugin validate ./my-marketplace
验证器将relevancerelevance.signals下的未知键报告为警告,标记不是对象的relevance值,并拒绝包含方案、端口或路径的signals.hosts条目。

另请参阅