mcpField
S
setup-fastlane

setup-fastlane

github.com/greenstevesterCloud & DevOps3866 installsUpdated 8w ago
Repository

About setup-fastlane

A skill for setting up Fastlane in iOS projects, aimed at developers automating tests and App Store delivery. It checks project details, creates configuration files, and outlines TestFlight and release lanes.

Key features

  1. 01Checks Xcode, Homebrew, and Fastlane
  2. 02Finds project, workspace, and app identifiers
  3. 03Creates Appfile and Fastfile
  4. 04Sets up test, beta, and release lanes
  5. 05Downloads App Store metadata and screenshots

Use cases

  1. 01Configure Fastlane for an iOS project
  2. 02Run tests and upload to TestFlight
  3. 03Prepare an App Store release workflow

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/greenstevester/fastlane-skill --skill setup-fastlane

After installing, type/setup-fastlanein Claude Code to confirm it loaded.

Details

From the project README

Fastlane Setup (One-Time)

┌─────────────────────────────────────────────────────────────────┐
│  ONE-TIME SETUP                                                 │
│  ══════════════                                                 │
│  After this, you'll have:                                       │
│                                                                 │
│    fastlane ios test    → Run tests                             │
│    fastlane ios beta    → Upload to TestFlight                  │
│    fastlane ios release → Submit to App Store                   │
│                                                                 │
│  Do this once per project. Takes ~10 minutes.                   │
└─────────────────────────────────────────────────────────────────┘
Environment Check
  • Xcode CLI: !xcode-select -p 2>/dev/null && echo "✓" || echo "✗ Run: xcode-select --install"
  • Homebrew: !brew --version 2>/dev/null | head -1 || echo "✗ Run: /bin/bash -c \"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)\""
  • Fastlane: !fastlane --version 2>/dev/null | grep -o "fastlane [0-9.]*" | head -1 || echo "✗ Run: brew install fastlane"
Your Project
  • Project: !find . -maxdepth 2 -name "*.xcodeproj" 2>/dev/null | head -1 || echo "None found"
  • Workspace: !find . -maxdepth 2 -name "*.xcworkspace" ! -path "*/.build/*" ! -path "*/xcodeproj/*" 2>/dev/null | head -1 || echo "None"
  • Bundle ID: !grep -r "PRODUCT_BUNDLE_IDENTIFIER" --include="*.pbxproj" . 2>/dev/null | head -1 | sed 's/.*= //' | tr -d '";' || echo "Not found"
  • Team ID: !grep -r "DEVELOPMENT_TEAM" --include="*.pbxproj" . 2>/dev/null | head -1 | sed 's/.*= //' | tr -d '";' || echo "Not found"
Target: ${ARGUMENTS:-current directory}

Step 1: Install Fastlane

brew install fastlane

Why Homebrew? Bundler 4.x broke Fastlane's Ruby dependencies. Homebrew avoids all version conflicts.


Step 2: Create Configuration Files

fastlane/Appfile
app_identifier("{{BUNDLE_ID}}")  # Your bundle ID
apple_id("{{APPLE_ID}}")         # Your Apple ID email
team_id("{{TEAM_ID}}")           # Your team ID
fastlane/Fastfile
default_platform(:ios)

platform :ios do
  desc "Run tests"
  lane :test do
    scan(scheme: "{{SCHEME}}")
  end

  desc "Upload to TestFlight (internal testers)"
  lane :beta do |options|
    increment_build_number unless options[:skip_build_increment]
    gym(scheme: "{{SCHEME}}", export_method: "app-store")
    pilot(skip_waiting_for_build_processing: true)
  end

  desc "Upload to TestFlight and distribute to external testers"
  lane :beta_external do |options|
    increment_build_number
    gym(scheme: "{{SCHEME}}", export_method: "app-store")
    pilot(
      distribute_external: true,
      groups: ["External Testers"],
      changelog: options[:changelog] || "Bug fixes and improvements",
      skip_waiting_for_build_processing: false
    )
  end

  desc "Submit the latest TestFlight build for App Store review"
  lane :release do
    deliver(
      build_number: latest_testflight_build_number.to_s,
      submit_for_review: true,
      automatic_release: false,
      force: true,
      skip_binary_upload: true,
      skip_metadata: false,
      skip_screenshots: false
    )
  end

  desc "Build, upload, and submit a fresh build to the App Store"
  lane :release_full do |options|
    increment_version_number(version_number: options[:version]) if options[:version]
    increment_build_number
    gym(scheme: "{{SCHEME}}", export_method: "app-store")
    deliver(
      submit_for_review: true,
      automatic_release: options[:auto_release] == true,
      force: true
    )
  end
end

Replace {{SCHEME}} with your app's scheme name (usually the app name).


Step 3: Set Up Metadata (Optional)

Download your existing App Store listing:

fastlane deliver download_metadata
fastlane deliver download_screenshots

This creates fastlane/metadata/ with editable text files for your app description, keywords, etc.


You're Done!

# Verify setup
fastlane lanes

# Run your first lane
fastlane ios test
Quick Reference
CommandWhat it does
fastlane ios testRun tests
fastlane ios betaBuild + TestFlight
fastlane ios releaseBuild + App Store
fastlane deliver download_metadataFetch App Store listing

Next Steps

  • Code signing issues? Ask: "Set up Match for code signing"
  • Need screenshots? Ask: "Automate my App Store screenshots"
  • CI/CD setup? See Xcode Cloud guide

Comments

Markdown supported