--- type: resource title: "Navigator-Werkzeuge" status: reference summary: "Wie du suchst, wenn die MOCs nicht reichen: Grep, linkcheck, was vom alten Navigator-Toolkit noch gilt, Obsidian-CLI und Obsidian-Skills, Links schreiben und Dateien verschieben." tags: [regelwerk, navigation, werkzeuge] created: 2026-08-30 updated: 2026-09-13 --- # Navigator-Werkzeuge Laden, wenn die MOC-Kaskade aus dem [[CLAUDE|Stamm]] nicht reicht, wenn du Links prüfst oder Obsidian-Werkzeuge nutzen willst. Für die alltägliche Navigation über Wissenslandkarte und Seeds brauchst du diese Datei nicht. Der Aufruf von Python auf dieser Maschine (`python` statt `python3`, `PYTHONIOENCODING=utf-8`) steht in [[AI/Regelwerk/windows-shell|windows-shell.md]]. ## Suchen, wenn die MOCs nicht reichen **Gezielt mit Grep suchen**, auf den Themenordner eingegrenzt, wenn du ihn kennst. Das ist schneller und aktueller als jeder Index. Gemessen am 2026-09-13 über 61 Sitzungen: Die Wissenslandkarte wurde in 7 geöffnet, gelesen wird fast alles per Grep und Bash. Zwei Grenzen der Suche: - **Pfade in Backticks sind keine Links.** Grep findet sie, Backlinks und Linkcheck sehen sie nicht. - **Inline-Tags wie `#review`** findest du mit `rg -P '(^|\s)#review(?![-\w])'`. Ein einfaches `\b` am Ende trifft auch `#review-done`. Das Frontmatter-Feld `tags` allein reicht nicht, im IT Workspace stehen die meisten Tags im Text. ## Tote Links: linkcheck ```bash PYTHONIOENCODING=utf-8 python .vault-tools/linkcheck/linkcheck.py --vault . python .vault-tools/linkcheck/faelle.py ``` Der erste Befehl meldet die echten toten Wikilinks, weil er Codeblöcke ausnimmt. Der zweite fährt die Angriffsfälle gegen die Codeblock-Erkennung. Entwurf, Herkunft je Regel und benannte Lücken: `.vault-tools/linkcheck/ENTWURF-codeblock-erkennung.md`. ## Sitzungs-Hooks Unter `.vault-tools/session-hooks/` liegen zwei Hooks, eingetragen in `.claude/settings.json`: - **`sitzungsstart.py`** (SessionStart) gibt beim Start nur Zahlen in den Kontext: ob die Tagesnotiz existiert, offene Inbox-Notizen, Notizen mit `#needs-review`, `#review` ohne `#review-done`, Regelwerk-Dateien auf `pending-review` und die Sitzungsdateien von heute, damit eine Namenskollision auffällt. - **`regelwerk_nach_edit.py`** (PostToolUse) startet `regelwerk_check.py` nach jedem Edit oder Write an `CLAUDE.md`, `AI/Regelwerk/`, `.claude/agents/` oder `.claude/skills/` und meldet Befunde zurück. Solange eine Regelwerk-Datei auf `pending-review` steht, meldet er genau diesen Befund jedes Mal mit. Beide nehmen die Vault-Wurzel aus ihrem eigenen Pfad, nicht aus `cwd`, weil `cwd` einem `cd` in einen Projektordner folgt. Regressionstreiber: `faelle_sitzungsstart.py` und `faelle_nach_edit.py`. Entwurf und benannte Lücken: `.vault-tools/session-hooks/ENTWURF.md`. Ein Fangnetz, kein Nachweis. ## Das alte Navigator-Toolkit — nicht mehr die Rückfallebene Unter `.vault-tools/obsidian-vault-navigator/` liegen `build_index.py`, `vault_query.py` und `vault_doctor.py` aus dem Cowork-Skill „obsidian-vault-navigator". **Seit dem 2026-09-13 nutzt du sie nicht mehr für Antworten**, und `_index/` wird nicht mehr gepflegt. Die Gründe, gemessen am selben Tag: - Der Index war neun Tage alt und kannte 253 von 1006 Notizen nicht, darunter sechs Regelwerk-Dateien. Nichts baut ihn automatisch neu. - `vault_query --tag` liest nur Frontmatter-Tags. `--tag review` fand 1 Notiz, inline tragen den Tag 242. - `vault_doctor.py` meldet tote Links auch aus Codeblöcken (92 gemeldet, 0 echte am 2026-09-03). `KNOWN_TYPES` kennt 3 der 22 Typen aus [[AI/Regelwerk/frontmatter|frontmatter.md]], und `extract_headings()` hält Bash-Kommentare für Überschriften. Das Toolkit ist fremd und schreibgeschützt. Deshalb wird es nicht gepatcht, sondern bleibt als Bestand liegen. ## Obsidian-Werkzeuge **Obsidian CLI.** Obsidian 1.13.7 bringt sie als `C:\Program Files\Obsidian\Obsidian.com` mit. Am 2026-09-13 war sie abgeschaltet („Command line interface is not enabled") und nicht im PATH. Einschalten kann nur Pascal, unter Einstellungen → Allgemein → Erweitert. Ist sie an, liefert sie `backlinks`, `tags` und `search` aus Obsidians eigenem, immer aktuellem Graphen, inklusive Inline-Tags. Sie braucht eine laufende App, für geplante Läufe taugt sie deshalb nicht. Vor dem Einsatz prüfst du mit `"C:\Program Files\Obsidian\Obsidian.com" version`, ob sie antwortet. **Plugin `obsidian-skills`** (kepano): - `obsidian-bases` nimmst du, wenn du eine `.base`-Datei schreibst oder änderst. - `obsidian-markdown`: Für Frontmatter gilt [[AI/Regelwerk/frontmatter|frontmatter.md]] vor dem Skill. - `obsidian-cli` funktioniert nur bei eingeschalteter CLI, siehe oben. - `defuddle` ist auf dieser Maschine nicht installiert. Webseiten holst du deshalb mit WebFetch. **Account-Skill `obsidian-vault-navigator` gilt hier nicht**, auch wenn seine Beschreibung „immer" sagt. Er widerspricht dem Vault an mehreren Stellen: Index zuerst statt Wissenslandkarte, `python3`, andere `status`-Werte, `vault_doctor` für tote Links, und er will eine eigene `CLAUDE.md` in die Wurzel kopieren. Abwählen kann ihn nur Pascal. **Bases** (`Projekte.base`, `Review-Queue.base`) sind Pascals Sicht. Du liest nur das YAML der `.base`-Datei, nicht das ausgewertete Ergebnis. Als Navigation für dich ersetzen sie also keine MOC. Eine Gruppierung per Formel statt per Feld bleibt verworfen (2026-08-03): Sie ist nicht dokumentiert und kann das Rendern der ganzen Datei verhindern. ## Links schreiben und Dateien verschieben - **Wikilinks mit vollem Vault-Pfad:** `[[AI/Regelwerk/navigation|navigation.md]]`. In Tabellenzellen schreibst du den Alias-Trenner als `\|`. - **Nicht-Markdown-Anhänge** verlinkst du mit Dateiendung (`[[…/audit-data.json]]`) oder nennst sie als Pfad in Backticks. Ein Wikilink ohne Endung löst nur auf `.md` auf. - **Kein Wikilink ins Harness-Gedächtnis.** Obsidian sieht den Ordner nicht, der Link wäre tot. Nenne den Namen in Backticks. - **Wenn du eine Datei verschiebst oder umbenennst, zieht Obsidian die Links nicht nach.** Das tut es nur bei Verschiebungen in der App, und auch dort nur nach Rückfrage, denn `alwaysUpdateLinks` bleibt bewusst aus: Sonst schreibt Obsidian ungefragt in Dateien, die in den Git-Repos unter Code Projekte liegen. Vor dem Verschieben suchst du per Grep nach eingehenden Wikilinks, nach Backtick-Pfaden im Vault und nach Pfaden im Harness-Gedächtnis, und ziehst sie mit. - **`userIgnoreFilters` in `.obsidian/app.json`:** Ein Eintrag ohne umschließende Schrägstriche gilt nur ab der Vault-Wurzel (`_index/`). Für einen Ordner in beliebiger Tiefe schreibst du einen regulären Ausdruck zwischen Schrägstriche, zum Beispiel `/(^|\/)node_modules\//`. Belegt am Code von Obsidian 1.13.7 (`updateUserIgnoreFilters`). ## Frontmatter im IT Workspace Ein erheblicher Teil der Artikel im IT Workspace hat kein YAML-Frontmatter, sondern nur die alte Tag-Konvention (`#Nextcloud`, `#review`). Die Seed-MOCs funktionieren trotzdem, weil Titel und Zusammenfassung aus Überschrift und erstem Absatz abgeleitet werden. Den genauen Anteil misst du, statt ihn hier zu pflegen: ```bash find "IT Workspace" -name '*.md' -not -name '_MOC-*' -exec sh -c 'head -c 3 "$1" | grep -q -- "---" || echo "$1"' _ {} \; | wc -l ``` Frontmatter flächendeckend nachrüsten wäre ein eigener, größerer Schritt — nur auf Zuruf. ## Referenzen - [[CLAUDE|↑ Claude.md (Stamm)]] - [[Wissenslandkarte|Wissenslandkarte]] - [[AI/Regelwerk/frontmatter|frontmatter.md]]: Schema und Tags - [[AI/Regelwerk/projekte|projekte.md]]: Projekt-Tag und Projekt-Einstieg - [[AI/Regelwerk/windows-shell|windows-shell.md]]: Python, Kodierung, Shells