关于 flipt
用于通过 Flipt 查询功能标记的技能,面向需要检查发布开关状态的团队。读取通过 API 完成;写入会被拒绝,永久变更须通过 GitOps 仓库的审查流程提交。
主要功能
- 01列出所有功能标记
- 02查询单个标记详情
- 03通过 revision 核对同步状态
- 04拒绝 API 写入并提示 GitOps 流程
适用场景
- 01检查标记及其当前配置
- 02确认 GitOps 提交已同步
- 03按仓库流程准备标记变更
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ civitai/ civitai --skill flipt安装后在 Claude Code 中输入/flipt确认已加载。
附带文件.env.exampleflipt.mjs
详细介绍
Flipt 功能标志管理
使用此技能管理 Flipt 功能标志,实现受控的功能发布。
运行命令
使用随附的脚本:
node .claude/skills/flipt/flipt.mjs <command> [options]
命令
| 命令 | 描述 |
|---|---|
list | 列出所有标志 |
get <key> | 获取指定标志的详情 |
create / enable / disable / delete | 拒绝执行并以退出码 2 退出,同时打印 GitOps 操作步骤——见下文 |
add-variant / remove-variant / set-rollout | 同上 |
读取可通过 API 完成;写入会被有意拒绝。 此 Flipt 为 v2,由私有状态仓库支持,因此合并的更改会在大约一个轮询间隔后生效。
切勿通过 API 写入。 标志状态属于需审核的内容——应通过向状态仓库 提交 PR 来更改标志,切勿调用 API。此技能会因此拒绝写入操作。
将 FLIPT_API_TOKEN 视为有效密钥:从环境变量中读取,切勿内联,也不要将其复制到任何新内容中。
标志位于 /api/v2/environments/{env}/namespaces/{ns}/resources/flipt.core.Flag。
环境(civitai-app)和命名空间(default)会在运行时发现——先选择标记为
default: true 的环境,再选择其 default 命名空间——以避免第二个环境在不知情的情况下重定向读取操作。如有需要,可通过
FLIPT_ENVIRONMENT / FLIPT_NAMESPACE 覆盖。
响应中包含与 flipt-state 提交 SHA 相同的 revision,这是确认标志更改已实际同步的最快方式:
node .claude/skills/flipt/flipt.mjs list --json | head -3 # revision == your commit
选项
| 标志 | 描述 |
|---|---|
--description <text>、-d | 新标志的描述 |
--enabled | 创建时启用标志(默认为禁用) |
--variant | 创建变体标志(默认为布尔型) |
--variants <keys> | 以逗号分隔的变体键(第一个为默认值) |
--default <key> | 设置默认变体键 |
--rollout <pct> | 发布百分比(默认为 100) |
--segment <key> | 规则使用的细分键(默认为 all-users) |
--json | 以 JSON 格式输出结果 |
--quiet、-q | 最简输出 |
--force、-f | 跳过确认提示 |
示例
# List all flags
node .claude/skills/flipt/flipt.mjs list
# Get a specific flag
node .claude/skills/flipt/flipt.mjs get gift-card-vendor-waifu-way
# Creating / toggling a flag goes through GitOps — see below.
# These commands exit 2 and print the steps:
node .claude/skills/flipt/flipt.mjs disable my-feature
# JSON output for scripting
node .claude/skills/flipt/flipt.mjs list --json
GitOps 集成
Flipt 使用 GitOps——标志存储在 civitai/flipt-state 仓库中。通过 API 所做的更改是临时的,会在下一次 Git 同步时被覆盖(每 30 秒同步一次)。
如需永久更改,请直接编辑仓库:
# Clone the state repo
gh repo clone civitai/flipt-state /tmp/flipt-state
# Edit civitai-app/default/features.yaml
# Add your flag under the `flags:` section
# Commit and push
cd /tmp/flipt-state
git add -A && git commit -m "Add new feature flag" && git push
YAML 中的标志格式
flags:
- key: my-feature-flag
name: my-feature-flag
type: BOOLEAN_FLAG_TYPE
description: Description of what this flag controls
enabled: false
# Optional: rollout rules
rollouts:
- threshold:
percentage: 50
value: true
- segment:
keys:
- moderators
operator: OR_SEGMENT_OPERATOR
value: true
安全说明
- 不要通过 API 写入:这会将未经审核的提交推送到
flipt-statemain - 启用前先测试:使用细分逐步发布
- 与团队协调:其他人可能也在编辑相同的标志
环境设置
将 .env.example 复制到 .env 并进行配置:
cp .claude/skills/flipt/.env.example .claude/skills/flipt/.env
此技能需要 FLIPT_URL 和 FLIPT_API_TOKEN 才能连接 Flipt。