Skip to content

meta.yaml Schema

Every catalog ability (skill, workflow, protocol, sensor, routine) has a meta.yaml file that defines its metadata. The schema has a common base with type-specific additions.

These fields are shared across skills, workflows, protocols, sensors, and routines.

FieldTypeRequiredDescription
namestringYesMachine identifier. Lowercase, digits, hyphens only ([a-z0-9-]). Must be unique within its type.
descriptionstringYesHuman-readable description of the ability.
display_namestringNoHuman-readable label. If omitted, auto-derived from name: hyphens become spaces, title-cased (e.g., scope-guard-files becomes “Scope Guard Files”).
agentsstring or []stringYesCompatible agent types. Either "all" (a string) or a list of agent type names (e.g., [backend, fullstack]).
requiredstring or []stringNoAgent types where this item is auto-installed and cannot be unchecked. Same format as agents: "all" or a list.

Skills use the base fields plus optional trigger metadata.

name: coding-standards
description: Language-specific coding standards — formatting, linting, patterns
agents: [backend, devops, frontend, fullstack, security]
triggers:
scenarios:
- Writing or reviewing source code in any language
- Applying formatting, linting, or naming conventions
paths:
- "*.go"
- "*.py"
- "*.js"
- "*.ts"

Trigger fields (optional, under triggers:):

FieldTypeDescription
triggers.scenarios[]stringActivation scenarios — when this skill should be loaded
triggers.paths[]stringFile glob patterns — skill auto-loads when agent reads matching files

The name field follows strict conventions:

  • Characters: [a-z0-9-] only — lowercase, digits, hyphens
  • Style: kebab-case (e.g., scope-guard-files, coding-standards)
  • Uniqueness: Must be unique within its type. Two types can share a name (e.g., a memory protocol and a memory skill).
  • No type prefixes: Use design-guide, not skill-design-guide
  • No agent prefixes: Use design-guide, not frontend-design-guide — the agents field handles compatibility

These patterns are not enforced but encouraged for consistency:

PatternUsed forExamples
*-guard-*Sensors that block/prevent actionsscope-guard-files, iac-safety-guard
*-check, *-hygiene, *-accuracyRoutines that auditroutine-check, backlog-hygiene, roadmap-accuracy
*-standards, *-conventions, *-guideSkills that define rulescoding-standards, iac-conventions, design-guide
*-logging, *-reporting, *-reviewWorkflows that produce outputsession-logging, reporting, code-review

When display_name is omitted, it is auto-derived from name using the DisplayNameFrom() function:

  1. Replace hyphens with spaces
  2. Capitalize the first letter of each word

Examples:

  • scope-guard-files becomes “Scope Guard Files”
  • coding-standards becomes “Coding Standards”
  • api-design-standards becomes “Api Design Standards”

Each meta.yaml has a companion content file in the same directory:

TypeCompanion fileNotes
Skill<name>.md or <name>.md.tmplDomain knowledge content
Workflow<name>.mdStep-by-step procedure
Protocol<name>.mdHard rules definition
Sensor<name>.sh.tmplShell script template (rendered, made executable)
Routine<name>.md.tmplProcedure template (rendered with full TemplateContext)