2026-05-30 17:19:52 +00:00
|
|
|
|
# Administrator-Handbuch – rd13_copilot_setup
|
|
|
|
|
|
|
|
|
|
|
|
> Zielgruppe: **Administratoren & DevOps** – Menschen, die das Setup deployen und auf Systemen verwalten.
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## Systemvoraussetzungen
|
|
|
|
|
|
|
|
|
|
|
|
| Komponente | Anforderung |
|
|
|
|
|
|
|---|---|
|
|
|
|
|
|
| Git | ≥ 2.28 |
|
|
|
|
|
|
| Shell | POSIX sh (bash, dash) oder fish ≥ 3.x |
|
|
|
|
|
|
| VS Code / VS Code Server | beliebige aktuelle Version |
|
|
|
|
|
|
| OS | Linux oder macOS |
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## Deployment auf einem neuen System
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
git clone <repo-url> ~/dotfiles/copilot-setup
|
|
|
|
|
|
cd ~/dotfiles/copilot-setup
|
|
|
|
|
|
|
|
|
|
|
|
bash scripts/deploy.sh # bash (macOS + Linux)
|
|
|
|
|
|
# oder
|
|
|
|
|
|
fish scripts/deploy.fish # fish (Linux)
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### Was das Deploy-Skript tut
|
|
|
|
|
|
|
|
|
|
|
|
| Schritt | Was | Ziel |
|
|
|
|
|
|
|---|---|---|
|
|
|
|
|
|
| 1 | VS Code User-dir ermitteln | plattformspezifisch (Server / lokal / macOS) |
|
|
|
|
|
|
| 2 | `settings.json` deployen | `~/.vscode-server/data/User/` (oder Äquivalent) |
|
|
|
|
|
|
| 3 | Prompt Files deployen | `~/.vscode-server/data/User/prompts/` |
|
|
|
|
|
|
| 4 | Git-Templates deployen | `~/.git-templates/` inkl. Hooks, Docs, History-Template |
|
|
|
|
|
|
| 5 | Bootstrap-Skript installieren | `~/.local/bin/copilot-bootstrap.sh` |
|
|
|
|
|
|
| 6 | Git-Alias setzen | `~/.gitconfig` → `git init` ruft Bootstrap automatisch auf |
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## Git-Templates verwalten
|
|
|
|
|
|
|
|
|
|
|
|
Die Templates unter `git-templates/` werden beim Deployen nach `~/.git-templates/` kopiert.
|
|
|
|
|
|
Sie werden bei **jedem** `git init` automatisch in neue Repos kopiert (via `init.templateDir`).
|
|
|
|
|
|
|
|
|
|
|
|
**Struktur nach Deploy:**
|
|
|
|
|
|
```
|
|
|
|
|
|
~/.git-templates/
|
|
|
|
|
|
├── .github/copilot-instructions.md
|
|
|
|
|
|
├── .vscode/settings.json
|
|
|
|
|
|
├── .vscode/extensions.json
|
|
|
|
|
|
├── hooks/
|
|
|
|
|
|
│ └── pre-commit ← Agent Quality Gate (ausführbar)
|
|
|
|
|
|
├── docs/
|
|
|
|
|
|
│ ├── USER.md
|
|
|
|
|
|
│ ├── ADMIN.md
|
|
|
|
|
|
│ └── MAINTAINER.md
|
|
|
|
|
|
└── history/
|
|
|
|
|
|
└── summary/
|
|
|
|
|
|
└── PROJECT_CONTEXT.md
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## pre-commit Hook verwalten
|
|
|
|
|
|
|
|
|
|
|
|
Der Hook liegt in `git-templates/hooks/pre-commit` und wird automatisch deployed.
|
|
|
|
|
|
|
|
|
|
|
|
**Hook aktivieren in bestehenden Repos (manuell):**
|
|
|
|
|
|
```bash
|
|
|
|
|
|
cp ~/.git-templates/hooks/pre-commit /path/to/repo/.git/hooks/pre-commit
|
|
|
|
|
|
chmod +x /path/to/repo/.git/hooks/pre-commit
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**Hook dauerhaft deaktivieren (pro Repo):**
|
|
|
|
|
|
```bash
|
|
|
|
|
|
chmod -x .git/hooks/pre-commit
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2026-06-03 06:07:57 +00:00
|
|
|
|
### Quality Gate – Übersicht der Checks
|
|
|
|
|
|
|
|
|
|
|
|
| Check | Was wird geprüft | Opt-out Datei |
|
|
|
|
|
|
|---|---|---|
|
|
|
|
|
|
| 1 | Tests gestaged bei Code-Änderungen | `.copilot-no-tests` |
|
|
|
|
|
|
| 2 | Mindestens eine Zielgruppen-Doku aktualisiert | `.copilot-no-docs` |
|
|
|
|
|
|
| 3 | Alle 3 Zielgruppen-Docs vorhanden (USER/ADMIN/MAINTAINER) | – |
|
|
|
|
|
|
| 4 | `history/summary/PROJECT_CONTEXT.md` aktualisiert | – |
|
|
|
|
|
|
| 5 | `docs/requirements/REQUIREMENTS.md` keine unstaged Änderungen | `.copilot-no-requirements` |
|
|
|
|
|
|
| 6 | Eine `*_session.md` ist in diesem Commit gestaged | – (kein Opt-out) |
|
|
|
|
|
|
|
|
|
|
|
|
**Opt-out Dateien** – einfach im Repo-Root anlegen um einen Check zu deaktivieren:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
touch .copilot-no-tests # Repo hat kein Test-Framework
|
|
|
|
|
|
touch .copilot-no-docs # Repo hat keine Doku-Pflicht (reine Scripts/Config)
|
|
|
|
|
|
touch .copilot-no-requirements # Repo verwendet keine REQUIREMENTS.md
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
Opt-out Dateien committen damit sie für alle gelten:
|
|
|
|
|
|
```bash
|
|
|
|
|
|
git add .copilot-no-tests && git commit -m "chore: disable test check (no test framework)"
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2026-05-30 17:19:52 +00:00
|
|
|
|
---
|
|
|
|
|
|
|
2026-06-03 09:21:53 +00:00
|
|
|
|
## Templates in bestehenden Repos aktualisieren (`git copilot-update`)
|
|
|
|
|
|
|
|
|
|
|
|
Nach Änderungen am Setup-Repo können alle Repos mit dem neuesten Stand versorgt werden:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
cd /path/to/any-repo
|
|
|
|
|
|
git copilot-update
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**Was `git copilot-update` tut:**
|
|
|
|
|
|
|
|
|
|
|
|
| Schritt | Was | Besonderheit |
|
|
|
|
|
|
|---|---|---|
|
|
|
|
|
|
| 0 | Setup-Repo Cache aktualisieren (`~/.copilot-setup/`) | SSH, HTTP-Fallback |
|
|
|
|
|
|
| 1b | **Script selbst aktualisieren** (`~/.local/bin/copilot-update.sh`) | startet neue Version via `exec` |
|
|
|
|
|
|
| 2 | `~/.git-templates/` aktualisieren | Hooks, Docs, History-Template |
|
|
|
|
|
|
| 3 | VS Code Prompt-Dateien aktualisieren | `~/.vscode-server/.../prompts/` |
|
|
|
|
|
|
| 4a | `.git/hooks/pre-commit` aktualisieren | nur wenn Repo vorhanden |
|
|
|
|
|
|
| 4b | `.github/copilot-instructions.md` Framework-Sektion aktualisieren | Projekt-Teil (ab `---`) bleibt unberührt |
|
|
|
|
|
|
|
|
|
|
|
|
> **Wichtig:** Die `.github/copilot-instructions.md` besteht aus zwei Teilen:
|
|
|
|
|
|
> - **Framework-Sektion** (vor `---`): Session-Protokoll, Verbotene Aktionen → wird bei jedem Update überschrieben
|
|
|
|
|
|
> - **Projekt-Sektion** (ab `---`): Stack, Architecture, Conventions → bleibt immer erhalten
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
2026-05-30 17:19:52 +00:00
|
|
|
|
## Bestehende Repos ausstatten
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
cd /path/to/existing-repo
|
|
|
|
|
|
copilot-bootstrap.sh
|
|
|
|
|
|
# oder von überall:
|
|
|
|
|
|
sh ~/.local/bin/copilot-bootstrap.sh /path/to/repo
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
Das Bootstrap-Skript legt idempotent an:
|
|
|
|
|
|
- `.github/copilot-instructions.md`
|
|
|
|
|
|
- `.vscode/settings.json` + `.vscode/extensions.json`
|
|
|
|
|
|
- `data/` (gitignored)
|
2026-05-31 12:51:15 +00:00
|
|
|
|
- `history/prompts/` (committed) + `history/summary/PROJECT_CONTEXT.md`
|
2026-05-30 17:19:52 +00:00
|
|
|
|
- `docs/USER.md`, `docs/ADMIN.md`, `docs/MAINTAINER.md`
|
|
|
|
|
|
- `.git/hooks/pre-commit`
|
2026-05-31 12:51:15 +00:00
|
|
|
|
- `.gitignore`-Einträge für `data/**/*`
|
2026-05-30 17:19:52 +00:00
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## `~/.local/bin/` im PATH?
|
|
|
|
|
|
|
|
|
|
|
|
Das Bootstrap-Skript wird in `~/.local/bin/` installiert. Sicherstellen dass dieser Pfad im `$PATH` ist:
|
|
|
|
|
|
|
|
|
|
|
|
**bash/zsh** (`~/.bashrc` / `~/.zshrc`):
|
|
|
|
|
|
```bash
|
|
|
|
|
|
export PATH="$HOME/.local/bin:$PATH"
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**fish** (`~/.config/fish/config.fish`):
|
|
|
|
|
|
```fish
|
|
|
|
|
|
fish_add_path ~/.local/bin
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## Troubleshooting
|
|
|
|
|
|
|
|
|
|
|
|
| Problem | Ursache | Lösung |
|
|
|
|
|
|
|---|---|---|
|
|
|
|
|
|
| `copilot-bootstrap.sh: command not found` | `~/.local/bin` nicht im PATH | Siehe "PATH" oben |
|
|
|
|
|
|
| `git init` ruft Bootstrap nicht auf | Git-Alias nicht gesetzt | `deploy.sh` erneut ausführen |
|
2026-06-03 06:07:57 +00:00
|
|
|
|
| Hook schlägt fehl: Tests fehlen | Code geändert ohne Tests | `/write-tests` in Copilot Chat, oder `.copilot-no-tests` anlegen |
|
|
|
|
|
|
| Hook schlägt fehl: Doku fehlt | Code geändert ohne Doku-Update | Docs aktualisieren, oder `.copilot-no-docs` anlegen |
|
|
|
|
|
|
| Hook schlägt fehl: Session fehlt | `*_session.md` nicht gestaged | Copilot Chat → `/history`, dann `git add history/` |
|
|
|
|
|
|
| Hook schlägt fehl: REQUIREMENTS.md unstaged | Requirements geändert aber nicht gestaged | `git add docs/requirements/REQUIREMENTS.md` |
|
2026-05-30 17:19:52 +00:00
|
|
|
|
| Hook nicht aktiv nach `git clone` | Hooks werden bei `clone` nicht kopiert | `copilot-bootstrap.sh` im geklonten Repo ausführen |
|