| Crates.io | clrd |
| lib.rs | clrd |
| version | 0.1.11 |
| created_at | 2025-12-04 14:30:08.199192+00 |
| updated_at | 2025-12-05 01:47:23.084036+00 |
| description | AI-native code maintenance tool - Transparent, Delicate, and Fast |
| homepage | |
| repository | https://github.com/relkimm/clrd |
| max_upload_size | |
| id | 1966538 |
| size | 185,229 |
AI-Native Dead Code Detection
Transparent, Delicate, and Fast
Traditional dead code tools blindly flag unused code. But modern codebases are complex—dynamic imports, barrel files, and framework magic create false positives everywhere.
clrd is different. Built for the Agentic era, it combines:
# Find dead code in seconds, not minutes
$ clrd scan
Found 23 issues in 1,847 files (142ms)
src/utils/legacy.ts
├─ unusedHelper (unused_export) — 0 references [confidence: 0.95]
└─ deprecatedFn (unused_export) — 0 references [confidence: 0.87]
src/components/Button.tsx
└─ OldButtonProps (unused_type) — 0 references [confidence: 0.92]
npx clrd scan
Or install globally:
npm install -g clrd
cargo install clrd
git clone https://github.com/relkimm/clrd.git
cd clrd
cargo build --release
Create clrd.md with usage instructions for AI agents:
clrd init
This creates clrd.md and adds references to existing claude.md, agent.md, or .cursorrules.
# Pretty output (default)
clrd scan
# JSON output for LLM consumption
clrd scan --format json
# Interactive TUI
clrd scan --format tui
# Filter by confidence
clrd scan --confidence 0.8
Tell your AI agent: "Clean up dead code"
The AI will:
clrd.md for instructionsclrd scan --format json# Preview changes (dry run)
clrd fix --dry-run
# Comment out instead of delete
clrd fix --soft
# Actually remove (requires clean git)
clrd fix --force
| Type | Description |
|---|---|
unused_export |
Exported symbols with no external references |
unused_import |
Imports never used in the file |
zombie_file |
Files never imported by others |
unreachable_function |
Functions never called |
unused_type |
Types/Interfaces never referenced |
unused_class |
Classes never instantiated |
unused_enum |
Enums never used |
Not all dead code is equal. clrd assigns confidence scores to minimize false positives:
| Score | Meaning | Recommendation |
|---|---|---|
| 0.8+ | High confidence | Safe to remove |
| 0.5-0.8 | Medium confidence | Review recommended |
| <0.5 | Low confidence | LLM judgment needed |
Factors that lower confidence:
import(), require())index.ts, main.ts)clrd is designed to work seamlessly with AI agents:
# Output JSON schema for LLM tool use
clrd schema
# The JSON output is perfect for AI consumption
clrd scan --format json --output dead-code.json
clrd - AI-native code maintenance tool
USAGE:
clrd <COMMAND>
COMMANDS:
init Create clrd.md with AI agent instructions
scan Scan for dead code
fix Remove or comment out dead code
schema Output JSON schema for LLM integration
OPTIONS:
-v, --verbose Enable verbose output
-C, --directory <DIR> Working directory
-h, --help Print help
-V, --version Print version
clrd scanOPTIONS:
-f, --format <FORMAT> Output format [default: pretty]
[values: pretty, json, compact, tui]
-e, --extensions <EXT> File extensions (comma-separated)
-i, --ignore <PATTERN> Patterns to ignore (comma-separated globs)
--include-tests Include test files in analysis
--confidence <FLOAT> Minimum confidence threshold [default: 0.5]
-o, --output <FILE> Output file (for json format)
clrd fixOPTIONS:
--dry-run Preview changes without modifying files
--soft Comment out code instead of deleting
--force Force removal (requires clean git status)
--confidence <FLOAT> Only fix items above threshold [default: 0.8]
-f, --files <FILES> Specific files to fix
By default, clrd scans: .ts, .tsx, .js, .jsx, .mjs, .cjs
# Scan only TypeScript
clrd scan --extensions ts,tsx
Default ignores: node_modules, dist, build, .git
# Add custom ignores
clrd scan --ignore "**/*.test.ts,**/*.spec.ts,**/fixtures/**"
┌─────────────────────────────────────────────────────────────────┐
│ clrd Pipeline │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 1. COLLECT 2. ANALYZE 3. DETECT │
│ ┌──────────┐ ┌──────────┐ ┌────────────┐ │
│ │FileWalker│─────▶│ Oxc │──────▶│ Reference │ │
│ │ (rayon) │ │ Parser │ │ Graph │ │
│ └──────────┘ └──────────┘ └────────────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ 1,847 files AST Analysis Dead Code Items │
│ in 50ms with exports/ with confidence │
│ imports scores │
│ │
└─────────────────────────────────────────────────────────────────┘
rayon, respects .gitignoreTested on a large TypeScript monorepo (50,000+ files):
| Tool | Time | Memory |
|---|---|---|
| clrd | 2.3s | 180MB |
| ts-prune | 45s | 1.2GB |
| knip | 38s | 890MB |
Benchmarks run on Apple M2, 16GB RAM
use clrd::Scanner;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
let scanner = Scanner::new("./src")
.with_extensions(vec!["ts".into(), "tsx".into()])
.with_confidence_threshold(0.8);
let result = scanner.scan().await?;
println!("Found {} issues", result.dead_code.len());
Ok(())
}
| Feature | clrd | ts-prune | knip | unimported |
|---|---|---|---|---|
| Speed | Instant | Slow | Moderate | Moderate |
| Confidence scoring | Yes | No | No | No |
| AI integration | Native | No | No | No |
| JSON schema | Yes | No | Partial | No |
| Interactive TUI | Yes | No | No | No |
| Zero config | Yes | Yes | No | Yes |
We welcome contributions! See CONTRIBUTING.md for guidelines.
# Clone the repo
git clone https://github.com/relkimm/clrd.git
cd clrd
# Install dependencies
cargo build
# Run tests
cargo test
# Run locally
cargo run -- scan --format pretty
MIT License - see LICENSE for details.
Built with Rust and Oxc for the Agentic era