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