Skip to content

T-2: GitHubIntegration SPM package skeleton #216

@kirich1409

Description

@kirich1409

Description

Create SPM package MacApp/Packages/GitHubIntegration/Package.swift:

  • swift-tools-version: 6.3
  • .swiftLanguageMode(.v6) on all targets
  • Platforms: .macOS(.v26)

Targets (internal):

  • GitHubIntegrationClient — Foundation + SharedModels only (no TCA, no SwiftUI)
  • GitHubIntegrationFeature — Client + ComposableArchitecture + SwiftUI + SharedModels

Public library target GitHubIntegration re-exports GitHubIntegrationFeature. Test target GitHubIntegrationTests (covers Client).

Pre-create placeholder files so W2 tasks modify only their own files (avoid Package.swift merge conflicts):

  • Sources/GitHubIntegrationClient/GitHubOAuthConfig.swift
  • Sources/GitHubIntegrationClient/GitHubClient.swift
  • Sources/GitHubIntegrationClient/GitHubAPIError.swift
  • Sources/GitHubIntegrationClient/Models/.keep
  • Sources/GitHubIntegrationClient/GitHubCredentialStore.swift
  • Sources/GitHubIntegrationClient/GitHubLogger.swift
  • Sources/GitHubIntegrationClient/PKCE.swift
  • Sources/GitHubIntegrationClient/GitHubAuthService.swift
  • Sources/GitHubIntegrationFeature/GitHubFeature.swift
  • Sources/GitHubIntegrationFeature/Views/.keep
  • Tests/GitHubIntegrationTests/Placeholder.swift

Each file contains an empty type or // TODO so the package compiles. Register package as a local dependency in MacApp/Relay.xcodeproj.

Spec reference

See swarm-report/github-integration-decomposition.md#t-2.

Relationships

Acceptance criteria

  • xcodebuild build -project MacApp/Relay.xcodeproj -scheme Relay -destination 'platform=macOS,arch=arm64' CODE_SIGN_IDENTITY=- passes
  • Directory structure with placeholder files exists
  • Package visible in Xcode Project Navigator
  • swiftlint lint --strict green on new package
  • xcodebuild test runs GitHubIntegrationTests without errors

Complexity

S

Suggested agent

developer-workflow:build-engineer

Module / Layer

GitHubIntegration / Package config

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions