mcpField
F
flipt

flipt

github.com/civitai云与 DevOps7.3k73 次安装今天更新
代码仓库

关于 flipt

用于通过 Flipt 查询功能标记的技能,面向需要检查发布开关状态的团队。读取通过 API 完成;写入会被拒绝,永久变更须通过 GitOps 仓库的审查流程提交。

主要功能

  1. 01列出所有功能标记
  2. 02查询单个标记详情
  3. 03通过 revision 核对同步状态
  4. 04拒绝 API 写入并提示 GitOps 流程

适用场景

  1. 01检查标记及其当前配置
  2. 02确认 GitOps 提交已同步
  3. 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

安全说明

  1. 不要通过 API 写入:这会将未经审核的提交推送到 flipt-state main
  2. 启用前先测试:使用细分逐步发布
  3. 与团队协调:其他人可能也在编辑相同的标志

环境设置

将 .env.example 复制到 .env 并进行配置:

cp .claude/skills/flipt/.env.example .claude/skills/flipt/.env

此技能需要 FLIPT_URL 和 FLIPT_API_TOKEN 才能连接 Flipt。

评论

支持 Markdown