obsidian-sdk-patterns

Featured

Production-ready Obsidian plugin patterns: typed settings with migration, safe vault operations, event auto-cleanup, workspace layout, metadata cache, and debounced file handlers. Use when hardening a plugin for release, refactoring for reliability, or learning idiomatic Obsidian TypeScript. Trigger with "obsidian patterns", "obsidian best practices", "obsidian production code", "idiomatic obsidian plugin".

AI & Automation 2,266 stars 315 forks Updated today MIT

Install

View on GitHub

Quality Score: 99/100

Stars 20%
100
Recency 20%
100
Frontmatter 20%
70
Documentation 15%
100
Issue Health 10%
50
License 10%
100
Description 5%
100

Skill Content

# Obsidian SDK Patterns ## Overview Six production patterns that prevent the most common Obsidian plugin bugs: lost settings on upgrade, null-reference crashes on deleted files, memory leaks from unregistered events, stale metadata, and UI jank from rapid file changes. Each pattern is self-contained and copy-pasteable. ## Prerequisites - A working Obsidian plugin (see `obsidian-core-workflow-a`) - TypeScript strict mode enabled (`"strictNullChecks": true` in tsconfig) - Familiarity with `Plugin.onload()` / `onunload()` lifecycle ## Instructions ### Step 1: Typed settings with versioned migration Settings break when you add or rename fields between releases. Version the settings object and migrate on load so existing users keep their data. ```typescript // src/settings.ts interface PluginSettingsV1 { apiKey: string; interval: number; } interface PluginSettingsV2 { version: 2; apiKey: string; syncInterval: number; // renamed from "interval" excludedFolders: string[]; // new field theme: "default" | "minimal"; } // Current version is always the latest type PluginSettings = PluginSettingsV2; const DEFAULTS: PluginSettings = { version: 2, apiKey: "", syncInterval: 300, excludedFolders: [], theme: "default", }; export async function loadSettings(plugin: Plugin): Promise<PluginSettings> { const raw = (await plugin.loadData()) as any; if (!raw) return { ...DEFAULTS }; // Migrate v1 -> v2 if (!raw.version || raw.version < 2) { raw....

Details

Author
jeremylongshore
Repository
jeremylongshore/claude-code-plugins-plus-skills
Created
7 months ago
Last Updated
today
Language
Python
License
MIT

Integrates with

Similar Skills

Semantically similar based on skill content — not just same category

AI & Automation Featured

obsidian-install-auth

Set up Obsidian plugin development environment with Node.js and TypeScript. Use when starting a new plugin project, configuring the dev environment, or initializing Obsidian plugin development from scratch. Trigger with phrases like "obsidian setup", "obsidian plugin dev", "create obsidian plugin", "obsidian development environment".

2,266 Updated today
jeremylongshore
AI & Automation Featured

obsidian-security-basics

Implement secure Obsidian plugin development practices. Covers credential storage, input validation, XSS prevention, network security, URI handler safety, and Electron security. Use when handling user data, storing API keys, making network requests, or preparing for community plugin submission. Trigger with phrases like "obsidian security", "secure obsidian plugin", "obsidian data protection", "obsidian privacy", "obsidian api key storage".

2,266 Updated today
jeremylongshore
AI & Automation Featured

obsidian-data-handling

Implement vault data backup, sync, and recovery strategies. Use when building backup features, implementing data export, or handling vault synchronization in your plugin. Trigger with phrases like "obsidian backup", "obsidian sync", "obsidian data export", "vault backup strategy".

2,266 Updated today
jeremylongshore
Data & Documents Solid

obsidian

Comprehensive guidelines for Obsidian.md plugin development including ESLint rules from eslint-plugin-obsidianmd v0.3.0, TypeScript best practices, memory management, API usage (requestUrl vs fetch), UI/UX standards, popout window compatibility, community.obsidian.md submission process, and Scorecard optimization. Use when working with Obsidian plugins, main.ts files, manifest.json, Plugin class, MarkdownView, TFile, vault operations, or any Obsidian API development.

143 Updated 3 days ago
gapmiss
AI & Automation Featured

obsidian-reference-architecture

Implement Obsidian reference architecture with best-practice project layout. Use when designing new plugins, reviewing project structure, or establishing architecture standards for Obsidian development. Trigger with phrases like "obsidian architecture", "obsidian project structure", "obsidian best practices", "organize obsidian plugin".

2,266 Updated today
jeremylongshore