Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Generate CI/CD configuration for automated builds, tests, and distribution of iOS/macOS apps. Use when setting up GitHub Actions, Xcode Cloud, or fastlane for continuous integration, TestFlight, or App Store deployment.
.claude/skills/rshankras-ci-cd-setup/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 26% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 18% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 52% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 77% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 46% | 0% |
Generate CI/CD configuration for automated builds, tests, and distribution of iOS/macOS apps.
Before generating, verify:
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
bash # Find Xcode project/workspace find . -name "*.xcodeproj" -o -name "*.xcworkspace" | head -5
bash # Check for SPM vs CocoaPods ls Package.swift 2>/dev/null ls Podfile 2>/dev/null
.github/workflows/
├── build-test.yml # PR checks, unit tests
├── deploy-testflight.yml # TestFlight deployment
└── deploy-appstore.yml # App Store submissionci_scripts/
├── ci_post_clone.sh # Post-clone setup
└── ci_pre_xcodebuild.sh # Pre-build configurationfastlane/
├── Fastfile # Lane definitions
├── Appfile # App configuration
└── Matchfile # Code signing (if using match).swiftlint.yml # from templates/swiftlint/swiftlint.ymlSkills in this library may ship graduated enforcement as a rules/swiftlint.yml fragment (opt_in_rules + custom_rules) — prose rules turned into deterministic lint. When generating .swiftlint.yml:
templates/swiftlint/swiftlint.yml.skills/<category>/<skill>/rules/swiftlint.yml; append its custom_rules entries and union its opt_in_rules.
observable_object_legacyapplies only to iOS 17+/macOS 14+ deployment targets, and xctest_in_unit_tests must keep its UITests exclusion (XCUITest legitimately requires XCTest).
build-test.yml runs the lint job automatically once.swiftlint.yml exists (if: hashFiles('.swiftlint.yml') != '').
Current fragments: security/ (hardcoded secrets), ios/coding-best-practices (print-in-production, legacy ObservableObject, force_unwrapping/force_try), testing/tdd-feature (XCTest scoped out of unit tests), swift/concurrency (@unchecked Sendable without justification).
APP_STORE_CONNECT_API_KEY_ID - API Key IDAPP_STORE_CONNECT_API_ISSUER_ID - Issuer IDAPP_STORE_CONNECT_API_KEY_CONTENT - Private key (.p8 content)CERTIFICATE_P12 - Base64-encoded .p12 certificateCERTIFICATE_PASSWORD - Certificate passwordPROVISIONING_PROFILE - Base64-encoded provisioning profilebash # Export from Keychain as .p12, then base64 encode base64 -i certificate.p12 | pbcopy
bash brew install fastlane
bash fastlane init
bash fastlane match init fastlane match development fastlane match appstore
Other measured skills in the registry, with their headline benchmark lift.