Open source · MIT · zero dipendenze

RepoLens.

Repo enorme o disordinato? Non sprecare token per mapparlo. RepoLens estrae la mappa completa della codebase — indice, grafo delle dipendenze, rotte, tabelle DB — in modo deterministico, in pochi secondi, senza una sola chiamata a un LLM.

repolens — zsh
# un comando, zero installazioni, zero dipendenze
$ npx @x-quantum-tech/repolens .
→ docs/repo-map.md // indice per umani e LLM
→ docs/repo-map.json // grafo strutturato + provenienza file:line
→ docs/repo-map.html // dashboard interattiva, treemap, offline
✓ mappa generata · token LLM spesi: 0
— Il problema

Ogni sessione, l'agente
riscopre le stesse cose.

Ogni volta che un agente AI apre una codebase media, brucia centinaia di migliaia di token per ri-scoprire fatti che tra un commit e l'altro non cambiano: dove sono le rotte, quali tabelle esistono, quali variabili d'ambiente contano, qual è il file-dio del progetto.

RepoLens estrae tutto questo una volta, in modo deterministico. Poi punti il CLAUDE.md o l'AGENTS.md del progetto alla mappa, e ogni sessione parte già con il contesto in memoria — i token vanno sul compito vero, non sull'esplorazione.

Un file singolo, zero dipendenze, Node 18+.
Deterministico: stessa repo → stessa mappa. Niente allucinazioni.
Rigenerabile a comando o pre-commit: la mappa è codice, non prosa.
— Cosa accetta

Qualsiasi cartella,
qualsiasi file.

RepoLens cammina qualunque directory e inventaria ogni file — nome, dimensione, posizione, tipo. Niente è escluso a priori: salta solo le cartelle "rumore" di default (node_modules, .git, dist, build, vendor, __pycache__…), e quelle le puoi sovrascrivere via config.

I file finiscono in tre livelli di trattamento, dal più universale al più mirato.

1

Inventario

Su tutti, anche i binari

Ogni file contato e mappato per tipo. Immagini, video, PDF, font, zip vengono mappati ma non aperti.

2

Testo (auto)

Su qualsiasi file di testo

Righe di codice (LOC), linguaggio, treemap dimensionata per peso reale.

3

Estrazione profonda

Sul testo che matcha gli estrattori

Catalogo strutturato: rotte, tabelle, env, e qualunque pattern definito via regex nel config.

— Cosa ottieni

Tre output, un comando.

repo-map.md

Indice per umani e LLM

Compatto, con ogni voce come link cliccabile file#L<riga> — funziona su GitHub e VS Code.

repo-map.json

Grafo strutturato

File tree, grafo degli import, ogni riga di catalogo con provenienza file · line · link. Pronto per RAG e script.

repo-map.html

Dashboard interattiva

Treemap zoomabile, barre per linguaggio, tabelle ordinabili e cercabili. Self-contained, offline, UI in IT o EN.

— Cosa estrae

Framework-agnostic,
fuori dalla scatola.

File tree & treemap

Struttura, righe di codice e linguaggi, resi come treemap squarified.

Grafo degli import

JS/TS/Python: fan-in / fan-out, hub di dipendenze e file-dio (≥1500 righe).

Rotte HTTP

Express, Hono, Koa, Cloudflare Workers, decoratori Python — con euristica auth e file:line.

Tabelle del database

CREATE / ALTER TABLE da file SQL e SQL inline. Schema senza connessione al DB.

Variabili d'ambiente

Con conteggio dei riferimenti e posizioni nel codice.

Pagine HTML → API

Quali endpoint chiama davvero il JS di ogni pagina. Più npm script e binding Cloudflare wrangler.

Il core resta agnostico, il tuo dominio si aggancia via config: ogni extractor custom è un glob + una regex + i nomi dei campi, e ogni match diventa una riga di catalogo con provenienza file:line automatica — una tab in più nell'HTML, una sezione in più nel Markdown.

— Non solo codice

Estrae fatti
da qualsiasi testo.

Il livello 3 funziona via regex su testo — quindi non solo codice. Markdown, YAML, TOML, CSV, .env, JSON, HTML, log, SQL, OpenAPI, file di config: ogni pattern ripetuto diventa un catalogo. Gli estrattori built-in coprono cose da codebase (rotte, tabelle SQL, env var, pagine, npm script, binding wrangler), ma quelli che scrivi nel config catturano qualunque pattern, in qualunque testo.

L'output .json è già dato strutturato, pronto da dare all'AI — o a una pipeline RAG, una dashboard, uno script.

Knowledge base / vault

Front-matter e link tra note (es. un vault Obsidian) → catalogo navigabile + treemap.

Glossari / dataset

Termini da un CSV, chiavi di un dizionario, righe ripetute.

API spec

Endpoint da un openapi.yaml.

Contenuti

Tutte le H1/H2 dei documenti, indicizzate.

Config sparse

Tutte le feature-flag, i nomi-evento, i secret-name.

Documenti legali

Codici penali e civili, leggi, contratti: articoli e commi diventano un catalogo navigabile, ognuno con file:line per la citazione esatta.

— Cosa non fa ancora

Onesti sui limiti.

Non legge dentro i binari

PDF, .docx, .xlsx li vede e li mappa, ma non ne estrae il testo: servirebbe un parser dedicato. Arriverà come plugin opzionale, per non tradire lo "zero dipendenze".

Grafo dipendenze: JS/TS/Python

I "circuiti" di import valgono per quei linguaggi. Go, Rust e Java sarebbero ~15 righe di regex in più ciascuno.

Niente embedding semantico

Estrae struttura e fatti, non significato. Il chunking semantico resta lavoro per l'LLM / RAG a valle.

In una riga: RepoLens è un estrattore deterministico per qualsiasi corpus testuale — perfetto per preparare all'AI mappe di codice, ma anche di documentazione, config, dati e corpora legali.

— A cosa serve

Non solo
per gli agenti.

Onboarding agenti AI

La mappa sostituisce l'esplorazione: la sessione parte informata.

Pianificare i refactor

File-dio e hub di dipendenze dicono dove fa male.

Inventario & audit API

Ogni rotta, con metodo, hint di auth e posizione sorgente.

Onboarding umani

Dai la dashboard HTML a un nuovo dev invece di un tour.

Docs che non marciscono

Rigeneri a comando: la mappa è codice, non prosa.

Drift check in CI

Diff del JSON tra commit: nuove rotte, tabelle o env var emergono in review.

— Open source · MIT

Il codice è pubblico.

RepoLens è un tool open source di X Quantum Tech, rilasciato con licenza MIT. Un file, zero dipendenze. Prendilo, mappalo, dallo al tuo agente.

Creato da · X Quantum Tech · @x-quantum-tech/repolens su npm