Obsidian Sync turns coding sessions into structured notes inside an Obsidian vault and lets you recall that knowledge later with local search.
This repository now builds two plugin targets from a shared prompt source:
The plugin payloads live under those target directories. The only repo-root exception is Claude's .claude-plugin, which stays at the root for production use:
claude/obsidian-sync/.claude-plugin+.claude-plugincodex/plugins/obsidian-sync+codex/.agents
- Multi-agent session capture for reports, learnings, follow-up tasks, and ideas
- qmd-based local recall with semantic and keyword search
- Obsidian-native output with wikilinks, callouts, frontmatter, and
.canvasfiles - Dashboard and Bases templates for sessions, learnings, tasks, and ideas
- Shared template source for Claude and Codex runtimes
Generate the target artifacts first:
uv run scripts/build_plugin.py --target allIf you publish this plugin through Claude's marketplace flow, the legacy install commands from the original README still apply:
/plugin marketplace add jylkim/obsidian-sync
/plugin install obsidian-sync@jylkim-obsidian-syncFor local development or local use from this repository, point Claude at the repository root. The root .claude-plugin metadata resolves the actual plugin payload under claude/obsidian-sync.
claude --plugin-dir /path/to/repoThe generated Codex target is namespaced under codex. For a home-local install, keep your personal marketplace at ~/.agents/plugins/marketplace.json, and install the plugin payload under ~/.codex/plugins/obsidian-sync.
If you do not already have a Codex marketplace file:
mkdir -p ~/.agents/plugins ~/.codex/plugins
cp -R codex/plugins/obsidian-sync ~/.codex/plugins/obsidian-sync
cat > ~/.agents/plugins/marketplace.json <<'EOF'
{
"name": "obsidian-sync",
"interface": {
"displayName": "Obsidian Sync"
},
"plugins": [
{
"name": "obsidian-sync",
"source": {
"source": "local",
"path": "./.codex/plugins/obsidian-sync"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Productivity"
}
]
}
EOFIf you already have ~/.agents/plugins/marketplace.json, merge an obsidian-sync plugin entry into your existing file and set its source.path to ./.codex/plugins/obsidian-sync, then copy or symlink the payload:
mkdir -p ~/.codex/plugins
ln -sfn "$(pwd)/codex/plugins/obsidian-sync" ~/.codex/plugins/obsidian-syncAfter updating the marketplace file and plugin path, restart Codex or reopen the workspace so it reloads the plugin registry.
datacontains shared plugin metadata and runtime profilespromptscontains shared and target-specific Jinja templatesscripts/build_plugin.pyrenders generated artifactsclaudecontains the generated Claude plugin payloadcodexcontains the generated Codex plugin payload.claude-plugincontains the Claude marketplace metadatacodex/.agentscontains the Codex marketplace metadata
uv run scripts/build_plugin.py --target all
uv run scripts/build_plugin.py --check--target claude and --target codex are also supported.
Running the build rewrites the selected target roots and removes legacy generated outputs from older layouts.
- Config resolves from
OBSIDIAN_SYNC_CONFIGfirst. - On non-Windows systems, the default config path is
${XDG_CONFIG_HOME:-~/.config}/obsidian-sync/config.yaml. - On Windows, the Codex target documents
%APPDATA%\obsidian-sync\config.yaml. - Default vault folders are
Agent/Sessions,Agent/Learnings,Agent/Tasks,Agent/Ideas,Agent/Ideas/canvas, andAgent/Dashboard.
| Tool | Purpose |
|---|---|
| Obsidian | Note-taking app and vault host |
| Obsidian CLI | Vault CRUD operations and daily note integration |
| qmd | Local indexing and recall |
obsidian:obsidian-markdown skill |
Obsidian-native note formatting |
obsidian:json-canvas skill |
.canvas generation for idea diagrams |
MIT