/profiling
Perfilar aplicaciones para encontrar cuellos de botella de CPU y memoria. Activar cuando la aplicacion este lenta, haya un cuello de botella, problemas de latencia, se necesite un flamegraph, se detecte alto uso de CPU, un memory leak o se quiera analizar el rendimiento.
$ npx -y skills add 686f6c61/alfred-dev --skill profiling --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.
- You can call itInvoke it directly when you want it.
- Slash command
/profiling
Context preview
The summary Claude sees to decide when to auto-load this skill.
Perfilar aplicaciones para encontrar cuellos de botella de CPU y memoria. Activar cuando la aplicacion este lenta, haya un cuello de botella, problemas de latencia, se necesite un flamegraph, se detecte alto uso de CPU, un memory leak o se quiera analizar el rendimiento.
SKILL.md
profiling.SKILL.mdname: profiling
description: "Perfilar aplicaciones para encontrar cuellos de botella de CPU y memoria. Activar cuando la aplicacion este lenta, haya un cuello de botella, problemas de latencia, se necesite un flamegraph, se detecte alto uso de CPU, un memory leak o se quiera analizar el rendimiento."
Profiling de aplicaciones
Resumen
Este skill guía el proceso de perfilado de una aplicación para identificar cuellos de botella de rendimiento en CPU y memoria. El profiling es una disciplina empírica: se mide primero, se optimiza después. La intuición sobre dónde está el cuello de botella suele ser incorrecta, por lo que las herramientas de profiling son imprescindibles para tomar decisiones informadas.
El proceso se adapta al runtime de la aplicación (Node.js, Python, frontend) y produce un diagnóstico con los hot paths identificados, las funciones más costosas y las propuestas de corrección.
Proceso
1. **Consultar el stack del proyecto.** Consultar el stack detectado en la configuración de Alfred para seleccionar las herramientas de profiling adecuadas al runtime (Node.js, Python, navegador, etc.).
2. **Reproducir el escenario lento.** Antes de perfilar, definir exactamente qué operación es lenta y cómo reproducirla de forma consistente:
- Identificar el endpoint, la acción de usuario o el proceso que se quiere optimizar.
- Preparar datos de prueba que representen el volumen real de producción.
- Ejecutar la operación al menos una vez para descartar efectos de arranque en frío.
3. **Capturar el perfil con las herramientas del runtime.** Seleccionar la herramienta según el entorno:
- **Node.js:** `--inspect` con Chrome DevTools para CPU profiling y heap snapshots. `clinic.js` para diagnóstico automatizado (doctor, flame, bubbleprof). `0x` para generar flamegraphs directamente.
- **Python:** `cProfile` para perfilado integrado. `py-spy` para perfilado sin instrumentación (sampling profiler, no requiere modificar el código). `memory_profiler` para análisis de memoria línea por línea.
- **Frontend (navegador):** Chrome DevTools Performance tab para grabar actividad de CPU, layout, paint y scripting. Memory tab para heap snapshots y detección de leaks. Lighthouse para métricas de rendimiento centradas en el usuario (LCP, FID, CLS).
4. **Identificar los hot paths.** Analizar el perfil capturado buscando las funciones y operaciones que consumen más tiempo:
- En un flamegraph, las barras anchas en la parte superior son las funciones que más tiempo acumulan.
- En un perfil tabulado, ordenar por "self time" (tiempo propio, no incluyendo llamadas hijas) para encontrar las funciones realmente costosas.
- En perfiles de memoria, buscar objetos que crecen sin liberarse (memory leaks) o asignaciones excesivas que presionan al garbage collector.
5. **Analizar el call stack de los hot paths.** Una vez identificada la función costosa, entender por qué es costosa:
- Se llama demasiadas veces (problema de arquitectura o algoritmo)?
- Cada llamada individual es lenta (operación de I/O, algoritmo ineficiente)?
- Genera demasiadas asignaciones de memoria (presión sobre el GC)?
- Bloquea el event loop (en Node.js o navegador)?
6. **Proponer correcciones específicas.** Según el diagnóstico:
- **CPU bound:** optimizar el algoritmo, usar cachés, mover a un worker thread.
- **I/O bound:** paralelizar operaciones independientes, implementar batching, usar streaming en lugar de cargar todo en memoria.
- **Memory leaks:** identificar referencias retenidas, cerrar conexiones y listeners, usar WeakRef donde proceda.
- **GC pressure:** reducir asignaciones innecesarias, reutilizar objetos, evitar la creación de closures en bucles.
- **Frontend:** reducir layout thrashing, usar requestAnimationFrame para animaciones, virtualizar listas largas.
7. **Verificar la mejora.** Repetir el profiling tras aplicar los cambios:
- Comparar los flamegraphs antes y después.
- Medir la mejora en tiempo de ejecución y uso de memoria.
- Asegurar que la corrección no ha introducido regresiones funcionales.
Que NO hacer
- No optimizar sin medir. La optimización prematura basada en intuición suele desperdiciar tiempo y complicar el código sin beneficio real.
- No perfilar en modo desarrollo si se buscan métricas representativas. El hot reloading, los source maps y las comprobaciones de desarrollo distorsionan los resultados.
- No ignorar el garbage collector. Muchos problemas de rendimiento en Node.js y navegador se deben a presión excesiva sobre el GC, no a CPU.
- No perfilar solo una vez. Los resultados pueden variar entre ejecuciones; capturar varias muestras para confirmar los hallazgos.
Read more
name: profiling description: "Perfilar aplicaciones para encontrar cuellos de botella de CPU y memoria. Activar cuando la aplicacion este lenta, haya un cuello de botella, problemas de latencia, se necesite un flamegraph, se detecte alto uso de CPU, un memory leak o se quiera analizar el rendimiento."
Profiling de aplicaciones
Resumen
Este skill guía el proceso de perfilado de una aplicación para identificar cuellos de botella de rendimiento en CPU y memoria. El profiling es una disciplina empírica: se mide primero, se optimiza después. La intuición sobre dónde está el cuello de botella suele ser incorrecta, por lo que las herramientas de profiling son imprescindibles para tomar decisiones informadas.
El proceso se adapta al runtime de la aplicación (Node.js, Python, frontend) y produce un diagnóstico con los hot paths identificados, las funciones más costosas y las propuestas de corrección.
Proceso
1. **Consultar el stack del proyecto.** Consultar el stack detectado en la configuración de Alfred para seleccionar las herramientas de profiling adecuadas al runtime (Node.js, Python, navegador, etc.).
2. **Reproducir el escenario lento.** Antes de perfilar, definir exactamente qué operación es lenta y cómo reproducirla de forma consistente:
- Identificar el endpoint, la acción de usuario o el proceso que se quiere optimizar.
- Preparar datos de prueba que representen el volumen real de producción.
- Ejecutar la operación al menos una vez para descartar efectos de arranque en frío.
3. **Capturar el perfil con las herramientas del runtime.** Seleccionar la herramienta según el entorno:
- **Node.js:** `--inspect` con Chrome DevTools para CPU profiling y heap snapshots. `clinic.js` para diagnóstico automatizado (doctor, flame, bubbleprof). `0x` para generar flamegraphs directamente.
- **Python:** `cProfile` para perfilado integrado. `py-spy` para perfilado sin instrumentación (sampling profiler, no requiere modificar el código). `memory_profiler` para análisis de memoria línea por línea.
- **Frontend (navegador):** Chrome DevTools Performance tab para grabar actividad de CPU, layout, paint y scripting. Memory tab para heap snapshots y detección de leaks. Lighthouse para métricas de rendimiento centradas en el usuario (LCP, FID, CLS).
4. **Identificar los hot paths.** Analizar el perfil capturado buscando las funciones y operaciones que consumen más tiempo:
- En un flamegraph, las barras anchas en la parte superior son las funciones que más tiempo acumulan.
- En un perfil tabulado, ordenar por "self time" (tiempo propio, no incluyendo llamadas hijas) para encontrar las funciones realmente costosas.
- En perfiles de memoria, buscar objetos que crecen sin liberarse (memory leaks) o asignaciones excesivas que presionan al garbage collector.
5. **Analizar el call stack de los hot paths.** Una vez identificada la función costosa, entender por qué es costosa:
- Se llama demasiadas veces (problema de arquitectura o algoritmo)?
- Cada llamada individual es lenta (operación de I/O, algoritmo ineficiente)?
- Genera demasiadas asignaciones de memoria (presión sobre el GC)?
- Bloquea el event loop (en Node.js o navegador)?
6. **Proponer correcciones específicas.** Según el diagnóstico:
- **CPU bound:** optimizar el algoritmo, usar cachés, mover a un worker thread.
- **I/O bound:** paralelizar operaciones independientes, implementar batching, usar streaming en lugar de cargar todo en memoria.
- **Memory leaks:** identificar referencias retenidas, cerrar conexiones y listeners, usar WeakRef donde proceda.
- **GC pressure:** reducir asignaciones innecesarias, reutilizar objetos, evitar la creación de closures en bucles.
- **Frontend:** reducir layout thrashing, usar requestAnimationFrame para animaciones, virtualizar listas largas.
7. **Verificar la mejora.** Repetir el profiling tras aplicar los cambios:
- Comparar los flamegraphs antes y después.
- Medir la mejora en tiempo de ejecución y uso de memoria.
- Asegurar que la corrección no ha introducido regresiones funcionales.
Que NO hacer
- No optimizar sin medir. La optimización prematura basada en intuición suele desperdiciar tiempo y complicar el código sin beneficio real.
- No perfilar en modo desarrollo si se buscan métricas representativas. El hot reloading, los source maps y las comprobaciones de desarrollo distorsionan los resultados.
- No ignorar el garbage collector. Muchos problemas de rendimiento en Node.js y navegador se deben a presión excesiva sobre el GC, no a CPU.
- No perfilar solo una vez. Los resultados pueden variar entre ejecuciones; capturar varias muestras para confirmar los hallazgos.
Plugin de Claude Code: 18 agentes especializados, 60 skills, 25 comandos, 13 hooks, memoria persistente, Memory UI local, quality gates, evidence guard, continuidad operativa y modo autopilot.
Repo: 686f6c61/alfred-dev
Other skills on alfred-dev.
- /alfred
Alias global /alfred para abrir el asistente contextual de Alfred Dev sin escribir el namespace completo. Activar solo cuando el usuario invoque explicitamente /alfred.
Open skill - /choose-stack
Usar para evaluar y elegir tecnologías con matriz de decisión ponderada. Activar cuando el usuario quiera elegir tecnología, comparar frameworks, decidir entre alternativas técnicas, construir una matriz de decisión, evaluar stack, seleccionar base de datos, elegir lenguaje o
Open skill - /design-system
Usar para diseñar la arquitectura de un sistema con diagramas y contratos. Activar cuando el usuario quiera diseñar arquitectura, definir componentes del sistema, crear un diagrama de flujo, establecer contratos entre módulos, planificar la estructura del proyecto o decidir cómo
Open skill - /evaluate-dependencies
Usar para evaluar si una dependencia merece la pena antes de añadirla. Activar cuando el usuario quiera añadir una librería, saber si merece la pena esta dependencia, evaluar un paquete antes de instalarlo, hacer npm install o pip install de algo nuevo, buscar alternativas a una
Open skill - /write-adr
Usar para documentar decisiones arquitectónicas como ADR. Activar cuando el usuario quiera documentar por qué se tomó una decisión, registrar alternativas descartadas, crear un ADR, un decision record, dejar constancia de una elección técnica o justificar una decisión de diseño
Open skill - /code-review
Usar para revisar código con foco en calidad, legibilidad y errores lógicos. También: revisar código, buscar errores, calidad del código, revisión de PR, pull request review.
Open skill

