TypeScript and JavaScript dead-code cleanup

Codescythe

A focused analyzer and remover that starts from explicit entry points, follows the import/export graph, and reports unused files and exports with deterministic behavior.

ScopeFiles, exports, unresolved imports
RuntimeRust core, CLI, Node-API packages
FitKnown source boundaries and repeatable cleanup

Fast path

Start explicit, then automate

Most teams wire Codescythe around a checked-in config, run read-only JSON in CI, and reserve fix mode for explicit cleanup branches.

{
  "$schema": "./codescythe.schema.json",
  "entry": ["src/index.ts"],
  "project": ["src/**/*.{ts,tsx}"],
  "testFilePatterns": ["**/*.test.*"],
  "ignore": ["src/generated/**"]
}

Performance

Measured on real repositories

The benchmark harness compares Codescythe and Knip against pinned real-world TypeScript repositories fetched through Bazel.

microsoft/vscode9,398 files
1.11s4.22s
grafana/grafana8,358 files
833ms9.51s
elastic/kibana90,931 files
13.61s43.04s
renovatebot/renovate2,456 files
154ms900ms