apollo-migrate
**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.
/apollo-checkContext 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.
Investigate the Apollo repository **$ARGUMENTS** and produce a detailed investigation for migration.
**Output:** This command creates an investigation file at `docs/apollo-removal/issues/$ARGUMENTS.md` that serves as the "issue" for this migration. The `/apollo-migrate` command will read this investigation before executing the fixed migration steps.
Search for all files related to this repository:
Glob: **/$ARGUMENTS* Glob: **/Network$ARGUMENTS* Grep: "$ARGUMENTS" in *.swift files
Look specifically for:
Read the old `Network*Repository.swift` file to understand:
Read the `.graphql` file to get the query string.
Read the `.graphql.swift` file to understand nullability of fields (`.nonNull` vs optional).
Search for all files that import or use this repository:
Grep: protocol name (e.g., "<Name>RepositoryProtocol" or "<Name>Repository")
Grep: class instantiation (e.g., "Network<Name>Repository(")
Grep: factory usage if existsCheck in:
**For each consumer**, note:
Check if the repository's consumers are gated behind Firebase Remote Config flags or feature toggles that may indicate dead code:
Grep: RemoteConfig / remoteConfig / FeatureToggle in each consumer file Grep: the consumer's class name in coordinator/factory files to trace the full call chain
For each consumer, trace the full instantiation chain back to the entry point (Coordinator → Factory → ViewModel → Repository). At any point in that chain, check if a feature flag controls whether the code path is reached.
**For each feature flag found**, document:
> **Why this matters:** If a repository is only used behind a feature flag that has been permanently disabled, the entire repository + consumer chain may be dead code. The user can validate this in Firebase Remote Config before deciding to **delete** instead of **migrate**, saving the full migration effort.
Search if this repository's `.graphql` file defines fragments used by other repositories:
Grep: fragment names from the .graphql file across all other .graphql files
If fragments are shared, note which repos depend on them — the `.graphql` file may need to be kept.
**IMPORTANT:** Also check the reverse: do OTHER `.graphql` files have queries that reference fragments defined in THIS repo's `.graphql` file? If so, deleting this `.graphql` will cause Apollo codegen to fail with "Unknown fragment". In the investigation, note whether the referencing query is dead after migration (can be removed from the other `.graphql` file) or still live (fragment must be kept or inlined).
Look for signs of existing migration:
Create the file `docs/apollo-removal/issues/$ARGUMENTS.md` using the Write tool with this structure:
# Migration Plan: $ARGUMENTS > Generated: <date> > Status: planned ## Summary - **Repository:** <full class name> - **Location:** <path> - **Tier:** <1-5> - **Consumers:** <count> - **Operation type:** query / mutation / mixed - **Recommendation:** migrate / delete / already-done ## Current State ### Files | File | Path | Purpose | |------|------|---------| | .graphql | <path> | Query definition | | .graphql.swift | <path> | Apollo-generated types | | Network impl | <path> | Old Apollo implementation | | Fragment extensions | <path or N/A> | Apollo fragment helpers | ### Queries/Mutations | Operation | Name | Variables | Cache Policy | |-----------|------|-----------|--------------| | query/mutation | <OperationName> | <list or none> | <policy> | ### Response Shape <Describe the response structure based on .graphql.swift analysis, including nullability> ### Shared Fragments | Fragment | Defined in | Used by | |----------|-----------|---------| | <name> | <this repo's .graphql> | <list of other repos> | (or "None — .graphql can be safely deleted") ### Consumers | # | File | Instantiation | Methods Used | Uses Apollo Types? | |---|------|---------------|--------------|-------------------| | 1 | <path> |
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…
Bump the app version or build number across all targets in the current project.
Review code quality applying DRY, SOLID, naming, and formatting standards