Files
claude-code-skills-reference/iOS-APP-developer/references/xcodegen-full.md
daymade 4e3a54175e Release v1.18.0: Add iOS-APP-developer and promptfoo-evaluation skills
### Added
- **New Skill**: iOS-APP-developer v1.1.0 - iOS development with XcodeGen, SwiftUI, and SPM
  - XcodeGen project.yml configuration
  - SPM dependency resolution
  - Device deployment and code signing
  - Camera/AVFoundation debugging
  - iOS version compatibility handling
  - Library not loaded @rpath framework error fixes
  - State machine testing patterns for @MainActor classes
  - Bundled references: xcodegen-full.md, camera-avfoundation.md, swiftui-compatibility.md, testing-mainactor.md

- **New Skill**: promptfoo-evaluation v1.0.0 - LLM evaluation framework using Promptfoo
  - Promptfoo configuration (promptfooconfig.yaml)
  - Python custom assertions
  - llm-rubric for LLM-as-judge evaluations
  - Few-shot example management
  - Model comparison and prompt testing
  - Bundled reference: promptfoo_api.md

### Changed
- Updated marketplace version from 1.16.0 to 1.18.0
- Updated marketplace skills count from 23 to 25
- Updated skill-creator to v1.2.2:
  - Fixed best practices documentation URL (platform.claude.com)
  - Enhanced quick_validate.py to exclude file:// prefixed paths from validation
- Updated marketplace.json metadata description to include new skills

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-20 17:23:08 +08:00

197 lines
4.1 KiB
Markdown

# XcodeGen Complete Reference
## Full project.yml Structure
```yaml
name: ProjectName
options:
bundleIdPrefix: com.company
deploymentTarget:
iOS: "16.0"
macOS: "13.0"
xcodeVersion: "16.0"
generateEmptyDirectories: true
createIntermediateGroups: true
settings:
base:
SWIFT_VERSION: "6.0"
MARKETING_VERSION: "1.0.0"
CURRENT_PROJECT_VERSION: "1"
packages:
# Basic package
PackageName:
url: https://github.com/org/repo
from: "1.0.0"
# Exact version
ExactPackage:
url: https://github.com/org/repo
exactVersion: "2.0.0"
# Branch
BranchPackage:
url: https://github.com/org/repo
branch: main
# Local package
LocalPackage:
path: ../LocalPackage
targets:
MainApp:
type: application
platform: iOS
sources:
- path: Sources
excludes:
- "**/.DS_Store"
- "**/Tests/**"
- path: Resources
type: folder
settings:
base:
INFOPLIST_FILE: Sources/Info.plist
PRODUCT_BUNDLE_IDENTIFIER: com.company.app
ASSETCATALOG_COMPILER_APPICON_NAME: AppIcon
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME: AccentColor
LD_RUNPATH_SEARCH_PATHS: "$(inherited) @executable_path/Frameworks"
ENABLE_BITCODE: NO
CODE_SIGN_STYLE: Automatic
DEVELOPMENT_TEAM: TEAM_ID
configs:
Debug:
SWIFT_OPTIMIZATION_LEVEL: -Onone
Release:
SWIFT_OPTIMIZATION_LEVEL: -O
dependencies:
# SPM package
- package: PackageName
# SPM package with explicit product
- package: Firebase
product: FirebaseAnalytics
# Another target
- target: Framework
# System framework
- framework: UIKit.framework
# SDK
- sdk: CoreLocation.framework
preBuildScripts:
- name: "Run Script"
script: |
echo "Pre-build script"
runOnlyWhenInstalling: false
postBuildScripts:
- name: "Post Build"
script: |
echo "Post-build script"
Tests:
type: bundle.unit-test
platform: iOS
sources:
- path: Tests
dependencies:
- target: MainApp
settings:
base:
TEST_HOST: "$(BUILT_PRODUCTS_DIR)/MainApp.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/MainApp"
BUNDLE_LOADER: "$(TEST_HOST)"
```
## Target Types
| Type | Description |
|------|-------------|
| `application` | iOS/macOS app |
| `framework` | Dynamic framework |
| `staticFramework` | Static framework |
| `bundle.unit-test` | Unit test bundle |
| `bundle.ui-testing` | UI test bundle |
| `app-extension` | App extension |
| `watch2-app` | watchOS app |
| `widget-extension` | Widget extension |
## Build Settings Reference
### Common Settings
```yaml
settings:
base:
# Versioning
MARKETING_VERSION: "1.0.0"
CURRENT_PROJECT_VERSION: "1"
# Swift
SWIFT_VERSION: "6.0"
SWIFT_STRICT_CONCURRENCY: complete
# Signing
CODE_SIGN_STYLE: Automatic
DEVELOPMENT_TEAM: TEAM_ID
CODE_SIGN_IDENTITY: "Apple Development"
# Deployment
IPHONEOS_DEPLOYMENT_TARGET: "16.0"
TARGETED_DEVICE_FAMILY: "1,2" # 1=iPhone, 2=iPad
# Build
ENABLE_BITCODE: NO
DEBUG_INFORMATION_FORMAT: dwarf-with-dsym
# Paths
LD_RUNPATH_SEARCH_PATHS: "$(inherited) @executable_path/Frameworks"
```
### Per-Configuration Settings
```yaml
settings:
configs:
Debug:
SWIFT_OPTIMIZATION_LEVEL: -Onone
SWIFT_ACTIVE_COMPILATION_CONDITIONS: DEBUG
MTL_ENABLE_DEBUG_INFO: INCLUDE_SOURCE
Release:
SWIFT_OPTIMIZATION_LEVEL: -O
SWIFT_COMPILATION_MODE: wholemodule
VALIDATE_PRODUCT: YES
```
## Info.plist Keys
Common keys to add:
```xml
<key>NSCameraUsageDescription</key>
<string>Camera access description</string>
<key>NSMicrophoneUsageDescription</key>
<string>Microphone access description</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>Photo library access description</string>
<key>UIBackgroundModes</key>
<array>
<string>audio</string>
<string>location</string>
</array>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
</array>
```