# Workflow-Plan: Multi-Machine Development Tracking ## Problem - 4+ Maschinen mit verschiedenen Projekten - Verliert Überblick "Wo war ich? Was war der Stand?" - Gitea = Haupt-Tracking (gitea.egonetix.de:222) ## Inspiriert von Boris Cherny (Claude Code Creator) Quelle: [YouTube Video](https://www.youtube.com/watch?v=B-UXpneKw6M) | [Medium Summary](https://medium.com/@joe.njenga/boris-cherny-claude-code-creator-shares-these-22-tips-youre-probably-using-it-wrong-1b570aedefbe) **Key Takeaways eingebaut:** 1. **Learnings dokumentieren** → WORKLOG.md enthält "Learnings" Sektion für Fehler/Erkenntnisse 2. **Plan Mode First** → `/session-start` aktiviert Plan Mode für strukturierte Arbeit 3. **Verification Loops** → Skills enthalten Verifikationsschritte 4. **Separate Checkouts** → Doku für parallele Sessions auf gleicher Maschine --- ## Lösung: "Session Context" Workflow mit Gitea ### Kernprinzip Jedes Projekt hat eine **WORKLOG.md** die: - Bei Session-Start automatisch angezeigt wird - Den aktuellen Stand + nächste Schritte + Entscheidungen dokumentiert - Mit Gitea Issues verlinkt ist - Bei Session-Ende aktualisiert und committet wird --- ## Komponenten ### 1. WORKLOG.md pro Projekt ```markdown # Worklog: [Projektname] ## Current State **Zuletzt:** 2025-01-26 auf `n2095` (Desktop) **Branch:** feature/new-thing **Issue:** [#42 - API Implementation](https://gitea.egonetix.de/user/repo/issues/42) **Status:** In Progress - API fertig, Frontend fehlt ## Next Steps - [ ] Frontend-Komponente für User-Liste - [ ] Tests für API-Endpoints - [ ] Dokumentation aktualisieren ## Key Decisions - **2025-01-26:** REST statt GraphQL wegen einfacherer Integration - **2025-01-25:** PostgreSQL statt SQLite für Multi-User ## Learnings (für Claude) - **2025-01-26:** API-Routen MÜSSEN mit /api/ prefix beginnen, sonst Konflikt mit Frontend-Routes - **2025-01-25:** TypeScript strict mode aktivieren BEVOR Code geschrieben wird ## Session History ### 2025-01-26 | n2095 | Commits: `a3f2b1c`, `e7d4a9f` - API-Endpoints implementiert - Database-Schema angepasst - Issue #42 kommentiert ### 2025-01-25 | laptop | Commits: `b2c3d4e` - Projekt-Setup - Erste Analyse ``` ### 2. Tea CLI für Gitea Installation und Konfiguration der offiziellen Gitea CLI: ```bash # Installation sudo curl -fsSL https://dl.gitea.io/tea/0.9.2/tea-0.9.2-linux-amd64 -o /usr/local/bin/tea sudo chmod +x /usr/local/bin/tea # Login (einmalig pro Maschine) tea login add --url https://gitea.egonetix.de --token ``` Ermöglicht: - `tea issues` - Issues auflisten - `tea issues create` - Issue erstellen - `tea comment` - Issue kommentieren - `tea pr` - Pull Requests ### 3. Session-Start Hook `~/dotfiles/claude_settings/hooks/session-start.sh` (erweitert): ```bash #!/bin/bash # Zeigt WORKLOG.md wenn vorhanden if [[ -f "WORKLOG.md" ]]; then echo "=== PROJECT CONTEXT ===" # Zeige Current State und Next Steps sed -n '/## Current State/,/## Next Steps/p' WORKLOG.md sed -n '/## Next Steps/,/## Key Decisions/p' WORKLOG.md | head -10 echo "" # Letzte 3 Commits echo "=== RECENT COMMITS ===" git log --oneline -3 2>/dev/null echo "" # Gitea Issues (wenn tea konfiguriert) if command -v tea &>/dev/null; then echo "=== OPEN ISSUES ===" tea issues --state open --limit 5 2>/dev/null || echo "(Gitea nicht erreichbar)" fi fi ``` ### 4. Skill: `/session-end` Strukturiertes Session-Ende: 1. Sammelt aus Konversation was gemacht wurde 2. Fragt nach nächsten Schritten 3. Fragt nach wichtigen Entscheidungen 4. Updated WORKLOG.md: - Current State - Next Steps - Neuer Session History Eintrag 5. Committet WORKLOG.md 6. Optional: Kommentiert verknüpftes Gitea Issue ### 5. Skill: `/session-start` (manuell) Für expliziten Session-Start: 1. Zeigt WORKLOG.md Kontext 2. Zeigt offene Gitea Issues 3. Fragt "Woran willst du arbeiten?" 4. Aktualisiert "Current State" in WORKLOG.md ### 6. Skill: `/new-project` Für neue Projekte: 1. `git init` wenn nötig 2. Erstellt WORKLOG.md aus Template 3. Erstellt copilot-instructions.md aus Template 4. Optional: Erstellt Gitea Issue für das Projekt 5. Initial Commit --- ## Implementation Steps ### Phase 1: Grundlagen | # | Was | Dateien | |---|-----|---------| | 1 | Tea CLI installieren | System | | 2 | Tea Login konfigurieren | `~/.config/tea/config.yml` | | 3 | WORKLOG.md Template erstellen | `~/dotfiles/claude_settings/templates/WORKLOG.md` | | 4 | Session-Start Hook erweitern | `~/dotfiles/claude_settings/hooks/session-start.sh` | ### Phase 2: Skills | # | Was | Dateien | |---|-----|---------| | 5 | Skill `/session-end` erstellen | `~/dotfiles/claude_settings/skills/session-end.md` | | 6 | Skill `/session-start` erstellen | `~/dotfiles/claude_settings/skills/session-start.md` | | 7 | Skill `/new-project` erstellen | `~/dotfiles/claude_settings/skills/new-project.md` | ### Phase 3: Rollout | # | Was | |---|-----| | 8 | WORKLOG.md für 2-3 aktive Projekte anlegen | | 9 | Workflow auf anderen Maschinen einrichten (Settings-Repo pullen) | --- ## Beispiel-Workflow ``` === MONTAG, DESKTOP === $ cd ~/projects/smart-home $ claude [Hook Output:] === PROJECT CONTEXT === **Zuletzt:** 2025-01-24 auf laptop **Issue:** #12 - MQTT Integration **Status:** MQTT-Subscription halb fertig ## Next Steps - [ ] Sensor-Subscriptions implementieren - [ ] Error-Handling === RECENT COMMITS === a3f2b1c MQTT: Basic connection working b2c3d4e Initial MQTT setup === OPEN ISSUES === #12 MQTT Integration (in progress) #15 Add temperature dashboard Du: "weiter mit den subscriptions" ... arbeiten ... Du: "/session-end" Claude: Ich sehe du hast heute: - Sensor-Subscriptions implementiert (commits e7d4a9f, f8g9h0i) - Error-Handling hinzugefügt Was sind die nächsten Schritte? Du: "tests und dann das dashboard aus issue 15" Claude: Wichtige Entscheidungen heute? Du: "ja, wir nutzen QoS level 1 für reliability" [WORKLOG.md wird aktualisiert] [Commit: "worklog: session 2025-01-27"] [Issue #12 kommentiert: "Progress: Subscriptions + Error handling done"] ``` --- ## Bonus: Parallele Sessions (Boris Cherny Style) Wenn du mehrere Claude-Sessions auf EINER Maschine für das GLEICHE Projekt brauchst: ```bash # Separate Checkouts statt Branches/Worktrees cd ~/projects git clone git@gitea.egonetix.de:user/repo.git repo-session1 git clone git@gitea.egonetix.de:user/repo.git repo-session2 # Jede Session in eigenem Checkout # Terminal 1: cd ~/projects/repo-session1 && claude # Terminal 2: cd ~/projects/repo-session2 && claude ``` Vorteile: - Keine Merge-Konflikte während der Arbeit - Volle Isolation - Am Ende: Cherry-Pick oder PR mergen --- ## Verification Nach Implementation testen: 1. **Tea CLI:** `tea issues` in einem Gitea-Repo ausführen 2. **Hook:** Neues Terminal in Projekt mit WORKLOG.md öffnen → Kontext wird angezeigt 3. **Skills:** `/session-end` ausführen → WORKLOG.md wird korrekt aktualisiert 4. **Cross-Machine:** Settings auf anderer Maschine pullen, gleicher Workflow funktioniert 5. **Learnings Test:** Füge einen Fehler zu Learnings hinzu, starte neue Session → Claude sollte ihn berücksichtigen --- ## Dateien-Übersicht ``` ~/dotfiles/claude_settings/ ├── templates/ │ └── WORKLOG.md # NEU: Template ├── hooks/ │ └── session-start.sh # ERWEITERN: WORKLOG + Gitea anzeigen └── skills/ ├── session-end.md # NEU: Session beenden ├── session-start.md # NEU: Session starten (manuell) └── new-project.md # NEU: Projekt anlegen ```