Skip to content

Project editing

Editing goes through ProjectEditor: plan → unified diff → atomic write → verify → rollback on failure. Entitlement and Info.plist paths come from resolved xcodebuild settings.

Flag Effect
--project <path> Directory, .xcodeproj, or .xcworkspace
--dry-run Print plan only
--force Allow projects with XcodeGen/Tuist generator markers
Terminal window
sochi capabilities --all
sochi add capability <name> [values…]
sochi remove capability <name> [values…]

Names: Apple slug (push-notifications), catalog ID (PUSH_NOTIFICATIONS), or unambiguous substring. Values are for list-type capabilities (domains, groups, …). Background Modes updates Info.plist. Catalog entries that need portal approval still depend on the next automatic-signing build.

Prefer add capability when a slug exists; otherwise use entitlements.

Requires a host application target in a folder-based project (objectVersion ≥ 77). Classic group projects: sochi migrate first.

Terminal window
sochi templates
sochi add target <template> <Name> [--option key=value]…
sochi add target <Name> --type <product-type> [--point <id>] [--no-embed] [--host <app>]

Template path runs Xcode’s New Target template via TemplateEngine + TargetBuilder. --type builds a GenericTargetRequest without a template.

Terminal window
sochi entitlements
sochi entitlements set <key> <value…> [--array] [--string]
sochi entitlements add <key> <values…>
sochi entitlements remove <key> [values…]
Terminal window
sochi migrate [--project] [--dry-run] [--no-verify] [--force] [--move-files]

Converts convertible groups to synchronized folders; keeps exceptions and per-file flags when expressible. Default verification: build before/after inventories must match compiled sources and bundled product files. --move-files relocates files for virtual groups, then converts (also verified; rolled back on drift). After success, open the project in Xcode 16+.