Something went wrong. Try again.
Fork of github.com/ccmdi/propsec
Something went wrong. Try again.
Files
- TypeScript 95%
- Sass 5%
README.md
# Propsec
> This is a fork of [github.com/ccmdi/propsec](github.com/ccmdi/propsec).
>
> New changes were written by a human-led AI agent.
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:
<p align="center">
<img src="images/example.png">
</p>
Once saved, violating notes such as this one...
<p align="center">
<img src="images/example2.png">
</p>
...will be caught by the validation:
<p align="center">
<img src="images/example3.png">
</p>
## 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 reusable types in settings. A custom type is a named group of fields. Use them when multiple schemas share the same structure or you need nes…