Skip to content
REFERENCE · PUBLIC CONTRACT

Manifest

The canonical authored manifest is plugin/plugin.yml. Schema version 1 is a closed contract: all required properties must be present and additional properties are rejected.

Top-level fields

FieldTypeRules
schema_versionintegerMust be 1
providersunique string listEmpty is allowed; IDs use lowercase provider syntax
nameidentifierLowercase kebab-case, at most 64 characters
descriptionnon-empty stringDescribes the complete plugin
versionstringSemantic Versioning
authorobjectname required; email and url optional
homepagenon-empty stringPlugin homepage
repositorynon-empty stringSource repository
licensenon-empty stringProject license identifier
keywordsunique string listAt least one item
categoriescategory listAt least one category
skillsskill listAt least one skill

The schema validates homepage and repository as non-empty strings. Use full HTTPS URLs so generated provider manifests are useful to consumers.

Category

Each category requires:

yaml
- id: engineering
  name: Engineering
  description: Skills for repository work.

Every skill category_id must reference a declared category.

Skill

Every skill requires these fields:

FieldContract
idLowercase kebab-case identifier
descriptionNon-empty public description
category_idID of a declared category
visibilityinternal or public
statusdraft, active, deprecated, or archived
required_skillsDependency list; may be empty

Every ID needs a matching plugin/skills/<id>/SKILL.md source.

Required skill

yaml
required_skills:
  - skill_id: inspect-repository
    reason: The plan must reflect verified repository facts.
    instructions: Inspect the repository and pass the facts forward.

skill_id, reason, and instructions are all required. The compiler validates the complete dependency graph, not just the YAML shape.

Lifecycle details

A deprecated skill must define deprecation and cannot define archive:

yaml
status: deprecated
deprecation:
  reason: A narrower skill replaces this workflow.
  instructions: Use prepare-focused-change instead.
  replacement_skill_id: prepare-focused-change

replacement_skill_id is optional; reason and instructions are required.

An archived skill must define archive and cannot define deprecation:

yaml
status: archived
archive:
  reason: The workflow is no longer supported.
  replacement_skill_id: prepare-focused-change

Only reason is required in an archive block. Draft and active skills define neither lifecycle detail block.

Next: read the authored source guide or see how fields map into provider output.

Released under the MIT License.