/ Directory / Playground / obsidian-plugin-skill
● Community gapmiss ⚡ Instant

obsidian-plugin-skill

by gapmiss · gapmiss/obsidian-plugin-skill

An Agent Skill that teaches Claude how to build Obsidian plugins — Plugin API, manifest.json, release flow.

obsidian-plugin-skill loads the Obsidian Plugin API shape into Claude's working memory: manifest.json + versions.json, main.ts plugin skeleton, settings tabs, commands, ribbon icons, editor extensions, and the release-via-GitHub-tag flow the official Community store expects. Useful when you want to prototype a plugin in an afternoon.

Why use it

Key features

Live Demo

What it looks like in practice

obsidian-plugin-skill.replay ▶ ready
0/0

Install

Pick your client

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "obsidian-plugin-skill": {
      "command": "git",
      "args": [
        "clone",
        "https://github.com/gapmiss/obsidian-plugin-skill",
        "~/.claude/skills/obsidian-plugin-skill"
      ],
      "_inferred": true
    }
  }
}

Open Claude Desktop → Settings → Developer → Edit Config. Restart after saving.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "obsidian-plugin-skill": {
      "command": "git",
      "args": [
        "clone",
        "https://github.com/gapmiss/obsidian-plugin-skill",
        "~/.claude/skills/obsidian-plugin-skill"
      ],
      "_inferred": true
    }
  }
}

Cursor uses the same mcpServers schema as Claude Desktop. Project config wins over global.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "obsidian-plugin-skill": {
      "command": "git",
      "args": [
        "clone",
        "https://github.com/gapmiss/obsidian-plugin-skill",
        "~/.claude/skills/obsidian-plugin-skill"
      ],
      "_inferred": true
    }
  }
}

Click the MCP Servers icon in the Cline sidebar, then "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "obsidian-plugin-skill": {
      "command": "git",
      "args": [
        "clone",
        "https://github.com/gapmiss/obsidian-plugin-skill",
        "~/.claude/skills/obsidian-plugin-skill"
      ],
      "_inferred": true
    }
  }
}

Same shape as Claude Desktop. Restart Windsurf to pick up changes.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "obsidian-plugin-skill",
      "command": "git",
      "args": [
        "clone",
        "https://github.com/gapmiss/obsidian-plugin-skill",
        "~/.claude/skills/obsidian-plugin-skill"
      ]
    }
  ]
}

Continue uses an array of server objects rather than a map.

~/.config/zed/settings.json
{
  "context_servers": {
    "obsidian-plugin-skill": {
      "command": {
        "path": "git",
        "args": [
          "clone",
          "https://github.com/gapmiss/obsidian-plugin-skill",
          "~/.claude/skills/obsidian-plugin-skill"
        ]
      }
    }
  }
}

Add to context_servers. Zed hot-reloads on save.

claude mcp add obsidian-plugin-skill -- git clone https://github.com/gapmiss/obsidian-plugin-skill ~/.claude/skills/obsidian-plugin-skill

One-liner. Verify with claude mcp list. Remove with claude mcp remove.

Use Cases

Real-world ways to use obsidian-plugin-skill

How to build and release your first Obsidian plugin

👤 Obsidian power users who want to scratch an itch ⏱ ~120 min intermediate

When to use: You have a concrete workflow improvement and want a plugin in a day.

Prerequisites
  • Node 18+ — nvm install 18
  • A local vault for testing — Create a new Obsidian vault just for development
  • Skill cloned — git clone https://github.com/gapmiss/obsidian-plugin-skill ~/.claude/skills/obsidian-plugin-skill
Flow
  1. Scaffold the plugin
    Scaffold an Obsidian plugin called 'smart-outline' with a command and a settings tab.✓ Copied
    → Folder with manifest, main.ts, build config
  2. Add the feature
    Implement: on command, open a modal showing the outline of the active note.✓ Copied
    → Working modal reading from the active MarkdownView
  3. Side-load and test
    Install into the dev vault's plugins folder and reload Obsidian.✓ Copied
    → Plugin shows up, command works
  4. Prepare a release
    Create versions.json and tag a v0.1.0 release.✓ Copied
    → GitHub release with main.js + manifest.json attached

Outcome: A working, installable plugin you can submit to the Community store.

Pitfalls
  • Forgetting versions.json — Community store rejects — Skill reminds; always keep it in sync with manifest.json
  • Referencing Obsidian internals that aren't part of the API — Stick to the public API; treat internals as volatile
Combine with: filesystem · github

Add a proper settings tab to an existing plugin

👤 Existing plugin authors improving UX ⏱ ~30 min intermediate

When to use: Your plugin has grown and needs user-configurable options.

Flow
  1. Design the settings
    Based on my plugin's README, what settings should be user-configurable?✓ Copied
    → Short list with rationale
  2. Implement PluginSettingTab
    Add a PluginSettingTab with those controls.✓ Copied
    → Settings UI in Obsidian

Outcome: A settings tab users can actually use.

Pitfalls
  • Too many settings — Ruthlessly cut — unused settings are clutter

Combinations

Pair with other MCPs for X10 leverage

obsidian-plugin-skill + filesystem

Read an existing plugin and extend it

Read my-plugin/, add a new command that exports the active note as PDF.✓ Copied
obsidian-plugin-skill + github

Automate tagging and release creation

Tag v0.2.0 and publish release with the built assets.✓ Copied

Tools

What this MCP exposes

ToolInputsWhen to callCost
plugin-scaffolding plugin intent New plugin 0
feature-authoring feature spec + API surface Every feature 0
settings-tab options UX improvements 0
release-flow version bump Before publishing 0

Cost & Limits

What this costs to run

API quota
none
Tokens per call
5–20k per plugin
Monetary
free
Tip
Work feature-by-feature rather than dumping a full plugin spec on Claude

Security

Permissions, secrets, blast radius

Credential storage: GitHub token for releases (if automating)
Data egress: none at skill layer

Troubleshooting

Common errors and fixes

Obsidian doesn't load the plugin

Confirm manifest.json is valid JSON and in the right vault path; reload via Ctrl+R.

Verify: cat .obsidian/plugins/my-plugin/manifest.json | jq .
Build produces no main.js

Run the esbuild command; check tsconfig target.

Verify: ls main.js

Alternatives

obsidian-plugin-skill vs others

AlternativeWhen to use it insteadTradeoff
logseqYou're on Logseq rather than ObsidianDifferent plugin API

More

Resources

📖 Read the official README on GitHub

🐙 Browse open issues

🔍 Browse all 400+ MCP servers and Skills