jykim / obsidian-yaml-frontmatter

Manage YAML frontmatter properties with consistent formatting, property names, and value types. Use when creating or updating frontmatter in markdown files.

0 views
0 installs

Skill Content

---
name: obsidian-yaml-frontmatter
description: Manage YAML frontmatter properties with consistent formatting, property names, and value types. Use when creating or updating frontmatter in markdown files.
allowed-tools:
  - Read
  - Edit
license: MIT
---

# YAML Frontmatter Management

Standardize YAML frontmatter properties across all vault content.

## When to Use This Skill

Activate when you need to:
- Add or update frontmatter in markdown files
- Ensure consistent property naming and formatting
- Format tags, dates, or other property values
- Validate frontmatter structure

> **Note**: This skill manages frontmatter **PROPERTIES** (keys, values, types, formatting).
> For document **STRUCTURE** (heading hierarchy, section order, frontmatter position), use `obsidian-markdown-structure` skill.

## Core Frontmatter Rules

### 1. Single YAML Block at Top

**Structure**:
```yaml
---
property: value
---

## First Section Header
```

**Critical Rules**:
- One YAML block at top of file
- Blank line after closing `---`
- No content before first heading (after frontmatter)

### 2. Standard Property Names

**Use lowercase, consistent keys**:
```yaml
✅ CORRECT:
title: Document Title
created: 2025-10-31
tags:
  - tag1
source: https://example.com
author: Author Name

❌ INCORRECT:
Title: Document Title (capitalized)
date: 2025-10-31 (use "created" not "date")
tag: tag1 (use "tags" plural)
```

**No Duplicate Properties**:
- Use `created` (not both `date` and `created`)
- Use `tags` (not both `tag` and `tags`)

### 3. Tag Formatting

**CRITICAL: Plain text in YAML, NO hashtags**:
```yaml
✅ CORRECT:
tags:
  - journal
  - daily
  - reflection

❌ INCORRECT:
tags:
  - #journal
  - #daily
```

**Always use list format with dashes**:
```yaml
✅ CORRECT (list format):
tags:
  - tag1
  - tag2

❌ INCORRECT (inline):
tags: [tag1, tag2]
```

### 4. Date Format

**Use YYYY-MM-DD consistently**:
```yaml
✅ CORRECT:
created: 2025-10-31
updated: 2025-11-01

❌ INCORRECT:
created: 10/31/2025
created: 2025-10-31T10:30:00
```

### 5. Link Lists

**Wrap wiki links in quotes**:
```yaml
✅ CORRECT:
sources:
  - "[[Lifelog/2025-10-31 Lifelog - Codex]]"
  - "[[Limitless/2025-10-31]]"

links:
  - "[[Roundup/2025-10-31]]"

attendees:
  - "[[진영]]"
  - 민성

❌ INCORRECT:
sources:
  - [[Lifelog/2025-10-31 Lifelog - Codex]] (missing quotes)
```

### 6. Quote Values with Special Characters

**Quote values containing**: `:` `#` or numeric-looking strings
```yaml
✅ CORRECT:
title: "AI Era: Thriving Framework"
source: "https://example.com"
version: "2.0"

❌ INCORRECT:
title: AI Era: Thriving Framework (unquoted colon)
version: 2.0 (parsed as number, not string)
```

## Standard Property Set

### Core Properties (All Content)
```yaml
---
title: Document Title
created: YYYY-MM-DD
tags:
  - category
  - type
---
```

### Content with Sources
```yaml
---
title: Article Title
created: YYYY-MM-DD
source: https://url or file path
author: Author Name
tags:
  - clipping
  - topic
---
```

### Relational Content
```yaml
---
title: Document Title
created: YYYY-MM-DD
tags:
  - category
sources:
  - "[[Source File 1]]"
  - "[[Source File 2]]"
links:
  - "[[Related Topic]]"
---
```

### Events/Meetings
```yaml
---
title: Meeting Name
created: YYYY-MM-DD
event_date: YYYY-MM-DD
attendees:
  - "[[Person 1]]"
  - Person 2
sources:
  - "[[Limitless/YYYY-MM-DD#Section]]"
tags:
  - meeting
  - event
---
```

## Workflow

### Step 1: Determine Content Type
- Daily content (Journal, Lifelog, Roundup)
- Ingested content (Clippings, Articles)
- Created content (Analysis, Tasks, Events)
- Topic/Project pages

### Step 2: Select Property Set
- Core properties (title, created, tags)
- Add source/author if applicable
- Add relational links (sources, links, attendees)
- Add content-specific properties

### Step 3: Format Values
- Dates: YYYY-MM-DD format
- Tags: Plain text list (no #)
- Links: Quoted wiki links
- Special chars: Quote values with `:` or `#`

### Step 4: Structure Check
- Single YAML block at top
- Blank line after `---`
- Consistent property names (lowercase)
- No duplicate properties

## Reference Documentation

For detailed property definitions and examples:
- `reference/standard-properties.md` - All property definitions
- `reference/examples.md` - Frontmatter by content type

## Quality Checklist

Before completing frontmatter:
- [ ] Single YAML block at top with blank line after
- [ ] All property keys lowercase and consistent
- [ ] Tags are plain text (NO hashtags)
- [ ] Dates in YYYY-MM-DD format
- [ ] Wiki links wrapped in quotes
- [ ] Special characters quoted appropriately
- [ ] No duplicate properties (created vs date, tags vs tag)