- CLAUDE.md: zwei Lessons-Eintraege (opencode-Default-Pfad kopieren, nicht symlinken; Kommentar in Code != Verhalten) - teilprojekte.md: TP35 Quick-Index auf 'Schicht 6 erledigt, Rest offen', Schicht-6-Befund im TP-Block, Ist-Stand auf 2026-08-28 mit MCP-Bestand- Korrektur - handoff-20260828-session-a-projektstatus.md: Session-A-Bericht mit Drift, Befund, Entscheid, Lehren fuer Session B Skill selbst liegt in ~/.config/opencode/skills/projektstatus/SKILL.md (cp aus ~/.claude/skills/projektstatus/, byte-identisch) - opencode scannt diesen Default-Pfad, kein skills.paths-Eintrag in der JSONC noetig.
6.1 KiB
6.1 KiB
Handoff 2026-08-28 — Session A (TP35 Schicht 6: /projektstatus-Skill für opencode)
Bezug: Handoff 2026-08-28 Bestand + Performance (
handoff-20260828-mcp-bestand-und-performance.md) → diese Session A (eine von drei Folge-Sessions aus dem obigen Handoff). Diese Datei: was in Session A passiert ist, was bleibt, Einstieg für Session B (shelly-mcp-Deploy).
TL;DR
/projektstatus-Skill läuft jetzt in opencode. Kopie (cp, keinln -s) nach~/.config/opencode/skills/projektstatus/SKILL.md.- Kein
skills.paths-Eintrag in~/.config/opencode/opencode.jsoncnötig — opencode scannt den Default-Pfad. - Lehre im CLAUDE.md-Lessons-Block: Default-Pfad kopieren, nicht symlinken, keine
skills.paths-Konfiguration. - Doku nachgezogen: TP35 Schicht 6 als ✅, Quick-Index ⏳ (Rest offen), Ist-Stand-Block auf 2026-08-28 mit MCP-Bestand-Korrektur.
Was war (Drift → Befund → Entscheid)
Drift
- Im gestrigen Handoff (
handoff-20260828-mcp-bestand-und-performance.md) stand, der testweise angelegte Symlink~/.config/opencode/skills/projektstatus → ~/.claude/skills/projektstatus/sei wieder entfernt worden. Wahr: das Verzeichnis~/.config/opencode/skills/existierte danach nicht mehr, opencode fand den Skill nicht. - Christoph-Direktive (verbatim aus CLAUDE.md-Lessons): "opencode ist die neue Umgebung, soll eigene Skill-Pfade haben, keine Symlinks". Frage: wohin genau? war offen.
Befund (verifiziert, nicht geraten)
- opencode-Schema aus
https://opencode.ai/config.json(gefetched und gelesen):skills.paths: string[]ist der dokumentierte Multi-Pfad-Loader. - Globale Default-Pfade lauten
~/.config/opencode/skill/<name>/SKILL.mdund~/.config/opencode/skills/<name>/SKILL.md(beide Singular/Plural) — und zusätzlich scannt opencode~/.claude/skills/<name>/SKILL.mdund~/.agents/skills/<name>/SKILL.mdals externe Skills (auto-loaded). - Die Lehrstelle gestern war ein Holzweg: Symlink-Workaround für etwas, wofür das Schema einen eingebauten Default-Pfad hat.
Entscheid
- Kopie der
SKILL.mdnach~/.config/opencode/skills/projektstatus/— keine Konfigurationsänderung anopencode.jsonc. - Begründung: hält die Welten sauber getrennt (zwei Pflegeorte für spätere Drift-Reparaturen), nutzt den opencode-Default-Pfad ohne Sonderlock, vermeidet die gestern explizit abgelehnte Symlink-Lösung.
Verifikation
cplief,diff -q ~/.claude/skills/projektstatus/SKILL.md ~/.config/opencode/skills/projektstatus/SKILL.md→ byte-identisch (kein Output = identisch).- Berechtigungen symmetrisch zur Quelle (
-rw-r--r--). opencode.jsoncist unverändert (kein Backup nötig, kein Diff).- Was die nächste Sitzung bestätigen muss: opencode neu starten,
/projektstatustriggern, den Baum lesen — der eigentliche Funktionsbeweis steht noch aus.
Was sich geändert hat (in dieser Session, im Repo)
| Datei | Änderung |
|---|---|
CLAUDE.md (Lessons) |
Zwei neue Einträge: (a) "opencode-Skills: Default-Pfad kopieren, NICHT symlinken" mit Schema-Referenz; (b) "Kommentar in Code ≠ Verhalten" als Generalisierung des credentials.json/.env-gitignore-Funds aus dem Commit-Schritt. |
docs/teilprojekte.md Quick-Index Z. 208 |
TP35: 🔜 → ⏳ (Schicht 6 ✅, Rest offen). |
docs/teilprojekte.md TP35-Block Z. 1747 |
Schicht 6 als ✅ markiert, Datum 2026-08-28, Befund-Block. |
docs/teilprojekte.md Ist-Stand Z. 28 |
Datum auf 2026-08-28, neue Bullet-Zeile MCP-Bestand-Korrektur. |
Was bewusst NICHT geändert wurde:
opencode.jsonc— der Pfad ist Default-Scan, kein Eintrag nötig.~/.claude/skills/projektstatus/— die Quelle, bleibt unverändert.docs/handoff-20260828-mcp-bestand-und-performance.md— gestern abgeschlossen, nicht überschrieben.
Sicherheitsfund (nicht-Session-A-Arbeit, aber heute aufgetaucht)
Beim commit/push der untracked Session-B-Vorbereitung:
routeros/cloudflared/credentials.json(Tunnel-PrivateKey base64) lag ungegittoret im Working Tree.mcp/shelly/.envtrug den Kommentar "gitignored, NICHT committen" — es gab aber keinmcp/shelly/.gitignore.- Beide gefixt in den Commits
27863c1und433e600(siehe Lessons-Block). - Working Tree ist clean, kein Secret jemals in den Index geraten.
Drei Folge-Sessions — was ist abgearbeitet, was steht
| Session | Status |
|---|---|
A — /projektstatus-Skill global |
✅ erledigt (diese Datei) |
| B — shelly-mcp-Container auf DS923 deployen (live, ssh) | 🔜 vorbereitet (Repo-Materialien committed 27863c1, .env lokal) |
| C — Caddyfile↔CF-Ingress-Drift-Probe + Backup-Guard | 🔜 unangetastet |
Lehren für die nächste Session (B)
- Live-Sweep am 2026-08-28 hat 23 Shellys auf VLAN30 bestätigt (
.30.202–.226+.233).SHELLY_SWEEP=10.40.30.180-250in~/.secrets/exports.zshist die Range, in der die echten Geräte alle liegen — die zusätzlichen 50 IPs sind Reserve, kein toter Sweep-Bereich. - Container-Pfad = DS923 (
10.40.20.10), NICHT macmini. Macmini belasten wir nicht, das war Christoph-Direktive. - Container-Definition lebt NICHT in
docs/nas-vlan20/stacks/shelly-mcp.yml— der wurde gestern gelöscht (User-Direktive: kein MCP-Client für shelly-mcp). Deployment = direkt via Portainer-API, nicht als Stack. - DHCP-Reservierung =
crs326-coredhcp-v20, MAC nach erstem Boot per MikroMCPmanage_dhcp_lease make-staticfestnageln. - WLAN-PSKs in
SHELLY_IOT_PSK/SHELLY_DEVICE_PW(aus~/.secrets/credentials.env) — niemals ins Repo oder in den Container-Image.
Commit
- Hash: siehe
git log --oneline -1nach diesem Handoff. - Geänderte Dateien:
CLAUDE.md,docs/teilprojekte.md, neue Dateidocs/handoff-20260828-session-a-projektstatus.md. - Commit-Message (Vorschlag):
TP35 Schicht 6: /projektstatus-Skill in opencode aktiviert + Doku nachgezogen
Stand
- 2026-08-28, ~19:30
- Diese Session = Skill-Pfad-Findung + Kopie + Lessons-Eintrag + TP35/Ist-Stand-Update + Handoff
- Sessions B + C aus dem gestrigen Handoff unverändert
~/.config/opencode/opencode.jsoncist unverändert (kein Backup)