{"adoption": {"forks": 257, "observed_at": "2026-08-28T04:09:34.681170+00:00", "stars": 6057}, "canonical_url": "https://ross.abutalabs.com/products/jscpd", "card": {"archived": false, "artifact_type": "cli-tool", "description": "Copy/paste detector for programming source code, supports 223 formats. AI-ready with token-efficient reporter, skill and MCP server.", "domain": ["developer-tools", "programming-languages", "large-language-models"], "enriched": true, "function": ["developer-tools", "code-review", "cli", "mcp", "parser", "linter"], "health_score": 100, "homepage": "https://jscpd.dev", "language": "TypeScript", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["kucherenko/jscpd"], "name": "kucherenko/jscpd", "platform": ["cli", "cross-platform", "windows", "rust", "editor-plugin"], "pushed_at": "2026-08-25T13:39:04+00:00", "repo": "kucherenko/jscpd", "stars": 6057, "tags": ["copy-paste-detection", "code-duplication", "clone-detection", "dry", "code-quality", "static-analysis", "rabin-karp", "ai-reporter", "agent-skills", "ci-cd", "pre-commit-hooks", "sarif", "git-blame", "rust-rewrite", "command-line", "automation", "macos", "linux", "nodejs", "docker"], "topics": ["detector", "quality", "copy-paste", "duplicates", "cpd", "code-quality", "duplications", "clones-detection", "ai", "coding-agents", "skills", "mcp", "dry", "skill", "copy-paste-detection"], "urls": [], "use_cases": ["find duplicated code blocks across a codebase", "detect copy-pasted code in CI and fail builds above a threshold", "enforce DRY principles by measuring code duplication percentage", "let AI coding assistants check snippets for duplication via MCP", "generate HTML or SARIF duplication reports for code review", "refactor duplicated code with guided agent skills", "scan Vue, Svelte, Astro, and Markdown files for cross-format clones"], "what_it_is": "jscpd is a copy/paste detector that finds duplicated code blocks across 223+ programming languages and formats using the Rabin-Karp algorithm. Version 5 is a Rust-powered rewrite delivering a self-contained native binary 24-37x faster than the original TypeScript engine, with AI-ready reporting, agent skills, and a built-in MCP server.", "when_to_avoid": ["you need a Node.js programmatic API — only v4 (maintenance mode) provides it", "you need semantic or structural clone detection beyond token-based matching", "you rely on external LevelDB store backends, which v5 no longer supports", "you need AST-based similarity detection for renamed variables or reformatted code"], "when_to_choose": ["you need multi-language duplicate detection with 223+ supported formats", "you want a fast, self-contained native binary with no runtime dependencies", "you need CI/CD integration with thresholds, SARIF output, or pre-commit hooks", "you want AI assistants to detect and refactor duplication via MCP or agent skills", "you need git blame attribution for duplicated code"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/jscpd", "repo": "kucherenko/jscpd", "role": "main", "score": 99}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:09:34.681170+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:48:54.297420+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4a475ce11f4c1bbd920a555191a9ca0d93a4a2576bd6f75a07dc538e80d14698", "fetched_at": "2026-08-28T04:09:34.681170+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kucherenko/jscpd"}, {"content_hash": "070152369ce0d7d62bd85f170bec1a2edbc4e081a83dede52d10ed845ae139b5", "fetched_at": "2026-08-29T08:45:27.417148+00:00", "kind": "homepage", "missing": false, "url": "https://jscpd.dev"}, {"content_hash": "8b71b68a2844e6db170d07f333366a6842dca02770161016cf80f7b79253b416", "fetched_at": "2026-08-29T08:45:27.426273+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/getting-started/installation"}, {"content_hash": "81e060f79afc59535dc1d5b4d9a5e9c02db9a4bd793422da7ba62a9a36374156", "fetched_at": "2026-08-29T08:45:27.428128+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/getting-started/supported-formats"}, {"content_hash": "4b53cdfb1c33e45e9efafaeaebee14a7392479b52e990f463fe97152b5ed6e3b", "fetched_at": "2026-08-29T08:45:27.432056+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/getting-started/configuration"}, {"content_hash": "77ac9e20d7564d9adc4dac63aa9e6d82a557f441930c1e7385defcdc490de6d8", "fetched_at": "2026-08-29T08:45:27.439292+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/getting-started/agent-skill"}, {"content_hash": "179ebb325763a6b921db251e9281f990b134acf8b287431a0b3a2cd34f9f56fd", "fetched_at": "2026-08-29T08:45:27.441052+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/getting-started/migration"}, {"content_hash": "c5ff5bcf4ddc0dd8535242cac030685f5975669fcace2b3271bca3592fe03fef", "fetched_at": "2026-08-29T08:45:27.430118+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/api"}, {"content_hash": "0371bd4736655b9ce45073cd5a3ed684059522902b4aa5ddd74ae975815fecf2", "fetched_at": "2026-08-29T08:45:27.435058+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/api/mcp-server"}, {"content_hash": "97b298d777830de44b7b3e2dd9f6fc2f33c6191d774a02d6c16fe21e74495291", "fetched_at": "2026-08-29T08:45:27.437246+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/reporters"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:09:34.681170+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:48:54.297420+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4a475ce11f4c1bbd920a555191a9ca0d93a4a2576bd6f75a07dc538e80d14698", "fetched_at": "2026-08-28T04:09:34.681170+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kucherenko/jscpd"}, {"content_hash": "070152369ce0d7d62bd85f170bec1a2edbc4e081a83dede52d10ed845ae139b5", "fetched_at": "2026-08-29T08:45:27.417148+00:00", "kind": "homepage", "missing": false, "url": "https://jscpd.dev"}, {"content_hash": "8b71b68a2844e6db170d07f333366a6842dca02770161016cf80f7b79253b416", "fetched_at": "2026-08-29T08:45:27.426273+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/getting-started/installation"}, {"content_hash": "81e060f79afc59535dc1d5b4d9a5e9c02db9a4bd793422da7ba62a9a36374156", "fetched_at": "2026-08-29T08:45:27.428128+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/getting-started/supported-formats"}, {"content_hash": "4b53cdfb1c33e45e9efafaeaebee14a7392479b52e990f463fe97152b5ed6e3b", "fetched_at": "2026-08-29T08:45:27.432056+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/getting-started/configuration"}, {"content_hash": "77ac9e20d7564d9adc4dac63aa9e6d82a557f441930c1e7385defcdc490de6d8", "fetched_at": "2026-08-29T08:45:27.439292+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/getting-started/agent-skill"}, {"content_hash": "179ebb325763a6b921db251e9281f990b134acf8b287431a0b3a2cd34f9f56fd", "fetched_at": "2026-08-29T08:45:27.441052+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/getting-started/migration"}, {"content_hash": "c5ff5bcf4ddc0dd8535242cac030685f5975669fcace2b3271bca3592fe03fef", "fetched_at": "2026-08-29T08:45:27.430118+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/api"}, {"content_hash": "0371bd4736655b9ce45073cd5a3ed684059522902b4aa5ddd74ae975815fecf2", "fetched_at": "2026-08-29T08:45:27.435058+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/api/mcp-server"}, {"content_hash": "97b298d777830de44b7b3e2dd9f6fc2f33c6191d774a02d6c16fe21e74495291", "fetched_at": "2026-08-29T08:45:27.437246+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/reporters"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:48:54.297420+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4a475ce11f4c1bbd920a555191a9ca0d93a4a2576bd6f75a07dc538e80d14698", "fetched_at": "2026-08-28T04:09:34.681170+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kucherenko/jscpd"}, {"content_hash": "070152369ce0d7d62bd85f170bec1a2edbc4e081a83dede52d10ed845ae139b5", "fetched_at": "2026-08-29T08:45:27.417148+00:00", "kind": "homepage", "missing": false, "url": "https://jscpd.dev"}, {"content_hash": "8b71b68a2844e6db170d07f333366a6842dca02770161016cf80f7b79253b416", "fetched_at": "2026-08-29T08:45:27.426273+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/getting-started/installation"}, {"content_hash": "81e060f79afc59535dc1d5b4d9a5e9c02db9a4bd793422da7ba62a9a36374156", "fetched_at": "2026-08-29T08:45:27.428128+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/getting-started/supported-formats"}, {"content_hash": "4b53cdfb1c33e45e9efafaeaebee14a7392479b52e990f463fe97152b5ed6e3b", "fetched_at": "2026-08-29T08:45:27.432056+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/getting-started/configuration"}, {"content_hash": "77ac9e20d7564d9adc4dac63aa9e6d82a557f441930c1e7385defcdc490de6d8", "fetched_at": "2026-08-29T08:45:27.439292+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/getting-started/agent-skill"}, {"content_hash": "179ebb325763a6b921db251e9281f990b134acf8b287431a0b3a2cd34f9f56fd", "fetched_at": "2026-08-29T08:45:27.441052+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/getting-started/migration"}, {"content_hash": "c5ff5bcf4ddc0dd8535242cac030685f5975669fcace2b3271bca3592fe03fef", "fetched_at": "2026-08-29T08:45:27.430118+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/api"}, {"content_hash": "0371bd4736655b9ce45073cd5a3ed684059522902b4aa5ddd74ae975815fecf2", "fetched_at": "2026-08-29T08:45:27.435058+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/api/mcp-server"}, {"content_hash": "97b298d777830de44b7b3e2dd9f6fc2f33c6191d774a02d6c16fe21e74495291", "fetched_at": "2026-08-29T08:45:27.437246+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/reporters"}], "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:09:34.681170+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:09:34.681170+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:09:34.681170+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:48:54.297420+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4a475ce11f4c1bbd920a555191a9ca0d93a4a2576bd6f75a07dc538e80d14698", "fetched_at": "2026-08-28T04:09:34.681170+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kucherenko/jscpd"}, {"content_hash": "070152369ce0d7d62bd85f170bec1a2edbc4e081a83dede52d10ed845ae139b5", "fetched_at": "2026-08-29T08:45:27.417148+00:00", "kind": "homepage", "missing": false, "url": "https://jscpd.dev"}, {"content_hash": "8b71b68a2844e6db170d07f333366a6842dca02770161016cf80f7b79253b416", "fetched_at": "2026-08-29T08:45:27.426273+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/getting-started/installation"}, {"content_hash": "81e060f79afc59535dc1d5b4d9a5e9c02db9a4bd793422da7ba62a9a36374156", "fetched_at": "2026-08-29T08:45:27.428128+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/getting-started/supported-formats"}, {"content_hash": "4b53cdfb1c33e45e9efafaeaebee14a7392479b52e990f463fe97152b5ed6e3b", "fetched_at": "2026-08-29T08:45:27.432056+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/getting-started/configuration"}, {"content_hash": "77ac9e20d7564d9adc4dac63aa9e6d82a557f441930c1e7385defcdc490de6d8", "fetched_at": "2026-08-29T08:45:27.439292+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/getting-started/agent-skill"}, {"content_hash": "179ebb325763a6b921db251e9281f990b134acf8b287431a0b3a2cd34f9f56fd", "fetched_at": "2026-08-29T08:45:27.441052+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/getting-started/migration"}, {"content_hash": "c5ff5bcf4ddc0dd8535242cac030685f5975669fcace2b3271bca3592fe03fef", "fetched_at": "2026-08-29T08:45:27.430118+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/api"}, {"content_hash": "0371bd4736655b9ce45073cd5a3ed684059522902b4aa5ddd74ae975815fecf2", "fetched_at": "2026-08-29T08:45:27.435058+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/api/mcp-server"}, {"content_hash": "97b298d777830de44b7b3e2dd9f6fc2f33c6191d774a02d6c16fe21e74495291", "fetched_at": "2026-08-29T08:45:27.437246+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/reporters"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:09:34.681170+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:09:34.681170+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:48:54.297420+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4a475ce11f4c1bbd920a555191a9ca0d93a4a2576bd6f75a07dc538e80d14698", "fetched_at": "2026-08-28T04:09:34.681170+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kucherenko/jscpd"}, {"content_hash": "070152369ce0d7d62bd85f170bec1a2edbc4e081a83dede52d10ed845ae139b5", "fetched_at": "2026-08-29T08:45:27.417148+00:00", "kind": "homepage", "missing": false, "url": "https://jscpd.dev"}, {"content_hash": "8b71b68a2844e6db170d07f333366a6842dca02770161016cf80f7b79253b416", "fetched_at": "2026-08-29T08:45:27.426273+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/getting-started/installation"}, {"content_hash": "81e060f79afc59535dc1d5b4d9a5e9c02db9a4bd793422da7ba62a9a36374156", "fetched_at": "2026-08-29T08:45:27.428128+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/getting-started/supported-formats"}, {"content_hash": "4b53cdfb1c33e45e9efafaeaebee14a7392479b52e990f463fe97152b5ed6e3b", "fetched_at": "2026-08-29T08:45:27.432056+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/getting-started/configuration"}, {"content_hash": "77ac9e20d7564d9adc4dac63aa9e6d82a557f441930c1e7385defcdc490de6d8", "fetched_at": "2026-08-29T08:45:27.439292+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/getting-started/agent-skill"}, {"content_hash": "179ebb325763a6b921db251e9281f990b134acf8b287431a0b3a2cd34f9f56fd", "fetched_at": "2026-08-29T08:45:27.441052+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/getting-started/migration"}, {"content_hash": "c5ff5bcf4ddc0dd8535242cac030685f5975669fcace2b3271bca3592fe03fef", "fetched_at": "2026-08-29T08:45:27.430118+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/api"}, {"content_hash": "0371bd4736655b9ce45073cd5a3ed684059522902b4aa5ddd74ae975815fecf2", "fetched_at": "2026-08-29T08:45:27.435058+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/api/mcp-server"}, {"content_hash": "97b298d777830de44b7b3e2dd9f6fc2f33c6191d774a02d6c16fe21e74495291", "fetched_at": "2026-08-29T08:45:27.437246+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/reporters"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:09:34.681170+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:09:34.681170+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:09:34.681170+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:48:54.297420+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4a475ce11f4c1bbd920a555191a9ca0d93a4a2576bd6f75a07dc538e80d14698", "fetched_at": "2026-08-28T04:09:34.681170+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kucherenko/jscpd"}, {"content_hash": "070152369ce0d7d62bd85f170bec1a2edbc4e081a83dede52d10ed845ae139b5", "fetched_at": "2026-08-29T08:45:27.417148+00:00", "kind": "homepage", "missing": false, "url": "https://jscpd.dev"}, {"content_hash": "8b71b68a2844e6db170d07f333366a6842dca02770161016cf80f7b79253b416", "fetched_at": "2026-08-29T08:45:27.426273+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/getting-started/installation"}, {"content_hash": "81e060f79afc59535dc1d5b4d9a5e9c02db9a4bd793422da7ba62a9a36374156", "fetched_at": "2026-08-29T08:45:27.428128+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/getting-started/supported-formats"}, {"content_hash": "4b53cdfb1c33e45e9efafaeaebee14a7392479b52e990f463fe97152b5ed6e3b", "fetched_at": "2026-08-29T08:45:27.432056+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/getting-started/configuration"}, {"content_hash": "77ac9e20d7564d9adc4dac63aa9e6d82a557f441930c1e7385defcdc490de6d8", "fetched_at": "2026-08-29T08:45:27.439292+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/getting-started/agent-skill"}, {"content_hash": "179ebb325763a6b921db251e9281f990b134acf8b287431a0b3a2cd34f9f56fd", "fetched_at": "2026-08-29T08:45:27.441052+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/getting-started/migration"}, {"content_hash": "c5ff5bcf4ddc0dd8535242cac030685f5975669fcace2b3271bca3592fe03fef", "fetched_at": "2026-08-29T08:45:27.430118+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/api"}, {"content_hash": "0371bd4736655b9ce45073cd5a3ed684059522902b4aa5ddd74ae975815fecf2", "fetched_at": "2026-08-29T08:45:27.435058+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/api/mcp-server"}, {"content_hash": "97b298d777830de44b7b3e2dd9f6fc2f33c6191d774a02d6c16fe21e74495291", "fetched_at": "2026-08-29T08:45:27.437246+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/reporters"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:09:34.681170+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:09:34.681170+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:48:54.297420+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4a475ce11f4c1bbd920a555191a9ca0d93a4a2576bd6f75a07dc538e80d14698", "fetched_at": "2026-08-28T04:09:34.681170+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kucherenko/jscpd"}, {"content_hash": "070152369ce0d7d62bd85f170bec1a2edbc4e081a83dede52d10ed845ae139b5", "fetched_at": "2026-08-29T08:45:27.417148+00:00", "kind": "homepage", "missing": false, "url": "https://jscpd.dev"}, {"content_hash": "8b71b68a2844e6db170d07f333366a6842dca02770161016cf80f7b79253b416", "fetched_at": "2026-08-29T08:45:27.426273+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/getting-started/installation"}, {"content_hash": "81e060f79afc59535dc1d5b4d9a5e9c02db9a4bd793422da7ba62a9a36374156", "fetched_at": "2026-08-29T08:45:27.428128+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/getting-started/supported-formats"}, {"content_hash": "4b53cdfb1c33e45e9efafaeaebee14a7392479b52e990f463fe97152b5ed6e3b", "fetched_at": "2026-08-29T08:45:27.432056+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/getting-started/configuration"}, {"content_hash": "77ac9e20d7564d9adc4dac63aa9e6d82a557f441930c1e7385defcdc490de6d8", "fetched_at": "2026-08-29T08:45:27.439292+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/getting-started/agent-skill"}, {"content_hash": "179ebb325763a6b921db251e9281f990b134acf8b287431a0b3a2cd34f9f56fd", "fetched_at": "2026-08-29T08:45:27.441052+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/getting-started/migration"}, {"content_hash": "c5ff5bcf4ddc0dd8535242cac030685f5975669fcace2b3271bca3592fe03fef", "fetched_at": "2026-08-29T08:45:27.430118+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/api"}, {"content_hash": "0371bd4736655b9ce45073cd5a3ed684059522902b4aa5ddd74ae975815fecf2", "fetched_at": "2026-08-29T08:45:27.435058+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/api/mcp-server"}, {"content_hash": "97b298d777830de44b7b3e2dd9f6fc2f33c6191d774a02d6c16fe21e74495291", "fetched_at": "2026-08-29T08:45:27.437246+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/reporters"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:48:54.297420+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4a475ce11f4c1bbd920a555191a9ca0d93a4a2576bd6f75a07dc538e80d14698", "fetched_at": "2026-08-28T04:09:34.681170+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kucherenko/jscpd"}, {"content_hash": "070152369ce0d7d62bd85f170bec1a2edbc4e081a83dede52d10ed845ae139b5", "fetched_at": "2026-08-29T08:45:27.417148+00:00", "kind": "homepage", "missing": false, "url": "https://jscpd.dev"}, {"content_hash": "8b71b68a2844e6db170d07f333366a6842dca02770161016cf80f7b79253b416", "fetched_at": "2026-08-29T08:45:27.426273+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/getting-started/installation"}, {"content_hash": "81e060f79afc59535dc1d5b4d9a5e9c02db9a4bd793422da7ba62a9a36374156", "fetched_at": "2026-08-29T08:45:27.428128+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/getting-started/supported-formats"}, {"content_hash": "4b53cdfb1c33e45e9efafaeaebee14a7392479b52e990f463fe97152b5ed6e3b", "fetched_at": "2026-08-29T08:45:27.432056+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/getting-started/configuration"}, {"content_hash": "77ac9e20d7564d9adc4dac63aa9e6d82a557f441930c1e7385defcdc490de6d8", "fetched_at": "2026-08-29T08:45:27.439292+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/getting-started/agent-skill"}, {"content_hash": "179ebb325763a6b921db251e9281f990b134acf8b287431a0b3a2cd34f9f56fd", "fetched_at": "2026-08-29T08:45:27.441052+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/getting-started/migration"}, {"content_hash": "c5ff5bcf4ddc0dd8535242cac030685f5975669fcace2b3271bca3592fe03fef", "fetched_at": "2026-08-29T08:45:27.430118+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/api"}, {"content_hash": "0371bd4736655b9ce45073cd5a3ed684059522902b4aa5ddd74ae975815fecf2", "fetched_at": "2026-08-29T08:45:27.435058+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/api/mcp-server"}, {"content_hash": "97b298d777830de44b7b3e2dd9f6fc2f33c6191d774a02d6c16fe21e74495291", "fetched_at": "2026-08-29T08:45:27.437246+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/reporters"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:48:54.297420+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4a475ce11f4c1bbd920a555191a9ca0d93a4a2576bd6f75a07dc538e80d14698", "fetched_at": "2026-08-28T04:09:34.681170+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kucherenko/jscpd"}, {"content_hash": "070152369ce0d7d62bd85f170bec1a2edbc4e081a83dede52d10ed845ae139b5", "fetched_at": "2026-08-29T08:45:27.417148+00:00", "kind": "homepage", "missing": false, "url": "https://jscpd.dev"}, {"content_hash": "8b71b68a2844e6db170d07f333366a6842dca02770161016cf80f7b79253b416", "fetched_at": "2026-08-29T08:45:27.426273+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/getting-started/installation"}, {"content_hash": "81e060f79afc59535dc1d5b4d9a5e9c02db9a4bd793422da7ba62a9a36374156", "fetched_at": "2026-08-29T08:45:27.428128+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/getting-started/supported-formats"}, {"content_hash": "4b53cdfb1c33e45e9efafaeaebee14a7392479b52e990f463fe97152b5ed6e3b", "fetched_at": "2026-08-29T08:45:27.432056+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/getting-started/configuration"}, {"content_hash": "77ac9e20d7564d9adc4dac63aa9e6d82a557f441930c1e7385defcdc490de6d8", "fetched_at": "2026-08-29T08:45:27.439292+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/getting-started/agent-skill"}, {"content_hash": "179ebb325763a6b921db251e9281f990b134acf8b287431a0b3a2cd34f9f56fd", "fetched_at": "2026-08-29T08:45:27.441052+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/getting-started/migration"}, {"content_hash": "c5ff5bcf4ddc0dd8535242cac030685f5975669fcace2b3271bca3592fe03fef", "fetched_at": "2026-08-29T08:45:27.430118+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/api"}, {"content_hash": "0371bd4736655b9ce45073cd5a3ed684059522902b4aa5ddd74ae975815fecf2", "fetched_at": "2026-08-29T08:45:27.435058+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/api/mcp-server"}, {"content_hash": "97b298d777830de44b7b3e2dd9f6fc2f33c6191d774a02d6c16fe21e74495291", "fetched_at": "2026-08-29T08:45:27.437246+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/reporters"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:48:54.297420+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4a475ce11f4c1bbd920a555191a9ca0d93a4a2576bd6f75a07dc538e80d14698", "fetched_at": "2026-08-28T04:09:34.681170+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kucherenko/jscpd"}, {"content_hash": "070152369ce0d7d62bd85f170bec1a2edbc4e081a83dede52d10ed845ae139b5", "fetched_at": "2026-08-29T08:45:27.417148+00:00", "kind": "homepage", "missing": false, "url": "https://jscpd.dev"}, {"content_hash": "8b71b68a2844e6db170d07f333366a6842dca02770161016cf80f7b79253b416", "fetched_at": "2026-08-29T08:45:27.426273+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/getting-started/installation"}, {"content_hash": "81e060f79afc59535dc1d5b4d9a5e9c02db9a4bd793422da7ba62a9a36374156", "fetched_at": "2026-08-29T08:45:27.428128+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/getting-started/supported-formats"}, {"content_hash": "4b53cdfb1c33e45e9efafaeaebee14a7392479b52e990f463fe97152b5ed6e3b", "fetched_at": "2026-08-29T08:45:27.432056+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/getting-started/configuration"}, {"content_hash": "77ac9e20d7564d9adc4dac63aa9e6d82a557f441930c1e7385defcdc490de6d8", "fetched_at": "2026-08-29T08:45:27.439292+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/getting-started/agent-skill"}, {"content_hash": "179ebb325763a6b921db251e9281f990b134acf8b287431a0b3a2cd34f9f56fd", "fetched_at": "2026-08-29T08:45:27.441052+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/getting-started/migration"}, {"content_hash": "c5ff5bcf4ddc0dd8535242cac030685f5975669fcace2b3271bca3592fe03fef", "fetched_at": "2026-08-29T08:45:27.430118+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/api"}, {"content_hash": "0371bd4736655b9ce45073cd5a3ed684059522902b4aa5ddd74ae975815fecf2", "fetched_at": "2026-08-29T08:45:27.435058+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/api/mcp-server"}, {"content_hash": "97b298d777830de44b7b3e2dd9f6fc2f33c6191d774a02d6c16fe21e74495291", "fetched_at": "2026-08-29T08:45:27.437246+00:00", "kind": "site_page", "missing": false, "url": "https://jscpd.dev/reporters"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 98}, "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": 4844, "days_push": 8, "days_rel": 15, "gap_med": 2, "n_releases_24m": 14}, "score": 99, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}