---
type: skill
agent_ready: true
schema_version: 1
bundle_version: "0.28.0"
name: auditor
bundle_skill: true
scope: vault
default_active:
  allgemein: false
  karpathy: true
depends_on:
  - vault-gap-analysis
conflicts_with: []
description: "Wöchentlicher Vault-Auditor nach der Karpathy-Auto-Research-Methode. Prüft den Vault als Gesamtsystem gegen eingefrorene Evals, repariert kleine mechanische Abweichungen innerhalb der Wirehead-Schranke und schreibt strukturelle Befunde als Entwurf zur Diskussion. Einsetzen wenn 'auditor', 'vault prüfen', 'wöchentlicher audit' oder 'zahnräder prüfen' erwähnt wird."
tags:
  - skill
  - second-brain
  - auditor
  - karpathy
  - auto-research
created: 2026-05-16
updated: 2026-05-16
---

# auditor

Der Auditor ist der wöchentliche Systemprüfer in der Karpathy-Compiler-Kette. Er betrachtet den Vault nicht Datei für Datei, sondern als Gesamtsystem: Greifen die Zahnräder noch ineinander oder entstehen tote Skills, Doppelungen, Pflichten ohne Ausführung, verwaiste Zwischenstände?

Er repariert kleine mechanische Befunde selbst (Agent-Ready-Abweichungen auf Einzeldatei-Ebene), strukturelle Befunde gehen als Entwurf zurück an den Nutzer und werden erst nach echter Diskussion aktiviert.

Kein Selbstoptimierer. Ein Prüfer mit klarer Autonomie-Grenze.

## Abhängigkeit von vault-gap-analysis

Der Auditor importiert vier Parser-Helfer aus dem `vault-gap-analysis`-Skill (`parse_frontmatter`, `extract_wikilinks`, `build_link_index`, `tokenize`) über den Bundle-internen Cross-Skill-Resolver. Das Skill `vault-gap-analysis` muss installiert sein, damit `scan.py` läuft. Fehlt es, bricht `scan.py` mit einer klaren Fehlermeldung ab (Exit ≠ 0). Wenn einzelne Helfer fehlen oder keine Funktion exportieren, wird der betroffene Scan-Teilschritt mit einem Hinweis-Log übersprungen statt abzubrechen.

## Arbeitsteilung: deterministisch vs. semantisch

Karpathy-Prinzip: deterministische Aufgaben an Software 1.0, semantische Aufgaben an das Modell.

| Aufgabe | Ausführer |
|---|---|
| Vault-Dateien parsen, Kandidaten sammeln | `scan.py` (deterministisch) |
| Roh-Report aus scan.json rendern | `render-raw-report.py` (deterministisch) |
| Befunde gegen Evals bewerten, klassifizieren | LLM-Judge-Pass — unter Claude Code per Slash-Command `/auditor-judge`, unter Codex die Anweisung aus `.commands/auditor-judge.md` direkt ausführen |
| Mechanisch-kleine Reparaturen ausführen | Claude (LLM), unter Wirehead-Schranke |
| Wöchentlichen Lauf orchestrieren | `weekly_run.py` |

## Wann einsetzen

- Wöchentlich automatisch (Scheduler), typisch Dienstag 20:00 mit Mittwoch-Cutoff 07:00.
- Manuell für Spot-Checks nach größeren Vault-Änderungen.
- Nur Scan ohne Report für Diagnose.

## Ablauf (Ein-Durchlauf)

### Automatisierter Lauf

```bash
python .skills/auditor/weekly_run.py --mode scheduled
```

Orchestriert: Cutoff-Check → `scan.py` → `render-raw-report.py` → Log-Retention.

### Manueller Lauf

```bash
python .skills/auditor/weekly_run.py --mode manual
```

Läuft ohne Cutoff-Check, immer durch.

### Nur Scan

```bash
python .skills/auditor/weekly_run.py --mode scan-only
```

### Judge (Stufe 2) in der Session

```
/auditor-judge
```

Der Judge-Pass liest `evals.json`, `scan.json`, `judge-prompt.md`, `report-template.md` und den Roh-Report, klassifiziert jeden Befund nach der Autonomie-Gabelung und schreibt den klassifizierten Report. Unter Claude Code steht er als Slash-Command `/auditor-judge` bereit (aus `.commands/` gespiegelt); unter Codex gibt es keine Slash-Commands — führe stattdessen die Anweisung aus `.commands/auditor-judge.md` Schritt für Schritt aus.

## Wöchentlichen Lauf einrichten

### Windows Task Scheduler

```xml
schtasks /create /tn "auditor-weekly" /tr "python C:\Pfad\zum\bundle\.skills\auditor\weekly_run.py --mode scheduled" /sc weekly /d TUE /st 20:00
```

### macOS launchd

Beispiel-Plist unter `~/Library/LaunchAgents/auditor-weekly.plist`:

```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key>
  <string>auditor-weekly</string>
  <key>ProgramArguments</key>
  <array>
    <string>/usr/bin/python3</string>
    <string>/Pfad/zum/bundle/.skills/auditor/weekly_run.py</string>
    <string>--mode</string>
    <string>scheduled</string>
  </array>
  <key>StartCalendarInterval</key>
  <dict>
    <key>Weekday</key>
    <integer>2</integer>
    <key>Hour</key>
    <integer>20</integer>
    <key>Minute</key>
    <integer>0</integer>
  </dict>
</dict>
</plist>
```

### Linux cron

```
0 20 * * 2 python /Pfad/zum/bundle/.skills/auditor/weekly_run.py --mode scheduled
```

## Pfade (Bundle-Platzhalter)

Die Pfade werden über den config_loader aus `bundle.json` aufgelöst:

- Reports-Verzeichnis: `{system}/Auditor/reports` (überschreibbar via `paths.reports_dir`)

Skill-eigene Laufzeit-Pfade werden über `_SKILL_DIR` aufgelöst (nicht in der Config):
- `scan.json` = `_SKILL_DIR/scan.json`
- `wirehead-state.json` = `_SKILL_DIR/wirehead-state.json`
- `logs/` = `_SKILL_DIR/logs/`
- `loop-log.md` = `_SKILL_DIR/loop-log.md`

## Feature-Flags

Konfigurierbar in `skill.config.yaml` unter `features:`:

| Flag | Typ | Default | Beschreibung |
|---|---|---|---|
| `enable_self_repair` | bool | `false` | Stage-3-Selbst-Reparatur aktivieren (Wirehead-geschützt). Bundle-Default OFF — opt-in durch den Nutzer. |
| `enable_recent_sessions_only` | bool | `true` | Nur Sessions der letzten 7 Tage im Geisterskill-Check berücksichtigen. |
| `cutoff_hour` | int | `7` | Mittwoch-Cutoff in lokaler Zeit (ganzzahlig). |
| `log_retention_days` | int | `56` | Maximales Alter von Log-Dateien in Tagen. |

Über `scope:` steuerbar (eigener YAML-Top-Level-Key, nicht unter `paths:`):
- `scope.roots` — Vault-Ordner, die gescannt werden
- `scope.excludes` — Vault-Ordner, die ausgeschlossen werden

## Wirehead-Schranke

Drei Sicherungen für Stage-3-Selbst-Reparatur:

1. `evals.json` ist eingefroren — nur der Nutzer darf sie ändern.
2. Wöchentliches Änderungs-Budget (Default 10 %) gemittelt über Target-Files im Rolling-Fenster. Konfiguriert in `autonomy-config.json`.
3. Diff-Klassifikator `wording` vs. `rule`. `rule`-Änderungen brauchen immer Nutzer-Freigabe.

Stage 3 ist im Bundle **standardmäßig deaktiviert** (`enable_self_repair: false`). Der Nutzer aktiviert sie explizit in `skill.config.yaml` und konfiguriert `autonomy-config.json` mit den eigenen Target-Files.

## Eval-Set

Eingefrorene Assertions unter `.skills/auditor/eval/auditor.eval.json`. Der Runner ist `run_evals.py` im Skill-Ordner, arbeitet mit Fixtures in Temp-Verzeichnissen. Pass-Rate muss 100 Prozent sein.

## Verknüpfungen

- [[INDEX|INDEX.md]]
- [[AGENTS|AGENTS.md]]
