dead-code-detector

📁 montagao/skills 📅 9 days ago
1
总安装量
1
周安装量
#42732
全站排名
安装命令
npx skills add https://github.com/montagao/skills --skill dead-code-detector

Agent 安装分布

codex 1
claude-code 1
gemini-cli 1

Skill 文档

Dead Code Detector

Detect and eliminate dead code in TypeScript/JavaScript codebases.

Quick Start

Run the automated scanner:

node ~/.claude/skills/dead-code-detector/scripts/find-dead-code.js .

Output: Console report + dead-code-report.json with all findings.

What Gets Detected

1. Unused Exports

Exported symbols never imported elsewhere in the codebase.

// src/utils/helpers.ts
export function formatDate() { ... }  // Used
export function oldFormatter() { ... }  // DEAD - never imported

False positive handling: Automatically skips:

  • Entry points (index.ts, page.tsx, convex/ functions)
  • Common type suffixes (Props, Config, Schema)
  • Default exports (may be dynamically imported)

2. Unused Dependencies

Packages in package.json never imported anywhere.

{
  "dependencies": {
    "lodash": "^4.17.21",  // DEAD - replaced by native methods
    "react": "^18.0.0"     // Used
  }
}

False positive handling: Automatically skips:

  • Dev tools: typescript, eslint, prettier, vitest, jest
  • Type packages: @types/*
  • Build tools: webpack, vite, rollup, postcss, tailwindcss

3. Unreachable Code Patterns

// Code after return
function foo() {
  return 1;
  console.log("dead");  // FLAGGED
}

// Always-false conditions
if (false) { ... }  // FLAGGED

// Stale TODOs
// TODO (2021): Fix this  // FLAGGED as stale

Manual Investigation Workflow

For findings that need verification:

Check if export is truly unused

rg "symbolName" --type ts
rg "from.*filename" --type ts  # Check imports of file

Check for dynamic imports

rg "import\(['\"].*moduleName" --type ts
rg "require\(['\"].*moduleName" --type js

Check if dependency is used in config

rg "packageName" *.config.* package.json

Framework Considerations

Framework-specific exports that look unused but aren’t:

Framework Safe to Keep
Next.js generateStaticParams, generateMetadata, exports from page.tsx/layout.tsx
Remotion Compositions in Root.tsx, calculateMetadata
Convex All convex/ function exports (deployed via API)
Express Route handlers, middleware (registered, not imported)

Cleanup Workflow

  1. Run scanner on project root
  2. Review findings – verify each is truly dead
  3. Remove code – delete unused exports and functions
  4. Remove dependenciesnpm uninstall <package>
  5. Run tests – ensure nothing broke
  6. Commit – “chore: remove dead code”

Reference

For detailed patterns and edge cases, see references/patterns.md.