Bootstrap xcode workspace
Skill gaelic-ghost/socket/plugins/apple-dev-skills/skills/bootstrap-xcode-workspace
Bootstrap a modular Apple .xcworkspace with Apps, Packages, XcodeGen app projects, and optional services. Use for multi-app Apple codebases sharing Core Swift packages; not for one standalone project or package.From its SKILL.md
npx -y skills add gaelic-ghost/socket --skill bootstrap-xcode-workspaceAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
3 things to look at
- 6 stars6 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
- runs commandsInstructs the agent to run 2 commands, including `Run scripts/run_workflow.py first` and 1 more.
- fetches URLsInstructs the agent to fetch 3 URLs, including https://developer.apple.com/documentation/xcode/managing-multiple-projects-and-their-dependencies and 2 more.
SKILL.md
5.8 KB, ~1.3k tokens by cl100k_base, as published. Nobody here has run it
Bootstrap Xcode Workspace
Purpose
Create the root composition for a modular Apple product without pretending that a workspace, an Xcode project, an app target, and a Swift package are equivalent. The workspace owns related Xcode projects and shared schemes. Each app project owns its targets, build settings, and XcodeGen spec. Each package owns its manifest and target graph.
Use scripts/run_workflow.py to normalize the workspace contract before
creating files. XcodeGen generates each app project; create the .xcworkspace
and add the generated projects through Xcode's documented workspace flow rather
than hand-writing workspace data.
Compatibility
This is portable skill guidance and a local Python runner; it has no Codex-only
plugin hooks, MCP declarations, or custom-agent dependency. The Hermes tap
export decision is therefore no export required: Hermes can consume the
same authored SKILL.md directly, and no translation artifact is needed.
Required Shape
Product/
Product.xcworkspace/
Apps/
ProductiOS/
ProductMac/
Packages/
ProductCore/
Services/ # optional
Apps/contains one or more independently generated Xcode app projects.Packages/contains standalone SwiftPM packages, each withPackage.swift.Services/is optional and contains a server sibling, never an app target or an implicit Apple build dependency.
Workflow
- Collect
name,destination,app_topology, app platforms, and optional service selection. Runscripts/run_workflow.pyfirst. - Apply the Apple docs gate with
explore-apple-swift-docs. Use Xcode MCPDocumentationSearchfirst; use Dash'sXcodeGen : ProjectSpecdocset when XcodeGen detail is needed. - Choose topology:
- Default to
separate-projectsfor independently shipped or materially platform-specific apps. Create one XcodeGen project per app underApps/. - Use
multiplatform-targetonly when iOS, macOS, tvOS, or visionOS share app identity and lifecycle. Keep watchOS in a separate target/project.
- Default to
- Create each Core package under
Packages/withbootstrap-swift-package. Make reusable modules package products; do not use Xcode groups as module boundaries. - Create each app project with
bootstrap-xcode-app-project. For a workspace project, set XcodeGenoptions.schemePathPrefix: "../"; retain the default standalone value for projects that are not opened from a workspace. - In every consuming app's
project.yml, declare the local package in the top-levelpackagesmap and link the required product from the app target'sdependencies. A workspace does not replace that per-project declaration. - In Xcode, create
<Name>.xcworkspaceat the root and add each.xcodeprojat workspace root level. Open the workspace, not an individual project, for product-wide work. - Add an optional service under
Services/only after selecting it:- Hummingbird:
bootstrap-hummingbird-service. - Vapor:
bootstrap-vapor-service. - F#:
choose-fsharp-web-framework, thenbuild-fsharp-projectand the Azure deployment handoff.
- Hummingbird:
- Validate packages and app schemes serially. Use
xcode-build-run-workflowfor workspace/scheme execution andxcode-testing-workflowfor Xcode-native test work.
Dependency And Navigator Rules
- Use a local Swift package for shared Core code. Its
Package.swiftis the source of truth for targets and products. - Use an Xcode cross-project reference only when one
.xcodeprojmust depend on a target from another.xcodeproj; declare it with XcodeGenprojectReferencesand aProjectName/TargetNamedependency. - Use filesystem directories for organization. A group only organizes the Project navigator. A folder reference is for a bundle-preserved resource directory, not ordinary Swift source.
- For Xcode 16 project formats, prefer broad
syncedFolderroots for ordinary app source. UseexplicitFoldersonly when a child must intentionally remain a folder reference. - Keep
project.yml,.xcconfig, entitlements, schemes, and generated project diffs owned by their documented source files. Never hand-edit.pbxproj.
Inputs
name: required product and workspace name.destination: parent directory, default..app_topology:separate-projects(default) ormultiplatform-target.platforms: comma-separated app platforms; defaultios,macos.service:none(default),hummingbird,vapor, orfsharp-azure.dry_run: emit the normalized composition contract without creating files.
Guards And Handoffs
- Stop when the requested root already contains non-ignorable files.
- Stop when
multiplatform-targetincludes watchOS; create a separate watchOS target/project instead. - Do not add packages, services, or projects to the workspace merely for visual symmetry. Add only real dependency or navigation surfaces.
- Do not make a backend part of an Apple app's Xcode target graph.
- Hand off existing workspace guidance to
sync-xcode-workspace-guidance. - Hand off one existing app project to
sync-xcode-project-guidanceand one package tosync-swift-package-guidance.
References
references/workspace-shape.md- Apple: managing multiple projects and dependencies
- Apple: organizing code with local packages
- XcodeGen Project Spec
What ships with it: 3 files
6.1 KB alongside SKILL.md, 1 of them executable
agents/
- openai.yaml216 B
references/
- workspace-shape.md1.6 KB
scripts/
- run_workflow.pyruns4.2 KB
Gives 0 of the 12 instructions most project setup skills give in ~1.3k tokens
Counted across 1,553 of the 3,091 authors here whose files we hold, read 2026-09-06
- Write the configuration filein 36 of 1553
- Create the directory structurein 35 of 1553, across 33 files
- Verify the setupin 31 of 1553, across 28 files
- Run the setup scriptin 30 of 1553, across 29 files
- Pre-determine the required sample sizein 29 of 1553, across 12 files
- Check if the configuration already existsin 29 of 1553
- Document every testin 26 of 1553, across 10 files
- Start with a hypothesisin 26 of 1553, across 11 files
- Ask one question at a timein 22 of 1553
- Test a single variable per testin 21 of 1553, across 9 files
- Read product marketing context before asking questionsin 19 of 1553, across 8 files
- Do not peek and stop earlyin 18 of 1553, across 7 files
Said here and by no other author read
- Run scripts/run-workflow.fsx before creating files.
- Never hand-edit .pbxproj.
- Run just setup after initializing Git.
- Use just align to refresh guidance and regenerate.
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.