← Files LaunchDarklyARCHIVED FILE
skills/launchdarkly-flag-discovery/references/removal-readiness-checklist.md
4.15 KB · Oct 5, 2026 · 18:24 UTC
# Removal Readiness Checklist
A systematic safety check to determine whether a feature flag can be safely removed. Run through this checklist before recommending flag removal to a user.
## The Checklist
### 1. Cross-Environment Status
**Check:** Use `get-flag-status-across-envs` to verify the flag's state in all environments.
**Pass criteria:**
- Flag is `inactive` or `launched` in ALL critical environments (production, staging, etc.)
- No environment shows `new` or `active` state
**Fail criteria:**
- Flag is `active` in any critical environment
- Flag is `new` anywhere (still being rolled out)
- Critical environments show different states (e.g., production ON, staging OFF)
### 2. Configuration Consistency
**Check:** Use `get-flag` for each critical environment and compare configurations.
**Pass criteria:**
- All critical environments serve the same variation (same `fallthrough.variation` or same `offVariation`)
- No targeting rules or individual targets exist in critical environments
**Caution criteria:**
- Environments serve the same variation but through different mechanisms (one via fallthrough, another via rules)
- Simple rules exist but all resolve to the same variation
**Fail criteria:**
- Critical environments serve different variations
- Complex targeting rules exist that serve multiple variations
- Individual targets override the default behavior
### 3. Dependency Check
**Check:** Look for `prerequisites` in the flag configuration. Also check if this flag appears as a prerequisite in other flags.
**Pass criteria:**
- No other flags list this flag as a prerequisite
- This flag has no prerequisites of its own (simpler removal)
**Fail criteria (hard blocker):**
- Other flags depend on this flag as a prerequisite: removing it would break their targeting logic
### 4. Code References
**Check:** If available, use `check-removal-readiness` which includes code reference statistics. Otherwise, use `get-code-references` to find repositories that reference this flag.
**Pass criteria:**
- No code references found, or references only exist in the current repository (about to be cleaned up)
**Caution criteria:**
- Code references exist in multiple repositories: flag removal in code needs to be coordinated
**Note:** Code reference scanning has limitations. It tracks static string matches and may miss dynamic flag key construction (`flag-${name}`) or have false positives from comments/documentation.
### 5. Expiring Targets
**Check:** Look for scheduled expiring targets on the flag.
**Pass criteria:**
- No expiring targets scheduled
**Caution criteria:**
- Expiring targets exist: someone actively set a future removal date. Coordinate with them.
### 6. Flag Type
**Check:** The `temporary` field on the flag.
**Pass criteria:**
- Flag is marked as `temporary`: it was intended to be removed
**Caution criteria:**
- Flag is marked as `permanent`: it may be intentionally long-lived. Confirm with the user before recommending removal.
## Readiness Levels
After running the checklist, categorize the result:
### Safe
All checks pass. No blockers or warnings.
- Recommend proceeding with code removal using the [flag cleanup skill](../launchdarkly-flag-cleanup/SKILL.md)
- Suggest archival in LaunchDarkly after code changes are deployed
### Caution
No hard blockers, but warnings exist.
- Present each warning with context
- Recommend **archive** (reversible) over **delete** (permanent)
- Suggest addressing warnings first (e.g., remove code references, then re-check)
### Blocked
Hard blockers prevent safe removal.
- Present each blocker with specifics
- For prerequisite dependencies: user must update dependent flags first
- For active targeting: user should toggle off and wait for a cool-down period
- For active status: flag is still being used: don't remove
## Presenting Results
Structure the assessment as:
1. **Verdict**: Lead with safe / caution / blocked
2. **Blockers** (if any): Each with type and actionable detail
3. **Warnings** (if any): Each with type and context
4. **Forward value**: What variation should replace the flag in code (only if safe or caution)
5. **Next steps**: What to do now (proceed with cleanup, address warnings, resolve blockers)
SHA-256: b02725113a32e314846c34b968a28681a7c0b8436c2d4a6ea20c6a57c1662c6d