{"adoption": {"forks": 67, "observed_at": "2026-08-28T04:05:13.187037+00:00", "stars": 1627}, "canonical_url": "https://ross.abutalabs.com/products/closh", "card": {"archived": false, "artifact_type": "cli-tool", "description": "Bash-like shell based on Clojure", "domain": ["developer-tools", "programming-languages"], "enriched": true, "function": ["cli", "interpreter", "developer-tools"], "health_score": 20, "homepage": null, "language": "Clojure", "license": "EPL-1.0", "license_family": "copyleft", "maturity": "abandoned", "member_repos": ["dundalek/closh"], "name": "dundalek/closh", "platform": ["cli"], "pushed_at": "2022-12-05T02:30:31+00:00", "repo": "dundalek/closh", "stars": 1627, "tags": ["shell", "clojure", "clojurescript", "bash-alternative", "lisp-shell", "on-hiatus", "command-line", "linux", "macos"], "topics": ["shell", "bash", "cli", "clojure", "clojurescript", "closh"], "urls": [], "use_cases": ["replace bash with a lisp-based shell", "pipe shell command output into Clojure data transformations", "write shell scripts in Clojure instead of bash", "experiment with modern shell design ideas", "manipulate structured data in the shell instead of text"], "what_it_is": "Closh is a bash-like interactive shell built on Clojure and ClojureScript, letting users mix traditional unix shell commands with Clojure code for data manipulation. It is an experimental proof-of-concept that has been on hiatus since 2022.", "when_to_avoid": ["you need a reliable daily-driver shell - the project is on hiatus and recommends fish instead", "you need robust scripting - use babashka as the author suggests", "you need production stability or active maintenance"], "when_to_choose": ["you know Clojure and want shell scripting in a familiar language", "you want to explore or hack on an experimental lisp shell", "you prefer Clojure's data manipulation functions over arcane bash syntax"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/closh", "repo": "dundalek/closh", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:13.187037+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:48:24.192653+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0fe30ed2a84f839c16a44df2a25d9248ca8b579af63133a14deb575d64483a30", "fetched_at": "2026-08-28T04:05:13.187037+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dundalek/closh"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:13.187037+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:48:24.192653+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0fe30ed2a84f839c16a44df2a25d9248ca8b579af63133a14deb575d64483a30", "fetched_at": "2026-08-28T04:05:13.187037+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dundalek/closh"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:48:24.192653+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0fe30ed2a84f839c16a44df2a25d9248ca8b579af63133a14deb575d64483a30", "fetched_at": "2026-08-28T04:05:13.187037+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dundalek/closh"}], "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:13.187037+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:13.187037+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:13.187037+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:48:24.192653+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0fe30ed2a84f839c16a44df2a25d9248ca8b579af63133a14deb575d64483a30", "fetched_at": "2026-08-28T04:05:13.187037+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dundalek/closh"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:13.187037+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:13.187037+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:48:24.192653+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0fe30ed2a84f839c16a44df2a25d9248ca8b579af63133a14deb575d64483a30", "fetched_at": "2026-08-28T04:05:13.187037+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dundalek/closh"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:13.187037+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:13.187037+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:13.187037+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:48:24.192653+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0fe30ed2a84f839c16a44df2a25d9248ca8b579af63133a14deb575d64483a30", "fetched_at": "2026-08-28T04:05:13.187037+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dundalek/closh"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:13.187037+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:13.187037+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:48:24.192653+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0fe30ed2a84f839c16a44df2a25d9248ca8b579af63133a14deb575d64483a30", "fetched_at": "2026-08-28T04:05:13.187037+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dundalek/closh"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:48:24.192653+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0fe30ed2a84f839c16a44df2a25d9248ca8b579af63133a14deb575d64483a30", "fetched_at": "2026-08-28T04:05:13.187037+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dundalek/closh"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:48:24.192653+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0fe30ed2a84f839c16a44df2a25d9248ca8b579af63133a14deb575d64483a30", "fetched_at": "2026-08-28T04:05:13.187037+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dundalek/closh"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:48:24.192653+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0fe30ed2a84f839c16a44df2a25d9248ca8b579af63133a14deb575d64483a30", "fetched_at": "2026-08-28T04:05:13.187037+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dundalek/closh"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-03T02:39:23.370411+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3228, "days_push": 1368, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}