Replies: 1 comment
|
This is a fantastic RFC. Moving local project documentation out of isolated silos like .omc/wiki/ and into a shared, cross-project space is exactly where the ecosystem needs to go. |
|
This is a fantastic RFC. Moving local project documentation out of isolated silos like .omc/wiki/ and into a shared, cross-project space is exactly where the ecosystem needs to go. |
Uh oh!
There was an error while loading. Please reload this page.
Problem
.omc/wiki/(the bundled LLM Wiki,skills/wiki/SKILL.md) is explicitlymodeled on Karpathy's "LLM Wiki" idea, and by design it's project-local and
git-ignored. That's the right default for project knowledge — but plenty of
users already keep a personal, durable, cross-project wiki that follows the
exact same pattern (an Obsidian vault, a Logseq graph, or just a folder of
markdown notes with YAML frontmatter). Once both exist, they diverge
silently: nothing captured in
.omc/wiki/ever reaches the store the useractually keeps long-term, and there's no bridge between the two.
Proposal:
wiki_exportAn opt-in, on-demand, one-way export from
.omc/wiki/to a configuredexternal folder:
wiki.externalSync.enabled(in.omc-config.json,the same file the rest of
wiki.*already reads from) must be explicitlyset. No filesystem access outside
.omc/wiki/happens otherwise.the export logic never mutates
.omc/wiki/.frontmatter (
omc-sync-hash: ...). Re-exporting an unchanged page is ano-op.
file wasn't created by a previous
wiki_exportrun, or was edited since,the configured
conflictPolicydecides:skip(default) leaves it alone,manualcopies the OMC-side version into<target>/_omc-sync-incoming/for the user to reconcile by hand,
overwrite-if-newercomparesfrontmatter timestamps.
categoryMaplets a category route to asubfolder under the target; a folder containing
..or an absolute pathis rejected the same way
.omc/wiki/page paths already are.rich/plain), both plain markdown +YAML. Neither shells out to anything, detects an installed app, or adds a
dependency — the target can be an Obsidian vault, a Logseq graph, or an
empty folder;
wiki_exportdoesn't know or care.Why this isn't #1890/#1928 again
I know this repo already went through this once: #1890 added an Obsidian
MCP/CLI integration (vault detection,
obsidian_*tools shelling out to theobsidianbinary), and it was reverted alongside closing #1928, with themaintainer's call being to keep app-specific integrations external to the
core repo rather than bundle them.
wiki_exportis a different shape of feature, not a resubmission of thatone: it has no CLI dependency, detects no installed app, and knows nothing
about Obsidian specifically — it writes plain markdown + YAML frontmatter to
a folder the user points it at. If that folder happens to be an Obsidian
vault, that's incidental; it works identically for a Logseq graph or a bare
folder of notes. There's no
obsidian_*tool surface here, and nothing torevert if a specific app's format ever changes.
Where this stands
I have a full implementation ready — the
wiki_exportMCP tool, theexport/conflict-resolution core, config loading, 16 new unit tests (safety
gates, idempotency, conflict handling, both rendering dialects), docs, and a
skills/wiki/SKILL.mdupdate — passing against currentdev(existingwiki test suite green,
tsc --noEmitclean, lint clean, full build clean).I'd rather confirm direction here first rather than drop an unsolicited PR,
given the history above.
Two open questions I'd want maintainer input on before opening the PR:
wiki.*currently reads from.omc-config.json, adifferent file than the
omc.jsoncsurface the rest ofdocs/settings-schema.mddocuments. Is.omc-config.jsonstill theright place for a new wiki setting, or should this (and the existing
wiki.*keys) move toomc.jsonc?invoked (
wiki_export()or/wiki export) — no SessionEnd ortimer-based auto-sync. That seemed like the safer place to start, but
happy to hear if automatic sync behind the same
enabledflag would bepreferred instead.
Happy to open the PR against
devas soon as there's a steer on either ofthese (or on the feature at all).
All reactions