Skip to content

Frontmatter Schema ​

Every file in wiki/ requires YAML frontmatter. The schema is defined at _meta/schemas/frontmatter.yaml.

KB Articles (Full Schema) ​

Files in KB type directories (defined by entity_types in config — default: wiki/concepts/, wiki/people/, wiki/tools/, wiki/sources/):

yaml
---
title: "Article Title"
type: <entity_types[].name from config>   # default: concept | person | tool | source-summary
created: 2026-04-04
last_updated: 2026-04-04
last_verified: 2026-04-04
decay_rate: fast | medium | slow
confidence: high | medium | speculative
tags: ["domain-1", "domain-2"]
sources: ["raw/internal/source.md"]
related: ["[[concepts/related]]"]
summary: "One-line summary for index"
---

Note: The sources field uses plain strings (raw file paths), not [[wikilinks]]. This is because raw/ is outside the Obsidian vault.

Evidence Locators ​

KB articles use visible evidence locators after factual paragraphs:

markdown
The API issues short-lived access tokens.

Evidence: raw/rfcs/authentication.md#Token Lifetime

Each locator must point to an existing raw Markdown file and an exact heading in that file. In KB articles, the raw file must also appear in the sources: list. Use Inference: for unsourced reasoning and Open question: for unresolved information. System context packs under wiki/workspaces/knowledge-maintenance/context/ and generated actor files under wiki/workspaces/<actor>/answers/ follow the same rule; ordinary workspace notes do not.

Type-Specific Fields ​

TypeExtra Fields
conceptdomain, prerequisites
personrole, affiliations, follows
toolcategory (framework/platform/service/product), repo, maintained
source-summarysource_url, source_type, author, source_date

Custom entity types don't require type-specific field definitions. The LLM infers appropriate fields from the type's description in config during /compile. For stricter /lint validation, you can optionally define type-specific fields in _meta/schemas/frontmatter.yaml.

Workspace Files (Light Schema) ​

Files in wiki/workspaces/:

yaml
---
title: "My Research Notes"
created: 2026-04-05
author: "shubh"
tags: ["ai"]
---

Only title and created are required. Optional fields: author, tags, summary, related, sources.

Raw Source Frontmatter ​

Files in raw/ use a simpler schema:

yaml
---
title: "Source Title"
source_url: "https://..."
source_type: internal | blog | paper | tweet | substack | github | podcast | video
source_date: 2026-04-01
author: "Author Name"
ingested: 2026-04-04
ingestion_tool: tavily | firecrawl | local
tags: ["domain-1"]
---

Confidence Levels ​

LevelDefinition
highWell-sourced from multiple references or authoritative primary sources
mediumSingle source, or well-known but not independently verified
speculativeInferred, opinion-based, from unverified sources, or emerging claims

Filename Convention ​

  • Kebab-case, derived from article title
  • Max 60 characters
  • .md extension
  • Examples: model-context-protocol.md, andrej-karpathy.md

Released under the MIT License.