## Objects
Every note is an object.
- Every object has
- template
- location
- Some objects have
- [[Apple Shortcut]]
- quickadd
- variants
### Type Definitions
#### System
- filename_format: "{{title}}"
- folder: systems
- properties
- type![text] default: "system"
- tags[list]
- up[list]
- body
- `![[System Views.base]]`
#### Page
- filename_format: "{{title}}"
- folder: resources, _meta
- properties
- type![text] default: "page"
- up[list|text]
- aliases[list]
- tags[list]
- up[text]
- body
- No required structure
- Optional sections: Resources, References, Functions, Software
- Common pattern: Embedded database views (e.g., `![[bases/Backlinks.base#down]]`)
#### Contact
- filename_format: "{{name}}"
- folder: contacts
- properties
- type![text] default: "contact"
- subtype[text] values: person | organization
- contact_url[text:url]
- up[list|text]
- aliases[list]
- tags[list]
- body
- Meta callout with contact link (variants only)
- Embedded databases: Meetings, People (variants only)
#### Log
- filename_format:
- day: "{{date|date:'YYYY-MM-DD'}}"
- week: "{{year}}-W{{week}}"
- folder: calendar/logs
- properties
- type![text] default: "log"
- subtype[text] values: day | week
- up[list]
- tags[list] patterns: type/log/day | type/log/week
- body
- day: Log, Notes sections + `![[Day Views.base#Created Today]]`
- week: Days of the Week (with links to daily notes), Task List with weekly checklist
#### Event
- filename_format: "{{title}}"
- folder: calendar/events
- properties
- type![text] default: "event"
- subtype[text] values: meeting | trip
- id[text]
- start_at[datetime] format: YYYY-MM-DDTHH:mm:ss
- end_at[datetime] format: YYYY-MM-DDTHH:mm:ss
- location[text]
- attendees[list]
- up[list]
- tags[list]
- body
- Empty/minimal body, metadata-focused
#### Project
- filename_format: "{{title}}"
- folder: projects
- properties
- type![text] default: "project"
- subtype[text] values: initiative | experiment | task
- status[text] values: backlog | in_progress | on_hold | done | archived
- priority[text] values: low | normal | high
- tags[list] — domain/\* tags only (state and priority are now dedicated properties)
- up[list]
- start_on[date] format: YYYY-MM-DD
- end_on[date] format: YYYY-MM-DD
- source_url[text:url] optional
- linear_id[text] optional, for Linear sync
- body
- `![[Project Views.base]]`
- notes
- Tasks use `subtype: task`
#### Note
- filename_format: "{{title}}" or "TIL - {{title}}"
- folder: notes
- properties
- type![text] default: "note"
- subtype[list] values: fleeting | til | atomic | literature | permanent | reference | entry | snippet | observation | decision | idea | meeting-notes
- aliases[list]
- publish[boolean] default: false
- created_on[date] format: YYYY-MM-DD
- updated_on[date] format: YYYY-MM-DD
- up[list]
- tags[list]
- body
- Variable content based on purpose
- Optional sections: Resources, References, Usage, Details, Snippet
#### Software
- filename_format: "{{name}}.app" or "{{name}}.cli" or "{{name}}.ext"
- folder: resources/software
- properties
- type![text] default: "software"
- subtype[text] values: app | CLI | extension | gem | npm
- id[text]
- title[text]
- description[text]
- author[list]
- source_url[text:url]
- github_url[text:url]
- image_url[text:url]
- platform[list]
- dependencies[list]
- tags[list]
- body
- `![[Software Views.base#Notes]]`
- Optional sections (via partials): API documentation, CLI usage, Review
#### Source
- filename_format: "{{title}} - {{author}} ({{date|date:'YYYYMMDD'}})" or "{{title}} by {{author}}"
- folder: resources
- properties
- type![text] default: "source"
- subtype[text] default: "weblink", values: article | book | video | podcast | course | paper | weblink
- title[text]
- description[text]
- author[list]
- source_url[text:url]
- image_url[text:url]
- up[list]
- tags[list] default: ["state/unprocessed"]
- created_on[date] format: YYYY-MM-DD
- published_on[date] format: YYYY-MM-DD
- finished_on[date] format: YYYY-MM-DD
- rating[text]
- body
- `## Takeaways`
- `## Highlights`
- Optional: Description, Community Reviews, Content Warnings, Executive Summary
#### Prompt
- filename_format: "{{title}}.prompt"
- folder: resources/prompts
- properties
- type![text] default: "prompt"
- subtype[text] default: "command", values: prompt | command | agent | skill | rules | workflow
- title[text]
- description[text]
- model[text]
- output[text] values: text | json | markdown | image | other
- apply_to[list]
- tools[list]
- version[text] format: semantic version (e.g., 0.0.0)
- quality_score[number] optional, 1-5 rating
- tags[list] patterns: type/prompt/prompt | type/prompt/command | type/prompt/agent | type/prompt/skill | type/prompt/rules | type/prompt/workflow
- body
- Prompt section with code blocks using ````prompt` delimiter
- Usage section
#### Domain Hub
- filename_format: "@{{name}}" or "{{name}}"
- folder: domains
- properties
- type![text] default: "domain"
- up[list]
- aliases[list]
- tags[list] — domain tags required (see [[Tag Vocabulary]])
- body
- Variable content based on domain
- Doc variant: Multiple substantive sections with nested subsections
- Hub variant: Index/navigation page
- Concept variant: Topic-focused page
### Cross-Type Patterns
#### Hierarchical Organization
The `up` property creates parent-child relationships:
- contact.up → organization contact
- log (day).up → log (week)
- log (week).up → log (quarter)
- project.up → parent project/page
- note.up → parent project or page
- doc.up → parent documentation
#### Embedded View Pattern
Types using embedded Bases views:
- system: `![[System Views.base]]`
- contact/person: `![[Contact Views.base#Meetings]]`
- contact/organization: `![[Contact Views.base#People]]`
- project: `![[Project Views.base]]`
- software: `![[Software Views.base#Notes]]`
- log/day: `![[Day Views.base#Created Today]]`
#### Status Tracking
Project state is expressed as a `status` property (not tags):
- `backlog` — not yet started
- `in_progress` — currently active
- `on_hold` — paused
- `done` — completed
- `archived` — triggers move to `archives/`
Non-project types (notes, sources) still use `state/*` tags.
### Tag Conventions
See [[Tag Vocabulary]] for the full canonical tag list.
**Important**: The vault uses `subtype` as the source of truth for typed content. Hierarchical `type/{category}/{subcategory}` tags should **only** be used for page variants (hub, doc, concept) which do not have a `subtype` property.
#### Domain Tags
```
domain/work
domain/personal
domain/home
domain/finance
domain/open-source
domain/creative
domain/remote-ruby
domain/travel
```
#### State Tags (non-project types only)
Used on notes, sources, and other non-project types. Projects use a `status` property instead.
```
state/unprocessed
state/processed
state/in_progress
state/done
state/archived
state/backlog
state/on_hold
```
#### Priority (projects/tasks)
Projects and tasks use a `priority` property, not tags:
```
low
normal
high
```
#### Topic Tags (prompts, notes)
```
topic/organization
topic/analysis
topic/documentation
```
### Controlled Vocabularies
#### project.subtype
| Value | Description |
| ------------ | ------------------------------- |
| `initiative` | Multi-step project or goal |
| `experiment` | Time-boxed exploration or spike |
| `task` | Discrete actionable item |
#### note.subtype (multi-value array)
Valid values: `fleeting | til | atomic | literature | permanent | reference | entry | snippet | observation | decision | idea | meeting-notes`
#### source.subtype
| Value | Description |
| --------- | ---------------------------- |
| `article` | Blog post or written content |
| `book` | Physical or digital book |
| `video` | Video content |
| `podcast` | Podcast episode |
| `course` | Online course or training |
| `paper` | Research paper |
| `weblink` | General web link (default) |
#### prompt.subtype
| Value | Description |
| ---------- | -------------------------------------- |
| `prompt` | General reusable prompt |
| `command` | Slash-style command prompt |
| `agent` | Agent persona or role definition |
| `skill` | Task-specific skill or behavior prompt |
| `rules` | Rule set for a workflow or system |
| `workflow` | Multi-step prompt workflow |
### Date and Time Formats
All date and datetime fields follow ISO 8601 format:
- **Dates**: `YYYY-MM-DD` (e.g., 2026-02-18)
- **Datetimes**: `YYYY-MM-DDTHH:mm:ss` (e.g., 2026-02-18T14:30:00)
Fields using date format:
- `created_on`
- `updated_on`
- `start_on`
- `end_on`
- `finished_on`
- `published_on`
Fields using datetime format:
- `start_at`
- `end_at`
### Validation
Use `/util/scripts/validateVault.js` to validate vault structure and check for:
- Missing required properties
- Invalid tag values
- Property type mismatches
- Folder/type alignment issues
See `tmp/VALIDATION-REPORT.md` for latest validation results.
### Templates Location
Templates are organized in `/util/tmpl/`:
- **Base type templates**: `/util/tmpl/type/{type}.tmpl.md`
- system, contact, event, log, note, page, project, prompt, software, source, task
- **Variant templates**: `/util/tmpl/variant/{variant}.tmpl.md`
- Project variants: initiative, experiment (task uses task.tmpl.md)
- Contact variants: person, organization
- Log variants: day, week
- Event variants: meeting, trip
- Note variants: fleeting, concept
- Page variants: hub, doc
- Software variants: app, cli, extension
- Source variants: book
- **Partial templates**: `/util/tmpl/partials/{name}.tmpl.md`
- software.api, software.cli, software.review (documentation sections)
- **Utility templates**: `/util/tmpl/x/`
- outline_to_pages, rename-project, new (interactive note creator)
Variants inherit from their base type and add specific subtype values or tag patterns.