$npx -y skills add KevRojo/Dulus --skill obsidian-markdownCreate and edit Obsidian Flavored Markdown with wikilinks, embeds, callouts, properties, and other Obsidian-specific syntax. Use when working with .md files in Obsidian, or when the user mentions wikilinks, callouts, frontmatter, tags, embeds, or Obsidian notes. Also applies to D
| 1 | # Obsidian Flavored Markdown Skill |
| 2 | |
| 3 | Create and edit valid Obsidian Flavored Markdown. Obsidian extends CommonMark and GFM with wikilinks, embeds, callouts, properties, comments, and other syntax. This skill covers only Obsidian-specific extensions -- standard Markdown (headings, bold, italic, lists, quotes, code blocks, tables) is assumed knowledge. |
| 4 | |
| 5 | > **Dulus tip:** Your agent memory lives at `~/.dulus/memory/`. Open it as an Obsidian vault — every memory file becomes a node, wikilinks between notes form a graph, and you get a visual map of everything your agent knows. Works out of the box, no extra config. |
| 6 | |
| 7 | ## Workflow: Creating an Obsidian Note |
| 8 | |
| 9 | 1. **Add frontmatter** with properties (title, tags, aliases) at the top of the file. See [PROPERTIES.md](references/PROPERTIES.md) for all property types. |
| 10 | 2. **Write content** using standard Markdown for structure, plus Obsidian-specific syntax below. |
| 11 | 3. **Link related notes** using wikilinks (`[[Note]]`) for internal vault connections, or standard Markdown links for external URLs. |
| 12 | 4. **Embed content** from other notes, images, or PDFs using the `![[embed]]` syntax. See [EMBEDS.md](references/EMBEDS.md) for all embed types. |
| 13 | 5. **Add callouts** for highlighted information using `> [!type]` syntax. See [CALLOUTS.md](references/CALLOUTS.md) for all callout types. |
| 14 | 6. **Verify** the note renders correctly in Obsidian's reading view. |
| 15 | |
| 16 | > When choosing between wikilinks and Markdown links: use `[[wikilinks]]` for notes within the vault (Obsidian tracks renames automatically) and `[text](url)` for external URLs only. |
| 17 | |
| 18 | ## Internal Links (Wikilinks) |
| 19 | |
| 20 | ```markdown |
| 21 | [[Note Name]] Link to note |
| 22 | [[Note Name|Display Text]] Custom display text |
| 23 | [[Note Name#Heading]] Link to heading |
| 24 | [[Note Name#^block-id]] Link to block |
| 25 | [[#Heading in same note]] Same-note heading link |
| 26 | ``` |
| 27 | |
| 28 | Define a block ID by appending `^block-id` to any paragraph: |
| 29 | |
| 30 | ```markdown |
| 31 | This paragraph can be linked to. ^my-block-id |
| 32 | ``` |
| 33 | |
| 34 | For lists and quotes, place the block ID on a separate line after the block: |
| 35 | |
| 36 | ```markdown |
| 37 | > A quote block |
| 38 | |
| 39 | ^quote-id |
| 40 | ``` |
| 41 | |
| 42 | ## Embeds |
| 43 | |
| 44 | Prefix any wikilink with `!` to embed its content inline: |
| 45 | |
| 46 | ```markdown |
| 47 | ![[Note Name]] Embed full note |
| 48 | ![[Note Name#Heading]] Embed section |
| 49 | ![[image.png]] Embed image |
| 50 | ![[image.png|300]] Embed image with width |
| 51 | ![[document.pdf#page=3]] Embed PDF page |
| 52 | ``` |
| 53 | |
| 54 | See [EMBEDS.md](references/EMBEDS.md) for audio, video, search embeds, and external images. |
| 55 | |
| 56 | ## Callouts |
| 57 | |
| 58 | ```markdown |
| 59 | > [!note] |
| 60 | > Basic callout. |
| 61 | |
| 62 | > [!warning] Custom Title |
| 63 | > Callout with a custom title. |
| 64 | |
| 65 | > [!faq]- Collapsed by default |
| 66 | > Foldable callout (- collapsed, + expanded). |
| 67 | ``` |
| 68 | |
| 69 | Common types: `note`, `tip`, `warning`, `info`, `example`, `quote`, `bug`, `danger`, `success`, `failure`, `question`, `abstract`, `todo`. |
| 70 | |
| 71 | See [CALLOUTS.md](references/CALLOUTS.md) for the full list with aliases, nesting, and custom CSS callouts. |
| 72 | |
| 73 | ## Properties (Frontmatter) |
| 74 | |
| 75 | ```yaml |
| 76 | --- |
| 77 | title: My Note |
| 78 | date: 2024-01-15 |
| 79 | tags: |
| 80 | - project |
| 81 | - active |
| 82 | aliases: |
| 83 | - Alternative Name |
| 84 | cssclasses: |
| 85 | - custom-class |
| 86 | --- |
| 87 | ``` |
| 88 | |
| 89 | Default properties: `tags` (searchable labels), `aliases` (alternative note names for link suggestions), `cssclasses` (CSS classes for styling). |
| 90 | |
| 91 | See [PROPERTIES.md](references/PROPERTIES.md) for all property types, tag syntax rules, and advanced usage. |
| 92 | |
| 93 | ## Tags |
| 94 | |
| 95 | ```markdown |
| 96 | #tag Inline tag |
| 97 | #nested/tag Nested tag with hierarchy |
| 98 | ``` |
| 99 | |
| 100 | Tags can contain letters, numbers (not first character), underscores, hyphens, and forward slashes. Tags can also be defined in frontmatter under the `tags` property. |
| 101 | |
| 102 | ## Comments |
| 103 | |
| 104 | ```markdown |
| 105 | This is visible %%but this is hidden%% text. |
| 106 | |
| 107 | %% |
| 108 | This entire block is hidden in reading view. |
| 109 | %% |
| 110 | ``` |
| 111 | |
| 112 | ## Obsidian-Specific Formatting |
| 113 | |
| 114 | ```markdown |
| 115 | ==Highlighted text== Highlight syntax |
| 116 | ``` |
| 117 | |
| 118 | ## Math (LaTeX) |
| 119 | |
| 120 | ```markdown |
| 121 | Inline: $e^{i\pi} + 1 = 0$ |
| 122 | |
| 123 | Block: |
| 124 | $$ |
| 125 | \frac{a}{b} = c |
| 126 | $$ |
| 127 | ``` |
| 128 | |
| 129 | ## Diagrams (Mermaid) |
| 130 | |
| 131 | ````markdown |
| 132 | ```mermaid |
| 133 | graph TD |
| 134 | A[Start] --> B{Decision} |
| 135 | B -->|Yes| C[Do this] |
| 136 | B -->|No| D[Do that] |
| 137 | ``` |
| 138 | ```` |
| 139 | |
| 140 | To link Mermaid nodes to Obsidian notes, add `class NodeName internal-link;`. |
| 141 | |
| 142 | ## Footnotes |
| 143 | |
| 144 | ```markdown |
| 145 | Text with a footnote[^1]. |
| 146 | |
| 147 | [^1]: Footnote content. |
| 148 | |
| 149 | Inline footnote.^[This is inline.] |
| 150 | ``` |
| 151 | |
| 152 | ## Complete Example |
| 153 | |
| 154 | ````markdown |
| 155 | --- |
| 156 | title: Project Alpha |
| 157 | date: 2024-01-15 |
| 158 | tags: |
| 159 | - project |
| 160 | - active |
| 161 | status: in-progress |