nimm mal mit auf was die default shell auf dem system ist auf dem entwickelt wird, bei mir ist das fast immer fish und das sollte als default drin stehen aber auch änderbar sein bzw. bei einem neuen repo neu hinzugefügt werden muss.
### Antwort 1
Ich habe ein **Default-Shell-Feld** eingeführt, das (a) standardmäßig `fish` enthält, (b) jederzeit manuell änderbar ist und (c) beim Bootstrap eines neuen Repos automatisch aus `$SHELL` des Entwicklungssystems gesetzt wird.
Zentrale Designentscheidung: Das Feld liegt in der **Projekt-Sektion** der `copilot-instructions.md` (nach dem ersten `---`). Grund: `copilot-update` schreibt die Framework-Sektion (vor `---`) bei jedem Update neu — nur hinter `---` überlebt ein repo-/maschinenspezifischer Wert. Diese Constraint habe ich zusätzlich im Repo-Memory festgehalten.
Geänderte Dateien (7):
```text
.github/copilot-instructions.md # neue Sektion "🖥 Entwicklungsumgebung" mit "- **Default-Shell:** fish" (nach ---)
git-templates/.github/copilot-instructions.md # gleiche Sektion im Template (Wert wird beim Bootstrap ersetzt)
- Wert gegen `^[a-z0-9_-]+$` geprüft (verhindert sed-Injection), sonst Fallback `fish`.
-`_set_dev_shell()` ersetzt die `- **Default-Shell:** …`-Zeile **nur in frisch erzeugten**`copilot-instructions.md` (bestehende Dateien bleiben unangetastet → User-Anpassung bleibt erhalten).
### Prompt 2
War das hier alles abgeschlossen und committed, dokumentiert und gepusht?
### Antwort 2
Nein — der Code war fertig und validiert, aber **nicht** committed, **nicht** in die History dokumentiert und **nicht** gepusht; zusätzlich lag der lokale Branch 1 Commit **hinter**`origin/master`. Ich habe den Zustand geprüft, das fehlende Remote-Commit integriert, alles validiert und anschließend History + Kontext geschrieben, committed und gepusht.
Statusprüfung:
```text
git status → 7 unstaged Dateien, "behind 'origin/master' by 1 commit"
sh -n / fish -n → bootstrap.sh OK, selftest.sh OK, bootstrap.fish OK
sh scripts/selftest.sh → 6/6 PASS (inkl. neuer Shell-Erkennungsfälle)
```
Integration des Remote-Commits (`e83c333 docs: add rd13 infrastructure conventions`) trotz dirty tree — die 3 überlappenden Dateien hatten Hunks an unterschiedlichen Stellen, daher konfliktfrei:
Reihenfolge laut Fallstrick-Regel eingehalten (erst committed+gepusht, dann deployt). Vollständiger fish-Deploy ausgeführt, der sowohl die Bin-Skripte als auch `~/.git-templates/` aktualisiert:
Output: beide Skripte `OK identisch`, Template Zeile 66 `- **Default-Shell:** fish`, Smoke-Test schrieb `- **Default-Shell:** fish` (erkannt aus `SHELL=/bin/fish`).
Fehler dabei: Der erste Verifikations-Versuch war in POSIX-Syntax (`tmp=$(mktemp -d)`, `for…do…done`) in eine **fish**-Shell getippt → `fish: Unsupported use of '='`. Hintergrund-Terminal verworfen, fish-nativ neu geschrieben.
### Prompt 4
Der Befehl war in POSIX-Syntax geschrieben, aber das Terminal ist fish — daher die Syntaxfehler. Ich räume das Hintergrund-Terminal weg und schreibe die Verifikation fish-nativ.
Das das nicht mehr passiert habe ich dich angewiesen die letzten änderungen zu machen. jetzt passiert das immer noch. Warum und was müssen wir noch anpassen das das nicht mehr passiert das nervt!!!!
### Antwort 4
Ursachenanalyse: Das Default-Shell-Feld war nicht das Problem — die Information stand bereits in meinem Kontext (in `copilot-instructions.md`**und** der Terminal-Tool-Beschreibung „persistent fish terminal session"). Ein **passives Datenfeld** ändert das Modellverhalten aber nicht zuverlässig; mein Default-Reflex ist POSIX/bash. Das Feld war zudem schwach formuliert und stand in der unteren Projekt-Sektion statt als harte Regel oben.
Drei Hebel umgesetzt:
1.**Imperative Regel statt Beschreibung** — neue Sektion „🖥 Terminal-Syntax (MANDATORY)" in der Framework-Sektion beider `copilot-instructions.md` (dieses Repo + Template). Mit exaktem Fehlerbild (`VAR=$(cmd)` → fish-Abbruch) und dem deterministischen Ausweg: alles Nicht-Triviale in eine `.sh`-Datei mit `#!/usr/bin/env bash` schreiben und `bash datei.sh` ausführen → Prompt-Shell-Syntax wird irrelevant.
2.**Memory-Notiz**`/memories/shell-syntax.md` — wird jede Session automatisch geladen, wirkt direkt auf mein Verhalten über Sessions hinweg.
3.**Template + Redeploy** — neue Repos erben die Regel; `~/.git-templates` nach Commit/Push neu deployt.
Geänderte Dateien: `.github/copilot-instructions.md`, `git-templates/.github/copilot-instructions.md`, `/memories/shell-syntax.md` (User-Memory), History + PROJECT_CONTEXT.