← TuistCONTENT HISTORYWHAT CHANGED · RULE-BASED ANALYSIS
Update to Tuist
Snapshot Sep 30, 2026 · 23:09 UTC · version 1.0.1
Collection source: not recorded for this historical snapshot.
First saved snapshot
No earlier snapshot is available to establish a change.
Compare saved observations
Download comparison JSONFull technical diff · 0 changed fields
Full snapshot data
{
"name": "generated-projects",
"description": "Guides day-to-day work in Tuist-generated Xcode workspaces, including generation, build and test commands, and buildable folders. Use when working in a Tuist-generated project or when users mention `tuist generate`, `xcodebuild test`, or generated workspaces.",
"included_files": [],
"skill_md_contents": "---\nname: generated-projects\ndescription: Guides day-to-day work in Tuist-generated Xcode workspaces, including generation, build and test commands, and buildable folders. Use when working in a Tuist-generated project or when users mention `tuist generate`, `xcodebuild test`, or generated workspaces.\n---\n\n# Using Tuist Generated Projects\n\n## Quick Start\n\n```bash\n# Generate workspace without opening Xcode\ntuist generate --no-open\n\n# Build a scheme with xcodebuild\nxcodebuild build -workspace App.xcworkspace -scheme App\n\n# Run tests with xcodebuild\nxcodebuild test -workspace App.xcworkspace -scheme AppTests -only-testing AppTests/MyTestCase\n```\n\n## Project definition\n\n### Prefer buildable folders\n\nUse `buildableFolders` instead of `sources` and `resources` globs. Buildable folders stay synchronized with the file system, so adding or removing files does not require regeneration.\n\n```swift\nlet target = Target(\n name: \"App\",\n buildableFolders: [\n \"App/Sources\",\n \"App/Resources\",\n ]\n)\n```\n\n### Tag targets for focus\n\nUse target tags to group areas of the project, for example:\n\n- `tag:team:*`\n- `tag:feature:*`\n- `tag:layer:*`\n\nThese tags make it easier to scope generation and testing later.\n\nExample target metadata with tags:\n\n```swift\nlet target = Target(\n name: \"PaymentsUI\",\n metadata: .metadata(tags: [\n \"tag:team:commerce\",\n \"tag:feature:payments\",\n \"tag:layer:ui\",\n ])\n)\n```\n\nWhen working on a focused area, generate only what you need:\n\n```bash\ntuist generate tag:feature:payments\ntuist generate PaymentsUI PaymentsTests\n```\n\n### Align build configurations\n\nKeep build configurations aligned between the project and external dependencies. Use `PackageSettings(settings: .settings(configurations: []))` to mirror project configurations; mismatches emit warnings.\n\n## Workflows\n\n### Generate intentionally\n\n- Use `tuist generate --no-open` in automation and scripts to avoid launching Xcode.\n- Regenerate when any manifest changes (or the dependency graph changes).\n- If generation fails due to missing products, run `tuist install` to resolve dependencies and retry.\n\n### Build with xcodebuild\n\nUse `xcodebuild build` against the generated workspace and scheme.\n\n```bash\nxcodebuild build \\\n -workspace App.xcworkspace \\\n -scheme App \\\n -destination \"generic/platform=iOS Simulator\"\n```\n\n### Test with xcodebuild\n\nUse `xcodebuild test` for running tests locally. Prefer it over `tuist test` because `tuist test` regenerates the project on each invocation, which slows down iteration.\n\nTo optimize test run time:\n\n- **Use `--only-testing`** to run only the specific test suite or test case you are working on, instead of the full target.\n- **Pick the scheme with the fewest compilation targets** that still includes the test target you need. This minimizes build time before tests run.\n\n```bash\n# Run a specific test suite\nxcodebuild test \\\n -workspace App.xcworkspace \\\n -scheme AppTests \\\n -only-testing AppTests/MyTestSuite\n\n# Run a single test case\nxcodebuild test \\\n -workspace App.xcworkspace \\\n -scheme AppTests \\\n -only-testing AppTests/MyTestSuite/testMyFunction\n```\n\n## Guidelines\n\n- Keep `buildableFolders` paths aligned to the target's real file system layout.\n- Avoid overlapping `buildableFolders` with `sources` or `resources` globs in the same target.\n- Open Xcode manually when needed after running `tuist generate --no-open`.\n\n## Troubleshooting\n\n**Static side effects warnings:** adjust product types deliberately. Use `Target.product` for local targets and `PackageSettings(productTypes:)` for external products. Making everything dynamic with `.framework` can compile and run, but it may hurt launch time. Prefer static products (static frameworks or libraries) when possible and when they do not introduce side effects.\n\n**Objective-C dependency crashes:** add `-ObjC` or `-force_load` via `OTHER_LDFLAGS` on consuming targets as needed. Reference: `https://tuist.dev/en/docs/guides/features/projects/dependencies#objectivec-dependencies`.\n"
}SHA-256: 53119d8a43e70a2ed7f9a783106519f905ab3d383e0219cb5e71c5b83e5adaa9