Skip to Content

gtmesh validate

Checks page YAML against its schema and the deterministic editorial lints, and (when run over the whole project) verifies your committed input files against the engine’s column contracts.

gtmesh validate [slugs…] # all scaffolded pages, or just the ones you name

What it does

gtmesh validate is the read-only checker the writer leans on. It runs two passes on each page:

  1. Schema — the page’s structured YAML is validated (via ajv) against its per-type schema in schemas/.
  2. Editorial lints — the deterministic, rule-based checks (banned words, structural rules, and so on) that don’t need a model.

Run it with no slugs and it does one extra thing: it also checks your committed inputs — reference tables, seed pages, and discovery seeds — against the engine’s column contracts. That catches a malformed CSV before it ever reaches plan/apply.

It writes nothing. It’s the same gate gtmesh seal enforces, exposed so you can run it as often as you like — it’s the writer’s self-check before sealing. A page that doesn’t validate cannot seal.

Arguments & flags

ArgumentDescriptionDefault
[slugs…]Page slugs to validateEvery scaffolded page (and committed inputs)

There are no command-specific flags. The global options (--project, --json, --quiet) apply.

Reads & writes

  • Consumes: the named page bundles (or all of them); their per-type schemas in schemas/; and, when run with no slugs, the committed input CSVs (reference tables, seed pages, discovery seeds).
  • Produces: nothing — output goes to your terminal. Read-only.
  • Commits: nothing.

Examples

gtmesh validate # every page + all committed input CSVs gtmesh validate /glossary/water-pump # just one page gtmesh validate --json # machine-readable results for CI
Last updated on