docs/getting-started.mdtype: Guide

From zero to a validated bundle.

Install the package, write one markdown file with frontmatter, and prove it's conformant — with the okf CLI or the C# library. A few minutes, no database, no scaffolding.

##

Prerequisites

one tool

The .NET SDK 10.0 or later. That's the whole list — OKF4net has zero third-party runtime dependencies, so there's nothing else to install and nothing else to audit.

$ dotnet --version
10.0.100
##

Install

library from NuGet · CLI from source

Use the library to work with bundles from C#. Add the package to any project:

$ dotnet add package OKF4net

One package, no transitive dependency tree. Prefer the command line? The okf CLI builds to a self-contained Native AOT binary from source (a packaged distribution is on the way):

$ git clone https://github.com/jchable/okf4net
$ dotnet publish src/OKF4net.Cli -c Release   # self-contained okf binary, no runtime needed
##

Write your first bundle

§2–§4 — a concept is a file

A bundle is just a directory. A concept is one markdown file: YAML frontmatter delimited by ---, then a body. Create a folder and drop in a single concept:

# my_bundle/orders.md
---
type: Table
title: Orders
description: One row per customer order.
timestamp: 2026-07-24
---

# Orders

Each order belongs to a customer and carries a total.

The file's path with .md removed is its concept id — here, orders. The only value OKF conformance strictly requires (§9) is a non-empty type; title, description and timestamp round out a producer-grade concept.

##

Validate it

§9 — conformance

From the command line, okf validate checks the bundle and exits non-zero if anything is off — so it drops straight into CI:

$ okf validate ./my_bundle

1 concept(s); 0 error(s), 0 warning(s), 0 info.
✓ conformant with OKF v0.1

Or do the same from C#. Bundle.Load walks the directory, parses every concept, and builds the cross-link graph — permissively, so a bad file never aborts the load:

using OKF4net;

var bundle = Bundle.Load("./my_bundle");
var report = BundleValidator.Validate(bundle);

Console.WriteLine(report.IsConformant
    ? $"conformant with OKF v{OkfSpec.Version} ({bundle.Count} concepts)"
    : $"{report.Diagnostics.Count} problems found");

Parse failures land in bundle.ParseErrors and broken cross-links stay in the graph as edges to missing concepts — you're told exactly where the holes are, never stopped at the first one.

##

Where to next

the rest of the manual
  • Cross-link concepts and walk the graph. Ordinary markdown links between concepts become backlinks. → library.md
  • Generate indexes and gate CI. okf index writes the index.md listings (§6); okf validate's exit code is your CI check. → cli.md
  • Understand the format. Reserved files, conformance, and the section-by-section spec mapping. → what-okf-is.md
  • Use it in Claude. Serve the bundle to Claude Desktop, Claude Code, or Cursor as read/write tools. → mcp.md

docs.md — back to the docs index