lean
Skill0 starsChanged 20 days agoMITView on GitHub
Aplica Lean (eliminar muda/desperdicio) a vibecoding + infra: PREVIENE acumulación al construir (reuse-before-create, YAGNI, right-size, delete-as-feature) y BARRE lo ya acumulado (imágenes/volúmenes/logs Docker, disco/logs/cron Linux, código/deps muertos, sprawl de docs y contexto) con detección read-only + remediación SIEMPRE confirm-gated (nunca auto-destructivo). Trigger: el usuario pide "limpiar/reducir bloat", "esto se está acumulando", "hazlo lean", disco llenándose, "demasiados procesos/datos", housekeeping, o ANTES de declarar un build hecho. NO duplica un chequeo de salud/status — éste ataca DESPERDICIO.
- Reads credentials
9 other projects use a version of this.
Adopted by
Most recently taken up by
- FareedKhan-dev/lean-agenttheir own version, first seen Oct 13, 2026
- mattbutlerengineering/skillstheir own version, first seen Oct 11, 2026
- kapadias/nonnatheir own version, first seen Oct 1, 2026
- utk2103/Prompt-Studiotheir own version, first seen Aug 22, 2026
- ousid/leantheir own version, first seen Jul 20, 2026
- naticorrea-03/claude-code-skillstheir own version, first seen Jul 1, 2026
Used with
Projects with it also use ship.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
AWSSkillship
Finalize dev work on an issue branch — update docs, push, and open a PR.
Also in 3 projects that use this
Other versions9 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 9
- utk2103/Prompt-Studio★ 8same name
- naticorrea-03/claude-code-skills★ 4same name
- ousid/lean★ 4same name
- civillizard/claude-lean-skill★ 2same name
- CrystalPlatforms/ADM-CLI★ 1same name
- FareedKhan-dev/lean-agent★ 1same name
- mattbutlerengineering/skills★ 1same name
- Co4an/claude-auto★ 0same name
- kapadias/nonna★ 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 repository16 other files it gives its agents.
- agotar-antes-de-negarSkill
- anti-hype-acronyms-guardSkill
- clarifica-una-a-unaSkill
- decision-matrixSkill
- document-progressSkill
- donde-estoySkill
- e2eSkill
- iso-42001-aimsSkill
- orchestration-autonomy-tiersSkill
- planteamientoSkill
- pre-flightSkill
- premortemSkill
- prompt-rewriteSkill
- refutarSkill
- specSkill
- sprintSkill
The file
Files
lean — eliminar muda en vibecoding + infra
Principio (Lean / TPS, Ohno 1988)
Lean = maximizar valor, eliminar muda (desperdicio). La resta es un entregable, no una pérdida. El desperdicio #1 aquí es sobreproducción: generar el artefacto pesado por default (código especulativo, deps que no uso, docs que nadie lee, manuales en cada cierre). Encadena con un gate de feedback antes de construir — el gate decide SI construir; este skill decide cuánto, y limpia lo que ya sobra.
Las 7 mudas → cómo se ven en NUESTRO trabajo (checklist mental)
(Lean Software Development, Poppendieck 2003 · Google SRE "toil")
- Sobreproducción / extra features → código/feature no pedido (YAGNI lo mata).
- Inventario / partially-done → ramas/PRs sin mergear, código sin desplegar.
- Sobre-procesamiento → más ceremonia/precisión que el valor (over-engineering en avance trivial).
- Esperas / handoffs → pasos bloqueados, syncs redundantes.
- Task-switching → contexto disperso (también del LLM: "context rot").
- Defectos → rework por no verificar (lo ataca
/refutar+/premortem). - Relearning → re-descubrir lo ya sabido (memory mal indexada).
- Toil (SRE): trabajo manual·repetitivo·automatizable·sin valor perdurable·que escala lineal → automatizar o eliminar la fuente.
MODO 1 — PREVENIR (al construir, antes de declarar hecho)
Checklist de 20 segundos. Cada "no" es muda evitada:
- Reuse-before-create — ¿ya existe esta función/archivo/script? Reusar > crear (DRY, Pragmatic Programmer 1999). El LLM tiende a crear nuevo en vez de reusar (GitClear: copy-paste 8.3%→12.3% 2021-24; evidencia mixta, ver §7).
- YAGNI — ¿lo necesito AHORA o "por si acaso"? Sin demanda real → no se construye (Beck/Fowler).
- Right-size el artefacto — ¿el output pesado (manual, reporte, dashboard) lo va a leer alguien? Si no → memory/una línea. (Ver gate 0.0 de
document-progress.) - Cero deps especulativas — ¿la librería existe y la uso? Verificar antes de instalar (slopsquatting: LLMs alucinan 5.2-21.7% de nombres de paquete — USENIX 2025).
- Delete-as-a-feature — ¿qué puedo BORRAR al cerrar esto? Negative-LOC es valor.
- Doc solo el "por qué" — no dupliques en prosa lo que el código ya dice (sprawl + se pone stale).
- Rule of Three — no abstraigas hasta la 3ª repetición (Sandi Metz: "duplicación > la abstracción equivocada").
MODO 2 — BARRER (auditoría de acumulación, read-only → propone, NO ejecuta)
⚠ GATE DURO: detectar es autónomo; remediar destructivo (prune/rm/autoremove/vacuum/-delete) JAMÁS sin
confirm del usuario (regla global: disco>85% → sugerir, NO rm/prune solo). Presenta el comando
exacto, el usuario aprueba. En SSH remoto usa timeout para no colgar la sesión.
- Auto-identifica el host (
hostname/hostname -Ien CADA probe) — nunca atribuyas muda por orden de salida (experiencia de campo: es fácil reportar la muda del host equivocado). - 2 ejes SEPARADOS, no los confundas: presión de disco (
df %, urgencia solo >80%) vs reclamable (muda, valor). Sin presión + host de cliente → acción mínima o diferir ("no hacer nada" > "sweep pesado" en un host de cliente sin presión; la cantidad reclamada NO manda, el riesgo/toil sí). - Completitud de flota: barre todos tus hosts; si uno no resuelve en
~/.ssh/config, decláralo INALCANZABLE — no fabriques su estado ni intentes acceso no configurado (§7). - Mide la muda EN VIVO, no la deduzcas de la regla/política/doc. La norma dice dónde debería estar la muda ("este host solo corre X", "los servicios internos van aparte"); la realidad diverge (experiencia de campo: aserté "poca superficie de crons en un host" sin leer el crontab → tenía 36, varios outbound a usuarios). Lee el estado (
crontab -l/df/docker), no el "debería" (verificación en vivo + §7).
Docker (ssh tu-host 'timeout 20 docker system df -v')
| Muda | Detección (read-only) | Remediación | ¿Destructivo? |
| Imágenes dangling | docker images -f dangling=true | docker image prune | SAFE |
| Containers exited | docker ps -a -f status=exited | docker container prune | leve (pierde capa rw) |
| Volúmenes sin uso (asesino silencioso de disco) | docker volume ls -f dangling=true | docker volume prune | DESTRUCTIVO — borra DATA. CONFIRM. |
| Build cache | docker system df (fila BUILD CACHE) | docker builder prune | safe-ish (rebuild lento) |
| Logs json-file sin rotar (unbounded por default) | du -sh /var/lib/docker/containers/*/*-json.log | daemon.json/compose max-size:10m,max-file:3 + recrear | config safe |
- ⚠
docker system prune -a --volumespuede WIPEAR DB. NUNCA en cron, NUNCA sin confirm. Imágenes en uso por un cliente → confirm (cliente afectado = mayor umbral de revisión). - ⚠ El RESUMEN
docker system dfSOBRE-REPORTA "RECLAIMABLE" de imágenes — bug confirmadomoby/moby#51775(regresión Docker 29.0/API≥1.52, fix en 29.4.1; en un host dijo "12.34 GB 100% reclamable" con TODAS las imgs en uso). La señal REAL =docker system df -vcolumna CONTAINERS (≥1 = en uso). Para build cache, el reclaimable del resumen SUB-cuenta (solo privado;docker builder du= privado+compartido,moby/moby#48523) → prune libera ≥ esa cifra. NO confíes en el % del resumen. - Prevenir > limpiar (build cache): se re-acumula (caso real: 18 GB en 925 capas). En hosts afectados, capa en la fuente: BuildKit GC (
daemon.jsonbuilder.gc— verifica versión + config actual ANTES, no copy-paste) obuilder pruneperiódico. ⚠ editar daemon +restart docker= client-facing → confirm. - 🧹 SOP
docker builder pruneen host de CLIENTE (verificado vs Docker docs: NO toca containers vivos / imágenes en uso / volúmenes / bind mounts / datos): (1) pre-flightfree -m(headroom RAM); (2)timeout 300 docker builder prune -f(conservador:--filter "type!=exec.cachemount"si dudas de cache mounts — borrarlos afecta velocidad, no correctitud); (3) NUNCA cancelar / Ctrl-C — interrumpirlo CUELGA dockerd y exigerestart= rebota TODOS los containers del cliente (moby/buildkit#4399); (4)df -h /antes y después para el reclaim real. ⚠ NO confundir consystem prune -a --volumes(ese SÍ borra data). Sigue confirm-gated.
Linux / disco / logs (ssh tu-host 'df -h / && du -sh /var/* | sort -rh | head')
| Muda | Detección | Remediación | ¿Destructivo? |
| apt cache | du -sh /var/cache/apt | apt-get clean | leve (re-descargable) |
| deps huérfanas | apt-get autoremove --dry-run | apt-get autoremove | CONFIRM (borra paquetes) |
| kernels viejos | dpkg -l 'linux-image-*'|grep ^ii | autoremove --purge | CONFIRM — nunca el uname -r actual |
| journald | journalctl --disk-usage | --rotate && --vacuum-size=500M; durable: journald.conf.d SystemMaxUse= | CONFIRM (valores de ejemplo, dimensiona al disco) |
| logs app | logrotate -d (debug, no rota) | entry en /etc/logrotate.d/ (maxsize,rotate,compress,copytruncate) | config safe |
.jsonl/.log append-forever | find /path -name '*.log' -mtime +30 | find … -mtime +30 -delete (corre SIN -delete 1º) | CONFIRM |
| cron solapado (dur > intervalo) | time script vs intervalo | wrap flock -n /var/lock/x.lock | safe |
Código / deps muertos
| Muda | Detección | Counter |
| Código muerto | vulture . (Py) · npx knip (TS, unused exports/files) | borrar |
| Clones / copy-paste | jscpd ./src · churn git log --numstat | DRY / reuse |
| Deps sin uso | deptry . (Py) · depcheck/knip (JS) | quitar + pin |
Docs / contexto / proceso
- Doc sprawl → manuales/reportes que nadie lee. Detección: ¿se referenció en 30d? Counter: borrar/fusionar.
- Context rot →
CLAUDE.md/.mdinflados degradan AL PROPIO agente (Chroma 2025; "lost in the middle" Liu 2023). "Más reglas ≠ mejor": podar. Just-in-time > front-load. - Proceso → syncs/pasos redundantes en runbooks. Counter: saltar pasos cuyo input no cambió. PERO gates de seguridad/persistencia = músculo, no se tocan.
- Zombie sano (automatización viva sin valor) → un cron/job que corre PERFECTO (loguea, envía 3/3, status OK) pero produce cero valor — ej. un cliente de reportes diarios: útil las primeras 26 corridas, luego 14 días seguidos mandando audio vacío a 3 personas; una auditoría de zombies lo marcaba
OKporque su definición de zombie = roto (archivo faltante/log muerto/endpoint 404), NO "vivo pero inútil". Counter: revisión humana periódica de los crons outbound-a-humanos (briefs/reports/digests) — "¿esto sigue sirviendo?". Ojo: vacío/0 puede ser silencio CORRECTO, no muerte (una alerta "0 hoy" un día sin incidentes; un bot silenciado en horario laboral) → distínguelo con baseline, no por el valor crudo. ❌ NO detector keyword de "output vacío" (whack-a-mole: ≥4 frases ya — "0 groups"/"minimal"/"No messages"/numérico "0 logins"/sin-log — caza el molde de ayer, ciego al siguiente; mismo anti-patrón que fiscalizar solo el cierre/síntoma). ❌ NO flag genérico "output idéntico N días" (falso-positivo estructural: para healthchecks el output idéntico ES salud). ❌ NO añadir un vigía reflejo nuevo por cada falso negativo. Automatizar solo al 3er caso (Rule of Three) y con la señal correcta (payload trivial en crons outbound-tagged), no antes.
Errores a NO cometer
- ❌ Ejecutar
prune/rm/autoremove/vacuum/-deleteautónomo. SIEMPRE confirm. - ❌ Cortar músculo: backup auto-memory, audit de secrets, healthchecks, gates de verificación NO son muda.
- ❌ Que el propio output de este skill sea sobreproducción: reporta el barrido en una tabla escaneable, no un manual.
- ❌ Confundir con
/status(salud/up-down) — éste ataca DESPERDICIO/acumulación. - ❌
du/ncdurecursivo sin acotar sobre dirs gigantes (regla OOM CLAUDE.md):| head,timeout.
§7 — Honestidad de la evidencia
- 7 mudas (Poppendieck 2003), toil (Google SRE book), YAGNI/DRY/Rule-of-Three (Beck·Pragmatic Programmer 1999·Sandi Metz 2016): canónicos verificados.
- Slopsquatting 5.2-21.7% (USENIX 2025, arxiv 2406.10279) · context-rot (trychroma 2025) · "lost in the middle" (arxiv 2307.03172): verificados.
- GitClear copy-paste/churn: primario, pero la evidencia de "IA duplica más" es MIXTA (otro estudio halló lo contrario) → no sobre-afirmar.
- DORA −1.5%/−7.2% throughput/stability: secundario (cita del PDF, no landing). "Pinboard negative-LOC" quote: [unverified].
Referencias
Skills hermanos: document-progress (right-size de docs), /refutar y /premortem (falsación de supuestos).
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.

