Obsidian Plugin Development — скилл
Скилл учит агента писать плагины Obsidian по правилам ESLint и проверке сообщества и создает заготовку нового плагина.
- 196 ★ репозитория
- Последний коммит
- MIT
Расширенный доступ
Почему такой уровень
- Генератор `create-plugin.js` создает файлы и каталоги в выбранной папке.
Установка
- Работает в
В терминале, через SkillFoxx CLI
npx skillfoxx add skills/obsidian-plugin-developmentОпределит агенты на машине, покажет уровень доступа и зафиксирует версию.
Другие способы установки
Доступ и проверки
Как мы проверяемРасширенный доступИнструмент запускает код или ходит в сеть, а внешние данные только читает.
- Генератор `create-plugin.js` создает файлы и каталоги в выбранной папке.
Это чужой код. Посмотрите файлы в репозитории перед установкой.
Что делает
Скилл собирает правила `eslint-plugin-obsidianmd`, официальные рекомендации Obsidian и требования к публикации в одну базу знаний для агента. Она охватывает жизненный цикл и очистку памяти, `requestUrl` вместо `fetch`, безопасность и защиту от XSS, совместимость с iOS и всплывающими окнами, доступность и стили на переменных Obsidian. Скилл подробно описывает отправку плагина на community.obsidian.md и повышение оценки сканера. Для нового плагина есть генератор `tools/create-plugin.js`: он проверяет имя, идентификатор и описание по правилам бота публикации и создает `src/main.ts`, `settings.ts`, `manifest.json`, настройки ESLint и сборку esbuild. В Claude Code доступны команды `/obsidian` и `/create-plugin`.
Для кого. Авторам плагинов Obsidian, которые готовят первый релиз или хотят пройти проверку сообщества с первого раза.
Подходит, если
- Новый плагин создается с нуля, и генератор должен проверить имя и описание по правилам бота.
- Перед отправкой на проверку плагин сверяют с правилами ESLint и оценкой сканера.
- Сетевые запросы заменяют на `requestUrl`, чтобы плагин работал на мобильных устройствах.
- Вкладку настроек переводят на декларативный API `getSettingDefinitions()`.
Не подходит, если
- Расширения пишутся для другого редактора, а Obsidian в проекте нет.
- Нужна справка по пользовательским сценариям Obsidian, а не по разработке.
- Проект использует версии API Obsidian старше описанных.
Пример запроса к агенту
Помоги реализовать новую команду в моем плагине Obsidian так, чтобы она прошла проверку сообщества.Ограничения
Правила привязаны к версии 0.5.1 `eslint-plugin-obsidianmd` и API Obsidian 1.13, при выходе новых версий их надо обновлять. Для более старых версий Obsidian нужен запасной путь `display()` в настройках, его описывает справочник по интерфейсу. Генератор спрашивает каталог, имя и описание в интерактивном режиме. Установка зависимостей и сборка плагина остаются на вашей стороне. Слэш-команды есть только в Claude Code, для Codex и Windsurf скилл вызывают иначе.
Как отключить. Удалите папку `obsidian` из `.claude/skills/` или `.agents/skills/` и файлы `obsidian.md` и `create-plugin.md` из `.claude/commands/`.
Частые вопросы
Как поставить скилл?
Командой `npx skills add https://github.com/gapmiss/obsidian-plugin-skill --skill obsidian`. Либо клонируйте репозиторий и запустите `install-skill.sh`, он спросит агента и каталог.
Какие агенты поддерживаются?
Claude Code, Codex и Windsurf: любой агент со стандартом Agent Skills. В Claude Code есть команды `/obsidian` и `/create-plugin`.
Что проверяет генератор плагина?
Имя без слов Obsidian и Plugin, идентификатор в нижнем регистре и без `obsidian`, описание от 10 до 250 знаков с точкой, восклицательным или вопросительным знаком.
Что лежит в `reference/`?
Одиннадцать справочников: память, типы, интерфейс, файлы, стили, доступность, качество кода, отправка, сканер и настройка ESLint.
Работает ли скилл без генератора?
Да, скилл сам по себе содержит правила и справочники. Генератор нужен только для заготовки нового плагина.
Обсуждение
Вопросов и отзывов пока нет.
Похожие
СкиллыНабор скиллов из реальной работы: аудит цепочки поставок npm, сборка CLI, релиз плагина Obsidian и иерархия AGENTS.md
Менеджер плагинов Claude Code и установщик агентских скиллов: поиск по реестру и установка одной командой в нужного агента.
Claude Code Skills and Agents
Claude Code Skills & Agents
Плагин Claude Code с набором скиллов и субагентов: глубокое исследование, генерация картинок, работа с GitHub, разбор кода и переключение моделей
Плагины для git, Python и доступности в одном месте: более 400 скиллов, субагенты и хуки против опасных команд.
Библиотека скиллов для Claude Code, Cursor и Codex: ревью командой агентов, TDD, стековые PR, оценка готовности репозитория
Девять скиллов превращают репозиторий с агентскими процессами в проверенный плагин для ChatGPT и Codex
Коротко о README
Скилл строится по принципу постепенного раскрытия: короткий `SKILL.md` с таблицей правил и подробные справочники в `reference/`. Установщик покажет, куда копировать для Claude Code, Codex и Windsurf.
Бейдж для README
Исходный 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` |