claude-to-obsidianlisted
Install: claude install-skill rohitguta2432/agentic-os-skills
# claude-to-obsidian
Mirrors Claude Code session transcripts (`~/.claude/projects/**/*.jsonl`) into the
Obsidian vault at `~/Documents/wiki/chats/code/` as clean markdown — one note per
session, with YAML frontmatter, auto-extracted `#tags`, and `[[wikilinks]]` back
into the vault.
## Pipeline
1. **`claude-extract`** (`claude-conversation-extractor`, uv tool) — JSONL → markdown.
2. **`claude_to_obsidian.py`** (bundled in `scripts/`) — adds frontmatter, tags from
`KEYWORD_TAG_MAP`, wikilinks; files notes into `<vault>/chats/code/`.
Both are orchestrated by `scripts/sync.sh`, which **self-heals** (installs the
extractor via `uv` if missing) and is **idempotent** (safe to re-run / schedule).
## Quick start
```bash
# Full catch-up — export ALL sessions, file into the vault
bash ~/.claude/skills/claude-to-obsidian/scripts/sync.sh
# Fast incremental — only the N most recent sessions (good for hooks/cron)
bash ~/.claude/skills/claude-to-obsidian/scripts/sync.sh recent 10
# Preview without writing anything
DRY_RUN=1 bash ~/.claude/skills/claude-to-obsidian/scripts/sync.sh
```
The script prints how many notes the vault holds when done. To verify the gap before
running: compare `find ~/.claude/projects -name '*.jsonl' | wc -l` (total sessions)
against `ls ~/Documents/wiki/chats/code/*.md | wc -l` (already archived).
## Automatic tracking ("track all conversations")
The pipeline only runs when invoked. For continuous tracking, install ONE of:
- **Daily cron** (simple, por