gplay-migrate-fastlane
Migration from Fastlane supply to gplay CLI using the gplay migrate fastlane command. Use when asked to convert a Fastlane-based Play Store workflow to gplay, or to import existing Fastlane metadata directories.
Summary
- Purpose
- Converts a Fastlane Android metadata directory into gplay's file-based format, consolidating listing text in listing.json and preserving changelogs and images.
- When to use
- Use it when migrating in stages, previewing changes with a dry run, or limiting conversion to selected locales.
- Outputs
- A gplay metadata directory with per-locale listing.json files and copied changelogs and images; dry runs preview changes without writing files.
Upstream changes (2, latest included 2026-07-04)
439c9ae fix(skills): audit cleanup — correct every command, cut dead weight, add drift guardrail (#3) Updated the migration guide to identify the output as the format used by gplay's file-based metadata commands and corrected the production rollout example from `10` to `0.1`. f8592d5 feat: add skills for v0.4.2 new commands (vitals, users, migrate) Added a Fastlane-to-gplay migration guide with command examples, options, file-conversion and output details, workflow examples, command mappings, and best practices. npx skills add "lettucebo/Skills#v2.2.0@gplay-migrate-fastlane" --full-depth ⚠ Available after v2.2.0 is published
Fastlane Migration
Use this skill when you need to migrate from Fastlane supply to the gplay CLI.
Preconditions
- Existing Fastlane metadata directory structure.
- gplay CLI installed and authenticated.
- Familiarity with the source Fastlane directory layout.
Migrate Command
Basic migration
gplay migrate fastlane \
--source ./fastlane/metadata/android \
--output-dir ./metadata
Dry run (preview without writing files)
gplay migrate fastlane \
--source ./fastlane/metadata/android \
--output-dir ./metadata \
--dry-run
Migrate specific locales only
gplay migrate fastlane \
--source ./fastlane/metadata/android \
--output-dir ./metadata \
--locales en-US,es-ES,fr-FR
Dry run with specific locales
gplay migrate fastlane \
--source ./fastlane/metadata/android \
--output-dir ./metadata \
--locales en-US,ja-JP \
--dry-run
Flags
| Flag | Description | Required |
|---|---|---|
--source |
Path to Fastlane metadata directory | Yes |
--output-dir |
Output directory for gplay metadata | Yes |
--dry-run |
Preview changes without writing files | No |
--locales |
Comma-separated list of locales to migrate | No (all by default) |
What Gets Migrated
The command converts the Fastlane directory structure into the format used by gplay's file-based metadata commands (metadata pull / metadata push / metadata validate):
Fastlane source structure
fastlane/metadata/android/
├── en-US/
│ ├── title.txt
│ ├── short_description.txt
│ ├── full_description.txt
│ ├── video.txt
│ ├── changelogs/
│ │ ├── 100.txt
│ │ └── 101.txt
│ └── images/
│ ├── phoneScreenshots/
│ │ ├── 1.png
│ │ └── 2.png
│ ├── icon.png
│ └── featureGraphic.png
├── es-ES/
│ └── ...
Migrated output structure
metadata/
├── en-US/
│ ├── listing.json
│ ├── changelogs/
│ │ ├── 100.txt
│ │ └── 101.txt
│ └── images/
│ ├── phoneScreenshots/
│ │ ├── 1.png
│ │ └── 2.png
│ ├── icon.png
│ └── featureGraphic.png
├── es-ES/
│ └── ...
File conversions
title.txt,short_description.txt,full_description.txt,video.txtare consolidated intolisting.json.changelogs/are copied as-is.images/are copied as-is.
Workflow Examples
Full migration from Fastlane
# 1. Preview the migration
gplay migrate fastlane \
--source ./fastlane/metadata/android \
--output-dir ./metadata \
--dry-run
# 2. Run the actual migration
gplay migrate fastlane \
--source ./fastlane/metadata/android \
--output-dir ./metadata
# 3. Verify the output
ls -R ./metadata
# 4. Import to Play Store
gplay sync import-listings \
--package com.example.app \
--dir ./metadata
Incremental locale migration
# Migrate English first
gplay migrate fastlane \
--source ./fastlane/metadata/android \
--output-dir ./metadata \
--locales en-US
# Verify and test
gplay sync diff-listings \
--package com.example.app \
--dir ./metadata
# Migrate remaining locales
gplay migrate fastlane \
--source ./fastlane/metadata/android \
--output-dir ./metadata \
--locales es-ES,fr-FR,de-DE,ja-JP
CI/CD migration validation
# In CI, validate that migration produces expected output
gplay migrate fastlane \
--source ./fastlane/metadata/android \
--output-dir ./metadata-test \
--dry-run
# Check exit code
if [ $? -eq 0 ]; then
echo "Migration validation passed"
else
echo "Migration validation failed"
exit 1
fi
Replacing Fastlane Supply Commands
| Fastlane Command | gplay Equivalent |
|---|---|
fastlane supply init |
gplay sync export-listings --dir ./metadata |
fastlane supply |
gplay sync import-listings --dir ./metadata |
fastlane supply --skip_upload_images |
gplay sync import-listings --dir ./metadata |
fastlane supply --track beta |
gplay release --track beta --bundle app.aab |
fastlane supply --track production --rollout 0.1 |
gplay release --track production --bundle app.aab --rollout 0.1 |
Best Practices
- Always dry-run first - Preview the migration output before writing files.
- Migrate locale by locale - Start with your primary locale and verify.
- Keep Fastlane source - Do not delete the Fastlane directory until fully migrated and verified.
- Validate after migration - Use
gplay validate listingto check character limits. - Update CI/CD gradually - Replace Fastlane commands one at a time.
- Version control the output - Commit migrated metadata to track changes.