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.
Documentation
A small contract for large source trees
Codescythe intentionally avoids framework plugins and dependency-audit breadth. It asks you to declare the source boundary, then it gives you a reviewable graph answer for dead project files and exports.
Install Codescythe, add a minimal config, run analysis, and apply supported cleanup safely.
ConfigurationUnderstand entry files, project globs, test file patterns, aliases, ignores, and unresolved imports.
FeaturesReview the analyzer, fix mode, verbose JSON, export explanations, and doctor diagnostics.
Dependency QueriesTrace somepath and allpaths results with text, JSON, Mermaid, or SVG output.
ReportsRead analyzer JSON, doctor warnings, unresolved import diagnostics, and explain-export decisions.
TroubleshootingUse doctor and verbose diagnostics to diagnose empty scans, unresolved imports, and risky ignores.
PerformanceSee the benchmark story, what Codescythe optimizes for, and how to tune large repository runs.
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.
