mcpField
F
flag-toggle

flag-toggle

github.com/growthbook开发2540 次安装4 周前更新
代码仓库

关于 flag-toggle

用于切换 GrowthBook 功能标志在单个环境中启用状态的 Claude skill。它先检查状态并要求确认,再通过草稿和审核流程提交变更。

主要功能

  1. 01检查标志及环境状态
  2. 02切换单个环境的启用状态
  3. 03变更前确认操作
  4. 04创建或复用草稿版本
  5. 05交接发布与审批

适用场景

  1. 01停用某环境中的功能标志
  2. 02确认环境后启用标志
  3. 03停用前检查规则影响

安装

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

$npx skills add https://github.com/growthbook/skills --skill flag-toggle

安装后在 Claude Code 中输入/flag-toggle确认已加载。

详细介绍

flag-toggle

在特定环境中启用或停用 GrowthBook 功能标志。切换环境状态就是紧急停用开关——在某个环境中停用标志后,其规则不会执行,SDK 会为该环境中的所有用户返回默认值,无论规则如何设置。

与所有标志变更一样,环境切换也要经过「草稿 → 审核 → 发布」流程。没有绕过流程的路径——审核是正常流程,而不是障碍。

所有 API 调用都通过内置助手执行:${CLAUDE_PLUGIN_ROOT}/scripts/gb-call。需要在环境变量中设置 GB_API_KEY,或由 /growthbook:gb-setup 写入 ~/.config/growthbook/.env。

必填输入

  • 标志 ID — kebab-case 键。如果用户提供的是描述,请使用 flag-search 查找对应标志。
  • 环境 — 要切换的环境。如果用户说「production」或「prod」,请核对实际环境 ID。
  • 方向 — 启用(true)或停用(false)。根据用户的措辞判断;执行变更前先确认。

工作流

1. 获取标志和当前切换状态
gb-call GET /api/v2/features/<flag-id>

记录:

  • environmentSettings — 环境 ID 及其当前 enabled 状态的映射。使用它确认环境名称,并在切换前向用户展示当前状态。
  • rules — 如果用户要停用标志,请检查是否有活动规则并提醒用户(这些规则都会停止执行)。

如果标志已经处于用户要求的状态,请停止操作:「标志 <flag-id> 在 <env> 中已经是 <enabled/disabled> 状态。无需更改。」

2. 确认环境

展示 environmentSettings 中可用的环境。如果用户说的是「prod」或其他别名,请先确认其指的是哪个环境 ID,再继续。

gb-call GET /api/v1/environments

如果标志的 environmentSettings 未列出所有环境(例如该标志从未在该环境中切换过),请使用此项。

3. 确认操作

执行变更前,明确说明要做的更改:

「<flag-id> 当前在 <env> 中处于 <enabled/disabled> 状态。我将<enable/disable>它。停用后,所有规则都将停止执行,SDK 会为 <env> 中的所有用户返回默认值(<defaultValue>)。继续吗?」

停用时:如果标志有返回非默认值的活动规则,请说明行为变化:

「注意:当前有 <N> 条规则返回的值不同于默认值。停用后,所有匹配的用户都将恢复为 <defaultValue>。」

4. 通过草稿应用切换
echo '{"environment":"<env-id>","enabled":<true|false>}' \
  | gb-call POST /api/v2/features/<flag-id>/revisions/new/toggle -

new 魔法版本会创建新草稿,或在现有草稿上继续修改。记录返回的 version 编号。

5. 通过 flag-publish 发布

环境切换是最典型的紧急停用开关用例——请主动询问用户是否立即发布:

「切换已应用到草稿修订版 <version>。现在发布吗?」

将发布步骤交给 flag-publish。flag-publish 会处理需要审批(400)和合并冲突(409)这两种失败情况。

注意:即使是紧急停用开关,审批流程也是正常流程。如果需要审批且情况紧急,flag-publish 审批分支中的选项 B 或 C(组织范围的绕过或按令牌绕过)是最快的方式,但需要管理员操作。

护栏

  • 草稿版本串联。 如果本次会话中之前的写入技能已提供版本号,请明确使用该版本号(例如 .../revisions/42/toggle),而不是使用 new。这样所有更改都会保留在同一份草稿中。若从头开始,则使用 new——它会自动创建或复用最近更新的未关闭草稿。
  • 环境级开关 ≠ 规则级 enabled。 环境级开关控制该环境中是否会评估此标志。规则级 enabled 控制某条具体规则是否参与评估。两者彼此独立——某个标志可以在环境中启用,但其所有规则都处于禁用状态。
  • 禁用后会停止所有规则评估。 用户将获得 defaultValue。如果 defaultValue 为 "false",而规则此前向部分用户提供的是 "true",那么这些用户将失去该功能。请确认用户理解这一点。
  • 没有能绕过审核的即时紧急开关。 正常流程是进行审核。如果情况紧急,需要跳过审批,请引导用户使用 GrowthBook UI——人工操作人员有时可以在那里更快发布——或者使用组织级绕过设置。
  • new 会在现有草稿上叠加版本。 如果队友已有此标志的未关闭草稿,切换操作会进入该草稿。如果复用了现有草稿,请告知用户;发布前,他们应与草稿所有者协调。
  • 此处不支持 allEnvironments 切换。 此技能一次只切换一个环境。若要同时切换所有环境,请针对每个环境分别运行此技能,或使用 GrowthBook UI。

使用的端点

  • GET /api/v2/features/:id — 获取标志状态和当前环境切换状态
  • GET /api/v1/environments — 列出所有环境以确认环境 ID
  • POST /api/v2/features/:id/revisions/new/toggle(请求体:{ "environment": "<env-id>", "enabled": true|false })

后续操作

  • flag-search — 用户提供的是描述,而不是标志 ID 时使用
  • flag-targeting — 在已启用的环境中添加或编辑规则
  • flag-rules — 启用或禁用单条规则,而不切换整个环境
  • flag-publish — 发布草稿,处理需要审批(400)和合并冲突(409)

评论

支持 Markdown