CommunityCodierung & Entwicklunggithub.com

EastDong314/agent-skills

Verwaltet Rickys lokales Obsidian-Wissensarchiv (Standard: $HOME/workspace/notes): Erstellen, Lesen, Aktualisieren, Löschen, Suchen, Umstrukturieren, Importieren (ingest), Prüfen (lint), Indizieren und Organisieren von Notizen.

Was ist agent-skills?

Dieses Skill-Bündel ermöglicht es KI-Coding-Agenten (Codex, DSH und pi), Rickys lokales Obsidian-Archiv unter `${OBSIDIAN_VAULT:-$HOME/workspace/notes}` umfassend zu verwalten. Es stellt einen gebündelten Python-Helfer (`obsidian_notes.py`) für deterministische CRUD-, Such-, Index-, Log-, Lint-, Base- und Canvas-Operationen bereit, der sich auf den Archiv-Pfad beschränkt und Schreibzugriffe außerhalb davon verweigert. Das Skill definiert ein Drei-Schichten-Modell (Rohquellen, Wiki-Notizen, Schema) und enthält detaillierte Anleitungen zur Arbeit mit Obsidian-spezifischem Markdown wie Wikilinks, Embeds, Callouts, YAML-Frontmatter, Properties, Bases und JSON-Canvas. Es unterstützt auch das Öffnen von Notizen in der lokalen Obsidian-App (Flatpak oder URI-Schema), die Verwendung des Obsidian-CLI für App-gesteuerte Aktionen und das Clippen von Webinhalten mit Defuddle oder alternativen Werkzeugen. Damit wird sichergestellt, dass alle Archiv-Operationen konsistent, sicher und mit Obsidian-Konventionen kompatibel sind.

Funktioniert mit~Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/EastDong314/agent-skills/tree/HEAD/skills/obsidian-notes

Installed? Explore more Codierung & Entwicklung skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Obsidian Notes

Betriebskontext

Verwende das lokale Archiv unter ${OBSIDIAN_VAULT:-$HOME/workspace/notes}. Behandle es als benutzereigenes Wissensarchiv und eine Markdown-Codebasis: Bewahre nicht verwandte Änderungen auf, vermeide vollständige Neuschreibungen, sofern nicht angefordert, und halte Notizdateinamen sowie Links Obsidian-kompatibel.

Dieses Archiv ist normalerweise das Arbeitsverzeichnis des Agenten, daher kann für gewöhnliche Notizarbeit die integrierte Dateiwerkzeuge (Codex: read/apply_patch; DSH und pi: read/edit/write) verwendet werden. Für alles außerhalb des Archivs frage vor dem Schreiben.

Dieses Skill ist ein gemeinsames Bündel für Codex, pi und DSH. Wähle das Basisverzeichnis, das zum aktuellen Agenten passt, und verwende dann $HELPER in jedem folgenden Befehl:

# DSH (kanonische Quellkopie)
export SKILL_DIR="$HOME/.dsh/skills/obsidian-notes"
# Codex
# export SKILL_DIR="$HOME/.codex/skills/obsidian-notes"
# pi
# export SKILL_DIR="$HOME/.pi/agent/skills/obsidian-notes"

export HELPER="$SKILL_DIR/scripts/obsidian_notes.py"
python3 "$HELPER" --help

Wenn SKILL_DIR in der aktuellen Shell noch nie exportiert wurde, exportiere es entweder pro Befehl neu oder löse scripts/obsidian_notes.py relativ zum Skill-Basisverzeichnis auf, das der Harness für dieses Skill meldet. Verwende python3 (der Helfer verwendet nur die Standardbibliothek; weiche nur auf python aus, wenn python3 nicht vorhanden ist).

Bevorzuge diesen gebündelten Helfer für deterministische CRUD-, Index-, Log-, Lint-, Base- und Canvas-Operationen. Er nutzt standardmäßig das Archiv und verweigert Pfade außerhalb davon.

Verwende die lokale Obsidian-App oder das obsidian://-URI-Schema, um Notizen zu öffnen, wenn sinnvoll. Unter Linux Flatpak ist die App-ID md.obsidian.Obsidian; normalerweise gibt es kein obsidian-Binary im PATH.

Dieses Skill ist ein lokales, archivspezifisches Superset der Muster aus kepano/obsidian-skills: Obsidian Flavored Markdown, Bases, JSON Canvas, CLI-Nutzung und saubere Webextraktion. Halte diese Bereiche in einem Workflow, sodass Archiv-Operationen auf ${OBSIDIAN_VAULT:-$HOME/workspace/notes} beschränkt bleiben.

Wissensarchiv-Modell

Verwende ein Drei-Schichten-Modell für umfangreichere Wissensarbeit:

  • Rohquellen: benutzergestellte Artikel, PDFs, Ausschnitte, Besprechungsnotizen, Screenshots oder Transkripte. Behandle diese als Quelle der Wahrheit; schreibe sie nicht um oder lösche sie, es sei denn, es wird ausdrücklich darum gebeten.
  • Wiki-Notizen: strukturierte Markdown-Seiten, die der Agent erstellen und pflegen kann, indem er zusammenfasst, synthetisiert, verlinkt und aktualisiert.
  • Schema: dieses Skill plus archivlokale Konventionsnotizen unter 技术/00-System/ und dem Obsidian-Anleitungsordner. Suche nach Notizen über Archivnutzung, Taxonomie und Obsidian-Konventionen, bevor du nicht-triviale Änderungen vornimmst.

Archivlokale Schema-Notizen, die es wert sind, zuerst gelesen zu werden: AGENTS.md (Archiv-Wurzel, archivweite Regeln), 技术/AGENTS.md (lokale Regeln für 技术/), 技术/00-System/目录结构说明.md, 技术/00-System/全局维护规则.md, 技术/00-System/分类与标签规范.md, 技术/00-System/知识库使用说明.md, 技术/00-System/文档模板说明.md und 技术/10-个人效率与环境/Obsidian/Obsidian知识管理使用规范.md.

Bekannte Archiv-Konventionen, die zu beachten sind:

  • Der Inhalt ist auf Chinesisch verfasst; Notizen sind Markdown mit YAML-Frontmatter, das mindestens tags und related enthält, und normalerweise title/aliases/created/updated/type/status/source.
  • Stammordner sind AI/ (Hauptwissensarchiv, nummerierte Abschnitte), plus 开发/, 日记/, 零星想法/, 项目/.
  • Unsichere Klassifikation gehört in 98-待整理; veralteter Inhalt gehört in 99-归档. Erstelle diese Ordner nur, wenn etwas sie tatsächlich benötigt.
  • Bevorzuge die Aktualisierung einer bestehenden hochwertigen Notiz gegenüber deren Überschreibung; wenn ein sicherer Merge unmöglich ist, erstelle eine neue Datei mit einem „待合并"-Suffix.

Lies bei nicht-trivialen Arbeiten zuerst die relevanten Schema-Notizen. Das Ziel ist die Anhäufung von Wissen: aktualisiere bestehende Seiten, Links, Indexeinträge und Protokolle, sodass zukünftige Sitzungen denselben Kontext nicht von Grund auf neu entdecken müssen.

Arbeitsablauf

  1. Kläre die Operation aus der Benutzeranfrage: Erstellen, Lesen, Aktualisieren, Löschen, Suchen, Importieren, Abfragen, Prüfen, Organisieren, Öffnen, Erstellen einer Base, Erstellen eines Canvas, Ausschneiden einer Webquelle oder Debuggen des Obsidian-Verhaltens.
  2. Überprüfe vorhandene Notizen, bevor du etwas änderst:
    • Verwende rg in Bash oder die eigenen Inhalts-/Pfadsuchwerkzeuge des Agenten für Inhalts- und Pfadsuche.
    • Verwende die Befehle search, read oder list des Helfers für archivbeschränkte Pfade.
    • Lese Archiv-Schema-Notizen, wenn Struktur, Taxonomie oder langfristige Wartung wichtig ist.
    • Überprüfe .obsidian/ nur, wenn die App-Konfiguration relevant ist.
  3. Bewahre die Obsidian-Semantik:
    • Verwende Wiki-Links wie [[Target Note]] oder [[Target Note|Alias]] für interne Verweise.
    • Verwende Überschriften-Links [[Target Note#Heading]] und Block-Links [[Target Note#^block-id]], wenn der Benutzer präzise Verweise benötigt.
    • Verwende Tags in Frontmatter für stabile Klassifikation; verwende Inline-#tags nur, wenn sie Teil des Fließtextes sind.
    • Pflege YAML-Frontmatter für Metadaten, Daten, Aliasse, Status, Quelle, Projekt, Bereich, Modell, Host und nächste Aktionen.
    • Bevorzuge Obsidian-Properties und Bases-kompatibles Frontmatter für strukturierte Felder. Verwende Dataview-Inline-Felder wie status:: active nur, wenn der Benutzer explizit nach Dataview-Abfragen, Inline-Feldern oder einem Dataview-Dashboard fragt.
    • Bevorzuge relative Embeds ![[file.png]] oder ![[Note#Heading]] beim Einbetten von Archivinhalten.
    • Verwende Callouts nur für Inhalte, die von visueller Hervorhebung profitieren: Zusammenfassungen, Warnungen, Beispiele, Entscheidungen, Aufgaben und Fragen.
  4. Nimm gezielte Änderungen mit dem Patch-/Bearbeitungswerkzeug des Agenten vor (Codex: apply_patch; DSH und pi: edit) oder verwende write/den Helfer für das vollständige Erstellen oder Ersetzen von Notizen. Lies eine Datei, bevor du sie bearbeitest oder ersetzt.
  5. Aktualisiere oder generiere für dauerhafte Änderungen den Index neu und hänge einen Protokolleintrag an.
  6. Überprüfe nach Änderungen, indem du die geänderte Datei liest, Links/Suchergebnisse prüfst, .base- oder .canvas-Dateien validierst, falls vorhanden, und optional die Notiz in Obsidian öffnest.

Notiz-Qualitätsregeln

Erstelle für neue Notizen Notizen, die innerhalb von Obsidian nützlich sind, nicht reine Markdown-Dumps:

  • Beginne mit YAML-Frontmatter, es sei denn, der Zielordner hat eine eindeutige gegenteilige Konvention.
  • Füge aliases hinzu, wenn das Konzept alternative Namen hat.
  • Füge tags hinzu, die nach Möglichkeit mit der vorhandenen Archiv-Taxonomie übereinstimmen.
  • Füge einen prägnanten ersten Absatz hinzu, der angibt, worum es in der Notiz geht.
  • Füge Abschnitte mit Überschriften hinzu, die Backlinking ermöglichen.
  • Füge ## 相关链接 oder ## Links mit Wiki-Links zu relevanten vorhandenen Notizen hinzu. Passe dich der vorhandenen lokalisierten Überschrift an, die der Zielordner bereits verwendet: nummerierte AI/-Ordner verwenden ## 相关链接, Projektnotizen können beides verwenden.
  • Setze strukturierte Felder standardmäßig in YAML-Frontmatter, damit Obsidian-Properties und Bases sie bearbeiten, sortieren und filtern können. Verdopple dasselbe Feld nicht sowohl als Frontmatter als auch als key:: value im Textkörper, es sei denn, der Benutzer fordert Dataview-Inline-Felder an.
  • Füge für Projekt- oder Aufgabennotizen umsetzbare Status- und nächste-Schritt-Felder hinzu.
  • Verlinke für langlebige Wissensnotizen Behauptungen mit Quellnotizen und verwandten Konzepten.

Lies references/obsidian-patterns.md (unter $SKILL_DIR), wenn du neue Notizvorlagen erstellst, die Notizstruktur reparierst oder entscheidest, wie Frontmatter, Tags, Backlinks, Dataview, Indexdateien, Protokolle und Quellenimport verwendet werden sollen.

Obsidian Markdown-Funktionen

Verwende diese Syntaxfunktionen, wenn sie die Notiz innerhalb von Obsidian nützlicher machen:

  • Wikilinks: [[Note]], [[Note|Alias]], [[Note#Heading]], [[Note#^block-id]], [[#Same-note heading]].
  • Embeds: ![[Note]], ![[Note#Heading]], ![[image.png|300]], ![[document.pdf#page=3]], ![[Canvas.canvas]], ![[View.base#View Name]].
  • Callouts: > [!note], > [!warning] Title, > [!todo]- Collapsed, mit verschachtelten zitierten Zeilen für Inhalt.
  • Kommentare: %%hidden text%% oder Blockkommentare für agentenexklusive Anmerkungen, die nicht gerendert werden sollen.
  • Hervorhebung/Mathematik/Diagramme: ==highlight==, Inline $math$, Block $$math$$ und eingerahmt mermaid.
  • Fußnoten: [^1]-Verweise, Definitionen und Inline-Fußnoten.

Formatiere Notizen nicht übermäßig. Bevorzuge normales Markdown, bis eine Obsidian-Erweiterung die Navigation, den Abruf oder die Darstellung verbessert.

Bases

Verwende .base-Dateien, wenn der Benutzer datenbankähnliche Ansichten von Notizen wünscht, Aufgabenlisten, Leselisten, Projekt-Dashboards, gefilterte Indizes oder eigenschaftsgesteuerte Tabellen/Karten/Listen/Karten.

Base-Dateien sind YAML. Baue sie um:

  • filters: globale und ansichtsspezifische Ausdrücke wie file.hasTag("project"), file.inFolder("Daily Notes"), status == "active".
  • formulas: berechnete Felder wie Tage bis zur Fälligkeit, Statusbezeichnungen, Wortschätzungen oder abgeleitete Links.
  • properties: Anzeigenamen und Konfiguration für Notiz-, Datei- und Formelfelder.
  • summaries: Aggregat-Formeln wie Durchschnitt, Summe, Min, Max, Neueste, Geprüft, Leer, Gefüllt, Einzigartig.
  • views: Tabelle, Karten, Liste oder Kartenansichten mit expliziter order.

Regeln:

  • Setze Filter- und Formelausdrücke in Anführungszeichen, insbesondere wenn sie :, #, Klammern, Vergleichsoperatoren oder verschachtelte Anführungszeichen enthalten.
  • Wickle Formeln, die doppelte Anführungszeichen enthalten, in einfache Anführungszeichen: 'if(done, "Yes", "No")'.
  • Datumssubtraktion gibt eine Dauer zurück. Greife auf .days, .hours usw. vor numerischen Funktionen zu.
  • Schütze optionale Eigenschaften mit if(property, expression, fallback).
  • Validiere nach der Bearbeitung: python3 "$HELPER" validate-base "Dashboards/Projects.base".

JSON Canvas

Verwende .canvas-Dateien, wenn der Benutzer nach einer visuellen Karte, einem Forschungsboard, einem Flussdiagramm, einer Abhängigkeitskarte, einer Projektübersicht oder einem Canvas fragt.

Canvas-Dateien sind JSON mit den Arrays nodes und edges auf oberster Ebene:

  • Knoten erfordern id, type, x, y, width und height.
  • Knotentypen sind text, file, link und group.
  • Kanten erfordern id, fromNode und toNode; optionale Seiten sind top, right, bottom, left.
  • Generiere eindeutige 16-stellige hexadezimale Kleinbuchstaben-IDs.
  • Verwende echte Zeilenumbrüche in JSON-String-Werten, nicht wörtliches \n, es sei denn, der Text soll diese Zeichen anzeigen.
  • Lasse 50-100 px zwischen Knoten, richte sie an einem Raster aus und halte Gruppenknoten groß genug, um ihre untergeordneten Elemente zu enthalten.
  • Validiere nach der Bearbeitung: python3 "$HELPER" validate-canvas "Maps/Topic.canvas".

Web-Clipping und Quellenextraktion

Wenn ein Benutzer eine URL zum Import in das Archiv bereitstellt:

  • Bevorzuge defuddle parse <url> --md, wenn ein lokaler defuddle-Befehl vorhanden ist; er extrahiert lesbares Markdown und entfernt Navigations-Müll.
  • defuddle ist hier standardmäßig nicht installiert; überprüfe zuerst, andernfalls verwende die Web-Fetch-/Suchwerkzeuge des Agenten und speichere nur dauerhafte Fakten und Links im Archiv.
  • Verwende Defuddle nicht für URLs, die bereits auf rohes Markdown verweisen.
  • Bewahre die Quell-URL, Autor/Datum, falls verfügbar, Abrufdatum und Verarbeitungsstatus im Frontmatter auf.
  • Erstelle für lange Quellen eine Quellzusammenfassungsnotiz und aktualisiere dauerhafte Konzept-/Projekt-/Entitätsnotizen, anstatt den gesamten Artikel in die Wiki-Ebene zu werfen.

Obsidian-CLI und App

Wenn Obsidian ausgeführt wird und ein obsidian-Befehl verfügbar ist, verwende ihn für app-bewusste Aktionen:

obsidian help
obsidian read file="My Note"
obsidian search query="term" limit=10
obsidian property:set name="status" value="done" file="My Note"
obsidian backlinks file="My Note"
obsidian daily:append content="- [ ] Follow up"

Verwende für Plugin- oder Theme-Debugging app-bewusste Befehle nach Codeänderungen:

obsidian plugin:reload id=my-plugin
obsidian dev:errors
obsidian dev:console level=error
obsidian dev:screenshot path=screenshot.png
obsidian dev:dom selector=".workspace-leaf" text

Wenn die CLI nicht installiert ist oder Obsidian nicht ausgeführt wird, greife auf Archiv-Dateioperationen und das obsidian://-URI-Schema zurück. Der open-Befehl des Helfers verarbeitet bereits die Flatpak-App und den URI-Fallback:

python3 "$HELPER" open "技术/00-System/index.md"

Import (Ingest), Abfrage und Prüfung (Lint)

Verwende das Import-Verhalten, wenn der Benutzer eine Quelle bereitstellt oder darum bittet, Wissen aus einem externen Artefakt hinzuzufügen:

  • Lies die Quelle und identifiziere dauerhafte Fakten, Entscheidungen, Konzepte, Entitäten, offene Fragen und Widersprüche.
  • Suche im Archiv nach vorhandenen Seiten, bevor du neue erstellst.
  • Erstelle eine Quellzusammenfassungsnotiz nur, wenn sie später nützlich sein wird.
  • Aktualisiere relevante vorhandene Konzept-/Projekt-/Entitätsnotizen, nicht nur die neue Quellseite.
  • Füge Backlinks und related-Einträge hinzu, sodass das neue Wissen von vorhandenen Notizen aus erreichbar ist.
  • Hänge einen Protokolleintrag an, der beschreibt, was importiert wurde und welche Seiten sich geändert haben.

Verwende das Abfrage-Verhalten, wenn du aus dem Archiv antwortest:

  • Lies zuerst Index-/Schema-Notizen, wenn verfügbar.
  • Suche und lese relevante Notizen, bevor du antwortest.
  • Zitiere lokale Notizen per Wiki-Link oder Pfad in der Antwort.
  • Wenn die Antwort eine dauerhafte Synthese erzeugt, biete an, sie als Notiz zurückzuschreiben oder eine vorhandene Notiz zu aktualisieren.

Verwende das Prüf-Verhalten für Wartung:

  • Überprüfe auf fehlendes Frontmatter, fehlende verwandte Abschnitte, verwaiste Notizen, doppelte Titel, veraltete Behauptungen, fehlerhafte Links und wichtige Konzepte, denen Seiten fehlen.
  • Bevorzuge die Meldung eines fokussierten Reparaturplans, bevor du eine umfassende Bereinigung durchführst.
  • Führe für die angeforderte Bereinigung Reparaturen von Links und Metadaten in kleinen Chargen durch und protokolliere den Durchlauf.

Helfer-Befehle

Der Helfer verwendet standardmäßig ${OBSIDIAN_VAULT:-$HOME/workspace/notes} (--vault zum Überschreiben) und verweigert Pfade außerhalb des Archivs. Führe python3 "$HELPER" --help für die vollständige Befehlsliste aus.

# Suche nach Titeln und Inhalten
python3 "$HELPER" search "query"

# Lies eine Notiz mit relativem Pfad
python3 "$HELPER" read "AI/example.md"

# Erstelle eine Notiz, einschließlich übergeordneter Ordner
python3 "$HELPER" create "AI/example.md" --title "Beispiel" --tags projekt,aktiv --body $'# Beispiel\n\n...'

# Ersetze eine Notiz nach Prüfung
python3 "$HELPER" update "AI/example.md" --body "...vollständiges Markdown..."

# Lösche nur, wenn der Benutzer explizit darum bittet
python3 "$HELPER" delete "AI/old-note.md" --yes

# Öffne eine Notiz in Obsidian
python3 "$HELPER" open "AI/example.md"

# Erstelle und validiere eine Base
python3 "$HELPER" create-base "技术/00-System/active-projects.base" --name "Aktive Projekte"
python3 "$HELPER" validate-base "技术/00-System/active-projects.base"

# Erstelle und validiere ein Canvas
python3 "$HELPER" create-canvas "AI/Maps/project-overview.canvas"
python3 "$HELPER" validate-canvas "AI/Maps/project-overview.canvas"

# Generiere einen Wiki-Stil-Index unter 技术/00-System/index.md neu
python3 "$HELPER" index

# Füge ...

[gekürzt für Übersetzung]

Verwandte Skills