apollo-check
**Project context:** Values in angle brackets below (e.g. `<scheme>`, `<JIRA_KEY>`, `<flag-key-enum>`) are resolved at runtime — detect them from the project…
**Project context:** Values in angle brackets below (e.g. `<scheme>`, `<JIRA_KEY>`, `<flag-key-enum>`) are resolved at runtime — detect them from the project (`xcodebuild -list -json` for the scheme, `git`/`gh` for repo & owner, the branch name for the Jira key, a codebase
> /plugin marketplace add carloshpdoc/ios-workflow-claudeHow it fires
How this command gets triggered: by you, by Claude, or both.
/feature-flag-removeContext preview
What this command does when you run it.
**Project context:** Values in angle brackets below (e.g. `<scheme>`, `<JIRA_KEY>`, `<flag-key-enum>`) are resolved at runtime — detect them from the project (`xcodebuild -list -json` for the scheme, `git`/`gh` for repo & owner, the branch name for the Jira key, a codebase
> **Project context:** Values in angle brackets below (e.g. `<scheme>`, `<JIRA_KEY>`, `<flag-key-enum>`) are resolved at runtime — detect them from the project (`xcodebuild -list -json` for the scheme, `git`/`gh` for repo & owner, the branch name for the Jira key, a codebase search for flag/font files), or ask if they cannot be inferred. This plugin ships no per-project config.
Remove the feature flag **$ARGUMENTS** following the investigation plan.
**Prerequisite:** Must have an investigation file at `docs/feature-flags/issues/$ARGUMENTS.md`. Run `/feature-flag-check $ARGUMENTS` first if it doesn't exist.
Create a Jira task in the current sprint using `mcp__claude_ai_Atlassian__createJiraIssue`:
Description template:
## Objective Remove the `$ARGUMENTS` feature flag as part of the Firebase Feature Flags Maintenance initiative. ## Investigation <Summary from docs/feature-flags/issues/$ARGUMENTS.md> ## Complexity <Low/Medium/High based on investigation> ## Related - Epic: <JIRA_KEY>-EPIC (Firebase Flags Clean Up) - Notion: <notion-flags-tracker-url>
Save the Jira ticket number (e.g., <JIRA_KEY>-XXXX) for later use in commit messages and PR title.
Create a feature branch for this removal:
git checkout dev git pull origin dev git checkout -b feature/remove-flag-$ARGUMENTS
**IMPORTANT:** Before modifying RemoteConfig files, check for open PRs that touch the same files:
gh pr list --state open --json number,title,files --jq '.[] | select(.files[]?.path | test("<flag-key-enum>|<flag-defaults-file>")) | "PR #\(.number): \(.title)"'**If PRs are found:** 1. ⚠️ **STOP and warn the user** with the list of conflicting PRs 2. Recommend syncing with those developers before proceeding 3. Options:
**Why this matters:** <flag-key-file> and <flag-defaults-file>.swift are shared files. Multiple PRs modifying them simultaneously will cause merge conflicts or overwrites.
Read `docs/feature-flags/issues/$ARGUMENTS.md` and understand:
**STOP if no investigation exists.** Run `/feature-flag-check` first.
Edit `<scheme>/Helpers/RemoteConfig/<flag-key-file>`:
Edit `<scheme>/Helpers/RemoteConfig/<flag-defaults-file>.swift`:
For each file marked for deletion in the investigation:
If the flag controls a V1/V2 flow with separate ViewControllers and components, follow this safety protocol:
**V1 Entry Points (removal candidates):**
**V2 Entry Points (NEVER remove):**
For each V1 module candidate for removal:
# Check if it's used by V2 code grep -r "ModuleName" --include="*.swift" . | grep -v "V1ModulePath"
| Result | Action | |--------|--------| | References ONLY in V1 code | CAN remove | | References in V2 code too | DO NOT remove - it's shared |
1. **FIRST:** Remove references in coordinators/handlers
2. **SECOND:** Intermediate build
xcodebuild build -workspace <scheme>.xcworkspace -scheme <scheme>
**STOP if it doesn't compile.** Fix before deleting files.
3. **THIRD:** Delete Universal Link Handler V1
rm -rf <scheme>/Coordinator/UniversalLink/Handlers/<V1Handler>/
4. **FOURTH:** Delete V1-only modules
rm -rf <scheme>/Modules/<V1Module>/
5. **FIFTH:** Final build + tests
After removal, verify that V2 continues working:
These modules are frequently shared between V1 and V2:
**NEVER delete shared modules without explicit verification.**
**IMPORTANT:** Before deleting any file, class, or component, verify it's not used elsewhere:
# For each file/class/component to be removed, search for references grep -r "ClassName" --include="*.swift" . grep -r "import ModuleName" --include="*.swift" .
**If references are found outside the flag context:** 1. List all usages found 2. **PROMPT the user:** "The following code is used in other contexts. Confirm removal?"
3. If user declines, skip that specific removal and note it in the report
**Examples of what to check:**
Reusable Claude Code slash-commands, skills, and workflows extracted from real iOS / backend projects. Packaged as three installable plugins - register the marketplace and /plugin install what you need.
Repo: carloshpdoc/ios-workflow-claude
**Project context:** Values in angle brackets below (e.g. `<scheme>`, `<JIRA_KEY>`, `<flag-key-enum>`) are resolved at runtime — detect them from the project…
**Project context:** Values in angle brackets below (e.g. `<scheme>`, `<JIRA_KEY>`, `<flag-key-enum>`) are resolved at runtime — detect them from the project…
**Project context:** Values in angle brackets below (e.g. `<scheme>`, `<JIRA_KEY>`, `<flag-key-enum>`) are resolved at runtime — detect them from the project…
**Project context:** Values in angle brackets below (e.g. `<scheme>`, `<JIRA_KEY>`, `<flag-key-enum>`) are resolved at runtime — detect them from the project…
**Project context:** Values in angle brackets below (e.g. `<scheme>`, `<JIRA_KEY>`, `<flag-key-enum>`) are resolved at runtime — detect them from the project…
Bump the app version or build number across all targets in the current project.