mobile-release

Perform a regular mobile release from the dev branch. Gathers commits since last release, updates changelog, bumps version, updates iOS Info.plist, and creates release PR to mobile-main.

37,910 stars

Best use case

mobile-release is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Perform a regular mobile release from the dev branch. Gathers commits since last release, updates changelog, bumps version, updates iOS Info.plist, and creates release PR to mobile-main.

Teams using mobile-release should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/mobile-release/SKILL.md --create-dirs "https://raw.githubusercontent.com/RSSNext/Folo/main/.agents/skills/mobile-release/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/mobile-release/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How mobile-release Compares

Feature / Agentmobile-releaseStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Perform a regular mobile release from the dev branch. Gathers commits since last release, updates changelog, bumps version, updates iOS Info.plist, and creates release PR to mobile-main.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

Related Guides

SKILL.md Source

# Mobile Regular Release

Perform a regular mobile release. This skill handles the full release workflow from the `dev` branch.

## Pre-flight checks

1. Confirm the current branch is `dev`. If not, abort with a warning.
2. Run `git pull --rebase` in the repo root to ensure the local branch is up to date.
3. Read `apps/mobile/package.json` to get the current `version`.

## Step 1: Gather changes since last release

1. Find the last release tag (both old `mobile@` and new `mobile/v` prefixes exist):
   ```bash
   git tag --sort=-creatordate | grep -E '^mobile[@/]' | head -1
   ```
2. If no tag found, find the last release commit by matching only the subject line:
   ```bash
   git log --format="%H %s" | grep "^[a-f0-9]* release(mobile): release v" | head -1 | awk '{print $1}'
   ```
3. Get all commits since the last release on the current branch:
   ```bash
   git log <last-tag-or-commit>..HEAD --oneline --no-merges
   ```
4. Categorize commits into:
   - **Shiny new things** (feat: commits, new features)
   - **Improvements** (refactor:, perf:, chore: improvements, dependency updates)
   - **No longer broken** (fix: commits, bug fixes)
   - **Thanks** (identify external contributor GitHub usernames from commits)

## Step 2: Update changelog

1. Read `apps/mobile/changelog/next.md`.
2. Present the categorized changes to the user and draft the changelog content.
3. Wait for user confirmation or edits before writing.
4. Write the final content to `apps/mobile/changelog/next.md`, following the template format:

   ```markdown
   # What's New in vNEXT_VERSION

   ## Shiny new things

   - description of new feature

   ## Improvements

   - description of improvement

   ## No longer broken

   - description of fix

   ## Thanks

   Special thanks to volunteer contributors @username for their valuable contributions
   ```

5. Keep `NEXT_VERSION` as the placeholder - it will be replaced by `apply-changelog.ts` during bump.

## Step 3: Commit changelog updates before bump

`nbump` requires a clean working tree. Commit changelog edits before running bump.

1. Stage the changelog update:
   ```bash
   git add apps/mobile/changelog/next.md
   ```
2. Commit it on `dev`:
   ```bash
   git commit -m "docs(mobile): prepare release changelog"
   ```
3. If there are no changes to commit, continue without creating an extra commit.

## Step 4: Execute bump

1. Verify working tree is clean before bump:
   ```bash
   git status --short
   ```
2. Change directory to `apps/mobile/` and run the bump:
   ```bash
   cd apps/mobile && pnpm bump
   ```
3. This is an interactive `nbump` command that prompts for version selection. It will:
   - Pull latest changes
   - Apply changelog (rename next.md to {version}.md, create new next.md from template)
   - Format package.json with eslint + prettier
   - Bump version in `package.json`
   - Update `ios/Folo/Info.plist`:
     - Set `CFBundleShortVersionString` to the new version
     - Increment `CFBundleVersion` (build number) by 1
   - Commit with message `release(mobile): release v{NEW_VERSION}`
   - Create branch `release/mobile/{NEW_VERSION}`
   - Push branch and create PR to `mobile-main`

## Step 5: Verify

1. Confirm the PR was created successfully by checking the output.
2. Report the new version number and PR URL to the user.
3. Summarize:
   - New version: v{NEW_VERSION}
   - Changelog highlights
   - PR URL

## Post-release (manual steps, inform user)

After the release PR is merged to `mobile-main`:

1. **Trigger production builds** via GitHub Actions `workflow_dispatch`:
   - Go to "Build iOS" workflow, select `mobile-main` branch, profile = `production`
   - Go to "Build Android" workflow, select `mobile-main` branch, profile = `production`
2. Production builds auto-submit to App Store (via `eas submit`) and Google Play (as draft).
3. After submission, go to App Store Connect and Google Play Console to complete the review/release process.

## Reference

- Bump config: `apps/mobile/bump.config.ts`
- Changelog dir: `apps/mobile/changelog/`
- Changelog template: `apps/mobile/changelog/next.template.md`
- Apply changelog script: `apps/mobile/scripts/apply-changelog.ts`
- EAS config: `apps/mobile/eas.json`
- App config: `apps/mobile/app.config.ts`
- iOS Info.plist: `apps/mobile/ios/Folo/Info.plist`
- CI build iOS: `.github/workflows/build-ios.yml`
- CI build Android: `.github/workflows/build-android.yml`

Related Skills

mobile-self-test

37910
from RSSNext/Folo

Self-test a mobile feature change or bug fix after implementation in `apps/mobile`. Use this whenever the user asks to verify a mobile change, run simulator acceptance, smoke-test a mobile PR, or provide screenshot proof for a mobile fix. This skill decides between prod vs local API mode, starts the local follow-server when needed, builds a release app, uses Maestro only to bootstrap registration for non-auth work, then switches to screenshot-driven visual validation and returns screenshot evidence.

mobile-e2e

37910
from RSSNext/Folo

Run apps/mobile Maestro end-to-end tests in this repo. Use when an agent needs to validate mobile auth flows on iOS Simulator or Android Emulator. Current maintained coverage is register, sign out, and sign in.

installing-mobile-preview-builds

37910
from RSSNext/Folo

Builds and installs the iOS preview build for apps/mobile using EAS local build and devicectl. Use when the user asks to install a preview/internal iOS build on a connected iPhone for production-like testing.

desktop-release

37910
from RSSNext/Folo

Perform a regular desktop release from the dev branch. Gathers commits since last release, updates changelog, evaluates mainHash changes, bumps version, and creates release PR.

Folo CLI Skill

37910
from RSSNext/Folo

## Trigger Conditions

update-deps

37910
from RSSNext/Folo

Update all dependencies across frontend and backend projects. Reads changelogs for breaking changes, checks affected code, runs tests, and provides a summary. Use when updating npm dependencies across the monorepo.

mobile-games

31392
from sickn33/antigravity-awesome-skills

Mobile game development principles. Touch input, battery, performance, app stores.

release

22262
from Yeachan-Heo/oh-my-claudecode

Automated release workflow for oh-my-claudecode

release-notes

5182
from dlt-hub/dlt

Generate release notes between two git tags with categorized PR summaries and author attribution

testing-mobile-api-authentication

4032
from mukul975/Anthropic-Cybersecurity-Skills

Tests authentication and authorization mechanisms in mobile application APIs to identify broken authentication, insecure token management, session fixation, privilege escalation, and IDOR vulnerabilities. Use when performing API security assessments against mobile app backends, testing JWT implementations, evaluating OAuth flows, or assessing session management. Activates for requests involving mobile API auth testing, token security assessment, OAuth mobile flow testing, or API authorization bypass.

performing-mobile-device-forensics-with-cellebrite

4032
from mukul975/Anthropic-Cybersecurity-Skills

Acquire and analyze mobile device data using Cellebrite UFED and open-source tools to extract communications, location data, and application artifacts.

performing-mobile-app-certificate-pinning-bypass

4032
from mukul975/Anthropic-Cybersecurity-Skills

Bypasses SSL/TLS certificate pinning implementations in Android and iOS applications to enable traffic interception during authorized security assessments. Covers OkHttp, TrustManager, NSURLSession, and third-party pinning library bypass techniques using Frida, Objection, and custom scripts. Activates for requests involving certificate pinning bypass, SSL pinning defeat, mobile TLS interception, or proxy-resistant app testing.