Skip to content
Raw Markdown

Domains

Each domain is the README.md of a directory under domains/. A small YAML frontmatter block carries its name and description; the Markdown body carries the business context.

The root domain is domains/README.md; every other domain is domains/<path>/README.md. Domain documents follow the Open Knowledge Format (OKF), so they read as plain documentation on GitHub and in any Markdown editor.

The parts

PartWhereNotes
typefrontmatter, requiredAlways Domain. It is what marks the README as a domain file; a README without it is treated as ordinary prose and ignored
titlefrontmatterHuman name, shown in the UI and to the agent. Always set it
descriptionfrontmatterOne or two sentences. Shown when the parent domain lists its children
bodymarkdownEverything after the frontmatter: the domain’s prose context. This is where business rules, glossary, and gotchas go

Frontmatter follows the same strict rules as the YAML fields. Only type, title, and description are recognized. An unknown key, a typo like titel, is reported as drift and fails the check rather than being silently kept.

Example

---
type: Domain
title: Seller acquisition
description: 'Marketing qualified leads and closed deals: how Stallora wins new sellers.
  Bridges to marketplace sellers.'
---

Prospective sellers enter as marketing qualified leads; the sales team closes
some of them into deals; a closed deal creates a seller on the marketplace.

<!-- cassis:nav:begin (generated, do not edit) -->
<!-- cassis:nav:end -->

Generated navigation

Below the body, Cassis maintains a generated block between cassis:nav:begin and cassis:nav:end markers linking the tables and metrics placed in the domain, so the README browses on GitHub. It is regenerated on every format and publish, so do not hand-edit it. If it goes stale, because you placed or moved a table without re-running the formatter, the check fails and points you at cassis ontology fmt.

The directory path is the domain path

A domain’s path is its directory path under domains/. It is not stored anywhere inside the file, and the file is always named README.md.

Domain pathFile
(root)domains/README.md
marketplacedomains/marketplace/README.md
marketplace/measuring-salesdomains/marketplace/measuring-sales/README.md
  • Moving or renaming a directory renames the domain. Tables and metrics reference domains by path (domain_path: marketplace), so update those references in the same pull request.
  • Path segments are lowercase slugs: letters, digits, _, -. No spaces, no uppercase.
  • Give every level its own README.md, intermediate ones included. A child directory without a parent domain file leaves the parent unnavigable.

The root domain is the global context

domains/README.md supplies the agent’s global business context for every question, so it is where project-wide rules belong: what a win is, which rows to exclude by default, which vocabulary maps to which concept. A rule written here applies everywhere; a rule written in a leaf domain applies only when that domain is in play.

Migrating from the old format. Repositories authored before this used YAML domain files, _project.yml for the root and domains/<path>/_domain.yml for the rest. Cassis still reads them, so nothing breaks on upgrade. Convert whenever you like with cassis ontology fmt (cassis-cli 1.1.0 or newer), which rewrites the domain files and leaves the diff for you to review.