CI/CD Setup Generator

Generate CI/CD configuration for automated builds, tests, and distribution of iOS/macOS apps.

110 stars

Best use case

CI/CD Setup Generator is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Generate CI/CD configuration for automated builds, tests, and distribution of iOS/macOS apps.

Teams using CI/CD Setup Generator should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/ci-cd-setup/SKILL.md --create-dirs "https://raw.githubusercontent.com/gustavscirulis/snapgrid/main/.claude/skills/skills/generators/ci-cd-setup/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/ci-cd-setup/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How CI/CD Setup Generator Compares

Feature / AgentCI/CD Setup GeneratorStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Generate CI/CD configuration for automated builds, tests, and distribution of iOS/macOS apps.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

Related Guides

SKILL.md Source

# CI/CD Setup Generator

Generate CI/CD configuration for automated builds, tests, and distribution of iOS/macOS apps.

## When to Use

- User wants to automate their build and test process
- User mentions GitHub Actions, Xcode Cloud, or fastlane
- User wants to set up TestFlight or App Store deployment
- User asks about continuous integration for their app

## Pre-Generation Checks

Before generating, verify:

1. **Existing CI Configuration**
   ```bash
   # Check for existing CI files
   ls -la .github/workflows/ 2>/dev/null
   ls -la ci_scripts/ 2>/dev/null
   ls -la fastlane/ 2>/dev/null
   ```

2. **Project Structure**
   ```bash
   # Find Xcode project/workspace
   find . -name "*.xcodeproj" -o -name "*.xcworkspace" | head -5
   ```

3. **Package Manager**
   ```bash
   # Check for SPM vs CocoaPods
   ls Package.swift 2>/dev/null
   ls Podfile 2>/dev/null
   ```

## Configuration Questions

### 1. CI/CD Platform
- **GitHub Actions** (Recommended) - Full control, extensive marketplace
- **Xcode Cloud** - Native Apple integration, simpler setup
- **Both** - GitHub for PRs/tests, Xcode Cloud for releases

### 2. Distribution Method
- **TestFlight** - Beta testing via App Store Connect
- **App Store** - Production releases
- **Direct** (macOS only) - Notarized DMG/PKG distribution
- **All** - Full pipeline from dev to production

### 3. Include fastlane?
- **Yes** - Advanced automation, match for code signing
- **No** - Simpler setup using xcodebuild directly

### 4. Code Signing Approach
- **Manual** - Certificates in GitHub Secrets
- **match** (fastlane) - Git-based certificate management
- **Xcode Cloud Managed** - Apple handles signing

## Generated Files

### GitHub Actions
```
.github/workflows/
├── build-test.yml        # PR checks, unit tests
├── deploy-testflight.yml # TestFlight deployment
└── deploy-appstore.yml   # App Store submission
```

### Xcode Cloud
```
ci_scripts/
├── ci_post_clone.sh      # Post-clone setup
└── ci_pre_xcodebuild.sh  # Pre-build configuration
```

### fastlane
```
fastlane/
├── Fastfile              # Lane definitions
├── Appfile               # App configuration
└── Matchfile             # Code signing (if using match)
```

## Integration Steps

### GitHub Actions Setup

1. **Add Repository Secrets** (Settings > Secrets and variables > Actions):
   - `APP_STORE_CONNECT_API_KEY_ID` - API Key ID
   - `APP_STORE_CONNECT_API_ISSUER_ID` - Issuer ID
   - `APP_STORE_CONNECT_API_KEY_CONTENT` - Private key (.p8 content)
   - `CERTIFICATE_P12` - Base64-encoded .p12 certificate
   - `CERTIFICATE_PASSWORD` - Certificate password
   - `PROVISIONING_PROFILE` - Base64-encoded provisioning profile

2. **Create App Store Connect API Key**:
   - Go to App Store Connect > Users and Access > Keys
   - Generate API Key with "App Manager" role
   - Download the .p8 file (only available once)

3. **Export Certificate**:
   ```bash
   # Export from Keychain as .p12, then base64 encode
   base64 -i certificate.p12 | pbcopy
   ```

### Xcode Cloud Setup

1. **Enable Xcode Cloud** in Xcode:
   - Product > Xcode Cloud > Create Workflow
   - Connect to App Store Connect

2. **Configure Workflow**:
   - Set start conditions (branch, PR, tag)
   - Configure environment variables
   - Set up post-actions (TestFlight, App Store)

3. **Add ci_scripts** to repository for customization

### fastlane Setup

1. **Install fastlane**:
   ```bash
   brew install fastlane
   ```

2. **Initialize** (if starting fresh):
   ```bash
   fastlane init
   ```

3. **Set up match** (optional, for code signing):
   ```bash
   fastlane match init
   fastlane match development
   fastlane match appstore
   ```

## Best Practices

### Caching
- Cache Swift Package Manager dependencies
- Cache DerivedData for faster builds
- Use selective caching to avoid stale artifacts

### Secrets Management
- Never commit certificates or keys
- Use environment variables for sensitive data
- Rotate API keys periodically

### Build Optimization
- Use incremental builds where possible
- Parallelize test execution
- Skip unnecessary steps on draft PRs

### Notifications
- Slack/Discord integration for build status
- Email notifications for failures
- GitHub status checks for PRs

## References

- [GitHub Actions for Xcode](https://github.com/actions/runner-images/blob/main/images/macos)
- [Xcode Cloud Documentation](https://developer.apple.com/documentation/xcode/xcode-cloud)
- [fastlane Documentation](https://docs.fastlane.tools)
- [App Store Connect API](https://developer.apple.com/documentation/appstoreconnectapi)

Related Skills

snapshot-test-setup

110
from gustavscirulis/snapgrid

Set up SwiftUI visual regression testing with swift-snapshot-testing. Generates snapshot test boilerplate and CI configuration. Use for UI regression prevention.

characterization-test-generator

110
from gustavscirulis/snapgrid

Generates tests that capture current behavior of existing code before refactoring. Use when you need a safety net before AI-assisted refactoring or modifying legacy code.

prd-generator

110
from gustavscirulis/snapgrid

Generates comprehensive Product Requirements Document from product plan. Creates PRD.md with features, user stories, acceptance criteria, and success metrics. Use when creating product requirements.

idea-generator

110
from gustavscirulis/snapgrid

Brainstorm and rank iOS/macOS app ideas tailored to developer skills. Use when user says "what should I build", "give me app ideas", "I don't know what to build", "brainstorm app ideas", or "help me find an app idea".

widget-generator

110
from gustavscirulis/snapgrid

Generate WidgetKit widgets for iOS/macOS home screen and lock screen with timeline providers, interactive elements, and App Intent configuration. Use when adding widgets to an app.

tipkit-generator

110
from gustavscirulis/snapgrid

Generate TipKit infrastructure with inline/popover tips, rules, display frequency, and testing utilities. Use when adding contextual tips or feature discovery to an iOS/macOS app.

test-generator

110
from gustavscirulis/snapgrid

Generate test templates for unit tests, integration tests, and UI tests using Swift Testing and XCTest. Use when adding tests to iOS/macOS apps.

Push Notifications Generator

110
from gustavscirulis/snapgrid

Generate push notification infrastructure with APNs registration, handling, and rich notifications.

persistence-setup

110
from gustavscirulis/snapgrid

Generates SwiftData or CoreData persistence layer with optional iCloud sync. Use when user wants to add local storage, data persistence, or cloud sync.

paywall-generator

110
from gustavscirulis/snapgrid

Generates StoreKit 2 subscription paywall with modern SwiftUI views. Use when user wants to add subscriptions, paywall, or in-app purchases.

onboarding-generator

110
from gustavscirulis/snapgrid

Generates multi-step onboarding flows with persistence for iOS/macOS apps. Use when user wants to add onboarding, welcome screens, or first-launch experience.

offer-codes-setup

110
from gustavscirulis/snapgrid

Generates offer code distribution strategies and configuration guides for subscription and IAP promotions — including partner campaigns, influencer programs, and email re-engagement. Use when setting up offer codes for distribution.