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>
This commit is contained in:
parent
eba584515a
commit
9c3c85bd47
4 changed files with 251 additions and 5 deletions
13
domain-packs/ios-app/scaffold/mcp.json
Normal file
13
domain-packs/ios-app/scaffold/mcp.json
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"_comment": "Template: .mcp.json — MCP-stack for iOS-utvikling (Spor B). domain-pack: ios-app · component: scaffold. Plasseres i prosjekt-rota. Registrerer XcodeBuildMCP (headless build/test/simulator via xcodebuild CLI) og Apple mcpbridge (krever at Xcode kjører; gir tilgang til levende Xcode-context, diagnostics, SwiftUI previews). Begge er komplementære. Se patterns/xcode-mcp-toolchain.md for fullt design.",
|
||||
"mcpServers": {
|
||||
"xcodebuildmcp": {
|
||||
"command": "npx",
|
||||
"args": ["-y", "xcodebuildmcp@latest"]
|
||||
},
|
||||
"apple-xcode": {
|
||||
"command": "xcrun",
|
||||
"args": ["mcpbridge"]
|
||||
}
|
||||
}
|
||||
}
|
||||
108
domain-packs/ios-app/scaffold/project.yml
Normal file
108
domain-packs/ios-app/scaffold/project.yml
Normal file
|
|
@ -0,0 +1,108 @@
|
|||
# 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
|
||||
Loading…
Add table
Add a link
Reference in a new issue