agentsclimarketplace

Manage feature flags

Skill harness/harness-skills/skills/manage-feature-flags

Manage Harness Feature Flags (FME / Split.io) via MCP. List flags by workspace, get flag details, create flags, kill or restore flags per environment, archive or unarchive flags, and delete flags. Use when asked to create a feature flag, kill/restore a flag, list flags, check flag status, enable or disable a feature, or manage feature rollouts. Trigger phrases: feature flag, kill switch, restore flag, create flag, feature rollout, archive flag, FME flag.From its SKILL.md

Install
npx -y skills add harness/harness-skills --skill manage-feature-flags

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

What its file declares

Copied from the file, not written here

The file declares its own license as Apache-2.0. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.

SKILL.md

5.7 KB, ~1.2k tokens by cl100k_base, as published. Nobody here has run it

Manage Feature Flags

Create, list, kill/restore, and delete Harness FME (Split.io-backed) Feature Flags via MCP.

Prerequisites

FME flags are workspace-scoped (not project-scoped). You must discover the workspace_id and environment_id before most operations.

Step 0a: List workspaces

Call MCP tool: harness_list
Parameters:
  resource_type: "fme_workspace"

Step 0b: List environments (per workspace)

Call MCP tool: harness_list
Parameters:
  resource_type: "fme_environment"
  workspace_id: "<workspace_id>"

Instructions

Step 1: List Existing Flags

Call MCP tool: harness_list
Parameters:
  resource_type: "fme_feature_flag"
  workspace_id: "<workspace_id>"

Filter by name, tags, or rollout status:

Call MCP tool: harness_list
Parameters:
  resource_type: "fme_feature_flag"
  workspace_id: "<workspace_id>"
  name: "dark_mode"
  tags: "ui"
  rollout_status_id: "<uuid>"   # discover via fme_rollout_status

Step 2: Get Flag Details

Call MCP tool: harness_get
Parameters:
  resource_type: "fme_feature_flag"
  workspace_id: "<workspace_id>"
  feature_flag_name: "<flag_name>"

For per-environment targeting/state, use fme_feature_flag_definition and pass environment_id.

Step 3: Create a Flag

Call MCP tool: harness_create
Parameters:
  resource_type: "fme_feature_flag"
  workspace_id: "<workspace_id>"
  traffic_type_id: "<traffic_type_id>"   # required by FME
  body:
    name: "dark_mode"
    description: "Enable dark mode UI theme"
    tags: ["ui", "rollout"]

Step 4: Kill or Restore a Flag (per environment)

Kill (turn the flag OFF in one environment):

Call MCP tool: harness_execute
Parameters:
  resource_type: "fme_feature_flag"
  action: "kill"
  workspace_id: "<workspace_id>"
  feature_flag_name: "<flag_name>"
  environment_id: "<environment_id>"

Restore (re-enable after a kill):

Call MCP tool: harness_execute
Parameters:
  resource_type: "fme_feature_flag"
  action: "restore"
  workspace_id: "<workspace_id>"
  feature_flag_name: "<flag_name>"
  environment_id: "<environment_id>"

Step 5: Archive / Unarchive a Flag

Call MCP tool: harness_execute
Parameters:
  resource_type: "fme_feature_flag"
  action: "archive"      # or "unarchive"
  workspace_id: "<workspace_id>"
  feature_flag_name: "<flag_name>"

Archiving is subject to OPA policy checks (returns 409 on violation). Unarchive returns 409 if dependent objects exist.

Step 6: Update Flag Metadata

Call MCP tool: harness_update
Parameters:
  resource_type: "fme_feature_flag"
  workspace_id: "<workspace_id>"
  feature_flag_name: "<flag_name>"
  body:
    description: "Updated description"
    tags: ["ui", "ga"]

Step 7: Delete a Flag

Call MCP tool: harness_delete
Parameters:
  resource_type: "fme_feature_flag"
  workspace_id: "<workspace_id>"
  feature_flag_name: "<flag_name>"

FME Resource Types Reference

Resource TypeOperationsDescription
fme_workspacelistList FME workspaces
fme_environmentlistList FME environments (per workspace)
fme_feature_flaglist, get, create, update, delete, execute(kill/restore/archive/unarchive)Flag metadata at workspace scope
fme_feature_flag_definitionlist, getPer-environment rollout targeting and state
fme_rollout_statuslistDiscover valid rollout_status_id values
fme_rule_based_segmentlist, getRule-based segments
fme_rule_based_segment_definitionlist, get, execute(enable/disable/change_request)Segment definition per environment

Examples

  • "Create a feature flag for dark mode" — Create fme_feature_flag with body: { name: "dark_mode", ... }
  • "Kill the experimental-search flag in production" — Execute kill with production environment_id
  • "Restore the new-checkout flag in staging" — Execute restore with staging environment_id
  • "List all feature flags in my workspace" — List fme_feature_flag for workspace
  • "Archive the stale beta_banner flag" — Execute archive

Performance Notes

  • Always discover workspace_id and environment_id before kill/restore — wrong environment can affect production.
  • List existing flags before creating to avoid duplicates.
  • FME does not expose a single "toggle" action — use kill (off) and restore (on) per environment.

Troubleshooting

Flag won't kill/restore

  • environment_id is required — kills are per-environment
  • Confirm feature_flag_name is exact (case-sensitive)
  • Verify the flag lives in the specified workspace_id

Flag Not Found

  • FME flags are workspace-scoped — confirm the correct workspace_id
  • Use harness_list with resource_type: "fme_feature_flag" and no filters to see all flags in the workspace

Archive fails with 409

  • An OPA policy may block archival — review governance policies
  • For unarchive, remove dependent segments/targeting before retrying

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.