About flipt
A skill for querying Flipt feature flags, intended for teams that need to inspect rollout settings. Reads use the API, while writes are refused so permanent changes go through the reviewed GitOps repository process.
Key features
- 01List all feature flags
- 02Retrieve details for one flag
- 03Check sync state using revision
- 04Refuse API writes and direct users to GitOps
Use cases
- 01Inspect flags and their current settings
- 02Verify a GitOps change has synced
- 03Prepare flag changes through the repository
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ civitai/ civitai --skill fliptAfter installing, type/fliptin Claude Code to confirm it loaded.
Bundled files.env.exampleflipt.mjs
Details
From the project READMEFlipt Feature Flag Management
Use this skill to manage Flipt feature flags for controlled feature rollouts.
Running Commands
Use the included script:
node .claude/skills/flipt/flipt.mjs <command> [options]
Commands
| Command | Description |
|---|---|
list | List all flags |
get <key> | Get details for a specific flag |
create / enable / disable / delete | Refuse with exit 2 and print the GitOps steps — see below |
add-variant / remove-variant / set-rollout | Same |
Reads work over the API; writes are deliberately refused. This Flipt is v2, GitOps-backed by a private state repo, so a merged change becomes visible within about a poll interval.
Never write through the API. Flag state is reviewed material — change flags by opening a PR against the state repo, never by calling the API. This skill refuses writes for that reason.
Treat FLIPT_API_TOKEN as a live secret: read it from env, never inline it, and
don't copy it into anything new.
Flags live at /api/v2/environments/{env}/namespaces/{ns}/resources/flipt.core.Flag.
The environment (civitai-app) and namespace (default) are discovered at
runtime — the environment marked default: true, then its default namespace —
so a second environment can't silently redirect reads. Override with
FLIPT_ENVIRONMENT / FLIPT_NAMESPACE if ever needed.
Responses carry a revision equal to the flipt-state commit SHA, which is the
quickest way to confirm a flag change has actually synced:
node .claude/skills/flipt/flipt.mjs list --json | head -3 # revision == your commit
Options
| Flag | Description |
|---|---|
--description <text>, -d | Description for new flag |
--enabled | Create flag as enabled (default: disabled) |
--variant | Create as variant flag (default: boolean) |
--variants <keys> | Comma-separated variant keys (first is default) |
--default <key> | Set default variant key |
--rollout <pct> | Rollout percentage (default: 100) |
--segment <key> | Segment key for rules (default: all-users) |
--json | Output results as JSON |
--quiet, -q | Minimal output |
--force, -f | Skip confirmation prompts |
Examples
# 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 Integration
Flipt uses GitOps - flags are stored in the civitai/flipt-state repository. Changes made via the API are temporary and will be overwritten on the next Git sync (every 30 seconds).
For permanent changes, edit the repository directly:
# 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
Flag Format in 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
Safety Notes
- Do not write through the API: it pushes an unreviewed commit to
flipt-statemain - Test before enabling: Use segments for gradual rollout
- Coordinate with team: Others may be editing the same flags
Environment Setup
Copy .env.example to .env and configure:
cp .claude/skills/flipt/.env.example .claude/skills/flipt/.env
The skill needs FLIPT_URL and FLIPT_API_TOKEN to connect to Flipt.