A code quality analyzer for JavaScript/TypeScript vibe coders.
Building with Cursor, Claude, or ChatGPT? jscan performs structural analysis to keep your codebase maintainable.
Working with Python? Check out pyscn
# Run analysis without installation
npx jscan analyze src/jscan-demo.mp4
One command scores your whole codebase (0-100 with an A-F grade) and generates an HTML report that shows what to fix first.
jscan looks at your code from five angles:
- π§Ή Dead code - unreachable code, unused imports/exports, and orphan files you can safely delete
- π Duplicate code - copy-pasted and structurally similar code worth merging (Type 1-4 clone detection)
- π Complexity - functions that are hard to read and test (cyclomatic complexity)
- ποΈ Dependencies - circular imports and unstable module dependencies (Martin metrics, DOT graph export)
- π§© Class design - classes that depend on too much (CBO coupling)
Parallel execution β’ Built with Go + tree-sitter
jscan ships Agent Skills that teach AI coding agents when and how to run each analysis: health checks, refactoring, architecture review, and CI-friendly reports.
uvx add-skills ludo-technologies/jscanThis installs the Skills into your project. They work with Claude Code, Cursor, Codex, Gemini CLI, and many other agents (add --agent cursor etc. to target one, --global for all projects).
Then just ask your agent:
-
"Analyze the code quality of the src/ directory"
-
"Find duplicate code and help me refactor it"
-
"Show me complex code and help me simplify it"
claude plugin marketplace add ludo-technologies/jscan
claude plugin install jscan@jscan-marketplaceThe plugin installs the same Agent Skills through Claude Code's plugin system.
# Install globally with npm (recommended)
npm install -g jscanAlternative installation methods
git clone https://github.com/ludo-technologies/jscan.git
cd jscan
go build -o jscan ./cmd/jscango install github.com/ludo-technologies/jscan/cmd/jscan@latestRun comprehensive analysis with HTML report
jscan analyze src/ # All analyses with HTML report
jscan analyze --format json src/ # Generate JSON report
jscan analyze --select complexity src/ # Only complexity analysis
jscan analyze --select deadcode src/ # Only dead code analysis
jscan analyze --select complexity,deadcode,clone src/ # Multiple analysesFast CI-friendly quality gate
jscan check src/ # Quick pass/fail checkCreate configuration file
jscan init # Generate jscan.config.jsonDependency visualization
jscan deps src/ --format dot | dot -Tsvg -o deps.svgπ‘ Run
jscan --helporjscan <command> --helpfor complete options
Create a jscan.config.json or .jscanrc.json in your project root:
{
"complexity": {
"low_threshold": 10,
"medium_threshold": 20,
"enabled": true
},
"dead_code": {
"enabled": true,
"min_severity": "warning"
},
"output": {
"format": "text",
"show_details": true
}
}βοΈ Run
jscan initto generate a configuration file with core options
- TypeScript-specific analysis features (type-aware dead code, generic complexity)
- Vue / JSX single-file component support
- IDE / editor integrations
- Watch mode for continuous analysis
π Development Guide β’ Architecture β’ Testing β’ Contributing
For commercial support, custom integrations, or consulting services, contact us at contact@ludo-tech.org
MIT License β see LICENSE
Built with β€οΈ using Go and tree-sitter