Obsidian
A single skill for everything Obsidian: the CLI, Bases (.base files), and Obsidian Flavored Markdown. Consolidates the former obsidian-cli, obsidian-bases, and obsidian-markdown skills.
Origin: derived from kepano/obsidian-skills (MIT). Obsidian must be running for any CLI or MCP command to work.
When to Use
- Interact with a vault from the command line (create/read/search/manage notes, tasks, properties).
- Build or edit a Base (database-like view over notes) with filters and formulas.
- Author Obsidian Flavored Markdown (wikilinks, embeds, callouts, properties).
- Develop or debug an Obsidian plugin or theme.
When NOT to Use
- Do not use for generic Markdown files or note-taking tools that are not Obsidian.
- Do not target a vault the user has not explicitly named.
- Do not auto-install the
mcp-obsidian-cli package or run the obsidian binary without user confirmation.
Security & Guardrails
- Human confirmation first: confirm the target vault and any
obsidian command with the user before execution.
- No auto-execution: only run commands that read or modify the named vault; do not run system-wide commands or execute arbitrary plugins/themes without explicit consent.
- MCP fallback is opt-in: if the
obsidian CLI is missing, present mcp-obsidian-cli as an optional fallback and wait for the user to approve its installation.
- Stay inside the vault: do not use Obsidian CLI to access files outside the vault root.
Three areas
1. CLI
Run obsidian against a running Obsidian instance — vault operations, plugin/theme dev, DOM/screenshot inspection.
See the full command reference and quick-start examples in references/obsidian-cli.md.
Before running any obsidian command, verify which vault the user wants to target and confirm the command. Do not auto-install mcp-obsidian-cli or any Obsidian plugin without explicit user consent.
2. Bases
.base files are valid YAML defining filters, formulas, and views (table/cards/list/map) over notes.
See references/obsidian-bases.md and the full function list in references/FUNCTIONS_REFERENCE.md.
filters:
and:
- file.hasTag("task")
- 'file.ext == "md"'
formulas:
days_until_due: 'if(due, (date(due) - today()).days, "")'
views:
- type: table
name: "Active Tasks"
order: [file.name, status, formula.days_until_due]
3. Markdown (Obsidian Flavored)
Wikilinks [[Note]], embeds ![[note.png|300]], callouts > [!warning], properties/frontmatter, highlights ==text==, Mermaid, math.
See references/obsidian-markdown.md, plus references/CALLOUTS.md, references/EMBEDS.md, references/PROPERTIES.md.
Workflows
Create an Obsidian note
- Add frontmatter/properties at the top (see
references/PROPERTIES.md).
- Write content with standard Markdown + Obsidian syntax (wikilinks, embeds, callouts).
- Verify it renders in reading view.
Build a Base
- Create a
.base file with valid YAML.
- Define
filters (global/view) and optional formulas.
- Add one or more
views (table/cards/list/map).
- Validate YAML (watch quoting rules); open in Obsidian to confirm rendering.
Register CLI / develop a plugin
- Guide the user to Settings → General → Command line interface → Register CLI; restart the terminal.
- After the user confirms code changes, run
obsidian plugin:reload and obsidian dev:screenshot only for the explicitly named plugin.
Common Mistakes
| Mistake |
Symptom |
Fix |
| Obsidian not running |
CLI/MCP commands fail |
Open the Obsidian app first |
Unquoted special chars in .base |
YAML error |
Quote strings with :, {, }, [, ], ,, &, *, #, ?, |, -, <, >, =, !, %, @ |
| Double quotes inside double quotes (formula) |
Parse error |
Wrap formula in single quotes: 'if(done, "Yes", "No")' |
| Duration without field access |
(now()-file.ctime).round(0) errors |
Access .days first: (now()-file.ctime).days.round(0) |
| Missing null checks in formulas |
Crash on empty property |
Guard with if(): if(due, (date(due)-today()).days, "") |
| Wikilink vs Markdown link |
Broken external links |
[[Note]] for vault notes; [text](url) for external only |
References
references/obsidian-cli.md — CLI install, syntax, commands, plugin dev.
references/obsidian-bases.md — Bases schema, filters, formulas, views, examples.
references/obsidian-markdown.md — Obsidian Flavored Markdown syntax.
references/FUNCTIONS_REFERENCE.md — Complete Bases function reference.
references/CALLOUTS.md — All callout types.
references/EMBEDS.md — All embed types.
references/PROPERTIES.md — All property types and tag rules.
1---2name: obsidian3description: Use when working with Obsidian vaults — running the Obsidian CLI (read/create/search/manage notes, tasks, properties), building Bases (.base views/filters/formulas), writing Obsidian Flavored Markdown (wikilinks, embeds, callouts, properties), or developing/debugging plugins and themes. Do NOT use for generic Markdown editors or non-Obsidian note tools; this skill is Obsidian-specific. Part of the afonsoft/skills collection.4license: MIT5---67# Obsidian89A single skill for everything Obsidian: the **CLI**, **Bases** (`.base` files), and **Obsidian Flavored Markdown**. Consolidates the former `obsidian-cli`, `obsidian-bases`, and `obsidian-markdown` skills.1011> **Origin:** derived from `kepano/obsidian-skills` (MIT). Obsidian must be running for any CLI or MCP command to work.1213## When to Use1415- Interact with a vault from the command line (create/read/search/manage notes, tasks, properties).16- Build or edit a **Base** (database-like view over notes) with filters and formulas.17- Author **Obsidian Flavored Markdown** (wikilinks, embeds, callouts, properties).18- Develop or debug an Obsidian **plugin or theme**.1920## When NOT to Use2122- Do not use for generic Markdown files or note-taking tools that are not Obsidian.23- Do not target a vault the user has not explicitly named.24- Do not auto-install the `mcp-obsidian-cli` package or run the `obsidian` binary without user confirmation.2526## Security & Guardrails2728- **Human confirmation first**: confirm the target vault and any `obsidian` command with the user before execution.29- **No auto-execution**: only run commands that read or modify the named vault; do not run system-wide commands or execute arbitrary plugins/themes without explicit consent.30- **MCP fallback is opt-in**: if the `obsidian` CLI is missing, present `mcp-obsidian-cli` as an optional fallback and wait for the user to approve its installation.31- **Stay inside the vault**: do not use Obsidian CLI to access files outside the vault root.3233## Three areas3435### 1. CLI36Run `obsidian` against a running Obsidian instance — vault operations, plugin/theme dev, DOM/screenshot inspection.37See the full command reference and quick-start examples in [`references/obsidian-cli.md`](references/obsidian-cli.md).3839> Before running any `obsidian` command, verify which vault the user wants to target and confirm the command. Do not auto-install `mcp-obsidian-cli` or any Obsidian plugin without explicit user consent.4041### 2. Bases42`.base` files are valid YAML defining filters, formulas, and views (table/cards/list/map) over notes.43See [`references/obsidian-bases.md`](references/obsidian-bases.md) and the full function list in [`references/FUNCTIONS_REFERENCE.md`](references/FUNCTIONS_REFERENCE.md).4445```yaml46filters:47 and:48 - file.hasTag("task")49 - 'file.ext == "md"'50formulas:51 days_until_due: 'if(due, (date(due) - today()).days, "")'52views:53 - type: table54 name: "Active Tasks"55 order: [file.name, status, formula.days_until_due]56```5758### 3. Markdown (Obsidian Flavored)59Wikilinks `[[Note]]`, embeds `![[note.png|300]]`, callouts `> [!warning]`, properties/frontmatter, highlights `==text==`, Mermaid, math.60See [`references/obsidian-markdown.md`](references/obsidian-markdown.md), plus [`references/CALLOUTS.md`](references/CALLOUTS.md), [`references/EMBEDS.md`](references/EMBEDS.md), [`references/PROPERTIES.md`](references/PROPERTIES.md).6162## Workflows6364### Create an Obsidian note651. Add frontmatter/properties at the top (see `references/PROPERTIES.md`).662. Write content with standard Markdown + Obsidian syntax (wikilinks, embeds, callouts).673. Verify it renders in reading view.6869### Build a Base701. Create a `.base` file with valid YAML.712. Define `filters` (global/view) and optional `formulas`.723. Add one or more `views` (`table`/`cards`/`list`/`map`).734. Validate YAML (watch quoting rules); open in Obsidian to confirm rendering.7475### Register CLI / develop a plugin761. Guide the user to **Settings → General → Command line interface → Register CLI**; restart the terminal.772. After the user confirms code changes, run `obsidian plugin:reload` and `obsidian dev:screenshot` only for the explicitly named plugin.7879## Common Mistakes8081| Mistake | Symptom | Fix |82|---|---|---|83| Obsidian not running | CLI/MCP commands fail | Open the Obsidian app first |84| Unquoted special chars in `.base` | YAML error | Quote strings with `:`, `{`, `}`, `[`, `]`, `,`, `&`, `*`, `#`, `?`, `\|`, `-`, `<`, `>`, `=`, `!`, `%`, `@` |85| Double quotes inside double quotes (formula) | Parse error | Wrap formula in single quotes: `'if(done, "Yes", "No")'` |86| Duration without field access | `(now()-file.ctime).round(0)` errors | Access `.days` first: `(now()-file.ctime).days.round(0)` |87| Missing null checks in formulas | Crash on empty property | Guard with `if()`: `if(due, (date(due)-today()).days, "")` |88| Wikilink vs Markdown link | Broken external links | `[[Note]]` for vault notes; `[text](url)` for external only |8990## References9192- [`references/obsidian-cli.md`](references/obsidian-cli.md) — CLI install, syntax, commands, plugin dev.93- [`references/obsidian-bases.md`](references/obsidian-bases.md) — Bases schema, filters, formulas, views, examples.94- [`references/obsidian-markdown.md`](references/obsidian-markdown.md) — Obsidian Flavored Markdown syntax.95- [`references/FUNCTIONS_REFERENCE.md`](references/FUNCTIONS_REFERENCE.md) — Complete Bases function reference.96- [`references/CALLOUTS.md`](references/CALLOUTS.md) — All callout types.97- [`references/EMBEDS.md`](references/EMBEDS.md) — All embed types.98- [`references/PROPERTIES.md`](references/PROPERTIES.md) — All property types and tag rules.