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…
Bump the app version or build number across all targets in the current project.
> /plugin marketplace add carloshpdoc/ios-workflow-claudeHow it fires
How this command gets triggered: by you, by Claude, or both.
/bumpContext preview
What this command does when you run it.
Bump the app version or build number across all targets in the current project.
Bump the app version or build number across all targets in the current project.
**$ARGUMENTS**: the bump type. If empty, defaults to `build`.
| Argument | Description | Example | |----------|-------------|---------| | `build` | Increment build number only | `1` -> `2` | | `patch` | Bump patch version, increment build | `1.0.0` -> `1.0.1` | | `minor` | Bump minor version, increment build | `1.0.0` -> `1.1.0` | | `major` | Bump major version, increment build | `1.0.0` -> `2.0.0` |
**Examples:**
Read `$ARGUMENTS` and determine the bump type:
Check what version source exists in the current working directory:
**Option A — XcodeGen (`project.yml`):** Look for `project.yml` in the project root. If found, this is the source of truth. Extract the current `MARKETING_VERSION` and `CURRENT_PROJECT_VERSION` values from it.
**Option B — Native Xcode (`.pbxproj`):** If no `project.yml` exists, find the `.pbxproj` file (typically at `*.xcodeproj/project.pbxproj`). Extract the current `MARKETING_VERSION` and `CURRENT_PROJECT_VERSION` values from it.
If neither exists, tell the user no version source was found and stop.
Extract the current values:
If multiple different values exist across targets (e.g., some targets at build 3, others at build 1), warn the user and show the discrepancies. Use the **highest** value as the baseline for bumping, and the bump will unify all targets to the same new value.
Based on the bump type, calculate the new version and build number:
| Bump type | New MARKETING_VERSION | New CURRENT_PROJECT_VERSION | |-----------|----------------------|---------------------------| | `build` | unchanged | current + 1 | | `patch` | X.Y.Z+1 | current + 1 | | `minor` | X.Y+1.0 | current + 1 | | `major` | X+1.0.0 | current + 1 |
**Why always increment instead of reset:** App Store Connect only requires that `CURRENT_PROJECT_VERSION` is monotonically increasing within the same `MARKETING_VERSION`. Always incrementing is safe across pre-release iteration (multiple TestFlights at the same marketing version) and post-release iteration alike, with no edge case where you'd resubmit a build number that was already used.
**For `project.yml` (XcodeGen):** Use `sed` to replace ALL occurrences:
If targets had different values (detected in step 3), replace each distinct old value so all targets converge to the new unified value.
**For `.pbxproj` (native Xcode):** Use `sed` to replace ALL occurrences:
If targets had different build numbers, replace each distinct old value so all converge to the new value.
Display a clear summary:
Version bump: <type> MARKETING_VERSION: <old> -> <new> (or "unchanged" for build bump) CURRENT_PROJECT_VERSION: <old> -> <new> Updated in: <project.yml | *.pbxproj> Targets affected: <count>
Then show `git diff` of the changed file so the user can verify.
Ask the user if they want to commit the change. If yes:
For version bumps (patch/minor/major):
Bump version to <new_version> (build <new_build>)
For build bumps:
Bump build number to <new_build>
If the version source is `project.yml`, run `xcodegen generate --no-env` to regenerate the `.pbxproj` so Xcode picks up the new version values. This is required because Xcode reads build settings from `.pbxproj`, not from `project.yml` directly.
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…
Review code quality applying DRY, SOLID, naming, and formatting standards