| Baustein | Beschreibung |
|---|---|
| Skills | Markdown-Anleitungen unter skills/, die Claude als Slash-Befehle ausführt |
| MCP-Server | Python-Prozess project-hub-mcp (stdio), gestartet über bin/run-server mit dem Python aus ~/.project-hub/venv |
| Datenbank | SQLite-Datei, standardmäßig ~/.project-hub/project-hub.db |
| Dateien | Markdown-Notizen und Anhänge unter docs_root, Wissensdokumente unter knowledge_root |
Das Plugin definiert keine Hooks. Der Server initialisiert die Datenbank beim Start und ergänzt fehlende Tabellen und Spalten selbst.
~/.project-hub/
├── config.yaml
├── project-hub.db (plus -wal und -shm im Betrieb)
├── venv/
├── knowledge/<projekttyp>/*.md
├── project-types/<typ>/ eigene Projekttypen
├── reports/ HTML-Berichte
└── exports/ JSON-Exporte
{docs_root}/<projekt-slug>/docs/
├── emails/
├── meeting-notes/
├── misc/
└── attachments/
| Tabelle | Inhalt |
|---|---|
projects |
Slug (eindeutig), Name, Typ, Status, Beschreibung, Markt, Produkte, Phase, Go-Live, Budget, Notizen, Docs-Pfad, Zeitstempel |
contacts |
Projekt, Name, Rolle, Typ (internal oder external), E-Mail, Telefon, Firma, Notizen, is_shared |
notes |
Projekt, Titel, Typ, Inhalt, Agenda, Anhänge (JSON-Liste), Dateipfad, Zeitstempel |
project_links |
Verknüpfungen zwischen zwei Projekten |
session |
genau eine Zeile: aktives Projekt und zuletzt genutzter Skill |
successor oder related. predecessor ist die umgekehrte Sicht auf ein successor.Beim Anlegen einer Notiz schreibt der Server den Text in die Datenbank und zusätzlich als Markdown-Datei in den Docs-Ordner des Projekts:
| Notiztyp | Zielordner | Datei |
|---|---|---|
meeting-notes |
meeting-notes/ |
<datum>-<titel-slug>.md |
email |
emails/ |
<datum>-<titel-slug>.md |
decision, note |
misc/ |
<datum>-<titel-slug>.md |
action-item |
misc/ |
Eintrag in der gemeinsamen Datei todo.md unter "Open" |
Die Datenbank ist die führende Quelle:
tool_update_note (und damit edit-note) schreiben nur in die Datenbank. Die Markdown-Datei behält den alten Titel, Inhalt und Unterordner.action-item, weil todo.md mehrere Aufgaben enthält.note und eine decision teilen sich misc/. Der Titel-Slug wird auf 50 Zeichen gekürzt, sodass auch verschiedene, lange Titel mit gleichem Anfang kollidieren können. Die Datenbank hält in allen Fällen beide Notizen. Ein Datum oder ein eindeutiger Zusatz am Anfang des Titels vermeidet das.{docs_root}/<slug>/docs/attachments/. Das Original bleibt unverändert.tool_add_note mit source_paths sichert die Originale im selben Aufruf, damit referenzierte Dateien nicht verloren gehen.Der Export (compose export) ist eine JSON-Datei mit Projekt, Kontakten, Notizen und Verknüpfungen (Verknüpfungen über den Slug des anderen Projekts).
rename hängt dem Slug einen Zeitstempel an. overwrite löscht das vorhandene Projekt vollständig, auch seinen Docs-Ordner mit Notiz-Markdown-Dateien und Anhängen auf der Festplatte, und legt es neu an.Der Bericht ist eine einzelne HTML-Datei, erzeugt aus einer Jinja2-Vorlage. Die Diagramme lädt die Datei beim Öffnen im Browser von cdn.jsdelivr.net (Chart.js). Ohne Internetverbindung fehlt diese Bibliothek. Die Beschriftungen sind deutsch. Der Abschnitt "Offene Aufgaben" enthält alle Notizen vom Typ action-item, ohne Erledigt-Filter.
Die Suche ist eine einfache Teilstring-Suche (SQL LIKE) ohne Index und ohne Ranking. Groß- und Kleinschreibung wird nur für ASCII-Buchstaben ignoriert, Umlaute werden exakt verglichen. % und _ im Suchbegriff wirken als Platzhalter. Notizen kommen neueste zuerst, Kontakte nach Name sortiert.