# `dev_session.py` - Notion Development Session Manager ## Übersicht `dev_session.py` ist ein interaktives Kommandozeilen-Tool (CLI), das entwickelt wurde, um den Entwicklungs-Workflow durch die Integration mit Notion's "Ultimate Tasks"- und "Projects"-Datenbanken zu optimieren. Es ermöglicht Entwicklern, eine Entwicklungssitzung zu starten, indem sie ein Projekt und einen Task aus Notion auswählen, den Task-Status automatisch aktualisieren und einen formatierten Kontext für die Gemini CLI generieren. ## Funktionen * **Interaktive Projekt- und Task-Auswahl:** Wähle Projekte und Tasks direkt aus deinen Notion-Datenbanken. * **Automatisches Status-Update:** Der Status des ausgewählten Tasks wird automatisch auf 'Doing' (oder den ersten verfügbaren Status in neuen Projekten) gesetzt, um deinen Fortschritt in Notion widerzuspiegeln. * **Task-Erstellung:** Erstelle neue Tasks direkt über das CLI im Kontext des ausgewählten Projekts. * **Dynamische Status-Erkennung:** Fragt Notion API nach verfügbaren Status-Optionen ab, um Kompatibilität mit verschiedenen Notion-Templates zu gewährleisten. * **Gemini CLI Kontext-Generierung:** Erzeugt einen strukturierten Kontext-Prompt, der alle relevanten Informationen (Projekt, Task, Task-ID, vorgeschlagener Git-Branch-Name) für die Gemini CLI enthält. * **Vorgeschlagene Git Branch-Benennung:** Erstellt einen konsistenten Git-Branch-Namen basierend auf der Task-ID und dem Task-Titel. ## Voraussetzungen * Python 3.6+ * `requests` Bibliothek (`pip install requests`) * Ein Notion Integration Token mit Zugriff auf deine "Projects [UT]"- und "Tasks [UT]"-Datenbanken. ## Installation und Einrichtung 1. **Notion API Key:** * Stelle sicher, dass du einen Notion Integration Token hast. * Speichere deinen Token in einer Umgebungsvariablen namens `NOTION_API_KEY`. Alternativ fragt das Skript beim Start danach. * Gewähre der Integration Zugriff auf deine "Projects [UT]"- und "Tasks [UT]"-Datenbanken in Notion. 2. **Abhängigkeiten installieren:** ```bash pip install requests ``` ## Nutzung 1. **Führe das Skript aus:** ```bash python3 dev_session.py ``` 2. **Notion API Key eingeben:** Wenn `NOTION_API_KEY` nicht als Umgebungsvariable gesetzt ist, wirst du zur Eingabe aufgefordert. 3. **Projekt auswählen:** Wähle dein gewünschtes Projekt aus der angezeigten Liste der Notion-Projekte. 4. **Task auswählen oder erstellen:** * Wenn Tasks für das Projekt vorhanden sind, wähle einen aus. * Wenn keine Tasks vorhanden sind oder du einen neuen erstellen möchtest, wähle die Option zum "Neuen Task für dieses Projekt erstellen". Du wirst dann nach dem Task-Titel gefragt. 5. **Git Branch erstellen (manuell):** Das Skript gibt einen `git checkout -b`-Befehl aus, den du kopieren und in deinem Terminal ausführen solltest, um einen neuen Branch für den Task zu erstellen. 6. **Gemini CLI Kontext:** Das Skript gibt einen formatierten Textblock aus, den du direkt in die Gemini CLI kopieren und einfügen kannst, um die KI mit dem relevanten Kontext zu versorgen. ### Beispiel-Interaktion (gekürzt) ``` Starte interaktive Entwicklungs-Session... Bitte gib deinen Notion API Key ein (Eingabe wird nicht angezeigt): **************** Suche nach Datenbank 'Projects [UT]' in Notion... Datenbank 'Projects [UT]' gefunden mit ID: An welchem Projekt möchtest du arbeiten? [1] My Awesome Project [2] Sync Engine [...] Bitte wähle eine Nummer: 2 Projekt 'Sync Engine' ausgewählt. --- Lade Tasks für das ausgewählte Projekt... --- Keine offenen Tasks für dieses Projekt gefunden. [1] Neuen Task für dieses Projekt erstellen Bitte wähle eine Nummer: 1 --- Neuen Task erstellen --- Bitte gib den Titel für den neuen Task ein: Create README.md for dev_session.py ✅ Task 'Create README.md for dev_session.py' erfolgreich erstellt. Task 'Create README.md for dev_session.py' ausgewählt. --- Aktualisiere Status von Task '' auf 'Doing'... --- ✅ Task-Status erfolgreich auf 'Doing' aktualisiert. ------------------------------------------------------------------ ✅ Setup abgeschlossen! Du solltest jetzt den Git-Branch manuell erstellen und auschecken: git checkout -b feature/task-2f388f42-create-readmemd-for-devsessionpy Der Notion-Task 'Create README.md for dev_session.py' wurde auf 'Doing' gesetzt. --- Kontext für die Gemini CLI (bitte kopieren und einfügen): Ich arbeite jetzt am Projekt 'Sync Engine'. Der Fokus liegt auf dem Task 'Create README.md for dev_session.py'. Die relevanten Dateien für dieses Projekt sind wahrscheinlich: - Die primäre Projektdokumentation: @readme.md - Die spezifische Dokumentation für dieses Modul: @readme.md (falls vorhanden) - Der Haupt-Code befindet sich wahrscheinlich in: @dev_session.py Mein Ziel ist es, den Task 'Create README.md for dev_session.py' umzusetzen. Alle Commits für diesen Task sollen die Kennung `[2f388f42]` enthalten. ------------------------------------------------------------------ ``` ## Git Branch Benennungs-Konvention Das Skript schlägt automatisch einen Git-Branch-Namen vor, der dem Muster `feature/task-{kurze_task_id}-{task_titel_slug}` folgt. * `feature/task-`: Ein Präfix, das den Branch-Typ und die Beziehung zu einem Notion-Task anzeigt. * `{kurze_task_id}`: Die ersten 8 Zeichen der Notion Task ID, für eine eindeutige Referenz. * `{task_titel_slug}`: Eine "Slugified"-Version des Task-Titels (Kleinbuchstaben, Leerzeichen durch Bindestriche ersetzt, Sonderzeichen entfernt). **Beispiel:** `feature/task-2f388f42-create-readmemd-for-devsessionpy` ## Wichtige Hinweise * Stelle sicher, dass deine Notion-Datenbanken die Property `Status` mit mindestens einer Statusoption haben. * Der `Readme Path` wird dynamisch aus dem in Notion ausgewählten Projekt geladen. Falls in Notion kein spezifischer Pfad hinterlegt ist, wird standardmäßig `readme.md` verwendet. Dies eliminiert die Notwendigkeit einer manuellen `project_to_path_map` im Skript.