## 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.