DKS (Developer Knowledge System) is the organizing architecture for this vault. It aligns three systems — GitHub, Linear, and Obsidian — under one mental model by mapping their objects to vault note types. ## Core Principle Every piece of knowledge is a typed object. Objects have a location, a schema, and relationships to other objects via `up`. Projects use `status` and `priority` properties; non-project types use `state/*` tags. ## Object Model | Type | Folder | Subtypes | Purpose | | ---------- | -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------- | | `system` | `systems/` | — | Developer systems: dotfiles, toolchains, workflows | | `software` | `resources/software/` | app \| CLI \| extension \| gem \| npm | Software tools and packages | | `project` | `projects/` | initiative \| experiment \| task | Work items at any granularity | | `note` | `notes/` | fleeting \| til \| atomic \| literature \| permanent \| reference \| entry \| snippet \| observation \| decision \| idea \| meeting-notes | Knowledge capture | | `page` | `resources/`, `_meta/` | hub \| doc \| concept | Reference pages | | `domain` | `domains/` | — | Life/work domain hub pages | | `source` | `resources/` | article \| book \| video \| podcast \| course \| paper \| weblink | External content | | `log` | `calendar/logs/` | day \| week | Time-based logs | | `event` | `calendar/events/` | meeting \| trip | Calendar events | | `contact` | `contacts/` | person \| organization | People and orgs | | `prompt` | `resources/prompts/` | prompt \| agent \| skill \| instructions \| workflow | AI prompts | ## Tag Vocabulary All controlled tags use namespaced prefixes. Note: `project` types use `status`/`priority` **properties** instead of `state/*`/`priority/*` tags. ### State Tags Used on **non-project types** (notes, sources) to express lifecycle state. Projects use the `status` property instead. | Tag | Meaning | | ------------------- | --------------------------------- | | `state/backlog` | Not yet started | | `state/in_progress` | Currently active | | `state/on_hold` | Paused | | `state/done` | Completed | | `state/archived` | Triggers move to `archives/` | | `state/unprocessed` | Source captured, not yet reviewed | | `state/processed` | Source has been reviewed | ### Domain Tags Classify which life or work domain a note belongs to. | Tag | Meaning | | -------------------- | ------------------------- | | `domain/work` | Work projects | | `domain/personal` | Personal projects | | `domain/home` | Home and auto | | `domain/finance` | Finance and budgeting | | `domain/open-source` | Open source contributions | | `domain/creative` | Creative work | | `domain/remote-ruby` | Remote Ruby podcast | | `domain/travel` | Travel planning and trips | ### Priority (project property) Projects and tasks use a `priority` **property**, not tags. Valid values: `low`, `normal`, `high`. ## Project Object The `project` type replaces both the old `project` and `task` types. Subtypes distinguish the scale and nature of work. ```yaml --- type: project subtype: initiative # initiative | experiment | task status: backlog # backlog | in_progress | on_hold | done | archived priority: normal # low | normal | high tags: - domain/work # domain/* tags only up: [] start_on: end_on: source_url: linear_id: --- ``` - **initiative** — multi-step project or goal with an outcome - **experiment** — time-boxed spike or exploration with no committed outcome - **task** — discrete actionable item; use `priority` property for urgency ## System Object Systems are developer-owned infrastructure: dotfiles, toolchains, local setups. ```yaml --- type: system tags: [] up: [] --- ``` ## Domain Hub Pages Domain pages in `domains/` represent the life/work domains you operate in. They anchor navigation and link related projects, notes, and contacts. ```yaml --- type: domain tags: - domain/work up: [] --- ``` ## Relationships All relationships use the `up` property (parent → child via backlink, child → parent via `up`). - `project.up` → domain page or parent project - `note.up` → project or page - `log (day).up` → log (week) - `log (week).up` → log (quarter) - `contact.up` → organization contact - `event.up` → project or domain page ## Bases Views | Base | Purpose | | ------------------------------ | ----------------------------------------------------------------- | | `DKS Active Work.base` | All projects with `status: in_progress`, grouped by subtype | | `DKS Unprocessed Sources.base` | All sources with `state/unprocessed` tag, sorted by creation date | | `DKS Stale Projects.base` | In-progress projects sorted by oldest modification | | `Projects Dashboard.base` | Full project board with active/WIP/all views | | `System Views.base` | Per-system embedded view (projects, notes, meetings) | | `Project Views.base` | Per-project embedded view (tasks, notes, meetings) | ## Canonical References - [[SCHEMA.md]] — full type definitions with all properties - [[schema.yml]] — machine-readable schema (v4.0.0) - [[Tag Vocabulary]] — complete tag list with descriptions - `util/scripts/frontmatter.js` — generates YAML frontmatter for templates - `util/scripts/validateVault.js` — validates vault against DKS spec