{"adoption": {"forks": 900, "observed_at": "2026-08-28T04:10:25.423722+00:00", "stars": 8737}, "canonical_url": "https://ross.abutalabs.com/products/xcodegen", "card": {"archived": false, "artifact_type": "cli-tool", "description": "A Swift command line tool for generating your Xcode project", "domain": ["developer-tools", "cross-platform"], "enriched": true, "function": ["cli", "build-tool", "developer-tools", "configuration-management", "yaml", "json"], "health_score": 96, "homepage": null, "language": "Swift", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["yonaskolb/XcodeGen"], "name": "yonaskolb/XcodeGen", "platform": ["cli"], "pushed_at": "2026-07-16T06:42:48+00:00", "repo": "yonaskolb/XcodeGen", "stars": 8737, "tags": ["xcode", "xcodeproj", "project-generation", "ios", "swift-package-manager", "ci-friendly", "merge-conflict-free", "command-line", "automation", "macos", "swift"], "topics": ["swift", "xcode", "generator", "xcodeproject", "specification", "yaml", "xcodeproj", "cli", "ci"], "urls": [], "use_cases": ["generate xcode project from yaml spec", "remove xcodeproj merge conflicts from git", "create ios project without using xcode ui", "generate xcode schemes for different environments", "set up xcode project on ci pipeline", "share build settings across multiple targets", "create multi-platform framework project"], "what_it_is": "XcodeGen is a Swift command line tool that generates Xcode project files (.xcodeproj) from a YAML or JSON project specification and your folder structure. It eliminates committed .xcodeproj merge conflicts by regenerating projects on demand, including on CI.", "when_to_avoid": ["you prefer configuring projects visually inside Xcode", "your project relies heavily on Xcode-only features or manual project tweaks that the spec cannot express", "you work outside the Apple/Xcode ecosystem"], "when_to_choose": ["your team suffers from .xcodeproj merge conflicts", "you want project files generated reproducibly on CI", "you prefer declaring targets, schemes, and settings in readable YAML/JSON", "you frequently add or move source files and want Xcode groups synced to disk"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/xcodegen", "repo": "yonaskolb/XcodeGen", "role": "main", "score": 94}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:10:25.423722+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:25:18.282015+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "78efadcfa41fa07a5ef301d315150dbe317ce4bb828422b83bb4bc457d72c70c", "fetched_at": "2026-08-28T04:10:25.423722+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yonaskolb/XcodeGen"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:10:25.423722+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:25:18.282015+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "78efadcfa41fa07a5ef301d315150dbe317ce4bb828422b83bb4bc457d72c70c", "fetched_at": "2026-08-28T04:10:25.423722+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yonaskolb/XcodeGen"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:25:18.282015+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "78efadcfa41fa07a5ef301d315150dbe317ce4bb828422b83bb4bc457d72c70c", "fetched_at": "2026-08-28T04:10:25.423722+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yonaskolb/XcodeGen"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:10:25.423722+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:10:25.423722+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:10:25.423722+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:25:18.282015+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "78efadcfa41fa07a5ef301d315150dbe317ce4bb828422b83bb4bc457d72c70c", "fetched_at": "2026-08-28T04:10:25.423722+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yonaskolb/XcodeGen"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:10:25.423722+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:10:25.423722+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:25:18.282015+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "78efadcfa41fa07a5ef301d315150dbe317ce4bb828422b83bb4bc457d72c70c", "fetched_at": "2026-08-28T04:10:25.423722+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yonaskolb/XcodeGen"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:10:25.423722+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:10:25.423722+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:10:25.423722+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:25:18.282015+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "78efadcfa41fa07a5ef301d315150dbe317ce4bb828422b83bb4bc457d72c70c", "fetched_at": "2026-08-28T04:10:25.423722+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yonaskolb/XcodeGen"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:10:25.423722+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:10:25.423722+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:25:18.282015+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "78efadcfa41fa07a5ef301d315150dbe317ce4bb828422b83bb4bc457d72c70c", "fetched_at": "2026-08-28T04:10:25.423722+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yonaskolb/XcodeGen"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:25:18.282015+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "78efadcfa41fa07a5ef301d315150dbe317ce4bb828422b83bb4bc457d72c70c", "fetched_at": "2026-08-28T04:10:25.423722+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yonaskolb/XcodeGen"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:25:18.282015+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "78efadcfa41fa07a5ef301d315150dbe317ce4bb828422b83bb4bc457d72c70c", "fetched_at": "2026-08-28T04:10:25.423722+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yonaskolb/XcodeGen"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:25:18.282015+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "78efadcfa41fa07a5ef301d315150dbe317ce4bb828422b83bb4bc457d72c70c", "fetched_at": "2026-08-28T04:10:25.423722+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yonaskolb/XcodeGen"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 92, "longevity": 100, "rhythm": 93}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3332, "days_push": 48, "days_rel": 48, "gap_med": 19.5, "n_releases_24m": 9}, "score": 94, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}