obsidian-markdown — Claude Code skill: Obsidian syntax help
This skill explains, drafts and validates Obsidian Flavored Markdown: properties, wikilinks, embeds, callouts, tags, block references, math and Mermaid.
npx skills add AgriciDaniel/claude-obsidian --skill obsidian-markdown -a claude-codeWhat obsidian-markdown does
The skill answers Obsidian syntax questions read-only. It covers YAML properties, wikilinks and embeds, callouts, tags, comments, highlights, block references, math and Mermaid diagrams. Plain Markdown and broad vault operations are out of scope.
When you ask for a vault edit, it drafts the whole note, reads ../wiki/references/operation-transactions.md and builds one claude-obsidian.transaction.v1 bundle with operation_type: markdown and only wiki/ targets. Writing a note directly is not allowed. You inspect the bundle, set APPROVAL_SHA256 to the returned approval_sha256, then apply it with python3 "$CORE" transaction apply "$BUNDLE" --vault "$VAULT" --approved-plan-sha256 "$APPROVAL_SHA256". The product root comes from the skill's own location, not from the vault or your working directory.
The transaction commands need scripts/claude-obsidian.py inside the installed product root, so check that file exists before relying on them. The author suggests reaching for a separately installed kepano/obsidian-skills obsidian-markdown skill or the Obsidian Help pages first, and treating this one as a compact fallback. One gotcha worth knowing: a numeric-only tag like 2026 is invalid in Obsidian even when quoted, so use year/2026 or y2026.
What it helps with
- explain wikilink and block reference syntax
- draft a note with flat YAML properties
- check code fences and callout quoting for balance
- flag invalid tags and broken internal links
- apply a vault edit through a transaction bundle
Example prompts for the agent
- explain how block references work in Obsidian
- draft a note with properties and a warning callout
- check my draft for broken wikilinks and invalid tags
How to install obsidian-markdown
1Skills CLI (Vercel)
npx skills add AgriciDaniel/claude-obsidian --skill obsidian-markdown -a claude-code2Manually: put the files in place
~/.claude/skills/obsidian-markdown/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/obsidian-markdown/
1Skills CLI (Vercel)
npx skills add AgriciDaniel/claude-obsidian --skill obsidian-markdown -a codex2Manually: put the files in place
.agents/skills/obsidian-markdown/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add AgriciDaniel/claude-obsidian --skill obsidian-markdown -a cursor2Manually: put the files in place
.cursor/skills/obsidian-markdown/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install AgriciDaniel/claude-obsidian obsidian-markdown2Manually: put the files in place
.github/skills/obsidian-markdown/SKILL.md1Skills CLI (Vercel)
npx skills add AgriciDaniel/claude-obsidian --skill obsidian-markdown -a gemini-cli2Platform CLI
gemini skills install https://github.com/AgriciDaniel/claude-obsidian --path skills/obsidian-markdownManually: put the files in place
.devin/skills/obsidian-markdown/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add AgriciDaniel/claude-obsidian --skill obsidian-markdown -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about obsidian-markdown
How do I install obsidian-markdown in Claude?
Run npx skills add AgriciDaniel/claude-obsidian --skill obsidian-markdown -a claude-code. The skill lands at ~/.claude/skills/obsidian-markdown/SKILL.md.
What does obsidian-markdown do?
It explains, drafts and validates Obsidian Flavored Markdown syntax: properties, wikilinks, embeds, callouts, tags, comments, highlights, block references, math and Mermaid. It is not meant for general Markdown or broad vault operations.
Can I edit notes with this skill?
Yes, but never directly. It builds a claude-obsidian.transaction.v1 bundle with operation_type: markdown; you review it and apply it with --approved-plan-sha256.
Source text
SKILL.md · MIT
---
name: obsidian-markdown
description: "Explain, draft, or validate Obsidian Flavored Markdown syntax: properties, wikilinks, embeds, callouts, tags, comments, highlights, block references, math, and Mermaid. Use when the user explicitly requests Obsidian note formatting or syntax help, not for general Markdown or broad vault operations."
---
# Obsidian Flavored Markdown
Use this as a compact fallback for Obsidian-specific syntax. Prefer a separately
installed `kepano/obsidian-skills` `obsidian-markdown` skill when available,
then current [Obsidian Help](https://help.obsidian.md/), for detailed or
version-sensitive questions.
Resolve the installed product root from this skill's own location, not from the
vault or current working directory:
```bash
PRODUCT_ROOT=/absolute/path/to/installed/claude-obsidian
CORE="$PRODUCT_ROOT/scripts/claude-obsidian.py"
test -f "$CORE"
```
Every `../wiki/references/` link in this file resolves the same way, relative
to this skill's own directory under `$PRODUCT_ROOT`, never relative to the
selected vault's `wiki/` directory.
Answer syntax questions read-only. If the user requests a vault edit, draft the
complete note, read [operation-transactions.md](../wiki/references/operation-transactions.md),
and build one `claude-obsidian.transaction.v1` bundle with
`operation_type: markdown` and only `wiki/` targets. Inspect it, then set
`APPROVAL_SHA256` to the returned `approval_sha256` after review and apply it
through the same vault-bound plan. A canonical page create or removal includes
an active index or MOC update in that bundle; update the overview only when its
stable high-level synthesis changed:
```bash
python3 "$CORE" transaction inspect "$BUNDLE" --vault "$VAULT"
python3 "$CORE" transaction apply "$BUNDLE" --vault "$VAULT" \
--approved-plan-sha256 "$APPROVAL_SHA256"
```
Never write a note directly.
## Properties
Use flat YAML properties and `YYYY-MM-DD` dates. Quote wikilinks inside YAML.
```yaml
---
type: concept
title: "Contextual Retrieval"
created: 2026-07-11
updated: 2026-07-11
status: developing
tags:
- retrieval
- ai/knowledge
aliases:
- Context-aware retrieval
related:
- "[[Retrieval]]"
sources:
- "[[Anthropic Contextual Retrieval]]"
---
```
Do not nest objects in generated wiki properties. Use block lists rather than
inline YAML arrays. A numeric-only tag is invalid in Obsidian even when quoted as a YAML string.
Use `year/2026` or `y2026`, or store a number in a `year` property. Tags need
at least one non-numeric character; valid Unicode tags remain supported. See
[Tags](https://obsidian.md/help/tags), checked 2026-10-17. Keep unknown existing
properties unless the requested edit changes them.
## Wikilinks and embeds
```markdown
[[Note Name]]
[[Note Name|Display text]]
[[Note Name#Heading]]
[[Note Name#^block-id]]
[[Folder/Note Name]]
This paragraph is addressable. ^evidence-block
![[Note Name#Summary]]
![[diagram.png|480]]
![[paper.pdf#page=3]]
```
Match the target filename exactly. Use a vault-relative folder path when a
basename is ambiguous. Use standard Markdown links for external URLs; use
wikilinks for this vault's notes.
## Callouts
```markdown
> [!note]
> Supporting context.
> [!warning] Review required
> This claim has contradictory evidence.
> [!question]- Open question
> What evidence would resolve this?
```
`-` starts collapsed and `+` starts expanded. Common built-in types include
`note`, `abstract`, `info`, `todo`, `tip`, `success`, `question`, `warning`,
`failure`, `danger`, `bug`, `example`, and `quote`. Preserve custom vault
callout types rather than rewriting them.
## Other Obsidian syntax
````markdown
#inline-tag #nested/tag
==Highlighted text==
Visible text %%hidden comment%%
Inline math: $E = mc^2$
$$
\int_0^1 x^2\,dx = \frac{1}{3}
$$
```mermaid
flowchart LR
Source --> Claim
```
````
Standard CommonMark/GFM headings, lists, tasks, tables, code fences, and
footnotes remain valid. Avoid HTML when native Markdown is sufficient.
## Validate a drafted note
- Parse the YAML boundary and keep property types consistent.
- Verify every internal target, heading, and block reference that can be
checked locally; never fabricate a target to make a link look complete.
- Keep evidence wording distinct from inference and preserve source locators.
- Ensure code fences and callout quoting are balanced.
- Run deterministic wiki lint after a requested mutation and report remaining
findings without silently repairing them.
For source-cited pages, also follow
[provenance.md](../wiki/references/provenance.md). Report the transaction
operation ID and exact changed paths after an applied edit.
© AgriciDaniel · MIT · AgriciDaniel/claude-obsidian