Wiki Page Format

Every wiki page should tell a future agent what is true now, why it is true, where it belongs, and what to update next.

Routing

Open Filing Decision Tree first when the question is where a page belongs. Open this page before creating or substantially rewriting the page body, especially for source-backed articles, entity pages, tool pages, protocols, and long references.

The wiki is compiled knowledge, not a transcript archive. Page format exists so agents can distinguish current synthesis from evidence history, route pages consistently, preserve provenance, and avoid graph drift. Source: AGENTS.md Page Format

Required Frontmatter

---
title: Page Title
type: skill | style | architecture | postmortem | design | tool | workflow | research | concept | person | project | place | philosophy | pattern | tension | era | transition | decision | career | finance | interview-prep | meta | story | asset
created: YYYY-MM-DD
updated: YYYY-MM-DD
source: Source description
tags: [lowercase, hyphenated]
related: ["[[Other Page]]"]
---

Keep the seven required keys in the order shown. tags, related, and aliases are YAML lists; values must be unique, and tags must be lowercase with hyphens instead of spaces. Use the closest semantic type, not the physical directory at all costs. For operational namespaces such as resolver/, skill-resolver/, soul/, user/, heartbeat/, and agent-docs/, type: meta is usually correct unless the page is clearly a story, workflow, tool, or concept.

Optional but important:

  • aliases: required for person pages, useful for tools/projects/renamed pages.
  • tier: 1, 2, or 3 for enrichment priority.
  • longform: true: for coherent reference pages that are intentionally long.
  • relationships: typed links when a page uses, extends, contradicts, or supersedes another page.
  • generated: true: for generated source views when the generator supports it. Generated pages must also follow Generated Surface Contract.
  • routing_summary: compact trigger guidance when a page is loaded by agents or context routers.
  • structure_lint: false: reserved for immutable archive bodies that intentionally embed complete Markdown documents. Add structure_lint_reason whenever this escape hatch is used. Metadata checks still apply.

Body Structure

  1. # Title
  2. > One-line summary that says what the page does
  3. Current compiled truth organized by theme
  4. Decision tables, routing rules, examples, or failure modes when useful
  5. --- separator when required
  6. ## Timeline
  7. Append-only dated evidence entries

The separator is required for person, project, tool, and any page over 50 lines. Above the separator is rewritten when the current synthesis changes. Below it is append-only evidence.

Lint-Enforced Consistency

npm run lint-wiki enforces the page contract across authored and generated pages. It blocks malformed or incomplete metadata, reordered required keys, duplicate list values, ambiguous page titles, multiple or misplaced H1 headings, title/H1 disagreement, skipped heading levels, duplicate sibling headings, empty sections, missing heading boundaries, missing lead summaries, and malformed or misplaced timelines. It also detects duplicate authored titles across directories while allowing generated skill projections to mirror their canonical owners.

Run npm run lint-wiki -- --verbose to see every affected file. Structural exceptions require structure_lint: false plus a reason in frontmatter; use that only when preserving nested source documents is the page's purpose.

Page Shape Variants

Shape Use for Required behavior
Canonical synthesis article Concepts, tools, projects, philosophies, design/style, architecture Lead with the current model, not source chronology.
Entity page Person, project, tool, institution Include aliases/tier when relevant and keep timeline append-only.
Protocol or workflow Meta/process pages Include trigger, procedure, failure modes, verification, and closeout.
Directory hub/README Category navigation Explain what belongs, what does not, and first pages to read.
Resolver companion wiki/resolver/ or wiki/skill-resolver/ extract Point back to the canonical resolver; do not fork the rule.
Generated source view wiki/skills/<category>/ or another derived context view Do not hand-edit generated bodies; update source and regenerate.
Ledger Low-signal entities or compact inventories Include aliases, promotion criteria, and source references.
Redirected/folded topic Retired page identity Preserve retrieval via aliases or wiki/meta/wiki-redirects.json.

Compiled Truth

Compiled truth is the current best understanding. Rewrite it when better evidence arrives. Good compiled truth:

  • starts with the key insight
  • groups facts by theme
  • links to related pages inline
  • names contradictions when they matter
  • removes stale wording instead of appending historical layers
  • states ownership boundaries when adjacent pages are easy to confuse

Canonical format versus portable format

This schema is canonical and may be richer than an interchange format. Do not rename fields, replace wikilinks, expose private source paths, or reshape the operating log merely to make authored files look like OKF. The deterministic OKF v0.2 projector maps public pages into ordinary Markdown links, sources[], generated, reserved indexes, and a sanitized log. Unknown Kevin-specific provenance remains an explicit tolerated extension; verification and freshness are never invented. Source: Open Knowledge Format (OKF); OKF v0.2 SPEC

Timeline Entry Format

Timeline entries are evidence, not a second article. Format:

- **YYYY-MM-DD** | What happened and why it matters. [Source: source name, date]

Use full dates when the evidence provides them. When source precision is lower, use a bounded machine-readable label such as YYYY, YYYY-MM, YYYY-Fall, Pre-YYYY, or an explicit range joined by to or →. Do not use life-stage labels such as “freshman year” as the date key; keep that context in the evidence text.

Never silently delete a timeline entry. If a past entry was wrong, append a correction entry with the new evidence.

Do not author a ## Backlinks section. Backlinks are computed from wiki/_backlinks.json and rendered by the UI. Manual backlink sections create dead placeholders and pollute the graph. Use related: frontmatter and inline [[wikilinks]] for outgoing connections.

Length

Length follows the subject:

  • under 15 lines: likely a stub; merge unless it has clear identity or redirect value
  • 30-150 lines: normal compiled page
  • over 400 lines: mark longform: true or split if it is really multiple topics

Do not split a coherent reference page just to satisfy a line count. Do split when one page has two durable subjects with different update paths.

Closeout

After substantive page edits, follow Index Logging Protocol:

npx tsx scripts/build-index.ts
qmd update && qmd embed

Run narrower doctors when the edit touches routing, generated views, skills, config, or schema.


Timeline