- CLAUDE.md: Host-Troubleshooting → Infrastruktur-Dokumentationssystem - session-start.sh: Erkennt ~/Nextcloud/[kunde]/[repo]/ Struktur - Legacy-Support für ~/Nextcloud/hosts/ mit Migrations-Hinweis Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
270 lines
7.5 KiB
Markdown
270 lines
7.5 KiB
Markdown
# 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)
|
|
<!-- Fehler und Erkenntnisse damit Claude sich verbessert -->
|
|
- **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 <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
|
|
```
|