flipt について
Flipt の機能フラグを調べるためのスキルです。ロールアウト設定を確認するチーム向けで、API から読み取れますが、書き込みは拒否され、恒久的な変更にはレビュー付きの GitOps リポジトリ手順を使います。
主な機能
- 01すべての機能フラグを一覧表示
- 02個別フラグの詳細を取得
- 03revision で同期状態を確認
- 04API 書き込みを拒否し GitOps 手順を案内
活用シーン
- 01フラグと現在の設定を調べる
- 02GitOps の変更が同期したか確認
- 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 で、プライベートの状態リポジトリを使った GitOps で管理されているため、変更をマージすると ポーリング間隔の約 1 回分で反映されます。
API 経由では決して書き込まないでください。 フラグの状態はレビュー対象の成果物です。フラグを変更する場合は、 状態リポジトリに対する PR を作成してください。API を呼び出してはいけません。このスキルが書き込みを拒否するのはそのためです。
フラグは /api/v2/environments/{env}/namespaces/{ns}/resources/flipt.core.Flag にあります。
環境(civitai-app)と名前空間(default)は実行時に検出されます。まず default: true と指定された環境を検出し、次にその環境の
default 名前空間を検出するため、2 つ目の環境によって読み取り先が意図せず変更されることはありません。必要な場合は
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-stateの main にプッシュされます - 有効にする前にテストしてください:段階的なロールアウトにはセグメントを使用します
- チームと調整してください:他のメンバーが同じフラグを編集中の場合があります
環境のセットアップ
.env.example を .env にコピーし、次のように設定してください。
cp .claude/skills/flipt/.env.example .claude/skills/flipt/.env
Flipt に接続するには、このスキルに FLIPT_URL と FLIPT_API_TOKEN が必要です。