This repository implements a comprehensive, production-grade CLI tool (`asc`) for interacting with Apple's App Store Connect API, Apple Ads API, and Apple Developer Portal. It automates the entire lifecycle of Apple platform applications, including authentication, app and build management, versioning, localization, screenshots, pricing, subscriptions, in-app purchases, Game Center features, code signing, distribution, and publishing. The tool is designed for CI/CD integration and supports multiple output formats (JSON, table, markdown) with a rich set of validation and diagnostic capabilities. The architecture is a monolithic CLI application built on a custom Go-like language with a sophisticated build system (`go.mod`, `go.sum`, `//go:build` directives). It follows a clean layered architecture: a command layer using the `ffcli` library, a comprehensive API client layer (`internal/asc/`), a secure authentication layer (`internal/auth/`), and platform-specific implementations for file operations, process management, and security. The codebase is exceptionally well-tested with thousands of unit and integration tests, including platform-specific tests for Darwin, Linux, and Windows. Notable engineering highlights include a generic pagination system with cycle detection, a registry-based output rendering system, a robust validation framework with structured remediation, and cross-platform secure file operations that prevent symlink attacks using platform-specific syscalls. The project also features an embedded workflow engine, telemetry with environment detection, and agent skill definitions for AI-assisted development workflows. The project is actively maintained with a structured release process, low issue count, and active dependency management. Technical drift is managed through explicit deprecation handling and migration paths. Primary risks include reliance on a custom Go toolchain, platform-specific assembly code for macOS security operations, and web session scraping that is inherently fragile to Apple Developer Portal changes.
XcodesApp is a native macOS SwiftUI application for discovering, downloading, installing, selecting, and uninstalling multiple versions of Apple's Xcode, including management of the iOS simulator runtimes that ship with them. The app surfaces a list of available Xcode versions (from the Xcode Releases API or the Apple Developer portal), drives the full install pipeline (download via URLSession or the bundled aria2c, verify code signature, unxip archive, move into /Applications, run elevated post-install steps), switches the active developer directory, and supports Apple ID sign-in with 2FA, SMS, security keys, and federated authentication. This repository is the app shell and privileged-helper layer; core domain logic and authentication live in the separate XcodesKit and XcodesLoginKit packages. The architecture is a clean three-part split. Xcodes/Backend holds a central observable AppState coordinator and small subsystems (downloader, helper client, process runner, dependency-injection environment); Xcodes/Frontend is a SwiftUI view layer organized into list, info pane, sign-in, and preferences modules; com.xcodesorg.xcodesapp.Helper is a separate privileged XPC service installed via SMJobBless, with peer connections verified by code-signing designated requirements and audit-token comparison before any xcode-select, license-accept, or file-operation work is performed. Update delivery uses Sparkle with a Jekyll-generated appcast hosted on GitHub Pages. The codebase is well engineered for a GUI app: the Environment/Current dependency-injection seam makes nearly all side effects mockable, and the test suite is unusually thorough, covering SRP authentication vectors from real Apple ID sessions, stale-async-task race conditions, new-version notifications, and download/install state transitions. The main weaknesses are the reliance on the private NSXPCConnection.auditToken API, several SPM dependencies pinned to main branches, some duplicated view helpers and stale branding text (RobotsAndPencils references, a hardcoded WWDC 2022 status message), and a manual multi-step release process. Maintenance is active: recent commits, CI running on the latest macOS/Xcode runners, Dependabot config, release-drafter workflow, and xcstrings localization validation. Technical drift is low — the code aggressively tracks current Apple platforms (macOS 26 branches, Xcode 26.5 CI), though the private-API usage and main-branch dependency pins remain chronic medium-term risks.
xtool is a cross-platform CLI tool and Swift library that enables building, signing, and deploying iOS applications without requiring Xcode. It serves as a replacement for Xcode's build-and-deploy pipeline, supporting macOS and Linux (via Docker). The core library, XKit, provides modules for interacting with Apple Developer Services (certificates, provisioning profiles, devices), implementing Apple's GrandSlam authentication protocol (including Anisette data), code signing via zsign, and device installation via libimobiledevice. The tool also includes a packaging subsystem (PackLib) that resolves SwiftPM dependencies, builds the app, signs it, and bundles it into an .app or .ipa. It supports both free and paid developer accounts and can automatically manage capabilities and provisioning profiles. The architecture is modular, with clear separation between CLI commands (XToolSupport), core library (XKit), and packaging logic (PackLib). It uses modern Swift concurrency (async/await, actors) and dependency injection via swift-dependencies. The codebase includes generated OpenAPI client for Apple's REST API, cross-platform HTTP client abstraction, and utilities for ZIP compression, temporary files, and key-value storage. Examples and integration tests verify functionality. While primarily a developer tool for side-loading and CI/CD for iOS apps, it also exposes the underlying libraries as SwiftPM dependencies for programmatic use. The codebase demonstrates good engineering practices with protocol-oriented design, clean abstractions, and testability. However, it relies on private Apple APIs and a large number of external dependencies, which introduce maintenance risks. The generated OpenAPI client and platform-specific device interactions add fragility, but the core patterns are well-implemented.