ios-xcodegen
XcodeGen iOS workflow
Quick start
- Treat
project.yml(orproject.yaml) as the source of truth; regenerate withxcodegen generatebefore building. - Do not edit the generated
.xcodeprojdirectly; delete and regenerate as needed.
Build / Run
- For “Designed for iPad on Mac” builds, use a macOS destination with
variant=Designed for iPadwhen available. - For tests, prefer an iOS Simulator if any vendor frameworks lack Mac Catalyst support.
Tests
- Ensure the test target is added to the scheme and has a host app if required.
- If tests show 0 cases, recheck the scheme and any test plan configuration.
- If
@testable importfails, confirm the host app module name and that tests build for the same destination as the host.
Resources / Assets
- Asset catalogs and storyboards must be in the resources build phase. In XcodeGen, add them under
sourceswithbuildPhase: resources. - Enable asset symbol generation when code uses generated
ColorAsset/ImageAssetsymbols:ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOLS=YESASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS=YES
SwiftPM in CI
- If CI disables automatic dependency resolution, ensure
Package.resolvedis committed or copied to the expected location (usually.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved) before build. - Keep versions pinned in
project.ymlwhen deterministic builds are required.
App Store Connect packaging issues
- Static
.afiles must never appear under*.app/Frameworks. - XcodeGen does not support a
library:dependency key; to link a.afile, use:framework: path/to/libSomething.aembed: false
- XCFrameworks that contain static libs should also be linked only:
- set
embed: falsefor those XCFrameworks to avoid.aslices being copied intoFrameworks/.
- set
- Verify the generated project’s “Embed Frameworks” build phase contains only dynamic frameworks that must be embedded.
Diagnostics / sanity checks
- Regenerate and clean Derived Data after changing
project.yml. - After archiving, inspect the app bundle’s
Frameworks/directory; it should contain only dynamic frameworks and Swift runtime libraries.
More from vladimirbrejcha/ios-ai-skills
swiftui-simulator-ui
Run SwiftUI apps in iOS Simulator and capture screenshots for visual verification. Use when building UI, reviewing layouts, validating designs, or when you need to see what SwiftUI code looks like. Essential for any UI work requiring visual feedback.
9apple-docs-research
Use when researching or implementing anything related to Apple platforms (iOS, iPadOS, macOS, watchOS, tvOS, visionOS), Swift/Objective-C APIs, Apple frameworks, WWDC sessions, or Apple Developer Documentation. Triggers include: \"find Apple's docs\", \"latest API guidance\", \"WWDC session\", \"platform availability\", \"SwiftUI/UIKit/AppKit/Combine/AVFoundation/etc.\", or any Apple SDK coding question where authoritative docs are needed. Always use the apple-docs MCP tools for discovery and citations instead of general web search.
8apple-doc-research
Use when researching or implementing anything related to Apple platforms (iOS, iPadOS, macOS, watchOS, tvOS, visionOS), Swift/Objective-C APIs, Apple frameworks, WWDC sessions, or Apple Developer Documentation. Triggers include: \"find Apple's docs\", \"latest API guidance\", \"WWDC session\", \"platform availability\", \"SwiftUI/UIKit/AppKit/Combine/AVFoundation/etc.\", or any Apple SDK coding question where authoritative docs are needed. Always use the apple-docs MCP tools for discovery and citations instead of general web search.
5code-review
Review pull requests, commits, or diffs for high-signal engineering issues and merge risk. Use when asked to review code, audit a patch, find bugs, or provide merge readiness feedback. Focus on defects introduced by the proposed changes (correctness, security, performance, reliability, and maintainability) and report actionable findings with severity, confidence, and precise code locations.
4copywriting
When the user wants to write, rewrite, or improve marketing copy for any page — including homepage, landing pages, pricing pages, feature pages, about pages, or product pages. Also use when the user says "write copy for," "improve this copy," "rewrite this page," "marketing copy," "headline help," or "CTA copy." For email copy, see email-sequence. For popup copy, see popup-cro.
4free-tool-strategy
When the user wants to plan, evaluate, or build a free tool for marketing purposes — lead generation, SEO value, or brand awareness. Also use when the user mentions "engineering as marketing," "free tool," "marketing tool," "calculator," "generator," "interactive tool," "lead gen tool," "build a tool for leads," or "free resource." This skill bridges engineering and marketing — useful for founders and technical marketers.
3