$npx -y skills add hanamizuki/solopreneur --skill gplay-migrate-fastlaneMigration 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.
| 1 | # Fastlane Migration |
| 2 | |
| 3 | Use this skill when you need to migrate from Fastlane supply to the gplay CLI. |
| 4 | |
| 5 | ## Preconditions |
| 6 | - Existing Fastlane metadata directory structure. |
| 7 | - gplay CLI installed and authenticated. |
| 8 | - Familiarity with the source Fastlane directory layout. |
| 9 | |
| 10 | ## Migrate Command |
| 11 | |
| 12 | ### Basic migration |
| 13 | ```bash |
| 14 | gplay migrate fastlane \ |
| 15 | --source ./fastlane/metadata/android \ |
| 16 | --output-dir ./metadata |
| 17 | ``` |
| 18 | |
| 19 | ### Dry run (preview without writing files) |
| 20 | ```bash |
| 21 | gplay migrate fastlane \ |
| 22 | --source ./fastlane/metadata/android \ |
| 23 | --output-dir ./metadata \ |
| 24 | --dry-run |
| 25 | ``` |
| 26 | |
| 27 | ### Migrate specific locales only |
| 28 | ```bash |
| 29 | gplay migrate fastlane \ |
| 30 | --source ./fastlane/metadata/android \ |
| 31 | --output-dir ./metadata \ |
| 32 | --locales en-US,es-ES,fr-FR |
| 33 | ``` |
| 34 | |
| 35 | ### Dry run with specific locales |
| 36 | ```bash |
| 37 | gplay migrate fastlane \ |
| 38 | --source ./fastlane/metadata/android \ |
| 39 | --output-dir ./metadata \ |
| 40 | --locales en-US,ja-JP \ |
| 41 | --dry-run |
| 42 | ``` |
| 43 | |
| 44 | ## Flags |
| 45 | |
| 46 | | Flag | Description | Required | |
| 47 | |------|-------------|----------| |
| 48 | | `--source` | Path to Fastlane metadata directory | Yes | |
| 49 | | `--output-dir` | Output directory for gplay metadata | Yes | |
| 50 | | `--dry-run` | Preview changes without writing files | No | |
| 51 | | `--locales` | Comma-separated list of locales to migrate | No (all by default) | |
| 52 | |
| 53 | ## What Gets Migrated |
| 54 | |
| 55 | The command converts the Fastlane directory structure into the format used by gplay's file-based metadata commands (`metadata pull` / `metadata push` / `metadata validate`): |
| 56 | |
| 57 | ### Fastlane source structure |
| 58 | ``` |
| 59 | fastlane/metadata/android/ |
| 60 | ├── en-US/ |
| 61 | │ ├── title.txt |
| 62 | │ ├── short_description.txt |
| 63 | │ ├── full_description.txt |
| 64 | │ ├── video.txt |
| 65 | │ ├── changelogs/ |
| 66 | │ │ ├── 100.txt |
| 67 | │ │ └── 101.txt |
| 68 | │ └── images/ |
| 69 | │ ├── phoneScreenshots/ |
| 70 | │ │ ├── 1.png |
| 71 | │ │ └── 2.png |
| 72 | │ ├── icon.png |
| 73 | │ └── featureGraphic.png |
| 74 | ├── es-ES/ |
| 75 | │ └── ... |
| 76 | ``` |
| 77 | |
| 78 | ### Migrated output structure |
| 79 | ``` |
| 80 | metadata/ |
| 81 | ├── en-US/ |
| 82 | │ ├── listing.json |
| 83 | │ ├── changelogs/ |
| 84 | │ │ ├── 100.txt |
| 85 | │ │ └── 101.txt |
| 86 | │ └── images/ |
| 87 | │ ├── phoneScreenshots/ |
| 88 | │ │ ├── 1.png |
| 89 | │ │ └── 2.png |
| 90 | │ ├── icon.png |
| 91 | │ └── featureGraphic.png |
| 92 | ├── es-ES/ |
| 93 | │ └── ... |
| 94 | ``` |
| 95 | |
| 96 | ### File conversions |
| 97 | - `title.txt`, `short_description.txt`, `full_description.txt`, `video.txt` are consolidated into `listing.json`. |
| 98 | - `changelogs/` are copied as-is. |
| 99 | - `images/` are copied as-is. |
| 100 | |
| 101 | ## Workflow Examples |
| 102 | |
| 103 | ### Full migration from Fastlane |
| 104 | ```bash |
| 105 | # 1. Preview the migration |
| 106 | gplay migrate fastlane \ |
| 107 | --source ./fastlane/metadata/android \ |
| 108 | --output-dir ./metadata \ |
| 109 | --dry-run |
| 110 | |
| 111 | # 2. Run the actual migration |
| 112 | gplay migrate fastlane \ |
| 113 | --source ./fastlane/metadata/android \ |
| 114 | --output-dir ./metadata |
| 115 | |
| 116 | # 3. Verify the output |
| 117 | ls -R ./metadata |
| 118 | |
| 119 | # 4. Import to Play Store |
| 120 | gplay sync import-listings \ |
| 121 | --package com.example.app \ |
| 122 | --dir ./metadata |
| 123 | ``` |
| 124 | |
| 125 | ### Incremental locale migration |
| 126 | ```bash |
| 127 | # Migrate English first |
| 128 | gplay migrate fastlane \ |
| 129 | --source ./fastlane/metadata/android \ |
| 130 | --output-dir ./metadata \ |
| 131 | --locales en-US |
| 132 | |
| 133 | # Verify and test |
| 134 | gplay sync diff-listings \ |
| 135 | --package com.example.app \ |
| 136 | --dir ./metadata |
| 137 | |
| 138 | # Migrate remaining locales |
| 139 | gplay migrate fastlane \ |
| 140 | --source ./fastlane/metadata/android \ |
| 141 | --output-dir ./metadata \ |
| 142 | --locales es-ES,fr-FR,de-DE,ja-JP |
| 143 | ``` |
| 144 | |
| 145 | ### CI/CD migration validation |
| 146 | ```bash |
| 147 | # In CI, validate that migration produces expected output |
| 148 | gplay migrate fastlane \ |
| 149 | --source ./fastlane/metadata/android \ |
| 150 | --output-dir ./metadata-test \ |
| 151 | --dry-run |
| 152 | |
| 153 | # Check exit code |
| 154 | if [ $? -eq 0 ]; then |
| 155 | echo "Migration validation passed" |
| 156 | else |
| 157 | echo "Migration validation failed" |
| 158 | exit 1 |
| 159 | fi |
| 160 | ``` |
| 161 | |
| 162 | ## Replacing Fastlane Supply Commands |
| 163 | |
| 164 | | Fastlane Command | gplay Equivalent | |
| 165 | |------------------|------------------| |
| 166 | | `fastlane supply init` | `gplay sync export-listings --dir ./metadata` | |
| 167 | | `fastlane supply` | `gplay sync import-listings --dir ./metadata` | |
| 168 | | `fastlane supply --skip_upload_images` | `gplay sync import-listings --dir ./metadata` | |
| 169 | | `fastlane supply --track beta` | `gplay release --track beta --bundle app.aab` | |
| 170 | | `fastlane supply --track production --rollout 0.1` | `gplay release --track production --bundle app.aab --rollout 0.1` | |
| 171 | |
| 172 | ## Best Practices |
| 173 | |
| 174 | 1. **Always dry-run first** - Preview the migration output before writing files. |
| 175 | 2. **Migrate locale by locale** - Start with your primary locale and verify. |
| 176 | 3. **Keep Fastlane source** - Do not delete the Fastlane directory until fully migrated and verified. |
| 177 | 4. **Validate after migration** - Use `gplay validate listing` to check character limits. |
| 178 | 5. **Update CI/CD gradually** - Replace Fastlane commands one at a time. |
| 179 | 6. **Version control the output** - Commit migrated metadata to track changes. |