{"adoption": {"forks": 260, "observed_at": "2026-08-28T04:06:40.992673+00:00", "stars": 2362}, "canonical_url": "https://ross.abutalabs.com/products/gradle-recipes", "card": {"archived": false, "artifact_type": "learning-resource", "description": "Ready-to-use recipes for common build customizations that showcase the Android Gradle plugin's public APIs and DSL.", "domain": ["mobile-development", "developer-tools", "tutorials"], "enriched": true, "function": ["build-tool", "sdk", "developer-tools", "plugin-system"], "health_score": 78, "homepage": null, "language": "Kotlin", "license": null, "license_family": "other", "maturity": "active", "member_repos": ["android/gradle-recipes"], "name": "android/gradle-recipes", "platform": ["jvm", "cli"], "pushed_at": "2026-08-10T08:58:41+00:00", "repo": "android/gradle-recipes", "stars": 2362, "tags": ["android-gradle-plugin", "agp", "gradle", "sample-code", "build-customization", "variant-api", "artifact-api", "dsl", "kotlin", "google-maintained", "license-unspecified", "android", "mobile"], "topics": [], "urls": [], "use_cases": ["customize android builds with the gradle plugin api", "transform classes or manifest during an android gradle build", "add a generated source folder with agp", "create a custom build type using the agp dsl", "android gradle plugin variant api examples", "disable or select variants with beforeVariants", "migrate legacy gradle tasks to the agp artifact api"], "what_it_is": "A collection of ready-to-use recipe projects maintained by Google that demonstrate the Android Gradle Plugin's public APIs and DSL for common build customizations. Each recipe is a minimal working example (artifact transforms, variant handling, generated sources, manifest edits), with dedicated branches matching specific AGP versions.", "when_to_avoid": ["You need a production-ready plugin or library to drop into your build rather than example code", "You're looking for general Gradle build tutorials that don't involve Android", "You need reference documentation of AGP APIs instead of runnable demonstrations, or you require a permissively licensed codebase, since no license is declared in the repo metadata"], "when_to_choose": ["You're extending the Android Gradle Plugin and need working sample code for a specific API like artifact transformation or variant customization", "You want examples that match an exact AGP version by switching to its agp-* branch", "You're migrating build logic from legacy task bridging to AGP's components/variant APIs"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/gradle-recipes", "repo": "android/gradle-recipes", "role": "main", "score": 76}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:40.992673+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:36:03.377271+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3166385238128890bc10f37ee9c57855dcc6401d0e074ac5fca51089a20741c7", "fetched_at": "2026-08-28T04:06:40.992673+00:00", "kind": "readme", "missing": false, "url": "https://github.com/android/gradle-recipes"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:40.992673+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:36:03.377271+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3166385238128890bc10f37ee9c57855dcc6401d0e074ac5fca51089a20741c7", "fetched_at": "2026-08-28T04:06:40.992673+00:00", "kind": "readme", "missing": false, "url": "https://github.com/android/gradle-recipes"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:36:03.377271+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3166385238128890bc10f37ee9c57855dcc6401d0e074ac5fca51089a20741c7", "fetched_at": "2026-08-28T04:06:40.992673+00:00", "kind": "readme", "missing": false, "url": "https://github.com/android/gradle-recipes"}], "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:06:40.992673+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:40.992673+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:40.992673+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:36:03.377271+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3166385238128890bc10f37ee9c57855dcc6401d0e074ac5fca51089a20741c7", "fetched_at": "2026-08-28T04:06:40.992673+00:00", "kind": "readme", "missing": false, "url": "https://github.com/android/gradle-recipes"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:40.992673+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:40.992673+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:36:03.377271+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3166385238128890bc10f37ee9c57855dcc6401d0e074ac5fca51089a20741c7", "fetched_at": "2026-08-28T04:06:40.992673+00:00", "kind": "readme", "missing": false, "url": "https://github.com/android/gradle-recipes"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:40.992673+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:40.992673+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:40.992673+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:36:03.377271+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3166385238128890bc10f37ee9c57855dcc6401d0e074ac5fca51089a20741c7", "fetched_at": "2026-08-28T04:06:40.992673+00:00", "kind": "readme", "missing": false, "url": "https://github.com/android/gradle-recipes"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:40.992673+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:40.992673+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:36:03.377271+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3166385238128890bc10f37ee9c57855dcc6401d0e074ac5fca51089a20741c7", "fetched_at": "2026-08-28T04:06:40.992673+00:00", "kind": "readme", "missing": false, "url": "https://github.com/android/gradle-recipes"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:36:03.377271+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3166385238128890bc10f37ee9c57855dcc6401d0e074ac5fca51089a20741c7", "fetched_at": "2026-08-28T04:06:40.992673+00:00", "kind": "readme", "missing": false, "url": "https://github.com/android/gradle-recipes"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:36:03.377271+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3166385238128890bc10f37ee9c57855dcc6401d0e074ac5fca51089a20741c7", "fetched_at": "2026-08-28T04:06:40.992673+00:00", "kind": "readme", "missing": false, "url": "https://github.com/android/gradle-recipes"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:36:03.377271+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3166385238128890bc10f37ee9c57855dcc6401d0e074ac5fca51089a20741c7", "fetched_at": "2026-08-28T04:06:40.992673+00:00", "kind": "readme", "missing": false, "url": "https://github.com/android/gradle-recipes"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 97, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases", "no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2319, "days_push": 23, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 76, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}