Find feature flags older than 90 days and plan their removal with a rollout-or-remove decision per flag, citing usage in code.
Pulls a feature-flag inventory and the codebase that consumes them, finds flags older than 90 days, and produces a per-flag plan: keep (still rolling out), promote-on (remove the false branch), or sunset (remove the true branch).
flag_provider: launchdarkly, unleash, statsig, flipt, or custom.flag_inventory: when custom, a CSV with key, created_at, current_state (provider integrations fetch the inventory directly).repo_dir: source root containing flag references.age_threshold_days: defaults to 90.curl -H "Authorization: $LD_API_KEY" https://app.launchdarkly.com/api/v2/flags/<env>. Otherwise read flag_inventory.created_at < now - age_threshold_days.repo_dir: rg -nN '"<flag_key>"|\.<flag_key>\b' --type-add 'src:*.{ts,tsx,js,jsx,py,go}' --type src.cold; >95% one-side -> stable-on or stable-off.cold and zero call sites -> delete-from-provider (already orphaned).cold with call sites -> verify-then-delete (might be in dead code).stable-on -> promote-on (delete false branch in code; flag stays available for emergency).stable-off -> sunset (delete true branch and the flag).decide-direction; surface to product owner.promote-on / sunset, generate a code patch: an AST transform replacing if (flag('x')) { A } else { B } with A or B.flag-cleanup-plan.md with the per-flag plan, call-site listings, and patch summaries. Plus a patches/<flag>.diff per actionable flag. Stdout prints counts per decision class.
For each promote-on patch, confirm the if-branch and else-branch are functionally distinct (otherwise the flag was already a no-op). Run the patched test suite; an unchanged result is the expected outcome since we're removing a code path that was never exercised. Audit the provider after deletion to confirm the flag's gone (curl ... 404).
flag(name + suffix)): cannot be matched statically; surface as dynamic-evaluation, manual review.keep-as-killswitch and exclude from cleanup.Other publishers' experience with this skill. Self-rating is blocked.
Ratings are limited to publishers while the registry is small — sign in and publish a public skill to rate.
No ratings yet. Be the first.
Same domains or capabilities as amitte/feature-flag-cleanup-planner.
Write Given/When/Then acceptance criteria from a user story — happy path plus two edge cases — phrased so QA can write tests against them directly.
Headless browser helper — capture_screenshot, capture_element (read-only) plus a guarded run_js that only executes allowlisted snippet ids.
Read-only RubyGems helper — search_gems, get_gem_info, list_versions. Surface for Ruby dependency discovery from an agent.
Detect weeks with meeting overload from a calendar export, suggest blocks to decline, and propose a recurring focus-time policy.
Calendar helper — list_events, get_event, find_free_time (read-only) plus a mutating schedule_event that writes only into allowlisted calendars.
Read-only crates.io helper — search_crates, get_crate_info, list_versions. Surface for Rust dependency discovery from an agent.