Initial commit
This commit is contained in:
138
commands/_shared/validate-note.md
Normal file
138
commands/_shared/validate-note.md
Normal file
@@ -0,0 +1,138 @@
|
||||
# Note Validation
|
||||
|
||||
Validates frontmatter against PARA schemas. Call this when reading a note to detect outdated formats.
|
||||
|
||||
## Schemas by Type
|
||||
|
||||
### Project Schema (Required Fields)
|
||||
|
||||
```yaml
|
||||
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)
|
||||
|
||||
```yaml
|
||||
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)
|
||||
|
||||
```yaml
|
||||
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)
|
||||
|
||||
```yaml
|
||||
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:
|
||||
|
||||
1. **Check `type:` field exists** - If missing, note is unformatted
|
||||
2. **Look up schema for that type**
|
||||
3. **Compare frontmatter to schema**
|
||||
4. **Return missing/outdated fields**
|
||||
|
||||
## Validation Response Format
|
||||
|
||||
```markdown
|
||||
### 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:
|
||||
|
||||
```markdown
|
||||
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
|
||||
|
||||
```markdown
|
||||
### 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**:
|
||||
1. Ask "Which area(s) does this resource relate to?"
|
||||
2. Set `reviewed: [today]`
|
||||
3. Patch frontmatter
|
||||
|
||||
### Unformatted Note → Typed Note
|
||||
|
||||
**Missing**: Everything
|
||||
|
||||
**Fix**:
|
||||
1. Ask "What type is this? (project/area/resource/task)"
|
||||
2. Apply appropriate template schema
|
||||
3. Prompt for required fields by type
|
||||
|
||||
## Token Efficiency
|
||||
|
||||
- Only validate when note is already being read
|
||||
- Don't re-validate if `reviewed` date is recent (< 7 days)
|
||||
- Batch field prompts into single question when possible
|
||||
Reference in New Issue
Block a user