{"adoption": {"forks": 186, "observed_at": "2026-08-28T04:07:58.059623+00:00", "stars": 3360}, "canonical_url": "https://ross.abutalabs.com/products/xdg-ninja", "card": {"archived": false, "artifact_type": "cli-tool", "description": "A shell script which checks your $HOME for unwanted files and directories.", "domain": ["developer-tools", "operating-systems", "self-hosted"], "enriched": true, "function": ["developer-tools", "cli", "file-system", "configuration-management"], "health_score": 74, "homepage": null, "language": "Haskell", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["b3nj5m1n/xdg-ninja"], "name": "b3nj5m1n/xdg-ninja", "platform": ["cli", "cross-platform"], "pushed_at": "2026-05-10T15:09:36+00:00", "repo": "b3nj5m1n/xdg-ninja", "stars": 3360, "tags": ["xdg-base-dir", "shell-script", "dotfiles", "home-directory-cleanup", "system-hygiene", "command-line", "linux", "macos"], "topics": ["linux", "shell", "terminal", "xdg", "xdg-basedir", "xdg-compliance"], "urls": [], "use_cases": ["clean up dotfiles cluttering my home directory", "check which programs don't follow xdg base directory spec", "find unwanted files in $HOME", "move config files to ~/.config", "audit my home directory for stray dotfiles", "make my linux home directory tidy"], "what_it_is": "A shell script that scans your $HOME directory for files and directories that should be relocated according to the XDG Base Directory specification. For each unwanted file it finds, it tells you whether the program supports moving it and how to do so.", "when_to_avoid": ["you need automatic migration of files rather than instructions to do it manually", "you're on Windows or another system without a POSIX shell environment", "you need a GUI or persistent monitoring of home directory cleanliness"], "when_to_choose": ["you want a tidy $HOME that follows the XDG Base Directory specification", "you're setting up a new Linux or macOS machine and want to keep dotfile clutter minimal", "you want actionable instructions for relocating each offending file", "you prefer a dependency-light shell script (just jq and find)"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/xdg-ninja", "repo": "b3nj5m1n/xdg-ninja", "role": "main", "score": 59}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:07:58.059623+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:40:21.312355+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c79dbf7f377162e70429bd1c9182fb7711fc0fc2259439192943a2457d5a558b", "fetched_at": "2026-08-28T04:07:58.059623+00:00", "kind": "readme", "missing": false, "url": "https://github.com/b3nj5m1n/xdg-ninja"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:07:58.059623+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:40:21.312355+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c79dbf7f377162e70429bd1c9182fb7711fc0fc2259439192943a2457d5a558b", "fetched_at": "2026-08-28T04:07:58.059623+00:00", "kind": "readme", "missing": false, "url": "https://github.com/b3nj5m1n/xdg-ninja"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:40:21.312355+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c79dbf7f377162e70429bd1c9182fb7711fc0fc2259439192943a2457d5a558b", "fetched_at": "2026-08-28T04:07:58.059623+00:00", "kind": "readme", "missing": false, "url": "https://github.com/b3nj5m1n/xdg-ninja"}], "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:07:58.059623+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:07:58.059623+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:07:58.059623+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:40:21.312355+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c79dbf7f377162e70429bd1c9182fb7711fc0fc2259439192943a2457d5a558b", "fetched_at": "2026-08-28T04:07:58.059623+00:00", "kind": "readme", "missing": false, "url": "https://github.com/b3nj5m1n/xdg-ninja"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:07:58.059623+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:07:58.059623+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:40:21.312355+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c79dbf7f377162e70429bd1c9182fb7711fc0fc2259439192943a2457d5a558b", "fetched_at": "2026-08-28T04:07:58.059623+00:00", "kind": "readme", "missing": false, "url": "https://github.com/b3nj5m1n/xdg-ninja"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:07:58.059623+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:07:58.059623+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:07:58.059623+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:40:21.312355+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c79dbf7f377162e70429bd1c9182fb7711fc0fc2259439192943a2457d5a558b", "fetched_at": "2026-08-28T04:07:58.059623+00:00", "kind": "readme", "missing": false, "url": "https://github.com/b3nj5m1n/xdg-ninja"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:07:58.059623+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:07:58.059623+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:40:21.312355+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c79dbf7f377162e70429bd1c9182fb7711fc0fc2259439192943a2457d5a558b", "fetched_at": "2026-08-28T04:07:58.059623+00:00", "kind": "readme", "missing": false, "url": "https://github.com/b3nj5m1n/xdg-ninja"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:40:21.312355+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c79dbf7f377162e70429bd1c9182fb7711fc0fc2259439192943a2457d5a558b", "fetched_at": "2026-08-28T04:07:58.059623+00:00", "kind": "readme", "missing": false, "url": "https://github.com/b3nj5m1n/xdg-ninja"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:40:21.312355+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c79dbf7f377162e70429bd1c9182fb7711fc0fc2259439192943a2457d5a558b", "fetched_at": "2026-08-28T04:07:58.059623+00:00", "kind": "readme", "missing": false, "url": "https://github.com/b3nj5m1n/xdg-ninja"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:40:21.312355+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c79dbf7f377162e70429bd1c9182fb7711fc0fc2259439192943a2457d5a558b", "fetched_at": "2026-08-28T04:07:58.059623+00:00", "kind": "readme", "missing": false, "url": "https://github.com/b3nj5m1n/xdg-ninja"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 81, "longevity": 100, "rhythm": 8}, "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": 1574, "days_push": 115, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 59, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}