mcpField
L
launchdarkly-release-autopilot-settings

launchdarkly-release-autopilot-settings

github.com/launchdarkly云与 DevOps3069 次安装今天更新
代码仓库

关于 launchdarkly-release-autopilot-settings

用于通过 LaunchDarkly MCP 服务诊断 Release Autopilot 的 PR 分类问题并管理其设置的 Skill。它强调只读诊断、写入前明确确认,以及谨慎处理仓库级和账户级影响。

主要功能

  1. 01查看账户和仓库设置
  2. 02诊断 PR 未分类的原因
  3. 03映射仓库或覆盖其设置
  4. 04每次写入前要求确认
  5. 05说明设置及自动化影响

适用场景

  1. 01查明拉取请求未自动标记的原因
  2. 02检查仓库的有效设置
  3. 03为指定仓库配置 Release Autopilot

MCP 相关

需要远程托管的 LaunchDarkly MCP 服务及其自动化工具,以读取或更新 Release Autopilot 设置。它使用服务当前提供的工具名称;缺少必要工具时会停止操作。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/launchdarkly/ai-tooling --skill launchdarkly-release-autopilot-settings

安装后在 Claude Code 中输入/launchdarkly-release-autopilot-settings确认已加载。

附带文件marketplace.jsonREADME.md

详细介绍

LaunchDarkly Release Autopilot 设置

你正在使用一项技能,通过 LaunchDarkly MCP 配置 Release Autopilot(GitHub App 代码自动化),或说明某个 PR 未被分类的原因。Release Autopilot 可以创建和更改拉取请求(自动标记),也可以驱动自动发布。请将每次写入都视为具有影响范围的生产自动化操作。

前提条件

此技能需要远程托管的 LaunchDarkly MCP 服务。

必需的 MCP 工具:

  • get-automations:账号设置,以及一页 GitHub App 安装的仓库列表;每个仓库都包含 mapped 及其生效设置。传入 repo 可指定一个仓库,也可传入 mapped: true / mapped: false 进行筛选。
  • update-automations:accountWide: true 用于更改账号设置;accountWide: false 配合 repo 用于映射或覆盖单个仓库。
  • delete-automations-repo-settings:取消映射单个仓库。

如果服务器尚未采用 Automations 这一新名称,同样的工具会命名为 get-release-autopilot、update-release-autopilot 和 delete-release-autopilot-repo-settings;请使用这些名称并传入相同的参数。如果调用失败并提示 "this tool has been removed from the server",请让用户重新连接 LaunchDarkly MCP 服务,以加载新工具名称,然后重试。

如果缺少这些工具,请停止。不要臆造 REST 调用、数字形式的 GitHub ID,或凭猜测设置“修复”问题。

底层端点需要 Release Autopilot 附加组件。如果所有 Release Autopilot 工具都返回 404,说明该账号未启用 Release Autopilot 附加组件——请告知用户 "Your account does not have the Release Autopilot add-on enabled,",不要重试或改用 REST。

核心原则

  1. 失败时关闭。 诊断操作只读。除非用户查看当前状态与拟议状态后确认了该项写入,否则绝不要更改设置来“让分类生效”。

  2. 每个仓库自身的设置决定其中会运行什么。 对于使用项目自动化设置页面(/projects/{projectKey}/settings/automations)的账户,Release Autopilot 只读取仓库设置,不读取账户设置。在这些账户中,仓库未启用的功能就是关闭状态。其他账户仍会同时使用账户设置,直到迁移完成,因此账户工具仍然保留。对于这些账户:

    • 只有账户已启用某项功能,且仓库未将其关闭时,该功能才会在仓库中运行。
    • 在账户层面将某项功能关闭,会在每个已映射仓库中将其关闭。
    • 在账户层面将某项功能开启,会在每个未将其关闭的已映射仓库中启动该功能。

    get-automations 返回的仓库有效值遵循该账户所用的规则。应使用这些值,而不是账户设置,来判断仓库中会运行什么。

  3. 每次进行 Release Autopilot 写入前都要确认。 账户 PATCH、映射、仓库覆盖设置和取消映射,均须遵循写入前确认。只操作用户指定的仓库。

  4. 最小权限。 除非用户明确要求自动发布,否则绝不要启用自动发布(这可能会发布代码)。除非用户明确要求取消审批门槛,否则绝不要关闭 approvalRequired。绝不要映射或取消映射用户未指定的仓库。绝不要遍历安装列表并映射所有仓库。

  5. 先发现,再映射。 传入 owner/name。绝不要询问数字形式的 GitHub id。当用户说“这个仓库”或“这个 PR”时,优先使用当前工作区的 git remote;如果远程仓库不一致(Fork 与上游仓库),请询问用户要用哪一个。owner/name 只会根据 GitHub App 安装列表进行解析——安装列表之外的仓库无法解析或操作,因为 Release Autopilot 通过该 App 运作。若返回 404,说明仓库不在安装列表中,或 App 尚未安装;这就是最终答复,不要换用其他名称重试,也不要从其他地方查找该仓库。

  6. 首次映射时必须提供 projectKey。 创建映射时必填;后续更新可省略。

  7. 省略 autoCleanup。 它目前还不是 Release Autopilot 设置的一部分。绝不要发送它;也不要将响应中的值复制到 PATCH 中。

  8. GitHub 连接使用浏览器链接。 如果 get-automations 返回了 githubConnectUrl,请将该确切 URL 提供给用户,并等待用户确认已完成。然后再次调用 get-automations。不要自行安装或授权 GitHub。flow=install 表示安装 GitHub App。flow=authorize 表示授权 GitHub。两者都与集成抽屉中的页面相同。用户必须已在该浏览器中登录 LaunchDarkly。

写入前先确认

停止。 在用户针对本轮提议回答“是”之前,不要调用 update-automations 或 delete-automations-repo-settings。用户在更早轮次回答“是”,或只说含糊的“修好它”/“继续”而没有明确指出设置,都不够。

  1. 先读取当前状态(调用 get-automations;如果变更针对仓库,则附上 repo)。
  2. 用一两句话说明当前状态与提议状态。说明影响范围。对于映射,说明该仓库将获得的自动标记和自动发布功能(先通过 get-automations 读取当前状态)。
  3. 等待回复。不要在提出问题的同一轮工具调用中一并写入。

账户级变更(调用 update-automations 并设置 accountWide: true,任何字段都算,包括开启功能)。这些影响适用于仍使用账户设置的账户(参见核心原则):

此账户已开启自动标记。要为所有已映射的仓库关闭吗?在重新开启之前,自动标记拉取请求将会停止。

此账户已关闭自动标记。要为此账户开启吗?未将其关闭的已映射仓库可能开始收到自动标记拉取请求。

自动标记的 approvalRequired 已开启。要关闭吗?自动标记 PR 将不再需要经过此审批关卡。

自动发布也使用相同模式,并说明自动发布可能会发布内容。

映射或变更单个仓库(调用 update-automations 并设置 accountWide: false):

提议中始终明确指出两项功能;创建新映射时同时传入这两项:{ "enabled": true } 或 { "enabled": false }。对于使用项目 Automations 设置的账户,仓库未设置的功能处于关闭状态;对于仍使用账户设置的账户,未设置的功能遵循账户设置。确认映射时,不要只提及自动标记。

launchdarkly/gonfalon 尚未映射。要将其映射到项目 default,并开启自动标记、关闭自动发布吗?Release Autopilot 可以开始在该仓库中分类并创建自动标记 PR。自动发布仍处于关闭状态。

launchdarkly/gonfalon 尚未映射。要将其映射到项目 default,并同时开启自动标记和自动发布吗?Release Autopilot 可以开始在该仓库中创建自动标记 PR,并自动发布,这可能会发布内容。

launchdarkly/gonfalon 已映射到 default,自动标记的生效状态为开启,自动发布的生效状态为关闭。要为此仓库单独设置覆盖项以关闭自动标记吗?自动发布保持不变(关闭)。

取消映射(调用 delete-automations-repo-settings):

launchdarkly/gonfalon 已映射到项目 default,自动标记的生效状态为开启,自动发布的生效状态为关闭。要取消映射吗?在重新映射之前,Release Autopilot 将停止对此仓库进行自动标记和自动发布。

用户确认后,只应用提议中列出的字段。然后进行验证(不要把验证用作安全检查)。

选择工作流

根据用户的请求选择工作流,而不是根据账户状态。按以下顺序检查:

  • “为什么 Release Autopilot 没有分类/自动标记我的 PR?”(或类似问题)→ 为什么我的 PR 没有被分类?,即使账户尚未设置任何内容也适用。在此工作流中不要写入设置。
  • 首次设置(“设置 Release Autopilot”“为我们完成入门设置”“开始使用”)→ launchdarkly-release-autopilot-onboarding。先收集所有决定,再确认一项计划。
  • 配置/映射/开启/取消映射 → 配置设置。

为什么我的 PR 没有被分类?

当用户询问 PR 为什么没有被分类、没有被自动标记,或 Release Autopilot 为什么忽略了该 PR 时,请使用本节。**只读。**按以下顺序检查。遇到第一个未通过的检查时停止,并告诉用户如何修复(如果用户要求你应用修复,请先确认后再写入)。如果原因是自动标记已关闭或仓库未映射,并且尚未完成任何设置,请推荐使用 launchdarkly-release-autopilot-onboarding 进行设置。

从 PR URL、git remote 或用户提供的名称中识别 GitHub 仓库(owner/name)。如果无法确定唯一的仓库,请询问用户。不要诊断其他仓库。

  1. 此仓库是否已映射到某个项目? 使用 get-automations 并设置 repo: "owner/name";检查返回的仓库中的 mapped。如果错误或响应中包含 githubConnectUrl,请读取 flow:

    • flow=install:尚未安装 GitHub App,因此 Release Autopilot 根本看不到该 PR。这就是原因。向用户提供链接并停止。
    • flow=authorize:此成员尚未授权 GitHub,因此无法查找 owner/name。这不是 Release Autopilot 跳过该 PR 的原因。告知用户这一点,并提供链接;等用户完成后,从此步骤继续。不要将其报告为修复方法。

    已安装但未映射的仓库属于另一种情况。未映射的已安装仓库不会运行 Release Autopilot。停止。

  2. 此仓库的自动标记实际上是否已开启? 在仓库负载中,自动标记的 enabled 是实际生效的值,具体取决于账户使用的规则(参见核心原则)。如果为 false,这就是原因。停止并说明原因:

    • enabledOverride 为 false:此仓库已关闭自动标记。
    • enabledOverride 为 true:此仓库已开启自动标记,因此是账户设置将其关闭。此情况只会出现在仍使用账户设置的账户上。
    • 未设置 enabledOverride:此仓库未设置自动标记。需要为此仓库开启自动标记。如果 account.autoFlagging.enabled 为 false,请说明仍使用账户设置的账户也需要为账户开启自动标记。

如果两项检查看起来都正常(仓库已映射,且仓库的自动标记实际已开启):

  • 不要为了“试试看”而切换设置。
  • 请用户查看 Release Autopilot 操作手册。这些是 LaunchDarkly 内部的 Confluence 页面(PD 空间);目前还没有公开文档 URL。分类仍可能因 MCP 接口无法查看的原因而失败(GitHub App 安装在错误的组织中、PR 不在已安装的仓库中、工作流或应用权限、分类器跳过规则)。
    • Flag Classification (ODD) Runbook — 分类器本身:判定结果(not-suited、already-flagged)、升级处理,以及记录 PR 判定原因的逐 PR 台账。
    • GitHub App Runbook — PR 事件未到达 Release Autopilot 的情况:安装范围、权限、webhook。
  • 可选检查:使用 get-automations 并设置 repo,确认此仓库是否在安装列表中(visibleOnInstall);如果用户期待有 PR 且确实存在 PR,但它正在等待审批,则检查 autoFlagging.approvalRequired。

配置设置

第 1 步:读取当前设置
  1. 不带筛选条件调用 get-automations:读取账户设置和安装仓库的第一页(可选设置 projectKey;安装范围为整个账户)。当 hasMore 为 true 时,使用 offset 翻页。
  2. 对用户提到的每个仓库调用 get-automations,并设置 repo: "owner/name"。

如果存在 githubConnectUrl,请将链接提供给用户,并结束本轮。后续调用不再返回该 URL 时,才能进行映射。

第 2 步:账户默认设置(如需要)

如果需要 PATCH 账户,请遵循写入前确认,然后使用 update-automations,并设置 accountWide: true、confirm: true,且仅包含已确认的字段:

  • autoFlagging.enabled / autoFlagging.approvalRequired(仅此处支持审批)。Agent 后端目前不会读取 approvalRequired:无论如何,每项自动标记提案都会等待 @launchdarkly approve。如果用户要求关闭审批,请在提出更改前告知他们,该设置目前不会生效。
  • autoReleasing.enabled

不要发送 autoCleanup。需要拥有更新账户 Release Autopilot 设置的权限。

第 3 步:映射或覆盖一个仓库

仅针对用户指定的仓库。遵循写入前确认,然后使用 update-automations,并设置 accountWide: false 和 confirm: true:

  1. 优先使用 repo: "owner/name"。
  2. 创建映射时,请包含 projectKey。
  3. 仓库级别的 autoFlagging / autoReleasing。创建新映射时,两者都要发送(参见映射或更改一个仓库)。对于仍使用账户设置的账户,仓库无法启用账户已关闭的功能。

需要拥有更新映射项目的 Release Autopilot 仓库设置的权限。

第 4 步:验证(确认写入后)
  • 使用 get-automations(针对仓库范围的更改,需附带 repo)。
  • 生效的 enabled 必须与提案一致。对于仍使用账户设置的账户,如果账户关闭了某项功能,仓库就无法启用该功能。
  • 映射的仓库会在 get-automations 中显示 mapped: true。

取消映射:写入前确认,然后使用 delete-automations-repo-settings,并附带 repo 和 confirm: true。

不在范围内

  • 自动清理和自动归档:请使用 launchdarkly-automations-cleanup-settings 和 launchdarkly-automations-archival-settings。这些设置中的 autoCleanup 是另一个未使用的字段。
  • 在工具内完成 GitHub OAuth。请改为向用户提供 githubConnectUrl。
  • Vega 推理、使用自带密钥的设置,以及环境发布计划。入门技能会指导这两项设置。
  • Observability MCP(github_repositories)——不要仅仅为了映射仓库而要求使用第二个 MCP 服务
  • 通过此技能更改分类规则、GitHub App 权限或组织安装范围

评论

支持 Markdown