Skip to main content 首页 创作者 akillness oh-my-skills obsidian-plugin
obsidian-plugin ALIAS — merged into the unified `obsidian` skill (v2.0). Use the `obsidian` skill instead. Build, validate, and publish Obsidian plugins. Redirects to obsidian skill for plugin development, ESLint rules, boilerplate generation, accessibility, and submission validation.
跳到安装 Skills Marketplace 发现并探索由社区构建的 Agent Skills
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/akillness/oh-my-skills --skill obsidian-plugin命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
下载 Zip 下载中... One-shot installer for the akillness/oh-my-gods agent skill bundle (80+ skills spanning agent-browser, agent-workflow, ai-research-skills, api-design, and the full god-skills catalog). Use when the user asks to add the oh-my-gods skill pack, bring in the AgenticSkills bundle, or wants every god-skill copied into Claude Code, Codex CLI, Antigravity/Gemini, and OpenCode in one step. Triggers on: AgenticSkills, agenticskills, oh-my-gods, god-skills, install oh-my-gods, bring in agentic skills bundle, install gods skills, add god skills.
Make any software agent-native with HKUDS CLI-Anything — route between four modes: install ready-made CLI harnesses via the CLI-Hub package manager (`pip install cli-anything-hub`, then `cli-hub list/search/info/install/launch`), give agents the autonomous discovery meta-skill (`npx skills add HKUDS/CLI-Anything --skill cli-hub-meta-skill`), generate a new harness from any codebase or GitHub repo via the 7-phase pipeline (`/plugin install cli-anything` → `/cli-anything <path>`), or iterate with `/cli-anything:refine`, `:test`, `:validate`. 40+ production harnesses (GIMP, Blender, LibreOffice, OBS, ComfyUI, Ollama, Godot, QGIS, …), 2,461 passing tests, Click CLIs with REPL + `--json` output. Use when agents must drive real desktop/server software without GUI automation. Triggers on: cli-anything, cli-hub, cli-anything-hub, agent-native cli, make software agent-native, cli harness generation, /cli-anything, harness refine, HKUDS cli.
Run Comet's Opik — open-source LLM observability, evaluation, and optimization — from one routing-first skill: install the Python/TypeScript SDK, stand up a server (Comet.com cloud, Docker Compose via `./opik.sh`, or Kubernetes/Helm), wire tracing through `@opik.track` or one of 50+ framework integrations (OpenAI, Anthropic, LangChain, LangGraph, LlamaIndex, CrewAI, DSPy, Ollama, Bedrock, Vercel AI SDK, …), score outputs with LLM-as-a-judge metrics (Hallucination, Moderation, Answer Relevance, Context Precision), and run Datasets/Experiments evaluations including PyTest CI gates. Use when the user wants LLM tracing, prompt evaluation, production LLM monitoring, agent optimization, or guardrails with Opik. Triggers on: opik, comet opik, opik configure, opik.sh, llm observability, llm tracing, llm as a judge, hallucination metric, prompt evaluation, opik dashboard, opik guardrails, agent optimizer.
name obsidian-plugin description ALIAS — merged into the unified `obsidian` skill (v2.0). Use the `obsidian` skill instead. Build, validate, and publish Obsidian plugins. Redirects to obsidian skill for plugin development, ESLint rules, boilerplate generation, accessibility, and submission validation.
allowed-tools Bash Read Write Edit Glob Grep WebFetch license MIT metadata {"tags":"obsidian, plugin-development, eslint, typescript, boilerplate, submission, accessibility","version":"1.1","source":"https://github.com/gapmiss/obsidian-plugin-skill","deprecated":"Merged into obsidian skill v2.0 — use obsidian instead"}
obsidian-plugin — Obsidian Plugin Development Skill
Keyword : obsidian plugin · create obsidian plugin · obsidian eslint · obsidian submission
Build high-quality Obsidian plugins that pass community review on first attempt.
Covers all 27 rules from eslint-plugin-obsidianmd v0.1.9, boilerplate generation,
vault API patterns, accessibility requirements, and submission validation.
When to use this skill
Generate a new Obsidian plugin project with clean boilerplate (no sample code bloat)
Review and fix ESLint violations from eslint-plugin-obsidianmd
Prepare a plugin for Obsidian community directory submission
Apply memory-safe lifecycle patterns (registerEvent, no view reference storage)
Implement proper type safety (no unsafe as TFile casts, no any)
Enforce accessibility requirements (keyboard navigation, ARIA labels, focus management)
Apply Obsidian CSS variables for theme-compatible styling
Validate plugin metadata (manifest.json, plugin ID/name/description rules)
Instructions
Step 1: Generate a new plugin project
node scripts/create-plugin.js
npx github:gapmiss/obsidian-plugin-skill create-plugin
src/main.ts — Plugin class with settings integration
src/settings.ts — Settings interface and PluginSettingTab
manifest.json — Validated plugin metadata
styles.css — CSS scaffold with Obsidian variables comment
tsconfig.json, package.json, esbuild.config.mjs — Build toolchain
version-bump.mjs, versions.json — Version management
LICENSE — MIT with auto-populated year/author
Step 2: Install ESLint validation npm install --save-dev eslint eslint-plugin-obsidianmd
import pluginObsidianmd from "eslint-plugin-obsidianmd" ;
export default [
pluginObsidianmd.configs.recommended,
] ;
npx eslint src/
npx eslint src/ --fix
Step 3: Follow the submission validation workflow
Run bash scripts/install.sh to set up the development environment
Validate plugin ID and name against naming rules (see below)
Run ESLint — all 27 rules must pass
Complete the Code Review Checklist (see References)
Submit PR to obsidianmd/obsidian-releases
Plugin Naming Rules Field Rule Plugin ID Lowercase, alphanumeric + dashes/underscores; no "obsidian"; no "plugin" suffix Plugin Name No "Obsidian" word; no "Plugin" suffix; no "Obsi" prefix or "dian" suffix Description No "Obsidian" word; no "This plugin"; must end with ., ?, !, or )
node scripts/create-plugin.js --validate-only
ESLint Rules Summary (27 rules)
Submission & Naming Rule Auto-fix Description no-obsidian-in-idNo Plugin ID must not contain "obsidian" no-plugin-suffix-in-idNo Plugin ID must not end with "-plugin" no-obsidian-in-nameNo Plugin name must not contain "Obsidian" no-plugin-suffix-in-nameNo Plugin name must not end with "Plugin" valid-descriptionNo Description format validation
Memory & Lifecycle Rule Auto-fix Description prefer-register-eventNo Use this.registerEvent() for automatic cleanup no-view-referenceNo Never store direct view references (causes memory leaks)
Type Safety Rule Auto-fix Description no-tfile-castNo Avoid as TFile / as TFolder (use instanceof)
UI/UX (sentence-case rules — mostly auto-fixable) Rule Auto-fix Description sentence-caseYes All UI text in sentence case no-plugin-name-in-commandNo Commands must not repeat plugin name no-command-in-commandNo Commands must not include the word "command" no-default-hotkeyNo Do not define default hotkeys no-manual-headingsNo Settings UI: use setHeading(), not manual HTML
API Best Practices Rule Auto-fix Description no-global-appNo Use this.app, not global app prefer-request-urlNo Use requestUrl(), not fetch() no-console-logNo Remove console.log before submission prefer-abstract-input-suggestNo Use AbstractInputSuggest for suggestions
Styling Rule Auto-fix Description no-inline-stylesNo Use CSS classes; no inline style attributes prefer-css-variablesNo Use Obsidian CSS variables, not hardcoded colors scope-plugin-stylesNo Scope all CSS to plugin ID selector
Accessibility (MANDATORY) Rule Auto-fix Description require-aria-labelNo Icon buttons must have aria-label require-keyboard-navNo All interactions must be keyboard accessible require-focus-visibleNo Use :focus-visible CSS for focus indicators
Key Code Patterns
Memory-safe event registration
this .registerEvent (
this .app .vault .on ('create' , (file ) => this .handleCreate (file))
);
this .app .vault .on ('create' , (file ) => this .handleCreate (file));
Type-safe file access
const file = this .app .workspace .getActiveFile ();
if (file instanceof TFile ) {
await this .app .vault .read (file);
}
const file = this .app .workspace .getActiveFile () as TFile ;
Accessibility — ARIA on icon buttons
const btn = containerEl.createEl ('button' , { cls : 'clickable-icon' });
btn.setAttribute ('aria-label' , 'Delete note' );
setIcon (btn, 'trash' );
const btn = containerEl.createEl ('button' , { cls : 'clickable-icon' });
setIcon (btn, 'trash' );
CSS with Obsidian variables
.my-plugin-button {
background-color : var (--interactive-accent);
color : var (--text-on-accent);
border-radius : var (--radius-m);
}
.my-plugin-button {
background-color : #7c3aed ;
color : white;
}
Quick Reference Task Command Generate boilerplate node scripts/create-plugin.jsInstall ESLint npm install --save-dev eslint eslint-plugin-obsidianmdRun ESLint npx eslint src/Auto-fix ESLint npx eslint src/ --fixBuild plugin npm run buildDev watch mode npm run devBump version npm run version
References
Accessibility Guide — Keyboard nav, ARIA, focus management (MANDATORY)
Code Quality Guide — Security, platform compat, API usage
CSS Styling Guide — Obsidian variables, scoped styles, dark/light mode
File Operations Guide — Vault API, editor vs vault, atomic ops
Memory Management Guide — registerEvent, lifecycle patterns
Submission Guide — Repository structure, naming, submission process
Type Safety Guide — instanceof narrowing, no any, const/let
UI/UX Guide — Sentence case, commands, settings structure
eslint-plugin-obsidianmd — Official ESLint rules
Obsidian Plugin Developer Docs
Source Skill Repository — MIT License