Skip to content
cccskills
FreePublished on GitHub

bugfix-protocol

Systematic 6-phase debugging protocol. Structured approach to bugs with quick checks, isolated testing, 20-minute rule, and bug report template.

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

See how to install

Files included (13)

  • SKILL.md9.2 KB
  • banner.png148.4 KB
  • EN/SKILL.md8.8 KB
  • ES/SKILL.md10.3 KB
  • JA/SKILL.md10.9 KB
  • RU/SKILL.md14.2 KB
  • SKILL.en.md9.1 KB
  • SKILL.es.md10.6 KB
  • SKILL.fr.md9.2 KB
  • SKILL.ja.md11.4 KB
  • SKILL.ru.md14.9 KB
  • SKILL.zh.md9.3 KB
  • ZH/SKILL.md8.9 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

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

Bugfix-Protokoll: Systematisches 6-Phasen Debugging

Strukturiertes Vorgehen bei Bugs — von der Symptom-Analyse bis zur Verifikation. Verhindert planloses Herumprobieren und stellt sicher, dass Fixes nachhaltig sind.


Uebersicht

PhaseNameZielMax. Zeit
1Schnell-ChecksOffensichtliche Ursachen ausschliessen2 min
2DiagnoseUrsache lokalisieren10 min
3Isolierter TestBug reproduzierbar machen5 min
4FixMinimale Korrektur10 min
5VerifikationFix pruefen + Seiteneffekte5 min
6DokumentationWissen sichern2 min

20-Minuten-Regel: Wenn nach 20 Minuten kein Fortschritt → Ansatz wechseln oder Hilfe holen.


Phase 1: Schnell-Checks (2 min)

Bevor du tief einsteigst — pruefe die haeufigsten Ursachen:

Checkliste

  • Syntax-Fehler? Fehlermeldung genau lesen, Zeile pruefen
  • Import-Fehler? Modul installiert? Richtiger Name? Circular Import?
  • Tippfehler? Variablen-/Funktionsnamen korrekt?
  • Falscher Datentyp? String statt Int? None wo Objekt erwartet?
  • Veralteter Cache? __pycache__ loeschen, Neustart
  • Falsche Umgebung? Richtiges venv aktiv? Richtige Python-Version?
  • Encoding? UTF-8 vs. cp1252 (Windows-Klassiker)

Schnell-Aktionen

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

# Imports pruefen
python -c "import modulname"

# Syntax pruefen
python -m py_compile datei.py

Phase 2: Diagnose (10 min)

Strategie: Von aussen nach innen

  1. Fehlermeldung analysieren — Traceback von unten nach oben lesen
  2. Letzte Aenderungen pruefen — git diff, git log --oneline -10
  3. Diagnose-Tools einsetzen — Eigene Diagnose-Tools je nach Projekt verwenden

Diagnose-Tools (Beispiele)

Je nach Projekt koennen spezialisierte Diagnose-Skripte hilfreich sein:

ToolZweck
import_diagnose.pyImport-Probleme analysieren
method_analyzer.pyMethoden-Signaturen pruefen
env_checker.pyUmgebungsvariablen/Pfade validieren

Hinweis: Eigene Diagnose-Tools je nach Projekt erstellen oder vorhandene Projekt-Tools nutzen. Wichtig ist das systematische Vorgehen, nicht das spezifische Tool.

Debugging-Techniken

# 1. Print-Debugging (schnell aber effektiv)
print(f"DEBUG: variable={variable!r}, type={type(variable)}")

# 2. Breakpoint (interaktiv)
breakpoint()  # Python 3.7+

# 3. Traceback erweitern
import traceback
traceback.print_exc()

# 4. Logging statt Print
import logging
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)
logger.debug(f"State: {state!r}")

Phase 3: Isolierter Test (5 min)

Minimal Reproducible Example (MRE)

Ziel: Bug mit minimal Code reproduzieren.

# test_bug.py — Minimaler Reproduktions-Test
"""
Bug: [Kurze Beschreibung]
Erwartet: [Was sollte passieren]
Tatsaechlich: [Was passiert stattdessen]
"""

# Minimaler Setup
# ... nur das Noetigste

# Bug-Ausloeser
# ... exakter Code der den Bug triggert

# Erwartetes Ergebnis
# assert result == expected, f"Got {result}"

Isolations-Strategien

  1. Neue Datei: Bug in eigener Datei reproduzieren
  2. Abhaengigkeiten entfernen: Eine nach der anderen, bis Bug verschwindet
  3. Halbieren: Code-Block halbieren, pruefen welche Haelfte den Bug enthaelt
  4. Git Bisect: git bisect start, git bisect bad, git bisect good <commit>

Phase 4: Fix (10 min)

Prinzipien

  1. Minimal: Aendere so wenig wie moeglich
  2. Verstehen: Nie blind fixen — verstehe WARUM es kaputt ist
  3. Eine Sache: Ein Fix pro Commit, nicht mehrere Probleme gleichzeitig
  4. Rueckwaerts-kompatibel: Bestehende Funktionalitaet nicht brechen

Fix-Muster

# SCHLECHT: Symptom behandeln
try:
    result = broken_function()
except:  # Alles schlucken
    result = default_value

# GUT: Ursache beheben
def broken_function():
    if input_data is None:  # Eigentliche Ursache: None-Check fehlte
        return default_value
    return process(input_data)

Haeufige Fix-Kategorien

KategorieTypischer Fix
None/NullGuard-Clause: if x is None: return default
Index-FehlerBounds-Check: if i < len(lst)
Type-FehlerExplizite Konvertierung: str(x), int(x)
Import-FehlerPfad korrigieren, Paket installieren
EncodingUTF-8 explizit angeben: encoding='utf-8'
Race ConditionLock/Mutex, oder Reihenfolge aendern
State-BugInitialisierung pruefen, Reset einfuegen

Phase 5: Verifikation (5 min)

Checkliste

  • Bug ist gefixt: Originales Problem tritt nicht mehr auf
  • MRE besteht: Isolierter Test laeuft durch
  • Keine Regression: Bestehende Tests laufen noch
  • Edge Cases: Leere Eingabe, None, grosse Daten getestet
  • Projekt-Tools: Im Projekt-Tools-Verzeichnis nachschauen ob es relevante Test-/Validierungstools gibt

Test-Befehle

# Unit-Tests
python -m pytest tests/ -v

# Nur betroffene Tests
python -m pytest tests/test_modul.py -v -k "test_name"

# Type-Check
python -m mypy datei.py

# Lint
python -m flake8 datei.py

Phase 6: Dokumentation (2 min)

Bug-Report Template

## Bug-Report: [Kurztitel]

**Datum:** YYYY-MM-DD
**Schwere:** kritisch / hoch / mittel / niedrig
**Komponente:** [Modul/Datei]

### Symptom
[Was der User sieht / Fehlermeldung]

### Ursache
[Technische Root-Cause]

### Fix
[Was geaendert wurde + warum]

### Betroffene Dateien
- `datei1.py` — [Aenderung]
- `datei2.py` — [Aenderung]

### Praevention
[Wie kann dieser Bug-Typ in Zukunft vermieden werden?]

Commit-Message Format

fix: [Kurze Beschreibung des Fixes]

Ursache: [Root-Cause in einem Satz]
Fix: [Was geaendert wurde]
Test: [Wie verifiziert]

PyQt6 / GUI Debugging — Haeufige Fallen

Diese Sektion ist relevant fuer Desktop-GUI-Projekte mit PyQt6/PySide6.

Top 5 PyQt6 Traps

TrapProblemLoesung
Signal-Slot DisconnectSignal connected aber Handler laeuft nichtprint in Handler, Signature pruefen
Thread-SafetyGUI-Update aus Worker-ThreadQMetaObject.invokeMethod oder Signal nutzen
Layout-CascadeWidget unsichtbar/falsch platziertwidget.show(), Layout-Hierarchie pruefen
Event-Loop BlockGUI friert einLangzeit-Ops in QThread auslagern
Garbage CollectionWidget verschwindet ploetzlichReferenz als self.widget halten

PyQt6 Debug-Helfer

# Widget-Hierarchie ausgeben
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)

# Signal-Debugging
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)

Quick Reference

BUG GEFUNDEN?
     │
     ▼
[Phase 1: Schnell-Checks]  ──── Offensichtlich? → FIX
     │
     ▼
[Phase 2: Diagnose]  ────────── Ursache klar? → Phase 4
     │
     ▼
[Phase 3: Isolierter Test]  ── Reproduzierbar? → Phase 4
     │                              │
     │                         Nicht reproduzierbar?
     │                              │
     │                         Logging einbauen,
     │                         auf erneutes Auftreten warten
     ▼
[Phase 4: Fix]  ─────────────── Minimal + verstanden
     │
     ▼
[Phase 5: Verifikation]  ────── Tests gruen? → Phase 6
     │                              │
     │                         Tests rot? → Zurueck zu Phase 4
     ▼
[Phase 6: Dokumentation]  ───── Bug-Report + Commit

20-Minuten-Regel

Wenn du nach 20 Minuten festhaengst:

  1. Ansatz wechseln — Andere Debugging-Technik probieren
  2. Rubber Duck — Problem laut erklaeren (oder aufschreiben)
  3. Pause — 5 Minuten weggehen, dann mit frischem Blick
  4. Hilfe holen — Kollege fragen, Stack Overflow, Dokumentation
  5. Zuruecksetzen — git stash, komplett neu anfangen

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

Терапия принятия и ответственности (ACT) Стивенса Хейса: модель Гексафлекс с шестью ключевыми процессами психологической гибкости.

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

See all skills by ellmos-ai

Report a problem with this skill