app-creator/domain-packs/ios-app/scaffold/project.yml
Kjell Tore Guttormsen 9c3c85bd47 design(app-creator): S15 — ios-app pack v0.2.0 (Spor B MCP-toolchain)
Materialiserer læringen fra Akashic S15 (første reelle iOS-bootstrap via
app-creator-pipelinen) tilbake i ios-app domain pack.

Spor B = MCP-stack-mønster for iOS-utvikling:
- XcodeBuildMCP (Sentry, github.com/getsentry/XcodeBuildMCP) — headless
  via xcodebuild CLI, ~82 verktøy med strukturerte JSON-responser
- Apple mcpbridge (innebygd i Xcode 26.3+, /Applications/Xcode.app/Contents/
  Developer/usr/bin/mcpbridge) — krever kjørende Xcode, gir tilgang til
  levende editor-context

Komplementære, ikke overlappende. Begge registreres samtidig i .mcp.json.

Endringer:
- pack.json: v0.1.0 → v0.2.0, lagt til changelog-array, registrert 3 nye
  components
- patterns/xcode-mcp-toolchain.md (NY): full pattern-dokumentasjon — hvorfor,
  komponenter, setup, gotchas (CoreSimulator-mismatch, iOS-platform-runtime,
  DEVELOPMENT_TEAM-tomt, npx vs global), forhold til Spor A
- scaffold/project.yml (NY): XcodeGen-template med iOS 17-baseline, Swift 6,
  App Group-pattern, App Privacy Details-default
- scaffold/mcp.json (NY): MCP-stack-registrerings-template

Verifisert 2026-05-14 mot Xcode 26.5, XcodeBuildMCP v2.3.x-tier,
xcrun mcpbridge --help. Apple Xcode-integrasjon dokumentert via WebSearch
(blakecrosley.com sammenligningsartikkel + getsentry/XcodeBuildMCP).

Avledet fra Akashic-instans-commit dd7d876 (bootstrap S15).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-14 21:27:57 +02:00

108 lines
3.7 KiB
YAML

# Template: project.yml — XcodeGen source of truth
# domain-pack: ios-app · component: scaffold
#
# XcodeGen genererer .xcodeproj fra denne fila. Aldri rediger project.pbxproj
# direkte — det fører til merge-konflikter og inkonsistens. project.yml
# committeres til git; .xcodeproj genereres lokalt (i .gitignore).
#
# Bruk: `xcodegen generate` etter endringer i project.yml eller filer
# i target-mapper.
#
# Installer: `brew install xcodegen`
# Docs: https://github.com/yonaskolb/XcodeGen
#
# Tilpass per app:
# - bundleIdPrefix + PRODUCT_BUNDLE_IDENTIFIER
# - DEVELOPMENT_TEAM (10-tegn fra Apple Developer Portal)
# - INFOPLIST_KEY_* etter app-spesifikke permissions/features
# - application-groups-identifier hvis widget/Live Activity-extension finnes
name: MyApp # bytt til app-navn
options:
bundleIdPrefix: com.example # bytt til ditt reverse-domain
deploymentTarget:
iOS: "17.0" # se ADR-001-mønster — iOS 17 dekker >95 % aktive enheter
xcodeVersion: "26.0" # iOS 26-SDK krav siden 2026-04-28
developmentLanguage: en # primær lokalisering
settings:
base:
SWIFT_VERSION: "6.0" # Swift 6 strict concurrency anbefalt
SUPPORTED_PLATFORMS: "iphoneos iphonesimulator"
SUPPORTS_MACCATALYST: false
TARGETED_DEVICE_FAMILY: "1" # iPhone-only; bytt til "1,2" for universal
SWIFT_STRICT_CONCURRENCY: complete
targets:
MyApp:
type: application
platform: iOS
sources:
- path: MyApp
excludes:
- "**/*.template"
resources:
- path: MyApp/Resources/Assets.xcassets
- path: MyApp/Resources/PrivacyInfo.xcprivacy # se scaffold/PrivacyInfo.xcprivacy
entitlements: # fjern hvis ingen App Group eller annet entitlement
path: MyApp/MyApp.entitlements
properties:
com.apple.security.application-groups:
- group.com.example.myapp
settings:
base:
PRODUCT_BUNDLE_IDENTIFIER: com.example.myapp
CURRENT_PROJECT_VERSION: 1
MARKETING_VERSION: "0.1.0"
CODE_SIGN_STYLE: Automatic
DEVELOPMENT_TEAM: "" # 10-tegn fra Apple Developer Portal
ENABLE_PREVIEWS: true
GENERATE_INFOPLIST_FILE: true
INFOPLIST_KEY_CFBundleDisplayName: "My App"
# Per-permission usage descriptions:
# INFOPLIST_KEY_NSLocationWhenInUseUsageDescription: "..."
# INFOPLIST_KEY_NSCameraUsageDescription: "..."
# INFOPLIST_KEY_NSMicrophoneUsageDescription: "..."
# Live Activities (hoved-appens Info.plist, IKKE extension):
# INFOPLIST_KEY_NSSupportsLiveActivities: true
INFOPLIST_KEY_UIApplicationSceneManifest_Generation: true
INFOPLIST_KEY_UILaunchScreen_Generation: true
INFOPLIST_KEY_UISupportedInterfaceOrientations: UIInterfaceOrientationPortrait
INFOPLIST_KEY_ITSAppUsesNonExemptEncryption: false # standard-HTTPS unntatt; sett true ved tilpasset krypto
ASSETCATALOG_COMPILER_APPICON_NAME: AppIcon
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME: AccentColor
SWIFT_EMIT_LOC_STRINGS: true
configs:
Debug:
ENABLE_TESTABILITY: true
MyAppTests:
type: bundle.unit-test
platform: iOS
sources:
- path: MyAppTests
dependencies:
- target: MyApp
settings:
base:
PRODUCT_BUNDLE_IDENTIFIER: com.example.myapp.tests
GENERATE_INFOPLIST_FILE: true
schemes:
MyApp:
build:
targets:
MyApp: all
MyAppTests: [test]
run:
config: Debug
test:
config: Debug
targets:
- MyAppTests
profile:
config: Release
analyze:
config: Debug
archive:
config: Release