Skip to content

feat: Obsidian Vault — bidirectional live sync #124

Description

@diebugger-tech

Obsidian Vault Integration — Issue Roadmap

Companion issues to #124 (architecture/vision).
Each issue is self-contained and can be picked up independently.


Issue A — feat: obsidian_vault_collector.py (READ)

Depends on: nothing — standalone, PR-ready

Adds a collector that recursively reads an Obsidian vault and produces
the same output structure as feishu_auto_collector:

knowledge/{slug}/
├── messages.txt   ← Daily / Journal / Meeting Notes
├── docs/*.md      ← Projects / MOC / Evergreen
└── collection_summary.json

What it handles:

  • YAML frontmatter stripping
  • [[wikilink]] resolution
  • .obsidian/ and .trash/ excluded
  • Optional --author filter for shared vaults
  • No new dependencies (stdlib only)

I can submit this PR immediately if there's interest.


Issue B — feat: --watch flag (live sync via inotify/fsevents)

Depends on: Issue A

Adds a --watch flag to obsidian_vault_collector.py that monitors
the vault for file changes and re-runs the collector automatically:

python3 tools/obsidian_vault_collector.py --vault ~/Notes --name "Alice" --watch

Implementation:

  • Linux: inotifywait (inotify-tools)
  • macOS: fsevents via watchdog (one new optional dep)
  • Debounce: 2s after last change to avoid partial-write triggers

Turns the one-shot collector into a living skill —
vault changes, skill updates automatically, no manual step.


Issue C — feat: obsidian_vault_writer.py (WRITE)

Depends on: Issue A

New script that writes dot-skill output back into the vault as .md files:

Vault/
└── .colleague-skill/
    ├── 2024-03-15 Code Review.md
    ├── Decision Log — API redesign.md
    └── ...

Why a separate folder (.colleague-skill/):

  • Keeps generated notes separate from hand-written notes
  • Easy to exclude from collector (skip dot-folders)
  • No conflict with existing vault structure

Conflict resolution deliberately out of scope for v1 —
last-write-wins is sufficient since the skill is the only writer
to .colleague-skill/.


Issue D — feat: AGENTS.md as context bridge

Depends on: nothing — docs + convention only

An AGENTS.md file in the vault root that describes the person's
stack, projects, and preferences. All agents that follow the standard
read it automatically on startup — no repeated setup per tool.

# AGENTS.md

## Stack
- OS: NixOS + Cosmic
- Editor: Helix
- Languages: Rust, Python, Nix

## Active projects
- 3DNTerminal: 3D flip terminal emulator (egui + vte)
- colleague-skill: Obsidian connector

## AI agents
- Claude Code: ~/.claude/
- Goose: ~/.config/goose/
- OpenClaw: ~/.openclaw/

Supported agents today: Claude Code, Goose, OpenClaw, IronClaw.

This makes the vault the single source of truth across the entire
agent ecosystem — write once, all agents know.


Issue E — docs: Nix cross-platform deployment example

Depends on: nothing — docs only, no code

Adds a docs/deployment/nix.md showing how to deploy the full
Obsidian sync setup reproducibly on any platform:

  • Windows (WSL2) + Nix
  • macOS + Nix
  • Linux (any distro) + Nix
# home.nix
home.packages = with pkgs; [ gh python3 ];

home.file.".config/colleague-skill/vault-path".text =
  "/home/user/Obsidian";

systemd.user.services.obsidian-sync = {
  description = "Obsidian → dot-skill live sync";
  wantedBy = [ "default.target" ];
  serviceConfig.ExecStart =
    "python3 ~/.claude/skills/create-colleague/tools/obsidian_vault_collector.py --watch";
};

Without Nix: manual install on every machine.
With Nix: home-manager switch — done.

Target audience: the Obsidian community heavily overlaps with
Nix/NixOS users — this doc will be found and used.


Suggested order for titanwings

Priority Issue Effort Value
1 A — collector low immediate
2 E — nix docs very low community reach
3 D — AGENTS.md low ecosystem
4 B — watch flag medium living skill
5 C — writer medium full loop

Roadmap — follow-up issues

To keep this manageable, I'll submit each piece separately:

Issue Depends on
A obsidian_vault_collector.py — READ, PR-ready nothing
B --watch flag — live sync via inotify/fsevents A
C obsidian_vault_writer.py — WRITE back to vault A + B
D AGENTS.md as context bridge for all agents nothing
E Nix cross-platform deployment docs nothing

Happy to start with A immediately if the architecture looks right.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions