English ← MyDocs

文档索引

在此获取完整文档索引:https://code.claude.com/docs/llms.txt 使用此文件发现所有可用页面,然后再进一步探索。

从您的 CLI 推荐插件

从您的 CLI 发出一行标记,以便 Claude Code 提示用户安装您的官方插件。

如果您维护一个 CLI 或 SDK,并且在官方 Anthropic 市场中有一个插件,您的工具可以提示 Claude Code 用户安装该插件。当您的 CLI 检测到它正在 Claude Code 内部运行时,会将一行标记写入 stderr。Claude Code 读取该标记,将其从输出中剥离,并向用户显示一次性安装提示。

Claude Code 在将命令输出发送给模型之前会剥离提示行,因此标记永远不会出现在对话中,也不会计入 token 使用量。该协议不需要额外的命令,也不会更改您的 CLI 为 Claude Code 外部用户打印的内容。

本页面面向 CLI 和 SDK 维护者。如果您想安装插件,请参阅发现和安装插件

工作原理

Claude Code 为通过 Bash 和 PowerShell 工具运行的每个命令以及钩子命令设置 CLAUDECODE 环境变量为 1。当您的 CLI 看到该变量时,它会将自关闭的 <claude-code-hint /> 标签写入 stderr。在钩子命令中,提示标签会被剥离和忽略。只有 Bash 和 PowerShell 工具输出会触发安装提示。

当 Claude Code 接收到命令输出时,它会:

  1. 扫描提示行并在输出到达模型之前将其移除
  2. 检查提示是否指向官方 Anthropic 市场中的插件
  3. 检查插件是否尚未安装且之前未被提示过
  4. 向用户显示安装提示,其中包含发出提示的命令名称

Claude Code 永远不会自动安装插件。用户始终需要确认。

发出提示

CLAUDECODE 环境变量上设置门控,使标记永远不会出现在人类用户的终端中。然后在单独的行上将标签写入 stderr。

以下示例为官方市场中名为 example-cli 的插件发出提示:

if (process.env.CLAUDECODE) {
  process.stderr.write(
    '<claude-code-hint v="1" type="plugin" value="example-cli@claude-plugins-official" />\n',
  )
}
import os, sys

if os.environ.get("CLAUDECODE"):
    print(
        '<claude-code-hint v="1" type="plugin" value="example-cli@claude-plugins-official" />',
        file=sys.stderr,
    )
if os.Getenv("CLAUDECODE") != "" {
    fmt.Fprintln(os.Stderr,
        `<claude-code-hint v="1" type="plugin" value="example-cli@claude-plugins-official" />`)
}
[ -n "$CLAUDECODE" ] &&
  printf '%s\n' '<claude-code-hint v="1" type="plugin" value="example-cli@claude-plugins-official" />' >&2

example-cli 替换为您在官方市场中的插件名称。

选择发出位置

您控制哪些代码路径发出提示。Claude Code 按插件去重,因此每次调用时发出都没有负面影响。效果良好的触点包括:

放置位置为什么有效
--help 输出Claude 在探索不熟悉的 CLI 时经常运行帮助命令
未知子命令错误在 Claude 对您的界面感到困惑时触达
登录或身份验证成功用户已经处于设置心态
首次运行欢迎消息自然的引导时刻

用户看到的内容

当提示通过所有检查时,Claude Code 会显示如下提示:

─────────────────────────────────────────────────────────────
  Plugin Recommendation

    The example-cli command suggests installing a plugin.

    Plugin: example-cli
    Marketplace: claude-plugins-official
    Official integration for example-cli deployments

    Would you like to install it?
    ❯ 1. Yes, install example-cli
      2. No
      3. No, and don't show plugin installation hints again

─────────────────────────────────────────────────────────────

提示中包含产生提示的命令名称,以便用户可以发现工具与其推荐的插件之间的不匹配。如果用户在 30 秒内未响应,提示将以 No 关闭。

提示频率有上限:

  • 每个插件一次:提示显示后,Claude Code 记录该插件,无论用户的回答如何,都不会再提示它。
  • 每个会话一次:在机器上的所有 CLI 中,每个 Claude Code 会话最多显示一个提示。

选择 Yes 会将插件安装到用户作用域。选择 No, and don't show plugin installation hints again 会为用户禁用所有未来的提示。

提示格式

提示是一个带有三个必需属性的自关闭标签。

<claude-code-hint v="1" type="plugin" value="example-cli@claude-plugins-official" />
属性必需描述
v协议版本。1 是唯一受支持的值
type提示类型。plugin 是唯一受支持的值
valuename@marketplace 形式的插件标识符

属性值可以用双引号引起来,也可以不加引号。不加引号的值不能包含空白字符。不支持转义序列。

要求

Claude Code 在对提示执行操作之前强制执行两个条件。未通过任一检查的提示将被丢弃:

  • 独占一行:标签必须独占一行。嵌入在行中的标签(例如在日志语句内)会被忽略。行首和行尾的空白是允许的。
  • 官方市场value 必须引用 Anthropic 控制的市场(如 claude-plugins-official)中的插件。指向其他市场的提示会被静默丢弃。

即使版本或类型未被识别,提示行也会在到达模型之前从输出中移除,因此标记永远不会计入 token 使用量。

其余指导是推荐的但不强制执行。Claude Code 无法观察您的 CLI 是否遵循它:

  • 写入 stderr:stderr 将标签排除在 shell 管道(如 example-cli deploy | jq)之外。Claude Code 扫描两个流,因此 stdout 也可以工作。
  • CLAUDECODE 上设置门控:仅在 CLAUDECODE 环境变量被设置时发出。这可以防止标记出现在直接运行您的 CLI 的用户面前。

将您的插件放入官方市场

提示协议仅对 Anthropic 官方市场 claude-plugins-official 中列出的插件生效。Anthropic 自行决定该市场的策展,应用内提交表单会将插件添加到社区市场,提示协议不会检查该市场。如果您正在与 Anthropic 合作伙伴联系人合作,请与他们联系以协调官方市场列表。

另请参阅