Skip to content

Organize learning state as a loosely-linked Obsidian vault (journal + mental-model map + gotchas) #3

Description

@ktaletsk

Proposal

Evolve the single learning-journal.md into a loosely-linked Obsidian vault of learning state, stored at a configurable vault root. This captures the Obsidian knowledge-base crowd and matches the durable-artifact strength of bevibing/tutor-skills (935★), which is the popularity leader in the tutor space largely because it produces something you can keep and browse.

Depends on / extends #2 — the global store decided there becomes the default vault root, and the repo-key scheme is shared.

Structure

The vault root is a single Obsidian vault; each project is a folder inside it keyed by repo identity:

<vault-root>/
  [learn-codebase/]            # subfolder used only when vault-root is a user's EXISTING vault
    <repo-key>/
      index.md                 # MOC: links the notes below, landing page
      journal.md               # learner's progress: mastery map, review queue, session log
      map.md                   # mental model of the repo, in the learner's own words
      gotchas.md               # footguns, surprising couplings, tribal knowledge

Why this works

Obsidian-native details that matter

These are what make it a vault rather than markdown in folders:

  • Wiki-links between notes. journal.md, map.md, gotchas.md, and concepts within them link with [[ ]]. The mental-model map and gotchas should cross-reference shared concepts.
  • Frontmatter / tags for Dataview. Put mastery level, dates, and a #learn-codebase tag in YAML frontmatter. Payoff: a "concepts due for review across all repos" or mastery-rollup dashboard becomes a Dataview query, not a feature we build (directly advances Organize learning state as a loosely-linked Obsidian vault (journal + mental-model map + gotchas) #3).
  • MOC index per repo (index.md) as the idiomatic entry point.
  • Don't manage .obsidian/ — Obsidian creates it on first open of the default dir; an existing vault already has one.

Config file

Add a lightweight config at ~/.local/share/learn-codebase/config.yaml (created on demand), to hold the vault location when non-standard and future settings:

# all fields optional; sensible defaults when absent
vault_root: /Users/me/Documents/ObsidianVault   # default: ~/.local/share/learn-codebase
vault_subfolder: learn-codebase                  # used when vault_root is a pre-existing vault
# future: review scheduling prefs, per-repo path overrides, in-repo opt-in (#2), Anki export, etc.

Relationship to #2

Open questions

  • Config format — YAML (proposed) vs. JSON/TOML. YAML is friendliest to hand-edit.
  • Existing-vault detection — auto-detect a .obsidian/ dir at vault_root to decide whether to apply the learn-codebase/ subfolder, or always require explicit config?
  • Note granularity — start with the 3 notes + index, or allow the map/gotchas to split into multiple linked notes as a repo grows (closer to tutor-skills' per-module notes)?
  • Frontmatter schema — define the property names now so a future Dataview dashboard is stable (e.g. mastery: red|yellow|green, review_due: YYYY-MM-DD).
  • Relocation UX — when a user later sets a vault_root, do we move the existing default-store contents there automatically, or leave both and prefer config going forward?

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requesthelp wantedExtra attention is needed

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions