hugin/STUFE0.md
2026-10-27 08:33:21 +01:00

4.5 KiB
Raw Blame History

Stufe 0: Ergebnisse

Verhaltensfragen aus KONZEPT.md 20, Stufe 0: Wie lesen Claude Code und OpenCode die Dateien, die Hugin schreibt? Stand 19.10.2026.

Werkzeug Version
Claude Code 2.1.303 (Changelog-Auswertung mit 2.1.302)
OpenCode 1.19.3; Fragen 1–3, 6, 7 zuerst mit 1.15.4, gleiches Ergebnis. OpenCode 2 nicht installiert

So geprüft (Spalte „Wie“):

  • S0 – scripts/stage0.sh: nur opencode debug … und der Server von opencode serve, kein Modellaufruf, kostenlos.
  • RT – scripts/tool-smoke-test.sh: echte Modellaufrufe (Claude Code mit haiku, OpenCode mit openai/gpt-6-luna). Ergebnis auch in COMPATIBILITY.md.
  • CL – Changelog bzw. Release-Notes.

Geklärt

# Frage Ergebnis Folge für Hugin Wie
1 Unbekannte Felder in SKILL.md (allowed-tools, paths, effort)? OpenCode übergeht sie still, der Skill lädt Zusätze für Claude stehen in derselben Datei; der Skill bleibt portable (→ 7.1) S0
2 Gleicher Skill-Name in .claude/skills/ und .opencode/skills/? nur eine Fassung wird geladen, welche, ist nicht verlässlich Hugin legt einen Skill nie an beiden Orten ab; .opencode/skills/ nur bei opencode_reads_claude: false S0
3 Liest OpenCode .claude/commands/ oder .claude/agents/? nein, beide nicht Befehle und Subagenten je Werkzeug am eigenen Ort, keine Doppel (→ 7.3, 7.4) S0
3a Liest OpenCode .opencode/commands/ und .opencode/agents/? ja; permission mit deny wirkt Format der Übersetzer bestätigt S0, RT
4 Liest OpenCode ohne AGENTS.md die CLAUDE.md und löst deren @-Verweise auf? liest CLAUDE.md, löst @ nicht auf keine Doppel: Regeln kommen in OpenCode nur über instructions an; keine eigene AGENTS.md nötig RT
5 Claude Code und AGENTS.md liest AGENTS.md ab 2.1.277 nur ohne CLAUDE.md; mit beiden Dateien nur CLAUDE.md unkritisch: Hugin legt CLAUDE.md an, Regeln kommen nicht doppelt CL, RT
6 JSONC in opencode.json? ja, Kommentare und Komma am Ende werden gelesen das CLI erhält Kommentare beim Ändern (hujson) S0
7 Werkzeug- und Rechtenamen OpenCode-Werkzeuge: read, grep, glob, edit, write, bash, webfetch, websearch, task, skill, todowrite, question; Rechte u. a. edit, bash, webfetch, external_directory Fähigkeitsklasse read sperrt auch websearch (→ KONZEPT.md 7.4) S0
8a Benannte Argumente in Claude Code (arguments, $name)? wirken in 2.1.303 Übersetzer bestätigt; ab welcher Version, ist offen (siehe unten) RT
8b Wirkt metadata: opencode/slash? nein: jeder Skill ist ohnehin ein Slash-Befehl, auch mit opencode/slash: "false" Feld nicht nötig; Linter-Hinweis H023 S0
8c Wirkt metadata: opencode/autoinvoke: "false"? nein: das Modell lädt den Skill trotzdem selbst, auch mit disable-model-invocation: true in derselben Datei. Claude Code hält sich an disable-model-invocation „nur von Hand“ geht in OpenCode 1 nicht; Linter-Hinweis H023, Ausweg targets: [claude] RT
– MCP: type: remote, headers, {env:VAR} funktioniert; die Verbindung mit dem Key aus der Umgebungsvariable klappt Übersetzer bestätigt. Ab 1.19 zeigt debug config Header nur maskiert S0, RT
– MCP in Claude Code aus .mcp.json Server stehen auf „Pending approval“, bis jemand zustimmt; settings.local.json im Repo hilft dabei nicht in der Hilfe für Teams beschrieben; der Rauchtest stimmt mit --settings zu RT

Wie die Slash-Liste geprüft wird: opencode serve starten und GET /command abfragen. Das ist dieselbe Liste, die das TUI bei / anbietet.

Offen

# Frage So prüfen
8a Ab welcher Version kennt Claude Code benannte Argumente? Davon hängt die Untergrenze 2.1.105 ab ältere Version installieren, dann TOOLS=claude scripts/tool-smoke-test.sh
9 Unterstützt OpenCode MCP-Prompts und -Ressourcen? nur zur Information, Hugin baut nicht darauf
10 OpenCode 2: alte MCP-Form (mcp.<name>, enabled)? unbekannte Felder? Doppel bei Skills? opencode/autoinvoke? OPENCODE=<opencode-2> scripts/stage0.sh und OPENCODE=<opencode-2> OPENCODE_MODEL=… scripts/tool-smoke-test.sh

Nebenbefund

Auf dem Entwicklungsrechner ist global ein OpenCode-Plugin skill-registry installiert, das Skills, Agenten und Befehle von http://localhost:8000 synchronisieren will. Beide Skripte schalten es mit --pure ab.