io.github.CloudCorpRecords/deadpath

Registre officiel Autres

Find exported-but-never-used names across a module set, with import-graph proof.

Que pouvez-vous faire avec io.github.CloudCorpRecords/deadpath ?

  • find_dead_exports — Find exported names that no module

Installation

Ajoutez ceci à la configuration MCP de votre client (Claude Desktop : claude_desktop_config.json ; Cursor : .cursor/mcp.json ; VS Code et les autres utilisent la même forme « mcpServers »).

NPM package @reneturcios/deadpath
Claude Code
claude mcp add deadpath -- npx -y @reneturcios/deadpath@0.1.0 mcp
Configuration JSON (Claude Desktop, Cursor, VS Code)
{
    "mcpServers": {
        "deadpath": {
            "command": "npx",
            "args": [
                "-y",
                "@reneturcios/deadpath@0.1.0",
                "mcp"
            ]
        }
    }
}
OCI package ghcr.io/cloudcorprecords/deadpath:0.1.0
Claude Code
claude mcp add deadpath -- docker run -i --rm ghcr.io/cloudcorprecords/deadpath:0.1.0 mcp
Configuration JSON (Claude Desktop, Cursor, VS Code)
{
    "mcpServers": {
        "deadpath": {
            "command": "docker",
            "args": [
                "run",
                "-i",
                "--rm",
                "ghcr.io/cloudcorprecords/deadpath:0.1.0",
                "mcp"
            ]
        }
    }
}

Documentation

Tirée du README du projet sur GitHub, actualisée chaque semaine. Les liens ouvrent GitHub.

Sommaire
  1. deadpath
  2. CLI
  3. MCP server
  4. Docker
  5. Development
  6. License

deadpath

Codebases accumulate exports nobody uses: a helper written for a caller that was later deleted, a constant kept "just in case", a whole module that still ships because something once imported a name from it. deadpath settles the question from evidence. You hand it a module set — each module's path, the names it exports, and the imports it makes — and it works out which exported names are never imported anywhere in the set:

  • Per-module summaries — for every module, its dead export names, its total (de-duplicated) export count, and how many of its exports are used.
  • A flat dead list — every dead export as a {module, name} pair, sorted so it can drive a cleanup list or a CI check directly.
  • Set-wide totals — the total export count, the total dead count, and dead_ratio: the share of the set's exported surface that is dead, rounded to four decimals.

The proof rule is simple. An export is used when some module in the set imports that name from its module — a module importing its own names from itself counts, just like any other import. Entry modules are the one exception: mark a module entry: true and all of its exports count as used, because an entry point's exports are public surface consumed from outside the set. An import with an empty names list is a side-effect import: it runs the target module but uses none of its named exports, so it keeps nothing alive.

Imports form a closed world: every import's from must name one of the supplied modules. That is what makes a dead verdict meaningful — the graph is complete by construction, and an import pointing outside the set is a validation error naming the offending path (for example modules[0].imports[1].from must name a supplied module), not a silent gap in the proof. Malformed input of any kind — a duplicate module path, a bad exports entry, a non-boolean entry — fails the same path-naming way, and no partial report is produced. The computation is pure and local: no network, no configuration, no files read beyond the input you pass in.

CLI

npx @reneturcios/deadpath find --input args.json
npx @reneturcios/deadpath --version

args.json contains the full arguments object:

{
  "modules": [
    { "path": "src/main.ts", "exports": ["boot"], "entry": true },
    {
      "path": "src/util.ts",
      "exports": ["fmt", "parse", "legacy"],
      "imports": []
    },
    {
      "path": "src/app.ts",
      "imports": [{ "from": "src/util.ts", "names": ["fmt", "parse"] }]
    }
  ]
}

exports and imports default to [] per module, names defaults to [] per import, and entry defaults to false. Here legacy is exported by src/util.ts but imported by nobody, so the report is:

{
  "modules": [
    { "path": "src/app.ts", "dead_exports": [], "used_count": 0, "export_count": 0 },
    { "path": "src/main.ts", "dead_exports": [], "used_count": 1, "export_count": 1 },
    { "path": "src/util.ts", "dead_exports": ["legacy"], "used_count": 2, "export_count": 3 }
  ],
  "dead_exports": [
    { "module": "src/util.ts", "name": "legacy" }
  ],
  "total_exports": 4,
  "total_dead": 1,
  "dead_ratio": 0.25
}

Exit codes: 0 on success, 1 on a runtime error (including an unreadable or invalid input file, or invalid input), 2 on a usage error.

MCP server

npx -y @reneturcios/deadpath mcp

MCP client config:

{
  "mcpServers": {
    "deadpath": {
      "command": "npx",
      "args": ["-y", "@reneturcios/deadpath", "mcp"]
    }
  }
}
Tools
  • find_dead_exports — Find exported names that no module imports.

    • modules (array, required, at least one) — modules as {path, exports?, imports?, entry?} objects; path is unique across the set, each import is a {from, names?} object whose from names a supplied module, and entry: true marks a module whose exports all count as used

    Returns {modules, dead_exports, total_exports, total_dead, dead_ratio}.

Docker

docker run -i ghcr.io/cloudcorprecords/deadpath
docker run --rm -v "$PWD:/w" ghcr.io/cloudcorprecords/deadpath find --input /w/args.json

Development

npm install
npm run build   # tsc -> dist/
npm test        # tsx --test test/*.test.ts (pure local, no network)
npm run dev     # run the CLI from source

License

MIT — Copyright (c) 2026 Rene Turcios

Questions fréquentes

Qu'est-ce que io.github.CloudCorpRecords/deadpath ?

Find exported-but-never-used names across a module set, with import-graph proof.

Comment installer io.github.CloudCorpRecords/deadpath ?

Il s'exécute sur votre machine. Dans Claude Code : claude mcp add deadpath -- npx -y @reneturcios/deadpath@0.1.0 mcp. Pour les autres clients, collez la configuration JSON de cette page dans leurs réglages MCP.

Faut-il une clé API pour io.github.CloudCorpRecords/deadpath ?

Son entrée au registre n'indique aucune clé ni secret obligatoire. Certaines fonctions peuvent tout de même demander un compte auprès du service auquel il se connecte.

io.github.CloudCorpRecords/deadpath est-il open source ?

Oui. Son code est sur GitHub sous licence MIT.

Qui maintient io.github.CloudCorpRecords/deadpath ?

Il est publié par CloudCorpRecords. AI.tn le référence sans le maintenir ni le recommander.

Issu du registre MCP officiel. Être listé n'est pas une recommandation : vérifiez le code et les permissions d'un serveur avant de lui donner accès à vos données.