Guides

89 views
One task per page, with the command, the output and the settings that matter.

The reference pages say what a flag does; these pages say when to reach for it and what to do with the result.

GuideWhat it covers
Use jscpd in CIA failing check on GitHub Actions, GitLab CI and any other runner, with SARIF, Code Quality and metrics reports
Pre-commit hooksThe pre-commit framework hook, Husky, and a plain git hook
Fail only on new duplicationA committed baseline or a git ref as the accepted state, so old clones do not fail the build
MonoreposClones inside one package against clones across packages, with --skip-local and --skip-isolated
Cross-format detectionClones between JavaScript and TypeScript, and inside Vue, Svelte, Astro and Markdown files
AgentsThe MCP server, the agent skills and the ai reporter for Claude, Cursor, Copilot and others
Editorsjscpd --lsp in Neovim, Helix, Sublime Text, Emacs and JetBrains IDEs
Duplication over git history--history: one scan per commit, as a chart and a table (5.2.1+)
Dashboard and health score--dashboard and --health: one screen for a project, and one number for a README badge (5.3.0+)
Dead code--dead-code: unused files, exports, symbols and imports in JavaScript, TypeScript and Python, with confidence scores
Comparing two codebases--compare: how far a port has come, or two implementations of one app checked for parity (5.4.0+, experimental)
Semantic clones--semantic: functions that do the same job with different code, in one language or across two (5.3.3+, experimental)
Similar functions--similarity: functions with the same structure in 15 languages, renamed and lightly edited copies included, and how the score works
BoundariesRules in the config file that keep the code of a module, a folder, a file or a method inside its boundary, and fail the run when a copy shows up outside it