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
- Regular backups - Git or sync service
- Consistent naming - Use conventions
- Use templates - Speed up note creation
- Link liberally - Build knowledge graph
- Daily notes - Capture everything
- Review regularly - Process inbox
- Minimal plugins - Only what you need
- Frontmatter - Structured metadata
- Atomic notes - One idea per note
- Document workflows - Create guides for yourself
Weekly Installs
1
Repository
fgarofalo56/sup…t_fabricFirst Seen
13 days ago
Security Audits
Installed on
amp1
cline1
openclaw1
opencode1
cursor1
kimi-cli1