Skip to content

FAQ

Quick answers to the questions contributors ask most when a manni meta check goes red. Each one links to the page that covers it in full. If you’re staring at a failing check right now, start with Fix a failing check. This page is for the “wait, but what about…” follow-ups.

It still fails, as long as the schema requires any field. A file with no frontmatter block reads as empty metadata. So a schema that requires type, as the built-in default does, reports the same “must have required property ‘type’” error. It is the same error you would get for a file that simply left type out.

So an empty or frontmatter-less file earns no free pass. It’s the maximally failing case. If you expected the file to have metadata, the usual cause is a missing opening --- fence, or content sitting above the block. See No frontmatter at all for the fix.

Which schema validated my file, and why did this rule fire?

Section titled “Which schema validated my file, and why did this rule fire?”

Every error line ends with the schema that produced it, in brackets. For example [google:okf:0.1]. That’s the schema whose rule you tripped. If you’re surprised by which schema applied, manni meta picks it through a fixed precedence chain. A --schema flag wins over a $schema key in your file. That wins over config overrides, then config schemas, then the built-in default.

The first source that yields a schema wins, and lower sources are ignored for that file. Say your repo’s config assigns a strict schema to /api/**, and your file is under /api. That’s the rule that fired, even if you never set anything in the file itself.

No. validate checks a file against whole schemas, not individual fields. There is no “validate only type” mode. What you can do is narrow which schema applies (via $schema, config overrides, or --schema) so that only the rules you care about run.

If your goal is just to read a field’s value rather than validate it, that’s a different command. get extracts named field values without validating anything.

Terminal window
manni meta get type docs/guide.md

See the validate and get references for each command’s full surface.

How do I validate content coming from stdin?

Section titled “How do I validate content coming from stdin?”

Pass - as the path and tell manni meta which format to use with --as, since there’s no filename extension to detect from:

Terminal window
cat page.md | manni meta validate - --as markdown

--as takes an extractor name (markdown, mdx, asciidoc, and so on). The same pattern works for get. Without --as, stdin is an error.

How do I check only Markdown and skip my other formats?

Section titled “How do I check only Markdown and skip my other formats?”

Use --ext to restrict which extensions directory and glob walks pick up:

Terminal window
manni meta validate docs/ --ext md

This walks docs/ but considers only .md files, leaving .mdx, .adoc, and the rest untouched. Pass a comma-separated list for more than one, as in --ext md,mdx.

One of three:

Code Meaning
0 Every file passed. The check is green.
1 One or more files failed validation, from a missing or malformed field. The red check you’re here to fix.
2 An operational error, where manni meta couldn’t run the check at all. That covers a missing or unreadable schema, an unsupported file type, or no files to validate. The message goes to stderr, prefixed manni:.

A 1 means fix your document. A 2 means fix the setup, not the content. CI gates on this code, so the distinction matters when you read a raw log.

Does manni meta check my prose or page content?

Section titled “Does manni meta check my prose or page content?”

No. manni meta validates the presence and format of metadata, the fields in your frontmatter, and nothing about the body of the document. It won’t flag spelling, broken links, tone, or anything in the prose. A red check always points at a frontmatter field, never at your writing.

Exclude them by glob, in one of two places, and the difference matters.

On the command line, --exclude filters whatever this run walks:

Terminal window
manni meta validate docs/ --exclude "**/drafts/**"

It is repeatable and merges with the default ignores (node_modules, .git).

In config, exclude: belongs to a collection and decides what that collection contains:

manni.config.yaml
collections:
- name: pages
paths: ["docs/**/*.md"]
exclude: ["**/drafts/**"]

A bare manni meta validate reads the collections, so the drafts are skipped every run, locally and in CI.

Your error may not match anything here or on the fix-it page. The Reference shelf documents every flag, output format, exit code, and resolution rule in full.