obsidian

SKILL.md

Obsidian Skill

Complete guide for Obsidian - knowledge base on local markdown files.

Quick Reference

Key Concepts

Concept Description
Vault Folder containing notes
Note Markdown file
Link Connection between notes
Tag Categorization marker
Graph Visual note connections

File Structure

vault/
├── .obsidian/           # Settings
│   ├── plugins/
│   ├── themes/
│   └── workspace.json
├── Daily Notes/
├── Templates/
└── Notes/

1. Markdown Syntax

Internal Links

# Basic link
[[Note Name]]

# Link with alias
[[Note Name|Display Text]]

# Link to heading
[[Note Name#Heading]]

# Link to block
[[Note Name#^block-id]]

# Embed note
![[Note Name]]

# Embed specific section
![[Note Name#Heading]]

Tags

# Inline tag
#tag #nested/tag

# YAML frontmatter tags
---
tags: [tag1, tag2, nested/tag]
---

Callouts

> [!note]
> This is a note callout

> [!warning]
> This is a warning

> [!tip]
> This is a tip

> [!info]- Collapsed
> This is collapsed by default

> [!question]+ Expanded
> This is expanded by default

Task Lists

- [ ] Incomplete task
- [x] Completed task
- [/] In progress
- [-] Cancelled

2. Frontmatter (YAML)

Common Properties

---
title: Note Title
date: 2024-01-15
tags: [tag1, tag2]
aliases: [alias1, alias2]
cssclass: custom-class
created: 2024-01-15T10:30:00
modified: 2024-01-16T14:20:00
status: draft
author: Name
---

For Dataview Queries

---
type: book
rating: 5
year: 2024
completed: true
---

3. Templates

Daily Note Template

---
date: {{date}}
tags: [daily]
---

# {{date:dddd, MMMM D, YYYY}}

## Tasks
- [ ]

## Notes

## Journal

---
[[{{date:YYYY-MM-DD|yesterday}}|← Yesterday]] | [[{{date:YYYY-MM-DD|tomorrow}}|Tomorrow →]]

Meeting Template

---
date: {{date}}
tags: [meeting]
attendees:
type: meeting
---

# Meeting: {{title}}

## Attendees
-

## Agenda
1.

## Notes

## Action Items
- [ ]

## Next Steps

Project Template

---
date: {{date}}
tags: [project]
status: active
priority: medium
---

# {{title}}

## Overview

## Goals
- [ ]

## Tasks
- [ ]

## Resources

## Notes

## Log
### {{date}}
-

4. Dataview Plugin

Basic Queries

# List all notes with tag
LIST FROM #tag

# Table of notes
TABLE file.ctime as Created, status
FROM "Projects"
WHERE status = "active"
SORT file.ctime DESC

# Task list
TASK FROM "Daily Notes"
WHERE !completed
GROUP BY file.link

Advanced Queries

# Books read this year
TABLE rating, author, year
FROM #book
WHERE completed AND year = 2024
SORT rating DESC

# Upcoming deadlines
TABLE due, status
FROM "Tasks"
WHERE due >= date(today) AND due <= date(today) + dur(7 days)
SORT due ASC

# Recent notes
LIST
FROM ""
WHERE file.mday >= date(today) - dur(7 days)
SORT file.mday DESC
LIMIT 10

Inline Queries

Total books: `= length(filter(this.file.tasks, (t) => t.completed))`

Today: `= date(today)`

Files in folder: `= length(filter(pages, (p) => p.file.folder = "Notes"))`

5. Templater Plugin

Basic Syntax

<%* /* JavaScript code */ %>
<% /* Output */ %>
<%+ /* Whitespace control */ %>

# Get current date
<% tp.date.now("YYYY-MM-DD") %>

# Get title
<% tp.file.title %>

# Create date with offset
<% tp.date.now("YYYY-MM-DD", 7) %>

# Cursor position
<% tp.file.cursor() %>

User Prompts

<%*
const title = await tp.system.prompt("Enter title");
const type = await tp.system.suggester(
  ["Task", "Note", "Project"],
  ["task", "note", "project"]
);
_%>

# <% title %>
Type: <% type %>

File Operations

<%*
// Move file
await tp.file.move("/Archive/" + tp.file.title);

// Rename file
await tp.file.rename("New Name");

// Create file
await tp.file.create_new("Content", "New Note");

// Get file content
const content = await tp.file.content;
%>

Conditional Logic

<%* if (tp.file.tags.includes("daily")) { %>
## Daily Tasks
<%* } else { %>
## General Notes
<%* } %>

6. QuickAdd Plugin

Capture Macro

// Quick capture to inbox
module.exports = async (params) => {
  const { app, quickAddApi } = params;
  const content = await quickAddApi.inputPrompt("Quick capture");

  const file = app.vault.getAbstractFileByPath("Inbox.md");
  await app.vault.append(file, `\n- ${content}`);
};

Template Choices

// Dynamic template selection
module.exports = async (params) => {
  const templates = ["Meeting", "Task", "Note"];
  const choice = await params.quickAddApi.suggester(
    templates,
    templates
  );

  // Apply template based on choice
};

7. Vault Organization

Folder Structure Options

PARA Method:

vault/
├── 1 - Projects/
├── 2 - Areas/
├── 3 - Resources/
├── 4 - Archive/
└── Templates/

Zettelkasten:

vault/
├── Fleeting/
├── Literature/
├── Permanent/
└── Index/

Simple:

vault/
├── Daily/
├── Notes/
├── Projects/
├── Templates/
└── Attachments/

8. Hotkeys & Commands

Essential Hotkeys

Cmd/Ctrl + N          New note
Cmd/Ctrl + O          Quick switcher
Cmd/Ctrl + P          Command palette
Cmd/Ctrl + Shift + F  Search all files
Cmd/Ctrl + E          Toggle edit/preview
Cmd/Ctrl + G          Open graph view
Cmd/Ctrl + ,          Settings

Custom Hotkeys

// .obsidian/hotkeys.json
{
  "daily-notes": "Cmd+D",
  "templater:insert-template": "Cmd+T"
}

9. CSS Customization

Custom CSS Snippet

/* .obsidian/snippets/custom.css */

/* Change heading colors */
.cm-header-1 {
  color: #ff6b6b;
}

/* Style tags */
.tag {
  background-color: #e3f2fd;
  border-radius: 4px;
  padding: 2px 6px;
}

/* Hide frontmatter in preview */
.frontmatter-container {
  display: none;
}

/* Custom callout */
.callout[data-callout="custom"] {
  --callout-color: 100, 150, 200;
  --callout-icon: lucide-star;
}

10. Sync & Backup

Git Backup

# .gitignore
.obsidian/workspace.json
.obsidian/workspace-mobile.json
.obsidian/plugins/*/data.json
.trash/

Obsidian Git Plugin Settings

Backup interval: 10 minutes
Auto pull on startup: true
Commit message: vault backup: {{date}}

Syncthing Setup

1. Install Syncthing on all devices
2. Add vault folder to Syncthing
3. Exclude .obsidian/workspace*.json
4. Enable file versioning

11. Useful Plugins

Essential

- Dataview: Database queries
- Templater: Advanced templates
- QuickAdd: Quick captures
- Periodic Notes: Daily/weekly notes
- Calendar: Calendar view

Productivity

- Tasks: Task management
- Kanban: Kanban boards
- Projects: Project management
- Excalidraw: Drawings

Organization

- Tag Wrangler: Tag management
- Folder Notes: Folder index
- Auto Link Title: Auto fetch titles
- Note Refactor: Split/merge notes

12. Troubleshooting

Common Issues

Sync conflicts:

1. Check for duplicate files with (1) suffix
2. Use Obsidian Sync or single-device editing
3. Enable file versioning in sync tool

Plugin issues:

1. Disable all community plugins
2. Enable one by one to find issue
3. Check console (Cmd+Opt+I)
4. Update plugins and Obsidian

Performance:

1. Reduce vault size
2. Disable unused plugins
3. Optimize Dataview queries
4. Use lazy loading

Best Practices

  1. Regular backups - Git or sync service
  2. Consistent naming - Use conventions
  3. Use templates - Speed up note creation
  4. Link liberally - Build knowledge graph
  5. Daily notes - Capture everything
  6. Review regularly - Process inbox
  7. Minimal plugins - Only what you need
  8. Frontmatter - Structured metadata
  9. Atomic notes - One idea per note
  10. Document workflows - Create guides for yourself
Weekly Installs
1
First Seen
13 days ago
Installed on
amp1
cline1
openclaw1
opencode1
cursor1
kimi-cli1