The Problem

Obsidian users need a ready‑to‑use, visually consistent theme that can be customized without starting from scratch. Existing themes often require manual CSS tweaks or lack a clear migration path from other styles, leading to fragmented vault appearances.

What This Does

obsidian-baseline supplies a complete SCSS‑based theme (81 SCSS files under src/) plus pre‑built CSS assets (theme.css, docs/main.css). It ships with a Style Settings integration, a marketplace of community presets (docs/marketplace/preset/*.json), and migration tooling (docs/migration/*). The theme’s visual assets live in img/ and snippets/; large font files (snippets/baseline-extension-font*.css) provide fallback glyphs for Asian scripts.

How It Is Wired

Execution starts when a user installs the theme in Obsidian: the app loads manifest.json and reads theme.css. The CSS is generated from the SCSS hierarchy, where each top‑level file (e.g., src/theme.scss) @imports component files such as src/app/*.scss, src/color-schemes/*.scss, and src/elements/*.scss. No runtime code runs inside the repository; the only executable scripts are documentation helpers (docs/mode.js) and a single utility script snippets/unicode-subset.py, which parses snippets/unicode-list.txt to produce a subset of Unicode characters. This script is isolated—no other module imports it, and it does not affect theme rendering. The internal import graph contains only two code files (the Python script and the JavaScript helper) with zero edges, indicating no inter‑module coupling.

How To Use It

  1. Clone the repository ``bash git clone https://github.com/moses-y/obsidian-baseline ``
  2. In Obsidian, open Settings → Appearance → Themes → Manage and point the theme folder to the cloned directory (or copy theme.css and manifest.json into the vault’s .obsidian/themes/baseline folder).
  3. Enable the Style Settings plugin to expose the numerous SCSS‑driven options.
  4. For preset migration, open docs/migration/index.html in a browser and follow the UI to import a JSON mapping from another theme.
  5. To generate a custom Unicode subset, run the Python helper (requires Python 3): ``bash python snippets/unicode-subset.py > custom-unicode.css ``

Real‑World Use

A knowledge‑base team standardizes on obsidian-baseline across all vaults. Each vault’s style-settings.json is version‑controlled; when a new visual requirement emerges, a designer edits src/color-schemes/*.scss, recompiles with a local Sass build, and pushes the updated theme.css. The marketplace presets (docs/marketplace/preset/*.json) let new members adopt a curated look instantly.

Code Health & Issues

  • Medium – Broad exception handlingsnippets/unicode-subset.py catches all exceptions, potentially hiding errors.
  • Medium – Large binary assetssnippets/baseline-extension-font-cn.css (7.5 MB), baseline-extension-font.css (6.6 MB), baseline-extension-font-jp.css (5.9 MB) inflate clone size; LFS or external storage is recommended.
  • Medium – No test suite – repository contains no test files; code paths are unverified.
  • Medium – No CI/CD.github/ only holds issue templates and release config; automated builds or linting are absent.
  • License presentLICENSE.txt is included, but no lockfile or Dockerfile.

The Bottom Line

obsidian-baseline delivers a well‑structured, highly customizable Obsidian theme with solid documentation and a marketplace of presets. It lacks automated testing, CI, and handles large font assets inefficiently, which may hinder large‑scale deployments. Ideal for teams comfortable managing static assets manually and willing to add their own quality‑gate processes.