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.
Shared flags
Section titled “Shared flags”| Flag | Effect |
|---|---|
--project <path> |
Directory, .xcodeproj, or .xcworkspace |
--dry-run |
Print plan only |
--force |
Allow projects with XcodeGen/Tuist generator markers |
Capabilities
Section titled “Capabilities”sochi capabilities --allsochi 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.
Targets
Section titled “Targets”Requires a host application target in a folder-based project (objectVersion ≥ 77). Classic group projects: sochi migrate first.
sochi templatessochi 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.
Entitlements
Section titled “Entitlements”sochi entitlementssochi entitlements set <key> <value…> [--array] [--string]sochi entitlements add <key> <values…>sochi entitlements remove <key> [values…]Migrate
Section titled “Migrate”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+.