CRUMB a card from devarno-cloud

meta.yml Schema & Required Fields

eva beginner 5 min read

ELI5

meta.yml is the shipping label on the prompt box: a few mandatory boxes (id, title, version, dates), some optional notes for the postman (tags, notes), and a description-shaped barcode that decides whether Anthropic’s skill scanner will even pick the box up.

Technical Deep Dive

Required vs. Optional

bin/eva:49 declares the seven REQUIRED_META keys; absence or blank value fails eva doctor:

FieldRequiredNotes
idyesMust equal directory name (bin/eva:346-347)
titleyesHuman-readable
summaryyesOne-liner; falls back as skill description
statusyesOne of draft/tested/ready (VALID_STATUS, line 50)
versionyessemver-ish
created, updatedyesISO date; eva edit/eva promote bump updated
tagsoptionalFree list; reserve pattern:* for the Anthropic taxonomy
modeloptionalTunes a default judge/source model
inputsoptionalList of {name, required}; cross-checked against {{vars}} in prompt.xml
descriptionoptionalSkill-grade [WHAT] + [WHEN] + [capabilities]; ≤ 1024 chars, no </>
triggersoptionalPositive user phrasings for the skill judge
not_foroptionalNegative-scope phrases
notesoptionalFailure-mode logbook; the highest-leverage field per author intent
promotionoptionalPer-prompt overrides for min_uses / require_eval

Class Diagram

classDiagram
class Meta {
+id : string
+title : string
+summary : string
+status : draft|tested|ready
+version : string
+created : date
+updated : date
+tags : string[]
+model : string
+description : string
+triggers : string[]
+not_for : string[]
+inputs : Input[]
+promotion : PromotionGates
+notes : string
}
class Input { +name; +required }
class PromotionGates { +min_uses; +require_eval }
Meta --> "0..*" Input
Meta --> PromotionGates

Cross-Validation

eva doctor (bin/eva:362-369) parses {{var}} placeholders out of prompt.xml and reconciles against meta.inputs:

  • A {{var}} not declared in inputsprompt.xml references undeclared var.
  • A declared inputs[].required: true not referenced in prompt.xmldeclared input '<name>' (required) not referenced.

description is additionally shape-checked by _check_skill_export_shape (bin/eva:287-326): forbids </>, caps at 1024 chars, warns if no “use when” trigger clause.

Key Terms

  • REQUIRED_META → the seven-tuple at bin/eva:49 checked unconditionally by cmd_doctor.
  • inputs[] → declared template variables; required: true means doctor must see {{name}} in prompt.xml.
  • promotion — optional overrides for the lifecycle gates; see eva-003.

Q&A

Q: Which seven fields does eva doctor flag as required? A: id, title, summary, status, version, created, updatedREQUIRED_META at bin/eva:49.

Q: What is the maximum length of meta.description for skill export? A: 1024 characters (SKILL_DESCRIPTION_MAX, bin/eva:281); above that, doctor fails the prompt.

Q: Which two characters are forbidden inside meta.description? A: < and > — they break Anthropic skill frontmatter (bin/eva:304-305).

Examples

Minimal meta.yml that passes eva doctor:

id: hello
title: Greeter
summary: Generate a friendly greeting.
status: draft
version: 0.1.0
created: 2026-05-05
updated: 2026-05-05
inputs:
- {name: name, required: true}

neighbors on the map