← Back to skills
extension
Category: Development & EngineeringAPI key requirement unconfirmed

properties

Obsidian YAML frontmatter property management via the official CLI. Covers reading, setting, and removing properties/metadata on notes. Use when user mentions frontmatter, properties, metadata, YAML, or note attributes like status, tags, dates, aliases.

personAuthor: jakexiaohubgithub

Obsidian Properties Management

When to Use This Skill

| Use this skill when... | Use the alternative instead when... | |---|---| | Reading, setting, or removing a single YAML property on a live note via the running CLI | Doing offline bulk frontmatter rewrites across many files — use vault-frontmatter | | Updating status:, aliases:, or a date property on a note Obsidian currently has open | Editing note body content rather than frontmatter — use vault-files | | Auditing which property names exist across the vault, and how often | Listing or counting tags — use search-discovery (tags, tag) | | Confirming a property change is reflected in Obsidian's metadata cache | Repairing broken wikilinks after a rename — use vault-wikilinks |

Read, set, and remove YAML frontmatter properties on Obsidian notes using the official CLI.

Prerequisites

  • Obsidian desktop 1.12.7+ installer with CLI enabled
  • Obsidian must be running

Command Shape

Property commands are singular (property:set, property:remove, property:read) and address the property by name=, not by a key=value pair. The plural properties command is the vault-wide listing/inspection view.

| Command | Purpose | |---------|---------| | properties | List property names across the vault, or on one file | | property:read | Read one property's value | | property:set | Set one property (optionally typed) | | property:remove | Remove one property | | aliases | List aliases across the vault, or on one file |

All four file-scoped commands default to the active file when neither file= nor path= is given.

List / Inspect Properties

# Every property name used in the vault (default format: yaml)
obsidian properties

# With occurrence counts, sorted by frequency
obsidian properties counts sort=count

# Count of distinct property names
obsidian properties total

# Occurrence count for one property name
obsidian properties name=status

# Properties on a specific file, or the active file
obsidian properties file="Project Spec"
obsidian properties path="Projects/Spec.md"
obsidian properties active

# Structured output
obsidian properties file="Project Spec" format=json
obsidian properties format=tsv

Read a Property

obsidian property:read name=status
obsidian property:read name=status file="Project Spec"
obsidian property:read name=due path="Projects/Spec.md"

Set a Property

name= and value= are both required; type= is optional and tells Obsidian how to store the value.

# Text (default type) on the active file
obsidian property:set name=status value=active

# On a specific file
obsidian property:set name=status value=draft file="Post"

# Typed values
obsidian property:set name=due value=2026-03-15 type=date
obsidian property:set name=reviewed value="2026-03-15T09:00" type=datetime
obsidian property:set name=priority value=1 type=number
obsidian property:set name=published value=true type=checkbox
obsidian property:set name=aliases value="JS,ECMAScript" type=list

Setting multiple properties is one invocation per property — there is no multi-property form.

Remove a Property

obsidian property:remove name=draft
obsidian property:remove name=old_field file="Note"

Aliases

# All aliases in the vault
obsidian aliases

# Count, or with the owning file paths
obsidian aliases total
obsidian aliases verbose

# Aliases on the active file, or a specific one
obsidian aliases active
obsidian aliases file="JavaScript"

To add an alias, set the aliases property as a list:

obsidian property:set name=aliases value="JS,js,ECMAScript" type=list file="JavaScript"

Property Types

| type= | Example value | Notes | |---------|---------------|-------| | text | active | Default when type= is omitted | | list | "a,b,c" | Comma-separated; use for aliases, tags | | number | 1 | Numeric | | checkbox | true | Boolean | | date | 2026-03-15 | ISO 8601 date | | datetime | 2026-03-15T09:00 | ISO 8601 date + time |

Common Patterns

Status workflow

obsidian property:set name=status value=draft file="Post"
obsidian property:set name=status value=review file="Post"
obsidian property:set name=status value=published file="Post"
obsidian property:set name=published value=true type=checkbox file="Post"

Audit property usage before a schema change

# Which property names exist, and how heavily used
obsidian properties counts sort=count

# How many notes carry the one you're about to rename
obsidian properties name=status

Confirm a write landed

obsidian property:set name=status value=active file="Note"
obsidian property:read name=status file="Note"

Agentic Optimizations

| Context | Command | |---------|---------| | Property names + counts | obsidian properties counts sort=count | | Properties on one file (structured) | obsidian properties file=X format=json | | Read one property | obsidian property:read name=K file=X | | Set a property | obsidian property:set name=K value=V file=X | | Set a typed property | obsidian property:set name=K value=V type=date | | Remove a property | obsidian property:remove name=K file=X | | Usage count for a name | obsidian properties name=K | | List aliases with paths | obsidian aliases verbose |

Related Skills

  • vault-files — Read and create notes
  • search-discovery — Search by property values with [key:value] syntax; tag listing (tags, tag)
  • bases — Base views filter on the properties set here