Docs Manifest

Manifest Reference: Validation Rules

The marketplace indexer validates manifest.json on upload. These failures cause the block to be rejected:

  1. Missing required fields. All top-level keys are required.
  2. id/name mismatch. The id must match name in runtime/block.json exactly.
  3. Empty string values. archetype, category, layoutType, sectionRole, and complexity must be non-empty strings.
  4. Invalid complexity value. Only "basic", "intermediate", "advanced" are accepted.
  5. contentModel missing ai_fill coverage. Every attribute holding user-authored text content must have an explicit entry. Missing a content field is flagged – absence is not the same as false.
  6. dynamic/render mismatch. If "dynamic": true but no render.php exists in runtime/, the indexer flags the mismatch as a warning.

Attribute Name Conventions

Attribute names in block.json and aifill keys must use camelCase. Never use snakecase, kebab-case, or PascalCase for block attributes.

// ✅ Correct
"ai_fill": {
    "sectionHeading": true,
    "btnText":        true,
    "showButton":     false
}

// ❌ Wrong
"ai_fill": {
    "section_heading": true,
    "btn-text":        true,
    "ShowButton":      false
}

The aifill key itself uses snakecase because it is a manifest-level configuration key, not a block attribute name.