# Feature Flag Rollouts

Decides on feature flags for user-visible changes and runs their rollout or revert.

- Repository: https://github.com/different-ai/openwork (24362 stars)
- Category: DevOps
- License: see repository
- Last updated: 2026-11-01
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add different-ai/openwork --skill add-a-feature -g -a claude-code -y`
Codex: `npx skills add different-ai/openwork --skill add-a-feature -g -a codex -y`
Cursor: `npx skills add different-ai/openwork --skill add-a-feature -g -a cursor -y`
Gemini CLI: `npx skills add different-ai/openwork --skill add-a-feature -g -a gemini-cli -y`

## Description

Decide whether work needs a feature flag (any change to product behavior users can see does), then declare it, roll it out (per organization, for everyone, cloud or self-hosted), revert or kill it. Use for any user-visible behavior change, and when finishing or removing a rollout.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Skill: Add a feature

**Default: flag what users see.** Any change to product behavior that users
can see ships behind a feature, so it can be turned off without a deploy.
Work users won't notice as a behavior change ships directly and is reverted
with a normal revert if needed.

When a flag is warranted, it is a **feature** in the registry, declared
**before any feature code**, off.

Registry: `packages/features/src/registry.ts` (package `@openwork/features`).
That file is the only one you edit to declare a feature. The rules live in
`resolve.ts` and are tested in `resolve.test.ts`
(`pnpm --filter @openwork/features test`).

## The model: one rollout, several dimensions

A feature is rolled out, and reverted, along these dimensions, resolved in
this order by one function (`resolveFeature`) everywhere it is checked:

1. **Deployments**: products it exists on (`cloud`, `self_hosted`). Fixed in code.
2. **Kill switch**: off everywhere at once, outranking everything below. This is the revert; no deploy.
3. **Operator lock**: a self-hosted operator forces it on or off for the whole install (Helm `config.features.<key>`).
4. **Member override**: platform admins turn it on or off for one active organization member from the organization’s Members page in `/admin`. No override inherits the organization setting.
5. **Organization override**: platform admins turn it on or off for one organization in `/admin`.
6. **Everyone**: on or off for everyone on the deployment, changed in `/admin` without a deploy.

Steps 2, 5 and 6 are set per deployment in `/admin` (Features page and each
organization's row) or with the admin MCP tools `den_list_features`,
`den_set_feature_rollout` and `den_set_org_capability`.

The rest: https://github.com/different-ai/openwork/blob/HEAD/.opencode/skills/add-a-feature/SKILL.md
