{"repo":"ccmdi/propsec","free":true,"listed":false,"github":"https://github.com/ccmdi/propsec","clone":"git clone https://github.com/ccmdi/propsec.git","description":"Schema enforcement for Obsidian properties","language":"TypeScript","stars":15,"topics":["obsidian","validation"],"license":"0BSD","category":"productivity","readme_excerpt":"Propsec Schema enforcement for Obsidian properties. Define schemas based on templates or invariants in your vault, add custom reusable types, and more. Usage First, define a schema: Once saved, violating notes such as this one... ...will be caught by the validation: Why Obsidian properties are freeform. Over time, things can break: you change the structure, use an old field, etc. This plugin validates notes against schemas you define. Your notes are untouched, but your vault's consistency becomes easier to manage. Setup 1. Open plugin settings 2. Create a schema: click + Add Schema 3. Set a query to target notes 4. Add fields: name, type, required/optional 5. Violations appear in the status bar/sidebar Schema definition The query field allows schema matching based on file paths and/or tags: Query Matches ------- --------- Journal Notes directly in Journal folder Journal/ Notes in Journal and all subfolders #book Notes with #book tag Projects/ or #active Notes matching either condition You can also narrow which notes a schema applies to with properties: - File name matches : Filter by file name (regex) - Modified after / Modified before : Filter by modification date - Created after / Created before : Filter by creation date - Has property / Missing property : Filter by property existence - Property conditions : Filter by property values (property-operator-value list) Field types Primitives string , number , boolean , date , array , object , null , unknown Custom types Define r","default_branch":null,"files":null,"tree":[],"storefront":"/r/ccmdi","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/ccmdi/propsec/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}