com um clique
mega-shared-repo-release
// MEGA iOS Shared Repo release workflow. Use when the user asks about the shared repo release process, shared repo code freeze, or shared repo Monday release checklist.
// MEGA iOS Shared Repo release workflow. Use when the user asks about the shared repo release process, shared repo code freeze, or shared repo Monday release checklist.
| name | mega-shared-repo-release |
| description | MEGA iOS Shared Repo release workflow. Use when the user asks about the shared repo release process, shared repo code freeze, or shared repo Monday release checklist. |
| disable-model-invocation | true |
| allowed-tools | Bash |
Run this in parallel with the main iOS release. The Shared Repo has its own release cycle that must be coordinated.
Why Tuesday? The Shared Repo RC is built one day ahead of other apps so that dependent apps (MEGA Cloud, VPN, Pass) can consume it by Wednesday.
Walk the user through each item. These are all manual tasks.
translate.json exists and is configured at:
./Modules/MEGASharedRepo/iosTransifex/weblate/translate.json
SOURCE_TOKEN (Weblate API key) and GITLAB_TOKENtranslate.json is missing or you need a reference template, download the sample config from: https://mega.nz/fm/iyhV0ARY/weblate skill for full Weblate setup detailsManually create a branch from main:
branch name: task/prepare-[major].[minor]
First, ensure iosTransifex is up to date — prompt the RC to pull the latest:
cd iosTransifex && git pull && cd ..
Then run the L10n download script:
./iosTransifex/weblate/lang.sh -a ios -p -l ios-lib
After the script completes, prompt the RC to review the downloaded translations — check that the updated string files look correct before committing.
What to look for — suspicious changes:
%#@ignore@ in .stringsdict files — this is a known bad Weblate output.
Example (from ar.lproj/Localizable.stringsdict):
- <string>%d رهش لك [A] ليصحت متي</string> ← real Arabic translation
+ <string>%#@ignore@</string> ← corrupted / ignore placeholder
If you see %#@ignore@ replacing real translated strings, do NOT commit. Report in the #weblate Slack channel to investigate before proceeding.Prepare release [major].[minor] targeting mainBefore starting: Confirm the
Prepare release [major].[minor]MR has been reviewed, pipeline passed, and merged intomainbefore proceeding. Do NOT create the release branch until the Prepare MR is merged.
Manually create from main:
branch name: release/[major].[minor]
Branch naming convention: Trailing zeros in the minor version are dropped. e.g., version
2.20→ branchrelease/2.2, version2.21→ branchrelease/2.21
Release [major].[minor]mainCreate a tag [major].[minor]-rc.1 from the release/[major].[minor] branch.
Tags are created manually — do NOT attempt to detect, create, or verify release tags programmatically. Tag creation is the user's responsibility.
Note: Do NOT delete the release branch until all dependent apps (MEGA Cloud, VPN, Pass) have completed their own releases.
Post in the #mobile_shared_module Slack channel.
git log --oneline <last-release-tag>..<major>.<minor>-rc.1
Copy the output for the "What's new" section.
:mega: New iOS Shared Repo version → [major].[minor]-rc.1
Commit: <commit hash of the rc.1 tag>
What's new:
<paste git log --oneline output here>
Target app/s
• MEGA Cloud: <version>
• MEGA VPN: <version>
• MEGA Pass: <version>
CC: [Release Captain(s)]
Then in the thread, mention the Release Captains of each target app individually.
Batch-add one or many SVG icons to MEGAAssetsBundle xcassets from an input folder whose subfolders encode the xcassets group path. Creates an imageset per icon, defines Swift constants in MEGAAssetsBundle (SwiftUI Image + UIKit UIImage) and the MEGAAssets wrapper, then rebuilds the xcframework once. Use when the user says "add icon to MEGAAssets", "add new icon(s)", "add asset to MEGAAssetsBundle", "batch add SVG icons", "add icons from folder", or "add image constant".
MEGA iOS Weblate localization workflows. Use when the user mentions "weblate", "l10n", "localization", "upload strings", "upload plurals", "download translations", "sync strings", "changelog translation", "add new string", or asks to run "lang.sh". Also use when the user says things like "push new strings to Weblate", "pull translations for release", or "upload changelogs to App Store".
Camera Upload specialist — explains, refactors, debugs, and documents the MEGA iOS Camera Uploads feature. Use this skill whenever the user asks about camera uploads, including: navigating the code, implementing or refactoring upload flows, debugging upload progress or paused states, working with the upload queue or CoreData records, understanding the ObjC/Swift bridge, adding settings options, tracing background session recovery, or documenting the feature. Trigger terms: Camera Upload, CU, camera upload breakdown, upload queue, photo backup, video upload, upload progress, upload paused, BGRefresh, upload stats, HEIC conversion, PHAsset, upload session recovery, CameraUploadManager, CameraUploadOperation, CameraUploadTransferProgress.
MEGA iOS Fastlane and App Store metadata reference. Use when the user asks about Fastlane lanes, App Store screenshots, signing certificates, device registration, delivering to TestFlight or App Store, Jenkins CI trigger phrases, App Store Connect upload commands, or fastlane match.
MEGA iOS hotfix workflow. Use when the user reports a crash or critical bug in production, needs to stop a phased release, or wants to prepare and release a hotfix build.
MEGA iOS release workflow commands and scripts. Use when the user asks about code freeze, release preparation, Monday release checklist, creating a release branch, release candidates, hotfixes, or finalizing and merging a release.