This skill should be used when the user asks to "start an obsidian plugin", "create a new obsidian plugin", "obsidian plugin template", "obsidian manifest", "manifest.json obsidian", "obsidian build setup", "obsidian tsconfig", "obsidian esbuild", "obsidian sample plugin", or needs help setting up the initial project structure and build tooling for an Obsidian plugin.
From obsidian-devnpx claudepluginhub nthplusio/functional-claude --plugin obsidian-devThis skill uses the workspace's default tool permissions.
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 idea refinement into designs: explores context, asks questions one-by-one, proposes approaches, presents sections for approval, writes/review specs before coding.
Bootstrap a new Obsidian plugin from the official sample template.
Never develop in your primary vault. Create a dedicated one:
~/ObsidianDev/ ← development vault root
└── .obsidian/
└── plugins/
└── my-plugin/ ← your plugin lives here
cd ~/ObsidianDev/.obsidian/plugins
git clone https://github.com/obsidianmd/obsidian-sample-plugin my-plugin
cd my-plugin
npm install
{
"id": "my-plugin",
"name": "My Plugin",
"version": "1.0.0",
"minAppVersion": "0.15.0",
"description": "What this plugin does.",
"author": "Your Name",
"authorUrl": "https://yoursite.com",
"isDesktopOnly": false
}
Rules:
id must match the folder name exactlyid must be lowercase, kebab-caseminAppVersion — check https://github.com/obsidianmd/obsidian-releases for current versionisDesktopOnly: true only if using Node.js/Electron APIs unavailable on mobilenpm run dev # Watch mode: rebuilds on every save
npm run build # Production build
my-plugin/
├── main.ts # Your plugin code
├── main.js # Compiled (do not edit)
├── manifest.json # Required metadata
├── styles.css # Optional CSS
├── package.json # npm config
├── tsconfig.json # TypeScript config
├── esbuild.config.mjs # Build config
├── .hotreload # Optional: enables hot-reload plugin
└── .gitignore
{
"compilerOptions": {
"baseUrl": ".",
"inlineSourceMap": true,
"inlineSources": true,
"module": "ESNext",
"target": "ES6",
"allowSyntheticDefaultImports": true,
"moduleResolution": "bundler",
"importHelpers": true,
"strict": true,
"lib": ["ES6", "DOM"]
},
"include": ["**/*.ts"]
}
Install the Hot-Reload plugin in your dev vault, then touch .hotreload in your plugin directory:
touch .hotreload
Now every npm run dev recompile automatically reloads your plugin.
manifest.json changesnode_modules/
main.js
*.js.map
Keep manifest.json and styles.css in git. The compiled main.js is optional — some authors ship it, others build on install.
Read ${CLAUDE_PLUGIN_ROOT}/skills/obsidian-dev/references/getting-started.md for the full setup walkthrough.