michellegdyason1k downloadsLearn theme development visually, then graduate to standalone CSS.
Theme School is a visual learning studio for making Obsidian themes without starting from a blank CSS file. Change understandable controls, watch the pocket preview react, and see the real CSS being written beside it. When you are ready, export a normal standalone Obsidian theme.
The intended final step is to uninstall Theme School. Your exported theme continues to work without the plugin.
theme.css in its own scrollable panelColour professionals and web developers do not usually memorise every colour code. Colour pickers, palettes, design tools, and browser inspectors are normal parts of CSS work; Theme School gives you that same visual bridge while showing the code it produces.
Theme School's font controls use Obsidian's override variables, so a selection in Theme School can take precedence over the font selected in Settings → Appearance while the preview is active.
On desktop, Import fonts from this device asks the operating system for installed font family names. Theme School does not upload, bundle, or copy font files. Imported names and your choices stay in your vault's local plugin settings.
An exported theme can name a commercial or system font, but it cannot redistribute that font. The font must also be installed on any other device that opens the theme; otherwise the exported fallback font is used. Chalkboard is normally available on Apple systems. Dreaming Outloud appears only when its font files are legitimately installed on the device.
A theme can style Obsidian, but it cannot provide an interactive teaching interface. Theme School is therefore a plugin that produces themes. The exported theme.css and manifest.json have no dependency on the plugin.
main.js, manifest.json, and styles.css from the latest GitHub release.plugins/theme-school if it does not already exist. The default path is .obsidian/plugins/theme-school.If you have changed Obsidian's configuration-folder name, use that folder instead of .obsidian.
<your-config-folder>/themes/<your-theme-name>/theme.css and connect your choices to the declarations.Start with a blank slate clears Theme School's saved choices. Obsidian does not expose a safe public plugin command for disabling the selected theme, so choose Default under Settings → Appearance → Themes if you also want to remove the theme currently styling Obsidian.
If an exported theme folder is visible on disk but not in the Appearance selector, confirm that the folder contains both theme.css and manifest.json, then restart Obsidian. Theme School now creates the expected folder structure automatically.
Clone this repository into .obsidian/plugins/theme-school in a separate test vault, then run:
npm install
npm run check
npm run lint
npm run build
For watch-mode development, run npm run dev. The release assets required by Obsidian are main.js, manifest.json, and styles.css.
Theme School has no telemetry and does not upload your theme, font list, or clipboard contents. The Copy buttons write only the generated theme.css or manifest.json you deliberately ask to copy; Theme School never reads the clipboard.
GitHub Actions builds each public release and publishes signed build-provenance attestations for main.js, manifest.json, and styles.css. You can verify a downloaded asset with gh attestation verify <filename> --repo MichelleGDyason/theme-school.
If Theme School helps you learn to make your own themes, you can support Michelle's work:
MIT