{"adoption": {"forks": 847, "observed_at": "2026-08-28T04:11:06.434346+00:00", "stars": 14211}, "canonical_url": "https://ross.abutalabs.com/products/explainshell", "card": {"archived": false, "artifact_type": "application", "description": "match command-line arguments to their help text", "domain": ["developer-tools", "education"], "enriched": true, "function": ["nlp", "parser", "search-engine", "web-framework"], "health_score": 97, "homepage": null, "language": "Python", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["idank/explainshell"], "name": "idank/explainshell", "platform": ["python", "self-hosted"], "pushed_at": "2026-08-26T12:51:48+00:00", "repo": "idank/explainshell", "stars": 14211, "tags": ["manpages", "shell-commands", "command-explanation", "flask", "sqlite", "bashlex", "command-line", "natural-language-processing", "web-server", "linux"], "topics": [], "urls": [], "use_cases": ["explain what a shell command does", "understand unfamiliar command-line flags", "look up what options a command supports", "self-host a command-line explanation service", "learn shell commands interactively"], "what_it_is": "explainshell is a tool with a web interface that parses manpages, extracts their options, and explains arbitrary shell command lines by matching each argument to the relevant help text. It uses bashlex to parse commands into an AST, stores processed manpages in SQLite, and serves explanations via Flask.", "when_to_avoid": ["you need general documentation search beyond manpages", "you need a library API for embedding in other apps rather than a web service"], "when_to_choose": ["you need to understand or document complex shell commands", "you want a self-hosted explainshell.com instance", "you're building tooling that maps CLI arguments to manpage help text"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/explainshell", "repo": "idank/explainshell", "role": "main", "score": 79}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:11:06.434346+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:12:43.998552+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fed56f994494fcd2706db6977a1d75335962ec74ba548ae5b4581970de9956cc", "fetched_at": "2026-08-28T04:11:06.434346+00:00", "kind": "readme", "missing": false, "url": "https://github.com/idank/explainshell"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:11:06.434346+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:12:43.998552+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fed56f994494fcd2706db6977a1d75335962ec74ba548ae5b4581970de9956cc", "fetched_at": "2026-08-28T04:11:06.434346+00:00", "kind": "readme", "missing": false, "url": "https://github.com/idank/explainshell"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:12:43.998552+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fed56f994494fcd2706db6977a1d75335962ec74ba548ae5b4581970de9956cc", "fetched_at": "2026-08-28T04:11:06.434346+00:00", "kind": "readme", "missing": false, "url": "https://github.com/idank/explainshell"}], "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:11:06.434346+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:11:06.434346+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:11:06.434346+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:12:43.998552+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fed56f994494fcd2706db6977a1d75335962ec74ba548ae5b4581970de9956cc", "fetched_at": "2026-08-28T04:11:06.434346+00:00", "kind": "readme", "missing": false, "url": "https://github.com/idank/explainshell"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:11:06.434346+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:11:06.434346+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:12:43.998552+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fed56f994494fcd2706db6977a1d75335962ec74ba548ae5b4581970de9956cc", "fetched_at": "2026-08-28T04:11:06.434346+00:00", "kind": "readme", "missing": false, "url": "https://github.com/idank/explainshell"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:11:06.434346+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:11:06.434346+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:11:06.434346+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:12:43.998552+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fed56f994494fcd2706db6977a1d75335962ec74ba548ae5b4581970de9956cc", "fetched_at": "2026-08-28T04:11:06.434346+00:00", "kind": "readme", "missing": false, "url": "https://github.com/idank/explainshell"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:11:06.434346+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:11:06.434346+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:12:43.998552+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fed56f994494fcd2706db6977a1d75335962ec74ba548ae5b4581970de9956cc", "fetched_at": "2026-08-28T04:11:06.434346+00:00", "kind": "readme", "missing": false, "url": "https://github.com/idank/explainshell"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:12:43.998552+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fed56f994494fcd2706db6977a1d75335962ec74ba548ae5b4581970de9956cc", "fetched_at": "2026-08-28T04:11:06.434346+00:00", "kind": "readme", "missing": false, "url": "https://github.com/idank/explainshell"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:12:43.998552+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fed56f994494fcd2706db6977a1d75335962ec74ba548ae5b4581970de9956cc", "fetched_at": "2026-08-28T04:11:06.434346+00:00", "kind": "readme", "missing": false, "url": "https://github.com/idank/explainshell"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:12:43.998552+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fed56f994494fcd2706db6977a1d75335962ec74ba548ae5b4581970de9956cc", "fetched_at": "2026-08-28T04:11:06.434346+00:00", "kind": "readme", "missing": false, "url": "https://github.com/idank/explainshell"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 41}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["prerelease_only"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4751, "days_push": 7, "days_rel": 181, "gap_med": null, "n_releases_24m": 1}, "score": 79, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}