wiki-maintenance

Der Haushalts-Skill. Gibt Marvin periodisch das Gefuehl dass das System nicht messy wird — weil es tatsaechlich nicht messy wird. Arbeitet in sechs Passes, jeder mit eigenem Review-Gate. Marvin kann einzelne Passes skippen (nur inbox, nur links, nur tbd).

Geltungsbereich. Liest immer das ganze Repo. Schreibt nur nach expliziter Bestaetigung. Loescht niemals ungefragt. Bei Unsicherheit: flaggen, nicht handeln.

Zwei Modi:

  • Interactive (Default, manueller Trigger): Batch-Report zeigt alle Vorschlaege, Marvin akzeptiert per Batch oder einzeln.
  • Autonomous (Cron, siehe Autonomous-Mode): strengere Regeln, nur High-Confidence-Aktionen, Unklares bleibt in Inbox.

Ablauf-Uebersicht

Pass 1: Inbox einsortieren  (wichtigster, oft einziger gebrauchter)
Pass 2: Broken Links + Inline-Code-Pfad-Check
Pass 3: Frontmatter-Check
Pass 4: Stale Files
Pass 5: DONE-Archivierung (Plugin-TODO-Liste)
Pass 6: TBD-Tracker

Am Ende: Summary-Report

Wenn Marvin “nur inbox” sagt: nur Pass 1, direkt zum Report. Analog fuer andere Passes (nur links, nur tbd, nur frontmatter).


Pass 1: Inbox einsortieren

Ziel: inbox/ leeren. Jedes File landet an seinem richtigen Ort oder wird geloescht.

Der Pass laeuft in drei Phasen: (A) Scan(B) Batch-Report(C) Aktionen. Phase B zeigt alle Klassifizierungs-Vorschlaege auf einen Blick — du kannst klare Faelle im Batch bestaetigen und nur unsichere einzeln abarbeiten. Das spart Clicks bei vollen Inboxes.

1.1 Files sammeln (alle Typen)

Liste alle Files in inbox/ (exkl. CONTEXT.md, .gitkeep). Fuer jedes File:

  • Dateityp: Extension + ggf. MIME-Detection
  • Alter: File-Timestamp (frisch vs. laenger in Inbox liegend)
  • Name-Signal: Pattern-Match im Dateinamen (Rechnung, Invoice, Immatrikulation, YYYY-MM-DD-*, Vendor-Name)
  • Content-Read, abhaengig vom Typ:
    • .md, .txt, .html: komplett lesen, Frontmatter parsen
    • .pdf: mit Read-Tool extrahieren (max 20 Seiten), Key-Felder lesen (Betreff, Datum, Betrag, Vendor)
    • .pptx: pptx-Skill triggern fuer Titel + Structure
    • .heic / .jpg / .png: Preview anschauen, Dateiname + EXIF-Datum als Context
    • Unbekannter Typ: nicht lesen, flaggen als “Unklar”

Wenn Inbox leer: Pass 1 skippen, kurz melden.

1.2 Klassifikations-Matrix

KlassifikationZielTrigger-Signale
TODOPlugin-TODO-Liste (agentic-ventures Plugin).md beschreibt konkrete Aktion mit Aufwand fuer uns
Idee (geparkt)intern/ideen/ideas-backlog.md.md Brainstorm ohne konkreten Next Step, passt nicht zum Fokus
Wiki-Wissen`intern/wissen/<entscheidungenprozesse
Kunden-Infointern/kunden/<slug>.md (Stamm) oder intern/projekte/<projekt>/ressourcen/<file>.md (Projekt-Detail).md Info ueber spezifischen Kunden
Config-Wert_meta/config-planning.md (operativ) oder _meta/config.md (technisch).md Dauer-Default, Themen-Tag-Anpassung, Arbeitszeit-Aenderung
Research-KandidatVorschlag fuer intern/runs/<datum>-research-<topic>/.md offene Frage / Thema zum Erkunden (nicht einfacher Fakt)
Rechnung (Eingang)PDF → assets/finanzen/<YYYY>/, Metadata-.mdextern/inbound/rechnungen/PDF, Name enthaelt Rechnung/Invoice/Vendor, Content hat IBAN/USt-ID/Betrag, Vendor ist extern
Rechnung (Ausgang)PDF → assets/finanzen/<YYYY>/, Metadata-.mdextern/outbound/rechnungen/PDF, von uns an Kunden ausgestellt (Name enthaelt Kunden-Slug + unseren Absender)
Medical-DociCloud → ~/Library/Mobile Documents/com~apple~CloudDocs/Archiv/medical/PDF mit medizinischem Content (Screening, Befund, Attest, Fragebogen). Kein Vault-Eintrag.
Uni-BescheinigungiCloud → .../Archiv/uni/PDF Name Immatrikulation* / Exmatrikulation* / Studien*. Kein Vault-Eintrag.
Personal-FotoiCloud → .../Archiv/personal/.heic/.jpg ohne Business-Kontext (Screenshot von Quittung oder Whiteboard zaehlt NICHT hier — siehe Screenshot-Eintrag)
Partner-Materialassets/firma/partner-materials/PPTX/PDF fuer Alex oder externe Sales-Partner
Screenshot mit Kontextassets/<bereich>/<slug>.png + Text-File .md daneben in intern/wissen/...Bild das ein Konzept/Workflow zeigt, mit Dateiname oder Notiz daneben
Fragment/NoiseLoeschenTest-Message, unvollstaendiger Gedanke, Duplikat (Hash-Match)
UnklarFlaggen, in inbox/ lassenKeine der anderen Kategorien greift sicher

Regel: Im Zweifel flaggen, nicht raten. Falsch einsortiertes Material ist schlimmer als nicht einsortiertes. Ein File das du nicht einschaetzen kannst darf in inbox/ bleiben — Marvin sieht’s im Report und entscheidet.

1.3 Batch-Report

Nach dem Full-Scan: erst alle Vorschlaege zeigen, dann fragen. Zwei Confidence-Buckets plus Flag-Liste.

📋 Inbox-Scan: 12 Files (7 md, 3 pdf, 1 heic, 1 pptx)

━━━ KLAR (8) — Batch-Accept moeglich ━━━

  📄 Hetzner_2026-04-12_089000852058.pdf        → Rechnung         [assets/finanzen/2026/ + extern/inbound/rechnungen/]
  📄 Immatrikulationsbescheinigung_SoSe_2025.pdf → Uni-Doc          [iCloud/uni/]
  📄 Immatrikulationsbescheinigung_WiSe_2025.pdf → Uni-Doc          [iCloud/uni/]
  📄 ADHS_SB.pdf                                 → Medical          [iCloud/medical/]
  📄 BDI-II.pdf                                  → Medical          [iCloud/medical/]
  📄 2026-04-17-becker-stahl-mittwoch.md         → TODO             [Plugin-TODO]
  📄 2026-04-17-lissabon-sonntag.md              → TODO             [Plugin-TODO]
  📄 Becker_Huels_Kuehlmann-...pptx              → Partner-Material [assets/firma/partner-materials/]

━━━ UNSICHER (3) — einzeln ━━━

  📄 IMG_0389.HEIC                       → Personal-Foto?   (keine Context-Info, nur EXIF-Datum 2026-04-20)
  📄 2026-04-17-skool-community-youtube.md → Idee vs Research? (koennte beides sein)
  📄 therapeutin-fragebogen-2026-04-21.html → Medical? Private Notiz?  (Name ambig)

━━━ FLAGGEN (1) ━━━

  📄 Hase 2.pdf  → Unklar  (Dateiname gibt nichts her, Content = Bild ohne Beschriftung)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

[j] alle KLAR ausfuehren, dann UNSICHER einzeln
[e] einzeln ab Nr 1
[s] nur ausgewaehlte Nummern (z.B. "1,2,5-7")
[n] abbrechen

1.4 Aktionen ausfuehren

Bei Batch-Accept: KLAR-Liste wird in einer Sequenz ausgefuehrt, UNSICHER kommt pro File mit dem klassischen [j/n/k/z]-Dialog.

Pro Klassifikation:

  • TODO: in Plugin-TODO-Liste in passende Section einfuegen. Prio [WICHTIG] oder [NORMAL]. Inbox-File loeschen.
  • Idee: in intern/ideen/ideas-backlog.md unter ## Parked anhaengen. Inbox-File loeschen.
  • Wiki-Wissen: neues File oder bestehendes ergaenzen unter intern/wissen/<entscheidungen|prozesse|glossar>/. Inline-Marker <!-- from inbox YYYY-MM-DD -->. Danach Rule 12 Capture-Check (siehe 1.5). Inbox-File loeschen.
  • Kunden-Info: analog Wiki, in intern/kunden/<slug>.md (Stamm) oder intern/projekte/<projekt>/ressourcen/<file>.md (Detail).
  • Config-Wert: in _meta/config-planning.md (operativ) oder _meta/config.md (technisch) eintragen, immer mit Bestaetigung, nie stumpf ueberschreiben.
  • Research-Kandidat: Spezial-Flow (siehe 1.6).
  • Rechnung:
    1. Metadata aus PDF extrahieren: Vendor, Rechnungs-Datum, Rechnungs-Nr, Netto, USt-Satz, Brutto, Leistung (1 Zeile), Zahlungsfrist.
    2. PDF nach assets/finanzen/<YYYY>/ (gitignored) verschieben. Jahr aus Rechnungs-Datum, nicht File-Timestamp. Umbenennen: YYYY-MM-DD_lieferant_betrag.pdf.
    3. Metadata-.md mit Frontmatter Schema 5.9 (Invoice) anlegen in extern/inbound/rechnungen/<YYYY>/<inv-id>.md (Eingang) oder extern/outbound/rechnungen/<YYYY>/<inv-id>.md (Ausgang). file:-Pointer auf das PDF setzen.
    4. Inbox-File entfernen.
  • Medical / Uni / Personal-Foto: nach iCloud-Pfad verschieben (~/Library/Mobile Documents/com~apple~CloudDocs/Archiv/<category>/). Kein Vault-Eintrag. Inbox-File entfernen. Nur Zeile im Summary (“3 Medical-Docs nach iCloud/medical/”).
  • Partner-Material: nach assets/firma/partner-materials/. Vault-Verweis-Option: wenn Material Teil eines laufenden Partner-Prozesses ist (Alex-Deck, Icking-Angebot), Erwaehnung im entsprechenden Kunden- oder Projekt-File anbieten.
  • Screenshot mit Kontext: Bild nach assets/<bereich>/<slug>.<ext>, kurze .md daneben in intern/wissen/... mit Beschreibung. Inbox-File entfernen.
  • Fragment: Loeschen (File weg, keine Spur). Im Autonomous-Mode nie — immer flaggen.

Frontmatter beim Neu-Anlegen: received_at aus Inbox-File als Kontext, last_reviewed: <heute>.

1.5 Capture-Check bei neuem Wissen (CLAUDE.md Rule 12)

Wenn ein File als Wiki-Wissen klassifiziert und eine neue oder substanziell erweiterte Wissens-Datei geschrieben wurde, direkt den Capture-Check ausloesen (CLAUDE Rule 12):

  1. Wissens-Datei — schon erledigt in 1.4.
  2. Memory-Eintrag noetig? — Ja wenn neuer Cluster / neues Tool / neuer Trigger, der in fresh Sessions auffindbar sein muss. Vorschlag:
    🧠 Neuer Wiki-Cluster erkannt: intern/wissen/<bereich>/<topic>.md
    
    Vorschlag Memory-Eintrag (reference-type):
      name:        <topic>-reference
      description: <eine Zeile>
      Pointer:     intern/wissen/<bereich>/<topic>.md
    
    [j] anlegen   [n] skip
    
  3. CLAUDE.md-Routing noetig? — Ja wenn User-Formulierung zum neuen Thema vage sein koennte und nicht durch bestehende Routing-Zeile abgedeckt ist. Vorschlag:
    🗺️ CLAUDE.md-Routing-Zeile?
    
    Neuer Eintrag in Routing-Tabelle:
      Aufgabe: "<User-Formulierung>" | Pfad: — | Aktion: Lies intern/wissen/<bereich>/<topic>.md
    
    [j] eintragen   [n] skip
    

Nur vorschlagen, nie ohne Bestaetigung schreiben. CLAUDE.md ist Source-of-Truth, Memory ist persistent.

Dieser Schritt ist nicht im Autonomous-Mode aktiv — Memory/CLAUDE.md-Writes erfordern Review.

1.6 Research-Kandidat — Spezial-Flow

Wenn ein File wie eine Research-Idee aussieht (offene Frage, Pattern das man untersuchen koennte, Thema das tiefer erkundet gehoert), nicht einfach ins Wiki schreiben. Stattdessen vorschlagen:

🔎 inbox/2026-04-20-supplement-stack.md sieht nach Research-Kandidat aus.

Vorschlag: `intern/runs/2026-04-20-research-supplement-stack/` anlegen, dort Bericht generieren.
Anschliessend — wenn Erkenntnisse dauerhaft relevant sind — verdichtetes File in `intern/wissen/` als generated view.

[j] Research starten (Topic bestaetigen)   [n] nicht jetzt, lass als Idee in ideas-backlog.md   [w] direkt als Wissens-Notiz ablegen (kein Research noetig, war nur ein Fakt)

Nie ungefragt eine Research starten. Research kostet Token und Zeit — Marvin entscheidet ob’s das wert ist.

Ablage-Garantie (siehe CLAUDE Rule 11): Recherche-Outputs landen immer in intern/runs/<datum>-research-<topic>/ (Event). Erst in zweitem Schritt verdichtet in intern/wissen/... (berechnete Sicht). Niemals an dritter Stelle. Wenn Marvin “w — direkt Wissen” waehlt: trotzdem mit vollstaendigem Frontmatter + ## Related wie in conventions §2+§4 gefordert.

1.7 Korrektur-Modus

Wenn Marvin bei einem File [k] sagt oder im Batch-Report einzelne korrigiert: er sagt dir den korrekten Ort (z.B. “das gehoert nach intern/wissen/prozesse/mistral-api.md”). Du verschiebst entsprechend, ggf. neues File anlegen oder in bestehende Datei anhaengen.


Ziel: Alle internen Verweise die ins Leere zeigen, finden — egal ob als Markdown-Link, Wikilink oder als Inline-Code-Pfad. Letztere sind der haeufigste Drift-Vektor (CLAUDE.md Rule 19), weil sie wie Behauptungen klingen aber niemand sie validiert.

2.1 Scan

Drei Klassen pruefen:

  1. Markdown-Links der Form [text](relativer/pfad.md) oder [text](pfad.md#anker).
    • Pro Link: Zielpfad existiert (relativ zur Quell-Datei aufgeloest)?
  2. Wiki-Links der Form [[<datei>]] oder [[../path/<datei>]].
    • Existiert die Datei irgendwo im Repo? Dotted/strikethrough in Obsidian wird hier nochmal explizit aufgelistet.
    • Ausnahme: PII-Stub-Refs (<slug>--kontakt) sind gewollt, ueberspringen (Schema 5.6.1).
  3. Inline-Code-Pfade der Form `intern/<...>.md` / `extern/<...>.md` / `assets/<...>.md` / `_meta/<...>.md` / `inbox/<...>.md`.
    • Regex: `((?:intern|extern|assets|_meta|inbox)/[^\s`<*{]+\.md)(?:#[^`\s]+)?`
    • Schema-Notationen mit <...>, *, {...} werden vom Regex ausgeschlossen — das sind Beispiele, keine Behauptungen (CLAUDE.md Rule 19 Form (c)).
    • Quellen-Filter: Refs aus _meta/migration-archiv/ und aus alten Run-Berichten (intern/runs/<datum>-...-vollstaendigkeit/) ignorieren — historische Snapshots, keine Live-Drift.
  • Externe Links (http/https) nicht pruefen (zu langsam, zu viele).

2.2 Report

Drei Bloecke, je eine Liste:

🔗 Pass 2 — Verweis-Drift

━━━ Markdown-Links broken (2) ━━━

  ❌ intern/kunden/koehnemann-design.md  (Zeile 42)
     [Teamleader-API](../wissen/prozesse/teamleader-api.md)
     → Ziel existiert nicht
     Vorschlag: intern/wissen/prozesse/teamleader-mcp.md  (best guess)

━━━ Wikilinks broken (1) ━━━

  ❌ intern/projekte/foo/_index.md  (Zeile 12)
     [[../../wissen/prozesse/dxx-pattern]]
     → keine Datei dxx-pattern.md im Repo gefunden
     Vorschlag: Wikilink entfernen oder Pfad korrigieren?

━━━ Inline-Code-Pfade broken (3) ━━━

  ❌ intern/projekte/av-website/_index.md  (Zeile 45)
     `intern/firma/leistungen.md`
     → Ziel existiert nicht
     Vorschlag: (a) leistungen.md als Skeleton anlegen
                (b) zu Wikilink-Stub `[[../firma/leistungen]]` aendern
                (c) Erwaehnung umformulieren

  ❌ intern/wissen/prozesse/foo.md  (Zeile 12)
     `intern/kunden/<kunde>/profil.md`
     → Pfad-Pattern, Kunden-Slug `<kunde>` nicht im Vault gefunden
     Vorschlag: Kunden-Stub anlegen oder Pattern entkoppeln?

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

[j] best-guess Vorschlaege akzeptieren wo vorhanden
[e] einzeln durchgehen
[n] skip Pass 2 ganz

2.3 Fix-Optionen

Keine auto-fix. Pro Treffer im Interactive-Mode [j/n/e]:

  • [j] — Best-Guess akzeptieren (nur wo angeboten — z.B. Tippfehler, Rename-Drift).
  • [n] — diesen Treffer skippen, in der naechsten Lauf-History merken.
  • [e] — Marvin gibt den richtigen Pfad / das richtige Ziel.
  • Skeleton-Anlage (nur fuer Inline-Code-Pfade): Vorschlag, ein leeres File mit Frontmatter anzulegen — sinnvoll wenn der Pfad bewusst als „kommt noch” gedacht war (z.B. intern/firma/leistungen.md Skeleton).

Broken Verweise entstehen oft durch Rename — die richtige Aufloesung ist kontextuell. Auto-Fix ist nur bei .md-Suffix-Drift in Wikilinks ([[foo.md]][[foo]]) sicher genug fuer Batch-Akzeptanz, alles andere geht durch Marvin.


Pass 3: Frontmatter-Check

Ziel: Alle Daten-Dateien haben description: und last_reviewed:.

3.1 Scan

  • Alle .md-Files (ausser SKILL.md-Files — die haben name: + description: als Pflicht, last_reviewed: nicht).
  • Pro File: hat es YAML-Frontmatter? Hat es description:? Hat es last_reviewed:?

3.2 Report

⚠️ Fehlende Frontmatter-Felder:

  - inbox/alte-notiz.md: kein Frontmatter
  - runs/2026-04-10-.../01.md: description fehlt

Soll ich fuer jede ein Default-Frontmatter vorschlagen? [j/n]

Bei j: Pro File vorschlagen, Marvin bestaetigt einzeln oder als Batch.


Pass 4: Stale Files

Ziel: Flaggen was laenger nicht angefasst wurde — koennte veraltet sein.

4.1 Scan

  • Alle Daten-Files mit last_reviewed: parsen.
  • Altersgruppen: <60 Tage (ok), 60-90 Tage (warnen), >90 Tage (kritisch).

4.2 Report

Nur anzeigen, nicht fixen. Marvin muss selber entscheiden ob eine Datei inhaltlich noch stimmt.

📅 Stale Files (last_reviewed alt):

Kritisch (>90 Tage):
  - intern/wissen/prozesse/alte-doku.md (letztes Review: 2026-01-05, 102 Tage)

Warnung (60-90 Tage):
  - intern/kunden/xyz.md (letztes Review: 2026-02-14, 62 Tage)

Was tun: file oeffnen, Inhalt pruefen, `last_reviewed` updaten oder Inhalt aktualisieren.

Ausnahme: Files die haeufig editiert werden (_meta/config*.md, CLAUDE.md) — deren Content aendert sich oft, last_reviewed sollte aber auch dann angefasst werden. Flag sie auch.


Pass 5: DONE-Archivierung

Ziel: Erledigte Items aus der Plugin-TODO-Liste ins Wochen-Archiv verschieben.

Hinweis: Die TODO-Liste lebt im agentic-ventures Plugin (siehe claude-code-plugins-active), nicht im Vault. Dieser Pass interagiert mit der Plugin-Persistenz.

5.1 Scan

  • Plugin-TODO-Liste komplett parsen.
  • Alle Zeilen mit [x] und DONE (YYYY-MM-DD) einsammeln.
  • Pro Item: Datum pruefen. Wenn das Item aelter als 7 Tage ist, Kandidat fuer Archivierung.

5.2 Archivierung vorschlagen

📦 DONE-Items zur Archivierung ({n} gefunden, alle aelter als 7 Tage):

  - [x] DONE (2026-04-08) "Kontakt zu XY"
  - [x] DONE (2026-04-10) "Rechnung an Kunde Z"
  - ...

Zielort: Plugin-Wochen-Archiv (`done-2026-wXX.md`, pro Kalenderwoche eine Datei)

Alle archivieren? [j/n/einzeln]

5.3 Durchfuehren

  • Zieldatei im Plugin ermitteln (done-{YYYY}-w{KW}.md basierend auf DONE-Datum).
  • Falls Datei existiert: anhaengen. Falls nicht: neu anlegen mit Frontmatter.
  • Aus aktiver Plugin-TODO-Liste entfernen.

Regel: Items die DONE sind aber mit [KORREKTUR ...]-Marker enthalten (CLAUDE.md Rule 17 — Datenintegritaet) bleiben wo sie sind. Historie darf nicht versteckt werden.


Pass 6: TBD-Tracker

Ziel: Stellen finden wo „kommt noch” steht aber niemand mehr daran denkt — (tbd), PENDING, „in Vorbereitung”, „sobald migriert” und aehnliche Marker. Keine Auto-Fixes, nur Sichtbarkeit.

6.1 Scan

Pattern, die im Body von .md-Files gesucht werden:

PatternBeispiel im Wild
(tbd) / (TBD) / t.b.d.- leistungen.md (tbd) — Leistungs-Katalog
PENDING (Inline oder als Wert)HRB: PENDING — wird nach Eintragung gefuellt
[PENDING — ...]Telefon: [PENDING — feste Nummer]
„in Vorbereitung” / „sobald migriert” / „sobald angelegt”Brand-Assets: assets/firma/brand-assets/ (sobald migriert)
TODO: / FIXME: als Inline-Marker im Bodynicht als Headline
Frontmatter-Werte gleich ?, tbd, pending, unbekanntphone: ?, status: tbd

Quellen-Filter: wie Pass 2 — Migration-Archiv und alte QA-Runs ignorieren. Plus: Run-Files unter intern/runs/ ueberspringen, weil dort PENDING legitim als Snapshot-Wert steht.

6.2 Report

Gruppiert nach File, mit Datum-Heuristik (wenn Marker > 60 Tage alt im File hinterlegt, eskalieren):

📌 Pass 6 — TBD-Tracker (12 Marker in 7 Files)

━━━ Frisch (<30 Tage) — vermutlich aktiv (4) ━━━

  intern/firma/leistungen.md
    - „TBD nach Phase 0.2: Preis-Range pro Baustein"
    → erwartet aus Phase 0.2 Website-Redesign

━━━ Mittel (30-60 Tage) — checken (5) ━━━

  intern/firma/email-footer.md
    - „Telefon: [PENDING — feste Geschaefts-Nummer]"
    - „HRB: [PENDING — wird nach Eintragung gefuellt]"
    → wartet auf UG-Eintragung

━━━ Alt (>60 Tage) — wahrscheinlich vergessen (3) ━━━

  intern/firma/positioning.md (last_reviewed 2026-04-19, 21 Tage)
    - „leistungen.md (tbd)"  ← geloest seit 2026-05-10, Marker entfernen?

  intern/firma/web-properties.md
    - „heyjulia.de — soll offline"  ← Status seit Q1 2026, immer noch nicht offline?

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Kein Auto-Fix. Marvin sieht die Liste, entscheidet:
- TBD aufloesen (Inhalt liefern, Marker entfernen)
- TBD abkuendigen (Erwartung war falsch, Marker entfernen, Section umformulieren)
- TBD weiter parken (Status-Note ergaenzen, naechster Check-Termin)

6.3 Verbindung zu Pass 2

TBD-Tracker findet Stellen wo eine Datei „kommt noch” — Pass 2 findet Stellen wo eine Datei „existiert nicht”. Oft ueberlappend: Inline-Code-Pfad auf nicht existierendes File ist meist auch ein TBD. Berichte zeigen Cross-Refs:

Cross-Ref: `intern/firma/leistungen.md` taucht in Pass 2 als kaputter Inline-Pfad UND in Pass 6 als TBD auf.
Empfehlung: Skeleton anlegen (loest beide Marker auf einmal).

Final: Summary-Report

Am Ende ein kompakter Ueberblick:

🧹 Maintenance-Lauf abgeschlossen

  📥 Inbox:      {n} Files einsortiert, {n} geflaggt, {n} geloescht
     davon: {n} TODO, {n} Wissen, {n} Rechnung→assets/finanzen+extern, {n} Medical→iCloud, {n} Uni→iCloud, {n} Personal→iCloud
  🔗 Verweise:   {n} Markdown-Links broken, {n} Wikilinks broken, {n} Inline-Code-Pfade broken — {n} gefixt, {n} geskippt
  📋 Frontmatter: {n} Files fehlt was, {n} ergaenzt
  📅 Stale:      {n} Files >60 Tage, {n} kritisch (>90 Tage) — nur Info, nichts gefixt
  📦 Archive:    {n} DONE-Items ins Plugin-Archiv verschoben
  📌 TBD:        {n} Marker gefunden ({n} frisch, {n} mittel, {n} alt) — nur Info
  🧠 Capture:    {n} Memory-Eintraege vorgeschlagen, {n} CLAUDE.md-Routing vorgeschlagen, {n} uebernommen

Offen geblieben:
  - inbox/unklar-xyz.md — koenntest du bitte selber einsortieren
  - {andere geflaggte Items}

Naechster empfohlener Lauf: in ~7 Tagen, oder wenn Inbox wieder voll ist.

Autonomous-Mode (Cron-Betrieb)

Der Skill laeuft nachts via Cron. Im Autonomous-Mode gelten striktere Regeln, weil Marvin nicht in der Session ist:

Was der Skill darf

  • Nur Klassifikationen mit Confidence ≥ 95%. Jede Unsicherheit = File bleibt in Inbox, Eintrag in Summary.
  • Aktionen ohne Review-Gate:
    • Rechnung (Eingang) → PDF in assets/finanzen/<YYYY>/ + Metadata-.md in extern/inbound/rechnungen/<YYYY>/
    • Rechnung (Ausgang) → PDF in assets/finanzen/<YYYY>/ + Metadata-.md in extern/outbound/rechnungen/<YYYY>/
    • Medical-Doc → iCloud/medical/
    • Uni-Bescheinigung → iCloud/uni/
    • Personal-Foto → iCloud/personal/
    • Partner-Materialassets/firma/partner-materials/ (nur verschieben, kein Vault-Eintrag — braucht Context)
    • TODO mit klarem Datum + konkreter Aktion → Plugin-TODO-Liste
    • Hash-Duplicate (identischer SHA256 zu bestehender Datei irgendwo im Vault) → loeschen
  • Pass 2 + Pass 6 als Berichts-Lauf: Drift-Scan und TBD-Scan duerfen automatisch laufen, weil sie nichts schreiben (keine Auto-Fixes). Output landet als TODO in der Plugin-TODO-Liste, Marvin triagiert.

Was der Skill NICHT darf

  • Keine Wissen-Writes. Wissens-Daten brauchen Review (Sprache, Cross-Refs, Memory-/Routing-Impact). Wissens-Kandidaten bleiben in Inbox mit Tag # wiki-kandidat im Summary.
  • Keine Config-Aenderungen.
  • Keine Deletes ausser Hash-Duplikate. Fragmente bleiben in Inbox.
  • Keine Kalender-Events. TODOs aus Inbox werden in der Plugin-TODO-Liste geparkt, Marvin kann beim morgigen Tagesplan-Durchgang selbst entscheiden.
  • Keine Research-Starts.
  • Keine Memory-/CLAUDE.md-Updates (Capture-Check komplett defer an Interactive-Mode).
  • Keine Auto-Fixes in Pass 2 / Pass 3 / Pass 6. Kein Link-Fix, kein Frontmatter-Fix, keine TBD-Aufloesung — nur Berichte.
  • Pass 4 + 5 (Stale Files, DONE-Archivierung) komplett im Interactive-Mode lassen.

Output

  • Summary-Log: Append-Zeile pro Lauf in intern/runs/inbox-scan-log.md (Format: YYYY-MM-DD HH:MM | inbox=N (A einsortiert, B flagged) | drift=N (M markdown, W wikilinks, I inline) | tbd=N).
  • TODOs in Plugin-TODO-Liste (eine Zeile pro Befund-Cluster, unter ## System / Wiki-Maintenance):
    • [ ] Inbox: N Files warten auf manuelle Klassifikation (davon M Wiki-Kandidat, K Unklar) — wenn Inbox nicht leer.
    • [ ] Drift: N kaputte Verweise im Vault (M Markdown-Links, W Wikilinks, I Inline-Pfade) — Detail im naechsten Interactive-Lauf — wenn Pass 2 was findet.
    • [ ] TBD: N Marker gefunden, davon X alt (>60 Tage) — Detail im naechsten Interactive-Lauf — wenn Pass 6 was findet, mit Schwerpunkt auf alte Marker.
  • Kein Push-Layer. Marvin sieht das morgens in der TODO-Liste oder beim Tagesplan-Durchgang.
  • Drift- und TBD-Detail-Bericht NICHT in der TODO-Zeile, sondern abrufbar wenn Marvin den naechsten Interactive-Lauf startet (wiki check triggert vollen Bericht).

Trigger & Konfig

  • Cron via schedule-Skill, nightly 22:00 lokale Zeit (Europe/Berlin, spaeter Europe/Lisbon).
  • Prompt: Starte wiki-maintenance im Autonomous-Mode, nur Pass 1.
  • Reaktivieren/Deaktivieren: mcp__scheduled-tasks__list_scheduled_tasks + update mit {"enabled": false}.
  • Wenn Strategie-Aenderung (Fokus-Shift, Vault-Reorg): Cron prufen ob er noch passt, ggf. aussetzen — siehe Memory reference_remote_triggers.md.

iCloud-Zugriff

  • Pfad: ~/Library/Mobile Documents/com~apple~CloudDocs/Archiv/
  • macOS blockiert Terminal-Zugriff auf iCloud per Default. Einmalig freigeben: Systemeinstellungen → Datenschutz & Sicherheit → Festplattenvollzugriff → Terminal.app (und ggf. Claude Code) aktivieren.
  • Unterordner-Setup (einmal manuell anlegen): medical/, uni/, personal/. Keine Buchhaltung in iCloud — Rechnungen bleiben unter assets/finanzen/<YYYY>/ (gitignored), iCloud ist nur fuer private/medizinische Docs.

Regeln und Grenzen

  • Niemals Kundenfiles veraendern ohne expliziten OK. Kunden-Files (intern/kunden/<slug>.md) und Projekt-Files (intern/projekte/<projekt>/) sind besonders geschuetzt. Selbst bei Broken Links: nur melden, nie stillschweigend fixen. Verweis auf CLAUDE Rule 17 (Datenintegritaet Kundenfiles).
  • Niemals etwas aus intern/runs/ loeschen. Runs sind append-only Event-Log. Wenn ein Run-Ordner “komisch” aussieht: melden, nicht handeln.
  • Niemals CLAUDE.md, _meta/conventions.md, _meta/config.md inhaltlich aendern ohne Confirm. Nur last_reviewed darf angepasst werden, und auch das nur mit Bestaetigung.
  • Keine Git-Operationen. Der Skill committed nicht, pusht nicht. Marvin entscheidet separat wann ein Commit gemacht wird.
  • Autonomous-Mode ist strikter. Die Einschraenkungen oben gelten zusaetzlich, nicht statt.
  • Privacy-First bei non-md Files. Medical/Uni/Personal werden ausschliesslich verschoben, nie in committete Dateien referenziert (keine Links, keine Dateinamen im Log). Im Summary nur Count, nicht Namen.
  • SKILL — befuellt die Inbox, dieser Skill arbeitet sie ab
  • _context — Inbox-Zweck
  • ideas-backlog — Ziel fuer geparkte Ideen
  • Plugin-TODO-Liste (agentic-ventures Plugin) — Ziel fuer TODOs, Quelle fuer Archivierung
  • buchhaltungs-stack — welches Tool aktiv ist (Papierkram primary)
  • beleg-quellen — Beleg-Quellen + Workflow Beleg-Eingang
  • conventions §14 — Wohin-mit-einem-Eintrag (Entscheidungs-Faustregel)
  • CLAUDE — Rule 10 (eigene Tools vor Workaround), Rule 11 (Recherche-Ablage), Rule 12 (Wissen einfangen), Rule 13 (Rule-Zero-Check), Rule 17 (Datenintegritaet), Rule 19 (Pfad-Erwaehnungen — Pass 2 enforced das)