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. Trigger with phrases like "obsidian setup", "obsidian plugin dev", "create obsidian plugin", "obsidian development environment".
From obsidian-packnpx claudepluginhub nickloveinvesting/nick-love-plugins --plugin obsidian-packThis skill is limited to using the following tools:
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Searches prompts.chat for AI prompt templates by keyword or category, retrieves by ID with variable handling, and improves prompts via AI. Use for discovering or enhancing prompts.
Guides agent creation for Claude Code plugins with file templates, frontmatter specs (name, description, model), triggering examples, system prompts, and best practices.
Set up a complete Obsidian plugin development environment with TypeScript, esbuild, and hot-reload capabilities.
set -euo pipefail
# Clone official sample plugin
git clone https://github.com/obsidianmd/obsidian-sample-plugin.git my-obsidian-plugin
cd my-obsidian-plugin
# Remove existing git history for fresh start
rm -rf .git
git init
set -euo pipefail
# Install all dependencies
npm install
# Key dependencies included:
# - @types/node
# - typescript
# - esbuild
# - obsidian (types only - provided by Obsidian app)
# Create a dedicated development vault
mkdir -p ~/ObsidianDev/.obsidian/plugins/my-obsidian-plugin
# Link your plugin for development
# On macOS/Linux:
ln -s "$(pwd)" ~/ObsidianDev/.obsidian/plugins/my-obsidian-plugin
# On Windows (run as admin):
# mklink /D "%USERPROFILE%\ObsidianDev\.obsidian\plugins\my-obsidian-plugin" "%CD%"
{
"id": "my-obsidian-plugin",
"name": "My Obsidian Plugin",
"version": "1.0.0",
"minAppVersion": "1.0.0",
"description": "Description of your plugin",
"author": "Your Name",
"authorUrl": "https://your-website.com",
"isDesktopOnly": false
}
set -euo pipefail
# Build the plugin
npm run build
# Start development mode with hot-reload
npm run dev
| Error | Cause | Solution |
|---|---|---|
| Cannot find module 'obsidian' | Types not installed | Run npm install again |
| Plugin not showing in Obsidian | Symlink broken | Verify symlink path, restart Obsidian |
| Build failed | TypeScript errors | Check tsconfig.json configuration |
| Hot-reload not working | Missing BRAT or wrong path | Install BRAT plugin or verify symlink |
| Permission denied | Symlink requires admin | Run terminal as administrator |
my-obsidian-plugin/
├── src/
│ └── main.ts # Plugin entry point
├── styles.css # Optional: Plugin styles
├── manifest.json # Plugin metadata
├── package.json # Node dependencies
├── tsconfig.json # TypeScript config
├── esbuild.config.mjs # Build configuration
└── versions.json # Version compatibility
import { Plugin } from 'obsidian';
export default class MyPlugin extends Plugin {
async onload() {
console.log('Loading My Plugin');
}
onunload() {
console.log('Unloading My Plugin');
}
}
After successful setup, proceed to obsidian-hello-world for your first plugin feature.