Skip to content
cccskills
FreePublished on GitHub

bugfix-protocol

Protocolo sistemático de depuración en 6 fases. Enfoque estructurado ante errores con verificaciones rápidas, pruebas aisladas, regla de los 20 minutos y plantilla de informe de errores.

The English summary is being prepared. Showing the original description.

See how to install

Files included (1)

  • SKILL.md10.3 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

<img src="../banner.png" width="100%" alt="bugfix-protocol banner">

Español — Versión oficial en español de bugfix-protocol.

Bugfix Protocol: Depuración Sistemática en 6 Fases

Enfoque estructurado para la resolución de errores — desde el análisis de síntomas hasta la verificación. Evita el ensayo y error sin rumbo y garantiza que las soluciones sean sostenibles.


Resumen y Propósito

FaseNombreObjetivoTiempo máx.
1Verificaciones rápidasDescartar causas evidentes2 min
2DiagnósticoLocalizar la causa raíz10 min
3Prueba aisladaHacer que el error sea reproducible5 min
4CorrecciónCorrección mínima10 min
5VerificaciónVerificar la solución + comprobar efectos secundarios5 min
6DocumentaciónPreservar el conocimiento2 min

Regla de los 20 minutos: Si no hay avances tras 20 minutos, cambia de enfoque o busca ayuda.


Fase 1: Verificaciones rápidas (2 min)

Antes de profundizar, comprueba las causas más comunes:

Lista de verificación

  • ¿Error de sintaxis? Lee atentamente el mensaje de error, comprueba la línea
  • ¿Error de importación? ¿Módulo instalado? ¿Nombre correcto? ¿Importación circular?
  • ¿Error tipográfico? ¿Nombres de variables/funciones correctos?
  • ¿Tipo de datos incorrecto? ¿Cadena en lugar de int? ¿None donde se esperaba un objeto?
  • ¿Caché desactualizada? Elimina __pycache__, reinicia
  • ¿Entorno incorrecto? ¿venv correcto activo? ¿Versión de Python correcta?
  • ¿Codificación? UTF-8 vs. cp1252 (Windows clásico)

Acciones rápidas

# Limpiar caché
find . -name "__pycache__" -type d -exec rm -rf {} + 2>&1
find . -name "*.pyc" -delete 2>&1

# Comprobar importaciones
python -c "import modulename"

# Comprobar sintaxis
python -m py_compile file.py

Fase 2: Diagnóstico (10 min)

Estrategia: De fuera hacia dentro

  1. Analizar mensaje de error — Lee la traza de pila (traceback) de abajo hacia arriba
  2. Comprobar cambios recientes — git diff, git log --oneline -10
  3. Usar herramientas de diagnóstico — Utiliza herramientas específicas del proyecto

Herramientas de diagnóstico (Ejemplos)

Según el proyecto, las secuencias de comandos de diagnóstico especializadas pueden ser útiles:

HerramientaPropósito
import_diagnose.pyAnalizar problemas de importación
method_analyzer.pyComprobar firmas de métodos
env_checker.pyValidar variables de entorno/rutas

Nota: Crea herramientas de diagnóstico específicas del proyecto o utiliza las existentes. Lo que importa es el enfoque sistemático, no la herramienta específica.

Técnicas de depuración

# 1. Depuración con print (rápida pero efectiva)
print(f"DEBUG: variable={variable!r}, type={type(variable)}")

# 2. Puntos de interrupción (interactivo)
breakpoint()  # Python 3.7+

# 3. Traza de pila extendida
import traceback
traceback.print_exc()

# 4. Registro en lugar de print
import logging
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)
logger.debug(f"State: {state!r}")

Fase 3: Prueba aislada (5 min)

Ejemplo mínimo reproducible (MRE)

Objetivo: Reproducir el error con el código mínimo.

# test_bug.py — Prueba de reproducción mínima
"""
Bug: [Descripción corta]
Expected: [Lo que debería suceder]
Actual: [Lo que sucede en su lugar]
"""

# Configuración mínima
# ... solo lo esencial

# Desencadenante del error
# ... código exacto que desencadena el error

# Resultado esperado
# assert result == expected, f"Got {result}"

Estrategias de aislamiento

  1. Nuevo archivo: Reproduce el error en un archivo separado
  2. Eliminar dependencias: Una por una, hasta que el error desaparezca
  3. Búsqueda binaria: Divide el bloque de código a la mitad, comprueba qué mitad contiene el error
  4. Git bisect: git bisect start, git bisect bad, git bisect good <commit>

Fase 4: Corrección (10 min)

Principios

  1. Mínimo: Cambia lo menos posible
  2. Comprender: Nunca corrijas a ciegas — comprende POR QUÉ está roto
  3. Una cosa: Una corrección por commit, no soluciones múltiples problemas a la vez
  4. Compatible hacia atrás: No rompas la funcionalidad existente

Patrones de corrección

# MAL: Tratar el síntoma
try:
    result = broken_function()
except:  # Ignorar todo
    result = default_value

# BIEN: Corregir la causa raíz
def broken_function():
    if input_data is None:  # Causa real: falta comprobación de None
        return default_value
    return process(input_data)

Categorías comunes de corrección

CategoríaCorrección típica
None/NullCláusula de guarda: if x is None: return default
Error de índiceComprobación de límites: if i < len(lst)
Error de tipoConversión explícita: str(x), int(x)
Error de importaciónCorregir ruta, instalar paquete
CodificaciónEspecificar UTF-8 explícitamente: encoding='utf-8'
Condición de carreraBloqueo/Mutex, o cambiar el orden
Error de estadoComprobar inicialización, añadir restablecimiento

Fase 5: Verificación (5 min)

Lista de verificación

  • Error corregido: El problema original ya no ocurre
  • MRE supera: La prueba aislada se ejecuta correctamente
  • Sin regresión: Las pruebas existentes siguen pasando
  • Casos límite: Entrada vacía, None, datos grandes probados
  • Herramientas del proyecto: Comprueba el directorio de herramientas del proyecto para herramientas de prueba/validación relevantes

Comandos de prueba

# Pruebas unitarias
python -m pytest tests/ -v

# Solo pruebas afectadas
python -m pytest tests/test_module.py -v -k "test_name"

# Verificación de tipos
python -m mypy file.py

# Linter
python -m flake8 file.py

Fase 6: Documentación (2 min)

Plantilla de informe de errores

## Bug Report: [Título corto]

**Date:** YYYY-MM-DD
**Severity:** critical / high / medium / low
**Component:** [Módulo/Archivo]

### Symptom
[Lo que ve el usuario / mensaje de error]

### Root Cause
[Causa raíz técnica]

### Fix
[Qué se cambió + por qué]

### Affected Files
- `file1.py` — [Cambio]
- `file2.py` — [Cambio]

### Prevention
[¿Cómo se puede prevenir este tipo de error en el futuro?]

Formato del mensaje de commit

fix: [Descripción corta de la corrección]

Cause: [Causa raíz en una frase]
Fix: [Qué se cambió]
Test: [Cómo se verificó]

PyQt6 / Depuración de GUI — Trampas comunes

Esta sección es relevante para proyectos de GUI de escritorio con PyQt6/PySide6.

Las 5 principales trampas de PyQt6

TrampaProblemaSolución
Desconexión Signal-SlotSeñal conectada pero el manejador no se ejecutaprint en manejador, comprobar firma
Seguridad de hilos (Thread Safety)Actualización de GUI desde hilo de trabajoQMetaObject.invokeMethod o usar señal
Cascada de diseño (Layout)Widget invisible/desplazadowidget.show(), comprobar jerarquía de layout
Bloqueo del bucle de eventosLa GUI se congelaMover operaciones largas a QThread
Recolección de basuraEl widget desaparece repentinamenteMantener referencia como self.widget

Ayudantes de depuración de PyQt6

# Imprimir jerarquía de widgets
def dump_widget_tree(widget, indent=0):
    print(" " * indent + f"{widget.__class__.__name__}: {widget.objectName()}")
    for child in widget.findChildren(QWidget):
        if child.parent() == widget:
            dump_widget_tree(child, indent + 2)

# Depuración de señales
from PyQt6.QtCore import QObject
original_connect = QObject.connect
def debug_connect(self, *args, **kwargs):
    print(f"CONNECT: {self.__class__.__name__} -> {args}")
    return original_connect(self, *args, **kwargs)

Referencia rápida

¿ERROR ENCONTRADO?
     |
     v
[Fase 1: Verificaciones rápidas]  ── ¿Evidente? -> CORREGIR
     |
     v
[Fase 2: Diagnóstico]  ──────────── ¿Causa clara? -> Fase 4
     |
     v
[Fase 3: Prueba aislada]  ──────── ¿Reproducible? -> Fase 4
     |                                  |
     |                             ¿No reproducible?
     |                                  |
     |                             Añadir registros,
     |                             esperar recurrencia
     v
[Fase 4: Corrección]  ───────────── Mínima + comprendida
     |
     v
[Fase 5: Verificación]  ────────── ¿Pruebas en verde? -> Fase 6
     |                                  |
     |                             ¿Pruebas en rojo? -> Volver a Fase 4
     v
[Fase 6: Documentación]  ───────── Informe de error + commit

Regla de los 20 minutos

Si estás atascado tras 20 minutos:

  1. Cambiar de enfoque — Prueba una técnica de depuración diferente
  2. Pato de goma (Rubber duck) — Explica el problema en voz alta (o escríbelo)
  3. Toma un descanso — Aléjate durante 5 minutos, regresa con mente fresca
  4. Busca ayuda — Pregunta a un colega, Stack Overflow, documentación
  5. Restablecer — git stash, empieza completamente de nuevo

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Akademisches Studien- und Fristenmanagement mit Quellenprüfung, Datenschutz und realistischer Handlungsplanung.

The English summary is being prepared. Showing the original description.

ellmos-ai/skills8Updated Oct 19, 2026

Aktives Lernen, Erarbeitung von Fachinhalten und strukturierte Erstellung von Synthesen.

The English summary is being prepared. Showing the original description.

ellmos-ai/skills8Updated Oct 19, 2026

Prüfungsvorbereitung, Selbsttests, Probeklausuren und systematische Fehleranalyse.

The English summary is being prepared. Showing the original description.

ellmos-ai/skills8Updated Oct 19, 2026

Acceptance & Commitment Therapy (ACT) nach Steven Hayes: Hexaflex-Modell mit den sechs Kernprozessen psychischer Flexibilität.

The English summary is being prepared. Showing the original description.

ellmos-ai/skills8Updated Oct 19, 2026

Terapia de Aceptación y Compromiso (ACT) según Steven Hayes: modelo Hexaflex con los seis procesos nucleares de la flexibilidad psicológica.

The English summary is being prepared. Showing the original description.

ellmos-ai/skills8Updated Oct 19, 2026

スティーブン・ヘイズによるアクセプタンス&コミットメント・セラピー(ACT):心理的柔軟性の6つのコアプロセスを備えたヘキサフレックス・モデル。

The English summary is being prepared. Showing the original description.

ellmos-ai/skills8Updated Oct 19, 2026

See all skills by ellmos-ai

Report a problem with this skill