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
- parcadei/Continuous-Claudetheir own version, first seen Oct 17, 2026
- vhmarquez/argotheir own version, first seen Oct 15, 2026
- kaeawc/auto-mobiletheir own version, first seen Oct 8, 2026
- parcadei/Continuous-Claude-v2their own version, first seen Oct 8, 2026
- Jinbae10/skillstheir own version, first seen Jul 7, 2026
- Pradnyeshp/Claude-Skillstheir own version, first seen Jul 6, 2026
Other versions7 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 7
- parcadei/Continuous-Claude★ 3.9ksame name
- parcadei/Continuous-Claude-v2★ 3.9ksame name
- parcadei/Continuous-Claude-v3★ 3.9ksame name
- kaeawc/auto-mobile★ 56same name
- Pradnyeshp/Claude-Skills★ 2same name
- vhmarquez/argo★ 1same name
- 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.
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
- Distinctive: line 85
No reescribas historial de git para quitar binarios pesados salvo que el usuario lo pida explícitamente.
“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.
Files
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 triagescan.mjs cruza cada archivo de public/ (y los assets en src/, app/, content/) contra el código y la config. Los clasifica en:
| Grupo | Significado | Acción por defecto |
| Sin referencia | Ni el código ni los docs lo mencionan | Candidato a borrar |
| Solo mencionados en docs | Solo aparece en docs o manifiestos de trabajo; suele ser una versión anterior de un medio ya reemplazado | Candidato a borrar tras confirmar cuál es la versión vigente |
| Posible ruta dinámica | Coincide 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ón | favicon, icon, robots, sitemap, manifest, OG, .well-known | Conservar |
| Scripts que nada ejecuta | No están en package.json, docs ni código | Preguntar si es herramienta manual vigente |
| Docs que nadie enlaza | Ningún otro .md los enlaza | Enlazar 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/**/*.pyo script usado porpackage.json, parsea el archivo (python3 -c "import ast…") y recorre el grafo de llamadas desdemain()/el bloqueif __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(...)) ynext.config(redirects, headers). - Versiones reemplazadas: si existe
foo-2026.mp4en uso yfoo.mp4solo 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(ormsi 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 checkybun 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.mjsy 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.
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
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.

