{"adoption": {"forks": 241, "observed_at": "2026-08-28T04:05:32.587275+00:00", "stars": 1760}, "canonical_url": "https://ross.abutalabs.com/products/malli", "card": {"archived": false, "artifact_type": "library", "description": "High-performance data-driven data specification library for Clojure/Script.", "domain": ["developer-tools", "apis", "data-science"], "enriched": true, "function": ["serialization", "developer-tools"], "health_score": 96, "homepage": null, "language": "Clojure", "license": "EPL-2.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["metosin/malli"], "name": "metosin/malli", "platform": ["jvm", "jvm-scripting"], "pushed_at": "2026-08-21T11:41:22+00:00", "repo": "metosin/malli", "stars": 1760, "tags": ["clojure", "clojurescript", "data-validation", "schema", "-schema", "coercion", "data-transformation", "test-data-generation"], "topics": ["clojure", "clojurescript", "validation", "modelling", "transformation", "json-schema", "coercion", "inferring-schemas", "generators", "error-messages", "visualizing-schemas", "metosin-active"], "urls": [], "use_cases": ["validate clojure data against a schema", "coerce incoming api payloads to expected types", "generate  schema from clojure maps", "infer schemas from sample data", "generate test data from schemas", "add function schemas with clj-kondo or typed clojure checking", "transform and strip data before persistence", "visualize data schemas as dot or plantuml diagrams"], "what_it_is": "Malli is a high-performance, data-driven data specification library for Clojure and ClojureScript. It provides schema definitions as plain data with validation, transformation, coercion, value generation, schema inference, and conversion to JSON Schema and Swagger2.", "when_to_avoid": ["you are not working in Clojure/ClojureScript or babashka", "you need compile-time static type checking as the primary mechanism rather than runtime schemas", "you need a schema library for a non-JVM language"], "when_to_choose": ["you need fast, data-driven validation and coercion in Clojure or ClojureScript", "you want schemas as plain data that can be transformed to JSON Schema or Swagger2", "you need schema inference, value generation, or rich error messages", "you want function schemas integrated with clj-kondo or Typed Clojure"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/malli", "repo": "metosin/malli", "role": "main", "score": 85}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:32.587275+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:27:14.851017+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3e24e1829048f4e0d641c20ace5d3a45940e12b6ca681f85a6c2d6fb8e794a10", "fetched_at": "2026-08-28T04:05:32.587275+00:00", "kind": "readme", "missing": false, "url": "https://github.com/metosin/malli"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:32.587275+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:27:14.851017+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3e24e1829048f4e0d641c20ace5d3a45940e12b6ca681f85a6c2d6fb8e794a10", "fetched_at": "2026-08-28T04:05:32.587275+00:00", "kind": "readme", "missing": false, "url": "https://github.com/metosin/malli"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:27:14.851017+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3e24e1829048f4e0d641c20ace5d3a45940e12b6ca681f85a6c2d6fb8e794a10", "fetched_at": "2026-08-28T04:05:32.587275+00:00", "kind": "readme", "missing": false, "url": "https://github.com/metosin/malli"}], "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:05:32.587275+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:32.587275+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:32.587275+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:27:14.851017+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3e24e1829048f4e0d641c20ace5d3a45940e12b6ca681f85a6c2d6fb8e794a10", "fetched_at": "2026-08-28T04:05:32.587275+00:00", "kind": "readme", "missing": false, "url": "https://github.com/metosin/malli"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:32.587275+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:32.587275+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:27:14.851017+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3e24e1829048f4e0d641c20ace5d3a45940e12b6ca681f85a6c2d6fb8e794a10", "fetched_at": "2026-08-28T04:05:32.587275+00:00", "kind": "readme", "missing": false, "url": "https://github.com/metosin/malli"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:32.587275+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:32.587275+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:32.587275+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:27:14.851017+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3e24e1829048f4e0d641c20ace5d3a45940e12b6ca681f85a6c2d6fb8e794a10", "fetched_at": "2026-08-28T04:05:32.587275+00:00", "kind": "readme", "missing": false, "url": "https://github.com/metosin/malli"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:32.587275+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:32.587275+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:27:14.851017+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3e24e1829048f4e0d641c20ace5d3a45940e12b6ca681f85a6c2d6fb8e794a10", "fetched_at": "2026-08-28T04:05:32.587275+00:00", "kind": "readme", "missing": false, "url": "https://github.com/metosin/malli"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:27:14.851017+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3e24e1829048f4e0d641c20ace5d3a45940e12b6ca681f85a6c2d6fb8e794a10", "fetched_at": "2026-08-28T04:05:32.587275+00:00", "kind": "readme", "missing": false, "url": "https://github.com/metosin/malli"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:27:14.851017+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3e24e1829048f4e0d641c20ace5d3a45940e12b6ca681f85a6c2d6fb8e794a10", "fetched_at": "2026-08-28T04:05:32.587275+00:00", "kind": "readme", "missing": false, "url": "https://github.com/metosin/malli"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:27:14.851017+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3e24e1829048f4e0d641c20ace5d3a45940e12b6ca681f85a6c2d6fb8e794a10", "fetched_at": "2026-08-28T04:05:32.587275+00:00", "kind": "readme", "missing": false, "url": "https://github.com/metosin/malli"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 98, "longevity": 100, "rhythm": 61}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2665, "days_push": 12, "days_rel": 180, "gap_med": 75.5, "n_releases_24m": 7}, "score": 85, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}