- .vault-tools/session-hooks/ENTWURF.md - .vault-tools/session-hooks/faelle_sitzungsstart.py - .vault-tools/workflow-pruefung/faelle_workflows.mjs - .vault-tools/workflow-pruefung/mutanten_workflows.py - AI/Regelwerk/navigation.md - AI/Regelwerk/seo.md - CLAUDE.md Erzeugt vom PostToolUse-Hook .vault-tools/auto-push/auto_push.py. Co-Authored-By: Claude Opus 5 <[email protected]>
12 KiB
type, title, status, summary, tags, created, updated
| type | title | status | summary | tags | created | updated | |||
|---|---|---|---|---|---|---|---|---|---|
| resource | Navigator-Werkzeuge | reference | 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. |
|
2026-08-30 | 2026-09-30 |
Navigator-Werkzeuge
Laden, wenn die MOC-Kaskade aus dem CLAUDE 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.
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
#reviewfindest du mitrg -P '(^|\s)#review(?![-\w])'. Ein einfaches\bam Ende trifft auch#review-done. Das Frontmatter-Feldtagsallein reicht nicht, im IT Workspace stehen die meisten Tags im Text.
Tote Links: linkcheck
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.
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.txtstehen 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,#reviewohne#review-done, Regelwerk-Dateien aufpending-reviewund die Sitzungsdateien von heute, damit eine Namenskollision auffällt. Dazu kommt die Zahl der Waisen außerhalb der Ausnahmen auswaisen.py, nur die Zahl, keine Liste.regelwerk_nach_edit.py(PostToolUse) startetregelwerk_check.pynach jedem Edit oder Write anCLAUDE.md,AI/Regelwerk/,.claude/agents/oder.claude/skills/und meldet Befunde zurück. Solange eine Regelwerk-Datei aufpending-reviewsteht, 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 --tagliest nur Frontmatter-Tags.--tag reviewfand 1 Notiz, inline tragen den Tag 242.vault_doctor.pymeldet tote Links auch aus Codeblöcken (92 gemeldet, 0 echte am 2026-09-03).KNOWN_TYPESkennt 3 der 22 Typen aus AI/Regelwerk/frontmatter, undextract_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-basesnimmst du, wenn du eine.base-Datei schreibst oder änderst.obsidian-markdown: Für Frontmatter gilt AI/Regelwerk/frontmatter vor dem Skill.obsidian-clifunktioniert nur bei eingeschalteter CLI, siehe oben.defuddleist 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 ÜbersichtProjekt: [README](../../../README.md), unterdocs/an der Vault-WurzelVault: [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 ausactive - Xwird irgendwanninactive - 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.mdimmer 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
_arbeitsstandein 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, Abschnitt 1, Punkt 5.
- Bewusste Ausnahmen sind
Bookstack/(Warteschlange und Archiv) und Programmausgaben unterdata/in Code-Projekten. Sie stehen als Muster in.vault-tools/linkcheck/waisen-ausnahmen.txtund 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.mdauf. - 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
alwaysUpdateLinksbleibt 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. userIgnoreFiltersin.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:
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
- Wissenslandkarte
- AI/Regelwerk/frontmatter: Schema und Tags
- AI/Regelwerk/projekte: Projekt-Tag und Projekt-Einstieg
- AI/Regelwerk/windows-shell: Python, Kodierung, Shells