Skip to content

Examples

Real-world examples of YAML Toolkit for Obsidian rules using the universal FOR pattern.

Note: Examples show Condition → Action format. Enter these in separate fields in the plugin.

Content Management

Mark Drafts for Review

Input:

yaml
---
title: My Note
status: draft
tags: [project, active]
---

Condition: status = "draft" AND HAS tags

Action (Rule 1): SET status "ready-for-review"

Action (Rule 2): SET reviewed_date "2025-11-24T21:45:00"

Output (after both rules):

yaml
---
title: My Note
status: ready-for-review
tags: [project, active]
reviewed_date: 2025-11-24T21:45:00
---

Multiple Fields

To set multiple top-level fields, create two separate rules with the same condition.

Archive Old Notes

Input:

yaml
---
title: Old Project
created_date: 2023-06-15
tags: [notes, project]
---

Condition: created_date < "2024-01-01" AND NOT tags contains "keep"

Action: FOR tags APPEND "archived"

Output:

yaml
---
title: Old Project
created_date: 2023-06-15
tags: [notes, project, archived]
---

Tagging Operations

Add Tag to Untagged Notes

Input:

yaml
---
title: Untagged Note
status: active
---

Condition: NOT HAS tags

Action: SET tags ["untagged"]

Output:

yaml
---
title: Untagged Note
status: active
tags: [untagged]
---

Clean Up Multiple Deprecated Tags

Input:

yaml
---
title: Legacy Note
tags: [draft, wip, temp, project, active]
---

Condition: HAS tags

Action: FOR tags REMOVE_ALL ["draft", "wip", "temp"]

Output:

yaml
---
title: Legacy Note
tags: [project, active]
---

Metadata Management

Add Missing Status

Input:

yaml
---
title: New Note
---

Condition: NOT HAS status

Action (Rule 1): SET status "draft"

Action (Rule 2): SET created_date "2025-11-24T22:10:00"

Output (after both rules):

yaml
---
title: New Note
status: draft
created_date: 2025-11-24T22:10:00
---

Update Metadata

Input:

yaml
---
title: Settings
custom_field: old-value
---

Condition: custom_field = "old-value"

Action (Rule 1): SET custom_field "new-value"

Action (Rule 2): SET updated_date "2025-11-24"

Output (after both rules):

yaml
---
title: Settings
custom_field: new-value
updated_date: 2025-11-24
---

Priority Management

Flag High Priority

Input:

yaml
---
title: Critical Task
priority: 9
tags: [work, project]
---

Condition: priority > 7 AND NOT tags contains "urgent"

Action: FOR tags APPEND "urgent"

Output:

yaml
---
title: Critical Task
priority: 9
tags: [work, project, urgent]
---

Reset Priorities

Input:

yaml
---
title: Finished Task
status: completed
priority: 5
---

Condition: status = "completed"

Action: DELETE priority

Output:

yaml
---
title: Finished Task
status: completed
---

Date Operations

Mark Overdue

Input:

yaml
---
title: Late Task
deadline: 2025-11-01
status: active
---

Condition: HAS deadline AND deadline < "" AND status != "completed"

Action: SET status "overdue"

Output:

yaml
---
title: Late Task
deadline: 2025-11-01
status: overdue
---

String Operations

Strip Title Prefixes

Input:

yaml
---
title: Dr. John Smith
author: Dr. Jane Doe
---

Condition: author contains "Dr."

Action: REPLACE author /^Dr\.?\s+// ""

Output:

yaml
---
title: Dr. John Smith
author: Jane Doe
---

Mark Drafts with Prefix

Input:

yaml
---
title: Important Article
status: draft
---

Condition: status = "draft" AND NOT title contains "DRAFT: "

Action: INSERT title "DRAFT: " AT 0

Output:

yaml
---
title: DRAFT: Important Article
status: draft
---

Build Processing Log

Input:

yaml
---
title: Research Note
notes: "Initial draft completed"
---

Condition: HAS notes

Action: INSERT notes "\n\n---\nReviewed: 2025-12-05" AT -1

Output:

yaml
---
title: Research Note
notes: "Initial draft completed\n\n---\nReviewed: 2025-12-05"
---

Numeric Operations

Track View Count

Input:

yaml
---
title: Popular Article
views: 42
---

Condition: HAS views

Action: INCREMENT views 1

Output:

yaml
---
title: Popular Article
views: 43
---

Initialize Missing Counter

Input:

yaml
---
title: New Article
---

Condition: NOT HAS views

Action: INCREMENT views 1

Output:

yaml
---
title: New Article
views: 1
---

Complex Rules

Conditional Workflow

Input:

yaml
---
title: High Priority Item
status: active
priority: 8
tags: [project]
---

Condition: (status = "active" OR status = "pending") AND priority >= 5 AND NOT tags contains "reviewed"

Action (Rule 1): SET status "in-review"

Action (Rule 2): SET review_date "2025-11-24T22:10:00"

Action (Rule 3): FOR tags ADD "reviewed"

Output (after all three rules):

yaml
---
title: High Priority Item
status: in-review
priority: 8
tags: [project, reviewed]
review_date: 2025-11-24T22:10:00
---

Multiple Operations

This workflow requires three separate rules with the same condition.

Working with Arrays of Objects

These examples show operations for arrays of structured objects (tasks, meetings, reading lists), not simple scalar arrays (tags).

Update Specific Array Items

What makes this unique: Update fields within specific array items based on their properties.

Example: Task Management

Input:

yaml
---
title: Weekly Tasks
tasks:
  - name: Review PR #123
    status: pending
    priority: 8
    assignee: alice
  - name: Update documentation
    status: pending
    priority: 3
    assignee: bob
  - name: Fix critical bug
    status: done
    priority: 9
    assignee: alice
---

Rule: Flag high-priority pending tasks as urgent

Condition: HAS tasks
Action: FOR tasks WHERE status = "pending" AND priority >= 7 SET status "urgent", flagged true

Output:

yaml
---
title: Weekly Tasks
tasks:
  - name: Review PR #123
    status: urgent        # ← Changed
    priority: 8
    assignee: alice
    flagged: true         # ← Added
  - name: Update documentation
    status: pending       # ← Unchanged (priority too low)
    priority: 3
    assignee: bob
  - name: Fix critical bug
    status: done          # ← Unchanged (already done)
    priority: 9
    assignee: alice
---

More Examples:

Reassign tasks:

Action: FOR tasks WHERE assignee = "bob" SET assignee "alice", reassignedDate "{{today}}"

Mark books finished:

Action: FOR readingList WHERE currentPage = pages SET status "finished", completedDate "{{today}}"

Sort Object Arrays

Example: Sort Tasks by Priority

Input:

yaml
---
title: Project Tasks
tasks:
  - name: Write tests
    priority: 3
  - name: Fix security issue
    priority: 9
  - name: Update README
    priority: 1
  - name: Review code
    priority: 7
---

Condition: (none needed)

Action: FOR tasks SORT BY priority DESC

Output:

yaml
---
title: Project Tasks
tasks:
  - name: Fix security issue
    priority: 9
  - name: Review code
    priority: 7
  - name: Write tests
    priority: 3
  - name: Update README
    priority: 1
---

Prioritize Specific Items

What makes this unique: Move items based on properties without full sorting.

Example: Move High-Priority Items to Top

Input:

yaml
---
title: My Reading List
books:
  - title: Casual Read
    priority: normal
  - title: Important Research
    priority: high
  - title: Quick Reference
    priority: low
  - title: Critical Paper
    priority: high
---

Condition: (none needed)

Action: FOR books WHERE priority = "high" MOVE TO START

Output:

yaml
---
title: My Reading List
books:
  - title: Important Research    # ← Moved to top
    priority: high
  - title: Critical Paper        # ← Moved to top
    priority: high
  - title: Casual Read           # ← Stays below
    priority: normal
  - title: Quick Reference       # ← Stays at bottom
    priority: low
---

More Examples:

Move unwatched movies to top:

Action: FOR watchlist WHERE watched = false MOVE TO START

Move completed tasks to end:

Action: FOR tasks WHERE status = "done" MOVE TO END

Move urgent items after specific item:

Action: FOR tasks WHERE priority = "urgent" MOVE TO AFTER name = "Planning meeting"

Multi-Step Workflow

Example: Update and Organize Tasks

Input:

yaml
---
title: Sprint Tasks
tasks:
  - name: Bug fix
    status: pending
    points: 3
  - name: New feature
    status: in-progress
    points: 8
  - name: Code review
    status: pending
    points: 2
---

Step 1 - Mark small pending tasks as quick-wins:

Action: FOR tasks WHERE status = "pending" AND points <= 3 SET status "quick-win"

Step 2 - Move quick-wins to top:

Action: FOR tasks WHERE status = "quick-win" MOVE TO START

Step 3 - Sort remaining by points:

Action: FOR tasks SORT BY points DESC

Final Output:

yaml
---
title: Sprint Tasks
tasks:
  - name: Bug fix             # ← Quick-win at top
    status: quick-win
    points: 3
  - name: Code review         # ← Quick-win at top
    status: quick-win
    points: 2
  - name: New feature         # ← Sorted by points
    status: in-progress
    points: 8
---

Understanding Array Types

Scalar arrays (simple values):

yaml
tags: [project, active, urgent]
categories: [work, personal]
  • Operations: ADD, REMOVE_ALL, REMOVE_ANY, SORT, DEDUPLICATE, MOVE, etc.
  • Target: The values themselves

Object arrays (structured data):

yaml
tasks:
  - name: Task 1
    status: pending
    priority: 8
  • Operations: FOR array WHERE condition SET, FOR array WHERE condition MOVE, FOR array SORT BY
  • Target: Specific objects based on their properties

See Actions for complete operation reference.

Advanced Operators

Powerful Features

These examples showcase advanced condition operators that provide precise querying, type validation, and nested array filtering capabilities.

Using .length - Count and Filter

Find notes with many tags:

Input:

yaml
---
title: Popular Article
tags: [javascript, typescript, react, vue, angular, svelte, node, deno]
---

Condition: tags.length >= 5

Action: FOR tags APPEND "well-tagged"

Output:

yaml
---
title: Popular Article
tags: [javascript, typescript, react, vue, angular, svelte, node, deno, well-tagged]
---

Find short titles that need expansion:

Input:

yaml
---
title: API
status: draft
---

Condition: title.length < 10 AND status = "draft"

Action: FOR tags APPEND "needs-better-title"

Output:

yaml
---
title: API
status: draft
tags: [needs-better-title]
---

Count metadata fields:

Input:

yaml
---
title: Minimal Note
author: Alice
---

Condition: metadata.length < 5

Where metadata is treated as an object, this checks the number of keys.

Using empty / !empty - Detect Empty Values

Clean up empty tags arrays:

Input:

yaml
---
title: Note
tags: []
status: active
---

Condition: tags empty

Action: DELETE tags

Output:

yaml
---
title: Note
status: active
---

Find notes with actual content:

Input:

yaml
---
title: Draft
content: ""
---

Condition: content empty AND NOT HAS published_date

Action: FOR tags APPEND "empty-draft"

Output:

yaml
---
title: Draft
content: ""
tags: [empty-draft]
---

Distinguish between missing and empty:

yaml
# File 1: tags not present
# tags empty → false (can't be empty if doesn't exist)
# tags exists → false

# File 2: tags: []
# tags empty → true
# tags exists → true

# File 3: tags: null
# tags empty → false (null ≠ empty)
# tags :null → true

Using Type Checking - Normalize Data

Convert string tags to arrays:

Input:

yaml
---
title: Legacy Note
tags: "old-format-tag"
---

Condition: tags exists AND tags !:array

Action:

SET tags ["legacy", "{{fm:tags}}"]

Output:

yaml
---
title: Legacy Note
tags: [legacy, old-format-tag]
---

Find notes with numeric status (should be string):

Input:

yaml
---
title: Broken Note
status: 1
---

Condition: status :number

Action: SET status "active"

Output:

yaml
---
title: Broken Note
status: active
---

Validate required field types:

Condition: priority exists AND priority !:number

Action: DELETE priority

This finds and removes priority fields that aren't numbers.

Using ANY / ALL - Query Nested Data

Find notes with any active project:

Input:

yaml
---
title: Projects Dashboard
projects:
  - name: Website Redesign
    status: active
    priority: 8
  - name: Mobile App
    status: pending
    priority: 3
  - name: API Refactor
    status: planning
    priority: 5
---

Condition: ANY projects WHERE status = "active"

Action: FOR tags APPEND "has-active-projects"

Output:

yaml
---
title: Projects Dashboard
projects:
  - name: Website Redesign
    status: active
    priority: 8
  - name: Mobile App
    status: pending
    priority: 3
  - name: API Refactor
    status: planning
    priority: 5
tags: [has-active-projects]
---

Verify all tasks are assigned:

Input:

yaml
---
title: Sprint Board
tasks:
  - name: Bug fix
    assignee: alice
  - name: Feature work
    assignee: bob
  - name: Testing
    assignee: alice
---

Condition: ALL tasks WHERE assignee exists

Action: FOR tags APPEND "fully-assigned"

Combine ANY with high priority:

Input:

yaml
---
title: Urgent Projects
projects:
  - name: Security Patch
    priority: 10
    status: active
  - name: Documentation
    priority: 2
    status: active
---

Condition: ANY projects WHERE priority > 8

Action: SET urgent true

Output:

yaml
---
title: Urgent Projects
urgent: true
projects:
  - name: Security Patch
    priority: 10
    status: active
  - name: Documentation
    priority: 2
    status: active
---

Nested quantifiers - Find files with pending work:

Input:

yaml
---
title: Team Workload
teams:
  - name: Backend
    tasks:
      - status: done
      - status: done
  - name: Frontend
    tasks:
      - status: pending
      - status: done
---

Condition: ANY teams WHERE ANY tasks WHERE status = "pending"

Action: FOR tags APPEND "has-pending-work"

Explanation: Searches through teams, and for each team, checks if ANY of its tasks are pending. If any team has pending tasks, the condition matches.

Using Negative Indexing - Access from End

Access array items from the end without knowing the array length.

Check last task completion:

Input:

yaml
---
title: Project Tasks
tasks:
  - name: Setup
    status: done
  - name: Development
    status: done
  - name: Testing
    status: pending
---

Condition: tasks[-1].status = "done"

Result: Condition is false (last task is "pending")

Update most recent entry:

Input:

yaml
---
title: Activity Log
history:
  - date: 2025-01-01
    event: Created
    reviewed: false
  - date: 2025-01-05
    event: Updated
    reviewed: false
---

Condition: history[-1].reviewed = false

Action: FOR history[-1] SET reviewed true

Output:

yaml
---
title: Activity Log
history:
  - date: 2025-01-01
    event: Created
    reviewed: false
  - date: 2025-01-05
    event: Updated
    reviewed: true    # ← Last entry updated
---

Insert before last item:

Input:

yaml
---
title: Tag Management
tags: [project, active, important, final]
---

Action: FOR tags INSERT "archived" AT -2

Output:

yaml
---
title: Tag Management
tags: [project, active, important, archived, final]
#                                   ↑ inserted before last
---

Access nested arrays from end:

Input:

yaml
---
title: Multi-Project Dashboard
projects:
  - name: Alpha
    tasks:
      - id: T1
        priority: 5
      - id: T2
        priority: 9
  - name: Beta
    tasks:
      - id: T3
        priority: 2
---

Condition: projects[-1].tasks[-1].priority < 5

Action: SET needs_attention true

Result: Condition is true (Beta's last task has priority 2)

Use cases:

  • Process most recent log entries
  • Check latest task status
  • Update final array elements
  • Insert items relative to end

Relative Positioning - MOVE TO AFTER/BEFORE

Position items relative to other items in the array without full sorting.

Prioritize urgent tasks after planning:

Input:

yaml
---
title: Sprint Tasks
tasks:
  - name: Sprint Planning
    type: planning
    priority: normal
  - name: Code Review
    type: review
    priority: normal
  - name: Security Patch
    type: hotfix
    priority: critical
  - name: Feature Development
    type: development
    priority: normal
  - name: Testing
    type: qa
    priority: low
---

Condition: ANY tasks WHERE priority = "critical"

Action: FOR tasks WHERE priority = "critical" MOVE TO AFTER type = "planning"

Output:

yaml
---
title: Sprint Tasks
tasks:
  - name: Sprint Planning
    type: planning
    priority: normal
  - name: Security Patch     # ← Moved right after planning
    type: hotfix
    priority: critical
  - name: Code Review        # ← Pushed down
    type: review
    priority: normal
  - name: Feature Development
    type: development
    priority: normal
  - name: Testing
    type: qa
    priority: low
---

Insert review step before deployment:

Input:

yaml
---
title: Release Workflow
steps:
  - name: Build
    status: completed
  - name: Deployment
    status: pending
  - name: QA Review
    status: pending
---

Action: FOR steps WHERE name = "QA Review" MOVE TO BEFORE name = "Deployment"

Output:

yaml
---
title: Release Workflow
steps:
  - name: Build
    status: completed
  - name: QA Review          # ← Moved before deployment
    status: pending
  - name: Deployment         # ← Now comes after review
    status: pending
---

Group related items together:

Input:

yaml
---
title: Documentation Tasks
items:
  - category: Setup
    task: Installation
  - category: Advanced
    task: Custom Config
  - category: Setup
    task: Quick Start
  - category: Reference
    task: API Docs
  - category: Setup
    task: Prerequisites
---

Action: FOR items WHERE category = "Setup" MOVE TO START

Output:

yaml
---
title: Documentation Tasks
items:
  - category: Setup          # ← All Setup items
    task: Installation       #   grouped at start
  - category: Setup
    task: Quick Start
  - category: Setup
    task: Prerequisites
  - category: Advanced       # ← Other categories below
    task: Custom Config
  - category: Reference
    task: API Docs
---

Use cases:

  • Position urgent work after planning
  • Enforce workflow ordering (review before deployment)
  • Group related items without full sort
  • Maintain manual ordering with selective positioning

Working with Deeply Nested Data

Access and modify complex multi-level structures.

Multi-level object paths:

Input:

yaml
---
title: User Profile
metadata:
  author:
    profile:
      name: Alice Johnson
      verified: false
      contact:
        email: alice@example.com
        phone: +1-555-0123
---

Condition: metadata.author.profile.verified = false

Action: SET metadata.author.profile.verified true

Output:

yaml
---
title: User Profile
metadata:
  author:
    profile:
      name: Alice Johnson
      verified: true              # ← Updated deep nested field
      contact:
        email: alice@example.com
        phone: +1-555-0123
---

Nested arrays within objects:

Input:

yaml
---
title: Project Management
projects:
  - name: Website
    phases:
      - name: Design
        tasks:
          - id: T1
            title: Wireframes
            status: done
            assignee: Alice
          - id: T2
            title: Mockups
            status: pending
            assignee: Bob
      - name: Development
        tasks:
          - id: T3
            title: Backend API
            status: pending
            assignee: Alice
---

Condition: projects[0].phases[0].tasks[0].assignee = "Alice"

Action: FOR projects[0].phases[0].tasks WHERE status = "pending" SET status "active", started ""

Output:

yaml
---
title: Project Management
projects:
  - name: Website
    phases:
      - name: Design
        tasks:
          - id: T1
            title: Wireframes
            status: done
            assignee: Alice
          - id: T2
            title: Mockups
            status: active         # ← Updated
            started: "2026-01-06"  # ← Added
            assignee: Bob
      - name: Development
        tasks:
          - id: T3
            title: Backend API
            status: pending
            assignee: Alice
---

Complex nested API configuration:

Input:

yaml
---
title: API Configuration
config:
  services:
    - name: prod-api
      region: us-east
      endpoints:
        - path: /api/v1/users
          methods: [GET, POST]
          rateLimit: 1000
          auth: required
        - path: /api/v1/posts
          methods: [GET, POST, PUT, DELETE]
          rateLimit: 500
          auth: required
---

Condition: config.services[0].endpoints[0].rateLimit < 2000

Action: SET config.services[0].endpoints[0].rateLimit 5000

Output:

yaml
---
title: API Configuration
config:
  services:
    - name: prod-api
      region: us-east
      endpoints:
        - path: /api/v1/users
          methods: [GET, POST]
          rateLimit: 5000         # ← Updated nested value
          auth: required
        - path: /api/v1/posts
          methods: [GET, POST, PUT, DELETE]
          rateLimit: 500
          auth: required
---

Combine with negative indexing:

Input:

yaml
---
title: Team Structure
teams:
  - name: Backend
    members:
      - name: Alice
        role: senior
        active: true
      - name: Bob
        role: junior
        active: false
  - name: Frontend
    members:
      - name: Charlie
        role: lead
        active: true
---

Condition: teams[-1].members[-1].role = "lead"

Action: FOR teams[-1].members[-1] SET badge "team-lead"

Output:

yaml
---
title: Team Structure
teams:
  - name: Backend
    members:
      - name: Alice
        role: senior
        active: true
      - name: Bob
        role: junior
        active: false
  - name: Frontend
    members:
      - name: Charlie
        role: lead
        active: true
        badge: team-lead    # ← Added to last team's last member
---

Use cases:

  • Manage complex configuration structures
  • Update nested project/task hierarchies
  • Access deeply nested API settings
  • Modify multi-level organizational data

Data Quality:

  • Clean and deduplicate
  • Normalize formats
  • Validate completeness
  • Add derived metadata

Best Practices:

  • Test workflows on single files first
  • Use dry run to preview changes
  • Keep related operations together
  • Document complex workflows
  • Break extremely long chains into multiple rules

Direct Element Access

Update specific array elements by their index position.

Update Last Item in Array

Input:

yaml
---
title: Reading List
books:
  - title: "Book 1"
    read: false
  - title: "Book 2"
    read: false
---

Condition: (none - direct element access doesn't need conditions)

Action: FOR books[-1] SET read true

Output:

yaml
---
title: Reading List
books:
  - title: "Book 1"
    read: false
  - title: "Book 2"
    read: true
---

Use case: Mark the most recently added book as read without conditional logic.

Update Nested Array Element

Input:

yaml
---
projects:
  - name: "Project A"
    teams:
      - name: "Frontend"
        lead: "Alice"
      - name: "Backend"
        lead: "Bob"
---

Condition: (none)

Action: FOR projects[0].teams[-1] SET lead "Charlie"

Output:

yaml
---
projects:
  - name: "Project A"
    teams:
      - name: "Frontend"
        lead: "Alice"
      - name: "Backend"
        lead: "Charlie"
---

Use case: Direct path navigation with negative indices for precise element targeting.

Complete Feature Coverage

Scalar Operations

ADD - Append to Field

Input:

yaml
---
title: Project Status
notes: "Initial draft completed"
---

Condition: HAS notes

Action: ADD notes " - Updated 2025-02-04"

Output:

yaml
---
title: Project Status
notes: "Initial draft completed - Updated 2025-02-04"
---

RENAME - Rename Field

Input:

yaml
---
title: Task Board
priority: 8
status: active
---

Condition: HAS priority

Action: RENAME priority TO importance

Output:

yaml
---
title: Task Board
importance: 8
status: active
---

DECREMENT - Decrease Numeric Value

Input:

yaml
---
title: Inventory
stock: 50
location: warehouse
---

Condition: stock > 0

Action: DECREMENT stock 5

Output:

yaml
---
title: Inventory
stock: 45
location: warehouse
---

Array Operations - Simple

FOR...PREPEND - Add to Start of Array

Input:

yaml
---
title: Daily Schedule
tasks:
  - name: Code review
    time: "10:00"
  - name: Standup
    time: "10:30"
---

Action: FOR tasks PREPEND "morning-standup"

Output:

yaml
---
title: Daily Schedule
tasks:
  - morning-standup
  - name: Code review
    time: "10:00"
  - name: Standup
    time: "10:30"
---

FOR...INSERT AT - Insert at Specific Position

Input:

yaml
---
title: Feature Tags
tags: [backend, frontend, critical]
---

Action: FOR tags INSERT "urgent" AT 1

Output:

yaml
---
title: Feature Tags
tags: [backend, urgent, frontend, critical]
---

FOR...DEDUPLICATE - Remove Duplicate Values

Input:

yaml
---
title: Bug Report
keywords: [bug, fix, urgent, bug, critical, urgent, bug]
---

Action: FOR keywords DEDUPLICATE

Output:

yaml
---
title: Bug Report
keywords: [bug, fix, urgent, critical]
---

Object Operations

FOR...MERGE - Merge Objects

Input:

yaml
---
title: Document
metadata:
  author: Alice
  created: "2025-01-15"
---

Action: FOR metadata MERGE {"reviewed": true, "updated": "2025-02-04"}

Output:

yaml
---
title: Document
metadata:
  author: Alice
  created: "2025-01-15"
  reviewed: true
  updated: "2025-02-04"
---

FOR...MERGE_OVERWRITE - Merge with Override

Input:

yaml
---
title: App Config
settings:
  theme: light
  fontSize: 12
  notifications: true
---

Action: FOR settings MERGE_OVERWRITE {"theme": "dark", "fontSize": 14}

Output:

yaml
---
title: App Config
settings:
  theme: dark
  fontSize: 14
  notifications: true
---

Condition Operations

OR - Logical OR Operator

Input:

yaml
---
title: Task
status: draft
priority: 7
---

Condition: status = "draft" OR status = "pending"

Action: SET priority 10

Output:

yaml
---
title: Task
status: draft
priority: 10
---

Path exists - Check Field Existence (Postfix)

Input:

yaml
---
title: Article
author: Alice Johnson
content: "Complete article text here"
---

Condition: author exists

Action: FOR tags APPEND "has-author"

Output:

yaml
---
title: Article
author: Alice Johnson
content: "Complete article text here"
tags: [has-author]
---

IN - Value in Array

Input:

yaml
---
title: Workflow
status: active
priority: 5
---

Condition: status IN ["active", "pending", "in-progress"]

Action: FOR tags APPEND "in-workflow"

Output:

yaml
---
title: Workflow
status: active
priority: 5
tags: [in-workflow]
---

ALL - All Elements Match Condition

Input:

yaml
---
title: Team Tasks
tasks:
  - name: Task 1
    assignee: alice
  - name: Task 2
    assignee: bob
  - name: Task 3
    assignee: charlie
---

Condition: ALL tasks WHERE assignee exists

Action: FOR tags APPEND "fully-assigned"

Output:

yaml
---
title: Team Tasks
tasks:
  - name: Task 1
    assignee: alice
  - name: Task 2
    assignee: bob
  - name: Task 3
    assignee: charlie
tags: [fully-assigned]
---

Released under the MIT License.