Basis aus 2nd-brain für LPIC-Prüfungsvorbereitung übernommen

Regeln, Standards, Kontextstruktur und Werkzeuge übernommen; 2nd-brain-
Inhalte (Stacks, Ansible-Inventar, Architektur, Knowledge) entfernt.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Björn RundenandClaude Opus 5.5 committed 2026-10-29 21:56:53 +01:00
commit 7f6b8ebe07
70 files changed
+2816

No files matched your search

+26
View File
@@ -0,0 +1,26 @@
# ai/rules/ – verbindliche Regeln
> Regeln haben **Vorrang** vor allem anderen in dieser Basis (außer den Sicherheits-/Datenschutzgrenzen des Agenten selbst).
> Eine Regel pro Datei. Ändern nur durch den Bediener oder auf seine ausdrückliche Anweisung.
| Datei | Regel in einem Satz |
|---|---|
| [language.md](language.md) | Alles in der Amtssprache aus `AGENTS.md`; Struktur sprachneutral englisch. |
| [privacy.md](privacy.md) | Keine identifizierenden Personen-/Umgebungsdaten an externe Dienste; Daten nach Klasse behandeln. |
| [secrets.md](secrets.md) | Geheimnisse nie in Dateien/Git/Chat; Secret-Store zuerst, Ansible Vault als Fallback. |
| [headers.md](headers.md) | Jede Code-Datei trägt einen Header mit namentlich Verantwortlichen. |
| [testing.md](testing.md) | Lokal testen; Cloud-VMs und Produktion nur mit ausdrücklicher Freigabe. |
| [file_safety.md](file_safety.md) | Vor Löschen/Überschreiben ansehen, `*.orig` statt Löschen. |
| [web_search.md](web_search.md) | Web-Recherche erlaubt, aber ohne interne Daten; Quellen mit Datum. |
## Aufbau einer Regeldatei
```markdown
# Regel: <Thema>
> Stand: TT.MM.JJJJ · gilt für: alle Agenten (bis auf Widerruf)
## Erlaubt / Pflicht
## Verboten / Einschränkungen
## Ausnahmen (wer darf freigeben, wie wird es dokumentiert)
```
Ausnahmen, die der Bediener erteilt, in `context.md` mit Datum festhalten – sie gelten nur für genau diesen Fall.
+9
View File
@@ -0,0 +1,9 @@
# Regel: Löschen und Überschreiben
> Stand: 07.10.2026 · gilt für: alle Agenten
- Vor dem Löschen/Überschreiben: **Ziel ansehen** (Inhalt, Größe, Änderungsdatum) und im Zweifel nachfragen.
- Statt Löschen: Sicherung `<datei>.orig` (bei Kollision `<datei>.orig.JJJJMMTT`). `*.orig` steht in `.gitignore`.
- Massenoperationen (`rm -r`, `find -delete`, `rsync --delete`, `git clean`, `git reset --hard`) nur mit Freigabe und vorherigem Trockenlauf.
- Fremde Dateien (nicht in dieser Basis/diesem Projekt entstanden) nicht ohne Auftrag umbauen oder „aufräumen“.
- Ansible: `backup: true` bei Templates auf Zielsystemen, sofern die Datei keine Geheimnisse enthält (sonst Kopien mit Geheimnissen → bewusst entscheiden).
+35
View File
@@ -0,0 +1,35 @@
# Regel: Header mit Verantwortlichen
> Stand: 08.10.2026 · gilt für: jede Code-, Konfigurations- und Template-Datei, die in diesem Repo entsteht
## Pflicht
Jede Datei beginnt (nach Shebang bzw. `---`) mit einem Header im **bashdoc-Stil** (`## @tag`), eingerahmt von `#-----`-Linien:
| Tag | Pflicht | Inhalt |
|---|---|---|
| `@file` | ja | Dateiname |
| `@brief` | ja | Zweck in einem Satz |
| `@author` | ja | `Name <mail>` des verantwortlichen Menschen (aus `ai/context/responsible.md`) – nie die KI. Mehrere Autoren: Zeile `@author` wiederholen, Hauptautor zuerst |
| `@owner` | ja | `Name <mail>` oder Rolle des fachlich Verantwortlichen (aus `responsible.md`) |
| `@assist` | wenn KI beteiligt | `KI-unterstützt (<Modell>), geprüft von <author>` |
| `@version` | ja | SemVer + Datum `x.y.z (TT.MM.JJJJ)` |
| `@usage` | Scripts/Playbooks | Aufruf; Optionen bei Bash über `## @OPTIONS@` (generiert) |
- Agenten tragen Namen und Mail exakt wie in `responsible.md` (Spalte „Header-String“) ein. Fehlt dort ein Eintrag: Platzhalter `<AUTOR>` stehen lassen und den Bediener darauf hinweisen – **keine Namen erfinden**.
- Bei inhaltlicher Änderung: `@version` erhöhen, Datum aktualisieren; `@author` nur ändern, wenn die Verantwortung wechselt.
- Kommentar-Präfix je Sprache: Bash/YAML/Python `##`, Jinja `{#- … -#}`, SQL `--`. Format der Tags bleibt gleich.
## Vorlagen
`ai/common/templates/` – Bash (`bash/script_template.sh`), Ansible (`ansible/playbooks/example.yml`), Docker (`docker/docker-compose.yml`).
## Beispiel (mehrere Autoren)
```bash
## @author Erika Muster <erika.muster@example.org>
## @author Max Beispiel <max.beispiel@example.org>
## @owner Clara Fach <clara.fach@example.org>
```
## Änderungsprotokoll
- 07.10.2026 – angelegt.
- 08.10.2026 – `Name <mail>`-Format, mehrere `@author` erlaubt.
- 23.10.2026 – Mandantenbezug entfernt (Einzelprojekt).
+17
View File
@@ -0,0 +1,17 @@
# Regel: Amtssprache
> Stand: 07.10.2026 · gilt für: alle Agenten, alle Ausgaben
## Pflicht
- Die **Amtssprache** steht in `AGENTS.md` → „Metadaten“ (Skeleton: `de`). Sie gilt für:
Antworten, Markdown-Dokumente, Code-Kommentare, `@brief`-Texte, Log-/Konsolenmeldungen, Ansible-Task-Namen, Commit-Messages.
- Fachbegriffe, Produktnamen und Code-Bezeichner bleiben im Original.
- Bei `de`: korrekte Orthografie mit Umlauten und ß – nie `ae`/`oe`/`ue`/`ss` als Ersatz (außer in Bezeichnern, s. u.).
## Sprachneutral (immer Englisch, ASCII)
- Datei- und Ordnernamen, Variablen, Funktionen, Rollen, Tags, YAML-/Frontmatter-Schlüssel.
- Grund: Übernahmen aus/in skel-ai mit anderer Amtssprache behalten Struktur, Verweise und Scripts.
## Datum & Zahlen
- Fließtext: TT.MM.JJJJ (bei `de`), immer absolut – nie „gestern“, „nächste Woche“.
- Maschinenlesbar (Frontmatter, Dateinamen, Logs): ISO 8601 `JJJJ-MM-TT`.
+38
View File
@@ -0,0 +1,38 @@
# Regel: Datenschutz
> Stand: 23.10.2026 · gilt für: alle Agenten · **Priorität 1**
## Grundsatz
Nichts, was die Basis verlässt (Web-Suche, externe APIs, Cloud-KI außerhalb der Freigabe, Pastebins, Issue-Tracker Dritter),
darf auf den Betreiber, seine Umgebung oder Dritte (Kontakte, Kunden) rückführbar sein.
## Datenklassen
| Klasse | Beispiele | In der AI-Basis ablegen? | An externe Dienste? |
|---|---|---|---|
| öffentlich | Herstellerdoku, Paketversionen, RFCs | ja | ja |
| intern | Hostnamen, IP-Pläne, Topologie, Dienste, Rollen | ja (Knowledge-DB, Projekte) | **nein** (nicht in Suchen/URLs) |
| vertraulich | Personennamen über die Verantwortlichen hinaus, Kundendaten, Verträge, Logs mit Personenbezug | nein – nur Verweis auf Ablageort | nein |
| geheim | Passwörter, Schlüssel, Tokens, Zertifikats-Privatschlüssel | **nie** (→ `secrets.md`) | nie |
## Pflicht
- Namentlich genannt werden **nur** die Verantwortlichen aus `ai/context/responsible.md` (Header-Pflicht, `headers.md`).
- Weitere Personen nur als Rolle („Leitung Buchhaltung“, „Azubi IT“), nie mit Namen/Kontaktdaten.
- Beispiele, Testdaten, Doku-Snippets: pseudonymisiert (`host01`, `192.0.2.0/24`, `example.org`, `user_a`).
- Logs/Dumps aus Kundensystemen vor dem Einfügen in einen Chat bereinigen (Namen, Mailadressen, IPs öffentlicher Netze).
## Leitsatz: so lokal wie möglich, so auswärts wie nötig
Verarbeitung (KI, Speicherung, Dienste) zuerst auf eigener Infrastruktur. Ein externer Dienst nur, wenn lokal nicht
sinnvoll machbar – und nur bis zur unten freigegebenen Klasse.
## Freigegebene KI-Dienste
| Dienst | Erlaubt für Klasse bis | Grundlage (z. B. AVV, Self-Hosting) | Stand |
|---|---|---|---|
| Lokale Modelle (Ollama, STT auf `kellerbeast`) | vertraulich (inkl. persönlicher Inhalte) | Self-Hosting | 23.10.2026 |
| Claude Code (Anthropic) | intern (Lerninhalte, Lab-Konfiguration, Code, Doku – **keine** persönlichen Inhalte) | Entscheidung Betreiber | 23.10.2026 |
## Vertrauenswürdige Ablagen
| Ablage | Erlaubt für Klasse bis | Grundlage | Stand |
|---|---|---|---|
| Gitea (self-hosted, Remote dieses Repos) | vertraulich | Self-Hosting | 23.10.2026 |
> Ohne Eintrag gilt: nur Klasse „öffentlich“ darf an externe KI-Dienste. Rechtliche Bewertung (DSGVO, AVV) liegt beim Betreiber – der Agent gibt keine Rechtsberatung.
+12
View File
@@ -0,0 +1,12 @@
# Regel: Geheimnisse
> Stand: 07.10.2026 · gilt für: alle Agenten, alle Projekte
1. **Nie** Passwörter, Shared Secrets, private Schlüssel oder Tokens in Dateien der Basis, ins Git, in Chats oder Logs – auch nicht in Beispielen mit echten Werten.
2. **Quelle Nr. 1: Secret-Store** (Platzhalter: HashiCorp Vault `<VAULT_ADDR>`, KV v2, Mount `secret`, Pfad `<projekt>/<dienst>/…`). Konkrete Werte in `ai/context/environment.md`.
3. **Fallback: Ansible Vault.** Passwortdatei **außerhalb** des Repos (`~/.ans-secret-<projekt>`), Variablennamen beginnen mit `vault_`.
4. `.env`-Dateien: nie im Git, nur `.env.example` mit gleichen Schlüsseln und Platzhaltern. Secrets in `.env` nur, wenn das Werkzeug es erzwingt (z. B. Docker-Stack).
5. **Ansible:** Tasks mit Geheimnissen `no_log: true`, Templates mit Geheimnissen `diff: false` – sonst landen Werte in Terminal und `ansible.log`.
6. **Bash:** Geheimnisse nie als Kommandozeilenargument (sichtbar in `ps`), nie mit `becho`/`bdebug` ausgeben; per Datei-Deskriptor, stdin oder Umgebungsvariable übergeben.
7. Geheimnisse **erzeugen**, nicht ausdenken: `openssl rand -hex 24` direkt im Schreibbefehl (`vault kv put … key="$(openssl rand -hex 24)"`). Bei KV v2 `patch` statt `put`, wenn nur ein Schlüssel geändert wird.
8. **Agenten** lesen keine `.env`/Vault-Inhalte aus und geben keine Geheimnis-Werte aus – nur Schlüsselnamen. Benötigt ein Test ein Geheimnis, fragt der Agent den Bediener, ihn selbst auszuführen.
+17
View File
@@ -0,0 +1,17 @@
# Regel: Testen
> Stand: 07.10.2026 · gilt für: alle Agenten
## Pflicht
- **Lokal testen:** Syntax-/Lint-Checks (`bash -n`, `shellcheck`, `ansible-lint`, `yamllint`, `docker compose config`) und Läufe in lokalen Containern/VMs (z. B. `debian:<release>` per Docker/Podman).
- **Trockenlauf zuerst:** Bash `-n`, Ansible `--check --diff`, dann echter Lauf.
- **Idempotenz** prüfen: zweiter Lauf ohne Änderungen (`changed=0`).
- Ergebnis des Tests (Datum, was, wogegen, Ergebnis) in `context.md` festhalten.
## Verboten ohne ausdrückliche Freigabe des Bedieners für genau diesen Fall
- Code in **Cloud-VMs/Sandboxes Dritter** ausführen oder testen.
- Läufe gegen **Produktivsysteme** (auch `--check` nicht, wenn Zugangsdaten oder Last im Spiel sind).
- Änderungen an Netzwerkgeräten, die die Verbindung des Agenten/Bedieners kappen können (Firewall, Routing, SSH) – immer mit Rückfallweg (z. B. zeitgesteuertes Rollback) und Freigabe.
## Ausnahmen
Freigabe im Chat genügt; der Agent vermerkt sie mit Datum in `context.md` („Freigabe: Lauf gegen host01, 07.10.2026“).
+16
View File
@@ -0,0 +1,16 @@
# Regel: Web-Recherche
> Stand: 07.10.2026 · gilt für: alle Agenten mit Web-Zugriff
## Erlaubt
- Herstellerdoku, Paketversionen, Kompatibilität, Sicherheitshinweise (CVE), Best Practices nachschlagen.
- Vor jedem neuen Docker-Stack oder jeder neuen Ansible-Rolle: Original-Doku holen (Pflicht laut `ai/common/docker.md` / `ansible.md`).
## Einschränkungen
- **Keine internen Daten** in Suchanfragen oder URLs: keine IPs, Hostnamen, MACs, Domains, Projekt-/Firmennamen, Personennamen (→ `privacy.md`).
- Keine Inhalte aus lokalen Dateien/Code an Web-Dienste übergeben (keine Pastebins, keine Online-Validatoren mit internem Inhalt).
- Ergebnisse mit **Quelle (URL) und Abrufdatum** ablegen; Unbelegtes als Einschätzung kennzeichnen.
- Dauerhaft wertvolle Recherche → Knowledge-DB (`context/knowledge/research/`).
## Gesperrte Seiten
- (derzeit keine)