Skip to main content

Open Knowledge Format tooling

Project description

okf-cli — Open Knowledge Format tooling

Converts plain markdown into OKF-conformant knowledge bundles. Domain experts write the content, okf bundle generates frontmatter, type, timestamps, and index files.

Also validates bundles, lists concept IDs, reads concepts by ID, and reports version.

Install

uv tool install okf-cli

Dev quickstart

uv sync
uv run okf --help
uv run okf --version

Global options: --version, --help.

Commands

okf bundle — convert plain markdown to OKF bundle

okf bundle <input-dir> [output-dir] [--default-type <name>] [--force] [--strict]
Argument Description
input-dir Directory of plain .md files
output-dir Target directory (default: <input-dir>_knowledge_base)
--default-type Type for root-level files (default: input directory name)
--force, -f Overwrite output directory if it exists
--strict Enforce strict OKF spec output: fail on broken local .md links and skip AGENTS.md generation
okf bundle example --default-type reference          # → example_knowledge_base/
okf bundle example bundled --default-type reference --force --strict

.okfignore: put in input-dir root; one bundle-relative .md path per line. Exact match only (no glob).

Link checking: scans body links to local .md targets. Missing or out-of-bundle links warn by default, fail with --strict.

okf list — list concept IDs in a bundle

okf list <directory>

Prints concept IDs (path without .md). Requires valid OKF bundle.

okf list example_knowledge_base/
# datasets/sales
# tables/orders

okf show — read a concept by ID

okf show <directory> <concept-id>

Prints full concept contents (frontmatter + body). Concept IDs as printed by okf list. Guards against path traversal.

okf validate — check OKF conformance

okf validate <directory>

Checks OKF v0.1 §9 conformance: frontmatter required, type required, reserved filenames follow spec structure, UTF-8 required.

okf validate example_knowledge_base/
# 16 files: 16 ok

Input format

Strict (recommended)

# Title

> Description

Lenient fallback

Files without strict format are bundled best-effort: title omitted if absent, description synthesized from first 80 chars of body.

Rule Why
Folder name = concept type tables/orders.mdtype: "tables"
Only .md files processed Non-.md files ignored
index.md, log.md, README.md skipped in bundle Repo artifacts; not OKF concepts. list/show/validate only reserve index.md and log.md.
.okfignore entries skipped Skip selected files without moving them.

Root files use --default-type, defaulting to the input directory name. See example/ for sample structure.

Output

Each concept becomes a markdown file with YAML frontmatter:

---
type: "tables"
title: "Customer Orders"
description: "One row per completed customer order across all channels."
timestamp: "2026-07-04T15:06:51+00:00"
---

Original body preserved as-is.

Every directory gets an index.md listing files and subdirs.

OKF Conformance

Generated bundles conform to OKF v0.1 (§9): frontmatter required, non-empty type, reserved filenames follow spec structure.

Project layout

okf-cli
├── .github/workflows/test.yml  # CI
├── AGENTS.md                   # Contributor context for AI agents
├── OKF_SPEC.md                 # OKF specification
├── README.md                   # This file
├── openwiki/                   # Contributor docs (architecture, workflows, etc.)
├── pyproject.toml              # uv-managed Python project
├── skills/                     # Optional skill definitions
├── uv.lock                     # uv lockfile
├── src/okf/
│   ├── cli.py                  # Typer entrypoint
│   ├── api.py                  # Programmatic Python API
│   ├── core.py                 # Shared parsing/formatting
│   └── commands/               # bundle, list, show, validate
├── tests/                      # pytest suite
└── example/                    # Sample input markdown

For contributor guidance, see AGENTS.md and openwiki/quickstart.md.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

okf_cli-0.4.9.tar.gz (44.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

okf_cli-0.4.9-py3-none-any.whl (14.8 kB view details)

Uploaded Python 3

File details

Details for the file okf_cli-0.4.9.tar.gz.

File metadata

  • Download URL: okf_cli-0.4.9.tar.gz
  • Upload date:
  • Size: 44.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.11 {"installer":{"name":"uv","version":"0.10.11","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for okf_cli-0.4.9.tar.gz
Algorithm Hash digest
SHA256 55e17d6ec00c32ea64b71ce57e78c8909838492bc986e25290bc0c3148b6667d
MD5 3c85137b4ff80a1d6567be19689a944e
BLAKE2b-256 67eead0cdd9ffd0a1435b1ab6685f16c58e96e0d20d05cb920f6d3febc22eec6

See more details on using hashes here.

File details

Details for the file okf_cli-0.4.9-py3-none-any.whl.

File metadata

  • Download URL: okf_cli-0.4.9-py3-none-any.whl
  • Upload date:
  • Size: 14.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.11 {"installer":{"name":"uv","version":"0.10.11","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for okf_cli-0.4.9-py3-none-any.whl
Algorithm Hash digest
SHA256 9cdcf7926204252619fb27535affd366028be65bc0a80dcadb82d43ed5b904d1
MD5 8a8d6de676ee158d780dc8c627bcbabc
BLAKE2b-256 884b9e9332f451fcfe2a566f5c41973a7d7afe56e196051a9da691d5786094bc

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page