obsidian-plugin-devCreate and develop Obsidian plugins from scratch. Use when building a new Obsidian plugin, scaffolding from the sample-plugin-plus template, or developing plugin features. Covers project setup, manifest configuration, TypeScript development, settings UI, commands, ribbons, modals, and Obsidian API patterns.
Install via ClawdBot CLI:
clawdbot install davidvkimball/obsidian-plugin-devBuild production-ready Obsidian plugins using the obsidian-sample-plugin-plus template.
# Clone the template (or use GitHub's "Use this template" button)
gh repo create my-plugin --template davidvkimball/obsidian-sample-plugin-plus --public --clone
cd my-plugin
# Or clone directly
git clone https://github.com/davidvkimball/obsidian-sample-plugin-plus.git my-plugin
cd my-plugin
rm -rf .git && git init
Update these files with your plugin's info:
manifest.json:
{
"id": "my-plugin",
"name": "My Plugin",
"version": "0.0.1",
"minAppVersion": "1.5.0",
"description": "What your plugin does",
"author": "Your Name",
"authorUrl": "https://yoursite.com",
"isDesktopOnly": false
}
package.json: Update name, description, author, license.
README.md: Replace template content with your plugin's documentation.
pnpm install
pnpm obsidian-dev-skills # Initialize AI skills
./scripts/setup-ref-links.sh # Unix
# or: scripts\setup-ref-links.bat # Windows
In src/main.ts:
MyPlugin class to your plugin nameDelete styles.css if your plugin doesn't need custom styles.
pnpm dev # Watch mode β rebuilds on changes
pnpm build # Production build
pnpm lint # Check for issues
pnpm lint:fix # Auto-fix issues
pnpm test # Run unit tests
Copy build output to your vault:
# Unix
cp main.js manifest.json styles.css ~/.obsidian/plugins/my-plugin/
# Or create a symlink for development
ln -s $(pwd) ~/.obsidian/plugins/my-plugin
Enable the plugin in Obsidian Settings β Community Plugins.
Use Hot Reload plugin for automatic reloading during development.
src/main.ts)import { Plugin } from 'obsidian';
export default class MyPlugin extends Plugin {
settings: MyPluginSettings;
async onload() {
await this.loadSettings();
// Register commands, ribbons, events, views
}
onunload() {
// Cleanup: remove event listeners, views, DOM elements
}
async loadSettings() {
this.settings = Object.assign({}, DEFAULT_SETTINGS, await this.loadData());
}
async saveSettings() {
await this.saveData(this.settings);
}
}
See references/settings.md for the complete settings UI pattern.
See references/patterns.md for:
git commit or git push without explicit approvalany types: Use proper TypeScript typesmanifest.json and package.jsonversions.json with "version": "minAppVersion"pnpm build β zero errorspnpm lint β zero issuesv prefix)main.js, manifest.json, styles.css (if used)AI Usage Analysis
Analysis is being generated⦠refresh in a few seconds.
Work with Obsidian vaults (plain Markdown notes) and automate via obsidian-cli.
Create, search, and manage Bear notes via grizzly CLI.
Track water and sleep with JSON file storage
Notion API for creating and managing pages, databases, and blocks.
Smart ClawdBot documentation access with local search index, cached snippets, and on-demand fetch. Token-efficient and freshness-aware.
Work with Obsidian vaults as a knowledge base. Features: fuzzy/phonetic search across all notes, auto-folder detection for new notes, create/read/edit notes with frontmatter, manage tags and wikilinks. Use when: querying knowledge base, saving notes/documents, editing existing notes by user instructions.