Obsidian Plugin Development skill

A skill that teaches an agent to write Obsidian plugins to ESLint and community review rules and scaffolds a new plugin.

  • 196 ★ on the repository
  • Last commit
  • MIT
Skill

Extended access

Why this level

  • The `create-plugin.js` generator creates files and directories in the chosen folder.
All reasons and checks

gapmiss/obsidian-plugin-skill

Install

In your terminal, with SkillFoxx CLI

npx skillfoxx add skills/obsidian-plugin-development

Detects the agents on your machine, shows the access level and pins the version.

Other ways to install

Access and checks

How we review

Extended accessThe tool runs code or makes network calls and only reads external data.

  • The `create-plugin.js` generator creates files and directories in the chosen folder.

This is third-party code. Review the repository files before installing.

What it does

The skill gathers the `eslint-plugin-obsidianmd` rules, official Obsidian guidance and submission requirements into one knowledge base for the agent. It covers lifecycle and memory cleanup, `requestUrl` over `fetch`, security and XSS prevention, iOS and popout window compatibility, accessibility and styling with Obsidian variables. It details submitting a plugin to community.obsidian.md and raising the scanner score. For a new plugin there is a `tools/create-plugin.js` generator: it validates the name, id and description against the submission bot rules and creates `src/main.ts`, `settings.ts`, `manifest.json`, ESLint settings and an esbuild setup. Claude Code gets the `/obsidian` and `/create-plugin` commands.

Who it is for. Authors of Obsidian plugins preparing a first release or wanting to pass community review on the first try.

Good fit when

  • A new plugin is created from scratch and the generator must check the name and description against bot rules.
  • Before submission the plugin is compared with ESLint rules and scanner scoring.
  • Network calls are switched to `requestUrl` so the plugin works on mobile.
  • The settings tab is moved to the declarative `getSettingDefinitions()` API.

Not a fit when

  • You build extensions for an editor other than Obsidian.
  • You need help with user workflows in Obsidian, not development.
  • The project targets Obsidian API versions older than those covered.

Example request

Help me implement a new command in my Obsidian plugin so that it passes community review.

Limitations

The rules are tied to `eslint-plugin-obsidianmd` 0.5.1 and the Obsidian 1.13 API and need updating as new versions arrive. Older Obsidian versions need a `display()` fallback in settings, described in the UI reference. The generator asks for directory, name and description interactively. Installing dependencies and building the plugin stay on your side. Slash commands exist only in Claude Code; Codex and Windsurf invoke the skill differently.

How to disable. Delete the `obsidian` folder from `.claude/skills/` or `.agents/skills/` and the `obsidian.md` and `create-plugin.md` files from `.claude/commands/`.

FAQ

How do I install the skill?

With `npx skills add https://github.com/gapmiss/obsidian-plugin-skill --skill obsidian`. Or clone the repository and run `install-skill.sh`, which asks for the agent and directory.

Which agents are supported?

Claude Code, Codex and Windsurf: any agent with the Agent Skills standard. Claude Code has `/obsidian` and `/create-plugin` commands.

What does the plugin generator validate?

A name without the words Obsidian and Plugin, a lowercase id without `obsidian`, and a description of 10 to 250 characters ending in a full stop, exclamation or question mark.

What is inside `reference/`?

Ten reference files: memory, types, UI, files, styles, accessibility, code quality, submission, scanner and ESLint setup.

Does the skill work without the generator?

Yes, the skill alone holds the rules and references. The generator is only for scaffolding a new plugin.

Discussion

No questions or reviews yet.

Skills

A set of skills from real work: npm supply-chain audit, CLI building, Obsidian plugin release and an AGENTS.md hierarchy

SkillExtended access115Repository stars

A plugin manager for Claude Code and an agent skills installer: search a registry, install into your agent in one command.

CLIExtended access566Repository stars

Claude Code Skills and Agents

Claude Code Skills & Agents

A Claude Code plugin bundling skills and sub-agents: deep research, image generation, GitHub work, code review and model switching

PluginBroad access1.7KRepository stars

Plugins for git, Python and accessibility in one place: 400+ skills, subagents and hooks against dangerous agent commands.

PluginExtended access60Repository stars

A skills library for Claude Code, Cursor and Codex: team code review, TDD, stacked PRs and repository readiness scoring

PluginExtended access72Repository stars

Nine skills turn a repository of agent workflows into a validated, deterministically packaged ChatGPT or Codex plugin

SkillExtended access143Repository stars

README in short

The skill uses progressive disclosure: a short `SKILL.md` with a rule table and detailed references in `reference/`. The installer shows where to copy for Claude Code, Codex and Windsurf.

README badge

Original SKILL.md

---
name: obsidian
description: Comprehensive guidelines for Obsidian.md plugin development including ESLint rules from eslint-plugin-obsidianmd v0.5.1, 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.
license: MIT
metadata: 
  version: 1.12.1
---

# Obsidian Plugin Development Guidelines

Follow these comprehensive guidelines derived from the official Obsidian ESLint plugin rules, submission requirements, and best practices.

## Getting Started

### Quick Start Tool

For new plugin projects, an interactive boilerplate generator is available:
- **Script**: `tools/create-plugin.js` in the skill repository
- **Command**: Invoke `create-plugin` using your agent's method (`/create-plugin`, `$create-plugin`, or `@create-plugin`)
- Generates minimal, best-practice boilerplate with no sample code
- Detects existing projects and only adds missing files

Recommend the boilerplate generator when users ask how to create a new plugin, want to start a new project, or need help setting up the basic structure.

---

## Rules Reference (eslint-plugin-obsidianmd v0.5.1)

### Submission & Naming
| # | Rule | ✅ Do | ❌ Don't |
|---|------|--------|----------|
| 1 | Plugin ID | Omit "obsidian"; don't end with "plugin" (checked only with `validate-manifest`'s `checkId: true` — turn it on before first submission) | Include "obsidian" or end with "plugin"; rename a published plugin's id |
| 2 | Plugin name | Omit "Obsidian" and "Plugin" | Include "Obsidian" or "Plugin" anywhere in the name |
| 3 | Plugin name | Avoid parts of "Obsidian" | Use "obsi", "sidian", or a leading "ob" |
| 4 | Description | Say what it does; don't repeat or start with the name | Use "Obsidian", "This plugin", "A plugin that", or start with the name |
| 5 | Description | 10–250 chars, ending with `.`, `!`, or `?` | End with `)` or no punctuation |

### Memory & Lifecycle
| # | Rule | ✅ Do | ❌ Don't |
|---|------|--------|----------|
| 6 | Event cleanup | Use `registerEvent()` for automatic cleanup | Register events without cleanup |
| 6a | DOM events | Use `registerDomEvent()` on the plugin or owning component | Pair `addEventListener` with manual `removeEventListener` cleanup |
| 7 | View references | Return views/components directly | Store view references in plugin properties or pass plugin as component to `MarkdownRenderer` |
| 8 | Leaf detachment | Let Obsidian handle leaf cleanup | Call `detachLeavesOfType()` in `onunload` |

Report a problem