Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
launchdarkly avatar

Launchdarkly Flag Cleanup

  • 3k installs
  • 20 repo stars
  • Updated July 27, 2026
  • launchdarkly/agent-skills

launchdarkly-flag-cleanup safely removes a feature flag from code using MCP readiness checks and a confirmed forward value.

About

The launchdarkly-flag-cleanup skill removes feature flags from code while preserving production behavior after rollouts complete. Prerequisites require the hosted LaunchDarkly MCP server with check-removal-readiness orchestrating flag config, cross-environment status, dependencies, code references, and expiring targets, plus get-flag for per-environment forward values. Workflow explores codebase references including variation, boolVariation, useFlags, constants, tests, and wrappers before querying LaunchDarkly rather than guessing values. Readiness returns safe, caution, or blocked verdicts; blocked states stop until dependents or active targeting resolve. Forward value selection uses fallthrough.variation when all critical environments are ON with matching rules, or offVariation when uniformly OFF; differing ON states or variations across environments are not safe. Users must confirm a cleanup plan listing forward value, file references, planned edits, readiness verdict, and archive intent before edits. Removal keeps the winning branch, deletes dead code and flag-only imports, and avoids unrelated refactors. Verification runs build, lint, tests, and a final flag key search.

  • Requires LaunchDarkly MCP check-removal-readiness before editing code.
  • Forward value comes from get-flag fallthrough or offVariation, never guesses.
  • Blocked readiness stops when environments disagree on ON state or variation.
  • User must confirm cleanup plan before any code modifications begin.
  • Remove flag-only imports and dead branches without unrelated refactors.

Launchdarkly Flag Cleanup by the numbers

  • 2,985 all-time installs (skills.sh)
  • +189 installs in the week ending Jul 28, 2026 (Skillselion tracking)
  • Ranked #11 of 257 Release Management skills by installs in the Skillselion catalog
  • Security screen: MEDIUM risk (skills.sh audit)
  • Data as of Jul 28, 2026 (Skillselion catalog sync)
At a glance

launchdarkly-flag-cleanup capabilities & compatibility

Capabilities
codebase flag reference search across sdk patter · mcp readiness orchestration with safe caution bl · forward value determination from per environment · dead branch and import cleanup with minimal diff · pr template guidance and post removal verificati
Use cases
refactoring · ci cd
From the docs

What launchdarkly-flag-cleanup says it does

Never guess the forward value. Query the actual configuration.
SKILL.md
Do not proceed with code changes until the user explicitly confirms.
SKILL.md
Only remove flag-related code. No unrelated refactors.
SKILL.md
npx skills add https://github.com/launchdarkly/agent-skills --skill launchdarkly-flag-cleanup

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs3k
repo stars20
Security audit3 / 3 scanners passed
Last updatedJuly 27, 2026
Repositorylaunchdarkly/agent-skills

How do I remove a finished LaunchDarkly flag from code without changing production behavior?

Safely remove a completed LaunchDarkly feature flag from code by hardcoding the forward variation after MCP readiness checks.

Who is it for?

Teams completing rollouts who need MCP-guided flag deletion with cross-environment safety checks.

Skip if: Skip for creating new flags or discovery audits; use flag-discovery skill first when unsure which flag.

When should I use this skill?

User wants to remove a flag, delete flag references, or hardcode the winning variation after rollout.

What you get

Code hardcoded to the forward variation with dead branches removed and readiness documented in a PR.

  • stale flag inventory
  • code references removed

By the numbers

  • Published at version 1.0.0-experimental

Files

SKILL.mdMarkdownGitHub ↗

LaunchDarkly Flag Cleanup

You're using a skill that will guide you through safely removing a feature flag from a codebase while preserving production behavior. Your job is to explore the codebase to understand how the flag is used, query LaunchDarkly to determine the correct forward value, remove the flag code cleanly, and verify the result.

If you haven't already identified which flag to clean up, use the flag discovery skill first to audit the landscape and find candidates.

Prerequisites

This skill requires the remotely hosted LaunchDarkly MCP server to be configured in your environment.

Required MCP tools:

  • check-removal-readiness: detailed safety check (orchestrates flag config, cross-env status, dependencies, code references, and expiring targets in parallel)
  • get-flag: fetch flag configuration for a specific environment

Optional MCP tools:

  • archive-flag: archive the flag in LaunchDarkly after code removal
  • delete-flag: permanently delete the flag (irreversible, prefer archive)

Core Principles

1. Safety First: Always preserve current production behavior. 2. LaunchDarkly as Source of Truth: Never guess the forward value. Query the actual configuration. 3. Follow Conventions: Respect existing code style and structure. 4. Minimal Change: Only remove flag-related code. No unrelated refactors.

Workflow

Step 1: Explore the Codebase

Before touching LaunchDarkly or removing code, understand how this flag is used in the codebase.

1. Find all references to the flag key. Search for the flag key string (e.g., new-checkout-flow) across the codebase. Check for:

  • Direct SDK evaluation calls (variation(), boolVariation(), useFlags(), etc.)
  • Constants/enums that reference the key
  • Wrapper/service patterns that abstract the SDK
  • Configuration files, tests, and documentation
  • See SDK Patterns for the full list of patterns by language

2. Understand the branching. For each reference, identify:

  • What code runs when the flag is true (or variation A)?
  • What code runs when the flag is false (or variation B)?
  • Are there side effects, early returns, or nested conditions?

3. Note the scope. How many files, components, or modules does this flag touch? A flag used in one if block is simpler than one threaded through multiple layers.

Step 2: Run the Removal Readiness Check

Use check-removal-readiness to get a detailed safety assessment. This single tool call orchestrates multiple checks in parallel:

  • Flag configuration and targeting state
  • Cross-environment status
  • Dependent flags (prerequisites)
  • Expiring targets
  • Code reference statistics

The tool returns a readiness verdict:

`safe`: No blockers or warnings. Proceed with removal.

`caution`: No hard blockers but warnings exist (e.g., code references in other repos, expiring targets scheduled, flag marked as permanent). Present warnings and let the user decide.

`blocked`: Hard blockers prevent safe removal (e.g., dependent flags, actively receiving requests, targeting is on with active rules). Present blockers: the user must resolve them first.

Step 3: Determine the Forward Value

Use get-flag to fetch the flag configuration in each critical environment. The forward value is the variation that replaces the flag in code.

ScenarioForward Value
All critical envs ON, same fallthrough, no rules/targetsUse fallthrough.variation
All critical envs OFF, same offVariationUse offVariation
Critical envs differ in ON/OFF stateNOT SAFE: stop and inform the user
Critical envs serve different variationsNOT SAFE: stop and inform the user

Step 4: Present the Cleanup Plan

Before modifying any code, present a summary to the user and wait for confirmation:

1. The forward value — which variation will be hardcoded and why (based on the flag's current state). 2. All code references found — file paths and line numbers from Step 1. 3. Planned changes — for each reference, describe what will be removed and what will be kept. 4. Readiness verdict — the result from check-removal-readiness (safe, caution, or blocked) and any warnings. 5. LaunchDarkly action — confirm the flag will be archived after code changes are complete.

Do not proceed with code changes until the user explicitly confirms.

Step 5: Remove the Flag from Code

Now execute the removal using what you learned in Step 1.

1. Replace flag evaluations with the forward value.

  • Preserve the code branch matching the forward value
  • Remove the dead branch entirely
  • If the flag value was assigned to a variable, replace the variable with the literal value or inline it

2. Clean up dead code.

  • Remove imports, constants, and type definitions that only existed for the flag
  • Remove functions, components, or files that only existed for the dead branch
  • Check for orphaned exports, hooks, helpers, styles, and test files
  • If the repo uses an unused-export tool (Knip, ts-prune, lint rules), run it and remove any flag-related orphans

3. Don't over-clean.

  • Only remove code directly related to the flag
  • Don't refactor, optimize, or "improve" surrounding code
  • Don't change formatting or style of untouched code

Example transformation (boolean flag, forward value = `true`):

// Before
const showNewCheckout = await ldClient.variation('new-checkout-flow', user, false);
if (showNewCheckout) {
  return renderNewCheckout();
} else {
  return renderOldCheckout();
}

// After
return renderNewCheckout();

Step 6: Create Pull Request

Use the template in references/pr-template.md for a structured PR description. The PR should clearly communicate:

  • What flag was removed and why
  • What the forward value is and why it's correct
  • The readiness assessment results (from check-removal-readiness)
  • What code was removed and what behavior is preserved
  • Whether other repos still reference this flag

Step 7: Verify

Before considering the job done:

1. Code compiles and lints. Run the project's build and lint steps. 2. Tests pass. If the flag was used in tests, the tests should be updated to reflect the hardcoded behavior. 3. No remaining references. Search the codebase one more time for the flag key to make sure nothing was missed. 4. PR is complete. The description covers the readiness assessment, forward value rationale, and any cross-repo coordination needed.

Edge Cases

SituationAction
Flag not found in LaunchDarklyInform user, check for typos in the key
Flag already archivedAsk if code cleanup is still needed (flag is gone from LD but code may still reference it)
Multiple SDK patterns in codebaseSearch all patterns: variation(), boolVariation(), variationDetail(), allFlags(), useFlags(), plus any wrappers
Dynamic flag keys (flag-${id})Warn that automated removal may be incomplete: manual review required
Different default values in code vs LDFlag as inconsistency in the PR description
Orphaned exports/files remain after removalRun unused-export checks and remove dead files

What NOT to Do

  • Don't change code unrelated to flag cleanup.
  • Don't refactor or optimize beyond flag removal.
  • Don't remove flags still being actively rolled out.
  • Don't guess the forward value: always query LaunchDarkly.

After Cleanup

Once the PR is merged and deployed: 1. Archive the flag in LaunchDarkly using archive-flag. Archival is reversible; deletion is not. Always archive first. 2. Notify other teams if check-removal-readiness reported code references in other repositories. 3. If the flag had targeting changes pending, they can be ignored: the flag is being removed.

References

  • PR Template: Structured PR description for flag removal
  • SDK Patterns: Flag evaluation patterns by language/framework
  • Flag Discovery: Find cleanup candidates before using this skill
  • Flag Targeting: If you need to change targeting instead of removing

Related skills

Forks & variants (1)

Launchdarkly Flag Cleanup has 1 known copy in the catalog totaling 483 installs. They canonicalize to this original listing.

FAQ

Which MCP tool checks if removal is safe?

Call check-removal-readiness for safe, caution, or blocked verdicts across environments and dependencies.

When is removal not safe?

When critical environments differ in ON/OFF state or serve different variations for the same flag.

Must I confirm before editing code?

Yes. Present forward value, references, planned edits, and readiness verdict, then wait for explicit confirmation.

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.