关于 flag-default-value
flag-default-value 是用于修改 GrowthBook 功能标记默认值的技能,面向需要调整未命中任何规则时返回值的团队。更改先写入草稿,发布后才生效。
主要功能
- 01读取当前默认值与值类型
- 02校验新值是否匹配类型
- 03通过草稿修订提交更改
- 04可复用现有开放草稿
- 05发布前提示影响范围
适用场景
- 01调整未命中规则用户的回退值
- 02为布尔标记更改默认开关状态
- 03暂存默认值变更以供审核
- 04检查发布对未匹配用户的影响
MCP 相关
此输入未说明与 MCP 的关系。
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ growthbook/ skills --skill flag-default-value安装后在 Claude Code 中输入/flag-default-value确认已加载。
详细介绍
flag-default-value
设置 GrowthBook 功能标志的默认值。当没有规则匹配某个用户时,SDK 会返回默认值——它是标志的基准状态,而不是定向规则。更改会通过草稿修订进行,必须发布后才会生效。
所有 API 调用都通过捆绑的辅助程序进行:${CLAUDE_PLUGIN_ROOT}/scripts/gb-call。需要在环境中设置 GB_API_KEY,或由 /growthbook:gb-setup 将其写入 ~/.config/growthbook/.env。
必需输入
- 标志 ID — kebab-case 键。如果用户提供的是描述,请使用 flag-search 解析。
- 新的默认值 — 必须与标志的
valueType匹配。始终序列化为字符串。
工作流
1. 获取标志
gb-call GET /api/v2/features/<flag-id>
记录 valueType 和当前的 defaultValue。向用户显示当前默认值,以便他们确认更改。
2. 验证新值
发送前先进行预验证——API 在写入时不会检测类型不匹配:
valueType | 有效的 defaultValue |
|---|---|
boolean | "true" 或 "false"(字符串,而非 JSON 布尔值) |
number | 可解析为数字的任意字符串:"0"、"3.14" |
json | 任意有效的 JSON 字符串:"{\"key\":\"value\"}" |
string | 任意非空字符串 |
如果用户提供的值不匹配,请停止并让他们修正。不要静默转换。
3. 通过草稿应用更改
echo '{"defaultValue":"<string>"}' \
| gb-call PUT /api/v2/features/<flag-id>/revisions/new/default-value -
new 这个特殊版本会创建一个新草稿,或以原子方式将更改叠加到现有草稿上。记录返回的 version 编号。
4. 提议发布
询问:“现在发布此默认值更改,还是将其保留为草稿?”
更改默认值会影响所有未匹配任何规则的用户——这可能会产生重大影响。发布前,清楚说明行为变化:
将默认值从
<old>更改为<new>会影响所有未匹配任何规则的用户。在<env>中,目前有<rule-count>条规则——未匹配其中任何规则的用户现在将获得<new>,而不是<old>。
将发布步骤交给 flag-publish。
防护措施
- 草稿版本传递。 如果本次会话中先前的写入技能已在上下文中提供版本编号,请显式使用该编号(例如
.../revisions/42/default-value),而不是new。这样可确保所有更改都在同一草稿中。若从头开始,则使用new——它会自动创建或复用最近更新的未关闭草稿。 defaultValue始终是字符串,与valueType无关。 API 会拒绝非字符串值。布尔值关闭时用"false",数值零用"0",空 JSON 对象用"{}"。- 默认值 ≠ 强制规则。 只有当所有规则都匹配失败时,才会应用默认值。如果用户想向定向用户提供特定值,他们需要的是 flag-targeting,而不是此技能。
- 这可能会产生广泛影响。 在每个已启用的环境中,默认值都会应用于所有未匹配任何规则的用户。若将其从“关闭”状态(例如
"false"→"true")更改为开启状态,在没有规则时,可能会让生产流量接触到该功能。发布前请明确说明这一点。 - 对于布尔型标志,如果没有定向规则,更改默认值等同于全局开关。 请确认用户理解这一点。
- 类型不匹配会在 SDK 求值时暴露,而不是在写入时。 v2 默认值端点接受任意字符串。数字标志若设置
defaultValue: "not-a-number",要等客户端对其求值时才会报错。
使用的端点
GET /api/v2/features/:id— 获取标志的当前defaultValue和valueTypePUT /api/v2/features/:id/revisions/new/default-value(请求体:{ "defaultValue": "<string>" })
交接
flag-search— 如果用户提供的是描述而不是标志 IDflag-targeting— 添加或编辑向定向用户提供特定值的规则flag-cleanup— 如果不再需要此标志且应将其归档flag-publish— 发布草稿,并处理需要审批(400)和合并冲突(409)
评论
支持 Markdown