agentleFS
eabzeabz/tirith/.agents/skills/dead-code/SKILL.md

dead-code

Skill4 starsChanged 33 days agoMITView on GitHub

Find and remove dead code and unused files — unreferenced images, videos, fonts and PDFs in public/, superseded media versions, orphan scripts and docs, unused exports, components and dependencies. Use when the user asks to clean up, remove unused/dead code or assets, shrink the repo, or after a redesign or refactor that replaced media, pages or components.

7 other projects use a version of this.

Adopted by

Most recently taken up by

  • Other versions7 projects use a version of this.

    Word for word · 0

    None found.

    Edited · 0

    None found.

    Wrote their own version · 7

    1. parcadei/Continuous-Claude★ 3.9ksame name
    2. parcadei/Continuous-Claude-v2★ 3.9ksame name
    3. parcadei/Continuous-Claude-v3★ 3.9ksame name
    4. kaeawc/auto-mobile★ 56same name
    5. Pradnyeshp/Claude-Skills★ 2same name
    6. vhmarquez/argo★ 1same name
    7. Jinbae10/skills★ 0same name

    How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.

  • In this repository4 other files it gives its agents.

The file

We split this skill into the rules it gives an agent

1 rule. 0 are common, 1 is distinctive, and 0 are very specific to this project.

  • 0

    Common

    Most of the 4 edited versions we read keep these.

  • 1

    Distinctive

    This author's own choices. Worth a look.

  • 0

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    No reescribas historial de git para quitar binarios pesados salvo que el usuario lo pida explícitamente.

    line 85

“Common” is measured: kept by at least 6 in 10 of the 4 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Dead code

Borra lo que ya nada usa: código, dependencias, imágenes, videos, scripts y docs. Cada archivo que se borra es uno menos que leer, mantener, desplegar y confundir con el vigente.

Flujo

Sigue los pasos en orden. No borres nada antes de que el usuario vea el reporte.

1. Escanear

Corre los dos escáneres (solo leen, nunca editan):

bun run knip                                             # código: archivos, exports, tipos y dependencias sin uso
node .agents/skills/dead-code/scripts/scan.mjs .         # assets, scripts y docs sin referencia
node .agents/skills/dead-code/scripts/scan.mjs . --json  # lo mismo, para triage

scan.mjs cruza cada archivo de public/ (y los assets en src/, app/, content/) contra el código y la config. Los clasifica en:

GrupoSignificadoAcción por defecto
Sin referenciaNi el código ni los docs lo mencionanCandidato a borrar
Solo mencionados en docsSolo aparece en docs o manifiestos de trabajo; suele ser una versión anterior de un medio ya reemplazadoCandidato a borrar tras confirmar cuál es la versión vigente
Posible ruta dinámicaCoincide con un prefijo armado en tiempo de ejecución (`/media/${slug}.webp`)Revisar a mano: abrir el código que arma la ruta
Cargados por convenciónfavicon, icon, robots, sitemap, manifest, OG, .well-knownConservar
Scripts que nada ejecutaNo están en package.json, docs ni códigoPreguntar si es herramienta manual vigente
Docs que nadie enlazaNingún otro .md los enlazaEnlazar desde docs/README.md o borrar si ya no aplica

También revisa con du -sh * .[!.]* | sort -h si hay carpetas grandes fuera de public/ (exportaciones, respaldos, salidas generadas) que deberían ignorarse o borrarse.

1b. Lo que knip no ve

Knip solo encuentra archivos, exports y dependencias sin uso. El código muerto más grande suele estar en otro lado; búscalo con estas técnicas:

  • Alcanzabilidad desde el punto de entrada (Python y scripts). Knip no analiza Python. Para cada tools/**/*.py o script usado por package.json, parsea el archivo (python3 -c "import ast…") y recorre el grafo de llamadas desde main()/el bloque if __name__: las funciones y constantes no alcanzables son muertas, aunque se llamen entre sí (un bloque muerto que se autorreferencia no aparece como aislado en ningún grafo).
  • Variantes de componentes. Para cada cva(...)/mapa de variantes (variant, size, tone), cuenta usos reales con grep (variant="x", size="x", y props dinámicos). Borra variantes sin uso y su CSS/tokens; fusiona variantes con clases idénticas.
  • Duplicados entre archivos. Busca funciones, constantes y tipos con el mismo nombre en varios archivos (grep -rhoE "function \w+|const \w+ =" src | sort | uniq -c | sort -rn) y compara sus cuerpos; knip no los ve porque cada copia es local a su archivo. Consolida en un módulo dentro del mismo repo (nunca entre repos).
  • Helpers mecánicos. Funciones con sufijos numéricos (…2, …3) o con 10+ parámetros desestructurados suelen ser extracciones automáticas; inlinearlas reduce líneas y saltos.
  • Mapas de medios y contenido. Un archivo referenciado solo desde una entrada muerta de un mapa (media-assets.ts, site.ts, diccionarios i18n) aparece como "usado" en el escáner. Verifica que cada clave del mapa se lea en alguna vista (TypeScript "find references" o grep de la clave) y borra la entrada junto con sus archivos.
  • Esquema huérfano. Tablas o columnas del esquema de BD que ningún código lee ni escribe (revisa también funciones SQL/RLS antes de marcarlas).

Sobre graphify: úsalo para orientarte (god nodes, comunidades, rutas), no como detector de muertos. Sus nodos aislados dan casi solo falsos positivos: no registra usos dentro del mismo archivo, convenciones de Next (page, layout, loading, route, server actions), crons ni lecturas con readFile. Confirma siempre con grep, Serena o el AST.

2. Triage

Por cada candidato, confirma antes de proponerlo:

  • Rutas armadas: busca el nombre sin extensión y partes del nombre (hero-elementary), no solo la ruta completa. Revisa mapas de medios (media-assets.ts, site.ts), srcset, variantes -720/-poster, CSS (url(...)) y next.config (redirects, headers).
  • Versiones reemplazadas: si existe foo-2026.mp4 en uso y foo.mp4 solo en docs, la anterior es basura; los docs que la citan son historia y se actualizan o se dejan como registro.
  • Contenido servido por URL externa: PDFs o imágenes enlazados desde correos, redes o sitios de terceros no aparecen en el código. Si el nombre parece público y estable (reglamentos, circulares), pregunta.
  • Código: knip es la fuente de verdad; si marca algo que sí se usa (carga dinámica, convención de Next), corrige la config de knip en vez de conservar el falso positivo.
  • Marca e identidad: logos, favicons, branding/ y fuentes se conservan salvo que el usuario diga lo contrario.

3. Reportar

Antes de borrar, entrega un resumen agrupado con tamaño y fecha del último commit:

borrar   public/video/paseo-hero-elementary.mp4      6.0 MB  2026-09-21  reemplazado por …-topiq-2026.mp4
borrar   src/components/OldHero.tsx                  knip    2026-08-10  sin imports
revisar  public/media/niveles/k1.webp                0.4 MB  ruta dinámica niveles/${id}
conservar public/brand/logo.svg                              marca
→ 32 archivos, 71 MB a borrar; 2 a revisar.

Pregunta qué grupos aplicar o si procede con todo.

4. Borrar

  • Borra con git rm (o rm si no está versionado); el historial de git es el respaldo, no dejes copias _old, backup/ ni carpetas de "por si acaso".
  • Quita en el mismo cambio las referencias muertas: entradas en manifiestos, docs que listan el archivo como vigente, dependencias en package.json.
  • Corre bun run check y bun run build; si el repo tiene sitio público, abre las páginas afectadas y confirma que no hay 404 de medios.
  • Vuelve a correr scan.mjs y reporta cuánto se redujo (archivos y MB).

Reglas

  • Nunca borres antes del reporte, ni fuera del repo actual.
  • Ante la duda, pregunta; un asset roto en producción cuesta más que uno de sobra.
  • No reescribas historial de git para quitar binarios pesados salvo que el usuario lo pida explícitamente.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.