Writing Skills
writing-skills
效率与协作技能,来自 obra/superpowers,查看原文获取完整用途和操作说明。
ci-cd-setup【部署与运维】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.
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
Generate CI/CD configuration for automated builds, tests, and distribution of iOS/macOS apps.
Before generating, verify:
Existing CI Configuration
# 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
Project Structure
# Find Xcode project/workspace
find . -name "*.xcodeproj" -o -name "*.xcworkspace" | head -5
Package Manager
# 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 submission
ci_scripts/
├── ci_post_clone.sh # Post-clone setup
└── ci_pre_xcodebuild.sh # Pre-build configuration
fastlane/
├── Fastfile # Lane definitions
├── Appfile # App configuration
└── Matchfile # Code signing (if using match)
.swiftlint.yml # from templates/swiftlint/swiftlint.yml
Skills 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_legacy
applies 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).
Add Repository Secrets (Settings > Secrets and variables > Actions):
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 profileCreate App Store Connect API Key:
Export Certificate:
# Export from Keychain as .p12, then base64 encode
base64 -i certificate.p12 | pbcopy
Enable Xcode Cloud in Xcode:
Configure Workflow:
Add ci_scripts to repository for customization
Install fastlane:
brew install fastlane
Initialize (if starting fresh):
fastlane init
Set up match (optional, for code signing):
fastlane match init
fastlane match development
fastlane match appstore