{"adoption": {"forks": 477, "observed_at": "2026-08-28T04:10:51.789501+00:00", "stars": 12117}, "canonical_url": "https://ross.abutalabs.com/products/knip", "card": {"archived": false, "artifact_type": "cli-tool", "description": "✂️  Find unused files, dependencies and exports in your JavaScript and TypeScript projects. Knip it before you ship it!", "domain": ["developer-tools", "frontend", "web-development"], "enriched": true, "function": ["linter", "static-site-generator", "developer-tools", "dependency-audit", "code-review"], "health_score": 100, "homepage": "https://knip.dev", "language": "TypeScript", "license": "ISC", "license_family": "permissive", "maturity": "active", "member_repos": ["webpro-nl/knip"], "name": "webpro-nl/knip", "platform": ["cli", "cross-platform"], "pushed_at": "2026-08-26T15:44:47+00:00", "repo": "webpro-nl/knip", "stars": 12117, "tags": ["unused-code", "dead-code-detection", "dependency-analysis", "typescript", "monorepo", "code-hygiene", "mcp-server", "javascript", "code-quality", "nodejs"], "topics": ["dependency-analysis", "lint", "maintenance", "typescript", "unused-code", "unused-exports", "deadcode", "dependency-management", "javascript", "linter"], "urls": [], "use_cases": ["find unused dependencies in package.json", "detect dead code and unused exports in a TypeScript project", "clean up unused files in a monorepo", "prune package.json before shipping", "find which exports are never imported", "integrate dead code detection into CI"], "what_it_is": "Knip is a CLI linter that finds unused files, dependencies, and exports in JavaScript and TypeScript projects, including monorepos. It uses framework-aware entry point analysis with 150+ plugins for tools like Next.js, Vite, Jest, and Storybook.", "when_to_avoid": ["your project is not JavaScript or TypeScript", "you need general-purpose linting of code style or bugs (use ESLint instead)", "you need runtime dependency vulnerability scanning (use a security auditor instead)"], "when_to_choose": ["you maintain a JavaScript or TypeScript codebase and want to remove dead code", "you want framework-aware analysis with plugins for your build tools and test runners", "you work in a monorepo and need accurate entry point detection", "you want to keep package.json free of unused dependencies"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/knip", "repo": "webpro-nl/knip", "role": "main", "score": 95}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:10:51.789501+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:14:55.470189+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b0443f4bc7088de06acc991926f662b9ead9db1e544500826d6443da469a8971", "fetched_at": "2026-08-28T04:10:51.789501+00:00", "kind": "readme", "missing": false, "url": "https://github.com/webpro-nl/knip"}, {"content_hash": "2cc9166d3ffcafd7db935b891de2e98f90924c04044036039ccdf4a63606cc85", "fetched_at": "2026-08-29T08:12:36.471735+00:00", "kind": "homepage", "missing": false, "url": "https://knip.dev"}, {"content_hash": "683e20d505c96686224b42ac6222d93427fff9fa83c2a1163908feec3640d6b9", "fetched_at": "2026-08-29T08:12:36.481558+00:00", "kind": "site_page", "missing": false, "url": "https://knip.dev/overview/getting-started"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:10:51.789501+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:14:55.470189+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b0443f4bc7088de06acc991926f662b9ead9db1e544500826d6443da469a8971", "fetched_at": "2026-08-28T04:10:51.789501+00:00", "kind": "readme", "missing": false, "url": "https://github.com/webpro-nl/knip"}, {"content_hash": "2cc9166d3ffcafd7db935b891de2e98f90924c04044036039ccdf4a63606cc85", "fetched_at": "2026-08-29T08:12:36.471735+00:00", "kind": "homepage", "missing": false, "url": "https://knip.dev"}, {"content_hash": "683e20d505c96686224b42ac6222d93427fff9fa83c2a1163908feec3640d6b9", "fetched_at": "2026-08-29T08:12:36.481558+00:00", "kind": "site_page", "missing": false, "url": "https://knip.dev/overview/getting-started"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:14:55.470189+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b0443f4bc7088de06acc991926f662b9ead9db1e544500826d6443da469a8971", "fetched_at": "2026-08-28T04:10:51.789501+00:00", "kind": "readme", "missing": false, "url": "https://github.com/webpro-nl/knip"}, {"content_hash": "2cc9166d3ffcafd7db935b891de2e98f90924c04044036039ccdf4a63606cc85", "fetched_at": "2026-08-29T08:12:36.471735+00:00", "kind": "homepage", "missing": false, "url": "https://knip.dev"}, {"content_hash": "683e20d505c96686224b42ac6222d93427fff9fa83c2a1163908feec3640d6b9", "fetched_at": "2026-08-29T08:12:36.481558+00:00", "kind": "site_page", "missing": false, "url": "https://knip.dev/overview/getting-started"}], "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:10:51.789501+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:10:51.789501+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:10:51.789501+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:14:55.470189+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b0443f4bc7088de06acc991926f662b9ead9db1e544500826d6443da469a8971", "fetched_at": "2026-08-28T04:10:51.789501+00:00", "kind": "readme", "missing": false, "url": "https://github.com/webpro-nl/knip"}, {"content_hash": "2cc9166d3ffcafd7db935b891de2e98f90924c04044036039ccdf4a63606cc85", "fetched_at": "2026-08-29T08:12:36.471735+00:00", "kind": "homepage", "missing": false, "url": "https://knip.dev"}, {"content_hash": "683e20d505c96686224b42ac6222d93427fff9fa83c2a1163908feec3640d6b9", "fetched_at": "2026-08-29T08:12:36.481558+00:00", "kind": "site_page", "missing": false, "url": "https://knip.dev/overview/getting-started"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:10:51.789501+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:10:51.789501+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:14:55.470189+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b0443f4bc7088de06acc991926f662b9ead9db1e544500826d6443da469a8971", "fetched_at": "2026-08-28T04:10:51.789501+00:00", "kind": "readme", "missing": false, "url": "https://github.com/webpro-nl/knip"}, {"content_hash": "2cc9166d3ffcafd7db935b891de2e98f90924c04044036039ccdf4a63606cc85", "fetched_at": "2026-08-29T08:12:36.471735+00:00", "kind": "homepage", "missing": false, "url": "https://knip.dev"}, {"content_hash": "683e20d505c96686224b42ac6222d93427fff9fa83c2a1163908feec3640d6b9", "fetched_at": "2026-08-29T08:12:36.481558+00:00", "kind": "site_page", "missing": false, "url": "https://knip.dev/overview/getting-started"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:10:51.789501+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:10:51.789501+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:10:51.789501+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:14:55.470189+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b0443f4bc7088de06acc991926f662b9ead9db1e544500826d6443da469a8971", "fetched_at": "2026-08-28T04:10:51.789501+00:00", "kind": "readme", "missing": false, "url": "https://github.com/webpro-nl/knip"}, {"content_hash": "2cc9166d3ffcafd7db935b891de2e98f90924c04044036039ccdf4a63606cc85", "fetched_at": "2026-08-29T08:12:36.471735+00:00", "kind": "homepage", "missing": false, "url": "https://knip.dev"}, {"content_hash": "683e20d505c96686224b42ac6222d93427fff9fa83c2a1163908feec3640d6b9", "fetched_at": "2026-08-29T08:12:36.481558+00:00", "kind": "site_page", "missing": false, "url": "https://knip.dev/overview/getting-started"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:10:51.789501+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:10:51.789501+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:14:55.470189+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b0443f4bc7088de06acc991926f662b9ead9db1e544500826d6443da469a8971", "fetched_at": "2026-08-28T04:10:51.789501+00:00", "kind": "readme", "missing": false, "url": "https://github.com/webpro-nl/knip"}, {"content_hash": "2cc9166d3ffcafd7db935b891de2e98f90924c04044036039ccdf4a63606cc85", "fetched_at": "2026-08-29T08:12:36.471735+00:00", "kind": "homepage", "missing": false, "url": "https://knip.dev"}, {"content_hash": "683e20d505c96686224b42ac6222d93427fff9fa83c2a1163908feec3640d6b9", "fetched_at": "2026-08-29T08:12:36.481558+00:00", "kind": "site_page", "missing": false, "url": "https://knip.dev/overview/getting-started"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:14:55.470189+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b0443f4bc7088de06acc991926f662b9ead9db1e544500826d6443da469a8971", "fetched_at": "2026-08-28T04:10:51.789501+00:00", "kind": "readme", "missing": false, "url": "https://github.com/webpro-nl/knip"}, {"content_hash": "2cc9166d3ffcafd7db935b891de2e98f90924c04044036039ccdf4a63606cc85", "fetched_at": "2026-08-29T08:12:36.471735+00:00", "kind": "homepage", "missing": false, "url": "https://knip.dev"}, {"content_hash": "683e20d505c96686224b42ac6222d93427fff9fa83c2a1163908feec3640d6b9", "fetched_at": "2026-08-29T08:12:36.481558+00:00", "kind": "site_page", "missing": false, "url": "https://knip.dev/overview/getting-started"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:14:55.470189+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b0443f4bc7088de06acc991926f662b9ead9db1e544500826d6443da469a8971", "fetched_at": "2026-08-28T04:10:51.789501+00:00", "kind": "readme", "missing": false, "url": "https://github.com/webpro-nl/knip"}, {"content_hash": "2cc9166d3ffcafd7db935b891de2e98f90924c04044036039ccdf4a63606cc85", "fetched_at": "2026-08-29T08:12:36.471735+00:00", "kind": "homepage", "missing": false, "url": "https://knip.dev"}, {"content_hash": "683e20d505c96686224b42ac6222d93427fff9fa83c2a1163908feec3640d6b9", "fetched_at": "2026-08-29T08:12:36.481558+00:00", "kind": "site_page", "missing": false, "url": "https://knip.dev/overview/getting-started"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:14:55.470189+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b0443f4bc7088de06acc991926f662b9ead9db1e544500826d6443da469a8971", "fetched_at": "2026-08-28T04:10:51.789501+00:00", "kind": "readme", "missing": false, "url": "https://github.com/webpro-nl/knip"}, {"content_hash": "2cc9166d3ffcafd7db935b891de2e98f90924c04044036039ccdf4a63606cc85", "fetched_at": "2026-08-29T08:12:36.471735+00:00", "kind": "homepage", "missing": false, "url": "https://knip.dev"}, {"content_hash": "683e20d505c96686224b42ac6222d93427fff9fa83c2a1163908feec3640d6b9", "fetched_at": "2026-08-29T08:12:36.481558+00:00", "kind": "site_page", "missing": false, "url": "https://knip.dev/overview/getting-started"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 87}, "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": 1429, "days_push": 7, "days_rel": 7, "gap_med": 1.0, "n_releases_24m": 215}, "score": 95, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}