Agent skill

Obsidian Common Errors

by jeremylongshore in jeremylongshore/tons-of-skills-marketplace

Diagnose and fix common Obsidian plugin errors and exceptions.

MITAuto-check passedDevelopment

Install Obsidian Common Errors

skills CLI
$ npx skills add jeremylongshore/tons-of-skills-marketplace --skill obsidian-common-errors -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install jeremylongshore/tons-of-skills-marketplace obsidian-common-errors --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/jeremylongshore/tons-of-skills-marketplace.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/.curated/obsidian-common-errors .claude/skills/obsidian-common-errors && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
obsidian-common-errors
GitHub stars
2.8k
Token cost
~2.2k tokens
SKILL.md length
509 words
Files
3 (incl. references)
Skills in repo
3,342
Repo updated
First seen
Licence
MIT

At a glance

Diagnose and fix common Obsidian plugin errors and exceptions.

  • Works in 6 steps: "Cannot read properties of null" —… → "Plugin failed to load" — Syntax or… → CSS Not Loading — Wrong styles.css Path → …
  • Encountering plugin errors
  • SKILL.md covers Overview, Prerequisites, Instructions and Output, plus 4 more sections
  • Calls npm

What it does

Obsidian Common Errors is an agent skill from jeremylongshore/tons-of-skills-marketplace. Diagnose and fix common Obsidian plugin errors and exceptions. Use when encountering plugin errors, debugging failed operations, or troubleshooting Obsidian plugin issues. Trigger with phrases like "obsidian error", "fix obsidian plugin", "obsidian not working", "debug obsidian plugin".

Its SKILL.md is about 2.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files, including reference files (for example `references/implementation-guide.md` and `references/implementation.md`). Compatibility notes: Designed for Claude Code

It sits in Development, covering Debugging. It works with Obsidian. The repository describes itself as: Model-agnostic agent-skills platform with a harness-free canonical layer, verified adapters, and the ccpi package manager. Explore at tonsofskills.com. The licence is MIT.

When your agent uses it

  • Encountering plugin errors
  • Debugging failed operations
  • Troubleshooting Obsidian plugin issues
  • With phrases like obsidian error

Example prompts

  • “obsidian error”
  • “fix obsidian plugin”
  • “obsidian not working”
  • “/obsidian-common-errors”

Requirements

  • Compatibility (from SKILL.md): Designed for Claude Code
  • Pre-approved tools (allowed-tools): Read, Grep, Bash(node:*)

Workflow steps

6 steps, taken from the step headings in SKILL.md.

  1. "Cannot read properties of null" — Workspace Not Ready
  2. "Plugin failed to load" — Syntax or Manifest Errors
  3. CSS Not Loading — Wrong styles.css Path
  4. Commands Not Showing in Palette
  5. Vault Read Errors — File Doesn't Exist
  6. Settings Not Persisting — Missing saveData Call

What it can do on your machine

Read from SKILL.md and the folder at commit 80f86df. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Read
    • Grep
    • Bash(node:*)

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • npm

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • docs.obsidian.md
    • forum.obsidian.md

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

  • Compatibility

    Designed for Claude Code

    From compatibility in the SKILL.md frontmatter.

Context cost

Obsidian Common Errors loads about 2.2k tokens when it runs, and up to ~4.1k if it reads all its reference files. Until then it costs about 78 tokens; SKILL.md has 509 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~78
When it runs · the whole SKILL.md, loaded when a task matches
~2.2k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~4.1k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from jeremylongshore/tons-of-skills-marketplace at commit 80f86df, republished under its MIT licence (© jeremylongshore). 509 words, ~2,184 tokens.

Download SKILL.mdSave it as .claude/skills/obsidian-common-errors/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.
name
obsidian-common-errors
description
Diagnose and fix common Obsidian plugin errors and exceptions. Use when encountering plugin errors, debugging failed operations, or troubleshooting Obsidian plugin issues. Trigger with phrases like "obsidian error", "fix obsidian plugin", "obsidian not working", "debug obsidian plugin".
allowed-tools
Read, Grep, Bash(node:*)
compatibility
Designed for Claude Code
version
1.13.0
license
MIT
author
Jeremy Longshore <jeremy@intentsolutions.io>
tags
saas, obsidian, debugging

Obsidian Common Errors

Overview

Diagnostic guide for the six most frequent Obsidian plugin development errors, with root causes and copy-paste fixes.

Prerequisites

  • Obsidian plugin development environment set up
  • Access to Developer Console (Ctrl/Cmd+Shift+I)
  • Plugin source code access

Instructions

Step 1: "Cannot read properties of null" — Workspace Not Ready

Accessing app.workspace.activeLeaf or app.workspace.getActiveViewOfType() before the layout is initialized returns null.

typescript
// BROKEN: accessing workspace immediately in onload
async onload() {
  const view = this.app.workspace.getActiveViewOfType(MarkdownView);
  // TypeError: Cannot read properties of null (reading 'editor')
  view.editor.replaceSelection('hello');
}

// FIXED: wait for layout-ready event
async onload() {
  this.app.workspace.onLayoutReady(() => {
    const view = this.app.workspace.getActiveViewOfType(MarkdownView);
    if (view) {
      view.editor.replaceSelection('hello');
    }
  });
}

For commands that need workspace access later (not at load time), guard with a null check:

typescript
this.addCommand({
  id: 'my-command',
  name: 'Do Something',
  checkCallback: (checking: boolean) => {
    const view = this.app.workspace.getActiveViewOfType(MarkdownView);
    if (view) {
      if (!checking) {
        // safe to use view.editor here
        view.editor.replaceSelection('inserted');
      }
      return true;
    }
    return false;
  }
});
Step 2: "Plugin failed to load" — Syntax or Manifest Errors

This error appears in the console when Obsidian cannot parse your built main.js or your manifest.json is invalid.

Check 1: Build output exists and compiles cleanly

bash
set -euo pipefail
npm run build 2>&1
# Look for TypeScript errors in output
ls -la main.js  # Must exist in plugin root

Check 2: manifest.json has all required fields

json
{
  "id": "my-plugin",
  "name": "My Plugin",
  "version": "1.0.0",
  "minAppVersion": "0.15.0",
  "description": "Does something useful",
  "author": "Your Name",
  "isDesktopOnly": false
}

Missing id, name, version, or minAppVersion causes a silent load failure. The id must match the folder name under .obsidian/plugins/.

Check 3: Default export

typescript
// BROKEN: named export
export class MyPlugin extends Plugin { ... }

// FIXED: default export required
export default class MyPlugin extends Plugin { ... }
Step 3: CSS Not Loading — Wrong styles.css Path

Obsidian auto-loads styles.css from the plugin root directory. It must be named exactly styles.css (not style.css, not in a subdirectory).

bash
set -euo pipefail
# Verify all three required files exist in plugin root
ls -la styles.css manifest.json main.js

If you use a CSS preprocessor, ensure the build outputs to ./styles.css:

json
{
  "scripts": {
    "build:css": "sass src/styles.scss styles.css",
    "build": "npm run build:css && node esbuild.config.mjs"
  }
}

Common gotcha: the file must be styles.css (plural), not style.css.

Step 4: Commands Not Showing in Palette

Commands registered outside onload() or after the plugin is enabled won't appear in the command palette.

typescript
// BROKEN: adding command in a separate method called conditionally
async onload() {
  await this.loadSettings();
  // command never added because registerCommands is not called
}

registerCommands() {
  this.addCommand({ id: 'test', name: 'Test', callback: () => {} });
}

// FIXED: add all commands directly in onload
async onload() {
  await this.loadSettings();

  this.addCommand({
    id: 'test',
    name: 'Test',
    callback: () => {
      new Notice('Working!');
    }
  });
}

If a command should only be available when a markdown file is open, use editorCallback instead of callback — Obsidian automatically hides it when no editor is active:

typescript
this.addCommand({
  id: 'editor-only',
  name: 'Editor Only Command',
  editorCallback: (editor: Editor) => {
    editor.replaceSelection('inserted text');
  }
});
Step 5: Vault Read Errors — File Doesn't Exist

vault.read() and vault.cachedRead() throw if the file doesn't exist. Always check first.

typescript
// BROKEN: assumes file exists
async readConfig() {
  const content = await this.app.vault.adapter.read('config.json');
  return JSON.parse(content);
}

// FIXED: check existence, handle missing file
async readConfig(): Promise<MyConfig> {
  const path = 'config.json';
  const exists = await this.app.vault.adapter.exists(path);
  if (!exists) {
    return { ...DEFAULT_CONFIG };
  }

  try {
    const content = await this.app.vault.adapter.read(path);
    return JSON.parse(content);
  } catch (e) {
    console.error('Failed to parse config:', e);
    return { ...DEFAULT_CONFIG };
  }
}

For vault files (TFile objects), use getAbstractFileByPath:

typescript
const file = this.app.vault.getAbstractFileByPath('notes/target.md');
if (file instanceof TFile) {
  const content = await this.app.vault.read(file);
  // process content
} else {
  new Notice('File not found: notes/target.md');
}
Step 6: Settings Not Persisting — Missing saveData Call

The most common settings bug: modifying the settings object without calling saveData.

typescript
// BROKEN: settings change lost on restart
this.settings.theme = 'dark';
// forgot to call saveData!

// FIXED: always save after modifying
this.settings.theme = 'dark';
await this.saveData(this.settings);

In settings tabs, save on every change:

typescript
new Setting(containerEl)
  .setName('Theme')
  .addDropdown(dropdown => dropdown
    .addOption('light', 'Light')
    .addOption('dark', 'Dark')
    .setValue(this.plugin.settings.theme)
    .onChange(async (value) => {
      this.plugin.settings.theme = value;
      await this.plugin.saveSettings();  // calls this.saveData(this.settings)
    }));

Load settings with defaults to prevent undefined fields after plugin updates:

typescript
async loadSettings() {
  // loadData() returns null on first run — Object.assign handles this safely
  this.settings = Object.assign({}, DEFAULT_SETTINGS, await this.loadData());
}

Object.assign merges saved data over defaults, so new fields added in later versions get their default value instead of undefined.

Show full SKILL.md (182 more words)Show less

Output

  • Identified error matched to one of the six categories
  • Root cause explanation
  • Working code fix applied to plugin source

Error Handling

ErrorCauseSolution
TypeError: Cannot read properties of nullWorkspace not readyUse onLayoutReady or null-check
Plugin failed to loadBuild error or bad manifestCheck console, verify manifest.json fields
CSS has no effectWrong filename or pathMust be styles.css in plugin root
Command missing from paletteNot added in onload()Move addCommand into onload
Error: ENOENT on vault readFile doesn't existCheck with adapter.exists() first
Settings reset on restartMissing saveData callCall saveData after every mutation

Examples

Quick Diagnostic Checklist

When a plugin fails to load, check these in order:

  1. Open Developer Console (Ctrl/Cmd+Shift+I) and look for red errors
  2. Verify main.js, manifest.json, and styles.css exist in plugin folder
  3. Confirm manifest.json has id, name, version, minAppVersion
  4. Confirm main.ts uses export default class
  5. Rebuild with npm run build and reload Obsidian (Ctrl/Cmd+R)
Debug Logging Pattern
typescript
// Add to your plugin class for temporary debugging
private debug(msg: string, ...args: any[]) {
  if (this.settings.debugMode) {
    console.log(`[${this.manifest.id}] ${msg}`, ...args);
  }
}

Resources

Next Steps

For comprehensive debugging workflows, see obsidian-debug-bundle.

© jeremylongshore, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 2 other files (references) in skills/.curated/obsidian-common-errors of jeremylongshore/tons-of-skills-marketplace.

  • SKILL.md
  • references/implementation-guide.md
  • references/implementation.md

Open the folder on GitHubat commit 80f86df

Compare with similar skills

Obsidian Common Errors next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Obsidian Common Errors compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Obsidian Common Errors this skilljeremylongshore/tons-of-skills-marketplace2.8k—~2.2kAutomated safety check: PassMIT
Debug Obsidiansaberzero1/quartz-syncer140—~1.9kAutomated safety check: PassMIT
Obsidian Debugaidenlx/zotlit1k—~1.5kAutomated safety check: PassAGPL-3.0
Obsidian CLI Devtoolshashgraph-online/awesome-codex-plugins1.3k—~874Automated safety check: PassApache-2.0
Self LearnPratiyush/llm-wiki397—~1.6kAutomated safety check: PassMIT
JSON Canvasheyitsnoah/claudesidian2.6k18 repos~3.5kAutomated safety check: PassMIT

Similar skills

  • Debug Obsidian

    saberzero1/quartz-syncer

    Debug and investigate plugin issues in a running Obsidian instance — collect diagnostic data, inspect state, trace events, and identify root causes via the operability facade.

    140 GitHub stars~1.9k tokensUpdated 9 days ago
    DevelopmentAuto-check passed
  • Obsidian Debug

    aidenlx/zotlit

    Drive the running Obsidian instance to verify plugin changes — build, reload, eval, screenshot.

    1k GitHub stars~1.5k tokensUpdated today
    DevelopmentAuto-check passed
  • Obsidian CLI Devtools

    hashgraph-online/awesome-codex-plugins

    A skill your agent uses when the user needs Obsidian runtime debugging or developer introspection through official desktop Obsidian CLI developer commands, including devtools, console/errors…

    1.3k GitHub stars~874 tokensUpdated today
    DevelopmentAuto-check passed
  • Self Learn

    Pratiyush/llm-wiki

    Extract reusable patterns from recent sessions, propose framework improvements, and (with approval) update the framework docs.

    397 GitHub stars~1.6k tokensUpdated 3 mo ago
    Knowledge ManagementAuto-check passed
  • JSON Canvas

    heyitsnoah/claudesidian

    Create and edit JSON Canvas files (.canvas) with nodes, edges, groups, and connections.

    2.6k GitHub starsUsed in 18 repos~3.5k tokens
    DevelopmentAuto-check passed
  • Trellis Session Insight

    mindfold-ai/Trellis

    Reach into past AI conversation history through the trellis mem CLI.

    15k GitHub starsUsed in 4 repos~1.7k tokens
    DevelopmentAuto-check passed

More from jeremylongshore/tons-of-skills-marketplace

All 3,342 skills in this repo
  • Performing Security Code Review

    jeremylongshore/tons-of-skills-marketplace

    Execute this skill enables AI assistant to conduct a security-focused code review using the security-agent plugin.

    2.8k GitHub starsUsed in 2 repos~1.3k tokens
    Auto-check: notes
  • Adapting Transfer Learning Models

    jeremylongshore/tons-of-skills-marketplace

    Build this skill automates the adaptation of pre-trained machine learning models using transfer learning techniques.

    2.8k GitHub stars~1.1k tokensUpdated today
    Auto-check passed
  • Agent Context Loader

    jeremylongshore/tons-of-skills-marketplace

    Execute proactive auto-loading: automatically detects and loads agents.md files.

    2.8k GitHub stars~1.1k tokensUpdated today
    Auto-check passed
  • Aggregating Performance Metrics

    jeremylongshore/tons-of-skills-marketplace

    Aggregate and centralize performance metrics from applications, systems, databases, caches, and services.

    2.8k GitHub stars~1.2k tokensUpdated today
    Auto-check passed
  • Analyzing Capacity Planning

    jeremylongshore/tons-of-skills-marketplace

    Execute this skill enables AI assistant to analyze capacity requirements and plan for future growth.

    2.8k GitHub stars~947 tokensUpdated today
    Auto-check passed
  • Analyzing Database Indexes

    jeremylongshore/tons-of-skills-marketplace

    Process use when you need to work with database indexing. An agent skill from jeremylongshore/tons-of-skills-marketplace.

    2.8k GitHub stars~2k tokensUpdated today
    Auto-check passed

Works with

Categories

Questions about Obsidian Common Errors

What does Obsidian Common Errors do?

Diagnose and fix common Obsidian plugin errors and exceptions. Obsidian Common Errors is an agent skill from jeremylongshore/tons-of-skills-marketplace. Diagnose and fix common Obsidian plugin errors and exceptions.

When should I use Obsidian Common Errors?

Obsidian Common Errors fits situations like: encountering plugin errors; debugging failed operations; troubleshooting Obsidian plugin issues; with phrases like obsidian error.

How do I install Obsidian Common Errors in Claude Code?

Run `npx skills add jeremylongshore/tons-of-skills-marketplace --skill obsidian-common-errors -a claude-code`. Or copy the skill folder (skills/.curated/obsidian-common-errors in jeremylongshore/tons-of-skills-marketplace) into .claude/skills/obsidian-common-errors in your project. Claude Code loads it when a task matches its description.

How do I install Obsidian Common Errors in Codex?

Run `npx skills add jeremylongshore/tons-of-skills-marketplace --skill obsidian-common-errors -a codex`. Or copy the skill folder (skills/.curated/obsidian-common-errors in jeremylongshore/tons-of-skills-marketplace) into .agents/skills/obsidian-common-errors in your project. Codex loads it when a task matches its description.

Can I use Obsidian Common Errors in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add jeremylongshore/tons-of-skills-marketplace --skill obsidian-common-errors -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/obsidian-common-errors, .gemini/skills/obsidian-common-errors, .github/skills/obsidian-common-errors and .opencode/skills/obsidian-common-errors in your project.

What does Obsidian Common Errors need to run?

Going by SKILL.md and its folder, Obsidian Common Errors needs the command-line tools its instructions call (npm). Its frontmatter pre-approves these tools: Read, Grep, Bash(node:*). Compatibility (from SKILL.md): Designed for Claude Code.

Does Obsidian Common Errors access the network?

SKILL.md names 2 domains. As links in the text: docs.obsidian.md and forum.obsidian.md. This is read from the text; nothing was executed.

Is Obsidian Common Errors safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Obsidian Common Errors use?

Obsidian Common Errors is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Obsidian Common Errors use?

About 2.2k tokens (SKILL.md is roughly 8.7k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.9k tokens, read only when the agent opens those files.

What are the alternatives to Obsidian Common Errors?

Skills that share tags, products or a category with Obsidian Common Errors: Debug Obsidian (saberzero1/quartz-syncer, 140 stars), Obsidian Debug (aidenlx/zotlit, 1k stars), Obsidian CLI Devtools (hashgraph-online/awesome-codex-plugins, 1.3k stars) and Self Learn (Pratiyush/llm-wiki, 397 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Obsidian Common Errors?

jeremylongshore (a GitHub user) maintains it in jeremylongshore/tons-of-skills-marketplace, which has 2,825 GitHub stars. The repository holds 3,342 skills in this directory. The repository was last updated on October 9, 2026.

Source: jeremylongshore/tons-of-skills-marketplace on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.