mcpField
F
flag-experiment

flag-experiment

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

关于 flag-experiment

flag-experiment 是将 GrowthBook 功能标志规则关联到独立管理实验的 Skill。它指导变体映射和规则创建,并将定向编辑与实验变更交由相应 Skill 处理。

主要功能

  1. 01创建 experiment-ref 标志规则
  2. 02获取标志与实验详情
  3. 03将实验变体映射为标志值
  4. 04通过 flag-targeting 编辑定向
  5. 05将草稿规则交接以供发布

适用场景

  1. 01将已有实验关联到功能标志
  2. 02为实验变体设置标志值
  3. 03调整实验关联规则的定向
  4. 04准备待发布的草稿规则

安装

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

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

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

详细介绍

flag-experiment

为 GrowthBook 功能开关添加 experiment-ref 规则。此规则会将开关规则关联到单独管理的 GrowthBook 实验对象——实验是变体、指标和分析的事实来源。

所有 API 调用都通过随附的辅助脚本完成:${CLAUDE_PLUGIN_ROOT}/scripts/gb-call。需要在环境变量中设置 GB_API_KEY,或通过 /growthbook:gb-setup 将其写入 ~/.config/growthbook/.env。

工作流

路径 A — 添加 experiment-ref 规则

当用户已有 GrowthBook 实验,或想通过功能开关启动实验时,使用此路径。

1. 获取功能开关并确认实验存在:

gb-call GET /api/v2/features/<flag-id>

记录 valueType——后续需要用它正确映射变体值。

gb-call GET /api/v1/experiments/<experiment-id>

记录实验的 variations 数组。每个变体都有一个 id(例如 var_abc123)和一个 name。配置规则时需要这些信息。

如果用户还没有实验,请转到 experiment-launch——它会端到端处理实验创建和功能开关配置。重要的是,如果功能开关已存在,experiment-launch 会检测到它(创建时遇到 409,然后走复用路径),并将实验关联到现有功能开关,而不是创建新的功能开关。告诉用户:“experiment-launch 会找到你现有的功能开关——只需提供相同的开关键值。”

2. 映射变体值:

确认每个实验变体应提供的功能开关值。功能开关的 valueType 决定值的格式:

  • boolean:通常为处理组使用 "true",对照组使用 "false"
  • string / number / json:询问用户每个变体对应的值

3. 构建载荷:

{
  "rule": {
    "type": "experiment-ref",
    "experimentId": "<exp-id>",
    "variations": [
      { "variationId": "<var_control_id>", "value": "false" },
      { "variationId": "<var_treatment_id>", "value": "true" }
    ],
    "description": "<optional>",
    "enabled": true,
    "allEnvironments": false,
    "environments": ["<env-id>"]
  }
}

variations 数组中的变体顺序必须与实验中的变体顺序一致。如果用户省略所有 variationId 字段,服务端会自动从实验中填入这些字段;不过显式提供会更安全,也能避免出现无提示的不匹配。

4. 发布规则:

echo '<payload>' | gb-call POST /api/v2/features/<flag-id>/revisions/new/rules -

记录返回的 version。交接给 flag-publish。

路径 B — 编辑现有 experiment-ref 规则的定向条件

服务端允许对 experiment-ref 规则修改 enabled、condition、savedGroups、prerequisites、作用范围(allEnvironments/environments)和 description。对此请使用 flag-targeting——它包含完整的条件决策树,以及针对敏感字段的警告并确认防护机制。

不要直接修改 experiment-ref 规则上的 experimentId 或 variations。 实验才是事实来源。仅更改功能开关规则中的这些字段,会导致功能开关与实验之间出现不易察觉的偏差。如果用户需要更改实验,请转到 experiment-launch 或使用 GrowthBook UI。

防护措施

  • 草稿版本沿用。 如果本会话中之前的写入技能已提供版本号,请明确使用该版本号,而不要使用 new。如果是全新开始,则使用 new。
  • variations 的顺序必须与实验中的变体顺序一致。 如果顺序错误,变体分配就会错位——对照组用户会看到实验组的值,反之亦然。构建载荷前,务必先读取实验以确认变体顺序。
  • 可以自动填充 variationId,但有风险。 如果省略所有 variationId 字段,服务端会根据实验填入这些值。只有当实验的变体数量与用户指定的值数量完全一致时,才使用此方式,否则服务端可能会悄无声息地错配。
  • 编辑现有实验引用规则的 experimentId 或 variations 时,必须先警告并征求确认。 API 允许修改这些字段,但这会导致标志与实验不一致。应用补丁前,务必说明风险并取得明确确认。
  • 服务端会拒绝对实验引用规则应用以下补丁: value、coverage、controlValue。这些是实验的属性,不属于标志规则。如果用户尝试设置这些字段,请立即停止。
  • 实验必须位于同一数据源中。 如果实验使用的数据源与组织的默认数据源不匹配,指标查询可能会失败。如果用户要在内联规则中指定指标,请确认数据源一致。
  • 每个标志针对每个实验使用一条实验引用规则是标准做法。多条规则指向同一个实验会造成分桶重叠并破坏分析结果。

使用的端点

  • GET /api/v2/features/:id — 获取标志状态、valueType 和当前规则
  • GET /api/v1/experiments/:id — 获取实验及其变体
  • POST /api/v2/features/:id/revisions/new/rules — 添加实验引用规则

交接

  • flag-search — 仅有名称或描述时,用于查找标志 ID
  • experiment-launch — 创建新实验,并将其端到端关联到标志
  • flag-targeting — 编辑现有实验引用规则的定位条件、范围或已保存的分组
  • flag-rules — 重新排序或删除实验规则
  • experiment-stop — 停止实验;停止后,使用 flag-rules 清理实验引用规则
  • flag-publish — 发布草稿

评论

支持 Markdown