{"adoption": {"forks": 719, "observed_at": "2026-08-28T04:09:50.980772+00:00", "stars": 6864}, "canonical_url": "https://ross.abutalabs.com/products/xctool", "card": {"archived": true, "artifact_type": "cli-tool", "description": "An extension for Apple's xcodebuild that makes it easier to test iOS and macOS apps.", "domain": ["developer-tools", "testing", "mobile-development"], "enriched": true, "function": ["testing", "e2e-testing", "cli", "developer-tools"], "health_score": 10, "homepage": null, "language": "Objective-C", "license": "Apache-2.0", "license_family": "permissive", "maturity": "abandoned", "member_repos": ["facebookarchive/xctool"], "name": "facebookarchive/xctool", "platform": ["cli"], "pushed_at": "2019-12-11T08:21:02+00:00", "repo": "facebookarchive/xctool", "stars": 6864, "tags": ["xcodebuild", "ios-testing", "continuous-integration", "objective-c", "archived", "command-line", "macos"], "topics": [], "urls": [], "use_cases": ["run iOS and macOS test suites faster with parallelization", "get structured JSON test results for CI systems instead of parsing xcodebuild output", "get readable colored output when running xcodebuild tests", "integrate Xcode testing into continuous integration pipelines"], "what_it_is": "xctool is a drop-in replacement for Apple's xcodebuild test command that adds parallelized test runs, structured JSON test output, and human-friendly ANSI-colored output for iOS and macOS projects. It is written in Objective-C and was developed by Facebook primarily for continuous integration workflows.", "when_to_avoid": ["you use a modern Xcode version, since building projects with xctool is deprecated and the repo is archived", "you are starting a new project - use xcodebuild with xcpretty or xcodebuild's built-in parallel testing instead"], "when_to_choose": ["you are stuck on an older Xcode (7-10 era) and need structured test output or parallel test runs", "you maintain legacy CI infrastructure already built around xctool"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/xctool", "repo": "facebookarchive/xctool", "role": "main", "score": 10}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:09:50.980772+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:41:42.608906+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "823037306c52e02eef0fbc226677e0ba7dcb7eb5e4f7b977a99f68f5b04e2718", "fetched_at": "2026-08-28T04:09:50.980772+00:00", "kind": "readme", "missing": false, "url": "https://github.com/facebookarchive/xctool"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:09:50.980772+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:41:42.608906+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "823037306c52e02eef0fbc226677e0ba7dcb7eb5e4f7b977a99f68f5b04e2718", "fetched_at": "2026-08-28T04:09:50.980772+00:00", "kind": "readme", "missing": false, "url": "https://github.com/facebookarchive/xctool"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:41:42.608906+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "823037306c52e02eef0fbc226677e0ba7dcb7eb5e4f7b977a99f68f5b04e2718", "fetched_at": "2026-08-28T04:09:50.980772+00:00", "kind": "readme", "missing": false, "url": "https://github.com/facebookarchive/xctool"}], "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:09:50.980772+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:09:50.980772+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:09:50.980772+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:41:42.608906+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "823037306c52e02eef0fbc226677e0ba7dcb7eb5e4f7b977a99f68f5b04e2718", "fetched_at": "2026-08-28T04:09:50.980772+00:00", "kind": "readme", "missing": false, "url": "https://github.com/facebookarchive/xctool"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:09:50.980772+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:09:50.980772+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:41:42.608906+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "823037306c52e02eef0fbc226677e0ba7dcb7eb5e4f7b977a99f68f5b04e2718", "fetched_at": "2026-08-28T04:09:50.980772+00:00", "kind": "readme", "missing": false, "url": "https://github.com/facebookarchive/xctool"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:09:50.980772+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:09:50.980772+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:09:50.980772+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:41:42.608906+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "823037306c52e02eef0fbc226677e0ba7dcb7eb5e4f7b977a99f68f5b04e2718", "fetched_at": "2026-08-28T04:09:50.980772+00:00", "kind": "readme", "missing": false, "url": "https://github.com/facebookarchive/xctool"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:09:50.980772+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:09:50.980772+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:41:42.608906+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "823037306c52e02eef0fbc226677e0ba7dcb7eb5e4f7b977a99f68f5b04e2718", "fetched_at": "2026-08-28T04:09:50.980772+00:00", "kind": "readme", "missing": false, "url": "https://github.com/facebookarchive/xctool"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:41:42.608906+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "823037306c52e02eef0fbc226677e0ba7dcb7eb5e4f7b977a99f68f5b04e2718", "fetched_at": "2026-08-28T04:09:50.980772+00:00", "kind": "readme", "missing": false, "url": "https://github.com/facebookarchive/xctool"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:41:42.608906+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "823037306c52e02eef0fbc226677e0ba7dcb7eb5e4f7b977a99f68f5b04e2718", "fetched_at": "2026-08-28T04:09:50.980772+00:00", "kind": "readme", "missing": false, "url": "https://github.com/facebookarchive/xctool"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:41:42.608906+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "823037306c52e02eef0fbc226677e0ba7dcb7eb5e4f7b977a99f68f5b04e2718", "fetched_at": "2026-08-28T04:09:50.980772+00:00", "kind": "readme", "missing": false, "url": "https://github.com/facebookarchive/xctool"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["archived"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4879, "days_push": 2457, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 10, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}