The canonical human-readable contract lives in SCHEMA.md in the repo root. The machine-readable JSON Schema lives at _meta/schema.json and is enforced by _meta/validate.mjs.
This page will mirror SCHEMA.md content directly once D3 lands; for now it is a stub.
TL;DR
Every content file in this repo starts with a YAML frontmatter block declaring at minimum:
-
name— kebab-case slug; must match filename minus.md. -
description— ≤140 chars; used in the README catalogue and slash-command picker. -
type— one ofinstruction,memory-feedback,memory-reference,memory-project,memory-user,settings-fragment,project-claude-md,path-rule,hook. -
scope—universal/team/personal-share. -
author—nameandgithubhandle. -
version— semver; bumped on substantive content change.
Plus type-specific fields:
-
project-type:forproject-claude-md(e.g.ruby-gem,jekyll-docs). -
paths:glob list forpath-rule. -
safety:object forhook(v2 only).
Plus optional fields including team: (qualifier for scope: team), owners: (defaults to [author.github]; strict for personal-share), requires-companion:, conflicts-with:, supersedes:, deprecated:`deprecated-reason:`deprecated-since:+superseded-by:, changelog:, tags: (from _meta/tags.txt controlled vocabulary).
Validator
node _meta/validate.mjs runs locally. CI enforcement is deferred to v2 — see issue #1 comment 2 for rationale.
See also
-
SCHEMA.mdin the repo — full contract with worked examples (once seeds land). -
CONTRIBUTING.md— the contribution flow that consumes this schema. -
Issue #1 comment 2 — design rationale (cursor-rules failure mode, novel
scope:andrequires-companion:fields).