--- 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-10-30 --- # 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`. ## Waisen: waisen.py Eine Waise ist eine Notiz ohne Kante im Graphen, weder eingehend noch ausgehend. `waisen.py` zählt sie so, wie Obsidian den Graphen baut, und zieht die Muster aus `waisen-ausnahmen.txt` ab. ```bash PYTHONIOENCODING=utf-8 python .vault-tools/linkcheck/waisen.py --vault . --liste python .vault-tools/linkcheck/faelle_waisen.py ``` - Der Sitzungsstart zeigt dieselbe Zahl als Zeile „Waisen außerhalb der Ausnahmen“. Steigt sie, hat eine neue Datei ihren Hub nicht verlinkt (Regel unten unter „Links schreiben und Dateien verschieben“). - In `waisen-ausnahmen.txt` stehen nur allgemeine Muster, keine Kunden- oder Projektnamen, weil `.vault-tools/` veröffentlicht wird. - Entwurf, Herkunft je Regel und benannte Lücken: `.vault-tools/linkcheck/ENTWURF-waisen.md`. Ein Fangnetz, kein Nachweis: Wie der Graph aussieht, zeigt nur Obsidian. ## 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. Dazu kommt die Zahl der Waisen außerhalb der Ausnahmen aus `waisen.py`, nur die Zahl, keine Liste. - **`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. **Verbrauch aus den Transkripten:** `.vault-tools/verbrauch-auswertung/analyse_transkripte.py` zählt Tokens und Listenpreis je Modell, Effort, Sitzung und Subagent, Ausgabe nur außerhalb des Vaults; Aufruf, Fälle und Grenzen in der `LIESMICH.md` dort. ## 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/` ist seit dem 2026-10-30 gelöscht (Pascals Entscheidung im Workflow-Review). 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 ### Jede neue Datei hängt an ihrem Hub **Wer eine Datei anlegt, verlinkt darin ihren Hub, und zwar nach oben.** Das gilt für dich, für jeden Subagenten, Skill und Workflow. Der Erzeuger kennt den Hub beim Anlegen, der Hub selbst braucht keine Pflege, und seine Rückverweise zeigen alle Kinder. Ein Pfad in Backticks ist kein Link. | Datei | Hub | Linkform | |---|---|---| | Plan-Übersicht `00-uebersicht.md`, Einzeldatei-Plan in einem Code-Projekt | Projekt-README | relativer Markdown-Link | | Plan oder Spec unter `docs/` an der Vault-Wurzel | `README.md` der Vault-Wurzel | relativer Markdown-Link | | alles andere im Planordner (Task, Anforderung, Prüfbericht, Nachbesserung) | `00-uebersicht.md` desselben Ordners | relativer Markdown-Link | | Codedoku `docs/code/*.md`, Spec, Quorum-Bericht, CHANGELOG, Administrator-Anleitung | Projekt-README | relativer Markdown-Link | | SEO-Einzelbefund | Bericht des Laufs | Wikilink mit vollem Pfad | | Bericht eines SEO-Laufs | SEO-Seed | Wikilink mit vollem Pfad aus dem Seed, also nach unten (siehe unten) | | Arbeitsdatei oder Plan-Übersicht eines Projekts im IT Workspace, auch unter `_arbeitsstand/` | Übersicht (`_MOC-*.md`) bzw. README des Projekts | Wikilink mit vollem Pfad | | Dump | Tagesnotiz | Wikilink `[[Inbox/JJJJ-MM-TT]]` | | Notiz oder Spec in der Inbox | Tagesnotiz des Tages, an dem sie entsteht | Wikilink aus dem Agentenprotokoll der Tagesnotiz, also nach unten | - **Wo die Zeile steht:** direkt unter dem Frontmatter, ohne Frontmatter in der ersten Zeile. In einer Taskdatei lautet sie `Übersicht: [00-uebersicht.md](00-uebersicht.md)`, in einer Übersicht `Projekt: [README](../../../README.md)`, unter `docs/` an der Vault-Wurzel `Vault: [README](../../../README.md)`, die Tiefe passend zum Ort. - **Der Bestand ist anders angebunden:** Der einmalige Bestandslauf (`.vault-tools/linkcheck/waisen_bestand.py`) hat die Zeile am Dateiende angehängt und in Plan-Übersichten den Abschnitt „Dateien in diesem Ordner“, in SEO-Berichten „Befunddateien dieses Laufs“. Das sind Momentaufnahmen. Du verschiebst diese Zeilen nicht nach oben, ergänzt oben keine zweite Zeile und pflegst die Listen nicht nach; neue Dateien verlinken ihren Hub selbst. - **Relative Markdown-Links in Code-Projekten und unter `docs/` an der Vault-Wurzel, entgegen der Vault-Gewohnheit.** Der Projektstatus steht im Ordnerpräfix, und aus `active - X` wird irgendwann `inactive - X`. Wikilinks mit vollem Pfad brechen dabei, wenn nicht in Obsidian umbenannt wird. Gitea zeigt Markdown-Links an, Wikilinks nicht. Leerzeichen und Umlaute im Pfad schreibst du URL-kodiert, ein Leerzeichen als `%20`. - **Innerhalb eines Planordners** verlinken Dateien ihre `00-uebersicht.md` immer relativ, wo der Ordner auch liegt, im IT Workspace eingeschlossen. - **Überall sonst** bleibt es beim Wikilink mit vollem Pfad, auch für den Link aus einem Projekt im IT Workspace auf seine Übersicht, wenn sein `_arbeitsstand` ein eigenes Git-Repo ist: Diese Ordner tragen kein Statuspräfix. - **Notizen in der Inbox verlinkt die Tagesnotiz nach unten**, weil eine Inbox-Notiz noch keinen festen Ort hat. Wird sie einsortiert, gilt die Zeile ihres neuen Orts. - **SEO-Befunde verlinkt der Bericht nach unten, den Bericht der Seed**, weil der Audit-Skill außerhalb des Vaults liegt und seine Dateien ohne Link ablegt. Wie, steht in [[AI/Regelwerk/seo|seo.md]], Abschnitt 1, Punkt 5. - **Bewusste Ausnahmen** sind `Bookstack/` (Warteschlange und Archiv) und Programmausgaben unter `data/` in Code-Projekten. Sie stehen als Muster in `.vault-tools/linkcheck/waisen-ausnahmen.txt` und zählen nicht als Waisen. ### Links allgemein - **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