3.4 KiB
3.4 KiB
Note Validation
Validates frontmatter against PARA schemas. Call this when reading a note to detect outdated formats.
Schemas by Type
Project Schema (Required Fields)
title: string # Required
created: date # Required
type: project # Required
status: string # Required: active, on-hold, completed, archived
start_date: date # Required
target_completion: date # Required
area: "[[Link]]" # Required
reviewed: date # Required
review_period: string # Optional, default 7d
tags: [project] # Required
Area Schema (Required Fields)
title: string # Required
created: date # Required
type: area # Required
status: string # Required: active
reviewed: date # Required
review_period: string # Optional, default 14d
tags: [area] # Required
Resource Schema (Required Fields)
title: string # Required
created: date # Required
type: resource # Required
source: string # Required: book, article, video, course, podcast, paper, web
areas: ["[[Link]]"] # Required - array of area links (NEW)
reviewed: date # Required (NEW)
tags: [resource] # Required
Task Schema (Required Fields)
title: string # Required
created: date # Required
type: task # Required
task_type: string # Required: task, reminder, habit, chore
status: string # Required: not-started, in-progress, blocked, done, cancelled
priority: string # Required: low, medium, high, urgent
effort: string # Required: small, medium, large
reviewed: date # Required
tags: [task] # Required
Validation Function
When a command reads a note:
- Check
type:field exists - If missing, note is unformatted - Look up schema for that type
- Compare frontmatter to schema
- Return missing/outdated fields
Validation Response Format
### Note Validation: [[Note Title]]
**Type**: resource
**Status**: ⚠️ Needs update
**Missing fields**:
- `areas` - Required array of linked areas
- `reviewed` - Last review date
**Would you like to update this note?**
Update Prompt
When validation finds issues, offer to fix:
I can add the missing fields:
- `areas`: Which area(s) does this relate to?
- `reviewed`: I'll set to today's date
Update now? (y/n)
How Commands Use This
### In search.md, process.md, review.md:
After reading a note with `obsidian_get_file_contents`:
1. Parse frontmatter
2. Check against schema (see above)
3. If missing required fields:
- Show validation warning
- Ask if user wants to update
4. If user says yes:
- Prompt for missing values
- Use `obsidian_patch_content` to update frontmatter
5. Continue with original command purpose
Common Migration Patterns
Old Resource → New Resource
Missing: areas, reviewed
Fix:
- Ask "Which area(s) does this resource relate to?"
- Set
reviewed: [today] - Patch frontmatter
Unformatted Note → Typed Note
Missing: Everything
Fix:
- Ask "What type is this? (project/area/resource/task)"
- Apply appropriate template schema
- Prompt for required fields by type
Token Efficiency
- Only validate when note is already being read
- Don't re-validate if
revieweddate is recent (< 7 days) - Batch field prompts into single question when possible