Summary
apple-dev-skills:sync-swift-package-guidance can misclassify a plain SwiftPM package as an ambiguous package/Xcode repo when dependency checkouts under .build/checkouts contain Xcode project or workspace markers.
Repro
From SwiftASB, a plain SwiftPM package rooted at /Users/galew/Workspace/gaelic-ghost/SwiftASB, run:
uv run /Users/galew/.codex/plugins/cache/socket/apple-dev-skills/6.0.6/skills/sync-swift-package-guidance/scripts/run_workflow.py --repo-root /Users/galew/Workspace/gaelic-ghost/SwiftASB
The runner reports:
{
"is_ambiguous_repo": true,
"is_package_repo": true,
"is_xcode_repo": true,
"package_manifest": "/Users/galew/Workspace/gaelic-ghost/SwiftASB/Package.swift",
"project": "/Users/galew/Workspace/gaelic-ghost/SwiftASB/.build/checkouts/swift-collections/Xcode/Collections.xcodeproj",
"workspace": "/Users/galew/Workspace/gaelic-ghost/SwiftASB/.build/checkouts/swift-collections/Utils/swift-collections.xcworkspace"
}
Expected behavior
Repo-root classification should ignore SwiftPM build artifacts and dependency checkouts under .build/, especially .build/checkouts/**, when deciding whether the requested root is an Xcode app/project repo.
For this repo, the expected classification is:
{
"is_ambiguous_repo": false,
"is_package_repo": true,
"is_xcode_repo": false,
"package_manifest": "/Users/galew/Workspace/gaelic-ghost/SwiftASB/Package.swift"
}
Why this matters
This blocks the normal sync-swift-package-guidance path in valid Swift packages after dependencies have been resolved. Contributors then have to fall back to manual guidance sync even though the package root itself is not ambiguous.
Suggested fix
Exclude at least these repo-local generated/dependency paths from Xcode marker detection:
.build/**
.swiftpm/** if it only contains package-manager generated state
- any other configured dependency/build-output directory used by SwiftPM
The detector should still catch real root-owned Xcode markers such as *.xcodeproj, *.xcworkspace, and package-adjacent project files outside generated dependency/build directories.
Summary
apple-dev-skills:sync-swift-package-guidancecan misclassify a plain SwiftPM package as an ambiguous package/Xcode repo when dependency checkouts under.build/checkoutscontain Xcode project or workspace markers.Repro
From
SwiftASB, a plain SwiftPM package rooted at/Users/galew/Workspace/gaelic-ghost/SwiftASB, run:The runner reports:
{ "is_ambiguous_repo": true, "is_package_repo": true, "is_xcode_repo": true, "package_manifest": "/Users/galew/Workspace/gaelic-ghost/SwiftASB/Package.swift", "project": "/Users/galew/Workspace/gaelic-ghost/SwiftASB/.build/checkouts/swift-collections/Xcode/Collections.xcodeproj", "workspace": "/Users/galew/Workspace/gaelic-ghost/SwiftASB/.build/checkouts/swift-collections/Utils/swift-collections.xcworkspace" }Expected behavior
Repo-root classification should ignore SwiftPM build artifacts and dependency checkouts under
.build/, especially.build/checkouts/**, when deciding whether the requested root is an Xcode app/project repo.For this repo, the expected classification is:
{ "is_ambiguous_repo": false, "is_package_repo": true, "is_xcode_repo": false, "package_manifest": "/Users/galew/Workspace/gaelic-ghost/SwiftASB/Package.swift" }Why this matters
This blocks the normal
sync-swift-package-guidancepath in valid Swift packages after dependencies have been resolved. Contributors then have to fall back to manual guidance sync even though the package root itself is not ambiguous.Suggested fix
Exclude at least these repo-local generated/dependency paths from Xcode marker detection:
.build/**.swiftpm/**if it only contains package-manager generated stateThe detector should still catch real root-owned Xcode markers such as
*.xcodeproj,*.xcworkspace, and package-adjacent project files outside generated dependency/build directories.