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.
| Guide | What it covers |
|---|---|
| Use jscpd in CI | A failing check on GitHub Actions, GitLab CI and any other runner, with SARIF, Code Quality and metrics reports |
| Pre-commit hooks | The pre-commit framework hook, Husky, and a plain git hook |
| Fail only on new duplication | A committed baseline or a git ref as the accepted state, so old clones do not fail the build |
| Monorepos | Clones inside one package against clones across packages, with --skip-local and --skip-isolated |
| Cross-format detection | Clones between JavaScript and TypeScript, and inside Vue, Svelte, Astro and Markdown files |
| Agents | The MCP server, the agent skills and the ai reporter for Claude, Cursor, Copilot and others |
| Editors | jscpd --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 |
| Boundaries | Rules 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 |