Ship Codex-parity harness, chapter polish, and rebuilt PDF.

Add reader vorlagen (permissions, MCP, hooks, plugins, team AGENTS),
humanizer skill, and adaptionen for ki-codex; refresh chapters 00–18,
resource-path justfile, and dist PDF with full illustration set.
This commit is contained in:
grok-bot committed 2026-08-02 21:19:46 +02:00
1 parent 80e5838432
commit 17a2bc8a45
47 files changed
+1128 -187

No files matched your search

+2 -2
View File
@@ -9,8 +9,8 @@ description: Überblick über Buch-Repo-Status — Kapitel, Pipeline, Agent-Harn
3. **Artefakte:** existiert `dist/grok-build-praxisleitfaden.pdf`? (nur melden, nicht neu bauen)
4. **Autoren-Harness:**
- `AGENTS.md`, `CLAUDE.md`, `ADAPTIONEN.md`
- `.grok/rules|skills|commands`
5. **Leser-Content:** `vorlagen/`, `beispiele/` kurz bestätigen
- `.grok/rules|skills|commands` (Skills u. a. `lektorat`, `kapitel-review`, `pdf-bauen`, `humanizer`, `update-pics`)
5. **Leser-Content:** `vorlagen/` (AGENTS, config, hooks, skills, plugins), `beispiele/` kurz bestätigen
Ausgabe als Tabelle:
+12 -1
View File
@@ -45,7 +45,7 @@ Ergänzt `AGENTS.md` um detaillierte Schreib-, Ton- und Formatierungsregeln für
| Headless | nicht-interaktiver Lauf | interaktive TUI |
| ACP | Agent Client Protocol | reines Headless `-p` |
Stand der Fakten im Buch: **Juli / Mitte 2026**. UI-Labels und einzelne Config-Felder können driften; stabile Konzepte erklären.
Stand der Fakten im Buch: **Juli–Aug 2026** (CLI **0.2.x**). UI-Labels und einzelne Config-Felder können driften; stabile Konzepte erklären.
---
@@ -81,6 +81,16 @@ Stand der Fakten im Buch: **Juli / Mitte 2026**. UI-Labels und einzelne Config-F
- 1–2 Frage-Überschriften pro Kapitel, wo der Leser sucht.
- Kapitel 18 (Schnellreferenz) und Symptom→Fix-Raster: Tabellen sind Feature.
### Reprise (Kernprinzipien)
Vier Hebel tauchen spiralig auf: **Scope eng**, **Diff lesen**, **Deny / enge Allowlist vor Always-approve**, **AGENTS.md (weich) vs. Permissions/Hooks/Sandbox (hart)**.
- **Kanon** (erster Lehrort): volle Erklärung behalten.
- **Nützliche Reprise** am Gelenk: 1 Satz + Brücke („schon gehört, hier weil …“ / Verweis auf Kanon) und *neuen* Aspekt behalten.
- **Echo ohne Mehrwert** (vor allem *innerhalb* desselben Kapitels): streichen oder auf Verweis kürzen.
- Max. **2–3** explizite Reprise-Signale pro Kapitel; Checklisten und „Was du jetzt kannst“ ohne Meta-Sprüche.
- Schnellreferenz (Kap. 18): knappe Lookup-Zeilen, **keine** Brücken-Sprüche.
### Abschlüsse
- Größere Abschnitte: Checkliste, häufige Fehler, „So baust du das nach“.
@@ -92,6 +102,7 @@ Stand der Fakten im Buch: **Juli / Mitte 2026**. UI-Labels und einzelne Config-F
- Feature-Kapitel (Plan, Subagents, …): **2–4 realistische Sessions**.
- Platzhalter: `YOUR_TOKEN`, `your-project`, `xai-…`.
- Terminal-Sessions und Configs lauffähig und kommentiert halten.
- Häufiges Basisbeispiel: `beispiele/todo-cli/`.
---
+177
View File
@@ -0,0 +1,177 @@
---
name: humanizer
description: >
Analysiert Text auf typische KI-Stilmuster und liefert begründete Vorher/Nachher-Vorschläge
für eine menschlichere Stimme (Rhythmus, Floskeln, Epistemik, Spezifität). Keine automatischen Edits.
Nutzen bei: „humanizer“, „menschlicher machen“, „KI-Stil entfernen“, „klingt zu generisch / roboterhaft“,
„zu glatt formuliert“, „Floskeln raus“, /humanizer.
---
# Humanizer — KI-Stil → menschliche Stimme
Checkpoint-basierte Stilanalyse. **Report mit begründeten Vorschlägen**, keine stillen Textänderungen.
Referenzkatalog: `.grok/skills/humanizer/references/marker-katalog.md` (bei Bedarf mitlesen).
## Prinzipien
1. Zuerst lesen, dann urteilen — nicht nur Keyword-Scannen.
2. Jeder Fund: **Muster + Warum + Vorher/Nachher**.
3. Keine Detektor-Prozente, keine Urheber-Behauptung — nur editierbare Stilmerkmale.
4. Keine künstlichen Tippfehler, kein Slang-Spam, kein Detektor-Gaming.
5. Inhaltliche Fakten **nicht erfinden**, um „spezifischer“ zu klingen.
6. Standard: nur Chat-Report. Edits **nur** auf explizite Freigabe, chirurgisch.
### Leitprinzipien der Humanisierung
| # | Prinzip | Wirkung |
|---|---------|---------|
| 1 | Rhythmus variieren (Burstiness) | Kurze und lange Sätze mischen; Absätze ungleich gewichten |
| 2 | Floskeln und Werbelexik streichen | Konkrete Wörter statt Buzz |
| 3 | Spezifität | Szenen, Configs, Zahlen, echte Tradeoffs statt Prototypen |
| 4 | Epistemische Ehrlichkeit | Grenzen, Unsicherheit, echte Einwände |
| 5 | Asymmetrie | Wichtiges länger, Nebensächliches knapper |
| 6 | Stimme | Aktiver Kollege, nicht Pressemitteilung |
### Was „menschlicher“ *nicht* heißt
- Nicht: salopp um jeden Preis oder „natürlich“ = umgangssprachlich.
- Nicht: Buch-Ton brechen (bei Manuskript: erfahrener Kollege, präzise, ohne Hype — `schreibkonventionen.md`).
- Nicht: Callouts umbauen (`Kern` / `Achtung` / `Jetzt selbst machen`).
- Stark redigierte Fachprosa teilt oft niedrige Burstiness mit KI — **Stimme und Nutzen** priorisieren, nicht „detektor-unsichtbar“.
## Abgrenzung
| Skill | Fokus |
|-------|--------|
| `lektorat` | Ton, Fakten, Terminologie, Wiederholungen, Erklärungsdichte, Callouts |
| `kapitel-review` | Argumentation, Lesefluss, Substanz, Positionierung |
| **`humanizer`** | KI-typische Stilmarker → menschliche Stimme |
Humanizer ersetzt weder Fakten-Check noch Argumentations-Review. Bei Konflikt mit Buch-Konventionen gewinnt `schreibkonventionen.md` / `AGENTS.md`.
## Vorbereitung
1. **Input klären:** Kapitel (`00`–`18` / Dateiname), markierter Abschnitt, oder Inline-Text. Bei Unklarheit nachfragen.
2. **Zielstimme** (Default):
- Manuskript / `vorlagen/` / Buch-Kontext → **Buch-Kollege** (erfahren, präzise, Du-Ansprache, kein Hype)
- Sonst → **Sachprosa DE** (klar, konkret, ohne Werbeton)
3. Text **vollständig** lesen (Datei: `read_file`). Bei sehr langen Kapiteln: mit User abschnittsweise oder Fokus-Abschnitt wählen.
4. Marker-Katalog bei Bedarf öffnen: `references/marker-katalog.md`.
## Checkpoints (der Reihe nach)
### 1. Lexik & Floskeln
- Buzz-Adjektive, Superlative ohne Beleg, stereotype Verben (siehe Katalog HIGH/MED)
- Co-Occurrence: mehrere Marker nahe beieinander = stärkeres Signal als ein einzelnes Wort
- Nominalisierungs-Stapel und Partizipialketten, die den Satz aufblähen
→ Jeden Treffer mit Vorschlag konkretisieren oder streichen.
### 2. Übergänge & Meta-Rhetorik
- Absatzanfänge: „Darüber hinaus“, „Ferner“, „Zudem“, „Ein weiterer wichtiger Aspekt …“
- Ankündigungen ohne Nutzen: „Im Folgenden wird …“, „Es ist wichtig zu betonen …“
- Mechanische Parallelismen und immer gleiche Konnektoren
→ Übergang streichen, implizit machen oder mit Inhalt ersetzen.
### 3. Rhythmus (Burstiness)
- Satzlängen über 5–10 Sätze hinweg: monoton ≈ KI-Nähe
- Absätze alle ~gleich lang
- Listen statt Prosa, wo ein Satz reichte — oder umgekehrt: Prosa-Wand ohne Atem
→ Mindestens 1–2 Vorher/Nachher mit bewusster Längen-Varianz vorschlagen.
### 4. Struktur-Symmetrie
- Gleich gewichtete Unterabschnitte („drei Punkte à drei Sätze“)
- Tricolon-Zwang (immer genau drei Aufzählungen)
- Ungebetene Mini-Fazits am Ende jedes Blocks („Zusammenfassend …“)
→ Asymmetrie vorschlagen: Kern länger, Rest kürzen oder streichen.
### 5. Epistemik & Stimme
- Phantom-Autorität: „Studien zeigen“, „Experten sind sich einig“ ohne Name/Quelle
- Pauschale Sicherheit ohne Bedingungen; oder leeres Hedging überall
- Keine echten Zugeständnisse / Tradeoffs
- Pressemitteilungs-Ton statt Kollege mit Position
→ Grenzen, „wann gilt das nicht“, konkrete Alternativen — ohne Fakten zu erfinden.
### 6. Spezifität
- Generische Beispiele (Café-WLAN, „die App“, „das Team“)
- Abstrakte Nutzen-Sätze ohne greifbaren Nachvollzieh-Schritt
- Im Buch-Kontext: fehlt ein Terminal-/Config-Anker, wo er hingehört?
→ Spezifischer vorschlagen **nur** aus Kontext des Textes oder bekannten Repo-Beispielen; sonst markieren „braucht Autor-Detail“.
### 7. Buch-Guardrails (nur Manuskript / Leser-Vorlagen)
- Callout-Marker und Blockquote-Struktur intakt lassen
- Terminologie einheitlich: Harness, `AGENTS.md`, `config.toml`, Plan Mode, Permissions, MCP, Skills, Hooks, Subagents, Worktrees, Headless, ACP
- Claude-/Codex-Jargon nicht in Grok-Kapitel mischen (Ausnahme: Kapitel 17, wo der Vergleich Thema ist)
- Keine Secrets; Platzhalter bleiben (`YOUR_TOKEN`, `your-project`, `xai-…`)
- Vorschläge dürfen den Ton „erfahrener Kollege“ nicht in Marketing oder Belehrung kippen
## Ausgabeformat
```text
## Humanizer: [Quelle]
**Datum:** [heute]
**Zielstimme:** [Buch-Kollege | Sachprosa | …]
**Scope:** [z. B. ganzes Kapitel / Abschnitte X–Y / ~N Absätze]
### Gesamteindruck (2–4 Sätze)
KI-Nähe grob: niedrig | mittel | hoch — Begründung (Muster, nicht Prozent).
### Funde (priorisiert)
**P0 — stark KI-typisch / stört Lesbarkeit:**
- **Stelle:** „…“ (Kontext: …)
- **Muster:** [Lexik | Übergang | Rhythmus | Struktur | Epistemik | Spezifität]
- **Warum:** …
- **Vorschlag:**
- Vorher: …
- Nachher: …
- **Nebenwirkung:** [optional]
**P1 — sollte:**
…
**P2 — Feinschliff:**
…
### Muster-Statistik (kurz)
- Floskeln / Übergänge: N | Rhythmus: … | Epistemik: … | Struktur: … | Spezifität: …
### Top-3 Sofortmaßnahmen
1. …
2. …
3. …
```
### Priorisierung & Menge
- **P0:** max. ~8 Einzelvorschläge; wiederkehrende Muster als „Muster X tritt N-mal auf“ + 1–2 exemplarische Rewrites
- **P1/P2:** Rest; kein romanlanger Fundkatalog
- Jeder P0/P1-Eintrag braucht Vorher/Nachher (außer bei reinem Streichen: Nachher = leer / Hinweis „streichen“)
## Nach dem Lauf
- Standard: Report in der Chat-Antwort; Datei nur auf Wunsch.
- **Nur freigegebene** Funde umsetzen; keine Drive-by-Edits.
- Bei „setz alles um“: trotzdem Checkpoint für riskante Stellen (Inhalt, Callouts, Fakten).
- Optional: User fragen, ob danach `lektorat` oder `kapitel-review` sinnvoll ist.
## Anti-Patterns (Agent)
- Ganzen Text in einem Rutsch umschreiben ohne Scope
- „Humanizer-Slang“ (übertriebene Umgangssprache, Memes)
- Fakten, Quellen oder Config-Flags erfinden
- Callout-Labels „verschönern“ oder umbenennen
- Detektor-Scores oder „das ist 87 % KI“ behaupten
@@ -0,0 +1,177 @@
# Marker-Katalog — KI-Stil vs. menschliche Stimme
Nachschlagewerk für den Skill `humanizer`. Stand der Stilforschung/Praxis: 2025/2026.
**Kein** Detektor und **kein** Urheber-Beweis — nur editierbare Muster.
Schwere:
| Stufe | Bedeutung |
|-------|-----------|
| **HIGH** | Oft Co-Occurrence-Signal; bei Häufung prioritär (P0) |
| **MED** | Unauffällig allein; problematisch in Clustern oder am Absatzanfang |
| **LOW** | Nur bei Monotonie/Übernutzung melden |
---
## 1. Deutsch — Konnektoren & Meta-Rhetorik
| Marker / Muster | Schwere | Gegenmittel |
|-----------------|---------|-------------|
| Darüber hinaus / Ferner / Zudem (Absatzanfang) | HIGH | Streichen; Inhalt direkt; „Außerdem“ sparsam |
| Ein weiterer wichtiger Aspekt ist … | HIGH | Aspekt nennen und erklären, Ankündigung weg |
| Es ist wichtig zu betonen / festzuhalten … | HIGH | Behauptung + Begründung, ohne Meta |
| Im Folgenden wird … / Nachfolgend betrachten wir … | HIGH | Direkt starten |
| Zusammenfassend lässt sich sagen / Insgesamt zeigt sich | HIGH | Fazit nur am Kapitelende oder weglassen |
| Nicht nur … sondern auch … (seriell) | MED | Eine Aussage genügt oft |
| Insbesondere / Grundsätzlich / Letztendlich / Zweifellos | MED | Konkretisieren oder streichen |
| In diesem Zusammenhang / Vor diesem Hintergrund | MED | Bezug im Satz selbst herstellen |
### Vorher → Nachher
```text
Vorher: Darüber hinaus ist es von entscheidender Bedeutung, innovative Lösungen
nahtlos zu implementieren.
Nachher: Neue Lösungen müssen ohne Extra-Reibung in den bestehenden Ablauf passen.
Vorher: Im Folgenden wird erläutert, wie Permissions greifen.
Nachher: Permissions greifen so:
Vorher: Zusammenfassend lässt sich sagen, dass ein enger Scope Risiken senkt.
Nachher: Enger Scope senkt Risiken — das war der Punkt.
```
---
## 2. Deutsch — Buzz-Lexik & Werbeton
| Marker | Schwere | Gegenmittel |
|--------|---------|-------------|
| nahtlos, ganzheitlich, maßgeschneidert | HIGH | Was genau passiert / fehlt? |
| zukunftsorientiert, bahnbrechend, beispiellos | HIGH | Streichen oder mit Beleg ersetzen |
| innovativ, dynamisch, robust, skalierbar (ohne Kontext) | MED | Technische Konkretion |
| facettenreich, essenziell, hochwertig, effizient | MED | Warum / für wen? |
| Paradigmenwechsel, Gamechanger, Best Practice | HIGH | Sachverhalt benennen |
| nutzen / nutzen Sie die Kraft von … | MED | Verb mit Objekt: was *tut* man? |
```text
Vorher: Eine ganzheitliche, maßgeschneiderte Strategie ermöglicht nahtlose Workflows.
Nachher: Eine kurze Deny-Liste und ein enger Working-Directory-Scope reichen oft,
um destruktive Tool-Calls abzufangen.
```
---
## 3. Epistemik & leere Autorität
| Muster | Schwere | Gegenmittel |
|--------|---------|-------------|
| Studien zeigen / Forschung belegt (ohne Quelle) | HIGH | Quelle nennen oder Behauptung abschwächen/streichen |
| Experten sind sich einig … | HIGH | Wer? Sonst streichen |
| Es ist klar, dass / Zweifellos | MED | Bedingungen nennen |
| Immer / nie / jeder / optimal (Absolutismen) | MED | Scope der Aussage eingrenzen |
| Kein Tradeoff, kein „wann gilt das nicht“ | MED | Einen echten Einwand einbauen |
| Leeres Hedging überall („könnte ggf. möglicherweise“) | MED | Entweder klar oder mit konkreter Unsicherheit |
```text
Vorher: Studien zeigen, dass gut strukturierte Prompts die Qualität deutlich steigern.
Nachher: In der Praxis steigt die Trefferquote, wenn Scope und Erfolgskriterien
im Prompt stehen — messbar z. B. an weniger Nachfragen pro Task.
(Ohne Studie: als Erfahrung markieren, nicht als „Studien“.)
```
---
## 4. Rhythmus (Burstiness) & Syntax
| Muster | Schwere | Gegenmittel |
|--------|---------|-------------|
| Sätze fast gleicher Länge über längere Strecke | HIGH | Kurz / lang / Fragment mischen |
| Absätze alle 3–4 Sätze, gleiche Form | HIGH | Asymmetrie: ein Block 1 Satz, einer 6 |
| Partizipialketten („…, nutzend …, basierend auf …“) | MED | Hauptsätze; Verben aktiv |
| Nominalisierungs-Stapel (die Implementierung der …) | MED | Tun-Wörter: „du setzt …“, „der Hook prüft …“ |
| Immer vollständige, glatte Sätze — nie Ellipsen | LOW | Gelegentlich erlaubt: „Kurz:“ / „Der Haken:“ |
| Listen für alles | MED | Prosa, wenn 1–2 Punkte reichen |
### Rhythmus-Test (30 Sekunden)
Drei aufeinanderfolgende Sätze laut lesen. Klingt es wie Metronom?
Wenn ja: einen Satz halbieren, einen verdoppeln, einen zum Ein-Satz-Absatz machen.
```text
Vorher: Permissions steuern den Tool-Zugriff. Sie bestehen aus Allow- und Deny-Regeln.
Deny greift vor Allow. Das verhindert riskante Defaults.
Nachher: Permissions steuern, welche Tools der Agent überhaupt ausführen darf.
Deny vor Allow — sonst gewinnt die breite Freigabe.
Das ist der häufigste Konfigurationsfehler.
```
---
## 5. Struktur
| Muster | Schwere | Gegenmittel |
|--------|---------|-------------|
| Tricolon-Zwang (immer drei Aufzählungen) | MED | 2 oder 4, wenn es passt; oder Prosa |
| Drei gleich lange Unterabschnitte à Schema | HIGH | Kernabschnitt länger; Rest kürzen |
| Jeder Abschnitt endet mit Mini-Fazit | HIGH | Fazit nur wo Transfer nötig |
| Einleitung spiegelt Schluss 1:1 | MED | Schluss = nächster Schritt, nicht Echo |
| Perfekte Parallelismen in jedem Bullet | LOW | Variation der Bullet-Form |
---
## 6. Spezifität vs. Generik
| Muster | Schwere | Gegenmittel |
|--------|---------|-------------|
| Prototyp-Beispiele (Café-WLAN, „die App“, „das Unternehmen“) | MED | Repo-/Alltagsbeispiel des Lesers |
| Nutzen ohne Mechanik („verbessert die Effizienz“) | HIGH | Wie + woran merkst du es? |
| Fehlende Szene vor Lookup-Tabelle (Buch) | MED | 1–2 Sätze Leserproblem davor |
| Abstrakte „Teams profitieren von …“ | MED | Eine konkrete Situation |
```text
Vorher: Teams profitieren von klaren Richtlinien und einer robusten Tool-Policy.
Nachher: Freitag 17 Uhr, Hotfix-Branch: ohne Deny auf `rm` und ohne enges Working
Directory ist ein „aufräumen“-Prompt ein Produktionsrisiko.
```
---
## 7. Englische Parallel-Marker (kurz)
Nur bei EN- oder Mischtext. Co-Occurrence zählt mehr als Einzelwort.
| EN-Marker | Schwere | DE-Nähe / Ersatz |
|-----------|---------|------------------|
| furthermore / moreover / additionally | HIGH | also / and / streichen |
| it is worth noting / it is important to | HIGH | point first |
| in conclusion / to summarize / in essence | HIGH | so / the upshot |
| delve / leverage / navigate / utilize | HIGH | examine / use / handle |
| seamlessly / cutting-edge / transformative / multifaceted | HIGH | concrete verb/noun |
| studies show / experts agree (unnamed) | HIGH | name source or drop |
| nestled / tapestry / realm / landscape (metaphor clutter) | MED | plain language |
---
## 8. Schnell-Checkliste vor dem Report
- [ ] HIGH-Marker gezählt (Cluster = P0)?
- [ ] Mindestens ein Rhythmus-Vorschlag mit Längenvarianz?
- [ ] Epistemik: Phantom-Autorität oder fehlende Grenzen markiert?
- [ ] Spezifität: Vorschläge ohne erfundene Fakten?
- [ ] Manuskript: Callouts und Terminologie unangetastet?
- [ ] P0 ≤ ~8; Wiederholmuster aggregiert?
---
## 9. Falsch-Positive (nicht überkorrigieren)
Diese Merkmale allein machen Text **nicht** „KI“:
- Fachtermini und enge Genre-Konventionen (API-Docs, Methodenabschnitte)
- Kurze, klare Sätze (Buch-Stil: erwünscht)
- Eine einzelne Konjunktion „zudem“ mitten im Fließtext
- Listen in Cheatsheets (Kapitel 18) und echten Lookup-Rastern
- Einheitliche Terminologie (Harness, Permissions, …) — das ist Konsistenz, kein Template-Zwang
**Regel:** Nur eingreifen, wenn Muster **häufen**, den **Lesefluss** stören oder die **Stimme** zur Pressemitteilung machen.
+1 -1
View File
@@ -57,7 +57,7 @@ just pdf
just qa
```
Prüft u. a. Existenz, Soft-Seitenzahl (30–120), Keywords (Grok Build, CLAUDE.md, settings.json, MCP, Permissions), Fonts.
Prüft u. a. Existenz, Soft-Seitenzahl (40–280), Keywords (Grok Build, AGENTS.md, config.toml, MCP, Plan Mode), Fonts.
→ Warnungen dokumentieren; echte Fehler beheben oder als blockierend melden.
+2 -2
View File
@@ -21,7 +21,7 @@ Du brauchst keinen Informatik-Abschluss und musst kein Tech-Lead sein. Terminal
### Was du in diesem Buch lernst
Grok Build (CLI: `grok`) ist der Coding-Agent von xAI/SpaceXAI. Er läuft vor allem als **interaktive TUI** im Terminal, als **Headless**-Lauf für Scripts und CI, und als **ACP-Server** für IDEs und eigene Clients. Überall sitzt dieselbe Engine: ein Modell plus eine Steuerungsschicht aus Tools, Permissions, Memory und Workflows.
Grok Build (CLI: `grok`) ist der Coding-Agent von **xAI** (Auth-Oberfläche und OAuth: oft als SpaceXAI sichtbar). Er läuft vor allem als **interaktive TUI** im Terminal, als **Headless**-Lauf für Scripts und CI, und als **ACP-Server** für IDEs und eigene Clients. Überall sitzt dieselbe Engine: ein Modell plus eine Steuerungsschicht aus Tools, Permissions, Memory und Workflows.
**Wie das Lernen hier aufgebaut ist:** Zuerst baust du ein mentales Modell (Kapitel 1), dann installierst und übst du risikolos (Kapitel 2–3), dann kommen die Produktivitäts-Hebel (Plan Mode, Subagents, Worktrees, `AGENTS.md`). Erst danach Automation, Erweiterungen und der große Use-Case-Block – weil sie ohne Grundlagen schwer zu debuggen sind.
@@ -95,7 +95,7 @@ Der Ton ist der eines erfahrenen Kollegen: präzise, geduldig, ohne Hype. Wenn e
**Ein Nachmittag, den du vermeiden willst:** Du klebst einen Stacktrace in die TUI, akzeptierst drei Diffs ohne Lesen, committest „fix stuff“ – und merkst erst im Review, dass `.env.example` mit echten Keys und ein `rm` im falschen Ordner im Diff lagen. Das Buch trainiert die Gegenbewegung: Scope formulieren, Freigaben lesen, Diffs prüfen, Wissen in Dateien legen (`AGENTS.md`, Plan-Datei, Skills) statt nur im Chat. Nicht weil KI böse ist – weil der Harness ausführt, was das Modell vorschlägt.
Versionshinweis: Features und Slash-Commands entwickeln sich. Konzepte (Permissions, Memory, Tools, Sessions) bleiben stabiler als einzelne UI-Labels. Stand der Fakten im Buch: **Juli / Mitte 2026**.
Versionshinweis: Features und Slash-Commands entwickeln sich. Konzepte (Permissions, Memory, Tools, Sessions) bleiben stabiler als einzelne UI-Labels. Stand der Fakten im Buch: **Juli–Aug 2026** (CLI **0.2.x**).
---
+5 -5
View File
@@ -48,7 +48,7 @@ Wer nur das Modell sieht, überschätzt Magie. Wer nur die Tools sieht, untersch
### 1.3 Surfaces: eine Engine, drei Arbeitsmodi
Du hast Grok Build installiert und stehst vor der Wahl: interaktive TUI? Einmal-Prompt im Script? IDE über ACP? Die gute Nachricht: Es ist **dieselbe Engine**. Die schlechte: Wer nur klickt oder nur „yolo“ in CI drückt, sieht seltener, *warum* eine Freigabe greift oder eine Regel greift.
Sobald `grok` läuft (Installation und First-Start: Kapitel 2), stehst du vor der Wahl: interaktive TUI? Einmal-Prompt im Script? IDE über ACP? Die gute Nachricht: Es ist **dieselbe Engine**. Die schlechte: Wer nur klickt oder nur „yolo“ in CI drückt, sieht seltener, *warum* eine Freigabe greift oder eine Regel greift.
| Surface | Einstieg (typisch) | Wann sinnvoll |
|---------|-------------------|---------------|
@@ -93,9 +93,9 @@ Grenzen sind keine Marketing-Absätze. Jede Zeile unten schützt vor einer typis
---
### 1.5 Philosophie: Explore → Plan → Code → Verify
### 1.5 Philosophie: Explore → Plan → Code → Verify (danach Commit/PR)
Grok Build glänzt nicht, wenn du „alles auf einmal“ forderst. Es glänzt, wenn du den Tag in **Phasen** schneidest – dieselben Phasen, die gute Teams ohnehin nutzen:
Grok Build liefert bessere Diffs, wenn du nicht „alles auf einmal“ forderst, sondern den Tag in **Phasen** schneidest – dieselben Phasen, die gute Teams ohnehin nutzen:
| Phase | Ziel | Typischer Grok-Hebel |
|-------|------|----------------------|
@@ -171,7 +171,7 @@ Detailvergleich mit Claude Code, Codex und Cursor: Kapitel 17. Hier reicht die H
**Warum das hier schon steht:** Ohne dieses Mentalmodell liest du Kapitel 2 als „Installationsanleitung“ und überspringst Trust. Mit diesem Mentalmodell installierst du, übst im sicheren Repo und baust Deny-/Sandbox-Gewohnheiten auf, *bevor* du CI-Keys einbindest.
Drei Muskeln für den ersten Tag (und den restlichen Beruf):
Drei **Muskeln** für den ersten Tag (Tag-1-Routine – nicht dieselben wie die drei **Steuerknöpfe** in 1.6: Knöpfe = Hebel-Set Scope/Mode/Dateien; Muskeln = Gewohnheit Scope/Freigaben/Diffs):
1. **Scope** formulieren
2. **Freigaben** lesen statt wegklicken
@@ -229,7 +229,7 @@ Spickzettel vor Kapitel 2. Ausführlicher: Kapitel [18.14](18-anhang-schnellrefe
### Was du jetzt kannst
- Modell und Grok-Build-Harness unterscheiden und die Tool-Schleife skizzieren
- Modell und den Harness von Grok Build unterscheiden und die Tool-Schleife skizzieren
- TUI, Headless und ACP einordnen und erklären, was über Surfaces hinweg gilt
- Den Zyklus Explore → Plan → Code → Verify als Steuerungsphilosophie anwenden
- Erklären, warum Scope, Modes und `AGENTS.md` keine Nice-to-haves sind, sondern die Steuerknöpfe des Harness
+6 -5
View File
@@ -1,7 +1,7 @@
# Kapitel 2
## Installation und erster Start
> **Kern in einem Satz:** In unter einer Viertelstunde installierst du `grok`, meldest dich an und trainierst die drei Muskeln, die den Rest des Buchs tragen: Scope formulieren, Freigaben lesen, Diffs prüfen.
> **Kern in einem Satz:** Typisch in unter einer Viertelstunde (Auth- und PATH-Probleme nicht mitgezählt) installierst du `grok`, meldest dich an und trainierst die drei Muskeln, die den Rest des Buchs tragen: Scope formulieren, Freigaben lesen, Diffs prüfen.
---
@@ -23,10 +23,10 @@ Offizielle Empfehlung: der Installer von xAI. Danach startest du mit dem Befehl
curl -fsSL https://x.ai/cli/install.sh | bash
```
Feste Version pinnen (Beispiel – ersetze die Versionsnummer durch die, die du willst):
Feste Version pinnen (Platzhalter – nimm die Version, die dein Team pinnen will; aktuell z. B. `grok --version` / Release-Notes, Buch-Stand **0.2.x**):
```bash
curl -fsSL https://x.ai/cli/install.sh | bash -s 0.1.42
curl -fsSL https://x.ai/cli/install.sh | bash -s 0.2.0
```
**Warum pinnen?** Teams und CI brauchen reproduzierbare Agent-Versionen. „Immer latest“ ist bequem lokal und riskant in Pipelines.
@@ -40,7 +40,7 @@ irm https://x.ai/cli/install.ps1 | iex
Feste Version:
```powershell
$env:GROK_VERSION="0.1.42"; irm https://x.ai/cli/install.ps1 | iex
$env:GROK_VERSION="0.2.0"; irm https://x.ai/cli/install.ps1 | iex
```
Der PowerShell-Installer legt typischerweise `%USERPROFILE%\.grok\bin` in den User-PATH. Alternativen: Git for Windows (Git Bash) oder MSYS2 mit dem Bash-Installer oben. **WSL** bekommt das Linux-Binary.
@@ -116,7 +116,8 @@ export XAI_API_KEY="xai-..."
grok
```
**Wie die Priorität wirkt:** Ein aktives Session-Token aus dem Browser-Login hat Vorrang vor dem API-Key. Für reinen Key-Betrieb: `grok logout` bzw. `auth.json` entfernen, dann `XAI_API_KEY` setzen.
**Alltag (Default-Grok):** Session-Token aus Browser-Login schlägt `XAI_API_KEY` – deshalb `grok logout`, wenn du **nur** den Key willst.
**Custom Models (Kapitel 14):** davor können per-model `api_key` / `env_key` in `config.toml` greifen (Reihenfolge grob: `api_key` → `env_key` → Session → `XAI_API_KEY`).
> **Achtung:** `~/.grok/auth.json` und MCP-Credentials (`~/.grok/mcp_credentials.json`) sind Dateien mit Secrets (Unix typisch `0600`). Nicht in Tickets, Chats oder Shared-Dirs kopieren. Full-Disk-Encryption und privates `$HOME` / `$GROK_HOME` auf Multi-User-Hosts sind Pflicht, nicht Nice-to-have.
+15 -9
View File
@@ -37,13 +37,15 @@ Du musst die Shortcut-Tabellen nicht auswendig können, bevor Plan Mode (Kapitel
### 3.2 Anatomie der Oberfläche
Nach dem Login siehst du im Wesentlichen **zwei Zonen** plus Overlays: den Scrollback oben und den Prompt unten. Wer die Rollen kennt, sucht Shortcuts nicht im falschen Fokus und liest Diffs dort, wo sie erscheinen.
| Teil | Was du siehst | Wofür |
|------|----------------|--------|
| **Scrollback** | Prompts, Antworten, Thinking, Tool-Calls, Diffs, Tasks | Lesen, navigieren, collapsen, kopieren |
| **Prompt** | Eingabezeile unten | Aufträge, `/`-Commands, `@`-Anhänge, `!`-Shell |
| **Overlays** | Slash-Menü, File-Picker, Settings, Session-Picker, … | Harness steuern, ohne den Chat zu „überreden“ |
**Sticky User-Prompts** im Scrollback helfen, Turns zu scannen: „Wo habe ich den Scope gesetzt?“ ist oft die bessere Frage als „Warum ist das Modell dumm?“.
**Was du mitnimmst:** Scrollback = Review-Oberfläche; Prompt = Steuerung; Overlays = Harness-Menüs. Sticky User-Prompts im Scrollback helfen, Turns zu scannen: „Wo habe ich den Scope gesetzt?“ ist oft die bessere Frage als „Warum ist das Modell dumm?“.
**Thinking-Blöcke** (wenn das Modell Reasoning liefert) sind collapsbar – nützlich zum Nachvollziehen, teuer im Scroll-Rauschen. `Ctrl+E` expandiert/collapst Thinking global (Kapitel-Shortcuts unten).
@@ -84,28 +86,32 @@ Das ist der Abschnitt, den du zweimal liest, wenn der erste „hängende“ Turn
### 3.5 Session-Modes: Normal, Plan, Always-approve
`Shift+Tab` im fokussierten Prompt **cyclt** die Session-Modes (typisch: Normal → Plan → Always-approve → …). Zusätzlich:
`Shift+Tab` im fokussierten Prompt **cyclt** die Session-Modes: **Normal → Plan → Always-approve → Normal**. **Auto** ist **nicht** in diesem Zyklus – dafür `/auto` (Feature-abhängig).
| Hebel | Mode / Wirkung |
|-------|----------------|
| `Shift+Tab` | Mode cyclen |
| `Shift+Tab` | Mode cyclen (Normal / Plan / Always-approve) |
| `Ctrl+O` | Always-approve (YOLO) toggeln |
| `/always-approve` | Always-approve toggeln |
| `/auto` | Auto-Mode (Classifier; gefährliche Calls können weiter fragen) – Feature-abhängig |
| `/plan` | Plan Mode betreten (Kapitel 4) |
| `/settings` / `F2` | Settings-Modal |
**Terminal-Hinweis:** Auf **Apple Terminal** kann `Ctrl+O` primär **Interject/Send-now** belegen (kein modified Enter) – dann YOLO über `/always-approve` oder `/settings`. Details: User-Guide *Terminal Support*.
**Was die Modes bedeuten (Arbeitsdefinition):**
| Mode | Praxis |
|------|--------|
| **Normal / ask** | Alltag: lesen oft frei, Schreiben/Shell oft mit Freigabe |
| **Normal** (Permission oft *ask*) | Alltag: lesen oft frei, Schreiben/Shell oft mit Freigabe |
| **Plan** | Read-only Planung (außer Plan-Datei) – Ansatz freigeben, bevor Code fließt |
| **Always-approve** | Fast keine Permission-Prompts; Deny-Regeln und Hooks greifen weiter |
| **Auto** | Weniger Prompts durch Safety-Checks; blockierte Calls scheitern/eskalieren |
> **Achtung:** Always-approve ist kein „sicherer Turbo“. Es ist ein Turbo **ohne Klick-Bremse**. In der Lern- und Review-Phase aus; in CI nur mit Deny/Hooks und engem Scope (Kapitel 10, 13).
**Plan + Always-approve:** Plan Mode blockiert Repo-Edits; riskante Shell und andere Non-Edit-Tools können unter Always-approve trotzdem laufen – Details und Subagent-Gate in Kapitel 4.
**Mikrogeschichte:** Du cyclst versehentlich auf Always-approve, der Agent installiert eine Dependency und pusht einen Branch. Diff war „grün“ im Scrollback – Ownership war weg. Gegenmittel: Mode-Anzeige im UI bewusst lesen; nach Experimenten `Shift+Tab` zurück auf Normal.
**Day-1-Cockpit bis hier:** Anatomie, Fokus (`Tab`), Abbruch (`Esc`), Modes (Normal / Plan / Always-approve aus).
@@ -152,10 +158,10 @@ Das ist der Abschnitt, den du zweimal liest, wenn der erste „hängende“ Turn
# später / eigenes Repo
@src/api/auth.ts prüfe die Fehlerbehandlung. Noch nichts ändern.
@! .github/workflows/ci.yml erkläre den Job test.
@!.github/workflows/ci.yml erkläre den Job test.
```
Fuzzy-Picker, `.gitignore`-aware. `!` nach `@` für Dotfiles/versteckte Pfade – **Secrets nicht achtlos anhängen**.
Fuzzy-Picker, `.gitignore`-aware. `!` **ohne Leerzeichen** direkt nach `@` für Dotfiles/versteckte Pfade (`@!.env`, `@!.github`) – **Secrets nicht achtlos anhängen**.
#### Shell-Mode mit `!`
@@ -218,11 +224,11 @@ Vollständige Liste: User-Guide und Kapitel 18. Hier die Befehle, die den Alltag
| Key | Aktion |
|-----|--------|
| `Ctrl+P` / `?` | Command Palette |
| `Ctrl+M` | Model-Picker (wenn Prompt **nicht** fokussiert); Multiline-Toggle (wenn Prompt fokussiert) |
| `Ctrl+O` | Always-approve toggeln |
| `Ctrl+M` | **kontextabhängig:** Model-Picker (Prompt **nicht** fokussiert) **oder** Multiline (Prompt fokussiert) |
| `Ctrl+O` | Always-approve toggeln (Apple Terminal: oft Interject – dann `/always-approve`) |
| `Ctrl+S` | Session-Picker (Resume) |
| `Ctrl+N` | Neue Session (wo gebunden) |
| `Shift+Tab` | Mode cyclen (Prompt fokussiert) |
| `Shift+Tab` | Mode cyclen Normal/Plan/Always-approve (Prompt fokussiert) |
| `Ctrl+T` | Todos-Pane |
| `Ctrl+G` | Tasks-Pane (Fullscreen-TUI); in Minimal-Mode oft External-Editor |
| `Ctrl+B` | Laufenden Foreground-Command in den Background |
+17 -8
View File
@@ -34,7 +34,10 @@ Wenn Plan Mode **aktiv** ist:
| Plan-Datei schreiben | Implementierungs-Diffs im Working Tree |
| Shell lesen/erkunden (siehe Fallstrick unten) | – |
> **Achtung:** Plan Mode blockiert die **Edit-Tools**, nicht magisch jede Shell-Redirection. Bash wird nicht als Dateischreiber inspiziert. Und: **Subagents erben die Plan-Mode-Edit-Sperre des Parents nicht.** Ein `general-purpose`-Kind kann Dateien schreiben, während der Parent noch plant – und es erbt den Permission-Mode des Parents (inkl. Always-approve). Für reine Recherche: `explore` / `plan` / `capability_mode: read-only` (Kapitel 5–6).
> **Achtung — zwei getrennte Risiken:**
>
> 1. **Edit-Tools ≠ Shell.** Plan Mode blockiert Repo-Edits über Edit-Tools, nicht magisch jede Shell-Redirection. Bash wird nicht als Dateischreiber inspiziert.
> 2. **Parent-Plan ≠ Kind-Gate.** Subagents erben die Plan-Mode-Edit-Sperre des Parents **nicht**. Ein `general-purpose`-Kind kann schreiben, während der Parent noch plant – und erbt oft den Permission-Mode (inkl. Always-approve). Für reine Recherche: `explore` / `plan` / `capability_mode: read-only` (Kapitel 5–6).
**Plan-Datei-Pfad (typisch):**
@@ -44,6 +47,8 @@ Wenn Plan Mode **aktiv** ist:
`<encoded-cwd>` ist ein kodierter Verzeichnisname, nicht der Literalpfad deines Repos.
**Session-`plan.md` vs. Team-Plan-Doku:** Die Datei oben ist **session-lokal** (Harness-Artefakt). Team-Vorlagen wie [`vorlagen/PLAN.md.skeleton.md`](vorlagen/PLAN.md.skeleton.md) oder [`beispiele/todo-cli/PLAN.md.example`](beispiele/todo-cli/PLAN.md.example) sind **Repo-Doku** – nicht dieselbe Datei und kein Ersatz für den Plan-Mode-Lifecycle.
**Inhalt der Plan-Datei (erwartbar):**
- **Context** – warum die Änderung
@@ -56,13 +61,15 @@ Wenn Plan Mode **aktiv** ist:
### 4.3 Plan Mode betreten
Du willst den Mode setzen, **bevor** der nächste Prompt fliegt – sonst startet der Agent schon im falschen Gate.
#### Du startest (user-initiated)
| Weg | Wirkung |
|-----|---------|
| `/plan` | Plan Mode **Pending** – aktiv mit dem **nächsten** Prompt |
| `/plan <Beschreibung>` | Plan Mode + sofortiger Turn mit dieser Beschreibung |
| `Shift+Tab` | Mode cyclen: Normal → **Plan** → Always-approve → … |
| `Shift+Tab` | Mode cyclen: Normal → **Plan** → Always-approve → Normal (**Auto** separat: `/auto`) |
**Lifecycle (vereinfacht):**
@@ -71,16 +78,17 @@ Inactive --(/plan oder Shift+Tab)--> Pending
Pending --(erster Prompt)---------> Active
Active --(Approve exit_plan_mode)--> Inactive (+ Implementierung)
Active --(Mode aus, idle)---------> Inactive
Active --(Mode aus, Turn läuft)--> ExitPending → dann Inactive
```
Agent-initiiert: Der Agent ruft `enter_plan_mode` auf – **du musst zustimmen**. Ablehnen = bleibt Normal.
Agent-initiiert: Der Agent ruft `enter_plan_mode` auf – **du musst zustimmen**. Ablehnen = bleibt Normal. Bei Zustimmung springt der Flow oft **Inactive → Active** (ohne Pending).
**Gute Trigger (für dich und den Agenten):**
- „Add user authentication“ (Session vs. JWT vs. Middleware)
- „Redesign the data pipeline“
- „Add caching“ (Redis vs. in-memory vs. file)
- „Real-time updates“ (WebSocket vs. SSE vs. Polling)
- „User-Auth einbauen“ / „Add user authentication“ (Session vs. JWT vs. Middleware)
- „Datenpipeline neu schneiden“ / „Redesign the data pipeline“
- „Caching ergänzen“ (Redis vs. in-memory vs. file)
- „Echtzeit-Updates“ (WebSocket vs. SSE vs. Polling)
**Schlechte Trigger:**
@@ -100,6 +108,7 @@ Wenn der Agent `exit_plan_mode` aufruft, liest das Tool `plan.md` und die TUI ö
| `a` | **Approve** – Plan freigeben und bauen. Mit offenen Kommentaren: *approve w/ comments* |
| `s` | **Request changes** – Fokus auf Prompt, Revisionsnotizen tippen, `Enter` senden |
| `c` | **Comment** auf die selektierte Zeile/Range |
| `y` | **Copy** – gesamten Plan in die Zwischenablage |
| `q` | **Quit plan** – Plan verwerfen, Plan Mode aus |
| `Tab` | Fokus Preview ↔ Prompt |
| `Esc` | Vom Prompt zurück zur Preview (nicht automatisch quit) |
@@ -124,7 +133,7 @@ Feedback (Inline, Freeform oder beides) hält Plan Mode **aktiv**: Der Agent üb
- **Status-Flag:** während aktiv `plan`; Always-approve-Flag kommt nach Exit zurück, falls es an war.
- **`/compact`:** Plan-Mode-State bleibt erhalten; im kompaktierten Kontext steckt ein Reminder, dass Plan Mode aktiv ist.
**Praxisregel:** Plan Mode ist kein Ersatz für enge Shell-Deny-Regeln. Wenn du in Plan Mode yolo fährst, kann der Agent trotzdem riskante Commands ausführen – nur eben ohne Repo-Edit-Tools.
**Praxisregel:** Plan Mode ist kein Ersatz für enge Shell-Deny-Regeln. Unter Always-approve in Plan Mode können riskante Commands weiterlaufen – nur Repo-Edit-Tools bleiben gesperrt.
---
+10 -3
View File
@@ -61,6 +61,8 @@ Custom-Agents können Typen ergänzen oder Built-ins per Name überschatten.
| „Implementiere den freigegebenen Fix + Tests.“ | `general-purpose` |
| Unklar / gemischt | `general-purpose` + enger Prompt, oder erst explore |
**Default:** `general-purpose` nur, wenn Writes wirklich nötig sind – sonst `explore`/`plan` und Kontext sparen.
---
### 5.4 Wie Spawning funktioniert
@@ -80,7 +82,9 @@ Wichtige Parameter (Konzept – der Agent setzt sie; du steuerst über Prompt un
| `cwd` | Anderes Working Directory (nicht mit `worktree` kombinieren) |
| `resume_from` | Abgeschlossenes Kind fortsetzen (gleicher Typ, gleiche Session) |
Background-Kinder: Output/Status über `get_command_or_subagent_output`; abbrechen mit `kill_command_or_subagent`. Mehrere Tasks: warten mit Wait-Tools (`wait_any` / `wait_all`). In der TUI: **Tasks-Pane** `Ctrl+G` – laufende/fertige Subagents und Background-Commands.
Background-Kinder: Output/Status über `get_command_or_subagent_output`; abbrechen mit `kill_command_or_subagent`. Mehrere Tasks: warten mit dem Tool **`wait_commands_or_subagents`** und Parameter `mode` = `wait_any` oder `wait_all` (max. 20 Tasks). In der TUI: **Tasks-Pane** `Ctrl+G` – laufende/fertige Subagents und Background-Commands.
**Nesting-Tiefe 1:** Nur die Top-Level-Session spawnt Subagents. Ein Kind kann **keine** eigenen Subagents spawnen (`spawn_subagent` → Depth-Limit-Fehler). Der Agent-Baum bleibt flach – Orchestrierung bleibt beim Parent.
---
@@ -127,7 +131,7 @@ Nützliche Felder:
**Resolution (Modell/Effort), grob höchste Priorität zuerst:** Spawn-Override → Role-Default → Persona → Parent.
**Isolation:** ähnliche Kette, Default aber **`none`** (erbt nicht automatisch Worktree vom Parent).
> **Hinweis:** Personas greifen über Resolution/Roles – der Parent übergibt typischerweise **keinen** Persona-Namen als freien `spawn_subagent`-Parameter. Du gestaltest Personas und Roles so, dass die Resolution den richtigen Overlay wählt; Details im Agents-Modal und in der Config (Kapitel 14).
Personas greifen über Resolution/Roles – der Parent übergibt typischerweise **keinen** Persona-Namen als freien `spawn_subagent`-Parameter. Model/Effort wechseln nur, wenn Persona oder Role sie setzen; sonst erbt das Kind den Parent. Du gestaltest Personas und Roles so, dass die Resolution den richtigen Overlay wählt; Details im Agents-Modal und in der Config (Kapitel 14).
---
@@ -168,6 +172,8 @@ Voraussetzungen: Quelle **completed**, gleiche Session, **gleicher** `subagent_t
### 5.9 Config-Hebel (kurz)
Toggle, Models und Roles greifen in der **Resolution**, bevor der Parent spawnt – das spart Prompt-Yoga und erzwingt Team-Defaults (z. B. Research nur read-only).
```toml
[subagents.toggle]
explore = true
@@ -283,7 +289,7 @@ Delegiere so:
| Symptom | Ursache | Fix |
|---------|---------|-----|
| Parent-Kontext trotzdem voll | Zu viel im Parent selbst gelesen | Explizit „nur Subagent exploriert“ |
| Kind schreibt im Plan-Parent | general-purpose ohne Gate | explore/plan oder read-only |
| Kind schreibt im Plan-Parent | general-purpose ohne Gate (Parent-Plan ≠ Kind-Gate, Kap. 4) | explore/plan oder read-only |
| Zwei Writer, Chaos-Diff | Shared isolation | Worktrees / serialisieren |
| Resume schlägt fehl | Anderer Typ / noch running | completed + same type |
| Persona „wirkt nicht“ | Resolution/Name | Modal, Config-Priorität, instructions prüfen |
@@ -295,6 +301,7 @@ Delegiere so:
- [ ] Auftrag hat klaren Typ (explore / plan / general-purpose)
- [ ] DoD und Out-of-scope im Kind-Prompt
- [ ] Nesting-Tiefe 1: Orchestrierung nur im Parent
- [ ] Keine unnötige Dateiüberlappung bei Parallel-Writes
- [ ] Parent macht Integration-Verify
- [ ] Tasks-Pane im Blick bei Background
+4 -3
View File
@@ -17,7 +17,7 @@ Kapitel 5 trennt **Kontextfenster**. Worktrees trennen **Dateien auf Disk**.
**Alltagsschmerz:** Session A refactort Auth, Session B fixt CI – beide rühren `package.json` an. Am Abend: weder Feature noch CI, dafür ein Diff, den niemand mergen will.
**Philosophie:** Isolation ist billiger als Heldentum. Lieber zwei saubere Worktrees und ein bewusstes Apply als ein „Gott-Working-Tree“.
**Philosophie:** Isolation ist billiger als Heldentum. Lieber zwei saubere Worktrees und ein bewusstes Apply als einen gemeinsamen Working Tree als Chaos-Zone.
![Kontextfenster trennen Subagents; Worktrees trennen Dateien auf Disk.](assets/illustrations/M-06-worktrees-datei-isolation.jpg){width=90%}
@@ -65,7 +65,7 @@ Am Ende: Summary, Worktree-Pfad, Testbefehl, Diff-Statistik.
grok -w -r <session-id>
```
Neue Session-Taste: `Ctrl+N` (ggf. Doppel-Geste) kann optional einen Worktree anbieten – UI-Abhängig; CLI-Flags sind die reproduzierbare Variante.
Neue Session-Taste: `Ctrl+N` (ggf. Doppel-Geste) kann optional einen Worktree anbieten – UI-abhängig; CLI-Flags sind die reproduzierbare Variante.
---
@@ -156,7 +156,7 @@ Parent: Summary + Verify-Plan prüfen → Apply oder PR
**Fallen:**
- Parent in Plan Mode, Kind `general-purpose` **ohne** Worktree im shared Tree → Kind kann trotz Parent-Plan **schreiben** (Kapitel 4).
- Parent in Plan Mode, Kind `general-purpose` **ohne** Worktree im shared Tree → Kind kann trotz Parent-Plan **schreiben** (Parent-Plan ≠ Kind-Gate, Kapitel 4).
- Zwei Worktree-Kinder am selben logischen Feature ohne Absprachen → doppelte Branches, doppelte Wahrheit.
- Apply während Parent selbst dirty ist → Konflikte; vorher Parent clean oder PR-only.
@@ -264,6 +264,7 @@ git branch -vv
### 6.12 Checkliste Worktrees
- [ ] Parent-Tree clean **oder** bewusst PR-only (kein Apply in dirty Parent)
- [ ] Basis-Ref bewusst (main vs. feature HEAD)
- [ ] Label/Name verständlich (`feat-…`, nicht `tmp1`)
- [ ] Scope disjunkt bei Parallel-Tracks
+6 -4
View File
@@ -37,7 +37,7 @@ Mehrere Treffer im **selben** Ordner werden alle geladen. Auf case-insensitiven
**Claude-Kompatibilität (default an):** zusätzlich Home `~/.claude/` und pro Level `.claude/CLAUDE.md` / `.claude/CLAUDE.local.md`.
**Cursor-Kompatibilität:** analog `~/.cursor/` und projektbezogene Cursor-Rules, wenn enabled.
### Rules-Verzeichnisse
#### Rules-Verzeichnisse
Zusätzlich zu den Named Files: alle `*.md` in:
@@ -105,13 +105,15 @@ In `src/components/` lädt Grok **alle drei**. **Deeper wins:** bei Konflikt gil
- Keine Edits an `dist/` generierten Artefakten
```
Commands an euren Stack anpassen (`pytest`/`cargo`/…); siehe auch [`beispiele/todo-cli/AGENTS.md`](beispiele/todo-cli/AGENTS.md) und die Vorlagen unter `vorlagen/`.
#### Raus (oder nur verlinken)
- README-Kopie, Architektur-Roman, Marketing
- Secrets, Tokens, interne Hostnamen mit Credentials
- 20 Seiten Style-Guide – lieber Link + 5 harte Regeln
**Dateigröße:** Grok lädt Instruction-Files **vollständig** (kein Cap/Truncate). Trotzdem: kurz und spezfisch – Kontext ist endlich, und lange Wände werden schlechter befolgt.
**Dateigröße:** Grok lädt Instruction-Files **vollständig** (kein Cap/Truncate). Trotzdem: kurz und spezifisch – Kontext ist endlich, und lange Wände werden schlechter befolgt.
---
@@ -180,11 +182,11 @@ Viele Repos haben schon `CLAUDE.md` und `.claude/rules/`. Grok liest sie standar
| Dual-Agent | Beide Dateien **kurz und konsistent** – nicht zwei Wahrheiten |
| Vendor aus | `[compat.claude]` / `[compat.cursor]` Rules/Agents/Skills in Config (Kapitel 14) |
**Anti-Pattern:** `AGENTS.md` sagt „pnpm“, `CLAUDE.md` sagt „npm“ – deeper/later gewinnt unvorhersehbar im Alltag. Eine Source of Truth, der Rest verlinkt oder ist identisch.
**Anti-Pattern:** `AGENTS.md` sagt „pnpm“, `CLAUDE.md` sagt „npm“ – die **später geladene** Anweisung gewinnt (Precedence ist bestimmt). Im Alltag wirkt das wie Willkür, wenn beide Dateien divergieren. Eine Source of Truth, der Rest verlinkt oder ist identisch.
---
### 7.9 Best Practices (knapp und hart)
### 7.9 Best Practices (knapp und verbindlich)
1. **Root zuerst** – das Wichtigste project-weit.
2. **Spezifisch** – `` `cargo fmt` vor Commit `` schlägt „formatiere bitte“.
+27 -13
View File
@@ -5,10 +5,12 @@
---
### 8.1 Die drei Hebel im Vergleich
### 8.1 Steuerflächen im Vergleich
| Hebel | Charakter | Typisches Beispiel |
|-------|-----------|-------------------|
**Alltagsschmerz:** Der Agent „vergisst“ das Verify-Ritual, der Hook blockt still einen `rm`, und niemand weiß, ob das Team-Plugin überhaupt trusted ist. Die Tabelle sortiert **weich → hart → verpackt**.
| Steuerfläche | Charakter | Typisches Beispiel |
|--------------|-----------|-------------------|
| **AGENTS.md** | immer im Kontext, weich | „Tests: `npm test`“ |
| **Skill** | bei Bedarf / per `/name`, Verfahren | `/commit`, `/verify` |
| **Hook** | Event-getrieben, kann **blocken** | PreToolUse: `rm -rf` deny |
@@ -19,6 +21,8 @@
**Wann Hook statt Skill?** „Darf gar nicht passieren“ oder „nach jedem Edit formatieren“ – ohne dass der Agent es „vergessen“ darf.
**Wann Plugin?** Mehrere Artefakte + Team-Distribution.
Weich vs. hart (K-05) und Skills vs. Hooks (M-07) hängen zusammen: erst die Härte-Skala, dann die Verpackung.
![Je härter die Anforderung, desto weiter rechts: AGENTS.md bittet, Sandbox erzwingt.](assets/illustrations/K-05-weich-vs-hart.jpg){width=90%}
![Prozeduren → Skills. Unverhandelbares → Hooks. Pakete → Plugins mit Trust.](assets/illustrations/M-07-skills-vs-hooks.jpg){width=90%}
@@ -50,7 +54,7 @@ ignore = ["~/my-team-skills/wip"]
disabled = ["wip-skill"]
```
### Minimal-SKILL.md
#### Minimal-SKILL.md
```markdown
---
@@ -71,12 +75,14 @@ description: >
| Frontmatter | Rolle |
|-------------|--------|
| `name` | Identifier (lowercase, digits, hyphens; max 64) |
| `description` | **Trigger** für Auto-Invocation – spezfisch schreiben |
| `description` | **Trigger** für Auto-Invocation – spezifisch schreiben |
| `when-to-use` | extra Trigger-Phrasen |
| `user-invocable` | default `true` → erscheint als `/name` |
| `disable-model-invocation` | `true` = nur Slash, kein Auto |
| `allowed-tools`, `model`, `effort`, … | optional eng führen |
**Wie Trigger greifen:** `description` und `when-to-use` steuern, wann der Agent den Skill **von allein** lädt. Vage Descriptions („hilft bei Code“) nerven: zu oft oder nie. Schärfe sie so, dass der Use-Case und die Slash-Form (`/verify`) erkennbar sind (Vertiefung: 8.3).
---
### 8.3 Skills nutzen und erzeugen
@@ -86,11 +92,13 @@ description: >
```text
/verify
/commit fix the build
/local:commit # bei Namenskollision: Scope-Prefix
/user:commit
/local:commit # CWD: ./.grok/skills/
/repo:commit # Repo-Root: <repo>/.grok/skills/
/user:commit # User: ~/.grok/skills/
/deploy-tools:release # Plugin-Skill: /<plugin-name>:<skill>
```
`/` öffnet das Menü (Builtins + Skills). CLI-Übersicht: `grok inspect`.
`/` öffnet das Menü (Builtins + Skills). Builtins gewinnen unqualifiziert über gleichnamige Skills – dann den Scope-Prefix nutzen. CLI-Übersicht: `grok inspect`.
#### Erzeugen mit `/create-skill`
@@ -121,7 +129,7 @@ grok plugin marketplace remove <url>
# Plugin installieren
grok plugin install deploy-tools --trust
# ohne --trust: Warnung und Stop – Hooks/MCP/Skills würden aktiv
# ohne --trust: Warnung und Stop – Install bricht ab
```
Quellen: `owner/repo`, `@ref`/`@sha`, git URL, lokaler Pfad.
@@ -136,6 +144,8 @@ grok plugin details <name>
**TUI:** `/plugins` (überall; auf VS-Code-Family der sichere Weg). Modal-Tabs: Hooks, Plugins, Marketplace, Skills, MCP. Keys u. a. `r` reload, `Space` enable/disable, `i` install (Marketplace).
**Enable vs. Trust:** **Enable** lädt Skills, Commands und Agents. **Trust** schaltet Hooks, MCP und LSP des Plugins scharf. Beides ist getrennt – enable allein startet keine Hook-/MCP-Ausführung.
**Config-Quellen dauerhaft:**
```toml
@@ -161,10 +171,13 @@ Hook = Command oder HTTP an Lifecycle-Events.
| `PreToolUse` | **ja – deny** | Safety-Guard |
| `PostToolUse` | nein | Format, Log |
| `PostToolUseFailure` | nein | Alert |
| `Stop` / `SubagentStop` | **ja – Stop blocken** | „Tests müssen grün sein“ |
| `Stop` / `SubagentStop` (Alias `SubagentEnd`) | **ja – Stop blocken** | „Tests müssen grün sein“ |
| `SubagentStart` | nein | Audit |
| `PreCompact` / `PostCompact` | nein | Memory-Hygiene |
| `SessionEnd` | nein | Cleanup |
| `PermissionDenied` / `Notification` / `StopFailure` | nein | Audit / UI-Hinweise |
Vollständige Event-Liste: User-Guide *Hooks*.
**Orte (gemerged):** `~/.grok/hooks/*.json`, Projekt `.grok/hooks/*.json` (**Folder-Trust nötig**), Config-TOML, managed/requirements, Plugins, optional Claude/Cursor-Compat-Dateien.
@@ -178,7 +191,7 @@ grok --trust
#### Quick-Start PreToolUse-Guard (Skizze)
`~/.grok/hooks/guard-rm.json`:
`~/.grok/hooks/guard-rm.json` (Pfad-Skizze; im Übungsrepo oft `bin/block-rm.sh` wie `beispiele/todo-cli/`, kopierfertig auch unter [`vorlagen/hooks/`](vorlagen/hooks/) mit `scripts/block-rm.sh`):
```json
{
@@ -327,9 +340,10 @@ Bestätige die Trennung und führe /verify aus.
| Symptom | Ursache | Fix |
|---------|---------|-----|
| Skill erscheint nicht | Name/Pfad/disabled | `grok inspect`, Frontmatter |
| Falscher Skill bei Kollision | Unqualifizierter Name | `/repo:name` / `/user:name` |
| Falscher Skill bei Kollision | Unqualifizierter Name | `/local:name` / `/repo:name` / `/user:name` / `/<plugin>:name` |
| Auto-Skill nervt | Vage description | `when-to-use` schärfen oder disable-model-invocation |
| Project-Hooks tot | Kein Folder-Trust | `/hooks-trust` bewusst |
| Plugin Skills da, Hooks/MCP tot | enable ≠ trust | `--trust` / Trust im Modal, dann `r` |
| Plugin install, nichts passiert | nicht trusted / disable | `--trust`, enable, `r` |
| Hook „blockt nicht“ bei Crash | fail-open | Script härten, explizit deny |
@@ -337,7 +351,7 @@ Bestätige die Trennung und führe /verify aus.
### 8.10 Checkliste
- [ ] Skills: ein Workflow pro Skill, spezfische description
- [ ] Skills: ein Workflow pro Skill, spezifische description
- [ ] Team-Skills unter `.grok/skills/` committed
- [ ] Hooks nur für echte Gates; Trust verstanden
- [ ] Plugins nur aus trusted Sources + Inventory (`details`)
+5 -3
View File
@@ -36,12 +36,12 @@ command = "npx"
args = ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/allowed/dir"]
env = { } # Secrets lieber ${VAR} – siehe unten
enabled = true
startup_timeout_sec = 30
startup_timeout_sec = 120 # Default oft 30; Cold-Start npx/uvx eher 120 (wie in vorlagen/)
tool_timeout_sec = 120
tool_timeouts = { slow_op = 300 }
```
Cold-Start `npx`/`uvx` braucht oft mehr als 30s Startup – per Server oder global:
Cold-Start `npx`/`uvx` braucht oft mehr als 30s Startup – per Server oder global (Gegenstück: [`beispiele/configs/mcp.filesystem.beispiel.toml`](beispiele/configs/mcp.filesystem.beispiel.toml)):
```bash
export GROK_MCP_STARTUP_TIMEOUT_SECS=120
@@ -79,6 +79,8 @@ grok mcp add --transport http api https://mcp.example.com/mcp \
grok mcp add --transport sse linear https://mcp.linear.app/sse
grok mcp remove github
grok mcp enable name # persistiert (u. a. disabled_mcp_servers)
grok mcp disable name
grok mcp doctor # alle
grok mcp doctor github # einer
grok mcp doctor --json
@@ -107,7 +109,7 @@ Grok walked CWD → Git-Root und lädt `.grok/config.toml` je Level:
| `<repo>/.grok/config.toml` | mittel |
| `<cwd>/.grok/config.toml` | hoch |
Project-Config liefert typischerweise `[mcp_servers]`, `[plugins]`, `[permission]` – viele andere Sektionen nur user-global (Kapitel 14).
**Was du heute legst:** Eintrag in `<cwd>/.grok/config.toml` (oder Repo-Root) schlägt User-Global für denselben Server-Namen. Project-Config liefert typischerweise `[mcp_servers]`, `[plugins]`, `[permission]` – viele andere Sektionen nur user-global (Kapitel 14).
**Repo-Trust:** Project-MCP/LSP/Hooks hängen am **Folder-Trust** (`trusted_folders.toml`, `/hooks-trust`, `--trust`). Untrusted Repo → Server starten nicht „heimlich“.
+23 -9
View File
@@ -36,6 +36,8 @@ grok -p --prompt-file ./prompts/ci-review.txt --output-format json
### 10.3 Wichtige Flags (Arbeitsset)
In CI brauchst du selten die ganze Flag-Liste – aber **Always-approve + Deny + Output-Format + Turn-Limit** fast immer. Die Tabelle ist Nachschlagewerk; die Sessions unten bauen die typische Kombi.
| Flag | Rolle |
|------|--------|
| `-p` / `--single` | Headless-Prompt |
@@ -43,19 +45,21 @@ grok -p --prompt-file ./prompts/ci-review.txt --output-format json
| `-c` / `--continue` | letzte Session im CWD |
| `-r` / `--resume` | Session per ID/Titel |
| `--cwd` | Working Directory |
| `--output-format plain\|json\|streaming-json` | Ausgabe |
| `--yolo` / `--always-approve` | keine Permission-Prompts |
| `--output-format plain\|json\|streaming-json\|streaming-messages-json` | Ausgabe |
| `--include-partial-messages` | Text/Thinking-Deltas (nur mit `streaming-messages-json`) |
| `--yolo` / `--always-approve` | keine Permission-Prompts (`--yolo` = Alias, oft versteckt in `--help`) |
| `--permission-mode` | u. a. `bypassPermissions` |
| `--allow` / `--deny` | Permission-Regeln (wiederholbar) |
| `--rules` | Session-Regeln |
| `--sandbox <profile>` | OS-Sandbox (Kapitel 13) |
| `--tools` / `--disallowed-tools` | Tool-Allow/Deny-List (**nur Headless**) |
| `--agents` | Inline-Subagent-Definitionen (**nur Headless**) |
| `--max-turns N` | Turn-Limit (**nur Headless**) |
| `--effort` / `--reasoning-effort` | Reasoning-Level |
| `--no-auto-update` | keine Update-Checks im Job |
| `--worktree=` / `-w` | isolierter Tree (Kapitel 6) |
> **Hinweis:** `--tools`, `--disallowed-tools`, `--max-turns` in der TUI → Warnung, ignoriert. In CI genau diese Flags nutzen.
**Nur Headless:** `--tools`, `--disallowed-tools`, `--max-turns`, `--agents` in der TUI → Warnung, ignoriert. In CI genau diese Flags nutzen.
---
@@ -76,9 +80,13 @@ grok -p "Review changes for bugs" --output-format json --yolo \
#### streaming-json
NDJSON-Eventstrom – für UIs und Live-Pipelines.
NDJSON-Eventstrom (native ACP-Session-Updates) – für UIs und Live-Pipelines.
**Praxis:** CI-Summary → `json` + `jq`. Streaming-Dashboards → `streaming-json`.
#### streaming-messages-json
NDJSON im Anthropic-Messages-API-Wire-Format – für Clients, die dieses Streaming-Protokoll erwarten. Mit `--include-partial-messages` kommen zusätzlich inkrementelle `stream_event`-Deltas (Text/Thinking); ohne dieses Flag und bei anderen Formaten wird das Flag ignoriert (mit Warnung).
**Praxis:** CI-Summary → `json` + `jq`. Streaming-Dashboards → `streaming-json`. Messages-API-kompatible Clients → `streaming-messages-json`.
---
@@ -115,7 +123,7 @@ grok -p "Run unit tests and summarize failures" \
--disallowed-tools "Agent(explore)"
```
Tool-IDs intern (Shell oft `run_terminal_cmd` in Filter-Docs – bei Unklarheit Guide/Inspect). Permission-Rules nutzen Prefixe wie `Bash(...)`, `Edit(...)`, `MCPTool(...)`.
**Zwei Namensräume, nicht vermischen:** Headless-`--tools` / `--disallowed-tools` nutzen **interne Tool-IDs** (Shell oft `run_terminal_cmd`). Permission-Rules und viele Hook-Matcher nutzen Prefixe bzw. Aliase wie `Bash(...)` / `run_terminal_command` (Kapitel 8 und 13). Bei Unklarheit: Guide oder `grok inspect`.
---
@@ -141,7 +149,8 @@ grok -p "Static review of src/api" \
```bash
# multi-step pipeline über eine Session
SID=$(uuidgen) # oder feste UUID-Policy
# -s erwartet UUID; macOS-uuidgen liefert Uppercase → lowercasen
SID=$(uuidgen | tr '[:upper:]' '[:lower:]') # oder feste UUID-Policy
grok -p "Step 1: find flaky tests" -s "$SID" --always-approve --output-format json
grok -p "Step 2: propose minimal fix" -r "$SID" --always-approve --output-format json
@@ -177,6 +186,7 @@ jobs:
XAI_API_KEY: ${{ secrets.XAI_API_KEY }}
run: |
set -euo pipefail
export PATH="$HOME/.grok/bin:$PATH"
git fetch origin "${{ github.base_ref }}"
RANGE="origin/${{ github.base_ref }}...HEAD"
grok -p "Review the git diff $RANGE for bugs and security issues.
@@ -193,6 +203,8 @@ jobs:
jq -r '.text' /tmp/grok-out.json >> "$GITHUB_STEP_SUMMARY"
```
Lauffähiges Gegenstück im Repo: [`beispiele/configs/github-actions-grok-review.yml`](beispiele/configs/github-actions-grok-review.yml) (inkl. `PATH`).
> **Achtung:** `XAI_API_KEY` nur als Secret. Kein Always-approve ohne Deny. Keine Write-Permissions auf den Default-Branch für den Job-Token, wenn du nur reviewen willst.
Auth in CI: API-Key (Kapitel 2), nicht Browser-Login.
@@ -240,11 +252,13 @@ grok -p "List the three riskiest modules. Change nothing." \
#### Session 2 – YOLO + Deny
Gates wie in 10.5; hier ein anderes Deny-Paar (Force-Push + Installer-Muster):
```bash
grok -p "Run the unit test suite and quote the first failure." \
--always-approve \
--deny 'Bash(rm *)' \
--deny 'Bash(git push *)' \
--deny 'Bash(git push --force *)' \
--deny 'Bash(curl *)' \
--max-turns 20
```
+18 -17
View File
@@ -59,14 +59,9 @@ Flags **nach** `agent` und **vor** dem Mode-Namen; mode-spezifische Flags **dana
**Clients:** ACP-fähige IDEs/Editoren (z. B. Zed, Neovim, Emacs-Integrationen), Custom-Tools, SDKs. Konkrete Marketplace-Extensions ändern sich – Konzept bleibt: Client startet `grok agent … stdio` und spricht ACP.
**Automation-Baseline:**
**Transport-Fokus:** stdio ist der lokale Standard (Client startet den Prozess). Härtung (Always-approve + Deny + Sandbox) bündelst du in 11.8 und Kapitel 13 – hier nur der Startweg.
```bash
grok agent --always-approve stdio
# Deny/Hooks trotzdem aktiv (Kapitel 8, 13)
```
Session-seitig YOLO:
Session-seitig YOLO (Client-Meta, Implementierung abhängig):
```json
{
@@ -76,8 +71,6 @@ Session-seitig YOLO:
}
```
(`session/new` Meta – Client-Implementierung abhängig.)
---
### 11.4 Server Mode (WebSocket)
@@ -115,7 +108,7 @@ Für Browser/Remote-Clients über gemeinsamen Relay – Ops-Thema (Auth, Allowli
4. **session/update** – Stream (Text, Tools, Thoughts)
5. **Permissions** – Approve/Deny oder Mode-Policy
Als **Nutzer** siehst du das in der IDE als Chat + Diffs. Als **Integrationsbauer** loggst du JSON-RPC und testest mit always-approve + Deny.
Als **Nutzer** siehst du das in der IDE als Chat + Diffs. Als **Integrationsbauer** loggst du JSON-RPC (Permissions, CWD, Tool-Calls) – sonst debuggst du „hängt“ und „falscher Tree“ blind. Teste mit always-approve + Deny.
ACP-Extensions (Auszug aus Guide): u. a. Git-Worktree-Methoden (`x.ai/git/worktree/*`), Session-Helpers – nützlich für isolierte IDE-Sessions (Kapitel 6).
@@ -123,7 +116,7 @@ ACP-Extensions (Auszug aus Guide): u. a. Git-Worktree-Methoden (`x.ai/git/work
### 11.7 IDE-Alltag: was gleich bleibt
Unabhängig vom Editor-Skin gelten dieselben Steuerknöpfe:
**Alltagsschmerz:** Falscher CWD, Diff akzeptiert ohne Lesen, Always-approve „weil die IDE fragt nervt“. Unabhängig vom Editor-Skin gelten dieselben Steuerknöpfe:
| Thema | In der IDE genauso wichtig |
|-------|----------------------------|
@@ -148,16 +141,24 @@ Typische Muster:
```bash
# Eval-Skizze: stdio-Client steuert Turns
grok agent --always-approve \
--deny 'Bash(rm -rf *)' \
--deny 'Bash(git push --force *)' \
stdio
# Harte Limits: [permission] deny in .grok/config.toml (agent-CLI listet --deny nicht)
grok agent --always-approve stdio
```
```toml
# .grok/config.toml (Bot-Worker)
[permission]
deny = [
"Bash(rm -rf *)",
"Bash(git push --force *)",
"Bash(git push -f *)",
]
```
**Hardening-Checkliste für Bots:**
- [ ] Secret/API-Key nur Env
- [ ] Always-approve + Deny + ideal Sandbox
- [ ] Always-approve + Deny (Config/Hooks) + ideal Sandbox
- [ ] Bind localhost oder mTLS
- [ ] max cost/turns clientseitig
- [ ] Audit-Log der Prompts (ohne Secrets)
@@ -181,7 +182,7 @@ Ohne eigenen Client: IDE-Extension mit Grok-ACP verbinden und einen Read-only-Pr
#### Session 2 – serve + Secret
```bash
export GROK_AGENT_SECRET="dev-only-change-me"
export GROK_AGENT_SECRET="dev-only-change-me" # nur lokal/Env – nicht committen
grok agent --always-approve serve --bind 127.0.0.1:2419 --secret "$GROK_AGENT_SECRET"
```
+14 -10
View File
@@ -5,22 +5,22 @@
---
### 12.1 Drei Speicher, die du nicht vermischen solltest
### 12.1 Vier Speicher, die du nicht vermischen solltest
**Alltagsschmerz:** Eine 4-Stunden-Session driftet, Kosten steigen, der Agent widerspricht sich. Compact hilft, verliert aber Nuancen. Memory hilft über Tage – und kann Falsches „erinnern“, wenn du Müll speicherst. `AGENTS.md` ist kein Session-Speicher, sondern der Team-Kompass – trotzdem landet es im Kopf neben den dreien und wird oft verwechselt.
| Speicher | Was | Lebensdauer |
|----------|-----|-------------|
| **Kontextfenster** | was das Modell *jetzt* sieht | Turn / bis Compact |
| **Session** | voller Verlauf + Tools + Snapshots | `~/.grok/sessions/…` |
| **Memory** | indexierte Fakten über Sessions | `~/.grok/memory/…` (opt-in) |
| **AGENTS.md** | Team-Kompass | Repo (Kapitel 7) |
**Alltagsschmerz:** Eine 4-Stunden-Session driftet, Kosten steigen, der Agent widerspricht sich. Compact hilft, verliert aber Nuancen. Memory hilft über Tage – und kann Falsches „erinnern“, wenn du Müll speicherst.
| **AGENTS.md** | Team-Kompass (weich, Kapitel 7) | Repo – nicht session-lokal |
---
### 12.2 Session-Layout auf Disk
Basis: `~/.grok` bzw. `$GROK_HOME`. Sessions:
Basis: `~/.grok` bzw. `$GROK_HOME`. **Warum das Layout kennen?** Resume und Debug hängen an `updates.jsonl` (autoritativ), nicht am Titel in der UI. Feedback und Rewind-Punkte sitzen daneben – wer nur `summary.json` anstarrt, sieht Metadaten, nicht den Gesprächsstrom.
```text
~/.grok/sessions/<encoded-cwd>/<session-id>/
@@ -30,6 +30,7 @@ Basis: `~/.grok` bzw. `$GROK_HOME`. Sessions:
plan.json # Tasks/TODO-State
rewind_points.jsonl # Snapshots für /rewind
signals.json
feedback.jsonl # Ratings/Feedback (falls genutzt)
compaction_checkpoints/
subagents/ # Meta; Kinder leben im normalen Session-Tree
```
@@ -40,11 +41,13 @@ Basis: `~/.grok` bzw. `$GROK_HOME`. Sessions:
### 12.3 Sessions steuern
**Warum IDs statt Titel in Scripts?** Titel sind lesbar und kollidieren; IDs sind stabil. `list`/`search` sind die Inventar-Tools; Löschen ist permanent.
| Ziel | TUI | CLI |
|------|-----|-----|
| Neu | `/new` (`/clear`) | neuer `grok`-Start |
| Resume | `/resume`, Welcome, `Ctrl+S` | `grok -r <id\|title>`, `grok -r` (latest), `grok -c` |
| Fork | `/fork` | `--fork-session` mit resume |
| Fork | `/fork [--worktree\|--no-worktree] [directive]` | `--fork-session` mit resume |
| Rename | `/rename` / `/title` | – |
| Dashboard | `/dashboard` (`/sessions`) | – |
| Quit | `/quit` | Exit-Code Headless |
@@ -54,9 +57,10 @@ Basis: `~/.grok` bzw. `$GROK_HOME`. Sessions:
grok sessions list
grok sessions list --limit 50
grok sessions search "rate limit"
grok sessions delete <session-id> # permanent (CLI); TUI: /delete oder /resume → d y
```
`list` gruppiert oft nach Worktree-Label. Scripts: **IDs** bevorzugen, Titel sind case-insensitive und können kollidieren.
`list` gruppiert oft nach Worktree-Label.
---
@@ -160,7 +164,7 @@ Index: SQLite FTS5 + optional Vektoren.
- **Session-Ende:** schlanke Metadaten-Summary (Topics, Counts) – kein LLM, trivial Sessions skip. Abschalten: `session.save_on_end = false`.
- **`/flush`:** reichhaltige Extraktion (Decisions, Patterns) – vor Compact oder Tagesende.
- **`/dream`:** Konsolidierung in Topics.
- **`/remember …`:** sofortige Notiz (auch ohne full memory stack in Teilen verfügbar – Guide: `/remember` always available).
- **`/remember …`:** sofortige Notiz (laut Doku auch ohne vollen Memory-Stack verfügbar).
```text
/remember staging deploy uses the eu-west cluster
@@ -168,7 +172,7 @@ Index: SQLite FTS5 + optional Vektoren.
/dream
```
**Policy:** Keine Secrets ins Memory. Falsche Erinnerungen aktiv löschen/korrigieren im `/memory`-UI. Memory ersetzt **nicht** AGENTS.md für Team-Standards.
**Policy:** Keine Secrets ins Memory. Falsche Erinnerungen aktiv löschen/korrigieren im `/memory`-UI oder per CLI (`grok memory clear --workspace|--global|--all`, mit `--yes` ohne Prompt). Memory ersetzt **nicht** AGENTS.md für Team-Standards.
---
@@ -232,7 +236,7 @@ Vergleich: beide in einer Session mit nur Compact – wo driftet die Qualität?
1. `grok sessions list` und eine alte Session resumieren.
2. `/context` und `/session-info` screenshot/notieren.
3. Einmal `/compact` mit spezfischem Keep-Hinweis.
3. Einmal `/compact` mit spezifischem Keep-Hinweis.
4. Einmal `/rewind` auf eine sichere Spielwiese (Git clean strategy).
5. Memory kurz enablen, `/remember` + neue Session, dann `--no-memory`.
6. Team-Regel skizzieren: wann new, wann compact, was in AGENTS.md vs. Memory.
+16 -9
View File
@@ -13,6 +13,8 @@ Ein Coding-Agent mit Shell und Netzwerk ist ein **Remote-gesteuerter Junior mit
### 13.2 Permission Modes
Jeden Tool-Call entscheidet der **Mode**, *wie oft* du klickst – Rules entscheiden, *was nie geht*. Modes ohne Deny sind Komfort; Deny ohne Mode-Verständnis ist reines Rätselraten.
| Mode | Verhalten | Alltag |
|------|-----------|--------|
| `default` / **ask** | Read-only oft frei; Rest fragt | interaktive TUI |
@@ -22,7 +24,7 @@ Ein Coding-Agent mit Shell und Netzwerk ist ein **Remote-gesteuerter Junior mit
| `bypassPermissions` / **always-approve** | Tools laufen ohne Prompt* | CI, ACP, Automation |
| `plan` | Compat-Name – echtes Plan Mode separat (Kap. 4) | – |
\* **Deny-Regeln, Hooks und manche Shell-`ask`-Regeln greifen weiter** unter Always-approve.
\* **Deny-Regeln und Hooks greifen weiter** unter Always-approve. Shell-`ask`-Segmente können weiter prompten; **non-Shell-`ask`** oft nicht – Details im User-Guide Permissions.
Setzen:
@@ -72,6 +74,8 @@ Reihenfolge bei jedem Tool-Call:
### 13.4 Was default nie fragt (solange kein ask/deny)
**Warum das zählt:** Ohne Segmentierung wäre jede Shell-Kette ein einziges Permission-Urteil – entweder nervt sie ständig oder sie ist gefährlich freizügig. Der Harness splittet Chains und erlaubt harmlose Teile, blockt riskante.
**Tools u. a.:** `read_file`, `list_dir`, `grep`, `web_search`, `todo_write`, Subagent-Control, Skill-Invoke.
**Shell-Segmente (word-boundary), u. a.:** `ls`, `cat`, `pwd`, `git status|diff|log|…`, `rg`/`grep` (ohne riskante Preprocessor), read-only `kubectl get|logs|describe`.
@@ -105,12 +109,15 @@ deny = [
"Bash(rm -rf *)",
"Bash(git push --force *)",
"Bash(git push -f *)",
"Read(.env)",
"Read(.env.*)",
"Read(**/.env)",
"Read(**/.env.*)",
"Read(secrets/**)",
"Read(**/secrets/**)",
]
```
> **Matching:** Bare-Filename wie `Read(.env)` matcht nur den **exakten** String `.env` – nicht `subdir/.env`. Für Tiefe: `**/.env`. Pfade werden nicht kanonisiert; wo der Agent absolute Paths liest, zusätzlich absolute Patterns setzen.
Oder strukturierte `rules = [{ action = "allow", tool = "bash", pattern = "git *" }, …]` (siehe aktuelle Doku-Syntax).
#### Scopes
@@ -119,7 +126,7 @@ Oder strukturierte `rules = [{ action = "allow", tool = "bash", pattern = "git *
|-------|-------|--------|
| Global | `~/.grok/config.toml` | nein |
| Project | `.grok/config.toml` | ja (commit) |
| Personal im Projekt | `.claude/settings.local.json` | nein (gitignore) |
| Personal im Projekt | `.claude/settings.local.json` | nein (gitignore; Claude-Compat-Pfad, von Grok nativ gelesen – kein Claude Code nötig) |
| Interactive grants | intern, per project | nein |
Discovery: `.grok/config.toml` von Root→CWD. **Global deny schlägt project allow.**
@@ -188,12 +195,12 @@ Unter workspace/read-only/strict: Kernel **write-deny** auf globale Hook-Pfade (
[permission]
deny = [
"Bash(rm -rf *)",
"Bash(curl *| bash)",
"Bash(wget *| sh)",
"Bash(curl *)",
"Bash(wget *)",
"Bash(git push --force *)",
"Bash(git push -f *)",
"Read(.env)",
"Read(.env.*)",
"Read(**/.env)",
"Read(**/.env.*)",
"Read(**/secrets/**)",
]
allow = [
@@ -272,7 +279,7 @@ Frisches Demo-Repo mit project hook: ohne Trust still, mit `/hooks-trust` aktiv
| Allow greift nicht | global deny / Pattern | Matching-Guide, `**` vs `*` |
| Sandbox start fail | Hooks-Symlink / Policy | `/doctor`, Profile |
| Netz in strict auf macOS | no-op child net | nicht auf macOS verlassen |
| `.env` im Kontext | Read erlaubt | Deny Read(.env*) |
| `.env` im Kontext | Read erlaubt | Deny `Read(**/.env)` (+ absolute Forms) |
---
+6 -3
View File
@@ -21,6 +21,8 @@
### 14.2 Wo liegt was?
Config greift nicht? Zuerst wissen, *welche Datei* und *welche Schicht* – `grok inspect` spart Rate-Orakel.
| Pfad | Rolle |
|------|--------|
| `~/.grok/config.toml` | Haupt-User-Config |
@@ -41,7 +43,7 @@
### 14.3 config.toml – die nützlichen Sektionen
Datei nur mit Overrides füllen; Defaults greifen sonst.
Datei nur mit Overrides füllen; Defaults greifen sonst. **Heute typisch setzen:** Model-Default, Permission-Deny, ggf. MCP/Plugins. UI-Flags (`simple_mode`, `vim_mode`) und Experimente nur, wenn du sie brauchst.
```toml
[cli]
@@ -126,7 +128,7 @@ TUI: `/model grok-build` (`/m`), Effort `/effort high`, Picker `Ctrl+M` (Scrollb
default = "grok-4.5"
```
Default-Hosted-Modelle brauchen keine Extra-Endpoint-Config – Auth per Login/Key (Kapitel 2). **IDs und Namen drift en** mit Releases; `grok models` und Picker sind Source of Truth.
Default-Hosted-Modelle brauchen keine Extra-Endpoint-Config – Auth per Login/Key (Kapitel 2). **IDs und Namen driften** mit Releases; `grok models` und Picker sind Source of Truth.
---
@@ -140,7 +142,8 @@ model = "model-id" # Wire-ID an die API
base_url = "https://api.example.com/v1"
name = "Display Name" # Picker-Label
api_backend = "chat_completions" # oder responses | messages
# api_key / env_key / extra_headers …
env_key = "MY_MODEL_API_KEY" # Key aus Env – nicht api_key in TOML committen
# extra_headers = { … }
```
| `api_backend` | Protokoll |
+6 -1
View File
@@ -126,6 +126,8 @@ Then run tests/payments until green twice.
**Ziel:** Severity-liste mit file:line.
```bash
# --tools: interne Tool-IDs (Shell oft run_terminal_cmd).
# --deny: Permission-Prefix Bash(...), siehe Kap. 10 und 13.
grok -p "Review git diff origin/main...HEAD for bugs and security issues.
Read-only. No edits, no commits, no network installs.
Output: severity-ordered findings with file:line and short fix hint." \
@@ -214,14 +216,17 @@ Propose minimal fix OR revert recommendation. Do not push." \
--always-approve \
--cwd "$(pwd)" \
--deny 'Bash(git push *)' \
--deny 'Bash(git push --force *)' \
--max-turns 30 \
--output-format json | jq -r '.text'
```
**Policy dieses Jobs:** Writes und Commits sind erlaubt (minimaler Fix im Tree); **Push/Deploy bleiben blockiert**. Für Review-only siehe UC7 / Kap. 10 (Tool-Allowlist ohne Shell-Write).
Interaktiv: `@/tmp/ci-fail.log` anhängen statt riesigem Paste (Kontext!).
**DoD:** Eine Hypothese mit Evidenz; nächster Schritt klar.
**Fallen:** Ganzes Log in den Prompt; YOLO ohne Deny.
**Fallen:** Ganzes Log in den Prompt; YOLO ohne Deny; unbemerktes Force-Push-Pattern.
---
@@ -3,6 +3,8 @@
> **Kern in einem Satz:** Die meisten „Grok spinnt“-Tickets sind **Kontext-, Permission-, Trust-, Scope- oder Erwartungsprobleme** – gelöst mit Systematik, nicht mit lauteren Prompts.
Stand der Fakten im Buch: **Juli–Aug 2026** (CLI **0.2.x**); UI-Labels und einzelne Commands können driften.
**Schnellpfad Symptom → Fix:** [16.6](#16-6-symptom--fix).
**Prompt-Rezepte:** [16.2](#16-2-prompt-engineering-fuer-grok-build).
@@ -10,6 +12,8 @@
### 16.1 Best Practices – kompakt
Alltag: Ticket, Diff, CI-Fail – die folgenden Blöcke decken den Großteil der Fälle. Details und Kanon sitzen in den Fachkapiteln; hier die kompakte Reprise.
#### Prompts
1. **Ziel + Nicht-Ziel + Verify** in jedem nicht-trivialen Auftrag
@@ -51,7 +55,7 @@
### 16.2 Prompt-Engineering für Grok Build
Grok Build ist ein **Agent mit Tools**, kein reiner Chat. Gute Prompts steuern den **Harness**.
Grok Build ist ein **Agent mit Tools**, kein reiner Chat. Gute Prompts steuern den **Harness**. Englisch in Tool-Steuerung und DoD ist oft robuster – Formulierungen unten sind Copy-Paste, kein Stilbruch zum deutschsprachigen Buch.
#### Schablone (Copy-Paste)
@@ -150,7 +154,7 @@ Verwirf Explore-Umwege und gescheiterte Zwischenversuche.
```text
1. Symptom benennen (hängt / falscher Diff / ignoriert Regeln / Auth)
2. Surface? TUI / -p / agent
3. Mode? ask / plan / always-approve
3. Mode? ask / auto / plan / always-approve (ggf. acceptEdits / dontAsk)
4. grok inspect · /context · /session-info · /doctor
5. CWD und geladene AGENTS.md/Rules
6. Trust / MCP enabled?
@@ -167,7 +171,7 @@ Nicht parallel zehn Hebel drehen – eine Variable pro Versuch.
| Symptom | Erste Checks | Fix |
|---------|--------------|-----|
| `grok: command not found` | PATH, neue Shell | Installer, `which grok` |
| Login-Schleife | `auth.json`, Key-Vorrang | `grok logout && login` |
| Login-Schleife | `auth.json`, Key-Vorrang | `grok logout && grok login` |
| Key greift nicht | Session-Token aktiv | logout, nur `XAI_API_KEY` |
| TUI Keys tot | Terminal/tmux | `/doctor`, `Ctrl+X` |
| Hängt in CI | Permission ask | `--always-approve` + Deny |
@@ -186,7 +190,7 @@ Nicht parallel zehn Hebel drehen – eine Variable pro Versuch.
| Falsches Modell | default/CLI | `/model`, `grok models` |
| Config „tot“ | Precedence | Kap. 14 Debug-Flow |
| Force-push im Diff | fehlende Deny | Deny + Review |
| `.env` im Kontext | Read erlaubt | Deny Read(.env*) |
| `.env` im Kontext | Read erlaubt | Deny `Read(**/.env)` (+ absolute Forms) |
---
+5 -3
View File
@@ -3,7 +3,7 @@
> **Kern in einem Satz:** Alle vier sind **agentische Coding-Werkzeuge** – sie unterscheiden sich in Surface, Policy-Modell, Ökosystem und Team-Fit; „das beste“ ist das, das **ihr steuern und reviewen** könnt.
Vergleiche drift en mit Releases (Stand **Juli 2026**). Nutze die **Achsen**, nicht Marketing-Slogans. Primärquellen: jeweilige Produktdoku; dieses Kapitel orients für Entscheider und Power-User.
Vergleiche driften mit Releases (Stand **Juli–Aug 2026**, Grok CLI **0.2.x**). Nutze die **Achsen**, nicht Marketing-Slogans. Primärquellen: jeweilige Produktdoku; dieses Kapitel orientiert für Entscheider und Power-User.
---
@@ -27,8 +27,8 @@ Vergleiche drift en mit Releases (Stand **Juli 2026**). Nutze die **Achsen**, ni
#### Grok Build (`grok`)
- Terminal-TUI first (SpaceXAI/xAI), Headless `-p`, ACP `grok agent`
- Regeln: `AGENTS.md`, `.grok/rules/`, starke Compat zu CLAUDE.md / Cursor
- Terminal-TUI first (xAI; Auth oft SpaceXAI-OAuth), Headless `-p`, ACP `grok agent`
- Regeln: `AGENTS.md`, `.grok/rules/`; Compat zu CLAUDE.md / Cursor über `[compat.*]` und `grok inspect` (Kapitel 14)
- Plan Mode mit Preview/Kommentaren, Subagents, Worktrees
- Skills, Hooks, Plugins/Marketplaces, MCP
- Config: `config.toml`, Sandbox-Profile, Folder-Trust
@@ -70,6 +70,8 @@ Vergleiche drift en mit Releases (Stand **Juli 2026**). Nutze die **Achsen**, ni
Legende: ● stark / etabliert · ◐ vorhanden / anders gelöst · ○ schwach oder nicht Fokus · ? stark versionsabhängig
**Codex-Spalte:** bewusst unvollständig (`?`) – OpenAI-Codex-Surfaces und Policies driften schnell; kein Pseudo-Vergleich. Vor Rollout Primärdoku lesen (Stand 2026H2).
| Fähigkeit | Grok Build | Claude Code | Codex | Cursor |
|-----------|------------|-------------|-------|--------|
| Interaktive Terminal-TUI | ● | ● | ◐/? | ○ (IDE) |
+31 -15
View File
@@ -3,7 +3,7 @@
> **Kern:** Spickzettel zum Nachschlagen beim Arbeiten – nicht Ersatz für die Kapitel 0–17.
**So nutzen:** Im echten Repo offen halten. Befehl/Pfad suchen → bei Unklarheit ins Kapitel springen. UI-Labels können mit Releases driften (Stand **Juli 2026**); `grok --help`, `/` und User-Guide bleiben autoritativ.
**So nutzen:** Im echten Repo offen halten. Befehl/Pfad suchen → bei Unklarheit ins Kapitel springen. UI-Labels können mit Releases driften (Stand **Juli–Aug 2026**, CLI **0.2.x**); `grok --help`, `/` und User-Guide bleiben autoritativ.
---
@@ -12,9 +12,9 @@
| Plattform | Befehl |
|-----------|--------|
| macOS/Linux/WSL/Git Bash | `curl -fsSL https://x.ai/cli/install.sh \| bash` |
| Version pinnen | `… \| bash -s 0.1.42` |
| Version pinnen | `… \| bash -s 0.2.0` (Beispiel-Pin; `grok --version` / Release-Notes) |
| Windows PowerShell | `irm https://x.ai/cli/install.ps1 \| iex` |
| PS + Version | `$env:GROK_VERSION="0.1.42"; irm https://x.ai/cli/install.ps1 \| iex` |
| PS + Version | `$env:GROK_VERSION="0.2.0"; irm https://x.ai/cli/install.ps1 \| iex` |
```bash
grok --version
@@ -49,6 +49,7 @@ grok --rules "…"
grok sessions list
grok sessions search "keyword"
grok sessions delete <id>
grok inspect
grok models
```
@@ -58,8 +59,8 @@ grok models
| `/new` `/clear` | neue Session |
| `/resume` | Session-Picker |
| `/rename` | Titel |
| `/fork [--worktree]` | verzweigen |
| `/rewind` | Turn + Files zurück |
| `/fork [--worktree\|--no-worktree]` | verzweigen |
| `/rewind` (`/undo`) | Turn + Files zurück |
| `/compact [hint]` | Kontext komprimieren |
| `/context` | Fenster-Breakdown |
| `/session-info` `/status` | Meta |
@@ -79,7 +80,7 @@ grok models
| `--allow` / `--deny` | Rules |
| `[permission]` in config | Allow/Deny Listen |
**Pipeline:** Hooks → deny/ask/allow → remembered grants → built-in readonly → Mode.
**Pipeline:** Hooks → **Deny > Ask > Allow** → remembered grants → built-in readonly → Mode.
**Deny gewinnt immer** – auch unter Always-approve.
@@ -90,7 +91,7 @@ grok -p "…" --always-approve \
--allow 'Bash(npm test *)'
```
Sandbox: `--sandbox off|workspace|devbox|read-only|strict|custom`.
Sandbox: `--sandbox off|workspace|devbox|read-only|strict` (Built-ins) oder **Profilname** aus `sandbox.toml` (z. B. `--sandbox project`).
Trust: `/hooks-trust`, `--trust`, `~/.grok/trusted_folders.toml`.
Kapitel 4, 13.
@@ -103,6 +104,7 @@ Kapitel 4, 13.
| `a` | Approve (+ comments) |
| `s` | Request changes |
| `c` | Comment on lines |
| `y` | Plan in Clipboard |
| `q` | Quit plan |
| `Tab` | Preview ↔ Prompt |
@@ -124,14 +126,14 @@ Plan-Datei: `~/.grok/sessions/<encoded-cwd>/<id>/plan.md`.
| `Ctrl+T` | Todos |
| `Ctrl+G` | Tasks-Pane |
| `Ctrl+B` | Command backgrounden |
| `Ctrl+L` / `/plugins` | Extensions-Modal |
| `Ctrl+L` / `/plugins` | Extensions-Modal\* |
| `Ctrl+.` / `Ctrl+X` | Shortcuts-Hilfe |
| `F2` | Settings |
| `@` | Datei anhängen |
| `!` | Shell-Mode |
| `↑` | Prompt-History |
\* Fullscreen+Vim: Esc cancelt oft nicht – `Ctrl+C`. Details: Kapitel 3.
\* Fullscreen+Vim: Esc cancelt oft nicht – `Ctrl+C`. Auf VS-Code-Familie ist `Ctrl+L` oft **Interject** – Extensions dort über `/plugins` / `/hooks`. Details: Kapitel 3.
---
@@ -143,21 +145,25 @@ Plan-Datei: `~/.grok/sessions/<encoded-cwd>/<id>/plan.md`.
| `/model` `/m` `/effort` | Modell |
| `/always-approve` `/auto` | Permissions |
| `/compact` `/context` | Kontext |
| `/memory` `/flush` `/dream` `/remember` | Memory |
| `/memory` `/flush` `/dream` `/remember` | Memory (default oft aus; `/flush`/`/dream`/`/memory` brauchen Opt-in – Kap. 12; `/remember` oft auch ohne) |
| `/hooks` `/plugins` `/marketplace` `/skills` `/mcps` | Extensions |
| `/config-agents` `/personas` | Agents |
| `/doctor` | Diagnose |
| `/goal` `/workflow` `/workflows` | Goals/Workflows |
| `/dashboard` | Agent-Dashboard (Fullscreen) |
| `/deep-research` | Background-Research-Workflow |
| `/loop` | wiederkehrend |
| `/btw` | Side-Question |
| `/create-skill` | Skill bauen |
| `/login` `/logout` `/usage` | Account |
| `/login` `/logout` `/usage` `/privacy` | Account |
| `/import-claude` | Claude-Settings importieren |
| `/imagine` `/imagine-video` | Media Generation |
| `/settings` `/theme` | UI |
| `/copy` `/export` | Export |
| `/minimal` `/fullscreen` `/vim-mode` | Render/Nav |
| `/tutorial` `/docs` | Hilfe |
Skills mit `user-invocable: true` → `/skill-name`. Qualifiziert: `/user:name`, `/repo:name`, `/plugin:name`.
Skills mit `user-invocable: true` → `/skill-name`. Qualifiziert: `/local:name`, `/repo:name`, `/user:name`, oder `/<plugin-name>:skill`.
---
@@ -166,13 +172,15 @@ Skills mit `user-invocable: true` → `/skill-name`. Qualifiziert: `/user:name`,
```bash
# Headless
grok -p "prompt"
grok -p "…" --output-format json|plain|streaming-json
grok -p "…" --output-format plain|json|streaming-json|streaming-messages-json
# partial deltas nur mit streaming-messages-json:
# --include-partial-messages
grok -p "…" --tools "read_file,grep,list_dir"
grok -p "…" --disallowed-tools "Agent,web_search"
grok -p "…" --max-turns 30
grok -p --prompt-file ./p.txt
# ACP
# ACP (Deny/Allow: [permission] in config – nicht als agent-CLI-Flag)
grok agent --always-approve stdio
grok agent --always-approve serve --bind 127.0.0.1:2419 --secret TOKEN
```
@@ -233,6 +241,8 @@ Kapitel 5–6.
grok mcp list
grok mcp add filesystem -- npx -y @modelcontextprotocol/server-filesystem ./docs
grok mcp add --transport http name https://… --header "Authorization: Bearer ${TOKEN}"
grok mcp enable name
grok mcp disable name
grok mcp doctor
grok mcp remove name
```
@@ -279,6 +289,7 @@ Kapitel 16.
| Regeln greifen nicht | `grok inspect`, CWD |
| Kontext drift | `/compact` hint / `/new` |
| MCP tot | doctor, trust, enable |
| `.env` im Kontext | Deny `Read(**/.env)` (+ absolute Forms) |
| Keys tot in tmux | `/doctor`, `Ctrl+X` |
Voll: Kapitel 16.6.
@@ -290,7 +301,12 @@ Voll: Kapitel 16.6.
| Pfad | Inhalt |
|------|--------|
| [`vorlagen/AGENTS.md.minimal.md`](vorlagen/AGENTS.md.minimal.md) | Minimal-Regeln |
| [`vorlagen/config.toml.beispiel.toml`](vorlagen/config.toml.beispiel.toml) | Config-Skizze |
| [`vorlagen/AGENTS.md.team.md`](vorlagen/AGENTS.md.team.md) | Team-Baseline |
| [`vorlagen/config.toml.beispiel.toml`](vorlagen/config.toml.beispiel.toml) | Config-Skizze (User/Project) |
| [`vorlagen/config.permissions.toml`](vorlagen/config.permissions.toml) | Permissions-Minimum |
| [`vorlagen/config.mcp.toml`](vorlagen/config.mcp.toml) | MCP-Snippets |
| [`vorlagen/PLAN.md.skeleton.md`](vorlagen/PLAN.md.skeleton.md) | Plan-Skeleton |
| [`vorlagen/hooks/`](vorlagen/hooks/), [`vorlagen/skills/`](vorlagen/skills/), [`vorlagen/plugins/`](vorlagen/plugins/) | Hooks, Verify, Plugin-Baseline |
| [`beispiele/`](beispiele/) | Mitmach-Index |
| [`ADAPTIONEN.md`](ADAPTIONEN.md) | Schwesterprojekt-Mapping |
+80 -30
View File
@@ -1,12 +1,17 @@
# ADAPTIONEN – Schwesterprojekt `../ki-claude` → `ki-grok`
# ADAPTIONEN – Schwesterprojekte → `ki-grok`
Dieses Dokument hält fest, was aus dem Claude-Code-Buch (**Der Claude-Code-Harness**, `../ki-claude`) übernommen und was für **Grok Build** bewusst angepasst wurde. Ziel: beide Bücher bleiben als Schwesterprojekte erkennbar, ohne Produktgrenzen zu verwischen.
Dieses Dokument hält fest, was aus den Schwesterbüchern übernommen und was für **Grok Build** bewusst angepasst wurde. Ziel: die Bücher bleiben als Familie erkennbar, ohne Produktgrenzen zu verwischen.
Stand der Adaption: **Juli 2026**.
| Quelle | Titel (kurz) |
|--------|----------------|
| `../ki-claude` | Der Claude-Code-Harness |
| `../ki-codex` | Der Codex-Harness |
Stand der Adaption: **August 2026**.
---
## 1. Übernommen (1:1 oder nur umbenannt)
## 1. Übernommen aus `ki-claude` (1:1 oder nur umbenannt)
### Struktur und Build
@@ -34,7 +39,7 @@ Stand der Adaption: **Juli 2026**.
| Platzhalter `YOUR_TOKEN`, `your-project` | ja |
| Mindestens 2–3 konkrete Beispiele pro Kapitel | ja (Ziel; ab gefüllten Kapiteln) |
### Autoren-Harness
### Autoren-Harness (Claude-Linie)
| Element | Übernahme |
|---------|-----------|
@@ -47,7 +52,52 @@ Stand der Adaption: **Juli 2026**.
---
## 2. Bewusst angepasst
## 2. Übernommen aus `ki-codex` (August 2026)
Harness- und Vorlagen-Dichte aus dem Codex-Buch, **Keys und Terminologie Grok-nativ**.
### Autoren-Harness
| Element | Übernahme / Anpassung |
|---------|------------------------|
| Skill `humanizer` + Marker-Katalog | ja – Kapitel 00–18, Grok-Terminologie; **kein** Vergleichs-Verbot (Kap. 17 ist Curriculum) |
| Skill + Command `update-pics` | ja – Drop-Zone **`bilder/`** + `scripts/convert_illustrations.py` (Codex: `pics/` + eigenes Skript) |
| AGENTS: Skills/Commands-Liste, Vier Hebel | ja – Hebel Grok-formuliert (Permissions / Always-approve) |
| AGENTS: Schwesterprojekte | `ki-claude` **und** `ki-codex` |
| Schreibregeln: Abschnitt **Reprise** | ja – max. 2–3 Signale/Kapitel; Kap. 18 Lookup ohne Brücken |
| Root-`.gitignore` Python-Caches | `*.pyc`, egg-info, pytest/ruff-Caches |
| justfile `_resource_path` | ja (ohne Codex-Screenshots-Pfad) |
| `pdf-bauen` QA-Text | an `check_pdf.py` angeglichen (40–280; Keywords AGENTS.md / config.toml) |
### Leser-Vorlagen (Parität, Grok-Syntax)
| Codex-Vorlage | Grok-Pendant |
|---------------|--------------|
| `AGENTS.md.team.md` | `vorlagen/AGENTS.md.team.md` |
| `config.permissions.toml` | `vorlagen/config.permissions.toml` (`[permission]`) |
| `config.mcp.toml` | `vorlagen/config.mcp.toml` (`[mcp_servers.*]`) |
| Hooks Guard/Format | `vorlagen/hooks/*.example.json` + `scripts/` (jq/decision-JSON) |
| `PLAN.md.skeleton.md` | `vorlagen/PLAN.md.skeleton.md` |
| `skills/verify`, `agents/security-reviewer` | `vorlagen/skills/`, `vorlagen/agents/` |
| `plugins/team-baseline` | `vorlagen/plugins/team-baseline/` (validate-Hinweis) |
| `user/AGENTS.md` | `vorlagen/user/` (Pfad `~/.grok/`, nicht `~/.codex/`) |
| `beispiele/configs/config.repo…` | `beispiele/configs/config.project.beispiel.toml` |
`vorlagen/config.toml.beispiel.toml` war schema-falsch (`[[mcp.servers]]`, `model =`) und wurde an Kap. 14 / User-Guide korrigiert.
### Bewusst **nicht** aus Codex
| Codex-Element | Grund |
|---------------|--------|
| `sandbox_mode` / `approval_policy` | Grok: `permission_mode`, `sandbox.toml`, `[permission]` |
| Screenshot-Capture-Pipeline | kein SCREEN-Inventar in diesem Buch |
| Verbot Feature-Vergleiche | Kapitel 17 ist Teil des Curriculums |
| Drop-Zone `pics/` | Kanon hier: `bilder/` |
| todo-cli ersetzen | Grok-`beispiele/todo-cli/` inkl. `.grok/` ist vollständiger |
---
## 3. Bewusst angepasst (Curriculum & Produkt)
### Kapitel-Curriculum
@@ -59,13 +109,13 @@ Stand der Adaption: **Juli 2026**.
### Produkt-Terminologie
| Claude-Welt | Grok-Welt |
|-------------|-----------|
| Claude Code | **Grok Build** (`grok`) |
| `CLAUDE.md` (Leser-Kerndatei) | **`AGENTS.md`** (+ Nested Rules, optional `CLAUDE.md`-Kompatibilität) |
| `settings.json` | **`config.toml`** (`~/.grok/config.toml`) |
| Workspace Trust / allow-deny-ask (Claude-Modell) | Permissions, Sandbox, Modes (Normal / Plan / Always-approve) – **Grok-Modell** |
| Surfaces: Terminal, IDE, Desktop, Web | Surfaces: **TUI**, **Headless** (`grok -p`), **ACP** (`grok agent`) |
| Claude-Welt | Codex-Welt (Auszug) | Grok-Welt |
|-------------|---------------------|-----------|
| Claude Code | OpenAI Codex / `codex` | **Grok Build** (`grok`) |
| `CLAUDE.md` (Leser-Kerndatei) | `AGENTS.md` | **`AGENTS.md`** (+ Nested Rules, optional `CLAUDE.md`-Kompatibilität) |
| `settings.json` | `config.toml` (Sandbox/Approvals) | **`config.toml`** (`~/.grok/`, Project `.grok/`) |
| allow-deny-ask | sandbox × approval_policy | Permissions, Sandbox, Modes (Normal / Plan / Always-approve) |
| Surfaces: Terminal, IDE, Desktop, Web | CLI, IDE, App/Web, Cloud | **TUI**, **Headless** (`grok -p`), **ACP** (`grok agent`) |
### Strukturelle Abweichungen vom User-Rohentwurf
@@ -77,26 +127,25 @@ Der Auftrag nannte u. a. `book/` und `examples/`. Zugunsten der Schwesterproje
### PDF-Metadaten
| | Claude | Grok |
|-|--------|------|
| Dateiname | `dist/claude-code-harness.pdf` | `dist/grok-build-praxisleitfaden.pdf` |
| Titel | Der Claude-Code-Harness | Grok Build – Der umfassende Praxisleitfaden |
| Soft-Seitenzahl QA | 30–120 | 40–280 (19 Kapitel) |
| | Claude | Codex | Grok |
|-|--------|-------|------|
| Dateiname | `dist/claude-code-harness.pdf` | `dist/codex-harness.pdf` | `dist/grok-build-praxisleitfaden.pdf` |
| Soft-Seitenzahl QA | 30–120 | ähnlich schlank | 40–280 (19 Kapitel) |
### Was (noch) nicht mitgenommen wurde
| Element im Claude-Buch | Status hier |
|------------------------|-------------|
| Vollständiges `beispiele/todo-cli/` inkl. App-Code | später (Phase 2+); vorerst Index + Vorlagen |
| Illustrationen unter `assets/illustrations/` + `prompts/gemini/` | **übernommen (Grok-Inventar)** — siehe `abbildungen.md`; Assets nach Gemini-Generierung |
| `.claude/` Autoren-Settings/Hooks | optional dual; Phase 1 fokussiert `.grok/` |
| Element | Status hier |
|---------|-------------|
| Vollständiges `beispiele/todo-cli/` inkl. App-Code + `.grok/` | **vorhanden** (reicher als Codex-Minimal) |
| Illustrationen unter `assets/illustrations/` + `prompts/gemini/` | Inventar + Prompts; Assets nach Gemini → `bilder/` → convert |
| Screenshot-Pipeline à la Codex | optional später; nicht im Scope der Codex-Config-Übernahme |
| Abbildungskatalog `abbildungen.md` | **vorhanden** (24 Figuren + Cover; 22 im Body) |
---
## 3. Faktenquellen (Grok Build)
## 4. Faktenquellen (Grok Build)
Primär für Manuskript-Fakten (Stand Juli 2026):
Primär für Manuskript-Fakten (Stand Juli–Aug 2026, CLI **0.2.x**):
- Lokaler User-Guide: `~/.grok/docs/user-guide/` (Getting Started, Auth, TUI, Plan Mode, Subagents, MCP, Skills, Hooks, Headless, ACP, Sandbox, Permissions, …)
- CLI: `grok --version`, `grok update`, `grok -p`, `grok agent`
@@ -106,19 +155,20 @@ Keine erfundenen Slash-Commands oder Config-Keys. Bei UI-Drift: Stand des Buchs
---
## 4. Kurz-Checkliste für künftige Kapitel
## 5. Kurz-Checkliste für künftige Kapitel
Wenn du ein neues Kapitel schreibst oder lektorierst:
1. Ton und Callouts wie `../ki-claude` / `.grok/rules/schreibkonventionen.md`
2. Grok-Terminologie aus `AGENTS.md` (nicht Claude-Jargon mischen)
1. Ton und Callouts wie Schwesterprojekte / `.grok/rules/schreibkonventionen.md`
2. Grok-Terminologie aus `AGENTS.md` (nicht Claude-/Codex-Jargon mischen – außer Kap. 17)
3. ≥ 2–3 Sessions/Configs/Prompts, wo das Feature es hergibt
4. Querverweise auf Kapitelnummern **dieses** Buchs (00–18)
5. Nach größeren Blöcken: Checkliste, häufige Fehler, „So baust du das nach“
6. Keine Secrets; Platzhalter
7. Reprise der Vier Hebel nur am Gelenk (max. 2–3 / Kapitel)
---
## 5. Schwesterprojekt-Hinweis für Leser
## 6. Schwesterprojekt-Hinweis für Leser
Beide Bücher teilen denselben **Lese- und Autoren-Stil**. Wer `ki-claude` kennt, findet in `ki-grok` dieselben Kästen, denselben Abschluss-Rhythmus und dieselbe PDF-Pipeline – mit einem anderen Agenten und einem feiner aufgespaltenen Inhaltsverzeichnis.
Die Bücher teilen denselben **Lese- und Autoren-Stil**. Wer `ki-claude` oder `ki-codex` kennt, findet in `ki-grok` dieselben Kästen, denselben Abschluss-Rhythmus und dieselbe PDF-Pipeline – mit einem anderen Agenten und (gegenüber Claude) einem feiner aufgespaltenen Inhaltsverzeichnis.
+15 -3
View File
@@ -10,7 +10,7 @@ Projekt-Regeln für Coding-Agents. Karpathy-Prinzipien, adaptiert auf ein deutsc
- Annahmen explizit machen. Bei Unsicherheit: **nachfragen**.
- Fakten zu Grok Build: User-Guide (`~/.grok/docs/user-guide/`), CLI und dieses Repo – **nicht raten**.
- Bei Versionsangaben: Stand des Buchs (**Juli / Mitte 2026**) nennen; UI-Details können driftieren.
- Bei Versionsangaben: Stand des Buchs (**Juli–Aug 2026**, CLI **0.2.x**) nennen; UI-Details können driftieren.
## 2. Einfachheit zuerst
@@ -23,6 +23,7 @@ Projekt-Regeln für Coding-Agents. Karpathy-Prinzipien, adaptiert auf ein deutsc
- Nur anfassen, was der Task verlangt.
- Bestehenden Ton treffen: erfahrener Kollege, präzise, geduldig.
- Beispiel-Configs und Terminal-Sessions lauffähig und kommentiert halten.
- Platzhalter statt Secrets: `YOUR_TOKEN`, `your-project`, `xai-…`.
## 4. Zielgetrieben
@@ -40,10 +41,14 @@ Projekt-Regeln für Coding-Agents. Karpathy-Prinzipien, adaptiert auf ein deutsc
**Ton:** erfahrener Kollege – präzise, geduldig, ohne Hype. Wenn etwas riskant ist, steht das da.
**Schwesterprojekt:** `../ki-claude` (Claude Code). Stil und Pipeline konsistent halten; Produktlogik nicht vermischen. Siehe `ADAPTIONEN.md`.
**Schwesterprojekte:** `../ki-claude` (Claude Code), `../ki-codex` (Codex-Harness). Stil und Pipeline konsistent halten; **Produktlogik nicht vermischen**. Siehe `ADAPTIONEN.md`.
**Autoren-Harness vs. Leser-Vorlagen:** Root-`AGENTS.md` / `CLAUDE.md` / `.grok/` steuern **Agenten, die am Buch arbeiten**. `vorlagen/` und `beispiele/` sind **Content für Leser** – nicht mit dem Autoren-Harness vermischen.
**Autoren-Skills (`.grok/skills/`):** `pdf-bauen`, `lektorat`, `kapitel-review`, `humanizer`, `update-pics`. Slash-Commands: `.grok/commands/` (`/pdf`, `/lektorat`, `/review`, `/status`, `/update-pics`). Schreib- und Build-Details: `.grok/rules/`.
**Intern (nicht Manuskript):** `prompts/` ist Autoren-Material.
### Source of Truth (editieren)
| Pfad | Rolle | Agent-Hinweis |
@@ -117,6 +122,13 @@ PDF nur bauen, wenn der Task es verlangt (nach inhaltlichen Änderungen oder exp
| Headless | `grok -p` / nicht-interaktive Läufe |
| ACP | Agent Client Protocol – IDE/Server-Modus (`grok agent`) |
### Vier Hebel (max. 2–3 Reprisen pro Kapitel, am Gelenk)
1. Scope eng halten
2. Diff lesen vor Merge/Commit
3. Enge Permissions / Deny **vor** Always-approve
4. Weich (`AGENTS.md`) vs. hart (`[permission]`, Hooks, Sandbox)
### Nicht ohne Auftrag anfassen
- `pdf/templates/*`, `pdf/filters/*`, `pdf/styles/*` (Layout-Pipeline)
@@ -128,7 +140,7 @@ PDF nur bauen, wenn der Task es verlangt (nach inhaltlichen Änderungen oder exp
- Primärquelle: `~/.grok/docs/user-guide/` und aktuelle CLI-Hilfe
- Keine erfundenen Slash-Commands, TOML-Keys oder CLI-Flags
- Bei Unsicherheit: Unsicherheit benennen und Stand des Buchs (Juli 2026) angeben
- Bei Unsicherheit: Unsicherheit benennen und Stand des Buchs (Juli–Aug 2026) angeben
- Keine Secrets in Beispielen; Platzhalter `YOUR_TOKEN`, `your-project`, `xai-…`
---
+3 -3
View File
@@ -2,7 +2,7 @@
This file provides guidance to Claude Code (and compatible agents) when working in this repository.
Dies ist ein **deutschsprachiges Praxisbuch** über Grok Build – kein App-Stack. Prinzipien und Qualitätsregeln: `AGENTS.md`. Adaptionen aus dem Schwesterprojekt: `ADAPTIONEN.md`.
Dies ist ein **deutschsprachiges Praxisbuch** über Grok Build – kein App-Stack. Prinzipien und Qualitätsregeln: `AGENTS.md`. Adaptionen aus den Schwesterprojekten (`ki-claude`, `ki-codex`): `ADAPTIONEN.md`.
## Build & QA
@@ -46,9 +46,9 @@ PDF nur bauen, wenn der Task es verlangt. Nach dem Build bei Bedarf `just qa`.
## Agent notes
- Bei Unklarheit: nachfragen statt raten. Fakten: `~/.grok/docs/user-guide/` + dieses Repo.
- Stand der Fakten im Buch: **Juli / Mitte 2026** – UI-Labels können driften.
- Stand der Fakten im Buch: **Juli–Aug 2026** (CLI **0.2.x**) – UI-Labels können driften.
- Chirurgische Edits: nur Task-relevante Stellen; Ton „erfahrener Kollege“.
- Keine erfundenen npm/poetry/React-Stacks für dieses Repo.
- `pdf/templates/*`, `pdf/filters/*`, `pdf/styles/*` nur bei explizitem Auftrag.
- Plan vor größeren Mehrdatei-Änderungen; Erfolgskriterien prüfbar formulieren.
- Details: `.grok/rules/`; Skills für PDF/Lektorat/Review.
- Details: `.grok/rules/`; Skills: `pdf-bauen`, `lektorat`, `kapitel-review`, `humanizer`, `update-pics`.
+11 -4
View File
@@ -2,7 +2,7 @@
**Titel:** *Grok Build – Der umfassende Praxisleitfaden. Der Coding-Agent von xAI richtig einsetzen*
Praxisbuch (Deutsch) über **Grok Build**: den Coding-Agenten von xAI/SpaceXAI – interaktive TUI, Headless/CI, ACP und die Steuerknöpfe drumherum (Plan Mode, Subagents, Worktrees, `AGENTS.md`, Skills, MCP, Permissions). Stand der Fakten: **Juli / Mitte 2026**.
Praxisbuch (Deutsch) über **Grok Build**: den Coding-Agenten von xAI/SpaceXAI – interaktive TUI, Headless/CI, ACP und die Steuerknöpfe drumherum (Plan Mode, Subagents, Worktrees, `AGENTS.md`, Skills, MCP, Permissions). Stand der Fakten: **Juli–Aug 2026** (CLI **0.2.x**).
Stil: klar, unaufgeregt, praxisnah – analog zum Schwesterprojekt [`../ki-claude`](../ki-claude) (*Der Claude-Code-Harness*). Kein Marketing, keine leeren Versprechen. Konzepte → Sessions → nachbaubare Configs.
@@ -78,10 +78,17 @@ Illustrationen: Katalog und Workflow in [`abbildungen.md`](abbildungen.md); Prom
| Pfad | Inhalt |
|------|--------|
| [`vorlagen/AGENTS.md.minimal.md`](vorlagen/AGENTS.md.minimal.md) | Minimale Projekt-AGENTS.md |
| [`vorlagen/config.toml.beispiel.toml`](vorlagen/config.toml.beispiel.toml) | Beispiel-Ausschnitte für `config.toml` |
| [`vorlagen/AGENTS.md.team.md`](vorlagen/AGENTS.md.team.md) | Team-Baseline-AGENTS.md |
| [`vorlagen/config.toml.beispiel.toml`](vorlagen/config.toml.beispiel.toml) | User/Project-Config-Ausschnitte |
| [`vorlagen/config.permissions.toml`](vorlagen/config.permissions.toml) | `[permission]` Allow/Deny-Minimum |
| [`vorlagen/config.mcp.toml`](vorlagen/config.mcp.toml) | MCP-Server-Skizzen (`[mcp_servers.*]`) |
| [`vorlagen/PLAN.md.skeleton.md`](vorlagen/PLAN.md.skeleton.md) | Plan-Mode-Skeleton |
| [`vorlagen/hooks/`](vorlagen/hooks/) | Hook-JSON + Scripts (Guard, Format) |
| [`vorlagen/skills/`](vorlagen/skills/), [`vorlagen/agents/`](vorlagen/agents/), [`vorlagen/plugins/`](vorlagen/plugins/) | Verify-Skill, Security-Agent, Plugin-Baseline |
| [`vorlagen/user/`](vorlagen/user/) | Persönliche User-AGENTS-Skizze |
| [`beispiele/`](beispiele/) | Index der Mitmach-Beispiele |
| [`beispiele/todo-cli/`](beispiele/todo-cli/) | Mini-Python-CLI inkl. `AGENTS.md` und `.grok/`-Harness |
| [`beispiele/configs/`](beispiele/configs/) | GHA-Review-Gerüst, MCP-Snippets |
| [`beispiele/configs/`](beispiele/configs/) | GHA-Review, Project-Config, MCP-Snippets |
---
@@ -100,7 +107,7 @@ Illustrationen: Katalog und Workflow in [`abbildungen.md`](abbildungen.md); Prom
## Quellen und Aktualität
Primärquelle: Grok-Build-User-Guide (lokal unter `~/.grok/docs/user-guide/`) und die CLI-Hilfe.
Installationswege, Config-Keys und Slash-Commands können sich mit Releases ändern. Bei Abweichungen gilt die aktuelle Doku; dieses Buch nennt den **Stand Juli 2026** und erklärt die stabilen Konzepte dahinter.
Installationswege, Config-Keys und Slash-Commands können sich mit Releases ändern. Bei Abweichungen gilt die aktuelle Doku; dieses Buch nennt den **Stand Juli–Aug 2026** und erklärt die stabilen Konzepte dahinter.
Übernahmen aus dem Claude-Code-Schwesterprojekt: [`ADAPTIONEN.md`](ADAPTIONEN.md).
+1 -1
View File
@@ -5,7 +5,7 @@ Mitmach-Material zum Buch *Grok Build – Der umfassende Praxisleitfaden*.
| Pfad | Inhalt | Status |
|------|--------|--------|
| [`todo-cli/`](todo-cli/) | Mini-Python-CLI inkl. `AGENTS.md`, `.grok/` (config, rules, skill, hooks) | bereit |
| [`configs/`](configs/) | Headless/CI- und MCP-Gerüste | wachsend |
| [`configs/`](configs/) | Headless/CI, Project-config, MCP-Gerüste | wachsend |
## Schnellstart todo-cli
@@ -0,0 +1,24 @@
# Beispiel: Project .grok/config.toml (nach Folder-Trust).
# Team-commitbar. Keine Secrets. Stand: Juli–Aug 2026.
[permission]
allow = [
"Bash(pytest *)",
"Bash(ruff *)",
"Bash(git status *)",
"Bash(git diff *)",
]
deny = [
"Bash(rm -rf *)",
"Bash(curl *)",
"Bash(wget *)",
"Read(**/.env)",
"Read(**/.env.*)",
"Read(**/secrets/**)",
]
# Optional MCP nur project-scoped (ersetzt User-Server gleichen Namens):
# [mcp_servers.docs-fs]
# command = "npx"
# args = ["-y", "@modelcontextprotocol/server-filesystem", "./docs"]
# enabled = true
Binary file not shown.
+6 -3
View File
@@ -5,6 +5,9 @@
default: pdf
# resource-path: illustrations + cover (+ content roots)
_resource_path := ".:beispiele:vorlagen:assets:assets/illustrations:assets/cover"
assemble:
@python3 scripts/assemble_book.py
@@ -17,7 +20,7 @@ pdf-styled: assemble
-H pdf/styles/guide-colors.tex \
--metadata-file=pdf/metadata.yaml \
--lua-filter=pdf/filters/tables.lua \
--resource-path=.:beispiele:vorlagen:assets:assets/illustrations:assets/cover \
--resource-path={{_resource_path}} \
-V lang=de-DE \
-V papersize=a4 \
-V colorlinks \
@@ -34,7 +37,7 @@ pdf-draft: assemble
-H pdf/styles/guide-colors.tex \
--metadata-file=pdf/metadata.yaml \
--lua-filter=pdf/filters/tables.lua \
--resource-path=.:beispiele:vorlagen:assets:assets/illustrations:assets/cover \
--resource-path={{_resource_path}} \
-V lang=de-DE \
-V papersize=a4 \
-V colorlinks \
@@ -50,7 +53,7 @@ pdf-plain: assemble
-V lang=de-DE \
-V papersize=a4 \
--lua-filter=pdf/filters/tables.lua \
--resource-path=.:beispiele:vorlagen:assets:assets/illustrations:assets/cover \
--resource-path={{_resource_path}} \
--toc \
-o dist/grok-build-praxisleitfaden-plain.pdf
+36
View File
@@ -0,0 +1,36 @@
# Team baseline — AGENTS.md
## Stack & conventions
- (Sprache, Package-Manager, Branch-Strategie)
- Public APIs dokumentieren, wenn Verhalten ändert
## Build & Test
- `…` install
- `…` test
- `…` lint
## Always
- Scope eng halten; Multi-File nur mit Plan Mode (`/plan`), wenn Architektur unklar
- Diff und Tests vor PR
- Secrets nie committen
## Never
- Force-push auf shared branches
- Production credentials im Workspace für den Agent
- Always-approve / YOLO in geteilten oder sensiblen Repos ohne Team-Policy
- Auto-merge ohne menschliche Review
## Code Review Rules
### Secrets and config
- Flag hardcoded credentials, API keys, and private URLs in diffs.
Safe path: env vars / secret manager; document required keys in README without values.
### Scope
- Prefer small, reviewable diffs; no drive-by refactors outside the task.
+38
View File
@@ -0,0 +1,38 @@
# Plan: <!-- kurzer Feature-Titel -->
**Status:** draft | approved | done
**Session:** <!-- optional Session-ID oder Datum -->
## Ziel
<!-- Ein Absatz: was soll am Ende wahr sein? -->
## Nicht-Ziele
- …
## Schritte
1. [ ] Explore: …
2. [ ] Tests/Contract: …
3. [ ] Implementierung: …
4. [ ] Verify: …
5. [ ] Diff + Commit-Message-Entwurf: …
## Betroffene Dateien
| Pfad | Änderung |
|------|----------|
| | |
## Risiken
| Risiko | Mitigierung |
|--------|-------------|
| | Diff lesen; enge Permissions / Deny |
## Done when
- [ ] Tests grün
- [ ] Keine Secrets im Diff
- [ ] Kurze Zusammenfassung für Reviewer
+20
View File
@@ -0,0 +1,20 @@
---
name: security-reviewer
description: Read-only security pass for diffs. Use before merge.
---
# Security reviewer
You review changes only. Do not edit files.
## Focus
- Hardcoded secrets, tokens, private URLs
- Path traversal or unexpected file writes
- Shell injection if args reach subprocesses
- Destructive operations in scripts/hooks
- Over-broad permission allow rules
## Output
Severity-ordered findings with file:line. If clean, say so explicitly.
+26
View File
@@ -0,0 +1,26 @@
# MCP-Server-Beispiele für ~/.grok/config.toml oder trusted .grok/config.toml
# Schema: [mcp_servers.<name>] — nicht [[mcp.servers]]
# Secrets nur als ${VAR} / Env, nie committen.
# CLI-Alternative: grok mcp add … / grok mcp list
# Stand: Juli–Aug 2026 — Keys bei Drift im User-Guide MCP prüfen.
# stdio (lokaler Prozess)
# [mcp_servers.filesystem]
# command = "npx"
# args = ["-y", "@modelcontextprotocol/server-filesystem", "/absolute/path"]
# enabled = true
# startup_timeout_sec = 120
# [mcp_servers.github]
# command = "npx"
# args = ["-y", "@modelcontextprotocol/server-github"]
# env = { GITHUB_PERSONAL_ACCESS_TOKEN = "${GITHUB_TOKEN}" }
# HTTP / remote
# [mcp_servers.example_remote]
# url = "https://example.com/mcp"
# headers = { Authorization = "Bearer ${YOUR_TOKEN}" }
# Tool-Result-Größe (optional)
# [mcp]
# max_output_bytes = 40000
+32
View File
@@ -0,0 +1,32 @@
# Enge Permission-Baseline für Project- oder User-Config.
# Primär: .grok/config.toml (team-commitbar) oder ~/.grok/config.toml
# Stand: Juli–Aug 2026 — Pattern gegen aktuelle Doku prüfen.
#
# Deny schlägt Allow und greift auch unter always-approve (siehe Kapitel 13).
[permission]
allow = [
"Bash(pytest *)",
"Bash(python -m pytest *)",
"Bash(python3 -m pytest *)",
"Bash(ruff *)",
"Bash(git status *)",
"Bash(git diff *)",
"Bash(git log *)",
"Bash(git branch *)",
]
deny = [
"Bash(rm -rf *)",
"Bash(curl *)",
"Bash(wget *)",
"Bash(git push --force *)",
"Bash(git push -f *)",
"Read(**/.env)",
"Read(**/.env.*)",
"Read(**/secrets/**)",
]
# Optional UI-Default (meist user-global in ~/.grok/config.toml):
# [ui]
# permission_mode = "ask"
# default_selected_permission = "allow_once"
+96 -13
View File
@@ -1,20 +1,103 @@
# Beispiel-Ausschnitte — ~./.grok/config.toml oder projektspezifische Config
# Keine echten Secrets. Stand: Juli 2026 (Keys können mit Releases driften).
# Beispiel-Ausschnitte — ~/.grok/config.toml (User) bzw. team-sharebare
# Teile in <repo>/.grok/config.toml (Project: vor allem MCP, Plugins, permission).
#
# Keine echten Secrets. Stand: Juli–Aug 2026 (CLI 0.2.x) — Keys können driften.
# Source of Truth: grok models / User-Guide Configuration; nur Overrides setzen.
# Modell (Beispiel — verfügbare IDs in der CLI / Doku prüfen)
# model = "grok-4"
# ---------------------------------------------------------------------------
# User-global (häufig in ~/.grok/config.toml)
# ---------------------------------------------------------------------------
# Memory (falls genutzt)
# [memory]
[cli]
# auto_update = true
[models]
# default = "grok-4.5" # grok models = Source of Truth
# web_search = "grok-4.5"
[ui]
# permission_mode = "ask" # ask | auto | always-approve | …
# default_selected_permission = "allow_once" # sicherer Start der Prompt-Zeile
# remember_tool_approvals = false
# simple_mode = true
# vim_mode = false
# screen_mode = "fullscreen" # oder minimal
# show_thinking_blocks = true
[features]
# telemetry = false
# codebase_indexing = true
# remote_fetch = true # false in air-gap
# lsp_tools = false
[session]
# auto_compact_threshold_percent = 85
# load_envrc = true
[tools]
# respect_gitignore = false
[memory]
# enabled = false
[subagents]
# enabled = true
# Subagents
# [subagents]
# enabled = true
# Fremde Claude-/Cursor-Skills/MCP still abschalten (wenn sie spuken):
# [compat.claude]
# skills = false
# rules = false
# hooks = false
# mcps = false
#
# [compat.cursor]
# skills = false
# rules = false
# hooks = false
# mcps = false
# MCP-Server (Beispiel-Struktur — konkrete Keys der aktuellen Doku entnehmen)
# [[mcp.servers]]
# name = "github"
# ---------------------------------------------------------------------------
# MCP — Schema: [mcp_servers.<name>] (NICHT [[mcp.servers]])
# User: ~/.grok/config.toml · Project: .grok/config.toml (nach Folder-Trust)
# Secrets als ${VAR}, nie hardcoded committen. Details: vorlagen/config.mcp.toml
# ---------------------------------------------------------------------------
# [mcp_servers.github]
# command = "npx"
# args = ["-y", "@modelcontextprotocol/server-github"]
# env = { GITHUB_PERSONAL_ACCESS_TOKEN = "YOUR_TOKEN" }
# env = { GITHUB_PERSONAL_ACCESS_TOKEN = "${GITHUB_TOKEN}" }
# enabled = true
# startup_timeout_sec = 120
# [mcp]
# max_output_bytes = 40000
# ---------------------------------------------------------------------------
# Permissions — oft project-commitbar in .grok/config.toml
# Siehe vorlagen/config.permissions.toml und Kapitel 13
# ---------------------------------------------------------------------------
# [permission]
# allow = [
# "Bash(pytest *)",
# "Bash(git status *)",
# "Bash(git diff *)",
# ]
# deny = [
# "Bash(rm -rf *)",
# "Bash(curl *)",
# "Bash(wget *)",
# "Read(**/.env)",
# "Read(**/.env.*)",
# "Read(**/secrets/**)",
# ]
# ---------------------------------------------------------------------------
# Hooks in TOML (additiv zu ~/.grok/hooks/*.json und .grok/hooks/)
# ---------------------------------------------------------------------------
# [[hooks.PreToolUse]]
# matcher = "Bash|run_terminal_command"
# hooks = [
# { type = "command", command = "/opt/guard/pretooluse.sh", timeout = 10 },
# ]
@@ -0,0 +1,17 @@
{
"description": "Beispiel: nach Edit/Write Python mit ruff formatten (PostToolUse).",
"hooks": {
"PostToolUse": [
{
"matcher": "Edit|Write|search_replace",
"hooks": [
{
"type": "command",
"command": "scripts/format-py.sh",
"timeout": 60
}
]
}
]
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"description": "Beispiel: destruktives rm vor der Ausführung blocken (PreToolUse).",
"hooks": {
"PreToolUse": [
{
"matcher": "Bash|run_terminal_command",
"hooks": [
{
"type": "command",
"command": "scripts/block-rm.sh",
"timeout": 10
}
]
}
]
}
}
+17
View File
@@ -0,0 +1,17 @@
#!/usr/bin/env bash
# PreToolUse-Guard: blockiert destruktive rm-Aufrufe (Vorlage).
# Erwartet Grok-Hook-JSON auf stdin. Benötigt: jq.
# Defense in depth: [permission] deny bleibt die härtere Policy-Zeile.
set -euo pipefail
INPUT=$(cat)
COMMAND=$(echo "$INPUT" | jq -r '.toolInput.command // .tool_input.command // empty')
if echo "$COMMAND" | grep -Eq 'rm[[:space:]]+(-[a-zA-Z]*f|-[a-zA-Z]*r)'; then
jq -n '{
decision: "deny",
reason: "Destructive rm blocked by project hook (template)"
}'
else
jq -n '{decision: "allow"}'
fi
+28
View File
@@ -0,0 +1,28 @@
#!/usr/bin/env bash
# PostToolUse: formatiert die editierte Python-Datei (Vorlage).
# Erwartet Grok-Hook-JSON auf stdin. Benötigt: jq; optional ruff.
set -euo pipefail
INPUT=$(cat)
FILE=$(echo "$INPUT" | jq -r '
.toolInput.file_path
// .toolInput.path
// .tool_input.file_path
// .tool_input.path
// empty
')
if [[ -z "$FILE" || ! -f "$FILE" ]]; then
exit 0
fi
case "$FILE" in
*.py)
if command -v ruff >/dev/null 2>&1; then
ruff format "$FILE" || true
ruff check --fix "$FILE" || true
fi
;;
esac
exit 0
@@ -0,0 +1,12 @@
{
"name": "team-baseline",
"description": "Minimal team baseline: Verify-Skill for lint and unit tests before commit.",
"version": "0.1.0",
"author": {
"name": "your-team",
"email": "devnull@example.com"
},
"license": "MIT",
"keywords": ["verify", "baseline", "team"],
"skills": ["skills/"]
}
@@ -0,0 +1,15 @@
---
name: verify
description: Run lint and unit tests. Use when asked to verify, check tests, or before commit.
---
# Verify (team-baseline plugin)
1. Detect package manager / test runner from the repo (see root `AGENTS.md`).
2. Run lint if available.
3. Run unit tests.
4. Summarize failures with file:line if possible.
5. Do not commit or push unless the user explicitly asked.
Before shipping: `grok plugin validate` on the plugin folder (CLI-Stand prüfen).
Keys and layout may drift with releases — see User-Guide *Plugins*.
+16
View File
@@ -0,0 +1,16 @@
---
name: verify
description: >
Run lint and unit tests for this repository. Use when asked to verify,
check tests, or before commit.
---
# Verify
1. Detect package manager / test runner from the repo (see `AGENTS.md` if present).
2. Run lint if available (e.g. `ruff check .` or `npm run lint`).
3. Run unit tests (e.g. `pytest -q` or `npm test`).
4. Summarize failures with file:line if possible.
5. Do not commit or push unless the user explicitly asked.
If commands fail because dependencies are missing, report the install command and stop.
+17
View File
@@ -0,0 +1,17 @@
# ~/.grok/ — persönliche Defaults (User-AGENTS, falls genutzt)
Kopiere oder merge diesen Inhalt an den Ort, an dem du **user-globale** Agent-Regeln pflegst
(Projekt-`AGENTS.md` im Repo bleibt der team-sichtbare Kompass).
## Working agreements
- Prefer small, reviewable diffs
- Run the project test command after code changes when one exists
- Ask before adding new production dependencies
- Use Plan Mode when architecture or multi-file scope is unclear
## Never (personal)
- Commit secrets or `.env` contents
- Broaden to always-approve without a reason and a deny baseline
- Force-push to shared branches
+8
View File
@@ -0,0 +1,8 @@
# User-Vorlagen
`AGENTS.md` hier ist eine **persönliche** Baseline – nicht die Projekt-`AGENTS.md` im Repo.
Grok liest Projektregeln primär aus dem Working Tree (`AGENTS.md`, Nested Rules unter `.grok/rules/`).
User-Config und Extensions: `~/.grok/config.toml`, `~/.grok/skills/`, `~/.grok/hooks/`.
Anpassen und nur lokal nutzen; keine Secrets in die Datei.