.agents/skills/mobile-release/SKILL.md
Use when preparing a mobile release from the dev branch and deciding whether changes should ship through the app stores or through the OTA pipeline before creating the release PR to mobile-main.
npx skillsauth add rssnext/folo mobile-releaseInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Perform a mobile release from dev, with an explicit release-mode decision before the bump.
The skill must recommend one of these modes, explain why, ask the user to confirm, and then write apps/mobile/release-plan.json before running the bump:
store: normal App Store / Google Play releaseota: OTA-only publish, no store buildsstore-policy: metadata-only publish for /policy, no store buildsThe CI release flow is file-driven:
apps/mobile/release-plan.json is the editable plan on devpnpm bump runs apps/mobile/scripts/apply-release-config.tsapps/mobile/release.json for the new version and resets the plan back to a safe defaultapps/mobile/release.json after merge to decide which pipelines to triggerdev. If not, abort with a warning.git pull --rebase in the repo root.apps/mobile/package.jsonapps/mobile/release-plan.json.github/workflows/tag.yml.github/workflows/publish-ota.ymlgit tag --sort=-creatordate | grep -E '^mobile[@/]' | head -1
git log --format="%H %s" | grep -Ei "^[a-f0-9]* release\\(mobile\\): release v" | head -1 | awk '{print $1}'
git log <last-tag-or-commit>..HEAD --oneline --no-merges
git diff --name-only <last-tag-or-commit>..HEAD
Shiny new thingsImprovementsNo longer brokenThanksstore when:apps/mobile/ios/**apps/mobile/android/**apps/mobile/native/**apps/mobile/package.jsonapps/mobile/app.config.tsapps/mobile/app.config.base.tsapps/mobile/eas.jsonapps/mobile/ios/Folo/Info.plist.github/workflows/build-ios.yml.github/workflows/build-android.ymlota when:store-policy only when:/policy to prompt or block older binariesDo not recommend store-policy by default for ordinary releases.
If recommending ota or store-policy, derive the target store binary version from recent origin/mobile-main releases and propose it as the runtimeVersion.
If you cannot determine the runtime confidently, stop and ask the user to confirm it.
Present:
ota or store-policy, the proposed runtimeVersionota or store-policy, the proposed channelstore-policy, whether /policy should block (storeRequired=true) or just prompt (storeRequired=false)Wait for explicit user confirmation before continuing.
Update apps/mobile/release-plan.json to match the confirmed mode.
Examples:
{
"mode": "store",
"runtimeVersion": null,
"channel": null,
"storeRequired": false,
"message": null
}
{
"mode": "ota",
"runtimeVersion": "0.4.1",
"channel": "production",
"storeRequired": false,
"message": null
}
{
"mode": "store-policy",
"runtimeVersion": "0.4.3",
"channel": "production",
"storeRequired": true,
"message": "Install 0.4.3 from the store."
}
apps/mobile/changelog/next.md.apps/mobile/changelog/next.md.nbump requires a clean working tree.
git add apps/mobile/changelog/next.md apps/mobile/release-plan.json
git commit -m "docs(mobile): prepare release metadata"
git status --short
cd apps/mobile && pnpm bump
pnpm bump will:
package.jsonios/Folo/Info.plisttsx scripts/apply-release-config.ts ${NEW_VERSION}apps/mobile/release.jsonapps/mobile/release-plan.json back to the safe default storemobile-mainapps/mobile/release.json on the release branch and report:
store-policymode=storemode=otamode=store-policyapps/mobile/bump.config.tsapps/mobile/release-plan.jsonapps/mobile/release.jsonapps/mobile/scripts/apply-release-config.tsapps/mobile/changelog/apps/mobile/scripts/apply-changelog.ts.github/scripts/resolve-mobile-release-config.mjs.github/workflows/tag.yml.github/workflows/publish-ota.ymlapps/mobile/app.config.tsapps/mobile/ios/Folo/Info.plistdevelopment
Perform a regular desktop release from the dev branch. Gather changes since the last desktop tag, update the changelog, choose the desktop release mode in release-plan.json, bump the version, and prepare the release PR.
tools
# Folo CLI Skill ## Trigger Conditions Use this skill when a user asks to: - Manage RSS subscriptions - Browse timeline entries - Read entry details or readability content - Mark entries as read/unread - Search feeds/lists or trending sources - Import/export OPML - Check unread counts ## Preconditions 1. Node.js and npm are installed so the CLI can be executed with `npx`. 2. Authentication is configured: - `npx --yes folocli@latest login` (recommended, opens browser and auto-logins) -
development
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.
development
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.