关于 flag-toggle
用于切换 GrowthBook 功能标志在单个环境中启用状态的 Claude skill。它先检查状态并要求确认,再通过草稿和审核流程提交变更。
主要功能
- 01检查标志及环境状态
- 02切换单个环境的启用状态
- 03变更前确认操作
- 04创建或复用草稿版本
- 05交接发布与审批
适用场景
- 01停用某环境中的功能标志
- 02确认环境后启用标志
- 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— 列出所有环境以确认环境 IDPOST /api/v2/features/:id/revisions/new/toggle(请求体:{ "environment": "<env-id>", "enabled": true|false })
后续操作
flag-search— 用户提供的是描述,而不是标志 ID 时使用flag-targeting— 在已启用的环境中添加或编辑规则flag-rules— 启用或禁用单条规则,而不切换整个环境flag-publish— 发布草稿,处理需要审批(400)和合并冲突(409)