Built-in taxonomy schemas
manni meta ships three taxonomy schemas. Each names a published set of values
for a classification field. They exist because
google:okf:0.1 requires a type but accepts
any non-empty string for it. It cannot stop a docs set from drifting into
how-to, howto, and guide all meaning the same thing.
| Id | Key | Key required? | Framework | JSON |
|---|---|---|---|---|
diataxis:diataxis:1.0 | type | Yes | Diátaxis | diataxis/1.0.json |
tgdp:templates:1.1 | type | Yes | The Good Docs Project | tgdp/1.1.json |
passo-uno:seven-action:1.0 | action | No | Seven-Action Documentation Model | seven-action/1.0.json |
All three use Draft 2020-12, allow additional properties, and are built-in references.
Each JSON link is the schema itself, at a permanent, version-pinned
URL. That is useful
for reading the exact vocabulary, or for $ref-ing one from a schema of your
own. Inside manni meta the URL and the id are interchangeable, and neither makes a
network call.
The two keyed on type are alternatives to each other. See Which ones
compose. For every other schema manni meta ships,
including the Docusaurus front matter
contracts, see the built-in schema
registry.
Vocabulary checks vs. presence checks
Section titled “Vocabulary checks vs. presence checks”The two content-type schemas do both jobs. They require their key as well as constraining it, so neither needs a partner to get presence-checking. Adopting a named set of document types is a claim that every page is one of them. That makes an untyped page a gap rather than an abstention:
✗ docs/overview.md (root) must have required property 'type' (line 1) [diataxis:diataxis:1.0] diataxis:diataxis:1.0 type: Which of the four Diataxis forms this page is. Guide: https://hawkeyexl.github.io/manni/meta/reference/schemas/diataxis/Pair either with google:okf:0.1 for the
other OKF fields, not for type:
manni meta validate docs/ -s diataxis:diataxis:1.0 -s google:okf:0.1passo-uno:seven-action:1.0 is the exception. It checks action only if one
is present. That is what makes it safe to layer onto an existing setup, and
safe to carry in the default
set.
The three schemas
Section titled “The three schemas”Each schema has a page of its own, with its full value list, an example page, and the finding a common mistake produces.
diataxis:diataxis:1.0requirestypeand constrains it to the four Diátaxis forms.tgdp:templates:1.1requirestypeand recommends the 25 Good Docs Project template slugs. Its strict overlay closestypeto them, the checktgdp:templates:1.0makes in one file.passo-uno:seven-action:1.0constrains an optionalactionto the seven reader actions, and runs by default.
Which ones compose
Section titled “Which ones compose”Diátaxis and TGDP both classify what a page is, so both claim type.
Seven-Action classifies what a reader is doing, which is independent, so it
claims action and composes with either:
---type: how-toaction: practicetitle: Rotate an API key---| Combination | Result |
|---|---|
| Diátaxis + Seven-Action | Composes |
| TGDP + Seven-Action | Composes |
| Diátaxis + TGDP | Pick one |
Stacking Diátaxis with a closed TGDP check runs without error, and it validates
against the intersection of their vocabularies, which is narrower than either.
The closed check is tgdp:templates:1.1 with its strict overlay, or
tgdp:templates:1.0. explanation
is Diátaxis-only and installation-guide is TGDP-only, so each rules out values
the other exists to allow, leaving only tutorial, how-to, and reference.
Choose the vocabulary your docs set actually uses.
Crosswalk
Section titled “Crosswalk”The Seven-Action model publishes a mapping to Diátaxis. It is not one-to-one:
explore lands on Tutorial, and Diátaxis’s single how-to form splits across
three actions.
action | Diátaxis type |
|---|---|
appraise | no direct equivalent (closest: explanation) |
understand | explanation |
explore | tutorial |
practice | how-to |
remember | reference |
develop | how-to |
troubleshoot | how-to (problem-oriented) |
Use it to sanity-check a pairing, not as a rule manni meta enforces. The two
schemas validate independently; no combination of a valid type and a valid
action is rejected.
If your vocabulary differs
Section titled “If your vocabulary differs”The enums are strict and carry no aliases, so howto and How-To Guide both
fail. That is the point of a vocabulary check, but it means a docs set with its
own conventions needs its own schema. Copy the shape into a local file and edit
the enum:
{ "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "additionalProperties": true, "required": ["type"], "properties": { "type": { "type": "string", "enum": ["tutorial", "how-to", "howto", "reference", "explanation"] } }}Drop the required line if you want a vocabulary check without a presence
check. A document with no type then passes.
Then reference it by path instead of the built-in id. See Author a schema for the full authoring guide.