Skip to content

Swift package guidance misclassifies .build/checkouts Xcode markers #18

@gaelic-ghost

Description

@gaelic-ghost

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions